@dnncommunity/dnn-elements 0.24.3 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dnn-checkbox.cjs.entry.js +13 -12
- package/dist/cjs/dnn-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/dnn-permissions-grid.cjs.entry.js +19 -9
- package/dist/cjs/dnn-permissions-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/dnn-richtext.cjs.entry.js +9 -3
- package/dist/cjs/dnn-richtext.cjs.entry.js.map +1 -1
- package/dist/cjs/dnn.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/dnn-checkbox/dnn-checkbox.js +35 -14
- package/dist/collection/components/dnn-checkbox/dnn-checkbox.js.map +1 -1
- package/dist/collection/components/dnn-permissions-grid/dnn-permissions-grid.js +19 -9
- package/dist/collection/components/dnn-permissions-grid/dnn-permissions-grid.js.map +1 -1
- package/dist/collection/components/dnn-richtext/dnn-richtext.js +53 -4
- package/dist/collection/components/dnn-richtext/dnn-richtext.js.map +1 -1
- package/dist/dnn/dnn.esm.js +1 -1
- package/dist/dnn/dnn.esm.js.map +1 -1
- package/dist/dnn/p-0de82dae.entry.js +2 -0
- package/dist/dnn/p-0de82dae.entry.js.map +1 -0
- package/dist/dnn/{p-e7a44eb3.entry.js → p-9b318120.entry.js} +2 -2
- package/dist/dnn/p-9b318120.entry.js.map +1 -0
- package/dist/dnn/p-bff377d5.entry.js +2 -0
- package/dist/dnn/p-bff377d5.entry.js.map +1 -0
- package/dist/esm/dnn-checkbox.entry.js +13 -12
- package/dist/esm/dnn-checkbox.entry.js.map +1 -1
- package/dist/esm/dnn-permissions-grid.entry.js +19 -9
- package/dist/esm/dnn-permissions-grid.entry.js.map +1 -1
- package/dist/esm/dnn-richtext.entry.js +9 -3
- package/dist/esm/dnn-richtext.entry.js.map +1 -1
- package/dist/esm/dnn.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/dnn-checkbox/dnn-checkbox.d.ts +6 -0
- package/dist/types/components/dnn-permissions-grid/dnn-permissions-grid.d.ts +1 -0
- package/dist/types/components/dnn-richtext/dnn-richtext.d.ts +25 -4
- package/dist/types/components.d.ts +28 -2
- package/package.json +2 -2
- package/dist/dnn/p-2b0a6053.entry.js +0 -2
- package/dist/dnn/p-2b0a6053.entry.js.map +0 -1
- package/dist/dnn/p-bd6d200f.entry.js +0 -2
- package/dist/dnn/p-bd6d200f.entry.js.map +0 -1
- package/dist/dnn/p-e7a44eb3.entry.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["APP_VERSION","ES","IS_ES_MODERN","IS_ES_NEXT","IS_PROD","IS_TEST","FAT_MODE","HOMEPAGE","SET_TEST","TOKENS","INVISIBLE_SPACE","NBSP_SPACE","INVISIBLE_SPACE_REG_EXP","INVISIBLE_SPACE_REG_EXP_END","INVISIBLE_SPACE_REG_EXP_START","SPACE_REG_EXP","SPACE_REG_EXP_START","SPACE_REG_EXP_END","IS_BLOCK","IS_INLINE","LIST_TAGS","Set","__UNSEPARABLE_TAGS","INSEPARABLE_TAGS","NO_EMPTY_TAGS","KEY_META","KEY_BACKSPACE","KEY_TAB","KEY_ENTER","KEY_ESC","KEY_ALT","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_SPACE","KEY_DELETE","KEY_F3","NEARBY","ACCURACY","COMMAND_KEYS","BR","PARAGRAPH","MODE_WYSIWYG","MODE_SOURCE","MODE_SPLIT","IS_IE","navigator","userAgent","indexOf","test","TEXT_PLAIN","TEXT_HTML","TEXT_RTF","MARKER_CLASS","EMULATE_DBLCLICK_TIMEOUT","INSERT_AS_HTML","INSERT_CLEAR_HTML","INSERT_AS_TEXT","INSERT_ONLY_TEXT","SAFE_COUNT_CHANGE_CALL","IS_MAC","window","platform","KEY_ALIASES","add","break","cmd","command","ctl","ctrl","del","down","esc","ins","left","mod","opt","option","return","right","space","spacebar","up","win","windows","BASE_PATH","document","script","currentScript","removeScriptName","s","parts","split","length","slice","join","src","scripts","querySelectorAll","location","href","TEMP_ATTR","lang","CLIPBOARD_ID","SOURCE_CONSUMER","PASSIVE_EVENTS","_typeof","obj","Symbol","iterator","constructor","prototype","boundMethod","target","key","descriptor","fn","value","TypeError","concat","definingProperty","configurable","get","this","hasOwnProperty","boundFn","bind","Object","defineProperty","set","boundClass","keys","Reflect","ownKeys","getOwnPropertyNames","getOwnPropertySymbols","forEach","getOwnPropertyDescriptor","autobind","arguments","apply","STATUSES","beforeInit","ready","beforeDestruct","destructed","isNativeFunction","f","Boolean","toLowerCase","Function","String","isFunction","isArray","elm","Array","isString","isStringArray","isVoid","undefined","chain","result","part","map","reset","iframe","createElement","body","appendChild","contentWindow","func","e","parentNode","removeChild","toArray","args","from","hasBrowserColorPicker","supportsColor","a","type","isAbortError","error","DOMException","name","isBoolean","stringify","options","excludeKeys","WeakMap","r","k","v","has","JSON","prettify","isEqual","b","isFastEqual","isHTML","str","replace","isHtmlFromWord","data","search","isInitable","init","isDestructable","destruct","hasContainer","Dom","isElement","container","isNumeric","match","parseFloat","isNaN","isFinite","isInt","Number","isJoditObject","jodit","Jodit","isJodit","isLicense","license","isMarker","isNode","isTag","hasAttribute","isNumber","isWindow","isPlainObject","nodeType","call","isPromise","val","then","isSet","delete","isURL","includes","URL","url","protocol","hostname","isValidName","trim","isViewObject","isView","trimChars","chars","RegExp","trimInv","Eventify","__map","Map","on","off","clear","emit","cb","__decorate","decorators","desc","c","d","decorate","i","LazyWalker","setWork","root","isWorked","workNodes","eachGen","reverse","isFinished","startIdleRequest","async","super","hadAffect","idleId","requestIdleCallback","workPerform","timeout","reason","stop","end","cancelIdleCallback","deadline","count","chunkSize","timeoutChunkSize","timeRemaining","didTimeout","item","next","visitNode","done","nodeElm","whatToShow","colorToHex","color","substr","digits","exec","red","parseInt","green","blue","rgb","hex","toString","toUpperCase","kebabCase","CamelCaseToKebabCase","NUMBER_FIELDS_REG","normalizeCssNumericValue","normalizeCssValue","camelCase","m","code","letter","css","element","onlyStyleMode","setValue","_key","_value","style","j","key2","doc","ownerDocument","defaultView","parentWindow","currentValue","getComputedStyle","getPropertyValue","clearCenterAlign","image","marginLeft","marginRight","hAlignElement","align","float","display","clearAlign","node","each","isHTMLElement","textAlign","cssText","removeAttribute","alignElement","box","completeUrl","alreadyLoadedList","cacheLoaders","loader","promise","appendScriptAsync","resolve","reject","isInDestruct","crossorigin","referrerpolicy","od","appendStyleAsync","link","rel","media","crossOrigin","callback","o","shadowRoot","loadNext","urls","Promise","loadNextStyle","AssertionError","Error","message","assert","condition","attr","keyOrAttributes","getAttribute","res","replaceValue","nodeName","setAttribute","browser","ua","buildQuery","prefix","enc","encodeURIComponent","dataKey","push","Config","cache","defaultTimeout","namespace","safeMode","width","height","safePluginsList","preset","presets","inline","toolbar","toolbarInline","toolbarInlineForSelection","showXPathInStatusbar","showCharsCounter","showWordsCounter","showPlaceholder","ownerWindow","zIndex","readonly","disabled","activeButtonsInReadOnly","allowCommandsInReadOnly","toolbarButtonSize","allowTabNavigation","theme","saveModeInStorage","editorClassName","className","containerStyle","styleValues","triggerChangeEvent","direction","language","debugLanguage","i18n","tabIndex","statusbar","showTooltip","showTooltipDelay","useNativeTooltip","defaultActionOnPaste","enter","consts.PARAGRAPH","editHTMLDocumentMode","enterBlock","defaultMode","consts.MODE_WYSIWYG","useSplitMode","colors","greyscale","palette","full","colorPickerDefaultTab","imageDefaultWidth","removeButtons","disablePlugins","extraPlugins","extraButtons","extraIcons","createAttributes","table","sizeLG","sizeMD","sizeSM","buttons","group","events","textIcons","showBrowserColorPicker","defaultOptions","__defaultOptions","controls","isAtom","markAsAtomic","enumerable","fastClone","object","parse","store","dataBind","itemStore","markOwner","id","component","callPromise","resp","finally","loadImage","rej","Image","onError","onSuccess","one","complete","own","props","memorizeExec","editor","_","control","preProcessValue","execCommand","getDataTransfer","event","clipboardData","dataTransfer","DataTransfer","ConfigProto","proto","deep","getPrototypeOf","def","subKey","newOpt","protoKey","setPrototypeOf","ConfigFlatten","reduce","app","parseQuery","queryString","query","substring","keyValue","decodeURIComponent","convertMediaUrlToVideoEmbed","parser","pattern1","pathname","ctrlKey","metaKey","altKey","defaultLanguage","documentElement","abort","isAbort","ConnectionError","OptionsError","connection","keepNames","getClassName","originalConstructor","regex","humanSizeToBytes","human","format","formats","number","Math","pow","cns","console","markDeprecated","method","names","ctx","warn","$$","selector","getXPathByElement","Node","ELEMENT_NODE","sames","filter","childNodes","x","refs","child","cssPath","el","path","start","unshift","sib","nth","previousElementSibling","resolveElement","resolved","querySelector","cloneNode","fixedAssetsSizeAndAbsoluteLinks","points","restoreAttributes","previousAttrs","offsetWidth","offsetHeight","createInside","ed","safeRemove","previewBox","defaultValue","onDestruct","fire","div","position","padding","create","minWidth","minHeight","border","myWindow","ResizeObserver","resizeObserver","debounce","unobserve","requestAnimationFrame","observe","disconnect","setHTML","dv","innerHTML","newNode","attributes","nodeValue","textContent","clb","inView","rect","getBoundingClientRect","top","bottom","clientHeight","scrollIntoViewIfNeeded","scrollHeight","scrollTop","offsetTop","scrollIntoView","LimitedStack","limit","stack","shift","pop","find","detach","firstChild","wrapInline","current","tag","tmp","first","last","save","needFindNext","previousSibling","isBlock","nextSibling","wrapper","insertBefore","restore","wrap","fragment","extractContents","insertNode","unwrap","parent","between","step","newTagName","withAttributes","notMoveContent","fromHTML","replaceChild","isEmptyTextNode","isText","consts.INVISIBLE_SPACE_REG_EXP","isEmptyContent","isContentEditable","closest","isEmpty","condNoEmptyElement","cond","emptyText","isCell","isList","isLeaf","isImage","consts.IS_BLOCK","TEXT_NODE","isComment","COMMENT_NODE","isFragment","DOCUMENT_FRAGMENT_NODE","HTMLElement","isInlineBlock","tagName","canSplitBlock","lastChild","prev","withChild","prevWithClass","classList","contains","nextWithClass","leftToRight","gen","nextGen","currentNode","runInStack","findWithCurrent","sibling","nextOne","findSibling","n","findNotEmptySibling","findNotEmptyNeighbor","checkRoot","tagsOrCondition","lc","furthest","matchedParent","parentElement","appendChildFirst","newElement","after","before","prepend","append","moveContent","to","inStart","createDocumentFragment","isOrContains","onlyContains","nd","nodes","safeInsertNode","range","collapsed","deleteContents","startContainer","endContainer","setStartBefore","collapse","hide","show","tagNames","nameL","nameU","tags","markTemporary","isTemporary","replaceTemporaryFromString","temporaryList","cached","property","getter","noCache","writable","cacheHTML","useCache","attrs","hookStatus","view","constructorFunction","newConstructorFunction","isRootConstructor","setStatus","setTimeout","clearTimeout","timer","Async","timers","__callbacks","__queueMicrotaskNative","queueMicrotask","promisesRejections","requestsIdle","requestsRaf","requestIdleCallbackNative","Date","now","max","__cancelIdleCallbackNative","request","isDestructed","delay","label","clearLabel","updateTimeout","timerOrLabel","firstCallImmediately","fired","promises","callFn","runPromises","onFire","promisify","catch","microDebounce","scheduled","needCall","savedArgs","throttle","ignore","needInvoke","callee","lastArgs","executor","rejectCallback","process","onfinally","promiseState","p","status","race","t","requestIdlePromise","cancelAnimationFrame","asArray","splitArray","normalizeName","styles","loadStyle","pluginName","getFullUrl","js","basePath","loadExtras","items","extraList","needLoadExtras","extra","load","pluginList","plugin","instance","doneList","waitingList","hasStyle","getContainer","makeInstance","PluginSystem","__items","eventEmitter","remove","__getFullPluginsList","results","__init","disableList","getSpecialLists","pluginsMap","__plugins","initPlugins","commit","requires","some","req","every","bindOnBeforeDestruct","wait","onReady","plugins","defaultNameSpace","EventHandlersStore","__store","ns","originalCallback","blocks","namespaces","withoutDefault","nss","onTop","clearEvents","size","EventEmitter","mute","__mutedEvents","isMuted","unmute","__eachEvent","eventParts","eventNameSpace","eventAndNameSpace","__getStore","subject","__key","__removeStoreFromSubject","__triggerNativeEvent","evt","__doc","createEvent","initEvent","bubbles","cancelable","dispatchEvent","currents","eventsOrSubjects","callbackOrEvents","optionsOrCallback","opts","subjects","subj","self","syntheticCallback","isDOMElement","__prepareEvent","preventDefault","stopImmediatePropagation","block","eOpts","passive","capture","addEventListener","__memoryDOMSubjectToHandler","callbackStore","__domEventsMap","__unmemoryDOMSubjectToHandler","newCallback","handler","removeEventListener","removeCallbackFromNameSpace","eventName","index","splice","stopPropagation","subjectOrEvents","eventsList","__stopped","__removeStop","currentBlocks","__isStopped","result_value","argumentsList","result_second","cancelBubble","composed","composedPath","changedTouches","originalEvent","__isDestructed","getTime","getPropertyDescriptor","prop","watch","observeFields","propertyKey","immediately","context","field","objectPath","teil","observableValue","observable","oldValue","OBSERVABLE_OBJECT","isObservableObject","__lockEvent","__onEvents","initAccessors","dict","prefixes","sum","rs","valueOf","instances","counter","uuids","uniqueUid","random","round","uid","pluginSystem","modules","boxes","classFunc","createInsideEditor","place","head","normalizeCSS","units","metrics","toFixed","applyStyles","html","lastIndexOf","convertedString","collection","iframeDoc","contentDocument","open","write","close","styleSheets","rules","cssRules","idx","selectorText","cleanFromWord","marks","htmlspecialchars","nl2br","safeHTML","removeOnError","sanitizeHTMLElement","safeJavaScriptLink","effected","NEW_LINE_TAGS","INVISIBLE_TAGS","ALONE_TAGS","stripTags","exclude","pr","text","createTextNode","nx","restoreTags","innerText","content","isClosed","isSingle","normalizeColor","colorInput","newcolor","normalizeKeyAliases","memory","order","meta","alt","sort","normalizeLicense","normalizePath","normalizeRelativePath","sections","builder","section","endsWith","normalizeSize","normalizeUrl","getContentWidth","pi","paddingLeft","paddingRight","getScrollParent","overflowY","isScrollable","scrollingElement","innerWidth","computedStyle","elementWidth","clientWidth","offset","recurse","docElem","clientTop","clientLeft","scrollLeft","pageYOffset","pageXOffset","topValue","leftValue","xPos","yPos","fuzzySearchIndex","needle","haystack","maxDistance","startIndex","len","errorDistance","ucfirst","sprintf","reg","fnd","params","debug","defineLanguage","tryGet","lcKey","ucfKey","en","i18nOvr","StatusListHandlers","Component","componentName","__componentName","getFullElName","elementName","modValue","ow","isReady","componentStatus","bindDestruct","__componentStatus","setStatusComponent","statuses","list","isInstanceOf","constructorFunc","ViewComponent","setParentView","components","propTimeout","realTimout","derive","traits","origin","trait","canDerive","hook","idle","originalMethod","nonenumerable","persistent","storageKey","initialValue","storage","realMethod","callProxy","defaultAjaxOptions","successStatuses","contentType","headers","withCredentials","xhr","XMLHttpRequest","Response","statusText","json","blob","Ajax","__async","__isFulfilled","__activated","__buildParams","queryBuild","FormData","send","prepareRequest","onReject","error.connection","onResolve","responseType","responseText","response","onload","onabort","error.abort","onerror","ontimeout","onprogress","percentComplete","lengthComputable","loaded","total","onProgress","onreadystatechange","readyState","DONE","setRequestHeader","error.error","qIndex","urlData","log","Elms","getElm","getElms","Mods","afterSetMod","setMod","mods","cl","getMod","Icon","getIcon","icon","icons","exists","makeIcon","iconElement","iconURL","fill","clearName","iconFromEvent","cacheKey","__cache","span","svg","UIElement_1","UIElement","__parentElement","updateParentElement","bubble","pe","closestElement","update","appendTo","render","createContainer","parseTemplate","UIGroup_1","UIGroup","allChildren","elements","buttonSize","distElement","distElm","appendChildToContainer","syncMod","childContainer","UISeparator","UISpacer","isButtonGroup","getControlType","button","buttonControl","findControlType","tooltip","namespaceOrKey","getStrongControlTypes","UIList","__onChangeMode","mode","makeGroup","UIButton","getButtonsNames","state","setRemoveButtons","build","lastBtnSeparator","line","addButton","makeSelect","makeButton","isNotRemoved","isVisible","UIButtonState","role","variant","activated","setState","assign","onChangeSize","onChangeType","onChangeRole","updateSize","onChangeStatus","onChangeText","onChangeTextSetMode","onChangeDisabled","onChangeActivated","onChangeName","onChangeTooltip","onChangeTabIndex","onChangeIcon","focus","isFocused","activeElement","cn","class","ariaPressed","isButton","actionHandlers","onAction","__onActionFire","buffer","actionTrigger","Button","stateOrText","UIButtonGroup","radio","btn","select","indexOrValue","onChange","UITooltip_1","WINDOW_EVENTS_ON_HIDE","JODIT_EVENTS_ON_HIDE","UITooltip","__isOpened","__listenClose","__currentTarget","__delayShowTimeout","__hideTimeout","__onAttach","__onMouseEnter","__addListenersOnEnter","__hide","__onMouseLeave","__removeListenersOnLeave","__hideDelay","isOwn","__open","pos","y","getPoint","__show","point","UIBlock","ref","required","input","UIInput_1","UIInput","onChangeClear","clearButton","nativeInput","onChangeClassName","oldClassName","onChangeState","placeholder","autocomplete","updateValidators","validators","inputValidators.required","validator","inputValidators","__errorBox","onChangeValue","onChangeStateValue","validate","createNativeInput","defaultState","onChangeFocus","UISelect_1","UISelect","multiple","selectValidators.required","UIForm","submit","inputs","selects","onSubmit","form","UITextArea_1","UITextArea","resizable","resize","onChangeStateSize","rows","UICheckbox_1","UICheckbox","onChangeChecked","checked","onChangeNativeCheckBox","onChangeSwitch","switch","slider","UIFileInput","onlyImages","EVENTS_FOR_AUTOCLOSE","Popup","__childrenPopups","popup","isOpened","setContent","updatePosition","getBound","keepPosition","parentContainer","__calculateZIndex","__addGlobalListeners","__targetBound","getKeepBound","popupContainer","checkView","setZIndex","oldBound","elmUnderCursor","elementFromPoint","oldPos","bound","newPos","strategy","__calculatePosition","viewBound","__throttleUpdatePosition","defaultStrategy","xKey","yKey","getPointByStrategy","getMatchStrategy","inBox","boxInView","accuracy","__removeGlobalListeners","__closeOnOutsideClick","isOwnClick","smart","isConnected","innerHeight","ProgressBar","workplace","progress","percentage","Create","childrenOrAttributes","children","applyCreateAttributes","sandbox","fake","refsToggleElement","refElements","ca","attrsOpt","canUsePersistentStorage","canUse","tmpKey","localStorage","setItem","getItem","removeItem","LocalStorageProvider","rootKey","MemoryStorageProvider","StorageKey","Storage","provider","suffix","makeStorage","UIMessage","UIMessages","__box","defaultOffset","__messages","info","__message","success","msg","__calcOffsets","__getRemoveCallback","View_1","View","getMessageModule","__container","progressbar","__options","toggleFullSize","isFullSize","__isFullSize","isLocked","__whoLocked","lock","unlock","getVersion","version","initOptions","initOwners","attachEvents","OPTIONS","isLockedNotBy","__modulesInstances","getInstance","moduleNameOrConstructor","moduleName","module","mi","addDisclaimer","esNext","esModern","fullsize","globalFullSize","ToolbarCollection","firstButton","shouldBeActive","shouldBeDisabled","getTarget","__immediateUpdate","setDirection","__listenEvents","__tooltip","__initEvents","toolbarContainer","showInline","itemsWithGroupps","ToolbarButton","tc","__calculateDisabledStatus","__calculateActivatedStatus","editorIsActive","isActive","isDisabled","template","trigger","onChangeHasTrigger","hasTrigger","openedPopup","onClick","__initFromControl","ctr","onTriggerClick","__closePopup","__openControlList","openPopup","getControl","menu","makeCollection","isListItem","getButton","title","childTemplate","childControl","childExec","parentControl","isChildActive","isChildDisabled","onOutsideClick","ToolbarContent","getContent","ToolbarSelect","textTemplate","ToolbarEditorCollection","consts.MODE_SPLIT","getRealMode","active","selection","checkActiveStatus","cssObject","matches","cssProperty","cssValue","prependInvisibleInput","ViewWithToolbar","__defaultToolbarContainer","setPanel","buildToolbar","getRegisteredButtonGroups","groupToButtons","registerButton","registeredButtons","unregisterButton","groupName","beforeToolbarBuild","Dialog_1","dialog","draggable","Dialog","destination","setElements","elements_list","onMouseUp","removeGlobalResizeListeners","unlockSelect","onHeaderMouseDown","startX","clientX","startY","clientY","startPoint","setMaxZIndex","lockSelect","addGlobalResizeListeners","onMouseMove","setPosition","setSize","w","h","onEsc","closeOnEsc","me","getMaxZIndexDialog","onResizerMouseDown","calcAutoSize","offsetX","offsetY","moved","abs","setHeader","dialogbox_header","dialogbox_content","setFooter","dialogbox_footer","getZIndex","maxZi","dlg","maxZIndex","contentOrClose","titleOrModal","destroyAfterClose","modal","setModal","removeProperty","isModal","onResize","resizer","dialogbox_toolbar","maxWidth","headerBox","fullSize","closeOnClickOverlay","overlay","Alert","okButton","oneMessage","Confirm","$div","$label","action","yes","$cancel","$ok","Prompt","cancelButton","inputElement","autofocus","labelElement","onclick","Dlgs","confirm","processTitle","prompt","alert","ContextMenu","actions","filebrowser","file","sortBy","sortAttr","arrow","asc","compareStr","changed","editImage","preview","showPreviewNavigation","showSelectButtonInPreview","contextMenu","howLongShowMsg","createNewFolder","deleteFolder","renameFolder","moveFolder","moveFile","permissionsPresets","allowFileDownload","allowFileMove","allowFileRemove","allowFileRename","allowFileUpload","allowFileUploadRemote","allowFiles","allowFolderCreate","allowFolderMove","allowFolderRemove","allowFolderRename","allowFolderTree","allowFolders","allowGeneratePdf","allowImageCrop","allowImageResize","showFoldersPanel","storeLastOpenedFolder","isSuccess","getMessage","messages","showFileName","showFileSize","showFileChangeTime","saveStateInStorage","storeView","storeSortBy","pixelOffsetLoadNewChunk","getThumbTemplate","source","source_name","IC","files","showName","showSize","showTime","time","fileURL","imageURL","ajax","processData","prepareData","getLocalFileByUrl","crop","fileMove","folderMove","fileRename","folderRename","fileRemove","folderRemove","folder","permissions","upload","isInput","dataProvider","canI","activeElements","edit","selected","tiles","oldInput","filterWord","fb","loadItems","currentPath","currentSource","loadTree","tree","sources","all","elementsMap","FileBrowserItem","timestamp","thumbIsAbsolute","thumb","baseurl","fileIsAbsolute","toLocaleString","uniqueHashKey","sourceName","toJSON","DEFAULT_SOURCE_NAME","DataProvider","__currentPermissions","__ajaxInstances","progressHandler","respData","rule","presetValue","onResult","generateItemsList","itemsEx","calcTotal","acc","loadedTotal","canBeFile","inFilter","getPathByUrl","createFolder","move","filepath","isFile","fr","rename","newname","changeImage","DataProvider$1","makeDataProvider","makeContextMenu","deleteFile","cropIcon","resizeIcon","imageeditor","min_width","min_height","closeAfterSave","resizeUseRatio","resizeMinWidth","resizeMinHeight","cropUseRatio","cropDefaultWidth","cropDefaultHeight","jie","gi","act","switcher","ImageEditor_1","TABS","ImageEditor","_dialog","resize_box","crop_box","cropHandler","onSave","widthInput","heightInput","naturalWidth","naturalHeight","ratio","cropImage","activeTab","showCrop","resizeHandler","onTitleModeClick","slide","tab","onChangeSizeInput","isWidth","minX","minY","onResizeHandleMouseDown","clicked","start_x","start_y","top_x","top_y","onGlobalMouseMove","onGlobalMouseUp","diff_x","diff_y","new_w","new_h","cropBox","resizeBox","calcCropBox","wn","hn","nw","nh","calcValueByPercent","backgroundImage","updateCropBox","ratioX","ratioY","sizes","updateResizeBox","setHandlers","keepAspectRatioResize","keepAspectRatioCrop","new_x","new_y","new_width","new_height","backgroundPosition","backgroundSize","values","saveas","percent","percentStr","valueNbr","openImageEditor","onFailed","failed","ok","CLASS_PREVIEW","preview_tpl_next","contextmenu","ga","selectedItem","elementToItem","temp_content","preview_box","addLoadHandler","dataset","nativeListeners","dragElement","elmMap","selfListeners","dp","newName","stateListeners","getDomElement","folders","folderElm","actionName","FileBrowserFiles","FileBrowserTree","FileBrowser","onSelect","isImages","min","screen","headerButtons","proxyEvent","defaultCallback","localTimeout","consts.EMULATE_DBLCLICK_TIMEOUT","header","__updateToolbarButtons","__getButtons","initUploader","uploader","uploaderOptions","uploadHandler","setPath","setSource","errorHandler","status_line","currentBaseUrl","__prevButtons","isEqualButtonList","prevButtons","Plugin","__inited","__afterPluginSystemInit","__afterInit","__beforeDestruct","afterInit","Command","undo","history","snapshot","redo","newValue","tick","Snapshot","__isBlocked","equal","second","countNodesBeforeInParent","elms","previous","isIgnoredNode","strokeOffset","calcHierarchyLadder","counts","getElementByLadder","ladder","isBlocked","__block","enable","transaction","changes","make","startOffset","endOffset","removeJoditSelection","sel","rangeCount","getRangeAt","scroll","storeScrollState","getNativeEditorValue","restoreOnlySelection","restoreScrollState","scrollY","scrolls","scrollTo","scrollX","createRange","setStart","setEnd","selectRange","__ignore","setCursorAfter","clone","Stack","commands","stackPosition","clearRedo","canUndo","canRedo","maxHistoryLength","Infinity","History","__stack","startValue","fireChangeStack","__startValue","updateTick","__upTick","__processChanges","updateStack","newCommand","StatusBar","isShown","getHeight","findEmpty","inTheRight","markedValue","Table","__recalculateStyles","selectors","td","selectionCellStyle","addSelection","cells","__selectedByTable","removeSelection","getAllSelectedCells","__getSelectedCellsByTable","__getRowsCount","getRowsCount","__getColumnsCount","matrix","__formalMatrix","max_count","getColumnsCount","setCell","cell","colSpan","rowSpan","column","row","currentColumn","formalMatrix","__formalCoordinate","ii","jj","formalCoordinate","__appendRow","columnsCount","rowspan","newRowSpan","getElementsByTagName","appendRow","__removeRow","rowIndex","dec","nextCell","nextRow","removeRow","appendColumn","selectedCell","insertAfter","columnIndex","cellIndex","newColumnIndex","__removeColumn","removeColumn","__getSelectedBound","selectedCells","getSelectedBound","__normalizeTable","__marked","__removeExtraColspans","__removeExtraRowspans","__unmark","not","__mark","marked","normalizeTable","__mergeSelected","first_j","cols","alreadyMerged","cs","consts.ACCURACY","__setColumnWidthByDelta","tr","mergeSelected","__splitHorizontal","coord","tdElm","splitHorizontal","__splitVertical","oldWidth","splitVertical","delta","noUnmark","clearWidthIndex","setColumnWidthByDelta","buildData","FD","newData","dataURItoBlob","dataURI","byteString","atob","mimeString","ab","ArrayBuffer","ia","Uint8Array","charCodeAt","Blob","ajaxInstances","requestData","sendData","sendFiles","handlerSuccess","handlerError","fileList","insertImageAsBase64URI","readImagesWithReader","imagesExtensions","defaultHandlerSuccess","pathVariableName","hasRealExtension","mime","extension","extForReg","reEnd","iFile","processFileName","filesVariableName","defaultHandlerError","reader","FileReader","onloadend","readAsDataURL","processOldBrowserDrag","cData","onFinally","types","tabindex","contenteditable","hasFiles","hasItems","enableDragAndDropFileToEditor","formData","getDisplayName","filename","insertImage","Uploader","onPaste","formdata","kind","getAsFile","inputFile","uploadRemoteImage","handlerE","moveTheNodeAlongTheEdgeOutward","WRAP","UNWRAP","CHANGE","UNSET","INITIAL","REPLACE","_PREFIX","extractSelectedPart","font","leftEdge","setEndBefore","extractAndMove","rightEdge","setStartAfter","setEndAfter","FiniteStateMachine","__previewsStates","__state","getState","disableSilent","silent","transitions","dispatch","isNormalNode","hasSameStyle","fontSize","hasSameStyleKeys","elm2","isSuitElement","commitStyle","strict","strictStyle","elementIsDefault","elementIsList","elmIsSame","elmHasSameStyle","suitableClosest","isSameStyleChild","getSuitChild","getSuitParent","isElementCommit","elementIsBlock","isInsideInvisibleElement","isSameAttributes","elementsEqualAttributes","elm1","tak","toggleAttributes","dry","isApplied","setApplied","toggleStyle","toggleClass","toggleAttribute","inlineValue","getNativeCSSValue","removeExtraStyleAttribute","defaultTag","getShadowRoot","newElm","wrapList","newWrapper","nextElementSibling","toggleOrderedList","li","isChangeMode","unwrapList","newList","unwrapChildren","needUnwrap","needChangeStyle","firstElementSuit","cssStyle","wrapUnwrappedText","ci","edge","edgeNode","firstElementChild","findOrCreateWrapper","WRAP_NODES","states","START","ELEMENT","UNWRAP_CHILDREN","REPLACE_DEFAULT","LIST","TOGGLE_LIST","EXTRACT","END","transactions","suit","newMode","ApplyStyle","normalize","fakes","wrapInTagGen","isCollapsed","machine","restoreFakes","CommitStyle","__applyMap","hooks","synchronizeValues","moveNodeInsideStart","anotherSibling","cursorInTheEdgeOfString","INV_END","inv","INV_START","findCorrectCurrentNode","rightMode","checkChild","leftChild","rightChild","Selection","removeMarkers","errorNode","area","ew","getSelection","isInsideArea","removeAllRanges","removeNode","insertCursorAtPoint","rng","caretPositionFromPoint","caret","offsetNode","caretRangeFromPoint","hasMarkers","markers","consts.MARKER_CLASS","marker","atStart","newRange","cloneRange","lineHeight","consts.INVISIBLE_SPACE","markAttr","previousNode","fakeLeft","fakeRight","ranges","startId","startMarker","outerHTML","endId","endMarker","startElm","getElementById","endElm","addRange","preventScroll","scrollParent","hasFocus","ret","insertCursorAfter","fireChange","isEditorMode","commonAncestorContainer","setCursor","scrollToPastedContent","__imdSynchronizeValues","insertHTML","defaultWidth","dw","forImageChangeAttributes","eachSelection","elementOffset","checkElm","forEvery","currentB","cursorInTheEdge","parentBlock","isSignificant","cursorOnTheLeft","cursorOnTheRight","setCursorNearWith","setCursorBefore","fakeNode","selectNode","setCursorIn","workElm","selectNodeContents","inward","clonedSelection","cloneContents","nativeExecCommand","wrapInTag","tagOrCallback","pn","styleElm","splitSelection","currentBox","leftRange","br","prevFake","nextFake","clearBR","getNext","nextSib","clearEmpties","fillFakeParent","expandSelection","moveMaxEdgeFake","leftFake","rightFake","leftBox","rightBox","rightInsideLeft","leftInsideRight","lastElementChild","isInside","Jodit_1","__defaultStyleDisplayKey","__defaultClassesKey","waitForReady","getElementValue","atom","isJoditAssigned","__setPlaceField","currentPlace","places","editorWindow","editorDocument","__mode","setMode","setNativeEditorValue","getEditorValue","setEditorValue","removeSelectionMarkers","consumer","constants.INVISIBLE_SPACE_REG_EXP","new_value","__setElementValue","old_value","__isSilentChange","__callChangeCount","constants.SAFE_COUNT_CHANGE_CALL","updateElementValue","registerCommand","commandNameOriginal","commandName","hotkeys","commandToHotkeys","registerHotkeyToCommand","shouldStop","shortcuts","hotkey","showUI","__execCustomCommands","third","resultCurrent","__selectionLocked","getMode","constants.MODE_WYSIWYG","constants.MODE_SPLIT","constants.MODE_SOURCE","oldMode","modeClasses","toggleMode","setDisabled","readOnly","__wasReadOnly","setReadOnly","toggle","getDisabled","isReadOnly","getReadOnly","beforeInitHook","afterInitHook","__elementToPlace","elementSource","__prepareWYSIWYGEditor","beforeInitHookResult","addPlaceResult","addPlace","addClassNames","setProperty","setCurrentPlace","initResult","__initEditor","__createEditor","localMode","defaultEditorArea","stayDefault","KeyboardEvent","isComposing","fetch","destroy","fatMode","constants","core","angleDown_svg","angleLeft_svg","angleRight_svg","angleUp_svg","bin_svg","cancel_svg","center_svg","check_svg","chevron_svg","dots_svg","eye_svg","file_svg","folder_svg","infoCircle_svg","left_svg","lock_svg","ok_svg","pencil_svg","plus_svg","resizeHandler_svg","right_svg","save_svg","settings_svg","unlock_svg","update_svg","upload_svg","valign_svg","ar","Anchor","Redo","Undo","Bold","Italic","Normal","Quote","Code","Insert","Margins","Styles","Classes","Align","Right","Center","Left","Src","Title","Alternative","Link","Advanced","Cancel","Ok","Upload","Browse","Background","Text","Top","Middle","Bottom","Underline","superscript","subscript","Break","Replace","Paste","bold","italic","brush","eraser","paragraph","fontsize","video","about","print","underline","strikethrough","indent","outdent","shrink","hr","ul","ol","cut","selectall","Unlink","Update","pencil","Eye","Edit","Filter","Reset","Save","Resize","Crop","Width","Height","Yes","No","Remove","Select","Split","Merge","Delete","Border","Keep","Rename","download","copy","Apply","Default","Circle","Dot","Quadrate","Find","Clean","cs_cz","All","de","es","fi","he","hu","Print","it","ja","ko","mn","nl","pl","pt_br","ru","zh_cn","zh_tw","exp","default","hashLang","Languages","aboutIcon","deleteWord","deleteSentence","backspace","backspaceWord","backspaceSentence","checkNotCollapsed","findMostNestedNeighbor","onlyInlide","nextChild","getMoveFilter","checkJoinNeighbors","nextBox","mainClosestBox","checkMoveListContent","moveContentAndRemoveEmpty","siblingIsList","boxIsList","elementChild","side","checkJoinTwoLists","checkRemoveChar","removeNeighbor","charRemoved","removed","getNextInlineSibling","tryRemoveChar","checkRepeatRemoveCharAction","removeEmptyForParent","addBRInsideEmptyBlock","replaceSpaceOnNBSP","checkRemoveContentNotEditable","neighbor","checkRemoveEmptyNeighbor","checkRemoveEmptyParent","found","prn","checkRemoveUnbreakableElement","checkTableCell","checkUnwrapFirstListItem","cases","onDelete","safeRemoveEmptyNode","deleteCommand","__afterDeleteCommand","__onDeleteCommand","leftSibling","rightSibling","__moveContentInLeftSibling","__moveCursorInEditableSibling","__addBrInEmptyBlock","__defineRightLeftBox","lastLeaf","firstCell","leftText","tagRegExp","boldIcon","italicIcon","strikethroughIcon","subscriptIcon","superscriptIcon","underlineIcon","callBack","cssOptions","paletteIcon","ColorPickerWidget","coldColor","valueHex","iconPalette","eachColor","TabsWidget","tabs","tabBox","nameToTab","buttonList","firstTab","setActive","FileSelectorWidget","callbacks","currentImage","dragBox","brushIcon","brushCell","tableModule","makeColorPicker","currentBpx","colorHEX","bg_color","currentElement","background","backgroundTag","backgroundColor","colorTab","checkBR","shiftKeyPressed","isMultiLineBlock","isBRMode","checkSeveralBR","preBr","brBefore","checkUnsplittableBox","getBlockWrapper","tagReg","hasPreviousBlock","insertParagraph","wrapperTag","isBR","moveCursorOutFromSpecialTags","processEmptyLILeaf","parentLi","listInsideLeaf","rightPart","newLi","splitFragment","isLi","canSplit","newP","wrapText","needWrap","hasChildNodes","brMode","onEnter","onEnterKeyDown","beforeEnter","shiftKey","__isEmptyListLeaf","fontIcon","fontsizeIcon","defaultFontSizePoints","cssRule","normalise","cssKey","keySet","cacheListSet","isAvailable","fonts","check","fontFamily","paragraphIcon","h1","h2","h3","h4","blockquote","pre","formatBlock","removeFormat","insertOrderedList","insertUnorderedList","onKeyPress","special","specialKeys","which","character","fromCharCode","modif","specialKey","itIsHotkey","shortcut","resultOfFire","iframeBaseUrl","iframeTitle","iframeDoctype","iframeDefaultSrc","iframeStyle","iframeCSSLinks","docMode","toggleEditable","clearMarkers","bodyReg","bodyMarker","old","resizeIframe","marginOffset","marginTop","marginBottom","imageIcon","sourceImage","__","tablesplitv","tablesplitg","tableaddcolumnbefore","tableaddcolumnafter","tableaddrowbefore","tableaddrowafter","tablebin","tablebinrow","tablebincolumn","tableempty","img","addcolumn_svg","addrow_svg","merge_svg","splitg_svg","splitv_svg","th_svg","thList_svg","toolbarInlineDisableFor","toolbarInlineDisabledButtons","addcolumn.default","addrow.default","merge.default","th.default","splitg.default","splitv.default","thList.default","inlinePopup","snapRange","elmsList","isExcludedTarget","canShowPopupForType","showPopup","previousTarget","hidePopup","showInlineToolbar","onSelectionStart","onSelectionEnd","addListenersForElements","onSelectionChange","isSelectedTarget","sc","removeListenersForElements","_eventsList","linkIcon","unlinkIcon","formTemplate","openInNewTabCheckbox","noFollowCheckbox","modeClassName","selectSizeClassName","selectMultipleClassName","selectOptionsClassName","followOnDblClick","processVideoLink","processPastedLink","unlink","anchor","onDblClickOnLink","onProcessPasteLink","__generateForm","htmlForm","url_input","embed","formClassName","target_checkbox_box","nofollow_checkbox_box","insert","content_input_box","target_checkbox","nofollow_checkbox","isImageContent","content_input","className_input","className_select","getSelectionText","readClassnames","links","textWasChanged","writeClasses","writeImage","selectedOptions","classNames","newContent","olIcon","ulIcon","memoExec","circle","disc","square","orderedList","onCommand","listStyleType","useInputsPlaceholder","isEditorEmpty","addNativeListeners","addEvents","placeholderElm","styleEditor","style2","paddingTop","poweredByJodit","hidePoweredByJodit","redoIcon","undoIcon","redoUndo","maxHeight","saveHeightInStorage","__resizeWorkspaces","__resizeWorkspaceImd","__setHeight","__setWidth","__initialize","localHeight","__getNotWorkHeight","countHTMLChars","stat","charCounter","wordCounter","reInit","calc","tableIcon","useExtraClassesOptions","default_rows_count","default_cols_count","generateExtraClasses","out","classes","blocksContainer","cnt","dataIndex","mouseenter","rows_count","ceil","cols_count","crt","tbody","first_td","wrapNodes","emptyBlockAfterInit","isSuitableStart","isSuitable","isNotWrapped","preprocessInput","postProcessSetEditorValue","isChanged","checkAloneListLeaf","isAfterInitEvent","dtd","removeExtraBr","checkBlockNesting","blockLimits","article","aside","audio","caption","details","dir","dl","fieldset","figcaption","figure","footer","hgroup","main","nav","th","brBoxes","__onBeforeInsertNode","casesKeys","beforeInsertCases","__onAfterInsertNode","afterInsertCases","DefaultJodit","esFilter","Icons","Modules.Icon","Modules","dnnRichtextCss","DnnRichtextStyle0","DnnRichtext","dnnDefaultOptions","watchValueChanged","decodeHtml","setFormValue","componentDidLoad","mergedOptions","host","textArea","valueInput","focused","valueChange","formResetCallback","internals","setValidity","Host","onFocus","onBlur"],"sources":["../../node_modules/jodit/esm/core/constants.js","../../node_modules/autobind-decorator/lib/esm/index.js","../../node_modules/jodit/esm/core/component/statuses.js","../../node_modules/jodit/esm/core/helpers/checker/is-native-function.js","../../node_modules/jodit/esm/core/helpers/checker/is-function.js","../../node_modules/jodit/esm/core/helpers/checker/is-array.js","../../node_modules/jodit/esm/core/helpers/checker/is-string.js","../../node_modules/jodit/esm/core/helpers/checker/is-void.js","../../node_modules/jodit/esm/core/helpers/utils/get.js","../../node_modules/jodit/esm/core/helpers/utils/reset.js","../../node_modules/jodit/esm/core/helpers/array/to-array.js","../../node_modules/jodit/esm/core/helpers/checker/has-browser-color-picker.js","../../node_modules/jodit/esm/core/helpers/checker/is-abort-error.js","../../node_modules/jodit/esm/core/helpers/checker/is-boolean.js","../../node_modules/jodit/esm/core/helpers/string/stringify.js","../../node_modules/jodit/esm/core/helpers/checker/is-equal.js","../../node_modules/jodit/esm/core/helpers/checker/is-html.js","../../node_modules/jodit/esm/core/helpers/checker/is-html-from-word.js","../../node_modules/jodit/esm/core/helpers/checker/is-imp-interface.js","../../node_modules/jodit/esm/core/helpers/checker/is-numeric.js","../../node_modules/jodit/esm/core/helpers/checker/is-int.js","../../node_modules/jodit/esm/core/helpers/checker/is-jodit-object.js","../../node_modules/jodit/esm/core/helpers/checker/is-license.js","../../node_modules/jodit/esm/core/helpers/checker/is-marker.js","../../node_modules/jodit/esm/core/helpers/checker/is-number.js","../../node_modules/jodit/esm/core/helpers/checker/is-window.js","../../node_modules/jodit/esm/core/helpers/checker/is-plain-object.js","../../node_modules/jodit/esm/core/helpers/checker/is-promise.js","../../node_modules/jodit/esm/core/helpers/checker/is-set.js","../../node_modules/jodit/esm/core/helpers/checker/is-url.js","../../node_modules/jodit/esm/core/helpers/checker/is-valid-name.js","../../node_modules/jodit/esm/core/helpers/checker/is-view-object.js","../../node_modules/jodit/esm/core/helpers/string/trim.js","../../node_modules/jodit/esm/core/event-emitter/eventify.js","../../node_modules/jodit/esm/core/dom/lazy-walker.js","../../node_modules/jodit/esm/core/helpers/color/color-to-hex.js","../../node_modules/jodit/esm/core/helpers/string/kebab-case.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-css-value.js","../../node_modules/jodit/esm/core/helpers/string/camel-case.js","../../node_modules/jodit/esm/core/helpers/utils/css.js","../../node_modules/jodit/esm/core/helpers/utils/align.js","../../node_modules/jodit/esm/core/helpers/utils/complete-url.js","../../node_modules/jodit/esm/core/helpers/utils/append-script.js","../../node_modules/jodit/esm/core/helpers/utils/assert.js","../../node_modules/jodit/esm/core/helpers/utils/attr.js","../../node_modules/jodit/esm/core/helpers/utils/browser.js","../../node_modules/jodit/esm/core/helpers/utils/build-query.js","../../node_modules/jodit/esm/config.js","../../node_modules/jodit/esm/core/helpers/utils/extend.js","../../node_modules/jodit/esm/core/helpers/utils/data-bind.js","../../node_modules/jodit/esm/core/helpers/utils/utils.js","../../node_modules/jodit/esm/core/helpers/utils/config-proto.js","../../node_modules/jodit/esm/core/helpers/utils/parse-query.js","../../node_modules/jodit/esm/core/helpers/utils/convert-media-url-to-video-embed.js","../../node_modules/jodit/esm/core/helpers/utils/ctrl-key.js","../../node_modules/jodit/esm/core/helpers/utils/default-language.js","../../node_modules/jodit/esm/core/helpers/utils/error/errors/abort-error.js","../../node_modules/jodit/esm/core/helpers/utils/error/errors/connection-error.js","../../node_modules/jodit/esm/core/helpers/utils/error/errors/options-error.js","../../node_modules/jodit/esm/core/helpers/utils/error/error.js","../../node_modules/jodit/esm/core/helpers/utils/get-class-name.js","../../node_modules/jodit/esm/core/helpers/utils/human-size-to-bytes.js","../../node_modules/jodit/esm/core/helpers/utils/mark-deprecated.js","../../node_modules/jodit/esm/core/helpers/utils/selector.js","../../node_modules/jodit/esm/core/helpers/utils/print.js","../../node_modules/jodit/esm/core/helpers/utils/scroll-into-view.js","../../node_modules/jodit/esm/core/helpers/utils/set.js","../../node_modules/jodit/esm/core/helpers/utils/stack.js","../../node_modules/jodit/esm/core/dom/dom.js","../../node_modules/jodit/esm/core/decorators/cache/cache.js","../../node_modules/jodit/esm/core/decorators/component/component.js","../../node_modules/jodit/esm/core/helpers/async/set-timeout.js","../../node_modules/jodit/esm/core/async/async.js","../../node_modules/jodit/esm/core/helpers/array/as-array.js","../../node_modules/jodit/esm/core/helpers/array/split-array.js","../../node_modules/jodit/esm/core/plugin/helpers/utils.js","../../node_modules/jodit/esm/core/plugin/helpers/load.js","../../node_modules/jodit/esm/core/plugin/helpers/init-instance.js","../../node_modules/jodit/esm/core/plugin/helpers/make-instance.js","../../node_modules/jodit/esm/core/plugin/plugin-system.js","../../node_modules/jodit/esm/core/event-emitter/store.js","../../node_modules/jodit/esm/core/event-emitter/event-emitter.js","../../node_modules/jodit/esm/core/decorators/watch/watch.js","../../node_modules/jodit/esm/core/event-emitter/observable.js","../../node_modules/jodit/esm/core/global.js","../../node_modules/jodit/esm/core/helpers/html/apply-styles.js","../../node_modules/jodit/esm/core/helpers/html/clean-from-word.js","../../node_modules/jodit/esm/core/helpers/html/htmlspecialchars.js","../../node_modules/jodit/esm/core/helpers/html/nl2br.js","../../node_modules/jodit/esm/core/helpers/html/safe-html.js","../../node_modules/jodit/esm/core/helpers/html/strip-tags.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-color.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-key-aliases.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-license.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-path.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-relative-path.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-size.js","../../node_modules/jodit/esm/core/helpers/normalize/normalize-url.js","../../node_modules/jodit/esm/core/helpers/size/get-content-width.js","../../node_modules/jodit/esm/core/helpers/size/get-scroll-parent.js","../../node_modules/jodit/esm/core/helpers/size/inner-width.js","../../node_modules/jodit/esm/core/helpers/size/object-size.js","../../node_modules/jodit/esm/core/helpers/size/offset.js","../../node_modules/jodit/esm/core/helpers/size/position.js","../../node_modules/jodit/esm/core/helpers/string/fuzzy-search-index.js","../../node_modules/jodit/esm/core/helpers/string/ucfirst.js","../../node_modules/jodit/esm/core/helpers/string/i18n.js","../../node_modules/jodit/esm/core/component/component.js","../../node_modules/jodit/esm/core/component/view-component.js","../../node_modules/jodit/esm/core/decorators/debounce/debounce.js","../../node_modules/jodit/esm/core/decorators/derive/derive.js","../../node_modules/jodit/esm/core/decorators/hook/hook.js","../../node_modules/jodit/esm/core/decorators/idle/idle.js","../../node_modules/jodit/esm/core/decorators/nonenumerable/nonenumerable.js","../../node_modules/jodit/esm/core/decorators/persistent/persistent.js","../../node_modules/jodit/esm/core/decorators/wait/wait.js","../../node_modules/jodit/esm/core/request/config.js","../../node_modules/jodit/esm/core/request/response.js","../../node_modules/jodit/esm/core/request/ajax.js","../../node_modules/jodit/esm/core/traits/elms.js","../../node_modules/jodit/esm/core/traits/mods.js","../../node_modules/jodit/esm/core/ui/icon.js","../../node_modules/jodit/esm/core/ui/element.js","../../node_modules/jodit/esm/core/ui/group/group.js","../../node_modules/jodit/esm/core/ui/group/separator.js","../../node_modules/jodit/esm/core/ui/group/spacer.js","../../node_modules/jodit/esm/core/ui/helpers/buttons.js","../../node_modules/jodit/esm/core/ui/helpers/get-control-type.js","../../node_modules/jodit/esm/core/ui/helpers/get-strong-control-types.js","../../node_modules/jodit/esm/core/ui/group/list.js","../../node_modules/jodit/esm/core/ui/button/button/button.js","../../node_modules/jodit/esm/core/ui/button/group/group.js","../../node_modules/jodit/esm/core/ui/button/tooltip/tooltip.js","../../node_modules/jodit/esm/core/ui/form/block/block.js","../../node_modules/jodit/esm/core/ui/form/validators/input.js","../../node_modules/jodit/esm/core/ui/form/validators/select.js","../../node_modules/jodit/esm/core/ui/form/inputs/input/input.js","../../node_modules/jodit/esm/core/ui/form/inputs/select/select.js","../../node_modules/jodit/esm/core/ui/form/form.js","../../node_modules/jodit/esm/core/ui/form/inputs/area/area.js","../../node_modules/jodit/esm/core/ui/form/inputs/checkbox/checkbox.js","../../node_modules/jodit/esm/core/ui/form/inputs/file/file.js","../../node_modules/jodit/esm/core/ui/popup/popup.js","../../node_modules/jodit/esm/core/ui/progress-bar/progress-bar.js","../../node_modules/jodit/esm/core/create/create.js","../../node_modules/jodit/esm/core/storage/engines/local-storage-provider.js","../../node_modules/jodit/esm/core/storage/engines/memory-storage-provider.js","../../node_modules/jodit/esm/core/storage/storage.js","../../node_modules/jodit/esm/modules/messages/message.js","../../node_modules/jodit/esm/modules/messages/messages.js","../../node_modules/jodit/esm/core/view/view.js","../../node_modules/jodit/esm/modules/toolbar/collection/collection.js","../../node_modules/jodit/esm/modules/toolbar/button/button.js","../../node_modules/jodit/esm/modules/toolbar/button/content.js","../../node_modules/jodit/esm/modules/toolbar/button/select/select.js","../../node_modules/jodit/esm/modules/toolbar/collection/editor-collection.js","../../node_modules/jodit/esm/modules/toolbar/factory.js","../../node_modules/jodit/esm/core/view/view-with-toolbar.js","../../node_modules/jodit/esm/modules/dialog/dialog.js","../../node_modules/jodit/esm/modules/dialog/alert.js","../../node_modules/jodit/esm/modules/dialog/confirm.js","../../node_modules/jodit/esm/modules/dialog/prompt.js","../../node_modules/jodit/esm/core/traits/dlgs.js","../../node_modules/jodit/esm/modules/context-menu/context-menu.js","../../node_modules/jodit/esm/modules/file-browser/config.js","../../node_modules/jodit/esm/modules/file-browser/fetch/load-items.js","../../node_modules/jodit/esm/modules/file-browser/fetch/load-tree.js","../../node_modules/jodit/esm/modules/file-browser/builders/elements-map.js","../../node_modules/jodit/esm/modules/file-browser/builders/item.js","../../node_modules/jodit/esm/modules/file-browser/data-provider.js","../../node_modules/jodit/esm/modules/file-browser/factories.js","../../node_modules/jodit/esm/modules/file-browser/fetch/delete-file.js","../../node_modules/jodit/esm/modules/image-editor/icons/crop.svg.js","../../node_modules/jodit/esm/modules/image-editor/icons/resize.svg.js","../../node_modules/jodit/esm/modules/image-editor/config.js","../../node_modules/jodit/esm/modules/image-editor/templates/form.js","../../node_modules/jodit/esm/modules/image-editor/image-editor.js","../../node_modules/jodit/esm/modules/file-browser/builders/context-menu.js","../../node_modules/jodit/esm/modules/file-browser/listeners/native-listeners.js","../../node_modules/jodit/esm/modules/file-browser/listeners/self-listeners.js","../../node_modules/jodit/esm/modules/file-browser/listeners/state-listeners.js","../../node_modules/jodit/esm/modules/file-browser/ui/files/files.js","../../node_modules/jodit/esm/modules/file-browser/ui/tree/tree.js","../../node_modules/jodit/esm/modules/file-browser/file-browser.js","../../node_modules/jodit/esm/core/plugin/plugin.js","../../node_modules/jodit/esm/modules/history/command.js","../../node_modules/jodit/esm/modules/history/snapshot.js","../../node_modules/jodit/esm/modules/history/stack.js","../../node_modules/jodit/esm/modules/history/history.js","../../node_modules/jodit/esm/modules/status-bar/status-bar.js","../../node_modules/jodit/esm/modules/table/table.js","../../node_modules/jodit/esm/modules/uploader/helpers/build-data.js","../../node_modules/jodit/esm/modules/uploader/helpers/data-uri-to-blob.js","../../node_modules/jodit/esm/modules/uploader/helpers/send.js","../../node_modules/jodit/esm/modules/uploader/helpers/send-files.js","../../node_modules/jodit/esm/modules/uploader/helpers/process-old-browser-drag.js","../../node_modules/jodit/esm/modules/uploader/helpers/index.js","../../node_modules/jodit/esm/modules/uploader/config.js","../../node_modules/jodit/esm/modules/uploader/uploader.js","../../node_modules/jodit/esm/core/selection/helpers/move-the-node-along-the-edge-outward.js","../../node_modules/jodit/esm/core/selection/style/constants.js","../../node_modules/jodit/esm/core/selection/style/api/extract.js","../../node_modules/jodit/esm/core/selection/style/api/finite-state-machine.js","../../node_modules/jodit/esm/core/selection/style/api/is-normal-node.js","../../node_modules/jodit/esm/core/selection/style/api/has-same-style.js","../../node_modules/jodit/esm/core/selection/style/api/is-suit-element.js","../../node_modules/jodit/esm/core/selection/style/api/get-suit-child.js","../../node_modules/jodit/esm/core/selection/style/api/get-suit-parent.js","../../node_modules/jodit/esm/core/selection/style/api/is-inside-invisible-element.js","../../node_modules/jodit/esm/core/selection/style/api/is-same-attributes.js","../../node_modules/jodit/esm/core/selection/style/api/toggle-attributes.js","../../node_modules/jodit/esm/core/selection/style/api/list/wrap-list.js","../../node_modules/jodit/esm/core/selection/style/api/list/toggle-ordered-list.js","../../node_modules/jodit/esm/core/selection/style/api/unwrap-children.js","../../node_modules/jodit/esm/core/selection/style/api/wrap-unwrapped-text.js","../../node_modules/jodit/esm/core/selection/style/api/wrap.js","../../node_modules/jodit/esm/core/selection/style/transactions.js","../../node_modules/jodit/esm/core/selection/style/apply-style.js","../../node_modules/jodit/esm/core/selection/style/commit-style.js","../../node_modules/jodit/esm/core/selection/helpers/move-node-inside-start.js","../../node_modules/jodit/esm/core/selection/helpers/index.js","../../node_modules/jodit/esm/core/selection/selection.js","../../node_modules/jodit/esm/jodit.js","../../node_modules/jodit/esm/styles/icons/angle-down.svg.js","../../node_modules/jodit/esm/styles/icons/angle-left.svg.js","../../node_modules/jodit/esm/styles/icons/angle-right.svg.js","../../node_modules/jodit/esm/styles/icons/angle-up.svg.js","../../node_modules/jodit/esm/styles/icons/bin.svg.js","../../node_modules/jodit/esm/styles/icons/cancel.svg.js","../../node_modules/jodit/esm/styles/icons/center.svg.js","../../node_modules/jodit/esm/styles/icons/check.svg.js","../../node_modules/jodit/esm/styles/icons/chevron.svg.js","../../node_modules/jodit/esm/styles/icons/dots.svg.js","../../node_modules/jodit/esm/styles/icons/eye.svg.js","../../node_modules/jodit/esm/styles/icons/file.svg.js","../../node_modules/jodit/esm/styles/icons/folder.svg.js","../../node_modules/jodit/esm/styles/icons/info-circle.svg.js","../../node_modules/jodit/esm/styles/icons/left.svg.js","../../node_modules/jodit/esm/styles/icons/lock.svg.js","../../node_modules/jodit/esm/styles/icons/ok.svg.js","../../node_modules/jodit/esm/styles/icons/pencil.svg.js","../../node_modules/jodit/esm/styles/icons/plus.svg.js","../../node_modules/jodit/esm/styles/icons/resize-handler.svg.js","../../node_modules/jodit/esm/styles/icons/right.svg.js","../../node_modules/jodit/esm/styles/icons/save.svg.js","../../node_modules/jodit/esm/styles/icons/settings.svg.js","../../node_modules/jodit/esm/styles/icons/unlock.svg.js","../../node_modules/jodit/esm/styles/icons/update.svg.js","../../node_modules/jodit/esm/styles/icons/upload.svg.js","../../node_modules/jodit/esm/styles/icons/valign.svg.js","../../node_modules/jodit/esm/langs/ar.js","../../node_modules/jodit/esm/langs/cs_cz.js","../../node_modules/jodit/esm/langs/de.js","../../node_modules/jodit/esm/langs/en.js","../../node_modules/jodit/esm/langs/es.js","../../node_modules/jodit/esm/langs/fi.js","../../node_modules/jodit/esm/langs/fr.js","../../node_modules/jodit/esm/langs/he.js","../../node_modules/jodit/esm/langs/hu.js","../../node_modules/jodit/esm/langs/id.js","../../node_modules/jodit/esm/langs/it.js","../../node_modules/jodit/esm/langs/ja.js","../../node_modules/jodit/esm/langs/keys.js","../../node_modules/jodit/esm/langs/ko.js","../../node_modules/jodit/esm/langs/mn.js","../../node_modules/jodit/esm/langs/nl.js","../../node_modules/jodit/esm/langs/pl.js","../../node_modules/jodit/esm/langs/pt_br.js","../../node_modules/jodit/esm/langs/ru.js","../../node_modules/jodit/esm/langs/tr.js","../../node_modules/jodit/esm/langs/ua.js","../../node_modules/jodit/esm/langs/zh_cn.js","../../node_modules/jodit/esm/langs/zh_tw.js","../../node_modules/jodit/esm/languages.js","../../node_modules/jodit/esm/plugins/about/about.svg.js","../../node_modules/jodit/esm/plugins/about/about.js","../../node_modules/jodit/esm/plugins/backspace/config.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-not-collapsed.js","../../node_modules/jodit/esm/plugins/backspace/helpers.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-join-neighbors.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-join-two-lists.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-remove-char.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-remove-content-not-editable.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-remove-empty-neighbor.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-remove-empty-parent.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-remove-unbreakable-element.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-table-cell.js","../../node_modules/jodit/esm/plugins/backspace/cases/check-unwrap-first-list-item.js","../../node_modules/jodit/esm/plugins/backspace/cases/index.js","../../node_modules/jodit/esm/plugins/backspace/backspace.js","../../node_modules/jodit/esm/plugins/delete/delete.js","../../node_modules/jodit/esm/plugins/bold/config.js","../../node_modules/jodit/esm/plugins/bold/icons/bold.svg.js","../../node_modules/jodit/esm/plugins/bold/icons/italic.svg.js","../../node_modules/jodit/esm/plugins/bold/icons/strikethrough.svg.js","../../node_modules/jodit/esm/plugins/bold/icons/subscript.svg.js","../../node_modules/jodit/esm/plugins/bold/icons/superscript.svg.js","../../node_modules/jodit/esm/plugins/bold/icons/underline.svg.js","../../node_modules/jodit/esm/plugins/bold/bold.js","../../node_modules/jodit/esm/modules/widget/color-picker/palette.svg.js","../../node_modules/jodit/esm/modules/widget/color-picker/color-picker.js","../../node_modules/jodit/esm/modules/widget/tabs/tabs.js","../../node_modules/jodit/esm/modules/widget/file-selector/file-selector.js","../../node_modules/jodit/esm/plugins/color/brush.svg.js","../../node_modules/jodit/esm/plugins/color/config.js","../../node_modules/jodit/esm/plugins/color/color.js","../../node_modules/jodit/esm/plugins/enter/helpers/check-br.js","../../node_modules/jodit/esm/plugins/enter/helpers/check-unsplittable-box.js","../../node_modules/jodit/esm/plugins/enter/helpers/get-block-wrapper.js","../../node_modules/jodit/esm/plugins/enter/helpers/has-previous-block.js","../../node_modules/jodit/esm/plugins/enter/helpers/insert-paragraph.js","../../node_modules/jodit/esm/plugins/enter/helpers/move-cursor-out-from-specal-tags.js","../../node_modules/jodit/esm/plugins/enter/helpers/process-empty-li-leaf.js","../../node_modules/jodit/esm/plugins/enter/helpers/split-fragment.js","../../node_modules/jodit/esm/plugins/enter/helpers/wrap-text.js","../../node_modules/jodit/esm/plugins/enter/enter.js","../../node_modules/jodit/esm/plugins/font/icons/font.svg.js","../../node_modules/jodit/esm/plugins/font/icons/fontsize.svg.js","../../node_modules/jodit/esm/plugins/font/config.js","../../node_modules/jodit/esm/plugins/font/font.js","../../node_modules/jodit/esm/plugins/format-block/paragraph.svg.js","../../node_modules/jodit/esm/plugins/format-block/config.js","../../node_modules/jodit/esm/plugins/format-block/format-block.js","../../node_modules/jodit/esm/plugins/hotkeys/config.js","../../node_modules/jodit/esm/plugins/hotkeys/hotkeys.js","../../node_modules/jodit/esm/plugins/iframe/config.js","../../node_modules/jodit/esm/plugins/iframe/iframe.js","../../node_modules/jodit/esm/plugins/image/image.svg.js","../../node_modules/jodit/esm/plugins/image/image.js","../../node_modules/jodit/esm/plugins/inline-popup/config/items/a.js","../../node_modules/jodit/esm/plugins/inline-popup/config/items/cells.js","../../node_modules/jodit/esm/plugins/inline-popup/config/items/img.js","../../node_modules/jodit/esm/plugins/inline-popup/config/items/iframe.js","../../node_modules/jodit/esm/plugins/inline-popup/config/items/toolbar.js","../../node_modules/jodit/esm/plugins/inline-popup/icons/addcolumn.svg.js","../../node_modules/jodit/esm/plugins/inline-popup/icons/addrow.svg.js","../../node_modules/jodit/esm/plugins/inline-popup/icons/merge.svg.js","../../node_modules/jodit/esm/plugins/inline-popup/icons/splitg.svg.js","../../node_modules/jodit/esm/plugins/inline-popup/icons/splitv.svg.js","../../node_modules/jodit/esm/plugins/inline-popup/icons/th.svg.js","../../node_modules/jodit/esm/plugins/inline-popup/icons/th-list.svg.js","../../node_modules/jodit/esm/plugins/inline-popup/config/config.js","../../node_modules/jodit/esm/plugins/inline-popup/inline-popup.js","../../node_modules/jodit/esm/plugins/link/icons/link.svg.js","../../node_modules/jodit/esm/plugins/link/icons/unlink.svg.js","../../node_modules/jodit/esm/plugins/link/template.js","../../node_modules/jodit/esm/plugins/link/config.js","../../node_modules/jodit/esm/plugins/link/link.js","../../node_modules/jodit/esm/plugins/ordered-list/icons/ol.svg.js","../../node_modules/jodit/esm/plugins/ordered-list/icons/ul.svg.js","../../node_modules/jodit/esm/plugins/ordered-list/config.js","../../node_modules/jodit/esm/plugins/ordered-list/ordered-list.js","../../node_modules/jodit/esm/plugins/placeholder/config.js","../../node_modules/jodit/esm/plugins/placeholder/placeholder.js","../../node_modules/jodit/esm/plugins/powered-by-jodit/powered-by-jodit.js","../../node_modules/jodit/esm/plugins/redo-undo/icons/redo.svg.js","../../node_modules/jodit/esm/plugins/redo-undo/icons/undo.svg.js","../../node_modules/jodit/esm/plugins/redo-undo/redo-undo.js","../../node_modules/jodit/esm/plugins/size/config.js","../../node_modules/jodit/esm/plugins/size/size.js","../../node_modules/jodit/esm/plugins/stat/config.js","../../node_modules/jodit/esm/plugins/stat/stat.js","../../node_modules/jodit/esm/plugins/table/table.svg.js","../../node_modules/jodit/esm/plugins/table/config.js","../../node_modules/jodit/esm/plugins/table/table.js","../../node_modules/jodit/esm/plugins/wrap-nodes/config.js","../../node_modules/jodit/esm/plugins/wrap-nodes/wrap-nodes.js","../../node_modules/jodit/esm/plugins/dtd/config.js","../../node_modules/jodit/esm/plugins/dtd/after-insert/remove-extra-br.js","../../node_modules/jodit/esm/plugins/dtd/before-insert/check-block-nesting.js","../../node_modules/jodit/esm/plugins/dtd/dtd.js","../../node_modules/jodit/esm/index.js","src/components/dnn-richtext/dnn-richtext.scss?tag=dnn-richtext&encapsulation=shadow","src/components/dnn-richtext/dnn-richtext.tsx"],"sourcesContent":["/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport const APP_VERSION = \"4.2.27\";\n// prettier-ignore\nexport const ES = \"es2020\";\nexport const IS_ES_MODERN = true;\nexport const IS_ES_NEXT = true;\nexport const IS_PROD = true;\nexport let IS_TEST = false;\nexport const FAT_MODE = false;\nexport const HOMEPAGE = \"https://xdsoft.net/jodit/\";\nexport const SET_TEST = () => (IS_TEST = true);\nexport const TOKENS = {};\nexport const INVISIBLE_SPACE = '\\uFEFF';\nexport const NBSP_SPACE = '\\u00A0';\nexport const INVISIBLE_SPACE_REG_EXP = () => /[\\uFEFF]/g;\nexport const INVISIBLE_SPACE_REG_EXP_END = () => /[\\uFEFF]+$/g;\nexport const INVISIBLE_SPACE_REG_EXP_START = () => /^[\\uFEFF]+/g;\nexport const SPACE_REG_EXP = () => /[\\s\\n\\t\\r\\uFEFF\\u200b]+/g;\nexport const SPACE_REG_EXP_START = () => /^[\\s\\n\\t\\r\\uFEFF\\u200b]+/g;\nexport const SPACE_REG_EXP_END = () => /[\\s\\n\\t\\r\\uFEFF\\u200b]+$/g;\nexport const IS_BLOCK = /^(ADDRESS|ARTICLE|ASIDE|BLOCKQUOTE|CANVAS|DD|DFN|DIV|DL|DT|FIELDSET|FIGCAPTION|FIGURE|FOOTER|FORM|H[1-6]|HEADER|HGROUP|HR|LI|MAIN|NAV|NOSCRIPT|OUTPUT|P|PRE|RUBY|SCRIPT|STYLE|OBJECT|OL|SECTION|IFRAME|JODIT|JODIT-MEDIA|UL|TR|TD|TH|TBODY|THEAD|TFOOT|TABLE|BODY|HTML|VIDEO)$/i;\nexport const IS_INLINE = /^(STRONG|SPAN|I|EM|B|SUP|SUB|A|U)$/i;\nexport const LIST_TAGS = new Set(['ul', 'ol']);\nconst __UNSEPARABLE_TAGS = [\n 'img',\n 'video',\n 'svg',\n 'iframe',\n 'script',\n 'input',\n 'textarea',\n 'link',\n 'jodit',\n 'jodit-media'\n];\nexport const INSEPARABLE_TAGS = new Set([\n ...__UNSEPARABLE_TAGS,\n 'br',\n 'hr'\n]);\nexport const NO_EMPTY_TAGS = new Set(__UNSEPARABLE_TAGS);\nexport const KEY_META = 'Meta';\nexport const KEY_BACKSPACE = 'Backspace';\nexport const KEY_TAB = 'Tab';\nexport const KEY_ENTER = 'Enter';\nexport const KEY_ESC = 'Escape';\nexport const KEY_ALT = 'Alt';\nexport const KEY_LEFT = 'ArrowLeft';\nexport const KEY_UP = 'ArrowUp';\nexport const KEY_RIGHT = 'ArrowRight';\nexport const KEY_DOWN = 'ArrowDown';\nexport const KEY_SPACE = 'Space';\nexport const KEY_DELETE = 'Delete';\nexport const KEY_F3 = 'F3';\nexport const NEARBY = 5;\nexport const ACCURACY = 10;\nexport const COMMAND_KEYS = [\n KEY_META,\n KEY_BACKSPACE,\n KEY_DELETE,\n KEY_UP,\n KEY_DOWN,\n KEY_RIGHT,\n KEY_LEFT,\n KEY_ENTER,\n KEY_ESC,\n KEY_F3,\n KEY_TAB\n];\nexport const BR = 'br';\nexport const PARAGRAPH = 'p';\n/**\n * WYSIWYG editor mode\n */\nexport const MODE_WYSIWYG = 1;\n/**\n * html editor mode\n */\nexport const MODE_SOURCE = 2;\n/**\n * Source code editor and HTML editor both like\n * @see http://getuikit.com/docs/htmleditor.html|this\n */\nexport const MODE_SPLIT = 3;\n/**\n * Is Internet Explorer\n */\nexport const IS_IE = typeof navigator !== 'undefined' &&\n (navigator.userAgent.indexOf('MSIE') !== -1 ||\n /rv:11.0/i.test(navigator.userAgent));\n/**\n * For IE11 it will be 'text'. Need for dataTransfer.setData\n */\nexport const TEXT_PLAIN = IS_IE ? 'text' : 'text/plain';\nexport const TEXT_HTML = IS_IE ? 'html' : 'text/html';\nexport const TEXT_RTF = IS_IE ? 'rtf' : 'text/rtf';\nexport const MARKER_CLASS = 'jodit-selection_marker';\nexport const EMULATE_DBLCLICK_TIMEOUT = 300;\n/**\n * Paste the copied text as HTML, all content will be pasted exactly as it was on the clipboard.\n * So how would you copy its code directly into the source document.\n * ```\n * <h1 style=\"color:red\">test</h1>\n * ```\n * Will be inserted into the document as\n * ```\n * <h1 style=\"color:red\">test</h1>\n * ```\n */\nexport const INSERT_AS_HTML = 'insert_as_html';\n/**\n * Same as [[INSERT_AS_HTML]], but content will be stripped of extra styles and empty tags\n * ```html\n * <h1 style=\"color:red\">test</h1>\n * ```\n * Will be inserted into the document as\n * ```html\n * <h1>test</h1>\n * ```\n */\nexport const INSERT_CLEAR_HTML = 'insert_clear_html';\n/**\n * The contents of the clipboard will be pasted into the document as plain text, i.e. all tags will be displayed as text.\n * ```html\n * <h1>test</h1>\n * ```\n * Will be inserted into the document as\n * ```html\n * ><h1>test</h1>\n * ```\n */\nexport const INSERT_AS_TEXT = 'insert_as_text';\n/**\n * All tags will be stripped:\n * ```html\n * <h1>test</h1>\n * ```\n * Will be inserted into the document as\n * ```html\n * test\n * ```\n */\nexport const INSERT_ONLY_TEXT = 'insert_only_text';\nexport const SAFE_COUNT_CHANGE_CALL = 10;\nexport const IS_MAC = typeof window !== 'undefined' &&\n /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\nexport const KEY_ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: 'space',\n spacebar: 'space',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\nexport const BASE_PATH = (() => {\n if (typeof document === 'undefined') {\n return '';\n }\n const script = document.currentScript, removeScriptName = (s) => {\n const parts = s.split('/');\n if (/\\.js/.test(parts[parts.length - 1])) {\n return parts.slice(0, parts.length - 1).join('/') + '/';\n }\n return s;\n };\n if (script) {\n return removeScriptName(script.src);\n }\n const scripts = document.querySelectorAll('script[src]');\n if (scripts && scripts.length) {\n return removeScriptName(scripts[scripts.length - 1].src);\n }\n return window.location.href;\n})();\nexport const TEMP_ATTR = 'data-jodit-temp';\nexport const lang = {};\nexport const CLIPBOARD_ID = 'clipboard';\nexport const SOURCE_CONSUMER = 'source-consumer';\nexport const PASSIVE_EVENTS = new Set([\n 'touchstart',\n 'touchend',\n 'scroll',\n 'mousewheel',\n 'mousemove',\n 'touchmove'\n]);\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return a descriptor removing the value and returning a getter\n * The getter will return a .bind version of the function\n * and memoize the result against a symbol on the instance\n */\nexport function boundMethod(target, key, descriptor) {\n var fn = descriptor.value;\n\n if (typeof fn !== 'function') {\n throw new TypeError(\"@boundMethod decorator can only be applied to methods not: \".concat(_typeof(fn)));\n } // In IE11 calling Object.defineProperty has a side-effect of evaluating the\n // getter for the property which is being replaced. This causes infinite\n // recursion and an \"Out of stack space\" error.\n\n\n var definingProperty = false;\n return {\n configurable: true,\n get: function get() {\n // eslint-disable-next-line no-prototype-builtins\n if (definingProperty || this === target.prototype || this.hasOwnProperty(key) || typeof fn !== 'function') {\n return fn;\n }\n\n var boundFn = fn.bind(this);\n definingProperty = true;\n Object.defineProperty(this, key, {\n configurable: true,\n get: function get() {\n return boundFn;\n },\n set: function set(value) {\n fn = value;\n delete this[key];\n }\n });\n definingProperty = false;\n return boundFn;\n },\n set: function set(value) {\n fn = value;\n }\n };\n}\n/**\n * Use boundMethod to bind all methods on the target.prototype\n */\n\nexport function boundClass(target) {\n // (Using reflect to get all keys including symbols)\n var keys; // Use Reflect if exists\n\n if (typeof Reflect !== 'undefined' && typeof Reflect.ownKeys === 'function') {\n keys = Reflect.ownKeys(target.prototype);\n } else {\n keys = Object.getOwnPropertyNames(target.prototype); // Use symbols if support is provided\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n keys = keys.concat(Object.getOwnPropertySymbols(target.prototype));\n }\n }\n\n keys.forEach(function (key) {\n // Ignore special case target method\n if (key === 'constructor') {\n return;\n }\n\n var descriptor = Object.getOwnPropertyDescriptor(target.prototype, key); // Only methods need binding\n\n if (typeof descriptor.value === 'function') {\n Object.defineProperty(target.prototype, key, boundMethod(target, key, descriptor));\n }\n });\n return target;\n}\nexport default function autobind() {\n if (arguments.length === 1) {\n return boundClass.apply(void 0, arguments);\n }\n\n return boundMethod.apply(void 0, arguments);\n}","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module component\n */\nexport const STATUSES = {\n beforeInit: 'beforeInit',\n ready: 'ready',\n beforeDestruct: 'beforeDestruct',\n destructed: 'destructed'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check if function or method was not replaced on some custom implementation\n */\nexport function isNativeFunction(f) {\n return (Boolean(f) &&\n (typeof f).toLowerCase() === 'function' &&\n (f === Function.prototype ||\n /^\\s*function\\s*(\\b[a-z$_][a-z0-9$_]*\\b)*\\s*\\((|([a-z$_][a-z0-9$_]*)(\\s*,[a-z$_][a-z0-9$_]*)*)\\)\\s*{\\s*\\[native code]\\s*}\\s*$/i.test(String(f))));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check value is Function\n */\nexport function isFunction(value) {\n return typeof value === 'function';\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check if element is array\n */\nexport function isArray(elm) {\n return Array.isArray(elm);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nimport { isArray } from \"./is-array.js\";\n/**\n * Check value is String\n */\nexport function isString(value) {\n return typeof value === 'string';\n}\n/**\n * Check value is Array of String\n */\nexport function isStringArray(value) {\n return isArray(value) && isString(value[0]);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check value is undefined or null\n */\nexport function isVoid(value) {\n // eslint-disable-next-line eqeqeq\n return value === undefined || value === null;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isString } from \"../checker/is-string.js\";\nimport { isVoid } from \"../checker/is-void.js\";\n/**\n * Safe access in tree object\n *\n * @example\n * ```js\n * const obj = {\n * a: {\n * b: {\n * c: {\n * e: false\n * }\n * }\n * }\n * };\n *\n * console.log(Jodit.modules.Helpers.get('a.b.c.d.e', obj) === false); // true\n * console.log(Jodit.modules.Helpers.get('a.b.a.d.e', obj) === null); // false\n * ```\n */\nexport function get(chain, obj) {\n if (!isString(chain) || !chain.length) {\n return null;\n }\n const parts = chain.split('.');\n let result = obj;\n try {\n for (const part of parts) {\n if (isVoid(result[part])) {\n return null;\n }\n result = result[part];\n }\n }\n catch {\n return null; // permission denied ore another access exception\n }\n if (isVoid(result)) {\n return null;\n }\n return result;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD } from \"../../constants.js\";\nimport { isFunction } from \"../checker/is-function.js\";\nimport { get } from \"./get.js\";\nconst map = {};\n/**\n * Reset Vanilla JS native function\n * @example\n * ```js\n * reset('Array.from')(Set([1,2,3])) // [1, 2, 3]\n * ```\n * You must use the function derived from the method immediately as its iframe is being removed\n */\nexport function reset(key) {\n if (!(key in map)) {\n const iframe = document.createElement('iframe');\n try {\n iframe.src = 'about:blank';\n document.body.appendChild(iframe);\n if (!iframe.contentWindow) {\n return null;\n }\n const func = get(key, iframe.contentWindow), bind = get(key.split('.').slice(0, -1).join('.'), iframe.contentWindow);\n if (isFunction(func)) {\n map[key] = func.bind(bind);\n }\n }\n catch (e) {\n if (!IS_PROD) {\n throw e;\n }\n }\n finally {\n iframe.parentNode?.removeChild(iframe);\n }\n }\n return map[key] ?? null;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/array\n */\nimport { isNativeFunction } from \"../checker/is-native-function.js\";\nimport { reset } from \"../utils/reset.js\";\n/**\n * Always return Array. It's a safe polyfill for [Array.from](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from) method\n * In certain scenarios (such as with Joomla Mootools), Array.from may be substituted with a less optimal implementation\n * ```javascript\n * Jodit.modules.Helpers.toArray('123') // ['1', '2', '3']\n * Jodit.modules.Helpers.toArray(['test']) // ['test']\n * Jodit.modules.Helpers.toArray(1) // []\n * ```\n */\nexport const toArray = function toArray(...args) {\n const func = isNativeFunction(Array.from)\n ? Array.from\n : reset('Array.from') ?? Array.from;\n return func.apply(Array, args);\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check if browser has a color picker (a new HTML5 attribute for input tag)\n */\nexport function hasBrowserColorPicker() {\n let supportsColor = true;\n try {\n const a = document.createElement('input');\n a.type = 'color';\n a.value = '!';\n supportsColor = a.type === 'color' && a.value !== '!';\n }\n catch (e) {\n supportsColor = false;\n }\n return supportsColor;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport function isAbortError(error) {\n return (Boolean(error) &&\n error instanceof DOMException &&\n error.name === 'AbortError');\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nexport function isBoolean(elm) {\n return typeof elm === 'boolean';\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Safe stringify circular object\n */\nexport function stringify(value, options = {}) {\n if (typeof value !== 'object') {\n return String(value);\n }\n const excludeKeys = new Set(options.excludeKeys);\n const map = new WeakMap();\n const r = (k, v) => {\n if (excludeKeys.has(k)) {\n return;\n }\n if (typeof v === 'object' && v != null) {\n if (map.get(v)) {\n return '[refObject]';\n }\n map.set(v, true);\n }\n return v;\n };\n return JSON.stringify(value, r, options.prettify);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nimport { stringify } from \"../string/stringify.js\";\n/**\n * Check two element are equal\n */\nexport function isEqual(a, b) {\n return a === b || stringify(a) === stringify(b);\n}\nexport function isFastEqual(a, b) {\n return a === b;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nimport { isString } from \"./is-string.js\";\n/**\n * Check if a string is html or not\n */\nexport const isHTML = (str) => isString(str) &&\n /<([A-Za-z][A-Za-z0-9]*)\\b[^>]*>(.*?)<\\/\\1>/m.test(str.replace(/[\\r\\n]/g, ''));\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Detect if string is HTML from MS Word or Excel\n */\nexport function isHtmlFromWord(data) {\n return (data.search(/<meta.*?Microsoft Excel\\s[\\d].*?>/) !== -1 ||\n data.search(/<meta.*?Microsoft Word\\s[\\d].*?>/) !== -1 ||\n (data.search(/style=\"[^\"]*mso-/) !== -1 && data.search(/<font/) !== -1));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/dom.js\";\nimport { isFunction } from \"./is-function.js\";\nimport { isVoid } from \"./is-void.js\";\n/**\n * Check value has method init\n */\nexport function isInitable(value) {\n return !isVoid(value) && isFunction(value.init);\n}\n/**\n * Check value has method destruct\n */\nexport function isDestructable(value) {\n return !isVoid(value) && isFunction(value.destruct);\n}\n/**\n * Check value is instant that implements IContainer\n */\nexport function hasContainer(value) {\n return !isVoid(value) && Dom.isElement(value.container);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nimport { isString } from \"./is-string.js\";\n/**\n * Check value has numeric format\n */\nexport function isNumeric(value) {\n if (isString(value)) {\n if (!value.match(/^([+-])?[0-9]+(\\.?)([0-9]+)?(e[0-9]+)?$/)) {\n return false;\n }\n value = parseFloat(value);\n }\n return typeof value === 'number' && !isNaN(value) && isFinite(value);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nimport { isNumeric } from \"./is-numeric.js\";\nimport { isString } from \"./is-string.js\";\n/**\n * Check value is Int\n */\nexport function isInt(value) {\n if (isString(value) && isNumeric(value)) {\n value = parseFloat(value);\n }\n return typeof value === 'number' && Number.isFinite(value) && !(value % 1);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction } from \"./is-function.js\";\n/**\n * Check if element is instance of Jodit\n */\nexport function isJoditObject(jodit) {\n return Boolean(jodit &&\n jodit instanceof Object &&\n isFunction(jodit.constructor) &&\n // @ts-ignore\n ((typeof Jodit !== 'undefined' && jodit instanceof Jodit) ||\n jodit.isJodit));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nimport { isString } from \"./is-string.js\";\nexport const isLicense = (license) => isString(license) &&\n license.length === 23 &&\n /^[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{5}-[a-z0-9]{5}$/i.test(license);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { MARKER_CLASS } from \"../../constants.js\";\nimport { Dom } from \"../../dom/dom.js\";\n/**\n * Define element is selection helper\n */\nexport function isMarker(elm) {\n return (Dom.isNode(elm) &&\n Dom.isTag(elm, 'span') &&\n elm.hasAttribute('data-' + MARKER_CLASS));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check value is a number\n */\nexport function isNumber(value) {\n return typeof value === 'number' && !isNaN(value) && isFinite(value);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nexport function isWindow(obj) {\n return obj != null && obj === obj.window;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isWindow } from \"./is-window.js\";\n/**\n * Check if element is simple plaint object\n */\nexport function isPlainObject(obj) {\n if (!obj || typeof obj !== 'object' || obj.nodeType || isWindow(obj)) {\n return false;\n }\n return !(obj.constructor &&\n !{}.hasOwnProperty.call(obj.constructor.prototype, 'isPrototypeOf'));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nexport function isPromise(val) {\n return val && typeof val.then === 'function';\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\nimport { isFunction } from \"./is-function.js\";\n/**\n * Check if element is set\n */\nexport function isSet(elm) {\n return (Boolean(elm) &&\n isFunction(elm.has) &&\n isFunction(elm.add) &&\n isFunction(elm.delete));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check if a string is an url\n */\nexport function isURL(str) {\n if (str.includes(' ')) {\n return false;\n }\n if (typeof URL !== 'undefined') {\n try {\n const url = new URL(str);\n return ['https:', 'http:', 'ftp:', 'file:', 'rtmp:'].includes(url.protocol);\n }\n catch (e) {\n return false;\n }\n }\n const a = document.createElement('a');\n a.href = str;\n return Boolean(a.hostname);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/checker\n */\n/**\n * Check if name has a normal format\n */\nexport function isValidName(name) {\n if (!name.length) {\n return false;\n }\n return !/[^0-9A-Za-zа-яА-ЯЁё\\w\\-_. ]/.test(name) && name.trim().length > 0;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction } from \"./is-function.js\";\n/**\n * Check if an element is instance of View\n */\nexport function isViewObject(jodit) {\n return Boolean(jodit &&\n jodit instanceof Object &&\n isFunction(jodit.constructor) &&\n jodit.isView);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/string\n */\nimport { INVISIBLE_SPACE_REG_EXP_END, INVISIBLE_SPACE_REG_EXP_START, SPACE_REG_EXP_END, SPACE_REG_EXP_START } from \"../../constants.js\";\n/**\n * It clears the line of all auxiliary invisible characters , from the spaces and line breaks , tabs\n * from the beginning and end of the line\n */\nexport function trim(value) {\n return value\n .replace(SPACE_REG_EXP_END(), '')\n .replace(SPACE_REG_EXP_START(), '');\n}\nexport function trimChars(value, chars) {\n return value\n .replace(RegExp(`[${chars}]+$`), '')\n .replace(RegExp(`^[${chars}]+`), '');\n}\n/**\n * Trim only invisible chars\n */\nexport function trimInv(value) {\n return value\n .replace(INVISIBLE_SPACE_REG_EXP_END(), '')\n .replace(INVISIBLE_SPACE_REG_EXP_START(), '');\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Class for adding event handling capability\n *\n * ```ts\n * class SomeClass extends Eventify<{ start: (node: Node) => boolean; }> {\n * \tconstructor() {\n * \t\tsuper();\n * \t\tsetTimeout(() => {\n * \t\t\tif (this.emit('start', document.body)) {\n * \t\t\t\tconsole.log('yes');\n * \t\t\t};\n * \t\t}, 100);\n * \t}\n * }\n *\n * const sm = new SomeClass();\n * sm.on('start', (node) => {\n * \tconsole.log(node);\n * \treturn true;\n * })\n * ```\n */\nexport class Eventify {\n constructor() {\n this.__map = new Map();\n }\n on(name, func) {\n if (!this.__map.has(name)) {\n this.__map.set(name, new Set());\n }\n this.__map.get(name)?.add(func);\n return this;\n }\n off(name, func) {\n if (this.__map.has(name)) {\n this.__map.get(name)?.delete(func);\n }\n return this;\n }\n destruct() {\n this.__map.clear();\n }\n emit(name, ...args) {\n let result;\n if (this.__map.has(name)) {\n this.__map.get(name)?.forEach(cb => {\n result = cb(...args);\n });\n }\n return result;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { autobind } from \"../decorators/index.js\";\nimport { Dom } from \"./dom.js\";\nimport { Eventify } from \"../event-emitter/eventify.js\";\nexport class LazyWalker extends Eventify {\n setWork(root) {\n if (this.isWorked) {\n this.break();\n }\n this.workNodes = Dom.eachGen(root, !this.options.reverse);\n this.isFinished = false;\n this.startIdleRequest();\n return this;\n }\n constructor(async, options = {}) {\n super();\n this.async = async;\n this.options = options;\n this.workNodes = null;\n this.hadAffect = false;\n this.isWorked = false;\n this.isFinished = false;\n this.idleId = 0;\n }\n startIdleRequest() {\n this.idleId = this.async.requestIdleCallback(this.workPerform, {\n timeout: this.options.timeout ?? 10\n });\n }\n break(reason) {\n if (this.isWorked) {\n this.stop();\n this.emit('break', reason);\n }\n }\n end() {\n if (this.isWorked) {\n this.stop();\n this.emit('end', this.hadAffect);\n this.hadAffect = false;\n }\n }\n stop() {\n this.isWorked = false;\n this.isFinished = true;\n this.workNodes = null;\n this.async.cancelIdleCallback(this.idleId);\n }\n destruct() {\n super.destruct();\n this.stop();\n }\n workPerform(deadline) {\n if (this.workNodes) {\n this.isWorked = true;\n let count = 0;\n const chunkSize = this.options.timeoutChunkSize ?? 50;\n while (!this.isFinished &&\n (deadline.timeRemaining() > 0 ||\n (deadline.didTimeout && count <= chunkSize))) {\n const item = this.workNodes.next();\n count += 1;\n if (this.visitNode(item.value)) {\n this.hadAffect = true;\n }\n if (item.done) {\n this.end();\n return;\n }\n }\n }\n else {\n this.end();\n }\n if (!this.isFinished) {\n this.startIdleRequest();\n }\n }\n visitNode(nodeElm) {\n if (!nodeElm ||\n (this.options.whatToShow !== undefined &&\n nodeElm.nodeType !== this.options.whatToShow)) {\n return false;\n }\n return this.emit('visit', nodeElm) ?? false;\n }\n}\n__decorate([\n autobind\n], LazyWalker.prototype, \"workPerform\", null);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/color\n */\n/**\n * Converts rgba text representation of color in hex\n *\n * @param color - string like rgba(red, green, blue, alpha) or rgb(red, green, blue)\n * @returns hex color view, NaN - for transparent color\n * @example\n * ```javascript\n * var p = document.createElement('p');\n * p.style.color = '#ffffff';\n * console.log(p.getAttribute('style')); // color: rgb(255, 255, 255);\n * console.log(colorTohex(p.style.color)); // #ffffff\n * ```\n */\nexport const colorToHex = (color) => {\n if (color === 'rgba(0, 0, 0, 0)' || color === '') {\n return false;\n }\n if (!color) {\n return '#000000';\n }\n if (color.substr(0, 1) === '#') {\n return color;\n }\n const digits = /([\\s\\n\\t\\r]*?)rgb\\((\\d+), (\\d+), (\\d+)\\)/.exec(color) ||\n /([\\s\\n\\t\\r]*?)rgba\\((\\d+), (\\d+), (\\d+), ([\\d.]+)\\)/.exec(color);\n if (!digits) {\n return '#000000';\n }\n const red = parseInt(digits[2], 10), green = parseInt(digits[3], 10), blue = parseInt(digits[4], 10), rgb = blue | (green << 8) | (red << 16);\n let hex = rgb.toString(16).toUpperCase();\n while (hex.length < 6) {\n hex = '0' + hex;\n }\n return digits[1] + '#' + hex;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/string\n */\nexport const kebabCase = (key) => {\n return key\n .replace(/([A-Z])([A-Z])([a-z])/g, '$1-$2$3')\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n};\nexport const CamelCaseToKebabCase = (key) => {\n return key\n .replace(/([A-Z])([A-Z])([a-z])/g, '$1-$2$3')\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .toLowerCase();\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/normalize\n */\nimport { isNumeric } from \"../checker/is-numeric.js\";\nimport { isVoid } from \"../checker/is-void.js\";\nimport { colorToHex } from \"../color/color-to-hex.js\";\nimport { kebabCase } from \"../string/kebab-case.js\";\nexport const NUMBER_FIELDS_REG = /^(left|top|bottom|right|width|min|max|height|margin|padding|fontsize|font-size)/i;\nexport function normalizeCssNumericValue(key, value) {\n if (!isVoid(value) &&\n NUMBER_FIELDS_REG.test(key) &&\n isNumeric(value.toString())) {\n return parseInt(value.toString(), 10) + 'px';\n }\n return value;\n}\nexport function normalizeCssValue(key, value) {\n switch (kebabCase(key)) {\n case 'font-weight':\n switch (value.toString().toLowerCase()) {\n case '700':\n case 'bold':\n return 700;\n case '400':\n case 'normal':\n return 400;\n case '900':\n case 'heavy':\n return 900;\n }\n return isNumeric(value) ? Number(value) : value;\n }\n if (/color/i.test(key) && /^rgb/i.test(value.toString())) {\n return colorToHex(value.toString()) || value;\n }\n return value;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/string\n */\n/**\n * Convert (kebab-case or snake_case) to camelCase\n */\nexport const camelCase = (key) => {\n return key.replace(/([-_])(.)/g, (m, code, letter) => {\n return letter.toUpperCase();\n });\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isBoolean } from \"../checker/is-boolean.js\";\nimport { isPlainObject } from \"../checker/is-plain-object.js\";\nimport { normalizeCssNumericValue, normalizeCssValue, NUMBER_FIELDS_REG } from \"../normalize/normalize-css-value.js\";\nimport { camelCase } from \"../string/camel-case.js\";\nimport { kebabCase } from \"../string/kebab-case.js\";\n/**\n * Get the value of a computed style property for the first element in the set of matched elements or set one or\n * more CSS properties for every matched element\n *\n * @param element - HTML element\n * @param key - An object of property-value pairs to set. A CSS property name.\n * @param value - A value to set for the property.\n * @param onlyStyleMode - Get value from style attribute, without calculating\n */\nexport function css(element, key, value, onlyStyleMode = false) {\n if (isBoolean(value)) {\n onlyStyleMode = value;\n value = undefined;\n }\n if (isPlainObject(key) || value !== undefined) {\n const setValue = (elm, _key, _value) => {\n _value = normalizeCssNumericValue(_key, _value);\n if (_value !== undefined &&\n (_value == null ||\n css(elm, _key, true) !== normalizeCssValue(_key, _value))) {\n elm.style[_key] = _value;\n }\n };\n if (isPlainObject(key)) {\n const keys = Object.keys(key);\n for (let j = 0; j < keys.length; j += 1) {\n setValue(element, camelCase(keys[j]), key[keys[j]]);\n }\n }\n else {\n setValue(element, camelCase(key), value);\n }\n return '';\n }\n const key2 = kebabCase(key), doc = element.ownerDocument || document, win = doc ? doc.defaultView || doc.parentWindow : false;\n const currentValue = element.style[key];\n let result = '';\n if (currentValue !== undefined && currentValue !== '') {\n result = currentValue;\n }\n else if (win && !onlyStyleMode) {\n result = win.getComputedStyle(element).getPropertyValue(key2);\n }\n if (NUMBER_FIELDS_REG.test(key) &&\n /^[-+]?[0-9.]+px$/.test(result.toString())) {\n result = parseInt(result.toString(), 10);\n }\n return normalizeCssValue(key, result);\n}\n/**\n * Clear center align\n */\nexport const clearCenterAlign = (image) => {\n if (css(image, 'display') === 'block') {\n css(image, 'display', '');\n }\n const { style } = image;\n if (style.marginLeft === 'auto' && style.marginRight === 'auto') {\n style.marginLeft = '';\n style.marginRight = '';\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/index.js\";\nimport { clearCenterAlign, css } from \"./css.js\";\n/**\n * Align image\n */\nexport function hAlignElement(image, align) {\n if (align && align !== 'normal') {\n if (align !== 'center') {\n css(image, 'float', align);\n clearCenterAlign(image);\n }\n else {\n css(image, {\n float: '',\n display: 'block',\n marginLeft: 'auto',\n marginRight: 'auto'\n });\n }\n }\n else {\n if (css(image, 'float') &&\n ['right', 'left'].indexOf(css(image, 'float').toString().toLowerCase()) !== -1) {\n css(image, 'float', '');\n }\n clearCenterAlign(image);\n }\n}\n/**\n * Remove text-align style for all selected children\n */\nexport function clearAlign(node) {\n Dom.each(node, elm => {\n if (Dom.isHTMLElement(elm)) {\n if (elm.style.textAlign) {\n elm.style.textAlign = '';\n if (!elm.style.cssText.trim().length) {\n elm.removeAttribute('style');\n }\n }\n }\n });\n}\n/**\n * Apply align for element\n */\nexport function alignElement(command, box) {\n if (Dom.isNode(box) && Dom.isElement(box)) {\n clearAlign(box);\n switch (command.toLowerCase()) {\n case 'justifyfull':\n box.style.textAlign = 'justify';\n break;\n case 'justifyright':\n box.style.textAlign = 'right';\n break;\n case 'justifyleft':\n box.style.textAlign = 'left';\n break;\n case 'justifycenter':\n box.style.textAlign = 'center';\n break;\n }\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nexport const completeUrl = (url) => {\n if (window.location.protocol === 'file:' && /^\\/\\//.test(url)) {\n url = 'https:' + url;\n }\n return url;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isString } from \"../checker/is-string.js\";\nimport { completeUrl } from \"./complete-url.js\";\nconst alreadyLoadedList = new Map();\nconst cacheLoaders = (loader) => {\n return async (jodit, url) => {\n if (alreadyLoadedList.has(url)) {\n return alreadyLoadedList.get(url);\n }\n const promise = loader(jodit, url);\n alreadyLoadedList.set(url, promise);\n return promise;\n };\n};\n/**\n * Load script and return promise\n */\nexport const appendScriptAsync = cacheLoaders((jodit, url) => {\n return jodit.async.promise((resolve, reject) => {\n if (jodit.isInDestruct) {\n return reject();\n }\n const script = jodit.c.element('script', {\n type: 'text/javascript',\n crossorigin: 'anonymous',\n referrerpolicy: 'no-referrer',\n async: true,\n src: completeUrl(url)\n });\n jodit.od.body.appendChild(script);\n jodit.e.on(script, 'error', reject).on(script, 'load', resolve);\n });\n});\n/**\n * Download CSS style script\n */\nexport const appendStyleAsync = cacheLoaders((jodit, url) => {\n return jodit.async.promise((resolve, reject) => {\n if (jodit.isInDestruct) {\n return reject();\n }\n const link = jodit.c.element('link');\n link.rel = 'stylesheet';\n link.media = 'all';\n link.crossOrigin = 'anonymous';\n const callback = () => resolve(link);\n !jodit.isInDestruct &&\n jodit.e.on(link, 'load', callback).on(link, 'error', reject);\n link.href = completeUrl(url);\n if (jodit.o.shadowRoot) {\n jodit.o.shadowRoot.appendChild(link);\n }\n else {\n jodit.od.body.appendChild(link);\n }\n });\n});\nexport function loadNext(jodit, urls, i = 0) {\n if (!isString(urls[i])) {\n return Promise.resolve();\n }\n return appendScriptAsync(jodit, urls[i]).then(() => loadNext(jodit, urls, i + 1));\n}\nexport function loadNextStyle(jodit, urls, i = 0) {\n if (!isString(urls[i])) {\n return Promise.resolve();\n }\n return appendStyleAsync(jodit, urls[i]).then(() => loadNextStyle(jodit, urls, i + 1));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nclass AssertionError extends Error {\n constructor(message) {\n super(message);\n this.name = 'AssertionError';\n }\n}\n/** Asserts that condition is truthy (or evaluates to true). */\nfunction assert(condition, message) {\n if (!condition) {\n throw new AssertionError(`Assertion failed: ${message}`);\n }\n}\nexport { assert };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction, isPlainObject, isString } from \"../checker/index.js\";\nimport { CamelCaseToKebabCase } from \"../string/kebab-case.js\";\nimport { css } from \"./css.js\";\n/**\n * Alias for `elm.getAttribute` but if set second argument `-{key}`\n * it will also check `data-{key}` attribute\n * if set `value` it is alias for setAttribute with the same logic\n */\nexport function attr(elm, keyOrAttributes, value) {\n if (!elm || !isFunction(elm.getAttribute)) {\n return null;\n }\n if (!isString(keyOrAttributes)) {\n Object.keys(keyOrAttributes).forEach(key => {\n const value = keyOrAttributes[key];\n if (isPlainObject(value) && key === 'style') {\n css(elm, value);\n }\n else {\n if (key === 'className') {\n key = 'class';\n }\n attr(elm, key, value);\n }\n });\n return null;\n }\n let key = CamelCaseToKebabCase(keyOrAttributes);\n if (/^-/.test(key)) {\n const res = attr(elm, `data${key}`);\n if (res) {\n return res;\n }\n key = key.substr(1);\n }\n if (value !== undefined) {\n if (value == null) {\n elm.hasAttribute(key) && elm.removeAttribute(key);\n }\n else {\n let replaceValue = value.toString();\n if (elm.nodeName === 'IMG' &&\n (key === 'width' || key === 'height')) {\n replaceValue = replaceValue.replace('px', '');\n }\n elm.setAttribute(key, replaceValue);\n return replaceValue;\n }\n }\n return elm.getAttribute(key);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\n/**\n * Module returns method that is used to determine the browser\n * @example\n * ```javascript\n * console.log(Jodit.modules.Helpers.browser('mse'));\n * console.log(Jodit.modules.Helpers.browser('chrome'));\n * console.log($Jodit.modules.Helpers.browser('opera'));\n * console.log(Jodit.modules.Helpers.browser('firefox'));\n * console.log(Jodit.modules.Helpers.browser('mse') && Jodit.modules.Helpers.browser('version') > 10);\n * ```\n */\nexport const browser = (browser) => {\n const ua = navigator.userAgent.toLowerCase(), match = /(firefox)[\\s/]([\\w.]+)/.exec(ua) ||\n /(chrome)[\\s/]([\\w.]+)/.exec(ua) ||\n /(webkit)[\\s/]([\\w.]+)/.exec(ua) ||\n /(opera)(?:.*version)[\\s/]([\\w.]+)/.exec(ua) ||\n /(msie)[\\s]([\\w.]+)/.exec(ua) ||\n /(trident)\\/([\\w.]+)/.exec(ua) ||\n ua.indexOf('compatible') < 0 ||\n [];\n if (browser === 'version') {\n return match[2];\n }\n if (browser === 'webkit') {\n return match[1] === 'chrome' || match[1] === 'webkit';\n }\n if (browser === 'ff') {\n return match[1] === 'firefox';\n }\n if (browser === 'msie') {\n return match[1] === 'trident' || match[1] === 'msie';\n }\n return match[1] === browser;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isPlainObject } from \"../checker/is-plain-object.js\";\n/**\n * Build query string\n */\nexport const buildQuery = (data, prefix) => {\n const str = [];\n const enc = encodeURIComponent;\n for (const dataKey in data) {\n if (Object.prototype.hasOwnProperty.call(data, dataKey)) {\n const k = prefix ? prefix + '[' + dataKey + ']' : dataKey;\n const v = data[dataKey];\n str.push(isPlainObject(v) ? buildQuery(v, k) : enc(k) + '=' + enc(v));\n }\n }\n return str.join('&');\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Editor options. These can be configured upon the creation of the editor.\n * ```javascript\n * const editor = Jodit.make('#editor', {\n * \t toolbar: true,\n * \t buttons: ['bold', 'italic', 'underline']\n * \t // other options\n * \t // ...\n * });\n * ```\n * @packageDocumentation\n * @module config\n */\nimport * as consts from \"./core/constants.js\";\nimport { INSERT_AS_HTML } from \"./core/constants.js\";\n/**\n * Default Editor's Configuration\n */\nclass Config {\n constructor() {\n /**\n * Use cache for heavy methods\n */\n this.cache = true;\n /**\n * Timeout of all asynchronous methods\n */\n this.defaultTimeout = 100;\n this.namespace = '';\n /**\n * Editor loads completely without plugins. Useful when debugging your own plugin.\n */\n this.safeMode = false;\n /**\n * Editor's width\n *\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * width: '100%',\n * })\n * ```\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * width: 600, // equivalent for '600px'\n * })\n * ```\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * width: 'auto', // autosize\n * })\n * ```\n */\n this.width = 'auto';\n /**\n * Editor's height\n *\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * height: '100%',\n * })\n * ```\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * height: 600, // equivalent for '600px'\n * })\n * ```\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * height: 'auto', // default - autosize\n * })\n * ```\n */\n this.height = 'auto';\n /**\n * List of plugins that will be initialized in safe mode.\n *\n * ```js\n * Jodit.make('#editor', {\n * \tsafeMode: true,\n * \tsafePluginsList: ['about'],\n * \textraPlugins: ['yourPluginDev']\n * });\n * ```\n */\n this.safePluginsList = [\n 'about',\n 'enter',\n 'backspace',\n 'size',\n 'bold',\n 'hotkeys'\n ];\n /**\n * Reserved for the paid version of the editor\n */\n this.license = '';\n /**\n * The name of the preset that will be used to initialize the editor.\n * The list of available presets can be found here Jodit.defaultOptions.presets\n * ```javascript\n * Jodit.make('.editor', {\n * \tpreset: 'inline'\n * });\n * ```\n */\n this.preset = 'custom';\n this.presets = {\n inline: {\n inline: true,\n toolbar: false,\n toolbarInline: true,\n toolbarInlineForSelection: true,\n showXPathInStatusbar: false,\n showCharsCounter: false,\n showWordsCounter: false,\n showPlaceholder: false\n }\n };\n this.ownerDocument = (typeof document !== 'undefined'\n ? document\n : null);\n /**\n * Allows you to specify the window in which the editor will be created. Default - window\n * This is necessary if you are creating the editor inside an iframe but the code is running in the parent window\n */\n this.ownerWindow = (typeof window !== 'undefined'\n ? window\n : null);\n /**\n * Shadow root if Jodit was created in it\n *\n * ```html\n * <div id=\"editor\"></div>\n * ```\n *\n * ```js\n * const app = document.getElementById('editor');\n * app.attachShadow({ mode: 'open' });\n * const root = app.shadowRoot;\n *\n * root.innerHTML = `\n * <link rel=\"stylesheet\" href=\"./build/jodit.css\"/>\n * <h1>Jodit example in Shadow DOM</h1>\n * <div id=\"edit\"></div>\n * `;\n *\n * const editor = Jodit.make(root.getElementById('edit'), {\n * \tglobalFullSize: false,\n * \tshadowRoot: root\n * });\n * editor.value = '<p>start</p>';\n * ```\n */\n this.shadowRoot = null;\n /**\n * z-index For editor\n */\n this.zIndex = 0;\n /**\n * Change the read-only state of the editor\n */\n this.readonly = false;\n /**\n * Change the disabled state of the editor\n */\n this.disabled = false;\n /**\n * In readOnly mode, some buttons can still be useful, for example, the button to view source code or print\n */\n this.activeButtonsInReadOnly = [\n 'source',\n 'fullsize',\n 'print',\n 'about',\n 'dots',\n 'selectall'\n ];\n /**\n * When the editor is in read-only mode, some commands can still be executed:\n * ```javascript\n * const editor = Jodit.make('.editor', {\n * \t allowCommandsInReadOnly: ['selectall', 'preview', 'print']\n * \t readonly: true\n * });\n * editor.execCommand('selectall');// will be selected all content\n * editor.execCommand('delete');// but content will not be deleted\n * ```\n */\n this.allowCommandsInReadOnly = ['selectall', 'preview', 'print'];\n /**\n * Size of icons in the toolbar (can be \"small\", \"middle\", \"large\")\n *\n * @example\n * ```javascript\n * const editor = Jodit.make(\".dark_editor\", {\n * toolbarButtonSize: \"small\"\n * });\n * ```\n */\n this.toolbarButtonSize = 'middle';\n /**\n * Allow navigation in the toolbar of the editor by Tab key\n */\n this.allowTabNavigation = false;\n /**\n * Inline editing mode\n */\n this.inline = false;\n /**\n * Theme (can be \"dark\")\n * @example\n * ```javascript\n * const editor = Jodit.make(\".dark_editor\", {\n * theme: \"dark\"\n * });\n * ```\n */\n this.theme = 'default';\n /**\n * if set true, then the current mode is saved in a cookie, and is restored after a reload of the page\n */\n this.saveModeInStorage = false;\n /**\n * Class name that can be appended to the editable area\n *\n * @see [[Config.iframeCSSLinks]]\n * @see [[Config.iframeStyle]]\n *\n * @example\n * ```javascript\n * Jodit.make('#editor', {\n * editorClassName: 'some_my_class'\n * });\n * ```\n * ```html\n * <style>\n * .some_my_class p{\n * line-height: 16px;\n * }\n * </style>\n * ```\n */\n this.editorClassName = false;\n /**\n * Class name that can be appended to the main editor container\n * @example\n * ```javascript\n * const jodit = Jodit.make('#editor', {\n * className: 'some_my_class'\n * });\n *\n * console.log(jodit.container.classList.contains('some_my_class')); // true\n * ```\n * ```html\n * <style>\n * .some_my_class {\n * max-width: 600px;\n * margin: 0 auto;\n * }\n * </style>\n * ```\n */\n this.className = false;\n /**\n * The internal styles of the editable area. They are intended to change\n * not the appearance of the editor, but to change the appearance of the content.\n * @example\n * ```javascript\n * Jodit.make('#editor', {\n * \t\tstyle: {\n * \t\t font: '12px Arial',\n * \t\t color: '#0c0c0c'\n * \t\t}\n * });\n * ```\n */\n this.style = false;\n /**\n *\n * @example\n * ```javascript\n * Jodit.make('#editor', {\n * \t\teditorStyle: {\n * \t\t font: '12px Arial',\n * \t\t color: '#0c0c0c'\n * \t\t}\n * });\n * ```\n */\n this.containerStyle = false;\n /**\n * Dictionary of variable values in css, a complete list can be found here\n * https://github.com/xdan/jodit/blob/main/src/styles/variables.less#L25\n *\n * @example\n * ```js\n * const editor = Jodit.make('#editor', {\n * styleValues: {\n *\t\t'color-text': 'red',\n *\t\tcolorBorder: 'black',\n *\t\t'color-panel': 'blue'\n * }\n * });\n * ```\n */\n this.styleValues = {};\n /**\n * After all, changes in editors for textarea will call change trigger\n *\n * @example\n * ```javascript\n * const editor = Jodit.make('#editor');\n * document.getElementById('editor').addEventListener('change', function () {\n * console.log(this.value);\n * })\n * ```\n */\n this.triggerChangeEvent = true;\n /**\n * The writing direction of the language which is used to create editor content. Allowed values are: ''\n * (an empty string) – Indicates that content direction will be the same as either the editor UI direction or\n * the page element direction. 'ltr' – Indicates a Left-To-Right text direction (like in English).\n * 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).\n *\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * direction: 'rtl'\n * })\n * ```\n */\n this.direction = '';\n /**\n * Language by default. if `auto` language set by document.documentElement.lang ||\n * (navigator.language && navigator.language.substr(0, 2)) ||\n * (navigator.browserLanguage && navigator.browserLanguage.substr(0, 2)) || 'en'\n *\n * @example\n * ```html\n * <!-- include in you page lang file -->\n * <script src=\"jodit/lang/de.js\"></script>\n * <script>\n * var editor = Jodit.make('.editor', {\n * language: 'de'\n * });\n * </script>\n * ```\n */\n this.language = 'auto';\n /**\n * if true all Lang.i18n(key) return `{key}`\n *\n * @example\n * ```html\n * <script>\n * var editor = Jodit.make('.editor', {\n * debugLanguage: true\n * });\n *\n * console.log(editor.i18n(\"Test\")); // {Test}\n * </script>\n * ```\n */\n this.debugLanguage = false;\n /**\n * Collection of language pack data `{en: {'Type something': 'Type something', ...}}`\n *\n * @example\n * ```javascript\n * const editor = Jodit.make('#editor', {\n * language: 'ru',\n * i18n: {\n * ru: {\n * 'Type something': 'Начните что-либо вводить'\n * }\n * }\n * });\n * console.log(editor.i18n('Type something')) //Начните что-либо вводить\n * ```\n */\n this.i18n = false;\n /**\n * The tabindex global attribute is an integer indicating if the element can take\n * input focus (is focusable), if it should participate to sequential keyboard navigation,\n * and if so, at what position. It can take several values\n */\n this.tabIndex = -1;\n /**\n * Boolean, whether the toolbar should be shown.\n * Alternatively, a valid css-selector-string to use an element as toolbar container.\n */\n this.toolbar = true;\n /**\n * Boolean, whether the statusbar should be shown.\n */\n this.statusbar = true;\n /**\n * Show tooltip after mouse enter on the button\n */\n this.showTooltip = true;\n /**\n * Delay before show tooltip\n */\n this.showTooltipDelay = 200;\n /**\n * Instead of create custop tooltip - use native title tooltips\n */\n this.useNativeTooltip = false;\n /**\n * Default insert method\n * @default insert_as_html\n */\n this.defaultActionOnPaste = INSERT_AS_HTML;\n // TODO\n // autosave: false, // false or url\n // autosaveCallback: false, // function\n // interval: 60, // seconds\n // TODO\n /**\n * Element that will be created when you press Enter\n */\n this.enter = consts.PARAGRAPH;\n /**\n * When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.\n *\n * @example\n * ```javascript\n * Jodit.make('#editor', {\n * iframe: true,\n * iframeStyle: 'html{margin: 0px;}body{padding:10px;background:transparent;color:#000;position:relative;z-index:2;\\\n * user-select:auto;margin:0px;overflow:hidden;}body:after{content:\"\";clear:both;display:block}';\n * });\n * ```\n */\n this.iframe = false;\n /**\n * Allow editing the entire HTML document(html, head)\n * \\> Works together with the iframe option.\n * @example\n * ```js\n * const editor = Jodit.make('#editor', {\n * iframe: true,\n * editHTMLDocumentMode: true\n * });\n * editor.value = '<!DOCTYPE html><html lang=\"en\" style=\"overflow-y:hidden\">' +\n * \t'<head><title>Jodit Editor</title></head>' +\n * \t'<body spellcheck=\"false\"><p>Some text</p><p> a </p></body>' +\n * \t'</html>';\n * ```\n */\n this.editHTMLDocumentMode = false;\n /**\n * Use when you need to insert new block element\n * use enter option if not set\n */\n this.enterBlock = this.enter !== 'br' ? this.enter : consts.PARAGRAPH;\n /**\n * Jodit.MODE_WYSIWYG The HTML editor allows you to write like MSWord,\n * Jodit.MODE_SOURCE syntax highlighting source editor\n * @example\n * ```javascript\n * var editor = Jodit.make('#editor', {\n * defaultMode: Jodit.MODE_SPLIT\n * });\n * console.log(editor.getRealMode())\n * ```\n */\n this.defaultMode = consts.MODE_WYSIWYG;\n /**\n * Use split mode\n */\n this.useSplitMode = false;\n /**\n * The colors in HEX representation to select a color for the background and for the text in colorpicker\n * @example\n * ```javascript\n * Jodit.make('#editor', {\n * colors: ['#ff0000', '#00ff00', '#0000ff']\n * })\n * ```\n */\n this.colors = {\n greyscale: [\n '#000000',\n '#434343',\n '#666666',\n '#999999',\n '#B7B7B7',\n '#CCCCCC',\n '#D9D9D9',\n '#EFEFEF',\n '#F3F3F3',\n '#FFFFFF'\n ],\n palette: [\n '#980000',\n '#FF0000',\n '#FF9900',\n '#FFFF00',\n '#00F0F0',\n '#00FFFF',\n '#4A86E8',\n '#0000FF',\n '#9900FF',\n '#FF00FF'\n ],\n full: [\n '#E6B8AF',\n '#F4CCCC',\n '#FCE5CD',\n '#FFF2CC',\n '#D9EAD3',\n '#D0E0E3',\n '#C9DAF8',\n '#CFE2F3',\n '#D9D2E9',\n '#EAD1DC',\n '#DD7E6B',\n '#EA9999',\n '#F9CB9C',\n '#FFE599',\n '#B6D7A8',\n '#A2C4C9',\n '#A4C2F4',\n '#9FC5E8',\n '#B4A7D6',\n '#D5A6BD',\n '#CC4125',\n '#E06666',\n '#F6B26B',\n '#FFD966',\n '#93C47D',\n '#76A5AF',\n '#6D9EEB',\n '#6FA8DC',\n '#8E7CC3',\n '#C27BA0',\n '#A61C00',\n '#CC0000',\n '#E69138',\n '#F1C232',\n '#6AA84F',\n '#45818E',\n '#3C78D8',\n '#3D85C6',\n '#674EA7',\n '#A64D79',\n '#85200C',\n '#990000',\n '#B45F06',\n '#BF9000',\n '#38761D',\n '#134F5C',\n '#1155CC',\n '#0B5394',\n '#351C75',\n '#733554',\n '#5B0F00',\n '#660000',\n '#783F04',\n '#7F6000',\n '#274E13',\n '#0C343D',\n '#1C4587',\n '#073763',\n '#20124D',\n '#4C1130'\n ]\n };\n /**\n * The default tab color picker\n * @example\n * ```javascript\n * Jodit.make('#editor2', {\n * colorPickerDefaultTab: 'color'\n * })\n * ```\n */\n this.colorPickerDefaultTab = 'background';\n /**\n * Image size defaults to a larger image\n */\n this.imageDefaultWidth = 300;\n /**\n * Do not display these buttons that are on the list\n * @example\n * ```javascript\n * Jodit.make('#editor2', {\n * removeButtons: ['hr', 'source']\n * });\n * ```\n */\n this.removeButtons = [];\n /**\n * Do not init these plugins\n * @example\n * ```typescript\n * var editor = Jodit.make('.editor', {\n * disablePlugins: 'table,iframe'\n * });\n * //or\n * var editor = Jodit.make('.editor', {\n * disablePlugins: ['table', 'iframe']\n * });\n * ```\n */\n this.disablePlugins = [];\n /**\n * Init and download extra plugins\n * @example\n * ```typescript\n * var editor = Jodit.make('.editor', {\n * extraPlugins: ['emoji']\n * });\n * ```\n * It will try load %SCRIPT_PATH%/plugins/emoji/emoji.js and after load will try init it\n */\n this.extraPlugins = [];\n /**\n * These buttons list will be added to the option. Buttons\n */\n this.extraButtons = [];\n /**\n * By default, you can only install an icon from the Jodit suite.\n * You can add your icon to the set using the `Jodit.modules.Icon.set (name, svg Code)` method.\n * But for a declarative declaration, you can use this option.\n *\n * @example\n * ```js\n * Jodit.modules.Icon.set('someIcon', '<svg><path.../></svg>');\n * const editor = Jodit.make({\n * extraButtons: [{\n * name: 'someButton',\n * icon: 'someIcon'\n * }]\n * });\n *\n * @example\n * const editor = Jodit.make({\n * extraIcons: {\n * someIcon: '<svg><path.../></svg>'\n * },\n * extraButtons: [{\n * name: 'someButton',\n * icon: 'someIcon'\n * }]\n * });\n * ```\n * @example\n * ```js\n * const editor = Jodit.make({\n * extraButtons: [{\n * name: 'someButton',\n * icon: '<svg><path.../></svg>'\n * }]\n * });\n * ```\n */\n this.extraIcons = {};\n /**\n * Default attributes for created inside editor elements\n * @example\n * ```js\n * const editor2 = Jodit.make('#editor', {\n * \tcreateAttributes: {\n * \t\tdiv: {\n * \t\t\tclass: 'test'\n * \t\t},\n * \t\tul: function (ul) {\n * \t\t\tul.classList.add('ui-test');\n * \t\t}\n * \t}\n * });\n *\n * const div2 = editor2.createInside.div();\n * expect(div2.className).equals('test');\n *\n * const ul = editor2.createInside.element('ul');\n * expect(ul.className).equals('ui-test');\n * ```\n * Or JSX in React\n * @example\n * ```jsx\n * import React, {useState, useRef} from 'react';\n * import JoditEditor from \"jodit-react\";\n *\n * const config = {\n * \tcreateAttributes: {\n * \t\tdiv: {\n * \t\t\tclass: 'align-center'\n * \t\t}\n * \t}\n * };\n *\n * <JoditEditor config={config}/>\n * ```\n */\n this.createAttributes = {\n table: {\n style: 'border-collapse:collapse;width: 100%;'\n }\n };\n /**\n * The width of the editor, accepted as the biggest. Used to the responsive version of the editor\n */\n this.sizeLG = 900;\n /**\n * The width of the editor, accepted as the medium. Used to the responsive version of the editor\n */\n this.sizeMD = 700;\n /**\n * The width of the editor, accepted as the small. Used to the responsive version of the editor\n */\n this.sizeSM = 400;\n /**\n * The list of buttons that appear in the editor's toolbar on large places (≥ options.sizeLG).\n * Note - this is not the width of the device, the width of the editor\n * @example\n * ```javascript\n * Jodit.make('#editor', {\n * buttons: ['bold', 'italic', 'source'],\n * buttonsMD: ['bold', 'italic'],\n * buttonsXS: ['bold', 'fullsize'],\n * });\n * ```\n * @example\n * ```javascript\n * Jodit.make('#editor2', {\n * buttons: [{\n * name: 'empty',\n * icon: 'source',\n * exec: function (editor) {\n * const dialog = new Jodit.modules.Dialog({}),\n * text = editor.c.element('textarea');\n *\n * dialog.setHeader('Source code');\n * dialog.setContent(text);\n * dialog.setSize(400, 300);\n *\n * Jodit.modules.Helpers.css(elm, {\n * width: '100%',\n * height: '100%'\n * })\n \n * dialog.open();\n * }\n * }]\n * });\n * ```\n * @example\n * ```javascript\n * Jodit.make('#editor2', {\n * buttons: Jodit.defaultOptions.buttons.concat([{\n * name: 'listsss',\n * iconURL: 'stuf/dummy.png',\n * list: {\n * h1: 'insert Header 1',\n * h2: 'insert Header 2',\n * clear: 'Empty editor',\n * },\n * exec: ({originalEvent, control, btn}) => {\n * var key = control.args[0],\n * value = control.args[1];\n * if (key === 'clear') {\n * this.val('');\n * return;\n * }\n * this.s.insertNode(this.c.element(key, ''));\n * this.message.info('Was inserted ' + value);\n * },\n * template: function (key, value) {\n * return '<div>' + value + '</div>';\n * }\n * });\n * ```\n */\n this.buttons = [\n {\n group: 'font-style',\n buttons: []\n },\n {\n group: 'list',\n buttons: []\n },\n {\n group: 'font',\n buttons: []\n },\n '---',\n {\n group: 'script',\n buttons: []\n },\n {\n group: 'media',\n buttons: []\n },\n '\\n',\n {\n group: 'state',\n buttons: []\n },\n {\n group: 'clipboard',\n buttons: []\n },\n {\n group: 'insert',\n buttons: []\n },\n {\n group: 'indent',\n buttons: []\n },\n {\n group: 'color',\n buttons: []\n },\n {\n group: 'form',\n buttons: []\n },\n '---',\n {\n group: 'history',\n buttons: []\n },\n {\n group: 'search',\n buttons: []\n },\n {\n group: 'source',\n buttons: []\n },\n {\n group: 'other',\n buttons: []\n },\n {\n group: 'info',\n buttons: []\n }\n ];\n /**\n * Some events are called when the editor is initialized, for example, the `afterInit` event.\n * So this code won't work:\n * ```javascript\n * const editor = Jodit.make('#editor');\n * editor.events.on('afterInit', () => console.log('afterInit'));\n * ```\n * You need to do this:\n * ```javascript\n * Jodit.make('#editor', {\n * \t\tevents: {\n * \t \tafterInit: () => console.log('afterInit')\n * \t\t}\n * });\n * ```\n * The option can use any Jodit events, for example:\n * ```javascript\n * const editor = Jodit.make('#editor', {\n * \t\tevents: {\n * \t\t\thello: (name) => console.log('Hello', name)\n * \t\t}\n * });\n * editor.e.fire('hello', 'Mike');\n * ```\n */\n this.events = {};\n /**\n * Buttons in toolbat without SVG - only texts\n */\n this.textIcons = false;\n /**\n * shows a INPUT[type=color] to open the browser color picker, on the right bottom of widget color picker\n */\n this.showBrowserColorPicker = true;\n }\n static get defaultOptions() {\n if (!Config.__defaultOptions) {\n Config.__defaultOptions = new Config();\n }\n return Config.__defaultOptions;\n }\n}\nConfig.prototype.controls = {};\nexport { Config };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nimport { stringify } from \"../string/stringify.js\";\nexport function isAtom(obj) {\n return obj && obj.isAtom;\n}\nexport function markAsAtomic(obj) {\n Object.defineProperty(obj, 'isAtom', {\n enumerable: false,\n value: true,\n configurable: false\n });\n return obj;\n}\nexport function fastClone(object) {\n return JSON.parse(stringify(object));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isViewObject } from \"../checker/is-view-object.js\";\nconst store = new WeakMap();\nexport const dataBind = (elm, key, value) => {\n let itemStore = store.get(elm);\n if (!itemStore) {\n itemStore = {};\n store.set(elm, itemStore);\n let e = null;\n if (isViewObject(elm.j)) {\n e = elm.j.e;\n }\n if (isViewObject(elm)) {\n e = elm.e;\n }\n e &&\n e.on('beforeDestruct', () => {\n store.delete(elm);\n });\n }\n if (value === undefined) {\n return itemStore[key];\n }\n itemStore[key] = value;\n return value;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isPromise } from \"../checker/is-promise.js\";\nimport { isVoid } from \"../checker/is-void.js\";\nimport { attr } from \"./attr.js\";\nimport { dataBind } from \"./data-bind.js\";\n/**\n * Call function with parameters\n *\n * @example\n * ```js\n * const f = Math.random();\n * Jodit.modules.Helpers.call(f > 0.5 ? Math.ceil : Math.floor, f);\n * ```\n */\nexport function call(func, ...args) {\n return func(...args);\n}\n/**\n * Mark element for debugging\n */\nexport function markOwner(jodit, elm) {\n attr(elm, 'data-editor_id', jodit.id);\n !elm.component &&\n Object.defineProperty(elm, 'jodit', {\n value: jodit\n });\n}\nexport function callPromise(condition, callback) {\n if (isPromise(condition)) {\n return condition\n .then(resp => resp, () => null)\n .finally(callback);\n }\n return callback?.();\n}\n/**\n * Allow load image in promise\n */\nexport const loadImage = (src, jodit) => jodit.async.promise((res, rej) => {\n const image = new Image(), onError = () => {\n jodit.e.off(image);\n rej?.();\n }, onSuccess = () => {\n jodit.e.off(image);\n res(image);\n };\n jodit.e\n .one(image, 'load', onSuccess)\n .one(image, 'error', onError)\n .one(image, 'abort', onError);\n image.src = src;\n if (image.complete) {\n onSuccess();\n }\n});\nexport const keys = (obj, own = true) => {\n if (own) {\n return Object.keys(obj);\n }\n const props = [];\n for (const key in obj) {\n props.push(key);\n }\n return props;\n};\n/**\n * Memorize last user chose\n */\nexport const memorizeExec = (editor, _, { control }, preProcessValue) => {\n const key = `button${control.command}`;\n let value = (control.args && control.args[0]) ?? dataBind(editor, key);\n if (isVoid(value)) {\n return false;\n }\n dataBind(editor, key, value);\n if (preProcessValue) {\n value = preProcessValue(value);\n }\n editor.execCommand(control.command, false, value ?? undefined);\n};\n/**\n * Get DataTransfer from different event types\n */\nexport const getDataTransfer = (event) => {\n if (event.clipboardData) {\n return event.clipboardData;\n }\n try {\n return event.dataTransfer || new DataTransfer();\n }\n catch {\n return null;\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isArray } from \"../checker/is-array.js\";\nimport { isPlainObject } from \"../checker/is-plain-object.js\";\nimport { isString } from \"../checker/is-string.js\";\nimport { isVoid } from \"../checker/is-void.js\";\nimport { Config } from \"../../../config.js\";\nimport { isAtom } from \"./extend.js\";\nimport { keys } from \"./utils.js\";\n/**\n * @example\n * ```js\n * const defaultConfig = {\n * a: {\n * b: {\n * c: 2\n * },\n * e: 5\n * },\n * d: {\n * g: 7\n * }\n * };\n *\n * const options = ConfigProto({a: {\n * b: {\n * c: 1\n * }\n * }}, defaultConfig);\n *\n * console.log(options.a.b.c); // 1\n * console.log(options.a.e); // 5\n * console.log(options.d.g); // 7\n *\n * defaultConfig.d.g = 8;\n * console.log(options.d.g); // 8\n *\n * ```\n */\nexport function ConfigProto(options, proto, deep = 0) {\n // Already prototyped object should not be prototyped again\n if (Object.getPrototypeOf(options) !== Object.prototype) {\n return options;\n }\n const def = Config.defaultOptions;\n if (isString(options.preset)) {\n if (def.presets[options.preset] !== undefined) {\n const preset = def.presets[options.preset];\n Object.keys(preset).forEach(subKey => {\n if (isVoid(options[subKey])) {\n options[subKey] = preset[subKey];\n }\n });\n }\n delete options.preset;\n }\n const newOpt = {};\n Object.keys(options).forEach(key => {\n const opt = options[key], protoKey = proto ? proto[key] : null;\n if (isPlainObject(opt) && isPlainObject(protoKey) && !isAtom(opt)) {\n newOpt[key] = ConfigProto(opt, protoKey, deep + 1);\n return;\n }\n // On the first level all arrays are atomic\n if (deep !== 0 && isArray(opt) && !isAtom(opt) && isArray(protoKey)) {\n newOpt[key] = [...opt, ...protoKey.slice(opt.length)];\n return;\n }\n newOpt[key] = opt;\n });\n Object.setPrototypeOf(newOpt, proto);\n return newOpt;\n}\nexport function ConfigFlatten(obj) {\n return keys(obj, false).reduce((app, key) => {\n app[key] = obj[key];\n return app;\n }, {});\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Parse query string\n */\nexport const parseQuery = (queryString) => {\n const query = {}, a = queryString.substring(1).split('&');\n for (let i = 0; i < a.length; i += 1) {\n const keyValue = a[i].split('=');\n query[decodeURIComponent(keyValue[0])] = decodeURIComponent(keyValue[1] || '');\n }\n return query;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nimport { isURL } from \"../checker/is-url.js\";\nimport { parseQuery } from \"./parse-query.js\";\n/**\n * Javascript url pattern converter replace youtube/vimeo url in embed code.\n */\nexport const convertMediaUrlToVideoEmbed = (url, width = 400, height = 345) => {\n if (!isURL(url)) {\n return url;\n }\n const parser = document.createElement('a'), pattern1 = /(?:http?s?:\\/\\/)?(?:www\\.)?(?:vimeo\\.com)\\/?(.+)/g;\n parser.href = url;\n if (!width) {\n width = 400;\n }\n if (!height) {\n height = 345;\n }\n const protocol = parser.protocol || '';\n switch (parser.hostname) {\n case 'www.vimeo.com':\n case 'vimeo.com':\n return pattern1.test(url)\n ? url.replace(pattern1, '<iframe width=\"' +\n width +\n '\" height=\"' +\n height +\n '\" src=\"' +\n protocol +\n '//player.vimeo.com/video/$1\" frameborder=\"0\" allowfullscreen></iframe>')\n : url;\n case 'youtube.com':\n case 'www.youtube.com':\n case 'youtu.be':\n case 'www.youtu.be': {\n const query = parser.search\n ? parseQuery(parser.search)\n : { v: parser.pathname.substr(1) };\n return query.v\n ? '<iframe width=\"' +\n width +\n '\" height=\"' +\n height +\n '\" src=\"' +\n protocol +\n '//www.youtube.com/embed/' +\n query.v +\n '\" frameborder=\"0\" allowfullscreen></iframe>'\n : url;\n }\n }\n return url;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\n/**\n * CTRL pressed\n * @returns true ctrl key was pressed\n */\nexport const ctrlKey = (e) => {\n if (typeof navigator !== 'undefined' &&\n navigator.userAgent.indexOf('Mac OS X') !== -1) {\n if (e.metaKey && !e.altKey) {\n return true;\n }\n }\n else if (e.ctrlKey && !e.altKey) {\n return true;\n }\n return false;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nimport { isString } from \"../checker/is-string.js\";\n/**\n * Try define user language\n */\nexport const defaultLanguage = (language, defaultLanguage = 'en') => {\n if (language !== 'auto' && isString(language)) {\n return language;\n }\n if (document.documentElement && document.documentElement.lang) {\n return document.documentElement.lang;\n }\n if (navigator.language) {\n return navigator.language.substring(0, 2);\n }\n return defaultLanguage;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nimport { isAbortError } from \"../../../checker/is-abort-error.js\";\nexport function abort(message = 'Aborted') {\n return new DOMException(message, 'AbortError');\n}\n/**\n * @deprecated use `isAbortError` instead\n */\nexport const isAbort = isAbortError;\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nexport class ConnectionError extends Error {\n constructor(m) {\n super(m);\n Object.setPrototypeOf(this, ConnectionError.prototype);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nexport class OptionsError extends TypeError {\n constructor(m) {\n super(m);\n Object.setPrototypeOf(this, OptionsError.prototype);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\nimport { ConnectionError, OptionsError } from \"./errors/index.js\";\n/**\n * Helper for create Error object\n */\nexport function error(message) {\n return new TypeError(message);\n}\nexport function connection(message) {\n return new ConnectionError(message);\n}\nexport function options(message) {\n return new OptionsError(message);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction } from \"../checker/is-function.js\";\nexport const keepNames = new Map();\nexport const getClassName = (obj) => {\n if (isFunction(obj.className)) {\n return obj.className();\n }\n const constructor = obj.constructor?.originalConstructor || obj.constructor;\n if (keepNames.has(constructor)) {\n return keepNames.get(constructor);\n }\n if (constructor.name) {\n return constructor.name;\n }\n const regex = new RegExp(/^\\s*function\\s*(\\S*)\\s*\\(/);\n const res = constructor.toString().match(regex);\n return res ? res[1] : '';\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\n/**\n * Converts from human readable file size (kb,mb,gb,tb) to bytes\n * @param human - readable file size. Example 1gb or 11.2mb\n */\nexport const humanSizeToBytes = (human) => {\n if (/^[0-9.]+$/.test(human.toString())) {\n return parseFloat(human);\n }\n const format = human.substr(-2, 2).toUpperCase(), formats = ['KB', 'MB', 'GB', 'TB'], number = parseFloat(human.substr(0, human.length - 2));\n return formats.indexOf(format) !== -1\n ? number * Math.pow(1024, formats.indexOf(format) + 1)\n : parseInt(human, 10);\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/utils\n */\n/**\n * By default, terser will remove all `console.*` but\n * if you use this object it will not be\n */\nexport const cns = console;\n/**\n * Mark function as deprecated\n */\nexport function markDeprecated(method, names = [''], ctx = null) {\n return (...args) => {\n cns.warn(`Method \"${names[0]}\" deprecated.` +\n (names[1] ? ` Use \"${names[1]}\" instead` : ''));\n return method.call(ctx, ...args);\n };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_ES_NEXT, IS_IE } from \"../../constants.js\";\nimport { Dom } from \"../../dom/dom.js\";\nimport { toArray } from \"../array/to-array.js\";\nimport { isString } from \"../checker/is-string.js\";\nimport { camelCase } from \"../string/camel-case.js\";\nimport { attr, error } from \"./index.js\";\nlet temp = 1;\nconst $$temp = () => {\n temp++;\n return temp;\n};\nexport function $$(selector, root) {\n let result;\n if (!IS_ES_NEXT &&\n /:scope/.test(selector) &&\n IS_IE &&\n !(root && root.nodeType === Node.DOCUMENT_NODE)) {\n const id = root.id, temp_id = id ||\n '_selector_id_' + String(Math.random()).slice(2) + $$temp();\n selector = selector.replace(/:scope/g, '#' + temp_id);\n !id && root.setAttribute('id', temp_id);\n result = root.parentNode.querySelectorAll(selector);\n if (!id) {\n root.removeAttribute('id');\n }\n }\n else {\n result = root.querySelectorAll(selector);\n }\n return [].slice.call(result);\n}\n/**\n * Calculate XPath selector\n */\nexport const getXPathByElement = (element, root) => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return '';\n }\n if (!element.parentNode || root === element) {\n return '';\n }\n if (element.id) {\n return \"//*[@id='\" + element.id + \"']\";\n }\n const sames = [].filter.call(element.parentNode.childNodes, (x) => x.nodeName === element.nodeName);\n return (getXPathByElement(element.parentNode, root) +\n '/' +\n element.nodeName.toLowerCase() +\n (sames.length > 1\n ? '[' + (toArray(sames).indexOf(element) + 1) + ']'\n : ''));\n};\n/**\n * Find all `ref` or `data-ref` elements inside HTMLElement\n */\nexport const refs = (root) => {\n if ('container' in root) {\n root = root.container;\n }\n return $$('[ref],[data-ref]', root).reduce((def, child) => {\n const key = attr(child, '-ref');\n if (key && isString(key)) {\n def[camelCase(key)] = child;\n def[key] = child;\n }\n return def;\n }, {});\n};\n/**\n * Calculate full CSS selector\n */\nexport const cssPath = (el) => {\n if (!Dom.isElement(el)) {\n return null;\n }\n const path = [];\n let start = el;\n while (start && start.nodeType === Node.ELEMENT_NODE) {\n let selector = start.nodeName.toLowerCase();\n if (start.id) {\n selector += '#' + start.id;\n path.unshift(selector);\n break;\n }\n else {\n let sib = start, nth = 1;\n do {\n sib = sib.previousElementSibling;\n if (sib && sib.nodeName.toLowerCase() === selector) {\n nth++;\n }\n } while (sib);\n selector += ':nth-of-type(' + nth + ')';\n }\n path.unshift(selector);\n start = start.parentNode;\n }\n return path.join(' > ');\n};\n/**\n * Try to find element by selector\n */\nexport function resolveElement(element, od) {\n let resolved = element;\n if (isString(element)) {\n try {\n resolved = od.querySelector(element);\n }\n catch {\n throw error('String \"' + element + '\" should be valid HTML selector');\n }\n }\n // Duck checking\n if (!resolved ||\n typeof resolved !== 'object' ||\n !Dom.isElement(resolved) ||\n !resolved.cloneNode) {\n throw error('Element \"' + element + '\" should be string or HTMLElement instance');\n }\n return resolved;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/dom.js\";\nimport { isString } from \"../checker/is-string.js\";\nimport { attr } from \"./attr.js\";\nimport { css } from \"./css.js\";\nimport { $$ } from \"./selector.js\";\n/**\n * Fixes image sizes and sets absolute paths to images\n */\nfunction fixedAssetsSizeAndAbsoluteLinks(editor, points) {\n const restoreAttributes = [];\n try {\n $$('img', editor.editor).forEach(item => {\n const previousAttrs = [\n attr(item, 'width'),\n attr(item, 'height'),\n item.src\n ];\n attr(item, {\n width: item.offsetWidth + points,\n height: item.offsetHeight + points\n });\n const a = editor.createInside.a();\n editor.ed.body.appendChild(a);\n a.href = item.src;\n item.src = a.href;\n Dom.safeRemove(a);\n restoreAttributes.push(() => {\n item.src = previousAttrs[2] ?? '';\n attr(item, {\n width: previousAttrs[0] || null,\n height: previousAttrs[1] || null\n });\n });\n });\n }\n catch (e) {\n restoreAttributes.forEach(c => c());\n restoreAttributes.length = 0;\n throw e;\n }\n return restoreAttributes;\n}\n/**\n * Generates a copy of an HTML document, resizes images, executes JS\n *\n * @event beforePreviewBox(string | undefined, 'pt' | 'px' | '')\n * @event afterPreviewBox(HTMLElement)\n */\nexport function previewBox(editor, defaultValue, points = 'px', container = null) {\n const onDestruct = [];\n const restoreAttributes = fixedAssetsSizeAndAbsoluteLinks(editor, points);\n try {\n const res = editor.e.fire('beforePreviewBox', defaultValue, points);\n if (res != null) {\n return res;\n }\n let div = editor.c.div('jodit__preview-box jodit-context');\n if (container) {\n container.appendChild(div);\n }\n css(div, {\n position: 'relative',\n padding: 16\n });\n const value = editor.value ||\n `<div style='position: absolute;left:50%;top:50%;transform: translateX(-50%) translateY(-50%);color:#ccc;'>${editor.i18n('Empty')}</div>`;\n if (editor.iframe) {\n const iframe = editor.create.element('iframe');\n css(iframe, {\n minWidth: 800,\n minHeight: 600,\n border: 0\n });\n div.appendChild(iframe);\n const myWindow = iframe.contentWindow;\n if (myWindow) {\n editor.e.fire('generateDocumentStructure.iframe', myWindow.document, editor);\n div = myWindow.document.body;\n if (typeof ResizeObserver === 'function') {\n let destructed = false;\n const elm = myWindow.document.body;\n const resizeObserver = new ResizeObserver(editor.async.debounce(() => {\n resizeObserver.unobserve(elm);\n iframe.style.height = `${elm.offsetHeight + 20}px`;\n editor.async.requestAnimationFrame(() => {\n !destructed && resizeObserver.observe(elm);\n });\n }, 100));\n const beforeDestruct = () => {\n destructed = true;\n resizeObserver.unobserve(elm);\n resizeObserver.disconnect();\n editor.e.off('beforeDestruct', beforeDestruct);\n };\n onDestruct.push(beforeDestruct);\n editor.e.on('beforeDestruct', beforeDestruct);\n }\n }\n }\n else {\n css(div, {\n minWidth: 1024,\n minHeight: 600,\n border: 0\n });\n }\n const setHTML = (box, value) => {\n const dv = isString(value) ? editor.c.div() : value;\n if (isString(value)) {\n dv.innerHTML = value;\n }\n for (let i = 0; i < dv.childNodes.length; i += 1) {\n const c = dv.childNodes[i];\n if (Dom.isElement(c)) {\n const newNode = box.ownerDocument.createElement(c.nodeName);\n for (let j = 0; j < c.attributes.length; j += 1) {\n attr(newNode, c.attributes[j].nodeName, c.attributes[j].nodeValue);\n }\n if (c.childNodes.length === 0 || Dom.isTag(c, 'table')) {\n switch (c.nodeName) {\n case 'SCRIPT':\n if (c.textContent) {\n newNode.textContent = c.textContent;\n }\n break;\n default:\n if (c.innerHTML) {\n newNode.innerHTML = c.innerHTML;\n }\n break;\n }\n }\n else {\n setHTML(newNode, c);\n }\n try {\n box.appendChild(newNode);\n }\n catch { }\n }\n else {\n try {\n box.appendChild(c.cloneNode(true));\n }\n catch { }\n }\n }\n };\n setHTML(div, value);\n editor.e.fire('afterPreviewBox', div);\n return [\n div,\n () => {\n onDestruct.forEach(cb => cb());\n }\n ];\n }\n finally {\n restoreAttributes.forEach(clb => clb());\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/dom.js\";\n/**\n * @module helpers/utils\n */\n/**\n * Check if element is in view\n */\nexport function inView(elm, root, doc) {\n let rect = elm.getBoundingClientRect(), el = elm;\n const top = rect.top, height = rect.height;\n while (el && el !== root && el.parentNode) {\n el = el.parentNode;\n rect = el.getBoundingClientRect();\n if (!(top <= rect.bottom)) {\n return false;\n }\n // Check if the element is out of view due to a container scrolling\n if (top + height <= rect.top) {\n return false;\n }\n }\n // Check it's within the document viewport\n return (top <= ((doc.documentElement && doc.documentElement.clientHeight) || 0));\n}\n/**\n * Scroll element into view if it is not in view\n */\nexport function scrollIntoViewIfNeeded(elm, root, doc) {\n if (Dom.isHTMLElement(elm) && !inView(elm, root, doc)) {\n if (root.clientHeight !== root.scrollHeight) {\n root.scrollTop = elm.offsetTop;\n }\n if (!inView(elm, root, doc)) {\n elm.scrollIntoView();\n }\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isArray } from \"../checker/is-array.js\";\nimport { isNumeric } from \"../checker/is-numeric.js\";\nimport { isPlainObject } from \"../checker/is-plain-object.js\";\nimport { isString } from \"../checker/is-string.js\";\n/**\n * Safe access in tree object\n *\n * @example\n * ```js\n * const a = {}, b = {};\n * Jodit.modules.Helpers.set('a.b.c.d.e', 1, a);\n * console.log(a);// {a: {b: {c: {d: {e: 1}}}}}\n *\n * Jodit.modules.Helpers.set('a.0.e', 1, b);\n * console.log(b);// {a: [{e: 1}]}\n * ```\n */\nexport function set(chain, value, obj) {\n if (!isString(chain) || !chain.length) {\n return;\n }\n const parts = chain.split('.');\n let result = obj, key = parts[0];\n for (let i = 0; i < parts.length - 1; i += 1) {\n key = parts[i];\n if (!isArray(result[key]) && !isPlainObject(result[key])) {\n result[key] = isNumeric(parts[i + 1]) ? [] : {};\n }\n result = result[key];\n }\n if (result) {\n result[parts[parts.length - 1]] = value;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport class LimitedStack {\n constructor(limit) {\n this.limit = limit;\n this.stack = [];\n }\n push(item) {\n this.stack.push(item);\n if (this.stack.length > this.limit) {\n this.stack.shift();\n }\n return this;\n }\n pop() {\n return this.stack.pop();\n }\n find(clb) {\n return this.stack.find(clb);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport * as consts from \"../constants.js\";\nimport { INSEPARABLE_TAGS, LIST_TAGS, NO_EMPTY_TAGS, TEMP_ATTR } from \"../constants.js\";\nimport { toArray } from \"../helpers/array/to-array.js\";\nimport { isArray, isFunction, isHTML, isMarker, isSet, isString, isVoid } from \"../helpers/checker/index.js\";\nimport { trim } from \"../helpers/string/trim.js\";\nimport { $$, assert, attr, call, css, dataBind, error } from \"../helpers/utils/index.js\";\n/**\n * Module for working with DOM\n */\nexport class Dom {\n constructor() {\n throw new Error('Dom is static module');\n }\n /**\n * Remove all content from element\n */\n static detach(node) {\n while (node && node.firstChild) {\n node.removeChild(node.firstChild);\n }\n }\n /**\n * Wrap all inline siblings\n */\n static wrapInline(current, tag, editor) {\n let tmp, first = current, last = current;\n editor.s.save();\n let needFindNext = false;\n do {\n needFindNext = false;\n tmp = first.previousSibling;\n if (tmp && !Dom.isBlock(tmp)) {\n needFindNext = true;\n first = tmp;\n }\n } while (needFindNext);\n do {\n needFindNext = false;\n tmp = last.nextSibling;\n if (tmp && !Dom.isBlock(tmp)) {\n needFindNext = true;\n last = tmp;\n }\n } while (needFindNext);\n const wrapper = isString(tag) ? editor.createInside.element(tag) : tag;\n if (first.parentNode) {\n first.parentNode.insertBefore(wrapper, first);\n }\n let next = first;\n while (next) {\n next = first.nextSibling;\n wrapper.appendChild(first);\n if (first === last || !next) {\n break;\n }\n first = next;\n }\n editor.s.restore();\n return wrapper;\n }\n /**\n * Wrap node inside another node\n */\n static wrap(current, tag, create) {\n const wrapper = isString(tag) ? create.element(tag) : tag;\n if (Dom.isNode(current)) {\n if (!current.parentNode) {\n throw error('Element should be in DOM');\n }\n current.parentNode.insertBefore(wrapper, current);\n wrapper.appendChild(current);\n }\n else {\n const fragment = current.extractContents();\n current.insertNode(wrapper);\n wrapper.appendChild(fragment);\n }\n return wrapper;\n }\n /**\n * Remove parent of node and insert this node instead that parent\n */\n static unwrap(node) {\n const parent = node.parentNode;\n if (parent) {\n while (node.firstChild) {\n parent.insertBefore(node.firstChild, node);\n }\n Dom.safeRemove(node);\n }\n }\n /**\n * Call functions for all nodes between `start` and `end`\n */\n static between(start, end, callback) {\n let next = start;\n while (next && next !== end) {\n if (start !== next && callback(next)) {\n break;\n }\n let step = next.firstChild || next.nextSibling;\n if (!step) {\n while (next && !next.nextSibling) {\n next = next.parentNode;\n }\n step = next?.nextSibling;\n }\n next = step;\n }\n }\n static replace(elm, newTagName, create, withAttributes = false, notMoveContent = false) {\n if (isHTML(newTagName)) {\n assert(create, 'Need create instance for new tag');\n newTagName = create.fromHTML(newTagName);\n }\n let tag;\n if (isString(newTagName)) {\n assert(create, 'Need create instance for new tag');\n tag = create.element(newTagName);\n }\n else {\n tag = newTagName;\n }\n if (!notMoveContent) {\n while (elm.firstChild) {\n tag.appendChild(elm.firstChild);\n }\n }\n if (withAttributes && Dom.isElement(elm) && Dom.isElement(tag)) {\n toArray(elm.attributes).forEach(attr => {\n tag.setAttribute(attr.name, attr.value);\n });\n }\n if (elm.parentNode) {\n elm.parentNode.replaceChild(tag, elm);\n }\n return tag;\n }\n /**\n * Checks whether the Node text and blank (in this case it may contain invisible auxiliary characters ,\n * it is also empty )\n *\n * @param node - The element of wood to be checked\n */\n static isEmptyTextNode(node) {\n return (Dom.isText(node) &&\n (!node.nodeValue ||\n node.nodeValue\n .replace(consts.INVISIBLE_SPACE_REG_EXP(), '')\n .trim().length === 0));\n }\n static isEmptyContent(node) {\n return Dom.each(node, (elm) => Dom.isEmptyTextNode(elm));\n }\n /**\n * The node is editable\n */\n static isContentEditable(node, root) {\n return (Dom.isNode(node) &&\n !Dom.closest(node, elm => Dom.isElement(elm) &&\n elm.getAttribute('contenteditable') === 'false', root));\n }\n static isEmpty(node, condNoEmptyElement = NO_EMPTY_TAGS) {\n if (!node) {\n return true;\n }\n let cond;\n if (!isFunction(condNoEmptyElement)) {\n cond = (elm) => condNoEmptyElement.has(elm.nodeName.toLowerCase());\n }\n else {\n cond = condNoEmptyElement;\n }\n const emptyText = (node) => node.nodeValue == null || trim(node.nodeValue).length === 0;\n if (Dom.isText(node)) {\n return emptyText(node);\n }\n return (!(Dom.isElement(node) && cond(node)) &&\n Dom.each(node, (elm) => {\n if ((Dom.isText(elm) && !emptyText(elm)) ||\n (Dom.isElement(elm) && cond(elm))) {\n return false;\n }\n }));\n }\n /**\n * Returns true if it is a DOM node\n */\n static isNode(object) {\n // Duck-typing\n return Boolean(object &&\n isString(object.nodeName) &&\n typeof object.nodeType === 'number' &&\n object.childNodes &&\n isFunction(object.appendChild));\n }\n /**\n * Check if element is table cell\n */\n static isCell(elm) {\n return (Dom.isNode(elm) && (elm.nodeName === 'TD' || elm.nodeName === 'TH'));\n }\n /**\n * Check if element is a list\telement UL or OL\n */\n static isList(elm) {\n return Dom.isTag(elm, LIST_TAGS);\n }\n /**\n * Check if element is a part of list\telement LI\n */\n static isLeaf(elm) {\n return Dom.isTag(elm, 'li');\n }\n /**\n * Check is element is Image element\n */\n static isImage(elm) {\n return (Dom.isNode(elm) && /^(img|svg|picture|canvas)$/i.test(elm.nodeName));\n }\n /**\n * Check the `node` is a block element\n * @param node - Object to check\n */\n static isBlock(node) {\n return (!isVoid(node) &&\n typeof node === 'object' &&\n Dom.isNode(node) &&\n consts.IS_BLOCK.test(node.nodeName));\n }\n /**\n * Check if element is text node\n */\n static isText(node) {\n return Boolean(node && node.nodeType === Node.TEXT_NODE);\n }\n /**\n * Check if element is comment node\n */\n static isComment(node) {\n return Boolean(node && node.nodeType === Node.COMMENT_NODE);\n }\n /**\n * Check if element is element node\n */\n static isElement(node) {\n if (!Dom.isNode(node)) {\n return false;\n }\n const win = node.ownerDocument?.defaultView;\n return Boolean(win && node.nodeType === Node.ELEMENT_NODE);\n }\n /**\n * Check if element is document fragment\n */\n static isFragment(node) {\n if (!Dom.isNode(node)) {\n return false;\n }\n const win = node.ownerDocument?.defaultView;\n return Boolean(win && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE);\n }\n /**\n * Check if element is HTMLElement node\n */\n static isHTMLElement(node) {\n if (!Dom.isNode(node)) {\n return false;\n }\n const win = node.ownerDocument?.defaultView;\n return Boolean(win && node instanceof win.HTMLElement);\n }\n /**\n * Check element is inline block\n */\n static isInlineBlock(node) {\n return (Dom.isElement(node) &&\n !/^(BR|HR)$/i.test(node.tagName) &&\n ['inline', 'inline-block'].indexOf(css(node, 'display').toString()) !== -1);\n }\n /**\n * It's block and it can be split\n */\n static canSplitBlock(node) {\n return (!isVoid(node) &&\n Dom.isHTMLElement(node) &&\n Dom.isBlock(node) &&\n !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) &&\n node.style !== undefined &&\n !/^(fixed|absolute)/i.test(node.style.position));\n }\n /**\n * Get last matched node inside root\n */\n static last(root, condition) {\n let last = root?.lastChild;\n if (!last) {\n return null;\n }\n do {\n if (condition(last)) {\n return last;\n }\n let next = last.lastChild;\n if (!next) {\n next = last.previousSibling;\n }\n if (!next && last.parentNode !== root) {\n do {\n last = last.parentNode;\n } while (last &&\n !last?.previousSibling &&\n last.parentNode !== root);\n next = last?.previousSibling;\n }\n last = next;\n } while (last);\n return null;\n }\n /**\n * Find previous node\n */\n static prev(node, condition, root, withChild = true) {\n return Dom.find(node, condition, root, false, withChild);\n }\n /**\n * Find next node what `condition(next) === true`\n */\n static next(node, condition, root, withChild = true) {\n return Dom.find(node, condition, root, true, withChild);\n }\n static prevWithClass(node, className) {\n return Dom.prev(node, node => {\n return (Dom.isElement(node) && node.classList.contains(className));\n }, node.parentNode);\n }\n static nextWithClass(node, className) {\n return Dom.next(node, elm => Dom.isElement(elm) && elm.classList.contains(className), node.parentNode);\n }\n /**\n * Find next/prev node what `condition(next) === true`\n */\n static find(node, condition, root, leftToRight = true, withChild = true) {\n const gen = this.nextGen(node, root, leftToRight, withChild);\n let item = gen.next();\n while (!item.done) {\n if (condition(item.value)) {\n return item.value;\n }\n item = gen.next();\n }\n return null;\n }\n /**\n * Find next/prev node what `condition(next) === true`\n */\n static *nextGen(start, root, leftToRight = true, withChild = true) {\n const stack = [];\n let currentNode = start;\n do {\n let next = leftToRight\n ? currentNode.nextSibling\n : currentNode.previousSibling;\n while (next) {\n stack.unshift(next);\n next = leftToRight ? next.nextSibling : next.previousSibling;\n }\n yield* this.runInStack(start, stack, leftToRight, withChild);\n currentNode = currentNode.parentNode;\n } while (currentNode && currentNode !== root);\n return null;\n }\n /**\n * It goes through all the internal elements of the node, causing a callback function\n *\n * @param elm - the element whose children and descendants you want to iterate over\n * @param callback - It called for each item found\n * @example\n * ```javascript\n * Jodit.modules.Dom.each(editor.s.current(), function (node) {\n * if (node.nodeType === Node.TEXT_NODE) {\n * node.nodeValue = node.nodeValue.replace(Jodit.INVISIBLE_SPACE_REG_EX, '') // remove all of the text element codes invisible character\n * }\n * });\n * ```\n */\n static each(elm, callback, leftToRight = true) {\n const gen = this.eachGen(elm, leftToRight);\n let item = gen.next();\n while (!item.done) {\n if (callback(item.value) === false) {\n return false;\n }\n item = gen.next();\n }\n return true;\n }\n static eachGen(root, leftToRight = true) {\n return this.runInStack(root, [root], leftToRight);\n }\n static *runInStack(start, stack, leftToRight, withChild = true) {\n while (stack.length) {\n const item = stack.pop();\n if (withChild) {\n let child = leftToRight ? item.lastChild : item.firstChild;\n while (child) {\n stack.push(child);\n child = leftToRight\n ? child.previousSibling\n : child.nextSibling;\n }\n }\n if (start !== item) {\n yield item;\n }\n }\n }\n /**\n * Find next/prev node what `condition(next) === true`\n */\n static findWithCurrent(node, condition, root, sibling = 'nextSibling', child = 'firstChild') {\n let next = node;\n do {\n if (condition(next)) {\n return next || null;\n }\n if (child && next && next[child]) {\n const nextOne = Dom.findWithCurrent(next[child], condition, next, sibling, child);\n if (nextOne) {\n return nextOne;\n }\n }\n while (next && !next[sibling] && next !== root) {\n next = next.parentNode;\n }\n if (next && next[sibling] && next !== root) {\n next = next[sibling];\n }\n } while (next && next !== root);\n return null;\n }\n /**\n * Get not empty sibling\n */\n static findSibling(node, left = true, cond = (n) => !Dom.isEmptyTextNode(n)) {\n let sibling = Dom.sibling(node, left);\n while (sibling && !cond(sibling)) {\n sibling = Dom.sibling(sibling, left);\n }\n return sibling && cond(sibling) ? sibling : null;\n }\n /**\n * Returns the nearest non-empty sibling\n */\n static findNotEmptySibling(node, left) {\n return Dom.findSibling(node, left, n => {\n return (!Dom.isEmptyTextNode(n) &&\n Boolean(!Dom.isText(n) || (n.nodeValue?.length && trim(n.nodeValue))));\n });\n }\n /**\n * Returns the nearest non-empty neighbor\n */\n static findNotEmptyNeighbor(node, left, root) {\n return call(left ? Dom.prev : Dom.next, node, n => Boolean(n &&\n (!(Dom.isText(n) || Dom.isComment(n)) ||\n trim(n?.nodeValue || '').length)), root);\n }\n static sibling(node, left) {\n return left ? node.previousSibling : node.nextSibling;\n }\n /**\n * It goes through all the elements in ascending order, and checks to see if they meet the predetermined condition\n */\n static up(node, condition, root, checkRoot = false) {\n let start = node;\n if (!start) {\n return null;\n }\n do {\n if (condition(start)) {\n return start;\n }\n if (start === root || !start.parentNode) {\n break;\n }\n start = start.parentNode;\n } while (start && start !== root);\n if (start === root && checkRoot && condition(start)) {\n return start;\n }\n return null;\n }\n static closest(node, tagsOrCondition, root) {\n let condition;\n const lc = (s) => s.toLowerCase();\n if (isFunction(tagsOrCondition)) {\n condition = tagsOrCondition;\n }\n else if (isArray(tagsOrCondition) || isSet(tagsOrCondition)) {\n const set = isSet(tagsOrCondition)\n ? tagsOrCondition\n : new Set(tagsOrCondition.map(lc));\n condition = (tag) => Boolean(tag && set.has(lc(tag.nodeName)));\n }\n else {\n condition = (tag) => Boolean(tag && lc(tagsOrCondition) === lc(tag.nodeName));\n }\n return Dom.up(node, condition, root);\n }\n /**\n * Furthest parent node matching condition\n */\n static furthest(node, condition, root) {\n let matchedParent = null, current = node?.parentElement;\n while (current && current !== root) {\n if (condition(current)) {\n matchedParent = current;\n }\n current = current?.parentElement;\n }\n return matchedParent;\n }\n /**\n * Append new element in the start of root\n */\n static appendChildFirst(root, newElement) {\n const child = root.firstChild;\n if (child) {\n if (child !== newElement) {\n root.insertBefore(newElement, child);\n }\n }\n else {\n root.appendChild(newElement);\n }\n }\n /**\n * Insert newElement after element\n */\n static after(elm, newElement) {\n const { parentNode } = elm;\n if (!parentNode) {\n return;\n }\n if (parentNode.lastChild === elm) {\n parentNode.appendChild(newElement);\n }\n else {\n parentNode.insertBefore(newElement, elm.nextSibling);\n }\n }\n /**\n * Insert newElement before element\n */\n static before(elm, newElement) {\n const { parentNode } = elm;\n if (!parentNode) {\n return;\n }\n parentNode.insertBefore(newElement, elm);\n }\n /**\n * Insert newElement as first child inside element\n */\n static prepend(root, newElement) {\n root.insertBefore(newElement, root.firstChild);\n }\n static append(root, newElement) {\n if (isArray(newElement)) {\n newElement.forEach(node => {\n this.append(root, node);\n });\n }\n else {\n root.appendChild(newElement);\n }\n }\n /**\n * Move all content to another element\n */\n static moveContent(from, to, inStart = false, filter = () => true) {\n const fragment = (from.ownerDocument || document).createDocumentFragment();\n toArray(from.childNodes)\n .filter(elm => {\n if (filter(elm)) {\n return true;\n }\n Dom.safeRemove(elm);\n return false;\n })\n .forEach((node) => {\n fragment.appendChild(node);\n });\n if (!inStart || !to.firstChild) {\n to.appendChild(fragment);\n }\n else {\n to.insertBefore(fragment, to.firstChild);\n }\n }\n /**\n * Check root contains child or equal child\n */\n static isOrContains(root, child, onlyContains = false) {\n if (root === child) {\n return !onlyContains;\n }\n return Boolean(child && root && this.up(child, nd => nd === root, root, true));\n }\n /**\n * Safe remove element from DOM\n */\n static safeRemove(...nodes) {\n nodes.forEach(node => Dom.isNode(node) &&\n node.parentNode &&\n node.parentNode.removeChild(node));\n }\n static safeInsertNode(range, node) {\n range.collapsed || range.deleteContents();\n const child = Dom.isFragment(node) ? node.lastChild : node;\n if (range.startContainer === range.endContainer &&\n range.collapsed &&\n Dom.isTag(range.startContainer, INSEPARABLE_TAGS)) {\n Dom.after(range.startContainer, node);\n }\n else {\n range.insertNode(node);\n child && range.setStartBefore(child);\n }\n range.collapse(true);\n // https://developer.mozilla.org/en-US/docs/Web/API/Range/insertNode\n // if the new node is to be added to a text Node, that Node is split at the\n // insertion point, and the insertion occurs between the two text nodes.\n [node.nextSibling, node.previousSibling].forEach(n => Dom.isText(n) && !n.nodeValue && Dom.safeRemove(n));\n }\n /**\n * Hide element\n */\n static hide(node) {\n if (!node) {\n return;\n }\n dataBind(node, '__old_display', node.style.display);\n node.style.display = 'none';\n }\n /**\n * Show element\n */\n static show(node) {\n if (!node) {\n return;\n }\n const display = dataBind(node, '__old_display');\n if (node.style.display === 'none') {\n node.style.display = display || '';\n }\n }\n static isTag(node, tagNames) {\n if (!this.isElement(node)) {\n return false;\n }\n const nameL = node.tagName.toLowerCase();\n const nameU = node.tagName.toUpperCase();\n if (tagNames instanceof Set) {\n return tagNames.has(nameL) || tagNames.has(nameU);\n }\n if (Array.isArray(tagNames)) {\n throw new TypeError('Dom.isTag does not support array');\n }\n const tags = tagNames;\n if (nameL === tags || nameU === tags) {\n return true;\n }\n return false;\n }\n /**\n * Marks an item as temporary\n */\n static markTemporary(element, attributes) {\n attributes && attr(element, attributes);\n attr(element, TEMP_ATTR, true);\n return element;\n }\n /**\n * Check if element is temporary\n */\n static isTemporary(element) {\n if (!Dom.isElement(element)) {\n return false;\n }\n return isMarker(element) || attr(element, TEMP_ATTR) === 'true';\n }\n /**\n * Replace temporary elements from string\n */\n static replaceTemporaryFromString(value) {\n return value.replace(/<([a-z]+)[^>]+data-jodit-temp[^>]+>(.+?)<\\/\\1>/gi, '$2');\n }\n /**\n * Get temporary list\n */\n static temporaryList(root) {\n return $$(`[${TEMP_ATTR}]`, root);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { STATUSES } from \"../../component/statuses.js\";\nimport { Dom } from \"../../dom/dom.js\";\nimport { isFunction, isViewObject } from \"../../helpers/checker/index.js\";\nimport { error } from \"../../helpers/utils/error/error.js\";\nexport function cached(object, property) {\n const descriptor = Object.getOwnPropertyDescriptor(object, property);\n if (!descriptor || isFunction(descriptor.get)) {\n return null;\n }\n return descriptor.value;\n}\nexport function cache(_, name, descriptor) {\n const getter = descriptor.get;\n if (!getter) {\n throw error('Getter property descriptor expected');\n }\n descriptor.get = function () {\n const value = getter.call(this);\n if (value && value.noCache === true) {\n return value;\n }\n Object.defineProperty(this, name, {\n configurable: descriptor.configurable,\n enumerable: descriptor.enumerable,\n writable: false,\n value\n });\n return value;\n };\n}\nexport function cacheHTML(target, _, descriptor) {\n const fn = descriptor.value;\n if (!isFunction(fn)) {\n throw error('Handler must be a Function');\n }\n let useCache = true;\n const cached = new WeakMap();\n descriptor.value = function (...attrs) {\n if (useCache && cached.has(this.constructor)) {\n return cached.get(this.constructor)?.cloneNode(true);\n }\n const value = fn.apply(this, attrs);\n if (useCache && Dom.isElement(value)) {\n cached.set(this.constructor, value);\n }\n return useCache ? value.cloneNode(true) : value;\n };\n target.hookStatus(STATUSES.ready, (component) => {\n const view = isViewObject(component)\n ? component\n : component.jodit;\n useCache = Boolean(view.options.cache);\n });\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Decorate components and set status isReady after constructor\n * @param constructorFunction - Component constructor class\n */\nexport function component(constructorFunction) {\n class newConstructorFunction extends constructorFunction {\n constructor(...args) {\n super(...args);\n const isRootConstructor = this.constructor === newConstructorFunction;\n // We can add a decorator to multiple classes in a chain.\n // Status should be set only as root\n if (isRootConstructor) {\n // In some es/minimizer builds, JS instantiates the original class rather than the new constructor\n if (!(this instanceof newConstructorFunction)) {\n Object.setPrototypeOf(this, newConstructorFunction.prototype);\n }\n this.setStatus('ready');\n }\n }\n }\n return newConstructorFunction;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/async\n */\n/**\n * Create async callback if set timeout value - else call function immediately\n */\nexport function setTimeout(callback, timeout, ...args) {\n if (!timeout) {\n callback.call(null, ...args);\n }\n else {\n return window.setTimeout(callback, timeout, ...args);\n }\n return 0;\n}\n/**\n * Clear timeout\n */\nexport function clearTimeout(timer) {\n window.clearTimeout(timer);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_ES_NEXT } from \"../constants.js\";\nimport { clearTimeout, setTimeout } from \"../helpers/async/index.js\";\nimport { isAbortError } from \"../helpers/checker/is-abort-error.js\";\nimport { isFunction } from \"../helpers/checker/is-function.js\";\nimport { isNumber } from \"../helpers/checker/is-number.js\";\nimport { isPlainObject } from \"../helpers/checker/is-plain-object.js\";\nimport { isPromise } from \"../helpers/checker/is-promise.js\";\nimport { isString } from \"../helpers/checker/is-string.js\";\nimport { isVoid } from \"../helpers/checker/is-void.js\";\nimport { assert } from \"../helpers/utils/assert.js\";\nimport { abort } from \"../helpers/utils/error/errors/abort-error.js\";\nexport class Async {\n constructor() {\n this.timers = new Map();\n this.__callbacks = new Map();\n this.__queueMicrotaskNative = queueMicrotask?.bind(window) ??\n Promise.resolve().then.bind(Promise.resolve());\n this.promisesRejections = new Set();\n this.requestsIdle = new Set();\n this.requestsRaf = new Set();\n this.requestIdleCallbackNative = window['requestIdleCallback']?.bind(window) ??\n ((callback, options) => {\n const start = Date.now();\n return this.setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining: () => Math.max(0, 50 - (Date.now() - start))\n });\n }, options?.timeout ?? 1);\n });\n this.__cancelIdleCallbackNative = window['cancelIdleCallback']?.bind(window) ??\n ((request) => {\n this.clearTimeout(request);\n });\n this.isDestructed = false;\n }\n delay(timeout) {\n return this.promise(resolve => this.setTimeout(resolve, timeout));\n }\n setTimeout(callback, timeout, ...args) {\n if (this.isDestructed) {\n return 0;\n }\n let options = {};\n if (isVoid(timeout)) {\n timeout = 0;\n }\n if (!isNumber(timeout)) {\n options = timeout;\n timeout = options.timeout || 0;\n }\n if (options.label) {\n this.clearLabel(options.label);\n }\n const timer = setTimeout(callback, timeout, ...args), key = options.label || timer;\n this.timers.set(key, timer);\n this.__callbacks.set(key, callback);\n return timer;\n }\n updateTimeout(label, timeout) {\n assert(label && this.timers.has(label), 'Label does not exist');\n if (!label || !this.timers.has(label)) {\n return null;\n }\n const callback = this.__callbacks.get(label);\n assert(isFunction(callback), 'Callback is not a function');\n return this.setTimeout(callback, { label, timeout });\n }\n clearLabel(label) {\n if (label && this.timers.has(label)) {\n clearTimeout(this.timers.get(label));\n this.timers.delete(label);\n this.__callbacks.delete(label);\n }\n }\n clearTimeout(timerOrLabel) {\n if (isString(timerOrLabel)) {\n return this.clearLabel(timerOrLabel);\n }\n clearTimeout(timerOrLabel);\n this.timers.delete(timerOrLabel);\n this.__callbacks.delete(timerOrLabel);\n }\n /**\n * Debouncing enforces that a function not be called again until a certain amount of time has passed without\n * it being called. As in \"execute this function only if 100 milliseconds have passed without it being called.\"\n *\n * @example\n * ```javascript\n * var jodit = Jodit.make('.editor');\n * jodit.e.on('mousemove', jodit.async.debounce(() => {\n * \t// Do expensive things\n * }, 100));\n * ```\n */\n debounce(fn, timeout, firstCallImmediately = false) {\n let timer = 0, fired = false;\n const promises = [];\n const callFn = (...args) => {\n if (!fired) {\n timer = 0;\n const res = fn(...args);\n fired = true;\n if (promises.length) {\n const runPromises = () => {\n promises.forEach(res => res());\n promises.length = 0;\n };\n isPromise(res) ? res.finally(runPromises) : runPromises();\n }\n }\n };\n const onFire = (...args) => {\n fired = false;\n if (!timeout) {\n callFn(...args);\n }\n else {\n if (!timer && firstCallImmediately) {\n callFn(...args);\n }\n clearTimeout(timer);\n timer = this.setTimeout(() => callFn(...args), isFunction(timeout) ? timeout() : timeout);\n this.timers.set(fn, timer);\n }\n };\n return isPlainObject(timeout) && timeout.promisify\n ? (...args) => {\n const promise = this.promise(res => {\n promises.push(res);\n }).catch((e) => {\n if (isAbortError(e)) {\n return null;\n }\n throw e;\n });\n onFire(...args);\n return promise;\n }\n : onFire;\n }\n microDebounce(fn, firstCallImmediately = false) {\n let scheduled = false;\n let needCall = true;\n let savedArgs;\n return ((...args) => {\n savedArgs = args;\n if (scheduled) {\n needCall = true;\n return;\n }\n needCall = true;\n if (firstCallImmediately) {\n needCall = false;\n fn(...savedArgs);\n }\n scheduled = true;\n this.__queueMicrotaskNative(() => {\n scheduled = false;\n if (this.isDestructed) {\n return;\n }\n needCall && fn(...savedArgs);\n });\n });\n }\n /**\n * Throttling enforces a maximum number of times a function can be called over time.\n * As in \"execute this function at most once every 100 milliseconds.\"\n *\n * @example\n * ```javascript\n * var jodit = Jodit.make('.editor');\n * jodit.e.on(document.body, 'scroll', jodit.async.throttle(function() {\n * \t// Do expensive things\n * }, 100));\n * ```\n */\n throttle(fn, timeout, ignore = false) {\n let timer = null, needInvoke, callee, lastArgs;\n return (...args) => {\n needInvoke = true;\n lastArgs = args;\n if (!timeout) {\n fn(...lastArgs);\n return;\n }\n if (!timer) {\n callee = () => {\n if (needInvoke) {\n fn(...lastArgs);\n needInvoke = false;\n timer = this.setTimeout(callee, isFunction(timeout) ? timeout() : timeout);\n this.timers.set(callee, timer);\n }\n else {\n timer = null;\n }\n };\n callee();\n }\n };\n }\n promise(executor) {\n let rejectCallback = () => { };\n const promise = new Promise((resolve, reject) => {\n rejectCallback = () => reject(abort('Abort async'));\n this.promisesRejections.add(rejectCallback);\n executor(resolve, reject);\n });\n if (!promise.finally && typeof process !== 'undefined' && !IS_ES_NEXT) {\n promise.finally = (onfinally) => {\n promise.then(onfinally).catch(onfinally);\n return promise;\n };\n }\n promise\n .finally(() => {\n this.promisesRejections.delete(rejectCallback);\n })\n .catch(() => null);\n promise.rejectCallback = rejectCallback;\n return promise;\n }\n /**\n * Get Promise status\n */\n promiseState(p) {\n if (p.status) {\n return p.status;\n }\n // Hi IE11\n if (!Promise.race) {\n return new Promise(resolve => {\n p.then(v => {\n resolve('fulfilled');\n return v;\n }, e => {\n resolve('rejected');\n throw e;\n });\n this.setTimeout(() => {\n resolve('pending');\n }, 100);\n });\n }\n const t = {};\n return Promise.race([p, t]).then(v => (v === t ? 'pending' : 'fulfilled'), () => 'rejected');\n }\n requestIdleCallback(callback, options) {\n const request = this.requestIdleCallbackNative(callback, options);\n this.requestsIdle.add(request);\n return request;\n }\n requestIdlePromise(options) {\n return this.promise(res => {\n const request = this.requestIdleCallback(() => res(request), options);\n });\n }\n cancelIdleCallback(request) {\n this.requestsIdle.delete(request);\n return this.__cancelIdleCallbackNative(request);\n }\n requestAnimationFrame(callback) {\n const request = requestAnimationFrame(callback);\n this.requestsRaf.add(request);\n return request;\n }\n cancelAnimationFrame(request) {\n this.requestsRaf.delete(request);\n cancelAnimationFrame(request);\n }\n clear() {\n this.requestsIdle.forEach(key => this.cancelIdleCallback(key));\n this.requestsRaf.forEach(key => this.cancelAnimationFrame(key));\n this.timers.forEach(key => clearTimeout(this.timers.get(key)));\n this.timers.clear();\n this.promisesRejections.forEach(reject => reject());\n this.promisesRejections.clear();\n }\n destruct() {\n this.clear();\n this.isDestructed = true;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/array\n */\nimport { isArray } from \"../checker/is-array.js\";\n/**\n * Always return Array\n * ```javascript\n * Jodit.modules.Helpers.asArray('test') // ['test']\n * Jodit.modules.Helpers.asArray(['test']) // ['test']\n * Jodit.modules.Helpers.asArray(1) // [1]\n * ```\n */\nexport const asArray = (a) => (isArray(a) ? a : [a]);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Return an array from string or array\n * ```javascript\n * Jodit.modules.Helpers.splitArray('1,2,3') // ['1', '2', '3']\n * Jodit.modules.Helpers.splitArray(['1', '2', '3']) // ['1', '2', '3']\n * ```\n */\nexport function splitArray(a) {\n return Array.isArray(a) ? a : a.split(/[,\\s]+/);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugin\n */\nimport { kebabCase } from \"../../helpers/string/kebab-case.js\";\n/**\n * @private\n */\nexport function normalizeName(name) {\n return kebabCase(name).toLowerCase();\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD } from \"../../constants.js\";\nimport { kebabCase } from \"../../helpers/string/kebab-case.js\";\nimport { appendScriptAsync, appendStyleAsync } from \"../../helpers/utils/append-script.js\";\nimport { normalizeName } from \"./utils.js\";\nconst styles = new Set();\n/**\n * @private\n */\nexport async function loadStyle(jodit, pluginName) {\n const url = getFullUrl(jodit, pluginName, false);\n if (styles.has(url)) {\n return;\n }\n styles.add(url);\n return appendStyleAsync(jodit, url);\n}\n/**\n * Call full url to the script or style file\n * @private\n */\nfunction getFullUrl(jodit, name, js) {\n name = kebabCase(name);\n return (jodit.basePath +\n 'plugins/' +\n name +\n '/' +\n name +\n '.' +\n (js ? 'js' : 'css'));\n}\n/**\n * @private\n */\nexport function loadExtras(items, jodit, extraList, callback) {\n try {\n const needLoadExtras = extraList.filter(extra => !items.has(normalizeName(extra.name)));\n if (needLoadExtras.length) {\n load(jodit, needLoadExtras, callback);\n }\n }\n catch (e) {\n if (!IS_PROD) {\n throw e;\n }\n }\n}\n/**\n * Download plugins\n * @private\n */\nfunction load(jodit, pluginList, callback) {\n pluginList.map(extra => {\n const url = extra.url || getFullUrl(jodit, extra.name, true);\n return appendScriptAsync(jodit, url)\n .then(callback)\n .catch(() => null);\n });\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD } from \"../../constants.js\";\nimport { getContainer } from \"../../global.js\";\nimport { isInitable } from \"../../helpers/checker/index.js\";\nimport { loadStyle } from \"./load.js\";\n/**\n * Init plugin if it has no dependencies, in another case wait requires plugins will be init\n * @private\n */\nexport function init(jodit, pluginName, plugin, instance, doneList, waitingList) {\n if (isInitable(instance)) {\n try {\n instance.init(jodit);\n }\n catch (e) {\n console.error(e);\n if (!IS_PROD) {\n throw e;\n }\n }\n }\n doneList.set(pluginName, instance);\n waitingList.delete(pluginName);\n if (instance.hasStyle) {\n loadStyle(jodit, pluginName).catch(e => {\n !IS_PROD && console.error(e);\n });\n }\n if (instance.styles) {\n const style = getContainer(jodit, pluginName, 'style');\n style.innerHTML = instance.styles;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD } from \"../../constants.js\";\nimport { isFunction } from \"../../helpers/checker/is-function.js\";\n/**\n * Create instance of plugin\n * @private\n */\nexport function makeInstance(jodit, plugin) {\n try {\n try {\n // @ts-ignore\n return isFunction(plugin) ? new plugin(jodit) : plugin;\n }\n catch (e) {\n if (isFunction(plugin) && !plugin.prototype) {\n return plugin(jodit);\n }\n }\n }\n catch (e) {\n console.error(e);\n if (!IS_PROD) {\n throw e;\n }\n }\n return null;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD } from \"../constants.js\";\nimport { eventEmitter } from \"../global.js\";\nimport { splitArray } from \"../helpers/array/index.js\";\nimport { isArray, isDestructable, isString } from \"../helpers/checker/index.js\";\nimport { init } from \"./helpers/init-instance.js\";\nimport { loadExtras } from \"./helpers/load.js\";\nimport { makeInstance } from \"./helpers/make-instance.js\";\nimport { normalizeName } from \"./helpers/utils.js\";\nimport \"./interface.js\";\n/**\n * Jodit plugin system\n * @example\n * ```js\n * Jodit.plugins.add('emoji2', {\n * \tinit() {\n * \talert('emoji Inited2')\n * \t},\n *\tdestruct() {}\n * });\n * ```\n */\nexport class PluginSystem {\n constructor() {\n this.__items = new Map();\n }\n /**\n * Add plugin in store\n */\n add(name, plugin) {\n this.__items.set(normalizeName(name), plugin);\n eventEmitter.fire(`plugin:${name}:ready`);\n }\n /**\n * Get plugin from store\n */\n get(name) {\n return this.__items.get(normalizeName(name));\n }\n /**\n * Remove plugin from store\n */\n remove(name) {\n this.__items.delete(normalizeName(name));\n }\n __getFullPluginsList(filter) {\n const results = [];\n this.__items.forEach((plugin, name) => {\n if (!filter || filter.has(name)) {\n results.push([name, plugin]);\n }\n });\n return results;\n }\n /**\n * Public method for async init all plugins\n */\n __init(jodit) {\n const { extraList, disableList, filter } = getSpecialLists(jodit);\n const doneList = new Map();\n const pluginsMap = {};\n const waitingList = new Set();\n jodit.__plugins = pluginsMap;\n const initPlugins = () => {\n if (jodit.isInDestruct) {\n return;\n }\n let commit = false;\n this.__getFullPluginsList(filter).forEach(([name, plugin]) => {\n if (disableList.has(name) || doneList.has(name)) {\n return;\n }\n const requires = plugin?.requires;\n if (requires && isArray(requires) && requires.length) {\n if (requires.some(req => disableList.has(req))) {\n return;\n }\n if (!requires.every(name => doneList.has(name))) {\n waitingList.add(name);\n return;\n }\n }\n commit = true;\n const instance = makeInstance(jodit, plugin);\n if (!instance) {\n doneList.set(name, null);\n waitingList.delete(name);\n return;\n }\n init(jodit, name, plugin, instance, doneList, waitingList);\n pluginsMap[name] = instance;\n });\n if (commit) {\n jodit.e.fire('updatePlugins');\n initPlugins();\n }\n };\n if (extraList && extraList.length) {\n loadExtras(this.__items, jodit, extraList, initPlugins);\n }\n initPlugins();\n bindOnBeforeDestruct(jodit, pluginsMap);\n if (!IS_PROD && waitingList.size) {\n console.warn('After init plugin waiting list is not clean:', waitingList);\n }\n }\n /**\n * Returns the promise to wait for the plugin to load.\n */\n wait(name) {\n return new Promise((resolve) => {\n if (this.get(name)) {\n return resolve();\n }\n const onReady = () => {\n resolve();\n eventEmitter.off(`plugin:${name}:ready`, onReady);\n };\n eventEmitter.on(`plugin:${name}:ready`, onReady);\n });\n }\n}\n/**\n * Destroy all plugins before - Jodit will be destroyed\n */\nfunction bindOnBeforeDestruct(jodit, plugins) {\n jodit.e.on('beforeDestruct', () => {\n Object.keys(plugins).forEach(name => {\n const instance = plugins[name];\n if (isDestructable(instance)) {\n instance.destruct(jodit);\n }\n delete plugins[name];\n });\n delete jodit.__plugins;\n });\n}\nfunction getSpecialLists(jodit) {\n const extraList = jodit.o.extraPlugins.map(s => isString(s) ? { name: s } : s);\n const disableList = new Set(splitArray(jodit.o.disablePlugins).map(normalizeName));\n const filter = jodit.o.safeMode ? new Set(jodit.o.safePluginsList) : null;\n return { extraList, disableList, filter };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { toArray } from \"../helpers/array/to-array.js\";\nimport { assert } from \"../helpers/utils/assert.js\";\nexport const defaultNameSpace = 'JoditEventDefaultNamespace';\nexport class EventHandlersStore {\n constructor() {\n this.__store = new Map();\n }\n get(event, namespace) {\n if (this.__store.has(namespace)) {\n const ns = this.__store.get(namespace);\n assert(ns, '-');\n return ns[event];\n }\n }\n indexOf(event, namespace, originalCallback) {\n const blocks = this.get(event, namespace);\n if (blocks) {\n for (let i = 0; i < blocks.length; i += 1) {\n if (blocks[i].originalCallback === originalCallback) {\n return i;\n }\n }\n }\n return false;\n }\n namespaces(withoutDefault = false) {\n const nss = toArray(this.__store.keys());\n return withoutDefault ? nss.filter(ns => ns !== defaultNameSpace) : nss;\n }\n events(namespace) {\n const ns = this.__store.get(namespace);\n return ns ? Object.keys(ns) : [];\n }\n set(event, namespace, data, onTop = false) {\n let ns = this.__store.get(namespace);\n if (!ns) {\n ns = {};\n this.__store.set(namespace, ns);\n }\n if (ns[event] === undefined) {\n ns[event] = [];\n }\n if (!onTop) {\n ns[event].push(data);\n }\n else {\n ns[event].unshift(data);\n }\n }\n clear() {\n this.__store.clear();\n }\n clearEvents(namespace, event) {\n const ns = this.__store.get(namespace);\n if (ns && ns[event]) {\n delete ns[event];\n if (!Object.keys(ns).length) {\n this.__store.delete(namespace);\n }\n }\n }\n isEmpty() {\n return this.__store.size === 0;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { PASSIVE_EVENTS } from \"../constants.js\";\nimport { splitArray } from \"../helpers/array/split-array.js\";\nimport { isArray } from \"../helpers/checker/is-array.js\";\nimport { isFunction } from \"../helpers/checker/is-function.js\";\nimport { isString, isStringArray } from \"../helpers/checker/is-string.js\";\nimport { error } from \"../helpers/utils/error/index.js\";\nimport { defaultNameSpace, EventHandlersStore } from \"./store.js\";\n/**\n * The module editor's event manager\n */\nexport class EventEmitter {\n mute(event) {\n this.__mutedEvents.add(event ?? '*');\n return this;\n }\n isMuted(event) {\n if (event && this.__mutedEvents.has(event)) {\n return true;\n }\n return this.__mutedEvents.has('*');\n }\n unmute(event) {\n this.__mutedEvents.delete(event ?? '*');\n return this;\n }\n __eachEvent(events, callback) {\n const eventParts = splitArray(events).map(e => e.trim());\n eventParts.forEach(eventNameSpace => {\n const eventAndNameSpace = eventNameSpace.split('.');\n const namespace = eventAndNameSpace[1] || defaultNameSpace;\n callback.call(this, eventAndNameSpace[0], namespace);\n });\n }\n __getStore(subject) {\n if (!subject) {\n throw error('Need subject');\n }\n if (subject[this.__key] === undefined) {\n const store = new EventHandlersStore();\n Object.defineProperty(subject, this.__key, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: store\n });\n }\n return subject[this.__key];\n }\n __removeStoreFromSubject(subject) {\n if (subject[this.__key] !== undefined) {\n Object.defineProperty(subject, this.__key, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: undefined\n });\n }\n }\n __triggerNativeEvent(element, event) {\n const evt = this.__doc.createEvent('HTMLEvents');\n if (isString(event)) {\n evt.initEvent(event, true, true);\n }\n else {\n evt.initEvent(event.type, event.bubbles, event.cancelable);\n [\n 'screenX',\n 'screenY',\n 'clientX',\n 'clientY',\n 'target',\n 'srcElement',\n 'currentTarget',\n 'timeStamp',\n 'which',\n 'keyCode'\n ].forEach(property => {\n Object.defineProperty(evt, property, {\n value: event[property],\n enumerable: true\n });\n });\n Object.defineProperty(evt, 'originalEvent', {\n value: event,\n enumerable: true\n });\n }\n element.dispatchEvent(evt);\n }\n /**\n * Get current event name\n *\n * @example\n * ```javascript\n * parent.e.on('openDialog closeDialog', function () {\n * if (parent.e.current === 'closeDialog') {\n * alert('Dialog was closed');\n * } else {\n * alert('Dialog was opened');\n * }\n * });\n * ```\n */\n get current() {\n return this.currents[this.currents.length - 1];\n }\n on(eventsOrSubjects, callbackOrEvents, optionsOrCallback, opts) {\n let subjects;\n let events;\n let callback;\n let options;\n if (isString(eventsOrSubjects) || isStringArray(eventsOrSubjects)) {\n subjects = this;\n events = eventsOrSubjects;\n callback = callbackOrEvents;\n options = optionsOrCallback;\n }\n else {\n subjects = eventsOrSubjects;\n events = callbackOrEvents;\n callback = optionsOrCallback;\n options = opts;\n }\n if (!(isString(events) || isStringArray(events)) ||\n events.length === 0) {\n throw error('Need events names');\n }\n if (!isFunction(callback)) {\n throw error('Need event handler');\n }\n if (isArray(subjects)) {\n subjects.forEach(subj => {\n this.on(subj, events, callback, options);\n });\n return this;\n }\n const subject = subjects;\n const store = this.__getStore(subject);\n const self = this;\n let syntheticCallback = function (event, ...args) {\n if (self.isMuted(event)) {\n return;\n }\n return callback && callback.call(this, ...args);\n };\n if (isDOMElement(subject)) {\n syntheticCallback = function (event) {\n if (self.isMuted(event.type)) {\n return;\n }\n self.__prepareEvent(event);\n if (callback && callback.call(this, event) === false) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return false;\n }\n return;\n };\n }\n this.__eachEvent(events, (event, namespace) => {\n if (event.length === 0) {\n throw error('Need event name');\n }\n if (store.indexOf(event, namespace, callback) === false) {\n const block = {\n event,\n originalCallback: callback,\n syntheticCallback\n };\n store.set(event, namespace, block, options?.top);\n if (isDOMElement(subject)) {\n const eOpts = PASSIVE_EVENTS.has(event)\n ? {\n passive: true,\n capture: options?.capture ?? false\n }\n : options?.capture ?? false;\n syntheticCallback.options = eOpts;\n subject.addEventListener(event, syntheticCallback, eOpts);\n this.__memoryDOMSubjectToHandler(subject, syntheticCallback);\n }\n }\n });\n return this;\n }\n __memoryDOMSubjectToHandler(subject, syntheticCallback) {\n const callbackStore = this.__domEventsMap.get(subject) || new Set();\n callbackStore.add(syntheticCallback);\n this.__domEventsMap.set(subject, callbackStore);\n }\n __unmemoryDOMSubjectToHandler(subject, syntheticCallback) {\n const m = this.__domEventsMap;\n const callbackStore = m.get(subject) || new Set();\n callbackStore.delete(syntheticCallback);\n if (callbackStore.size) {\n m.set(subject, callbackStore);\n }\n else {\n m.delete(subject);\n }\n }\n one(eventsOrSubjects, callbackOrEvents, optionsOrCallback, opts) {\n let subjects;\n let events;\n let callback;\n let options;\n if (isString(eventsOrSubjects) || isStringArray(eventsOrSubjects)) {\n subjects = this;\n events = eventsOrSubjects;\n callback = callbackOrEvents;\n options = optionsOrCallback;\n }\n else {\n subjects = eventsOrSubjects;\n events = callbackOrEvents;\n callback = optionsOrCallback;\n options = opts;\n }\n const newCallback = (...args) => {\n this.off(subjects, events, newCallback);\n return callback(...args);\n };\n this.on(subjects, events, newCallback, options);\n return this;\n }\n off(eventsOrSubjects, callbackOrEvents, handler) {\n let subjects;\n let events;\n let callback;\n if (isString(eventsOrSubjects) || isStringArray(eventsOrSubjects)) {\n subjects = this;\n events = eventsOrSubjects;\n callback = callbackOrEvents;\n }\n else {\n subjects = eventsOrSubjects;\n events = callbackOrEvents;\n callback = handler;\n }\n if (isArray(subjects)) {\n subjects.forEach(subj => {\n this.off(subj, events, callback);\n });\n return this;\n }\n const subject = subjects;\n const store = this.__getStore(subject);\n if (!(isString(events) || isStringArray(events)) ||\n events.length === 0) {\n store.namespaces().forEach((namespace) => {\n this.off(subject, '.' + namespace);\n });\n this.__removeStoreFromSubject(subject);\n return this;\n }\n const removeEventListener = (block) => {\n if (isDOMElement(subject)) {\n subject.removeEventListener(block.event, block.syntheticCallback, block.syntheticCallback.options ?? false);\n this.__unmemoryDOMSubjectToHandler(subject, block.syntheticCallback);\n }\n }, removeCallbackFromNameSpace = (event, namespace) => {\n if (event === '') {\n store.events(namespace).forEach((eventName) => {\n if (eventName !== '') {\n removeCallbackFromNameSpace(eventName, namespace);\n }\n });\n return;\n }\n const blocks = store.get(event, namespace);\n if (!blocks || !blocks.length) {\n return;\n }\n if (!isFunction(callback)) {\n blocks.forEach(removeEventListener);\n blocks.length = 0;\n store.clearEvents(namespace, event);\n }\n else {\n const index = store.indexOf(event, namespace, callback);\n if (index !== false) {\n removeEventListener(blocks[index]);\n blocks.splice(index, 1);\n if (!blocks.length) {\n store.clearEvents(namespace, event);\n }\n }\n }\n };\n this.__eachEvent(events, (event, namespace) => {\n if (namespace === defaultNameSpace) {\n store.namespaces().forEach(namespace => {\n removeCallbackFromNameSpace(event, namespace);\n });\n }\n else {\n removeCallbackFromNameSpace(event, namespace);\n }\n });\n if (store.isEmpty()) {\n this.__removeStoreFromSubject(subject);\n }\n return this;\n }\n stopPropagation(subjectOrEvents, eventsList) {\n const subject = isString(subjectOrEvents)\n ? this\n : subjectOrEvents;\n const events = isString(subjectOrEvents)\n ? subjectOrEvents\n : eventsList;\n if (typeof events !== 'string') {\n throw error('Need event names');\n }\n const store = this.__getStore(subject);\n this.__eachEvent(events, (event, namespace) => {\n const blocks = store.get(event, namespace);\n if (blocks) {\n this.__stopped.push(blocks);\n }\n if (namespace === defaultNameSpace) {\n store\n .namespaces(true)\n .forEach(ns => this.stopPropagation(subject, event + '.' + ns));\n }\n });\n }\n __removeStop(currentBlocks) {\n if (currentBlocks) {\n const index = this.__stopped.indexOf(currentBlocks);\n index !== -1 && this.__stopped.splice(0, index + 1);\n }\n }\n __isStopped(currentBlocks) {\n return (currentBlocks !== undefined &&\n this.__stopped.indexOf(currentBlocks) !== -1);\n }\n fire(subjectOrEvents, eventsList, ...args) {\n let result, result_value;\n const subject = isString(subjectOrEvents)\n ? this\n : subjectOrEvents;\n const events = isString(subjectOrEvents)\n ? subjectOrEvents\n : eventsList;\n const argumentsList = isString(subjectOrEvents)\n ? [eventsList, ...args]\n : args;\n if (!isDOMElement(subject) && !isString(events)) {\n throw error('Need events names');\n }\n const store = this.__getStore(subject);\n if (!isString(events) && isDOMElement(subject)) {\n this.__triggerNativeEvent(subject, eventsList);\n }\n else {\n this.__eachEvent(events, (event, namespace) => {\n if (isDOMElement(subject)) {\n this.__triggerNativeEvent(subject, event);\n }\n else {\n const blocks = store.get(event, namespace);\n if (blocks) {\n try {\n [...blocks].every((block) => {\n if (this.__isStopped(blocks)) {\n return false;\n }\n this.currents.push(event);\n result_value =\n block.syntheticCallback.call(subject, event, ...argumentsList);\n this.currents.pop();\n if (result_value !== undefined) {\n result = result_value;\n }\n return true;\n });\n }\n finally {\n this.__removeStop(blocks);\n }\n }\n if (namespace === defaultNameSpace &&\n !isDOMElement(subject)) {\n store\n .namespaces()\n .filter(ns => ns !== namespace)\n .forEach((ns) => {\n const result_second = this.fire.apply(this, [\n subject,\n event + '.' + ns,\n ...argumentsList\n ]);\n if (result_second !== undefined) {\n result = result_second;\n }\n });\n }\n }\n });\n }\n return result;\n }\n constructor(doc) {\n this.__domEventsMap = new Map();\n this.__mutedEvents = new Set();\n this.__key = '__JoditEventEmitterNamespaces';\n this.__doc = document;\n this.__prepareEvent = (e) => {\n if (e.cancelBubble) {\n return;\n }\n // for Shadow Dom\n if (e.composed && isFunction(e.composedPath) && e.composedPath()[0]) {\n Object.defineProperty(e, 'target', {\n value: e.composedPath()[0],\n configurable: true,\n enumerable: true\n });\n }\n if (e.type.match(/^touch/) &&\n e.changedTouches &&\n e.changedTouches.length) {\n ['clientX', 'clientY', 'pageX', 'pageY'].forEach((key) => {\n Object.defineProperty(e, key, {\n value: e.changedTouches[0][key],\n configurable: true,\n enumerable: true\n });\n });\n }\n if (!e.originalEvent) {\n e.originalEvent = e;\n }\n if (e.type === 'paste' &&\n e.clipboardData === undefined &&\n this.__doc.defaultView.clipboardData) {\n Object.defineProperty(e, 'clipboardData', {\n get: () => {\n return this.__doc.defaultView.clipboardData;\n },\n configurable: true,\n enumerable: true\n });\n }\n };\n this.currents = [];\n this.__stopped = [];\n this.__isDestructed = false;\n if (doc) {\n this.__doc = doc;\n }\n this.__key += new Date().getTime();\n }\n destruct() {\n if (this.__isDestructed) {\n return;\n }\n this.__isDestructed = true;\n this.__domEventsMap.forEach((set, elm) => {\n this.off(elm);\n });\n this.__domEventsMap.clear();\n this.__mutedEvents.clear();\n this.currents.length = 0;\n this.__stopped.length = 0;\n this.off(this);\n this.__getStore(this).clear();\n this.__removeStoreFromSubject(this);\n }\n}\nfunction isDOMElement(subject) {\n return isFunction(subject.addEventListener);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { STATUSES } from \"../../component/statuses.js\";\nimport { observable } from \"../../event-emitter/observable.js\";\nimport { splitArray } from \"../../helpers/array/split-array.js\";\nimport { isFunction } from \"../../helpers/checker/is-function.js\";\nimport { isPlainObject } from \"../../helpers/checker/is-plain-object.js\";\nimport { isViewObject } from \"../../helpers/checker/is-view-object.js\";\nimport { error } from \"../../helpers/utils/error/index.js\";\nexport function getPropertyDescriptor(obj, prop) {\n let desc;\n do {\n desc = Object.getOwnPropertyDescriptor(obj, prop);\n obj = Object.getPrototypeOf(obj);\n } while (!desc && obj);\n return desc;\n}\n/**\n * Watch decorator. Added observer for some change in field value\n */\nexport function watch(observeFields, opts) {\n return (target, propertyKey) => {\n if (!isFunction(target[propertyKey])) {\n throw error('Handler must be a Function');\n }\n const immediately = opts?.immediately ?? true;\n const context = opts?.context;\n const process = (component) => {\n const view = isViewObject(component)\n ? component\n : component.jodit;\n let callback = (key, ...args) => {\n if (component.isInDestruct) {\n return;\n }\n return component[propertyKey](key, ...args);\n };\n if (!immediately) {\n callback = component.async.microDebounce(callback, true);\n }\n splitArray(observeFields).forEach(field => {\n if (/:/.test(field)) {\n const [objectPath, eventName] = field.split(':');\n let ctx = context;\n if (objectPath.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n ctx = component.get(objectPath);\n }\n if (isFunction(ctx)) {\n ctx = ctx(component);\n }\n view.events.on(ctx || component, eventName, callback);\n if (!ctx) {\n view.events.on(eventName, callback);\n }\n component.hookStatus('beforeDestruct', () => {\n view.events\n .off(ctx || component, eventName, callback)\n .off(eventName, callback);\n });\n return;\n }\n const parts = field.split('.'), [key] = parts, teil = parts.slice(1);\n let value = component[key];\n if (isPlainObject(value)) {\n const observableValue = observable(value);\n observableValue.on(`change.${teil.join('.')}`, callback);\n }\n const descriptor = getPropertyDescriptor(target, key);\n Object.defineProperty(component, key, {\n configurable: true,\n set(v) {\n const oldValue = value;\n if (oldValue === v) {\n return;\n }\n value = v;\n if (descriptor && descriptor.set) {\n descriptor.set.call(component, v);\n }\n if (isPlainObject(value)) {\n value = observable(value);\n value.on(`change.${teil.join('.')}`, callback);\n }\n callback(key, oldValue, value);\n },\n get() {\n if (descriptor && descriptor.get) {\n return descriptor.get.call(component);\n }\n return value;\n }\n });\n });\n };\n if (isFunction(target.hookStatus)) {\n target.hookStatus(STATUSES.ready, process);\n }\n else {\n process(target);\n }\n };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { getPropertyDescriptor } from \"../decorators/watch/watch.js\";\nimport { isArray } from \"../helpers/checker/is-array.js\";\nimport { isFastEqual } from \"../helpers/checker/is-equal.js\";\nimport { isPlainObject } from \"../helpers/checker/is-plain-object.js\";\nconst OBSERVABLE_OBJECT = Symbol('observable-object');\nfunction isObservableObject(obj) {\n return obj[OBSERVABLE_OBJECT] !== undefined;\n}\n/**\n * Makes any object an observable object\n * @example\n * ```js\n * const obj = {\n * a: 1,\n * b: {\n * c: 5\n * }\n * }\n *\n * const obsObj = Jodit.modules.observable(obj);\n * console.log(obj === obsObj); // true\n * obsObj.on('change', () => {\n * console.log('Object changed');\n * });\n * obsObj.on('change.a', () => {\n * console.log('Key a changed');\n * });\n * obsObj.on('change.b.c', () => {\n * console.log('Key b.c changed');\n * });\n *\n * obj.a = 6;\n * // Object changed\n * // Key a changed\n *\n * obj.b = {c: 6}\n * // Object changed\n *\n * obj.b.c = 8\n * // Object changed\n * // Key b.c changed\n * ```\n */\nexport function observable(obj) {\n if (isObservableObject(obj)) {\n return obj;\n }\n const __lockEvent = {};\n const __onEvents = {};\n const on = (event, callback) => {\n if (isArray(event)) {\n event.map(e => on(e, callback));\n return obj;\n }\n if (!__onEvents[event]) {\n __onEvents[event] = [];\n }\n __onEvents[event].push(callback);\n return obj;\n };\n const fire = (event, ...attr) => {\n if (isArray(event)) {\n event.map(e => fire(e, ...attr));\n return;\n }\n try {\n if (!__lockEvent[event] && __onEvents[event]) {\n __lockEvent[event] = true;\n __onEvents[event].forEach(clb => clb.call(obj, ...attr));\n }\n }\n finally {\n __lockEvent[event] = false;\n }\n };\n const initAccessors = (dict, prefixes = []) => {\n const store = {};\n if (isObservableObject(dict)) {\n return;\n }\n Object.defineProperty(dict, OBSERVABLE_OBJECT, {\n enumerable: false,\n value: true\n });\n Object.keys(dict).forEach(_key => {\n const key = _key;\n const prefix = prefixes.concat(key).filter(a => a.length);\n store[key] = dict[key];\n const descriptor = getPropertyDescriptor(dict, key);\n Object.defineProperty(dict, key, {\n set: (value) => {\n const oldValue = store[key];\n if (!isFastEqual(store[key], value)) {\n fire([\n 'beforeChange',\n `beforeChange.${prefix.join('.')}`\n ], key, value);\n if (isPlainObject(value)) {\n initAccessors(value, prefix);\n }\n if (descriptor && descriptor.set) {\n descriptor.set.call(obj, value);\n }\n else {\n store[key] = value;\n }\n const sum = [];\n fire([\n 'change',\n ...prefix.reduce((rs, p) => {\n sum.push(p);\n rs.push(`change.${sum.join('.')}`);\n return rs;\n }, [])\n ], prefix.join('.'), oldValue, value?.valueOf\n ? value.valueOf()\n : value);\n }\n },\n get: () => {\n if (descriptor && descriptor.get) {\n return descriptor.get.call(obj);\n }\n return store[key];\n },\n enumerable: true,\n configurable: true\n });\n if (isPlainObject(store[key])) {\n initAccessors(store[key], prefix);\n }\n });\n Object.defineProperty(obj, 'on', {\n value: on\n });\n };\n initAccessors(obj);\n return obj;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isJoditObject } from \"./helpers/checker/is-jodit-object.js\";\nimport { isString } from \"./helpers/checker/is-string.js\";\nimport { isViewObject } from \"./helpers/checker/is-view-object.js\";\nimport { kebabCase } from \"./helpers/string/kebab-case.js\";\nimport { getClassName } from \"./helpers/utils/get-class-name.js\";\nimport { PluginSystem } from \"./plugin/plugin-system.js\";\nimport { lang } from \"./constants.js\";\nimport { Dom } from \"./dom/index.js\";\nimport { EventEmitter } from \"./event-emitter/index.js\";\nexport const instances = {};\nlet counter = 1;\nconst uuids = new Set();\n/**\n * Generate global unique uid\n */\nexport function uniqueUid() {\n function gen() {\n counter += 10 * (Math.random() + 1);\n return Math.round(counter).toString(16);\n }\n let uid = gen();\n while (uuids.has(uid)) {\n uid = gen();\n }\n uuids.add(uid);\n return uid;\n}\nexport const pluginSystem = new PluginSystem();\nexport const modules = {};\nexport const extendLang = (langs) => {\n Object.keys(langs).forEach(key => {\n if (lang[key]) {\n Object.assign(lang[key], langs[key]);\n }\n else {\n lang[key] = langs[key];\n }\n });\n};\nconst boxes = new WeakMap();\n/**\n * Create unique box(HTMLCotainer) and remove it after destroy\n */\nexport function getContainer(jodit, classFunc, tag = 'div', createInsideEditor = false) {\n const name = isString(classFunc)\n ? classFunc\n : classFunc\n ? getClassName(classFunc.prototype)\n : 'jodit-utils';\n const data = boxes.get(jodit) || {}, key = name + tag;\n const view = isViewObject(jodit) ? jodit : jodit.j;\n if (!data[key]) {\n let c = view.c;\n let body = isJoditObject(jodit) && jodit.o.shadowRoot\n ? jodit.o.shadowRoot\n : jodit.od.body;\n if (createInsideEditor &&\n isJoditObject(jodit) &&\n jodit.od !== jodit.ed) {\n c = jodit.createInside;\n const place = tag === 'style' ? jodit.ed.head : jodit.ed.body;\n body =\n isJoditObject(jodit) && jodit.o.shadowRoot\n ? jodit.o.shadowRoot\n : place;\n }\n const box = c.element(tag, {\n className: `jodit jodit-${kebabCase(name)}-container jodit-box`\n });\n box.classList.add(`jodit_theme_${view.o.theme || 'default'}`);\n body.appendChild(box);\n data[key] = box;\n jodit.hookStatus('beforeDestruct', () => {\n view.events.off(box);\n Dom.safeRemove(box);\n delete data[key];\n if (Object.keys(data).length) {\n boxes.delete(jodit);\n }\n });\n boxes.set(jodit, data);\n view.events.fire('getContainer', box);\n }\n data[key].classList.remove('jodit_theme_default', 'jodit_theme_dark');\n data[key].classList.add(`jodit_theme_${view.o.theme || 'default'}`);\n return data[key];\n}\n/**\n * Global event emitter\n */\nexport const eventEmitter = new EventEmitter();\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/html\n */\nimport { IS_PROD } from \"../../constants.js\";\nimport { Dom } from \"../../dom/dom.js\";\nimport { trim } from \"../string/trim.js\";\nimport { $$ } from \"../utils/selector.js\";\nfunction normalizeCSS(s) {\n return s\n .replace(/mso-[a-z-]+:[\\s]*[^;]+;/gi, '')\n .replace(/mso-[a-z-]+:[\\s]*[^\";']+$/gi, '')\n .replace(/border[a-z-]*:[\\s]*[^;]+;/gi, '')\n .replace(/([0-9.]+)(pt|cm)/gi, (match, units, metrics) => {\n switch (metrics.toLowerCase()) {\n case 'pt':\n return (parseFloat(units) * 1.328).toFixed(0) + 'px';\n case 'cm':\n return (parseFloat(units) * 0.02645833).toFixed(0) + 'px';\n }\n return match;\n });\n}\n/**\n * If the HTML has CSS rules with selectors,\n * it applies them to the selectors in the HTML itself\n * and then removes the selector styles, leaving only the inline ones.\n */\nexport function applyStyles(html) {\n if (html.indexOf('<html ') === -1) {\n return html;\n }\n html = html.substring(html.indexOf('<html '), html.length);\n html = html.substring(0, html.lastIndexOf('</html>') + '</html>'.length);\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n let convertedString = '', collection = [];\n try {\n const iframeDoc = iframe.contentDocument ||\n (iframe.contentWindow ? iframe.contentWindow.document : null);\n if (iframeDoc) {\n iframeDoc.open();\n iframeDoc.write(html);\n iframeDoc.close();\n try {\n for (let i = 0; i < iframeDoc.styleSheets.length; i += 1) {\n const rules = iframeDoc.styleSheets[i].cssRules;\n for (let idx = 0; idx < rules.length; idx += 1) {\n if (rules[idx].selectorText === '') {\n continue;\n }\n collection = $$(rules[idx].selectorText, iframeDoc.body);\n collection.forEach((elm) => {\n elm.style.cssText = normalizeCSS(rules[idx].style.cssText +\n ';' +\n elm.style.cssText);\n });\n }\n }\n }\n catch (e) {\n if (!IS_PROD) {\n throw e;\n }\n }\n Dom.each(iframeDoc.body, node => {\n if (Dom.isElement(node)) {\n const elm = node;\n const css = elm.getAttribute('style');\n if (css) {\n elm.style.cssText = normalizeCSS(css);\n }\n if (elm.hasAttribute('style') &&\n !elm.getAttribute('style')) {\n elm.removeAttribute('style');\n }\n }\n });\n convertedString = iframeDoc.firstChild\n ? trim(iframeDoc.body.innerHTML)\n : '';\n }\n }\n catch {\n }\n finally {\n Dom.safeRemove(iframe);\n }\n if (convertedString) {\n html = convertedString;\n }\n return trim(html\n .replace(/<(\\/)?(html|colgroup|col|o:p)[^>]*>/g, '')\n .replace(/<!--[^>]*>/g, ''));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/html\n */\nimport { Dom } from \"../../dom/dom.js\";\nimport { toArray } from \"../array/to-array.js\";\nimport { trim } from \"../string/trim.js\";\n/**\n * The method automatically cleans up content from Microsoft Word and other HTML sources to ensure clean, compliant\n * content that matches the look and feel of the site.\n */\nexport function cleanFromWord(html) {\n if (html.indexOf('<html ') !== -1) {\n html = html.substring(html.indexOf('<html '), html.length);\n html = html.substring(0, html.lastIndexOf('</html>') + '</html>'.length);\n }\n let convertedString = '';\n try {\n const div = document.createElement('div');\n div.innerHTML = html;\n const marks = [];\n if (div.firstChild) {\n Dom.each(div, node => {\n if (!node) {\n return;\n }\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n switch (node.nodeName) {\n case 'STYLE':\n case 'LINK':\n case 'META':\n marks.push(node);\n break;\n case 'W:SDT':\n case 'W:SDTPR':\n case 'FONT':\n Dom.unwrap(node);\n break;\n default:\n toArray(node.attributes).forEach((attr) => {\n if ([\n 'src',\n 'href',\n 'rel',\n 'content'\n ].indexOf(attr.name.toLowerCase()) === -1) {\n node.removeAttribute(attr.name);\n }\n });\n }\n break;\n case Node.TEXT_NODE:\n break;\n default:\n marks.push(node);\n }\n });\n }\n Dom.safeRemove.apply(null, marks);\n convertedString = div.innerHTML;\n }\n catch (e) { }\n if (convertedString) {\n html = convertedString;\n }\n html = html.split(/(\\n)/).filter(trim).join('\\n');\n return html\n .replace(/<(\\/)?(html|colgroup|col|o:p)[^>]*>/g, '')\n .replace(/<!--[^>]*>/g, '');\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/html\n */\n/**\n * Convert special characters to HTML entities\n */\nexport function htmlspecialchars(html) {\n const tmp = document.createElement('div');\n tmp.textContent = html;\n return tmp.innerHTML;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/html\n */\n/**\n * Inserts HTML line breaks before all newlines in a string\n */\nexport function nl2br(html) {\n return html.replace(/\\r\\n|\\r|\\n/g, '<br/>');\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/html\n */\nimport { Dom } from \"../../dom/dom.js\";\nimport { $$, attr } from \"../utils/index.js\";\n/**\n * Removes dangerous constructs from HTML\n */\nexport function safeHTML(box, options) {\n if (!Dom.isElement(box) && !Dom.isFragment(box)) {\n return;\n }\n if (options.removeOnError) {\n sanitizeHTMLElement(box);\n $$('[onerror]', box).forEach(elm => sanitizeHTMLElement(elm, options));\n }\n if (options.safeJavaScriptLink) {\n sanitizeHTMLElement(box);\n $$('a[href^=\"javascript\"]', box).forEach(elm => sanitizeHTMLElement(elm, options));\n }\n}\nexport function sanitizeHTMLElement(elm, { safeJavaScriptLink, removeOnError } = {\n safeJavaScriptLink: true,\n removeOnError: true\n}) {\n if (!Dom.isElement(elm)) {\n return false;\n }\n let effected = false;\n if (removeOnError && elm.hasAttribute('onerror')) {\n attr(elm, 'onerror', null);\n effected = true;\n }\n const href = elm.getAttribute('href');\n if (safeJavaScriptLink && href && href.trim().indexOf('javascript') === 0) {\n attr(elm, 'href', location.protocol + '//' + href);\n effected = true;\n }\n return effected;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/dom.js\";\nimport { isString } from \"../checker/is-string.js\";\nimport { trim } from \"../string/trim.js\";\nimport { $$ } from \"../utils/index.js\";\nconst NEW_LINE_TAGS = new Set([\n 'div',\n 'p',\n 'br',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'hr'\n]);\nconst INVISIBLE_TAGS = new Set(['script', 'style']);\nconst ALONE_TAGS = new Set(['br', 'hr', 'input']);\n/**\n * Extract plain text from HTML text\n */\nexport function stripTags(html, doc = document, exclude = null) {\n const tmp = doc.createElement('div');\n if (isString(html)) {\n tmp.innerHTML = html;\n }\n else {\n tmp.appendChild(html);\n }\n $$('*', tmp).forEach(p => {\n const pr = p.parentNode;\n if (!pr) {\n return;\n }\n if (exclude && Dom.isTag(p, exclude)) {\n const tag = p.nodeName.toLowerCase();\n const text = !Dom.isTag(p, ALONE_TAGS)\n ? `%%%jodit-${tag}%%%${stripTags(p.innerHTML, doc, exclude)}%%%/jodit-${tag}%%%`\n : `%%%jodit-single-${tag}%%%`;\n Dom.before(p, doc.createTextNode(text));\n Dom.safeRemove(p);\n return;\n }\n if (Dom.isTag(p, INVISIBLE_TAGS)) {\n Dom.safeRemove(p);\n return;\n }\n if (!Dom.isTag(p, NEW_LINE_TAGS)) {\n return;\n }\n const nx = p.nextSibling;\n if (Dom.isText(nx) && /^\\s/.test(nx.nodeValue || '')) {\n return;\n }\n if (nx) {\n pr.insertBefore(doc.createTextNode(' '), nx);\n }\n });\n return restoreTags(trim(tmp.innerText));\n}\nfunction restoreTags(content) {\n return content.replace(/%%%(\\/)?jodit(-single)?-([\\w\\n]+)%%%/g, (_, isClosed, isSingle, tag) => `<${isClosed ? '/' : ''}${tag}>`);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/normalize\n */\nimport { colorToHex } from \"../color/color-to-hex.js\";\nimport { trim } from \"../string/trim.js\";\n/**\n * Convert rgba and short HEX color to Full text color. #fff to #FFFFFF\n *\n * @param colorInput - string like rgba(red, green, blue, alpha) or rgb(red, green, blue) or #fff or #ffffff\n * @returns HEX color, false - for transparent color\n */\nexport const normalizeColor = (colorInput) => {\n const newcolor = ['#'];\n let color = colorToHex(colorInput);\n if (!color) {\n return false;\n }\n color = trim(color.toUpperCase());\n color = color.substring(1);\n if (color.length === 3) {\n for (let i = 0; i < 3; i += 1) {\n newcolor.push(color[i]);\n newcolor.push(color[i]);\n }\n return newcolor.join('');\n }\n if (color.length > 6) {\n color = color.slice(0, 6);\n }\n return '#' + color;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { KEY_ALIASES } from \"../../constants.js\";\nimport { trim } from \"../string/trim.js\";\n/**\n * Normalize keys to some standard name\n */\nexport function normalizeKeyAliases(keys) {\n const memory = {};\n const order = {\n meta: 1,\n ctrl: 2,\n control: 2,\n alt: 3,\n shift: 4,\n space: 5\n };\n return keys\n .replace(/\\+\\+/g, '+add')\n .split(/[\\s]*\\+[\\s]*/)\n .map(key => trim(key.toLowerCase()))\n .map(key => KEY_ALIASES[key] || key)\n .sort((a, b) => {\n if (order[a] && !order[b]) {\n return -1;\n }\n if (!order[a] && order[b]) {\n return 1;\n }\n if (order[a] && order[b]) {\n return order[a] - order[b];\n }\n return a > b ? 1 : -1;\n })\n .filter(key => !memory[key] && key !== '' && (memory[key] = true))\n .join('+');\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/normalize\n */\nexport const normalizeLicense = (license, count = 8) => {\n const parts = [];\n while (license.length) {\n parts.push(license.substr(0, count));\n license = license.substr(count);\n }\n parts[1] = parts[1].replace(/./g, '*');\n parts[2] = parts[2].replace(/./g, '*');\n return parts.join('-');\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/normalize\n */\nimport { trim } from \"../string/trim.js\";\n/**\n * Replaces back slashes and correctly concatenates several parts of the path.\n */\nexport const normalizePath = (...path) => {\n return path\n .filter(part => trim(part).length)\n .map((part, index) => {\n part = part.replace(/([^:])[\\\\/]+/g, '$1/');\n if (index) {\n part = part.replace(/^\\//, '');\n }\n if (index !== path.length - 1) {\n part = part.replace(/\\/$/, '');\n }\n return part;\n })\n .join('/');\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/normalize\n */\nexport const normalizeRelativePath = (path) => {\n const sections = path.split('/'), builder = sections.reduce((builder, section) => {\n switch (section) {\n case '': {\n break;\n }\n case '.': {\n break;\n }\n case '..': {\n builder.pop();\n break;\n }\n default: {\n builder.push(section);\n break;\n }\n }\n return builder;\n }, []);\n return builder.join('/') + (path.endsWith('/') ? '/' : '');\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/normalize\n */\n/**\n * Normalize value to CSS meters\n */\nexport const normalizeSize = (value, units) => {\n if (/^[0-9]+$/.test(value.toString())) {\n return value + units;\n }\n return value.toString();\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/normalize\n */\nexport const normalizeUrl = (...urls) => {\n return urls\n .filter(url => url.length)\n .map(url => url.replace(/\\/$/, ''))\n .join('/')\n .replace(/([^:])[\\\\/]+/g, '$1/');\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/size\n */\nexport const getContentWidth = (element, win) => {\n const pi = (value) => parseInt(value, 10), style = win.getComputedStyle(element), width = element.offsetWidth, paddingLeft = pi(style.getPropertyValue('padding-left') || '0'), paddingRight = pi(style.getPropertyValue('padding-right') || '0');\n return width - paddingLeft - paddingRight;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/dom.js\";\nimport { css } from \"../utils/index.js\";\nexport function getScrollParent(node) {\n if (!node) {\n return null;\n }\n const isElement = Dom.isHTMLElement(node);\n const overflowY = isElement && css(node, 'overflowY');\n const isScrollable = isElement && overflowY !== 'visible' && overflowY !== 'hidden';\n if (isScrollable && node.scrollHeight >= node.clientHeight) {\n return node;\n }\n return (getScrollParent(node.parentNode) ||\n document.scrollingElement ||\n document.body);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/size\n */\nexport const innerWidth = (element, win) => {\n const computedStyle = win.getComputedStyle(element);\n let elementWidth = element.clientWidth; // width with padding\n elementWidth -=\n parseFloat(computedStyle.paddingLeft || '0') +\n parseFloat(computedStyle.paddingRight || '0');\n return elementWidth;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isArray, isPlainObject, isString } from \"../checker/index.js\";\nexport function size(subject) {\n if (isString(subject) || isArray(subject)) {\n return subject.length;\n }\n if (isPlainObject(subject)) {\n return Object.keys(subject).length;\n }\n return 0;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport const offset = (elm, jodit, doc, recurse = false) => {\n let rect;\n try {\n rect = elm.getBoundingClientRect();\n }\n catch (e) {\n rect = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n const body = doc.body, docElem = doc.documentElement || {\n clientTop: 0,\n clientLeft: 0,\n scrollTop: 0,\n scrollLeft: 0\n }, win = doc.defaultView || doc.parentWindow, scrollTop = win.pageYOffset || docElem.scrollTop || body.scrollTop, scrollLeft = win.pageXOffset || docElem.scrollLeft || body.scrollLeft, clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0;\n let topValue, leftValue;\n const iframe = jodit.iframe;\n if (!recurse && jodit && jodit.options && jodit.o.iframe && iframe) {\n const { top, left } = offset(iframe, jodit, jodit.od, true);\n topValue = rect.top + top;\n leftValue = rect.left + left;\n }\n else {\n topValue = rect.top + scrollTop - clientTop;\n leftValue = rect.left + scrollLeft - clientLeft;\n }\n return {\n top: Math.round(topValue),\n left: Math.round(leftValue),\n width: rect.width,\n height: rect.height\n };\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isJoditObject } from \"../checker/is-jodit-object.js\";\n/**\n * Calculate screen element position\n */\nexport function position(elm, jodit, recurse = false) {\n const rect = elm.getBoundingClientRect();\n let xPos = rect.left, yPos = rect.top;\n if (isJoditObject(jodit) &&\n jodit.iframe &&\n jodit.ed.body.contains(elm) &&\n !recurse) {\n const { left, top } = position(jodit.iframe, jodit, true);\n xPos += left;\n yPos += top;\n }\n return {\n left: Math.round(xPos),\n top: Math.round(yPos),\n width: Math.round(elm.offsetWidth ?? rect.width),\n height: Math.round(elm.offsetHeight ?? rect.height)\n };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/string\n */\nimport { INVISIBLE_SPACE } from \"../../constants.js\";\n/**\n * Finds the position of the substring in the string, if any, and returns the length of the found subsequence.\n * Unlike `indexOf` ignores INVISIBLE_SPACE and may fail at `maxDistance` characters\n */\nexport function fuzzySearchIndex(needle, haystack, offset = 0, maxDistance = 1) {\n let i = 0, j = 0, startIndex = -1, len = 0, errorDistance = 0;\n for (j = offset; i < needle.length && j < haystack.length;) {\n if (needle[i].toLowerCase() === haystack[j].toLowerCase()) {\n i++;\n len++;\n errorDistance = 0;\n if (startIndex === -1) {\n startIndex = j;\n }\n }\n else if (i > 0) {\n if (errorDistance >= maxDistance &&\n haystack[j] !== INVISIBLE_SPACE) {\n i = 0;\n startIndex = -1;\n len = 0;\n errorDistance = 0;\n j--;\n }\n else {\n errorDistance++;\n len++;\n }\n }\n j++;\n }\n return i === needle.length ? [startIndex, len] : [-1, 0];\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module helpers/string\n */\n/**\n * Make a string's first character uppercase\n */\nexport function ucfirst(value) {\n if (!value.length) {\n return '';\n }\n return value[0].toUpperCase() + value.substring(1);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD, lang } from \"../../constants.js\";\nimport { isString } from \"../checker/is-string.js\";\nimport { ucfirst } from \"./ucfirst.js\";\nimport { defaultLanguage as defineLanguage, error } from \"../utils/index.js\";\nimport { Config } from \"../../../config.js\";\n/**\n * Simple variant sprintf function\n */\nexport const sprintf = (str, args) => {\n if (!args || !args.length) {\n return str;\n }\n const reg = /%([sd])/g;\n let fnd = reg.exec(str);\n let res = str, i = 0;\n while (fnd && args[i] !== undefined) {\n res = res.replace(fnd[0], args[i].toString());\n i += 1;\n fnd = reg.exec(str);\n }\n return res;\n};\n/**\n * Internationalization method. Uses Jodit.lang object\n * @example\n * ```javascript\n * var editor = Jodit.make(\"#redactor\", {\n * language: 'ru'\n * });\n * console.log(editor.i18n('Cancel')) //Отмена;\n *\n * Jodit.defaultOptions.language = 'ru';\n * console.log(Jodit.prototype.i18n('Cancel')) //Отмена\n *\n * Jodit.lang.cs = {\n * Cancel: 'Zrušit'\n * };\n * Jodit.defaultOptions.language = 'cs';\n * console.log(Jodit.prototype.i18n('Cancel')) //Zrušit\n *\n * Jodit.lang.cs = {\n * 'Hello world': 'Hello \\s Good \\s'\n * };\n * Jodit.defaultOptions.language = 'cs';\n * console.log(Jodit.prototype.i18n('Hello world', 'mr.Perkins', 'day')) //Hello mr.Perkins Good day\n * ```\n */\nexport function i18n(key, params, options) {\n if (!isString(key)) {\n throw error('i18n: Need string in first argument');\n }\n if (!key.length) {\n return key;\n }\n const debug = Boolean(options?.debugLanguage);\n let store = {};\n const parse = (value) => params && params.length ? sprintf(value, params) : value, defaultLanguage = defineLanguage(Config.defaultOptions.language, Config.defaultOptions.language), language = defineLanguage(options?.language, defaultLanguage), tryGet = (store) => {\n if (!store) {\n return;\n }\n if (isString(store[key])) {\n return parse(store[key]);\n }\n const lcKey = key.toLowerCase();\n if (isString(store[lcKey])) {\n return parse(store[lcKey]);\n }\n const ucfKey = ucfirst(key);\n if (isString(store[ucfKey])) {\n return parse(store[ucfKey]);\n }\n return;\n };\n if (lang[language] !== undefined) {\n store = lang[language];\n }\n else if (!debug) {\n if (lang[defaultLanguage] !== undefined) {\n store = lang[defaultLanguage];\n }\n else {\n store = lang.en;\n }\n }\n const i18nOvr = options?.i18n;\n if (i18nOvr && i18nOvr[language]) {\n const result = tryGet(i18nOvr[language]);\n if (result) {\n return result;\n }\n }\n const result = tryGet(store);\n if (result) {\n return result;\n }\n if (!debug && lang.en && isString(lang.en[key]) && lang.en[key]) {\n return parse(lang.en[key]);\n }\n if (debug) {\n return '{' + key + '}';\n }\n if (!IS_PROD && language !== 'en') {\n console.warn(`i18n need \"${key}\" in \"${language}\"`);\n }\n return parse(key);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Async } from \"../async/index.js\";\nimport { STATUSES } from \"./statuses.js\";\nimport { uniqueUid } from \"../global.js\";\nimport { get, getClassName, isFunction, isVoid, kebabCase } from \"../helpers/index.js\";\nconst StatusListHandlers = new Map();\n/**\n * The base class of all Jodit UI components. Provides work with a life cycle.\n */\nexport class Component {\n get componentName() {\n if (!this.__componentName) {\n this.__componentName =\n 'jodit-' +\n kebabCase((isFunction(this.className) ? this.className() : '') ||\n getClassName(this));\n }\n return this.__componentName;\n }\n getFullElName(elementName, mod, modValue) {\n const result = [this.componentName];\n if (elementName) {\n elementName = elementName.replace(/[^a-z0-9-]/gi, '-');\n result.push(`__${elementName}`);\n }\n if (mod) {\n result.push('_', mod);\n result.push('_', isVoid(modValue) ? 'true' : modValue.toString());\n }\n return result.join('');\n }\n /**\n * The document in which jodit was created\n */\n get ownerDocument() {\n return this.ow.document;\n }\n /**\n * Shortcut for `this.ownerDocument`\n */\n get od() {\n return this.ownerDocument;\n }\n get ow() {\n return this.ownerWindow;\n }\n /**\n * Safe get any field\n * @example\n * ```js\n * private a = {\n * \tb: {\n * \t\tc: {\n * \t\t\te: {\n * \t\t\t\tg: {\n * \t\t\t\t\tcolor: 'red'\n * \t\t\t\t}\n * \t\t\t}\n * \t\t}\n * \t}\n * }\n *\n * this.get('a.b.c.e.g.color'); // Safe access to color\n * // instead using optionsl chaining\n * this?.a?.b?.c?.e?.g?.color\n * ```\n *\n * @param chain - the path to be traversed in the obj object\n * @param obj - the object in which the value is searched\n */\n get(chain, obj) {\n return get(chain, obj || this);\n }\n /**\n * Component is ready for work\n */\n get isReady() {\n return this.componentStatus === STATUSES.ready;\n }\n /**\n * Component was destructed\n */\n get isDestructed() {\n return this.componentStatus === STATUSES.destructed;\n }\n /**\n * The component is currently undergoing destructuring or has already been destroyed.\n * Those. you should not the app froze new events on him now or do anything else with him.\n */\n get isInDestruct() {\n return (STATUSES.beforeDestruct === this.componentStatus ||\n STATUSES.destructed === this.componentStatus);\n }\n /**\n * Bind destructor to some View\n */\n bindDestruct(component) {\n component.hookStatus(STATUSES.beforeDestruct, () => !this.isInDestruct && this.destruct());\n return this;\n }\n constructor() {\n this.async = new Async();\n /**\n * The window in which jodit was created\n */\n this.ownerWindow = window;\n this.__componentStatus = STATUSES.beforeInit;\n this.uid = 'jodit-uid-' + uniqueUid();\n }\n /**\n * Destruct component method\n */\n destruct() {\n this.setStatus(STATUSES.destructed);\n if (this.async) {\n this.async.destruct();\n // @ts-ignore\n this.async = undefined;\n }\n if (StatusListHandlers.get(this)) {\n StatusListHandlers.delete(this);\n }\n // @ts-ignore\n this.ownerWindow = undefined;\n }\n /**\n * Current component status\n */\n get componentStatus() {\n return this.__componentStatus;\n }\n /**\n * Setter for current component status\n */\n set componentStatus(componentStatus) {\n this.setStatus(componentStatus);\n }\n /**\n * Set component status\n * @param componentStatus - component status\n * @see ComponentStatus\n */\n setStatus(componentStatus) {\n return this.setStatusComponent(componentStatus, this);\n }\n /**\n * Set status recursively on all parents\n */\n setStatusComponent(componentStatus, component) {\n if (componentStatus === this.__componentStatus) {\n return;\n }\n if (component === this) {\n this.__componentStatus = componentStatus;\n }\n const proto = Object.getPrototypeOf(this);\n if (proto && isFunction(proto.setStatusComponent)) {\n proto.setStatusComponent(componentStatus, component);\n }\n const statuses = StatusListHandlers.get(this), list = statuses?.[componentStatus];\n if (list && list.length) {\n list.forEach(cb => cb(component));\n }\n }\n /**\n * Adds a handler for changing the component's status\n *\n * @param status - the status at which the callback is triggered\n * @param callback - a function that will be called when the status is `status`\n */\n hookStatus(status, callback) {\n let list = StatusListHandlers.get(this);\n if (!list) {\n list = {};\n StatusListHandlers.set(this, list);\n }\n if (!list[status]) {\n list[status] = [];\n }\n list[status].push(callback);\n }\n static isInstanceOf(c, constructorFunc) {\n return c instanceof constructorFunc;\n }\n}\nComponent.STATUSES = STATUSES;\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Component } from \"./component.js\";\nexport class ViewComponent extends Component {\n /**\n * Shortcut for `this.jodit`\n */\n get j() {\n return this.jodit;\n }\n get defaultTimeout() {\n return this.j.defaultTimeout;\n }\n i18n(text, ...params) {\n return this.j.i18n(text, ...params);\n }\n /**\n * Attach component to View\n */\n setParentView(jodit) {\n this.jodit = jodit;\n jodit.components.add(this);\n return this;\n }\n constructor(jodit) {\n super();\n this.setParentView(jodit);\n }\n /** @override */\n destruct() {\n this.j.components.delete(this);\n return super.destruct();\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Component, STATUSES } from \"../../component/index.js\";\nimport { isFunction, isNumber, isPlainObject } from \"../../helpers/checker/index.js\";\nimport { assert } from \"../../helpers/utils/assert.js\";\nimport { error } from \"../../helpers/utils/error/index.js\";\nexport function debounce(timeout, firstCallImmediately = false, method = 'debounce') {\n return (target, propertyKey) => {\n const fn = target[propertyKey];\n if (!isFunction(fn)) {\n throw error('Handler must be a Function');\n }\n target.hookStatus(STATUSES.ready, (component) => {\n const { async } = component;\n assert(async != null, `Component ${component.componentName || component.constructor.name} should have \"async:IAsync\" field`);\n const propTimeout = isFunction(timeout)\n ? timeout(component)\n : timeout;\n const realTimout = isNumber(propTimeout) || isPlainObject(propTimeout)\n ? propTimeout\n : component.defaultTimeout;\n Object.defineProperty(component, propertyKey, {\n configurable: true,\n value: async[method](component[propertyKey].bind(component), realTimout, firstCallImmediately)\n });\n });\n return {\n configurable: true,\n get() {\n return fn.bind(this);\n }\n };\n };\n}\n/**\n * Wrap function in throttle wrapper\n */\nexport function throttle(timeout, firstCallImmediately = false) {\n return debounce(timeout, firstCallImmediately, 'throttle');\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * [[include:core/decorators/derive/README.md]]\n * @packageDocumentation\n * @module decorators/derive\n */\nimport { isFunction } from \"../../helpers/checker/is-function.js\";\nexport function derive(...traits) {\n return (target) => {\n const origin = target.prototype;\n for (let i = 0; i < traits.length; i++) {\n const trait = traits[i];\n const keys = Object.getOwnPropertyNames(trait.prototype);\n for (let j = 0; j < keys.length; j++) {\n const key = keys[j], method = Object.getOwnPropertyDescriptor(trait.prototype, key);\n const canDerive = method != null &&\n isFunction(method.value) &&\n !isFunction(origin[key]);\n if (canDerive) {\n Object.defineProperty(origin, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: function (...args) {\n return method.value.call(this, ...args);\n }\n });\n }\n }\n }\n };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction } from \"../../helpers/checker/is-function.js\";\nimport { error } from \"../../helpers/utils/error/index.js\";\n/**\n * Call on some component status\n */\nexport function hook(status) {\n return (target, propertyKey) => {\n if (!isFunction(target[propertyKey])) {\n throw error('Handler must be a Function');\n }\n target.hookStatus(status, (component) => {\n component[propertyKey].call(component);\n });\n };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Component, STATUSES } from \"../../component/index.js\";\nimport { isFunction } from \"../../helpers/checker/is-function.js\";\nimport { error } from \"../../helpers/utils/error/index.js\";\nexport function idle() {\n return (target, propertyKey) => {\n if (!isFunction(target[propertyKey])) {\n throw error('Handler must be a Function');\n }\n target.hookStatus(STATUSES.ready, (component) => {\n const { async } = component;\n const originalMethod = component[propertyKey];\n component[propertyKey] = (...args) => async.requestIdleCallback(originalMethod.bind(component, ...args));\n });\n };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * [[include:core/decorators/nonenumerable/README.md]]\n * @packageDocumentation\n * @module decorators/nonenumerable\n */\nexport const nonenumerable = (target, propertyKey) => {\n const descriptor = Object.getOwnPropertyDescriptor(target, propertyKey) || {};\n if (descriptor.enumerable !== false) {\n Object.defineProperty(target, propertyKey, {\n enumerable: false,\n set(value) {\n Object.defineProperty(this, propertyKey, {\n enumerable: false,\n writable: true,\n value\n });\n }\n });\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { STATUSES } from \"../../component/statuses.js\";\nimport { isViewObject } from \"../../helpers/checker/is-view-object.js\";\nexport function persistent(target, propertyKey) {\n target.hookStatus(STATUSES.ready, (component) => {\n const jodit = isViewObject(component)\n ? component\n : component.jodit, storageKey = `${jodit.options.namespace}${component.componentName}_prop_${propertyKey}`, initialValue = component[propertyKey];\n Object.defineProperty(component, propertyKey, {\n get() {\n return jodit.storage.get(storageKey) ?? initialValue;\n },\n set(value) {\n jodit.storage.set(storageKey, value);\n }\n });\n });\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { STATUSES } from \"../../component/statuses.js\";\nimport { isFunction } from \"../../helpers/checker/is-function.js\";\nimport { error } from \"../../helpers/utils/error/index.js\";\nexport function wait(condition) {\n return (target, propertyKey) => {\n const fn = target[propertyKey];\n if (!isFunction(fn)) {\n throw error('Handler must be a Function');\n }\n target.hookStatus(STATUSES.ready, (component) => {\n const { async } = component;\n const realMethod = component[propertyKey];\n let timeout = 0;\n Object.defineProperty(component, propertyKey, {\n configurable: true,\n value: function callProxy(...args) {\n async.clearTimeout(timeout);\n if (condition(component)) {\n realMethod.apply(component, args);\n }\n else {\n timeout = async.setTimeout(() => callProxy(...args), 10);\n }\n }\n });\n });\n };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.defaultAjaxOptions = {\n successStatuses: [200, 201, 202],\n method: 'GET',\n url: '',\n data: null,\n contentType: 'application/x-www-form-urlencoded; charset=UTF-8',\n headers: {\n 'X-REQUESTED-WITH': 'XMLHttpRequest' // compatible with jQuery\n },\n withCredentials: false,\n xhr() {\n return new XMLHttpRequest();\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport class Response {\n get url() {\n return this.request.url;\n }\n constructor(request, status, statusText, body) {\n this.request = request;\n this.status = status;\n this.statusText = statusText;\n this.body = body;\n }\n async json() {\n return JSON.parse(this.body);\n }\n text() {\n return Promise.resolve(this.body);\n }\n async blob() {\n return this.body;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Async } from \"../async/index.js\";\nimport { autobind } from \"../decorators/autobind/autobind.js\";\nimport { buildQuery, ConfigProto, isFunction, isPlainObject, isString, parseQuery } from \"../helpers/index.js\";\nimport * as error from \"../helpers/utils/error/index.js\";\nimport { Config } from \"../../config.js\";\nimport \"./config.js\";\nimport { Response } from \"./response.js\";\nexport class Ajax {\n className() {\n return 'Ajax';\n }\n constructor(options, defaultAjaxOptions = Config.prototype.defaultAjaxOptions) {\n this.__async = new Async();\n this.__isFulfilled = false;\n this.__activated = false;\n this.__isDestructed = false;\n this.options = ConfigProto(options || {}, defaultAjaxOptions);\n this.xhr = this.o.xhr ? this.o.xhr() : new XMLHttpRequest();\n }\n __buildParams(obj, prefix) {\n if (isPlainObject(obj) &&\n this.options.contentType &&\n this.options.contentType.includes('application/json')) {\n return JSON.stringify(obj);\n }\n if (isFunction(this.o.queryBuild)) {\n return this.o.queryBuild.call(this, obj, prefix);\n }\n if (isString(obj) ||\n obj instanceof window.FormData ||\n (typeof obj === 'object' && obj != null && isFunction(obj.append))) {\n return obj;\n }\n return buildQuery(obj);\n }\n get o() {\n return this.options;\n }\n abort() {\n if (this.__isFulfilled) {\n return this;\n }\n try {\n this.__isFulfilled = true;\n this.xhr.abort();\n }\n catch { }\n return this;\n }\n send() {\n this.__activated = true;\n const { xhr, o } = this;\n const request = this.prepareRequest();\n return this.__async.promise(async (resolve, reject) => {\n const onReject = () => {\n this.__isFulfilled = true;\n reject(error.connection('Connection error'));\n };\n const onResolve = () => {\n this.__isFulfilled = true;\n resolve(new Response(request, xhr.status, xhr.statusText, !xhr.responseType ? xhr.responseText : xhr.response));\n };\n xhr.onload = onResolve;\n xhr.onabort = () => {\n this.__isFulfilled = true;\n reject(error.abort('Abort connection'));\n };\n xhr.onerror = onReject;\n xhr.ontimeout = onReject;\n if (o.responseType) {\n xhr.responseType = o.responseType;\n }\n xhr.onprogress = (e) => {\n let percentComplete = 0;\n if (e.lengthComputable) {\n percentComplete = (e.loaded / e.total) * 100;\n }\n this.options.onProgress?.(percentComplete);\n };\n xhr.onreadystatechange = () => {\n this.options.onProgress?.(10);\n if (xhr.readyState === XMLHttpRequest.DONE) {\n if (o.successStatuses.includes(xhr.status)) {\n onResolve();\n }\n else if (xhr.statusText) {\n this.__isFulfilled = true;\n reject(error.connection(xhr.statusText));\n }\n }\n };\n xhr.withCredentials = o.withCredentials ?? false;\n const { url, data, method } = request;\n xhr.open(method, url, true);\n if (o.contentType && xhr.setRequestHeader) {\n xhr.setRequestHeader('Content-type', o.contentType);\n }\n let { headers } = o;\n if (isFunction(headers)) {\n headers = await headers.call(this);\n }\n if (headers && xhr.setRequestHeader) {\n Object.keys(headers).forEach(key => {\n xhr.setRequestHeader(key, headers[key]);\n });\n }\n // IE\n this.__async.setTimeout(() => {\n xhr.send(data ? this.__buildParams(data) : undefined);\n }, 0);\n });\n }\n prepareRequest() {\n if (!this.o.url) {\n throw error.error('Need URL for AJAX request');\n }\n let url = this.o.url;\n const data = this.o.data;\n const method = (this.o.method || 'get').toLowerCase();\n if (method === 'get' && data && isPlainObject(data)) {\n const qIndex = url.indexOf('?');\n if (qIndex !== -1) {\n const urlData = parseQuery(url);\n url =\n url.substring(0, qIndex) +\n '?' +\n buildQuery({ ...urlData, ...data });\n }\n else {\n url += '?' + buildQuery(this.o.data);\n }\n }\n const request = {\n url,\n method,\n data\n };\n Ajax.log.splice(100);\n Ajax.log.push(request);\n return request;\n }\n destruct() {\n if (!this.__isDestructed) {\n this.__isDestructed = true;\n if (this.__activated && !this.__isFulfilled) {\n this.abort();\n this.__isFulfilled = true;\n }\n this.__async.destruct();\n }\n }\n}\nAjax.log = [];\n__decorate([\n autobind\n], Ajax.prototype, \"destruct\", null);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { toArray } from \"../helpers/array/to-array.js\";\nexport class Elms {\n /**\n * Return element with BEM class name\n */\n getElm(elementName) {\n return this.container.querySelector(`.${this.getFullElName(elementName)}`);\n }\n /**\n * Return elements with BEM class name\n */\n getElms(elementName) {\n return toArray(this.container.querySelectorAll(`.${this.getFullElName(elementName)}`));\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isVoid } from \"../helpers/checker/is-void.js\";\nexport class Mods {\n afterSetMod(name, value) { }\n /**\n * Set/remove BEM class modification\n *\n * @param value - if null, mod will be removed\n */\n setMod(name, value, container) {\n name = name.toLowerCase();\n const oldValue = this.mods[name];\n if (oldValue === value) {\n return this;\n }\n const mod = `${this.componentName}_${name}_`, cl = (container || this.container).classList;\n if (oldValue != null) {\n cl.remove(`${mod}${oldValue.toString().toLowerCase()}`);\n }\n !isVoid(value) &&\n value !== '' &&\n cl.add(`${mod}${value.toString().toLowerCase()}`);\n this.mods[name] = value;\n this.afterSetMod(name, value);\n return this;\n }\n /**\n * Get BEM class modification value\n */\n getMod(name) {\n return this.mods[name] ?? null;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD } from \"../constants.js\";\nimport { camelCase, kebabCase } from \"../helpers/index.js\";\nimport { css } from \"../helpers/utils/css.js\";\nexport class Icon {\n static getIcon(name) {\n if (/<svg/i.test(name)) {\n return name;\n }\n const icon = Icon.icons[name] ||\n Icon.icons[name.replace(/-/g, '_')] ||\n Icon.icons[name.replace(/_/g, '-')] ||\n Icon.icons[camelCase(name)] ||\n Icon.icons[kebabCase(name)] ||\n Icon.icons[name.toLowerCase()];\n if (!IS_PROD && !icon) {\n console.warn(`Icon \"${name}\" not found`);\n }\n return icon;\n }\n /**\n * Check if icon exist in store\n */\n static exists(name) {\n return this.getIcon(name) !== undefined;\n }\n /**\n * Return SVG icon\n */\n static get(name, defaultValue = '<span></span>') {\n return this.getIcon(name) || defaultValue;\n }\n /**\n * Set SVG in store\n */\n static set(name, value) {\n this.icons[name.replace('_', '-')] = value;\n return this;\n }\n /**\n * Make icon html element\n */\n static makeIcon(jodit, icon) {\n if (!icon) {\n return;\n }\n let iconElement;\n const { name, iconURL, fill } = icon;\n const clearName = name.replace(/[^a-zA-Z0-9]/g, '_');\n let iconFromEvent;\n if (!/<svg/.test(name)) {\n iconFromEvent = jodit.o.getIcon?.(name, clearName);\n }\n const cacheKey = `${name}${iconURL}${fill}${iconFromEvent ?? ''}`;\n if (jodit.o.cache && this.__cache.has(cacheKey)) {\n return this.__cache.get(cacheKey)?.cloneNode(true);\n }\n if (iconURL) {\n iconElement = jodit.c.span();\n css(iconElement, 'backgroundImage', 'url(' +\n iconURL.replace('{basePath}', jodit?.basePath || '') +\n ')');\n }\n else {\n const svg = iconFromEvent ||\n Icon.get(name, '') ||\n jodit.o.extraIcons?.[name];\n if (svg) {\n iconElement = jodit.c.fromHTML(svg.trim());\n if (!/^<svg/i.test(name)) {\n iconElement.classList.add('jodit-icon_' + clearName);\n }\n }\n }\n if (iconElement) {\n iconElement.classList.add('jodit-icon');\n iconElement.style.fill = fill;\n jodit.o.cache &&\n this.__cache.set(cacheKey, iconElement.cloneNode(true));\n }\n return iconElement;\n }\n}\nIcon.icons = {};\nIcon.__cache = new Map();\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UIElement_1;\nimport { Component, ViewComponent } from \"../component/index.js\";\nimport { derive } from \"../decorators/derive/derive.js\";\nimport { Dom } from \"../dom/dom.js\";\nimport { isString } from \"../helpers/checker/is-string.js\";\nimport { Elms } from \"../traits/elms.js\";\nimport { Mods } from \"../traits/mods.js\";\nimport { Icon } from \"./icon.js\";\nlet UIElement = UIElement_1 = class UIElement extends ViewComponent {\n get parentElement() {\n return this.__parentElement;\n }\n set parentElement(parentElement) {\n this.__parentElement = parentElement;\n if (parentElement) {\n parentElement.hookStatus('beforeDestruct', () => this.destruct());\n }\n this.updateParentElement(this);\n }\n bubble(callback) {\n let parent = this.parentElement;\n while (parent) {\n callback(parent);\n parent = parent.parentElement;\n }\n return this;\n }\n updateParentElement(target) {\n this.__parentElement?.updateParentElement(target);\n return this;\n }\n /** @override */\n get(chain, obj) {\n return super.get(chain, obj) || this.getElm(chain);\n }\n /**\n * Find match parent\n */\n closest(type) {\n const c = typeof type === 'object'\n ? (pe) => pe === type\n : (pe) => Component.isInstanceOf(pe, type);\n let pe = this.__parentElement;\n while (pe) {\n if (c(pe)) {\n return pe;\n }\n if (!pe.parentElement && pe.container.parentElement) {\n pe = UIElement_1.closestElement(pe.container.parentElement, UIElement_1);\n }\n else {\n pe = pe.parentElement;\n }\n }\n return null;\n }\n /**\n * Find closest UIElement in DOM\n */\n static closestElement(node, type) {\n const elm = Dom.up(node, elm => {\n if (elm) {\n const { component } = elm;\n return component && Component.isInstanceOf(component, type);\n }\n return false;\n });\n return elm ? elm?.component : null;\n }\n /**\n * Update UI from state\n */\n update() {\n // empty\n }\n /**\n * Append container to element\n */\n appendTo(element) {\n element.appendChild(this.container);\n return this;\n }\n /**\n * Valid name only with valid chars\n */\n clearName(name) {\n return name.replace(/[^a-zA-Z0-9]/g, '_');\n }\n /**\n * Method create only box\n */\n render(options) {\n return this.j.c.div(this.componentName);\n }\n /**\n * Create main HTML container\n */\n createContainer(options) {\n const result = this.render(options);\n if (isString(result)) {\n const elm = this.parseTemplate(result);\n elm.classList.add(this.componentName);\n return elm;\n }\n return result;\n }\n parseTemplate(result) {\n return this.j.c.fromHTML(result\n .replace(/\\*([^*]+?)\\*/g, (_, name) => Icon.get(name) || '')\n .replace(/&_/g, this.componentName + '_')\n .replace(/~([^~]+?)~/g, (_, s) => this.i18n(s)));\n }\n /** @override */\n constructor(jodit, options) {\n super(jodit);\n this.name = '';\n this.__parentElement = null;\n this.mods = {};\n this.container = this.createContainer(options);\n Object.defineProperty(this.container, 'component', {\n value: this,\n configurable: true\n });\n }\n /** @override */\n destruct() {\n Dom.safeRemove(this.container);\n this.parentElement = null;\n return super.destruct();\n }\n};\nUIElement = UIElement_1 = __decorate([\n derive(Mods, Elms)\n], UIElement);\nexport { UIElement };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UIGroup_1;\nimport { Component } from \"../../component/component.js\";\nimport { component, watch } from \"../../decorators/index.js\";\nimport { Dom } from \"../../dom/dom.js\";\nimport { isArray } from \"../../helpers/index.js\";\nimport { assert } from \"../../helpers/utils/assert.js\";\nimport { UIElement } from \"../element.js\";\nlet UIGroup = UIGroup_1 = class UIGroup extends UIElement {\n className() {\n return 'UIGroup';\n }\n /**\n * All group children\n */\n get allChildren() {\n const result = [];\n const stack = [\n ...this.elements\n ];\n while (stack.length) {\n const elm = stack.shift();\n if (isArray(elm)) {\n stack.push(...elm);\n }\n else if (Component.isInstanceOf(elm, UIGroup_1)) {\n stack.push(...elm.elements);\n }\n else {\n elm && result.push(elm);\n }\n }\n return result;\n }\n /**\n * Update all children\n */\n update() {\n this.elements.forEach(elm => elm.update());\n this.setMod('size', this.buttonSize);\n }\n /**\n * Append new element into group\n */\n append(elm, distElement) {\n if (isArray(elm)) {\n elm.forEach(item => this.append(item, distElement));\n return this;\n }\n this.elements.push(elm);\n if (elm.name) {\n elm.container.classList.add(this.getFullElName(elm.name));\n }\n if (distElement) {\n const distElm = this.getElm(distElement);\n assert(distElm != null, 'Element does not exist');\n distElm.appendChild(elm.container);\n }\n else {\n this.appendChildToContainer(elm.container);\n }\n elm.parentElement = this;\n return this;\n }\n /** @override */\n afterSetMod(name, value) {\n if (this.syncMod) {\n this.elements.forEach(elm => elm.setMod(name, value));\n }\n }\n /**\n * Allow set another container for the box of all children\n */\n appendChildToContainer(childContainer) {\n this.container.appendChild(childContainer);\n }\n /**\n * Remove element from group\n */\n remove(elm) {\n const index = this.elements.indexOf(elm);\n if (index !== -1) {\n this.elements.splice(index, 1);\n Dom.safeRemove(elm.container);\n elm.parentElement = null;\n }\n return this;\n }\n /**\n * Clear group\n */\n clear() {\n this.elements.forEach(elm => elm.destruct());\n this.elements.length = 0;\n return this;\n }\n /**\n * @param elements - Items of group\n */\n constructor(jodit, elements, options) {\n super(jodit, options);\n this.options = options;\n /**\n * Synchronize mods to all children\n */\n this.syncMod = false;\n this.elements = [];\n this.buttonSize = 'middle';\n elements?.forEach(elm => elm && this.append(elm));\n if (options?.name) {\n this.name = options.name;\n }\n }\n /** @override */\n destruct() {\n this.clear();\n return super.destruct();\n }\n};\n__decorate([\n watch('buttonSize')\n], UIGroup.prototype, \"update\", null);\nUIGroup = UIGroup_1 = __decorate([\n component\n], UIGroup);\nexport { UIGroup };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * @module ui/group\n */\nimport { component } from \"../../decorators/component/component.js\";\nimport { UIElement } from \"../element.js\";\nlet UISeparator = class UISeparator extends UIElement {\n className() {\n return 'UISeparator';\n }\n};\nUISeparator = __decorate([\n component\n], UISeparator);\nexport { UISeparator };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * @module ui/group\n */\nimport { component } from \"../../decorators/component/component.js\";\nimport { UIElement } from \"../element.js\";\nlet UISpacer = class UISpacer extends UIElement {\n className() {\n return 'UISpacer';\n }\n};\nUISpacer = __decorate([\n component\n], UISpacer);\nexport { UISpacer };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isArray } from \"../../helpers/checker/is-array.js\";\n/**\n * @private\n */\nexport const isButtonGroup = (item) => {\n return isArray(item.buttons);\n};\n/**\n * @private\n */\nexport function flatButtonsSet(buttons, jodit) {\n const groups = jodit.getRegisteredButtonGroups();\n return new Set(buttons.reduce((acc, item) => {\n if (isButtonGroup(item)) {\n acc = acc.concat([\n ...item.buttons,\n ...(groups[item.group] ?? [])\n ]);\n }\n else {\n acc.push(item);\n }\n return acc;\n }, []));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { ConfigFlatten, /*isArray,*/ isString } from \"../../helpers/index.js\";\nimport { Config } from \"../../../config.js\";\n/**\n * Get control for button name\n * @private\n */\nexport function getControlType(button, controls) {\n let buttonControl;\n if (!controls) {\n controls = Config.defaultOptions.controls;\n }\n if (!isString(button)) {\n buttonControl = { name: 'empty', ...ConfigFlatten(button) };\n if (controls[buttonControl.name] !== undefined) {\n buttonControl = {\n ...ConfigFlatten(controls[buttonControl.name]),\n ...ConfigFlatten(buttonControl)\n };\n }\n }\n else {\n buttonControl = findControlType(button, controls) || {\n name: button,\n command: button,\n tooltip: button\n };\n }\n return buttonControl;\n}\n/**\n * @private\n */\nexport function findControlType(path, controls) {\n // eslint-disable-next-line prefer-const\n let [namespaceOrKey, key] = path.split(/\\./);\n let store = controls;\n if (key != null) {\n if (controls[namespaceOrKey] !== undefined) {\n store = controls[namespaceOrKey];\n }\n }\n else {\n key = namespaceOrKey;\n }\n // const list = store[key]?.list;\n return store[key]\n ? {\n name: key,\n ...ConfigFlatten(store[key])\n // list: isArray(list)\n // \t? (<Array<string>>list).reduce(\n // \t\t\t(\n // \t\t\t\tacc: IDictionary<string | number>,\n // \t\t\t\tk: string | number\n // \t\t\t) => {\n // \t\t\t\tacc[String(k)] = k;\n // \t\t\t\treturn acc;\n // \t\t\t},\n // \t\t\t{}\n // \t\t)\n // \t: list\n }\n : undefined;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isArray } from \"../../helpers/checker/is-array.js\";\nimport { ConfigProto, keys } from \"../../helpers/utils/index.js\";\nimport { Config } from \"../../../config.js\";\nimport { getControlType } from \"./get-control-type.js\";\n/**\n * @private\n */\nexport function getStrongControlTypes(items, controls) {\n const elements = isArray(items)\n ? items\n : keys(items, false).map(key => {\n const value = items[key] || {};\n return ConfigProto({ name: key }, value);\n });\n return elements.map(item => getControlType(item, controls || Config.defaultOptions.controls));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../component/component.js\";\nimport { component, hook, watch } from \"../../decorators/index.js\";\nimport { splitArray } from \"../../helpers/array/split-array.js\";\nimport { UIButton } from \"../button/button/button.js\";\nimport { UIGroup } from \"./group.js\";\nimport { UISeparator } from \"./separator.js\";\nimport { UISpacer } from \"./spacer.js\";\nimport { isButtonGroup } from \"../helpers/buttons.js\";\nimport { getControlType } from \"../helpers/get-control-type.js\";\nimport { getStrongControlTypes } from \"../helpers/get-strong-control-types.js\";\nlet UIList = class UIList extends UIGroup {\n /** @override */\n className() {\n return 'UIList';\n }\n __onChangeMode() {\n this.setMod('mode', this.mode);\n }\n constructor(jodit) {\n super(jodit);\n this.mode = 'horizontal';\n this.removeButtons = [];\n }\n /**\n * Make new group and append it in list of elements\n */\n makeGroup() {\n return new UIGroup(this.jodit);\n }\n /**\n * All buttons from list\n */\n get buttons() {\n return this.allChildren.filter(elm => Component.isInstanceOf(elm, UIButton));\n }\n /**\n * Helper for getting full plain button list\n */\n getButtonsNames() {\n return this.buttons\n .map(a => (a instanceof UIButton && a.state.name) || '')\n .filter(a => a !== '');\n }\n setRemoveButtons(removeButtons) {\n this.removeButtons = removeButtons || [];\n return this;\n }\n build(items, target = null) {\n items = splitArray(items);\n this.clear();\n let lastBtnSeparator = false;\n let line = this.makeGroup();\n this.append(line);\n line.setMod('line', true);\n let group;\n const addButton = (control) => {\n let elm = null;\n switch (control.name) {\n case '\\n':\n line = this.makeGroup();\n line.setMod('line', true);\n group = this.makeGroup();\n line.append(group);\n this.append(line);\n break;\n case '|':\n if (!lastBtnSeparator) {\n lastBtnSeparator = true;\n elm = new UISeparator(this.j);\n }\n break;\n case '---': {\n group.setMod('before-spacer', true);\n const space = new UISpacer(this.j);\n line.append(space);\n group = this.makeGroup();\n line.append(group);\n lastBtnSeparator = false;\n break;\n }\n default:\n lastBtnSeparator = false;\n switch (control.component) {\n case 'select':\n elm = this.makeSelect(control, target);\n break;\n case 'button':\n default:\n elm = this.makeButton(control, target);\n }\n }\n if (elm) {\n if (!group) {\n group = this.makeGroup();\n line.append(group);\n }\n group.append(elm);\n }\n };\n const isNotRemoved = (b) => !this.removeButtons.includes(b.name) &&\n (!b.isVisible || b.isVisible?.(this.j, b));\n items.forEach(item => {\n if (isButtonGroup(item)) {\n const buttons = item.buttons.filter(b => b);\n if (buttons.length) {\n group = this.makeGroup();\n group.setMod('separated', true).setMod('group', item.group);\n line.append(group);\n getStrongControlTypes(buttons, this.j.o.controls)\n .filter(isNotRemoved)\n .forEach(addButton);\n }\n }\n else {\n if (!group) {\n group = this.makeGroup();\n line.append(group);\n }\n const control = getControlType(item, this.j.o.controls);\n isNotRemoved(control) && addButton(control);\n }\n });\n this.update();\n return this;\n }\n makeSelect(control, target) {\n throw new Error('Not implemented behaviour');\n }\n /**\n * Create button instance\n */\n makeButton(control, target) {\n return new UIButton(this.j, {\n name: control.name\n });\n }\n};\n__decorate([\n watch('mode'),\n hook('ready')\n], UIList.prototype, \"__onChangeMode\", null);\nUIList = __decorate([\n component\n], UIList);\nexport { UIList };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { STATUSES } from \"../../../component/statuses.js\";\nimport { cache, cacheHTML, component, watch } from \"../../../decorators/index.js\";\nimport { Dom } from \"../../../dom/dom.js\";\nimport { isFunction } from \"../../../helpers/checker/is-function.js\";\nimport { isString } from \"../../../helpers/checker/is-string.js\";\nimport { assert, attr } from \"../../../helpers/utils/index.js\";\nimport { UIElement } from \"../../element.js\";\nimport { UIList } from \"../../group/list.js\";\nimport { Icon } from \"../../icon.js\";\nexport const UIButtonState = () => ({\n size: 'middle',\n type: 'button',\n role: 'button',\n name: '',\n value: '',\n variant: 'initial',\n disabled: false,\n activated: false,\n icon: {\n name: 'empty',\n fill: '',\n iconURL: ''\n },\n tooltip: '',\n text: '',\n tabIndex: undefined\n});\nlet UIButton = class UIButton extends UIElement {\n /** @override */\n className() {\n return 'UIButton';\n }\n /**\n * Set state\n */\n setState(state) {\n Object.assign(this.state, state);\n return this;\n }\n /**\n * DOM container for text content\n */\n get text() {\n const text = this.getElm('text');\n assert(text, 'Text element not found');\n return text;\n }\n /**\n * DOM container for icon\n */\n get icon() {\n const icon = this.getElm('icon');\n assert(icon, 'Icon element not found');\n return icon;\n }\n onChangeSize() {\n this.setMod('size', this.state.size);\n }\n onChangeType() {\n attr(this.container, 'type', this.state.type);\n }\n onChangeRole() {\n attr(this.container, 'role', this.state.role);\n }\n /**\n * Set size from a parent list\n */\n updateSize() {\n const pe = this.closest(UIList);\n if (pe) {\n this.state.size = pe.buttonSize;\n return;\n }\n }\n onChangeStatus() {\n this.setMod('variant', this.state.variant);\n }\n onChangeText() {\n this.text.textContent = this.jodit.i18n(this.state.text);\n }\n onChangeTextSetMode() {\n this.setMod('text-icons', Boolean(this.state.text.trim().length));\n }\n onChangeDisabled() {\n attr(this.container, 'disabled', this.state.disabled || null);\n }\n onChangeActivated() {\n attr(this.container, 'aria-pressed', this.state.activated);\n }\n onChangeName() {\n this.container.classList.add(`${this.componentName}_${this.clearName(this.state.name)}`);\n this.name = this.state.name;\n attr(this.container, 'data-ref', this.state.name);\n attr(this.container, 'ref', this.state.name);\n }\n onChangeTooltip() {\n if (this.get('j.o.useNativeTooltip')) {\n attr(this.container, 'title', this.state.tooltip);\n }\n attr(this.container, 'aria-label', this.state.tooltip);\n }\n onChangeTabIndex() {\n attr(this.container, 'tabindex', this.state.tabIndex);\n }\n onChangeIcon() {\n const textIcons = this.get('j.o.textIcons');\n if (textIcons === true ||\n (isFunction(textIcons) && textIcons(this.state.name))) {\n return;\n }\n Dom.detach(this.icon);\n const iconElement = Icon.makeIcon(this.j, this.state.icon);\n iconElement && this.icon.appendChild(iconElement);\n }\n /**\n * Set focus on an element\n */\n focus() {\n this.container.focus();\n }\n /**\n * Element has focus\n */\n isFocused() {\n const { activeElement } = this.od;\n return Boolean(activeElement && Dom.isOrContains(this.container, activeElement));\n }\n /** @override */\n createContainer() {\n const cn = this.componentName;\n const button = this.j.c.element('button', {\n class: cn,\n type: 'button',\n role: 'button',\n ariaPressed: false\n });\n const icon = this.j.c.span(cn + '__icon');\n const text = this.j.c.span(cn + '__text');\n button.appendChild(icon);\n button.appendChild(text);\n return button;\n }\n constructor(jodit, state) {\n super(jodit);\n /**\n * Marker for buttons\n */\n this.isButton = true;\n this.state = UIButtonState();\n this.actionHandlers = [];\n this.button = this.container;\n this.updateSize();\n this.onChangeSize();\n this.onChangeStatus();\n if (state) {\n this.hookStatus(STATUSES.ready, () => {\n this.setState(state);\n });\n }\n }\n destruct() {\n this.j.e.off(this.container);\n return super.destruct();\n }\n /**\n * Add action handler\n */\n onAction(callback) {\n this.actionHandlers.push(callback);\n return this;\n }\n /**\n * Fire all click handlers\n */\n __onActionFire(e) {\n e.buffer = {\n actionTrigger: this\n };\n this.actionHandlers.forEach(callback => callback.call(this, e));\n }\n};\n__decorate([\n cache\n], UIButton.prototype, \"text\", null);\n__decorate([\n cache\n], UIButton.prototype, \"icon\", null);\n__decorate([\n watch('state.size', { immediately: false })\n], UIButton.prototype, \"onChangeSize\", null);\n__decorate([\n watch('state.type', { immediately: false })\n], UIButton.prototype, \"onChangeType\", null);\n__decorate([\n watch('state.role', { immediately: false })\n], UIButton.prototype, \"onChangeRole\", null);\n__decorate([\n watch('parentElement')\n], UIButton.prototype, \"updateSize\", null);\n__decorate([\n watch('state.variant', { immediately: false })\n], UIButton.prototype, \"onChangeStatus\", null);\n__decorate([\n watch('state.text', { immediately: false })\n], UIButton.prototype, \"onChangeText\", null);\n__decorate([\n watch('state.text', { immediately: false })\n], UIButton.prototype, \"onChangeTextSetMode\", null);\n__decorate([\n watch('state.disabled')\n], UIButton.prototype, \"onChangeDisabled\", null);\n__decorate([\n watch('state.activated')\n], UIButton.prototype, \"onChangeActivated\", null);\n__decorate([\n watch('state.name', { immediately: false })\n], UIButton.prototype, \"onChangeName\", null);\n__decorate([\n watch('state.tooltip', { immediately: false })\n], UIButton.prototype, \"onChangeTooltip\", null);\n__decorate([\n watch('state.tabIndex', { immediately: false })\n], UIButton.prototype, \"onChangeTabIndex\", null);\n__decorate([\n watch('state.icon', { immediately: false })\n], UIButton.prototype, \"onChangeIcon\", null);\n__decorate([\n cacheHTML\n], UIButton.prototype, \"createContainer\", null);\n__decorate([\n watch('button:click')\n], UIButton.prototype, \"__onActionFire\", null);\nUIButton = __decorate([\n component\n], UIButton);\nexport { UIButton };\nexport function Button(jodit, stateOrText, text, variant) {\n const button = new UIButton(jodit);\n button.state.tabIndex = jodit.o.allowTabNavigation ? 0 : -1;\n if (isString(stateOrText)) {\n button.state.icon.name = stateOrText;\n button.state.name = stateOrText;\n if (variant) {\n button.state.variant = variant;\n }\n if (text) {\n button.state.text = text;\n }\n }\n else {\n button.setState(stateOrText);\n }\n return button;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../../decorators/component/component.js\";\nimport { assert } from \"../../../helpers/utils/assert.js\";\nimport { UIButton } from \"../button/button.js\";\nimport { UIGroup } from \"../../group/group.js\";\nlet UIButtonGroup = class UIButtonGroup extends UIGroup {\n /** @override */\n className() {\n return 'UIButtonGroup';\n }\n /** @override */\n render(options) {\n return `<div>\n\t\t\t<div class=\"&__label\">~${options.label}~</div>\n\t\t\t<div class=\"&__options\"></div>\n\t\t</div>`;\n }\n /** @override */\n appendChildToContainer(childContainer) {\n const options = this.getElm('options');\n assert(options != null, 'Options does not exist');\n options.appendChild(childContainer);\n }\n constructor(jodit, options = {\n radio: true\n }) {\n super(jodit, options.options?.map(opt => {\n const btn = new UIButton(jodit, {\n text: opt.text,\n value: opt.value,\n variant: 'primary'\n });\n btn.onAction(() => {\n this.select(opt.value);\n });\n return btn;\n }), options);\n this.options = options;\n this.select(options.value ?? 0);\n }\n select(indexOrValue) {\n this.elements.forEach((elm, index) => {\n if (index === indexOrValue || elm.state.value === indexOrValue) {\n elm.state.activated = true;\n }\n else if (this.options.radio) {\n elm.state.activated = false;\n }\n });\n const result = this.elements\n .filter(elm => elm.state.activated)\n .map(elm => ({\n text: elm.state.text,\n value: elm.state.value\n }));\n this.jodit.e.fire(this, 'select', result);\n this.options.onChange?.(result);\n }\n};\nUIButtonGroup = __decorate([\n component\n], UIButtonGroup);\nexport { UIButtonGroup };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UITooltip_1;\nimport { STATUSES } from \"../../../component/index.js\";\nimport { autobind, component } from \"../../../decorators/index.js\";\nimport { Dom } from \"../../../dom/index.js\";\nimport { getContainer } from \"../../../global.js\";\nimport { position } from \"../../../helpers/size/position.js\";\nimport { attr, css } from \"../../../helpers/utils/index.js\";\nimport { UIElement } from \"../../element.js\";\nconst WINDOW_EVENTS_ON_HIDE = [\n 'scroll.tooltip',\n 'joditCloseDialog',\n 'mouseleave.tooltip'\n];\nconst JODIT_EVENTS_ON_HIDE = [\n 'escape.tooltip',\n 'change.tooltip',\n 'changePlace.tooltip',\n 'afterOpenPopup.tooltip',\n 'hidePopup.tooltip',\n 'closeAllPopups.tooltip'\n];\nlet UITooltip = UITooltip_1 = class UITooltip extends UIElement {\n className() {\n return 'UITooltip';\n }\n render() {\n return '<div><div class=\"&__content\"></div></div>';\n }\n constructor(view) {\n super(view);\n this.__isOpened = false;\n this.__listenClose = false;\n this.__currentTarget = null;\n this.__delayShowTimeout = 0;\n this.__hideTimeout = 0;\n if (!view.o.textIcons &&\n view.o.showTooltip &&\n !view.o.useNativeTooltip) {\n this.j.e.on('getContainer', (box) => {\n this.__onAttach(box);\n });\n view.hookStatus(STATUSES.ready, () => {\n this.__onAttach(this.j.container);\n });\n }\n }\n __onAttach(container) {\n // TODO Move it inside __show method. Now it is here because testcase failed with capturing\n getContainer(this.j, UITooltip_1).appendChild(this.container);\n this.j.e.on(container, 'mouseenter.tooltip', this.__onMouseEnter, {\n capture: true\n });\n }\n __addListenersOnEnter() {\n if (this.__listenClose) {\n return;\n }\n this.__listenClose = true;\n const view = this.j;\n view.e\n .on(view.ow, WINDOW_EVENTS_ON_HIDE, this.__hide)\n .on(JODIT_EVENTS_ON_HIDE, this.__hide)\n .on(view.container, 'mouseleave.tooltip', this.__onMouseLeave, {\n capture: true\n });\n }\n __removeListenersOnLeave() {\n if (!this.__listenClose) {\n return;\n }\n this.__listenClose = false;\n const view = this.j;\n view.e\n .off(view.ow, WINDOW_EVENTS_ON_HIDE, this.__hide)\n .off(JODIT_EVENTS_ON_HIDE, this.__hide)\n .off(view.container, 'mouseleave.tooltip', this.__onMouseLeave);\n }\n __onMouseLeave(e) {\n if (this.__currentTarget === e.target) {\n this.__hideDelay();\n this.__currentTarget = null;\n }\n }\n __onMouseEnter(e) {\n if (!Dom.isHTMLElement(e.target)) {\n return;\n }\n const tooltip = attr(e.target, 'aria-label');\n if (!tooltip) {\n return;\n }\n const disabled = Boolean(attr(e.target, 'disabled'));\n if (disabled) {\n return;\n }\n const isOwn = e.target.className.includes('jodit');\n if (!isOwn) {\n return;\n }\n this.__currentTarget = e.target;\n const target = e.target;\n this.__open(() => {\n const pos = position(target);\n return {\n x: pos.left + pos.width / 2,\n y: pos.top + pos.height\n };\n }, tooltip);\n }\n __open(getPoint, content) {\n this.__addListenersOnEnter();\n this.__isOpened = true;\n this.j.async.clearTimeout(this.__hideTimeout);\n this.j.async.clearTimeout(this.__delayShowTimeout);\n const to = this.j.o.showTooltipDelay || this.j.defaultTimeout;\n if (!to) {\n this.__show(getPoint, content);\n return;\n }\n this.__delayShowTimeout = this.j.async.setTimeout(() => this.__show(getPoint, content), to);\n }\n __show(getPoint, content) {\n this.setMod('visible', true);\n this.getElm('content').innerHTML = content;\n const point = getPoint();\n css(this.container, {\n left: point.x,\n top: point.y\n });\n }\n __hide() {\n this.j.async.clearTimeout(this.__delayShowTimeout);\n this.j.async.clearTimeout(this.__hideTimeout);\n this.__removeListenersOnLeave();\n if (this.__isOpened) {\n this.__isOpened = false;\n this.setMod('visible', false);\n this.getElm('content').innerHTML = '';\n css(this.container, {\n left: -5000\n });\n }\n }\n __hideDelay() {\n this.j.async.clearTimeout(this.__delayShowTimeout);\n this.j.async.clearTimeout(this.__hideTimeout);\n if (!this.__isOpened) {\n return;\n }\n this.__hideTimeout = this.async.setTimeout(this.__hide, this.j.defaultTimeout);\n }\n destruct() {\n this.j.e.off(this.j.container, 'mouseenter.tooltip', this.__onMouseEnter);\n this.__hide();\n super.destruct();\n }\n};\n__decorate([\n autobind\n], UITooltip.prototype, \"__onMouseLeave\", null);\n__decorate([\n autobind\n], UITooltip.prototype, \"__onMouseEnter\", null);\n__decorate([\n autobind\n], UITooltip.prototype, \"__hide\", null);\n__decorate([\n autobind\n], UITooltip.prototype, \"__hideDelay\", null);\nUITooltip = UITooltip_1 = __decorate([\n component\n], UITooltip);\nexport { UITooltip };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../../decorators/component/component.js\";\nimport { attr } from \"../../../helpers/utils/index.js\";\nimport { UIGroup } from \"../../group/group.js\";\nlet UIBlock = class UIBlock extends UIGroup {\n /** @override */\n className() {\n return 'UIBlock';\n }\n constructor(jodit, elements, options = {\n align: 'left'\n }) {\n super(jodit, elements);\n this.options = options;\n this.setMod('align', this.options.align || 'left');\n this.setMod('width', this.options.width || '');\n this.options.mod && this.setMod(this.options.mod, true);\n this.options.className &&\n this.container.classList.add(this.options.className);\n attr(this.container, 'data-ref', options.ref);\n attr(this.container, 'ref', options.ref);\n }\n};\nUIBlock = __decorate([\n component\n], UIBlock);\nexport { UIBlock };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isURL } from \"../../../helpers/checker/is-url.js\";\nimport { trim } from \"../../../helpers/string/trim.js\";\n/**\n * Input is required\n */\nexport const required = function (input) {\n if (!trim(input.value).length) {\n input.error = 'Please fill out this field';\n return false;\n }\n return true;\n};\n/**\n * Input value should be valid URL\n */\nexport const url = function (input) {\n if (!isURL(trim(input.value))) {\n input.error = 'Please enter a web address';\n return false;\n }\n return true;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { trim } from \"../../../helpers/string/trim.js\";\n/**\n * Select is required\n */\nexport const required = function (select) {\n if (!trim(select.value).length) {\n select.error = 'Please fill out this field';\n return false;\n }\n return true;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UIInput_1;\nimport { autobind, component, debounce, watch } from \"../../../../decorators/index.js\";\nimport { Dom } from \"../../../../dom/dom.js\";\nimport { toArray } from \"../../../../helpers/array/to-array.js\";\nimport { attr } from \"../../../../helpers/utils/index.js\";\nimport { UIElement } from \"../../../element.js\";\nimport { inputValidators } from \"../../validators/index.js\";\nimport { Icon } from \"../../../icon.js\";\nlet UIInput = UIInput_1 = class UIInput extends UIElement {\n /** @override */\n className() {\n return 'UIInput';\n }\n onChangeClear() {\n if (this.state.clearButton) {\n Dom.after(this.nativeInput, this.clearButton);\n }\n else {\n Dom.safeRemove(this.clearButton);\n }\n }\n onChangeClassName(ignore, oldClassName) {\n oldClassName && this.container.classList.remove(oldClassName);\n this.state.className &&\n this.container.classList.add(this.state.className);\n }\n onChangeState() {\n this.name = this.state.name;\n const input = this.nativeInput, { name, icon, type, ref, required, placeholder, autocomplete, label } = this.state;\n attr(input, 'name', name);\n attr(input, 'type', type);\n attr(input, 'data-ref', ref || name);\n attr(input, 'ref', ref || name);\n attr(input, 'required', required || null);\n attr(input, 'autocomplete', !autocomplete ? 'off' : null);\n attr(input, 'placeholder', placeholder ? this.j.i18n(placeholder) : '');\n if (icon && Icon.exists(icon)) {\n Dom.before(input, this.icon);\n this.icon.innerHTML = Icon.get(icon);\n }\n else {\n Dom.safeRemove(this.icon);\n }\n if (label) {\n Dom.before(this.wrapper, this.label);\n this.label.innerText = this.j.i18n(label);\n }\n else {\n Dom.safeRemove(this.label);\n }\n this.updateValidators();\n }\n updateValidators() {\n this.validators.clear();\n if (this.state.required) {\n this.validators.add(inputValidators.required);\n }\n this.state.validators?.forEach(name => {\n const validator = inputValidators[name];\n validator && this.validators.add(validator);\n });\n }\n set error(value) {\n this.setMod('has-error', Boolean(value));\n if (!value) {\n Dom.safeRemove(this.__errorBox);\n }\n else {\n this.__errorBox.innerText = this.j.i18n(value, this.j.i18n(this.state.label || ''));\n this.container.appendChild(this.__errorBox);\n }\n }\n get value() {\n return this.nativeInput.value;\n }\n set value(value) {\n if (this.value !== value) {\n this.nativeInput.value = value;\n this.onChangeValue();\n }\n }\n /**\n * Call on every state value changed\n */\n onChangeStateValue() {\n const value = this.state.value.toString();\n if (value !== this.value) {\n this.value = value;\n }\n }\n /**\n * Call on every native value changed\n */\n onChangeValue() {\n const { value } = this;\n if (this.state.value !== value) {\n this.state.value = value;\n this.j.e.fire(this, 'change', value);\n this.state.onChange?.(value);\n }\n }\n validate() {\n this.error = '';\n return toArray(this.validators).every(validator => validator(this));\n }\n /** @override **/\n createContainer(options) {\n const container = super.createContainer();\n this.wrapper = this.j.c.div(this.getFullElName('wrapper'));\n if (!this.nativeInput) {\n this.nativeInput = this.createNativeInput();\n }\n const { nativeInput } = this;\n nativeInput.classList.add(this.getFullElName('input'));\n this.wrapper.appendChild(nativeInput);\n container.appendChild(this.wrapper);\n attr(nativeInput, 'dir', this.j.o.direction || 'auto');\n return container;\n }\n /**\n * Create native input element\n */\n createNativeInput(options) {\n return this.j.create.element('input');\n }\n /** @override **/\n constructor(jodit, options) {\n super(jodit, options);\n this.label = this.j.c.span(this.getFullElName('label'));\n this.icon = this.j.c.span(this.getFullElName('icon'));\n this.clearButton = this.j.c.span(this.getFullElName('clear'), Icon.get('cancel'));\n this.state = { ...UIInput_1.defaultState };\n this.__errorBox = this.j.c.span(this.getFullElName('error'));\n this.validators = new Set([]);\n if (options?.value !== undefined) {\n options.value = options.value.toString();\n }\n Object.assign(this.state, options);\n if (this.state.clearButton !== undefined) {\n this.j.e\n .on(this.clearButton, 'click', (e) => {\n e.preventDefault();\n this.nativeInput.value = '';\n this.j.e.fire(this.nativeInput, 'input');\n this.focus();\n })\n .on(this.nativeInput, 'input', () => {\n this.state.clearButton = Boolean(this.value.length);\n });\n this.state.clearButton = Boolean(this.value.length);\n }\n this.j.e\n .on(this.nativeInput, 'focus blur', () => {\n this.onChangeFocus();\n })\n .on(this.nativeInput, 'input change', this.onChangeValue);\n this.onChangeState();\n this.onChangeClassName();\n this.onChangeStateValue();\n }\n focus() {\n this.nativeInput.focus();\n }\n get isFocused() {\n return this.nativeInput === this.j.od.activeElement;\n }\n /**\n * Set `focused` mod on change focus\n */\n onChangeFocus() {\n this.setMod('focused', this.isFocused);\n }\n};\nUIInput.defaultState = {\n className: '',\n autocomplete: true,\n name: '',\n value: '',\n icon: '',\n label: '',\n ref: '',\n type: 'text',\n placeholder: '',\n required: false,\n validators: []\n};\n__decorate([\n watch('state.clearButton')\n], UIInput.prototype, \"onChangeClear\", null);\n__decorate([\n watch('state.className')\n], UIInput.prototype, \"onChangeClassName\", null);\n__decorate([\n watch([\n 'state.name',\n 'state.type',\n 'state.label',\n 'state.placeholder',\n 'state.autocomplete',\n 'state.icon'\n ], { immediately: false }),\n debounce()\n], UIInput.prototype, \"onChangeState\", null);\n__decorate([\n watch('state.value')\n], UIInput.prototype, \"onChangeStateValue\", null);\n__decorate([\n autobind\n], UIInput.prototype, \"onChangeValue\", null);\nUIInput = UIInput_1 = __decorate([\n component\n], UIInput);\nexport { UIInput };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UISelect_1;\nimport { component } from \"../../../../decorators/component/component.js\";\nimport { attr } from \"../../../../helpers/utils/attr.js\";\nimport { UIInput } from \"../input/input.js\";\nimport { inputValidators, selectValidators } from \"../../validators/index.js\";\nlet UISelect = UISelect_1 = class UISelect extends UIInput {\n /** @override */\n className() {\n return 'UISelect';\n }\n /** @override **/\n createContainer(state) {\n const container = super.createContainer(state);\n const { j } = this, { nativeInput } = this;\n const opt = () => j.create.element('option');\n if (state.placeholder !== undefined) {\n const option = opt();\n option.value = '';\n option.text = j.i18n(state.placeholder);\n nativeInput.add(option);\n }\n state.options?.forEach(element => {\n const option = opt();\n option.value = element.value.toString();\n option.text = j.i18n(element.text);\n nativeInput.add(option);\n });\n if (state.size && state.size > 0) {\n attr(nativeInput, 'size', state.size);\n }\n if (state.multiple) {\n attr(nativeInput, 'multiple', '');\n }\n return container;\n }\n /** @override **/\n createNativeInput() {\n return this.j.create.element('select');\n }\n /** @override **/\n updateValidators() {\n super.updateValidators();\n if (this.state.required) {\n this.validators.delete(inputValidators.required);\n this.validators.add(selectValidators.required);\n }\n }\n constructor(jodit, state) {\n super(jodit, state);\n /** @override */\n this.state = { ...UISelect_1.defaultState };\n Object.assign(this.state, state);\n }\n};\n/** @override */\nUISelect.defaultState = {\n ...UIInput.defaultState,\n options: [],\n size: 1,\n multiple: false\n};\nUISelect = UISelect_1 = __decorate([\n component\n], UISelect);\nexport { UISelect };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../component/component.js\";\nimport { component } from \"../../decorators/component/component.js\";\nimport { attr } from \"../../helpers/utils/index.js\";\nimport { UIInput } from \"./inputs/input/input.js\";\nimport { UISelect } from \"./inputs/select/select.js\";\nimport { UIGroup } from \"../group/group.js\";\nlet UIForm = class UIForm extends UIGroup {\n /** @override */\n className() {\n return 'UIForm';\n }\n submit() {\n this.j.e.fire(this.container, 'submit');\n }\n validate() {\n const inputs = this.allChildren.filter(elm => Component.isInstanceOf(elm, UIInput));\n for (const input of inputs) {\n if (!input.validate()) {\n return false;\n }\n }\n const selects = this.allChildren.filter(elm => Component.isInstanceOf(elm, UISelect));\n for (const select of selects) {\n if (!select.validate()) {\n return false;\n }\n }\n return true;\n }\n onSubmit(handler) {\n this.j.e.on(this.container, 'submit', () => {\n const inputs = this.allChildren.filter(elm => Component.isInstanceOf(elm, UIInput));\n if (!this.validate()) {\n return false;\n }\n handler(inputs.reduce((res, item) => {\n res[item.state.name] = item.value;\n return res;\n }, {}));\n return false;\n });\n return this;\n }\n /** @override */\n createContainer() {\n const form = this.j.c.element('form');\n form.classList.add(this.componentName);\n attr(form, 'dir', this.j.o.direction || 'auto');\n return form;\n }\n constructor(...args) {\n super(...args);\n if (this.options?.className) {\n this.container.classList.add(this.options?.className);\n }\n }\n};\nUIForm = __decorate([\n component\n], UIForm);\nexport { UIForm };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UITextArea_1;\nimport { watch } from \"../../../../decorators/index.js\";\nimport { component } from \"../../../../decorators/component/component.js\";\nimport { UIInput } from \"../input/input.js\";\nlet UITextArea = UITextArea_1 = class UITextArea extends UIInput {\n /** @override */\n className() {\n return 'UITextArea';\n }\n createNativeInput(options) {\n return this.j.create.element('textarea');\n }\n constructor(jodit, state) {\n super(jodit, state);\n /** @override */\n this.state = { ...UITextArea_1.defaultState };\n Object.assign(this.state, state);\n if (this.state.resizable === false) {\n this.nativeInput.style.resize = 'none';\n }\n }\n onChangeStateSize() {\n const { size, resizable } = this.state;\n this.nativeInput.style.resize = resizable ? 'auto' : 'none';\n this.nativeInput.rows = size ?? 5;\n }\n};\n/** @override */\nUITextArea.defaultState = {\n ...UIInput.defaultState,\n size: 5,\n resizable: true\n};\n__decorate([\n watch(['state.size', 'state.resizable'])\n], UITextArea.prototype, \"onChangeStateSize\", null);\nUITextArea = UITextArea_1 = __decorate([\n component\n], UITextArea);\nexport { UITextArea };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar UICheckbox_1;\nimport { component, hook, watch } from \"../../../../decorators/index.js\";\nimport { Dom } from \"../../../../dom/dom.js\";\nimport { UIInput } from \"../input/input.js\";\nlet UICheckbox = UICheckbox_1 = class UICheckbox extends UIInput {\n /** @override */\n className() {\n return 'UICheckbox';\n }\n /** @override */\n render() {\n return this.j.c.element('label', {\n className: this.componentName\n });\n }\n /** @override **/\n constructor(jodit, options) {\n super(jodit, { ...options, type: 'checkbox' });\n /** @override */\n this.state = { ...UICheckbox_1.defaultState };\n Object.assign(this.state, options);\n }\n onChangeChecked() {\n this.value = this.state.checked.toString();\n this.nativeInput.checked = this.state.checked;\n this.setMod('checked', this.state.checked);\n }\n onChangeNativeCheckBox() {\n this.state.checked = this.nativeInput.checked;\n }\n onChangeSwitch() {\n this.setMod('switch', this.state.switch);\n let slider = this.getElm('switch-slider');\n if (this.state.switch) {\n if (!slider) {\n slider = this.j.c.div(this.getFullElName('switch-slider'));\n }\n Dom.after(this.nativeInput, slider);\n }\n else {\n Dom.safeRemove(slider);\n }\n }\n};\n/** @override */\nUICheckbox.defaultState = {\n ...UIInput.defaultState,\n checked: false,\n switch: false\n};\n__decorate([\n watch('state.checked'),\n hook('ready')\n], UICheckbox.prototype, \"onChangeChecked\", null);\n__decorate([\n watch('nativeInput:change')\n], UICheckbox.prototype, \"onChangeNativeCheckBox\", null);\n__decorate([\n watch('state.switch'),\n hook('ready')\n], UICheckbox.prototype, \"onChangeSwitch\", null);\nUICheckbox = UICheckbox_1 = __decorate([\n component\n], UICheckbox);\nexport { UICheckbox };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../../../decorators/component/component.js\";\nimport { UIButton } from \"../../../button/button/button.js\";\nimport { UIInput } from \"../input/input.js\";\nlet UIFileInput = class UIFileInput extends UIInput {\n /** @override */\n className() {\n return 'UIFileInput';\n }\n createContainer(options) {\n this.button = new UIButton(this.j, {\n icon: {\n name: 'plus'\n }\n });\n const { container } = this.button;\n if (!this.nativeInput) {\n this.nativeInput = this.createNativeInput(options);\n }\n const { nativeInput } = this;\n nativeInput.classList.add(this.getFullElName('input'));\n container.classList.add(this.componentName);\n container.appendChild(nativeInput);\n return container;\n }\n createNativeInput(options) {\n return this.j.create.fromHTML(`<input\n\t\t\ttype=\"file\"\n\t\t\taccept=\"${options.onlyImages ? 'image/*' : '*'}\"\n\t\t\ttabindex=\"-1\"\n\t\t\tdir=\"auto\"\n\t\t\tmultiple=\"\"\n\t\t/>`);\n }\n constructor(jodit, options) {\n super(jodit, {\n type: 'file',\n ...options\n });\n this.state = {\n ...UIInput.defaultState,\n type: 'file',\n onlyImages: true\n };\n }\n};\nUIFileInput = __decorate([\n component\n], UIFileInput);\nexport { UIFileInput };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../component/component.js\";\nimport { autobind, throttle } from \"../../decorators/index.js\";\nimport { Dom } from \"../../dom/dom.js\";\nimport { eventEmitter, getContainer } from \"../../global.js\";\nimport { attr, css, isString, kebabCase, markOwner, position, ucfirst } from \"../../helpers/index.js\";\nimport { assert } from \"../../helpers/utils/assert.js\";\nimport { UIElement } from \"../element.js\";\nimport { UIGroup } from \"../group/group.js\";\nconst EVENTS_FOR_AUTOCLOSE = [\n 'escape',\n 'cut',\n 'delete',\n 'backSpaceAfterDelete',\n 'beforeCommandDelete'\n];\nexport class Popup extends UIGroup {\n className() {\n return 'Popup';\n }\n appendChildToContainer(childContainer) {\n const content = this.getElm('content');\n assert(content, 'Content element should exist');\n content.appendChild(childContainer);\n }\n updateParentElement(target) {\n if (target !== this && Component.isInstanceOf(target, Popup)) {\n this.__childrenPopups.forEach(popup => {\n if (!target.closest(popup) && popup.isOpened) {\n popup.close();\n }\n });\n if (!this.__childrenPopups.has(target)) {\n this.j.e.on(target, 'beforeClose', () => {\n this.__childrenPopups.delete(target);\n });\n }\n this.__childrenPopups.add(target);\n }\n return super.updateParentElement(target);\n }\n /**\n * Set popup content\n */\n setContent(content) {\n if (this.allChildren.length) {\n throw new Error('Remove children');\n }\n if (Component.isInstanceOf(content, UIElement)) {\n this.append(content);\n }\n else {\n const elm = isString(content)\n ? this.j.c.fromHTML(content)\n : content;\n this.appendChildToContainer(elm);\n }\n this.updatePosition();\n return this;\n }\n /**\n * Open popup near with some bound\n */\n open(getBound, keepPosition = false, parentContainer) {\n markOwner(this.jodit, this.container);\n this.container.classList.add(`jodit_theme_${this.jodit.o.theme}`);\n this.__calculateZIndex();\n this.isOpened = true;\n this.__addGlobalListeners();\n this.__targetBound = !keepPosition\n ? getBound\n : this.getKeepBound(getBound);\n if (parentContainer) {\n parentContainer.appendChild(this.container);\n }\n else {\n const popupContainer = getContainer(this.jodit, Popup);\n if (parentContainer !== this.container.parentElement) {\n popupContainer.appendChild(this.container);\n }\n }\n this.updatePosition();\n this.j.e.fire(this, 'afterOpen');\n this.j.e.fire('afterOpenPopup', this);\n return this;\n }\n __calculateZIndex() {\n if (this.container.style.zIndex) {\n return;\n }\n const checkView = (view) => {\n const zIndex = view.container.style.zIndex || view.o.zIndex;\n if (zIndex) {\n this.setZIndex(1 + parseInt(zIndex.toString(), 10));\n return true;\n }\n return false;\n };\n const { j } = this;\n if (checkView(j)) {\n return;\n }\n let pe = this.parentElement;\n while (pe) {\n if (checkView(pe.j)) {\n return;\n }\n if (pe.container.style.zIndex) {\n this.setZIndex(1 + parseInt(pe.container.style.zIndex.toString(), 10));\n return;\n }\n if (!pe.parentElement && pe.container.parentElement) {\n const elm = UIElement.closestElement(pe.container.parentElement, UIElement);\n if (elm) {\n pe = elm;\n continue;\n }\n }\n pe = pe.parentElement;\n }\n }\n /**\n * Calculate static bound for point\n */\n getKeepBound(getBound) {\n const oldBound = getBound();\n const elmUnderCursor = this.od.elementFromPoint(oldBound.left, oldBound.top);\n if (!elmUnderCursor) {\n return getBound;\n }\n const element = Dom.isHTMLElement(elmUnderCursor)\n ? elmUnderCursor\n : elmUnderCursor.parentElement;\n const oldPos = position(element, this.j);\n return () => {\n const bound = getBound();\n const newPos = position(element, this.j);\n return {\n ...bound,\n top: bound.top + (newPos.top - oldPos.top),\n left: bound.left + (newPos.left - oldPos.left)\n };\n };\n }\n /**\n * Update container position\n */\n updatePosition() {\n if (!this.isOpened) {\n return this;\n }\n const [pos, strategy] = this.__calculatePosition(this.__targetBound(), this.viewBound(), position(this.container, this.j));\n this.setMod('strategy', strategy);\n css(this.container, {\n left: pos.left,\n top: pos.top\n });\n this.__childrenPopups.forEach(popup => popup.updatePosition());\n return this;\n }\n __throttleUpdatePosition() {\n this.updatePosition();\n }\n /**\n * Calculate start point\n */\n __calculatePosition(target, view, container, defaultStrategy = this.strategy) {\n const x = {\n left: target.left,\n right: target.left - (container.width - target.width)\n }, y = {\n bottom: target.top + target.height,\n top: target.top - container.height\n };\n const list = Object.keys(x).reduce((keys, xKey) => keys.concat(Object.keys(y).map(yKey => `${xKey}${ucfirst(yKey)}`)), []);\n const getPointByStrategy = (strategy) => {\n const [xKey, yKey] = kebabCase(strategy).split('-');\n return {\n left: x[xKey],\n top: y[yKey],\n width: container.width,\n height: container.height\n };\n };\n const getMatchStrategy = (inBox) => {\n let strategy = null;\n if (Popup.boxInView(getPointByStrategy(defaultStrategy), inBox)) {\n strategy = defaultStrategy;\n }\n else {\n strategy =\n list.find((key) => {\n if (Popup.boxInView(getPointByStrategy(key), inBox)) {\n return key;\n }\n return;\n }) || null;\n }\n return strategy;\n };\n // Try to find match position inside Jodit.container\n let strategy = getMatchStrategy(position(this.j.container, this.j));\n // If not found or is not inside window view\n if (!strategy || !Popup.boxInView(getPointByStrategy(strategy), view)) {\n // Find match strategy inside window view\n strategy = getMatchStrategy(view) || strategy || defaultStrategy;\n }\n return [getPointByStrategy(strategy), strategy];\n }\n /**\n * Check if one box is inside second\n */\n static boxInView(box, view) {\n const accuracy = 2;\n return (box.top - view.top >= -accuracy &&\n box.left - view.left >= -accuracy &&\n view.top + view.height - (box.top + box.height) >= -accuracy &&\n view.left + view.width - (box.left + box.width) >= -accuracy);\n }\n /**\n * Close popup\n */\n close() {\n if (!this.isOpened) {\n return this;\n }\n this.isOpened = false;\n this.__childrenPopups.forEach(popup => popup.close());\n this.j.e.fire(this, 'beforeClose');\n this.j.e.fire('beforePopupClose', this);\n this.__removeGlobalListeners();\n Dom.safeRemove(this.container);\n return this;\n }\n /**\n * Close popup if click was in outside\n */\n __closeOnOutsideClick(e) {\n if (!this.isOpened || this.isOwnClick(e)) {\n return;\n }\n this.close();\n }\n isOwnClick(e) {\n if (!e.target) {\n return false;\n }\n const box = UIElement.closestElement(e.target, Popup);\n return Boolean(box && (this === box || box.closest(this)));\n }\n __addGlobalListeners() {\n const up = this.__throttleUpdatePosition, ow = this.ow;\n eventEmitter.on('closeAllPopups', this.close);\n if (this.smart) {\n this.j.e\n .on(EVENTS_FOR_AUTOCLOSE, this.close)\n .on('mousedown touchstart', this.__closeOnOutsideClick)\n .on(ow, 'mousedown touchstart', this.__closeOnOutsideClick);\n }\n this.j.e\n .on('closeAllPopups', this.close)\n .on('resize', up)\n .on(this.container, 'scroll mousewheel', up)\n .on(ow, 'scroll', up)\n .on(ow, 'resize', up);\n Dom.up(this.j.container, box => {\n box && this.j.e.on(box, 'scroll mousewheel', up);\n });\n }\n __removeGlobalListeners() {\n const up = this.__throttleUpdatePosition, ow = this.ow;\n eventEmitter.off('closeAllPopups', this.close);\n if (this.smart) {\n this.j.e\n .off(EVENTS_FOR_AUTOCLOSE, this.close)\n .off('mousedown touchstart', this.__closeOnOutsideClick)\n .off(ow, 'mousedown touchstart', this.__closeOnOutsideClick);\n }\n this.j.e\n .off('closeAllPopups', this.close)\n .off('resize', up)\n .off(this.container, 'scroll mousewheel', up)\n .off(ow, 'scroll', up)\n .off(ow, 'resize', up);\n if (this.j.container.isConnected) {\n Dom.up(this.j.container, box => {\n box && this.j.e.off(box, 'scroll mousewheel', up);\n });\n }\n }\n /**\n * Set ZIndex\n */\n setZIndex(index) {\n this.container.style.zIndex = index.toString();\n }\n constructor(jodit, smart = true) {\n super(jodit);\n this.smart = smart;\n this.isOpened = false;\n this.strategy = 'leftBottom';\n this.viewBound = () => ({\n left: 0,\n top: 0,\n width: this.ow.innerWidth,\n height: this.ow.innerHeight\n });\n this.__childrenPopups = new Set();\n attr(this.container, 'role', 'popup');\n }\n render() {\n return `<div>\n\t\t\t<div class=\"&__content\"></div>\n\t\t</div>`;\n }\n /** @override **/\n destruct() {\n this.close();\n return super.destruct();\n }\n}\n__decorate([\n autobind\n], Popup.prototype, \"updatePosition\", null);\n__decorate([\n throttle(10),\n autobind\n], Popup.prototype, \"__throttleUpdatePosition\", null);\n__decorate([\n autobind\n], Popup.prototype, \"close\", null);\n__decorate([\n autobind\n], Popup.prototype, \"__closeOnOutsideClick\", null);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/dom.js\";\nimport { UIElement } from \"../element.js\";\nexport class ProgressBar extends UIElement {\n /** @override */\n className() {\n return 'ProgressBar';\n }\n /** @override */\n render() {\n return '<div><div></div></div>';\n }\n /**\n * Show progress bar\n */\n show() {\n const container = this.j.workplace || this.j.container;\n container.appendChild(this.container);\n return this;\n }\n hide() {\n Dom.safeRemove(this.container);\n return this;\n }\n progress(percentage) {\n this.container.style.width = percentage.toFixed(2) + '%';\n return this;\n }\n destruct() {\n this.hide();\n return super.destruct();\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { INVISIBLE_SPACE } from \"../constants.js\";\nimport { Dom } from \"../dom/dom.js\";\nimport { asArray, attr, isFunction, isPlainObject, isString, refs } from \"../helpers/index.js\";\nimport { assert } from \"../helpers/utils/assert.js\";\nexport class Create {\n get doc() {\n // @ts-ignore - TODO it's a function\n return isFunction(this.document) ? this.document() : this.document;\n }\n constructor(document, createAttributes) {\n this.document = document;\n this.createAttributes = createAttributes;\n }\n element(tagName, childrenOrAttributes, children) {\n const elm = this.doc.createElement(tagName.toLowerCase());\n this.applyCreateAttributes(elm);\n if (childrenOrAttributes) {\n if (isPlainObject(childrenOrAttributes)) {\n attr(elm, childrenOrAttributes);\n }\n else {\n children = childrenOrAttributes;\n }\n }\n if (children) {\n asArray(children).forEach((child) => elm.appendChild(isString(child) ? this.fromHTML(child) : child));\n }\n return elm;\n }\n div(className, childrenOrAttributes, children) {\n const div = this.element('div', childrenOrAttributes, children);\n if (className) {\n div.className = className;\n }\n return div;\n }\n sandbox() {\n const iframe = this.element('iframe', { sandbox: 'allow-same-origin' });\n this.doc.body.appendChild(iframe);\n const doc = iframe.contentWindow?.document;\n assert(doc, 'iframe.contentWindow.document');\n if (!doc) {\n throw Error('Iframe error');\n }\n doc.open();\n doc.write('<!DOCTYPE html><html><head></head><body></body></html>');\n doc.close();\n return [doc.body, iframe];\n }\n span(className, childrenOrAttributes, children) {\n const span = this.element('span', childrenOrAttributes, children);\n if (className) {\n span.className = className;\n }\n return span;\n }\n a(className, childrenOrAttributes, children) {\n const a = this.element('a', childrenOrAttributes, children);\n if (className) {\n a.className = className;\n }\n return a;\n }\n /**\n * Create text node\n */\n text(value) {\n return this.doc.createTextNode(value);\n }\n /**\n * Create invisible text node\n */\n fake() {\n return this.text(INVISIBLE_SPACE);\n }\n /**\n * Create HTML Document fragment element\n */\n fragment() {\n return this.doc.createDocumentFragment();\n }\n /**\n * Create a DOM element from HTML text\n *\n // eslint-disable-next-line tsdoc/syntax\n * @param refsToggleElement - State dictionary in which you can set the visibility of some of the elements\n * ```js\n * const editor = Jodit.make('#editor');\n * editor.createInside.fromHTML(`<div>\n * <input name=\"name\" ref=\"name\"/>\n * <input name=\"email\" ref=\"email\"/>\n * </div>`, {\n * name: true,\n * email: false\n * });\n * ```\n */\n fromHTML(html, refsToggleElement) {\n const div = this.div();\n div.innerHTML = html.toString();\n const child = div.firstChild !== div.lastChild || !div.firstChild\n ? div\n : div.firstChild;\n Dom.safeRemove(child);\n if (refsToggleElement) {\n const refElements = refs(child);\n Object.keys(refsToggleElement).forEach(key => {\n const elm = refElements[key];\n if (elm && refsToggleElement[key] === false) {\n Dom.hide(elm);\n }\n });\n }\n return child;\n }\n /**\n * Apply to element `createAttributes` options\n */\n applyCreateAttributes(elm) {\n if (this.createAttributes) {\n const ca = this.createAttributes;\n if (ca && ca[elm.tagName.toLowerCase()]) {\n const attrsOpt = ca[elm.tagName.toLowerCase()];\n if (isFunction(attrsOpt)) {\n attrsOpt(elm);\n }\n else if (isPlainObject(attrsOpt)) {\n attr(elm, attrsOpt);\n }\n }\n }\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Check if user disable local storages/cookie etc.\n */\nexport const canUsePersistentStorage = (() => {\n const canUse = () => {\n const tmpKey = '___Jodit___' + Math.random().toString();\n try {\n localStorage.setItem(tmpKey, '1');\n const result = localStorage.getItem(tmpKey) === '1';\n localStorage.removeItem(tmpKey);\n return result;\n }\n catch { }\n return false;\n };\n let result;\n return () => {\n if (result === undefined) {\n result = canUse();\n }\n return result;\n };\n})();\n/**\n * Persistent storage in localStorage\n */\nexport class LocalStorageProvider {\n set(key, value) {\n try {\n const buffer = localStorage.getItem(this.rootKey);\n const json = buffer ? JSON.parse(buffer) : {};\n json[key] = value;\n localStorage.setItem(this.rootKey, JSON.stringify(json));\n }\n catch { }\n return this;\n }\n delete(key) {\n try {\n localStorage.removeItem(this.rootKey);\n }\n catch { }\n return this;\n }\n get(key) {\n try {\n const buffer = localStorage.getItem(this.rootKey);\n const json = buffer ? JSON.parse(buffer) : {};\n return json[key] !== undefined ? json[key] : null;\n }\n catch { }\n }\n exists(key) {\n return this.get(key) != null;\n }\n constructor(rootKey) {\n this.rootKey = rootKey;\n }\n clear() {\n try {\n localStorage.removeItem(this.rootKey);\n }\n catch { }\n return this;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport class MemoryStorageProvider {\n constructor() {\n this.data = new Map();\n }\n set(key, value) {\n this.data.set(key, value);\n return this;\n }\n delete(key) {\n this.data.delete(key);\n return this;\n }\n get(key) {\n return this.data.get(key);\n }\n exists(key) {\n return this.data.has(key);\n }\n clear() {\n this.data.clear();\n return this;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { camelCase } from \"../helpers/string/camel-case.js\";\nimport { canUsePersistentStorage, LocalStorageProvider } from \"./engines/local-storage-provider.js\";\nimport { MemoryStorageProvider } from \"./engines/memory-storage-provider.js\";\nexport const StorageKey = 'Jodit_';\nexport class Storage {\n set(key, value) {\n this.provider.set(camelCase(this.prefix + key), value);\n return this;\n }\n delete(key) {\n this.provider.delete(camelCase(this.prefix + key));\n return this;\n }\n get(key) {\n return this.provider.get(camelCase(this.prefix + key));\n }\n exists(key) {\n return this.provider.exists(camelCase(this.prefix + key));\n }\n clear() {\n this.provider.clear();\n return this;\n }\n constructor(provider, suffix) {\n this.provider = provider;\n this.prefix = StorageKey;\n if (suffix) {\n this.prefix += suffix;\n }\n }\n static makeStorage(persistent = false, suffix) {\n let provider;\n if (persistent && canUsePersistentStorage()) {\n provider = new LocalStorageProvider(StorageKey + suffix);\n }\n if (!provider) {\n provider = new MemoryStorageProvider();\n }\n return new Storage(provider, suffix);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../core/decorators/component/component.js\";\nimport { UIElement } from \"../../core/ui/index.js\";\nlet UIMessage = class UIMessage extends UIElement {\n className() {\n return 'UIMessage';\n }\n constructor(jodit, options) {\n super(jodit);\n this.setMod('active', true);\n this.setMod('variant', options.variant);\n this.container.textContent = options.text;\n }\n};\nUIMessage = __decorate([\n component\n], UIMessage);\nexport { UIMessage };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../core/decorators/component/component.js\";\nimport { css } from \"../../core/helpers/utils/css.js\";\nimport { UIGroup } from \"../../core/ui/group/group.js\";\nimport { UIMessage } from \"./message.js\";\n/**\n * Plugin display pop-up messages in the lower right corner of the editor\n */\nlet UIMessages = class UIMessages extends UIGroup {\n className() {\n return 'UIMessages';\n }\n constructor(jodit, __box, options = {\n defaultTimeout: 3000,\n defaultOffset: 5\n }) {\n super(jodit);\n this.__box = __box;\n this.options = options;\n this.__messages = new Set();\n }\n /**\n * Show popup info message in the lower right corner of the container\n * ```js\n * const jodit = Jodit.make('#editor');\n * jodit.info('Hello world', 3000);\n * ```\n */\n info(text, timeout) {\n this.__message(text, 'info', timeout);\n }\n /**\n * Show popup success message in the lower right corner of the container\n * ```js\n * const jodit = Jodit.make('#editor');\n * jodit.success('Hello world', 3000);\n * ```\n */\n success(text, timeout) {\n this.__message(text, 'success', timeout);\n }\n /**\n * Show popup error message in the lower right corner of the container\n * ```js\n * const jodit = Jodit.make('#editor');\n * jodit.error('Hello world', 3000);\n * ```\n */\n error(text, timeout) {\n this.__message(text, 'error', timeout);\n }\n /**\n * Show popup message in the lower right corner of the container\n * ```js\n * const jodit = Jodit.make('#editor');\n * jodit.message('Hello world', 'info', 3000);\n * ```\n */\n message(text, variant, timeout) {\n this.__message(text, variant, timeout);\n }\n __message(text, variant = 'info', timeout) {\n const key = text + ':' + variant;\n if (this.__messages.has(key)) {\n this.async.updateTimeout(key, timeout || this.options.defaultTimeout);\n return;\n }\n if (!this.__box) {\n throw new Error('Container is not defined: ' + key);\n }\n this.__box.appendChild(this.container);\n const msg = new UIMessage(this.j, { text, variant });\n this.append(msg);\n this.__calcOffsets();\n this.__messages.add(key);\n const remove = this.__getRemoveCallback(msg, key);\n this.j.e.on(msg.container, 'pointerdown', remove);\n this.async.setTimeout(remove, {\n label: key,\n timeout: timeout || this.options.defaultTimeout\n });\n }\n __getRemoveCallback(msg, key) {\n const remove = (e) => {\n e && e.preventDefault();\n if (msg.isInDestruct) {\n return;\n }\n this.async.clearTimeout(key);\n this.j.e.off(msg.container, 'pointerdown', remove);\n this.__messages.delete(key);\n msg.setMod('active', false);\n this.async.setTimeout(() => {\n this.remove(msg);\n msg.destruct();\n this.__calcOffsets();\n }, 300);\n };\n return remove;\n }\n __calcOffsets() {\n let height = 5;\n this.elements.forEach(elm => {\n css(elm.container, 'bottom', height + 'px');\n height += elm.container.offsetHeight + this.options.defaultOffset;\n });\n }\n};\nUIMessages = __decorate([\n component\n], UIMessages);\nexport { UIMessages };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar View_1;\nimport { ViewComponent } from \"../component/index.js\";\nimport { Component } from \"../component/component.js\";\nimport { STATUSES } from \"../component/statuses.js\";\nimport { APP_VERSION, BASE_PATH, ES, IS_ES_MODERN, IS_ES_NEXT } from \"../constants.js\";\nimport { Create } from \"../create/create.js\";\nimport { cache } from \"../decorators/cache/cache.js\";\nimport { derive } from \"../decorators/derive/derive.js\";\nimport { hook } from \"../decorators/hook/hook.js\";\nimport { Dom } from \"../dom/index.js\";\nimport { EventEmitter } from \"../event-emitter/index.js\";\nimport { modules } from \"../global.js\";\nimport { camelCase, ConfigProto, error, i18n, isDestructable, isFunction, isVoid } from \"../helpers/index.js\";\nimport { Storage } from \"../storage/storage.js\";\nimport { Elms } from \"../traits/elms.js\";\nimport { Mods } from \"../traits/mods.js\";\nimport { ProgressBar } from \"../ui/progress-bar/progress-bar.js\";\nimport { UIMessages } from \"../../modules/messages/messages.js\";\nlet View = View_1 = class View extends Component {\n /**\n * Get a path for loading extra staff\n */\n get basePath() {\n if (this.o.basePath) {\n return this.o.basePath;\n }\n return BASE_PATH;\n }\n /**\n * Return a default timeout period in milliseconds for some debounce or throttle functions.\n * By default, `{history.timeout}` options\n */\n get defaultTimeout() {\n return isVoid(this.o.defaultTimeout) ? 100 : this.o.defaultTimeout;\n }\n /**\n * Some extra data inside editor\n * @see copyformat plugin\n */\n get buffer() {\n return Storage.makeStorage();\n }\n get message() {\n return this.getMessageModule(this.container);\n }\n getMessageModule(container) {\n return new UIMessages(this, container);\n }\n /**\n * Container for persistent set/get value\n */\n get storage() {\n return Storage.makeStorage(true, this.id);\n }\n /**\n * Short alias for `create`\n */\n get c() {\n return this.create;\n }\n get container() {\n return this.__container;\n }\n set container(container) {\n this.__container = container;\n }\n /**\n * Short alias for `events`\n */\n get e() {\n return this.events;\n }\n /**\n * progress_bar Progress bar\n */\n get progressbar() {\n return new ProgressBar(this);\n }\n get options() {\n return this.__options;\n }\n set options(options) {\n this.__options = options;\n }\n /**\n * Short alias for options\n */\n get o() {\n return this.options;\n }\n /**\n * Internationalization method. Uses Jodit.lang object\n */\n i18n(text, ...params) {\n return i18n(text, params, this.options);\n }\n toggleFullSize(isFullSize) {\n if (isFullSize === undefined) {\n isFullSize = !this.__isFullSize;\n }\n if (isFullSize === this.__isFullSize) {\n return;\n }\n this.__isFullSize = isFullSize;\n this.e.fire('toggleFullSize', isFullSize);\n }\n /**\n * View is locked\n */\n get isLocked() {\n return this.__whoLocked !== '';\n }\n /**\n * Disable selecting\n */\n lock(name = 'any') {\n if (!this.isLocked) {\n this.__whoLocked = name;\n return true;\n }\n return false;\n }\n /**\n * Enable selecting\n */\n unlock() {\n if (this.isLocked) {\n this.__whoLocked = '';\n return true;\n }\n return false;\n }\n /**\n * View is in fullSize\n */\n get isFullSize() {\n return this.__isFullSize;\n }\n /**\n * Return current version\n */\n getVersion() {\n return View_1.version;\n }\n static getVersion() {\n return View_1.version;\n }\n /** @override */\n initOptions(options) {\n this.options = ConfigProto(options || {}, ConfigProto(this.options || {}, View_1.defaultOptions));\n }\n /**\n * Can change ownerWindow here\n */\n initOwners() {\n this.ownerWindow = this.o.ownerWindow ?? window;\n }\n /**\n * Add option's event handlers in emitter\n */\n attachEvents(options) {\n if (!options) {\n return;\n }\n const e = options?.events;\n e && Object.keys(e).forEach((key) => this.e.on(key, e[key]));\n }\n constructor(options, isJodit = false) {\n super();\n this.isJodit = isJodit;\n this.isView = true;\n this.parent = null;\n this.mods = {};\n /**\n * All created ViewComponent inside this view\n */\n this.components = new Set();\n this.OPTIONS = View_1.defaultOptions;\n this.__isFullSize = false;\n this.__whoLocked = '';\n this.isLockedNotBy = (name) => this.isLocked && this.__whoLocked !== name;\n this.__modulesInstances = new Map();\n this.id = new Date().getTime().toString();\n this.initOptions(options);\n this.initOwners();\n this.events = new EventEmitter(this.od);\n this.create = new Create(this.od);\n this.container = this.c.div(`jodit ${this.componentName}`);\n }\n getInstance(moduleNameOrConstructor, options) {\n const moduleName = isFunction(moduleNameOrConstructor)\n ? moduleNameOrConstructor.prototype.className()\n : moduleNameOrConstructor;\n const instance = this.e.fire(camelCase('getInstance_' + moduleName), options);\n if (instance) {\n return instance;\n }\n const module = isFunction(moduleNameOrConstructor)\n ? moduleNameOrConstructor\n : modules[moduleName], mi = this.__modulesInstances;\n if (!isFunction(module)) {\n throw error('Need real module name');\n }\n if (!mi.has(moduleName)) {\n const instance = module.prototype instanceof ViewComponent\n ? new module(this, options)\n : new module(options);\n this.components.add(instance);\n mi.set(moduleName, instance);\n }\n return mi.get(moduleName);\n }\n /** Add some element to box */\n addDisclaimer(elm) {\n this.container.appendChild(elm);\n }\n /**\n * Call before destruct\n */\n beforeDestruct() {\n this.e.fire(STATUSES.beforeDestruct, this);\n this.components.forEach(component => {\n if (isDestructable(component) && !component.isInDestruct) {\n component.destruct();\n }\n });\n this.components.clear();\n }\n /** @override */\n destruct() {\n if (this.isDestructed) {\n return;\n }\n this.progressbar.destruct();\n this.message.destruct();\n if (this.events) {\n this.events.destruct();\n // @ts-ignore\n this.events = undefined;\n }\n if (this.buffer) {\n this.buffer.clear();\n }\n Dom.safeRemove(this.container);\n super.destruct();\n }\n};\n// from webpack.config.js\nView.ES = ES;\nView.version = APP_VERSION;\nView.esNext = IS_ES_NEXT; // from webpack.config.js\nView.esModern = IS_ES_MODERN; // from webpack.config.js\n__decorate([\n cache\n], View.prototype, \"buffer\", null);\n__decorate([\n cache\n], View.prototype, \"message\", null);\n__decorate([\n cache\n], View.prototype, \"storage\", null);\n__decorate([\n cache\n], View.prototype, \"c\", null);\n__decorate([\n cache\n], View.prototype, \"e\", null);\n__decorate([\n cache\n], View.prototype, \"progressbar\", null);\n__decorate([\n hook(STATUSES.beforeDestruct)\n], View.prototype, \"beforeDestruct\", null);\nView = View_1 = __decorate([\n derive(Mods, Elms)\n], View);\nexport { View };\nView.defaultOptions = {\n extraButtons: [],\n cache: true,\n textIcons: false,\n namespace: '',\n removeButtons: [],\n zIndex: 100002,\n defaultTimeout: 100,\n fullsize: false,\n showTooltip: true,\n useNativeTooltip: false,\n buttons: [],\n globalFullSize: true,\n language: 'auto'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { autobind, component, debounce, hook } from \"../../../core/decorators/index.js\";\nimport { error } from \"../../../core/helpers/utils/error/error.js\";\nimport { UIList, UITooltip } from \"../../../core/ui/index.js\";\nimport { makeButton, makeSelect } from \"../factory.js\";\nlet ToolbarCollection = class ToolbarCollection extends UIList {\n /** @override */\n className() {\n return 'ToolbarCollection';\n }\n /**\n * First button in a list\n */\n get firstButton() {\n const [button] = this.buttons;\n return button || null;\n }\n makeButton(control, target = null) {\n return makeButton(this.j, control, target);\n }\n makeSelect(control, target = null) {\n return makeSelect(this.j, control, target);\n }\n /**\n * Button should be active\n */\n shouldBeActive(button) {\n return undefined;\n }\n /**\n * The Button should be disabled\n */\n shouldBeDisabled(button) {\n return undefined;\n }\n /**\n * Returns current target for button\n */\n getTarget(button) {\n return button.target || null;\n }\n __immediateUpdate() {\n if (this.isDestructed || this.j.isLocked) {\n return;\n }\n super.update();\n this.j.e.fire('afterUpdateToolbar', this);\n }\n update() {\n this.__immediateUpdate();\n }\n /**\n * Set direction\n */\n setDirection(direction) {\n this.container.style.direction = direction;\n this.container.setAttribute('dir', direction);\n }\n constructor(jodit) {\n super(jodit);\n this.__listenEvents = 'updatePlugins updateToolbar changeStack mousedown mouseup keydown change afterInit readonly afterResize ' +\n 'selectionchange changeSelection focus afterSetMode touchstart focus blur';\n this.__tooltip = new UITooltip(this.jodit);\n }\n __initEvents() {\n this.j.e\n .on(this.__listenEvents, this.update)\n .on('afterSetMode focus', this.__immediateUpdate);\n }\n hide() {\n this.container.remove();\n }\n show() {\n this.appendTo(this.j.toolbarContainer);\n }\n showInline(bound) {\n throw error('The method is not implemented for this class.');\n }\n /** @override **/\n build(items, target = null) {\n const itemsWithGroupps = this.j.e.fire('beforeToolbarBuild', items);\n if (itemsWithGroupps) {\n items = itemsWithGroupps;\n }\n super.build(items, target);\n return this;\n }\n /** @override **/\n destruct() {\n if (this.isDestructed) {\n return;\n }\n this.__tooltip?.destruct();\n this.__tooltip = null;\n this.j.e\n .off(this.__listenEvents, this.update)\n .off('afterSetMode focus', this.__immediateUpdate);\n super.destruct();\n }\n};\n__decorate([\n autobind\n], ToolbarCollection.prototype, \"__immediateUpdate\", null);\n__decorate([\n debounce(ctx => ctx.j.defaultTimeout, true)\n], ToolbarCollection.prototype, \"update\", null);\n__decorate([\n hook('ready')\n], ToolbarCollection.prototype, \"__initEvents\", null);\nToolbarCollection = __decorate([\n component\n], ToolbarCollection);\nexport { ToolbarCollection };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { STATUSES } from \"../../../core/component/statuses.js\";\nimport { autobind, cacheHTML, component, watch } from \"../../../core/decorators/index.js\";\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { assert, attr, call, camelCase, isArray, isFunction, isJoditObject, isPlainObject, isString, keys, position } from \"../../../core/helpers/index.js\";\nimport { UIButton, UIButtonState } from \"../../../core/ui/button/index.js\";\nimport { findControlType } from \"../../../core/ui/helpers/get-control-type.js\";\nimport { Icon } from \"../../../core/ui/icon.js\";\nimport { Popup } from \"../../../core/ui/popup/popup.js\";\nimport { ToolbarCollection } from \"../collection/collection.js\";\nimport { makeCollection } from \"../factory.js\";\nlet ToolbarButton = class ToolbarButton extends UIButton {\n /** @override */\n className() {\n return 'ToolbarButton';\n }\n /**\n * Get parent toolbar\n */\n get toolbar() {\n return this.closest(ToolbarCollection);\n }\n /** @override **/\n update() {\n const { control, state } = this, tc = this.closest(ToolbarCollection);\n if (!tc) {\n return;\n }\n const value = control.value?.(tc.jodit, this);\n if (value !== undefined) {\n state.value = value;\n }\n state.disabled = this.__calculateDisabledStatus(tc);\n state.activated = this.__calculateActivatedStatus(tc);\n control.update?.(tc.jodit, this);\n }\n /**\n * Calculates whether the button is active\n */\n __calculateActivatedStatus(tc) {\n if (isJoditObject(this.j) && !this.j.editorIsActive) {\n return false;\n }\n if (this.control.isActive?.(this.j, this)) {\n return true;\n }\n return Boolean(tc && tc.shouldBeActive(this));\n }\n /**\n * Calculates whether an element is blocked for the user\n */\n __calculateDisabledStatus(tc) {\n if (this.j.o.disabled) {\n return true;\n }\n if (this.j.o.readonly &&\n (!this.j.o.activeButtonsInReadOnly ||\n !this.j.o.activeButtonsInReadOnly.includes(this.control.name))) {\n return true;\n }\n if (this.control.isDisabled?.(this.j, this)) {\n return true;\n }\n return Boolean(tc && tc.shouldBeDisabled(this));\n }\n /** @override */\n onChangeActivated() {\n attr(this.button, 'aria-pressed', this.state.activated);\n super.onChangeActivated();\n }\n /** @override */\n onChangeText() {\n if (isFunction(this.control.template)) {\n this.text.innerHTML = this.control.template(this.j, this.control.name, this.j.i18n(this.state.text));\n }\n else {\n super.onChangeText();\n }\n this.setMod('text-icons', Boolean(this.text.innerText.trim().length));\n }\n /** @override */\n onChangeTabIndex() {\n attr(this.button, 'tabindex', this.state.tabIndex);\n }\n createContainer() {\n const cn = this.componentName;\n const container = this.j.c.span(cn);\n const button = super.createContainer();\n attr(container, 'role', 'listitem');\n button.classList.remove(cn);\n button.classList.add(cn + '__button');\n Object.defineProperty(button, 'component', {\n value: this\n });\n container.appendChild(button);\n const trigger = this.j.c.fromHTML(`<span role=\"trigger\" class=\"${cn}__trigger\">${Icon.get('chevron')}</span>`);\n // For caching\n button.appendChild(trigger);\n return container;\n }\n /** @override */\n focus() {\n this.container.querySelector('button')?.focus();\n }\n onChangeHasTrigger() {\n if (this.state.hasTrigger) {\n this.container.appendChild(this.trigger);\n }\n else {\n Dom.safeRemove(this.trigger);\n }\n this.setMod('with-trigger', this.state.hasTrigger || null);\n }\n /** @override */\n onChangeDisabled() {\n const disabled = this.state.disabled ? 'disabled' : null;\n attr(this.trigger, 'disabled', disabled);\n attr(this.button, 'disabled', disabled);\n attr(this.container, 'disabled', disabled);\n }\n constructor(jodit, control, target = null) {\n super(jodit);\n this.control = control;\n this.target = target;\n this.state = {\n ...UIButtonState(),\n theme: 'toolbar',\n currentValue: '',\n hasTrigger: false\n };\n this.openedPopup = null;\n const button = this.getElm('button');\n assert(button, 'Element button should exists');\n this.button = button;\n Object.defineProperty(button, 'component', {\n value: this,\n configurable: true\n });\n const trigger = this.getElm('trigger');\n assert(trigger, 'Element trigger should exists');\n this.trigger = trigger;\n trigger.remove();\n // Prevent lost focus\n jodit.e.on([this.button, this.trigger], 'mousedown', (e) => e.preventDefault());\n this.onAction(this.onClick);\n this.hookStatus(STATUSES.ready, () => {\n this.__initFromControl();\n this.update();\n });\n if (control.mods) {\n Object.keys(control.mods).forEach(mod => {\n control.mods && this.setMod(mod, control.mods[mod]);\n });\n }\n }\n /**\n * Init constant data from control\n */\n __initFromControl() {\n const { control: ctr, state } = this;\n this.updateSize();\n state.name = ctr.name;\n const { textIcons } = this.j.o;\n if (textIcons === true ||\n (isFunction(textIcons) && textIcons(ctr.name)) ||\n ctr.template) {\n state.icon = UIButtonState().icon;\n state.text = ctr.text || ctr.name;\n }\n else {\n if (ctr.iconURL) {\n state.icon.iconURL = ctr.iconURL;\n }\n else {\n const name = ctr.icon || ctr.name;\n state.icon.name =\n Icon.exists(name) || this.j.o.extraIcons?.[name]\n ? name\n : '';\n }\n if (!ctr.iconURL && !state.icon.name) {\n state.text = ctr.text || ctr.name;\n }\n }\n if (ctr.tooltip) {\n state.tooltip = this.j.i18n(isFunction(ctr.tooltip)\n ? ctr.tooltip(this.j, ctr, this)\n : ctr.tooltip);\n }\n state.hasTrigger = Boolean(ctr.list || (ctr.popup && ctr.exec));\n }\n /**\n * Click on trigger button\n */\n onTriggerClick(e) {\n if (this.openedPopup) {\n this.__closePopup();\n return;\n }\n const { control: ctr } = this;\n e.buffer = {\n actionTrigger: this\n };\n if (ctr.list) {\n return this.__openControlList(ctr);\n }\n if (isFunction(ctr.popup)) {\n const popup = this.openPopup();\n popup.parentElement = this;\n if (this.j.e.fire(camelCase(`before-${ctr.name}-open-popup`), this.target, ctr, popup) !== false) {\n const target = this.toolbar?.getTarget(this) ?? this.target ?? null;\n const elm = ctr.popup(this.j, target, this.__closePopup, this);\n if (elm) {\n popup\n .setContent(isString(elm) ? this.j.c.fromHTML(elm) : elm)\n .open(() => position(this.container), false, this.j.o.allowTabNavigation\n ? this.container\n : undefined);\n }\n }\n /**\n * Fired after the popup was opened for some control button\n */\n /**\n * Close all opened popups\n */\n this.j.e.fire(camelCase(`after-${ctr.name}-open-popup`), popup.container);\n }\n }\n /**\n * Create an open popup list\n */\n __openControlList(control) {\n const controls = this.jodit.options.controls ?? {}, getControl = (key) => findControlType(key, controls);\n const list = control.list, menu = this.openPopup(), toolbar = makeCollection(this.j);\n menu.parentElement = this;\n toolbar.parentElement = menu;\n toolbar.mode = 'vertical';\n const isListItem = (key) => isPlainObject(key) && 'title' in key && 'value' in key;\n const getButton = (key, value) => {\n if (isString(value) && getControl(value)) {\n return {\n name: value.toString(),\n ...getControl(value)\n };\n }\n if (isString(key) && getControl(key)) {\n return {\n name: key.toString(),\n ...getControl(key),\n ...(typeof value === 'object' ? value : {})\n };\n }\n if (isListItem(key)) {\n value = key.value;\n key = key.title;\n }\n const { childTemplate } = control;\n const childControl = {\n name: key.toString(),\n template: childTemplate &&\n ((j, k, v) => childTemplate(j, k, v, this)),\n exec: control.childExec\n ? (view, current, options) => control.childExec?.(view, current, {\n ...options,\n parentControl: control\n })\n : control.exec,\n data: control.data,\n command: control.command,\n isActive: control.isChildActive,\n value: control.value,\n isDisabled: control.isChildDisabled,\n mode: control.mode,\n args: [...(control.args ? control.args : []), key, value]\n };\n if (isString(value)) {\n childControl.text = value;\n }\n return childControl;\n };\n toolbar.build(isArray(list)\n ? list.map(getButton)\n : keys(list, false).map(key => getButton(key, list[key])), this.target);\n menu.setContent(toolbar).open(() => position(this.container), false, this.j.o.allowTabNavigation ? this.container : undefined);\n this.state.activated = true;\n }\n onOutsideClick(e) {\n if (!this.openedPopup) {\n return;\n }\n if (!e ||\n !Dom.isNode(e.target) ||\n (!Dom.isOrContains(this.container, e.target) &&\n !this.openedPopup.isOwnClick(e))) {\n this.__closePopup();\n }\n }\n openPopup() {\n this.__closePopup();\n this.openedPopup = new Popup(this.j, false);\n this.j.e\n .on(this.ow, 'mousedown touchstart', this.onOutsideClick)\n .on('escape closeAllPopups', this.onOutsideClick);\n return this.openedPopup;\n }\n __closePopup() {\n if (this.openedPopup) {\n this.j.e\n .off(this.ow, 'mousedown touchstart', this.onOutsideClick)\n .off('escape closeAllPopups', this.onOutsideClick);\n this.state.activated = false;\n this.openedPopup.close();\n this.openedPopup.destruct();\n this.openedPopup = null;\n }\n }\n /**\n * Click handler\n */\n onClick(originalEvent) {\n const { control: ctr } = this;\n if (isFunction(ctr.exec)) {\n const target = this.toolbar?.getTarget(this) ?? this.target ?? null;\n const result = ctr.exec(this.j, target, {\n control: ctr,\n originalEvent,\n button: this\n });\n // For memorise exec\n if (result !== false && result !== true) {\n this.j?.e?.fire('synchro');\n if (this.parentElement) {\n this.parentElement.update();\n }\n /**\n * Fired after calling `button.exec` function\n */\n this.j?.e?.fire('closeAllPopups afterExec');\n }\n if (result !== false) {\n return;\n }\n }\n if (ctr.list) {\n return this.__openControlList(ctr);\n }\n if (isFunction(ctr.popup)) {\n return this.onTriggerClick(originalEvent);\n }\n if (ctr.command || ctr.name) {\n call(isJoditObject(this.j)\n ? this.j.execCommand.bind(this.j)\n : this.j.od.execCommand.bind(this.j.od), ctr.command || ctr.name, false, ctr.args && ctr.args[0]);\n this.j.e.fire('closeAllPopups');\n }\n }\n destruct() {\n this.__closePopup();\n return super.destruct();\n }\n};\n__decorate([\n cacheHTML\n], ToolbarButton.prototype, \"createContainer\", null);\n__decorate([\n watch('state.hasTrigger', { immediately: false })\n], ToolbarButton.prototype, \"onChangeHasTrigger\", null);\n__decorate([\n watch('trigger:click')\n], ToolbarButton.prototype, \"onTriggerClick\", null);\n__decorate([\n autobind\n], ToolbarButton.prototype, \"onOutsideClick\", null);\n__decorate([\n autobind\n], ToolbarButton.prototype, \"__closePopup\", null);\nToolbarButton = __decorate([\n component\n], ToolbarButton);\nexport { ToolbarButton };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../../core/decorators/index.js\";\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { attr, isString } from \"../../../core/helpers/index.js\";\nimport { UIButton } from \"../../../core/ui/button/index.js\";\nlet ToolbarContent = class ToolbarContent extends UIButton {\n /** @override */\n className() {\n return 'ToolbarContent';\n }\n /** @override */\n update() {\n const content = this.control.getContent(this.j, this);\n if (isString(content) || content.parentNode !== this.container) {\n Dom.detach(this.container);\n this.container.appendChild(isString(content) ? this.j.create.fromHTML(content) : content);\n }\n super.update();\n }\n /** @override */\n createContainer() {\n return this.j.c.span(this.componentName);\n }\n constructor(jodit, control, target = null) {\n super(jodit);\n this.control = control;\n this.target = target;\n this.container.classList.add(`${this.componentName}_${this.clearName(control.name)}`);\n attr(this.container, 'role', 'content');\n }\n};\nToolbarContent = __decorate([\n component\n], ToolbarContent);\nexport { ToolbarContent };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../../../core/decorators/index.js\";\nimport { isPlainObject } from \"../../../../core/helpers/checker/is-plain-object.js\";\nimport { isString } from \"../../../../core/helpers/checker/is-string.js\";\nimport { ToolbarButton } from \"../button.js\";\nlet ToolbarSelect = class ToolbarSelect extends ToolbarButton {\n className() {\n return 'ToolbarSelect';\n }\n update() {\n super.update();\n this.state.icon.name = '';\n const { list, data } = this.control;\n if (list) {\n let key = this.state.value ||\n (data && isString(data.currentValue)\n ? data.currentValue\n : undefined);\n if (!key) {\n const keys = Object.keys(list);\n key = keys[0];\n }\n const text = (isPlainObject(list) ? list[key.toString()] || key : key).toString();\n this.state.text =\n this.control.textTemplate?.(this.jodit, text) ?? text;\n }\n }\n};\nToolbarSelect = __decorate([\n component\n], ToolbarSelect);\nexport { ToolbarSelect };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport * as consts from \"../../../core/constants.js\";\nimport { component } from \"../../../core/decorators/index.js\";\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { css, isFunction } from \"../../../core/helpers/index.js\";\nimport { ToolbarCollection } from \"./collection.js\";\nlet ToolbarEditorCollection = class ToolbarEditorCollection extends ToolbarCollection {\n /** @override */\n className() {\n return 'ToolbarEditorCollection';\n }\n /** @override */\n shouldBeDisabled(button) {\n const disabled = super.shouldBeDisabled(button);\n if (disabled !== undefined) {\n return disabled;\n }\n const mode = button.control.mode === undefined\n ? consts.MODE_WYSIWYG\n : button.control.mode;\n return !(mode === consts.MODE_SPLIT || mode === this.j.getRealMode());\n }\n /** @override */\n shouldBeActive(button) {\n const active = super.shouldBeActive(button);\n if (active !== undefined) {\n return active;\n }\n const element = this.j.selection ? this.j.s.current() : null;\n if (!element) {\n return false;\n }\n let elm;\n if (button.control.tags) {\n const tags = button.control.tags;\n elm = element;\n if (Dom.up(elm, (node) => {\n if (node &&\n tags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n }, this.j.editor)) {\n return true;\n }\n }\n // activate by supposed css\n if (button.control.css) {\n const css = button.control.css;\n elm = element;\n if (Dom.up(elm, (node) => {\n if (node && !Dom.isText(node) && !Dom.isComment(node)) {\n return this.checkActiveStatus(css, node);\n }\n }, this.j.editor)) {\n return true;\n }\n }\n return false;\n }\n /** @override */\n getTarget(button) {\n return button.target || this.j.s.current() || null;\n }\n /** @override */\n constructor(jodit) {\n super(jodit);\n this.checkActiveStatus = (cssObject, node) => {\n let matches = 0, total = 0;\n Object.keys(cssObject).forEach((cssProperty) => {\n const cssValue = cssObject[cssProperty];\n if (isFunction(cssValue)) {\n if (cssValue(this.j, css(node, cssProperty).toString())) {\n matches += 1;\n }\n }\n else {\n if (cssValue.indexOf(css(node, cssProperty).toString()) !== -1) {\n matches += 1;\n }\n }\n total += 1;\n });\n return total === matches;\n };\n this.prependInvisibleInput(this.container);\n }\n /**\n * Adds an invisible element to the container that can handle the\n * situation when the editor is inside the <label>\n *\n * @see https://github.com/jodit/jodit-react/issues/138\n */\n prependInvisibleInput(container) {\n const input = this.j.create.element('input', {\n tabIndex: -1,\n disabled: true, // Because <label> can trigger click\n style: 'width: 0; height:0; position: absolute; visibility: hidden;'\n });\n Dom.appendChildFirst(container, input);\n }\n /**\n * Show the inline toolbar inside WYSIWYG editor.\n * @param bound - you can set the place for displaying the toolbar,\n * or the place will be in the place of the cursor\n */\n showInline(bound) {\n this.jodit.e.fire('showInlineToolbar', bound);\n }\n hide() {\n this.jodit.e.fire('hidePopup');\n super.hide();\n this.jodit.e.fire('toggleToolbar');\n }\n show() {\n super.show();\n this.jodit.e.fire('toggleToolbar');\n }\n};\nToolbarEditorCollection = __decorate([\n component\n], ToolbarEditorCollection);\nexport { ToolbarEditorCollection };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction, isJoditObject } from \"../../core/helpers/index.js\";\nimport { ToolbarButton } from \"./button/button.js\";\nimport { ToolbarContent } from \"./button/content.js\";\nimport { ToolbarSelect } from \"./button/select/select.js\";\nimport { ToolbarCollection } from \"./collection/collection.js\";\nimport { ToolbarEditorCollection } from \"./collection/editor-collection.js\";\n/**\n * Collection factory\n */\nexport function makeCollection(jodit, parentElement) {\n const collection = isJoditObject(jodit)\n ? new ToolbarEditorCollection(jodit)\n : new ToolbarCollection(jodit);\n if (jodit.o.textIcons) {\n collection.container.classList.add('jodit_text_icons');\n }\n if (parentElement) {\n collection.parentElement = parentElement;\n }\n if (jodit.o.toolbarButtonSize) {\n collection.buttonSize = jodit.o.toolbarButtonSize;\n }\n return collection;\n}\n/**\n * Button factory\n */\nexport function makeButton(jodit, control, target = null) {\n if (isFunction(control.getContent)) {\n return new ToolbarContent(jodit, control, target);\n }\n const button = new ToolbarButton(jodit, control, target);\n button.state.tabIndex = jodit.o.allowTabNavigation ? 0 : -1;\n return button;\n}\nexport function makeSelect(view, control, target = null) {\n return new ToolbarSelect(view, control, target);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { STATUSES } from \"../component/statuses.js\";\nimport { autobind } from \"../decorators/autobind/autobind.js\";\nimport { watch } from \"../decorators/watch/watch.js\";\nimport { Dom } from \"../dom/dom.js\";\nimport { splitArray } from \"../helpers/array/index.js\";\nimport { isString } from \"../helpers/checker/is-string.js\";\nimport { resolveElement } from \"../helpers/utils/selector.js\";\nimport { isButtonGroup } from \"../ui/helpers/buttons.js\";\nimport { View } from \"./view.js\";\nimport { makeCollection } from \"../../modules/toolbar/factory.js\";\nexport class ViewWithToolbar extends View {\n /**\n * Container for toolbar\n */\n get toolbarContainer() {\n if (!this.o.fullsize &&\n (isString(this.o.toolbar) || Dom.isHTMLElement(this.o.toolbar))) {\n return resolveElement(this.o.toolbar, this.o.shadowRoot || this.od);\n }\n this.o.toolbar &&\n Dom.appendChildFirst(this.container, this.__defaultToolbarContainer);\n return this.__defaultToolbarContainer;\n }\n /**\n * Change panel container\n */\n setPanel(element) {\n this.o.toolbar = element;\n this.buildToolbar();\n }\n /**\n * Helper for appended toolbar in its place\n */\n buildToolbar() {\n if (!this.o.toolbar) {\n return;\n }\n const buttons = this.o.buttons\n ? splitArray(this.o.buttons)\n : [];\n this.toolbar\n ?.setRemoveButtons(this.o.removeButtons)\n .build(buttons.concat(this.o.extraButtons || []))\n .appendTo(this.toolbarContainer);\n }\n getRegisteredButtonGroups() {\n return this.groupToButtons;\n }\n /**\n * Register button for a group\n */\n registerButton(btn) {\n this.registeredButtons.add(btn);\n const group = btn.group ?? 'other';\n if (!this.groupToButtons[group]) {\n this.groupToButtons[group] = [];\n }\n if (btn.position != null) {\n this.groupToButtons[group][btn.position] = btn.name;\n }\n else {\n this.groupToButtons[group].push(btn.name);\n }\n return this;\n }\n /**\n * Remove button from a group\n */\n unregisterButton(btn) {\n this.registeredButtons.delete(btn);\n const groupName = btn.group ?? 'other', group = this.groupToButtons[groupName];\n if (group) {\n const index = group.indexOf(btn.name);\n if (index !== -1) {\n group.splice(index, 1);\n }\n if (group.length === 0) {\n delete this.groupToButtons[groupName];\n }\n }\n return this;\n }\n /**\n * Prepare toolbar items and append buttons in groups\n */\n beforeToolbarBuild(items) {\n if (Object.keys(this.groupToButtons).length) {\n return items.map(item => {\n if (isButtonGroup(item) &&\n item.group &&\n this.groupToButtons[item.group]) {\n return {\n group: item.group,\n buttons: [\n ...item.buttons,\n ...this.groupToButtons[item.group]\n ]\n };\n }\n return item;\n });\n }\n }\n /** @override **/\n constructor(options, isJodit = false) {\n super(options, isJodit);\n this.toolbar = makeCollection(this);\n this.__defaultToolbarContainer = this.c.div('jodit-toolbar__box');\n this.registeredButtons = new Set();\n this.groupToButtons = {};\n this.isJodit = false;\n this.isJodit = isJodit;\n this.e.on('beforeToolbarBuild', this.beforeToolbarBuild);\n }\n destruct() {\n if (this.isDestructed) {\n return;\n }\n this.setStatus(STATUSES.beforeDestruct);\n this.e.off('beforeToolbarBuild', this.beforeToolbarBuild);\n this.toolbar.destruct();\n // @ts-ignore After destruct, we are not responsible for anything\n this.toolbar = undefined;\n super.destruct();\n }\n}\n__decorate([\n watch(':rebuildToolbar')\n], ViewWithToolbar.prototype, \"buildToolbar\", null);\n__decorate([\n autobind\n], ViewWithToolbar.prototype, \"beforeToolbarBuild\", null);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Dialog_1;\nimport { STATUSES } from \"../../core/component/index.js\";\nimport { KEY_ESC } from \"../../core/constants.js\";\nimport { autobind, component, hook } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { eventEmitter, pluginSystem } from \"../../core/global.js\";\nimport { asArray, splitArray, toArray } from \"../../core/helpers/array/index.js\";\nimport { hasContainer, isArray, isBoolean, isFunction, isString, isVoid } from \"../../core/helpers/checker/index.js\";\nimport { $$, attr, ConfigProto, css } from \"../../core/helpers/utils/index.js\";\nimport { assert } from \"../../core/helpers/utils/assert.js\";\nimport { Icon } from \"../../core/ui/index.js\";\nimport { View } from \"../../core/view/view.js\";\nimport { ViewWithToolbar } from \"../../core/view/view-with-toolbar.js\";\nimport { Config } from \"../../config.js\";\nConfig.prototype.dialog = {\n namespace: '',\n extraButtons: [],\n /**\n * This dialog can resize by trigger\n */\n resizable: true,\n /**\n * This dialog can move by header\n */\n draggable: true,\n buttons: ['dialog.close'],\n removeButtons: [],\n toolbarButtonSize: 'middle',\n zIndex: 'inherit'\n};\nConfig.prototype.controls.dialog = {\n close: {\n icon: 'cancel',\n exec: dialog => {\n dialog.close();\n }\n }\n};\n/**\n * Module to generate dialog windows\n */\nlet Dialog = Dialog_1 = class Dialog extends ViewWithToolbar {\n /** @override */\n className() {\n return 'Dialog';\n }\n get destination() {\n return (this.o.shadowRoot ?? this.od.body);\n }\n setElements(root, elements) {\n const elements_list = [];\n asArray(elements).forEach((elm) => {\n if (isArray(elm)) {\n const div = this.c.div(this.getFullElName('column'));\n elements_list.push(div);\n root.appendChild(div);\n return this.setElements(div, elm);\n }\n let element;\n if (isString(elm)) {\n element = this.c.fromHTML(elm);\n }\n else {\n element = hasContainer(elm) ? elm.container : elm;\n }\n elements_list.push(element);\n if (element.parentNode !== root) {\n root.appendChild(element);\n }\n });\n toArray(root.childNodes).forEach((elm) => {\n if (elements_list.indexOf(elm) === -1) {\n root.removeChild(elm);\n }\n });\n }\n onMouseUp() {\n if (this.draggable || this.resizable) {\n this.removeGlobalResizeListeners();\n this.draggable = false;\n this.resizable = false;\n this.unlockSelect();\n if (this.e) {\n this.removeGlobalResizeListeners();\n /**\n * Fired when the dialog box is finished to resizing\n */\n this.e.fire(this, 'endResize endMove');\n }\n }\n }\n /**\n *\n */\n onHeaderMouseDown(e) {\n const target = e.target;\n if (!this.o.draggable ||\n (target && target.nodeName.match(/^(INPUT|SELECT)$/))) {\n return;\n }\n this.draggable = true;\n this.startX = e.clientX;\n this.startY = e.clientY;\n this.startPoint.x = css(this.dialog, 'left');\n this.startPoint.y = css(this.dialog, 'top');\n this.setMaxZIndex();\n if (e.cancelable) {\n e.preventDefault();\n }\n this.lockSelect();\n this.addGlobalResizeListeners();\n if (this.e) {\n /**\n * Fired when dialog box is started moving\n */\n this.e.fire(this, 'startMove');\n this.e.fire('closeAllPopups');\n }\n }\n onMouseMove(e) {\n if (this.draggable && this.o.draggable) {\n this.setPosition(this.startPoint.x + e.clientX - this.startX, this.startPoint.y + e.clientY - this.startY);\n if (this.e) {\n /**\n * Fired when dialog box is moved\n */\n this.e.fire(this, 'move', e.clientX - this.startX, e.clientY - this.startY);\n }\n e.stopImmediatePropagation();\n }\n if (this.resizable && this.o.resizable) {\n this.setSize(this.startPoint.w + e.clientX - this.startX, this.startPoint.h + e.clientY - this.startY);\n if (this.e) {\n /**\n * Fired when dialog box is resized\n */\n this.e.fire(this, 'resizeDialog', e.clientX - this.startX, e.clientY - this.startY);\n }\n }\n }\n onEsc(e) {\n if (!this.o.closeOnEsc) {\n return;\n }\n if (this.isOpened &&\n e.key === KEY_ESC &&\n this.getMod('static') !== true) {\n const me = this.getMaxZIndexDialog();\n if (me) {\n me.close();\n }\n else {\n this.close();\n }\n e.stopImmediatePropagation();\n }\n }\n onResizerMouseDown(e) {\n this.resizable = true;\n this.startX = e.clientX;\n this.startY = e.clientY;\n this.startPoint.w = this.dialog.offsetWidth;\n this.startPoint.h = this.dialog.offsetHeight;\n this.lockSelect();\n this.addGlobalResizeListeners();\n if (this.e) {\n /**\n * Fired when dialog box is started resizing\n */\n this.e.fire(this, 'startResize');\n }\n }\n addGlobalResizeListeners() {\n const self = this;\n self.e\n .on(self.ow, 'pointermove touchmove', self.onMouseMove)\n .on(self.ow, 'pointerup touchend', self.onMouseUp);\n }\n removeGlobalResizeListeners() {\n const self = this;\n self.e\n .off(self.ow, 'mousemove pointermove', self.onMouseMove)\n .off(self.ow, 'mouseup pointerup', self.onMouseUp);\n }\n /**\n * Specifies the size of the window\n *\n * @param w - The width of the window\n * @param h - The height of the window\n */\n setSize(w, h) {\n if (w == null) {\n w = this.dialog.offsetWidth;\n }\n if (h == null) {\n h = this.dialog.offsetHeight;\n }\n css(this.dialog, {\n width: w,\n height: h\n });\n return this;\n }\n /**\n * Recalculate auto sizes\n */\n calcAutoSize() {\n this.setSize('auto', 'auto');\n this.setSize();\n return this;\n }\n /**\n * Specifies the position of the upper left corner of the window . If x and y are specified,\n * the window is centered on the center of the screen\n *\n * @param x - Position px Horizontal\n * @param y - Position px Vertical\n */\n setPosition(x, y) {\n const w = this.ow.innerWidth, h = this.ow.innerHeight;\n let left = w / 2 - this.dialog.offsetWidth / 2, top = h / 2 - this.dialog.offsetHeight / 2;\n if (left < 0) {\n left = 0;\n }\n if (top < 0) {\n top = 0;\n }\n if (x !== undefined && y !== undefined) {\n this.offsetX = x;\n this.offsetY = y;\n this.moved = Math.abs(x - left) > 100 || Math.abs(y - top) > 100;\n }\n this.dialog.style.left = (x || left) + 'px';\n this.dialog.style.top = (y || top) + 'px';\n return this;\n }\n /**\n * Specifies the dialog box title . It can take a string and an array of objects\n *\n * @param content - A string or an HTML element ,\n * or an array of strings and elements\n * @example\n * ```javascript\n * var dialog = new Jodi.modules.Dialog(parent);\n * dialog.setHeader('Hello world');\n * dialog.setHeader(['Hello world', '<button>OK</button>', $('<div>some</div>')]);\n * dialog.open();\n * ```\n */\n setHeader(content) {\n this.setElements(this.dialogbox_header, content);\n return this;\n }\n /**\n * It specifies the contents of the dialog box. It can take a string and an array of objects\n *\n * @param content - A string or an HTML element ,\n * or an array of strings and elements\n * @example\n * ```javascript\n * var dialog = new Jodi.modules.Dialog(parent);\n * dialog.setHeader('Hello world');\n * dialog.setContent('<form onsubmit=\"alert(1);\"><input type=\"text\" /></form>');\n * dialog.open();\n * ```\n */\n setContent(content) {\n this.setElements(this.dialogbox_content, content);\n return this;\n }\n /**\n * Sets the bottom of the dialog. It can take a string and an array of objects\n *\n * @param content - A string or an HTML element ,\n * or an array of strings and elements\n * @example\n * ```javascript\n * var dialog = new Jodi.modules.Dialog(parent);\n * dialog.setHeader('Hello world');\n * dialog.setContent('<form><input id=\"someText\" type=\"text\" /></form>');\n * dialog.setFooter([\n * $('<a class=\"jodit-button\">OK</a>').click(function () {\n * alert($('someText').val())\n * dialog.close();\n * })\n * ]);\n * dialog.open();\n * ```\n */\n setFooter(content) {\n this.setElements(this.dialogbox_footer, content);\n this.setMod('footer', Boolean(content));\n return this;\n }\n /**\n * Get zIndex from dialog\n */\n getZIndex() {\n return parseInt(css(this.container, 'zIndex'), 10) || 0;\n }\n /**\n * Get dialog instance with maximum z-index displaying it on top of all the dialog boxes\n */\n getMaxZIndexDialog() {\n let maxZi = 0, dlg, zIndex, res = this;\n $$('.jodit-dialog', this.destination).forEach((dialog) => {\n dlg = dialog.component;\n zIndex = parseInt(css(dialog, 'zIndex'), 10);\n if (dlg.isOpened && !isNaN(zIndex) && zIndex > maxZi) {\n res = dlg;\n maxZi = zIndex;\n }\n });\n return res;\n }\n /**\n * Sets the maximum z-index dialog box, displaying it on top of all the dialog boxes\n */\n setMaxZIndex() {\n if (this.getMod('static'))\n return;\n let maxZIndex = 20000004, zIndex = 0;\n $$('.jodit-dialog', this.destination).forEach(dialog => {\n zIndex = parseInt(css(dialog, 'zIndex'), 10);\n maxZIndex = Math.max(isNaN(zIndex) ? 0 : zIndex, maxZIndex);\n });\n this.container.style.zIndex = (maxZIndex + 1).toString();\n }\n /**\n * Expands the dialog on full browser window\n */\n toggleFullSize(isFullSize) {\n if (isVoid(isFullSize)) {\n isFullSize = !this.getMod('fullsize');\n }\n this.setMod('fullsize', isFullSize);\n super.toggleFullSize(isFullSize);\n }\n /**\n * It opens a dialog box to center it, and causes the two event.\n *\n * @param contentOrClose - specifies the contents of the dialog box.\n * Can be false or undefined. see [[Dialog.setContent]]\n * @param title - specifies the title of the dialog box, @see setHeader\n * @param destroyAfterClose - true - After closing the window , the destructor will be called.\n * @param modal - true window will be opened in modal mode\n */\n open(contentOrClose, titleOrModal, destroyAfterClose, modal) {\n eventEmitter.fire('closeAllPopups hideHelpers');\n /**\n * Called before the opening of the dialog box\n */\n if (this.e.fire(this, 'beforeOpen') === false) {\n return this;\n }\n if (isBoolean(contentOrClose)) {\n destroyAfterClose = contentOrClose;\n }\n if (isBoolean(titleOrModal)) {\n modal = titleOrModal;\n }\n this.destroyAfterClose = destroyAfterClose === true;\n const content = isBoolean(contentOrClose) ? undefined : contentOrClose;\n const title = isBoolean(titleOrModal) ? undefined : titleOrModal;\n if (title !== undefined) {\n this.setHeader(title);\n }\n if (content) {\n this.setContent(content);\n }\n this.setMod('active', true);\n this.isOpened = true;\n this.setModal(modal);\n this.destination.appendChild(this.container);\n if (this.getMod('static') !== true) {\n this.setPosition(this.offsetX, this.offsetY);\n this.setMaxZIndex();\n }\n else {\n this.container.style.removeProperty('z-index');\n }\n if (this.o.fullsize) {\n this.toggleFullSize(true);\n }\n /**\n * Called after the opening of the dialog box\n */\n this.e.fire('afterOpen', this);\n return this;\n }\n /**\n * Set modal mode\n */\n setModal(modal) {\n this.isModal = Boolean(modal);\n this.setMod('modal', this.isModal);\n return this;\n }\n /****\n * Closes the dialog box , if you want to call the method `destruct`\n *\n * @see destroy\n * @example\n * ```javascript\n * //You can close dialog two ways\n * var dialog = new Jodit.modules.Dialog();\n * dialog.open('Hello world!', 'Title');\n * var $close = dialog.create.fromHTML('<a href=\"#\" style=\"float:left;\" class=\"jodit-button\">\n * <i class=\"icon icon-check\"></i> ' + Jodit.prototype.i18n('Ok') + '</a>');\n * $close.addEventListener('click', function () {\n * dialog.close();\n * });\n * dialog.setFooter($close);\n * // and second way, you can close dialog from content\n * dialog.open('<a onclick=\"var event = doc.createEvent('HTMLEvents'); event.initEvent('close_dialog', true, true);\n * this.dispatchEvent(event)\">Close</a>', 'Title');\n * ```\n */\n close() {\n if (this.isDestructed ||\n !this.isOpened ||\n this.getMod('static') === true) {\n return this;\n }\n const { e } = this;\n /**\n * Called up to close the window\n */\n if (e.fire(this, 'beforeClose') === false ||\n e.fire('beforeClose', this) === false) {\n return this;\n }\n this.setMod('active', false);\n this.isOpened = false;\n if (this.isFullSize) {\n this.toggleFullSize(false);\n }\n Dom.safeRemove(this.container);\n this.removeGlobalResizeListeners();\n /**\n * It called after the window is closed\n */\n e.fire(this, 'afterClose');\n e.fire(this.ow, 'joditCloseDialog');\n if (this.destroyAfterClose) {\n this.destruct();\n }\n return this;\n }\n constructor(options = {}) {\n super(options);\n this.destroyAfterClose = false;\n this.moved = false;\n this.resizable = false;\n this.draggable = false;\n this.startX = 0;\n this.startY = 0;\n this.startPoint = { x: 0, y: 0, w: 0, h: 0 };\n this.lockSelect = () => {\n this.setMod('moved', true);\n };\n this.unlockSelect = () => {\n this.setMod('moved', false);\n };\n this.onResize = () => {\n if (this.options &&\n this.o.resizable &&\n !this.moved &&\n this.isOpened &&\n !this.offsetX &&\n !this.offsetY) {\n this.setPosition();\n }\n };\n this.isModal = false;\n /**\n * True, if dialog was opened\n */\n this.isOpened = false;\n const self = this;\n self.options = ConfigProto(options, ConfigProto(Config.prototype.dialog, Dialog_1.defaultOptions));\n Dom.safeRemove(self.container);\n const n = this.getFullElName.bind(this);\n self.container = this.c.fromHTML(`<div class=\"jodit jodit-dialog ${this.componentName}\">\n\t\t\t\t<div class=\"${n('overlay')}\"></div>\n\t\t\t\t<div class=\"${this.getFullElName('panel')}\">\n\t\t\t\t\t<div class=\"${n('header')}\">\n\t\t\t\t\t\t<div class=\"${n('header-title')}\"></div>\n\t\t\t\t\t\t<div class=\"${n('header-toolbar')}\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"${n('content')}\"></div>\n\t\t\t\t\t<div class=\"${n('footer')}\"></div>\n\t\t\t\t\t<div class=\"${n('resizer')}\">${Icon.get('resize_handler')}</div>\n\t\t\t\t</div>\n\t\t\t</div>`);\n if (this.o.zIndex) {\n this.container.style.zIndex = this.o.zIndex.toString();\n }\n attr(self.container, 'role', 'dialog');\n Object.defineProperty(self.container, 'component', {\n value: this\n });\n self.setMod('theme', self.o.theme || 'default').setMod('resizable', Boolean(self.o.resizable));\n const dialog = self.getElm('panel');\n assert(dialog != null, 'Panel element does not exist');\n const resizer = self.getElm('resizer');\n assert(resizer != null, 'Resizer element does not exist');\n const dialogbox_header = self.getElm('header-title');\n assert(dialogbox_header != null, 'header-title element does not exist');\n const dialogbox_content = self.getElm('content');\n assert(dialogbox_content != null, 'Content element does not exist');\n const dialogbox_footer = self.getElm('footer');\n assert(dialogbox_footer != null, 'Footer element does not exist');\n const dialogbox_toolbar = self.getElm('header-toolbar');\n assert(dialogbox_toolbar != null, 'header-toolbar element does not exist');\n this.dialog = dialog;\n this.resizer = resizer;\n this.dialogbox_header = dialogbox_header;\n this.dialogbox_content = dialogbox_content;\n this.dialogbox_footer = dialogbox_footer;\n this.dialogbox_toolbar = dialogbox_toolbar;\n css(self.dialog, {\n maxWidth: self.options.maxWidth,\n minHeight: self.options.minHeight,\n minWidth: self.options.minWidth\n });\n const headerBox = self.getElm('header');\n headerBox &&\n self.e.on(headerBox, 'pointerdown touchstart', self.onHeaderMouseDown);\n self.e.on(self.resizer, 'mousedown touchstart', self.onResizerMouseDown);\n const fullSize = pluginSystem.get('fullsize');\n isFunction(fullSize) && fullSize(self);\n this.e\n .on(self.container, 'close_dialog', self.close)\n .on(this.ow, 'keydown', this.onEsc)\n .on(this.ow, 'resize', this.onResize);\n if (this.o.closeOnClickOverlay) {\n const overlay = self.getElm('overlay');\n assert(overlay != null, 'Overlay element does not exist');\n this.e.on(overlay, 'click', self.close);\n }\n }\n /**\n * Build toolbar after ready\n */\n buildToolbar() {\n this.o.buttons &&\n this.toolbar\n .build(splitArray(this.o.buttons))\n .setMod('mode', 'header')\n .appendTo(this.dialogbox_toolbar);\n }\n /**\n * It destroys all objects created for the windows and also includes all the handlers for the window object\n */\n destruct() {\n if (this.isInDestruct) {\n return;\n }\n this.setStatus(STATUSES.beforeDestruct);\n if (this.isOpened) {\n this.close();\n }\n if (this.events) {\n this.removeGlobalResizeListeners();\n this.events\n .off(this.container, 'close_dialog', self.close)\n .off(this.ow, 'keydown', this.onEsc)\n .off(this.ow, 'resize', this.onResize);\n }\n super.destruct();\n }\n};\n__decorate([\n autobind\n], Dialog.prototype, \"onMouseUp\", null);\n__decorate([\n autobind\n], Dialog.prototype, \"onHeaderMouseDown\", null);\n__decorate([\n autobind\n], Dialog.prototype, \"onMouseMove\", null);\n__decorate([\n autobind\n], Dialog.prototype, \"onEsc\", null);\n__decorate([\n autobind\n], Dialog.prototype, \"onResizerMouseDown\", null);\n__decorate([\n autobind\n], Dialog.prototype, \"close\", null);\n__decorate([\n hook('ready')\n], Dialog.prototype, \"buildToolbar\", null);\nDialog = Dialog_1 = __decorate([\n component\n], Dialog);\nexport { Dialog };\nDialog.defaultOptions = {\n ...View.defaultOptions,\n closeOnClickOverlay: false,\n closeOnEsc: true\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { asArray } from \"../../core/helpers/array/as-array.js\";\nimport { isFunction } from \"../../core/helpers/checker/is-function.js\";\nimport { Button } from \"../../core/ui/button/button/button.js\";\nimport { Dialog } from \"./dialog.js\";\n/**\n * Show `alert` dialog. Work without Jodit object\n * @example\n * ```javascript\n * Jodit.Alert(\"File was uploaded\");\n * Jodit.Alert(\"File was uploaded\", \"Message\");\n * Jodit.Alert(\"File was uploaded\", function() {\n * $('form').hide();\n * });\n * Jodit.Alert(\"File wasn't uploaded\", \"Error\", function() {\n * $('form').hide();\n * });\n * ```\n */\nexport function Alert(msg, title, callback, className = 'jodit-dialog_alert') {\n if (isFunction(title)) {\n callback = title;\n title = undefined;\n }\n const dialog = this instanceof Dialog\n ? this\n : new Dialog({ closeOnClickOverlay: true }), container = dialog.c.div(className), okButton = Button(dialog, 'ok', 'Ok');\n asArray(msg).forEach(oneMessage => {\n container.appendChild(Dom.isNode(oneMessage) ? oneMessage : dialog.c.fromHTML(oneMessage));\n });\n okButton.onAction(() => {\n if (!callback || !isFunction(callback) || callback(dialog) !== false) {\n dialog.close();\n }\n });\n dialog.setFooter([okButton]);\n dialog.open(container, title || ' ', true, true);\n okButton.focus();\n return dialog;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction } from \"../../core/helpers/checker/is-function.js\";\nimport { Button } from \"../../core/ui/button/button/button.js\";\nimport { Dialog } from \"./dialog.js\";\n/**\n * Show `confirm` dialog. Work without Jodit object\n *\n * @param title - Title or callback\n * @param callback - callback. The first argument is the value entered\n * @example\n * ```javascript\n * Jodit.Confirm(\"Are you sure?\", \"Confirm Dialog\", function (yes) {\n * if (yes) {\n * // do something\n * }\n * });\n * ```\n */\nexport function Confirm(msg, title, callback) {\n const dialog = this instanceof Dialog\n ? this\n : new Dialog({ closeOnClickOverlay: true }), $div = dialog.c.fromHTML('<form class=\"jodit-dialog_prompt\"></form>'), $label = dialog.c.element('label');\n if (isFunction(title)) {\n callback = title;\n title = undefined;\n }\n $label.appendChild(dialog.c.fromHTML(msg));\n $div.appendChild($label);\n const action = (yes) => () => {\n if (!callback || callback(yes) !== false) {\n dialog.close();\n }\n };\n const $cancel = Button(dialog, 'cancel', 'Cancel');\n const $ok = Button(dialog, 'ok', 'Yes');\n $cancel.onAction(action(false));\n $ok.onAction(action(true));\n dialog.e.on($div, 'submit', () => {\n action(true)();\n return false;\n });\n dialog.setFooter([$ok, $cancel]);\n dialog.open($div, title || ' ', true, true);\n $ok.focus();\n return dialog;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction } from \"../../core/helpers/checker/is-function.js\";\nimport { attr } from \"../../core/helpers/utils/attr.js\";\nimport { Button } from \"../../core/ui/button/button/button.js\";\nimport { Dialog } from \"./dialog.js\";\n/**\n * Show `Prompt` dialog. Work without Jodit object\n *\n * @param msg - Dialog content\n * @param title - Title or callback\n * @param callback - callback. The first argument is the value entered\n * @param placeholder - Placeholder for input\n * @example\n * ```javascript\n * Jodit.Prompt(\"Enter your name\", \"Prompt Dialog\", function (name) {\n * if (name.length < 3) {\n * Jodit.Alert(\"The name must be at least 3 letters\");\n * return false;\n * }\n * // do something\n * });\n * ```\n */\nexport function Prompt(msg, title, callback, placeholder, defaultValue) {\n const dialog = this instanceof Dialog\n ? this\n : new Dialog({ closeOnClickOverlay: true }), cancelButton = Button(dialog, 'cancel', 'Cancel'), okButton = Button(dialog, 'ok', 'Ok'), form = dialog.c.element('form', {\n class: 'jodit-dialog_prompt'\n }), inputElement = dialog.c.element('input', {\n autofocus: true,\n class: 'jodit-input'\n }), labelElement = dialog.c.element('label');\n if (isFunction(title)) {\n callback = title;\n title = undefined;\n }\n if (placeholder) {\n attr(inputElement, 'placeholder', placeholder);\n }\n labelElement.appendChild(dialog.c.text(msg));\n form.appendChild(labelElement);\n form.appendChild(inputElement);\n cancelButton.onAction(dialog.close);\n const onclick = () => {\n if (!callback ||\n !isFunction(callback) ||\n callback(inputElement.value) !== false) {\n dialog.close();\n }\n };\n okButton.onAction(onclick);\n dialog.e.on(form, 'submit', () => {\n onclick();\n return false;\n });\n dialog.setFooter([okButton, cancelButton]);\n dialog.open(form, title || ' ', true, true);\n inputElement.focus();\n if (defaultValue !== undefined && defaultValue.length) {\n inputElement.value = defaultValue;\n inputElement.select();\n }\n return dialog;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isHTML, isString } from \"../helpers/checker/index.js\";\nimport { markOwner } from \"../helpers/utils/utils.js\";\nimport { Alert, Confirm, Dialog, Prompt } from \"../../modules/dialog/index.js\";\nexport class Dlgs {\n dlg(options) {\n const dialog = new Dialog({\n language: this.o.language,\n shadowRoot: this.o.shadowRoot,\n ownerWindow: this.o.ownerWindow,\n defaultTimeout: this.o.defaultTimeout,\n theme: this.o.theme,\n globalFullSize: this.o.globalFullSize,\n ...options\n });\n markOwner(this, dialog.container);\n dialog.parent = this;\n return dialog.bindDestruct(this);\n }\n confirm(msg, title, callback) {\n msg = processTitle(msg, this);\n title = processTitle(title, this);\n return Confirm.call(this.dlg({ closeOnClickOverlay: true }), msg, title, callback);\n }\n prompt(msg, title, callback, placeholder, defaultValue) {\n msg = processTitle(msg, this);\n title = processTitle(title, this);\n placeholder = processTitle(placeholder, this);\n return Prompt.call(this.dlg({ closeOnClickOverlay: true }), msg, title, callback, placeholder, defaultValue);\n }\n alert(msg, title, callback, className) {\n msg = processTitle(msg, this);\n title = processTitle(title, this);\n return Alert.call(this.dlg({ closeOnClickOverlay: true }), msg, title, callback, className);\n }\n}\nfunction processTitle(title, self) {\n if (isString(title) && !isHTML(title)) {\n title = self.i18n(title);\n }\n return title;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { component } from \"../../core/decorators/component/component.js\";\nimport { isArray } from \"../../core/helpers/checker/is-array.js\";\nimport { Button } from \"../../core/ui/button/button/button.js\";\nimport { Popup } from \"../../core/ui/popup/popup.js\";\n/**\n * Module to generate context menu\n */\nlet ContextMenu = class ContextMenu extends Popup {\n /** @override */\n className() {\n return 'ContextMenu';\n }\n /**\n * Generate and show context menu\n *\n * @param x - Global coordinate by X\n * @param y - Global coordinate by Y\n * @param actions - Array with plain objects `{icon: 'bin', title: 'Delete', exec: function () {}}`\n * @example\n * ```javascript\n * parent.show(e.clientX, e.clientY, [{icon: 'bin', title: 'Delete', exec: function () { alert(1) }}]);\n * ```\n */\n show(x, y, actions) {\n const self = this;\n self.clear();\n if (!isArray(actions)) {\n return;\n }\n actions.forEach(item => {\n if (!item) {\n return;\n }\n const action = Button(this.jodit, item.icon || 'empty', item.title);\n this.jodit && action.setParentView(this.jodit);\n action.setMod('context', 'menu');\n action.onAction((e) => {\n item.exec?.call(self, e);\n self.clear();\n self.close();\n return false;\n });\n this.append(action);\n });\n this.open(() => ({ left: x, top: y, width: 0, height: 0 }), true);\n }\n};\nContextMenu = __decorate([\n component\n], ContextMenu);\nexport { ContextMenu };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport \"../../core/request/config.js\";\nimport { isArray, isString } from \"../../core/helpers/checker/index.js\";\nimport { humanSizeToBytes } from \"../../core/helpers/utils/human-size-to-bytes.js\";\nimport { UIFileInput } from \"../../core/ui/form/inputs/file/file.js\";\nimport { Config } from \"../../config.js\";\nConfig.prototype.filebrowser = {\n namespace: '',\n cache: true,\n extraButtons: [],\n filter(item, search) {\n search = search.toLowerCase();\n if (isString(item)) {\n return item.toLowerCase().indexOf(search) !== -1;\n }\n if (isString(item.name)) {\n return item.name.toLowerCase().indexOf(search) !== -1;\n }\n if (isString(item.file)) {\n return item.file.toLowerCase().indexOf(search) !== -1;\n }\n return true;\n },\n sortBy: 'changed-desc',\n sort(a, b, sortBy) {\n const [sortAttr, arrow] = sortBy.toLowerCase().split('-'), asc = arrow === 'asc';\n const compareStr = (f, s) => {\n if (f < s) {\n return asc ? -1 : 1;\n }\n if (f > s) {\n return asc ? 1 : -1;\n }\n return 0;\n };\n if (isString(a)) {\n return compareStr(a.toLowerCase(), b.toLowerCase());\n }\n if (a[sortAttr] === undefined || sortAttr === 'name') {\n if (isString(a.name)) {\n return compareStr(a.name.toLowerCase(), b.name.toLowerCase());\n }\n if (isString(a.file)) {\n return compareStr(a.file.toLowerCase(), b.file.toLowerCase());\n }\n return 0;\n }\n switch (sortAttr) {\n case 'changed': {\n const f = new Date(a.changed).getTime(), s = new Date(b.changed).getTime();\n return asc ? f - s : s - f;\n }\n case 'size': {\n const f = humanSizeToBytes(a.size), s = humanSizeToBytes(b.size);\n return asc ? f - s : s - f;\n }\n }\n return 0;\n },\n editImage: true,\n preview: true,\n showPreviewNavigation: true,\n showSelectButtonInPreview: true,\n contextMenu: true,\n howLongShowMsg: 3000,\n createNewFolder: true,\n deleteFolder: true,\n renameFolder: true,\n moveFolder: true,\n moveFile: true,\n permissionsPresets: {\n allowFileDownload: undefined,\n allowFileMove: undefined,\n allowFileRemove: undefined,\n allowFileRename: undefined,\n allowFileUpload: undefined,\n allowFileUploadRemote: undefined,\n allowFiles: undefined,\n allowFolderCreate: undefined,\n allowFolderMove: undefined,\n allowFolderRemove: undefined,\n allowFolderRename: undefined,\n allowFolderTree: undefined,\n allowFolders: undefined,\n allowGeneratePdf: undefined,\n allowImageCrop: undefined,\n allowImageResize: undefined\n },\n showFoldersPanel: true,\n storeLastOpenedFolder: true,\n width: 859,\n height: 400,\n buttons: [\n 'filebrowser.upload',\n 'filebrowser.remove',\n 'filebrowser.update',\n 'filebrowser.select',\n 'filebrowser.edit',\n '|',\n 'filebrowser.tiles',\n 'filebrowser.list',\n '|',\n 'filebrowser.filter',\n '|',\n 'filebrowser.sort'\n ],\n removeButtons: [],\n fullsize: false,\n showTooltip: true,\n view: null,\n isSuccess(resp) {\n return resp.success;\n },\n getMessage(resp) {\n return resp.data.messages !== undefined && isArray(resp.data.messages)\n ? resp.data.messages.join(' ')\n : '';\n },\n showFileName: true,\n showFileSize: true,\n showFileChangeTime: true,\n saveStateInStorage: {\n storeLastOpenedFolder: true,\n storeView: true,\n storeSortBy: true\n },\n pixelOffsetLoadNewChunk: 200,\n getThumbTemplate(item, source, source_name) {\n const opt = this.options, IC = this.files.getFullElName('item'), showName = opt.showFileName, showSize = opt.showFileSize && item.size, showTime = opt.showFileChangeTime && item.time;\n let name = '';\n if (item.file !== undefined) {\n name = item.file;\n }\n const info = `<div class=\"${IC}-info\">${showName ? `<span class=\"${IC}-info-filename\">${name}</span>` : ''}${showSize\n ? `<span class=\"${IC}-info-filesize\">${item.size}</span>`\n : ''}${showTime\n ? `<span class=\"${IC}-info-filechanged\">${showTime}</span>`\n : ''}</div>`;\n return `<a\n\t\t\tdata-jodit-file-browser-item=\"true\"\n\t\t\tdata-is-file=\"${item.isImage ? 0 : 1}\"\n\t\t\tdraggable=\"true\"\n\t\t\tclass=\"${IC}\"\n\t\t\thref=\"${item.fileURL}\"\n\t\t\tdata-source=\"${source_name}\"\n\t\t\tdata-path=\"${item.path}\"\n\t\t\tdata-name=\"${name}\"\n\t\t\ttitle=\"${name}\"\n\t\t\tdata-url=\"${item.fileURL}\">\n\t\t\t\t<img\n\t\t\t\t\tdata-is-file=\"${item.isImage ? 0 : 1}\"\n\t\t\t\t\tdata-src=\"${item.fileURL}\"\n\t\t\t\t\tsrc=\"${item.imageURL}\"\n\t\t\t\t\talt=\"${name}\"\n\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t/>\n\t\t\t\t${showName || showSize || showTime ? info : ''}\n\t\t\t</a>`;\n },\n ajax: {\n ...Config.prototype.defaultAjaxOptions,\n url: '',\n data: {},\n cache: true,\n contentType: 'application/x-www-form-urlencoded; charset=UTF-8',\n method: 'POST',\n processData: true,\n headers: {},\n prepareData(data) {\n return data;\n },\n process(resp) {\n return resp;\n }\n },\n create: {\n data: { action: 'folderCreate' }\n },\n getLocalFileByUrl: {\n data: { action: 'getLocalFileByUrl' }\n },\n resize: {\n data: { action: 'imageResize' }\n },\n crop: {\n data: { action: 'imageCrop' }\n },\n fileMove: {\n data: { action: 'fileMove' }\n },\n folderMove: {\n data: { action: 'folderMove' }\n },\n fileRename: {\n data: { action: 'fileRename' }\n },\n folderRename: {\n data: { action: 'folderRename' }\n },\n fileRemove: {\n data: { action: 'fileRemove' }\n },\n folderRemove: {\n data: { action: 'folderRemove' }\n },\n items: {\n data: { action: 'files' }\n },\n folder: {\n data: { action: 'folders' }\n },\n permissions: {\n data: { action: 'permissions' }\n }\n};\nConfig.prototype.controls.filebrowser = {\n upload: {\n icon: 'plus',\n isInput: true,\n isDisabled: (browser) => !browser.dataProvider.canI('FileUpload'),\n getContent: (filebrowser) => {\n const btn = new UIFileInput(filebrowser, {\n onlyImages: filebrowser.state.onlyImages\n });\n filebrowser.e.fire('bindUploader.filebrowser', btn.container);\n return btn.container;\n }\n },\n remove: {\n icon: 'bin',\n isDisabled: (browser) => {\n return (!browser.state.activeElements.length ||\n !browser.dataProvider.canI('FileRemove'));\n },\n exec: (editor) => {\n editor.e.fire('fileRemove.filebrowser');\n }\n },\n update: {\n exec: (editor) => {\n editor.e.fire('update.filebrowser');\n }\n },\n select: {\n icon: 'check',\n isDisabled: (browser) => !browser.state.activeElements.length,\n exec: (editor) => {\n editor.e.fire('select.filebrowser');\n }\n },\n edit: {\n icon: 'pencil',\n isDisabled: (browser) => {\n const selected = browser.state.activeElements;\n return (selected.length !== 1 ||\n !selected[0].isImage ||\n !(browser.dataProvider.canI('ImageCrop') ||\n browser.dataProvider.canI('ImageResize')));\n },\n exec: editor => {\n editor.e.fire('edit.filebrowser');\n }\n },\n tiles: {\n icon: 'th',\n isActive: (filebrowser) => filebrowser.state.view === 'tiles',\n exec: (filebrowser) => {\n filebrowser.e.fire('view.filebrowser', 'tiles');\n }\n },\n list: {\n icon: 'th-list',\n isActive: (filebrowser) => filebrowser.state.view === 'list',\n exec: (filebrowser) => {\n filebrowser.e.fire('view.filebrowser', 'list');\n }\n },\n filter: {\n isInput: true,\n getContent: (filebrowser, b) => {\n const oldInput = b.container.querySelector('.jodit-input');\n if (oldInput) {\n return oldInput;\n }\n const input = filebrowser.c.element('input', {\n class: 'jodit-input',\n placeholder: filebrowser.i18n('Filter')\n });\n input.value = filebrowser.state.filterWord;\n filebrowser.e.on(input, 'keydown mousedown', filebrowser.async.debounce(() => {\n filebrowser.e.fire('filter.filebrowser', input.value);\n }, filebrowser.defaultTimeout));\n return input;\n }\n },\n sort: {\n isInput: true,\n getContent: (fb) => {\n const select = fb.c.fromHTML('<select class=\"jodit-input jodit-select\">' +\n `<option value=\"changed-asc\">${fb.i18n('Sort by changed')} (⬆)</option>` +\n `<option value=\"changed-desc\">${fb.i18n('Sort by changed')} (⬇)</option>` +\n `<option value=\"name-asc\">${fb.i18n('Sort by name')} (⬆)</option>` +\n `<option value=\"name-desc\">${fb.i18n('Sort by name')} (⬇)</option>` +\n `<option value=\"size-asc\">${fb.i18n('Sort by size')} (⬆)</option>` +\n `<option value=\"size-desc\">${fb.i18n('Sort by size')} (⬇)</option>` +\n '</select>');\n select.value = fb.state.sortBy;\n fb.e\n .on('sort.filebrowser', (value) => {\n if (select.value !== value) {\n select.value = value;\n }\n })\n .on(select, 'change', () => {\n fb.e.fire('sort.filebrowser', select.value);\n });\n return select;\n }\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Loads a list of files and adds them to the state\n * @private\n */\nexport function loadItems(fb) {\n fb.files.setMod('active', true);\n fb.files.setMod('loading', true);\n return fb.dataProvider\n .items(fb.state.currentPath, fb.state.currentSource, {\n sortBy: fb.state.sortBy,\n onlyImages: fb.state.onlyImages,\n filterWord: fb.state.filterWord\n })\n .then(resp => {\n if (resp) {\n fb.state.elements = resp;\n fb.state.activeElements = [];\n }\n })\n .catch(fb.status)\n .finally(() => fb.files.setMod('loading', false));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { loadItems } from \"./load-items.js\";\n/**\n * Loads a list of directories\n * @private\n */\nexport async function loadTree(fb) {\n fb.tree.setMod('active', true);\n Dom.detach(fb.tree.container);\n const items = loadItems(fb);\n if (fb.o.showFoldersPanel) {\n fb.tree.setMod('loading', true);\n const tree = fb.dataProvider\n .tree(fb.state.currentPath, fb.state.currentSource)\n .then(resp => {\n fb.state.sources = resp;\n })\n .catch(fb.status)\n .finally(() => fb.tree.setMod('loading', false));\n return Promise.all([tree, items]);\n }\n fb.tree.setMod('active', false);\n return items;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nconst map = new WeakMap();\n/**\n * Returns a map of the file's key correspondence to its DOM element in the file browser\n * @private\n */\nexport const elementsMap = (view) => {\n let result = map.get(view);\n if (!result) {\n result = {};\n map.set(view, result);\n }\n return result;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { normalizePath, normalizeUrl } from \"../../../core/helpers/index.js\";\nexport class FileBrowserItem {\n constructor(data) {\n this.data = data;\n // TODO Check with Object.assign\n Object.keys(data).forEach(key => {\n this[key] = data[key];\n });\n }\n static create(data) {\n if (data instanceof FileBrowserItem) {\n return data;\n }\n return new FileBrowserItem(data);\n }\n get path() {\n return normalizePath(this.data.source.path ? this.data.source.path + '/' : '/');\n }\n get imageURL() {\n const timestamp = this.time || new Date().getTime().toString(), { thumbIsAbsolute, source, thumb, file } = this.data, path = thumb || file;\n return thumbIsAbsolute && path\n ? path\n : normalizeUrl(source.baseurl, source.path, path || '') +\n '?_tmst=' +\n encodeURIComponent(timestamp);\n }\n get fileURL() {\n let { name } = this.data;\n const { file, fileIsAbsolute, source } = this.data;\n if (file !== undefined) {\n name = file;\n }\n return fileIsAbsolute && name\n ? name\n : normalizeUrl(source.baseurl, source.path, name || '');\n }\n get time() {\n const { changed } = this.data;\n return ((changed &&\n (typeof changed === 'number'\n ? new Date(changed).toLocaleString()\n : changed)) ||\n '');\n }\n get uniqueHashKey() {\n const data = this.data;\n let key = [\n data.sourceName,\n data.name,\n data.file,\n this.time,\n data.thumb\n ].join('_');\n key = key.toLowerCase().replace(/[^0-9a-z\\-.]/g, '-');\n return key;\n }\n toJSON() {\n return this.data;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { IS_PROD } from \"../../core/constants.js\";\nimport { autobind } from \"../../core/decorators/index.js\";\nimport { abort, ConfigProto, error, isFunction, normalizeRelativePath, set } from \"../../core/helpers/index.js\";\nimport { Ajax } from \"../../core/request/index.js\";\nimport { FileBrowserItem } from \"./builders/item.js\";\nexport const DEFAULT_SOURCE_NAME = 'default';\nconst possibleRules = new Set([\n 'allowFiles',\n 'allowFileMove',\n 'allowFileUpload',\n 'allowFileUploadRemote',\n 'allowFileRemove',\n 'allowFileRename',\n 'allowFolders',\n 'allowFolderMove',\n 'allowFolderCreate',\n 'allowFolderRemove',\n 'allowFolderRename',\n 'allowImageResize',\n 'allowImageCrop'\n]);\nlet DataProvider = class DataProvider {\n constructor(parent, options) {\n this.parent = parent;\n this.options = options;\n this.__currentPermissions = null;\n this.__ajaxInstances = new Map();\n this.progressHandler = (ignore) => { };\n }\n /**\n * Alias for options\n */\n get o() {\n return this.options;\n }\n get(name) {\n const instances = this.__ajaxInstances;\n if (instances.has(name)) {\n const ajax = instances.get(name);\n ajax?.abort();\n instances.delete(name);\n }\n const opts = ConfigProto(this.options[name] !== undefined\n ? this.options[name]\n : {}, ConfigProto({\n onProgress: this.progressHandler\n }, this.o.ajax));\n if (opts.prepareData) {\n opts.data = opts.prepareData.call(this, opts.data);\n }\n const ajax = new Ajax(opts);\n instances.set(name, ajax);\n const promise = ajax.send();\n promise\n .finally(() => {\n ajax.destruct();\n instances.delete(name);\n this.progressHandler(100);\n })\n .catch(() => null);\n return promise\n .then(resp => resp.json())\n .then(resp => {\n if (resp && !this.isSuccess(resp)) {\n throw new Error(this.getMessage(resp));\n }\n return resp;\n });\n }\n onProgress(callback) {\n this.progressHandler = callback;\n }\n /**\n * Load permissions for path and source\n */\n async permissions(path, source) {\n if (!this.o.permissions) {\n return null;\n }\n this.o.permissions.data.path = path;\n this.o.permissions.data.source = source;\n if (this.o.permissions.url) {\n return this.get('permissions').then(resp => {\n if (this.parent.isInDestruct) {\n throw abort();\n }\n let process = this.o.permissions.process;\n if (!process) {\n process = this.o.ajax.process;\n }\n if (process) {\n const respData = process.call(self, resp);\n if (respData.data.permissions) {\n this.parent.events.fire(this, 'changePermissions', this.__currentPermissions, respData.data.permissions);\n this.__currentPermissions = respData.data.permissions;\n }\n }\n return this.__currentPermissions;\n });\n }\n return null;\n }\n canI(action) {\n const rule = 'allow' + action;\n if (!IS_PROD) {\n if (!possibleRules.has(rule)) {\n throw error('Wrong action ' + action);\n }\n }\n const presetValue = this.o.permissionsPresets[rule];\n if (presetValue !== undefined) {\n return presetValue;\n }\n return (this.__currentPermissions == null ||\n this.__currentPermissions[rule] === undefined ||\n this.__currentPermissions[rule]);\n }\n __items(path, source, mods, onResult) {\n const opt = this.options;\n if (!opt.items) {\n return Promise.reject(Error('Set Items api options'));\n }\n opt.items.data.path = path;\n opt.items.data.source = source;\n opt.items.data.mods = mods;\n return this.get('items').then(resp => {\n let process = this.o.items.process;\n if (!process) {\n process = this.o.ajax.process;\n }\n if (process) {\n resp = process.call(self, resp);\n }\n return onResult(resp);\n });\n }\n /**\n * Load items list by path and source\n */\n items(path, source, mods = {}) {\n return this.__items(path, source, mods, resp => this.generateItemsList(resp.data.sources, mods));\n }\n /**\n * Load items list by path and source\n */\n itemsEx(path, source, mods = {}) {\n const calcTotal = (sources) => sources.reduce((acc, source) => acc + source.files.length, 0);\n return this.__items(path, source, mods, resp => ({\n items: this.generateItemsList(resp.data.sources, mods),\n loadedTotal: calcTotal(resp.data.sources)\n }));\n }\n generateItemsList(sources, mods = {}) {\n const elements = [];\n const canBeFile = (item) => item.type === 'folder' ||\n !mods.onlyImages ||\n item.isImage === undefined ||\n item.isImage;\n const inFilter = (item) => !mods.filterWord?.length ||\n this.o.filter === undefined ||\n this.o.filter(item, mods.filterWord);\n sources.forEach(source => {\n if (source.files && source.files.length) {\n const { sort } = this.o;\n if (isFunction(sort) && mods.sortBy) {\n source.files.sort((a, b) => sort(a, b, mods.sortBy));\n }\n source.files.forEach((item) => {\n if (inFilter(item) && canBeFile(item)) {\n elements.push(FileBrowserItem.create({\n ...item,\n sourceName: source.name,\n source\n }));\n }\n });\n }\n });\n return elements;\n }\n async tree(path, source) {\n path = normalizeRelativePath(path);\n if (!this.o.folder) {\n return Promise.reject(Error('Set Folder Api options'));\n }\n await this.permissions(path, source);\n this.o.folder.data.path = path;\n this.o.folder.data.source = source;\n return this.get('folder').then(resp => {\n let process = this.o.folder.process;\n if (!process) {\n process = this.o.ajax.process;\n }\n if (process) {\n resp = process.call(self, resp);\n }\n return resp.data.sources;\n });\n }\n /**\n * Get path by url. You can use this method in another modules\n */\n getPathByUrl(url) {\n set('options.getLocalFileByUrl.data.url', url, this);\n return this.get('getLocalFileByUrl').then(resp => {\n if (this.isSuccess(resp)) {\n return resp.data;\n }\n throw error(this.getMessage(resp));\n });\n }\n /**\n * Create a directory on the server\n *\n * @param name - Name the new folder\n * @param path - Relative directory in which you want create a folder\n * @param source - Server source key\n */\n createFolder(name, path, source) {\n const { create } = this.o;\n if (!create) {\n throw error('Set Create api options');\n }\n create.data.source = source;\n create.data.path = path;\n create.data.name = name;\n return this.get('create').then(resp => {\n if (this.isSuccess(resp)) {\n return true;\n }\n throw error(this.getMessage(resp));\n });\n }\n /**\n * Move a file / directory on the server\n *\n * @param filepath - The relative path to the file / folder source\n * @param path - Relative to the directory where you want to move the file / folder\n */\n move(filepath, path, source, isFile) {\n const mode = isFile\n ? 'fileMove'\n : 'folderMove';\n const option = this.options[mode];\n if (!option) {\n throw error('Set Move api options');\n }\n option.data.from = filepath;\n option.data.path = path;\n option.data.source = source;\n return this.get(mode).then(resp => {\n if (this.isSuccess(resp)) {\n return true;\n }\n throw error(this.getMessage(resp));\n });\n }\n /**\n * Deleting item\n *\n * @param path - Relative path\n * @param file - The filename\n * @param source - Source\n */\n remove(action, path, file, source) {\n const fr = this.o[action];\n if (!fr) {\n throw error(`Set \"${action}\" api options`);\n }\n fr.data.path = path;\n fr.data.name = file;\n fr.data.source = source;\n return this.get(action).then(resp => {\n if (fr.process) {\n resp = fr.process.call(this, resp);\n }\n return this.getMessage(resp);\n });\n }\n /**\n * Deleting a file\n *\n * @param path - Relative path\n * @param file - The filename\n * @param source - Source\n */\n fileRemove(path, file, source) {\n return this.remove('fileRemove', path, file, source);\n }\n /**\n * Deleting a folder\n *\n * @param path - Relative path\n * @param file - The filename\n * @param source - Source\n */\n folderRemove(path, file, source) {\n return this.remove('folderRemove', path, file, source);\n }\n /**\n * Rename action\n *\n * @param path - Relative path\n * @param name - Old name\n * @param newname - New name\n * @param source - Source\n */\n rename(action, path, name, newname, source) {\n const fr = this.o[action];\n if (!fr) {\n throw error(`Set \"${action}\" api options`);\n }\n fr.data.path = path;\n fr.data.name = name;\n fr.data.newname = newname;\n fr.data.source = source;\n return this.get(action).then(resp => {\n if (fr.process) {\n resp = fr.process.call(self, resp);\n }\n return this.getMessage(resp);\n });\n }\n /**\n * Rename folder\n */\n folderRename(path, name, newname, source) {\n return this.rename('folderRename', path, name, newname, source);\n }\n /**\n * Rename file\n */\n fileRename(path, name, newname, source) {\n return this.rename('fileRename', path, name, newname, source);\n }\n changeImage(type, path, source, name, newname, box) {\n if (!this.o[type]) {\n this.o[type] = {\n data: {}\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const query = this.o[type];\n if (query.data === undefined) {\n query.data = {\n action: type\n };\n }\n query.data.newname = newname || name;\n if (box) {\n query.data.box = box;\n }\n query.data.path = path;\n query.data.name = name;\n query.data.source = source;\n return this.get(type).then(() => {\n return true;\n });\n }\n /**\n * Send command to server to crop image\n */\n crop(path, source, name, newname, box) {\n return this.changeImage('crop', path, source, name, newname, box);\n }\n /**\n * Send command to server to resize image\n */\n resize(path, source, name, newname, box) {\n return this.changeImage('resize', path, source, name, newname, box);\n }\n getMessage(resp) {\n return this.options.getMessage(resp);\n }\n isSuccess(resp) {\n return this.options.isSuccess(resp);\n }\n destruct() {\n this.__ajaxInstances.forEach(a => a.destruct());\n this.__ajaxInstances.clear();\n }\n};\nDataProvider = __decorate([\n autobind\n], DataProvider);\nexport default DataProvider;\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { ContextMenu } from \"../context-menu/context-menu.js\";\nimport DataProvider from \"./data-provider.js\";\nexport function makeDataProvider(parent, options) {\n return new DataProvider(parent, options);\n}\nexport function makeContextMenu(parent) {\n return new ContextMenu(parent);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * Removes a file from the server\n * @private\n */\nexport function deleteFile(fb, name, source) {\n return fb.dataProvider\n .fileRemove(fb.state.currentPath, name, source)\n .then(message => {\n fb.status(message || fb.i18n('File \"%s\" was deleted', name), true);\n })\n .catch(fb.status);\n}\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M621 1280h595v-595zm-45-45l595-595h-595v595zm1152 77v192q0 14-9 23t-23 9h-224v224q0 14-9 23t-23 9h-192q-14 0-23-9t-9-23v-224h-864q-14 0-23-9t-9-23v-864h-224q-14 0-23-9t-9-23v-192q0-14 9-23t23-9h224v-224q0-14 9-23t23-9h192q14 0 23 9t9 23v224h851l246-247q10-9 23-9t23 9q9 10 9 23t-9 23l-247 246v851h224q14 0 23 9t9 23z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 24 24\\\"> <g transform=\\\"translate(-251.000000, -443.000000)\\\"> <g transform=\\\"translate(215.000000, 119.000000)\\\"/> <path d=\\\"M252,448 L256,448 L256,444 L252,444 L252,448 Z M257,448 L269,448 L269,446 L257,446 L257,448 Z M257,464 L269,464 L269,462 L257,462 L257,464 Z M270,444 L270,448 L274,448 L274,444 L270,444 Z M252,462 L252,466 L256,466 L256,462 L252,462 Z M270,462 L270,466 L274,466 L274,462 L270,462 Z M254,461 L256,461 L256,449 L254,449 L254,461 Z M270,461 L272,461 L272,449 L270,449 L270,461 Z\\\"/> </g> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport cropIcon from \"./icons/crop.svg.js\";\nimport resizeIcon from \"./icons/resize.svg.js\";\nConfig.prototype.imageeditor = {\n min_width: 20,\n min_height: 20,\n closeAfterSave: false,\n width: '85%',\n height: '85%',\n crop: true,\n resize: true,\n resizeUseRatio: true,\n resizeMinWidth: 20,\n resizeMinHeight: 20,\n cropUseRatio: true,\n cropDefaultWidth: '70%',\n cropDefaultHeight: '70%'\n};\nIcon.set('crop', cropIcon).set('resize', resizeIcon);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Icon } from \"../../../core/ui/index.js\";\nconst jie = 'jodit-image-editor';\nconst gi = Icon.get.bind(Icon);\nconst act = (el, className = 'jodti-image-editor_active') => el ? className : '';\nexport const form = (editor, o) => {\n const i = editor.i18n.bind(editor);\n const switcher = (label, ref, active = true) => `<div class=\"jodit-form__group\">\n\t\t\t<label class=\"jodit-switcher-wrapper\">\n\t\t\t\t<span class='jodit-switcher'>\n\t\t\t\t\t<input ${act(active, 'checked')} data-ref=\"${ref}\" type=\"checkbox\"/>\n\t\t\t\t\t<span class=\"jodit-switcher__slider\"></span>\n\t\t\t\t</span>\n\t\t\t\t<span>${i(label)}</span>\n\t\t\t</label>\n\t</div>`;\n return editor.create.fromHTML(`<form class=\"${jie} jodit-properties\">\n\t\t<div class=\"jodit-grid jodit-grid_xs-column\">\n\t\t\t<div class=\"jodit_col-lg-3-4 jodit_col-sm-5-5\">\n\t\t\t${o.resize\n ? `<div class=\"${jie}__area ${jie}__area_resize ${jie}_active\">\n\t\t\t\t\t\t\t<div data-ref=\"resizeBox\" class=\"${jie}__box\"></div>\n\t\t\t\t\t\t\t<div class=\"${jie}__resizer\">\n\t\t\t\t\t\t\t\t<i class=\"jodit_bottomright\"></i>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>`\n : ''}\n\t\t\t${o.crop\n ? `<div class=\"${jie}__area ${jie}__area_crop ${act(!o.resize)}\">\n\t\t\t\t\t\t\t<div data-ref=\"cropBox\" class=\"${jie}__box\">\n\t\t\t\t\t\t\t\t<div class=\"${jie}__croper\">\n\t\t\t\t\t\t\t\t\t<i class=\"jodit_bottomright\"></i>\n\t\t\t\t\t\t\t\t\t<i class=\"${jie}__sizes\"></i>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>`\n : ''}\n\t\t\t</div>\n\t\t\t<div class=\"jodit_col-lg-1-4 jodit_col-sm-5-5\">\n\t\t\t${o.resize\n ? `<div data-area=\"resize\" class=\"${jie}__slider ${jie}_active\">\n\t\t\t\t\t\t\t<div class=\"${jie}__slider-title\">\n\t\t\t\t\t\t\t\t${gi('resize')}\n\t\t\t\t\t\t\t\t${i('Resize')}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"${jie}__slider-content\">\n\t\t\t\t\t\t\t\t<div class=\"jodit-form__group\">\n\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t${i('Width')}\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<input type=\"number\" data-ref=\"widthInput\" class=\"jodit-input\"/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"jodit-form__group\">\n\t\t\t\t\t\t\t\t\t<label>\n\t\t\t\t\t\t\t\t\t\t${i('Height')}\n\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t<input type=\"number\" data-ref=\"heightInput\" class=\"jodit-input\"/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t${switcher('Keep Aspect Ratio', 'keepAspectRatioResize')}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>`\n : ''}\n\t\t\t${o.crop\n ? `<div data-area=\"crop\" class=\"${jie}__slider ${act(!o.resize)}'\">\n\t\t\t\t\t\t\t<div class=\"${jie}__slider-title\">\n\t\t\t\t\t\t\t\t${gi('crop')}\n\t\t\t\t\t\t\t\t${i('Crop')}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"${jie}__slider-content\">\n\t\t\t\t\t\t\t\t${switcher('Keep Aspect Ratio', 'keepAspectRatioCrop')}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>`\n : ''}\n\t\t\t</div>\n\t\t</div>\n\t</form>`);\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ImageEditor_1;\nimport { ViewComponent } from \"../../core/component/index.js\";\nimport { autobind, component, debounce, throttle } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/index.js\";\nimport { $$, attr, call, css, refs, toArray, trim } from \"../../core/helpers/index.js\";\nimport { Button } from \"../../core/ui/button/index.js\";\nimport { Config } from \"../../config.js\";\nimport \"./config.js\";\nimport { form } from \"./templates/form.js\";\nconst jie = 'jodit-image-editor';\nconst TABS = {\n resize: 'resize',\n crop: 'crop'\n};\n/**\n * The module allows you to edit the image: resize or cut any part of it\n *\n */\nlet ImageEditor = ImageEditor_1 = class ImageEditor extends ViewComponent {\n /** @override */\n className() {\n return 'ImageEditor';\n }\n get o() {\n return this.options;\n }\n /**\n * Hide image editor\n */\n hide() {\n this._dialog.close();\n }\n /**\n * Open image editor\n * @example\n * ```javascript\n * const jodit = Jodit.make('.editor', {\n *\t\t imageeditor: {\n *\t\t\t\t crop: false,\n *\t\t\t\t closeAfterSave: true,\n *\t\t\t\t width: 500\n *\t\t }\n * });\n * jodit.imageeditor.open('https://xdsoft.net/jodit/images/test.png', function (name, data, success, failed) {\n *\t\t var img = jodit.node.c('img');\n *\t\t img.setAttribute('src', 'https://xdsoft.net/jodit/images/test.png');\n *\t\t if (box.action !== 'resize') {\n *\t\t\t\t\treturn failed('Sorry it is work only in resize mode. For croping use FileBrowser');\n *\t\t }\n *\t\t img.style.width = data.w;\n *\t\t img.style.height = data.h;\n *\t\t jodit.s.insertNode(img);\n *\t\t success();\n * });\n * ```\n */\n open(url, save) {\n return this.j.async.promise((resolve) => {\n const timestamp = new Date().getTime();\n this.image = this.j.c.element('img');\n $$('img,.jodit-icon_loader', this.resize_box).forEach(Dom.safeRemove);\n $$('img,.jodit-icon_loader', this.crop_box).forEach(Dom.safeRemove);\n css(this.cropHandler, 'background', 'transparent');\n this.onSave = save;\n this.resize_box.appendChild(this.j.c.element('i', { class: 'jodit-icon_loader' }));\n this.crop_box.appendChild(this.j.c.element('i', { class: 'jodit-icon_loader' }));\n if (/\\?/.test(url)) {\n url += '&_tst=' + timestamp;\n }\n else {\n url += '?_tst=' + timestamp;\n }\n this.image.setAttribute('src', url);\n this._dialog.open();\n const { widthInput, heightInput } = refs(this.editor);\n const onload = () => {\n if (this.isDestructed) {\n return;\n }\n this.image.removeEventListener('load', onload);\n this.naturalWidth = this.image.naturalWidth;\n this.naturalHeight = this.image.naturalHeight;\n widthInput.value = this.naturalWidth.toString();\n heightInput.value = this.naturalHeight.toString();\n this.ratio = this.naturalWidth / this.naturalHeight;\n this.resize_box.appendChild(this.image);\n this.cropImage = this.image.cloneNode(true);\n this.crop_box.appendChild(this.cropImage);\n Dom.safeRemove.apply(null, $$('.jodit-icon_loader', this.editor));\n if (this.activeTab === TABS.crop) {\n this.showCrop();\n }\n this.j.e.fire(this.resizeHandler, 'updatesize');\n this.j.e.fire(this.cropHandler, 'updatesize');\n this._dialog.setPosition();\n this.j.e.fire('afterImageEditor');\n resolve(this._dialog);\n };\n this.image.addEventListener('load', onload);\n if (this.image.complete) {\n onload();\n }\n });\n }\n onTitleModeClick(e) {\n const self = this, title = e.target;\n const slide = title?.parentElement;\n if (!slide) {\n return;\n }\n $$(`.${jie}__slider,.${jie}__area`, self.editor).forEach(elm => elm.classList.remove(`${jie}_active`));\n slide.classList.add(`${jie}_active`);\n this.activeTab = attr(slide, '-area') || TABS.resize;\n const tab = self.editor.querySelector(`.${jie}__area.${jie}__area_` + self.activeTab);\n if (tab) {\n tab.classList.add(`${jie}_active`);\n }\n if (self.activeTab === TABS.crop) {\n self.showCrop();\n }\n }\n onChangeSizeInput(e) {\n const self = this, input = e.target, { widthInput, heightInput } = refs(this.editor), isWidth = attr(input, 'data-ref') === 'widthInput', x = parseInt(input.value, 10), minX = isWidth ? self.o.min_width : self.o.min_height, minY = !isWidth ? self.o.min_width : self.o.min_height;\n let y;\n if (x > minX) {\n css(self.image, isWidth ? 'width' : 'height', x);\n if (self.resizeUseRatio) {\n y = isWidth\n ? Math.round(x / self.ratio)\n : Math.round(x * self.ratio);\n if (y > minY) {\n css(self.image, !isWidth ? 'width' : 'height', y);\n if (isWidth) {\n heightInput.value = y.toString();\n }\n else {\n widthInput.value = y.toString();\n }\n }\n }\n }\n this.j.e.fire(self.resizeHandler, 'updatesize');\n }\n onResizeHandleMouseDown(e) {\n const self = this;\n self.target = e.target;\n e.preventDefault();\n e.stopImmediatePropagation();\n self.clicked = true;\n self.start_x = e.clientX;\n self.start_y = e.clientY;\n if (self.activeTab === TABS.crop) {\n self.top_x = css(self.cropHandler, 'left');\n self.top_y = css(self.cropHandler, 'top');\n self.width = self.cropHandler.offsetWidth;\n self.height = self.cropHandler.offsetHeight;\n }\n else {\n self.width = self.image.offsetWidth;\n self.height = self.image.offsetHeight;\n }\n self.j.e\n .on(this.j.ow, 'mousemove', this.onGlobalMouseMove)\n .one(this.j.ow, 'mouseup', this.onGlobalMouseUp);\n }\n onGlobalMouseUp(e) {\n if (this.clicked) {\n this.clicked = false;\n e.stopImmediatePropagation();\n this.j.e.off(this.j.ow, 'mousemove', this.onGlobalMouseMove);\n }\n }\n onGlobalMouseMove(e) {\n const self = this;\n if (!self.clicked) {\n return;\n }\n const { widthInput, heightInput } = refs(this.editor);\n self.diff_x = e.clientX - self.start_x;\n self.diff_y = e.clientY - self.start_y;\n if ((self.activeTab === TABS.resize && self.resizeUseRatio) ||\n (self.activeTab === TABS.crop && self.cropUseRatio)) {\n if (self.diff_x) {\n self.new_w = self.width + self.diff_x;\n self.new_h = Math.round(self.new_w / self.ratio);\n }\n else {\n self.new_h = self.height + self.diff_y;\n self.new_w = Math.round(self.new_h * self.ratio);\n }\n }\n else {\n self.new_w = self.width + self.diff_x;\n self.new_h = self.height + self.diff_y;\n }\n if (self.activeTab === TABS.resize) {\n if (self.new_w > self.o.resizeMinWidth) {\n css(self.image, 'width', self.new_w + 'px');\n widthInput.value = self.new_w.toString();\n }\n if (self.new_h > self.o.resizeMinHeight) {\n css(self.image, 'height', self.new_h + 'px');\n heightInput.value = self.new_h.toString();\n }\n this.j.e.fire(self.resizeHandler, 'updatesize');\n }\n else {\n if (self.target !== self.cropHandler) {\n if (self.top_x + self.new_w > self.cropImage.offsetWidth) {\n self.new_w = self.cropImage.offsetWidth - self.top_x;\n }\n if (self.top_y + self.new_h > self.cropImage.offsetHeight) {\n self.new_h = self.cropImage.offsetHeight - self.top_y;\n }\n css(self.cropHandler, {\n width: self.new_w,\n height: self.new_h\n });\n }\n else {\n if (self.top_x + self.diff_x + self.cropHandler.offsetWidth >\n self.cropImage.offsetWidth) {\n self.diff_x =\n self.cropImage.offsetWidth -\n self.top_x -\n self.cropHandler.offsetWidth;\n }\n css(self.cropHandler, 'left', self.top_x + self.diff_x);\n if (self.top_y + self.diff_y + self.cropHandler.offsetHeight >\n self.cropImage.offsetHeight) {\n self.diff_y =\n self.cropImage.offsetHeight -\n self.top_y -\n self.cropHandler.offsetHeight;\n }\n css(self.cropHandler, 'top', self.top_y + self.diff_y);\n }\n this.j.e.fire(self.cropHandler, 'updatesize');\n }\n }\n constructor(editor) {\n super(editor);\n this.resizeUseRatio = true;\n this.cropUseRatio = true;\n this.clicked = false;\n this.start_x = 0;\n this.start_y = 0;\n this.top_x = 0;\n this.top_y = 0;\n this.width = 0;\n this.height = 0;\n this.activeTab = TABS.resize;\n this.naturalWidth = 0;\n this.naturalHeight = 0;\n this.ratio = 0;\n this.new_h = 0;\n this.new_w = 0;\n this.diff_x = 0;\n this.diff_y = 0;\n this.cropBox = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n this.resizeBox = {\n w: 0,\n h: 0\n };\n this.calcCropBox = () => {\n const node = this.crop_box.parentNode, w = node.offsetWidth * 0.8, h = node.offsetHeight * 0.8;\n let wn = w, hn = h;\n const { naturalWidth: nw, naturalHeight: nh } = this;\n if (w > nw && h > nh) {\n wn = nw;\n hn = nh;\n }\n else if (this.ratio > w / h) {\n wn = w;\n hn = nh * (w / nw);\n }\n else {\n wn = nw * (h / nh);\n hn = h;\n }\n css(this.crop_box, {\n width: wn,\n height: hn\n });\n };\n this.showCrop = () => {\n if (!this.cropImage) {\n return;\n }\n this.calcCropBox();\n const w = this.cropImage.offsetWidth ||\n this.image.offsetWidth ||\n this.image.naturalWidth;\n this.new_w = ImageEditor_1.calcValueByPercent(w, this.o.cropDefaultWidth);\n const h = this.cropImage.offsetHeight ||\n this.image.offsetHeight ||\n this.image.naturalHeight;\n if (this.cropUseRatio) {\n this.new_h = this.new_w / this.ratio;\n }\n else {\n this.new_h = ImageEditor_1.calcValueByPercent(h, this.o.cropDefaultHeight);\n }\n css(this.cropHandler, {\n backgroundImage: 'url(' + attr(this.cropImage, 'src') + ')',\n width: this.new_w,\n height: this.new_h,\n left: w / 2 - this.new_w / 2,\n top: h / 2 - this.new_h / 2\n });\n this.j.e.fire(this.cropHandler, 'updatesize');\n };\n this.updateCropBox = () => {\n if (!this.cropImage) {\n return;\n }\n const ratioX = this.cropImage.offsetWidth / this.naturalWidth, ratioY = this.cropImage.offsetHeight / this.naturalHeight;\n this.cropBox.x = css(this.cropHandler, 'left') / ratioX;\n this.cropBox.y = css(this.cropHandler, 'top') / ratioY;\n this.cropBox.w = this.cropHandler.offsetWidth / ratioX;\n this.cropBox.h = this.cropHandler.offsetHeight / ratioY;\n this.sizes.textContent =\n this.cropBox.w.toFixed(0) + 'x' + this.cropBox.h.toFixed(0);\n };\n this.updateResizeBox = () => {\n this.resizeBox.w = this.image.offsetWidth || this.naturalWidth;\n this.resizeBox.h = this.image.offsetHeight || this.naturalHeight;\n };\n this.setHandlers = () => {\n const self = this;\n const { widthInput, heightInput } = refs(this.editor);\n self.j.e\n .on([\n self.editor.querySelector('.jodit_bottomright'),\n self.cropHandler\n ], `mousedown.${jie}`, this.onResizeHandleMouseDown)\n .on(this.j.ow, `resize.${jie}`, () => {\n this.j.e.fire(self.resizeHandler, 'updatesize');\n self.showCrop();\n this.j.e.fire(self.cropHandler, 'updatesize');\n });\n self.j.e\n .on(toArray(this.editor.querySelectorAll(`.${jie}__slider-title`)), 'click', this.onTitleModeClick)\n .on([widthInput, heightInput], 'input', this.onChangeSizeInput);\n const { keepAspectRatioResize, keepAspectRatioCrop } = refs(this.editor);\n if (keepAspectRatioResize) {\n keepAspectRatioResize.addEventListener('change', () => {\n this.resizeUseRatio = keepAspectRatioResize.checked;\n });\n }\n if (keepAspectRatioCrop) {\n keepAspectRatioCrop.addEventListener('change', () => {\n this.cropUseRatio = keepAspectRatioCrop.checked;\n });\n }\n self.j.e\n .on(self.resizeHandler, 'updatesize', () => {\n css(self.resizeHandler, {\n top: 0,\n left: 0,\n width: self.image.offsetWidth || self.naturalWidth,\n height: self.image.offsetHeight || self.naturalHeight\n });\n this.updateResizeBox();\n })\n .on(self.cropHandler, 'updatesize', () => {\n if (!self.cropImage) {\n return;\n }\n let new_x = css(self.cropHandler, 'left'), new_y = css(self.cropHandler, 'top'), new_width = self.cropHandler.offsetWidth, new_height = self.cropHandler.offsetHeight;\n if (new_x < 0) {\n new_x = 0;\n }\n if (new_y < 0) {\n new_y = 0;\n }\n if (new_x + new_width > self.cropImage.offsetWidth) {\n new_width = self.cropImage.offsetWidth - new_x;\n if (self.cropUseRatio) {\n new_height = new_width / self.ratio;\n }\n }\n if (new_y + new_height > self.cropImage.offsetHeight) {\n new_height = self.cropImage.offsetHeight - new_y;\n if (self.cropUseRatio) {\n new_width = new_height * self.ratio;\n }\n }\n css(self.cropHandler, {\n width: new_width,\n height: new_height,\n left: new_x,\n top: new_y,\n backgroundPosition: -new_x - 1 + 'px ' + (-new_y - 1) + 'px',\n backgroundSize: self.cropImage.offsetWidth +\n 'px ' +\n self.cropImage.offsetHeight +\n 'px'\n });\n self.updateCropBox();\n });\n Object.values(self.buttons).forEach(button => {\n button.onAction(() => {\n const data = {\n action: self.activeTab,\n box: self.activeTab === TABS.resize\n ? self.resizeBox\n : self.cropBox\n };\n switch (button) {\n case self.buttons.saveas:\n self.j.prompt('Enter new name', 'Save in new file', (name) => {\n if (!trim(name)) {\n self.j.alert('The name should not be empty');\n return false;\n }\n self.onSave(name, data, self.hide, (e) => {\n self.j.alert(e.message);\n });\n });\n break;\n case self.buttons.save:\n self.onSave(undefined, data, self.hide, (e) => {\n self.j.alert(e.message);\n });\n break;\n case self.buttons.reset:\n if (self.activeTab === TABS.resize) {\n css(self.image, {\n width: null,\n height: null\n });\n widthInput.value = self.naturalWidth.toString();\n heightInput.value = self.naturalHeight.toString();\n self.j.e.fire(self.resizeHandler, 'updatesize');\n }\n else {\n self.showCrop();\n }\n break;\n }\n });\n });\n };\n this.options =\n editor && editor.o && editor.o.imageeditor\n ? editor.o.imageeditor\n : Config.defaultOptions.imageeditor;\n const o = this.options;\n this.resizeUseRatio = o.resizeUseRatio;\n this.cropUseRatio = o.cropUseRatio;\n this.buttons = {\n reset: Button(this.j, 'update', 'Reset'),\n save: Button(this.j, 'save', 'Save'),\n saveas: Button(this.j, 'save', 'Save as ...')\n };\n this.activeTab = o.resize ? TABS.resize : TABS.crop;\n this.editor = form(this.j, this.options);\n const { resizeBox, cropBox } = refs(this.editor);\n this.resize_box = resizeBox;\n this.crop_box = cropBox;\n this.sizes = this.editor.querySelector(`.${jie}__area.${jie}__area_crop .jodit-image-editor__sizes`);\n this.resizeHandler = this.editor.querySelector(`.${jie}__resizer`);\n this.cropHandler = this.editor.querySelector(`.${jie}__croper`);\n this._dialog = this.j.dlg({\n buttons: ['fullsize', 'dialog.close']\n });\n this._dialog.setContent(this.editor);\n this._dialog.setSize(this.o.width, this.o.height);\n this._dialog.setHeader([\n this.buttons.reset,\n this.buttons.save,\n this.buttons.saveas\n ]);\n this.setHandlers();\n }\n /** @override */\n destruct() {\n if (this.isDestructed) {\n return;\n }\n if (this._dialog && !this._dialog.isInDestruct) {\n this._dialog.destruct();\n }\n Dom.safeRemove(this.editor);\n if (this.j.e) {\n this.j.e\n .off(this.j.ow, 'mousemove', this.onGlobalMouseMove)\n .off(this.j.ow, 'mouseup', this.onGlobalMouseUp)\n .off(this.ow, `.${jie}`)\n .off(`.${jie}`);\n }\n super.destruct();\n }\n};\nImageEditor.calcValueByPercent = (value, percent) => {\n const percentStr = percent.toString();\n const valueNbr = parseFloat(value.toString());\n let match;\n match = /^[-+]?[0-9]+(px)?$/.exec(percentStr);\n if (match) {\n return parseInt(percentStr, 10);\n }\n match = /^([-+]?[0-9.]+)%$/.exec(percentStr);\n if (match) {\n return Math.round(valueNbr * (parseFloat(match[1]) / 100));\n }\n return valueNbr || 0;\n};\n__decorate([\n autobind\n], ImageEditor.prototype, \"hide\", null);\n__decorate([\n autobind\n], ImageEditor.prototype, \"open\", null);\n__decorate([\n autobind\n], ImageEditor.prototype, \"onTitleModeClick\", null);\n__decorate([\n debounce(),\n autobind\n], ImageEditor.prototype, \"onChangeSizeInput\", null);\n__decorate([\n autobind\n], ImageEditor.prototype, \"onResizeHandleMouseDown\", null);\n__decorate([\n autobind\n], ImageEditor.prototype, \"onGlobalMouseUp\", null);\n__decorate([\n throttle(10)\n], ImageEditor.prototype, \"onGlobalMouseMove\", null);\nImageEditor = ImageEditor_1 = __decorate([\n component\n], ImageEditor);\nexport { ImageEditor };\n/**\n * Open Image Editor\n */\nexport function openImageEditor(href, name, path, source, onSuccess, onFailed) {\n return this.getInstance('ImageEditor', this.o).open(href, (newname, box, success, failed) => call(box.action === 'resize'\n ? this.dataProvider.resize\n : this.dataProvider.crop, path, source, name, newname, box.box)\n .then(ok => {\n if (ok) {\n success();\n if (onSuccess) {\n onSuccess();\n }\n }\n })\n .catch(error => {\n failed(error);\n if (onFailed) {\n onFailed(error);\n }\n }));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { attr, error } from \"../../../core/helpers/utils/index.js\";\nimport { Icon } from \"../../../core/ui/icon.js\";\nimport { elementsMap } from \"./elements-map.js\";\nimport { makeContextMenu } from \"../factories.js\";\nimport { deleteFile } from \"../fetch/delete-file.js\";\nimport { loadTree } from \"../fetch/load-tree.js\";\nimport { elementToItem, getItem } from \"../listeners/native-listeners.js\";\nimport { openImageEditor } from \"../../image-editor/image-editor.js\";\nconst CLASS_PREVIEW = 'jodit-file-browser-preview', preview_tpl_next = (next = 'next', right = 'right') => `<div class=\"${CLASS_PREVIEW}__navigation ${CLASS_PREVIEW}__navigation_arrow_${next}\">` +\n '' +\n Icon.get('angle-' + right) +\n '</a>';\nexport default (self) => {\n if (!self.o.contextMenu) {\n return () => { };\n }\n const contextmenu = makeContextMenu(self);\n return (e) => {\n const a = getItem(e.target, self.container);\n if (!a) {\n return;\n }\n let item = a;\n const opt = self.options, ga = (key) => attr(item, key) || '';\n self.async.setTimeout(() => {\n const selectedItem = elementToItem(a, elementsMap(self));\n if (!selectedItem) {\n return;\n }\n self.state.activeElements = [selectedItem];\n contextmenu.show(e.clientX, e.clientY, [\n ga('data-is-file') !== '1' &&\n opt.editImage &&\n (self.dataProvider.canI('ImageResize') ||\n self.dataProvider.canI('ImageCrop'))\n ? {\n icon: 'pencil',\n title: 'Edit',\n exec: () => openImageEditor.call(self, ga('href'), ga('data-name'), ga('data-path'), ga('data-source'))\n }\n : false,\n self.dataProvider.canI('FileRename')\n ? {\n icon: 'italic',\n title: 'Rename',\n exec: () => {\n self.e.fire('fileRename.filebrowser', ga('data-name'), ga('data-path'), ga('data-source'));\n }\n }\n : false,\n self.dataProvider.canI('FileRemove')\n ? {\n icon: 'bin',\n title: 'Delete',\n exec: async () => {\n try {\n await deleteFile(self, ga('data-name'), ga('data-source'));\n }\n catch (e) {\n return self.status(e);\n }\n self.state.activeElements = [];\n return loadTree(self).catch(self.status);\n }\n }\n : false,\n opt.preview\n ? {\n icon: 'eye',\n title: 'Preview',\n exec: () => {\n const preview = self.dlg({\n buttons: ['fullsize', 'dialog.close']\n }), temp_content = self.c.div(CLASS_PREVIEW, '<div class=\"jodit-icon_loader\"></div>'), preview_box = self.c.div(CLASS_PREVIEW + '__box'), next = self.c.fromHTML(preview_tpl_next()), prev = self.c.fromHTML(preview_tpl_next('prev', 'left')), addLoadHandler = (src) => {\n const image = self.c.element('img');\n image.setAttribute('src', src);\n const onload = () => {\n if (self.isInDestruct) {\n return;\n }\n self.e.off(image, 'load');\n Dom.detach(temp_content);\n if (opt.showPreviewNavigation) {\n if (Dom.prevWithClass(item, self.files.getFullElName('item'))) {\n temp_content.appendChild(prev);\n }\n if (Dom.nextWithClass(item, self.files.getFullElName('item'))) {\n temp_content.appendChild(next);\n }\n }\n temp_content.appendChild(preview_box);\n preview_box.appendChild(image);\n preview.setPosition();\n self?.events?.fire('previewOpenedAndLoaded');\n };\n self.e.on(image, 'load', onload);\n if (image.complete) {\n onload();\n }\n };\n self.e.on([next, prev], 'click', function () {\n if (this === next) {\n item = Dom.nextWithClass(item, self.files.getFullElName('item'));\n }\n else {\n item = Dom.prevWithClass(item, self.files.getFullElName('item'));\n }\n if (!item) {\n throw error('Need element');\n }\n Dom.detach(temp_content);\n Dom.detach(preview_box);\n temp_content.innerHTML =\n '<div class=\"jodit-icon_loader\"></div>';\n addLoadHandler(ga('href'));\n });\n self.e.on('beforeDestruct', () => {\n preview.destruct();\n });\n preview.container.classList.add(CLASS_PREVIEW + '__dialog');\n preview.setContent(temp_content);\n preview.setPosition();\n preview.open();\n addLoadHandler(ga('href'));\n self.events\n .on('beforeDestruct', () => {\n preview.destruct();\n })\n .fire('previewOpened');\n }\n }\n : false,\n {\n icon: 'upload',\n title: 'Download',\n exec: () => {\n const url = ga('href');\n if (url) {\n self.ow.open(url);\n }\n }\n }\n ]);\n }, self.defaultTimeout);\n self.e\n .on('beforeClose', () => {\n contextmenu.close();\n })\n .on('beforeDestruct', () => contextmenu.destruct());\n e.stopPropagation();\n e.preventDefault();\n return false;\n };\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { attr, ctrlKey } from \"../../../core/helpers/index.js\";\nimport contextMenu from \"../builders/context-menu.js\";\nimport { elementsMap } from \"../builders/elements-map.js\";\nimport { loadTree } from \"../fetch/load-tree.js\";\n/**\n * @private\n */\nexport const getItem = (node, root, tag = 'a') => Dom.closest(node, elm => Dom.isTag(elm, tag), root);\n/**\n * @private\n */\nexport const elementToItem = (elm, elementsMap) => {\n const { key } = elm.dataset, { item } = elementsMap[key || ''];\n return item;\n};\n/**\n * @private\n */\nexport function nativeListeners() {\n let dragElement = false;\n const elmMap = elementsMap(this);\n const self = this;\n self.e\n .on(self.tree.container, 'dragstart', (e) => {\n const a = getItem(e.target, self.container);\n if (!a) {\n return;\n }\n if (self.o.moveFolder) {\n dragElement = a;\n }\n })\n .on(self.tree.container, 'drop', (e) => {\n if ((self.o.moveFile || self.o.moveFolder) && dragElement) {\n let path = attr(dragElement, '-path') || '';\n // move folder\n if (!self.o.moveFolder &&\n dragElement.classList.contains(this.tree.getFullElName('item'))) {\n return false;\n }\n // move file\n if (dragElement.classList.contains(this.files.getFullElName('item'))) {\n path += attr(dragElement, '-name');\n if (!self.o.moveFile) {\n return false;\n }\n }\n const a = getItem(e.target, self.container);\n if (!a) {\n return;\n }\n self.dataProvider\n .move(path, attr(a, '-path') || '', attr(a, '-source') || '', dragElement.classList.contains(this.files.getFullElName('item')))\n .then(() => loadTree(this))\n .catch(self.status);\n dragElement = false;\n }\n })\n .on(self.files.container, 'contextmenu', contextMenu(self))\n .on(self.files.container, 'click', (e) => {\n if (!ctrlKey(e)) {\n this.state.activeElements = [];\n }\n })\n .on(self.files.container, 'click', (e) => {\n const a = getItem(e.target, self.container);\n if (!a) {\n return;\n }\n const item = elementToItem(a, elmMap);\n if (!item) {\n return;\n }\n if (!ctrlKey(e)) {\n self.state.activeElements = [item];\n }\n else {\n self.state.activeElements = [\n ...self.state.activeElements,\n item\n ];\n }\n e.stopPropagation();\n return false;\n })\n .on(self.files.container, 'dragstart', (e) => {\n if (self.o.moveFile) {\n const a = getItem(e.target, self.container);\n if (!a) {\n return;\n }\n dragElement = a;\n }\n })\n .on(self.container, 'drop', (e) => e.preventDefault());\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { normalizePath } from \"../../../core/helpers/index.js\";\nimport { isValidName } from \"../../../core/helpers/checker/index.js\";\nimport { DEFAULT_SOURCE_NAME } from \"../data-provider.js\";\nimport { deleteFile } from \"../fetch/delete-file.js\";\nimport { loadItems } from \"../fetch/load-items.js\";\nimport { loadTree } from \"../fetch/load-tree.js\";\nimport { openImageEditor } from \"../../image-editor/image-editor.js\";\n/**\n * @private\n */\nexport function selfListeners() {\n const state = this.state, dp = this.dataProvider, self = this;\n self.e\n .on('view.filebrowser', (view) => {\n if (view !== state.view) {\n state.view = view;\n }\n })\n .on('sort.filebrowser', (value) => {\n if (value !== state.sortBy) {\n state.sortBy = value;\n loadItems(self);\n }\n })\n .on('filter.filebrowser', (value) => {\n if (value !== state.filterWord) {\n state.filterWord = value;\n loadItems(self);\n }\n })\n .on('openFolder.filebrowser', (data) => {\n let path;\n if (data.name === '..') {\n path = data.path\n .split('/')\n .filter((p) => p.length)\n .slice(0, -1)\n .join('/');\n }\n else {\n path = normalizePath(data.path, data.name);\n }\n self.state.currentPath = path;\n self.state.currentSource =\n data.name === '.' ? DEFAULT_SOURCE_NAME : data.source;\n })\n .on('removeFolder.filebrowser', (data) => {\n self.confirm('Are you sure?', 'Delete', (yes) => {\n if (yes) {\n dp.folderRemove(data.path, data.name, data.source)\n .then(message => {\n self.status(message, true);\n return loadTree(self);\n })\n .catch(self.status);\n }\n });\n })\n .on('renameFolder.filebrowser', (data) => {\n self.prompt('Enter new name', 'Rename', (newName) => {\n if (!isValidName(newName)) {\n self.status(self.i18n('Enter new name'));\n return false;\n }\n dp.folderRename(data.path, data.name, newName, data.source)\n .then(message => {\n self.state.activeElements = [];\n self.status(message, true);\n return loadTree(self);\n })\n .catch(self.status);\n return;\n }, 'type name', data.name);\n })\n .on('addFolder.filebrowser', (data) => {\n self.prompt('Enter Directory name', 'Create directory', (name) => {\n dp.createFolder(name, data.path, data.source)\n .then(() => loadTree(self))\n .catch(self.status);\n }, 'type name');\n })\n .on('fileRemove.filebrowser', () => {\n if (self.state.activeElements.length) {\n self.confirm('Are you sure?', '', (yes) => {\n if (yes) {\n const promises = [];\n self.state.activeElements.forEach(item => {\n promises.push(deleteFile(self, item.file || item.name || '', item.sourceName));\n });\n self.state.activeElements = [];\n Promise.all(promises).then(() => loadTree(self).catch(self.status), self.status);\n }\n });\n }\n })\n .on('edit.filebrowser', () => {\n if (self.state.activeElements.length === 1) {\n const [file] = this.state.activeElements;\n openImageEditor.call(self, file.fileURL, file.file || '', file.path, file.sourceName);\n }\n })\n .on('fileRename.filebrowser', (name, path, source) => {\n if (self.state.activeElements.length === 1) {\n self.prompt('Enter new name', 'Rename', (newName) => {\n if (!isValidName(newName)) {\n self.status(self.i18n('Enter new name'));\n return false;\n }\n dp.fileRename(path, name, newName, source)\n .then(message => {\n self.state.activeElements = [];\n self.status(message, true);\n loadItems(self);\n })\n .catch(self.status);\n return;\n }, 'type name', name);\n }\n })\n .on('update.filebrowser', () => {\n loadTree(this).then(this.status, this.status);\n });\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { normalizePath } from \"../../../core/helpers/normalize/index.js\";\nimport { Button } from \"../../../core/ui/button/button/button.js\";\nimport { elementsMap } from \"../builders/elements-map.js\";\nimport { loadTree } from \"../fetch/load-tree.js\";\nconst DEFAULT_SOURCE_NAME = 'default';\n/**\n * Convert state to view\n * @private\n */\nexport function stateListeners() {\n const elmMap = elementsMap(this);\n const { state, files, create, options } = this, getDomElement = (item) => {\n const key = item.uniqueHashKey;\n if (elmMap[key]) {\n return elmMap[key].elm;\n }\n const elm = create.fromHTML(options.getThumbTemplate.call(this, item, item.source, item.sourceName.toString()));\n elm.dataset.key = key;\n elmMap[key] = {\n item,\n elm\n };\n return elmMap[key].elm;\n };\n state\n .on(['change.currentPath', 'change.currentSource'], this.async.debounce(() => {\n if (this.o.saveStateInStorage &&\n this.o.saveStateInStorage.storeLastOpenedFolder) {\n this.storage\n .set('currentPath', this.state.currentPath)\n .set('currentSource', this.state.currentSource);\n }\n loadTree(this).catch(this.status);\n }, this.defaultTimeout))\n .on('beforeChange.activeElements', () => {\n state.activeElements.forEach(item => {\n const key = item.uniqueHashKey, { elm } = elmMap[key];\n elm &&\n elm.classList.remove(files.getFullElName('item', 'active', true));\n });\n })\n .on('change.activeElements', () => {\n this.e.fire('changeSelection');\n state.activeElements.forEach(item => {\n const key = item.uniqueHashKey, { elm } = elmMap[key];\n elm &&\n elm.classList.add(files.getFullElName('item', 'active', true));\n });\n })\n .on('change.view', () => {\n files.setMod('view', state.view);\n if (this.o.saveStateInStorage &&\n this.o.saveStateInStorage.storeView) {\n this.storage.set('view', state.view);\n }\n })\n .on('change.sortBy', () => {\n if (this.o.saveStateInStorage &&\n this.o.saveStateInStorage.storeSortBy) {\n this.storage.set('sortBy', state.sortBy);\n }\n })\n .on('change.elements', this.async.debounce(() => {\n Dom.detach(files.container);\n if (state.elements.length) {\n state.elements.forEach(item => {\n this.files.container.appendChild(getDomElement(item));\n });\n }\n else {\n files.container.appendChild(create.div(this.componentName + '_no-files_true', this.i18n('There are no files')));\n }\n }, this.defaultTimeout))\n .on('change.sources', this.async.debounce(() => {\n Dom.detach(this.tree.container);\n state.sources.forEach(source => {\n const sourceName = source.name;\n if (sourceName && sourceName !== DEFAULT_SOURCE_NAME) {\n this.tree.container.appendChild(create.div(this.tree.getFullElName('source-title'), sourceName));\n }\n source.folders.forEach((name) => {\n const folderElm = create.a(this.tree.getFullElName('item'), {\n draggable: 'draggable',\n href: '#',\n 'data-path': normalizePath(source.path, name + '/'),\n 'data-name': name,\n 'data-source': sourceName,\n 'data-source-path': source.path\n }, create.span(this.tree.getFullElName('item-title'), name));\n const action = (actionName) => (e) => {\n this.e.fire(`${actionName}.filebrowser`, {\n name,\n path: normalizePath(source.path + '/'),\n source: sourceName\n });\n e.stopPropagation();\n e.preventDefault();\n };\n this.e.on(folderElm, 'click', action('openFolder'));\n this.tree.container.appendChild(folderElm);\n if (name === '..' || name === '.') {\n return;\n }\n if (options.renameFolder &&\n this.dataProvider.canI('FolderRename')) {\n const btn = Button(this, {\n icon: { name: 'pencil' },\n name: 'rename',\n tooltip: 'Rename',\n size: 'tiny'\n });\n btn.onAction(action('renameFolder'));\n folderElm.appendChild(btn.container);\n }\n if (options.deleteFolder &&\n this.dataProvider.canI('FolderRemove')) {\n const btn = Button(this, {\n icon: { name: 'cancel' },\n name: 'remove',\n tooltip: 'Delete',\n size: 'tiny'\n });\n btn.onAction(action('removeFolder'));\n folderElm.appendChild(btn.container);\n }\n });\n if (options.createNewFolder &&\n this.dataProvider.canI('FolderCreate')) {\n const button = Button(this, 'plus', 'Add folder', 'secondary');\n button.onAction(() => {\n this.e.fire('addFolder', {\n path: normalizePath(source.path + '/'),\n source: sourceName\n });\n });\n this.tree.append(button);\n }\n });\n }, this.defaultTimeout));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { UIGroup } from \"../../../../core/ui/index.js\";\nexport class FileBrowserFiles extends UIGroup {\n className() {\n return 'FileBrowserFiles';\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { UIGroup } from \"../../../../core/ui/index.js\";\nexport class FileBrowserTree extends UIGroup {\n className() {\n return 'FileBrowserTree';\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { STATUSES } from \"../../core/component/index.js\";\nimport * as consts from \"../../core/constants.js\";\nimport { IS_PROD } from \"../../core/constants.js\";\nimport { autobind, cache, derive } from \"../../core/decorators/index.js\";\nimport { watch } from \"../../core/decorators/watch/watch.js\";\nimport { observable } from \"../../core/event-emitter/index.js\";\nimport { ConfigProto, error, isAbortError, isFunction, isString, trim } from \"../../core/helpers/index.js\";\nimport { Storage } from \"../../core/storage/index.js\";\nimport { Dlgs } from \"../../core/traits/dlgs.js\";\nimport { ViewWithToolbar } from \"../../core/view/view-with-toolbar.js\";\nimport { Config } from \"../../config.js\";\nimport \"./config.js\";\nimport { loadItems } from \"./fetch/load-items.js\";\nimport { loadTree } from \"./fetch/load-tree.js\";\nimport { nativeListeners } from \"./listeners/native-listeners.js\";\nimport { selfListeners } from \"./listeners/self-listeners.js\";\nimport { stateListeners } from \"./listeners/state-listeners.js\";\nimport { DEFAULT_SOURCE_NAME } from \"./data-provider.js\";\nimport { makeDataProvider } from \"./factories.js\";\nimport { FileBrowserFiles, FileBrowserTree } from \"./ui/index.js\";\nlet FileBrowser = class FileBrowser extends ViewWithToolbar {\n /** @override */\n className() {\n return 'FileBrowser';\n }\n get dataProvider() {\n return makeDataProvider(this, this.options);\n }\n // eslint-disable-next-line no-unused-vars\n onSelect(callback) {\n return () => {\n if (this.state.activeElements.length) {\n const files = [];\n const isImages = [];\n this.state.activeElements.forEach(elm => {\n const url = elm.fileURL;\n if (url) {\n files.push(url);\n isImages.push(elm.isImage || false);\n }\n });\n this.close();\n const data = {\n baseurl: '',\n files,\n isImages\n };\n if (isFunction(callback)) {\n callback(data);\n }\n this.close();\n }\n return false;\n };\n }\n get _dialog() {\n const dialog = this.dlg({\n minWidth: Math.min(700, screen.width),\n minHeight: 300,\n buttons: this.o.headerButtons ?? ['fullsize', 'dialog.close']\n });\n ['beforeClose', 'afterClose', 'beforeOpen'].forEach(proxyEvent => dialog.events.on(dialog, proxyEvent, () => this.e.fire(proxyEvent)));\n dialog.setSize(this.o.width, this.o.height);\n return dialog;\n }\n /**\n * Container for set/get value\n */\n get storage() {\n return Storage.makeStorage(Boolean(this.o.saveStateInStorage), this.componentName);\n }\n get isOpened() {\n return this._dialog.isOpened && this.browser.style.display !== 'none';\n }\n /**\n * It displays a message in the status bar of filebrowser\n *\n * @param message - The message that will be displayed\n * @param success - true It will be shown a message light . If no option is specified ,\n * ßan error will be shown the red\n * @example\n * ```javascript\n * parent.filebrowser.status('There was an error uploading file', false);\n * ```\n */\n status(message, success) {\n if (!message || isAbortError(message)) {\n return;\n }\n if (!isString(message)) {\n message = message.message;\n }\n if (!isString(message) || !trim(message).length) {\n return;\n }\n this.message.message(message, success ? 'success' : 'error', this.o.howLongShowMsg);\n }\n /**\n * It opens a web browser window\n *\n * @param callback - The function that will be called after the file selection in the browser\n * @param onlyImages - Show only images\n * @example\n * ```javascript\n * var fb = new Jodit.modules.FileBrowser(parent);\n * fb.open(function (data) {\n * var i;\n * for (i = 0;i < data.files.length; i += 1) {\n * parent.s.insertImage(data.baseurl + data.files[i]);\n * }\n * });\n * ```\n */\n open(callback = this.o\n .defaultCallback, onlyImages = false) {\n this.state.onlyImages = onlyImages;\n return this.async\n .promise((resolve, reject) => {\n if (!this.o.items || !this.o.items.url) {\n throw error('Need set options.filebrowser.ajax.url');\n }\n let localTimeout = 0;\n this.e\n .off(this.files.container, 'dblclick')\n .on(this.files.container, 'dblclick', this.onSelect(callback))\n .on(this.files.container, 'touchstart', () => {\n const now = new Date().getTime();\n if (now - localTimeout <\n consts.EMULATE_DBLCLICK_TIMEOUT) {\n this.onSelect(callback)();\n }\n localTimeout = now;\n })\n .off('select.filebrowser')\n .on('select.filebrowser', this.onSelect(callback));\n const header = this.c.div();\n this.toolbar?.appendTo(header);\n this.__updateToolbarButtons();\n this._dialog.open(this.browser, header);\n this.e.fire('sort.filebrowser', this.state.sortBy);\n loadTree(this)\n .then(resolve, reject)\n .finally(() => {\n if (this.isInDestruct) {\n return;\n }\n this?.e?.fire('fileBrowserReady.filebrowser');\n });\n })\n .catch((e) => {\n if (!isAbortError(e) && !IS_PROD) {\n throw e;\n }\n });\n }\n __getButtons() {\n const options = (this.o.buttons ?? []);\n return options.filter((btn) => {\n if (!isString(btn)) {\n return true;\n }\n switch (btn) {\n case 'filebrowser.upload':\n return this.dataProvider.canI('FileUpload');\n case 'filebrowser.edit':\n return (this.dataProvider.canI('ImageResize') ||\n this.dataProvider.canI('ImageCrop'));\n case 'filebrowser.remove':\n return this.dataProvider.canI('FileRemove');\n }\n return true;\n });\n }\n initUploader(editor) {\n const self = this, options = editor?.options?.uploader, uploaderOptions = ConfigProto(options || {}, Config.defaultOptions.uploader);\n const uploadHandler = () => loadItems(this);\n self.uploader = self.getInstance('Uploader', uploaderOptions);\n self.uploader\n .setPath(self.state.currentPath)\n .setSource(self.state.currentSource)\n .bind(self.browser, uploadHandler, self.errorHandler);\n this.state.on(['change.currentPath', 'change.currentSource'], () => {\n this.uploader\n .setPath(this.state.currentPath)\n .setSource(this.state.currentSource);\n });\n self.e.on('bindUploader.filebrowser', (button) => {\n self.uploader.bind(button, uploadHandler, self.errorHandler);\n });\n }\n constructor(options) {\n super(options);\n this.browser = this.c.div(this.componentName);\n this.status_line = this.c.div(this.getFullElName('status'));\n this.tree = new FileBrowserTree(this);\n this.files = new FileBrowserFiles(this);\n this.state = observable({\n currentPath: '',\n currentSource: DEFAULT_SOURCE_NAME,\n currentBaseUrl: '',\n activeElements: [],\n elements: [],\n sources: [],\n view: 'tiles',\n sortBy: 'changed-desc',\n filterWord: '',\n onlyImages: false\n });\n this.errorHandler = (resp) => {\n if (isAbortError(resp)) {\n return;\n }\n if (resp instanceof Error) {\n this.status(this.i18n(resp.message));\n }\n else {\n this.status(this.dataProvider.getMessage(resp));\n }\n };\n /**\n * Close dialog\n */\n this.close = () => {\n this._dialog.close();\n };\n this.__prevButtons = [];\n this.attachEvents(options);\n const self = this;\n self.options = ConfigProto(options || {}, Config.defaultOptions.filebrowser);\n self.browser.component = this;\n self.container = self.browser;\n if (self.o.showFoldersPanel) {\n self.browser.appendChild(self.tree.container);\n }\n self.browser.appendChild(self.files.container);\n self.browser.appendChild(self.status_line);\n selfListeners.call(self);\n nativeListeners.call(self);\n stateListeners.call(self);\n const keys = [\n 'getLocalFileByUrl',\n 'crop',\n 'resize',\n 'create',\n 'fileMove',\n 'folderMove',\n 'fileRename',\n 'folderRename',\n 'fileRemove',\n 'folderRemove',\n 'folder',\n 'items',\n 'permissions'\n ];\n keys.forEach(key => {\n if (this.options[key] != null) {\n this.options[key] = ConfigProto(this.options[key], this.o.ajax);\n }\n });\n const { storeView, storeSortBy, storeLastOpenedFolder } = this.o\n .saveStateInStorage || {\n storeLastOpenedFolder: false,\n storeView: false,\n storeSortBy: false\n };\n const view = storeView && this.storage.get('view');\n if (view && this.o.view == null) {\n self.state.view = view === 'list' ? 'list' : 'tiles';\n }\n else {\n self.state.view = self.o.view === 'list' ? 'list' : 'tiles';\n }\n self.files.setMod('view', self.state.view);\n const sortBy = storeSortBy && self.storage.get('sortBy');\n if (sortBy) {\n const parts = sortBy.split('-');\n self.state.sortBy = ['changed', 'name', 'size'].includes(parts[0])\n ? sortBy\n : 'changed-desc';\n }\n else {\n self.state.sortBy = self.o.sortBy || 'changed-desc';\n }\n if (storeLastOpenedFolder) {\n const currentPath = self.storage.get('currentPath'), currentSource = self.storage.get('currentSource');\n self.state.currentPath = currentPath ?? '';\n self.state.currentSource = currentSource ?? '';\n }\n self.initUploader(self);\n self.setStatus(STATUSES.ready);\n }\n destruct() {\n if (this.isInDestruct) {\n return;\n }\n super.destruct();\n this._dialog.destruct();\n this.events && this.e.off('.filebrowser');\n this.uploader && this.uploader.destruct();\n }\n __updateToolbarButtons() {\n const buttons = this.__getButtons();\n if (isEqualButtonList(this.__prevButtons, buttons)) {\n return;\n }\n this.__prevButtons = buttons;\n this.toolbar?.build(buttons);\n }\n};\n__decorate([\n cache\n], FileBrowser.prototype, \"dataProvider\", null);\n__decorate([\n cache\n], FileBrowser.prototype, \"_dialog\", null);\n__decorate([\n cache\n], FileBrowser.prototype, \"storage\", null);\n__decorate([\n autobind\n], FileBrowser.prototype, \"status\", null);\n__decorate([\n autobind\n], FileBrowser.prototype, \"open\", null);\n__decorate([\n watch('dataProvider:changePermissions')\n], FileBrowser.prototype, \"__updateToolbarButtons\", null);\nFileBrowser = __decorate([\n derive(Dlgs)\n], FileBrowser);\nexport { FileBrowser };\nfunction isEqualButtonList(prevButtons, buttons) {\n if (prevButtons.length !== buttons.length) {\n return false;\n }\n for (let i = 0; i < prevButtons.length; i++) {\n if (prevButtons[i] !== buttons[i]) {\n return false;\n }\n }\n return true;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { STATUSES, ViewComponent } from \"../component/index.js\";\nimport { autobind } from \"../decorators/index.js\";\nimport { isJoditObject } from \"../helpers/checker/is-jodit-object.js\";\nexport class Plugin extends ViewComponent {\n /** @override */\n className() {\n return 'Plugin';\n }\n constructor(jodit) {\n super(jodit);\n /** @override */\n this.buttons = [];\n /**\n * Plugin have CSS style and it should be loaded\n */\n this.hasStyle = false;\n this.__inited = false;\n jodit.e\n .on('afterPluginSystemInit', this.__afterPluginSystemInit)\n .on('afterInit', this.__afterInit)\n .on('beforeDestruct', this.__beforeDestruct);\n }\n __afterPluginSystemInit() {\n const { j, buttons } = this;\n if (buttons && isJoditObject(j)) {\n buttons.forEach(btn => {\n j.registerButton(btn);\n });\n }\n }\n __afterInit() {\n this.__inited = true;\n this.setStatus(STATUSES.ready);\n this.afterInit(this.jodit);\n }\n init(jodit) {\n if (this.jodit.isReady) {\n this.afterInit(this.jodit);\n this.__afterPluginSystemInit();\n this.jodit.e.fire('rebuildToolbar');\n }\n }\n __beforeDestruct() {\n if (this.isInDestruct) {\n return;\n }\n const { j } = this;\n j.e\n .off('afterPluginSystemInit', this.__afterPluginSystemInit)\n .off('afterInit', this.__afterInit)\n .off('beforeDestruct', this.destruct);\n this.setStatus(STATUSES.beforeDestruct);\n if (!this.__inited) {\n return super.destruct();\n }\n if (isJoditObject(j)) {\n this.buttons?.forEach(btn => {\n j?.unregisterButton(btn);\n });\n }\n this.beforeDestruct(this.j);\n super.destruct();\n }\n}\nPlugin.requires = [];\n__decorate([\n autobind\n], Plugin.prototype, \"__afterPluginSystemInit\", null);\n__decorate([\n autobind\n], Plugin.prototype, \"__afterInit\", null);\n__decorate([\n autobind\n], Plugin.prototype, \"__beforeDestruct\", null);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport class Command {\n undo() {\n this.history.snapshot.restore(this.oldValue);\n }\n redo() {\n this.history.snapshot.restore(this.newValue);\n }\n constructor(oldValue, newValue, history, tick) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n this.history = history;\n this.tick = tick;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { ViewComponent } from \"../../core/component/index.js\";\nimport { IS_PROD, TEMP_ATTR } from \"../../core/constants.js\";\nimport { Dom } from \"../../core/dom/index.js\";\n/**\n * Module for creating snapshot of editor which includes html content and the current selection\n */\nexport class Snapshot extends ViewComponent {\n constructor() {\n super(...arguments);\n this.__isBlocked = false;\n }\n /** @override */\n className() {\n return 'Snapshot';\n }\n /**\n * Compare two snapshotes, if and htmls and selections match, then return true\n *\n * @param first - the first snapshote\n * @param second - second shot\n */\n static equal(first, second) {\n return (first.html === second.html &&\n JSON.stringify(first.range) === JSON.stringify(second.range));\n }\n /**\n * Calc count element before some node in parentNode. All text nodes are joined\n */\n static countNodesBeforeInParent(elm) {\n if (!elm.parentNode) {\n return 0;\n }\n const elms = elm.parentNode.childNodes;\n let count = 0, previous = null;\n for (let j = 0; j < elms.length; j += 1) {\n if (previous &&\n !this.isIgnoredNode(elms[j]) &&\n !(Dom.isText(previous) && Dom.isText(elms[j]))) {\n count += 1;\n }\n if (elms[j] === elm) {\n return count;\n }\n previous = elms[j];\n }\n return 0;\n }\n /**\n * Calc normal offset in joined text nodes\n */\n static strokeOffset(elm, offset) {\n while (Dom.isText(elm)) {\n elm = elm.previousSibling;\n if (Dom.isText(elm) && elm.nodeValue) {\n offset += elm.nodeValue.length;\n }\n }\n return offset;\n }\n /**\n * Calc whole hierarchy path before some element in editor's tree\n */\n calcHierarchyLadder(elm) {\n const counts = [];\n if (!elm || !elm.parentNode || !Dom.isOrContains(this.j.editor, elm)) {\n return [];\n }\n while (elm && elm !== this.j.editor) {\n if (elm && !Snapshot.isIgnoredNode(elm)) {\n counts.push(Snapshot.countNodesBeforeInParent(elm));\n }\n elm = elm.parentNode;\n }\n return counts.reverse();\n }\n getElementByLadder(ladder) {\n let n = this.j.editor, i;\n for (i = 0; n && i < ladder.length; i += 1) {\n n = n.childNodes[ladder[i]];\n }\n return n;\n }\n get isBlocked() {\n return this.__isBlocked;\n }\n __block(enable) {\n this.__isBlocked = enable;\n }\n transaction(changes) {\n this.__block(true);\n try {\n changes();\n }\n catch (e) {\n if (!IS_PROD) {\n throw e;\n }\n }\n this.__block(false);\n }\n /**\n * Creates object a snapshot of editor: html and the current selection. Current selection calculate by\n * offset by start document\n * \\{html: string, range: \\{startContainer: int, startOffset: int, endContainer: int, endOffset: int\\}\\} or\n * \\{html: string\\} without selection\n */\n make() {\n const snapshot = {\n html: '',\n range: {\n startContainer: [],\n startOffset: 0,\n endContainer: [],\n endOffset: 0\n }\n };\n snapshot.html = this.removeJoditSelection(this.j.editor);\n const sel = this.j.s.sel;\n if (sel && sel.rangeCount) {\n const range = sel.getRangeAt(0), startContainer = this.calcHierarchyLadder(range.startContainer), endContainer = this.calcHierarchyLadder(range.endContainer);\n let startOffset = Snapshot.strokeOffset(range.startContainer, range.startOffset), endOffset = Snapshot.strokeOffset(range.endContainer, range.endOffset);\n if (!startContainer.length &&\n range.startContainer !== this.j.editor) {\n startOffset = 0;\n }\n if (!endContainer.length && range.endContainer !== this.j.editor) {\n endOffset = 0;\n }\n snapshot.range = {\n startContainer,\n startOffset,\n endContainer,\n endOffset\n };\n }\n return snapshot;\n }\n /**\n * Restores the state of the editor of the snapshot. Rebounding is not only html but selected text\n *\n * @param snapshot - snapshot of editor resulting from the `[[Snapshot.make]]` method\n * @see make\n */\n restore(snapshot) {\n this.transaction(() => {\n const scroll = this.storeScrollState();\n const value = this.j.getNativeEditorValue();\n if (value !== snapshot.html) {\n this.j.value = snapshot.html;\n }\n this.restoreOnlySelection(snapshot);\n this.restoreScrollState(scroll);\n });\n }\n storeScrollState() {\n return [this.j.ow.scrollY, this.j.editor.scrollTop];\n }\n restoreScrollState(scrolls) {\n const { j } = this, { ow } = j;\n ow.scrollTo(ow.scrollX, scrolls[0]);\n j.editor.scrollTop = scrolls[1];\n }\n /**\n * Restore selection from snapshot\n *\n * @param snapshot - snapshot of editor resulting from the [[Snapshot.make]] method\n * @see make\n */\n restoreOnlySelection(snapshot) {\n try {\n if (snapshot.range) {\n const range = this.j.ed.createRange();\n range.setStart(this.getElementByLadder(snapshot.range.startContainer), snapshot.range.startOffset);\n range.setEnd(this.getElementByLadder(snapshot.range.endContainer), snapshot.range.endOffset);\n this.j.s.selectRange(range);\n }\n }\n catch (__ignore) {\n this.j.editor.lastChild &&\n this.j.s.setCursorAfter(this.j.editor.lastChild);\n if (!IS_PROD) {\n // tslint:disable-next-line:no-console\n console.warn('Broken snapshot', __ignore);\n }\n }\n }\n destruct() {\n this.__block(false);\n super.destruct();\n }\n static isIgnoredNode(node) {\n return (Dom.isText(node) && !node.nodeValue) || Dom.isTemporary(node);\n }\n removeJoditSelection(node) {\n const clone = node.cloneNode(true);\n clone.querySelectorAll(`[${TEMP_ATTR}]`).forEach(Dom.unwrap);\n return clone.innerHTML;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport class Stack {\n constructor(size) {\n this.size = size;\n this.commands = [];\n this.stackPosition = -1;\n }\n get length() {\n return this.commands.length;\n }\n clearRedo() {\n this.commands.length = this.stackPosition + 1;\n }\n clear() {\n this.commands.length = 0;\n this.stackPosition = -1;\n }\n push(command) {\n this.clearRedo();\n this.commands.push(command);\n this.stackPosition += 1;\n if (this.commands.length > this.size) {\n this.commands.shift();\n this.stackPosition -= 1;\n }\n }\n replace(command) {\n this.commands[this.stackPosition] = command;\n }\n current() {\n return this.commands[this.stackPosition];\n }\n undo() {\n if (this.canUndo()) {\n if (this.commands[this.stackPosition]) {\n this.commands[this.stackPosition].undo();\n }\n this.stackPosition -= 1;\n return true;\n }\n return false;\n }\n redo() {\n if (this.canRedo()) {\n this.stackPosition += 1;\n if (this.commands[this.stackPosition]) {\n this.commands[this.stackPosition].redo();\n }\n return true;\n }\n return false;\n }\n canUndo() {\n return this.stackPosition >= 0;\n }\n canRedo() {\n return this.stackPosition < this.commands.length - 1;\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ViewComponent } from \"../../core/component/index.js\";\nimport { debounce } from \"../../core/decorators/index.js\";\nimport { Config } from \"../../config.js\";\nimport { Command } from \"./command.js\";\nimport { Snapshot } from \"./snapshot.js\";\nimport { Stack } from \"./stack.js\";\nConfig.prototype.history = {\n enable: true,\n maxHistoryLength: Infinity,\n timeout: 1000\n};\n/**\n * The module monitors the status of the editor and creates / deletes the required number of Undo / Redo shots .\n */\nexport class History extends ViewComponent {\n /** @override */\n className() {\n return 'History';\n }\n /**\n * Return state of the WYSIWYG editor to step back\n */\n redo() {\n if (this.__stack.redo()) {\n this.startValue = this.snapshot.make();\n this.fireChangeStack();\n }\n }\n canRedo() {\n return this.__stack.canRedo();\n }\n /**\n * Return the state of the WYSIWYG editor to step forward\n */\n undo() {\n if (this.__stack.undo()) {\n this.startValue = this.snapshot.make();\n this.fireChangeStack();\n }\n }\n canUndo() {\n return this.__stack.canUndo();\n }\n clear() {\n this.startValue = this.snapshot.make();\n this.__stack.clear();\n this.fireChangeStack();\n }\n get length() {\n return this.__stack.length;\n }\n get startValue() {\n return this.__startValue;\n }\n set startValue(value) {\n this.__startValue = value;\n }\n constructor(editor, stack = new Stack(editor.o.history.maxHistoryLength), snapshot = new Snapshot(editor)) {\n super(editor);\n this.updateTick = 0;\n this.__stack = stack;\n this.snapshot = snapshot;\n if (editor.o.history.enable) {\n editor.e.on('afterAddPlace.history', () => {\n if (this.isInDestruct) {\n return;\n }\n this.startValue = this.snapshot.make();\n editor.events\n // save selection\n .on('internalChange internalUpdate', () => {\n this.startValue = this.snapshot.make();\n })\n .on(editor.editor, [\n 'changeSelection',\n 'selectionstart',\n 'selectionchange',\n 'mousedown',\n 'mouseup',\n 'keydown',\n 'keyup'\n ]\n .map(f => f + '.history')\n .join(' '), () => {\n if (this.startValue.html ===\n this.j.getNativeEditorValue()) {\n this.startValue = this.snapshot.make();\n }\n })\n .on(this, 'change.history', this.onChange);\n });\n }\n }\n /**\n * Update change counter\n * @internal\n */\n __upTick() {\n this.updateTick += 1;\n }\n /**\n * Push new command in stack on some changes\n */\n onChange() {\n this.__processChanges();\n }\n /**\n * @internal\n */\n __processChanges() {\n if (this.snapshot.isBlocked || !this.j.o.history.enable) {\n return;\n }\n this.updateStack();\n }\n /**\n * Update history stack\n */\n updateStack(replace = false) {\n const newValue = this.snapshot.make();\n if (!Snapshot.equal(newValue, this.startValue)) {\n const newCommand = new Command(this.startValue, newValue, this, this.updateTick);\n if (replace) {\n const command = this.__stack.current();\n if (command && this.updateTick === command.tick) {\n this.__stack.replace(newCommand);\n }\n }\n else {\n this.__stack.push(newCommand);\n }\n this.startValue = newValue;\n this.fireChangeStack();\n }\n }\n fireChangeStack() {\n this.j && !this.j.isInDestruct && this.j.events?.fire('changeStack');\n }\n destruct() {\n if (this.isInDestruct) {\n return;\n }\n if (this.j.events) {\n this.j.e.off('.history');\n }\n this.snapshot.destruct();\n super.destruct();\n }\n}\n__decorate([\n debounce()\n], History.prototype, \"onChange\", null);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { STATUSES, ViewComponent } from \"../../core/component/index.js\";\nimport { component, derive } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { Elms } from \"../../core/traits/elms.js\";\nimport { Mods } from \"../../core/traits/mods.js\";\nlet StatusBar = class StatusBar extends ViewComponent {\n className() {\n return 'StatusBar';\n }\n /**\n * Hide statusbar\n */\n hide() {\n this.container.classList.add('jodit_hidden');\n }\n /**\n * Show statusbar\n */\n show() {\n this.container.classList.remove('jodit_hidden');\n }\n /**\n * Status bar is shown\n */\n get isShown() {\n return !this.container.classList.contains('jodit_hidden');\n }\n /**\n * Height of statusbar\n */\n getHeight() {\n return this.container?.offsetHeight ?? 0;\n }\n findEmpty(inTheRight = false) {\n const items = this.getElms(inTheRight ? 'item-right' : 'item');\n for (let i = 0; i < items.length; i += 1) {\n if (!items[i].innerHTML.trim().length) {\n return items[i];\n }\n }\n return;\n }\n /**\n * Add element in statusbar\n */\n append(child, inTheRight = false) {\n const wrapper = this.findEmpty(inTheRight) ||\n this.j.c.div(this.getFullElName('item'));\n if (inTheRight) {\n wrapper.classList.add(this.getFullElName('item-right'));\n }\n wrapper.appendChild(child);\n this.container?.appendChild(wrapper);\n if (this.j.o.statusbar) {\n this.show();\n }\n this.j.e.fire('resize');\n }\n constructor(jodit, target) {\n super(jodit);\n this.target = target;\n this.mods = {};\n this.container = jodit.c.div('jodit-status-bar');\n target.appendChild(this.container);\n this.hide();\n }\n destruct() {\n if (this.isInDestruct) {\n return;\n }\n this.setStatus(STATUSES.beforeDestruct);\n Dom.safeRemove(this.container);\n super.destruct();\n }\n};\nStatusBar = __decorate([\n component,\n derive(Mods, Elms)\n], StatusBar);\nexport { StatusBar };\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ViewComponent } from \"../../core/component/index.js\";\nimport * as consts from \"../../core/constants.js\";\nimport { debounce } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/index.js\";\nimport { getContainer } from \"../../core/global.js\";\nimport { $$, attr, cssPath, isNumber, toArray, trim } from \"../../core/helpers/index.js\";\nconst markedValue = new WeakMap();\nexport class Table extends ViewComponent {\n constructor() {\n super(...arguments);\n this.selected = new Set();\n }\n /** @override */\n className() {\n return 'Table';\n }\n __recalculateStyles() {\n const style = getContainer(this.j, Table, 'style', true);\n const selectors = [];\n this.selected.forEach(td => {\n const selector = cssPath(td);\n selector && selectors.push(selector);\n });\n // eslint-disable-next-line no-prototype-builtins\n style.innerHTML = selectors.length\n ? selectors.join(',') +\n `{${this.jodit.options.table.selectionCellStyle}}`\n : '';\n }\n addSelection(td) {\n this.selected.add(td);\n this.__recalculateStyles();\n const table = Dom.closest(td, 'table', this.j.editor);\n if (table) {\n const cells = Table.__selectedByTable.get(table) || new Set();\n cells.add(td);\n Table.__selectedByTable.set(table, cells);\n }\n }\n removeSelection(td) {\n this.selected.delete(td);\n this.__recalculateStyles();\n const table = Dom.closest(td, 'table', this.j.editor);\n if (table) {\n const cells = Table.__selectedByTable.get(table);\n if (cells) {\n cells.delete(td);\n if (!cells.size) {\n Table.__selectedByTable.delete(table);\n }\n }\n }\n }\n /**\n * Returns array of selected cells\n */\n getAllSelectedCells() {\n return toArray(this.selected);\n }\n static __getSelectedCellsByTable(table) {\n const cells = Table.__selectedByTable.get(table);\n return cells ? toArray(cells) : [];\n }\n /** @override **/\n destruct() {\n this.selected.clear();\n return super.destruct();\n }\n static __getRowsCount(table) {\n return table.rows.length;\n }\n /**\n * Returns rows count in the table\n */\n getRowsCount(table) {\n return Table.__getRowsCount(table);\n }\n static __getColumnsCount(table) {\n const matrix = Table.__formalMatrix(table);\n return matrix.reduce((max_count, cells) => Math.max(max_count, cells.length), 0);\n }\n /**\n * Returns columns count in the table\n */\n getColumnsCount(table) {\n return Table.__getColumnsCount(table);\n }\n static __formalMatrix(table, callback) {\n const matrix = [[]];\n const rows = toArray(table.rows);\n const setCell = (cell, i) => {\n if (matrix[i] === undefined) {\n matrix[i] = [];\n }\n const colSpan = cell.colSpan, rowSpan = cell.rowSpan;\n let column, row, currentColumn = 0;\n while (matrix[i][currentColumn]) {\n currentColumn += 1;\n }\n for (row = 0; row < rowSpan; row += 1) {\n for (column = 0; column < colSpan; column += 1) {\n if (matrix[i + row] === undefined) {\n matrix[i + row] = [];\n }\n if (callback &&\n callback(cell, i + row, currentColumn + column, colSpan, rowSpan) === false) {\n return false;\n }\n matrix[i + row][currentColumn + column] = cell;\n }\n }\n };\n for (let i = 0; i < rows.length; i += 1) {\n const cells = toArray(rows[i].cells);\n for (let j = 0; j < cells.length; j += 1) {\n if (setCell(cells[j], i) === false) {\n return matrix;\n }\n }\n }\n return matrix;\n }\n /**\n * Generate formal table martix columns*rows\n * @param table - Working table\n * @param callback - if return false cycle break\n */\n formalMatrix(table, callback) {\n return Table.__formalMatrix(table, callback);\n }\n static __formalCoordinate(table, cell, max = false) {\n let i = 0, j = 0, width = 1, height = 1;\n Table.__formalMatrix(table, (td, ii, jj, colSpan, rowSpan) => {\n if (cell === td) {\n i = ii;\n j = jj;\n width = colSpan || 1;\n height = rowSpan || 1;\n if (max) {\n j += (colSpan || 1) - 1;\n i += (rowSpan || 1) - 1;\n }\n return false;\n }\n });\n return [i, j, width, height];\n }\n /**\n * Get cell coordinate in formal table (without colspan and rowspan)\n */\n formalCoordinate(table, cell, max = false) {\n return Table.__formalCoordinate(table, cell, max);\n }\n static __appendRow(table, line, after, create) {\n let row;\n if (!line) {\n const columnsCount = Table.__getColumnsCount(table);\n row = create.element('tr');\n for (let j = 0; j < columnsCount; j += 1) {\n row.appendChild(create.element('td'));\n }\n }\n else {\n row = line.cloneNode(true);\n $$('td,th', line).forEach(cell => {\n const rowspan = attr(cell, 'rowspan');\n if (rowspan && parseInt(rowspan, 10) > 1) {\n const newRowSpan = parseInt(rowspan, 10) - 1;\n attr(cell, 'rowspan', newRowSpan > 1 ? newRowSpan : null);\n }\n });\n $$('td,th', row).forEach(cell => {\n cell.innerHTML = '';\n });\n }\n if (after && line && line.nextSibling) {\n line.parentNode &&\n line.parentNode.insertBefore(row, line.nextSibling);\n }\n else if (!after && line) {\n line.parentNode && line.parentNode.insertBefore(row, line);\n }\n else {\n (table.getElementsByTagName('tbody')?.[0] || table).appendChild(row);\n }\n }\n /**\n * Inserts a new line after row what contains the selected cell\n *\n * @param table - Working table\n * @param line - Insert a new line after/before this\n * line contains the selected cell\n * @param after - Insert a new line after line contains the selected cell\n */\n appendRow(table, line, after) {\n return Table.__appendRow(table, line, after, this.j.createInside);\n }\n static __removeRow(table, rowIndex) {\n const box = Table.__formalMatrix(table);\n let dec;\n const row = table.rows[rowIndex];\n box[rowIndex].forEach((cell, j) => {\n dec = false;\n if (rowIndex - 1 >= 0 && box[rowIndex - 1][j] === cell) {\n dec = true;\n }\n else if (box[rowIndex + 1] && box[rowIndex + 1][j] === cell) {\n if (cell.parentNode === row && cell.parentNode.nextSibling) {\n dec = true;\n let nextCell = j + 1;\n while (box[rowIndex + 1][nextCell] === cell) {\n nextCell += 1;\n }\n const nextRow = Dom.next(cell.parentNode, elm => Dom.isTag(elm, 'tr'), table);\n if (nextRow) {\n if (box[rowIndex + 1][nextCell]) {\n nextRow.insertBefore(cell, box[rowIndex + 1][nextCell]);\n }\n else {\n nextRow.appendChild(cell);\n }\n }\n }\n }\n else {\n Dom.safeRemove(cell);\n }\n if (dec &&\n (cell.parentNode === row || cell !== box[rowIndex][j - 1])) {\n const rowSpan = cell.rowSpan;\n attr(cell, 'rowspan', rowSpan - 1 > 1 ? rowSpan - 1 : null);\n }\n });\n Dom.safeRemove(row);\n }\n /**\n * Remove row\n */\n removeRow(table, rowIndex) {\n return Table.__removeRow(table, rowIndex);\n }\n /**\n * Insert column before / after all the columns containing the selected cells\n */\n appendColumn(table, selectedCell, insertAfter = true) {\n const box = Table.__formalMatrix(table);\n if (!insertAfter && Dom.isCell(selectedCell.previousElementSibling)) {\n return this.appendColumn(table, selectedCell.previousElementSibling, true);\n }\n const columnIndex = insertAfter\n ? selectedCell.cellIndex + ((selectedCell.colSpan || 1) - 1)\n : selectedCell.cellIndex;\n const newColumnIndex = insertAfter ? columnIndex + 1 : columnIndex;\n for (let i = 0; i < box.length;) {\n const cells = box[i];\n if (cells[columnIndex] !== cells[newColumnIndex] ||\n columnIndex === newColumnIndex) {\n const cell = this.j.createInside.element('td');\n if (insertAfter) {\n Dom.after(cells[columnIndex], cell);\n }\n else {\n Dom.before(cells[columnIndex], cell);\n }\n if (cells[columnIndex].rowSpan > 1) {\n cell.rowSpan = cells[columnIndex].rowSpan;\n }\n }\n else {\n cells[columnIndex].colSpan += 1;\n }\n i += cells[columnIndex].rowSpan || 1;\n }\n }\n static __removeColumn(table, j) {\n const box = Table.__formalMatrix(table);\n let dec;\n box.forEach((cells, i) => {\n const td = cells[j];\n dec = false;\n if (j - 1 >= 0 && box[i][j - 1] === td) {\n dec = true;\n }\n else if (j + 1 < cells.length && box[i][j + 1] === td) {\n dec = true;\n }\n else {\n Dom.safeRemove(td);\n }\n if (dec && (i - 1 < 0 || td !== box[i - 1][j])) {\n const colSpan = td.colSpan;\n attr(td, 'colspan', colSpan - 1 > 1 ? (colSpan - 1).toString() : null);\n }\n });\n }\n /**\n * Remove column by index\n */\n removeColumn(table, j) {\n return Table.__removeColumn(table, j);\n }\n static __getSelectedBound(table, selectedCells) {\n const bound = [\n [Infinity, Infinity],\n [0, 0]\n ];\n const box = Table.__formalMatrix(table);\n let i, j, k;\n for (i = 0; i < box.length; i += 1) {\n for (j = 0; box[i] && j < box[i].length; j += 1) {\n if (selectedCells.includes(box[i][j])) {\n bound[0][0] = Math.min(i, bound[0][0]);\n bound[0][1] = Math.min(j, bound[0][1]);\n bound[1][0] = Math.max(i, bound[1][0]);\n bound[1][1] = Math.max(j, bound[1][1]);\n }\n }\n }\n for (i = bound[0][0]; i <= bound[1][0]; i += 1) {\n for (k = 1, j = bound[0][1]; j <= bound[1][1]; j += 1) {\n while (box[i] && box[i][j - k] && box[i][j] === box[i][j - k]) {\n bound[0][1] = Math.min(j - k, bound[0][1]);\n bound[1][1] = Math.max(j - k, bound[1][1]);\n k += 1;\n }\n k = 1;\n while (box[i] && box[i][j + k] && box[i][j] === box[i][j + k]) {\n bound[0][1] = Math.min(j + k, bound[0][1]);\n bound[1][1] = Math.max(j + k, bound[1][1]);\n k += 1;\n }\n k = 1;\n while (box[i - k] && box[i][j] === box[i - k][j]) {\n bound[0][0] = Math.min(i - k, bound[0][0]);\n bound[1][0] = Math.max(i - k, bound[1][0]);\n k += 1;\n }\n k = 1;\n while (box[i + k] && box[i][j] === box[i + k][j]) {\n bound[0][0] = Math.min(i + k, bound[0][0]);\n bound[1][0] = Math.max(i + k, bound[1][0]);\n k += 1;\n }\n }\n }\n return bound;\n }\n /**\n * Define bound for selected cells\n */\n getSelectedBound(table, selectedCells) {\n return Table.__getSelectedBound(table, selectedCells);\n }\n static __normalizeTable(table) {\n const __marked = [], box = Table.__formalMatrix(table);\n Table.__removeExtraColspans(box, __marked);\n Table.__removeExtraRowspans(box, __marked);\n // remove rowspans and colspans equal 1 and empty class\n for (let i = 0; i < box.length; i += 1) {\n for (let j = 0; j < box[i].length; j += 1) {\n if (box[i][j] === undefined) {\n continue; // broken table\n }\n if (box[i][j].hasAttribute('rowspan') &&\n box[i][j].rowSpan === 1) {\n attr(box[i][j], 'rowspan', null);\n }\n if (box[i][j].hasAttribute('colspan') &&\n box[i][j].colSpan === 1) {\n attr(box[i][j], 'colspan', null);\n }\n if (box[i][j].hasAttribute('class') &&\n !attr(box[i][j], 'class')) {\n attr(box[i][j], 'class', null);\n }\n }\n }\n Table.__unmark(__marked);\n }\n static __removeExtraColspans(box, __marked) {\n for (let j = 0; j < box[0].length; j += 1) {\n let min = 1000000;\n let not = false;\n for (let i = 0; i < box.length; i += 1) {\n if (box[i][j] === undefined) {\n continue; // broken table\n }\n if (box[i][j].colSpan < 2) {\n not = true;\n break;\n }\n min = Math.min(min, box[i][j].colSpan);\n }\n if (!not) {\n for (let i = 0; i < box.length; i += 1) {\n if (box[i][j] === undefined) {\n continue; // broken table\n }\n Table.__mark(box[i][j], 'colspan', box[i][j].colSpan - min + 1, __marked);\n }\n }\n }\n }\n static __removeExtraRowspans(box, marked) {\n let i = 0;\n let j = 0;\n for (i = 0; i < box.length; i += 1) {\n let min = 1000000;\n let not = false;\n for (j = 0; j < box[i].length; j += 1) {\n if (box[i][j] === undefined) {\n continue; // broken table\n }\n if (box[i][j].rowSpan < 2) {\n not = true;\n break;\n }\n min = Math.min(min, box[i][j].rowSpan);\n }\n if (!not) {\n for (j = 0; j < box[i].length; j += 1) {\n if (box[i][j] === undefined) {\n continue; // broken table\n }\n Table.__mark(box[i][j], 'rowspan', box[i][j].rowSpan - min + 1, marked);\n }\n }\n }\n }\n /**\n * Try recalculate all coluns and rows after change\n */\n normalizeTable(table) {\n return Table.__normalizeTable(table);\n }\n static __mergeSelected(table, jodit) {\n const html = [], bound = Table.__getSelectedBound(table, Table.__getSelectedCellsByTable(table));\n let w = 0, first = null, first_j = 0, td, cols = 0, rows = 0;\n const alreadyMerged = new Set(), __marked = [];\n if (bound && (bound[0][0] - bound[1][0] || bound[0][1] - bound[1][1])) {\n Table.__formalMatrix(table, (cell, i, j, cs, rs) => {\n if (i >= bound[0][0] && i <= bound[1][0]) {\n if (j >= bound[0][1] && j <= bound[1][1]) {\n td = cell;\n if (alreadyMerged.has(td)) {\n return;\n }\n alreadyMerged.add(td);\n if (i === bound[0][0] && td.style.width) {\n w += td.offsetWidth;\n }\n if (trim(cell.innerHTML.replace(/<br(\\/)?>/g, '')) !== '') {\n html.push(cell.innerHTML);\n }\n if (cs > 1) {\n cols += cs - 1;\n }\n if (rs > 1) {\n rows += rs - 1;\n }\n if (!first) {\n first = cell;\n first_j = j;\n }\n else {\n Table.__mark(td, 'remove', 1, __marked);\n instance(jodit).removeSelection(td);\n }\n }\n }\n });\n cols = bound[1][1] - bound[0][1] + 1;\n rows = bound[1][0] - bound[0][0] + 1;\n if (first) {\n if (cols > 1) {\n Table.__mark(first, 'colspan', cols, __marked);\n }\n if (rows > 1) {\n Table.__mark(first, 'rowspan', rows, __marked);\n }\n if (w) {\n Table.__mark(first, 'width', ((w / table.offsetWidth) * 100).toFixed(consts.ACCURACY) + '%', __marked);\n if (first_j) {\n Table.__setColumnWidthByDelta(table, first_j, 0, true, __marked);\n }\n }\n first.innerHTML = html.join('<br/>');\n instance(jodit).addSelection(first);\n alreadyMerged.delete(first);\n Table.__unmark(__marked);\n Table.__normalizeTable(table);\n toArray(table.rows).forEach(tr => {\n if (!tr.cells.length) {\n Dom.safeRemove(tr);\n }\n });\n }\n }\n }\n /**\n * It combines all the selected cells into one. The contents of the cells will also be combined\n */\n mergeSelected(table) {\n return Table.__mergeSelected(table, this.j);\n }\n static __splitHorizontal(table, jodit) {\n let coord, td, tr, parent, after;\n const __marked = [];\n Table.__getSelectedCellsByTable(table).forEach((cell) => {\n td = jodit.createInside.element('td');\n td.appendChild(jodit.createInside.element('br'));\n tr = jodit.createInside.element('tr');\n coord = Table.__formalCoordinate(table, cell);\n if (cell.rowSpan < 2) {\n Table.__formalMatrix(table, (tdElm, i, j) => {\n if (coord[0] === i &&\n coord[1] !== j &&\n tdElm !== cell) {\n Table.__mark(tdElm, 'rowspan', tdElm.rowSpan + 1, __marked);\n }\n });\n Dom.after(Dom.closest(cell, 'tr', table), tr);\n tr.appendChild(td);\n }\n else {\n Table.__mark(cell, 'rowspan', cell.rowSpan - 1, __marked);\n Table.__formalMatrix(table, (tdElm, i, j) => {\n if (i > coord[0] &&\n i < coord[0] + cell.rowSpan &&\n coord[1] > j &&\n tdElm.parentNode\n .rowIndex === i) {\n after = tdElm;\n }\n if (coord[0] < i && tdElm === cell) {\n parent = table.rows[i];\n }\n });\n if (after) {\n Dom.after(after, td);\n }\n else {\n parent.insertBefore(td, parent.firstChild);\n }\n }\n if (cell.colSpan > 1) {\n Table.__mark(td, 'colspan', cell.colSpan, __marked);\n }\n Table.__unmark(__marked);\n instance(jodit).removeSelection(cell);\n });\n this.__normalizeTable(table);\n }\n /**\n * Divides all selected by `jodit_focused_cell` class table cell in 2 parts vertical. Those division into 2 columns\n */\n splitHorizontal(table) {\n return Table.__splitHorizontal(table, this.j);\n }\n static __splitVertical(table, jodit) {\n let coord, td, percentage;\n const __marked = [];\n Table.__getSelectedCellsByTable(table).forEach(cell => {\n coord = Table.__formalCoordinate(table, cell);\n if (cell.colSpan < 2) {\n Table.__formalMatrix(table, (tdElm, i, j) => {\n if (coord[1] === j && coord[0] !== i && tdElm !== cell) {\n Table.__mark(tdElm, 'colspan', tdElm.colSpan + 1, __marked);\n }\n });\n }\n else {\n Table.__mark(cell, 'colspan', cell.colSpan - 1, __marked);\n }\n td = jodit.createInside.element('td');\n td.appendChild(jodit.createInside.element('br'));\n if (cell.rowSpan > 1) {\n Table.__mark(td, 'rowspan', cell.rowSpan, __marked);\n }\n const oldWidth = cell.offsetWidth; // get old width\n Dom.after(cell, td);\n percentage = oldWidth / table.offsetWidth / 2;\n Table.__mark(cell, 'width', (percentage * 100).toFixed(consts.ACCURACY) + '%', __marked);\n Table.__mark(td, 'width', (percentage * 100).toFixed(consts.ACCURACY) + '%', __marked);\n Table.__unmark(__marked);\n instance(jodit).removeSelection(cell);\n });\n Table.__normalizeTable(table);\n }\n /**\n * It splits all the selected cells into 2 parts horizontally. Those. are added new row\n */\n splitVertical(table) {\n return Table.__splitVertical(table, this.j);\n }\n static __setColumnWidthByDelta(table, column, delta, noUnmark, marked) {\n const box = Table.__formalMatrix(table);\n let clearWidthIndex = 0;\n for (let i = 0; i < box.length; i += 1) {\n const cell = box[i][column];\n if (cell.colSpan > 1 && box.length > 1) {\n continue;\n }\n const w = cell.offsetWidth;\n const percent = ((w + delta) / table.offsetWidth) * 100;\n Table.__mark(cell, 'width', percent.toFixed(consts.ACCURACY) + '%', marked);\n clearWidthIndex = i;\n break;\n }\n for (let i = clearWidthIndex + 1; i < box.length; i += 1) {\n const cell = box[i][column];\n Table.__mark(cell, 'width', null, marked);\n }\n if (!noUnmark) {\n Table.__unmark(marked);\n }\n }\n /**\n * Set column width used delta value\n */\n setColumnWidthByDelta(table, column, delta, noUnmark, marked) {\n return Table.__setColumnWidthByDelta(table, column, delta, noUnmark, marked);\n }\n static __mark(cell, key, value, marked) {\n marked.push(cell);\n const dict = markedValue.get(cell) ?? {};\n dict[key] = value === undefined ? 1 : value;\n markedValue.set(cell, dict);\n }\n static __unmark(marked) {\n marked.forEach(cell => {\n const dict = markedValue.get(cell);\n if (dict) {\n Object.keys(dict).forEach((key) => {\n const value = dict[key];\n switch (key) {\n case 'remove':\n Dom.safeRemove(cell);\n break;\n case 'rowspan':\n attr(cell, 'rowspan', isNumber(value) && value > 1 ? value : null);\n break;\n case 'colspan':\n attr(cell, 'colspan', isNumber(value) && value > 1 ? value : null);\n break;\n case 'width':\n if (value == null) {\n cell.style.removeProperty('width');\n if (!attr(cell, 'style')) {\n attr(cell, 'style', null);\n }\n }\n else {\n cell.style.width = value.toString();\n }\n break;\n }\n delete dict[key];\n });\n markedValue.delete(cell);\n }\n });\n }\n}\nTable.__selectedByTable = new WeakMap();\n__decorate([\n debounce()\n], Table.prototype, \"__recalculateStyles\", null);\nconst instance = (j) => j.getInstance('Table', j.o);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction, isString } from \"../../../core/helpers/index.js\";\nexport function buildData(uploader, data) {\n if (isFunction(uploader.o.buildData)) {\n return uploader.o.buildData.call(uploader, data);\n }\n const FD = uploader.ow.FormData;\n if (FD !== undefined) {\n if (data instanceof FD) {\n return data;\n }\n if (isString(data)) {\n return data;\n }\n const newData = new FD();\n const dict = data;\n Object.keys(dict).forEach(key => {\n newData.append(key, dict[key]);\n });\n return newData;\n }\n return data;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module modules/uploader\n */\n/**\n * Convert dataURI to Blob\n */\nexport function dataURItoBlob(dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n const byteString = atob(dataURI.split(',')[1]), \n // separate out the mime component\n mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0], \n // write the bytes of the string to an ArrayBuffer\n ab = new ArrayBuffer(byteString.length), ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ia], { type: mimeString });\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isFunction, isPromise } from \"../../../core/helpers/index.js\";\nimport { Ajax } from \"../../../core/request/index.js\";\nimport { buildData } from \"./build-data.js\";\nexport const ajaxInstances = new WeakMap();\nexport function send(uploader, data) {\n const requestData = buildData(uploader, data);\n const sendData = (request) => {\n const ajax = new Ajax({\n xhr: () => {\n const xhr = new XMLHttpRequest();\n if (uploader.j.ow.FormData !== undefined &&\n xhr.upload) {\n uploader.j.progressbar.show().progress(10);\n xhr.upload.addEventListener('progress', evt => {\n if (evt.lengthComputable) {\n let percentComplete = evt.loaded / evt.total;\n percentComplete *= 100;\n uploader.j.progressbar\n .show()\n .progress(percentComplete);\n if (percentComplete >= 100) {\n uploader.j.progressbar.hide();\n }\n }\n }, false);\n }\n else {\n uploader.j.progressbar.hide();\n }\n return xhr;\n },\n method: uploader.o.method || 'POST',\n data: request,\n url: isFunction(uploader.o.url)\n ? uploader.o.url(request)\n : uploader.o.url,\n headers: uploader.o.headers,\n queryBuild: uploader.o.queryBuild,\n contentType: uploader.o.contentType.call(uploader, request),\n withCredentials: uploader.o.withCredentials || false\n });\n let instances = ajaxInstances.get(uploader);\n if (!instances) {\n instances = new Set();\n ajaxInstances.set(uploader, instances);\n }\n instances.add(ajax);\n uploader.j.e.one('beforeDestruct', ajax.destruct);\n return ajax\n .send()\n .then(resp => resp.json())\n .catch(error => {\n return {\n success: false,\n data: {\n messages: [error]\n }\n };\n })\n .finally(() => {\n ajax.destruct();\n instances?.delete(ajax);\n });\n };\n if (isPromise(requestData)) {\n return requestData.then(sendData).catch(error => {\n uploader.o.error.call(uploader, error);\n });\n }\n return sendData(requestData);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { error, isFunction, isPlainObject, toArray } from \"../../../core/helpers/index.js\";\nimport { send } from \"./send.js\";\n/**\n * Send files to server\n */\nexport function sendFiles(uploader, files, handlerSuccess, handlerError, process) {\n if (!files) {\n return Promise.reject(error('Need files'));\n }\n const { o } = uploader;\n let fileList = toArray(files);\n if (!fileList.length) {\n return Promise.reject(error('Need files'));\n }\n const promises = [];\n if (o.insertImageAsBase64URI) {\n readImagesWithReader(fileList, o.imagesExtensions, promises, uploader, handlerSuccess, o.defaultHandlerSuccess);\n }\n fileList = fileList.filter(a => a);\n if (fileList.length) {\n const form = new FormData();\n form.append(o.pathVariableName, uploader.path);\n form.append('source', uploader.source);\n let file;\n for (let i = 0; i < fileList.length; i += 1) {\n file = fileList[i];\n if (file) {\n const hasRealExtension = /\\.\\w+$/.test(file.name);\n const mime = file.type.match(/\\/([a-z0-9]+)/i);\n const extension = mime && mime[1] ? mime[1].toLowerCase() : '';\n let newName = fileList[i].name ||\n Math.random().toString().replace('.', '');\n if (!hasRealExtension && extension) {\n let extForReg = extension;\n if (['jpeg', 'jpg'].includes(extForReg)) {\n extForReg = 'jpeg|jpg';\n }\n const reEnd = new RegExp('.(' + extForReg + ')$', 'i');\n if (!reEnd.test(newName)) {\n newName += '.' + extension;\n }\n }\n const [key, iFile, name] = o.processFileName.call(uploader, o.filesVariableName(i), fileList[i], newName);\n form.append(key, iFile, name);\n }\n }\n if (process) {\n process(form);\n }\n if (o.data && isPlainObject(o.data)) {\n Object.keys(o.data).forEach((key) => {\n form.append(key, o.data[key]);\n });\n }\n o.prepareData.call(uploader, form);\n promises.push(send(uploader, form)\n .then(resp => {\n if (o.isSuccess.call(uploader, resp)) {\n const handler = isFunction(handlerSuccess)\n ? handlerSuccess\n : o.defaultHandlerSuccess;\n handler.call(uploader, o.process.call(uploader, resp));\n return resp;\n }\n const handler = isFunction(handlerError)\n ? handlerError\n : o.defaultHandlerError;\n handler.call(uploader, error(o.getMessage.call(uploader, resp)));\n return resp;\n })\n .then(() => {\n uploader.j.events && uploader.j.e.fire('filesWereUploaded');\n }));\n }\n return Promise.all(promises);\n}\nfunction readImagesWithReader(fileList, imagesExtensions, promises, uploader, handlerSuccess, defaultHandlerSuccess) {\n let file, i;\n for (i = 0; i < fileList.length; i += 1) {\n file = fileList[i];\n if (file && file.type) {\n const mime = file.type.match(/\\/([a-z0-9]+)/i);\n const extension = mime[1] ? mime[1].toLowerCase() : '';\n if (!imagesExtensions.includes(extension)) {\n continue;\n }\n const reader = new FileReader();\n promises.push(uploader.j.async.promise((resolve, reject) => {\n reader.onerror = reject;\n reader.onloadend = () => {\n const resp = {\n baseurl: '',\n files: [reader.result],\n isImages: [true]\n };\n const handler = isFunction(handlerSuccess)\n ? handlerSuccess\n : defaultHandlerSuccess;\n handler.call(uploader, resp);\n resolve(resp);\n };\n reader.readAsDataURL(file);\n }));\n fileList[i] = null;\n }\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { TEXT_PLAIN } from \"../../../core/constants.js\";\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { getContainer } from \"../../../core/global.js\";\nimport { attr, isJoditObject } from \"../../../core/helpers/index.js\";\nimport { dataURItoBlob } from \"./data-uri-to-blob.js\";\nimport { sendFiles } from \"./send-files.js\";\nexport function processOldBrowserDrag(self, cData, handlerSuccess, handlerError, onFinally) {\n if (cData && (!cData.types.length || cData.types[0] !== TEXT_PLAIN)) {\n const div = self.j.c.div('', {\n tabindex: -1,\n style: 'left: -9999px; top: 0; width: 0; height: 100%;line-height: 140%; ' +\n 'overflow: hidden; position: fixed; z-index: 2147483647; word-break: break-all;',\n contenteditable: true\n });\n getContainer(self.j, self.constructor).appendChild(div);\n const selection = isJoditObject(self.j) ? self.j.s.save() : null, restore = () => selection && isJoditObject(self.j) && self.j.s.restore();\n div.focus();\n self.j.async.setTimeout(() => {\n const child = div.firstChild;\n Dom.safeRemove(div);\n if (child && child.hasAttribute('src')) {\n const src = attr(child, 'src') || '';\n restore();\n sendFiles(self, [dataURItoBlob(src)], handlerSuccess, handlerError).finally(onFinally);\n }\n }, self.j.defaultTimeout);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nexport * from \"./build-data.js\";\nexport * from \"./data-uri-to-blob.js\";\nexport * from \"./process-old-browser-drag.js\";\nexport * from \"./send.js\";\nexport * from \"./send-files.js\";\nexport function hasFiles(data) {\n return Boolean(data && data.files && data.files.length > 0);\n}\nexport function hasItems(data) {\n return Boolean(data && data.items && data.items.length > 0);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isArray } from \"../../core/helpers/checker/is-array.js\";\nimport { isJoditObject } from \"../../core/helpers/checker/is-jodit-object.js\";\nimport { Config } from \"../../config.js\";\n/**\n * Module for processing download documents and images by Drag and Drop\n * Drag and Drop files\n */\nConfig.prototype.enableDragAndDropFileToEditor = true;\nConfig.prototype.uploader = {\n url: '',\n insertImageAsBase64URI: false,\n imagesExtensions: ['jpg', 'png', 'jpeg', 'gif'],\n headers: null,\n data: null,\n filesVariableName(i) {\n return `files[${i}]`;\n },\n withCredentials: false,\n pathVariableName: 'path',\n format: 'json',\n method: 'POST',\n prepareData(formData) {\n return formData;\n },\n isSuccess(resp) {\n return resp.success;\n },\n getMessage(resp) {\n return resp.data.messages !== undefined && isArray(resp.data.messages)\n ? resp.data.messages.join(' ')\n : '';\n },\n /**\n * @see [[IUploader.processFileName]]\n */\n processFileName(key, file, name) {\n return [key, file, name];\n },\n process(resp) {\n return resp.data;\n },\n error(e) {\n this.j.message.error(e.message, 4000);\n },\n getDisplayName(baseurl, filename) {\n return baseurl + filename;\n },\n defaultHandlerSuccess(resp) {\n const j = this.j || this;\n if (!isJoditObject(j)) {\n return;\n }\n if (resp.files && resp.files.length) {\n resp.files.forEach((filename, index) => {\n const [tagName, attr] = resp.isImages && resp.isImages[index]\n ? ['img', 'src']\n : ['a', 'href'];\n const elm = j.createInside.element(tagName);\n elm.setAttribute(attr, resp.baseurl + filename);\n if (tagName === 'a') {\n elm.textContent = j.o.uploader.getDisplayName.call(this, resp.baseurl, filename);\n }\n if (tagName === 'img') {\n j.s.insertImage(elm, null, j.o.imageDefaultWidth);\n }\n else {\n j.s.insertNode(elm);\n }\n });\n }\n },\n defaultHandlerError(e) {\n this.j.message.error(e.message);\n },\n contentType(requestData) {\n return this.ow.FormData !== undefined &&\n typeof requestData !== 'string'\n ? false\n : 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { STATUSES, ViewComponent } from \"../../core/component/index.js\";\nimport { IS_ES_NEXT, IS_IE } from \"../../core/constants.js\";\nimport { ConfigProto, error, isFunction, isJoditObject } from \"../../core/helpers/index.js\";\nimport { Config } from \"../../config.js\";\nimport { ajaxInstances, hasFiles, hasItems, processOldBrowserDrag, send, sendFiles } from \"./helpers/index.js\";\nimport \"./config.js\";\nexport class Uploader extends ViewComponent {\n get j() {\n return this.jodit;\n }\n /** @override */\n className() {\n return 'Uploader';\n }\n get o() {\n return this.options;\n }\n /**\n * It sets the path for uploading files\n */\n setPath(path) {\n this.path = path;\n return this;\n }\n /**\n * It sets the source for connector\n */\n setSource(source) {\n this.source = source;\n return this;\n }\n /**\n * Set the handlers Drag and Drop to `$form`\n *\n * @param form - Form or any Node on which you can drag and drop the file. In addition will be processed\n * <code><input type=\"file\" ></code>\n * @param handlerSuccess - The function be called when a successful uploading files\n * to the server\n * @param handlerError - The function that will be called during a failed download files a server\n * @example\n * ```javascript\n * var $form = jQuery('<form><input type=\"text\" typpe=\"file\"></form>');\n * jQuery('body').append($form);\n * Jodit.editors.someidfoeditor.uploader.bind($form[0], function (files) {\n * var i;\n * for (i = 0; i < data.files.length; i += 1) {\n * parent.s.insertImage(data.files[i])\n * }\n * });\n * ```\n */\n bind(form, handlerSuccess, handlerError) {\n const onFinally = () => {\n form.classList.remove('jodit_drag_hover');\n };\n const self = this, onPaste = (e) => {\n let i, file, extension;\n const cData = e.clipboardData;\n const processData = (formdata) => {\n if (file) {\n formdata.append('extension', extension);\n formdata.append('mimetype', file.type);\n }\n };\n // send data on server\n if (!IS_IE && hasFiles(cData)) {\n sendFiles(self, cData.files, handlerSuccess, handlerError).finally(onFinally);\n return false;\n }\n if (IS_IE && !IS_ES_NEXT) {\n return processOldBrowserDrag(self, cData, handlerSuccess, handlerError, onFinally);\n }\n if (hasItems(cData)) {\n const { items } = cData;\n for (i = 0; i < items.length; i += 1) {\n if (items[i].kind === 'file' &&\n items[i].type === 'image/png') {\n file = items[i].getAsFile();\n if (file) {\n const mime = file.type.match(/\\/([a-z0-9]+)/i);\n extension = mime[1]\n ? mime[1].toLowerCase()\n : '';\n sendFiles(self, [file], handlerSuccess, handlerError, processData).finally(onFinally);\n }\n e.preventDefault();\n break;\n }\n }\n }\n };\n if (self.j && self.j.editor !== form) {\n self.j.e.on(form, 'paste', onPaste);\n }\n else {\n self.j.e.on('beforePaste', onPaste);\n }\n this.attachEvents(form, handlerSuccess, handlerError, onFinally);\n }\n attachEvents(form, handlerSuccess, handlerError, onFinally) {\n const self = this;\n self.j.e\n .on(form, 'dragend dragover dragenter dragleave drop', (e) => {\n e.preventDefault();\n })\n .on(form, 'dragover', (event) => {\n if (hasFiles(event.dataTransfer) ||\n hasItems(event.dataTransfer)) {\n form.classList.add('jodit_drag_hover');\n event.preventDefault();\n }\n })\n .on(form, 'dragend dragleave', (event) => {\n form.classList.remove('jodit_drag_hover');\n if (hasFiles(event.dataTransfer)) {\n event.preventDefault();\n }\n })\n .on(form, 'drop', (event) => {\n form.classList.remove('jodit_drag_hover');\n if (hasFiles(event.dataTransfer)) {\n event.preventDefault();\n event.stopImmediatePropagation();\n sendFiles(self, event.dataTransfer.files, handlerSuccess, handlerError).finally(onFinally);\n }\n });\n const inputFile = form.querySelector('input[type=file]');\n if (inputFile) {\n self.j.e.on(inputFile, 'change', () => {\n sendFiles(self, inputFile.files, handlerSuccess, handlerError)\n .then(() => {\n inputFile.value = '';\n if (!/safari/i.test(navigator.userAgent)) {\n inputFile.type = '';\n inputFile.type = 'file';\n }\n })\n .finally(onFinally);\n });\n }\n }\n /**\n * Upload images to a server by its URL, making it through the connector server.\n */\n uploadRemoteImage(url, handlerSuccess, handlerError) {\n const uploader = this, { o } = uploader;\n const handlerE = isFunction(handlerError)\n ? handlerError\n : o.defaultHandlerError;\n send(uploader, {\n action: 'fileUploadRemote',\n url\n })\n .then(resp => {\n if (o.isSuccess.call(uploader, resp)) {\n const handler = isFunction(handlerSuccess)\n ? handlerSuccess\n : o.defaultHandlerSuccess;\n handler.call(uploader, o.process.call(uploader, resp));\n return;\n }\n handlerE.call(uploader, error(o.getMessage.call(uploader, resp)));\n })\n .catch(e => handlerE.call(uploader, e));\n }\n constructor(editor, options) {\n super(editor);\n this.path = '';\n this.source = 'default';\n this.options = ConfigProto(options || {}, ConfigProto(Config.defaultOptions.uploader, isJoditObject(editor) ? editor.o.uploader : {}));\n }\n destruct() {\n this.setStatus(STATUSES.beforeDestruct);\n const instances = ajaxInstances.get(this);\n if (instances) {\n instances.forEach(ajax => {\n try {\n ajax.destruct();\n }\n catch { }\n });\n instances.clear();\n }\n super.destruct();\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../dom/dom.js\";\n/**\n * Moves the fake node up until it encounters a non-empty sibling on the left(right)\n * @private\n */\nexport function moveTheNodeAlongTheEdgeOutward(node, start, root) {\n let item = node;\n while (item && item !== root) {\n const sibling = Dom.findSibling(item, start);\n if (sibling) {\n return;\n }\n if (Dom.isBlock(item.parentElement)) {\n break;\n }\n item = item.parentElement;\n if (item && item !== root) {\n start ? Dom.before(item, node) : Dom.after(item, node);\n }\n }\n return;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module selection\n */\n/** @internal */\nexport const WRAP = 'wrap';\n/** @internal */\nexport const UNWRAP = 'unwrap';\n/** @internal */\nexport const CHANGE = 'change';\n/** @internal */\nexport const UNSET = 'unset';\n/** @internal */\nexport const INITIAL = 'initial';\n/** @internal */\nexport const REPLACE = 'replace';\n/** @internal */\nexport const _PREFIX = 'commitStyle';\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { isMarker } from \"../../../helpers/checker/is-marker.js\";\nimport { trim } from \"../../../helpers/string/trim.js\";\nimport { call } from \"../../../helpers/utils/utils.js\";\n/**\n * If the selection area is inside an element that matches the commit (suitable relative),\n * but does not completely fill it.\n * Then the method cuts the parent and leaves itself in a copy of the parent (suitable relative) in the middle.\n *\n * @example\n * Apply strong to\n * ```html\n * \t<strong><span>some<font>SELECTED</font>text</span></strong>\n * ```\n * Should extract selection from parent `strong`\n * ```html\n * `<strong><span>some</span></strong><strong><span><font>SELECTED</font></span></strong><strong><span>test</span></strong>\n * ```\n * @private\n */\nexport function extractSelectedPart(wrapper, font, jodit) {\n const range = jodit.s.createRange();\n // Left part\n const leftEdge = isMarker(font.previousSibling)\n ? font.previousSibling\n : font;\n range.setStartBefore(wrapper);\n range.setEndBefore(leftEdge);\n extractAndMove(wrapper, range, true);\n // Right part\n const rightEdge = isMarker(font.nextSibling) ? font.nextSibling : font;\n range.setStartAfter(rightEdge);\n range.setEndAfter(wrapper);\n extractAndMove(wrapper, range, false);\n}\n/**\n * Retrieves content before after the selected area, clears it if it is empty, and inserts before after the framed selection\n */\nfunction extractAndMove(wrapper, range, left) {\n const fragment = range.extractContents();\n if ((!fragment.textContent || !trim(fragment.textContent).length) &&\n fragment.firstChild) {\n Dom.unwrap(fragment.firstChild);\n }\n if (wrapper.parentNode) {\n call(left ? Dom.before : Dom.after, wrapper, fragment);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_PROD } from \"../../../constants.js\";\nimport { isString } from \"../../../helpers/checker/is-string.js\";\nimport { assert } from \"../../../helpers/utils/assert.js\";\n/**\n * A state machine implementation for applying styles.\n */\nexport class FiniteStateMachine {\n setState(state) {\n assert(!this.__previewsStates.has(state), 'Circled states');\n this.__previewsStates.add(state);\n this.__state = state;\n }\n getState() {\n return this.__state;\n }\n disableSilent() {\n this.silent = false;\n }\n constructor(state, transitions) {\n this.transitions = transitions;\n this.silent = true;\n this.__previewsStates = new Set();\n this.setState(state);\n }\n dispatch(actionName, value) {\n const action = this.transitions[this.getState()][actionName];\n if (action) {\n const res = action.call(this, value);\n assert(res && res !== value, 'Action should return new value');\n assert(isString(res.next), 'Value should contain the next state');\n assert(res.next !== this.getState(), 'The new state should not be equal to the old one.');\n this.setState(res.next);\n if (!IS_PROD && !this.silent) {\n // eslint-disable-next-line no-console\n console.log(`State: ${this.getState()}`);\n }\n return res;\n }\n throw new Error(`invalid action: ${this.getState()}.${actionName.toString()}`);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { isMarker } from \"../../../helpers/checker/is-marker.js\";\n/**\n * Is normal usual element\n * @private\n */\nexport function isNormalNode(elm) {\n return Boolean(elm &&\n !Dom.isEmptyTextNode(elm) &&\n !Dom.isTemporary(elm) &&\n !isMarker(elm));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { isVoid } from \"../../../helpers/checker/is-void.js\";\nimport { normalizeCssValue } from \"../../../helpers/normalize/normalize-css-value.js\";\nimport { assert } from \"../../../helpers/utils/assert.js\";\nimport { css } from \"../../../helpers/utils/css.js\";\n/**\n * Element has the same styles as in the commit\n * @private\n */\nexport function hasSameStyle(elm, rules) {\n return Boolean(!Dom.isTag(elm, 'font') &&\n Dom.isHTMLElement(elm) &&\n Object.keys(rules).every(property => {\n const value = css(elm, property, true);\n if (value === '' &&\n (rules[property] === '' || rules[property] == null)) {\n return true;\n }\n return (!isVoid(value) &&\n value !== '' &&\n !isVoid(rules[property]) &&\n normalizeCssValue(property, rules[property])\n .toString()\n .toLowerCase() === value.toString().toLowerCase());\n }));\n}\nconst elm = document.createElement('div');\nelm.style.color = 'red';\nassert(hasSameStyle(elm, { color: 'red' }), 'Style test');\nassert(hasSameStyle(elm, { fontSize: null }), 'Style test');\nassert(hasSameStyle(elm, { fontSize: '' }), 'Style test');\n/**\n * Element has the similar styles keys\n */\nexport function hasSameStyleKeys(elm, rules) {\n return Boolean(!Dom.isTag(elm, 'font') &&\n Dom.isHTMLElement(elm) &&\n Object.keys(rules).every(property => {\n const value = css(elm, property, true);\n return value !== '';\n }));\n}\nconst elm2 = document.createElement('div');\nelm2.style.color = 'red';\nassert(hasSameStyleKeys(elm2, { color: 'red' }), 'Style test');\nassert(!hasSameStyleKeys(elm2, { font: 'Arial', color: 'red' }), 'Style test');\nassert(!hasSameStyleKeys(elm2, { border: '1px solid #ccc' }), 'Style test');\n","import { Dom } from \"../../../dom/dom.js\";\nimport { hasSameStyle, hasSameStyleKeys } from \"./has-same-style.js\";\nimport { isNormalNode } from \"./is-normal-node.js\";\n/**\n * Checks if an item is suitable for applying a commit. The element suits us if it\n * - has the same styles as in the commit (commitStyle.options.style)\n * - has the same tag as in the commit (commitStyle.options.element)\n *\n * @param commitStyle - style commit\n * @param elm - checked item\n * @param strict - strict mode - false - the default tag is suitable for us if it is also in the commit\n * @param strictStyle - strict style mode - true - the element has the same style keys as in the commit, but not their values\n * @private\n */\nexport function isSuitElement(commitStyle, elm, strict, strictStyle = true) {\n if (!elm || !isNormalNode(elm)) {\n return false;\n }\n const { element, elementIsDefault, options } = commitStyle;\n if (Dom.isList(elm) && commitStyle.elementIsList) {\n return true;\n }\n const elmIsSame = Dom.isTag(elm, element);\n if (elmIsSame && !(elementIsDefault && strict)) {\n return true;\n }\n const elmHasSameStyle = Boolean(options.attributes?.style &&\n (strictStyle\n ? hasSameStyle(elm, options.attributes.style)\n : hasSameStyleKeys(elm, options.attributes.style)));\n if (elmHasSameStyle && !commitStyle.elementIsList) {\n return true;\n }\n return !elmIsSame && !strict && elementIsDefault && Dom.isInlineBlock(elm);\n}\n/**\n * @private\n */\nexport function suitableClosest(commitStyle, element, root) {\n return Dom.closest(element, node => isSuitElement(commitStyle, node, true, false), root);\n}\n/**\n * Inside the parent element there is a block with the same styles\n * @example\n * For selection:\n * ```html\n * <p>|test<strong>test</strong>|</p>\n * ```\n * Apply `{element:'strong'}`\n * @private\n */\nexport function isSameStyleChild(commitStyle, elm) {\n const { element, options } = commitStyle;\n if (!elm || !isNormalNode(elm)) {\n return false;\n }\n const elmIsSame = elm.nodeName.toLowerCase() === element;\n const elmHasSameStyle = Boolean(options.attributes?.style &&\n hasSameStyleKeys(elm, options.attributes?.style));\n return elmIsSame && elmHasSameStyle;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { isNormalNode } from \"./is-normal-node.js\";\nimport { isSuitElement } from \"./is-suit-element.js\";\n/**\n * Checks if child elements are suitable for applying styles.\n * An element is suitable for us only if it is the only significant child.\n * If the child matches then returns it.\n * @example\n * `<font><strong>selected</strong></font>`\n * @private\n */\nexport function getSuitChild(style, font) {\n let { firstChild: child } = font;\n while (child && !isNormalNode(child)) {\n child = child.nextSibling;\n if (!child) {\n return null;\n }\n }\n if (child &&\n !Dom.next(child, isNormalNode, font) &&\n isSuitElement(style, child, false)) {\n return child;\n }\n return null;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { isNormalNode } from \"./is-normal-node.js\";\nimport { isSuitElement } from \"./is-suit-element.js\";\n/**\n * Checks if the parent of an element is suitable for applying styles, if applicable, then returns the parent *\n *\n * @param style - styles to be applied\n * @param node - checked item\n * @param root - editor root\n * @private\n */\nexport function getSuitParent(style, node, root) {\n const { parentNode } = node;\n if (parentNode === root ||\n !Dom.isHTMLElement(parentNode) ||\n Dom.next(node, isNormalNode, parentNode) ||\n Dom.prev(node, isNormalNode, parentNode)) {\n return null;\n }\n // <h3><span style=\"color:red\">|test|</span></h3> => apply <h2>\n if (style.isElementCommit &&\n style.elementIsBlock &&\n !Dom.isBlock(parentNode)) {\n return getSuitParent(style, parentNode, root);\n }\n if (isSuitElement(style, parentNode, false) &&\n (!Dom.isBlock(parentNode) || style.elementIsBlock)) {\n return parentNode;\n }\n // <strong style=\"color:red\"><em>|test|</em></strong> => apply <strong>\n if (style.isElementCommit && !Dom.isBlock(parentNode)) {\n return getSuitParent(style, parentNode, root);\n }\n return null;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\n/**\n * Check if FONT inside STYLE or SCRIPT element\n * @private\n */\nexport function isInsideInvisibleElement(font, root) {\n return Boolean(Dom.closest(font, ['style', 'script'], root));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { size } from \"../../../helpers/size/object-size.js\";\nimport { attr } from \"../../../helpers/utils/index.js\";\nimport { assert } from \"../../../helpers/utils/assert.js\";\nimport { hasSameStyle } from \"./has-same-style.js\";\n/**\n * Compares whether the given attributes match the element's own attributes\n * @private\n */\nexport function isSameAttributes(elm, attrs) {\n if (!elm.attributes.length && !size(attrs)) {\n return true;\n }\n if (!size(attrs)) {\n return true;\n }\n assert(attrs, 'Attrs must be a non-empty object');\n return Object.keys(attrs).every(key => {\n if (key === 'class' || key === 'className') {\n return elm.classList.contains(attrs[key]);\n }\n if (key === 'style') {\n return hasSameStyle(elm, attrs[key]);\n }\n return attr(elm, key) === attrs[key];\n });\n}\nexport function elementsEqualAttributes(elm1, elm2) {\n return (elm1.attributes.length === elm2.attributes.length &&\n Array.from(elm1.attributes).every(attr => elm2.hasAttribute(attr.name) &&\n elm2.getAttribute(attr.name) === attr.value));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { getContainer } from \"../../../global.js\";\nimport { isBoolean, isNumber, isPlainObject, isString } from \"../../../helpers/checker/index.js\";\nimport { normalizeCssValue } from \"../../../helpers/normalize/normalize-css-value.js\";\nimport { size } from \"../../../helpers/size/object-size.js\";\nimport { kebabCase } from \"../../../helpers/string/kebab-case.js\";\nimport { assert, attr } from \"../../../helpers/utils/index.js\";\nimport { css } from \"../../../helpers/utils/css.js\";\nimport { dataBind } from \"../../../helpers/utils/data-bind.js\";\nimport { _PREFIX, CHANGE, UNSET, UNWRAP } from \"../constants.js\";\nconst tak = 'toggleAttributes';\n/**\n * Toggles attributes\n * @private\n */\nexport function toggleAttributes(commitStyle, elm, jodit, mode, dry = false) {\n if (!dry && commitStyle.isApplied(elm, tak)) {\n return mode;\n }\n !dry && commitStyle.setApplied(elm, tak);\n const { attributes } = commitStyle.options;\n if (attributes && size(attributes) > 0) {\n Object.keys(attributes).forEach((key) => {\n const value = attributes[key];\n switch (key) {\n case 'style': {\n mode = toggleStyle(commitStyle, jodit, value, elm, dry, mode);\n break;\n }\n case 'className':\n case 'class':\n mode = toggleClass(jodit, value, elm, mode, dry);\n break;\n default:\n mode = toggleAttribute(jodit, value, elm, key, dry, mode);\n }\n });\n }\n return mode;\n}\nfunction toggleStyle(commitStyle, jodit, style, elm, dry, mode) {\n assert(isPlainObject(style) && size(style), 'Style must be an object');\n Object.keys(style).forEach((rule) => {\n const inlineValue = elm.style.getPropertyValue(kebabCase(rule));\n const newValue = style[rule];\n if (inlineValue === '' && newValue == null) {\n return;\n }\n if (getNativeCSSValue(jodit, elm, rule) ===\n normalizeCssValue(rule, newValue)) {\n if (!inlineValue) {\n return;\n }\n !dry && css(elm, rule, null);\n mode = UNSET;\n mode = removeExtraStyleAttribute(commitStyle, elm, mode);\n return;\n }\n mode = CHANGE;\n if (!dry) {\n css(elm, rule, newValue);\n mode = removeExtraStyleAttribute(commitStyle, elm, mode);\n }\n });\n return mode;\n}\nfunction toggleClass(jodit, value, elm, mode, dry) {\n assert(isString(value), 'Class name must be a string');\n const hook = jodit.e.fire.bind(jodit.e, `${_PREFIX}AfterToggleAttribute`);\n if (elm.classList.contains(value.toString())) {\n mode = UNSET;\n if (!dry) {\n elm.classList.remove(value);\n if (elm.classList.length === 0) {\n attr(elm, 'class', null);\n hook(mode, elm, 'class', null);\n }\n }\n }\n else {\n mode = CHANGE;\n if (!dry) {\n elm.classList.add(value);\n hook(mode, elm, 'class', value);\n }\n }\n return mode;\n}\nfunction toggleAttribute(jodit, value, elm, key, dry, mode) {\n assert(isString(value) || isNumber(value) || isBoolean(value) || value == null, 'Attribute value must be a string or number or boolean or null');\n const hook = jodit.e.fire.bind(jodit.e, `${_PREFIX}AfterToggleAttribute`);\n if (attr(elm, key) === value) {\n !dry && attr(elm, key, null);\n mode = UNSET;\n !dry && hook(mode, elm, key, value);\n return mode;\n }\n mode = CHANGE;\n if (!dry) {\n attr(elm, key, value);\n hook(mode, elm, key, value);\n }\n return mode;\n}\n/**\n * If the element has an empty style attribute, it removes the attribute,\n * and if it is default, it removes the element itself\n */\nfunction removeExtraStyleAttribute(commitStyle, elm, mode) {\n if (!attr(elm, 'style')) {\n attr(elm, 'style', null);\n if (elm.tagName.toLowerCase() === commitStyle.defaultTag) {\n Dom.unwrap(elm);\n mode = UNWRAP;\n }\n }\n return mode;\n}\n/**\n * Creates an iframe into which elements will be inserted to test their default styles in the browser\n */\nfunction getShadowRoot(jodit) {\n if (dataBind(jodit, 'shadowRoot') !== undefined) {\n return dataBind(jodit, 'shadowRoot');\n }\n const container = getContainer(jodit);\n const iframe = document.createElement('iframe');\n css(iframe, {\n width: 0,\n height: 0,\n position: 'absolute',\n border: 0\n });\n iframe.src = 'about:blank';\n container.appendChild(iframe);\n const doc = iframe.contentWindow?.document;\n const shadowRoot = !doc ? jodit.od.body : doc.body;\n dataBind(jodit, 'shadowRoot', shadowRoot);\n return shadowRoot;\n}\n/**\n * `strong -> fontWeight 700`\n */\nfunction getNativeCSSValue(jodit, elm, key) {\n const newElm = jodit.create.element(elm.tagName.toLowerCase());\n newElm.style.cssText = elm.style.cssText;\n const root = getShadowRoot(jodit);\n root.appendChild(newElm);\n const result = css(newElm, key);\n Dom.safeRemove(newElm);\n return result;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../../dom/index.js\";\nimport { elementsEqualAttributes, isSameAttributes, toggleAttributes } from \"../index.js\";\nimport { _PREFIX, INITIAL, REPLACE, WRAP } from \"../../constants.js\";\n/**\n * Replaces non-leaf items with leaf items and either creates a new list or\n * adds a new item to the nearest old list\n * @private\n */\nexport function wrapList(commitStyle, wrapper, jodit) {\n const result = jodit.e.fire(`${_PREFIX}BeforeWrapList`, REPLACE, wrapper, commitStyle);\n const newWrapper = result ?? Dom.replace(wrapper, 'li', jodit.createInside);\n const prev = newWrapper.previousElementSibling;\n const next = newWrapper.nextElementSibling;\n let list = Dom.isTag(prev, commitStyle.element) ? prev : null;\n list ?? (list = Dom.isTag(next, commitStyle.element) ? next : null);\n if (!Dom.isList(list) ||\n !isSameAttributes(list, commitStyle.options.attributes)) {\n list = jodit.createInside.element(commitStyle.element);\n toggleAttributes(commitStyle, list, jodit, INITIAL);\n Dom.before(newWrapper, list);\n }\n if (prev === list) {\n Dom.append(list, newWrapper);\n }\n else {\n Dom.prepend(list, newWrapper);\n }\n if (Dom.isTag(list.nextElementSibling, commitStyle.element) &&\n elementsEqualAttributes(list, list.nextElementSibling)) {\n Dom.append(list, Array.from(list.nextElementSibling.childNodes));\n Dom.safeRemove(list.nextElementSibling);\n }\n jodit.e.fire(`${_PREFIX}AfterWrapList`, WRAP, list, commitStyle);\n return list;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../../dom/dom.js\";\nimport { assert } from \"../../../../helpers/utils/assert.js\";\nimport { extractSelectedPart } from \"../extract.js\";\nimport { toggleAttributes } from \"../toggle-attributes.js\";\nimport { _PREFIX, CHANGE, INITIAL, REPLACE, UNWRAP } from \"../../constants.js\";\nimport { wrapList } from \"./wrap-list.js\";\n/**\n * Replaces `ul->ol` or `ol->ul`, apply styles to the list, or remove a list item from it\n * @private\n */\nexport function toggleOrderedList(commitStyle, li, jodit, mode) {\n if (!li) {\n return mode;\n }\n const list = li.parentElement;\n if (!list) {\n return mode;\n }\n const result = jodit.e.fire(`${_PREFIX}BeforeToggleList`, mode, commitStyle, list);\n if (result !== undefined) {\n return result;\n }\n const hook = jodit.e.fire.bind(jodit.e, `${_PREFIX}AfterToggleList`);\n if (mode !== UNWRAP) {\n const isChangeMode = toggleAttributes(commitStyle, li.parentElement, jodit, INITIAL, true) === CHANGE;\n // ul => ol, ol => ul or ul => ul.class1\n if (mode === REPLACE ||\n isChangeMode ||\n list.tagName.toLowerCase() !== commitStyle.element) {\n const wrapper = unwrapList(REPLACE, list, li, jodit, commitStyle);\n const newList = wrapList(commitStyle, wrapper, jodit);\n hook(REPLACE, newList, commitStyle);\n return REPLACE;\n }\n }\n const wrapper = unwrapList(UNWRAP, list, li, jodit, commitStyle);\n hook(UNWRAP, wrapper, commitStyle);\n return UNWRAP;\n}\nfunction unwrapList(mode, list, li, jodit, cs) {\n const result = jodit.e.fire(`${_PREFIX}BeforeUnwrapList`, mode, list, cs);\n if (result) {\n assert(Dom.isHTMLElement(result), `${_PREFIX}BeforeUnwrapList hook must return HTMLElement`);\n return result;\n }\n extractSelectedPart(list, li, jodit);\n assert(Dom.isHTMLElement(li.parentElement), 'Element should be inside the list');\n Dom.unwrap(li.parentElement);\n return Dom.replace(li, jodit.o.enter, jodit.createInside);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { attr, css } from \"../../../helpers/utils/index.js\";\nimport { hasSameStyleKeys } from \"./has-same-style.js\";\nimport { isSameStyleChild, isSuitElement } from \"./is-suit-element.js\";\n/**\n * Unwrap all suit elements inside\n * @private\n */\nexport function unwrapChildren(style, font) {\n const needUnwrap = [];\n const needChangeStyle = [];\n let firstElementSuit;\n const cssStyle = style.options.attributes?.style;\n if (font.firstChild) {\n const gen = Dom.eachGen(font);\n let item = gen.next();\n while (!item.done) {\n const elm = item.value;\n if (isSuitElement(style, elm, true) &&\n (!cssStyle || hasSameStyleKeys(elm, cssStyle))) {\n if (firstElementSuit === undefined) {\n firstElementSuit = true;\n }\n needUnwrap.push(elm);\n }\n else if (cssStyle && isSameStyleChild(style, elm)) {\n if (firstElementSuit === undefined) {\n firstElementSuit = false;\n }\n needChangeStyle.push(() => {\n css(elm, Object.keys(cssStyle).reduce((acc, key) => {\n acc[key] = null;\n return acc;\n }, {}));\n if (!attr(elm, 'style')) {\n attr(elm, 'style', null);\n }\n if (!attr(elm, 'style') &&\n elm.nodeName.toLowerCase() === style.element) {\n needUnwrap.push(elm);\n }\n });\n }\n else if (!Dom.isEmptyTextNode(elm)) {\n if (firstElementSuit === undefined) {\n firstElementSuit = false;\n }\n }\n item = gen.next();\n }\n }\n needChangeStyle.forEach(clb => clb());\n needUnwrap.forEach(Dom.unwrap);\n return Boolean(firstElementSuit);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/dom.js\";\nimport { isMarker } from \"../../../helpers/checker/is-marker.js\";\n/**\n * Wrap text or inline elements inside Block element\n * @private\n */\nexport function wrapUnwrappedText(style, elm, jodit) {\n const root = jodit.editor, ci = jodit.createInside, edge = (n, key = 'previousSibling') => {\n let edgeNode = n, node = n;\n while (node && !isMarker(node)) {\n if (Dom.isTag(node, jodit.o.enter)) {\n break;\n }\n edgeNode = node;\n if (node[key]) {\n node = node[key];\n }\n else {\n node =\n node.parentNode &&\n !Dom.isBlock(node.parentNode) &&\n node.parentNode !== root\n ? node.parentNode\n : null;\n }\n if (Dom.isBlock(node)) {\n break;\n }\n }\n return edgeNode;\n };\n const start = edge(elm), end = edge(elm, 'nextSibling');\n const range = jodit.s.createRange();\n range.setStartBefore(start);\n range.setEndAfter(end);\n const fragment = range.extractContents();\n const wrapper = ci.element(style.element);\n wrapper.appendChild(fragment);\n Dom.safeInsertNode(range, wrapper);\n if (style.elementIsBlock) {\n if (Dom.isEmpty(wrapper) &&\n !Dom.isTag(wrapper.firstElementChild, 'br')) {\n wrapper.appendChild(ci.element('br'));\n }\n }\n return wrapper;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../dom/index.js\";\nimport { attr } from \"../../../helpers/utils/attr.js\";\nimport { wrapList } from \"./list/wrap-list.js\";\nimport { wrapUnwrappedText } from \"./wrap-unwrapped-text.js\";\n/**\n * Replaces the parent tag with the applicable one, or wraps the text and also replaces the tag\n * @private\n */\nexport function wrap(commitStyle, font, jodit) {\n const wrapper = findOrCreateWrapper(commitStyle, font, jodit);\n return commitStyle.elementIsList\n ? wrapList(commitStyle, wrapper, jodit)\n : Dom.replace(wrapper, commitStyle.element, jodit.createInside, true);\n}\nconst WRAP_NODES = new Set([\n 'td',\n 'th',\n 'tr',\n 'tbody',\n 'table',\n 'li',\n 'ul',\n 'ol'\n]);\n/**\n * If we apply a block element, then it finds the closest block parent (exclude table cell etc.),\n * otherwise it wraps free text in an element.\n */\nfunction findOrCreateWrapper(commitStyle, font, jodit) {\n if (commitStyle.elementIsBlock) {\n const box = Dom.up(font, node => Dom.isBlock(node) && !Dom.isTag(node, WRAP_NODES), jodit.editor);\n if (box) {\n return box;\n }\n return wrapUnwrappedText(commitStyle, font, jodit);\n }\n attr(font, 'size', null);\n return font;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { LIST_TAGS } from \"../../constants.js\";\nimport { Dom } from \"../../dom/dom.js\";\nimport { assert } from \"../../helpers/utils/assert.js\";\nimport { INITIAL, REPLACE, UNSET, UNWRAP, WRAP } from \"../index.js\";\nimport { extractSelectedPart, getSuitChild, getSuitParent, isInsideInvisibleElement, suitableClosest, toggleAttributes, toggleOrderedList, unwrapChildren, wrap } from \"./api/index.js\";\nexport const states = {\n START: 'START',\n ELEMENT: 'ELEMENT',\n UNWRAP: 'UNWRAP',\n UNWRAP_CHILDREN: 'UNWRAP_CHILDREN',\n CHANGE: 'CHANGE',\n REPLACE_DEFAULT: 'REPLACE_DEFAULT',\n LIST: 'LIST',\n TOGGLE_LIST: 'TOGGLE_LIST',\n WRAP: 'WRAP',\n EXTRACT: 'EXTRACT',\n END: 'END'\n};\nexport const transactions = {\n [states.START]: {\n exec(value) {\n const { element, jodit, style, mode, collapsed } = value;\n if (isInsideInvisibleElement(element, jodit.editor) ||\n (!collapsed && Dom.isEmptyContent(element))) {\n return { ...value, next: states.END };\n }\n const elm = getSuitParent(style, element, jodit.editor) ||\n getSuitChild(style, element);\n if (elm) {\n return { ...value, next: states.ELEMENT, element: elm };\n }\n const suit = suitableClosest(style, element, jodit.editor);\n if (style.elementIsList && Dom.isList(suit)) {\n return { ...value, next: states.LIST };\n }\n if (suit) {\n return {\n ...value,\n next: states.EXTRACT\n };\n }\n return {\n ...value,\n next: mode !== UNWRAP ? states.UNWRAP_CHILDREN : states.END\n };\n }\n },\n [states.LIST]: {\n exec(value) {\n const { element, jodit, mode } = value;\n if (mode !== INITIAL && mode !== UNWRAP && mode !== REPLACE) {\n return { ...value, next: states.END };\n }\n const li = Dom.closest(element, 'li', jodit.editor);\n if (!li) {\n return { ...value, next: states.END };\n }\n const list = Dom.closest(element, LIST_TAGS, jodit.editor);\n if (list) {\n return { ...value, element: li, next: states.TOGGLE_LIST };\n }\n return {\n ...value,\n next: states.END\n };\n }\n },\n [states.TOGGLE_LIST]: {\n exec(value) {\n return {\n ...value,\n mode: toggleOrderedList(value.style, value.element, value.jodit, value.mode),\n next: states.END\n };\n }\n },\n [states.EXTRACT]: {\n exec(value) {\n const { element, jodit, style } = value;\n const suit = suitableClosest(style, element, jodit.editor);\n assert(suit, 'This place should have an element');\n if (!style.elementIsBlock) {\n extractSelectedPart(suit, element, jodit);\n }\n return {\n ...value,\n element: suit,\n next: states.ELEMENT\n };\n }\n },\n [states.UNWRAP_CHILDREN]: {\n exec(value) {\n const { element, style } = value;\n if (!unwrapChildren(style, element)) {\n return {\n ...value,\n next: states.WRAP\n };\n }\n return {\n ...value,\n mode: UNWRAP,\n next: states.END\n };\n }\n },\n [states.WRAP]: {\n exec(value) {\n const { element, jodit, style } = value;\n const wrapper = wrap(style, element, jodit);\n return {\n ...value,\n next: style.elementIsList ? states.END : states.CHANGE,\n mode: WRAP,\n element: wrapper\n };\n }\n },\n [states.ELEMENT]: {\n exec(value) {\n const { style, element, jodit } = value;\n if (toggleAttributes(style, element, jodit, INITIAL, true) !==\n INITIAL) {\n return { ...value, next: states.CHANGE };\n }\n // Apply same color for anchor https://github.com/xdan/jodit/issues/936\n if (!Dom.isTag(element, style.element)) {\n return { ...value, next: states.END };\n }\n return { ...value, next: states.UNWRAP };\n }\n },\n [states.CHANGE]: {\n exec(value) {\n const { style, element, jodit, mode } = value;\n const newMode = toggleAttributes(style, element, jodit, value.mode);\n if (mode !== WRAP &&\n newMode === UNSET &&\n !element.attributes.length &&\n Dom.isTag(element, style.element)) {\n return { ...value, next: states.UNWRAP };\n }\n return { ...value, mode: newMode, next: states.END };\n }\n },\n [states.UNWRAP]: {\n exec(value) {\n if (value.element.attributes.length &&\n Dom.isTag(value.element, value.style.element)) {\n return { ...value, next: states.REPLACE_DEFAULT };\n }\n Dom.unwrap(value.element);\n return { ...value, mode: UNWRAP, next: states.END };\n }\n },\n [states.REPLACE_DEFAULT]: {\n exec(value) {\n Dom.replace(value.element, value.style.defaultTag, value.jodit.createInside, true);\n return { ...value, mode: REPLACE, next: states.END };\n }\n },\n [states.END]: {\n exec(value) {\n return value;\n }\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { FiniteStateMachine } from \"./api/index.js\";\nimport { INITIAL } from \"./constants.js\";\nimport { states, transactions } from \"./transactions.js\";\n/** @internal */\nexport function ApplyStyle(jodit, cs) {\n const { s: sel, editor } = jodit;\n // sel.save();\n editor.firstChild?.normalize(); // FF fix for test \"commandsTest - Exec command \"bold\"\n const fakes = sel.fakes();\n const gen = jodit.s.wrapInTagGen(fakes);\n let font = gen.next();\n if (font.done) {\n return;\n }\n let state = {\n collapsed: sel.isCollapsed(),\n mode: INITIAL,\n element: font.value,\n next: states.START,\n jodit,\n style: cs\n };\n while (font && !font.done) {\n const machine = new FiniteStateMachine(states.START, transactions);\n state.element = font.value;\n // machine.disableSilent();\n while (machine.getState() !== states.END) {\n // console.log(machine.getState(), state);\n state = machine.dispatch('exec', state);\n }\n // console.log('-------------------');\n font = gen.next();\n }\n // sel.restore();\n sel.restoreFakes(fakes);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { IS_BLOCK, LIST_TAGS } from \"../../constants.js\";\nimport { camelCase } from \"../../helpers/string/camel-case.js\";\nimport { _PREFIX } from \"./constants.js\";\nimport { ApplyStyle } from \"./apply-style.js\";\nexport class CommitStyle {\n isApplied(elm, key) {\n const data = this.__applyMap.get(elm);\n if (!data) {\n return false;\n }\n return data[key];\n }\n setApplied(elm, key) {\n const data = this.__applyMap.get(elm) ?? {};\n data[key] = true;\n this.__applyMap.set(elm, data);\n }\n get elementIsList() {\n return Boolean(this.options.element && LIST_TAGS.has(this.options.element));\n }\n get element() {\n return this.options.element || this.defaultTag;\n }\n /**\n * New element is blocked\n */\n get elementIsBlock() {\n return Boolean(this.options.element && IS_BLOCK.test(this.options.element));\n }\n /**\n * The commit applies the tag change\n */\n get isElementCommit() {\n return Boolean(this.options.element &&\n this.options.element !== this.options.defaultTag);\n }\n get defaultTag() {\n if (this.options.defaultTag) {\n return this.options.defaultTag;\n }\n return this.elementIsBlock ? 'p' : 'span';\n }\n get elementIsDefault() {\n return this.element === this.defaultTag;\n }\n constructor(options) {\n this.options = options;\n this.__applyMap = new WeakMap();\n }\n apply(jodit) {\n const { hooks } = this.options;\n const keys = (hooks ? Object.keys(hooks) : []);\n try {\n keys.forEach(key => {\n jodit.e.on(camelCase(_PREFIX + '_' + key), hooks[key]);\n });\n ApplyStyle(jodit, this);\n }\n finally {\n keys.forEach(key => {\n jodit.e.off(camelCase(_PREFIX + '_' + key), hooks[key]);\n });\n this.__applyMap = new WeakMap();\n }\n jodit.synchronizeValues();\n jodit.e.fire('afterCommitStyle', this);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { INSEPARABLE_TAGS } from \"../../constants.js\";\nimport { Dom } from \"../../dom/dom.js\";\n/**\n * Moves the fake node inside the adjacent element if it lies next to it but not inside.\n * When the cursor is positioned in its place, it must be inside the element and not outside its border.\n * @private\n */\nexport function moveNodeInsideStart(j, node, start) {\n let sibling = Dom.findSibling(node, start), anotherSibling = Dom.findSibling(node, !start);\n while (Dom.isElement(sibling) &&\n !Dom.isTag(sibling, INSEPARABLE_TAGS) &&\n Dom.isContentEditable(sibling, j.editor) &&\n (!anotherSibling || !Dom.closest(node, Dom.isElement, j.editor))) {\n if (start || !sibling.firstChild) {\n sibling.appendChild(node);\n }\n else {\n Dom.before(sibling.firstChild, node);\n }\n sibling = Dom.sibling(node, start);\n anotherSibling = Dom.sibling(node, !start);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module selection\n */\nimport { INVISIBLE_SPACE_REG_EXP_END as INV_END, INVISIBLE_SPACE_REG_EXP_START as INV_START } from \"../../constants.js\";\nimport { Dom } from \"../../dom/dom.js\";\nexport * from \"./move-node-inside-start.js\";\nexport * from \"./move-the-node-along-the-edge-outward.js\";\n/**\n * Check if the cursor is at the edge of the string\n * @private\n */\nexport function cursorInTheEdgeOfString(container, offset, start, end) {\n const text = container.nodeValue?.length ? container.nodeValue : '';\n if (end && text.replace(INV_END(), '').length > offset) {\n return true;\n }\n const inv = INV_START().exec(text);\n return start && ((inv && inv[0].length < offset) || (!inv && offset > 0));\n}\nexport function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild, child) {\n node = range.startContainer.childNodes[range.startOffset];\n if (!node) {\n node = range.startContainer.childNodes[range.startOffset - 1];\n rightMode = true;\n }\n if (node && isCollapsed && !Dom.isText(node)) {\n // test Current method - Cursor in the left of some SPAN\n if (!rightMode && Dom.isText(node.previousSibling)) {\n node = node.previousSibling;\n }\n else if (checkChild) {\n let current = child(node);\n while (current) {\n if (current && Dom.isText(current)) {\n node = current;\n break;\n }\n current = child(current);\n }\n }\n }\n if (node && !isCollapsed && !Dom.isText(node)) {\n let leftChild = node, rightChild = node;\n do {\n leftChild = leftChild.firstChild;\n rightChild = rightChild.lastChild;\n } while (leftChild && rightChild && !Dom.isText(leftChild));\n if (leftChild === rightChild && leftChild && Dom.isText(leftChild)) {\n node = leftChild;\n }\n }\n return { node, rightMode };\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport * as consts from \"../constants.js\";\nimport { INSEPARABLE_TAGS, INVISIBLE_SPACE, IS_PROD } from \"../constants.js\";\nimport { autobind } from \"../decorators/index.js\";\nimport { Dom } from \"../dom/dom.js\";\nimport { $$, attr, call, css, error, getScrollParent, scrollIntoViewIfNeeded, size, toArray } from \"../helpers/index.js\";\nimport { isFunction, isMarker, isString } from \"../helpers/checker/index.js\";\nimport { assert } from \"../helpers/utils/assert.js\";\nimport { moveTheNodeAlongTheEdgeOutward } from \"./helpers/move-the-node-along-the-edge-outward.js\";\nimport \"./interface.js\";\nimport { CommitStyle } from \"./style/commit-style.js\";\nimport { cursorInTheEdgeOfString, findCorrectCurrentNode } from \"./helpers/index.js\";\nexport class Selection {\n constructor(jodit) {\n this.jodit = jodit;\n jodit.e.on('removeMarkers', () => {\n this.removeMarkers();\n });\n }\n /**\n * Short alias for this.jodit\n */\n get j() {\n return this.jodit;\n }\n /**\n * Throw Error exception if parameter is not Node\n */\n errorNode(node) {\n if (!Dom.isNode(node)) {\n throw error('Parameter node must be instance of Node');\n }\n }\n /**\n * Return current work place - for Jodit is Editor\n */\n get area() {\n return this.j.editor;\n }\n /**\n * Editor Window - it can be different for iframe mode\n */\n get win() {\n return this.j.ew;\n }\n /**\n * Current jodit editor doc\n */\n get doc() {\n return this.j.ed;\n }\n /**\n * Return current selection object\n */\n get sel() {\n if (this.j.o.shadowRoot &&\n isFunction(this.j.o.shadowRoot.getSelection)) {\n return this.j.o.shadowRoot.getSelection();\n }\n return this.win.getSelection();\n }\n /**\n * Return first selected range or create new\n */\n get range() {\n const sel = this.sel;\n return sel && sel.rangeCount ? sel.getRangeAt(0) : this.createRange();\n }\n /**\n * Checks if the selected text is currently inside the editor\n */\n get isInsideArea() {\n const { sel } = this;\n const range = sel?.rangeCount ? sel.getRangeAt(0) : null;\n return !(!range || !Dom.isOrContains(this.area, range.startContainer));\n }\n /**\n * Return current selection object\n * @param select - Immediately add in selection\n */\n createRange(select = false) {\n const range = this.doc.createRange();\n if (select) {\n this.selectRange(range);\n }\n return range;\n }\n /**\n * Remove all selected content\n */\n remove() {\n const sel = this.sel, current = this.current();\n if (sel && current) {\n for (let i = 0; i < sel.rangeCount; i += 1) {\n sel.getRangeAt(i).deleteContents();\n sel.getRangeAt(i).collapse(true);\n }\n }\n }\n /**\n * Clear all selection\n */\n clear() {\n if (this.sel?.rangeCount) {\n this.sel?.removeAllRanges();\n }\n }\n /**\n * Remove node element from editor\n */\n removeNode(node) {\n if (!Dom.isOrContains(this.j.editor, node, true)) {\n throw error(\"Selection.removeNode can remove only editor's children\");\n }\n Dom.safeRemove(node);\n this.j.e.fire('afterRemoveNode', node);\n }\n /**\n * Insert the cursor to any point x, y\n *\n * @param x - Coordinate by horizontal\n * @param y - Coordinate by vertical\n * @returns false - Something went wrong\n */\n insertCursorAtPoint(x, y) {\n this.removeMarkers();\n try {\n const rng = this.createRange();\n (() => {\n if (this.doc.caretPositionFromPoint) {\n const caret = this.doc.caretPositionFromPoint(x, y);\n if (caret) {\n rng.setStart(caret.offsetNode, caret.offset);\n return;\n }\n }\n if (this.doc.caretRangeFromPoint) {\n const caret = this.doc.caretRangeFromPoint(x, y);\n assert(caret, 'Incorrect caretRangeFromPoint behaviour');\n rng.setStart(caret.startContainer, caret.startOffset);\n }\n })();\n rng.collapse(true);\n this.selectRange(rng);\n return true;\n }\n catch { }\n return false;\n }\n /**\n * Check if editor has selection markers\n */\n get hasMarkers() {\n return Boolean(this.markers.length);\n }\n /**\n * Check if editor has selection markers\n */\n get markers() {\n return $$('span[data-' + consts.MARKER_CLASS + ']', this.area);\n }\n /**\n * Remove all markers\n */\n removeMarkers() {\n Dom.safeRemove.apply(null, this.markers);\n }\n /**\n * Create marker element\n */\n marker(atStart = false, range) {\n let newRange = null;\n if (range) {\n newRange = range.cloneRange();\n newRange.collapse(atStart);\n }\n const marker = this.j.createInside.span();\n marker.id =\n consts.MARKER_CLASS +\n '_' +\n Number(new Date()) +\n '_' +\n String(Math.random()).slice(2);\n marker.style.lineHeight = '0';\n marker.style.display = 'none';\n Dom.markTemporary(marker);\n attr(marker, 'data-' + consts.MARKER_CLASS, atStart ? 'start' : 'end');\n marker.appendChild(this.j.createInside.text(consts.INVISIBLE_SPACE));\n if (newRange) {\n if (Dom.isOrContains(this.area, atStart ? newRange.startContainer : newRange.endContainer)) {\n // Here need do unsafe inserting\n // Deny Dom.safeInsertNode(newRange, marker);\n // Apply style -> Test Style module -> Base apply -> For selection <p><strong>|test|</strong></p> apply style {\"element\":\"em\",\"style\":{\"fontStyle\":\"italic\"}}\n newRange.insertNode(marker);\n }\n }\n return marker;\n }\n /**\n * Restores user selections using marker invisible elements in the DOM.\n */\n restore() {\n let range = false;\n const markAttr = (start) => `span[data-${consts.MARKER_CLASS}=${start ? 'start' : 'end'}]`;\n const start = this.area.querySelector(markAttr(true)), end = this.area.querySelector(markAttr(false));\n if (!start) {\n return;\n }\n range = this.createRange();\n if (!end) {\n const previousNode = start.previousSibling;\n if (Dom.isText(previousNode)) {\n range.setStart(previousNode, previousNode.nodeValue ? previousNode.nodeValue.length : 0);\n }\n else {\n range.setStartBefore(start);\n }\n Dom.safeRemove(start);\n range.collapse(true);\n }\n else {\n range.setStartAfter(start);\n Dom.safeRemove(start);\n range.setEndBefore(end);\n Dom.safeRemove(end);\n }\n if (range) {\n this.selectRange(range);\n }\n }\n fakes() {\n const sel = this.sel;\n if (!sel || !sel.rangeCount) {\n return [];\n }\n const range = sel.getRangeAt(0);\n assert(range, 'Range is null');\n const left = range.cloneRange();\n left.collapse(true);\n const fakeLeft = this.j.createInside.fake();\n Dom.safeInsertNode(left, fakeLeft);\n range.setStartBefore(fakeLeft);\n const result = [fakeLeft];\n if (!range.collapsed) {\n const right = range.cloneRange();\n right.collapse(false);\n const fakeRight = this.j.createInside.fake();\n Dom.safeInsertNode(right, fakeRight);\n range.setEndAfter(fakeRight);\n result.push(fakeRight);\n }\n this.selectRange(range);\n return result;\n }\n restoreFakes(fakes) {\n const nodes = fakes.filter(n => n.isConnected);\n if (!nodes.length) {\n return;\n }\n const [fakeLeft, fakeRight] = nodes;\n const range = this.createRange();\n range.setStartAfter(fakeLeft);\n if (fakeRight) {\n range.setEndBefore(fakeRight);\n }\n this.selectRange(range);\n if (fakeLeft.parentNode?.firstChild !== fakeLeft.parentNode?.lastChild) {\n Dom.safeRemove(fakeLeft);\n }\n if (fakeRight?.parentNode?.firstChild !==\n fakeRight?.parentNode?.lastChild) {\n Dom.safeRemove(fakeRight);\n }\n }\n /**\n * Saves selections using marker invisible elements in the DOM.\n * @param silent - Do not change current range\n */\n save(silent = false) {\n if (this.hasMarkers) {\n return [];\n }\n const sel = this.sel;\n if (!sel || !sel.rangeCount) {\n return [];\n }\n const info = [], length = sel.rangeCount, ranges = [];\n for (let i = 0; i < length; i += 1) {\n ranges[i] = sel.getRangeAt(i);\n if (ranges[i].collapsed) {\n const start = this.marker(true, ranges[i]);\n info[i] = {\n startId: start.id,\n collapsed: true,\n startMarker: start.outerHTML\n };\n }\n else {\n const start = this.marker(true, ranges[i]);\n const end = this.marker(false, ranges[i]);\n info[i] = {\n startId: start.id,\n endId: end.id,\n collapsed: false,\n startMarker: start.outerHTML,\n endMarker: end.outerHTML\n };\n }\n }\n if (!silent) {\n sel.removeAllRanges();\n for (let i = length - 1; i >= 0; --i) {\n const startElm = this.doc.getElementById(info[i].startId);\n if (!startElm) {\n continue;\n }\n if (info[i].collapsed) {\n ranges[i].setStartAfter(startElm);\n ranges[i].collapse(true);\n }\n else {\n ranges[i].setStartBefore(startElm);\n if (info[i].endId) {\n const endElm = this.doc.getElementById(info[i].endId);\n if (endElm) {\n ranges[i].setEndAfter(endElm);\n }\n }\n }\n try {\n sel.addRange(ranges[i].cloneRange());\n }\n catch { }\n }\n }\n return info;\n }\n /**\n * Set focus in editor\n */\n focus(options = {\n preventScroll: true\n }) {\n if (!this.isFocused()) {\n const scrollParent = getScrollParent(this.j.container), scrollTop = scrollParent?.scrollTop;\n if (this.j.iframe) {\n if (this.doc.readyState === 'complete') {\n this.j.iframe.focus(options);\n }\n }\n this.win.focus();\n this.area.focus(options);\n if (scrollTop && scrollParent?.scrollTo) {\n scrollParent.scrollTo(0, scrollTop);\n }\n const sel = this.sel, range = sel?.rangeCount ? sel?.getRangeAt(0) : null;\n if (!range || !Dom.isOrContains(this.area, range.startContainer)) {\n const range = this.createRange();\n range.setStart(this.area, 0);\n range.collapse(true);\n this.selectRange(range, false);\n }\n if (!this.j.editorIsActive) {\n this.j?.events?.fire('focus');\n }\n return true;\n }\n return false;\n }\n /**\n * Checks whether the current selection is something or just set the cursor is\n * @returns true Selection does't have content\n */\n isCollapsed() {\n const sel = this.sel;\n for (let r = 0; sel && r < sel.rangeCount; r += 1) {\n if (!sel.getRangeAt(r).collapsed) {\n return false;\n }\n }\n return true;\n }\n /**\n * Checks whether the editor currently in focus\n */\n isFocused() {\n return (this.doc.hasFocus &&\n this.doc.hasFocus() &&\n this.area === this.doc.activeElement);\n }\n /**\n * Returns the current element under the cursor inside editor\n */\n current(checkChild = true) {\n if (this.j.getRealMode() !== consts.MODE_WYSIWYG) {\n return null;\n }\n const sel = this.sel;\n if (!sel || sel.rangeCount === 0) {\n return null;\n }\n const range = sel.getRangeAt(0);\n let node = range.startContainer;\n let rightMode = false;\n const child = (nd) => rightMode ? nd.lastChild : nd.firstChild;\n if (Dom.isTag(node, 'br') && sel.isCollapsed) {\n return node;\n }\n if (!Dom.isText(node)) {\n const ret = findCorrectCurrentNode(node, range, rightMode, sel.isCollapsed, checkChild, child);\n node = ret.node;\n rightMode = ret.rightMode;\n }\n // check - cursor inside editor\n if (node && Dom.isOrContains(this.area, node)) {\n return node;\n }\n return null;\n }\n /**\n * Insert element in editor\n *\n * @param node - Node for insert\n * @param insertCursorAfter - After insert, cursor will move after element\n * @param fireChange - After insert, editor fire change event. You can prevent this behavior\n */\n insertNode(node, insertCursorAfter = true, fireChange = true) {\n this.errorNode(node);\n const child = Dom.isFragment(node) ? node.lastChild : node;\n this.j.e.fire('safeHTML', node);\n if (!this.isFocused() && this.j.isEditorMode()) {\n this.focus();\n this.restore();\n }\n const sel = this.sel;\n this.j.history.snapshot.transaction(() => {\n if (!this.isCollapsed()) {\n this.j.execCommand('Delete');\n }\n this.j.e.fire('beforeInsertNode', node);\n if (sel && sel.rangeCount) {\n const range = sel.getRangeAt(0);\n if (Dom.isOrContains(this.area, range.commonAncestorContainer)) {\n Dom.safeInsertNode(range, node);\n }\n else {\n this.area.appendChild(node);\n }\n }\n else {\n this.area.appendChild(node);\n }\n const setCursor = (node) => {\n if (Dom.isBlock(node)) {\n const child = node.lastChild;\n if (child) {\n return setCursor(child);\n }\n }\n this.setCursorAfter(node);\n };\n if (insertCursorAfter) {\n if (Dom.isFragment(node)) {\n child && setCursor(child);\n }\n else {\n setCursor(node);\n }\n }\n if (this.j.o.scrollToPastedContent) {\n scrollIntoViewIfNeeded(child ?? node, this.j.editor, this.doc);\n }\n });\n if (fireChange && this.j.events) {\n this.j.__imdSynchronizeValues();\n }\n if (this.j.events) {\n this.j.e.fire('afterInsertNode', Dom.isFragment(node) ? child : node);\n }\n }\n /**\n * Inserts in the current cursor position some HTML snippet\n *\n * @param html - HTML The text to be inserted into the document\n * @param insertCursorAfter - After insert, cursor will move after element\n * @example\n * ```javascript\n * parent.s.insertHTML('<img src=\"image.png\"/>');\n * ```\n */\n insertHTML(html, insertCursorAfter = true) {\n if (html === '') {\n return;\n }\n const node = this.j.createInside.div();\n const fragment = this.j.createInside.fragment();\n let lastChild;\n if (!this.isFocused() && this.j.isEditorMode()) {\n this.focus();\n this.restore();\n }\n if (!Dom.isNode(html)) {\n node.innerHTML = html.toString();\n }\n else {\n node.appendChild(html);\n }\n if (!this.j.isEditorMode() &&\n this.j.e.fire('insertHTML', node.innerHTML) === false) {\n return;\n }\n lastChild = node.lastChild;\n if (!lastChild) {\n return;\n }\n while (node.firstChild) {\n lastChild = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n this.insertNode(fragment, insertCursorAfter, false);\n // There is no need to use synchronizeValues because you need to apply the changes immediately\n this.j.__imdSynchronizeValues();\n }\n /**\n * Insert image in editor\n *\n * @param url - URL for image, or HTMLImageElement\n * @param styles - If specified, it will be applied <code>$(image).css(styles)</code>\n * @param defaultWidth - If specified, it will be applied <code>css('width', defaultWidth)</code>\n */\n insertImage(url, styles = null, defaultWidth = null) {\n const image = isString(url) ? this.j.createInside.element('img') : url;\n if (isString(url)) {\n image.setAttribute('src', url);\n }\n if (defaultWidth != null) {\n let dw = defaultWidth.toString();\n if (dw &&\n 'auto' !== dw &&\n String(dw).indexOf('px') < 0 &&\n String(dw).indexOf('%') < 0) {\n dw += 'px';\n }\n call(\n // @ts-ignore\n this.j.o.resizer.forImageChangeAttributes ? attr : css, image, 'width', \n // @ts-ignore\n dw);\n }\n if (styles && typeof styles === 'object') {\n css(image, styles);\n }\n const onload = () => {\n if (image.naturalHeight < image.offsetHeight ||\n image.naturalWidth < image.offsetWidth) {\n image.style.width = '';\n image.style.height = '';\n }\n image.removeEventListener('load', onload);\n };\n this.j.e.on(image, 'load', onload);\n if (image.complete) {\n onload();\n }\n this.insertNode(image);\n /**\n * Triggered after image was inserted [[Select.insertImage]]. This method can executed from\n * [[FileBrowser]] or [[Uploader]]\n * @example\n * ```javascript\n * var editor = Jodit.make(\"#redactor\");\n * editor.e.on('afterInsertImage', function (image) {\n * image.className = 'bloghead4';\n * });\n * ```\n */\n this.j.e.fire('afterInsertImage', image);\n }\n /**\n * Call callback for all selection node\n */\n eachSelection(callback) {\n const sel = this.sel;\n if (!sel || !sel.rangeCount) {\n return;\n }\n const range = sel.getRangeAt(0);\n let root = range.commonAncestorContainer;\n if (!Dom.isHTMLElement(root)) {\n root = root.parentElement;\n }\n const nodes = [];\n const startOffset = range.startOffset;\n const length = root.childNodes.length;\n const elementOffset = startOffset < length ? startOffset : length - 1;\n let start = range.startContainer === this.area\n ? root.childNodes[elementOffset]\n : range.startContainer;\n let end = range.endContainer === this.area\n ? root.childNodes[range.endOffset - 1]\n : range.endContainer;\n if (Dom.isText(start) &&\n start === range.startContainer &&\n range.startOffset === start.nodeValue?.length &&\n start.nextSibling) {\n start = start.nextSibling;\n }\n if (Dom.isText(end) &&\n end === range.endContainer &&\n range.endOffset === 0 &&\n end.previousSibling) {\n end = end.previousSibling;\n }\n const checkElm = (node) => {\n if (node &&\n node !== root &&\n !Dom.isEmptyTextNode(node) &&\n !isMarker(node)) {\n nodes.push(node);\n }\n };\n checkElm(start);\n if (start !== end && Dom.isOrContains(root, start, true)) {\n Dom.find(start, node => {\n checkElm(node);\n // checks parentElement as well because partial selections are not equal to entire element\n return (node === end ||\n (node && node.contains && node.contains(end)));\n }, root, true, false);\n }\n const forEvery = (current) => {\n if (!Dom.isOrContains(this.j.editor, current, true)) {\n return;\n }\n if (current.nodeName.match(/^(UL|OL)$/)) {\n return toArray(current.childNodes).forEach(forEvery);\n }\n if (Dom.isTag(current, 'li')) {\n if (current.firstChild) {\n current = current.firstChild;\n }\n else {\n const currentB = this.j.createInside.text(INVISIBLE_SPACE);\n current.appendChild(currentB);\n current = currentB;\n }\n }\n callback(current);\n };\n if (nodes.length === 0) {\n if (Dom.isEmptyTextNode(start)) {\n nodes.push(start);\n }\n if (start.firstChild) {\n nodes.push(start.firstChild);\n }\n }\n nodes.forEach(forEvery);\n }\n /**\n * Checks if the cursor is at the end(start) block\n *\n * @param start - true - check whether the cursor is at the start block\n * @param parentBlock - Find in this\n * @param fake - Node for cursor position\n *\n * @returns true - the cursor is at the end(start) block, null - cursor somewhere outside\n */\n cursorInTheEdge(start, parentBlock, fake = null) {\n const end = !start, range = this.sel?.getRangeAt(0);\n fake ?? (fake = this.current(false));\n if (!range || !fake || !Dom.isOrContains(parentBlock, fake, true)) {\n return null;\n }\n const container = start ? range.startContainer : range.endContainer;\n const offset = start ? range.startOffset : range.endOffset;\n const isSignificant = (elm) => Boolean(elm &&\n !Dom.isTag(elm, 'br') &&\n !Dom.isEmptyTextNode(elm) &&\n !Dom.isTemporary(elm) &&\n !(Dom.isElement(elm) &&\n this.j.e.fire('isInvisibleForCursor', elm) === true));\n // check right offset\n if (Dom.isText(container)) {\n if (cursorInTheEdgeOfString(container, offset, start, end)) {\n return false;\n }\n }\n else {\n const children = toArray(container.childNodes);\n if (end) {\n if (children.slice(offset).some(isSignificant)) {\n return false;\n }\n }\n else {\n if (children.slice(0, offset).some(isSignificant)) {\n return false;\n }\n }\n }\n let next = fake;\n while (next && next !== parentBlock) {\n const nextOne = Dom.sibling(next, start);\n if (!nextOne) {\n next = next.parentNode;\n continue;\n }\n next = nextOne;\n if (next && isSignificant(next)) {\n return false;\n }\n }\n return true;\n }\n /**\n * Wrapper for cursorInTheEdge\n */\n cursorOnTheLeft(parentBlock, fake) {\n return this.cursorInTheEdge(true, parentBlock, fake);\n }\n /**\n * Wrapper for cursorInTheEdge\n */\n cursorOnTheRight(parentBlock, fake) {\n return this.cursorInTheEdge(false, parentBlock, fake);\n }\n /**\n * Set cursor after the node\n * @returns fake invisible textnode. After insert it can be removed\n */\n setCursorAfter(node) {\n return this.setCursorNearWith(node, false);\n }\n /**\n * Set cursor before the node\n * @returns fake invisible textnode. After insert it can be removed\n */\n setCursorBefore(node) {\n return this.setCursorNearWith(node, true);\n }\n /**\n * Add fake node for new cursor position\n */\n setCursorNearWith(node, inStart) {\n this.errorNode(node);\n if (!Dom.up(node, (elm) => elm === this.area || (elm && elm.parentNode === this.area), this.area)) {\n throw error('Node element must be in editor');\n }\n const range = this.createRange();\n let fakeNode = null;\n if (!Dom.isText(node)) {\n fakeNode = this.j.createInside.fake();\n inStart ? range.setStartBefore(node) : range.setEndAfter(node);\n range.collapse(inStart);\n Dom.safeInsertNode(range, fakeNode);\n range.selectNode(fakeNode);\n }\n else {\n if (inStart) {\n range.setStart(node, 0);\n }\n else {\n range.setEnd(node, node.nodeValue?.length ?? 0);\n }\n }\n range.collapse(inStart);\n this.selectRange(range);\n return fakeNode;\n }\n /**\n * Set cursor in the node\n * @param node - Node element\n * @param inStart - set cursor in start of element\n */\n setCursorIn(node, inStart = false) {\n this.errorNode(node);\n if (!Dom.up(node, (elm) => elm === this.area || (elm && elm.parentNode === this.area), this.area)) {\n throw error('Node element must be in editor');\n }\n const range = this.createRange();\n let start = node, last = node;\n do {\n if (Dom.isText(start) || Dom.isTag(start, INSEPARABLE_TAGS)) {\n break;\n }\n last = start;\n start = inStart ? start.firstChild : start.lastChild;\n } while (start);\n if (!start) {\n const fakeNode = this.j.createInside.text(consts.INVISIBLE_SPACE);\n if (!Dom.isTag(last, INSEPARABLE_TAGS)) {\n last.appendChild(fakeNode);\n last = fakeNode;\n }\n else {\n start = last;\n }\n }\n const workElm = start || last;\n if (!Dom.isTag(workElm, INSEPARABLE_TAGS)) {\n range.selectNodeContents(workElm);\n range.collapse(inStart);\n }\n else {\n inStart || Dom.isTag(workElm, 'br')\n ? range.setStartBefore(workElm)\n : range.setEndAfter(workElm);\n range.collapse(inStart);\n }\n this.selectRange(range);\n return last;\n }\n /**\n * Set range selection\n */\n selectRange(range, focus = true) {\n const sel = this.sel;\n if (focus && !this.isFocused()) {\n this.focus();\n }\n if (sel) {\n sel.removeAllRanges();\n sel.addRange(range);\n }\n /**\n * Fired after change selection\n */\n this.j.e.fire('changeSelection');\n return this;\n }\n /**\n * Select node\n * @param node - Node element\n * @param inward - select all inside\n */\n select(node, inward = false) {\n this.errorNode(node);\n if (!Dom.up(node, (elm) => elm === this.area || (elm && elm.parentNode === this.area), this.area)) {\n throw error('Node element must be in editor');\n }\n const range = this.createRange();\n range[inward ? 'selectNodeContents' : 'selectNode'](node);\n return this.selectRange(range);\n }\n /**\n * Return current selected HTML\n * @example\n * ```javascript\n * const editor = Jodit.make();\n * console.log(editor.s.html); // html\n * console.log(Jodit.modules.Helpers.stripTags(editor.s.html)); // plain text\n * ```\n */\n get html() {\n const sel = this.sel;\n if (sel && sel.rangeCount > 0) {\n const range = sel.getRangeAt(0);\n const clonedSelection = range.cloneContents();\n const div = this.j.createInside.div();\n div.appendChild(clonedSelection);\n return div.innerHTML;\n }\n return '';\n }\n /**\n * Wrap all selected fragments inside Tag or apply some callback\n */\n *wrapInTagGen(fakes) {\n if (this.isCollapsed()) {\n const font = this.jodit.createInside.element('font', INVISIBLE_SPACE);\n this.insertNode(font, false, false);\n if (fakes && fakes[0]) {\n font.appendChild(fakes[0]);\n }\n yield font;\n Dom.unwrap(font);\n return;\n }\n // fix issue https://github.com/xdan/jodit/issues/65\n $$('*[style*=font-size]', this.area).forEach(elm => {\n attr(elm, 'data-font-size', elm.style.fontSize.toString());\n elm.style.removeProperty('font-size');\n });\n this.j.nativeExecCommand('fontsize', false, '7');\n $$('*[data-font-size]', this.area).forEach(elm => {\n const fontSize = attr(elm, 'data-font-size');\n if (fontSize) {\n elm.style.fontSize = fontSize;\n attr(elm, 'data-font-size', null);\n }\n });\n const elms = $$('font[size=\"7\"]', this.area);\n for (const font of elms) {\n const { firstChild, lastChild } = font;\n if (firstChild &&\n firstChild === lastChild &&\n isMarker(firstChild)) {\n Dom.unwrap(font);\n continue;\n }\n if (firstChild && isMarker(firstChild)) {\n Dom.before(font, firstChild);\n }\n if (lastChild && isMarker(lastChild)) {\n Dom.after(font, lastChild);\n }\n yield font;\n Dom.unwrap(font);\n }\n return;\n }\n /**\n * Wrap all selected fragments inside Tag or apply some callback\n */\n wrapInTag(tagOrCallback) {\n const result = [];\n for (const font of this.wrapInTagGen()) {\n try {\n if (font.firstChild &&\n font.firstChild === font.lastChild &&\n isMarker(font.firstChild)) {\n continue;\n }\n if (isFunction(tagOrCallback)) {\n tagOrCallback(font);\n }\n else {\n result.push(Dom.replace(font, tagOrCallback, this.j.createInside));\n }\n }\n finally {\n const pn = font.parentNode;\n if (pn) {\n Dom.unwrap(font);\n if (Dom.isEmpty(pn)) {\n Dom.unwrap(pn);\n }\n }\n }\n }\n return result;\n }\n /**\n * Apply some css rules for all selections. It method wraps selections in nodeName tag.\n * @example\n * ```js\n * const editor = Jodit.make('#editor');\n * editor.value = 'test';\n * editor.execCommand('selectall');\n *\n * editor.s.commitStyle({\n * \tstyle: {color: 'red'}\n * }) // will wrap `text` in `span` and add style `color:red`\n * editor.s.commitStyle({\n * \tstyle: {color: 'red'}\n * }) // will remove `color:red` from `span`\n * ```\n */\n commitStyle(options) {\n assert(size(options) > 0, 'Need to pass at least one option');\n const styleElm = new CommitStyle(options);\n styleElm.apply(this.j);\n }\n /**\n * Split selection on two parts: left and right\n */\n splitSelection(currentBox, edge) {\n if (!this.isCollapsed()) {\n return null;\n }\n const leftRange = this.createRange();\n const range = this.range;\n leftRange.setStartBefore(currentBox);\n const cursorOnTheRight = this.cursorOnTheRight(currentBox, edge);\n const cursorOnTheLeft = this.cursorOnTheLeft(currentBox, edge);\n const br = this.j.createInside.element('br'), prevFake = this.j.createInside.fake(), nextFake = prevFake.cloneNode();\n try {\n if (cursorOnTheRight || cursorOnTheLeft) {\n if (edge) {\n Dom.before(edge, br);\n }\n else {\n Dom.safeInsertNode(range, br);\n }\n const clearBR = (start, getNext) => {\n let next = getNext(start);\n while (next) {\n const nextSib = getNext(next);\n if (next &&\n (Dom.isTag(next, 'br') || Dom.isEmptyTextNode(next))) {\n Dom.safeRemove(next);\n }\n else {\n break;\n }\n next = nextSib;\n }\n };\n clearBR(br, (n) => n.nextSibling);\n clearBR(br, (n) => n.previousSibling);\n Dom.after(br, nextFake);\n Dom.before(br, prevFake);\n if (cursorOnTheRight) {\n leftRange.setEndBefore(br);\n range.setEndBefore(br);\n }\n else {\n leftRange.setEndAfter(br);\n range.setEndAfter(br);\n }\n }\n else {\n leftRange.setEnd(range.startContainer, range.startOffset);\n }\n const fragment = leftRange.extractContents();\n const clearEmpties = (node) => Dom.each(node, node => Dom.isEmptyTextNode(node) && Dom.safeRemove(node));\n assert(currentBox.parentNode, 'Splitting fails');\n try {\n clearEmpties(fragment);\n clearEmpties(currentBox);\n currentBox.parentNode.insertBefore(fragment, currentBox);\n if (!edge && cursorOnTheRight && br?.parentNode) {\n const range = this.createRange();\n range.setStartBefore(br);\n this.selectRange(range);\n }\n }\n catch (e) {\n if (!IS_PROD) {\n throw e;\n }\n }\n // After splitting some part can be empty\n const fillFakeParent = (fake) => {\n if (fake?.parentNode?.firstChild === fake?.parentNode?.lastChild) {\n fake?.parentNode?.appendChild(br.cloneNode());\n }\n };\n fillFakeParent(prevFake);\n fillFakeParent(nextFake);\n }\n finally {\n Dom.safeRemove(prevFake);\n Dom.safeRemove(nextFake);\n }\n return currentBox.previousElementSibling;\n }\n expandSelection() {\n if (this.isCollapsed()) {\n return this;\n }\n const { range } = this;\n const c = range.cloneRange();\n if (!Dom.isOrContains(this.j.editor, range.commonAncestorContainer, true)) {\n return this;\n }\n const moveMaxEdgeFake = (start) => {\n const fake = this.j.createInside.fake();\n const r = range.cloneRange();\n r.collapse(start);\n Dom.safeInsertNode(r, fake);\n moveTheNodeAlongTheEdgeOutward(fake, start, this.j.editor);\n return fake;\n };\n const leftFake = moveMaxEdgeFake(true);\n const rightFake = moveMaxEdgeFake(false);\n c.setStartAfter(leftFake);\n c.setEndBefore(rightFake);\n const leftBox = Dom.findSibling(leftFake, false);\n const rightBox = Dom.findSibling(rightFake, true);\n if (leftBox !== rightBox) {\n const rightInsideLeft = Dom.isElement(leftBox) && Dom.isOrContains(leftBox, rightFake);\n const leftInsideRight = !rightInsideLeft &&\n Dom.isElement(rightBox) &&\n Dom.isOrContains(rightBox, leftFake);\n if (rightInsideLeft || leftInsideRight) {\n let child = (rightInsideLeft ? leftBox : rightBox), container = child;\n while (Dom.isElement(child)) {\n child = rightInsideLeft\n ? child.firstElementChild\n : child.lastElementChild;\n if (child) {\n const isInside = rightInsideLeft\n ? Dom.isOrContains(child, rightFake)\n : Dom.isOrContains(child, leftFake);\n if (isInside) {\n container = child;\n }\n }\n }\n if (rightInsideLeft) {\n c.setStart(container, 0);\n }\n else {\n c.setEnd(container, container.childNodes.length);\n }\n }\n }\n this.selectRange(c);\n Dom.safeRemove(leftFake, rightFake);\n if (this.isCollapsed()) {\n throw error('Selection is collapsed');\n }\n return this;\n }\n}\n__decorate([\n autobind\n], Selection.prototype, \"createRange\", null);\n__decorate([\n autobind\n], Selection.prototype, \"focus\", null);\n__decorate([\n autobind\n], Selection.prototype, \"setCursorAfter\", null);\n__decorate([\n autobind\n], Selection.prototype, \"setCursorBefore\", null);\n__decorate([\n autobind\n], Selection.prototype, \"setCursorIn\", null);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar Jodit_1;\nimport * as constants from \"./core/constants.js\";\nimport { FAT_MODE, IS_PROD, lang } from \"./core/constants.js\";\nimport { autobind, cache, derive, throttle, watch } from \"./core/decorators/index.js\";\nimport { eventEmitter, instances, modules, pluginSystem } from \"./core/global.js\";\nimport { asArray, attr, callPromise, ConfigProto, css, error, isFunction, isJoditObject, isNumber, isPromise, isString, isVoid, kebabCase, markAsAtomic, normalizeKeyAliases, resolveElement, toArray, ucfirst } from \"./core/helpers/index.js\";\nimport { Ajax } from \"./core/request/index.js\";\nimport { Dlgs } from \"./core/traits/dlgs.js\";\nimport { Config } from \"./config.js\";\nimport { Create, Dom, History, Plugin, Selection, StatusBar, STATUSES, ViewWithToolbar } from \"./modules/index.js\";\nconst __defaultStyleDisplayKey = 'data-jodit-default-style-display';\nconst __defaultClassesKey = 'data-jodit-default-classes';\nlet Jodit = Jodit_1 = class Jodit extends ViewWithToolbar {\n /** @override */\n className() {\n return 'Jodit';\n }\n /**\n * Return promise for ready actions\n * @example\n * ```js\n * const jodit = Jodit.make('#editor');\n * await jodit.waitForReady();\n * jodit.e.fire('someAsyncLoadedPluginEvent', (test) => {\n * alert(test);\n * });\n * ```\n */\n waitForReady() {\n if (this.isReady) {\n return Promise.resolve(this);\n }\n return this.async.promise(resolve => {\n this.hookStatus('ready', () => resolve(this));\n });\n }\n static get ready() {\n return new Promise(resolve => {\n eventEmitter.on('oditready', resolve);\n });\n }\n /**\n * Plain text editor's value\n */\n get text() {\n if (this.editor) {\n return this.editor.innerText || '';\n }\n const div = this.createInside.div();\n div.innerHTML = this.getElementValue();\n return div.innerText || '';\n }\n /**\n * Return a default timeout period in milliseconds for some debounce or throttle functions.\n * By default, `{history.timeout}` options\n */\n get defaultTimeout() {\n return isNumber(this.o.defaultTimeout)\n ? this.o.defaultTimeout\n : Config.defaultOptions.defaultTimeout;\n }\n /**\n * Method wrap usual Has Object in Object helper for prevent deep object merging in options*\n */\n static atom(object) {\n return markAsAtomic(object);\n }\n /**\n * Factory for creating Jodit instance\n */\n static make(element, options) {\n return new this(element, options);\n }\n /**\n * Checks if the element has already been initialized when for Jodit\n */\n static isJoditAssigned(element) {\n return (element &&\n isJoditObject(element.component) &&\n !element.component.isInDestruct);\n }\n /**\n * Default settings\n */\n static get defaultOptions() {\n return Config.defaultOptions;\n }\n get createInside() {\n return new Create(() => this.ed, this.o.createAttributes);\n }\n __setPlaceField(field, value) {\n if (!this.currentPlace) {\n this.currentPlace = {};\n this.places = [this.currentPlace];\n }\n this.currentPlace[field] = value;\n }\n /**\n * element It contains source element\n */\n get element() {\n return this.currentPlace.element;\n }\n /**\n * editor It contains the root element editor\n */\n get editor() {\n return this.currentPlace.editor;\n }\n set editor(editor) {\n this.__setPlaceField('editor', editor);\n }\n /**\n * Container for all staff\n */\n get container() {\n return this.currentPlace.container;\n }\n set container(container) {\n this.__setPlaceField('container', container);\n }\n /**\n * workplace It contains source and wysiwyg editors\n */\n get workplace() {\n return this.currentPlace.workplace;\n }\n get message() {\n return this.getMessageModule(this.workplace);\n }\n /**\n * Statusbar module\n */\n get statusbar() {\n return this.currentPlace.statusbar;\n }\n /**\n * iframe Iframe for iframe mode\n */\n get iframe() {\n return this.currentPlace.iframe;\n }\n set iframe(iframe) {\n this.__setPlaceField('iframe', iframe);\n }\n get history() {\n return this.currentPlace.history;\n }\n /**\n * In iframe mode editor's window can be different by owner\n */\n get editorWindow() {\n return this.currentPlace.editorWindow;\n }\n set editorWindow(win) {\n this.__setPlaceField('editorWindow', win);\n }\n /**\n * Alias for this.ew\n */\n get ew() {\n return this.editorWindow;\n }\n /**\n * In iframe mode editor's window can be different by owner\n */\n get editorDocument() {\n return this.currentPlace.editorWindow.document;\n }\n /**\n * Alias for this.ew\n */\n get ed() {\n return this.editorDocument;\n }\n /**\n * options All Jodit settings default + second arguments of constructor\n */\n get options() {\n return this.currentPlace.options;\n }\n set options(opt) {\n this.__setPlaceField('options', opt);\n }\n /**\n * Alias for this.selection\n */\n get s() {\n return this.selection;\n }\n get uploader() {\n return this.getInstance('Uploader', this.o.uploader);\n }\n get filebrowser() {\n const jodit = this;\n const options = ConfigProto({\n defaultTimeout: jodit.defaultTimeout,\n uploader: jodit.o.uploader,\n language: jodit.o.language,\n license: jodit.o.license,\n theme: jodit.o.theme,\n shadowRoot: jodit.o.shadowRoot,\n defaultCallback(data) {\n if (data.files && data.files.length) {\n data.files.forEach((file, i) => {\n const url = data.baseurl + file;\n const isImage = data.isImages\n ? data.isImages[i]\n : false;\n if (isImage) {\n jodit.s.insertImage(url, null, jodit.o.imageDefaultWidth);\n }\n else {\n jodit.s.insertNode(jodit.createInside.fromHTML(`<a href='${url}' title='${url}'>${url}</a>`));\n }\n });\n }\n }\n }, this.o.filebrowser);\n return jodit.getInstance('FileBrowser', options);\n }\n /**\n * Editor's mode\n */\n get mode() {\n return this.__mode;\n }\n set mode(mode) {\n this.setMode(mode);\n }\n /**\n * Return real HTML value from WYSIWYG editor.\n * @internal\n */\n getNativeEditorValue() {\n const value = this.e.fire('beforeGetNativeEditorValue');\n if (isString(value)) {\n return value;\n }\n if (this.editor) {\n return this.editor.innerHTML;\n }\n return this.getElementValue();\n }\n /**\n * Set value to native editor\n */\n setNativeEditorValue(value) {\n const data = {\n value\n };\n if (this.e.fire('beforeSetNativeEditorValue', data)) {\n return;\n }\n if (this.editor) {\n this.editor.innerHTML = data.value;\n }\n }\n /**\n * HTML value\n */\n get value() {\n return this.getEditorValue();\n }\n set value(html) {\n this.setEditorValue(html);\n // @ts-ignore Internal method\n this.history.__processChanges();\n }\n synchronizeValues() {\n this.__imdSynchronizeValues();\n }\n /**\n * This is an internal method, do not use it in your applications.\n * @private\n * @internal\n */\n __imdSynchronizeValues() {\n this.setEditorValue();\n }\n /**\n * Return editor value\n */\n getEditorValue(removeSelectionMarkers = true, consumer) {\n /**\n * Triggered before getEditorValue executed.\n * If returned not undefined, getEditorValue will return this value\n * @example\n * ```javascript\n * var editor = Jodit.make(\"#redactor\");\n * editor.e.on('beforeGetValueFromEditor', function () {\n * return editor.editor.innerHTML.replace(/a/g, 'b');\n * });\n * ```\n */\n let value;\n value = this.e.fire('beforeGetValueFromEditor', consumer);\n if (value !== undefined) {\n return value;\n }\n value = this.getNativeEditorValue().replace(constants.INVISIBLE_SPACE_REG_EXP(), '');\n if (removeSelectionMarkers) {\n value = value.replace(/<span[^>]+id=\"jodit-selection_marker_[^>]+><\\/span>/g, '');\n }\n if (value === '<br>') {\n value = '';\n }\n /**\n * Triggered after getEditorValue got value from wysiwyg.\n * It can change new_value.value\n *\n * @example\n * ```javascript\n * var editor = Jodit.make(\"#redactor\");\n * editor.e.on('afterGetValueFromEditor', function (new_value) {\n * new_value.value = new_value.value.replace('a', 'b');\n * });\n * ```\n */\n const new_value = { value };\n this.e.fire('afterGetValueFromEditor', new_value, consumer);\n return new_value.value;\n }\n /**\n * Set editor html value and if set sync fill source element value\n * When method was called without arguments - it is a simple way to synchronize editor to element\n */\n setEditorValue(value) {\n /**\n * Triggered before getEditorValue set value to wysiwyg.\n * @example\n * ```javascript\n * var editor = Jodit.make(\"#redactor\");\n * editor.e.on('beforeSetValueToEditor', function (old_value) {\n * return old_value.value.replace('a', 'b');\n * });\n * editor.e.on('beforeSetValueToEditor', function () {\n * return false; // disable setEditorValue method\n * });\n * ```\n */\n const newValue = this.e.fire('beforeSetValueToEditor', value);\n if (newValue === false) {\n return;\n }\n if (isString(newValue)) {\n value = newValue;\n }\n if (!this.editor) {\n if (value !== undefined) {\n this.__setElementValue(value);\n }\n return; // try change value before init or after destruct\n }\n if (!isString(value) && !isVoid(value)) {\n throw error('value must be string');\n }\n if (!isVoid(value) && this.getNativeEditorValue() !== value) {\n this.setNativeEditorValue(value);\n }\n this.e.fire('postProcessSetEditorValue');\n const old_value = this.getElementValue(), new_value = this.getEditorValue();\n if (!this.__isSilentChange &&\n old_value !== new_value &&\n this.__callChangeCount < constants.SAFE_COUNT_CHANGE_CALL) {\n this.__setElementValue(new_value);\n this.__callChangeCount += 1;\n if (!IS_PROD && this.__callChangeCount > 4) {\n console.warn('Too many recursive changes', new_value, old_value);\n }\n try {\n // @ts-ignore Internal method\n this.history.__upTick();\n this.e.fire('change', new_value, old_value);\n this.e.fire(this.history, 'change', new_value, old_value);\n }\n finally {\n this.__callChangeCount = 0;\n }\n }\n }\n /**\n * If some plugin changes the DOM directly, then you need to update the content of the original element\n */\n updateElementValue() {\n this.__setElementValue(this.getEditorValue());\n }\n /**\n * Return source element value\n */\n getElementValue() {\n return this.element.value !== undefined\n ? this.element.value\n : this.element.innerHTML;\n }\n __setElementValue(value) {\n if (!isString(value)) {\n throw error('value must be string');\n }\n if (this.element !== this.container &&\n value !== this.getElementValue()) {\n const data = { value };\n const res = this.e.fire('beforeSetElementValue', data);\n callPromise(res, () => {\n if (this.element.value !== undefined) {\n this.element.value = data.value;\n }\n else {\n this.element.innerHTML = data.value;\n }\n this.e.fire('afterSetElementValue', data);\n });\n }\n }\n /**\n * Register custom handler for command\n *\n * @example\n * ```javascript\n * var jodit = Jodit.make('#editor);\n *\n * jodit.setEditorValue('test test test');\n *\n * jodit.registerCommand('replaceString', function (command, needle, replace) {\n * var value = this.getEditorValue();\n * this.setEditorValue(value.replace(needle, replace));\n * return false; // stop execute native command\n * });\n *\n * jodit.execCommand('replaceString', 'test', 'stop');\n *\n * console.log(jodit.value); // stop test\n *\n * // and you can add hotkeys for command\n * jodit.registerCommand('replaceString', {\n * hotkeys: 'ctrl+r',\n * exec: function (command, needle, replace) {\n * var value = this.getEditorValue();\n * this.setEditorValue(value.replace(needle, replace));\n * }\n * });\n *\n * ```\n */\n registerCommand(commandNameOriginal, command, options) {\n const commandName = commandNameOriginal.toLowerCase();\n let commands = this.commands.get(commandName);\n if (commands === undefined) {\n commands = [];\n this.commands.set(commandName, commands);\n }\n commands.push(command);\n if (!isFunction(command)) {\n const hotkeys = this.o.commandToHotkeys[commandName] ||\n this.o.commandToHotkeys[commandNameOriginal] ||\n command.hotkeys;\n if (hotkeys) {\n this.registerHotkeyToCommand(hotkeys, commandName, options?.stopPropagation);\n }\n }\n return this;\n }\n /**\n * Register hotkey for command\n */\n registerHotkeyToCommand(hotkeys, commandName, shouldStop = true) {\n const shortcuts = asArray(hotkeys)\n .map(normalizeKeyAliases)\n .map(hotkey => hotkey + '.hotkey')\n .join(' ');\n this.e\n .off(shortcuts)\n .on(shortcuts, (type, stop) => {\n if (stop) {\n stop.shouldStop = shouldStop ?? true;\n }\n return this.execCommand(commandName); // because need `beforeCommand`\n });\n }\n /**\n * Execute command editor\n *\n * @param command - command. It supports all the\n * @see https://developer.mozilla.org/ru/docs/Web/API/Document/execCommand#commands and a number of its own\n * for example applyStyleProperty. Comand fontSize receives the second parameter px,\n * formatBlock and can take several options\n * @example\n * ```javascript\n * this.execCommand('fontSize', 12); // sets the size of 12 px\n * this.execCommand('underline');\n * this.execCommand('formatBlock', 'p'); // will be inserted paragraph\n * ```\n */\n execCommand(command, showUI, value, ...args) {\n if (!this.s.isFocused()) {\n this.s.focus();\n }\n if (this.o.readonly &&\n !this.o.allowCommandsInReadOnly.includes(command)) {\n return;\n }\n let result;\n command = command.toLowerCase();\n /**\n * Called before any command\n * @param command - Command name in lowercase\n * @param second - The second parameter for the command\n * @param third - The third option is for the team\n * @example\n * ```javascript\n * parent.e.on('beforeCommand', function (command) {\n * if (command === 'justifyCenter') {\n * var p = parent.c.element('p')\n * parent.s.insertNode(p)\n * parent.s.setCursorIn(p);\n * p.style.textAlign = 'justyfy';\n * return false; // break executes native command\n * }\n * })\n * ```\n */\n result = this.e.fire(`beforeCommand${ucfirst(command)}`, showUI, value, ...args);\n if (result !== false) {\n result = this.e.fire('beforeCommand', command, showUI, value, ...args);\n }\n if (result !== false) {\n result = this.__execCustomCommands(command, showUI, value, ...args);\n }\n if (result !== false) {\n this.s.focus();\n try {\n result = this.nativeExecCommand(command, showUI, value);\n }\n catch (e) {\n if (!IS_PROD) {\n throw e;\n }\n }\n }\n /**\n * It called after any command\n * @param command - name command\n * @param second - The second parameter for the command\n * @param third - The third option is for the team\n */\n this.e.fire('afterCommand', command, showUI, value);\n this.__imdSynchronizeValues(); // synchrony\n return result;\n }\n /**\n * Exec native command\n */\n nativeExecCommand(command, showUI, value) {\n this.__isSilentChange = true;\n try {\n return this.ed.execCommand(command, showUI, value);\n }\n finally {\n this.__isSilentChange = false;\n }\n }\n __execCustomCommands(commandName, second, third, ...args) {\n commandName = commandName.toLowerCase();\n const commands = this.commands.get(commandName);\n if (commands !== undefined) {\n let result;\n commands.forEach((command) => {\n let callback;\n if (isFunction(command)) {\n callback = command;\n }\n else {\n callback = command.exec;\n }\n const resultCurrent = callback.call(this, commandName, second, third, ...args);\n if (resultCurrent !== undefined) {\n result = resultCurrent;\n }\n });\n return result;\n }\n }\n /**\n * Disable selecting\n */\n lock(name = 'any') {\n if (super.lock(name)) {\n this.__selectionLocked = this.s.save();\n this.s.clear();\n this.editor.classList.add('jodit_lock');\n this.e.fire('lock', true);\n return true;\n }\n return false;\n }\n /**\n * Enable selecting\n */\n unlock() {\n if (super.unlock()) {\n this.editor.classList.remove('jodit_lock');\n if (this.__selectionLocked) {\n this.s.restore();\n }\n this.e.fire('lock', false);\n return true;\n }\n return false;\n }\n /**\n * Return current editor mode: Jodit.MODE_WYSIWYG, Jodit.MODE_SOURCE or Jodit.MODE_SPLIT\n */\n getMode() {\n return this.mode;\n }\n isEditorMode() {\n return this.getRealMode() === constants.MODE_WYSIWYG;\n }\n /**\n * Return current real work mode. When editor in MODE_SOURCE or MODE_WYSIWYG it will\n * return them, but then editor in MODE_SPLIT it will return MODE_SOURCE if\n * Textarea(CodeMirror) focused or MODE_WYSIWYG otherwise\n *\n * @example\n * ```javascript\n * var editor = Jodit.make('#editor');\n * console.log(editor.getRealMode());\n * ```\n */\n getRealMode() {\n if (this.getMode() !== constants.MODE_SPLIT) {\n return this.getMode();\n }\n const active = this.od.activeElement;\n if (active &&\n (active === this.iframe ||\n Dom.isOrContains(this.editor, active) ||\n Dom.isOrContains(this.toolbar.container, active))) {\n return constants.MODE_WYSIWYG;\n }\n return constants.MODE_SOURCE;\n }\n /**\n * Set current mode\n */\n setMode(mode) {\n const oldMode = this.getMode();\n const data = {\n mode: parseInt(mode.toString(), 10)\n }, modeClasses = [\n 'jodit-wysiwyg_mode',\n 'jodit-source__mode',\n 'jodit_split_mode'\n ];\n /**\n * Triggered before setMode executed. If returned false method stopped\n * @param data - PlainObject `{mode: {string}}` In handler you can change data.mode\n * @example\n * ```javascript\n * var editor = Jodit.make(\"#redactor\");\n * editor.e.on('beforeSetMode', function (data) {\n * data.mode = Jodit.MODE_SOURCE; // not respond to the mode change. Always make the source code mode\n * });\n * ```\n */\n if (this.e.fire('beforeSetMode', data) === false) {\n return;\n }\n this.__mode = [\n constants.MODE_SOURCE,\n constants.MODE_WYSIWYG,\n constants.MODE_SPLIT\n ].includes(data.mode)\n ? data.mode\n : constants.MODE_WYSIWYG;\n if (this.o.saveModeInStorage) {\n this.storage.set('jodit_default_mode', this.mode);\n }\n modeClasses.forEach(className => {\n this.container.classList.remove(className);\n });\n this.container.classList.add(modeClasses[this.mode - 1]);\n /**\n * Triggered after setMode executed\n * @example\n * ```javascript\n * var editor = Jodit.make(\"#redactor\");\n * editor.e.on('afterSetMode', function () {\n * editor.setEditorValue(''); // clear editor's value after change mode\n * });\n * ```\n */\n if (oldMode !== this.getMode()) {\n this.e.fire('afterSetMode');\n }\n }\n /**\n * Toggle editor mode WYSIWYG to TEXTAREA(CodeMirror) to SPLIT(WYSIWYG and TEXTAREA) to again WYSIWYG\n *\n * @example\n * ```javascript\n * var editor = Jodit.make('#editor');\n * editor.toggleMode();\n * ```\n */\n toggleMode() {\n let mode = this.getMode();\n if ([\n constants.MODE_SOURCE,\n constants.MODE_WYSIWYG,\n this.o.useSplitMode ? constants.MODE_SPLIT : 9\n ].includes(mode + 1)) {\n mode += 1;\n }\n else {\n mode = constants.MODE_WYSIWYG;\n }\n this.setMode(mode);\n }\n /**\n * Switch on/off the editor into the disabled state.\n * When disabled, the user is not able to change the editor content\n * This function firing the `disabled` event.\n */\n setDisabled(isDisabled) {\n this.o.disabled = isDisabled;\n const readOnly = this.__wasReadOnly;\n this.setReadOnly(isDisabled || readOnly);\n this.__wasReadOnly = readOnly;\n if (this.editor) {\n this.editor.setAttribute('aria-disabled', isDisabled.toString());\n this.container.classList.toggle('jodit_disabled', isDisabled);\n this.e.fire('disabled', isDisabled);\n }\n }\n /**\n * Return true if editor in disabled mode\n */\n getDisabled() {\n return this.o.disabled;\n }\n /**\n * Switch on/off the editor into the read-only state.\n * When in readonly, the user is not able to change the editor content, but can still\n * use some editor functions (show source code, print content, or seach).\n * This function firing the `readonly` event.\n */\n setReadOnly(isReadOnly) {\n if (this.__wasReadOnly === isReadOnly) {\n return;\n }\n this.__wasReadOnly = isReadOnly;\n this.o.readonly = isReadOnly;\n if (isReadOnly) {\n this.editor && this.editor.removeAttribute('contenteditable');\n }\n else {\n this.editor && this.editor.setAttribute('contenteditable', 'true');\n }\n this.e && this.e.fire('readonly', isReadOnly);\n }\n /**\n * Return true if editor in read-only mode\n */\n getReadOnly() {\n return this.o.readonly;\n }\n focus() {\n if (this.getMode() !== constants.MODE_SOURCE) {\n this.s.focus();\n }\n }\n get isFocused() {\n return this.s.isFocused();\n }\n /**\n * Hook before init\n */\n beforeInitHook() {\n // do nothing\n }\n /**\n * Hook after init\n */\n afterInitHook() {\n // do nothing\n }\n /** @override **/\n initOptions(options) {\n this.options = (ConfigProto(options || {}, Config.defaultOptions));\n }\n /** @override **/\n initOwners() {\n // in iframe, it can be changed\n this.editorWindow = this.o.ownerWindow;\n this.ownerWindow = this.o.ownerWindow;\n }\n /**\n * Create instance of Jodit\n *\n * @param element - Selector or HTMLElement\n * @param options - Editor's options\n */\n constructor(element, options) {\n super(options, true);\n /**\n * Define if object is Jodit\n */\n this.isJodit = true;\n this.commands = new Map();\n this.__selectionLocked = null;\n this.__wasReadOnly = false;\n /**\n * Editor has focus in this time\n */\n this.editorIsActive = false;\n this.__mode = constants.MODE_WYSIWYG;\n this.__callChangeCount = 0;\n /**\n * Don't raise a change event\n */\n this.__isSilentChange = false;\n this.__elementToPlace = new Map();\n try {\n const elementSource = resolveElement(element, this.o.shadowRoot || this.od);\n if (Jodit_1.isJoditAssigned(elementSource)) {\n // @ts-ignore\n return elementSource.component;\n }\n }\n catch (e) {\n this.destruct();\n throw e;\n }\n this.setStatus(STATUSES.beforeInit);\n this.id =\n attr(resolveElement(element, this.o.shadowRoot || this.od), 'id') ||\n new Date().getTime().toString();\n instances[this.id] = this;\n this.attachEvents(options);\n this.e.on(this.ow, 'resize', () => {\n if (this.e) {\n this.e.fire('resize');\n }\n });\n this.e.on('prepareWYSIWYGEditor', this.__prepareWYSIWYGEditor);\n this.selection = new Selection(this);\n const beforeInitHookResult = this.beforeInitHook();\n callPromise(beforeInitHookResult, () => {\n if (this.isInDestruct) {\n return;\n }\n this.e.fire('beforeInit', this);\n pluginSystem.__init(this);\n this.e.fire('afterPluginSystemInit', this);\n this.e.on('changePlace', () => {\n this.setReadOnly(this.o.readonly);\n this.setDisabled(this.o.disabled);\n });\n this.places.length = 0;\n const addPlaceResult = this.addPlace(element, options);\n instances[this.id] = this;\n const init = () => {\n if (this.isInDestruct) {\n return;\n }\n if (this.e) {\n this.e.fire('afterInit', this);\n }\n callPromise(this.afterInitHook());\n this.setStatus(STATUSES.ready);\n this.e.fire('afterConstructor', this);\n };\n callPromise(addPlaceResult, init);\n });\n }\n /**\n * Create and init current editable place\n */\n addPlace(source, options) {\n const element = resolveElement(source, this.o.shadowRoot || this.od);\n this.attachEvents(options);\n if (element.attributes) {\n toArray(element.attributes).forEach((attr) => {\n const name = attr.name;\n let value = attr.value;\n if (Config.defaultOptions[name] !== undefined &&\n (!options || options[name] === undefined)) {\n if (['readonly', 'disabled'].indexOf(name) !== -1) {\n value = value === '' || value === 'true';\n }\n if (/^[0-9]+(\\.)?([0-9]+)?$/.test(value.toString())) {\n value = Number(value);\n }\n this.options[name] = value;\n }\n });\n }\n let container = this.c.div('jodit-container');\n container.classList.add('jodit');\n container.classList.add('jodit-container');\n container.classList.add(`jodit_theme_${this.o.theme || 'default'}`);\n addClassNames(this.o.className, container);\n if (this.o.containerStyle) {\n css(container, this.o.containerStyle);\n }\n const { styleValues } = this.o;\n Object.keys(styleValues).forEach(key => {\n const property = kebabCase(key);\n container.style.setProperty(`--jd-${property}`, styleValues[key]);\n });\n container.setAttribute('contenteditable', 'false');\n let buffer = null;\n if (this.o.inline) {\n if (['TEXTAREA', 'INPUT'].indexOf(element.nodeName) === -1) {\n container = element;\n element.setAttribute(__defaultClassesKey, element.className.toString());\n buffer = container.innerHTML;\n container.innerHTML = '';\n }\n container.classList.add('jodit_inline');\n container.classList.add('jodit-container');\n }\n // actual for inline mode\n if (element !== container) {\n // hide source element\n if (element.style.display) {\n element.setAttribute(__defaultStyleDisplayKey, element.style.display);\n }\n element.style.display = 'none';\n }\n const workplace = this.c.div('jodit-workplace', {\n contenteditable: false\n });\n container.appendChild(workplace);\n if (element.parentNode && element !== container) {\n element.parentNode.insertBefore(container, element);\n }\n Object.defineProperty(element, 'component', {\n enumerable: false,\n configurable: true,\n value: this\n });\n const editor = this.c.div('jodit-wysiwyg', {\n contenteditable: true,\n 'aria-disabled': false,\n tabindex: this.o.tabIndex\n });\n workplace.appendChild(editor);\n const currentPlace = {\n editor,\n element,\n container,\n workplace,\n statusbar: new StatusBar(this, container),\n options: this.isReady\n ? ConfigProto(options || {}, Config.defaultOptions)\n : this.options,\n history: new History(this),\n editorWindow: this.ow\n };\n this.__elementToPlace.set(editor, currentPlace);\n this.setCurrentPlace(currentPlace);\n this.places.push(currentPlace);\n this.setNativeEditorValue(this.getElementValue()); // Init value\n const initResult = this.__initEditor(buffer);\n const opt = this.options;\n const init = () => {\n if (opt.enableDragAndDropFileToEditor &&\n opt.uploader &&\n (opt.uploader.url || opt.uploader.insertImageAsBase64URI)) {\n this.uploader.bind(this.editor);\n }\n // in initEditor - the editor could change\n if (!this.__elementToPlace.get(this.editor)) {\n this.__elementToPlace.set(this.editor, currentPlace);\n }\n this.e.fire('afterAddPlace', currentPlace);\n };\n return callPromise(initResult, init);\n }\n addDisclaimer(elm) {\n this.workplace.appendChild(elm);\n }\n /**\n * Set current place object\n */\n setCurrentPlace(place) {\n if (this.currentPlace === place) {\n return;\n }\n if (!this.isEditorMode()) {\n this.setMode(constants.MODE_WYSIWYG);\n }\n this.currentPlace = place;\n this.buildToolbar();\n if (this.isReady) {\n this.e.fire('changePlace', place);\n }\n }\n __initEditor(buffer) {\n const result = this.__createEditor();\n return callPromise(result, () => {\n if (this.isInDestruct) {\n return;\n }\n // syncro\n if (this.element !== this.container) {\n const value = this.getElementValue();\n if (value !== this.getEditorValue()) {\n this.setEditorValue(value);\n }\n }\n else {\n buffer != null && this.setEditorValue(buffer); // inline mode\n }\n let mode = this.o.defaultMode;\n if (this.o.saveModeInStorage) {\n const localMode = this.storage.get('jodit_default_mode');\n if (typeof localMode === 'string') {\n mode = parseInt(localMode, 10);\n }\n }\n this.setMode(mode);\n if (this.o.readonly) {\n this.__wasReadOnly = false;\n this.setReadOnly(true);\n }\n if (this.o.disabled) {\n this.setDisabled(true);\n }\n // if enter plugin isn't installed\n try {\n this.ed.execCommand('defaultParagraphSeparator', false, this.o.enter.toLowerCase());\n }\n catch { }\n });\n }\n /**\n * Create main DIV element and replace source textarea\n */\n __createEditor() {\n const defaultEditorArea = this.editor;\n const stayDefault = this.e.fire('createEditor', this);\n return callPromise(stayDefault, () => {\n if (this.isInDestruct) {\n return;\n }\n if (stayDefault === false || isPromise(stayDefault)) {\n Dom.safeRemove(defaultEditorArea);\n }\n addClassNames(this.o.editorClassName, this.editor);\n if (this.o.style) {\n css(this.editor, this.o.style);\n }\n this.e\n .on('synchro', () => {\n this.setEditorValue();\n })\n .on('focus', () => {\n this.editorIsActive = true;\n })\n .on('blur', () => (this.editorIsActive = false));\n this.__prepareWYSIWYGEditor();\n // direction\n if (this.o.direction) {\n const direction = this.o.direction.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n this.container.style.direction = direction;\n this.container.setAttribute('dir', direction);\n this.toolbar.setDirection(direction);\n }\n if (this.o.triggerChangeEvent) {\n this.e.on('change', this.async.debounce(() => {\n this.e && this.e.fire(this.element, 'change');\n }, this.defaultTimeout));\n }\n });\n }\n /**\n * Attach some native event listeners\n */\n __prepareWYSIWYGEditor() {\n const { editor } = this;\n // direction\n if (this.o.direction) {\n const direction = this.o.direction.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';\n this.editor.style.direction = direction;\n this.editor.setAttribute('dir', direction);\n }\n // proxy events\n this.e\n .on(editor, 'mousedown touchstart focus', () => {\n const place = this.__elementToPlace.get(editor);\n if (place) {\n this.setCurrentPlace(place);\n }\n })\n .on(editor, 'compositionend', this.synchronizeValues)\n .on(editor, 'selectionchange selectionstart keydown keyup input keypress dblclick mousedown mouseup ' +\n 'click copy cut dragstart drop dragover paste resize touchstart touchend focus blur', (event) => {\n if (this.o.readonly || this.__isSilentChange) {\n return;\n }\n const w = this.ew;\n if (event instanceof w.KeyboardEvent &&\n event.isComposing) {\n return;\n }\n if (this.e && this.e.fire) {\n if (this.e.fire(event.type, event) === false) {\n return false;\n }\n this.synchronizeValues();\n }\n });\n }\n fetch(url, options) {\n const ajax = new Ajax({\n url,\n ...options\n }, this.o.defaultAjaxOptions);\n const destroy = () => {\n this.e.off('beforeDestruct', destroy);\n this.progressbar.progress(100).hide();\n ajax.destruct();\n };\n this.e.one('beforeDestruct', destroy);\n this.progressbar.show().progress(30);\n const promise = ajax.send();\n promise.finally(destroy).catch(() => null);\n return promise;\n }\n /**\n * Jodit's Destructor. Remove editor, and return source input\n */\n destruct() {\n if (this.isInDestruct) {\n return;\n }\n this.setStatus(STATUSES.beforeDestruct);\n this.__elementToPlace.clear();\n this.storage.clear();\n this.buffer.clear();\n this.commands.clear();\n this.__selectionLocked = null;\n this.e.off(this.ow, 'resize');\n this.e.off(this.ow);\n this.e.off(this.od);\n this.e.off(this.od.body);\n const buffer = this.editor ? this.getEditorValue() : '';\n this.places.forEach(({ container, workplace, statusbar, element, iframe, editor, history }) => {\n if (!element) {\n return;\n }\n if (element !== container) {\n if (element.hasAttribute(__defaultStyleDisplayKey)) {\n const display = attr(element, __defaultStyleDisplayKey);\n if (display) {\n element.style.display = display;\n element.removeAttribute(__defaultStyleDisplayKey);\n }\n }\n else {\n element.style.display = '';\n }\n }\n else {\n if (element.hasAttribute(__defaultClassesKey)) {\n element.className =\n attr(element, __defaultClassesKey) || '';\n element.removeAttribute(__defaultClassesKey);\n }\n }\n if (element.hasAttribute('style') && !attr(element, 'style')) {\n element.removeAttribute('style');\n }\n statusbar.destruct();\n this.e.off(container);\n this.e.off(element);\n this.e.off(editor);\n Dom.safeRemove(workplace);\n Dom.safeRemove(editor);\n if (container !== element) {\n Dom.safeRemove(container);\n }\n Object.defineProperty(element, 'component', {\n enumerable: false,\n configurable: true,\n value: null\n });\n Dom.safeRemove(iframe);\n // inline mode\n if (container === element) {\n element.innerHTML = buffer;\n }\n history.destruct();\n });\n this.places.length = 0;\n this.currentPlace = {};\n delete instances[this.id];\n super.destruct();\n }\n};\nJodit.fatMode = FAT_MODE;\nJodit.plugins = pluginSystem;\nJodit.modules = modules;\nJodit.ns = modules;\nJodit.decorators = {};\nJodit.constants = constants;\nJodit.instances = instances;\nJodit.lang = lang;\nJodit.core = {\n Plugin\n};\n__decorate([\n cache\n], Jodit.prototype, \"createInside\", null);\n__decorate([\n cache\n], Jodit.prototype, \"message\", null);\n__decorate([\n cache\n], Jodit.prototype, \"s\", null);\n__decorate([\n cache\n], Jodit.prototype, \"uploader\", null);\n__decorate([\n cache\n], Jodit.prototype, \"filebrowser\", null);\n__decorate([\n throttle()\n], Jodit.prototype, \"synchronizeValues\", null);\n__decorate([\n watch(':internalChange')\n], Jodit.prototype, \"updateElementValue\", null);\n__decorate([\n autobind\n], Jodit.prototype, \"__prepareWYSIWYGEditor\", null);\nJodit = Jodit_1 = __decorate([\n derive(Dlgs)\n], Jodit);\nexport { Jodit };\nfunction addClassNames(className, elm) {\n if (className) {\n className.split(/\\s+/).forEach(cn => elm.classList.add(cn));\n }\n}\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1395 736q0 13-10 23l-466 466q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l393 393 393-393q10-10 23-10t23 10l50 50q10 10 10 23z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1203 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l50 50q10 10 10 23z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1171 960q0 13-10 23l-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1395 1184q0 13-10 23l-50 50q-10 10-23 10t-23-10l-393-393-393 393q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l466-466q10-10 23-10t23 10l466 466q10 10 10 23z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M704 1376v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm256 0v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm256 0v-704q0-14-9-23t-23-9h-64q-14 0-23 9t-9 23v704q0 14 9 23t23 9h64q14 0 23-9t9-23zm-544-992h448l-48-117q-7-9-17-11h-317q-10 2-17 11zm928 32v64q0 14-9 23t-23 9h-96v948q0 83-47 143.5t-113 60.5h-832q-66 0-113-58.5t-47-141.5v-952h-96q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h309l70-167q15-37 54-63t79-26h320q40 0 79 26t54 63l70 167h309q14 0 23 9t9 23z\\\"/> </svg> \";","export default \"<svg viewBox=\\\"0 0 14 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"> <g stroke=\\\"none\\\" stroke-width=\\\"1\\\"> <path d=\\\"M14,1.4 L12.6,0 L7,5.6 L1.4,0 L0,1.4 L5.6,7 L0,12.6 L1.4,14 L7,8.4 L12.6,14 L14,12.6 L8.4,7 L14,1.4 Z\\\"/> </g> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1792 1344v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-896q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h896q26 0 45 19t19 45zm256-384v128q0 26-19 45t-45 19h-1408q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1408q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-640q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h640q26 0 45 19t19 45z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1472 930v318q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q63 0 117 25 15 7 18 23 3 17-9 29l-49 49q-10 10-23 10-3 0-9-2-23-6-45-6h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113v-254q0-13 9-22l64-64q10-10 23-10 6 0 12 3 20 8 20 29zm231-489l-814 814q-24 24-57 24t-57-24l-430-430q-24-24-24-57t24-57l110-110q24-24 57-24t57 24l263 263 647-647q24-24 57-24t57 24l110 110q24 24 24 57t-24 57z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 10 10\\\"> <path d=\\\"M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 24 24\\\" > <circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2.2\\\"/> <circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"2.2\\\"/> <circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"2.2\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1664 960q-152-236-381-353 61 104 61 225 0 185-131.5 316.5t-316.5 131.5-316.5-131.5-131.5-316.5q0-121 61-225-229 117-381 353 133 205 333.5 326.5t434.5 121.5 434.5-121.5 333.5-326.5zm-720-384q0-20-14-34t-34-14q-125 0-214.5 89.5t-89.5 214.5q0 20 14 34t34 14 34-14 14-34q0-86 61-147t147-61q20 0 34-14t14-34zm848 384q0 34-20 69-140 230-376.5 368.5t-499.5 138.5-499.5-139-376.5-368q-20-35-20-69t20-69q140-229 376.5-368t499.5-139 499.5 139 376.5 368q20 35 20 69z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1152 512v-472q22 14 36 28l408 408q14 14 28 36h-472zm-128 32q0 40 28 68t68 28h544v1056q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1600q0-40 28-68t68-28h800v544z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1728 608v704q0 92-66 158t-158 66h-1216q-92 0-158-66t-66-158v-960q0-92 66-158t158-66h320q92 0 158 66t66 158v32h672q92 0 158 66t66 158z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1152 1376v-160q0-14-9-23t-23-9h-96v-512q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v160q0 14 9 23t23 9h96v320h-96q-14 0-23 9t-9 23v160q0 14 9 23t23 9h448q14 0 23-9t9-23zm-128-896v-160q0-14-9-23t-23-9h-192q-14 0-23 9t-9 23v160q0 14 9 23t23 9h192q14 0 23-9t9-23zm640 416q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1792 1344v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-1280q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1280q26 0 45 19t19 45zm256-384v128q0 26-19 45t-45 19h-1536q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1536q26 0 45 19t19 45zm-384-384v128q0 26-19 45t-45 19h-1152q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1152q26 0 45 19t19 45z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"><path d=\\\"M640 768h512v-192q0-106-75-181t-181-75-181 75-75 181v192zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132 316 132 132 316v192h32q40 0 68 28t28 68z\\\"/></svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 32 32\\\"> <path d=\\\"M27 4l-15 15-7-7-5 5 12 12 20-20z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"><path d=\\\"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z\\\"/></svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"><path d=\\\"M1600 736v192q0 40-28 68t-68 28h-416v416q0 40-28 68t-68 28h-192q-40 0-68-28t-28-68v-416h-416q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h416v-416q0-40 28-68t68-28h192q40 0 68 28t28 68v416h416q40 0 68 28t28 68z\\\"/></svg> \";","export default \"<svg viewBox=\\\"0 0 13 13\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"> <path d=\\\"M5.9814 11.8049C5.59087 11.4144 5.59087 10.7812 5.9814 10.3907L10.224 6.14806C10.6146 5.75754 11.2477 5.75754 11.6383 6.14806C12.0288 6.53859 12.0288 7.17175 11.6383 7.56228L7.39561 11.8049C7.00509 12.1954 6.37192 12.1954 5.9814 11.8049Z\\\"/> <path d=\\\"M0.707107 12.0208C0.316582 11.6303 0.316582 10.9971 0.707107 10.6066L10.6066 0.707121C10.9971 0.316597 11.6303 0.316596 12.0208 0.707121C12.4113 1.09764 12.4113 1.73081 12.0208 2.12133L2.12132 12.0208C1.7308 12.4114 1.09763 12.4114 0.707107 12.0208Z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1792 1344v128q0 26-19 45t-45 19h-1664q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1664q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1280q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1280q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1536q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1536q26 0 45 19t19 45zm0-384v128q0 26-19 45t-45 19h-1152q-26 0-45-19t-19-45v-128q0-26 19-45t45-19h1152q26 0 45 19t19 45z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M512 1536h768v-384h-768v384zm896 0h128v-896q0-14-10-38.5t-20-34.5l-281-281q-10-10-34-20t-39-10v416q0 40-28 68t-68 28h-576q-40 0-68-28t-28-68v-416h-128v1280h128v-416q0-40 28-68t68-28h832q40 0 68 28t28 68v416zm-384-928v-320q0-13-9.5-22.5t-22.5-9.5h-192q-13 0-22.5 9.5t-9.5 22.5v320q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5-9.5t9.5-22.5zm640 32v928q0 40-28 68t-68 28h-1344q-40 0-68-28t-28-68v-1344q0-40 28-68t68-28h928q40 0 88 20t76 48l280 280q28 28 48 76t20 88z\\\"/> </svg> \";","export default \"<svg viewBox=\\\"0 0 48 48\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"> <path stroke=\\\"null\\\" d=\\\"m42.276011,26.302547c0.098397,-0.76605 0.172194,-1.54407 0.172194,-2.33406s-0.073797,-1.56801 -0.172194,-2.33406l5.202718,-3.961917c0.467384,-0.359086 0.602679,-1.005441 0.29519,-1.532101l-4.919828,-8.29489c-0.307489,-0.51469 -0.947067,-0.730142 -1.500548,-0.51469l-6.125186,2.405877c-1.266856,-0.945594 -2.656707,-1.747553 -4.157255,-2.357999l-0.922468,-6.343855c-0.110696,-0.562568 -0.614979,-1.005441 -1.229957,-1.005441l-9.839656,0c-0.614979,0 -1.119261,0.442873 -1.217657,1.005441l-0.922468,6.343855c-1.500548,0.610446 -2.890399,1.400436 -4.157255,2.357999l-6.125186,-2.405877c-0.553481,-0.203482 -1.193058,0 -1.500548,0.51469l-4.919828,8.29489c-0.307489,0.51469 -0.172194,1.161045 0.29519,1.532101l5.190419,3.961917c-0.098397,0.76605 -0.172194,1.54407 -0.172194,2.33406s0.073797,1.56801 0.172194,2.33406l-5.190419,3.961917c-0.467384,0.359086 -0.602679,1.005441 -0.29519,1.532101l4.919828,8.29489c0.307489,0.51469 0.947067,0.730142 1.500548,0.51469l6.125186,-2.405877c1.266856,0.945594 2.656707,1.747553 4.157255,2.357999l0.922468,6.343855c0.098397,0.562568 0.602679,1.005441 1.217657,1.005441l9.839656,0c0.614979,0 1.119261,-0.442873 1.217657,-1.005441l0.922468,-6.343855c1.500548,-0.610446 2.890399,-1.400436 4.157255,-2.357999l6.125186,2.405877c0.553481,0.203482 1.193058,0 1.500548,-0.51469l4.919828,-8.29489c0.307489,-0.51469 0.172194,-1.161045 -0.29519,-1.532101l-5.190419,-3.961917zm-18.277162,6.044617c-4.759934,0 -8.609699,-3.746465 -8.609699,-8.378677s3.849766,-8.378677 8.609699,-8.378677s8.609699,3.746465 8.609699,8.378677s-3.849766,8.378677 -8.609699,8.378677z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1728 576v256q0 26-19 45t-45 19h-64q-26 0-45-19t-19-45v-256q0-106-75-181t-181-75-181 75-75 181v192h96q40 0 68 28t28 68v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h672v-192q0-185 131.5-316.5t316.5-131.5 316.5 131.5 131.5 316.5z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1639 1056q0 5-1 7-64 268-268 434.5t-478 166.5q-146 0-282.5-55t-243.5-157l-129 129q-19 19-45 19t-45-19-19-45v-448q0-26 19-45t45-19h448q26 0 45 19t19 45-19 45l-137 137q71 66 161 102t187 36q134 0 250-65t186-179q11-17 53-117 8-23 30-23h192q13 0 22.5 9.5t9.5 22.5zm25-800v448q0 26-19 45t-45 19h-448q-26 0-45-19t-19-45 19-45l138-138q-148-137-349-137-134 0-250 65t-186 179q-11 17-53 117-8 23-30 23h-199q-13 0-22.5-9.5t-9.5-22.5v-7q65-268 270-434.5t480-166.5q146 0 284 55.5t245 156.5l130-129q19-19 45-19t45 19 19 45z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1344 1472q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm256 0q0-26-19-45t-45-19-45 19-19 45 19 45 45 19 45-19 19-45zm128-224v320q0 40-28 68t-68 28h-1472q-40 0-68-28t-28-68v-320q0-40 28-68t68-28h427q21 56 70.5 92t110.5 36h256q61 0 110.5-36t70.5-92h427q40 0 68 28t28 68zm-325-648q-17 40-59 40h-256v448q0 26-19 45t-45 19h-256q-26 0-45-19t-19-45v-448h-256q-42 0-59-40-17-39 14-69l448-448q18-19 45-19t45 19l448 448q31 30 14 69z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1216 320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'إبدأ في الكتابة...',\n\t'About Jodit': 'حول جوديت',\n\t'Jodit Editor': 'محرر جوديت',\n\t\"Jodit User's Guide\": 'دليل مستخدم جوديت',\n\t'contains detailed help for using': 'يحتوي على مساعدة مفصلة للاستخدام',\n\t'For information about the license, please go to our website:':\n\t\t'للحصول على معلومات حول الترخيص، يرجى الذهاب لموقعنا:',\n\t'Buy full version': 'شراء النسخة الكاملة',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'حقوق الطبع والنشر © XDSoft.net - Chupurnov Valeriy. كل الحقوق محفوظة.',\n\tAnchor: 'مِرْساة',\n\t'Open in new tab': 'فتح في نافذة جديدة',\n\t'Open in fullsize': 'فتح المحرر في الحجم الكامل',\n\t'Clear Formatting': 'مسح التنسيق',\n\t'Fill color or set the text color': 'ملء اللون أو تعيين لون النص',\n\tRedo: 'إعادة',\n\tUndo: 'تراجع',\n\tBold: 'عريض',\n\tItalic: 'مائل',\n\t'Insert Unordered List': 'إدراج قائمة غير مرتبة',\n\t'Insert Ordered List': 'إدراج قائمة مرتبة',\n\t'Align Center': 'محاذاة للوسط',\n\t'Align Justify': 'محاذاة مثبتة',\n\t'Align Left': 'محاذاة لليسار',\n\t'Align Right': 'محاذاة لليمين',\n\t'Insert Horizontal Line': 'إدراج خط أفقي',\n\t'Insert Image': 'إدراج صورة',\n\t'Insert file': 'ادخال الملف',\n\t'Insert youtube/vimeo video': 'إدراج فيديو يوتيوب/فيميو ',\n\t'Insert link': 'إدراج رابط',\n\t'Font size': 'حجم الخط',\n\t'Font family': 'نوع الخط',\n\t'Insert format block': 'إدراج كتلة تنسيق',\n\tNormal: 'عادي',\n\t'Heading 1': 'عنوان 1',\n\t'Heading 2': 'عنوان 2',\n\t'Heading 3': 'عنوان 3',\n\t'Heading 4': 'عنوان 4',\n\tQuote: 'إقتباس',\n\tCode: 'كود',\n\tInsert: 'إدراج',\n\t'Insert table': 'إدراج جدول',\n\t'Decrease Indent': 'تقليل المسافة البادئة',\n\t'Increase Indent': 'زيادة المسافة البادئة',\n\t'Select Special Character': 'تحديد أحرف خاصة',\n\t'Insert Special Character': 'إدراج حرف خاص',\n\t'Paint format': 'تنسيق الرسم',\n\t'Change mode': 'تغيير الوضع',\n\tMargins: 'هوامش',\n\ttop: 'أعلى',\n\tright: 'يمين',\n\tbottom: 'أسفل',\n\tleft: 'يسار',\n\tStyles: 'الأنماط',\n\tClasses: 'الطبقات',\n\tAlign: 'محاذاة',\n\tRight: 'اليمين',\n\tCenter: 'الوسط',\n\tLeft: 'اليسار',\n\t'--Not Set--': '--غير مضبوط--',\n\tSrc: 'Src',\n\tTitle: 'العنوان',\n\tAlternative: 'العنوان البديل',\n\tLink: 'الرابط',\n\t'Open link in new tab': 'افتح الرابط في نافذة جديدة',\n\tImage: 'الصورة',\n\tfile: 'ملف',\n\tAdvanced: 'متقدم',\n\t'Image properties': 'خصائص الصورة',\n\tCancel: 'إلغاء',\n\tOk: 'حسنا',\n\t'File Browser': 'متصفح الملفات',\n\t'Error on load list': 'حدث خطأ في تحميل القائمة ',\n\t'Error on load folders': 'حدث خطأ في تحميل المجلدات',\n\t'Are you sure?': 'هل أنت واثق؟',\n\t'Enter Directory name': 'أدخل اسم المجلد',\n\t'Create directory': 'إنشاء مجلد',\n\t'type name': 'أكتب إسم',\n\t'Drop image': 'إسقاط صورة',\n\t'Drop file': 'إسقاط الملف',\n\t'or click': 'أو أنقر',\n\t'Alternative text': 'النص البديل',\n\tUpload: 'رفع',\n\tBrowse: 'تصفح',\n\tBackground: 'الخلفية',\n\tText: 'نص',\n\tTop: 'أعلى',\n\tMiddle: 'الوسط',\n\tBottom: 'الأسفل',\n\t'Insert column before': 'إدراج عمود قبل',\n\t'Insert column after': 'إدراج عمود بعد',\n\t'Insert row above': 'إدراج صف أعلى',\n\t'Insert row below': 'إدراج صف أسفل',\n\t'Delete table': 'حذف الجدول',\n\t'Delete row': 'حذف الصف',\n\t'Delete column': 'حذف العمود',\n\t'Empty cell': 'خلية فارغة',\n\t'Chars: %d': '%d حرف',\n\t'Words: %d': '%d كلام',\n\t'Strike through': 'اضرب من خلال',\n\tUnderline: 'أكد',\n\tsuperscript: 'حرف فوقي',\n\tsubscript: 'مخطوطة',\n\t'Cut selection': 'قطع الاختيار',\n\t'Select all': 'اختر الكل',\n\tBreak: 'استراحة',\n\t'Search for': 'البحث عن',\n\t'Replace with': 'استبدل ب',\n\tReplace: 'محل',\n\tPaste: 'معجون',\n\t'Choose Content to Paste': 'اختر محتوى للصق',\n\tsource: 'مصدر',\n\tbold: 'بالخط العريض',\n\titalic: 'مائل',\n\tbrush: 'شغل',\n\tlink: 'صلة',\n\tundo: 'إلغاء',\n\tredo: 'كرر',\n\ttable: 'طاولة',\n\timage: 'صورة',\n\teraser: 'نظيف',\n\tparagraph: 'فقرة',\n\tfontsize: 'حجم الخط',\n\tvideo: 'فيديو',\n\tfont: 'الخط',\n\tabout: 'حول المحرر',\n\tprint: 'طباعة',\n\tunderline: 'أكد',\n\tstrikethrough: 'شطب',\n\tindent: 'المسافة البادئة',\n\toutdent: 'نتوء',\n\tfullsize: 'ملء الشاشة',\n\tshrink: 'الحجم التقليدي',\n\thr: 'الخط',\n\tul: 'قائمة',\n\tol: 'قائمة مرقمة',\n\tcut: 'قطع',\n\tselectall: 'اختر الكل',\n\t'Embed code': 'قانون',\n\t'Open link': 'فتح الرابط',\n\t'Edit link': 'تعديل الرابط',\n\t'No follow': 'سمة Nofollow',\n\tUnlink: 'إزالة الرابط',\n\tUpdate: 'تحديث',\n\tpencil: 'لتحرير',\n\tEye: 'مراجعة',\n\t' URL': 'URL',\n\tEdit: 'تحرير',\n\t'Horizontal align': 'محاذاة أفقية',\n\tFilter: 'فلتر',\n\t'Sort by changed': 'عن طريق التغيير',\n\t'Sort by name': 'بالاسم',\n\t'Sort by size': 'حسب الحجم',\n\t'Add folder': 'إضافة مجلد',\n\tReset: 'إعادة',\n\tSave: 'احتفظ',\n\t'Save as ...': 'حفظ باسم',\n\tResize: 'تغيير الحجم',\n\tCrop: 'حجم القطع',\n\tWidth: 'عرض',\n\tHeight: 'ارتفاع',\n\t'Keep Aspect Ratio': 'حافظ على النسب',\n\tYes: 'أن',\n\tNo: 'لا',\n\tRemove: 'حذف',\n\tSelect: 'تميز',\n\t'Select %s': 'تميز %s',\n\t'Vertical align': 'محاذاة عمودية',\n\tSplit: 'انشق، مزق',\n\tMerge: 'اذهب',\n\t'Add column': 'أضف العمود',\n\t'Add row': 'اضف سطر',\n\t'License: %s': 'رخصة %s',\n\tDelete: 'حذف',\n\t'Split vertical': 'انقسام عمودي',\n\t'Split horizontal': 'تقسيم أفقي',\n\tBorder: 'الحدود',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'يشبه الكود الخاص بك HTML. تبقي كما HTML؟',\n\t'Paste as HTML': 'الصق ك HTML',\n\tKeep: 'احتفظ',\n\t'Insert as Text': 'إدراج كنص',\n\t'Insert only Text': 'إدراج النص فقط',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'يمكنك فقط تحرير صورك الخاصة. تحميل هذه الصورة على المضيف؟',\n\t'The image has been successfully uploaded to the host!':\n\t\t'تم تحميل الصورة بنجاح على الخادم!',\n\tpalette: 'لوحة',\n\t'There are no files': 'لا توجد ملفات في هذا الدليل.',\n\tRename: 'إعادة تسمية',\n\t'Enter new name': 'أدخل اسم جديد',\n\tpreview: 'معاينة',\n\tdownload: 'تحميل',\n\t'Paste from clipboard': 'لصق من الحافظة',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'متصفحك لا يدعم إمكانية الوصول المباشر إلى الحافظة.',\n\t'Copy selection': 'نسخ التحديد',\n\tcopy: 'نسخ',\n\t'Border radius': 'دائرة نصف قطرها الحدود',\n\t'Show all': 'عرض كل',\n\tApply: 'تطبيق',\n\t'Please fill out this field': 'يرجى ملء هذا المجال',\n\t'Please enter a web address': 'يرجى إدخال عنوان ويب',\n\tDefault: 'الافتراضي',\n\tCircle: 'دائرة',\n\tDot: 'نقطة',\n\tQuadrate: 'المربعة',\n\tFind: 'البحث',\n\t'Find Previous': 'تجد السابقة',\n\t'Find Next': 'تجد التالي',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'للصق المحتوى قادم من Microsoft Word/Excel الوثيقة. هل تريد أن تبقي شكل أو تنظيفه ؟ ',\n\t'Word Paste Detected': 'كلمة لصق الكشف عن',\n\tClean: 'نظيفة',\n\t'Insert className': 'أدخل اسم الفصل',\n\t'Press Alt for custom resizing': 'اضغط البديل لتغيير حجم مخصص'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Napiš něco',\n\t'About Jodit': 'O Jodit',\n\t'Jodit Editor': 'Editor Jodit',\n\t'Free Non-commercial Version': 'Verze pro nekomerční použití',\n\t\"Jodit User's Guide\": 'Jodit Uživatelská příručka',\n\t'contains detailed help for using': 'obsahuje detailní nápovědu',\n\t'For information about the license, please go to our website:':\n\t\t'Pro informace o licenci, prosím, přejděte na naši stránku:',\n\t'Buy full version': 'Koupit plnou verzi',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Všechna práva vyhrazena.',\n\tAnchor: 'Anchor',\n\t'Open in new tab': 'Otevřít v nové záložce',\n\t'Open in fullsize': 'Otevřít v celoobrazovkovém režimu',\n\t'Clear Formatting': 'Vyčistit formátování',\n\t'Fill color or set the text color': 'Barva výplně a písma',\n\tRedo: 'Vpřed',\n\tUndo: 'Zpět',\n\tBold: 'Tučné',\n\tItalic: 'Kurzíva',\n\t'Insert Unordered List': 'Odrážky',\n\t'Insert Ordered List': 'Číslovaný seznam',\n\t'Align Center': 'Zarovnat na střed',\n\t'Align Justify': 'Zarovnat do bloku',\n\t'Align Left': 'Zarovnat vlevo',\n\t'Align Right': 'Zarovnat vpravo',\n\t'Insert Horizontal Line': 'Vložit horizontální linku',\n\t'Insert Image': 'Vložit obrázek',\n\t'Insert file': 'Vložit soubor',\n\t'Insert youtube/vimeo video': 'Vložit video (YT/Vimeo)',\n\t'Insert link': 'Vložit odkaz',\n\t'Font size': 'Velikost písma',\n\t'Font family': 'Typ písma',\n\t'Insert format block': 'Formátovat blok',\n\tNormal: 'Normální text',\n\t'Heading 1': 'Nadpis 1',\n\t'Heading 2': 'Nadpis 2',\n\t'Heading 3': 'Nadpis 3',\n\t'Heading 4': 'Nadpis 4',\n\tQuote: 'Citát',\n\tCode: 'Kód',\n\tInsert: 'Vložit',\n\t'Insert table': 'Vložit tabulku',\n\t'Decrease Indent': 'Zmenšit odsazení',\n\t'Increase Indent': 'Zvětšit odsazení',\n\t'Select Special Character': 'Vybrat speciální symbol',\n\t'Insert Special Character': 'Vložit speciální symbol',\n\t'Paint format': 'Použít formát',\n\t'Change mode': 'Změnit mód',\n\tMargins: 'Okraje',\n\ttop: 'horní',\n\tright: 'pravý',\n\tbottom: 'spodní',\n\tleft: 'levý',\n\tStyles: 'Styly',\n\tClasses: 'Třídy',\n\tAlign: 'Zarovnání',\n\tRight: 'Vpravo',\n\tCenter: 'Na střed',\n\tLeft: 'Vlevo',\n\t'--Not Set--': '--nenastaveno--',\n\tSrc: 'src',\n\tTitle: 'Titulek',\n\tAlternative: 'Alternativní text (alt)',\n\tLink: 'Link',\n\t'Open link in new tab': 'Otevřít link v nové záložce',\n\tImage: 'Obrázek',\n\tfile: 'soubor',\n\tAdvanced: 'Rozšířené',\n\t'Image properties': 'Vlastnosti obrázku',\n\tCancel: 'Zpět',\n\tOk: 'Ok',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Váš text se podobá HTML. Vložit ho jako HTML?',\n\t'Paste as HTML': 'Vložit jako HTML',\n\tKeep: 'Ponechat originál',\n\tClean: 'Vyčistit',\n\t'Insert as Text': 'Vložit jako TEXT',\n\t'Insert only Text': 'Vložit pouze TEXT',\n\t'Word Paste Detected': 'Detekován fragment z Wordu nebo Excelu',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Obsah, který vkládáte, je pravděpodobně z Microsoft Word / Excel. Chcete ponechat formát nebo vložit pouze text?',\n\t'File Browser': 'Prohlížeč souborů',\n\t'Error on load list': 'Chyba při načítání seznamu souborů',\n\t'Error on load folders': 'Chyba při načítání složek',\n\t'Are you sure?': 'Jste si jistý(á)?',\n\t'Enter Directory name': 'Název složky',\n\t'Create directory': 'Vytvořit složku',\n\t'type name': 'název',\n\t'Drop image': 'Přetáhněte sem obrázek',\n\t'Drop file': 'Přetáhněte sem soubor',\n\t'or click': 'nebo klikněte',\n\t'Alternative text': 'Alternativní text',\n\tBrowse: 'Server',\n\tUpload: 'Nahrát',\n\tBackground: 'Pozadí',\n\tText: 'Text',\n\tTop: 'Nahoru',\n\tMiddle: 'Na střed',\n\tBottom: 'Dolu',\n\t'Insert column before': 'Vložit sloupec před',\n\t'Insert column after': 'Vložit sloupec za',\n\t'Insert row above': 'Vložit řádek nad',\n\t'Insert row below': 'Vložit řádek pod',\n\t'Delete table': 'Vymazat tabulku',\n\t'Delete row': 'Vymazat řádku',\n\t'Delete column': 'Vymazat sloupec',\n\t'Empty cell': 'Vyčistit buňku',\n\tsource: 'HTML',\n\tbold: 'tučně',\n\titalic: 'kurzíva',\n\tbrush: 'štětec',\n\tlink: 'odkaz',\n\tundo: 'zpět',\n\tredo: 'vpřed',\n\ttable: 'tabulka',\n\timage: 'obrázek',\n\teraser: 'guma',\n\tparagraph: 'odstavec',\n\tfontsize: 'velikost písma',\n\tvideo: 'video',\n\tfont: 'písmo',\n\tabout: 'о editoru',\n\tprint: 'tisk',\n\tunderline: 'podtrženo',\n\tstrikethrough: 'přeškrtnuto',\n\tindent: 'zvětšit odsazení',\n\toutdent: 'zmenšit odsazení',\n\tfullsize: 'celoobrazovkový režim',\n\tshrink: 'smrsknout',\n\thr: 'Linka',\n\tul: 'Odrážka',\n\tol: 'Číslovaný seznam',\n\tcut: 'Vyjmout',\n\tselectall: 'Označit vše',\n\t'Embed code': 'Kód',\n\t'Open link': 'Otevřít odkaz',\n\t'Edit link': 'Upravit odkaz',\n\t'No follow': 'Atribut no-follow',\n\tUnlink: 'Odstranit odkaz',\n\tEye: 'Zobrazit',\n\tpencil: 'Chcete-li upravit',\n\tUpdate: 'Aktualizovat',\n\t' URL': 'URL',\n\tEdit: 'Editovat',\n\t'Horizontal align': 'Horizontální zarovnání',\n\tFilter: 'Filtr',\n\t'Sort by changed': 'Dle poslední změny',\n\t'Sort by name': 'Dle názvu',\n\t'Sort by size': 'Dle velikosti',\n\t'Add folder': 'Přidat složku',\n\tReset: 'Reset',\n\tSave: 'Uložit',\n\t'Save as ...': 'Uložit jako...',\n\tResize: 'Změnit rozměr',\n\tCrop: 'Ořezat',\n\tWidth: 'Šířka',\n\tHeight: 'Výška',\n\t'Keep Aspect Ratio': 'Ponechat poměr',\n\tYes: 'Ano',\n\tNo: 'Ne',\n\tRemove: 'Vyjmout',\n\tSelect: 'Označit',\n\t'Chars: %d': 'Znaky: %d',\n\t'Words: %d': 'Slova: %d',\n\tAll: 'Vše',\n\t'Select %s': 'Označit %s',\n\t'Select all': 'Označit vše',\n\t'Vertical align': 'Vertikální zarovnání',\n\tSplit: 'Rozdělit',\n\t'Split vertical': 'Rozdělit vertikálně',\n\t'Split horizontal': 'Rozdělit horizontálně',\n\tMerge: 'Spojit',\n\t'Add column': 'Přidat sloupec',\n\t'Add row': 'Přidat řádek',\n\tDelete: 'Vymazat',\n\tBorder: 'Okraj',\n\t'License: %s': 'Licence: %s',\n\t'Strike through': 'Přeškrtnuto',\n\tUnderline: 'Podtrženo',\n\tsuperscript: 'Horní index',\n\tsubscript: 'Dolní index',\n\t'Cut selection': 'Vyjmout označené',\n\tBreak: 'Zalomení',\n\t'Search for': 'Najdi',\n\t'Replace with': 'Nahradit za',\n\tReplace: 'Vyměňte',\n\tPaste: 'Vložit',\n\t'Choose Content to Paste': 'Vyber obsah pro vložení',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Můžete upravovat pouze své obrázky. Načíst obrázek?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Obrázek byl úspěšně nahrán!',\n\tpalette: 'paleta',\n\t'There are no files': 'V tomto adresáři nejsou žádné soubory.',\n\tRename: 'přejmenovat',\n\t'Enter new name': 'Zadejte nový název',\n\tpreview: 'náhled',\n\tdownload: 'Stažení',\n\t'Paste from clipboard': 'Vložit ze schránky',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Váš prohlížeč nepodporuje přímý přístup do schránky.',\n\t'Copy selection': 'Kopírovat výběr',\n\tcopy: 'kopírování',\n\t'Border radius': 'Border radius',\n\t'Show all': 'Zobrazit všechny',\n\tApply: 'Platí',\n\t'Please fill out this field': 'Prosím, vyplňte toto pole',\n\t'Please enter a web address': 'Prosím, zadejte webovou adresu',\n\tDefault: 'Výchozí',\n\tCircle: 'Kruh',\n\tDot: 'Dot',\n\tQuadrate: 'Quadrate',\n\tFind: 'Najít',\n\t'Find Previous': 'Najít Předchozí',\n\t'Find Next': 'Najít Další',\n\t'Insert className': 'Vložte název třídy',\n\t'Press Alt for custom resizing': 'Stiskněte Alt pro vlastní změnu velikosti'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Bitte geben Sie einen Text ein',\n\tAdvanced: 'Fortgeschritten',\n\t'About Jodit': 'Über Jodit',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": 'Das Jodit Benutzerhandbuch',\n\t'contains detailed help for using':\n\t\t'beinhaltet ausführliche Informationen wie Sie den Editor verwenden können.',\n\t'For information about the license, please go to our website:':\n\t\t'Für Informationen zur Lizenz, besuchen Sie bitte unsere Web-Präsenz:',\n\t'Buy full version': 'Vollversion kaufen',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Alle Rechte vorbehalten.',\n\tAnchor: 'Anker',\n\t'Open in new tab': 'In neuer Registerkarte öffnen',\n\t'Open in fullsize': 'Editor in voller Größe öffnen',\n\t'Clear Formatting': 'Formatierung löschen',\n\t'Fill color or set the text color': 'Füllfarbe oder Textfarbe ändern',\n\tRedo: 'Wiederholen',\n\tUndo: 'Rückgängig machen',\n\tBold: 'Fett',\n\tItalic: 'Kursiv',\n\t'Insert Unordered List': 'Unsortierte Liste einfügen',\n\t'Insert Ordered List': 'Nummerierte Liste einfügen',\n\t'Align Center': 'Mittig ausrichten',\n\t'Align Justify': 'Blocksatz',\n\t'Align Left': 'Links ausrichten',\n\t'Align Right': 'Rechts ausrichten',\n\t'Insert Horizontal Line': 'Horizontale Linie einfügen',\n\t'Insert Image': 'Bild einfügen',\n\t'Insert file': 'Datei einfügen',\n\t'Insert youtube/vimeo video': 'Youtube/vimeo Video einfügen',\n\t'Insert link': 'Link einfügen',\n\t'Font size': 'Schriftgröße',\n\t'Font family': 'Schriftfamilie',\n\t'Insert format block': 'Formatblock einfügen',\n\tNormal: 'Normal',\n\t'Heading 1': 'Überschrift 1',\n\t'Heading 2': 'Überschrift 2',\n\t'Heading 3': 'Überschrift 3',\n\t'Heading 4': 'Überschrift 4',\n\tQuote: 'Zitat',\n\tCode: 'Code',\n\tInsert: 'Einfügen',\n\t'Insert table': 'Tabelle einfügen',\n\t'Decrease Indent': 'Einzug verkleinern',\n\t'Increase Indent': 'Einzug vergrößern',\n\t'Select Special Character': 'Sonderzeichen auswählen',\n\t'Insert Special Character': 'Sonderzeichen einfügen',\n\t'Paint format': 'Format kopieren',\n\t'Change mode': 'Änderungsmodus',\n\tMargins: 'Ränder',\n\ttop: 'Oben',\n\tright: 'Rechts',\n\tbottom: 'Unten',\n\tleft: 'Links',\n\tStyles: 'CSS Stil',\n\tClasses: 'CSS Klassen',\n\tAlign: 'Ausrichtung',\n\tRight: 'Rechts',\n\tCenter: 'Zentriert',\n\tLeft: 'Links',\n\t'--Not Set--': 'Keine',\n\tSrc: 'Pfad',\n\tTitle: 'Titel',\n\tAlternative: 'Alternativer Text',\n\tLink: 'Link',\n\t'Open link in new tab': 'Link in neuem Tab öffnen',\n\tImage: 'Bild',\n\tfile: 'Datei',\n\t'Image properties': 'Bildeigenschaften',\n\tCancel: 'Abbrechen',\n\tOk: 'OK',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Ihr Text ähnelt HTML-Code. Als HTML beibehalten?',\n\t'Paste as HTML': 'Als HTML einfügen?',\n\tKeep: 'Original speichern',\n\tClean: 'Säubern',\n\t'Insert as Text': 'Als Text einfügen',\n\t'Word Paste Detected': 'In Word formatierter Text erkannt',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Der Inhalt, den Sie einfügen, stammt aus einem Microsoft Word / Excel-Dokument. Möchten Sie das Format erhalten oder bereinigen?',\n\t'Insert only Text': 'Nur Text einfügen',\n\t'File Browser': 'Dateibrowser',\n\t'Error on load list': 'Fehler beim Laden der Liste',\n\t'Error on load folders': 'Fehler beim Laden der Ordner',\n\t'Are you sure?': 'Sind Sie sicher?',\n\t'Enter Directory name': 'Geben Sie den Verzeichnisnamen ein',\n\t'Create directory': 'Verzeichnis erstellen',\n\t'type name': 'Typname',\n\t'Drop image': 'Bild hier hinziehen',\n\t'Drop file': 'Datei löschen',\n\t'or click': 'oder hier klicken',\n\t'Alternative text': 'Alternativtext',\n\tBrowse: 'Auswählen',\n\tUpload: 'Hochladen',\n\tBackground: 'Hintergrund',\n\tText: 'Text',\n\tTop: 'Oben',\n\tMiddle: 'Mittig',\n\tBottom: 'Unten',\n\t'Insert column before': 'Spalte davor einfügen',\n\t'Insert column after': 'Spalte danach einfügen',\n\t'Insert row above': 'Zeile oberhalb einfügen',\n\t'Insert row below': 'Zeile unterhalb einfügen',\n\t'Delete table': 'Tabelle löschen',\n\t'Delete row': 'Zeile löschen',\n\t'Delete column': 'Spalte löschen',\n\t'Empty cell': 'Zelle leeren',\n\tDelete: 'Löschen',\n\t'Strike through': 'Durchstreichen',\n\tUnderline: 'Unterstreichen',\n\tBreak: 'Pause',\n\t'Search for': 'Suche nach',\n\t'Replace with': 'Ersetzen durch',\n\tReplace: 'Ersetzen',\n\tEdit: 'Bearbeiten',\n\t'Vertical align': 'Vertikale Ausrichtung',\n\t'Horizontal align': 'Horizontale Ausrichtung',\n\tFilter: 'Filter',\n\t'Sort by changed': 'Sortieren nach geändert',\n\t'Sort by name': 'Nach Name sortieren',\n\t'Sort by size': 'Nach Größe sortiert',\n\t'Add folder': 'Ordner hinzufügen',\n\t'Split vertical': 'Vertikal unterteilen',\n\t'Split horizontal': 'Horizontal unterteilen',\n\tSplit: 'Unterteilen',\n\tMerge: 'Vereinen',\n\t'Add column': 'Spalte hinzufügen',\n\t'Add row': 'Zeile hinzufügen',\n\tBorder: 'Rand',\n\t'Embed code': 'Code einbetten',\n\tUpdate: 'Aktualisieren',\n\tsuperscript: 'Hochstellen',\n\tsubscript: 'Tiefstellen',\n\t'Cut selection': 'Auswahl ausschneiden',\n\tPaste: 'Einfügen',\n\t'Choose Content to Paste': 'Wählen Sie den Inhalt zum Einfügen aus',\n\t'Chars: %d': 'Zeichen: %d',\n\t'Words: %d': 'Wörter: %d',\n\tAll: 'Alles markieren',\n\t'Select %s': 'Markieren: %s',\n\t'Select all': 'Alles markieren',\n\tsource: 'HTML',\n\tbold: 'Fett gedruckt',\n\titalic: 'Kursiv',\n\tbrush: 'Bürste',\n\tlink: 'Verknüpfung',\n\tundo: 'Rückgängig machen',\n\tredo: 'Wiederholen',\n\ttable: 'Tabelle',\n\timage: 'Bild',\n\teraser: 'Radiergummi',\n\tparagraph: 'Absatz',\n\tfontsize: 'Schriftgröße',\n\tvideo: 'Video',\n\tfont: 'Schriftart',\n\tabout: 'Über',\n\tprint: 'Drucken',\n\tunderline: 'Unterstreichen',\n\tstrikethrough: 'Durchstreichen',\n\tindent: 'Einzug',\n\toutdent: 'Herausstellen',\n\tfullsize: 'Vollgröße',\n\tshrink: 'Schrumpfen',\n\thr: 'die Linie',\n\tul: 'Liste von',\n\tol: 'Nummerierte Liste',\n\t'Lower Alpha': 'Standard, Alphabet (klein)',\n\t'Upper Alpha': 'Standard, Alphabet (gross)',\n\t'Lower Roman': 'Römisch (klein)',\n\t'Upper Roman': 'Römisch (gross)',\n\t'Lower Greek': 'Griechisch',\n\tcut: 'Schneiden',\n\tselectall: 'Wählen Sie Alle aus',\n\t'Open link': 'Link öffnen',\n\t'Edit link': 'Link bearbeiten',\n\t'No follow': 'Nofollow-Attribut',\n\tUnlink: 'Link entfernen',\n\tEye: 'Ansehen',\n\tpencil: 'Bearbeiten',\n\t' URL': 'URL',\n\tReset: 'Wiederherstellen',\n\tSave: 'Speichern',\n\t'Save as ...': 'Speichern als',\n\tResize: 'Größe ändern',\n\tCrop: 'Größe anpassen',\n\tWidth: 'Breite',\n\tHeight: 'Höhe',\n\t'Keep Aspect Ratio': 'Seitenverhältnis beibehalten',\n\tYes: 'Ja',\n\tNo: 'Nein',\n\tRemove: 'Entfernen',\n\tSelect: 'Markieren',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Sie können nur Ihre eigenen Bilder bearbeiten. Dieses Bild auf den Host herunterladen?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Das Bild wurde erfolgreich auf den Server hochgeladen!',\n\tpalette: 'Palette',\n\t'There are no files': 'In diesem Verzeichnis befinden sich keine Dateien.',\n\tRename: 'Umbenennen',\n\t'Enter new name': 'Geben Sie einen neuen Namen ein',\n\tpreview: 'Vorschau',\n\tdownload: 'Herunterladen',\n\t'Paste from clipboard': 'Aus Zwischenablage einfügen',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Ihr Browser unterstützt keinen direkten Zugriff auf die Zwischenablage.',\n\t'Copy selection': 'Auswahl kopieren',\n\tcopy: 'Kopieren',\n\t'Border radius': 'Radius für abgerundete Ecken',\n\t'Show all': 'Alle anzeigen',\n\tApply: 'Anwenden',\n\t'Please fill out this field': 'Bitte füllen Sie dieses Feld aus',\n\t'Please enter a web address': 'Bitte geben Sie eine Web-Adresse ein',\n\tDefault: 'Standard',\n\tCircle: 'Kreis',\n\tDot: 'Punkte',\n\tQuadrate: 'Quadrate',\n\tFind: 'Suchen',\n\t'Find Previous': 'Suche vorherige',\n\t'Find Next': 'Weitersuchen',\n\t'Insert className': 'className (CSS) einfügen',\n\t'Press Alt for custom resizing':\n\t\t'Drücken Sie Alt für benutzerdefinierte Größenanpassung'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Start writing...',\n\tpencil: 'Edit',\n\tQuadrate: 'Square'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Escriba algo...',\n\tAdvanced: 'Avanzado',\n\t'About Jodit': 'Acerca de Jodit',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": 'Guía de usuario Jodit',\n\t'contains detailed help for using': 'contiene ayuda detallada para el uso.',\n\t'For information about the license, please go to our website:':\n\t\t'Para información sobre la licencia, por favor visite nuestro sitio:',\n\t'Buy full version': 'Compre la versión completa',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Todos los derechos reservados.',\n\tAnchor: 'Anclar',\n\t'Open in new tab': 'Abrir en nueva pestaña',\n\t'Open in fullsize': 'Abrir editor en pantalla completa',\n\t'Clear Formatting': 'Limpiar formato',\n\t'Fill color or set the text color': 'Color de relleno o de letra',\n\tRedo: 'Rehacer',\n\tUndo: 'Deshacer',\n\tBold: 'Negrita',\n\tItalic: 'Cursiva',\n\t'Insert Unordered List': 'Insertar lista no ordenada',\n\t'Insert Ordered List': 'Insertar lista ordenada',\n\t'Align Center': 'Alinear Centrado',\n\t'Align Justify': 'Alinear Justificado',\n\t'Align Left': 'Alinear Izquierda',\n\t'Align Right': 'Alinear Derecha',\n\t'Insert Horizontal Line': 'Insertar línea horizontal',\n\t'Insert Image': 'Insertar imagen',\n\t'Insert file': 'Insertar archivo',\n\t'Insert youtube/vimeo video': 'Insertar video de Youtube/vimeo',\n\t'Insert link': 'Insertar vínculo',\n\t'Font size': 'Tamaño de letra',\n\t'Font family': 'Familia de letra',\n\t'Insert format block': 'Insertar bloque',\n\tNormal: 'Normal',\n\t'Heading 1': 'Encabezado 1',\n\t'Heading 2': 'Encabezado 2',\n\t'Heading 3': 'Encabezado 3',\n\t'Heading 4': 'Encabezado 4',\n\tQuote: 'Cita',\n\tCode: 'Código',\n\tInsert: 'Insertar',\n\t'Insert table': 'Insertar tabla',\n\t'Decrease Indent': 'Disminuir sangría',\n\t'Increase Indent': 'Aumentar sangría',\n\t'Select Special Character': 'Seleccionar caracter especial',\n\t'Insert Special Character': 'Insertar caracter especial',\n\t'Paint format': 'Copiar formato',\n\t'Change mode': 'Cambiar modo',\n\tMargins: 'Márgenes',\n\ttop: 'arriba',\n\tright: 'derecha',\n\tbottom: 'abajo',\n\tleft: 'izquierda',\n\tStyles: 'Estilos CSS',\n\tClasses: 'Clases CSS',\n\tAlign: 'Alinear',\n\tRight: 'Derecha',\n\tCenter: 'Centrado',\n\tLeft: 'Izquierda',\n\t'--Not Set--': '--No Establecido--',\n\tSrc: 'Fuente',\n\tTitle: 'Título',\n\tAlternative: 'Texto Alternativo',\n\tFilter: 'Filtrar',\n\tLink: 'Vínculo',\n\t'Open link in new tab': 'Abrir vínculo en nueva pestaña',\n\tImage: 'Imagen',\n\tfile: 'Archivo',\n\t'Image properties': 'Propiedades de imagen',\n\tCancel: 'Cancelar',\n\tOk: 'Aceptar',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'El código es similar a HTML. ¿Mantener como HTML?',\n\t'Paste as HTML': 'Pegar como HTML?',\n\tKeep: 'Mantener',\n\tClean: 'Limpiar',\n\t'Insert as Text': 'Insertar como texto',\n\t'Word Paste Detected': 'Pegado desde Word detectado',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'El contenido pegado proviene de un documento de Microsoft Word/Excel. ¿Desea mantener el formato o limpiarlo?',\n\t'Insert only Text': 'Insertar solo texto',\n\t'File Browser': 'Buscar archivo',\n\t'Error on load list': 'Error al cargar la lista',\n\t'Error on load folders': 'Error al cargar las carpetas',\n\t'Are you sure?': '¿Está seguro?',\n\t'Enter Directory name': 'Entre nombre de carpeta',\n\t'Create directory': 'Crear carpeta',\n\t'type name': 'Entre el nombre',\n\t'Drop image': 'Soltar imagen',\n\t'Drop file': 'Soltar archivo',\n\t'or click': 'o click',\n\t'Alternative text': 'Texto alternativo',\n\tBrowse: 'Buscar',\n\tUpload: 'Subir',\n\tBackground: 'Fondo',\n\tText: 'Texto',\n\tTop: 'Arriba',\n\tMiddle: 'Centro',\n\tBottom: 'Abajo',\n\t'Insert column before': 'Insertar columna antes',\n\t'Insert column after': 'Interar columna después',\n\t'Insert row above': 'Insertar fila arriba',\n\t'Insert row below': 'Insertar fila debajo',\n\t'Delete table': 'Borrar tabla',\n\t'Delete row': 'Borrar fila',\n\t'Delete column': 'Borrar columna',\n\t'Empty cell': 'Vaciar celda',\n\tDelete: 'Borrar',\n\t'Strike through': 'Tachado',\n\tUnderline: 'Subrayado',\n\tBreak: 'Pausa',\n\t'Search for': 'Buscar',\n\t'Replace with': 'Reemplazar con',\n\tReplace: 'Reemplazar',\n\tEdit: 'Editar',\n\t'Vertical align': 'Alineación vertical',\n\t'Horizontal align': 'Alineación horizontal',\n\t'Sort by changed': 'Ordenar por fecha modificación',\n\t'Sort by name': 'Ordenar por nombre',\n\t'Sort by size': 'Ordenar por tamaño',\n\t'Add folder': 'Agregar carpeta',\n\tSplit: 'Dividir',\n\t'Split vertical': 'Dividir vertical',\n\t'Split horizontal': 'Dividir horizontal',\n\tMerge: 'Mezclar',\n\t'Add column': 'Agregar columna',\n\t'Add row': 'Agregar fila',\n\tBorder: 'Borde',\n\t'Embed code': 'Incluir código',\n\tUpdate: 'Actualizar',\n\tsuperscript: 'superíndice',\n\tsubscript: 'subíndice',\n\t'Cut selection': 'Cortar selección',\n\tPaste: 'Pegar',\n\t'Choose Content to Paste': 'Seleccionar contenido para pegar',\n\t'Chars: %d': 'Caracteres: %d',\n\t'Words: %d': 'Palabras: %d',\n\tAll: 'Todo',\n\t'Select %s': 'Seleccionar: %s',\n\t'Select all': 'Seleccionar todo',\n\tsource: 'HTML',\n\tbold: 'negrita',\n\titalic: 'cursiva',\n\tbrush: 'Brocha',\n\tlink: 'Vínculo',\n\tundo: 'deshacer',\n\tredo: 'rehacer',\n\ttable: 'Tabla',\n\timage: 'Imagen',\n\teraser: 'Borrar',\n\tparagraph: 'Párrafo',\n\tfontsize: 'Tamaño de letra',\n\tvideo: 'Video',\n\tfont: 'Letra',\n\tabout: 'Acerca de',\n\tprint: 'Imprimir',\n\tunderline: 'subrayar',\n\tstrikethrough: 'tachar',\n\tindent: 'sangría',\n\toutdent: 'quitar sangría',\n\tfullsize: 'Tamaño completo',\n\tshrink: 'encoger',\n\thr: 'línea horizontal',\n\tul: 'lista sin ordenar',\n\tol: 'lista ordenada',\n\tcut: 'Cortar',\n\tselectall: 'Seleccionar todo',\n\t'Open link': 'Abrir vínculo',\n\t'Edit link': 'Editar vínculo',\n\t'No follow': 'No seguir',\n\tUnlink: 'Desvincular',\n\tEye: 'Ver',\n\tpencil: 'Para editar',\n\t' URL': 'URL',\n\tReset: 'Resetear',\n\tSave: 'Guardar',\n\t'Save as ...': 'Guardar como...',\n\tResize: 'Redimensionar',\n\tCrop: 'Recortar',\n\tWidth: 'Ancho',\n\tHeight: 'Alto',\n\t'Keep Aspect Ratio': 'Mantener relación de aspecto',\n\tYes: 'Si',\n\tNo: 'No',\n\tRemove: 'Quitar',\n\tSelect: 'Seleccionar',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Solo puedes editar tus propias imágenes. ¿Descargar esta imagen en el servidor?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'¡La imagen se ha subido correctamente al servidor!',\n\tpalette: 'paleta',\n\t'There are no files': 'No hay archivos en este directorio.',\n\tRename: 'renombrar',\n\t'Enter new name': 'Ingresa un nuevo nombre',\n\tpreview: 'avance',\n\tdownload: 'Descargar',\n\t'Paste from clipboard': 'Pegar desde el portapapeles',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Su navegador no soporta el acceso directo en el portapapeles.',\n\t'Copy selection': 'Selección de copia',\n\tcopy: 'copia',\n\t'Border radius': 'Radio frontera',\n\t'Show all': 'Mostrar todos los',\n\tApply: 'Aplicar',\n\t'Please fill out this field': 'Por favor, rellene este campo',\n\t'Please enter a web address': 'Por favor, introduzca una dirección web',\n\tDefault: 'Predeterminado',\n\tCircle: 'Círculo',\n\tDot: 'Punto',\n\tQuadrate: 'Cuadro',\n\t'Lower Alpha': 'Letra Minúscula',\n\t'Lower Greek': 'Griego Minúscula',\n\t'Lower Roman': 'Romano Minúscula',\n\t'Upper Alpha': 'Letra Mayúscula',\n\t'Upper Roman': 'Romano Mayúscula',\n\tFind: 'Encontrar',\n\t'Find Previous': 'Buscar Anterior',\n\t'Find Next': 'Buscar Siguiente',\n\t'Insert className': 'Insertar nombre de clase',\n\t'Press Alt for custom resizing':\n\t\t'Presione Alt para cambiar el tamaño personalizado'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Kirjoita jotain...',\n\tAdvanced: 'Avanzado',\n\t'About Jodit': 'Tietoja Jodit:ista',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": 'Jodit käyttäjän ohje',\n\t'contains detailed help for using':\n\t\t'sisältää tarkempaa tietoa käyttämiseen',\n\t'For information about the license, please go to our website:':\n\t\t'Tietoa lisensoinnista, vieraile verkkosivuillamme:',\n\t'Buy full version': 'Osta täysi versio',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Kaikki oikeudet pidätetään.',\n\tAnchor: 'Ankkuri',\n\t'Open in new tab': 'Avaa uudessa välilehdessä',\n\t'Open in fullsize': 'Avaa täysikokoisena',\n\t'Clear Formatting': 'Poista muotoilu',\n\t'Fill color or set the text color': 'Täytä värillä tai aseta tekstin väri',\n\tRedo: 'Tee uudelleen',\n\tUndo: 'Peruuta',\n\tBold: 'Lihavoitu',\n\tItalic: 'Kursiivi',\n\t'Insert Unordered List': 'Lisää järjestämätön lista',\n\t'Insert Ordered List': 'Lisää järjestetty lista',\n\t'Align Center': 'Asemoi keskelle',\n\t'Align Justify': 'Asemoi tasavälein',\n\t'Align Left': 'Asemoi vasemmalle',\n\t'Align Right': 'Asemoi oikealle',\n\t'Insert Horizontal Line': 'Lisää vaakasuuntainen viiva',\n\t'Insert Image': 'Lisää kuva',\n\t'Insert file': 'Lisää tiedosto',\n\t'Insert youtube/vimeo video': 'Lisää Youtube-/vimeo- video',\n\t'Insert link': 'Lisää linkki',\n\t'Font size': 'Kirjasimen koko',\n\t'Font family': 'Kirjasimen nimi',\n\t'Insert format block': 'Lisää muotoilualue',\n\tNormal: 'Normaali',\n\t'Heading 1': 'Otsikko 1',\n\t'Heading 2': 'Otsikko 2',\n\t'Heading 3': 'Otsikko 3',\n\t'Heading 4': 'Otsikko 4',\n\tQuote: 'Lainaus',\n\tCode: 'Koodi',\n\tInsert: 'Lisää',\n\t'Insert table': 'Lisää taulukko',\n\t'Decrease Indent': 'Pienennä sisennystä',\n\t'Increase Indent': 'Lisää sisennystä',\n\t'Select Special Character': 'Valitse erikoismerkki',\n\t'Insert Special Character': 'Lisää erikoismerkki',\n\t'Paint format': 'Maalaa muotoilu',\n\t'Change mode': 'Vaihda tilaa',\n\tMargins: 'Marginaalit',\n\ttop: 'ylös',\n\tright: 'oikealle',\n\tbottom: 'alas',\n\tleft: 'vasemmalle',\n\tStyles: 'CSS-tyylit',\n\tClasses: 'CSS-luokat',\n\tAlign: 'Asemointi',\n\tRight: 'Oikea',\n\tCenter: 'Keskellä',\n\tLeft: 'Vasen',\n\t'--Not Set--': '--Ei asetettu--',\n\tSrc: 'Fuente',\n\tTitle: 'Otsikko',\n\tAlternative: 'Vaihtoehtoinen teksti',\n\tFilter: 'Suodatin',\n\tLink: 'Linkki',\n\t'Open link in new tab': 'Avaa uudessa välilehdessä',\n\tImage: 'Kuva',\n\tfile: 'Tiedosto',\n\t'Image properties': 'Kuvan ominaisuudet',\n\tCancel: 'Peruuta',\n\tOk: 'Ok',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Koodi on HTML:n tapaista. Säilytetäänkö HTML?',\n\t'Paste as HTML': 'Liitä HTML:nä?',\n\tKeep: 'Säilytä',\n\tClean: 'Tyhjennä',\n\t'Insert as Text': 'Lisää tekstinä',\n\t'Word Paste Detected': 'Word liittäminen havaittu',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Liitetty sisältö tulee Microsoft Word-/Excel- tiedostosta. Haluatko säilyttää muotoilun vai poistaa sen?',\n\t'Insert only Text': 'Lisää vain teksti',\n\t'File Browser': 'Tiedostoselain',\n\t'Error on load list': 'Virhe listan latauksessa',\n\t'Error on load folders': 'Virhe kansioiden latauksessa',\n\t'Are you sure?': 'Oletko varma?',\n\t'Enter Directory name': 'Syötä hakemiston nimi',\n\t'Create directory': 'Luo hakemisto',\n\t'type name': 'Syötä nimi',\n\t'Drop image': 'Pudota kuva',\n\t'Drop file': 'Pudota tiedosto',\n\t'or click': 'tai klikkaa',\n\t'Alternative text': 'Vaihtoehtoinen teksti',\n\tBrowse: 'Selaa',\n\tUpload: 'Lataa',\n\tBackground: 'Tausta',\n\tText: 'Teksti',\n\tTop: 'Ylös',\n\tMiddle: 'Keskelle',\n\tBottom: 'Alas',\n\t'Insert column before': 'Lisää sarake ennen',\n\t'Insert column after': 'Lisää sarake jälkeen',\n\t'Insert row above': 'Lisää rivi ylös',\n\t'Insert row below': 'Lisää rivi alle',\n\t'Delete table': 'Poista taulukko',\n\t'Delete row': 'Poista rivi',\n\t'Delete column': 'Poista sarake',\n\t'Empty cell': 'Tyhjennä solu',\n\tDelete: 'Poista',\n\t'Strike through': 'Yliviivaus',\n\tUnderline: 'Alleviivaus',\n\tBreak: 'Vaihto',\n\t'Search for': 'Etsi arvoa',\n\t'Replace with': 'Korvaa arvolla',\n\tReplace: 'Korvaa',\n\tEdit: 'Muokkaa',\n\t'Vertical align': 'Pystyasemointi',\n\t'Horizontal align': 'Vaaka-asemointi',\n\t'Sort by changed': 'Järjestä muuttuneilla',\n\t'Sort by name': 'Järjestä nimellä',\n\t'Sort by size': 'Järjestä koolla',\n\t'Add folder': 'Lisää kansio',\n\tSplit: 'Jaa',\n\t'Split vertical': 'Jaa pystysuuntaisesti',\n\t'Split horizontal': 'Jaa vaakasuuntaisesti',\n\tMerge: 'Yhdistä',\n\t'Add column': 'Lisää sarake',\n\t'Add row': 'Lisää rivi',\n\tBorder: 'Reuna',\n\t'Embed code': 'Sisällytä koodi',\n\tUpdate: 'Päivitä',\n\tsuperscript: 'yläviite',\n\tsubscript: 'alaviite',\n\t'Cut selection': 'Leikkaa valinta',\n\tPaste: 'Liitä',\n\t'Choose Content to Paste': 'Valitse liitettävä sisältö',\n\t'Chars: %d': 'Merkit: %d',\n\t'Words: %d': 'Sanat: %d',\n\tAll: 'Kaikki',\n\t'Select %s': 'Valitse: %s',\n\t'Select all': 'Valitse kaikki',\n\tsource: 'HTML',\n\tbold: 'lihavoitu',\n\titalic: 'kursiivi',\n\tbrush: 'sivellin',\n\tlink: 'linkki',\n\tundo: 'peruuta',\n\tredo: 'tee uudelleen',\n\ttable: 'taulukko',\n\timage: 'kuva',\n\teraser: 'pyyhekumi',\n\tparagraph: 'kappale',\n\tfontsize: 'tekstin koko',\n\tvideo: 'video',\n\tfont: 'kirjasin',\n\tabout: 'tietoja',\n\tprint: 'tulosta',\n\tunderline: 'alleviivaa',\n\tstrikethrough: 'yliviivaa',\n\tindent: 'sisennä',\n\toutdent: 'pienennä sisennystä',\n\tfullsize: 'täysikokoinen',\n\tshrink: 'pienennä',\n\thr: 'vaakaviiva',\n\tul: 'järjestetty lista',\n\tol: 'järjestämätön lista',\n\tcut: 'leikkaa',\n\tselectall: 'valitse kaikki',\n\t'Open link': 'Avaa linkki',\n\t'Edit link': 'Muokkaa linkkiä',\n\t'No follow': 'Älä seuraa',\n\tUnlink: 'Pura linkki',\n\tEye: 'Ver',\n\tpencil: 'Muokkaa',\n\t' URL': 'URL',\n\tReset: 'Nollaa',\n\tSave: 'Tallenna',\n\t'Save as ...': 'Tallenna nimellä ...',\n\tResize: 'Muuta kokoa',\n\tCrop: 'Rajaa',\n\tWidth: 'Leveys',\n\tHeight: 'Korkeus',\n\t'Keep Aspect Ratio': 'Säilytä kuvasuhde',\n\tYes: 'Kyllä',\n\tNo: 'Ei',\n\tRemove: 'Poista',\n\tSelect: 'Valitse',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Voit muokata vain omia kuvia. Lataa tämä kuva palvelimelle?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Kuva on onnistuneesti ladattu palvelimelle!',\n\tpalette: 'paletti',\n\t'There are no files': 'Tiedostoja ei ole',\n\tRename: 'Nimeä uudelleen',\n\t'Enter new name': 'Syötä uusi nimi',\n\tpreview: 'esikatselu',\n\tdownload: 'Lataa',\n\t'Paste from clipboard': 'Liitä leikepöydältä',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Selaimesi ei tue suoraa pääsyä leikepöydälle.',\n\t'Copy selection': 'Kopioi valinta',\n\tcopy: 'kopioi',\n\t'Border radius': 'Reunan pyöristys',\n\t'Show all': 'Näytä kaikki',\n\tApply: 'Käytä',\n\t'Please fill out this field': 'Täytä tämä kenttä',\n\t'Please enter a web address': 'Annan web-osoite',\n\tDefault: 'Oletus',\n\tCircle: 'Ympyrä',\n\tDot: 'Piste',\n\tQuadrate: 'Neliö',\n\t'Lower Alpha': 'Pieni aakkosellinen',\n\t'Lower Greek': 'Pieni kreikkalainen',\n\t'Lower Roman': 'Pieni roomalainen',\n\t'Upper Alpha': 'Suuri aakkosellinen',\n\t'Upper Roman': 'Suuri roomalainen',\n\tFind: 'Hae',\n\t'Find Previous': 'Hae edellinen',\n\t'Find Next': 'Hae seuraava',\n\t'Insert className': 'Lisää luokkanimi',\n\t'Press Alt for custom resizing': 'Paina Alt muokattuun koon muuttamiseen',\n\t'Class name': 'Luokan nimi'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Ecrivez ici',\n\t'About Jodit': 'A propos de Jodit',\n\t'Jodit Editor': 'Editeur Jodit',\n\t\"Jodit User's Guide\": \"Guide de l'utilisateur\",\n\t'contains detailed help for using': \"Aide détaillée à l'utilisation\",\n\t'For information about the license, please go to our website:':\n\t\t'Consulter la licence sur notre site web:',\n\t'Buy full version': 'Acheter la version complète',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Tous droits réservés.',\n\tAnchor: 'Ancre',\n\t'Open in new tab': 'Ouvrir dans un nouvel onglet',\n\t'Open in fullsize': \"Ouvrir l'éditeur en pleine page\",\n\t'Clear Formatting': 'Supprimer le formattage',\n\t'Fill color or set the text color':\n\t\t'Modifier la couleur du fond ou du texte',\n\tRedo: 'Refaire',\n\tUndo: 'Défaire',\n\tBold: 'Gras',\n\tItalic: 'Italique',\n\t'Insert Unordered List': 'Liste non ordonnée',\n\t'Insert Ordered List': 'Liste ordonnée',\n\t'Align Center': 'Centrer',\n\t'Align Justify': 'Justifier',\n\t'Align Left': 'Aligner à gauche ',\n\t'Align Right': 'Aligner à droite',\n\t'Insert Horizontal Line': 'Insérer une ligne horizontale',\n\t'Insert Image': 'Insérer une image',\n\t'Insert file': 'Insérer un fichier',\n\t'Insert youtube/vimeo video': 'Insérer une vidéo',\n\t'Insert link': 'Insérer un lien',\n\t'Font size': 'Taille des caractères',\n\t'Font family': 'Famille des caractères',\n\t'Insert format block': 'Bloc formatté',\n\tNormal: 'Normal',\n\t'Heading 1': 'Titre 1',\n\t'Heading 2': 'Titre 2',\n\t'Heading 3': 'Titre 3',\n\t'Heading 4': 'Titre 4',\n\tQuote: 'Citation',\n\tCode: 'Code',\n\tInsert: 'Insérer',\n\t'Insert table': 'Insérer un tableau',\n\t'Decrease Indent': 'Diminuer le retrait',\n\t'Increase Indent': 'Retrait plus',\n\t'Select Special Character': 'Sélectionnez un caractère spécial',\n\t'Insert Special Character': 'Insérer un caractère spécial',\n\t'Paint format': 'Cloner le format',\n\t'Change mode': 'Mode wysiwyg <-> code html',\n\tMargins: 'Marges',\n\ttop: 'haut',\n\tright: 'droite',\n\tbottom: 'Bas',\n\tleft: 'gauche',\n\tStyles: 'Styles',\n\tClasses: 'Classes',\n\tAlign: 'Alignement',\n\tRight: 'Droite',\n\tCenter: 'Centre',\n\tLeft: 'Gauche',\n\t'--Not Set--': '--Non disponible--',\n\tSrc: 'Source',\n\tTitle: 'Titre',\n\tAlternative: 'Alternative',\n\tFilter: 'Filtre',\n\tLink: 'Lien',\n\t'Open link in new tab': 'Ouvrir le lien dans un nouvel onglet',\n\tImage: 'Image',\n\tfile: 'fichier',\n\tAdvanced: 'Avancé',\n\t'Image properties': \"Propriétés de l'image\",\n\tCancel: 'Annuler',\n\tOk: 'OK',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Votre texte que vous essayez de coller est similaire au HTML. Collez-le en HTML?',\n\t'Paste as HTML': 'Coller en HTML?',\n\tKeep: \"Sauvegarder l'original\",\n\tClean: 'Nettoyer',\n\t'Insert as Text': 'Coller en tant que texte',\n\t'Word Paste Detected': \"C'est peut-être un fragment de Word ou Excel\",\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t\"Le contenu que vous insérez provient d'un document Microsoft Word / Excel. Voulez-vous enregistrer le format ou l'effacer?\",\n\t'Insert only Text': 'Coller le texte seulement',\n\t'File Browser': 'Explorateur de fichiers',\n\t'Error on load list': 'Erreur de liste de chargement',\n\t'Error on load folders': 'Erreur de dossier de chargement',\n\t'Are you sure?': 'Etes-vous sûrs ?',\n\t'Enter Directory name': 'Entrer le nom de dossier',\n\t'Create directory': 'Créer un dossier',\n\t'type name': 'type de fichier',\n\t'Drop image': 'Coller une image',\n\t'Drop file': 'Déposer un fichier',\n\t'or click': 'ou cliquer',\n\t'Alternative text': 'Texte de remplacemement',\n\tBrowse: 'Chercher',\n\tUpload: 'Charger',\n\tBackground: 'Arrière-plan',\n\tBorder: 'Bordure',\n\tText: 'Texte',\n\tTop: 'Haut',\n\tMiddle: 'Milieu',\n\tBottom: 'Bas',\n\t'Insert column before': 'Insérer une colonne avant',\n\t'Insert column after': 'Insérer une colonne après',\n\t'Insert row above': 'Insérer une ligne au dessus',\n\t'Insert row below': 'Insérer une ligne en dessous',\n\t'Delete table': 'Supprimer le tableau',\n\t'Delete row': 'Supprimer la ligne',\n\t'Delete column': 'Supprimer la colonne',\n\t'Empty cell': 'Vider la cellule',\n\t'Chars: %d': 'Symboles: %d',\n\t'Words: %d': 'Mots: %d',\n\tSplit: 'Split',\n\t'Split vertical': 'Split vertical',\n\t'Split horizontal': 'Split horizontal',\n\t'Strike through': 'Barrer',\n\tUnderline: 'Souligner',\n\tsuperscript: 'exposant',\n\tsubscript: 'indice',\n\t'Cut selection': 'Couper la sélection',\n\t'Select all': 'Tout sélectionner',\n\tBreak: 'Pause',\n\t'Search for': 'Rechercher',\n\t'Replace with': 'Remplacer par',\n\tReplace: 'Remplacer',\n\tPaste: 'Coller',\n\t'Choose Content to Paste': 'Choisissez le contenu à coller',\n\tsource: 'la source',\n\tbold: 'gras',\n\titalic: 'italique',\n\tbrush: 'pinceau',\n\tlink: 'lien',\n\tundo: 'annuler',\n\tredo: 'refaire',\n\ttable: 'tableau',\n\timage: 'image',\n\teraser: 'gomme',\n\tparagraph: 'clause',\n\tfontsize: 'taille de police',\n\tvideo: 'Video',\n\tfont: 'police',\n\tabout: \"à propos de l'éditeur\",\n\tprint: 'impression',\n\tunderline: 'souligné',\n\tstrikethrough: 'barré',\n\tindent: 'indentation',\n\toutdent: 'retrait',\n\tfullsize: 'taille réelle',\n\tshrink: 'taille conventionnelle',\n\thr: 'la ligne',\n\tul: 'Liste',\n\tol: 'Liste numérotée',\n\tcut: 'Couper',\n\tselectall: 'Sélectionner tout',\n\t'Open link': 'Ouvrir le lien',\n\t'Edit link': 'Modifier le lien',\n\t'No follow': 'Attribut Nofollow',\n\tUnlink: 'Supprimer le lien',\n\tEye: 'Voir',\n\tpencil: 'Pour éditer',\n\t' URL': 'URL',\n\tReset: 'Restaurer',\n\tSave: 'Sauvegarder',\n\t'Save as ...': 'Enregistrer sous',\n\tResize: 'Changer la taille',\n\tCrop: 'Taille de garniture',\n\tWidth: 'Largeur',\n\tHeight: 'Hauteur',\n\t'Keep Aspect Ratio': 'Garder les proportions',\n\tYes: 'Oui',\n\tNo: 'Non',\n\tRemove: 'Supprimer',\n\tSelect: 'Mettre en évidence',\n\t'Select %s': 'Mettre en évidence: %s',\n\tUpdate: 'Mettre à jour',\n\t'Vertical align': 'Alignement vertical',\n\tMerge: 'aller',\n\t'Add column': 'Ajouter une colonne',\n\t'Add row': 'Ajouter une rangée',\n\tDelete: 'Effacer',\n\t'Horizontal align': 'Alignement horizontal',\n\t'Sort by changed': 'Trier par modification',\n\t'Sort by name': 'Trier par nom',\n\t'Sort by size': 'Trier par taille',\n\t'Add folder': 'Créer le dossier',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t\"Vous ne pouvez éditer que vos propres images. Téléchargez cette image sur l'hôte?\",\n\t'The image has been successfully uploaded to the host!':\n\t\t\"L'image a été téléchargée avec succès sur le serveur!\",\n\tpalette: 'Palette',\n\t'There are no files': \"Il n'y a aucun fichier dans ce répertoire.\",\n\tRename: 'renommer',\n\t'Enter new name': 'Entrez un nouveau nom',\n\tpreview: 'Aperçu',\n\tdownload: 'Télécharger',\n\t'Paste from clipboard': 'Coller à partir du presse-papiers',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t\"Votre navigateur ne prend pas en charge l'accès direct au presse-papiers.\",\n\t'Copy selection': 'Copier la sélection',\n\tcopy: 'copie',\n\t'Border radius': 'Rayon des bordures',\n\t'Show all': 'Afficher tous',\n\tApply: 'Appliquer',\n\t'Please fill out this field': 'Veuillez remplir ce champ',\n\t'Please enter a web address': 'Veuillez entrer une adresse web',\n\tDefault: 'Par défaut',\n\tCircle: 'Cercle',\n\tDot: 'Point',\n\tQuadrate: 'Quadratique',\n\tFind: 'Trouver',\n\t'Find Previous': 'Précédent',\n\t'Find Next': 'Suivant',\n\t'Insert className': 'Insérer un nom de classe',\n\t'Press Alt for custom resizing':\n\t\t'Appuyez sur Alt pour un redimensionnement personnalisé'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'הקלד משהו...',\n\tAdvanced: 'מתקדם',\n\t'About Jodit': 'About Jodit',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": \"Jodit User's Guide\",\n\t'contains detailed help for using': 'contains detailed help for using.',\n\t'For information about the license, please go to our website:':\n\t\t'For information about the license, please go to our website:',\n\t'Buy full version': 'Buy full version',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.',\n\tAnchor: 'מקום עיגון',\n\t'Open in new tab': 'פתח בכרטיסיה חדשה',\n\t'Open in fullsize': 'פתח את העורך בחלון חדש',\n\t'Clear Formatting': 'נקה עיצוב',\n\t'Fill color or set the text color': 'שנה צבע טקסט או רקע',\n\tRedo: 'בצע שוב',\n\tUndo: 'בטל',\n\tBold: 'מודגש',\n\tItalic: 'נטוי',\n\t'Insert Unordered List': 'הכנס רשימת תבליטים',\n\t'Insert Ordered List': 'הכנס רשימה ממוספרת',\n\t'Align Center': 'מרכז',\n\t'Align Justify': 'ישר ',\n\t'Align Left': 'ישר לשמאל',\n\t'Align Right': 'ישר לימין',\n\t'Insert Horizontal Line': 'הכנס קו אופקי',\n\t'Insert Image': 'הכנס תמונה',\n\t'Insert file': 'הכנס קובץ',\n\t'Insert youtube/vimeo video': 'הכנס סרטון וידאו מYouTube/Vimeo',\n\t'Insert link': 'הכנס קישור',\n\t'Font size': 'גודל גופן',\n\t'Font family': 'גופן',\n\t'Insert format block': 'מעוצב מראש',\n\tNormal: 'רגיל',\n\t'Heading 1': 'כותרת 1',\n\t'Heading 2': 'כותרת 2',\n\t'Heading 3': 'כותרת 3',\n\t'Heading 4': 'כותרת 4',\n\tQuote: 'ציטוט',\n\tCode: 'קוד',\n\tInsert: 'הכנס',\n\t'Insert table': 'הכנס טבלה',\n\t'Decrease Indent': 'הקטן כניסה',\n\t'Increase Indent': 'הגדל כניסה',\n\t'Select Special Character': 'בחר תו מיוחד',\n\t'Insert Special Character': 'הכנס תו מיוחד',\n\t'Paint format': 'העתק עיצוב',\n\t'Change mode': 'החלף מצב',\n\tMargins: 'ריווח',\n\ttop: 'עליון',\n\tright: 'ימין',\n\tbottom: 'תחתון',\n\tleft: 'שמאל',\n\tStyles: 'עיצוב CSS',\n\tClasses: 'מחלקת CSS',\n\tAlign: 'יישור',\n\tRight: 'ימין',\n\tCenter: 'מרכז',\n\tLeft: 'שמאל',\n\t'--Not Set--': '--לא נקבע--',\n\tSrc: 'מקור',\n\tTitle: 'כותרת',\n\tAlternative: 'כיתוב חלופי',\n\tLink: 'קישור',\n\t'Open link in new tab': 'פתח בכרטיסיה חדשה',\n\tImage: 'תמונה',\n\tfile: 'קובץ',\n\t'Image properties': 'מאפייני תמונה',\n\tCancel: 'ביטול',\n\tOk: 'אישור',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'הקוד דומה לHTML, האם להשאיר כHTML',\n\t'Paste as HTML': 'הדבק כHTML',\n\tKeep: 'השאר',\n\tClean: 'נקה',\n\t'Insert as Text': 'הכנס כטקסט',\n\t'Word Paste Detected': 'זוהתה הדבקה מ\"וורד\"',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'התוכן המודבק מגיע ממסמך וורד/אקסל. האם ברצונך להשאיר את העיצוב או לנקותו',\n\t'Insert only Text': 'הכנס טקסט בלבד',\n\t'File Browser': 'סייר הקבצים',\n\t'Error on load list': 'שגיאה בזמן טעינת רשימה',\n\t'Error on load folders': 'שגיאה בזמן טעינת תקיות',\n\t'Are you sure?': 'האם אתה בטוח?',\n\t'Enter Directory name': 'הכנס שם תקיה',\n\t'Create directory': 'צור תקיה',\n\t'type name': 'סוג הקובץ',\n\t'Drop image': 'הסר תמונה',\n\t'Drop file': 'הסר קובץ',\n\t'or click': 'או לחץ',\n\t'Alternative text': 'כיתוב חלופי',\n\tBrowse: 'סייר',\n\tUpload: 'העלה',\n\tBackground: 'רקע',\n\tText: 'טקסט',\n\tTop: 'עליון',\n\tMiddle: 'מרכז',\n\tBottom: 'תחתון',\n\t'Insert column before': 'הכנס עמודה לפני',\n\t'Insert column after': 'הכנס עמודה אחרי',\n\t'Insert row above': 'הכנס שורה מעל',\n\t'Insert row below': 'הכנס שורה מתחת',\n\t'Delete table': 'מחק טבלה',\n\t'Delete row': 'מחק שורה',\n\t'Delete column': 'מחק עמודה',\n\t'Empty cell': 'רוקן תא',\n\tDelete: 'מחק',\n\t'Strike through': 'קו חוצה',\n\tUnderline: 'קו תחתון',\n\tBreak: 'שבירת שורה',\n\t'Search for': 'חפש',\n\t'Replace with': 'החלף ב',\n\tReplace: 'להחליף',\n\tEdit: 'ערוך',\n\t'Vertical align': 'יישור אנכי',\n\t'Horizontal align': 'יישור אופקי',\n\tFilter: 'סנן',\n\t'Sort by changed': 'מין לפי שינוי',\n\t'Sort by name': 'מיין לפי שם',\n\t'Sort by size': 'מיין לפי גודל',\n\t'Add folder': 'הוסף תקייה',\n\tSplit: 'פיצול',\n\t'Split vertical': 'פיצול אנכי',\n\t'Split horizontal': 'פיצול אופקי',\n\tMerge: 'מזג',\n\t'Add column': 'הוסף עמודה',\n\t'Add row': 'הוסף שורה',\n\tBorder: 'מסגרת',\n\t'Embed code': 'הוסף קוד',\n\tUpdate: 'עדכן',\n\tsuperscript: 'superscript',\n\tsubscript: 'subscript',\n\t'Cut selection': 'גזור בחירה',\n\tPaste: 'הדבק',\n\t'Choose Content to Paste': 'בחר תוכן להדבקה',\n\t'Chars: %d': 'תווים: %d',\n\t'Words: %d': 'מילים: %d',\n\tAll: 'הכל',\n\t'Select %s': 'נבחר: %s',\n\t'Select all': 'בחר הכל',\n\tsource: 'HTML',\n\tbold: 'מודגש',\n\titalic: 'נטוי',\n\tbrush: 'מברשת',\n\tlink: 'קישור',\n\tundo: 'בטל',\n\tredo: 'בצע שוב',\n\ttable: 'טבלה',\n\timage: 'תמונה',\n\teraser: 'מחק',\n\tparagraph: 'פסקה',\n\tfontsize: 'גודל גופן',\n\tvideo: 'וידאו',\n\tfont: 'גופן',\n\tabout: 'עלינו',\n\tprint: 'הדפס',\n\tunderline: 'קו תחתון',\n\tstrikethrough: 'קו חוצה',\n\tindent: 'הגדל כניסה',\n\toutdent: 'הקטן כניסה',\n\tfullsize: 'גודל מלא',\n\tshrink: 'כווץ',\n\thr: 'קו אופקי',\n\tul: 'רשימת תבליטים',\n\tol: 'רשימה ממוספרת',\n\tcut: 'חתוך',\n\tselectall: 'בחר הכל',\n\t'Open link': 'פתח קישור',\n\t'Edit link': 'ערוך קישור',\n\t'No follow': 'ללא מעקב',\n\tUnlink: 'בטל קישור',\n\tEye: 'הצג',\n\tpencil: 'כדי לערוך',\n\t' URL': 'כתובת',\n\tReset: 'אפס',\n\tSave: 'שמור',\n\t'Save as ...': 'שמור בשם...',\n\tResize: 'שנה גודל',\n\tCrop: 'חתוך',\n\tWidth: 'רוחב',\n\tHeight: 'גובה',\n\t'Keep Aspect Ratio': 'שמור יחס',\n\tYes: 'כן',\n\tNo: 'לא',\n\tRemove: 'הסר',\n\tSelect: 'בחר',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'רק קבצים המשוייכים שלך ניתנים לעריכה. האם להוריד את הקובץ?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'התמונה עלתה בהצלחה!',\n\tpalette: 'לוח',\n\t'There are no files': 'אין קבצים בספריה זו.',\n\tRename: 'הונגרית',\n\t'Enter new name': 'הזן שם חדש',\n\tpreview: 'תצוגה מקדימה',\n\tdownload: 'הורד',\n\t'Paste from clipboard': 'להדביק מהלוח',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'הדפדפן שלך לא תומך גישה ישירה ללוח.',\n\t'Copy selection': 'העתק בחירה',\n\tcopy: 'העתק',\n\t'Border radius': 'רדיוס הגבול',\n\t'Show all': 'הצג את כל',\n\tApply: 'החל',\n\t'Please fill out this field': 'נא למלא שדה זה',\n\t'Please enter a web address': 'אנא הזן כתובת אינטרנט',\n\tDefault: 'ברירת המחדל',\n\tCircle: 'מעגל',\n\tDot: 'נקודה',\n\tQuadrate: 'הריבוע הזה',\n\tFind: 'למצוא',\n\t'Find Previous': 'מצא את הקודם',\n\t'Find Next': 'חפש את הבא',\n\t'Insert className': 'הכנס את שם הכיתה',\n\t'Press Alt for custom resizing': 'לחץ על אלט לשינוי גודל מותאם אישית'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Írjon be valamit',\n\tAdvanced: 'Haladó',\n\t'About Jodit': 'Joditról',\n\t'Jodit Editor': 'Jodit Editor',\n\t'Free Non-commercial Version': 'Ingyenes változat',\n\t\"Jodit User's Guide\": 'Jodit útmutató',\n\t'contains detailed help for using': 'további segítséget tartalmaz',\n\t'For information about the license, please go to our website:':\n\t\t'További licence információkért látogassa meg a weboldalunkat:',\n\t'Buy full version': 'Teljes verzió megvásárlása',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Minden jog fenntartva.',\n\tAnchor: 'Horgony',\n\t'Open in new tab': 'Megnyitás új lapon',\n\t'Open in fullsize': 'Megnyitás teljes méretben',\n\t'Clear Formatting': 'Formázás törlése',\n\t'Fill color or set the text color': 'Háttér/szöveg szín',\n\tRedo: 'Újra',\n\tUndo: 'Visszavon',\n\tBold: 'Félkövér',\n\tItalic: 'Dőlt',\n\t'Insert Unordered List': 'Pontozott lista',\n\t'Insert Ordered List': 'Számozott lista',\n\t'Align Center': 'Középre zárt',\n\t'Align Justify': 'Sorkizárt',\n\t'Align Left': 'Balra zárt',\n\t'Align Right': 'Jobbra zárt',\n\t'Insert Horizontal Line': 'Vízszintes vonal beszúrása',\n\t'Insert Image': 'Kép beszúrás',\n\t'Insert file': 'Fájl beszúrás',\n\t'Insert youtube/vimeo video': 'Youtube videó beszúrása',\n\t'Insert link': 'Link beszúrás',\n\t'Font size': 'Betűméret',\n\t'Font family': 'Betűtípus',\n\t'Insert format block': 'Formázott blokk beszúrása',\n\tNormal: 'Normál',\n\t'Heading 1': 'Fejléc 1',\n\t'Heading 2': 'Fejléc 2',\n\t'Heading 3': 'Fejléc 3',\n\t'Heading 4': 'Fejléc 4',\n\tQuote: 'Idézet',\n\tCode: 'Kód',\n\tInsert: 'Beszúr',\n\t'Insert table': 'Táblázat beszúrása',\n\t'Decrease Indent': 'Behúzás csökkentése',\n\t'Increase Indent': 'Behúzás növelése',\n\t'Select Special Character': 'Speciális karakter kiválasztása',\n\t'Insert Special Character': 'Speciális karakter beszúrása',\n\t'Paint format': 'Kép formázása',\n\t'Change mode': 'Nézet váltása',\n\tPrint: 'Nyomtatás',\n\tMargins: 'Szegélyek',\n\ttop: 'felső',\n\tright: 'jobb',\n\tbottom: 'alsó',\n\tleft: 'bal',\n\tStyles: 'CSS stílusok',\n\tClasses: 'CSS osztályok',\n\tAlign: 'Igazítás',\n\tRight: 'Jobbra',\n\tCenter: 'Középre',\n\tLeft: 'Balra',\n\t'--Not Set--': 'Nincs',\n\tSrc: 'Forrás',\n\tTitle: 'Cím',\n\tAlternative: 'Helyettesítő szöveg',\n\tLink: 'Link',\n\t'Open link in new tab': 'Link megnyitása új lapon',\n\tImage: 'Kép',\n\tfile: 'Fájl',\n\t'Image properties': 'Kép tulajdonságai',\n\tCancel: 'Mégsem',\n\tOk: 'OK',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'A beillesztett szöveg HTML-nek tűnik. Megtartsuk HTML-ként?',\n\t'Paste as HTML': 'Beszúrás HTML-ként',\n\tKeep: 'Megtartás',\n\tClean: 'Elvetés',\n\t'Insert as Text': 'Beszúrás szövegként',\n\t'Word Paste Detected': 'Word-ből másolt szöveg',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'A beillesztett tartalom Microsoft Word/Excel dokumentumból származik. Meg szeretné tartani a formátumát?',\n\t'Insert only Text': 'Csak szöveg beillesztése',\n\t'File Browser': 'Fájl tallózó',\n\t'Error on load list': 'Hiba a lista betöltése közben',\n\t'Error on load folders': 'Hiba a mappák betöltése közben',\n\t'Are you sure?': 'Biztosan ezt szeretné?',\n\t'Enter Directory name': 'Írjon be egy mappanevet',\n\t'Create directory': 'Mappa létrehozása',\n\t'type name': 'írjon be bevet',\n\t'Drop image': 'Húzza ide a képet',\n\t'Drop file': 'Húzza ide a fájlt',\n\t'or click': 'vagy kattintson',\n\t'Alternative text': 'Helyettesítő szöveg',\n\tBrowse: 'Tallóz',\n\tUpload: 'Feltölt',\n\tBackground: 'Háttér',\n\tText: 'Szöveg',\n\tTop: 'Fent',\n\tMiddle: 'Középen',\n\tBottom: 'Lent',\n\t'Insert column before': 'Oszlop beszúrás elé',\n\t'Insert column after': 'Oszlop beszúrás utána',\n\t'Insert row above': 'Sor beszúrás fölé',\n\t'Insert row below': 'Sor beszúrás alá',\n\t'Delete table': 'Táblázat törlése',\n\t'Delete row': 'Sor törlése',\n\t'Delete column': 'Oszlop törlése',\n\t'Empty cell': 'Cella tartalmának törlése',\n\tDelete: 'Törlés',\n\t'Strike through': 'Áthúzott',\n\tUnderline: 'Aláhúzott',\n\tBreak: 'Szünet',\n\t'Search for': 'Keresés',\n\t'Replace with': 'Csere erre',\n\tReplace: 'Cserélje ki',\n\tEdit: 'Szerkeszt',\n\t'Vertical align': 'Függőleges igazítás',\n\t'Horizontal align': 'Vízszintes igazítás',\n\tFilter: 'Szűrő',\n\t'Sort by changed': 'Rendezés módosítás szerint',\n\t'Sort by name': 'Rendezés név szerint',\n\t'Sort by size': 'Rendezés méret szerint',\n\t'Add folder': 'Mappa hozzáadás',\n\t'Split vertical': 'Függőleges felosztás',\n\t'Split horizontal': 'Vízszintes felosztás',\n\tMerge: 'Összevonás',\n\t'Add column': 'Oszlop hozzáadás',\n\t'Add row': 'Sor hozzáadás',\n\tBorder: 'Szegély',\n\t'Embed code': 'Beágyazott kód',\n\tUpdate: 'Frissít',\n\tsuperscript: 'Felső index',\n\tsubscript: 'Alsó index',\n\t'Cut selection': 'Kivágás',\n\tPaste: 'Beillesztés',\n\t'Choose Content to Paste': 'Válasszon tartalmat a beillesztéshez',\n\tSplit: 'Felosztás',\n\t'Chars: %d': 'Karakterek száma: %d',\n\t'Words: %d': 'Szavak száma: %d',\n\tAll: 'Összes',\n\t'Select %s': 'Kijelöl: %s',\n\t'Select all': 'Összes kijelölése',\n\tsource: 'HTML',\n\tbold: 'Félkövér',\n\titalic: 'Dőlt',\n\tbrush: 'Ecset',\n\tlink: 'Link',\n\tundo: 'Visszavon',\n\tredo: 'Újra',\n\ttable: 'Táblázat',\n\timage: 'Kép',\n\teraser: 'Törlés',\n\tparagraph: 'Paragráfus',\n\tfontsize: 'Betűméret',\n\tvideo: 'Videó',\n\tfont: 'Betű',\n\tabout: 'Rólunk',\n\tprint: 'Nyomtat',\n\tunderline: 'Aláhúzott',\n\tstrikethrough: 'Áthúzott',\n\tindent: 'Behúzás',\n\toutdent: 'Aussenseiter',\n\tfullsize: 'Teljes méret',\n\tshrink: 'Összenyom',\n\thr: 'Egyenes vonal',\n\tul: 'Lista',\n\tol: 'Számozott lista',\n\tcut: 'Kivág',\n\tselectall: 'Összes kijelölése',\n\t'Open link': 'Link megnyitása',\n\t'Edit link': 'Link szerkesztése',\n\t'No follow': 'Nincs követés',\n\tUnlink: 'Link leválasztása',\n\tEye: 'felülvizsgálat',\n\tpencil: 'Szerkesztés',\n\t' URL': 'URL',\n\tReset: 'Visszaállít',\n\tSave: 'Mentés',\n\t'Save as ...': 'Mentés másként...',\n\tResize: 'Átméretezés',\n\tCrop: 'Kivág',\n\tWidth: 'Szélesség',\n\tHeight: 'Magasság',\n\t'Keep Aspect Ratio': 'Képarány megtartása',\n\tYes: 'Igen',\n\tNo: 'Nem',\n\tRemove: 'Eltávolít',\n\tSelect: 'Kijelöl',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Csak a saját képeit tudja szerkeszteni. Letölti ezt a képet?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Kép sikeresen feltöltve!',\n\tpalette: 'Palette',\n\t'There are no files': 'Er zijn geen bestanden in deze map.',\n\tRename: 'átnevezés',\n\t'Enter new name': 'Adja meg az új nevet',\n\tpreview: 'előnézet',\n\tdownload: 'Letöltés',\n\t'Paste from clipboard': 'Illessze be a vágólap',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'A böngésző nem támogatja a közvetlen hozzáférést biztosít a vágólapra.',\n\t'Copy selection': 'Másolás kiválasztása',\n\tcopy: 'másolás',\n\t'Border radius': 'Határ sugár',\n\t'Show all': 'Összes',\n\tApply: 'Alkalmazni',\n\t'Please fill out this field': 'Kérjük, töltse ki ezt a mezőt,',\n\t'Please enter a web address': 'Kérjük, írja be a webcímet',\n\tDefault: 'Alapértelmezett',\n\tCircle: 'Kör',\n\tDot: 'Pont',\n\tQuadrate: 'Quadrate',\n\tFind: 'Találni',\n\t'Find Previous': 'Megtalálja Előző',\n\t'Find Next': 'Következő Keresése',\n\t'Insert className': 'Helyezze be az osztály nevét',\n\t'Press Alt for custom resizing': 'Nyomja meg az Alt egyéni átméretezés'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Ketik sesuatu',\n\t'About Jodit': 'Tentang Jodit',\n\t'Jodit Editor': 'Editor Jodit',\n\t'Free Non-commercial Version': 'Versi Bebas Non-komersil',\n\t\"Jodit User's Guide\": 'Panduan Pengguna Jodit',\n\t'contains detailed help for using': 'mencakup detail bantuan penggunaan',\n\t'For information about the license, please go to our website:':\n\t\t'Untuk informasi tentang lisensi, silakan kunjungi website:',\n\t'Buy full version': 'Beli versi lengkap',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Hak Cipta © XDSoft.net - Chupurnov Valeriy. Hak cipta dilindungi undang-undang.',\n\tAnchor: 'Tautan',\n\t'Open in new tab': 'Buka di tab baru',\n\t'Open in fullsize': 'Buka editor dalam ukuran penuh',\n\t'Clear Formatting': 'Hapus Pemformatan',\n\t'Fill color or set the text color': 'Isi warna atau atur warna teks',\n\tRedo: 'Ulangi',\n\tUndo: 'Batalkan',\n\tBold: 'Tebal',\n\tItalic: 'Miring',\n\t'Insert Unordered List': 'Sisipkan Daftar Tidak Berurut',\n\t'Insert Ordered List': 'Sisipkan Daftar Berurut',\n\t'Align Center': 'Tengah',\n\t'Align Justify': 'Penuh',\n\t'Align Left': 'Kiri',\n\t'Align Right': 'Kanan',\n\t'Insert Horizontal Line': 'Sisipkan Garis Horizontal',\n\t'Insert Image': 'Sisipkan Gambar',\n\t'Insert file': 'Sisipkan Berkas',\n\t'Insert youtube/vimeo video': 'Sisipkan video youtube/vimeo',\n\t'Insert link': 'Sisipkan tautan',\n\t'Font size': 'Ukuran font',\n\t'Font family': 'Keluarga font',\n\t'Insert format block': 'Sisipkan blok format',\n\tNormal: 'Normal',\n\t'Heading 1': 'Heading 1',\n\t'Heading 2': 'Heading 2',\n\t'Heading 3': 'Heading 3',\n\t'Heading 4': 'Heading 4',\n\tQuote: 'Kutip',\n\tCode: 'Kode',\n\tInsert: 'Sisipkan',\n\t'Insert table': 'Sisipkan tabel',\n\t'Decrease Indent': 'Kurangi Indentasi',\n\t'Increase Indent': 'Tambah Indentasi',\n\t'Select Special Character': 'Pilih Karakter Spesial',\n\t'Insert Special Character': 'Sisipkan Karakter Spesial',\n\t'Paint format': 'Formar warna',\n\t'Change mode': 'Ubah mode',\n\tMargins: 'Batas',\n\ttop: 'atas',\n\tright: 'kanan',\n\tbottom: 'bawah',\n\tleft: 'kiri',\n\tStyles: 'Gaya',\n\tClasses: 'Class',\n\tAlign: 'Rata',\n\tRight: 'Kanan',\n\tCenter: 'Tengah',\n\tLeft: 'Kiri',\n\t'--Not Set--': '--Tidak diset--',\n\tSrc: 'Src',\n\tTitle: 'Judul',\n\tAlternative: 'Teks alternatif',\n\tLink: 'Tautan',\n\t'Open link in new tab': 'Buka tautan di tab baru',\n\tImage: 'Gambar',\n\tfile: 'berkas',\n\tAdvanced: 'Lanjutan',\n\t'Image properties': 'Properti gambar',\n\tCancel: 'Batal',\n\tOk: 'Ya',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Kode Anda cenderung ke HTML. Biarkan sebagai HTML?',\n\t'Paste as HTML': 'Paste sebagai HTML',\n\tKeep: 'Jaga',\n\tClean: 'Bersih',\n\t'Insert as Text': 'Sisipkan sebagai teks',\n\t'Insert only Text': 'Sisipkan hanya teks',\n\t'Word Paste Detected': 'Terdeteksi paste dari Word',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Konten dipaste dari dokumen Microsoft Word/Excel. Apakah Anda ingin tetap menjaga format atau membersihkannya?',\n\t'File Browser': 'Penjelajah Berkas',\n\t'Error on load list': 'Error ketika memuat list',\n\t'Error on load folders': 'Error ketika memuat folder',\n\t'Are you sure?': 'Apakah Anda yakin?',\n\t'Enter Directory name': 'Masukkan nama Direktori',\n\t'Create directory': 'Buat direktori',\n\t'type name': 'ketik nama',\n\t'Drop image': 'Letakkan gambar',\n\t'Drop file': 'Letakkan berkas',\n\t'or click': 'atau klik',\n\t'Alternative text': 'Teks alternatif',\n\tBrowse: 'Jelajahi',\n\tUpload: 'Unggah',\n\tBackground: 'Latar Belakang',\n\tText: 'Teks',\n\tTop: 'Atas',\n\tMiddle: 'Tengah',\n\tBottom: 'Bawah',\n\t'Insert column before': 'Sisipkan kolom sebelumnya',\n\t'Insert column after': 'Sisipkan kolom setelahnya',\n\t'Insert row above': 'Sisipkan baris di atasnya',\n\t'Insert row below': 'Sisipkan baris di bawahnya',\n\t'Delete table': 'Hapus tabel',\n\t'Delete row': 'Hapus baris',\n\t'Delete column': 'Hapus kolom',\n\t'Empty cell': 'Kosongkan cell',\n\tsource: 'sumber',\n\tbold: 'tebal',\n\titalic: 'miring',\n\tbrush: 'sikat',\n\tlink: 'tautan',\n\tundo: 'batalkan',\n\tredo: 'ulangi',\n\ttable: 'tabel',\n\timage: 'gambar',\n\teraser: 'penghapus',\n\tparagraph: 'paragraf',\n\tfontsize: 'ukuran font',\n\tvideo: 'video',\n\tfont: 'font',\n\tabout: 'tentang',\n\tprint: 'cetak',\n\tunderline: 'garis bawah',\n\tstrikethrough: 'coret',\n\tindent: 'menjorok ke dalam',\n\toutdent: 'menjorok ke luar',\n\tfullsize: 'ukuran penuh',\n\tshrink: 'menyusut',\n\thr: 'hr',\n\tul: 'ul',\n\tol: 'ol',\n\tcut: 'potong',\n\tselectall: 'Pilih semua',\n\t'Embed code': 'Kode embed',\n\t'Open link': 'Buka tautan',\n\t'Edit link': 'Edit tautan',\n\t'No follow': 'No follow',\n\tUnlink: 'Hapus tautan',\n\tEye: 'Mata',\n\tpencil: 'pensil',\n\tUpdate: 'Perbarui',\n\t' URL': 'URL',\n\tEdit: 'Edit',\n\t'Horizontal align': 'Perataan horizontal',\n\tFilter: 'Filter',\n\t'Sort by changed': 'Urutkan berdasarkan perubahan',\n\t'Sort by name': 'Urutkan berdasarkan nama',\n\t'Sort by size': 'Urutkan berdasarkan ukuran',\n\t'Add folder': 'Tambah folder',\n\tReset: 'Reset',\n\tSave: 'Simpan',\n\t'Save as ...': 'Simpan sebagai...',\n\tResize: 'Ubah ukuran',\n\tCrop: 'Crop',\n\tWidth: 'Lebar',\n\tHeight: 'Tinggi',\n\t'Keep Aspect Ratio': 'Jaga aspek rasio',\n\tYes: 'Ya',\n\tNo: 'Tidak',\n\tRemove: 'Copot',\n\tSelect: 'Pilih',\n\t'Chars: %d': 'Karakter: %d',\n\t'Words: %d': 'Kata: %d',\n\tAll: 'Semua',\n\t'Select %s': 'Pilih %s',\n\t'Select all': 'Pilih semua',\n\t'Vertical align': 'Rata vertikal',\n\tSplit: 'Bagi',\n\t'Split vertical': 'Bagi secara vertikal',\n\t'Split horizontal': 'Bagi secara horizontal',\n\tMerge: 'Gabungkan',\n\t'Add column': 'Tambah kolom',\n\t'Add row': 'tambah baris',\n\tDelete: 'Hapus',\n\tBorder: 'Bingkai',\n\t'License: %s': 'Lisensi: %s',\n\t'Strike through': 'Coret',\n\tUnderline: 'Garis Bawah',\n\tsuperscript: 'Superskrip',\n\tsubscript: 'Subskrip',\n\t'Cut selection': 'Potong pilihan',\n\tBreak: 'Berhenti',\n\t'Search for': 'Mencari',\n\t'Replace with': 'Ganti dengan',\n\tReplace: 'Mengganti',\n\tPaste: 'Paste',\n\t'Choose Content to Paste': 'Pilih konten untuk dipaste',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Anda hanya dapat mengedit gambar Anda sendiri. Unduh gambar ini di host?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Gambar telah sukses diunggah ke host!',\n\tpalette: 'palet',\n\t'There are no files': 'Tidak ada berkas',\n\tRename: 'ganti nama',\n\t'Enter new name': 'Masukkan nama baru',\n\tpreview: 'pratinjau',\n\tdownload: 'Unduh',\n\t'Paste from clipboard': 'Paste dari clipboard',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Browser anda tidak mendukung akses langsung ke clipboard.',\n\t'Copy selection': 'Copy seleksi',\n\tcopy: 'copy',\n\t'Border radius': 'Border radius',\n\t'Show all': 'Tampilkan semua',\n\tApply: 'Menerapkan',\n\t'Please fill out this field': 'Silahkan mengisi kolom ini',\n\t'Please enter a web address': 'Silahkan masukkan alamat web',\n\tDefault: 'Default',\n\tCircle: 'Lingkaran',\n\tDot: 'Dot',\n\tQuadrate: 'Kuadrat',\n\tFind: 'Menemukan',\n\t'Find Previous': 'Menemukan Sebelumnya',\n\t'Find Next': 'Menemukan Berikutnya',\n\t'Insert className': 'Masukkan nama kelas',\n\t'Press Alt for custom resizing': 'Tekan Alt untuk mengubah ukuran kustom'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Scrivi qualcosa...',\n\tAdvanced: 'Avanzato',\n\t'About Jodit': 'A proposito di Jodit',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": 'Guida utente di Jodit',\n\t'contains detailed help for using':\n\t\t\"contiene una guida dettagliata per l'uso.\",\n\t'For information about the license, please go to our website:':\n\t\t'Per informazioni sulla licenza, si prega di visitare il nostro sito web:',\n\t'Buy full version': 'Acquista la versione completa',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Tutti i diritti riservati.',\n\tAnchor: 'Link',\n\t'Open in new tab': 'Apri in una nuova scheda',\n\t'Open in fullsize': \"Apri l'editor a schermo intero\",\n\t'Clear Formatting': 'Pulisci Formattazione',\n\t'Fill color or set the text color': 'Colore di sfondo o del testo',\n\tRedo: 'Ripristina',\n\tUndo: 'Annulla',\n\tBold: 'Grassetto',\n\tItalic: 'Corsivo',\n\t'Insert Unordered List': 'Inserisci lista non ordinata',\n\t'Insert Ordered List': 'Inserisci lista ordinata',\n\t'Align Center': 'Allinea al centro',\n\t'Align Justify': 'Allineamento Giustificato',\n\t'Align Left': 'Allinea a Sinistra',\n\t'Align Right': 'Allinea a Destra',\n\t'Insert Horizontal Line': 'Inserisci una linea orizzontale',\n\t'Insert Image': 'Inserisci immagine',\n\t'Insert file': 'Inserisci un file',\n\t'Insert youtube/vimeo video': 'Inserisci video Youtube/Vimeo',\n\t'Insert link': 'Inserisci link',\n\t'Font size': 'Dimensione carattere',\n\t'Font family': 'Tipo di font',\n\t'Insert format block': 'Inserisci blocco',\n\tNormal: 'Normale',\n\t'Heading 1': 'Intestazione 1',\n\t'Heading 2': 'Intestazione 2',\n\t'Heading 3': 'Intestazione 3',\n\t'Heading 4': 'Intestazione 4',\n\tQuote: 'Citazione',\n\tCode: 'Codice',\n\tInsert: 'Inserisci',\n\t'Insert table': 'Inserisci tabella',\n\t'Decrease Indent': 'Riduci il rientro',\n\t'Increase Indent': 'Aumenta il rientro',\n\t'Select Special Character': 'Seleziona un carattere speciale',\n\t'Insert Special Character': 'Inserisci un carattere speciale',\n\t'Paint format': 'Copia formato',\n\t'Change mode': \"Cambia modalita'\",\n\tMargins: 'Margini',\n\ttop: 'su',\n\tright: 'destra',\n\tbottom: 'giù',\n\tleft: 'sinistra',\n\tStyles: 'Stili CSS',\n\tClasses: 'Classi CSS',\n\tAlign: 'Allinea',\n\tRight: 'Destra',\n\tCenter: 'Centro',\n\tLeft: 'Sinistra',\n\t'--Not Set--': '--Non Impostato--',\n\tSrc: 'Fonte',\n\tTitle: 'Titolo',\n\tAlternative: 'Testo Alternativo',\n\tLink: 'Link',\n\t'Open link in new tab': 'Apri il link in una nuova scheda',\n\tImage: 'Immagine',\n\tfile: 'Archivio',\n\t'Image properties': \"Proprietà dell'immagine\",\n\tCancel: 'Annulla',\n\tOk: 'Accetta',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t\"Il codice è simile all'HTML. Mantieni come HTML?\",\n\t'Paste as HTML': 'Incolla come HTML',\n\tKeep: 'Mantieni',\n\tClean: 'Pulisci',\n\t'Insert as Text': 'Inserisci come testo',\n\t'Word Paste Detected': 'Incolla testo da Word rilevato',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Il contenuto incollato proviene da un documento Microsoft Word / Excel. Vuoi mantenere il formato o pulirlo?',\n\t'Insert only Text': 'Inserisci solo il testo',\n\t'File Browser': 'Cerca file',\n\t'Error on load list': \"Errore durante il caricamento dell'elenco\",\n\t'Error on load folders': 'Errore durante il caricamento delle cartelle',\n\t'Are you sure?': 'Sei sicuro?',\n\t'Enter Directory name': 'Inserisci il nome della cartella',\n\t'Create directory': 'Crea cartella',\n\t'type name': 'Digita il nome',\n\t'Drop image': 'Cancella immagine',\n\t'Drop file': 'Cancella file',\n\t'or click': 'o clicca',\n\t'Alternative text': 'Testo alternativo',\n\tBrowse: 'Sfoglia',\n\tUpload: 'Carica',\n\tBackground: 'Sfondo',\n\tText: 'Testo',\n\tTop: 'Su',\n\tMiddle: 'Centro',\n\tBottom: 'Sotto',\n\t'Insert column before': 'Inserisci la colonna prima',\n\t'Insert column after': 'Inserisci la colonna dopo',\n\t'Insert row above': 'Inserisci la riga sopra',\n\t'Insert row below': 'Inserisci la riga sotto',\n\t'Delete table': 'Elimina tabella',\n\t'Delete row': 'Elimina riga',\n\t'Delete column': 'Elimina colonna',\n\t'Empty cell': 'Cella vuota',\n\tDelete: 'Cancella',\n\t'Strike through': 'Barrato',\n\tUnderline: 'Sottolineato',\n\tBreak: 'Pausa',\n\t'Search for': 'Cerca per',\n\t'Replace with': 'Sostituisci con',\n\tReplace: 'Sostituisci',\n\tEdit: 'Modifica',\n\t'Vertical align': 'Allineamento verticala',\n\t'Horizontal align': 'Allineamento orizzontale',\n\tFilter: 'Filtro',\n\t'Sort by changed': 'Ordina per data di modifica',\n\t'Sort by name': 'Ordina per nome',\n\t'Sort by size': 'Ordina per dimensione',\n\t'Add folder': 'Aggiungi cartella',\n\tSplit: 'Dividi',\n\t'Split vertical': 'Dividi verticalmente',\n\t'Split horizontal': 'Dividi orizzontale',\n\tMerge: 'Fondi',\n\t'Add column': 'Aggiungi colonna',\n\t'Add row': 'Aggiungi riga',\n\tBorder: 'Bordo',\n\t'Embed code': 'Includi codice',\n\tUpdate: 'Aggiorna',\n\tsuperscript: 'indice',\n\tsubscript: 'pedice',\n\t'Cut selection': 'Taglia selezione',\n\tPaste: 'Incolla',\n\t'Choose Content to Paste': 'Seleziona il contenuto da incollare',\n\t'Chars: %d': 'Caratteri: %d',\n\t'Words: %d': 'Parole: %d',\n\tAll: 'Tutto',\n\t'Select %s': 'Seleziona: %s',\n\t'Select all': 'Seleziona tutto',\n\tsource: 'risorsa',\n\tbold: 'Grassetto',\n\titalic: 'Corsivo',\n\tbrush: 'Pennello',\n\tlink: 'Link',\n\tundo: 'Annulla',\n\tredo: 'Ripristina',\n\ttable: 'Tabella',\n\timage: 'Immagine',\n\teraser: 'Gomma',\n\tparagraph: 'Paragrafo',\n\tfontsize: 'Dimensione del carattere',\n\tvideo: 'Video',\n\tfont: 'Font',\n\tabout: 'Approposito di',\n\tprint: 'Stampa',\n\tunderline: 'Sottolineato',\n\tstrikethrough: 'Barrato',\n\tindent: 'aumenta rientro',\n\toutdent: 'riduci rientro',\n\tfullsize: 'espandi',\n\tshrink: 'comprimi',\n\thr: 'linea orizzontale',\n\tul: 'lista non ordinata',\n\tol: 'lista ordinata',\n\tcut: 'Taglia',\n\tselectall: 'Seleziona tutto',\n\t'Open link': 'Apri link',\n\t'Edit link': 'Modifica link',\n\t'No follow': 'Non seguire',\n\tUnlink: 'Rimuovi link',\n\tEye: 'Recensione',\n\tpencil: 'Per modificare',\n\t' URL': ' URL',\n\tReset: 'Reset',\n\tSave: 'Salva',\n\t'Save as ...': 'Salva con nome...',\n\tResize: 'Ridimensiona',\n\tCrop: 'Ritaglia',\n\tWidth: 'Larghezza',\n\tHeight: 'Altezza',\n\t'Keep Aspect Ratio': 'Mantieni le proporzioni',\n\tYes: 'Si',\n\tNo: 'No',\n\tRemove: 'Rimuovi',\n\tSelect: 'Seleziona',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Puoi modificare solo le tue immagini. Vuoi scaricare questa immagine dal server?',\n\t'The image has been successfully uploaded to the host!':\n\t\t\"L'immagine è stata caricata correttamente sul server!\",\n\tpalette: 'tavolozza',\n\t'There are no files': 'Non ci sono file in questa directory.',\n\tRename: 'Rinomina',\n\t'Enter new name': 'Inserisci un nuovo nome',\n\tpreview: 'anteprima',\n\tdownload: 'Scarica',\n\t'Paste from clipboard': 'Incolla dagli appunti',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t\"Il tuo browser non supporta l'accesso diretto agli appunti.\",\n\t'Copy selection': 'Copia selezione',\n\tcopy: 'copia',\n\t'Border radius': 'Border radius',\n\t'Show all': 'Mostra tutti',\n\tApply: 'Applica',\n\t'Please fill out this field': 'Si prega di compilare questo campo',\n\t'Please enter a web address': 'Si prega di inserire un indirizzo web',\n\tDefault: 'Default',\n\tCircle: 'Cerchio',\n\tDot: 'Punto',\n\tQuadrate: 'Quadrato',\n\t'Lower Alpha': 'Lettera Minuscola',\n\t'Lower Greek': 'Lettera Greca Minuscola',\n\t'Lower Roman': 'Numero Romano Minuscolo',\n\t'Upper Alpha': 'Lettera Maiuscola',\n\t'Upper Roman': 'Numero Romano Maiuscolo',\n\tFind: 'Trova',\n\t'Find Previous': 'Trova Precedente',\n\t'Find Next': 'Trova Successivo',\n\t'Insert className': 'Inserisci il nome della classe',\n\t'Press Alt for custom resizing':\n\t\t'Premere Alt per il ridimensionamento personalizzato'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'なにかタイプしてください',\n\tAdvanced: '高度な設定',\n\t'About Jodit': 'Joditについて',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": 'Jodit ユーザーズ・ガイド',\n\t'contains detailed help for using': '詳しい使い方',\n\t'For information about the license, please go to our website:':\n\t\t'ライセンス詳細についてはJodit Webサイトを確認ください:',\n\t'Buy full version': 'フルバージョンを購入',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.',\n\tAnchor: 'Anchor',\n\t'Open in new tab': '新しいタブで開く',\n\t'Open in fullsize': 'エディターのサイズ(フル/ノーマル)',\n\t'Clear Formatting': '書式をクリア',\n\t'Fill color or set the text color': 'テキストの色',\n\tRedo: 'やり直し',\n\tUndo: '元に戻す',\n\tBold: '太字',\n\tItalic: '斜体',\n\t'Insert Unordered List': '箇条書き',\n\t'Insert Ordered List': '番号付きリスト',\n\t'Align Center': '中央揃え',\n\t'Align Justify': '両端揃え',\n\t'Align Left': '左揃え',\n\t'Align Right': '右揃え',\n\t'Insert Horizontal Line': '区切り線を挿入',\n\t'Insert Image': '画像を挿入',\n\t'Insert file': 'ファイルを挿入',\n\t'Insert youtube/vimeo video': 'Youtube/Vimeo 動画',\n\t'Insert link': 'リンクを挿入',\n\t'Font size': 'フォントサイズ',\n\t'Font family': 'フォント',\n\t'Insert format block': 'テキストのスタイル',\n\tNormal: '指定なし',\n\t'Heading 1': 'タイトル1',\n\t'Heading 2': 'タイトル2',\n\t'Heading 3': 'タイトル3',\n\t'Heading 4': 'タイトル4',\n\tQuote: '引用',\n\tCode: 'コード',\n\tInsert: '挿入',\n\t'Insert table': '表を挿入',\n\t'Decrease Indent': 'インデント減',\n\t'Increase Indent': 'インデント増',\n\t'Select Special Character': '特殊文字を選択',\n\t'Insert Special Character': '特殊文字を挿入',\n\t'Paint format': '書式を貼付け',\n\t'Change mode': '編集モード切替え',\n\tMargins: 'マージン',\n\ttop: '上',\n\tright: '右',\n\tbottom: '下',\n\tleft: '左',\n\tStyles: 'スタイル',\n\tClasses: 'クラス',\n\tAlign: '配置',\n\tRight: '右寄せ',\n\tCenter: '中央寄せ',\n\tLeft: '左寄せ',\n\t'--Not Set--': '指定なし',\n\tSrc: 'ソース',\n\tTitle: 'タイトル',\n\tAlternative: '代替テキスト',\n\tLink: 'リンク',\n\t'Open link in new tab': '新しいタブで開く',\n\tImage: '画像',\n\tfile: 'ファイル',\n\t'Image properties': '画像のプロパティー',\n\tCancel: 'キャンセル',\n\tOk: '確定',\n\t'Your code is similar to HTML. Keep as HTML?': 'HTMLコードを保持しますか?',\n\t'Paste as HTML': 'HTMLで貼付け',\n\tKeep: 'HTMLを保持',\n\tClean: 'Clean',\n\t'Insert as Text': 'HTMLをテキストにする',\n\t'Word Paste Detected': 'Word Paste Detected',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?',\n\t'Insert only Text': 'テキストだけ',\n\t'File Browser': 'File Browser',\n\t'Error on load list': 'Error on load list',\n\t'Error on load folders': 'Error on load folders',\n\t'Are you sure?': 'Are you sure?',\n\t'Enter Directory name': 'Enter Directory name',\n\t'Create directory': 'Create directory',\n\t'type name': 'type name',\n\t'Drop image': 'ここに画像をドロップ',\n\t'Drop file': 'ここにファイルをドロップ',\n\t'or click': 'or クリック',\n\t'Alternative text': '代替テキスト',\n\tBrowse: 'ブラウズ',\n\tUpload: 'アップロード',\n\tBackground: '背景',\n\tText: '文字',\n\tTop: '上',\n\tMiddle: '中央',\n\tBottom: '下',\n\t'Insert column before': '左に列を挿入',\n\t'Insert column after': '右に列を挿入',\n\t'Insert row above': '上に行を挿入',\n\t'Insert row below': '下に行を挿入',\n\t'Delete table': '表を削除',\n\t'Delete row': '行を削除',\n\t'Delete column': '列を削除',\n\t'Empty cell': 'セルを空にする',\n\t'Chars: %d': '文字数: %d',\n\t'Words: %d': '単語数: %d',\n\t'Strike through': '取り消し線',\n\tUnderline: '下線',\n\tsuperscript: '上付き文字',\n\tsubscript: '下付き文字',\n\t'Cut selection': '切り取り',\n\t'Select all': 'すべて選択',\n\tBreak: 'Pause',\n\t'Search for': '検索',\n\t'Replace with': '置換',\n\tReplace: '交換',\n\tPaste: '貼付け',\n\t'Choose Content to Paste': '選択した内容を貼付け',\n\tAll: '全部',\n\tsource: 'source',\n\tbold: 'bold',\n\titalic: 'italic',\n\tbrush: 'brush',\n\tlink: 'link',\n\tundo: 'undo',\n\tredo: 'redo',\n\ttable: 'table',\n\timage: 'image',\n\teraser: 'eraser',\n\tparagraph: 'paragraph',\n\tfontsize: 'fontsize',\n\tvideo: 'video',\n\tfont: 'font',\n\tabout: 'about',\n\tprint: 'print',\n\tunderline: 'underline',\n\tstrikethrough: 'strikethrough',\n\tindent: 'indent',\n\toutdent: 'outdent',\n\tfullsize: 'fullsize',\n\tshrink: 'shrink',\n\thr: '分割線',\n\tul: '箇条書き',\n\tol: '番号付きリスト',\n\tcut: '切り取り',\n\tselectall: 'すべて選択',\n\t'Open link': 'リンクを開く',\n\t'Edit link': 'リンクを編集',\n\t'No follow': 'No follow',\n\tUnlink: 'リンク解除',\n\tEye: 'サイトを確認',\n\t' URL': 'URL',\n\tReset: 'リセット',\n\tSave: '保存',\n\t'Save as ...': 'Save as ...',\n\tResize: 'リサイズ',\n\tCrop: 'Crop',\n\tWidth: '幅',\n\tHeight: '高さ',\n\t'Keep Aspect Ratio': '縦横比を保持',\n\tYes: 'はい',\n\tNo: 'いいえ',\n\tRemove: '移除',\n\tSelect: '選択',\n\t'Select %s': '選択: %s',\n\tUpdate: '更新',\n\t'Vertical align': '垂直方向の配置',\n\tMerge: 'セルの結合',\n\t'Add column': '列を追加',\n\t'Add row': '行を追加',\n\tBorder: '境界線',\n\t'Embed code': '埋め込みコード',\n\tDelete: '削除',\n\tEdit: '編集',\n\t'Horizontal align': '水平方向の配置',\n\tFilter: 'Filter',\n\t'Sort by changed': 'Sort by changed',\n\t'Sort by name': 'Sort by name',\n\t'Sort by size': 'Sort by size',\n\t'Add folder': 'Add folder',\n\tSplit: '分割',\n\t'Split vertical': 'セルの分割(垂直方向)',\n\t'Split horizontal': 'セルの分割(水平方向)',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'You can only edit your own images. Download this image on the host?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'The image has been successfully uploaded to the host!',\n\tpalette: 'パレット',\n\tpencil: '鉛筆',\n\t'There are no files': 'There are no files',\n\tRename: 'Rename',\n\t'Enter new name': 'Enter new name',\n\tpreview: 'プレビュー',\n\tdownload: 'ダウンロード',\n\t'Paste from clipboard': '貼り付け',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'お使いのブラウザはクリップボードを使用できません',\n\t'Copy selection': 'コピー',\n\tcopy: 'copy',\n\t'Border radius': '角の丸み',\n\t'Show all': '全て表示',\n\tApply: '適用',\n\t'Please fill out this field': 'まだこの分野',\n\t'Please enter a web address': 'を入力してくださいウェブアドレス',\n\tDefault: 'デフォルト',\n\tCircle: '白丸',\n\tDot: '黒丸',\n\tQuadrate: '四角',\n\tFind: '見',\n\t'Find Previous': '探前',\n\t'Find Next': '由来',\n\t'Lower Alpha': '英小文字',\n\t'Lower Greek': 'ギリシャ文字',\n\t'Lower Roman': 'ローマ数字小文字',\n\t'Upper Alpha': '英大文字',\n\t'Upper Roman': 'ローマ数字大文字',\n\t'Insert className': 'クラス名を挿入',\n\t'Press Alt for custom resizing':\n\t\t'カスタムサイズ変更のためのAltキーを押します'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': '무엇이든 입력하세요',\n\t'About Jodit': 'Jodit에 대하여',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": 'Jodit 사용자 안내서',\n\t'contains detailed help for using': '자세한 도움말이 들어있어요',\n\t'For information about the license, please go to our website:':\n\t\t'라이센스에 관해서는 Jodit 웹 사이트를 방문해주세요:',\n\t'Buy full version': '풀 버전 구입하기',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'© XDSoft.net - Chupurnov Valeriy. 에게 저작권과 모든 권리가 있습니다.',\n\tAnchor: 'Anchor',\n\t'Open in new tab': '새 탭에서 열기',\n\t'Open in fullsize': '전체 크기로 보기',\n\t'Clear Formatting': '서식 지우기',\n\t'Fill color or set the text color': '글씨 색상',\n\tRedo: '재실행',\n\tUndo: '실행 취소',\n\tBold: '굵게',\n\tItalic: '기울임',\n\t'Insert Unordered List': '글머리 목록',\n\t'Insert Ordered List': '번호 목록',\n\t'Align Center': '가운데 정렬',\n\t'Align Justify': '양쪽 정렬',\n\t'Align Left': '왼쪽 정렬',\n\t'Align Right': '오른쪽 정렬',\n\t'Insert Horizontal Line': '수평 구분선 넣기',\n\t'Insert Image': '이미지 넣기',\n\t'Insert file': '파일 넣기',\n\t'Insert youtube/vimeo video': 'Youtube/Vimeo 동영상',\n\t'Insert link': '링크 넣기',\n\t'Font size': '글꼴 크기',\n\t'Font family': '글꼴',\n\t'Insert format block': '블록 요소 넣기',\n\tNormal: '일반 텍스트',\n\t'Heading 1': '제목 1',\n\t'Heading 2': '제목 2',\n\t'Heading 3': '제목 3',\n\t'Heading 4': '제목 4',\n\tQuote: '인용',\n\tCode: '코드',\n\tInsert: '붙여 넣기',\n\t'Insert table': '테이블',\n\t'Decrease Indent': '들여쓰기 감소',\n\t'Increase Indent': '들여쓰기 증가',\n\t'Select Special Character': '특수문자 선택',\n\t'Insert Special Character': '특수문자 입력',\n\t'Paint format': '페인트 형식',\n\t'Change mode': '편집모드 변경',\n\tMargins: '마진',\n\ttop: '위',\n\tright: '오른쪽',\n\tbottom: '아래',\n\tleft: '왼쪽',\n\tStyles: '스타일',\n\tClasses: '클래스',\n\tAlign: '정렬',\n\tRight: '오른쪽으로',\n\tCenter: '가운데로',\n\tLeft: '왼쪽으로',\n\t'--Not Set--': '--지정 안 함--',\n\tSrc: '경로(src)',\n\tTitle: '제목',\n\tAlternative: '대체 텍스트(alt)',\n\tLink: '링크',\n\t'Open link in new tab': '새 탭에서 열기',\n\tfile: '파일',\n\tAdvanced: '고급',\n\t'Image properties': '이미지 속성',\n\tCancel: '취소',\n\tOk: '확인',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'HTML 코드로 감지했어요. 코드인채로 붙여넣을까요?',\n\t'Paste as HTML': 'HTML로 붙여넣기',\n\tKeep: '원본 유지',\n\tClean: '지우기',\n\t'Insert as Text': '텍스트로 넣기',\n\t'Insert only Text': '텍스트만 넣기',\n\t'Word Paste Detected': 'Word 붙여넣기 감지',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Microsoft Word/Excel 문서로 감지했어요. 서식을 유지한채로 붙여넣을까요?',\n\t'File Browser': '파일 탐색기',\n\t'Error on load list': '목록 불러오기 에러',\n\t'Error on load folders': '폴더 불러오기',\n\t'Are you sure?': '정말 진행할까요?',\n\t'Enter Directory name': '디렉토리 이름 입력',\n\t'Create directory': '디렉토리 생성',\n\t'type name': '이름 입력',\n\t'Drop image': '이미지 드래그',\n\t'Drop file': '파일 드래그',\n\t'or click': '혹은 클릭',\n\t'Alternative text': '대체 텍스트',\n\tBrowse: '탐색',\n\tUpload: '업로드',\n\tBackground: '배경',\n\tText: '텍스트',\n\tTop: '위',\n\tMiddle: '중앙',\n\tBottom: '아래',\n\t'Insert column before': '이전 열에 삽입',\n\t'Insert column after': '다음 열에 삽입',\n\t'Insert row above': '위 행에 삽입',\n\t'Insert row below': '아래 행에 삽입',\n\t'Delete table': '테이블 삭제',\n\t'Delete row': '행 삭제',\n\t'Delete column': '열 삭제',\n\t'Empty cell': '빈 셀',\n\tsource: 'HTML 소스',\n\tbold: '볼드',\n\titalic: '이탤릭',\n\tbrush: '브러시',\n\tlink: '링크',\n\tundo: '실행 취소',\n\tredo: '재실행',\n\ttable: '테이블',\n\timage: '이미지',\n\teraser: '지우개',\n\tparagraph: '문단',\n\tfontsize: '글꼴 크기',\n\tvideo: '비디오',\n\tfont: '글꼴',\n\tabout: '편집기 정보',\n\tprint: '프린트',\n\tunderline: '밑줄',\n\tstrikethrough: '취소선',\n\tindent: '들여쓰기',\n\toutdent: '내어쓰기',\n\tfullsize: '전체 화면',\n\tshrink: '일반 화면',\n\thr: '구분선',\n\tul: '글머리 목록',\n\tol: '번호 목록',\n\tcut: '잘라내기',\n\tselectall: '모두 선택',\n\t'Embed code': 'Embed 코드',\n\t'Open link': '링크 열기',\n\t'Edit link': '링크 편집',\n\t'No follow': 'No follow',\n\tUnlink: '링크 제거',\n\tEye: '사이트 확인',\n\tpencil: '연필',\n\tUpdate: '갱신',\n\t' URL': 'URL',\n\tEdit: '편집',\n\t'Horizontal align': '수평 정렬',\n\tFilter: '필터',\n\t'Sort by changed': '변경일 정렬',\n\t'Sort by name': '이름 정렬',\n\t'Sort by size': '크기 정렬',\n\t'Add folder': '새 폴더',\n\tReset: '초기화',\n\tSave: '저장',\n\t'Save as ...': '새로 저장하기 ...',\n\tResize: '리사이즈',\n\tCrop: '크롭',\n\tWidth: '가로 길이',\n\tHeight: '세로 높이',\n\t'Keep Aspect Ratio': '비율 유지하기',\n\tYes: '네',\n\tNo: '아니오',\n\tRemove: '제거',\n\tSelect: '선택',\n\t'Chars: %d': '문자수: %d',\n\t'Words: %d': '단어수: %d',\n\tAll: '모두',\n\t'Select all': '모두 선택',\n\t'Select %s': '선택: %s',\n\t'Vertical align': '수직 정렬',\n\tSplit: '분할',\n\t'Split vertical': '세로 셀 분할',\n\t'Split horizontal': '가로 셀 분할',\n\tMerge: '셀 병합',\n\t'Add column': '열 추가',\n\t'Add row': '행 추가',\n\tDelete: '삭제',\n\tBorder: '외곽선',\n\t'License: %s': '라이센스: %s',\n\t'Strike through': '취소선',\n\tUnderline: '밑줄',\n\tsuperscript: '윗첨자',\n\tsubscript: '아래첨자',\n\t'Cut selection': '선택 잘라내기',\n\tBreak: '구분자',\n\t'Search for': '검색',\n\t'Replace with': '대체하기',\n\tReplace: '대체',\n\tPaste: '붙여넣기',\n\t'Choose Content to Paste': '붙여넣을 내용 선택',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'외부 이미지는 편집할 수 없어요. 외부 이미지를 다운로드 할까요?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'이미지를 무사히 업로드 했어요!',\n\tpalette: '팔레트',\n\t'There are no files': '파일이 없어요',\n\tRename: '이름 변경',\n\t'Enter new name': '새 이름 입력',\n\tpreview: '미리보기',\n\tdownload: '다운로드',\n\t'Paste from clipboard': '클립보드 붙여넣기',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'사용중인 브라우저가 클립보드 접근을 지원하지 않아요.',\n\t'Copy selection': '선택 복사',\n\tcopy: '복사',\n\t'Border radius': '둥근 테두리',\n\t'Show all': '모두 보기',\n\tApply: '적용',\n\t'Please fill out this field': '이 항목을 입력해주세요!',\n\t'Please enter a web address': '웹 URL을 입력해주세요.',\n\tDefault: '기본',\n\tCircle: '원',\n\tDot: '점',\n\tQuadrate: '정사각형',\n\tFind: '찾기',\n\t'Find Previous': '이전 찾기',\n\t'Find Next': '다음 찾기',\n\t'Insert className': 'className 입력',\n\t'Press Alt for custom resizing':\n\t\t'사용자 지정 크기 조정에 대 한 고도 누르십시오'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Бичээд үзээрэй',\n\tAdvanced: 'Дэвшилтэт',\n\t'About Jodit': 'Jodit-ын талаар ',\n\t'Jodit Editor': 'Jodit програм',\n\t\"Jodit User's Guide\": 'Jodit гарын авлага',\n\t'contains detailed help for using':\n\t\t'хэрэглээний талаар дэлгэрэнгүй мэдээллийг агуулна',\n\t'For information about the license, please go to our website:':\n\t\t'Лицензийн мэдээллийг манай вэб хуудаснаас авна уу:',\n\t'Buy full version': 'Бүрэн хувилбар худалдан авах',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Зохиогчийн эрх хамгаалагдсан © XDSoft.net - Chupurnov Valeriy. Бүх эрхийг эзэмшинэ.',\n\tAnchor: 'Холбоо барих',\n\t'Open in new tab': 'Шинэ табаар нээх',\n\t'Open in fullsize': 'Бүтэн дэлгэцээр нээх',\n\t'Clear Formatting': 'Форматыг арилгах',\n\t'Fill color or set the text color':\n\t\t'Өнгөөр будах эсвэл текстийн өнгө сонгох',\n\tRedo: 'Дахих',\n\tUndo: 'Буцаах',\n\tBold: 'Тод',\n\tItalic: 'Налуу',\n\t'Insert Unordered List': 'Тэмдэгт жагсаалт нэмэх',\n\t'Insert Ordered List': 'Дугаарт жагсаалт нэмэх',\n\t'Align Center': 'Голлож байрлуулах',\n\t'Align Justify': 'Тэгшитгэн байрлуулах',\n\t'Align Left': 'Зүүнд байрлуулах',\n\t'Align Right': 'Баруунд байрлуулах',\n\t'Insert Horizontal Line': 'Хэвтээ зураас нэмэх',\n\t'Insert Image': 'Зураг нэмэх',\n\t'Insert file': 'Файл нэмэх',\n\t'Insert youtube/vimeo video': 'Youtube/Vimeo видео нэмэх',\n\t'Insert link': 'Холбоос нэмэх',\n\t'Font size': 'Фонтын хэмжээ',\n\t'Font family': 'Фонтын бүл',\n\t'Insert format block': 'Блок нэмэх',\n\tNormal: 'Хэвийн',\n\t'Heading 1': 'Гарчиг 1',\n\t'Heading 2': 'Гарчиг 2',\n\t'Heading 3': 'Гарчиг 3',\n\t'Heading 4': 'Гарчиг 4',\n\tQuote: 'Ишлэл',\n\tCode: 'Код',\n\tInsert: 'Оруулах',\n\t'Insert table': 'Хүснэгт оруулах',\n\t'Decrease Indent': 'Доголын зай хасах',\n\t'Increase Indent': 'Доголын зай нэмэх',\n\t'Select Special Character': 'Тусгай тэмдэгт сонгох',\n\t'Insert Special Character': 'Тусгай тэмдэгт нэмэх',\n\t'Paint format': 'Зургийн формат',\n\t'Change mode': 'Горим өөрчлөх',\n\tMargins: 'Цаасны зай',\n\ttop: 'Дээрээс',\n\tright: 'Баруунаас',\n\tbottom: 'Доороос',\n\tleft: 'Зүүнээс',\n\tStyles: 'CSS стиль',\n\tClasses: 'CSS анги',\n\tAlign: 'Байрлуулах',\n\tRight: 'Баруун',\n\tCenter: 'Төв',\n\tLeft: 'Зүүн',\n\t'--Not Set--': '--Тодорхойгүй--',\n\tSrc: 'Эх үүсвэр',\n\tTitle: 'Гарчиг',\n\tAlternative: 'Алтернатив текст',\n\tLink: 'Холбоос',\n\t'Open link in new tab': 'Холбоосыг шинэ хавтсанд нээх',\n\tImage: 'Зураг',\n\tfile: 'Файл',\n\t'Image properties': 'Зургийн үзүүлэлт',\n\tCancel: 'Цуцлах',\n\tOk: 'Ok',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Таны код HTML кодтой адил байна. HTML форматаар үргэлжлүүлэх үү?',\n\t'Paste as HTML': 'HTML байдлаар буулгах',\n\tKeep: 'Хадгалах',\n\tClean: 'Цэвэрлэх',\n\t'Insert as Text': 'Текст байдлаар нэмэх',\n\t'Word Paste Detected': 'Word байдлаар буулгасан байна',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Буулгасан агуулга Microsoft Word/Excel форматтай байна. Энэ форматыг хэвээр хадгалах уу эсвэл арилгах уу?',\n\t'Insert only Text': 'Зөвхөн текст оруулах',\n\t'File Browser': 'Файлын цонх',\n\t'Error on load list': 'Жагсаалт татах үед алдаа гарлаа',\n\t'Error on load folders': 'Хавтас татах үед алдаа гарлаа',\n\t'Are you sure?': 'Итгэлтэй байна уу?',\n\t'Enter Directory name': 'Хавтсын нэр оруулах',\n\t'Create directory': 'Хавтас үүсгэх',\n\t'type name': 'Нэр бичих',\n\t'Drop image': 'Зураг буулгах',\n\t'Drop file': 'Файл буулгах',\n\t'or click': 'эсвэл товш',\n\t'Alternative text': 'Алтернатив текст',\n\tBrowse: 'Үзэх',\n\tUpload: 'Байршуулах',\n\tBackground: 'Арын зураг',\n\tText: 'Текст',\n\tTop: 'Дээр',\n\tMiddle: 'Дунд',\n\tBottom: 'Доор',\n\t'Insert column before': 'Урд нь багана нэмэх',\n\t'Insert column after': 'Ард нь багана нэмэх',\n\t'Insert row above': 'Дээр нь мөр нэмэх',\n\t'Insert row below': 'Доор нь мөр нэмэх',\n\t'Delete table': 'Хүснэгт устгах',\n\t'Delete row': 'Мөр устгах',\n\t'Delete column': 'Багана устгах',\n\t'Empty cell': 'Нүд цэвэрлэх',\n\tDelete: 'Устгах',\n\t'Strike through': 'Дээгүүр зураас',\n\tUnderline: 'Доогуур зураас',\n\tBreak: 'Мөрийг таслах',\n\t'Search for': 'Хайх',\n\t'Replace with': 'Үүгээр солих',\n\tReplace: 'Солих',\n\tEdit: 'Засах',\n\t'Vertical align': 'Босоо эгнүүлэх',\n\t'Horizontal align': 'Хэвтээ эгнүүлэх',\n\tFilter: 'Шүүх',\n\t'Sort by changed': 'Сүүлд өөрчлөгдсөнөөр жагсаах',\n\t'Sort by name': 'Нэрээр жагсаах',\n\t'Sort by size': 'Хэмжээгээр жагсаах',\n\t'Add folder': 'Хавтас нэмэх',\n\tSplit: 'Задлах',\n\t'Split vertical': 'Баганаар задлах',\n\t'Split horizontal': 'Мөрөөр задлах',\n\tMerge: 'Нэгтгэх',\n\t'Add column': 'Багана нэмэх',\n\t'Add row': 'Мөр нэмэх',\n\tBorder: 'Хүрээ',\n\t'Embed code': 'Код оруулах',\n\tUpdate: 'Шинэчлэх',\n\tsuperscript: 'Дээд индекс',\n\tsubscript: 'Доод индекс',\n\t'Cut selection': 'Сонголтыг таслах',\n\tPaste: 'Буулгах',\n\t'Choose Content to Paste': 'Буулгах агуулгаа сонгоно уу',\n\t'Chars: %d': 'Тэмдэгт: %d',\n\t'Words: %d': 'Үг: %d',\n\tAll: 'Бүгдийг',\n\t'Select %s': 'Сонго: %s',\n\t'Select all': 'Бүгдийг сонго',\n\tsource: 'Эх үүсвэр',\n\tbold: 'Тод',\n\titalic: 'Налуу',\n\tbrush: 'Будах',\n\tlink: 'Холбоос',\n\tundo: 'Буцаах',\n\tredo: 'Дахих',\n\ttable: 'Хүснэгт',\n\timage: 'Зураг',\n\teraser: 'Баллуур',\n\tparagraph: 'Параграф',\n\tfontsize: 'Фонтын хэмжээ',\n\tvideo: 'Видео',\n\tfont: 'Фонт',\n\tabout: 'Тухай',\n\tprint: 'Хэвлэх',\n\tunderline: 'Доогуур зураас',\n\tstrikethrough: 'Дээгүүр зураас',\n\tindent: 'Догол нэмэх',\n\toutdent: 'Догол багасгах',\n\tfullsize: 'Бүтэн дэлгэц',\n\tshrink: 'Багасга',\n\thr: 'Хаалт',\n\tul: 'Тэмдэгт жагсаалт',\n\tol: 'Дугаарласан жагсаалт',\n\tcut: 'Таслах',\n\tselectall: 'Бүгдийг сонго',\n\t'Open link': 'Холбоос нээх',\n\t'Edit link': 'Холбоос засах',\n\t'No follow': 'Nofollow özelliği',\n\tUnlink: 'Холбоос салгах',\n\tEye: 'Нүд',\n\tpencil: 'Засах',\n\t' URL': 'URL',\n\tReset: 'Буцаах',\n\tSave: 'Хадгалах',\n\t'Save as ...': 'Өөрөөр хадгалах',\n\tResize: 'Хэмжээг өөрчил',\n\tCrop: 'Тайрах',\n\tWidth: 'Өргөн',\n\tHeight: 'Өндөр',\n\t'Keep Aspect Ratio': 'Харьцааг хадгал',\n\tYes: 'Тийм',\n\tNo: 'Үгүй',\n\tRemove: 'Арилга',\n\tSelect: 'Сонго',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Та зөвхөн өөрийн зургуудаа янзлах боломжтой. Энэ зургийг өөр лүүгээ татмаар байна уу?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Зургийг хост руу амжилттай хадгалсан',\n\tpalette: 'Палет',\n\t'There are no files': 'Энд ямар нэг файл алга',\n\tRename: 'Шинээр нэрлэх',\n\t'Enter new name': 'Шинэ нэр оруулна уу',\n\tpreview: 'Урьдчилан харах',\n\tdownload: 'Татах',\n\t'Paste from clipboard': 'Самбараас хуулах ',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Энэ вэб хөтчөөс самбарт хандах эрх алга.',\n\t'Copy selection': 'Сонголтыг хуул',\n\tcopy: 'Хуулах',\n\t'Border radius': 'Хүрээний радиус',\n\t'Show all': 'Бүгдийг харуулах',\n\tApply: 'Хэрэгжүүл',\n\t'Please fill out this field': 'Энэ талбарыг бөглөнө үү',\n\t'Please enter a web address': 'Вэб хаягаа оруулна уу',\n\tDefault: 'Үндсэн',\n\tCircle: 'Дугуй',\n\tDot: 'Цэг',\n\tQuadrate: 'Дөрвөлжин',\n\tFind: 'Хайх',\n\t'Find Previous': 'Өмнөхийг ол',\n\t'Find Next': 'Дараагийнхийг ол',\n\t'Insert className': 'Бүлгийн нэрээ оруулна уу',\n\t'Press Alt for custom resizing':\n\t\t'Хэмжээсийг шинээр өөчрлөхийн тулд Alt товчин дээр дарна уу'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Begin met typen..',\n\tAdvanced: 'Geavanceerd',\n\t'About Jodit': 'Over Jodit',\n\t'Jodit Editor': 'Jodit Editor',\n\t'Free Non-commercial Version': 'Gratis niet-commerciële versie',\n\t\"Jodit User's Guide\": 'Jodit gebruikershandleiding',\n\t'contains detailed help for using':\n\t\t'bevat gedetailleerde informatie voor gebruik.',\n\t'For information about the license, please go to our website:':\n\t\t'Voor informatie over de licentie, ga naar onze website:',\n\t'Buy full version': 'Volledige versie kopen',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Alle rechten voorbehouden.',\n\tAnchor: 'Anker',\n\t'Open in new tab': 'Open in nieuwe tab',\n\t'Open in fullsize': 'Editor in volledig scherm openen',\n\t'Clear Formatting': 'Opmaak verwijderen',\n\t'Fill color or set the text color': 'Vulkleur of tekstkleur aanpassen',\n\tRedo: 'Opnieuw',\n\tUndo: 'Ongedaan maken',\n\tBold: 'Vet',\n\tItalic: 'Cursief',\n\t'Insert Unordered List': 'Geordende list invoegen',\n\t'Insert Ordered List': 'Ongeordende lijst invoegen',\n\t'Align Center': 'Centreren',\n\t'Align Justify': 'Uitlijnen op volledige breedte',\n\t'Align Left': 'Links uitlijnen',\n\t'Align Right': 'Rechts uitlijnen',\n\t'Insert Horizontal Line': 'Horizontale lijn invoegen',\n\t'Insert Image': 'Afbeelding invoegen',\n\t'Insert file': 'Bestand invoegen',\n\t'Insert youtube/vimeo video': 'Youtube/Vimeo video invoegen',\n\t'Insert link': 'Link toevoegen',\n\t'Font size': 'Tekstgrootte',\n\t'Font family': 'Lettertype',\n\t'Insert format block': 'Format blok invoegen',\n\tNormal: 'Normaal',\n\t'Heading 1': 'Koptekst 1',\n\t'Heading 2': 'Koptekst 2',\n\t'Heading 3': 'Koptekst 3',\n\t'Heading 4': 'Koptekst 4',\n\tQuote: 'Citaat',\n\tCode: 'Code',\n\tInsert: 'Invoegen',\n\t'Insert table': 'Tabel invoegen',\n\t'Decrease Indent': 'Inspringing verkleinen',\n\t'Increase Indent': 'Inspringing vergroten',\n\t'Select Special Character': 'Symbool selecteren',\n\t'Insert Special Character': 'Symbool invoegen',\n\t'Paint format': 'Opmaak kopieren',\n\t'Change mode': 'Modus veranderen',\n\tMargins: 'Marges',\n\ttop: 'Boven',\n\tright: 'Rechts',\n\tbottom: 'Onder',\n\tleft: 'Links',\n\tStyles: 'CSS styles',\n\tClasses: 'CSS classes',\n\tAlign: 'Uitlijning',\n\tRight: 'Rechts',\n\tCenter: 'Gecentreerd',\n\tLeft: 'Links',\n\t'--Not Set--': '--Leeg--',\n\tSrc: 'Src',\n\tTitle: 'Titel',\n\tAlternative: 'Alternatieve tekst',\n\tLink: 'Link',\n\t'Open link in new tab': 'Link in nieuwe tab openen',\n\tImage: 'Afbeelding',\n\tfile: 'Bestand',\n\t'Image properties': 'Afbeeldingseigenschappen',\n\tCancel: 'Annuleren',\n\tOk: 'OK',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Deze code lijkt op HTML. Als HTML behouden?',\n\t'Paste as HTML': 'Invoegen als HTML',\n\tKeep: 'Origineel behouden',\n\tClean: 'Opschonen',\n\t'Insert as Text': 'Als tekst invoegen',\n\t'Word Paste Detected': 'Word-tekst gedetecteerd',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'De geplakte tekst is afkomstig van een Microsoft Word/Excel document. Wil je de opmaak behouden of opschonen?',\n\t'Insert only Text': 'Als onopgemaakte tekst invoegen',\n\t'File Browser': 'Bestandsbrowser',\n\t'Error on load list': 'Fout bij het laden van de lijst',\n\t'Error on load folders': 'Fout bij het laden van de mappenlijst',\n\t'Are you sure?': 'Weet je het zeker?',\n\t'Enter Directory name': 'Geef de map een naam',\n\t'Create directory': 'Map aanmaken',\n\t'type name': 'Type naam',\n\t'Drop image': 'Sleep hier een afbeelding naartoe',\n\t'Drop file': 'Sleep hier een bestand naartoe',\n\t'or click': 'of klik',\n\t'Alternative text': 'Alternatieve tekst',\n\tBrowse: 'Bladeren',\n\tUpload: 'Uploaden',\n\tBackground: 'Achtergrond',\n\tText: 'Tekst',\n\tTop: 'Boven',\n\tMiddle: 'Midden',\n\tBottom: 'Onder',\n\t'Insert column before': 'Kolom invoegen (voor)',\n\t'Insert column after': 'Kolom invoegen (na)',\n\t'Insert row above': 'Rij invoegen (boven)',\n\t'Insert row below': 'Rij invoegen (onder)',\n\t'Delete table': 'Tabel verwijderen',\n\t'Delete row': 'Rij verwijderen',\n\t'Delete column': 'Kolom verwijderen',\n\t'Empty cell': 'Cel leegmaken',\n\tDelete: 'Verwijderen',\n\t'Strike through': 'Doorstrepen',\n\tUnderline: 'Onderstrepen',\n\tBreak: 'Enter',\n\t'Search for': 'Zoek naar',\n\t'Replace with': 'Vervangen door',\n\tReplace: 'Vervangen',\n\tEdit: 'Bewerken',\n\t'Vertical align': 'Verticaal uitlijnen',\n\t'Horizontal align': 'Horizontaal uitlijnen',\n\tFilter: 'Filteren',\n\t'Sort by changed': 'Sorteren op wijzigingsdatum',\n\t'Sort by name': 'Sorteren op naam',\n\t'Sort by size': 'Sorteren op grootte',\n\t'Add folder': 'Map toevoegen',\n\tSplit: 'Splitsen',\n\t'Split vertical': 'Verticaal splitsen',\n\t'Split horizontal': 'Horizontaal splitsen',\n\tMerge: 'Samenvoegen',\n\t'Add column': 'Kolom toevoegen',\n\t'Add row': 'Rij toevoegen',\n\tBorder: 'Rand',\n\t'Embed code': 'Embed code',\n\tUpdate: 'Updaten',\n\tsuperscript: 'Superscript',\n\tsubscript: 'Subscript',\n\t'Cut selection': 'Selectie knippen',\n\tPaste: 'Plakken',\n\t'Choose Content to Paste': 'Kies content om te plakken',\n\t'Chars: %d': 'Tekens: %d',\n\t'Words: %d': 'Woorden: %d',\n\tAll: 'Alles',\n\t'Select %s': 'Selecteer: %s',\n\t'Select all': 'Selecteer alles',\n\tsource: 'Broncode',\n\tbold: 'vet',\n\titalic: 'cursief',\n\tbrush: 'kwast',\n\tlink: 'link',\n\tundo: 'ongedaan maken',\n\tredo: 'opnieuw',\n\ttable: 'tabel',\n\timage: 'afbeelding',\n\teraser: 'gum',\n\tparagraph: 'paragraaf',\n\tfontsize: 'lettergrootte',\n\tvideo: 'video',\n\tfont: 'lettertype',\n\tabout: 'over',\n\tprint: 'afdrukken',\n\tunderline: 'onderstreept',\n\tstrikethrough: 'doorgestreept',\n\tindent: 'inspringen',\n\toutdent: 'minder inspringen',\n\tfullsize: 'volledige grootte',\n\tshrink: 'kleiner maken',\n\thr: 'horizontale lijn',\n\tul: 'lijst',\n\tol: 'genummerde lijst',\n\tcut: 'knip',\n\tselectall: 'alles selecteren',\n\t'Open link': 'Link openen',\n\t'Edit link': 'Link aanpassen',\n\t'No follow': 'Niet volgen',\n\tUnlink: 'link verwijderen',\n\tEye: 'Recensie',\n\tpencil: 'Om te bewerken',\n\t' URL': ' URL',\n\tReset: 'Herstellen',\n\tSave: 'Opslaan',\n\t'Save as ...': 'Opslaan als ...',\n\tResize: 'Grootte aanpassen',\n\tCrop: 'Bijknippen',\n\tWidth: 'Breedte',\n\tHeight: 'Hoogte',\n\t'Keep Aspect Ratio': 'Verhouding behouden',\n\tYes: 'Ja',\n\tNo: 'Nee',\n\tRemove: 'Verwijderen',\n\tSelect: 'Selecteren',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Je kunt alleen je eigen afbeeldingen aanpassen. Deze afbeelding downloaden?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'De afbeelding is succesvol geüploadet!',\n\tpalette: 'Palette',\n\t'There are no files': 'Er zijn geen bestanden in deze map.',\n\tRename: 'Hernoemen',\n\t'Enter new name': 'Voer een nieuwe naam in',\n\tpreview: 'Voorvertoning',\n\tdownload: 'Download',\n\t'Paste from clipboard': 'Plakken van klembord',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Uw browser ondersteunt geen directe toegang tot het klembord.',\n\t'Copy selection': 'Selectie kopiëren',\n\tcopy: 'kopiëren',\n\t'Border radius': 'Border radius',\n\t'Show all': 'Toon alle',\n\tApply: 'Toepassen',\n\t'Please fill out this field': 'Vul dit veld in',\n\t'Please enter a web address': 'Voer een webadres in',\n\tDefault: 'Standaard',\n\tCircle: 'Cirkel',\n\tDot: 'Punt',\n\tQuadrate: 'Kwadraat',\n\tFind: 'Zoeken',\n\t'Find Previous': 'Vorige Zoeken',\n\t'Find Next': 'Volgende Zoeken',\n\t'Insert className': 'Voeg de klassenaam in',\n\t'Press Alt for custom resizing': 'Druk op Alt voor aangepaste grootte'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Napisz coś',\n\tAdvanced: 'Zaawansowane',\n\t'About Jodit': 'O Jodit',\n\t'Jodit Editor': 'Edytor Jodit',\n\t\"Jodit User's Guide\": 'Instrukcja Jodit',\n\t'contains detailed help for using':\n\t\t'zawiera szczegółowe informacje dotyczące użytkowania.',\n\t'For information about the license, please go to our website:':\n\t\t'Odwiedź naszą stronę, aby uzyskać więcej informacji na temat licencji:',\n\t'Buy full version': 'Zakup pełnej wersji',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Wszystkie prawa zastrzeżone.',\n\tAnchor: 'Kotwica',\n\t'Open in new tab': 'Otwórz w nowej zakładce',\n\t'Open in fullsize': 'Otwórz edytor w pełnym rozmiarze',\n\t'Clear Formatting': 'Wyczyść formatowanie',\n\t'Fill color or set the text color':\n\t\t'Kolor wypełnienia lub ustaw kolor tekstu',\n\tRedo: 'Ponów',\n\tUndo: 'Cofnij',\n\tBold: 'Pogrubienie',\n\tItalic: 'Kursywa',\n\t'Insert Unordered List': 'Wstaw listę wypunktowaną',\n\t'Insert Ordered List': 'Wstaw listę numeryczną',\n\t'Align Center': 'Wyśrodkuj',\n\t'Align Justify': 'Wyjustuj',\n\t'Align Left': 'Wyrównaj do lewej',\n\t'Align Right': 'Wyrównaj do prawej',\n\t'Insert Horizontal Line': 'Wstaw linię poziomą',\n\t'Insert Image': 'Wstaw grafikę',\n\t'Insert file': 'Wstaw plik',\n\t'Insert youtube/vimeo video': 'Wstaw film Youtube/vimeo',\n\t'Insert link': 'Wstaw link',\n\t'Font size': 'Rozmiar tekstu',\n\t'Font family': 'Krój czcionki',\n\t'Insert format block': 'Wstaw formatowanie',\n\tNormal: 'Normalne',\n\t'Heading 1': 'Nagłówek 1',\n\t'Heading 2': 'Nagłówek 2',\n\t'Heading 3': 'Nagłówek 3',\n\t'Heading 4': 'Nagłówek 4',\n\tQuote: 'Cytat',\n\tCode: 'Kod',\n\tInsert: 'Wstaw',\n\t'Insert table': 'Wstaw tabelę',\n\t'Decrease Indent': 'Zmniejsz wcięcie',\n\t'Increase Indent': 'Zwiększ wcięcie',\n\t'Select Special Character': 'Wybierz znak specjalny',\n\t'Insert Special Character': 'Wstaw znak specjalny',\n\t'Paint format': 'Malarz formatów',\n\t'Change mode': 'Zmień tryb',\n\tMargins: 'Marginesy',\n\ttop: 'Górny',\n\tright: 'Prawy',\n\tbottom: 'Dolny',\n\tleft: 'Levy',\n\tStyles: 'Style CSS',\n\tClasses: 'Klasy CSS',\n\tAlign: 'Wyrównanie',\n\tRight: 'Prawa',\n\tCenter: 'środek',\n\tLeft: 'Lewa',\n\t'--Not Set--': 'brak',\n\tSrc: 'Źródło',\n\tTitle: 'Tytuł',\n\tAlternative: 'Tekst alternatywny',\n\tLink: 'Link',\n\t'Open link in new tab': 'Otwórz w nowej zakładce',\n\tImage: 'Grafika',\n\tfile: 'Plik',\n\t'Image properties': 'Właściwości grafiki',\n\tCancel: 'Anuluj',\n\tOk: 'OK',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Twój kod wygląda jak HTML. Zachować HTML?',\n\t'Paste as HTML': 'Wkleić jako HTML?',\n\tKeep: 'Oryginalny tekst',\n\tClean: 'Wyczyść',\n\t'Insert as Text': 'Wstaw jako tekst',\n\t'Word Paste Detected': 'Wykryto tekst w formacie Word',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Wklejany tekst pochodzi z dokumentu Microsoft Word/Excel. Chcesz zachować ten format czy wyczyścić go? ',\n\t'Insert only Text': 'Wstaw tylko treść',\n\t'File Browser': 'Przeglądarka plików',\n\t'Error on load list': 'Błąd ładowania listy plików',\n\t'Error on load folders': 'Błąd ładowania folderów',\n\t'Are you sure?': 'Czy jesteś pewien?',\n\t'Enter Directory name': 'Wprowadź nazwę folderu',\n\t'Create directory': 'Utwórz folder',\n\t'type name': 'wprowadź nazwę',\n\t'Drop image': 'Upuść plik graficzny',\n\t'Drop file': 'Upuść plik',\n\t'or click': 'lub kliknij tu',\n\t'Alternative text': 'Tekst alternatywny',\n\tBrowse: 'Przeglądaj',\n\tUpload: 'Wczytaj',\n\tBackground: 'Tło',\n\tText: 'Treść',\n\tTop: 'Góra',\n\tMiddle: 'Środek',\n\tBottom: 'Dół',\n\t'Insert column before': 'Wstaw kolumnę przed',\n\t'Insert column after': 'Wstaw kolumnę po',\n\t'Insert row above': 'Wstaw wiersz przed',\n\t'Insert row below': 'Wstaw wiersz po',\n\t'Delete table': 'Usuń tabelę',\n\t'Delete row': 'Usuń wiersz',\n\t'Delete column': 'Usuń kolumnę',\n\t'Empty cell': 'Wyczyść komórkę',\n\tDelete: 'Usuń',\n\t'Strike through': 'Przekreślenie',\n\tUnderline: 'Podkreślenie',\n\tBreak: 'Przerwa',\n\t'Search for': 'Szukaj',\n\t'Replace with': 'Zamień na',\n\tReplace: 'Wymienić',\n\tEdit: 'Edytuj',\n\t'Vertical align': 'Wyrównywanie w pionie',\n\t'Horizontal align': 'Wyrównywanie w poziomie',\n\tFilter: 'Filtruj',\n\t'Sort by changed': 'Sortuj wg zmiany',\n\t'Sort by name': 'Sortuj wg nazwy',\n\t'Sort by size': 'Sortuj wg rozmiaru',\n\t'Add folder': 'Dodaj folder',\n\t'Split vertical': 'Podziel w pionie',\n\t'Split horizontal': 'Podziel w poziomie',\n\tSplit: 'Podziel',\n\tMerge: 'Scal',\n\t'Add column': 'Dodaj kolumnę',\n\t'Add row': 'Dodaj wiersz',\n\tBorder: 'Obramowanie',\n\t'Embed code': 'Wstaw kod',\n\tUpdate: 'Aktualizuj',\n\tsuperscript: 'indeks górny',\n\tsubscript: 'index dolny',\n\t'Cut selection': 'Wytnij zaznaczenie',\n\tPaste: 'Wklej',\n\t'Choose Content to Paste': 'Wybierz zawartość do wklejenia',\n\t'Chars: %d': 'Znaki: %d',\n\t'Words: %d': 'Słowa: %d',\n\tAll: 'Wszystko',\n\t'Select %s': 'Wybierz: %s',\n\t'Select all': 'Wybierz wszystko',\n\tsource: 'HTML',\n\tbold: 'pogrubienie',\n\titalic: 'kursywa',\n\tbrush: 'pędzel',\n\tlink: 'link',\n\tundo: 'cofnij',\n\tredo: 'ponów',\n\ttable: 'tabela',\n\timage: 'grafika',\n\teraser: 'wyczyść',\n\tparagraph: 'akapit',\n\tfontsize: 'rozmiar czcionki',\n\tvideo: 'wideo',\n\tfont: 'czcionka',\n\tabout: 'O programie',\n\tprint: 'drukuj',\n\tunderline: 'podkreślenie',\n\tstrikethrough: 'przekreślenie',\n\tindent: 'wcięcie',\n\toutdent: 'wycięcie',\n\tfullsize: 'pełen rozmiar',\n\tshrink: 'przytnij',\n\thr: 'linia pozioma',\n\tul: 'lista',\n\tol: 'lista numerowana',\n\tcut: 'wytnij',\n\tselectall: 'zaznacz wszystko',\n\t'Open link': 'otwórz link',\n\t'Edit link': 'edytuj link',\n\t'No follow': 'Atrybut no-follow',\n\tUnlink: 'Usuń link',\n\tEye: 'szukaj',\n\tpencil: 'edytuj',\n\t' URL': 'URL',\n\tReset: 'wyczyść',\n\tSave: 'zapisz',\n\t'Save as ...': 'zapisz jako',\n\tResize: 'Zmień rozmiar',\n\tCrop: 'Przytnij',\n\tWidth: 'Szerokość',\n\tHeight: 'Wysokość',\n\t'Keep Aspect Ratio': 'Zachowaj proporcje',\n\tYes: 'Tak',\n\tNo: 'Nie',\n\tRemove: 'Usuń',\n\tSelect: 'Wybierz',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Możesz edytować tylko swoje grafiki. Czy chcesz pobrać tą grafikę?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Grafika została pomyślnienie dodana na serwer',\n\tpalette: 'Paleta',\n\t'There are no files': 'Brak plików.',\n\tRename: 'zmień nazwę',\n\t'Enter new name': 'Wprowadź nową nazwę',\n\tpreview: 'podgląd',\n\tdownload: 'pobierz',\n\t'Paste from clipboard': 'Wklej ze schowka',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Twoja przeglądarka nie obsługuje schowka',\n\t'Copy selection': 'Kopiuj zaznaczenie',\n\tcopy: 'kopiuj',\n\t'Border radius': 'Zaokrąglenie krawędzi',\n\t'Show all': 'Pokaż wszystkie',\n\tApply: 'Zastosuj',\n\t'Please fill out this field': 'Proszę wypełnić to pole',\n\t'Please enter a web address': 'Proszę, wpisz adres sieci web',\n\tDefault: 'Domyślnie',\n\tCircle: 'Koło',\n\tDot: 'Punkt',\n\tQuadrate: 'Kwadrat',\n\tFind: 'Znaleźć',\n\t'Find Previous': 'Znaleźć Poprzednie',\n\t'Find Next': 'Znajdź Dalej',\n\t'Insert className': 'Wstaw nazwę zajęć',\n\t'Press Alt for custom resizing': 'Naciśnij Alt, aby zmienić rozmiar'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Escreva algo...',\n\tAdvanced: 'Avançado',\n\t'About Jodit': 'Sobre o Jodit',\n\t'Jodit Editor': 'Editor Jodit',\n\t\"Jodit User's Guide\": 'Guia de usuário Jodit',\n\t'contains detailed help for using': 'contém ajuda detalhada para o uso.',\n\t'For information about the license, please go to our website:':\n\t\t'Para informação sobre a licença, por favor visite nosso site:',\n\t'Buy full version': 'Compre a versão completa',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Todos os direitos reservados.',\n\tAnchor: 'Link',\n\t'Open in new tab': 'Abrir em nova aba',\n\t'Open in fullsize': 'Abrir editor em tela cheia',\n\t'Clear Formatting': 'Limpar formatação',\n\t'Fill color or set the text color': 'Cor de preenchimento ou cor do texto',\n\tRedo: 'Refazer',\n\tUndo: 'Desfazer',\n\tBold: 'Negrito',\n\tItalic: 'Itálico',\n\t'Insert Unordered List': 'Inserir lista não ordenada',\n\t'Insert Ordered List': 'Inserir lista ordenada',\n\t'Align Center': 'Centralizar',\n\t'Align Justify': 'Justificar',\n\t'Align Left': 'Alinhar à Esquerda',\n\t'Align Right': 'Alinhar à Direita',\n\t'Insert Horizontal Line': 'Inserir linha horizontal',\n\t'Insert Image': 'Inserir imagem',\n\t'Insert file': 'Inserir arquivo',\n\t'Insert youtube/vimeo video': 'Inserir vídeo do Youtube/vimeo',\n\t'Insert link': 'Inserir link',\n\t'Font size': 'Tamanho da letra',\n\t'Font family': 'Fonte',\n\t'Insert format block': 'Inserir bloco',\n\tNormal: 'Normal',\n\t'Heading 1': 'Cabeçalho 1',\n\t'Heading 2': 'Cabeçalho 2',\n\t'Heading 3': 'Cabeçalho 3',\n\t'Heading 4': 'Cabeçalho 4',\n\tQuote: 'Citação',\n\tCode: 'Código',\n\tInsert: 'Inserir',\n\t'Insert table': 'Inserir tabela',\n\t'Decrease Indent': 'Diminuir recuo',\n\t'Increase Indent': 'Aumentar recuo',\n\t'Select Special Character': 'Selecionar caractere especial',\n\t'Insert Special Character': 'Inserir caractere especial',\n\t'Paint format': 'Copiar formato',\n\t'Change mode': 'Mudar modo',\n\tMargins: 'Margens',\n\ttop: 'cima',\n\tright: 'direta',\n\tbottom: 'baixo',\n\tleft: 'esquerda',\n\tStyles: 'Estilos CSS',\n\tClasses: 'Classes CSS',\n\tAlign: 'Alinhamento',\n\tRight: 'Direita',\n\tCenter: 'Centro',\n\tLeft: 'Esquerda',\n\t'--Not Set--': '--Não Estabelecido--',\n\tSrc: 'Fonte',\n\tTitle: 'Título',\n\tAlternative: 'Texto Alternativo',\n\tLink: 'Link',\n\t'Open link in new tab': 'Abrir link em nova aba',\n\tImage: 'Imagem',\n\tfile: 'Arquivo',\n\t'Image properties': 'Propriedades da imagem',\n\tCancel: 'Cancelar',\n\tOk: 'Ok',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Seu código é similar ao HTML. Manter como HTML?',\n\t'Paste as HTML': 'Colar como HTML?',\n\tKeep: 'Manter',\n\tClean: 'Limpar',\n\t'Insert as Text': 'Inserir como Texto',\n\t'Word Paste Detected': 'Colado do Word Detectado',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'O conteúdo colado veio de um documento Microsoft Word/Excel. Você deseja manter o formato ou limpa-lo?',\n\t'Insert only Text': 'Inserir somente o Texto',\n\t'File Browser': 'Procurar arquivo',\n\t'Error on load list': 'Erro ao carregar a lista',\n\t'Error on load folders': 'Erro ao carregar as pastas',\n\t'Are you sure?': 'Você tem certeza?',\n\t'Enter Directory name': 'Escreva o nome da pasta',\n\t'Create directory': 'Criar pasta',\n\t'type name': 'Escreva seu nome',\n\t'Drop image': 'Soltar imagem',\n\t'Drop file': 'Soltar arquivo',\n\t'or click': 'ou clique',\n\t'Alternative text': 'Texto alternativo',\n\tBrowse: 'Explorar',\n\tUpload: 'Upload',\n\tBackground: 'Fundo',\n\tText: 'Texto',\n\tTop: 'Cima',\n\tMiddle: 'Meio',\n\tBottom: 'Baixo',\n\t'Insert column before': 'Inserir coluna antes',\n\t'Insert column after': 'Inserir coluna depois',\n\t'Insert row above': 'Inserir linha acima',\n\t'Insert row below': 'Inserir linha abaixo',\n\t'Delete table': 'Excluir tabela',\n\t'Delete row': 'Excluir linha',\n\t'Delete column': 'Excluir coluna',\n\t'Empty cell': 'Limpar célula',\n\tDelete: 'Excluir',\n\t'Strike through': 'Tachado',\n\tUnderline: 'Sublinhar',\n\tBreak: 'Pausa',\n\t'Search for': 'Procurar por',\n\t'Replace with': 'Substituir com',\n\tReplace: 'Substituir',\n\tEdit: 'Editar',\n\t'Vertical align': 'Alinhamento vertical',\n\t'Horizontal align': 'Alinhamento horizontal',\n\tFilter: 'filtrar',\n\t'Sort by changed': 'Ordenar por modificação',\n\t'Sort by name': 'Ordenar por nome',\n\t'Sort by size': 'Ordenar por tamanho',\n\t'Add folder': 'Adicionar pasta',\n\tSplit: 'Dividir',\n\t'Split vertical': 'Dividir vertical',\n\t'Split horizontal': 'Dividir horizontal',\n\tMerge: 'Mesclar',\n\t'Add column': 'Adicionar coluna',\n\t'Add row': 'Adicionar linha',\n\tBorder: 'Borda',\n\t'Embed code': 'Incluir código',\n\tUpdate: 'Atualizar',\n\tsuperscript: 'sobrescrito',\n\tsubscript: 'subscrito',\n\t'Cut selection': 'Cortar seleção',\n\tPaste: 'Colar',\n\t'Choose Content to Paste': 'Escolher conteúdo para colar',\n\t'Chars: %d': 'Caracteres: %d',\n\t'Words: %d': 'Palavras: %d',\n\tAll: 'Tudo',\n\t'Select %s': 'Selecionar: %s',\n\t'Select all': 'Selecionar tudo',\n\tsource: 'HTML',\n\tbold: 'negrito',\n\titalic: 'itálico',\n\tbrush: 'pincel',\n\tlink: 'link',\n\tundo: 'desfazer',\n\tredo: 'refazer',\n\ttable: 'tabela',\n\timage: 'imagem',\n\teraser: 'apagar',\n\tparagraph: 'parágrafo',\n\tfontsize: 'tamanho da letra',\n\tvideo: 'vídeo',\n\tfont: 'fonte',\n\tabout: 'Sobre de',\n\tprint: 'Imprimir',\n\tunderline: 'sublinhar',\n\tstrikethrough: 'tachado',\n\tindent: 'recuar',\n\toutdent: 'diminuir recuo',\n\tfullsize: 'Tamanho completo',\n\tshrink: 'diminuir',\n\thr: 'linha horizontal',\n\tul: 'lista não ordenada',\n\tol: 'lista ordenada',\n\tcut: 'Cortar',\n\tselectall: 'Selecionar tudo',\n\t'Open link': 'Abrir link',\n\t'Edit link': 'Editar link',\n\t'No follow': 'Não siga',\n\tUnlink: 'Remover link',\n\tEye: 'Visualizar',\n\tpencil: 'Editar',\n\t' URL': 'URL',\n\tReset: 'Resetar',\n\tSave: 'Salvar',\n\t'Save as ...': 'Salvar como...',\n\tResize: 'Redimensionar',\n\tCrop: 'Recortar',\n\tWidth: 'Largura',\n\tHeight: 'Altura',\n\t'Keep Aspect Ratio': 'Manter a proporção',\n\tYes: 'Sim',\n\tNo: 'Não',\n\tRemove: 'Remover',\n\tSelect: 'Selecionar',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Você só pode editar suas próprias imagens. Baixar essa imagem pro servidor?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'A imagem foi enviada com sucesso para o servidor!',\n\tpalette: 'Palette',\n\t'There are no files': 'Não há arquivos nesse diretório.',\n\tRename: 'Húngara',\n\t'Enter new name': 'Digite um novo nome',\n\tpreview: 'preview',\n\tdownload: 'Baixar',\n\t'Paste from clipboard': 'Colar da área de transferência',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'O seu navegador não oferece suporte a acesso direto para a área de transferência.',\n\t'Copy selection': 'Selecção de cópia',\n\tcopy: 'cópia',\n\t'Border radius': 'Border radius',\n\t'Show all': 'Mostrar todos os',\n\tApply: 'Aplicar',\n\t'Please fill out this field': 'Por favor, preencha este campo',\n\t'Please enter a web address': 'Por favor introduza um endereço web',\n\tDefault: 'Padrão',\n\tCircle: 'Círculo',\n\tDot: 'Ponto',\n\tQuadrate: 'Quadro',\n\t'Lower Alpha': 'Letra Minúscula',\n\t'Lower Greek': 'Grego Minúscula',\n\t'Lower Roman': 'Romano Minúscula',\n\t'Upper Alpha': 'Letra Maiúscula',\n\t'Upper Roman': 'Romano Maiúscula',\n\tFind: 'Encontrar',\n\t'Find Previous': 'Encontrar Anteriores',\n\t'Find Next': 'Localizar Próxima',\n\t'Insert className': 'Insira o nome da classe',\n\t'Press Alt for custom resizing':\n\t\t'Pressione Alt para redimensionamento personalizado'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Напишите что-либо',\n\t'About Jodit': 'О Jodit',\n\t'Jodit Editor': 'Редактор Jodit',\n\t\"Jodit User's Guide\": 'Jodit Руководство пользователя',\n\t'contains detailed help for using':\n\t\t'содержит детальную информацию по использованию',\n\t'For information about the license, please go to our website:':\n\t\t'Для получения сведений о лицензии , пожалуйста, перейдите на наш сайт:',\n\t'Buy full version': 'Купить полную версию',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Авторские права © XDSoft.net - Чупурнов Валерий. Все права защищены.',\n\tAnchor: 'Анкор',\n\t'Open in new tab': 'Открывать ссылку в новой вкладке',\n\t'Open in fullsize': 'Открыть редактор в полном размере',\n\t'Clear Formatting': 'Очистить форматирование',\n\t'Fill color or set the text color': 'Цвет заливки или цвет текста',\n\tRedo: 'Повтор',\n\tUndo: 'Отмена',\n\tBold: 'Жирный',\n\tItalic: 'Наклонный',\n\t'Insert Unordered List': 'Вставка маркированного списка',\n\t'Insert Ordered List': 'Вставить нумерованный список',\n\t'Align Center': 'Выровнять по центру',\n\t'Align Justify': 'Выровнять по ширине',\n\t'Align Left': 'Выровнять по левому краю',\n\t'Align Right': 'Выровнять по правому краю',\n\t'Insert Horizontal Line': 'Вставить горизонтальную линию',\n\t'Insert Image': 'Вставить изображение',\n\t'Insert file': 'Вставить файл',\n\t'Insert youtube/vimeo video': 'Вставьте видео',\n\t'Insert link': 'Вставить ссылку',\n\t'Font size': 'Размер шрифта',\n\t'Font family': 'Шрифт',\n\t'Insert format block': 'Вставить блочный элемент',\n\tNormal: 'Нормальный текст',\n\t'Heading 1': 'Заголовок 1',\n\t'Heading 2': 'Заголовок 2',\n\t'Heading 3': 'Заголовок 3',\n\t'Heading 4': 'Заголовок 4',\n\tQuote: 'Цитата',\n\tCode: 'Код',\n\tInsert: 'Вставить',\n\t'Insert table': 'Вставить таблицу',\n\t'Decrease Indent': 'Уменьшить отступ',\n\t'Increase Indent': 'Увеличить отступ',\n\t'Select Special Character': 'Выберите специальный символ',\n\t'Insert Special Character': 'Вставить специальный символ',\n\t'Paint format': 'Формат краски',\n\t'Change mode': 'Источник',\n\tMargins: 'Отступы',\n\ttop: 'сверху',\n\tright: 'справа',\n\tbottom: 'снизу',\n\tleft: 'слева',\n\tStyles: 'Стили',\n\tClasses: 'Классы',\n\tAlign: 'Выравнивание',\n\tRight: 'По правому краю',\n\tCenter: 'По центру',\n\tLeft: 'По левому краю',\n\t'--Not Set--': '--не устанавливать--',\n\tSrc: 'src',\n\tTitle: 'Заголовок',\n\tAlternative: 'Альтернативный текст (alt)',\n\tLink: 'Ссылка',\n\t'Open link in new tab': 'Открывать ссылку в новом окне',\n\tfile: 'Файл',\n\tAdvanced: 'Расширенные',\n\t'Image properties': 'Свойства изображения',\n\tCancel: 'Отмена',\n\tOk: 'Ок',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Ваш текст, который вы пытаетесь вставить похож на HTML. Вставить его как HTML?',\n\t'Paste as HTML': 'Вставить как HTML?',\n\tKeep: 'Сохранить оригинал',\n\tClean: 'Почистить',\n\t'Insert as Text': 'Вставить как текст',\n\t'Insert only Text': 'Вставить только текст',\n\t'Word Paste Detected': 'Возможно это фрагмент Word или Excel',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Контент который вы вставляете поступает из документа Microsoft Word / Excel. Вы хотите сохранить формат или очистить его?',\n\t'File Browser': 'Браузер файлов',\n\t'Error on load list': 'Ошибка при загрузке списка изображений',\n\t'Error on load folders': 'Ошибка при загрузке списка директорий',\n\t'Are you sure?': 'Вы уверены?',\n\t'Enter Directory name': 'Введите название директории',\n\t'Create directory': 'Создать директорию',\n\t'type name': 'введите название',\n\t'Drop image': 'Перетащите сюда изображение',\n\t'Drop file': 'Перетащите сюда файл',\n\t'or click': 'или нажмите',\n\t'Alternative text': 'Альтернативный текст',\n\tBrowse: 'Сервер',\n\tUpload: 'Загрузка',\n\tBackground: 'Фон',\n\tText: 'Текст',\n\tTop: ' К верху',\n\tMiddle: 'По середине',\n\tBottom: 'К низу',\n\t'Insert column before': 'Вставить столбец до',\n\t'Insert column after': 'Вставить столбец после',\n\t'Insert row above': 'Вставить ряд выше',\n\t'Insert row below': 'Вставить ряд ниже',\n\t'Delete table': 'Удалить таблицу',\n\t'Delete row': 'Удалять ряд',\n\t'Delete column': 'Удалить столбец',\n\t'Empty cell': 'Очистить ячейку',\n\tsource: 'HTML',\n\tbold: 'жирный',\n\titalic: 'курсив',\n\tbrush: 'заливка',\n\tlink: 'ссылка',\n\tundo: 'отменить',\n\tredo: 'повторить',\n\ttable: 'таблица',\n\timage: 'Изображение',\n\teraser: 'очистить',\n\tparagraph: 'параграф',\n\tfontsize: 'размер шрифта',\n\tvideo: 'видео',\n\tfont: 'шрифт',\n\tabout: 'о редакторе',\n\tprint: 'печать',\n\tunderline: 'подчеркнутый',\n\tstrikethrough: 'перечеркнутый',\n\tindent: 'отступ',\n\toutdent: 'выступ',\n\tfullsize: 'во весь экран',\n\tshrink: 'обычный размер',\n\thr: 'линия',\n\tul: 'Список',\n\tol: 'Нумерованный список',\n\tcut: 'Вырезать',\n\tselectall: 'Выделить все',\n\t'Embed code': 'Код',\n\t'Open link': 'Открыть ссылку',\n\t'Edit link': 'Редактировать ссылку',\n\t'No follow': 'Атрибут nofollow',\n\tUnlink: 'Убрать ссылку',\n\tEye: 'Просмотр',\n\tpencil: 'Редактировать',\n\tUpdate: 'Обновить',\n\t' URL': 'URL',\n\tEdit: 'Редактировать',\n\t'Horizontal align': 'Горизонтальное выравнивание',\n\tFilter: 'Фильтр',\n\t'Sort by changed': 'По изменению',\n\t'Sort by name': 'По имени',\n\t'Sort by size': 'По размеру',\n\t'Add folder': 'Добавить папку',\n\tReset: 'Восстановить',\n\tSave: 'Сохранить',\n\t'Save as ...': 'Сохранить как',\n\tResize: 'Изменить размер',\n\tCrop: 'Обрезать размер',\n\tWidth: 'Ширина',\n\tHeight: 'Высота',\n\t'Keep Aspect Ratio': 'Сохранять пропорции',\n\tYes: 'Да',\n\tNo: 'Нет',\n\tRemove: 'Удалить',\n\tSelect: 'Выделить',\n\t'Chars: %d': 'Символов: %d',\n\t'Words: %d': 'Слов: %d',\n\tAll: 'Выделить все',\n\t'Select %s': 'Выделить: %s',\n\t'Select all': 'Выделить все',\n\t'Vertical align': 'Вертикальное выравнивание',\n\tSplit: 'Разделить',\n\t'Split vertical': 'Разделить по вертикали',\n\t'Split horizontal': 'Разделить по горизонтали',\n\tMerge: 'Объединить в одну',\n\t'Add column': 'Добавить столбец',\n\t'Add row': 'Добавить строку',\n\tDelete: 'Удалить',\n\tBorder: 'Рамка',\n\t'License: %s': 'Лицензия: %s',\n\t'Strike through': 'Перечеркнуть',\n\tUnderline: 'Подчеркивание',\n\tsuperscript: 'верхний индекс',\n\tsubscript: 'индекс',\n\t'Cut selection': 'Вырезать',\n\tBreak: 'Разделитель',\n\t'Search for': 'Найти',\n\t'Replace with': 'Заменить на',\n\tReplace: 'Заменить',\n\tPaste: 'Вставить',\n\t'Choose Content to Paste': 'Выбрать контент для вставки',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Вы можете редактировать только свои собственные изображения. Загрузить это изображение на ваш сервер?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Изображение успешно загружено на сервер!',\n\tpalette: 'палитра',\n\t'There are no files': 'В данном каталоге нет файлов',\n\tRename: 'Переименовать',\n\t'Enter new name': 'Введите новое имя',\n\tpreview: 'Предпросмотр',\n\tdownload: 'Скачать',\n\t'Paste from clipboard': 'Вставить из буфера обмена',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Ваш браузер не поддерживает прямой доступ к буферу обмена.',\n\t'Copy selection': 'Скопировать выделенное',\n\tcopy: 'копия',\n\t'Border radius': 'Радиус границы',\n\t'Show all': 'Показать все',\n\tApply: 'Применить',\n\t'Please fill out this field': 'Пожалуйста, заполните это поле',\n\t'Please enter a web address': 'Пожалуйста, введите веб-адрес',\n\tDefault: 'По умолчанию',\n\tCircle: 'Круг',\n\tDot: 'Точка',\n\tQuadrate: 'Квадрат',\n\tFind: 'Найти',\n\t'Find Previous': 'Найти Предыдущие',\n\t'Find Next': 'Найти Далее',\n\t'Insert className': 'Вставить название класса',\n\t'Press Alt for custom resizing':\n\t\t'Нажмите Alt для изменения пользовательского размера'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Bir şeyler yaz',\n\tAdvanced: 'Gelişmiş',\n\t'About Jodit': 'Jodit Hakkında',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": 'Jodit Kullanım Kılavuzu',\n\t'contains detailed help for using': 'kullanım için detaylı bilgiler içerir',\n\t'For information about the license, please go to our website:':\n\t\t'Lisans hakkında bilgi için lütfen web sitemize gidin:',\n\t'Buy full version': 'Tam versiyonunu satın al',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. Tüm hakları saklıdır.',\n\tAnchor: 'Bağlantı',\n\t'Open in new tab': 'Yeni sekmede aç',\n\t'Open in fullsize': 'Editörü tam ekranda aç',\n\t'Clear Formatting': 'Stili temizle',\n\t'Fill color or set the text color': 'Renk doldur veya yazı rengi seç',\n\tRedo: 'Yinele',\n\tUndo: 'Geri Al',\n\tBold: 'Kalın',\n\tItalic: 'İtalik',\n\t'Insert Unordered List': 'Sırasız Liste Ekle',\n\t'Insert Ordered List': 'Sıralı Liste Ekle',\n\t'Align Center': 'Ortala',\n\t'Align Justify': 'Kenarlara Yasla',\n\t'Align Left': 'Sola Yasla',\n\t'Align Right': 'Sağa Yasla',\n\t'Insert Horizontal Line': 'Yatay Çizgi Ekle',\n\t'Insert Image': 'Resim Ekle',\n\t'Insert file': 'Dosya Ekle',\n\t'Insert youtube/vimeo video': 'Youtube/Vimeo Videosu Ekle',\n\t'Insert link': 'Bağlantı Ekle',\n\t'Font size': 'Font Boyutu',\n\t'Font family': 'Font Ailesi',\n\t'Insert format block': 'Blok Ekle',\n\tNormal: 'Normal',\n\t'Heading 1': 'Başlık 1',\n\t'Heading 2': 'Başlık 2',\n\t'Heading 3': 'Başlık 3',\n\t'Heading 4': 'Başlık 4',\n\tQuote: 'Alıntı',\n\tCode: 'Kod',\n\tInsert: 'Ekle',\n\t'Insert table': 'Tablo Ekle',\n\t'Decrease Indent': 'Girintiyi Azalt',\n\t'Increase Indent': 'Girintiyi Arttır',\n\t'Select Special Character': 'Özel Karakter Seç',\n\t'Insert Special Character': 'Özel Karakter Ekle',\n\t'Paint format': 'Resim Biçimi',\n\t'Change mode': 'Mod Değiştir',\n\tMargins: 'Boşluklar',\n\ttop: 'Üst',\n\tright: 'Sağ',\n\tbottom: 'Alt',\n\tleft: 'Sol',\n\tStyles: 'CSS Stilleri',\n\tClasses: 'CSS Sınıfları',\n\tAlign: 'Hizalama',\n\tRight: 'Sağ',\n\tCenter: 'Ortalı',\n\tLeft: 'Sol',\n\t'--Not Set--': 'Belirsiz',\n\tSrc: 'Kaynak',\n\tTitle: 'Başlık',\n\tAlternative: 'Alternatif Yazı',\n\tLink: 'Link',\n\t'Open link in new tab': 'Bağlantıyı yeni sekmede aç',\n\tImage: 'Resim',\n\tfile: 'Dosya',\n\t'Image properties': 'Resim özellikleri',\n\tCancel: 'İptal',\n\tOk: 'Tamam',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Kodunuz HTML koduna benziyor. HTML olarak devam etmek ister misiniz?',\n\t'Paste as HTML': 'HTML olarak yapıştır',\n\tKeep: 'Sakla',\n\tClean: 'Temizle',\n\t'Insert as Text': 'Yazı olarak ekle',\n\t'Word Paste Detected': 'Word biçiminde yapıştırma algılandı',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Der Inhalt, den Sie einfügen, stammt aus einem Microsoft Word / Excel-Dokument. Möchten Sie das Format erhalten oder löschen?',\n\t'Insert only Text': 'Sadece yazıyı ekle',\n\t'File Browser': 'Dosya Listeleyici',\n\t'Error on load list': 'Liste yüklenirken hata oluştu',\n\t'Error on load folders': 'Klasörler yüklenirken hata oluştur',\n\t'Are you sure?': 'Emin misiniz?',\n\t'Enter Directory name': 'Dizin yolu giriniz',\n\t'Create directory': 'Dizin oluştur',\n\t'type name': 'İsim yaz',\n\t'Drop image': 'Resim bırak',\n\t'Drop file': 'Dosya bırak',\n\t'or click': 'veya tıkla',\n\t'Alternative text': 'Alternatif yazı',\n\tBrowse: 'Gözat',\n\tUpload: 'Yükle',\n\tBackground: 'Arka plan',\n\tText: 'Yazı',\n\tTop: 'Üst',\n\tMiddle: 'Orta',\n\tBottom: 'Aşağı',\n\t'Insert column before': 'Öncesine kolon ekle',\n\t'Insert column after': 'Sonrasına kolon ekle',\n\t'Insert row above': 'Üstüne satır ekle',\n\t'Insert row below': 'Altına satır ekle',\n\t'Delete table': 'Tabloyu sil',\n\t'Delete row': 'Satırı sil',\n\t'Delete column': 'Kolonu sil',\n\t'Empty cell': 'Hücreyi temizle',\n\tDelete: 'Sil',\n\t'Strike through': 'Üstü çizili',\n\tUnderline: 'Alt çizgi',\n\tBreak: 'Satır sonu',\n\t'Search for': 'Ara',\n\t'Replace with': 'Şununla değiştir',\n\tReplace: 'Değiştir',\n\tEdit: 'Düzenle',\n\t'Vertical align': 'Dikey hizala',\n\t'Horizontal align': 'Yatay hizala',\n\tFilter: 'Filtre',\n\t'Sort by changed': 'Değişime göre sırala',\n\t'Sort by name': 'İsme göre sırala',\n\t'Sort by size': 'Boyuta göre sırala',\n\t'Add folder': 'Klasör ekle',\n\tSplit: 'Ayır',\n\t'Split vertical': 'Dikey ayır',\n\t'Split horizontal': 'Yatay ayır',\n\tMerge: 'Birleştir',\n\t'Add column': 'Kolon ekle',\n\t'Add row': 'Satır ekle',\n\tBorder: 'Kenarlık',\n\t'Embed code': 'Kod ekle',\n\tUpdate: 'Güncelle',\n\tsuperscript: 'Üst yazı',\n\tsubscript: 'Alt yazı',\n\t'Cut selection': 'Seçilimi kes',\n\tPaste: 'Yapıştır',\n\t'Choose Content to Paste': 'Yapıştırılacak içerik seç',\n\t'Chars: %d': 'Harfler: %d',\n\t'Words: %d': 'Kelimeler: %d',\n\tAll: 'Tümü',\n\t'Select %s': 'Seç: %s',\n\t'Select all': 'Tümünü seç',\n\tsource: 'Kaynak',\n\tbold: 'Kalın',\n\titalic: 'italik',\n\tbrush: 'Fırça',\n\tlink: 'Bağlantı',\n\tundo: 'Geri al',\n\tredo: 'Yinele',\n\ttable: 'Tablo',\n\timage: 'Resim',\n\teraser: 'Silgi',\n\tparagraph: 'Paragraf',\n\tfontsize: 'Font boyutu',\n\tvideo: 'Video',\n\tfont: 'Font',\n\tabout: 'Hakkında',\n\tprint: 'Yazdır',\n\tunderline: 'Alt çizgi',\n\tstrikethrough: 'Üstü çizili',\n\tindent: 'Girinti',\n\toutdent: 'Çıkıntı',\n\tfullsize: 'Tam ekran',\n\tshrink: 'Küçült',\n\thr: 'Ayraç',\n\tul: 'Sırasız liste',\n\tol: 'Sıralı liste',\n\tcut: 'Kes',\n\tselectall: 'Tümünü seç',\n\t'Open link': 'Bağlantıyı aç',\n\t'Edit link': 'Bağlantıyı düzenle',\n\t'No follow': 'Nofollow özelliği',\n\tUnlink: 'Bağlantıyı kaldır',\n\tEye: 'Yorumu',\n\tpencil: 'Düzenlemek için',\n\t' URL': 'URL',\n\tReset: 'Sıfırla',\n\tSave: 'Kaydet',\n\t'Save as ...': 'Farklı kaydet',\n\tResize: 'Boyutlandır',\n\tCrop: 'Kırp',\n\tWidth: 'Genişlik',\n\tHeight: 'Yükseklik',\n\t'Keep Aspect Ratio': 'En boy oranını koru',\n\tYes: 'Evet',\n\tNo: 'Hayır',\n\tRemove: 'Sil',\n\tSelect: 'Seç',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Sadece kendi resimlerinizi düzenleyebilirsiniz. Bu görseli kendi hostunuza indirmek ister misiniz?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Görsel başarıyla hostunuza yüklendi',\n\tpalette: 'Palet',\n\t'There are no files': 'Bu dizinde dosya yok',\n\tRename: 'Yeniden isimlendir',\n\t'Enter new name': 'Yeni isim girin',\n\tpreview: 'Ön izleme',\n\tdownload: 'İndir',\n\t'Paste from clipboard': 'Panodan yapıştır ',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Tarayıcınız panoya doğrudan erişimi desteklemiyor.',\n\t'Copy selection': 'Seçimi kopyala',\n\tcopy: 'Kopyala',\n\t'Border radius': 'Sınır yarıçapı',\n\t'Show all': 'Tümünü Göster',\n\tApply: 'Uygula',\n\t'Please fill out this field': 'Lütfen bu alanı doldurun',\n\t'Please enter a web address': 'Lütfen bir web adresi girin',\n\tDefault: 'Varsayılan',\n\tCircle: 'Daire',\n\tDot: 'Nokta',\n\tQuadrate: 'Kare',\n\tFind: 'Bul',\n\t'Find Previous': 'Öncekini Bul',\n\t'Find Next': 'Sonrakini Bul',\n\t'Insert className': 'Sınıf adı girin',\n\t'Press Alt for custom resizing':\n\t\t'Özel yeniden boyutlandırma için Alt tuşuna basın'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': 'Напишіть щось',\n\t'About Jodit': 'Про Jodit',\n\t'Jodit Editor': 'Редактор Jodit',\n\t\"Jodit User's Guide\": 'Jodit інструкція користувача',\n\t'contains detailed help for using':\n\t\t'містить детальну інформацію щодо користування',\n\t'For information about the license, please go to our website:':\n\t\t'Щоб дізнатись більше про ліцензію , будь ласка, перейдіть на наш сайт:',\n\t'Buy full version': 'Купити повну версію',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Авторські права © XDSoft.net - Чупурнов Валерій. Всі права захищені.',\n\tAnchor: 'Анкор',\n\t'Open in new tab': 'Відкрити у новій вкладці',\n\t'Open in fullsize': 'Відкрити редактор в повному розмірі',\n\t'Clear Formatting': 'Очистити форматування',\n\t'Fill color or set the text color': 'Колір заливки або колір текста',\n\tRedo: 'Повторити',\n\tUndo: 'Відмінити',\n\tBold: 'Жирний',\n\tItalic: 'Курсів',\n\t'Insert Unordered List': 'Вставити невпорядкований список',\n\t'Insert Ordered List': 'Вставити нумерованний список',\n\t'Align Center': 'Вирівняти по центру',\n\t'Align Justify': 'Вирівняти по ширині',\n\t'Align Left': 'Вирівняти по лівому краю',\n\t'Align Right': 'Вирівняти по правому краю',\n\t'Insert Horizontal Line': 'Вставити горизонтальну лінію',\n\t'Insert Image': 'Вставити зображення',\n\t'Insert file': 'Вставити файл',\n\t'Insert youtube/vimeo video': 'Вставити відео',\n\t'Insert link': 'Вставити посилання',\n\t'Font size': 'Розмір шрифту',\n\t'Font family': 'Шрифт',\n\t'Insert format block': 'Вставити блочний елемент',\n\tNormal: 'Нормальний текст',\n\t'Heading 1': 'Заголовок 1',\n\t'Heading 2': 'Заголовок 2',\n\t'Heading 3': 'Заголовок 3',\n\t'Heading 4': 'Заголовок 4',\n\tQuote: 'Цитата',\n\tCode: 'Код',\n\tInsert: 'Вставити',\n\t'Insert table': 'Вставити таблицю',\n\t'Decrease Indent': 'Збільшити відступ',\n\t'Increase Indent': 'Зменшити відступ',\n\t'Select Special Character': 'Оберіть спеціальный символ',\n\t'Insert Special Character': 'Вставити спеціальный символ',\n\t'Paint format': 'Формат краски',\n\t'Change mode': 'Джерело',\n\tMargins: 'Відступи',\n\ttop: 'зверху',\n\tright: 'справа',\n\tbottom: 'знизу',\n\tleft: 'зліва',\n\tStyles: 'Стилі',\n\tClasses: 'Класи',\n\tAlign: 'Вирівнювання',\n\tRight: 'По правому краю',\n\tCenter: 'По центру',\n\tLeft: 'По лівому краю',\n\t'--Not Set--': '--не встановлено--',\n\tSrc: 'src',\n\tTitle: 'Заголовок',\n\tAlternative: 'Альтернативний текст (alt)',\n\tLink: 'Посилання',\n\t'Open link in new tab': 'Відкрити посилання в новій вкладці',\n\tfile: 'Файл',\n\tAdvanced: 'Розширені',\n\t'Image properties': 'Властивості зображення',\n\tCancel: 'Відміна',\n\tOk: 'Ок',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'Текст, який Ви намагаєтесь вставити схожий на HTML. Вставити його як HTML?',\n\t'Paste as HTML': 'Вставити його як HTML',\n\tKeep: 'Зберегти оригінал',\n\tClean: 'Почистити',\n\t'Insert as Text': 'Вставити як текст',\n\t'Insert only Text': 'Вставити тільки текст',\n\t'Word Paste Detected': 'Можливо це фрагмент Word або Excel',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'Ви вставляєте контент з документа Microsoft Word або Excel. Бажаєте зберегти форматування?',\n\t'File Browser': 'Браузер файлів',\n\t'Error on load list': 'Помилка при завантаженні списку зображень',\n\t'Error on load folders': 'Помилка при завантаженні списку папок',\n\t'Are you sure?': 'Ви впевнені?',\n\t'Enter Directory name': 'Введіть назву папки',\n\t'Create directory': 'Створити папку',\n\t'type name': 'введіть назву',\n\t'Drop image': 'Перетягніть зображення сюди',\n\t'Drop file': 'Перетягніть файл сюди',\n\t'or click': 'або клікніть',\n\t'Alternative text': 'Альтернативный текст',\n\tBrowse: 'Сервер',\n\tUpload: 'Завантаження',\n\tBackground: 'Фон',\n\tText: 'Текст',\n\tTop: ' Вгору',\n\tMiddle: 'По центру',\n\tBottom: 'Донизу',\n\t'Insert column before': 'Вставити стовпець до',\n\t'Insert column after': 'Вставити стовпець після',\n\t'Insert row above': 'Вставити рядок вище',\n\t'Insert row below': 'Вставити рядок нижче',\n\t'Delete table': 'Видалити таблицю',\n\t'Delete row': 'Видалити рядок',\n\t'Delete column': 'Видалити стовпчик',\n\t'Empty cell': 'Очистити кліинку',\n\tsource: 'HTML',\n\tbold: 'жирний',\n\titalic: 'курсів',\n\tbrush: 'заливка',\n\tlink: 'посилання',\n\tundo: 'відмінити',\n\tredo: 'повторити',\n\ttable: 'таблиця',\n\timage: 'зображення',\n\teraser: 'видалення',\n\tparagraph: 'параграф',\n\tfontsize: 'розмір шрифту',\n\tvideo: 'відео',\n\tfont: 'шрифт',\n\tabout: 'про редактор',\n\tprint: 'друк',\n\tunderline: 'підкреслений',\n\tstrikethrough: 'закреслений',\n\tindent: 'відступ',\n\toutdent: 'заступ',\n\tfullsize: 'на весь екран',\n\tshrink: 'звичайний розмір',\n\thr: 'лінія',\n\tul: 'Список',\n\tol: 'Нумерований список',\n\tcut: 'Вирізати',\n\tselectall: 'Виділити все',\n\t'Embed code': 'Код',\n\t'Open link': 'Відкрити посилання',\n\t'Edit link': 'Редагувати посилання',\n\t'No follow': 'Атрибут nofollow',\n\tUnlink: 'Видалити посилання',\n\tEye: 'Перегляд',\n\tpencil: 'Редагування',\n\tUpdate: 'Оновити',\n\t' URL': 'URL',\n\tEdit: 'Редагувати',\n\t'Horizontal align': 'Горизонтальне вирівнювання',\n\tFilter: 'Фільтр',\n\t'Sort by changed': 'Сортувати за зміною',\n\t'Sort by name': \"Сортувати за ім'ям\",\n\t'Sort by size': 'Сортувати за розміром',\n\t'Add folder': 'Додати папку',\n\tReset: 'Відновити',\n\tSave: 'Зберегти',\n\t'Save as ...': 'Зберегти як',\n\tResize: 'Змінити розмір',\n\tCrop: 'Обрізати розмір',\n\tWidth: 'Ширина',\n\tHeight: 'Висота',\n\t'Keep Aspect Ratio': 'Зберегти пропорції',\n\tYes: 'Так',\n\tNo: 'Ні',\n\tRemove: 'Видалити',\n\tSelect: 'Вибрати',\n\t'Chars: %d': 'Символів: %d',\n\t'Words: %d': 'Слів: %d',\n\tAll: 'Вибрати все',\n\t'Select %s': 'Вибрати: %s',\n\t'Select all': 'Вибрати все',\n\t'Vertical align': 'Вертикальне вирівнювання',\n\tSplit: 'Розділити',\n\t'Split vertical': 'Розділити по вертикалі',\n\t'Split horizontal': 'Розділити по горизонталі',\n\tMerge: \"Об'єднати в одну\",\n\t'Add column': 'Додати стовпчик',\n\t'Add row': 'Додати рядок',\n\tDelete: 'Видалити',\n\tBorder: 'Рамка',\n\t'License: %s': 'Ліцензія: %s',\n\t'Strike through': 'Закреслений',\n\tUnderline: 'Підкреслений',\n\tsuperscript: 'верхній індекс',\n\tsubscript: 'індекс',\n\t'Cut selection': 'Обрізати вибране',\n\tBreak: 'Межа',\n\t'Search for': 'Шукати',\n\t'Replace with': 'Замінити на',\n\tReplace: 'Замінити',\n\tPaste: 'Вставити',\n\t'Choose Content to Paste': 'Обрати контент для вставки',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'Ви можете редагувати лише власні зображення. Завантажити зображення на ваш сервер?',\n\t'The image has been successfully uploaded to the host!':\n\t\t'Зображення успішно завантажено на сервер!',\n\tpalette: 'палітра',\n\t'There are no files': 'Файли відсутні',\n\tRename: 'Змінити назву',\n\t'Enter new name': \"Введіть нове імя'\",\n\tpreview: 'Попередній перегляд',\n\tdownload: 'Завантажити',\n\t'Paste from clipboard': 'Вставити з буфера обміну',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'Ваш браузер не підтримує доступ до буфера обміну.',\n\t'Copy selection': 'Копіювати виділене',\n\tcopy: 'копія',\n\t'Border radius': 'Радіус рамки',\n\t'Show all': 'Показати все',\n\tApply: 'Застосувати',\n\t'Please fill out this field': 'Будь ласка, заповніть це поле',\n\t'Please enter a web address': 'Будь ласка, введіть веб-адресу',\n\tDefault: 'За замовченням',\n\tCircle: 'Коло',\n\tDot: 'Крапка',\n\tQuadrate: 'Квадрат',\n\tFind: 'Знайти',\n\t'Find Previous': 'Знайти попередні',\n\t'Find Next': 'Знайти наступні',\n\t'Insert className': 'Вставити клас',\n\t'Press Alt for custom resizing': 'Натисніть Alt для зміни розміру'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': '输入一些内容',\n\tAdvanced: '高级',\n\t'About Jodit': '关于Jodit',\n\t'Jodit Editor': 'Jodit Editor',\n\t'Free Non-commercial Version': 'Free Non-commercial Version',\n\t\"Jodit User's Guide\": '开发者指南',\n\t'contains detailed help for using': '使用帮助',\n\t'For information about the license, please go to our website:':\n\t\t'有关许可证的信息,请访问我们的网站:',\n\t'Buy full version': '购买完整版本',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. 版权所有',\n\tAnchor: 'Anchor',\n\t'Open in new tab': '在新窗口打开',\n\t'Open in fullsize': '全屏编辑',\n\t'Clear Formatting': '清除样式',\n\t'Fill color or set the text color': '颜色',\n\tRedo: '重做',\n\tUndo: '撤销',\n\tBold: '粗体',\n\tItalic: '斜体',\n\t'Insert Unordered List': '符号列表',\n\t'Insert Ordered List': '编号',\n\t'Align Center': '居中',\n\t'Align Justify': '对齐文本',\n\t'Align Left': '左对齐',\n\t'Align Right': '右对齐',\n\t'Insert Horizontal Line': '分割线',\n\t'Insert Image': '图片',\n\t'Insert file': '文件',\n\t'Insert youtube/vimeo video': '视频',\n\t'Insert link': '链接',\n\t'Font size': '字号',\n\t'Font family': '字体',\n\t'Insert format block': '格式块',\n\tNormal: '默认',\n\t'Heading 1': '标题1',\n\t'Heading 2': '标题2',\n\t'Heading 3': '标题3',\n\t'Heading 4': '标题4',\n\tQuote: '引用',\n\tCode: '代码',\n\tInsert: '插入',\n\t'Insert table': '表格',\n\t'Decrease Indent': '减少缩进',\n\t'Increase Indent': '增加缩进',\n\t'Select Special Character': '选择特殊符号',\n\t'Insert Special Character': '特殊符号',\n\t'Paint format': '格式复制',\n\t'Change mode': '改变模式',\n\tMargins: '外边距(Margins)',\n\ttop: 'top',\n\tright: 'right',\n\tbottom: 'bottom',\n\tleft: 'left',\n\tStyles: '样式',\n\tClasses: 'Classes',\n\tAlign: '对齐方式',\n\tRight: '居右',\n\tCenter: '居中',\n\tLeft: '居左',\n\t'--Not Set--': '无',\n\tSrc: 'Src',\n\tTitle: 'Title',\n\tAlternative: 'Alternative',\n\tLink: 'Link',\n\t'Open link in new tab': '在新窗口打开链接',\n\tImage: '图片',\n\tfile: 'file',\n\t'Image properties': '图片属性',\n\tCancel: '取消',\n\tOk: '确定',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'你粘贴的文本是一段html代码,是否保留源格式',\n\t'Paste as HTML': 'html粘贴',\n\tKeep: '保留源格式',\n\tClean: '匹配目标格式',\n\t'Insert as Text': '把html代码视为普通文本',\n\t'Word Paste Detected': '文本粘贴',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'正在粘贴 Word/Excel 的文本,是否保留源格式?',\n\t'Insert only Text': '只保留文本',\n\t'File Browser': '文件管理',\n\t'Error on load list': '加载list错误',\n\t'Error on load folders': '加载folders错误',\n\t'Are you sure?': '你确定吗?',\n\t'Enter Directory name': '输入路径',\n\t'Create directory': '创建路径',\n\t'type name': 'type name',\n\t'Drop image': '拖动图片到此',\n\t'Drop file': '拖动文件到此',\n\t'or click': '或点击',\n\t'Alternative text': 'Alternative text',\n\tBrowse: '浏览',\n\tUpload: '上传',\n\tBackground: '背景色',\n\tText: '文字',\n\tTop: '顶部',\n\tMiddle: '中间',\n\tBottom: '底部',\n\t'Insert column before': '在之前插入列',\n\t'Insert column after': '在之后插入列',\n\t'Insert row above': '在之前插入行',\n\t'Insert row below': '在之后插入行',\n\t'Delete table': '删除表格',\n\t'Delete row': '删除行',\n\t'Delete column': '删除列',\n\t'Empty cell': '清除内容',\n\t'Chars: %d': '字符数: %d',\n\t'Words: %d': '单词数: %d',\n\t'Strike through': '删除线',\n\tUnderline: '下划线',\n\tsuperscript: '上标',\n\tsubscript: '下标',\n\t'Cut selection': '剪切',\n\t'Select all': '全选',\n\tBreak: 'Break',\n\t'Search for': '查找',\n\t'Replace with': '替换为',\n\tReplace: '替换',\n\tEdit: '编辑',\n\tPaste: '粘贴',\n\t'Choose Content to Paste': '选择内容并粘贴',\n\tAll: '全部',\n\tsource: '源码',\n\tbold: '粗体',\n\titalic: '斜体',\n\tbrush: '颜色',\n\tlink: '链接',\n\tundo: '撤销',\n\tredo: '重做',\n\ttable: '表格',\n\timage: '图片',\n\teraser: '橡皮擦',\n\tparagraph: '段落',\n\tfontsize: '字号',\n\tvideo: '视频',\n\tfont: '字体',\n\tabout: '关于',\n\tprint: '打印',\n\tunderline: '下划线',\n\tstrikethrough: '上出现',\n\tindent: '增加缩进',\n\toutdent: '减少缩进',\n\tfullsize: '全屏',\n\tshrink: '收缩',\n\thr: '分割线',\n\tul: '无序列表',\n\tol: '顺序列表',\n\tcut: '剪切',\n\tselectall: '全选',\n\t'Open link': '打开链接',\n\t'Edit link': '编辑链接',\n\t'No follow': 'No follow',\n\tUnlink: '取消链接',\n\tEye: '预览',\n\t' URL': 'URL',\n\tReset: '重置',\n\tSave: '保存',\n\t'Save as ...': '保存为',\n\tResize: '调整大小',\n\tCrop: '剪切',\n\tWidth: '宽',\n\tHeight: '高',\n\t'Keep Aspect Ratio': '保持长宽比',\n\tYes: '是',\n\tNo: '不',\n\tRemove: '移除',\n\tSelect: '选择',\n\t'Select %s': '选择: %s',\n\tUpdate: '更新',\n\t'Vertical align': '垂直对齐',\n\tMerge: '合并',\n\t'Add column': '添加列',\n\t'Add row': '添加行',\n\tBorder: '边框',\n\t'Embed code': '嵌入代码',\n\tDelete: '删除',\n\t'Horizontal align': '水平对齐',\n\tFilter: '筛选',\n\t'Sort by changed': '修改时间排序',\n\t'Sort by name': '名称排序',\n\t'Sort by size': '大小排序',\n\t'Add folder': '新建文件夹',\n\tSplit: '拆分',\n\t'Split vertical': '垂直拆分',\n\t'Split horizontal': '水平拆分',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'你只能编辑你自己的图片。Download this image on the host?',\n\t'The image has been successfully uploaded to the host!': '图片上传成功',\n\tpalette: '调色板',\n\tpencil: '铅笔',\n\t'There are no files': '此目录中沒有文件。',\n\tRename: '重命名',\n\t'Enter new name': '输入新名称',\n\tpreview: '预览',\n\tdownload: '下载',\n\t'Paste from clipboard': '粘贴从剪贴板',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'你浏览器不支持直接访问的剪贴板。',\n\t'Copy selection': '复制选中内容',\n\tcopy: '复制',\n\t'Border radius': '边界半径',\n\t'Show all': '显示所有',\n\tApply: '应用',\n\t'Please fill out this field': '请填写这个字段',\n\t'Please enter a web address': '请输入一个网址',\n\tDefault: '默认',\n\tCircle: '圆圈',\n\tDot: '点',\n\tQuadrate: '方形',\n\tFind: '搜索',\n\t'Find Previous': '查找上一个',\n\t'Find Next': '查找下一个',\n\t'Insert className': '插入班级名称',\n\t'Press Alt for custom resizing': '按Alt自定义调整大小'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n\nexport default {\n\t'Type something': '輸入一些內容',\n\tAdvanced: '進階',\n\t'About Jodit': '關於Jodit',\n\t'Jodit Editor': 'Jodit Editor',\n\t\"Jodit User's Guide\": '開發者指南',\n\t'contains detailed help for using': '使用幫助',\n\t'For information about the license, please go to our website:':\n\t\t'相關授權條款資訊,請造訪我們的網站:',\n\t'Buy full version': '購買完整版本',\n\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.':\n\t\t'Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.',\n\tAnchor: '錨點',\n\t'Open in new tab': '在新分頁開啟',\n\t'Open in fullsize': '全螢幕編輯',\n\t'Clear Formatting': '清除樣式',\n\t'Fill color or set the text color': '顏色',\n\tRedo: '取消復原',\n\tUndo: '復原',\n\tBold: '粗體',\n\tItalic: '斜體',\n\t'Insert Unordered List': '項目符號清單',\n\t'Insert Ordered List': '編號清單',\n\t'Align Center': '置中',\n\t'Align Justify': '文字對齊',\n\t'Align Left': '靠左',\n\t'Align Right': '靠右',\n\t'Insert Horizontal Line': '分割線',\n\t'Insert Image': '圖片',\n\t'Insert file': '檔案',\n\t'Insert youtube/vimeo video': '插入 youtube/vimeo 影片',\n\t'Insert link': '插入連結',\n\t'Font size': '文字大小',\n\t'Font family': '字型',\n\t'Insert format block': '格式化區塊',\n\tNormal: '內文',\n\t'Heading 1': '標題1',\n\t'Heading 2': '標題2',\n\t'Heading 3': '標題3',\n\t'Heading 4': '標題4',\n\tQuote: '引文',\n\tCode: '程式碼',\n\tInsert: '插入',\n\t'Insert table': '表格',\n\t'Decrease Indent': '減少縮排',\n\t'Increase Indent': '增加縮排',\n\t'Select Special Character': '選擇特殊符號',\n\t'Insert Special Character': '特殊符號',\n\t'Paint format': '格式複製',\n\t'Change mode': '檢視原始碼',\n\tMargins: '邊距',\n\ttop: '上',\n\tright: '右',\n\tbottom: '下',\n\tleft: '左',\n\tStyles: '樣式',\n\tClasses: 'Classes',\n\tAlign: '對齊方式',\n\tRight: '靠右',\n\tCenter: '置中',\n\tLeft: '靠左',\n\t'--Not Set--': '無',\n\tSrc: 'Src',\n\tTitle: 'Title',\n\tAlternative: '替代',\n\tLink: 'Link',\n\t'Open link in new tab': '在新分頁開啟連結',\n\tImage: '圖片',\n\tfile: '檔案',\n\t'Image properties': '圖片屬性',\n\tCancel: '取消',\n\tOk: '確定',\n\t'Your code is similar to HTML. Keep as HTML?':\n\t\t'您的程式碼與 HTML 類似,是否貼上 HTML 格式?',\n\t'Paste as HTML': '貼上 HTML',\n\tKeep: '保留原始格式',\n\tClean: '清除格式',\n\t'Insert as Text': '以純文字貼上',\n\t'Word Paste Detected': '貼上 Word 格式',\n\t'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?':\n\t\t'正在貼上 Word/Excel 文件的內容,是否保留原始格式?',\n\t'Insert only Text': '僅貼上內文',\n\t'File Browser': '檔案瀏覽',\n\t'Error on load list': '清單載入錯誤',\n\t'Error on load folders': '資料夾載入錯誤',\n\t'Are you sure?': '您確定嗎?',\n\t'Enter Directory name': '輸入路徑',\n\t'Create directory': '創建路徑',\n\t'type name': 'type name',\n\t'Drop image': '拖曳圖片至此',\n\t'Drop file': '拖曳檔案至此',\n\t'or click': '或點擊',\n\t'Alternative text': '替代文字',\n\tBrowse: '瀏覽',\n\tUpload: '上傳',\n\tBackground: '背景色',\n\tText: '文字',\n\tTop: '頂部',\n\tMiddle: '中間',\n\tBottom: '底部',\n\t'Insert column before': '插入左方欄',\n\t'Insert column after': '插入右方欄',\n\t'Insert row above': '插入上方列',\n\t'Insert row below': '插入下方列',\n\t'Delete table': '刪除表格',\n\t'Delete row': '刪除整列',\n\t'Delete column': '刪除整欄',\n\t'Empty cell': '清除內容',\n\t'Chars: %d': '字元數: %d',\n\t'Words: %d': '單字數: %d',\n\t'Strike through': '刪除線',\n\tUnderline: '底線',\n\tsuperscript: '上標',\n\tsubscript: '下標',\n\t'Cut selection': '剪下',\n\t'Select all': '全選',\n\tBreak: '斷行',\n\t'Search for': '尋找',\n\t'Replace with': '取代為',\n\tReplace: '取代',\n\tPaste: '貼上',\n\t'Choose Content to Paste': '選擇內容並貼上',\n\tAll: '全部',\n\tsource: '原始碼',\n\tbold: '粗體',\n\titalic: '斜體',\n\tbrush: '顏色',\n\tlink: '連結',\n\tundo: '復原',\n\tredo: '取消復原',\n\ttable: '表格',\n\timage: '圖片',\n\teraser: '橡皮擦',\n\tparagraph: '段落',\n\tfontsize: '文字大小',\n\tvideo: '影片',\n\tfont: '字型',\n\tabout: '關於',\n\tprint: '列印',\n\tunderline: '底線',\n\tstrikethrough: '刪除線',\n\tindent: '增加縮排',\n\toutdent: '減少縮排',\n\tfullsize: '全螢幕',\n\tshrink: '縮減',\n\thr: '分隔線',\n\tul: '項目符號清單',\n\tol: '編號清單',\n\tcut: '剪下',\n\tselectall: '全選',\n\t'Open link': '打開連結',\n\t'Edit link': '編輯連結',\n\t'No follow': 'No follow',\n\tUnlink: '取消連結',\n\tEye: '查看',\n\t' URL': 'URL',\n\tReset: '重設',\n\tSave: '儲存',\n\t'Save as ...': '另存為...',\n\tResize: '調整大小',\n\tCrop: '裁切',\n\tWidth: '寬',\n\tHeight: '高',\n\t'Keep Aspect Ratio': '維持長寬比',\n\tYes: '是',\n\tNo: '否',\n\tRemove: '移除',\n\tSelect: '選擇',\n\t'Select %s': '選擇: %s',\n\tUpdate: '更新',\n\t'Vertical align': '垂直對齊',\n\tMerge: '合併',\n\t'Add column': '新增欄',\n\t'Add row': '新增列',\n\tBorder: '邊框',\n\t'Embed code': '嵌入程式碼',\n\tDelete: '刪除',\n\t'Horizontal align': '水平對齊',\n\tFilter: '篩選',\n\t'Sort by changed': '修改時間排序',\n\t'Sort by name': '名稱排序',\n\t'Sort by size': '大小排序',\n\t'Add folder': '新增資料夾',\n\tSplit: '分割',\n\t'Split vertical': '垂直分割',\n\t'Split horizontal': '水平分割',\n\t'You can only edit your own images. Download this image on the host?':\n\t\t'您只能編輯您自己的圖片。是否下載此圖片?',\n\t'The image has been successfully uploaded to the host!': '圖片上傳成功',\n\tpalette: '調色盤',\n\tpencil: '鉛筆',\n\t'There are no files': '沒有檔案',\n\tRename: '重新命名',\n\t'Enter new name': '輸入新名稱',\n\tpreview: '預覽',\n\tdownload: '下載',\n\t'Paste from clipboard': '從剪貼簿貼上',\n\t\"Your browser doesn't support direct access to the clipboard.\":\n\t\t'瀏覽器無法存取剪貼簿。',\n\t'Copy selection': '複製已選取項目',\n\tcopy: '複製',\n\t'Border radius': '邊框圓角',\n\t'Show all': '顯示全部',\n\tApply: '應用',\n\t'Please fill out this field': '請輸入此欄位',\n\t'Please enter a web address': '請輸入網址',\n\tDefault: '預設',\n\tCircle: '圓圈',\n\tDot: '點',\n\tQuadrate: '方形',\n\tFind: '尋找',\n\t'Find Previous': '尋找上一個',\n\t'Find Next': '尋找下一個',\n\t'Insert className': '插入 class 名稱',\n\t'Press Alt for custom resizing': '按住 Alt 以調整自訂大小'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isArray } from \"./core/helpers/checker/is-array.js\";\nimport ar from \"./langs/ar.js\";\nimport cs_cz from \"./langs/cs_cz.js\";\nimport de from \"./langs/de.js\";\nimport en from \"./langs/en.js\";\nimport es from \"./langs/es.js\";\nimport fi from \"./langs/fi.js\";\nimport fr from \"./langs/fr.js\";\nimport he from \"./langs/he.js\";\nimport hu from \"./langs/hu.js\";\nimport id from \"./langs/id.js\";\nimport it from \"./langs/it.js\";\nimport ja from \"./langs/ja.js\";\nimport keys from \"./langs/keys.js\";\nimport ko from \"./langs/ko.js\";\nimport mn from \"./langs/mn.js\";\nimport nl from \"./langs/nl.js\";\nimport pl from \"./langs/pl.js\";\nimport pt_br from \"./langs/pt_br.js\";\nimport ru from \"./langs/ru.js\";\nimport tr from \"./langs/tr.js\";\nimport ua from \"./langs/ua.js\";\nimport zh_cn from \"./langs/zh_cn.js\";\nimport zh_tw from \"./langs/zh_tw.js\";\nlet exp = {};\nexp = {\n ar,\n cs_cz,\n de,\n en,\n es,\n fi,\n fr,\n he,\n hu,\n id,\n it,\n ja,\n ko,\n mn,\n nl,\n pl,\n pt_br,\n ru,\n tr,\n ua,\n zh_cn,\n zh_tw\n};\n/* Unpack array to hash */\nconst get = (value) => value ? value.default || value : {}, hashLang = {};\nif (isArray(get(keys))) {\n get(keys).forEach((key, index) => {\n hashLang[index] = key;\n });\n}\nObject.keys(exp).forEach((lang) => {\n const list = get(exp[lang]);\n if (isArray(list)) {\n exp[lang] = {};\n list.forEach((value, index) => {\n exp[lang][hashLang[index]] = value;\n });\n }\n else {\n exp[lang] = list;\n }\n});\nexport default exp;\n","export default \"<svg viewBox=\\\"0 0 1792 1792\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"> <path d=\\\"M1088 1256v240q0 16-12 28t-28 12h-240q-16 0-28-12t-12-28v-240q0-16 12-28t28-12h240q16 0 28 12t12 28zm316-600q0 54-15.5 101t-35 76.5-55 59.5-57.5 43.5-61 35.5q-41 23-68.5 65t-27.5 67q0 17-12 32.5t-28 15.5h-240q-15 0-25.5-18.5t-10.5-37.5v-45q0-83 65-156.5t143-108.5q59-27 84-56t25-76q0-42-46.5-74t-107.5-32q-65 0-108 29-35 25-107 115-13 16-31 16-12 0-25-8l-164-125q-13-10-15.5-25t5.5-28q160-266 464-266 80 0 161 31t146 83 106 127.5 41 158.5z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport * as constants from \"../../core/constants.js\";\nimport { HOMEPAGE } from \"../../core/constants.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { css, isLicense, normalizeLicense } from \"../../core/helpers/index.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport aboutIcon from \"./about.svg.js\";\nConfig.prototype.controls.about = {\n exec: (editor) => {\n const dialog = editor.dlg({ closeOnClickOverlay: true }), i = editor.i18n.bind(editor);\n dialog\n .setMod('theme', editor.o.theme)\n .setHeader(i('About Jodit'))\n .setContent(`<div class=\"jodit-about\">\n\t\t\t\t\t<div>${i('Jodit Editor')} v.${editor.getVersion()}</div>\n\t\t\t\t\t<div>${i('License: %s', !isLicense(editor.o.license)\n ? 'MIT'\n : normalizeLicense(editor.o.license))}</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href=\"${HOMEPAGE}\" target=\"_blank\">${HOMEPAGE}</a>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<a href=\"https://xdsoft.net/jodit/docs/\" target=\"_blank\">${i(\"Jodit User's Guide\")}</a>\n\t\t\t\t\t\t${i('contains detailed help for using')}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>${i('Copyright © XDSoft.net - Chupurnov Valeriy. All rights reserved.')}</div>\n\t\t\t\t</div>`);\n css(dialog.dialog, {\n minHeight: 200,\n minWidth: 420\n });\n dialog.open(true, true);\n },\n tooltip: 'About Jodit',\n mode: constants.MODE_SOURCE + constants.MODE_WYSIWYG\n};\nfunction about(editor) {\n editor.registerButton({\n name: 'about',\n group: 'info'\n });\n}\npluginSystem.add('about', about);\nIcon.set('about', aboutIcon);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugins/backspace\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.delete = {\n hotkeys: {\n delete: ['delete', 'cmd+backspace'],\n deleteWord: ['ctrl+delete', 'cmd+alt+backspace', 'ctrl+alt+backspace'],\n deleteSentence: ['ctrl+shift+delete', 'cmd+shift+delete'],\n backspace: ['backspace'],\n backspaceWord: ['ctrl+backspace'],\n backspaceSentence: ['ctrl+shift+backspace', 'cmd+shift+backspace']\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * On Not collapsed selection - should only remove whole selected content\n *\n * @example\n * ```html\n * <p>first | stop</p><p>second | stop</p>\n * ```\n * result\n * ```html\n * <p>first | stop</p>\n * ```\n * @private\n */\nexport function checkNotCollapsed(jodit) {\n if (!jodit.s.isCollapsed()) {\n jodit.execCommand('Delete');\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/index.js\";\n/**\n * Finds the nearest neighbor that would be in the maximum nesting depth.\n * Ie if neighbor `<DIV><SPAN>Text` then return Text node.\n * @private\n */\nexport function findMostNestedNeighbor(node, right, root, onlyInlide = false) {\n const nextChild = (node) => right ? node.firstChild : node.lastChild;\n let next = Dom.findNotEmptyNeighbor(node, !right, root);\n if (onlyInlide && Dom.isElement(next) && !Dom.isInlineBlock(next)) {\n return null;\n }\n if (next) {\n do {\n if (nextChild(next)) {\n next = nextChild(next);\n }\n else {\n return next;\n }\n } while (next);\n }\n return null;\n}\n/**\n * @private\n */\nexport function getMoveFilter(jodit) {\n return (node) => jodit.e.fire('backSpaceIsMovedIgnore', node) !== true;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { LIST_TAGS } from \"../../../core/constants.js\";\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { getMoveFilter } from \"../helpers.js\";\n/**\n * Check if two separate elements can be connected\n * @private\n */\nexport function checkJoinNeighbors(jodit, fakeNode, backspace) {\n let nextBox = fakeNode, mainClosestBox = nextBox;\n // Find the main big closest element\n while (nextBox &&\n !Dom.findNotEmptySibling(nextBox, backspace) &&\n nextBox.parentElement !== jodit.editor) {\n nextBox = nextBox.parentElement;\n mainClosestBox = nextBox;\n }\n if (Dom.isElement(mainClosestBox) &&\n Dom.isContentEditable(mainClosestBox, jodit.editor)) {\n const sibling = Dom.findNotEmptySibling(mainClosestBox, backspace);\n if (sibling &&\n (checkMoveListContent(jodit, mainClosestBox, sibling, backspace) ||\n moveContentAndRemoveEmpty(jodit, mainClosestBox, sibling, backspace))) {\n jodit.s.setCursorBefore(fakeNode);\n return true;\n }\n }\n return false;\n}\nfunction checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {\n // Process UL/LI/OL cases\n const siblingIsList = Dom.isTag(sibling, LIST_TAGS);\n const boxIsList = Dom.isTag(mainClosestBox, LIST_TAGS);\n const elementChild = (elm, side) => side ? elm.firstElementChild : elm.lastElementChild;\n if (boxIsList) {\n sibling = jodit.createInside.element(jodit.o.enterBlock);\n Dom.before(mainClosestBox, sibling);\n return moveContentAndRemoveEmpty(jodit, elementChild(mainClosestBox, backspace), sibling, backspace);\n }\n if (sibling && siblingIsList && !boxIsList) {\n return moveContentAndRemoveEmpty(jodit, mainClosestBox, elementChild(sibling, !backspace), backspace);\n }\n return false;\n}\nfunction moveContentAndRemoveEmpty(jodit, mainClosestBox, sibling, backspace) {\n // Move content and remove empty nodes\n if (mainClosestBox && Dom.isElement(sibling)) {\n Dom.moveContent(mainClosestBox, sibling, !backspace, getMoveFilter(jodit));\n let remove = mainClosestBox;\n while (remove && remove !== jodit.editor && Dom.isEmpty(remove)) {\n const parent = remove.parentElement;\n Dom.safeRemove(remove);\n remove = parent;\n }\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { call } from \"../../../core/helpers/utils/utils.js\";\nimport { getMoveFilter } from \"../helpers.js\";\n/**\n * Try join two UL elements\n *\n * @example\n * ```html\n * <ul><li>one</li></ul>|<ol><li>two</li></ol>\n * ```\n * Result\n * ```html\n * <ul><li>one|</li><li>two</li></ul>\n * ```\n * @private\n */\nexport function checkJoinTwoLists(jodit, fakeNode, backspace) {\n const next = Dom.findSibling(fakeNode, backspace), prev = Dom.findSibling(fakeNode, !backspace);\n if (!Dom.closest(fakeNode, Dom.isElement, jodit.editor) &&\n Dom.isList(next) &&\n Dom.isList(prev) &&\n Dom.isTag(next.lastElementChild, 'li') &&\n Dom.isTag(prev.firstElementChild, 'li')) {\n const { setCursorBefore, setCursorAfter } = jodit.s;\n const target = next.lastElementChild, second = prev.firstElementChild;\n call(!backspace ? Dom.append : Dom.prepend, second, fakeNode);\n Dom.moveContent(prev, next, !backspace, getMoveFilter(jodit));\n Dom.safeRemove(prev);\n call(backspace ? Dom.append : Dom.prepend, target, fakeNode);\n call(backspace ? setCursorBefore : setCursorAfter, fakeNode);\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { INVISIBLE_SPACE, NBSP_SPACE } from \"../../../core/constants.js\";\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { call, isVoid, toArray, trimInv } from \"../../../core/helpers/index.js\";\nimport { findMostNestedNeighbor } from \"../helpers.js\";\n/**\n * Check possibility the char can be removed\n *\n * @example\n * ```html\n * te|st\n * ```\n * result\n * ```html\n * t|st\n * ```\n * @private\n */\nexport function checkRemoveChar(jodit, fakeNode, backspace, mode) {\n const step = backspace ? -1 : 1;\n const anotherSibling = Dom.sibling(fakeNode, !backspace);\n let sibling = Dom.sibling(fakeNode, backspace);\n let removeNeighbor = null;\n let charRemoved = false;\n let removed;\n if (!sibling) {\n sibling = getNextInlineSibling(fakeNode, backspace, jodit.editor);\n }\n while (sibling && (Dom.isText(sibling) || Dom.isInlineBlock(sibling))) {\n while (Dom.isInlineBlock(sibling)) {\n sibling = (backspace ? sibling?.lastChild : sibling?.firstChild);\n }\n if (!sibling) {\n break;\n }\n if (sibling.nodeValue?.length) {\n removed = tryRemoveChar(sibling, backspace, step, anotherSibling);\n if (!sibling.nodeValue.length &&\n Dom.isInlineBlock(sibling.parentNode)) {\n sibling.nodeValue = INVISIBLE_SPACE;\n }\n }\n if (!sibling.nodeValue?.length) {\n removeNeighbor = sibling;\n }\n if (!isVoid(removed) && removed !== INVISIBLE_SPACE) {\n checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed, jodit);\n charRemoved = true;\n break;\n }\n const nextSibling = getNextInlineSibling(sibling, backspace, jodit.editor);\n if (removeNeighbor) {\n Dom.safeRemove(removeNeighbor);\n removeNeighbor = null;\n }\n sibling = nextSibling;\n }\n if (removeNeighbor) {\n Dom.safeRemove(removeNeighbor);\n removeNeighbor = null;\n }\n if (charRemoved) {\n removeEmptyForParent(fakeNode, 'a');\n addBRInsideEmptyBlock(jodit, fakeNode);\n jodit.s.setCursorBefore(fakeNode);\n if (Dom.isTag(fakeNode.previousSibling, 'br') &&\n !Dom.findNotEmptySibling(fakeNode, false)) {\n Dom.after(fakeNode, jodit.createInside.element('br'));\n }\n }\n return charRemoved;\n}\nfunction getNextInlineSibling(sibling, backspace, root) {\n let nextSibling = Dom.sibling(sibling, backspace);\n if (!nextSibling && sibling.parentNode && sibling.parentNode !== root) {\n nextSibling = findMostNestedNeighbor(sibling, !backspace, root, true);\n }\n return nextSibling;\n}\n/**\n * Helper removes all empty inline parents\n */\nfunction removeEmptyForParent(node, tags) {\n let parent = node.parentElement;\n while (parent && Dom.isInlineBlock(parent) && Dom.isTag(parent, tags)) {\n const p = parent.parentElement;\n if (Dom.isEmpty(parent)) {\n Dom.after(parent, node);\n Dom.safeRemove(parent);\n }\n parent = p;\n }\n}\n/**\n * Helper add BR element inside empty block element\n */\nfunction addBRInsideEmptyBlock(jodit, node) {\n if (node.parentElement !== jodit.editor &&\n Dom.isBlock(node.parentElement) &&\n Dom.each(node.parentElement, Dom.isEmptyTextNode)) {\n Dom.after(node, jodit.createInside.element('br'));\n }\n}\nfunction tryRemoveChar(sibling, backspace, step, anotherSibling) {\n // For Unicode escapes\n let value = toArray(sibling.nodeValue);\n const length = value.length;\n let index = backspace ? length - 1 : 0;\n if (value[index] === INVISIBLE_SPACE) {\n while (value[index] === INVISIBLE_SPACE) {\n index += step;\n }\n }\n const removed = value[index];\n if (value[index + step] === INVISIBLE_SPACE) {\n index += step;\n while (value[index] === INVISIBLE_SPACE) {\n index += step;\n }\n index += backspace ? 1 : -1;\n }\n if (backspace && index < 0) {\n value = [];\n }\n else {\n value = value.slice(backspace ? 0 : index + 1, backspace ? index : length);\n }\n replaceSpaceOnNBSP(anotherSibling, backspace, value);\n sibling.nodeValue = value.join('');\n return removed;\n}\nfunction replaceSpaceOnNBSP(anotherSibling, backspace, value) {\n if (!anotherSibling ||\n !Dom.isText(anotherSibling) ||\n (!backspace ? / $/ : /^ /).test(anotherSibling.nodeValue ?? '') ||\n !trimInv(anotherSibling.nodeValue || '').length) {\n for (let i = backspace ? value.length - 1 : 0; backspace ? i >= 0 : i < value.length; i += backspace ? -1 : 1) {\n if (value[i] === ' ') {\n value[i] = NBSP_SPACE;\n }\n else {\n break;\n }\n }\n }\n}\nfunction checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed, jodit) {\n call(backspace ? Dom.after : Dom.before, sibling, fakeNode);\n if (mode === 'sentence' ||\n (mode === 'word' && removed !== ' ' && removed !== NBSP_SPACE)) {\n checkRemoveChar(jodit, fakeNode, backspace, mode);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { call } from \"../../../core/helpers/index.js\";\nimport { moveNodeInsideStart } from \"../../../core/selection/helpers/index.js\";\n/**\n * Checks if a non-editable element can be deleted\n * @private\n */\nexport function checkRemoveContentNotEditable(jodit, fakeNode, backspace) {\n let neighbor = Dom.findSibling(fakeNode, backspace);\n if (!neighbor &&\n fakeNode.parentElement &&\n fakeNode.parentElement !== jodit.editor) {\n neighbor = Dom.findSibling(fakeNode.parentElement, backspace);\n }\n if (Dom.isElement(neighbor) &&\n !Dom.isContentEditable(neighbor, jodit.editor)) {\n call(backspace ? Dom.before : Dom.after, neighbor, fakeNode);\n Dom.safeRemove(neighbor);\n moveNodeInsideStart(jodit, fakeNode, backspace);\n call(backspace ? jodit.s.setCursorBefore : jodit.s.setCursorAfter, fakeNode);\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * Check if it is possible to remove an empty adjacent element.\n *\n * @example\n * ```html\n * <p><br></p><p>|second stop</p>\n * ```\n * result\n * ```html\n * <p>|second stop</p>\n * ```\n * @private\n */\nexport function checkRemoveEmptyNeighbor(jodit, fakeNode, backspace) {\n const parent = Dom.closest(fakeNode, Dom.isElement, jodit.editor);\n if (!parent) {\n return false;\n }\n const neighbor = Dom.findNotEmptySibling(parent, backspace);\n if (neighbor && Dom.isEmpty(neighbor)) {\n Dom.safeRemove(neighbor);\n jodit.s.setCursorBefore(fakeNode);\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { INSEPARABLE_TAGS } from \"../../../core/constants.js\";\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { checkJoinTwoLists } from \"./check-join-two-lists.js\";\n/**\n * Check if the current empty item can be removed\n *\n * @example\n * ```html\n * <p>first stop</p><p>|<br></p>\n * ```\n * result\n * ```html\n * <p>first stop|</p>\n * ```\n *\n * @private\n */\nexport function checkRemoveEmptyParent(jodit, fakeNode, backspace) {\n let found = false;\n const { setCursorBefore, setCursorIn } = jodit.s;\n let prn = Dom.closest(fakeNode, Dom.isElement, jodit.editor);\n if (!prn || !Dom.isEmpty(prn)) {\n return false;\n }\n const neighbor = Dom.findNotEmptyNeighbor(fakeNode, backspace, jodit.editor);\n do {\n if (prn && Dom.isEmpty(prn) && !Dom.isCell(prn)) {\n Dom.after(prn, fakeNode);\n const tmp = Dom.closest(prn, n => Dom.isElement(n) && n !== prn, jodit.editor);\n Dom.safeRemove(prn);\n found = true;\n prn = tmp;\n }\n else {\n break;\n }\n } while (prn);\n if (found && checkJoinTwoLists(jodit, fakeNode, backspace)) {\n return true;\n }\n if (neighbor &&\n !Dom.isText(neighbor) &&\n !Dom.isTag(neighbor, INSEPARABLE_TAGS)) {\n setCursorIn(neighbor, !backspace);\n }\n else {\n setCursorBefore(fakeNode);\n }\n return found;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { INSEPARABLE_TAGS } from \"../../../core/constants.js\";\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { checkRemoveEmptyParent } from \"./check-remove-empty-parent.js\";\n/**\n * Check possibility inseparable Element can be removed (img, hr etc.)\n *\n * @example\n * ```html\n * <p>first second <img>| stop</p>\n * ```\n * result\n * ```html\n * <p>first second | stop</p>\n * ```\n *\n * @private\n */\nexport function checkRemoveUnbreakableElement(jodit, fakeNode, backspace) {\n const neighbor = Dom.findSibling(fakeNode, backspace);\n if (Dom.isElement(neighbor) &&\n (Dom.isTag(neighbor, INSEPARABLE_TAGS) || Dom.isEmpty(neighbor))) {\n Dom.safeRemove(neighbor);\n if (Dom.isTag(neighbor, 'br') &&\n !Dom.findNotEmptySibling(fakeNode, false)) {\n Dom.after(fakeNode, jodit.createInside.element('br'));\n }\n jodit.s.setCursorBefore(fakeNode);\n if (Dom.isTag(neighbor, 'br')) {\n checkRemoveEmptyParent(jodit, fakeNode, backspace);\n }\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * Inside the CELL table - nothing to do\n *\n * @example\n * ```html\n * <table><tr><td>|test</td></tr></table>\n * ```\n * result\n * ```html\n * <table><tr><td>|test</td></tr></table>\n * ```\n *\n * @private\n */\nexport function checkTableCell(jodit, fakeNode) {\n const cell = fakeNode.parentElement;\n if (Dom.isCell(cell)) {\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { call } from \"../../../core/helpers/utils/index.js\";\n/**\n * For the first item in a list on backspace, try to move his content in new P\n *\n * @example\n * ```html\n * <ul><li>|first</li><li>second</li></ul>\n * ```\n * Result\n * ```html\n * <p>|first</p><ul><li>second</li></ul>\n * ```\n *\n * @private\n */\nexport function checkUnwrapFirstListItem(jodit, fakeNode, backspace) {\n const li = Dom.closest(fakeNode, Dom.isElement, jodit.editor);\n const { s } = jodit;\n if (Dom.isLeaf(li) &&\n li?.parentElement?.[backspace ? 'firstElementChild' : 'lastElementChild'] === li &&\n s.cursorInTheEdge(backspace, li)) {\n const ul = li.parentElement;\n const p = jodit.createInside.element(jodit.o.enterBlock);\n call(backspace ? Dom.before : Dom.after, ul, p);\n Dom.moveContent(li, p);\n Dom.safeRemove(li);\n if (Dom.isEmpty(ul)) {\n Dom.safeRemove(ul);\n }\n call(backspace ? s.setCursorBefore : s.setCursorAfter, fakeNode);\n return true;\n }\n return false;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugins/backspace\n */\nimport { checkJoinNeighbors } from \"./check-join-neighbors.js\";\nimport { checkJoinTwoLists } from \"./check-join-two-lists.js\";\nimport { checkRemoveChar } from \"./check-remove-char.js\";\nimport { checkRemoveContentNotEditable } from \"./check-remove-content-not-editable.js\";\nimport { checkRemoveEmptyNeighbor } from \"./check-remove-empty-neighbor.js\";\nimport { checkRemoveEmptyParent } from \"./check-remove-empty-parent.js\";\nimport { checkRemoveUnbreakableElement } from \"./check-remove-unbreakable-element.js\";\nimport { checkTableCell } from \"./check-table-cell.js\";\nimport { checkUnwrapFirstListItem } from \"./check-unwrap-first-list-item.js\";\n/**\n * @private\n */\nexport const cases = [\n checkRemoveUnbreakableElement,\n checkRemoveContentNotEditable,\n checkRemoveChar,\n checkTableCell,\n checkRemoveEmptyParent,\n checkRemoveEmptyNeighbor,\n checkJoinTwoLists,\n checkJoinNeighbors,\n checkUnwrapFirstListItem\n];\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { INVISIBLE_SPACE, IS_PROD } from \"../../core/constants.js\";\nimport { Dom } from \"../../core/dom/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { isFunction } from \"../../core/helpers/checker/is-function.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport { moveNodeInsideStart } from \"../../core/selection/helpers/index.js\";\nimport \"./config.js\";\nimport { checkNotCollapsed } from \"./cases/check-not-collapsed.js\";\nimport { cases } from \"./cases/index.js\";\nexport class backspace extends Plugin {\n afterInit(jodit) {\n jodit\n .registerCommand('deleteButton', {\n exec: () => this.onDelete(false),\n hotkeys: jodit.o.delete.hotkeys.delete\n }, {\n stopPropagation: false\n })\n .registerCommand('backspaceButton', {\n exec: () => this.onDelete(true),\n hotkeys: jodit.o.delete.hotkeys.backspace\n }, {\n stopPropagation: false\n })\n .registerCommand('deleteWordButton', {\n exec: () => this.onDelete(false, 'word'),\n hotkeys: jodit.o.delete.hotkeys.deleteWord\n })\n .registerCommand('backspaceWordButton', {\n exec: () => this.onDelete(true, 'word'),\n hotkeys: jodit.o.delete.hotkeys.backspaceWord\n })\n .registerCommand('deleteSentenceButton', {\n exec: () => this.onDelete(false, 'sentence'),\n hotkeys: jodit.o.delete.hotkeys.deleteSentence\n })\n .registerCommand('backspaceSentenceButton', {\n exec: () => this.onDelete(true, 'sentence'),\n hotkeys: jodit.o.delete.hotkeys.backspaceSentence\n });\n }\n beforeDestruct(jodit) {\n jodit.e.off('afterCommand.delete');\n }\n /**\n * Listener BackSpace or Delete button\n */\n onDelete(backspace, mode = 'char') {\n const jodit = this.j;\n const sel = jodit.selection;\n if (!sel.isFocused()) {\n sel.focus();\n }\n if (checkNotCollapsed(jodit)) {\n return false;\n }\n const range = sel.range;\n const fakeNode = jodit.createInside.text(INVISIBLE_SPACE);\n try {\n Dom.safeInsertNode(range, fakeNode);\n if (!Dom.isOrContains(jodit.editor, fakeNode)) {\n return;\n }\n if (jodit.e.fire('backSpaceBeforeCases', backspace, fakeNode)) {\n return false;\n }\n moveNodeInsideStart(jodit, fakeNode, backspace);\n if (cases.some((func) => {\n if (isFunction(func) &&\n func(jodit, fakeNode, backspace, mode)) {\n if (!IS_PROD) {\n console.info('Remove case:', func.name);\n }\n return true;\n }\n })) {\n return false;\n }\n }\n catch (e) {\n if (!IS_PROD) {\n console.error(e);\n }\n throw e;\n }\n finally {\n jodit.e.fire('backSpaceAfterDelete', backspace, fakeNode);\n this.safeRemoveEmptyNode(fakeNode);\n }\n return false;\n }\n /**\n * Remove node and replace cursor position out of it\n */\n safeRemoveEmptyNode(fakeNode) {\n const { range } = this.j.s;\n if (range.startContainer === fakeNode) {\n if (fakeNode.previousSibling) {\n if (Dom.isText(fakeNode.previousSibling)) {\n range.setStart(fakeNode.previousSibling, fakeNode.previousSibling.nodeValue?.length ?? 0);\n }\n else {\n range.setStartAfter(fakeNode.previousSibling);\n }\n }\n else if (fakeNode.nextSibling) {\n if (Dom.isText(fakeNode.nextSibling)) {\n range.setStart(fakeNode.nextSibling, 0);\n }\n else {\n range.setStartBefore(fakeNode.nextSibling);\n }\n }\n range.collapse(true);\n this.j.s.selectRange(range);\n }\n Dom.safeRemove(fakeNode);\n }\n}\nbackspace.requires = ['hotkeys'];\npluginSystem.add('backspace', backspace);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { $$ } from \"../../core/helpers/index.js\";\nimport { trim } from \"../../core/helpers/string/trim.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport \"./interface.js\";\nexport class deleteCommand extends Plugin {\n afterInit(jodit) {\n jodit.e.on('afterCommand.delete', (command) => {\n if (command === 'delete') {\n this.__afterDeleteCommand();\n }\n });\n jodit.registerCommand('delete', {\n exec: this.__onDeleteCommand.bind(this)\n }, {\n stopPropagation: false\n });\n }\n beforeDestruct(jodit) {\n jodit.e.off('afterCommand.delete');\n }\n /**\n * After Delete command remove extra BR\n */\n __afterDeleteCommand() {\n const jodit = this.j;\n const current = jodit.s.current();\n if (current && Dom.isTag(current.firstChild, 'br')) {\n jodit.s.removeNode(current.firstChild);\n }\n if (!trim(jodit.editor.textContent || '') &&\n !jodit.editor.querySelector('img,table,jodit,iframe,hr') &&\n (!current || !Dom.closest(current, 'table', jodit.editor))) {\n jodit.editor.innerHTML = '';\n const node = jodit.s.setCursorIn(jodit.editor);\n jodit.s.removeNode(node);\n }\n }\n __onDeleteCommand() {\n const { jodit } = this;\n if (jodit.s.isCollapsed()) {\n return;\n }\n jodit.s.expandSelection();\n const range = jodit.s.range;\n range.deleteContents();\n const fake = jodit.createInside.fake();\n range.insertNode(fake);\n const leftSibling = Dom.findSibling(fake, true);\n const rightSibling = Dom.findSibling(fake, false);\n this.__moveContentInLeftSibling(fake, leftSibling, rightSibling);\n range.setStartBefore(fake);\n range.collapse(true);\n this.__moveCursorInEditableSibling(jodit, leftSibling, fake, range);\n this.__addBrInEmptyBlock(fake, rightSibling, range);\n Dom.safeRemove(fake);\n jodit.s.selectRange(range);\n return false;\n }\n __moveContentInLeftSibling(fake, leftSibling, rightSibling) {\n leftSibling = this.__defineRightLeftBox(leftSibling);\n if (!Dom.isList(rightSibling) &&\n !Dom.isTag(rightSibling, 'table') &&\n Dom.isBlock(rightSibling) &&\n Dom.isBlock(leftSibling)) {\n Dom.append(leftSibling, fake);\n Dom.moveContent(rightSibling, leftSibling);\n Dom.safeRemove(rightSibling);\n }\n // Remove empty right LI\n if (Dom.isList(rightSibling) &&\n Dom.isLeaf(rightSibling.firstElementChild) &&\n Dom.isEmpty(rightSibling.firstElementChild)) {\n Dom.safeRemove(rightSibling.firstElementChild);\n }\n }\n /**\n * If left sibling is list - return last leaf\n */\n __defineRightLeftBox(leftSibling) {\n if (!Dom.isList(leftSibling)) {\n return leftSibling;\n }\n let lastLeaf = leftSibling.lastElementChild;\n if (!Dom.isLeaf(lastLeaf)) {\n lastLeaf = this.j.createInside.element('li');\n Dom.append(leftSibling, lastLeaf);\n }\n return lastLeaf;\n }\n /**\n * Add BR in empty blocks left and right(for table cell)\n */\n __addBrInEmptyBlock(fake, rightSibling, range) {\n const jodit = this.j;\n if (fake.isConnected &&\n Dom.isBlock(fake.parentNode) &&\n !fake.nextSibling &&\n !fake.previousSibling) {\n const br = jodit.createInside.element('br');\n Dom.after(fake, br);\n range.setStartBefore(br);\n range.collapse(true);\n }\n // Add BR in the right empty table cell\n if (Dom.isTag(rightSibling, 'table')) {\n const firstCell = $$('td,th', rightSibling).shift();\n if (Dom.isCell(firstCell) && Dom.isEmpty(firstCell)) {\n Dom.append(firstCell, jodit.createInside.element('br'));\n }\n }\n }\n __moveCursorInEditableSibling(jodit, leftSibling, fake, range) {\n if (!leftSibling || !Dom.isText(leftSibling)) {\n const root = Dom.closest(fake, Dom.isBlock, jodit.editor) ?? jodit.editor;\n const leftText = Dom.prev(fake, Dom.isText, root);\n if (leftText) {\n range.setStartAfter(leftText);\n range.collapse(true);\n Dom.safeRemove(fake);\n }\n }\n }\n}\ndeleteCommand.requires = ['backspace'];\npluginSystem.add('deleteCommand', deleteCommand);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.controls.subscript = {\n tags: ['sub'],\n tooltip: 'subscript'\n};\nConfig.prototype.controls.superscript = {\n tags: ['sup'],\n tooltip: 'superscript'\n};\nConfig.prototype.controls.bold = {\n tagRegExp: /^(strong|b)$/i,\n tags: ['strong', 'b'],\n css: {\n 'font-weight': ['bold', '700']\n },\n tooltip: 'Bold'\n};\nConfig.prototype.controls.italic = {\n tagRegExp: /^(em|i)$/i,\n tags: ['em', 'i'],\n css: {\n 'font-style': 'italic'\n },\n tooltip: 'Italic'\n};\nConfig.prototype.controls.underline = {\n tagRegExp: /^(u)$/i,\n tags: ['u'],\n css: {\n 'text-decoration-line': 'underline'\n },\n tooltip: 'Underline'\n};\nConfig.prototype.controls.strikethrough = {\n tagRegExp: /^(s)$/i,\n tags: ['s'],\n css: {\n 'text-decoration-line': 'line-through'\n },\n tooltip: 'Strike through'\n};\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M747 1521q74 32 140 32 376 0 376-335 0-114-41-180-27-44-61.5-74t-67.5-46.5-80.5-25-84-10.5-94.5-2q-73 0-101 10 0 53-.5 159t-.5 158q0 8-1 67.5t-.5 96.5 4.5 83.5 12 66.5zm-14-746q42 7 109 7 82 0 143-13t110-44.5 74.5-89.5 25.5-142q0-70-29-122.5t-79-82-108-43.5-124-14q-50 0-130 13 0 50 4 151t4 152q0 27-.5 80t-.5 79q0 46 1 69zm-541 889l2-94q15-4 85-16t106-27q7-12 12.5-27t8.5-33.5 5.5-32.5 3-37.5.5-34v-65.5q0-982-22-1025-4-8-22-14.5t-44.5-11-49.5-7-48.5-4.5-30.5-3l-4-83q98-2 340-11.5t373-9.5q23 0 68.5.5t67.5.5q70 0 136.5 13t128.5 42 108 71 74 104.5 28 137.5q0 52-16.5 95.5t-39 72-64.5 57.5-73 45-84 40q154 35 256.5 134t102.5 248q0 100-35 179.5t-93.5 130.5-138 85.5-163.5 48.5-176 14q-44 0-132-3t-132-3q-106 0-307 11t-231 12z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M384 1662l17-85q6-2 81.5-21.5t111.5-37.5q28-35 41-101 1-7 62-289t114-543.5 52-296.5v-25q-24-13-54.5-18.5t-69.5-8-58-5.5l19-103q33 2 120 6.5t149.5 7 120.5 2.5q48 0 98.5-2.5t121-7 98.5-6.5q-5 39-19 89-30 10-101.5 28.5t-108.5 33.5q-8 19-14 42.5t-9 40-7.5 45.5-6.5 42q-27 148-87.5 419.5t-77.5 355.5q-2 9-13 58t-20 90-16 83.5-6 57.5l1 18q17 4 185 31-3 44-16 99-11 0-32.5 1.5t-32.5 1.5q-29 0-87-10t-86-10q-138-2-206-2-51 0-143 9t-121 11z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1760 896q14 0 23 9t9 23v64q0 14-9 23t-23 9h-1728q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h1728zm-1277-64q-28-35-51-80-48-97-48-188 0-181 134-309 133-127 393-127 50 0 167 19 66 12 177 48 10 38 21 118 14 123 14 183 0 18-5 45l-12 3-84-6-14-2q-50-149-103-205-88-91-210-91-114 0-182 59-67 58-67 146 0 73 66 140t279 129q69 20 173 66 58 28 95 52h-743zm507 256h411q7 39 7 92 0 111-41 212-23 55-71 104-37 35-109 81-80 48-153 66-80 21-203 21-114 0-195-23l-140-40q-57-16-72-28-8-8-8-22v-13q0-108-2-156-1-30 0-68l2-37v-44l102-2q15 34 30 71t22.5 56 12.5 27q35 57 80 94 43 36 105 57 59 22 132 22 64 0 139-27 77-26 122-86 47-61 47-129 0-84-81-157-34-29-137-71z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1025 1369v167h-248l-159-252-24-42q-8-9-11-21h-3l-9 21q-10 20-25 44l-155 250h-258v-167h128l197-291-185-272h-137v-168h276l139 228q2 4 23 42 8 9 11 21h3q3-9 11-21l25-42 140-228h257v168h-125l-184 267 204 296h109zm639 217v206h-514l-4-27q-3-45-3-46 0-64 26-117t65-86.5 84-65 84-54.5 65-54 26-64q0-38-29.5-62.5t-70.5-24.5q-51 0-97 39-14 11-36 38l-105-92q26-37 63-66 80-65 188-65 110 0 178 59.5t68 158.5q0 66-34.5 118.5t-84 86-99.5 62.5-87 63-41 73h232v-80h126z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1025 1369v167h-248l-159-252-24-42q-8-9-11-21h-3l-9 21q-10 20-25 44l-155 250h-258v-167h128l197-291-185-272h-137v-168h276l139 228q2 4 23 42 8 9 11 21h3q3-9 11-21l25-42 140-228h257v168h-125l-184 267 204 296h109zm637-679v206h-514l-3-27q-4-28-4-46 0-64 26-117t65-86.5 84-65 84-54.5 65-54 26-64q0-38-29.5-62.5t-70.5-24.5q-51 0-97 39-14 11-36 38l-105-92q26-37 63-66 83-65 188-65 110 0 178 59.5t68 158.5q0 56-24.5 103t-62 76.5-81.5 58.5-82 50.5-65.5 51.5-30.5 63h232v-80h126z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M176 223q-37-2-45-4l-3-88q13-1 40-1 60 0 112 4 132 7 166 7 86 0 168-3 116-4 146-5 56 0 86-2l-1 14 2 64v9q-60 9-124 9-60 0-79 25-13 14-13 132 0 13 .5 32.5t.5 25.5l1 229 14 280q6 124 51 202 35 59 96 92 88 47 177 47 104 0 191-28 56-18 99-51 48-36 65-64 36-56 53-114 21-73 21-229 0-79-3.5-128t-11-122.5-13.5-159.5l-4-59q-5-67-24-88-34-35-77-34l-100 2-14-3 2-86h84l205 10q76 3 196-10l18 2q6 38 6 51 0 7-4 31-45 12-84 13-73 11-79 17-15 15-15 41 0 7 1.5 27t1.5 31q8 19 22 396 6 195-15 304-15 76-41 122-38 65-112 123-75 57-182 89-109 33-255 33-167 0-284-46-119-47-179-122-61-76-83-195-16-80-16-237v-333q0-188-17-213-25-36-147-39zm1488 1409v-64q0-14-9-23t-23-9h-1472q-14 0-23 9t-9 23v64q0 14 9 23t23 9h1472q14 0 23-9t9-23z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { pluginSystem } from \"../../core/global.js\";\nimport { isArray } from \"../../core/helpers/index.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport \"./interface.js\";\nimport \"./config.js\";\nimport boldIcon from \"./icons/bold.svg.js\";\nimport italicIcon from \"./icons/italic.svg.js\";\nimport strikethroughIcon from \"./icons/strikethrough.svg.js\";\nimport subscriptIcon from \"./icons/subscript.svg.js\";\nimport superscriptIcon from \"./icons/superscript.svg.js\";\nimport underlineIcon from \"./icons/underline.svg.js\";\n/**\n * Adds `bold`,` strikethrough`, `underline` and` italic` buttons to Jodit\n */\nexport function bold(editor) {\n const callBack = (command) => {\n const control = Config.defaultOptions.controls[command], cssOptions = {\n ...control.css\n };\n let cssRules;\n Object.keys(cssOptions).forEach((key) => {\n if (!cssRules) {\n cssRules = {};\n }\n cssRules[key] = isArray(cssOptions[key])\n ? cssOptions[key][0]\n : cssOptions[key];\n });\n editor.s.commitStyle({\n element: control.tags ? control.tags[0] : undefined\n });\n editor.synchronizeValues();\n return false;\n };\n ['bold', 'italic', 'underline', 'strikethrough'].forEach(name => {\n editor.registerButton({\n name,\n group: 'font-style'\n });\n });\n ['superscript', 'subscript'].forEach(name => {\n editor.registerButton({\n name,\n group: 'script'\n });\n });\n editor\n .registerCommand('bold', {\n exec: callBack,\n hotkeys: ['ctrl+b', 'cmd+b']\n })\n .registerCommand('italic', {\n exec: callBack,\n hotkeys: ['ctrl+i', 'cmd+i']\n })\n .registerCommand('underline', {\n exec: callBack,\n hotkeys: ['ctrl+u', 'cmd+u']\n })\n .registerCommand('strikethrough', {\n exec: callBack\n })\n .registerCommand('subscript', {\n exec: callBack\n })\n .registerCommand('superscript', {\n exec: callBack\n });\n}\npluginSystem.add('bold', bold);\nIcon.set('bold', boldIcon)\n .set('italic', italicIcon)\n .set('strikethrough', strikethroughIcon)\n .set('subscript', subscriptIcon)\n .set('superscript', superscriptIcon)\n .set('underline', underlineIcon);\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 459 459\\\"> <g> <path d=\\\"M229.5,0C102,0,0,102,0,229.5S102,459,229.5,459c20.4,0,38.25-17.85,38.25-38.25c0-10.2-2.55-17.85-10.2-25.5 c-5.1-7.65-10.2-15.3-10.2-25.5c0-20.4,17.851-38.25,38.25-38.25h45.9c71.4,0,127.5-56.1,127.5-127.5C459,91.8,357,0,229.5,0z M89.25,229.5c-20.4,0-38.25-17.85-38.25-38.25S68.85,153,89.25,153s38.25,17.85,38.25,38.25S109.65,229.5,89.25,229.5z M165.75,127.5c-20.4,0-38.25-17.85-38.25-38.25S145.35,51,165.75,51S204,68.85,204,89.25S186.15,127.5,165.75,127.5z M293.25,127.5c-20.4,0-38.25-17.85-38.25-38.25S272.85,51,293.25,51s38.25,17.85,38.25,38.25S313.65,127.5,293.25,127.5z M369.75,229.5c-20.4,0-38.25-17.85-38.25-38.25S349.35,153,369.75,153S408,170.85,408,191.25S390.15,229.5,369.75,229.5z\\\" /> </g> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/index.js\";\nimport { attr, hasBrowserColorPicker, isArray, isFunction, isPlainObject, normalizeColor, refs } from \"../../../core/helpers/index.js\";\nimport { Icon } from \"../../../core/ui/index.js\";\nimport paletteIcon from \"./palette.svg.js\";\nIcon.set('palette', paletteIcon);\n/**\n * Build color picker\n *\n * @param callback - Callback 'function (color) \\{\\}'\n * @param coldColor - Color value ex. #fff or rgb(123, 123, 123) or rgba(123, 123, 123, 1)\n * @example\n * ```javascript\n * const tabs = TabsWidget(editor, {\n * 'Text': ColorPickerWidget(editor, function (color) {\n * box.style.color = color;\n * }, box.style.color),\n * 'Background': ColorPickerWidget(editor, function (color) {\n * box.style.backgroundColor = color;\n * }, box.style.backgroundColor),\n * });\n * ```\n */\nexport const ColorPickerWidget = (editor, callback, coldColor) => {\n const cn = 'jodit-color-picker', valueHex = normalizeColor(coldColor), form = editor.c.div(cn), iconPalette = editor.o.textIcons\n ? `<span>${editor.i18n('palette')}</span>`\n : Icon.get('palette'), eachColor = (colors) => {\n const stack = [];\n if (isPlainObject(colors)) {\n Object.keys(colors).forEach(key => {\n stack.push(`<div class=\"${cn}__group ${cn}__group-${key}\">`);\n stack.push(eachColor(colors[key]));\n stack.push('</div>');\n });\n }\n else if (isArray(colors)) {\n colors.forEach(color => {\n stack.push(`<span class='${cn}__color-item ${valueHex === color\n ? cn + '__color-item_active_true'\n : ''}' title=\"${color}\" style=\"background-color:${color}\" data-color=\"${color}\"></span>`);\n });\n }\n return stack.join('');\n };\n form.appendChild(editor.c.fromHTML(`<div class=\"${cn}__groups\">${eachColor(editor.o.colors)}</div>`));\n form.appendChild(editor.c.fromHTML(`<div data-ref=\"extra\" class=\"${cn}__extra\"></div>`));\n const { extra } = refs(form);\n if (editor.o.showBrowserColorPicker && hasBrowserColorPicker()) {\n extra.appendChild(editor.c.fromHTML(`<div class=\"${cn}__native\">${iconPalette}<input type=\"color\" value=\"#ffffff\"/></div>`));\n editor.e.on(form, 'change', (e) => {\n e.stopPropagation();\n const target = e.target;\n if (!target || !target.tagName || !Dom.isTag(target, 'input')) {\n return;\n }\n const color = target.value || '';\n if (isFunction(callback)) {\n callback(color);\n }\n e.preventDefault();\n });\n }\n editor.e.on(form, 'mousedown touchend', (e) => {\n e.stopPropagation();\n e.preventDefault();\n let target = e.target;\n if ((!target ||\n !target.tagName ||\n Dom.isTag(target, 'svg') ||\n Dom.isTag(target, 'path')) &&\n target.parentNode) {\n target = Dom.closest(target.parentNode, 'span', editor.editor);\n }\n if (!Dom.isTag(target, 'span') ||\n !target.classList.contains(cn + '__color-item')) {\n return;\n }\n const color = attr(target, '-color') || '';\n if (callback && isFunction(callback)) {\n callback(color);\n }\n });\n editor.e.fire('afterGenerateColorPicker', form, extra, callback, valueHex);\n return form;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Component } from \"../../../core/component/index.js\";\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { isFunction } from \"../../../core/helpers/checker/is-function.js\";\nimport { attr } from \"../../../core/helpers/utils/attr.js\";\nimport { Button, UIElement } from \"../../../core/ui/index.js\";\n/**\n * Build tabs system\n *\n * @param tabs - PlainObject where 'key' will be tab's Title and `value` is tab's content\n * @param state - You can use for this param any HTML element for remembering active tab\n *\n * @example\n * ```javascript\n * const editor = Jodit.make('#editor');\n * const tabs = Jodit.modules.TabsWidget(editor, [\n * { name: 'Images', content: '<div>Images</div>' },\n * {\n * name: 'Title 2',\n * content: editor.c.fromHTML('<div>Some content</div>')\n * },\n * {\n * name: 'Color Picker',\n * content: ColorPickerWidget(\n * editor,\n * function (color) {\n * box.style.color = color;\n * },\n * box.style.color\n * )\n * }\n * ]);\n * ```\n */\nexport const TabsWidget = (jodit, tabs, state) => {\n const box = jodit.c.div('jodit-tabs');\n const tabBox = jodit.c.div('jodit-tabs__wrapper');\n const buttons = jodit.c.div('jodit-tabs__buttons');\n attr(buttons, {\n role: 'tablist',\n 'aria-orientation': 'horizontal'\n });\n const nameToTab = {};\n const buttonList = [];\n let firstTab = '';\n box.appendChild(buttons);\n box.appendChild(tabBox);\n const setActive = (tab) => {\n if (!nameToTab[tab]) {\n return;\n }\n buttonList.forEach(b => {\n b.state.activated = false;\n });\n Object.values(nameToTab).forEach(({ tab }) => tab.classList.remove('jodit-tab_active'));\n nameToTab[tab].button.state.activated = true;\n nameToTab[tab].tab.classList.add('jodit-tab_active');\n };\n tabs.forEach(({ icon, name, content }) => {\n const tab = jodit.c.div('jodit-tab');\n attr(tab, {\n role: 'tabpanel'\n });\n const button = Button(jodit, icon || name, name);\n button.state.role = 'tab';\n // Stop lose the focus\n jodit.e.on(button.container, 'pointerdown', (e) => e.preventDefault());\n if (!firstTab) {\n firstTab = name;\n }\n buttons.appendChild(button.container);\n buttonList.push(button);\n button.container.classList.add('jodit-tabs__button', 'jodit-tabs__button_columns_' + tabs.length);\n if (!isFunction(content)) {\n tab.appendChild(Component.isInstanceOf(content, UIElement)\n ? content.container\n : content);\n }\n else {\n tab.appendChild(jodit.c.div('jodit-tab_empty'));\n }\n tabBox.appendChild(tab);\n button.onAction(() => {\n setActive(name);\n if (isFunction(content) && !Dom.isElement(content)) {\n content.call(jodit);\n }\n if (state) {\n state.activeTab = name;\n }\n return false;\n });\n nameToTab[name] = {\n button,\n tab\n };\n });\n Object.values(nameToTab).forEach(({ button }) => {\n button.container.style.width = (100 / tabs.length).toFixed(10) + '%';\n });\n const tab = !state || !state.activeTab || !nameToTab[state.activeTab]\n ? firstTab\n : state.activeTab;\n setActive(tab);\n if (state) {\n let activeTab = state.activeTab;\n Object.defineProperty(state, 'activeTab', {\n configurable: true,\n enumerable: false,\n get() {\n return activeTab;\n },\n set(value) {\n activeTab = value;\n setActive(value);\n }\n });\n }\n return box;\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { $$, attr, isFunction } from \"../../../core/helpers/index.js\";\nimport { UIBlock, UIButton, UIForm, UIInput } from \"../../../core/ui/index.js\";\nimport { TabsWidget } from \"../tabs/tabs.js\";\n/**\n * Generate 3 tabs\n * upload - Use Drag and Drop\n * url - By specifying the image url\n * filebrowser - After opening the file browser. In the absence of one of the parameters will be less tabs\n *\n * @param callbacks - Object with keys `url`, `upload` and `filebrowser`, values which are callback\n * functions with different parameters\n */\nexport const FileSelectorWidget = (editor, callbacks, elm, close, isImage = true) => {\n let currentImage;\n const tabs = [];\n if (callbacks.upload &&\n editor.o.uploader &&\n (editor.o.uploader.url || editor.o.uploader.insertImageAsBase64URI)) {\n const dragBox = editor.c.fromHTML('<div class=\"jodit-drag-and-drop__file-box\">' +\n `<strong>${editor.i18n(isImage ? 'Drop image' : 'Drop file')}</strong>` +\n `<span><br>${editor.i18n('or click')}</span>` +\n `<input type=\"file\" accept=\"${isImage ? 'image/*' : '*'}\" tabindex=\"-1\" dir=\"auto\" multiple=\"\"/>` +\n '</div>');\n editor.uploader.bind(dragBox, resp => {\n const handler = isFunction(callbacks.upload)\n ? callbacks.upload\n : editor.o.uploader.defaultHandlerSuccess;\n if (isFunction(handler)) {\n handler.call(editor, resp);\n }\n editor.e.fire('closeAllPopups');\n }, error => {\n editor.message.error(error.message);\n editor.e.fire('closeAllPopups');\n });\n tabs.push({\n icon: 'upload',\n name: 'Upload',\n content: dragBox\n });\n }\n if (callbacks.filebrowser) {\n if (editor.o.filebrowser.ajax.url || editor.o.filebrowser.items.url) {\n tabs.push({\n icon: 'folder',\n name: 'Browse',\n content: () => {\n close && close();\n if (callbacks.filebrowser) {\n editor.filebrowser.open(callbacks.filebrowser, isImage);\n }\n }\n });\n }\n }\n if (callbacks.url) {\n const button = new UIButton(editor, {\n type: 'submit',\n variant: 'primary',\n text: 'Insert'\n }), form = new UIForm(editor, [\n new UIInput(editor, {\n required: true,\n label: 'URL',\n name: 'url',\n type: 'text',\n placeholder: 'https://'\n }),\n new UIInput(editor, {\n name: 'text',\n label: 'Alternative text'\n }),\n new UIBlock(editor, [button])\n ]);\n currentImage = null;\n if (elm &&\n !Dom.isText(elm) &&\n !Dom.isComment(elm) &&\n (Dom.isTag(elm, 'img') || $$('img', elm).length)) {\n currentImage = elm.tagName === 'IMG' ? elm : $$('img', elm)[0];\n val(form.container, 'input[name=url]', attr(currentImage, 'src'));\n val(form.container, 'input[name=text]', attr(currentImage, 'alt'));\n button.state.text = 'Update';\n }\n if (elm && Dom.isTag(elm, 'a')) {\n val(form.container, 'input[name=url]', attr(elm, 'href'));\n val(form.container, 'input[name=text]', attr(elm, 'title'));\n button.state.text = 'Update';\n }\n form.onSubmit(data => {\n if (isFunction(callbacks.url)) {\n callbacks.url.call(editor, data.url, data.text);\n }\n });\n tabs.push({\n icon: 'link',\n name: 'URL',\n content: form.container\n });\n }\n return TabsWidget(editor, tabs);\n};\nfunction val(elm, selector, value) {\n const child = elm.querySelector(selector);\n if (!child) {\n return '';\n }\n if (value) {\n child.value = value;\n }\n return child.value;\n}\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M896 1152q0-36-20-69-1-1-15.5-22.5t-25.5-38-25-44-21-50.5q-4-16-21-16t-21 16q-7 23-21 50.5t-25 44-25.5 38-15.5 22.5q-20 33-20 69 0 53 37.5 90.5t90.5 37.5 90.5-37.5 37.5-90.5zm512-128q0 212-150 362t-362 150-362-150-150-362q0-145 81-275 6-9 62.5-90.5t101-151 99.5-178 83-201.5q9-30 34-47t51-17 51.5 17 33.5 47q28 93 83 201.5t99.5 178 101 151 62.5 90.5q81 127 81 275z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { css, dataBind, isJoditObject } from \"../../core/helpers/index.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport { ColorPickerWidget, TabsWidget } from \"../../modules/widget/index.js\";\nimport brushIcon from \"./brush.svg.js\";\nIcon.set('brush', brushIcon);\nConfig.prototype.controls.brushCell = {\n isVisible: (editor) => {\n return !editor.o.disablePlugins.includes('color');\n },\n icon: 'brush',\n popup: (editor, _, close) => {\n if (!isJoditObject(editor)) {\n return;\n }\n const tableModule = editor.getInstance('Table', editor.o), selected = tableModule.getAllSelectedCells();\n if (!selected.length) {\n return false;\n }\n const makeColorPicker = (key) => ColorPickerWidget(editor, (value) => {\n selected.forEach(cell => {\n css(cell, key, value);\n });\n editor.lock();\n editor.synchronizeValues();\n close();\n editor.unlock();\n }, css(selected[0], key));\n return TabsWidget(editor, [\n {\n name: 'Background',\n content: makeColorPicker('background-color')\n },\n { name: 'Text', content: makeColorPicker('color') },\n { name: 'Border', content: makeColorPicker('border-color') }\n ]);\n },\n tooltip: 'Background'\n};\nConfig.prototype.controls.brush = {\n isVisible: (editor) => {\n return !editor.o.disablePlugins.includes('color');\n },\n update(editor, button) {\n const color = dataBind(button, 'color');\n const update = (key, value) => {\n if (value && value !== css(editor.editor, key).toString()) {\n button.state.icon.fill = value;\n return;\n }\n };\n if (color) {\n const mode = dataBind(button, 'color');\n update(mode === 'color' ? mode : 'background-color', color);\n return;\n }\n const current = editor.s.current();\n if (current && !button.state.disabled) {\n const currentBpx = Dom.closest(current, Dom.isElement, editor.editor) || editor.editor;\n update('color', css(currentBpx, 'color').toString());\n update('background-color', css(currentBpx, 'background-color').toString());\n }\n button.state.icon.fill = '';\n button.state.activated = false;\n },\n popup: (editor, current, close, button) => {\n let colorHEX = '', bg_color = '', tabs = [], currentElement = null;\n if (current && current !== editor.editor && Dom.isNode(current)) {\n if (Dom.isElement(current) &&\n editor.s.isCollapsed() &&\n !Dom.isTag(current, new Set(['br', 'hr']))) {\n currentElement = current;\n }\n Dom.up(current, (node) => {\n if (Dom.isHTMLElement(node)) {\n const color = css(node, 'color', true), background = css(node, 'background-color', true);\n if (color) {\n colorHEX = color.toString();\n return true;\n }\n if (background) {\n bg_color = background.toString();\n return true;\n }\n }\n }, editor.editor);\n }\n const backgroundTag = ColorPickerWidget(editor, (value) => {\n if (!currentElement) {\n editor.execCommand('background', false, value);\n }\n else {\n currentElement.style.backgroundColor = value;\n }\n dataBind(button, 'color', value);\n dataBind(button, 'color-mode', 'background');\n close();\n }, bg_color);\n const colorTab = ColorPickerWidget(editor, (value) => {\n if (!currentElement) {\n editor.execCommand('forecolor', false, value);\n }\n else {\n currentElement.style.color = value;\n }\n dataBind(button, 'color', value);\n dataBind(button, 'color-mode', 'color');\n close();\n }, colorHEX);\n tabs = [\n {\n name: 'Background',\n content: backgroundTag\n },\n {\n name: 'Text',\n content: colorTab\n }\n ];\n if (editor.o.colorPickerDefaultTab !== 'background') {\n tabs = tabs.reverse();\n }\n return TabsWidget(editor, tabs, currentElement);\n },\n exec(jodit, current, { button }) {\n const mode = dataBind(button, 'color-mode'), color = dataBind(button, 'color');\n if (!mode) {\n return false;\n }\n if (current &&\n current !== jodit.editor &&\n Dom.isNode(current) &&\n Dom.isElement(current)) {\n switch (mode) {\n case 'color':\n current.style.color = color;\n break;\n case 'background':\n current.style.backgroundColor = color;\n break;\n }\n }\n else {\n jodit.execCommand(mode === 'background' ? mode : 'forecolor', false, color);\n }\n },\n tooltip: 'Fill color or set the text color'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { pluginSystem } from \"../../core/global.js\";\nimport { normalizeColor } from \"../../core/helpers/index.js\";\nimport \"./config.js\";\n/**\n * Process commands `background` and `forecolor`\n */\nexport function color(editor) {\n editor.registerButton({\n name: 'brush',\n group: 'color'\n });\n const callback = (command, second, third) => {\n const colorHEX = normalizeColor(third);\n switch (command) {\n case 'background':\n editor.s.commitStyle({\n attributes: {\n style: {\n backgroundColor: !colorHEX\n ? ''\n : colorHEX\n }\n }\n });\n break;\n case 'forecolor':\n editor.s.commitStyle({\n attributes: {\n style: {\n color: !colorHEX ? '' : colorHEX\n }\n }\n });\n break;\n }\n editor.synchronizeValues();\n return false;\n };\n editor\n .registerCommand('forecolor', callback)\n .registerCommand('background', callback);\n}\npluginSystem.add('color', color);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { BR } from \"../../../core/constants.js\";\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { scrollIntoViewIfNeeded } from \"../../../core/helpers/utils/scroll-into-view.js\";\n/**\n * Checks the possibility and necessity of inserting a BR instead of a block\n * @private\n */\nexport function checkBR(fake, jodit, shiftKeyPressed) {\n const isMultiLineBlock = Boolean(Dom.closest(fake, ['pre', 'blockquote'], jodit.editor));\n const isBRMode = jodit.o.enter.toLowerCase() === BR.toLowerCase();\n // if you use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>\n if (isBRMode ||\n (shiftKeyPressed && !isMultiLineBlock) ||\n (!shiftKeyPressed && isMultiLineBlock)) {\n // 2 BR before\n if (isMultiLineBlock && checkSeveralBR(fake)) {\n return false;\n }\n const br = jodit.createInside.element('br');\n Dom.before(fake, br);\n if (!Dom.findNotEmptySibling(br, false)) {\n const clone = br.cloneNode();\n Dom.after(br, clone);\n Dom.before(clone, fake);\n }\n scrollIntoViewIfNeeded(br, jodit.editor, jodit.ed);\n return true;\n }\n return false;\n}\nfunction checkSeveralBR(fake) {\n // 2 BR before\n const preBr = brBefore(brBefore(fake));\n if (preBr) {\n Dom.safeRemove(brBefore(fake));\n Dom.safeRemove(preBr);\n return true;\n }\n return false;\n}\nfunction brBefore(start) {\n if (!start) {\n return false;\n }\n const prev = Dom.findSibling(start, true);\n if (!prev || !Dom.isTag(prev, 'br')) {\n return false;\n }\n return prev;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * Inside quote/tables cell, etc. you can't split so just add br\n * @private\n */\nexport function checkUnsplittableBox(fake, jodit, currentBox) {\n if (!Dom.canSplitBlock(currentBox)) {\n Dom.before(fake, jodit.createInside.element('br'));\n return false;\n }\n return true;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport * as consts from \"../../../core/constants.js\";\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * Finds a suitable parent block container\n * @private\n */\nexport function getBlockWrapper(fake, jodit, tagReg = consts.IS_BLOCK) {\n let node = fake;\n const root = jodit.editor;\n do {\n if (!node || node === root) {\n break;\n }\n if (tagReg.test(node.nodeName)) {\n if (Dom.isLeaf(node)) {\n return node;\n }\n return (getBlockWrapper(node.parentNode, jodit, /^li$/i) ||\n node);\n }\n node = node.parentNode;\n } while (node && node !== root);\n return null;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * @private\n */\nexport function hasPreviousBlock(fake, jodit) {\n return Boolean(Dom.prev(fake, elm => Dom.isBlock(elm) || Dom.isImage(elm), jodit.editor));\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { scrollIntoViewIfNeeded } from \"../../../core/helpers/utils/scroll-into-view.js\";\n/**\n * Insert default paragraph\n * @private\n */\nexport function insertParagraph(fake, editor, wrapperTag, style) {\n const isBR = wrapperTag.toLowerCase() === 'br', { createInside } = editor, p = createInside.element(wrapperTag), br = createInside.element('br');\n if (!isBR) {\n p.appendChild(br);\n }\n if (style && style.cssText) {\n p.setAttribute('style', style.cssText);\n }\n Dom.after(fake, p);\n Dom.before(isBR ? p : br, fake);\n scrollIntoViewIfNeeded(p, editor.editor, editor.ed);\n return p;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * Checks if the cursor is on the edge of a special tag and exits if so\n * @private\n */\nexport function moveCursorOutFromSpecialTags(jodit, fake, tags) {\n const { s } = jodit;\n const link = Dom.closest(fake, tags, jodit.editor);\n if (link) {\n if (s.cursorOnTheRight(link, fake)) {\n Dom.after(link, fake);\n }\n else if (s.cursorOnTheLeft(link, fake)) {\n Dom.before(link, fake);\n }\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { $$ } from \"../../../core/helpers/utils/selector.js\";\nimport { insertParagraph } from \"./insert-paragraph.js\";\n/**\n * Handles pressing the Enter key inside an empty LI inside a list\n * @private\n */\nexport function processEmptyLILeaf(fake, jodit, li) {\n const list = Dom.closest(li, ['ol', 'ul'], jodit.editor);\n if (!list) {\n return;\n }\n const parentLi = list.parentElement, listInsideLeaf = Dom.isLeaf(parentLi);\n const container = listInsideLeaf ? parentLi : list;\n // Empty element in the middle of the list\n const leftRange = jodit.s.createRange();\n leftRange.setStartAfter(li);\n leftRange.setEndAfter(list);\n const rightPart = leftRange.extractContents();\n Dom.after(container, fake);\n Dom.safeRemove(li);\n if (!$$('li', list).length) {\n Dom.safeRemove(list);\n }\n const newLi = insertParagraph(fake, jodit, listInsideLeaf ? 'li' : jodit.o.enter);\n if (!rightPart.querySelector('li')) {\n return;\n }\n if (listInsideLeaf) {\n newLi.appendChild(rightPart);\n }\n else {\n Dom.after(newLi, rightPart);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\nimport { scrollIntoViewIfNeeded } from \"../../../core/helpers/utils/scroll-into-view.js\";\nimport { insertParagraph } from \"./insert-paragraph.js\";\n/**\n * Splits a block element into two parts\n * and adds a new default block in the middle/start/end\n * @private\n */\nexport function splitFragment(fake, jodit, block) {\n const sel = jodit.s, { enter } = jodit.o;\n const defaultTag = enter.toLowerCase();\n const isLi = Dom.isLeaf(block);\n const canSplit = block.tagName.toLowerCase() === defaultTag || isLi;\n const cursorOnTheRight = sel.cursorOnTheRight(block, fake);\n const cursorOnTheLeft = sel.cursorOnTheLeft(block, fake);\n if (!canSplit && (cursorOnTheRight || cursorOnTheLeft)) {\n if (cursorOnTheRight) {\n Dom.after(block, fake);\n }\n else {\n Dom.before(block, fake);\n }\n insertParagraph(fake, jodit, defaultTag);\n if (cursorOnTheLeft && !cursorOnTheRight) {\n Dom.prepend(block, fake);\n }\n return;\n }\n const newP = sel.splitSelection(block, fake);\n scrollIntoViewIfNeeded(newP, jodit.editor, jodit.ed);\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * If there is no container outside,\n * then we wrap all the nearest inline nodes in a container\n * @private\n */\nexport function wrapText(fake, jodit) {\n let needWrap = fake;\n Dom.up(needWrap, node => {\n if (node && node.hasChildNodes() && node !== jodit.editor) {\n needWrap = node;\n }\n }, jodit.editor);\n const currentBox = Dom.wrapInline(needWrap, jodit.o.enter, jodit);\n if (Dom.isEmpty(currentBox)) {\n const br = jodit.createInside.element('br');\n currentBox.appendChild(br);\n Dom.before(br, fake);\n }\n return currentBox;\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BR, KEY_ENTER, PARAGRAPH } from \"../../core/constants.js\";\nimport { watch } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { isBoolean } from \"../../core/helpers/checker/is-boolean.js\";\nimport { Plugin } from \"../../core/plugin/plugin.js\";\nimport \"./interface.js\";\nimport { checkBR, checkUnsplittableBox, getBlockWrapper, hasPreviousBlock, insertParagraph, moveCursorOutFromSpecialTags, processEmptyLILeaf, splitFragment, wrapText } from \"./helpers/index.js\";\n/**\n * One of most important core plugins. It is responsible for all the browsers to have the same effect when the Enter\n * button is pressed. By default, it should insert the <p>\n */\nexport class enter extends Plugin {\n /** @override */\n afterInit(editor) {\n // use 'enter' option if no set\n const defaultTag = editor.o.enter.toLowerCase();\n const brMode = defaultTag === BR.toLowerCase();\n if (!editor.o.enterBlock) {\n editor.o.enterBlock = brMode\n ? PARAGRAPH\n : defaultTag;\n }\n editor.registerCommand('enter', (command, value, event = {}) => this.onEnter(event));\n }\n onEnterKeyDown(event) {\n if (event.key === KEY_ENTER) {\n const editor = this.j;\n const beforeEnter = editor.e.fire('beforeEnter', event);\n if (beforeEnter !== undefined) {\n return beforeEnter;\n }\n if (!editor.s.isCollapsed()) {\n editor.execCommand('Delete');\n }\n editor.s.focus();\n this.onEnter(event);\n editor.e.fire('afterEnter', event);\n editor.synchronizeValues(); // fire change\n return false;\n }\n }\n onEnter(event) {\n const { jodit } = this;\n const fake = jodit.createInside.fake();\n try {\n Dom.safeInsertNode(jodit.s.range, fake);\n moveCursorOutFromSpecialTags(jodit, fake, ['a']);\n let block = getBlockWrapper(fake, jodit);\n const isLi = Dom.isLeaf(block);\n // if use <br> defaultTag for break line or when was entered SHIFt key or in <td> or <th> or <blockquote>\n if ((!isLi || event?.shiftKey) &&\n checkBR(fake, jodit, event?.shiftKey)) {\n return false;\n }\n // wrap no wrapped element\n if (!block && !hasPreviousBlock(fake, jodit)) {\n block = wrapText(fake, jodit);\n }\n if (!block) {\n insertParagraph(fake, jodit, isLi ? 'li' : jodit.o.enter);\n return false;\n }\n if (!checkUnsplittableBox(fake, jodit, block)) {\n return false;\n }\n if (isLi && this.__isEmptyListLeaf(block)) {\n processEmptyLILeaf(fake, jodit, block);\n return false;\n }\n splitFragment(fake, jodit, block);\n }\n finally {\n fake.isConnected && jodit.s.setCursorBefore(fake);\n Dom.safeRemove(fake);\n }\n }\n __isEmptyListLeaf(li) {\n const result = this.j.e.fire('enterIsEmptyListLeaf', li);\n return isBoolean(result) ? result : Dom.isEmpty(li);\n }\n /** @override */\n beforeDestruct(editor) {\n editor.e.off('keydown.enter');\n }\n}\n__decorate([\n watch(':keydown.enter')\n], enter.prototype, \"onEnterKeyDown\", null);\npluginSystem.add('enter', enter);\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M789 559l-170 450q33 0 136.5 2t160.5 2q19 0 57-2-87-253-184-452zm-725 1105l2-79q23-7 56-12.5t57-10.5 49.5-14.5 44.5-29 31-50.5l237-616 280-724h128q8 14 11 21l205 480q33 78 106 257.5t114 274.5q15 34 58 144.5t72 168.5q20 45 35 57 19 15 88 29.5t84 20.5q6 38 6 57 0 4-.5 13t-.5 13q-63 0-190-8t-191-8q-76 0-215 7t-178 8q0-43 4-78l131-28q1 0 12.5-2.5t15.5-3.5 14.5-4.5 15-6.5 11-8 9-11 2.5-14q0-16-31-96.5t-72-177.5-42-100l-450-2q-26 58-76.5 195.5t-50.5 162.5q0 22 14 37.5t43.5 24.5 48.5 13.5 57 8.5 41 4q1 19 1 58 0 9-2 27-58 0-174.5-10t-174.5-10q-8 0-26.5 4t-21.5 4q-80 14-188 14z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1744 1408q33 0 42 18.5t-11 44.5l-126 162q-20 26-49 26t-49-26l-126-162q-20-26-11-44.5t42-18.5h80v-1024h-80q-33 0-42-18.5t11-44.5l126-162q20-26 49-26t49 26l126 162q20 26 11 44.5t-42 18.5h-80v1024h80zm-1663-1279l54 27q12 5 211 5 44 0 132-2t132-2q36 0 107.5.5t107.5.5h293q6 0 21 .5t20.5 0 16-3 17.5-9 15-17.5l42-1q4 0 14 .5t14 .5q2 112 2 336 0 80-5 109-39 14-68 18-25-44-54-128-3-9-11-48t-14.5-73.5-7.5-35.5q-6-8-12-12.5t-15.5-6-13-2.5-18-.5-16.5.5q-17 0-66.5-.5t-74.5-.5-64 2-71 6q-9 81-8 136 0 94 2 388t2 455q0 16-2.5 71.5t0 91.5 12.5 69q40 21 124 42.5t120 37.5q5 40 5 50 0 14-3 29l-34 1q-76 2-218-8t-207-10q-50 0-151 9t-152 9q-3-51-3-52v-9q17-27 61.5-43t98.5-29 78-27q19-42 19-383 0-101-3-303t-3-303v-117q0-2 .5-15.5t.5-25-1-25.5-3-24-5-14q-11-12-162-12-33 0-93 12t-80 26q-19 13-34 72.5t-31.5 111-42.5 53.5q-42-26-56-44v-383z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/index.js\";\nimport { trimChars } from \"../../core/helpers/string/trim.js\";\nimport { css } from \"../../core/helpers/utils/css.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport fontIcon from \"./icons/font.svg.js\";\nimport fontsizeIcon from \"./icons/fontsize.svg.js\";\n/**\n * Default font-size points\n */\nConfig.prototype.defaultFontSizePoints = 'px';\nIcon.set('font', fontIcon).set('fontsize', fontsizeIcon);\nConfig.prototype.controls.fontsize = {\n command: 'fontsize',\n data: {\n cssRule: 'font-size',\n normalise: (v, editor) => {\n if (/pt$/i.test(v) && editor.o.defaultFontSizePoints === 'pt') {\n return v.replace(/pt$/i, '');\n }\n return v;\n }\n },\n list: [8, 9, 10, 11, 12, 14, 16, 18, 24, 30, 32, 34, 36, 48, 60, 72, 96],\n textTemplate: (editor, value) => {\n return value + editor.o.defaultFontSizePoints;\n },\n childTemplate: (editor, key, value) => {\n return `${value}${editor.o.defaultFontSizePoints}`;\n },\n tooltip: 'Font size',\n value: (editor, button) => {\n const current = editor.s.current();\n if (!current) {\n return;\n }\n const box = Dom.closest(current, Dom.isElement, editor.editor);\n if (!box) {\n return;\n }\n const control = button.control;\n const cssKey = control.data?.cssRule || 'font-size';\n const value = css(box, cssKey);\n return value.toString();\n },\n isChildActive: (editor, button) => {\n const value = button.state.value;\n const normalize = button.control.data?.normalize ?? ((v) => v);\n return Boolean(value &&\n button.control.args &&\n normalize(button.control.args[0].toString()) ===\n normalize(value.toString()));\n },\n isActive: (editor, button) => {\n const value = button.state.value;\n if (!value) {\n return false;\n }\n const normalize = button.control.data?.normalize ?? ((v) => v);\n let keySet = button.control.data.cacheListSet;\n if (!keySet) {\n const keys = Object.keys(button.control.list).map(normalize);\n keySet = new Set(keys);\n button.control.data.cacheListSet = keySet;\n }\n return keySet.has(normalize(value.toString()));\n }\n};\nConfig.prototype.controls.font = {\n ...Config.prototype.controls.fontsize,\n command: 'fontname',\n textTemplate: (j, value) => {\n const [first] = value.split(',');\n return trimChars(first, '\"\\'');\n },\n list: {\n '': 'Default',\n 'Arial, Helvetica, sans-serif': 'Arial',\n \"'Courier New', Courier, monospace\": 'Courier New',\n 'Georgia, Palatino, serif': 'Georgia',\n \"'Lucida Sans Unicode', 'Lucida Grande', sans-serif\": 'Lucida Sans Unicode',\n 'Tahoma, Geneva, sans-serif': 'Tahoma',\n \"'Times New Roman', Times, serif\": 'Times New Roman',\n \"'Trebuchet MS', Helvetica, sans-serif\": 'Trebuchet MS',\n 'Helvetica, sans-serif': 'Helvetica',\n 'Impact, Charcoal, sans-serif': 'Impact',\n 'Verdana, Geneva, sans-serif': 'Verdana'\n },\n childTemplate: (editor, key, value) => {\n let isAvailable = false;\n try {\n isAvailable =\n key.indexOf('dings') === -1 &&\n document.fonts.check(`16px ${key}`, value);\n }\n catch { }\n return `<span data-style=\"${key}\" style=\"${isAvailable ? `font-family: ${key}!important;` : ''}\">${value}</span>`;\n },\n data: {\n cssRule: 'font-family',\n normalize: (v) => {\n return v\n .toLowerCase()\n .replace(/['\"]+/g, '')\n .replace(/[^a-z0-9-]+/g, ',');\n }\n },\n tooltip: 'Font family'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { pluginSystem } from \"../../core/global.js\";\nimport { normalizeSize } from \"../../core/helpers/index.js\";\nimport \"./config.js\";\n/**\n * Process commands `fontsize` and `fontname`\n */\nexport function font(editor) {\n editor\n .registerButton({\n name: 'font',\n group: 'font'\n })\n .registerButton({\n name: 'fontsize',\n group: 'font'\n });\n const callback = (command, second, third) => {\n switch (command) {\n case 'fontsize':\n editor.s.commitStyle({\n attributes: {\n style: {\n fontSize: normalizeSize(third, editor.o.defaultFontSizePoints)\n }\n }\n });\n break;\n case 'fontname':\n editor.s.commitStyle({\n attributes: {\n style: {\n fontFamily: third\n }\n }\n });\n break;\n }\n editor.synchronizeValues();\n return false;\n };\n editor\n .registerCommand('fontsize', callback)\n .registerCommand('fontname', callback);\n}\npluginSystem.add('font', font);\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"><path d=\\\"M1534 189v73q0 29-18.5 61t-42.5 32q-50 0-54 1-26 6-32 31-3 11-3 64v1152q0 25-18 43t-43 18h-108q-25 0-43-18t-18-43v-1218h-143v1218q0 25-17.5 43t-43.5 18h-108q-26 0-43.5-18t-17.5-43v-496q-147-12-245-59-126-58-192-179-64-117-64-259 0-166 88-286 88-118 209-159 111-37 417-37h479q25 0 43 18t18 43z\\\"/></svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { isPlainObject } from \"../../core/helpers/checker/is-plain-object.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport paragraphIcon from \"./paragraph.svg.js\";\nIcon.set('paragraph', paragraphIcon);\nConfig.prototype.controls.paragraph = {\n command: 'formatBlock',\n value(editor, button) {\n const control = button.control, current = editor.s.current();\n const currentBox = Dom.closest(current, Dom.isBlock, editor.editor);\n return currentBox?.nodeName.toLowerCase() ?? control.data?.currentValue;\n },\n update(editor, button) {\n const control = button.control, current = editor.s.current();\n if (!current) {\n return false;\n }\n const currentValue = button.state.value, list = control.list;\n if (isPlainObject(list) && list[currentValue.toString()]) {\n if (editor.o.textIcons) {\n button.state.text = list[currentValue.toString()].toString();\n }\n }\n return false;\n },\n data: {\n currentValue: 'p'\n },\n list: {\n p: 'Paragraph',\n h1: 'Heading 1',\n h2: 'Heading 2',\n h3: 'Heading 3',\n h4: 'Heading 4',\n blockquote: 'Quote',\n pre: 'Code'\n },\n isChildActive: (editor, button) => {\n return Boolean(button.state.value === button.control?.args?.[0]);\n },\n isActive: (editor, button) => {\n return (button.state.value !== editor.o.enter &&\n isPlainObject(button.control.list) &&\n Boolean(button.control.list[button.state.value]));\n },\n childTemplate: (e, key, value) => `<${key} style=\"margin:0;padding:0\"><span>${e.i18n(value)}</span></${key}>`,\n tooltip: 'Insert format block'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { pluginSystem } from \"../../core/global.js\";\nimport \"./config.js\";\n/**\n * Process command - `formatblock`\n */\nexport function formatBlock(editor) {\n editor.registerButton({\n name: 'paragraph',\n group: 'font'\n });\n editor.registerCommand('formatblock', (command, second, third) => {\n editor.s.commitStyle({\n element: third\n });\n editor.synchronizeValues();\n return false;\n });\n}\npluginSystem.add('formatBlock', formatBlock);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.commandToHotkeys = {\n removeFormat: ['ctrl+shift+m', 'cmd+shift+m'],\n insertOrderedList: ['ctrl+shift+7', 'cmd+shift+7'],\n insertUnorderedList: ['ctrl+shift+8, cmd+shift+8'],\n selectall: ['ctrl+a', 'cmd+a']\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { KEY_ESC } from \"../../core/constants.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { isArray, isString, keys, normalizeKeyAliases } from \"../../core/helpers/index.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport \"./config.js\";\n/**\n * Allow set hotkey for command or button\n */\nexport class hotkeys extends Plugin {\n constructor() {\n super(...arguments);\n this.onKeyPress = (event) => {\n const special = this.specialKeys[event.which];\n const character = (event.key || String.fromCharCode(event.which)).toLowerCase();\n const modif = [special || character];\n ['alt', 'ctrl', 'shift', 'meta'].forEach(specialKey => {\n if (event[specialKey + 'Key'] && special !== specialKey) {\n modif.push(specialKey);\n }\n });\n return normalizeKeyAliases(modif.join('+'));\n };\n this.specialKeys = {\n 8: 'backspace',\n 9: 'tab',\n 10: 'return',\n 13: 'return',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 19: 'pause',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'insert',\n 46: 'del',\n 59: ';',\n 61: '=',\n 91: 'meta',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9',\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111: '/',\n 112: 'f1',\n 113: 'f2',\n 114: 'f3',\n 115: 'f4',\n 116: 'f5',\n 117: 'f6',\n 118: 'f7',\n 119: 'f8',\n 120: 'f9',\n 121: 'f10',\n 122: 'f11',\n 123: 'f12',\n 144: 'numlock',\n 145: 'scroll',\n 173: '-',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: \"'\"\n };\n }\n /** @override */\n afterInit(editor) {\n keys(editor.o.commandToHotkeys, false).forEach((commandName) => {\n const shortcuts = editor.o.commandToHotkeys[commandName];\n if (shortcuts && (isArray(shortcuts) || isString(shortcuts))) {\n editor.registerHotkeyToCommand(shortcuts, commandName);\n }\n });\n let itIsHotkey = false;\n editor.e\n .off('.hotkeys')\n .on([editor.ow, editor.ew], 'keydown.hotkeys', (e) => {\n if (e.key === KEY_ESC) {\n return this.j.e.fire('escape', e);\n }\n })\n .on('keydown.hotkeys', (event) => {\n const shortcut = this.onKeyPress(event);\n const stop = {\n shouldStop: true\n };\n const resultOfFire = this.j.e.fire(shortcut + '.hotkey', event.type, stop);\n if (resultOfFire === false) {\n if (stop.shouldStop) {\n itIsHotkey = true;\n editor.e.stopPropagation('keydown');\n return false;\n }\n else {\n event.preventDefault();\n }\n }\n }, { top: true })\n .on('keyup.hotkeys', () => {\n if (itIsHotkey) {\n itIsHotkey = false;\n editor.e.stopPropagation('keyup');\n return false;\n }\n }, { top: true });\n }\n /** @override */\n beforeDestruct(jodit) {\n if (jodit.events) {\n jodit.e.off('.hotkeys');\n }\n }\n}\npluginSystem.add('hotkeys', hotkeys);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugins/iframe\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.iframeBaseUrl = '';\nConfig.prototype.iframeTitle = 'Jodit Editor';\nConfig.prototype.iframeDoctype = '<!DOCTYPE html>';\nConfig.prototype.iframeDefaultSrc = 'about:blank';\nConfig.prototype.iframeStyle =\n 'html{' +\n 'margin:0;' +\n 'padding:0;' +\n 'min-height: 100%;' +\n '}' +\n 'body{' +\n 'box-sizing:border-box;' +\n 'font-size:13px;' +\n 'line-height:1.6;' +\n 'padding:10px;' +\n 'margin:0;' +\n 'background:transparent;' +\n 'color:#000;' +\n 'position:' +\n 'relative;' +\n 'z-index:2;' +\n 'user-select:auto;' +\n 'margin:0px;' +\n 'overflow:auto;' +\n 'outline:none;' +\n '}' +\n 'table{' +\n 'width:100%;' +\n 'border:none;' +\n 'border-collapse:collapse;' +\n 'empty-cells: show;' +\n 'max-width: 100%;' +\n '}' +\n 'th,td{' +\n 'padding: 2px 5px;' +\n 'border:1px solid #ccc;' +\n '-webkit-user-select:text;' +\n '-moz-user-select:text;' +\n '-ms-user-select:text;' +\n 'user-select:text' +\n '}' +\n 'p{' +\n 'margin-top:0;' +\n '}' +\n '.jodit_editor .jodit_iframe_wrapper{' +\n 'display: block;' +\n 'clear: both;' +\n 'user-select: none;' +\n 'position: relative;' +\n '}' +\n '.jodit_editor .jodit_iframe_wrapper:after {' +\n 'position:absolute;' +\n 'content:\"\";' +\n 'z-index:1;' +\n 'top:0;' +\n 'left:0;' +\n 'right: 0;' +\n 'bottom: 0;' +\n 'cursor: pointer;' +\n 'display: block;' +\n 'background: rgba(0, 0, 0, 0);' +\n '} ' +\n '.jodit_disabled{' +\n 'user-select: none;' +\n '-o-user-select: none;' +\n '-moz-user-select: none;' +\n '-khtml-user-select: none;' +\n '-webkit-user-select: none;' +\n '-ms-user-select: none' +\n '}';\nConfig.prototype.iframeCSSLinks = [];\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { MODE_SOURCE } from \"../../core/constants.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { error } from \"../../core/helpers/index.js\";\nimport { attr, callPromise, css, defaultLanguage } from \"../../core/helpers/index.js\";\nimport \"./config.js\";\n/**\n * Iframe plugin - use `iframe` instead of DIV in editor. It can be need when you want to attach custom styles in editor\n * in backend of you system\n */\nexport function iframe(editor) {\n const opt = editor.options;\n editor.e\n .on('afterSetMode', () => {\n if (editor.isEditorMode()) {\n editor.s.focus();\n }\n })\n .on('generateDocumentStructure.iframe', (__doc, jodit) => {\n const doc = __doc ||\n jodit.iframe\n .contentWindow.document;\n doc.open();\n doc.write(opt.iframeDoctype +\n `<html dir=\"${opt.direction}\" class=\"jodit\" lang=\"${defaultLanguage(opt.language)}\">` +\n '<head>' +\n `<title>${opt.iframeTitle}</title>` +\n (opt.iframeBaseUrl\n ? `<base href=\"${opt.iframeBaseUrl}\"/>`\n : '') +\n '</head>' +\n '<body class=\"jodit-wysiwyg\"></body>' +\n '</html>');\n doc.close();\n if (opt.iframeCSSLinks) {\n opt.iframeCSSLinks.forEach(href => {\n const link = doc.createElement('link');\n link.setAttribute('rel', 'stylesheet');\n link.setAttribute('href', href);\n doc.head && doc.head.appendChild(link);\n });\n }\n if (opt.iframeStyle) {\n const style = doc.createElement('style');\n style.innerHTML = opt.iframeStyle;\n doc.head && doc.head.appendChild(style);\n }\n })\n .on('createEditor', () => {\n if (!opt.iframe) {\n return;\n }\n const iframe = editor.c.element('iframe');\n iframe.style.display = 'block';\n iframe.src = 'about:blank';\n iframe.className = 'jodit-wysiwyg_iframe';\n iframe.setAttribute('allowtransparency', 'true');\n iframe.setAttribute('tabindex', opt.tabIndex.toString());\n iframe.setAttribute('frameborder', '0');\n editor.workplace.appendChild(iframe);\n editor.iframe = iframe;\n const result = editor.e.fire('generateDocumentStructure.iframe', null, editor);\n const init = () => {\n if (!editor.iframe) {\n return false;\n }\n const doc = editor.iframe.contentWindow.document;\n editor.editorWindow = editor.iframe.contentWindow;\n const docMode = opt.editHTMLDocumentMode;\n const toggleEditable = () => {\n attr(doc.body, 'contenteditable', (editor.getMode() !== MODE_SOURCE &&\n !editor.getReadOnly()) ||\n null);\n };\n const clearMarkers = (html) => {\n const bodyReg = /<body.*<\\/body>/im, bodyMarker = '{%%BODY%%}', body = bodyReg.exec(html);\n if (body) {\n // remove markers\n html = html\n .replace(bodyReg, bodyMarker)\n .replace(/<span([^>]*?)>(.*?)<\\/span>/gim, '')\n .replace(/<span([^&]*?)>(.*?)<\\/span>/gim, '')\n .replace(bodyMarker, body[0]\n .replace(/(<body[^>]+?)min-height[\"'\\s]*:[\\s\"']*[0-9]+(px|%)/im, '$1')\n .replace(/(<body[^>]+?)([\\s]*[\"'])?contenteditable[\"'\\s]*=[\\s\"']*true[\"']?/im, '$1')\n .replace(/<(style|script|span)[^>]+jodit[^>]+>.*?<\\/\\1>/g, ''))\n .replace(/(class\\s*=\\s*)(['\"])([^\"']*)(jodit-wysiwyg|jodit)([^\"']*\\2)/g, '$1$2$3$5')\n .replace(/(<[^<]+?)\\sclass=\"[\\s]*\"/gim, '$1')\n .replace(/(<[^<]+?)\\sstyle=\"[\\s;]*\"/gim, '$1')\n .replace(/(<[^<]+?)\\sdir=\"[\\s]*\"/gim, '$1');\n }\n return html;\n };\n if (docMode) {\n const tag = editor.element.tagName;\n if (tag !== 'TEXTAREA' && tag !== 'INPUT') {\n throw error('If enable `editHTMLDocumentMode` - source element should be INPUT or TEXTAREA');\n }\n editor.e\n .on('beforeGetNativeEditorValue', () => clearMarkers(editor.o.iframeDoctype +\n doc.documentElement.outerHTML))\n .on('beforeSetNativeEditorValue', ({ value }) => {\n if (editor.isLocked) {\n return false;\n }\n if (/<(html|body)/i.test(value)) {\n const old = doc.documentElement.outerHTML;\n if (clearMarkers(old) !==\n clearMarkers(value)) {\n doc.open();\n doc.write(editor.o.iframeDoctype +\n clearMarkers(value));\n doc.close();\n editor.editor = doc.body;\n editor.e.fire('safeHTML', editor.editor);\n toggleEditable();\n editor.e.fire('prepareWYSIWYGEditor');\n editor.e.stopPropagation('beforeSetNativeEditorValue');\n }\n }\n else {\n doc.body.innerHTML = value;\n }\n return true;\n }, { top: true });\n }\n editor.editor = doc.body;\n editor.e.on('afterSetMode afterInit afterAddPlace', toggleEditable);\n if (opt.height === 'auto') {\n doc.documentElement &&\n (doc.documentElement.style.overflowY = 'hidden');\n const resizeIframe = editor.async.throttle((...args) => {\n editor.async.requestAnimationFrame(() => {\n if (editor.editor &&\n editor.iframe &&\n opt.height === 'auto') {\n const style = editor.ew.getComputedStyle(editor.editor), marginOffset = parseInt(style.marginTop || '0', 10) +\n parseInt(style.marginBottom || '0', 10);\n css(editor.iframe, 'height', editor.editor.offsetHeight + marginOffset);\n }\n });\n }, editor.defaultTimeout / 2);\n editor.e\n .on('change afterInit afterSetMode resize', resizeIframe)\n .on([editor.iframe, editor.ew, doc.documentElement], 'load', resizeIframe)\n .on(doc, 'readystatechange DOMContentLoaded', resizeIframe);\n if (typeof ResizeObserver === 'function') {\n const resizeObserver = new ResizeObserver(resizeIframe);\n resizeObserver.observe(doc.body);\n editor.e.on('beforeDestruct', () => {\n resizeObserver.disconnect();\n });\n }\n }\n // throw events in our world\n if (doc.documentElement) {\n editor.e\n .on(doc.documentElement, 'mousedown touchend', () => {\n if (!editor.s.isFocused()) {\n editor.s.focus();\n if (editor.editor === doc.body) {\n editor.s.setCursorIn(doc.body);\n }\n }\n })\n .on(editor.ew, 'mousedown touchstart keydown keyup touchend click mouseup mousemove scroll', (e) => {\n editor.events?.fire(editor.ow, e);\n });\n }\n return false;\n };\n return callPromise(result, init);\n });\n}\npluginSystem.add('iframe', iframe);\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M576 576q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1024 384v448h-1408v-192l320-320 160 160 512-512zm96-704h-1600q-13 0-22.5 9.5t-9.5 22.5v1216q0 13 9.5 22.5t22.5 9.5h1600q13 0 22.5-9.5t9.5-22.5v-1216q0-13-9.5-22.5t-22.5-9.5zm160 32v1216q0 66-47 113t-113 47h-1600q-66 0-113-47t-47-113v-1216q0-66 47-113t113-47h1600q66 0 113 47t47 113z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { $$ } from \"../../core/helpers/index.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport { FileSelectorWidget } from \"../../modules/widget/index.js\";\nimport imageIcon from \"./image.svg.js\";\nIcon.set('image', imageIcon);\nConfig.prototype.controls.image = {\n popup: (editor, current, close) => {\n let sourceImage = null;\n if (current &&\n !Dom.isText(current) &&\n Dom.isHTMLElement(current) &&\n (Dom.isTag(current, 'img') || $$('img', current).length)) {\n sourceImage = Dom.isTag(current, 'img')\n ? current\n : $$('img', current)[0];\n }\n editor.s.save();\n return FileSelectorWidget(editor, {\n filebrowser: (data) => {\n editor.s.restore();\n data.files &&\n data.files.forEach(file => editor.s.insertImage(data.baseurl + file, null, editor.o.imageDefaultWidth));\n close();\n },\n upload: true,\n url: async (url, text) => {\n editor.s.restore();\n if (/^[a-z\\d_-]+(\\.[a-z\\d_-]+)+/i.test(url)) {\n url = '//' + url;\n }\n const image = sourceImage || editor.createInside.element('img');\n image.setAttribute('src', url);\n image.setAttribute('alt', text);\n if (!sourceImage) {\n await editor.s.insertImage(image, null, editor.o.imageDefaultWidth);\n }\n close();\n }\n }, sourceImage, close);\n },\n tags: ['img'],\n tooltip: 'Insert Image'\n};\nexport function image(editor) {\n editor.registerButton({\n name: 'image',\n group: 'media'\n });\n}\npluginSystem.add('image', image);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { attr } from \"../../../../core/helpers/utils/attr.js\";\nexport default [\n {\n name: 'eye',\n tooltip: 'Open link',\n exec: (editor, current) => {\n const href = attr(current, 'href');\n if (current && href) {\n editor.ow.open(href);\n }\n }\n },\n {\n name: 'link',\n tooltip: 'Edit link',\n icon: 'pencil'\n },\n 'unlink',\n 'brush',\n 'file'\n];\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { isJoditObject, isString } from \"../../../../core/helpers/checker/index.js\";\nimport { css } from \"../../../../core/helpers/utils/css.js\";\nconst cmd = (control) => control.args && isString(control.args[0])\n ? control.args[0].toLowerCase()\n : '';\nexport default [\n 'brushCell',\n {\n name: 'valign',\n list: ['Top', 'Middle', 'Bottom', 'Normal'],\n childTemplate: (_, __, value) => value,\n exec: (editor, table, { control }) => {\n const command = cmd(control);\n editor\n .getInstance('Table', editor.o)\n .getAllSelectedCells()\n .forEach((cell) => {\n css(cell, 'vertical-align', command === 'normal' ? '' : command);\n });\n },\n tooltip: 'Vertical align'\n },\n {\n name: 'splitv',\n list: {\n tablesplitv: 'Split vertical',\n tablesplitg: 'Split horizontal'\n },\n tooltip: 'Split'\n },\n {\n name: 'align',\n icon: 'left'\n },\n '\\n',\n {\n name: 'merge',\n command: 'tablemerge',\n tooltip: 'Merge'\n },\n {\n name: 'addcolumn',\n list: {\n tableaddcolumnbefore: 'Insert column before',\n tableaddcolumnafter: 'Insert column after'\n },\n exec: (editor, table, { control }) => {\n if (!isJoditObject(editor)) {\n return;\n }\n if (!control.args) {\n return false;\n }\n const command = cmd(control);\n editor.execCommand(command, false, table);\n },\n tooltip: 'Add column'\n },\n {\n name: 'addrow',\n list: {\n tableaddrowbefore: 'Insert row above',\n tableaddrowafter: 'Insert row below'\n },\n exec: (editor, table, { control }) => {\n if (!isJoditObject(editor)) {\n return;\n }\n if (!control.args) {\n return false;\n }\n const command = cmd(control);\n editor.execCommand(command, false, table);\n },\n tooltip: 'Add row'\n },\n {\n name: 'delete',\n icon: 'bin',\n list: {\n tablebin: 'Delete table',\n tablebinrow: 'Delete row',\n tablebincolumn: 'Delete column',\n tableempty: 'Empty cell'\n },\n exec: (editor, table, { control }) => {\n if (!isJoditObject(editor)) {\n return;\n }\n if (!control.args) {\n return false;\n }\n const command = cmd(control);\n editor.execCommand(command, false, table);\n editor.e.fire('hidePopup');\n },\n tooltip: 'Delete'\n }\n];\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../../core/dom/index.js\";\nimport { isString } from \"../../../../core/helpers/checker/is-string.js\";\nimport { hAlignElement } from \"../../../../core/helpers/utils/align.js\";\nimport { css } from \"../../../../core/helpers/utils/css.js\";\nexport const align = {\n name: 'left',\n childTemplate: (_, __, value) => value,\n list: ['Left', 'Right', 'Center', 'Normal'],\n exec: (editor, elm, { control }) => {\n if (!Dom.isTag(elm, new Set(['img', 'jodit', 'jodit-media']))) {\n return;\n }\n const command = control.args && isString(control.args[0])\n ? control.args[0].toLowerCase()\n : '';\n if (!command) {\n return false;\n }\n hAlignElement(elm, command);\n if (Dom.isTag(elm, new Set(['jodit', 'jodit-media'])) &&\n elm.firstElementChild) {\n hAlignElement(elm.firstElementChild, command);\n }\n editor.synchronizeValues();\n editor.e.fire('recalcPositionPopup');\n },\n tooltip: 'Horizontal align'\n};\nexport default [\n {\n name: 'delete',\n icon: 'bin',\n tooltip: 'Delete',\n exec: (editor, image) => {\n image && editor.s.removeNode(image);\n }\n },\n {\n name: 'pencil',\n exec(editor, current) {\n const tagName = current.tagName.toLowerCase();\n if (tagName === 'img') {\n editor.e.fire('openImageProperties', current);\n }\n },\n tooltip: 'Edit'\n },\n {\n name: 'valign',\n list: ['Top', 'Middle', 'Bottom', 'Normal'],\n tooltip: 'Vertical align',\n exec: (editor, image, { control }) => {\n if (!Dom.isTag(image, 'img')) {\n return;\n }\n const command = control.args && isString(control.args[0])\n ? control.args[0].toLowerCase()\n : '';\n if (!command) {\n return false;\n }\n css(image, 'vertical-align', command === 'normal' ? '' : command);\n editor.e.fire('recalcPositionPopup');\n }\n },\n align\n];\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { align } from \"./img.js\";\nexport default [\n {\n name: 'bin',\n tooltip: 'Delete',\n exec: (editor, image) => {\n image && editor.s.removeNode(image);\n }\n },\n align\n];\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugins/inline-popup\n */\nexport default [\n 'bold',\n 'italic',\n '|',\n 'ul',\n 'ol',\n 'eraser',\n '|',\n 'fontsize',\n 'brush',\n 'paragraph',\n '---',\n 'image',\n 'table',\n '\\n',\n 'link',\n '|',\n 'align',\n '|',\n 'undo',\n 'redo',\n '|',\n 'copyformat',\n 'fullsize',\n '---',\n 'dots'\n];\n","export default \"<svg viewBox=\\\"0 0 18.151 18.151\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"> <g> <path stroke-width=\\\"0\\\" d=\\\"M6.237,16.546H3.649V1.604h5.916v5.728c0.474-0.122,0.968-0.194,1.479-0.194 c0.042,0,0.083,0.006,0.125,0.006V0H2.044v18.15h5.934C7.295,17.736,6.704,17.19,6.237,16.546z\\\"/> <path stroke-width=\\\"0\\\" d=\\\"M11.169,8.275c-2.723,0-4.938,2.215-4.938,4.938s2.215,4.938,4.938,4.938s4.938-2.215,4.938-4.938 S13.892,8.275,11.169,8.275z M11.169,16.81c-1.983,0-3.598-1.612-3.598-3.598c0-1.983,1.614-3.597,3.598-3.597 s3.597,1.613,3.597,3.597C14.766,15.198,13.153,16.81,11.169,16.81z\\\"/> <polygon stroke-width=\\\"0\\\" points=\\\"11.792,11.073 10.502,11.073 10.502,12.578 9.03,12.578 9.03,13.868 10.502,13.868 10.502,15.352 11.792,15.352 11.792,13.868 13.309,13.868 13.309,12.578 11.792,12.578 \\\"/> </g> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 432 432\\\"> <g> <polygon points=\\\"203.688,96 0,96 0,144 155.688,144 \\\"/> <polygon points=\\\"155.719,288 0,288 0,336 203.719,336 \\\"/> <path d=\\\"M97.844,230.125c-3.701-3.703-5.856-8.906-5.856-14.141s2.154-10.438,5.856-14.141l9.844-9.844H0v48h107.719 L97.844,230.125z\\\"/> <polygon points=\\\"232,176 232,96 112,216 232,336 232,256 432,256 432,176\\\"/> </g> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 312 312\\\"> <g transform=\\\"translate(0.000000,312.000000) scale(0.100000,-0.100000)\\\" stroke=\\\"none\\\"> <path d=\\\"M50 3109 c0 -7 -11 -22 -25 -35 l-25 -23 0 -961 0 -961 32 -29 32 -30 501 -2 500 -3 3 -502 2 -502 31 -30 31 -31 958 0 958 0 23 25 c13 13 30 25 37 25 9 0 12 199 12 960 0 686 -3 960 -11 960 -6 0 -24 12 -40 28 l-29 27 -503 5 -502 5 -5 502 -5 503 -28 29 c-15 16 -27 34 -27 40 0 8 -274 11 -960 11 -710 0 -960 -3 -960 -11z m1738 -698 l2 -453 -40 -40 c-22 -22 -40 -43 -40 -47 0 -4 36 -42 79 -85 88 -87 82 -87 141 -23 l26 27 455 -2 454 -3 0 -775 0 -775 -775 0 -775 0 -3 450 -2 449 47 48 47 48 -82 80 c-44 44 -84 80 -87 80 -3 0 -25 -18 -48 -40 l-41 -40 -456 2 -455 3 -3 765 c-1 421 0 771 3 778 3 10 164 12 777 10 l773 -3 3 -454z\\\"/> <path d=\\\"M607 2492 c-42 -42 -77 -82 -77 -87 0 -6 86 -96 190 -200 105 -104 190 -197 190 -205 0 -8 -41 -56 -92 -107 -65 -65 -87 -94 -77 -98 8 -3 138 -4 289 -3 l275 3 3 275 c1 151 0 281 -3 289 -4 10 -35 -14 -103 -82 -54 -53 -103 -97 -109 -97 -7 0 -99 88 -206 195 -107 107 -196 195 -198 195 -3 0 -39 -35 -82 -78z\\\"/> <path d=\\\"M1470 1639 c-47 -49 -87 -91 -89 -94 -5 -6 149 -165 160 -165 9 0 189 179 189 188 0 12 -154 162 -165 161 -6 0 -48 -41 -95 -90z\\\"/> <path d=\\\"M1797 1303 c-9 -8 -9 -568 0 -576 4 -4 50 36 103 88 54 52 101 95 106 95 5 0 95 -85 199 -190 104 -104 194 -190 200 -190 6 0 46 36 90 80 l79 79 -197 196 c-108 108 -197 199 -197 203 0 4 45 52 99 106 55 55 98 103 95 108 -6 10 -568 11 -577 1z\\\"/> </g> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 48 48\\\"> <path d=\\\"M6 42h4v-4h-4v4zm4-28h-4v4h4v-4zm-4 20h4v-4h-4v4zm8 8h4v-4h-4v4zm-4-36h-4v4h4v-4zm8 0h-4v4h4v-4zm16 0h-4v4h4v-4zm-8 8h-4v4h4v-4zm0-8h-4v4h4v-4zm12 28h4v-4h-4v4zm-16 8h4v-4h-4v4zm-16-16h36v-4h-36v4zm32-20v4h4v-4h-4zm0 12h4v-4h-4v4zm-16 16h4v-4h-4v4zm8 8h4v-4h-4v4zm8 0h4v-4h-4v4z\\\"/> <path d=\\\"M0 0h48v48h-48z\\\" fill=\\\"none\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 48 48\\\"> <path d=\\\"M6 18h4v-4h-4v4zm0-8h4v-4h-4v4zm8 32h4v-4h-4v4zm0-16h4v-4h-4v4zm-8 0h4v-4h-4v4zm0 16h4v-4h-4v4zm0-8h4v-4h-4v4zm8-24h4v-4h-4v4zm24 24h4v-4h-4v4zm-16 8h4v-36h-4v36zm16 0h4v-4h-4v4zm0-16h4v-4h-4v4zm0-20v4h4v-4h-4zm0 12h4v-4h-4v4zm-8-8h4v-4h-4v4zm0 32h4v-4h-4v4zm0-16h4v-4h-4v4z\\\"/> <path d=\\\"M0 0h48v48h-48z\\\" fill=\\\"none\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M512 1248v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm-640-1024v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm-640-1024v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm640 512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M512 1248v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm1280 512v192q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h960q40 0 68 28t28 68zm-1280-1024v192q0 40-28 68t-68 28h-320q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h320q40 0 68 28t28 68zm1280 512v192q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h960q40 0 68 28t28 68zm0-512v192q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-192q0-40 28-68t68-28h960q40 0 68 28t28 68z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Icon } from \"../../../core/ui/icon.js\";\nimport { Config } from \"../../../config.js\";\nimport a from \"./items/a.js\";\nimport cells from \"./items/cells.js\";\nimport jodit from \"./items/iframe.js\";\nimport img from \"./items/img.js\";\nimport toolbar from \"./items/toolbar.js\";\nimport * as addcolumn from \"../icons/addcolumn.svg.js\";\nimport * as addrow from \"../icons/addrow.svg.js\";\nimport * as merge from \"../icons/merge.svg.js\";\nimport * as splitg from \"../icons/splitg.svg.js\";\nimport * as splitv from \"../icons/splitv.svg.js\";\nimport * as th from \"../icons/th.svg.js\";\nimport * as thList from \"../icons/th-list.svg.js\";\nConfig.prototype.toolbarInline = true;\nConfig.prototype.toolbarInlineForSelection = false;\nConfig.prototype.toolbarInlineDisableFor = [];\nConfig.prototype.toolbarInlineDisabledButtons = ['source'];\nIcon.set('addcolumn', addcolumn.default)\n .set('addrow', addrow.default)\n .set('merge', merge.default)\n .set('th', th.default)\n .set('splitg', splitg.default)\n .set('splitv', splitv.default)\n .set('th-list', thList.default);\nConfig.prototype.popup = {\n a,\n img,\n cells,\n toolbar,\n jodit,\n iframe: jodit,\n 'jodit-media': jodit,\n selection: [\n 'bold',\n 'underline',\n 'italic',\n 'ul',\n 'ol',\n '\\n',\n 'outdent',\n 'indent',\n 'fontsize',\n 'brush',\n 'cut',\n '\\n',\n 'paragraph',\n 'link',\n 'align',\n 'dots'\n ]\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { autobind, cache, debounce, wait, watch } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { camelCase, isArray, isFunction, isString, keys, position, splitArray, toArray } from \"../../core/helpers/index.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport { UIElement } from \"../../core/ui/index.js\";\nimport { Popup } from \"../../core/ui/popup/index.js\";\nimport { makeCollection } from \"../../modules/toolbar/factory.js\";\nimport \"./config/config.js\";\n/**\n * Plugin for show inline popup dialog\n */\nexport class inlinePopup extends Plugin {\n constructor() {\n super(...arguments);\n this.type = null;\n this.snapRange = null;\n this.elmsList = keys(this.j.o.popup, false).filter(s => !this.isExcludedTarget(s));\n }\n get popup() {\n return new Popup(this.jodit, false);\n }\n get toolbar() {\n return makeCollection(this.jodit, this.popup);\n }\n onClick(node) {\n const elements = this.elmsList, target = Dom.isTag(node, 'img')\n ? node\n : Dom.closest(node, elements, this.j.editor);\n if (target && this.canShowPopupForType(target.nodeName.toLowerCase())) {\n this.showPopup(() => position(target, this.j), target.nodeName.toLowerCase(), target);\n return false;\n }\n }\n /**\n * Show inline popup with some toolbar\n *\n * @param type - selection, img, a etc.\n */\n showPopup(rect, type, target) {\n type = type.toLowerCase();\n if (!this.canShowPopupForType(type)) {\n return false;\n }\n if (this.type !== type || target !== this.previousTarget) {\n this.previousTarget = target;\n const data = this.j.o.popup[type];\n let content;\n if (isFunction(data)) {\n content = data(this.j, target, this.popup.close);\n }\n else {\n content = data;\n }\n if (isArray(content)) {\n this.toolbar.build(content, target);\n this.toolbar.buttonSize = this.j.o.toolbarButtonSize;\n content = this.toolbar.container;\n }\n this.popup.setContent(content);\n this.type = type;\n }\n this.popup.open(rect);\n return true;\n }\n /**\n * Hide opened popup\n */\n hidePopup(type) {\n if (this.popup.isOpened && (!isString(type) || type === this.type)) {\n this.popup.close();\n }\n }\n onOutsideClick() {\n this.popup.close();\n }\n /**\n * Can show popup for this type\n */\n canShowPopupForType(type) {\n const data = this.j.o.popup[type.toLowerCase()];\n if (this.j.o.readonly || !this.j.o.toolbarInline || !data) {\n return false;\n }\n return !this.isExcludedTarget(type);\n }\n /**\n * For some elements do not show popup\n */\n isExcludedTarget(type) {\n return splitArray(this.j.o.toolbarInlineDisableFor)\n .map(a => a.toLowerCase())\n .includes(type.toLowerCase());\n }\n /** @override **/\n afterInit(jodit) {\n this.j.e\n .on('getDiffButtons.mobile', (toolbar) => {\n if (this.toolbar === toolbar) {\n const names = this.toolbar.getButtonsNames();\n return toArray(jodit.registeredButtons)\n .filter(btn => !this.j.o.toolbarInlineDisabledButtons.includes(btn.name))\n .filter(item => {\n const name = isString(item) ? item : item.name;\n return (name &&\n name !== '|' &&\n name !== '\\n' &&\n !names.includes(name));\n });\n }\n })\n .on('hidePopup', this.hidePopup)\n .on('showInlineToolbar', this.showInlineToolbar)\n .on('showPopup', (elm, rect, type) => {\n this.showPopup(rect, type || (isString(elm) ? elm : elm.nodeName), isString(elm) ? undefined : elm);\n })\n .on('mousedown keydown', this.onSelectionStart)\n .on('change', () => {\n if (this.popup.isOpened &&\n this.previousTarget &&\n !this.previousTarget.parentNode) {\n this.hidePopup();\n this.previousTarget = undefined;\n }\n })\n .on([this.j.ew, this.j.ow], 'mouseup keyup', this.onSelectionEnd);\n this.addListenersForElements();\n }\n onSelectionStart() {\n this.snapRange = this.j.s.range.cloneRange();\n }\n onSelectionEnd(e) {\n if (e &&\n e.target &&\n UIElement.closestElement(e.target, Popup)) {\n return;\n }\n const { snapRange } = this, { range } = this.j.s;\n if (!snapRange ||\n range.collapsed ||\n range.startContainer !== snapRange.startContainer ||\n range.startOffset !== snapRange.startOffset ||\n range.endContainer !== snapRange.endContainer ||\n range.endOffset !== snapRange.endOffset) {\n this.onSelectionChange();\n }\n }\n /**\n * Selection change handler\n */\n onSelectionChange() {\n if (!this.j.o.toolbarInlineForSelection) {\n return;\n }\n const type = 'selection', sel = this.j.s.sel, range = this.j.s.range;\n if (sel?.isCollapsed ||\n this.isSelectedTarget(range) ||\n this.tableModule.getAllSelectedCells().length) {\n if (this.type === type && this.popup.isOpened) {\n this.hidePopup();\n }\n return;\n }\n const node = this.j.s.current();\n if (!node) {\n return;\n }\n this.showPopup(() => range.getBoundingClientRect(), type);\n }\n /**\n * In not collapsed selection - only one image\n */\n isSelectedTarget(r) {\n const sc = r.startContainer;\n return (Dom.isElement(sc) &&\n sc === r.endContainer &&\n Dom.isTag(sc.childNodes[r.startOffset], new Set(keys(this.j.o.popup, false))) &&\n r.startOffset === r.endOffset - 1);\n }\n /**\n * Shortcut for Table module\n */\n get tableModule() {\n return this.j.getInstance('Table', this.j.o);\n }\n /** @override **/\n beforeDestruct(jodit) {\n jodit.e\n .off('showPopup')\n .off([this.j.ew, this.j.ow], 'mouseup keyup', this.onSelectionEnd);\n this.removeListenersForElements();\n }\n _eventsList() {\n const el = this.elmsList;\n return el\n .map(e => camelCase(`click_${e}`))\n .concat(el.map(e => camelCase(`touchstart_${e}`)))\n .join(' ');\n }\n addListenersForElements() {\n this.j.e.on(this._eventsList(), this.onClick);\n }\n removeListenersForElements() {\n this.j.e.off(this._eventsList(), this.onClick);\n }\n /**\n * Show the inline WYSIWYG toolbar editor.\n */\n showInlineToolbar(bound) {\n this.showPopup(() => {\n if (bound) {\n return bound;\n }\n const { range } = this.j.s;\n return range.getBoundingClientRect();\n }, 'toolbar');\n }\n}\ninlinePopup.requires = ['select'];\n__decorate([\n cache\n], inlinePopup.prototype, \"popup\", null);\n__decorate([\n cache\n], inlinePopup.prototype, \"toolbar\", null);\n__decorate([\n autobind\n], inlinePopup.prototype, \"onClick\", null);\n__decorate([\n wait((ctx) => !ctx.j.isLocked)\n], inlinePopup.prototype, \"showPopup\", null);\n__decorate([\n watch([':clickEditor', ':beforeCommandDelete', ':backSpaceAfterDelete']),\n autobind\n], inlinePopup.prototype, \"hidePopup\", null);\n__decorate([\n watch(':outsideClick')\n], inlinePopup.prototype, \"onOutsideClick\", null);\n__decorate([\n autobind\n], inlinePopup.prototype, \"onSelectionStart\", null);\n__decorate([\n autobind\n], inlinePopup.prototype, \"onSelectionEnd\", null);\n__decorate([\n debounce(ctx => ctx.defaultTimeout)\n], inlinePopup.prototype, \"onSelectionChange\", null);\n__decorate([\n autobind\n], inlinePopup.prototype, \"showInlineToolbar\", null);\npluginSystem.add('inlinePopup', inlinePopup);\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1520 1216q0-40-28-68l-208-208q-28-28-68-28-42 0-72 32 3 3 19 18.5t21.5 21.5 15 19 13 25.5 3.5 27.5q0 40-28 68t-68 28q-15 0-27.5-3.5t-25.5-13-19-15-21.5-21.5-18.5-19q-33 31-33 73 0 40 28 68l206 207q27 27 68 27 40 0 68-26l147-146q28-28 28-67zm-703-705q0-40-28-68l-206-207q-28-28-68-28-39 0-68 27l-147 146q-28 28-28 67 0 40 28 68l208 208q27 27 68 27 42 0 72-31-3-3-19-18.5t-21.5-21.5-15-19-13-25.5-3.5-27.5q0-40 28-68t68-28q15 0 27.5 3.5t25.5 13 19 15 21.5 21.5 18.5 19q33-31 33-73zm895 705q0 120-85 203l-147 146q-83 83-203 83-121 0-204-85l-206-207q-83-83-83-203 0-123 88-209l-88-88q-86 88-208 88-120 0-204-84l-208-208q-84-84-84-204t85-203l147-146q83-83 203-83 121 0 204 85l206 207q83 83 83 203 0 123-88 209l88 88q86-88 208-88 120 0 204 84l208 208q84 84 84 204z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M503 1271l-256 256q-10 9-23 9-12 0-23-9-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23zm169 41v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm-224-224q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm1264 128q0 120-85 203l-147 146q-83 83-203 83-121 0-204-85l-334-335q-21-21-42-56l239-18 273 274q27 27 68 27.5t68-26.5l147-146q28-28 28-67 0-40-28-68l-274-275 18-239q35 21 56 42l336 336q84 86 84 204zm-617-724l-239 18-273-274q-28-28-68-28-39 0-68 27l-147 146q-28 28-28 67 0 40 28 68l274 274-18 240q-35-21-56-42l-336-336q-84-86-84-204 0-120 85-203l147-146q83-83 203-83 121 0 204 85l334 335q21 21 42 56zm633 84q0 14-9 23t-23 9h-320q-14 0-23-9t-9-23 9-23 23-9h320q14 0 23 9t9 23zm-544-544v320q0 14-9 23t-23 9-23-9-9-23v-320q0-14 9-23t23-9 23 9 9 23zm407 151l-256 256q-11 9-23 9t-23-9q-9-10-9-23t9-23l256-256q10-9 23-9t23 9q9 10 9 23t-9 23z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { UIButton } from \"../../core/ui/button/index.js\";\nimport { UIBlock, UICheckbox, UIForm, UIInput, UISelect } from \"../../core/ui/form/index.js\";\nexport const formTemplate = (editor) => {\n const { openInNewTabCheckbox, noFollowCheckbox, modeClassName, selectSizeClassName, selectMultipleClassName, selectOptionsClassName } = editor.o.link;\n return new UIForm(editor, [\n new UIBlock(editor, [\n new UIInput(editor, {\n name: 'url',\n type: 'text',\n ref: 'url_input',\n label: 'URL',\n placeholder: 'http://',\n required: true\n })\n ]),\n new UIBlock(editor, [\n new UIInput(editor, {\n name: 'content',\n ref: 'content_input',\n label: 'Text'\n })\n ], {\n ref: 'content_input_box'\n }),\n modeClassName\n ? new UIBlock(editor, [\n (() => {\n if (modeClassName === 'input') {\n return new UIInput(editor, {\n name: 'className',\n ref: 'className_input',\n label: 'Class name'\n });\n }\n if (modeClassName === 'select') {\n return new UISelect(editor, {\n name: 'className',\n ref: 'className_select',\n label: 'Class name',\n size: selectSizeClassName,\n multiple: selectMultipleClassName,\n options: selectOptionsClassName\n });\n }\n return null;\n })()\n ])\n : null,\n openInNewTabCheckbox\n ? new UICheckbox(editor, {\n name: 'target',\n ref: 'target_checkbox',\n label: 'Open in new tab'\n })\n : null,\n noFollowCheckbox\n ? new UICheckbox(editor, {\n name: 'nofollow',\n ref: 'nofollow_checkbox',\n label: 'No follow'\n })\n : null,\n new UIBlock(editor, [\n new UIButton(editor, {\n name: 'unlink',\n variant: 'default',\n text: 'Unlink'\n }),\n new UIButton(editor, {\n name: 'insert',\n type: 'submit',\n variant: 'primary',\n text: 'Insert'\n })\n ], {\n align: 'full'\n })\n ]);\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport linkIcon from \"./icons/link.svg.js\";\nimport unlinkIcon from \"./icons/unlink.svg.js\";\nimport { formTemplate } from \"./template.js\";\nConfig.prototype.link = {\n formTemplate,\n followOnDblClick: false,\n processVideoLink: true,\n processPastedLink: true,\n noFollowCheckbox: true,\n openInNewTabCheckbox: true,\n modeClassName: 'input',\n selectMultipleClassName: true,\n selectSizeClassName: 3,\n selectOptionsClassName: [],\n hotkeys: ['ctrl+k', 'cmd+k']\n};\nIcon.set('link', linkIcon).set('unlink', unlinkIcon);\nConfig.prototype.controls.unlink = {\n exec: (editor, current) => {\n const anchor = Dom.closest(current, 'a', editor.editor);\n if (anchor) {\n Dom.unwrap(anchor);\n }\n editor.synchronizeValues();\n editor.e.fire('hidePopup');\n },\n tooltip: 'Unlink'\n};\nConfig.prototype.controls.link = {\n isActive: (editor) => {\n const current = editor.s.current();\n return Boolean(current && Dom.closest(current, 'a', editor.editor));\n },\n popup: (editor, current, close) => {\n return editor.e.fire('generateLinkForm.link', current, close);\n },\n tags: ['a'],\n tooltip: 'Insert link'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { autobind } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { attr, convertMediaUrlToVideoEmbed, isString, isURL, refs, stripTags } from \"../../core/helpers/index.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport \"./config.js\";\n/**\n * Process link. Insert, dblclick or remove format\n */\nexport class link extends Plugin {\n constructor() {\n super(...arguments);\n /** @override */\n this.buttons = [\n {\n name: 'link',\n group: 'insert'\n }\n ];\n }\n /** @override */\n afterInit(jodit) {\n if (jodit.o.link.followOnDblClick) {\n jodit.e.on('dblclick.link', this.onDblClickOnLink);\n }\n if (jodit.o.link.processPastedLink) {\n jodit.e.on('processPaste.link', this.onProcessPasteLink);\n }\n jodit.e.on('generateLinkForm.link', this.__generateForm);\n jodit.registerCommand('openLinkDialog', {\n exec: () => {\n const dialog = jodit.dlg({\n resizable: false\n });\n const htmlForm = this.__generateForm(jodit.s.current(), () => {\n dialog.close();\n });\n htmlForm.container.classList.add('jodit-dialog_alert');\n dialog.setContent(htmlForm);\n dialog.open();\n jodit.async.requestIdleCallback(() => {\n const { url_input } = refs(htmlForm.container);\n url_input?.focus();\n });\n },\n hotkeys: jodit.o.link.hotkeys\n });\n }\n onDblClickOnLink(e) {\n if (!Dom.isTag(e.target, 'a')) {\n return;\n }\n const href = attr(e.target, 'href');\n if (href) {\n location.href = href;\n e.preventDefault();\n }\n }\n onProcessPasteLink(ignore, html) {\n const { jodit } = this;\n if (!isURL(html) || !jodit.o.link.processPastedLink) {\n return;\n }\n jodit.e.stopPropagation('processPaste');\n if (jodit.o.link.processVideoLink) {\n const embed = convertMediaUrlToVideoEmbed(html);\n if (embed !== html) {\n return jodit.createInside.fromHTML(embed);\n }\n }\n if (jodit.s.isCollapsed()) {\n const a = jodit.createInside.element('a');\n a.setAttribute('href', html);\n a.textContent = html;\n jodit.e.fire('applyLink', jodit, a, null);\n return a;\n }\n jodit.s.commitStyle({\n element: 'a',\n attributes: {\n href: html\n }\n });\n return true;\n }\n __generateForm(current, close) {\n const { jodit } = this;\n const i18n = jodit.i18n.bind(jodit), { openInNewTabCheckbox, noFollowCheckbox, formTemplate, formClassName, modeClassName } = jodit.o.link;\n const html = formTemplate(jodit), form = isString(html)\n ? jodit.c.fromHTML(html, {\n target_checkbox_box: openInNewTabCheckbox,\n nofollow_checkbox_box: noFollowCheckbox\n })\n : html, htmlForm = Dom.isElement(form) ? form : form.container;\n const elements = refs(htmlForm), { insert, unlink, content_input_box } = elements, { target_checkbox, nofollow_checkbox, url_input } = elements, currentElement = current, isImageContent = Dom.isImage(currentElement);\n let { content_input } = elements;\n const { className_input } = elements, { className_select } = elements;\n if (!content_input) {\n content_input = jodit.c.element('input', {\n type: 'hidden',\n ref: 'content_input'\n });\n }\n if (formClassName) {\n htmlForm.classList.add(formClassName);\n }\n if (isImageContent) {\n Dom.hide(content_input_box);\n }\n let link;\n const getSelectionText = () => link\n ? link.innerText\n : stripTags(jodit.s.range.cloneContents(), jodit.ed);\n if (current && Dom.closest(current, 'a', jodit.editor)) {\n link = Dom.closest(current, 'a', jodit.editor);\n }\n else {\n link = false;\n }\n if (!isImageContent && current) {\n content_input.value = getSelectionText();\n }\n if (link) {\n url_input.value = attr(link, 'href') || '';\n if (modeClassName) {\n readClassnames(modeClassName, className_input, link, className_select);\n }\n if (openInNewTabCheckbox && target_checkbox) {\n target_checkbox.checked = attr(link, 'target') === '_blank';\n }\n if (noFollowCheckbox && nofollow_checkbox) {\n nofollow_checkbox.checked = attr(link, 'rel') === 'nofollow';\n }\n insert.textContent = i18n('Update');\n }\n else {\n Dom.hide(unlink);\n }\n jodit.editor.normalize();\n const snapshot = jodit.history.snapshot.make();\n if (unlink) {\n jodit.e.on(unlink, 'click', (e) => {\n jodit.s.restore();\n jodit.history.snapshot.restore(snapshot);\n if (link) {\n Dom.unwrap(link);\n }\n jodit.synchronizeValues();\n close();\n e.preventDefault();\n });\n }\n const onSubmit = () => {\n if (!url_input.value.trim().length) {\n url_input.focus();\n url_input.classList.add('jodit_error');\n return false;\n }\n let links;\n jodit.s.restore();\n jodit.s.removeMarkers();\n jodit.editor.normalize();\n jodit.history.snapshot.restore(snapshot);\n const textWasChanged = getSelectionText() !== content_input.value.trim();\n const ci = jodit.createInside;\n if (!link) {\n if (!jodit.s.isCollapsed()) {\n const node = jodit.s.current();\n if (Dom.isTag(node, 'img')) {\n links = [Dom.wrap(node, 'a', ci)];\n }\n else {\n links = jodit.s.wrapInTag('a');\n }\n }\n else {\n const a = ci.element('a');\n jodit.s.insertNode(a, false, false);\n links = [a];\n }\n links.forEach(link => jodit.s.select(link));\n }\n else {\n links = [link];\n }\n links.forEach(a => {\n attr(a, 'href', url_input.value);\n writeClasses(modeClassName, className_input, className_select, a);\n if (!isImageContent) {\n writeImage(a, content_input, textWasChanged, url_input);\n }\n if (openInNewTabCheckbox && target_checkbox) {\n attr(a, 'target', target_checkbox.checked ? '_blank' : null);\n }\n if (noFollowCheckbox && nofollow_checkbox) {\n attr(a, 'rel', nofollow_checkbox.checked ? 'nofollow' : null);\n }\n jodit.e.fire('applyLink', jodit, a, form);\n });\n jodit.synchronizeValues();\n close();\n return false;\n };\n if (Dom.isElement(form)) {\n jodit.e.on(form, 'submit', (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n onSubmit();\n return false;\n });\n }\n else {\n form.onSubmit(onSubmit);\n }\n return form;\n }\n /** @override */\n beforeDestruct(jodit) {\n jodit.e\n .off('generateLinkForm.link', this.__generateForm)\n .off('dblclick.link', this.onDblClickOnLink)\n .off('processPaste.link', this.onProcessPasteLink);\n }\n}\n__decorate([\n autobind\n], link.prototype, \"onDblClickOnLink\", null);\n__decorate([\n autobind\n], link.prototype, \"onProcessPasteLink\", null);\n__decorate([\n autobind\n], link.prototype, \"__generateForm\", null);\npluginSystem.add('link', link);\nfunction writeClasses(modeClassName, className_input, className_select, a) {\n if (modeClassName && (className_input ?? className_select)) {\n if (modeClassName === 'input') {\n if (className_input.value === '' && a.hasAttribute('class')) {\n attr(a, 'class', null);\n }\n if (className_input.value !== '') {\n attr(a, 'class', className_input.value);\n }\n }\n else if (modeClassName === 'select') {\n if (a.hasAttribute('class')) {\n attr(a, 'class', null);\n }\n for (let i = 0; i < className_select.selectedOptions.length; i++) {\n const className = className_select.selectedOptions.item(i)?.value;\n if (className) {\n a.classList.add(className);\n }\n }\n }\n }\n}\nfunction readClassnames(modeClassName, className_input, link, className_select) {\n switch (modeClassName) {\n case 'input':\n if (className_input) {\n className_input.value = attr(link, 'class') || '';\n }\n break;\n case 'select':\n if (className_select) {\n for (let i = 0; i < className_select.selectedOptions.length; i++) {\n const option = className_select.options.item(i);\n if (option) {\n option.selected = false;\n }\n }\n const classNames = attr(link, 'class') || '';\n classNames.split(' ').forEach(className => {\n if (className) {\n for (let i = 0; i < className_select.options.length; i++) {\n const option = className_select.options.item(i);\n if (option?.value && option.value === className) {\n option.selected = true;\n }\n }\n }\n });\n }\n break;\n }\n}\nfunction writeImage(a, content_input, textWasChanged, url_input) {\n let newContent = a.textContent;\n if (content_input.value.trim().length) {\n if (textWasChanged) {\n newContent = content_input.value;\n }\n }\n else {\n newContent = url_input.value;\n }\n const content = a.textContent;\n if (newContent !== content) {\n a.textContent = newContent;\n }\n}\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path stroke-width=\\\"0\\\" d=\\\"M381 1620q0 80-54.5 126t-135.5 46q-106 0-172-66l57-88q49 45 106 45 29 0 50.5-14.5t21.5-42.5q0-64-105-56l-26-56q8-10 32.5-43.5t42.5-54 37-38.5v-1q-16 0-48.5 1t-48.5 1v53h-106v-152h333v88l-95 115q51 12 81 49t30 88zm2-627v159h-362q-6-36-6-54 0-51 23.5-93t56.5-68 66-47.5 56.5-43.5 23.5-45q0-25-14.5-38.5t-39.5-13.5q-46 0-81 58l-85-59q24-51 71.5-79.5t105.5-28.5q73 0 123 41.5t50 112.5q0 50-34 91.5t-75 64.5-75.5 50.5-35.5 52.5h127v-60h105zm1409 319v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-14 9-23t23-9h1216q13 0 22.5 9.5t9.5 22.5zm-1408-899v99h-335v-99h107q0-41 .5-122t.5-121v-12h-2q-8 17-50 54l-71-76 136-127h106v404h108zm1408 387v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-14 9-23t23-9h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path stroke-width=\\\"0\\\" d=\\\"M384 1408q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm0-512q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zm-1408-928q0 80-56 136t-136 56-136-56-56-136 56-136 136-56 136 56 56 136zm1408 416v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5zm0-512v192q0 13-9.5 22.5t-22.5 9.5h-1216q-13 0-22.5-9.5t-9.5-22.5v-192q0-13 9.5-22.5t22.5-9.5h1216q13 0 22.5 9.5t9.5 22.5z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { dataBind } from \"../../core/helpers/utils/data-bind.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport olIcon from \"./icons/ol.svg.js\";\nimport ulIcon from \"./icons/ul.svg.js\";\nconst memoExec = (jodit, _, { control }) => {\n const key = `button${control.command}`;\n const value = (control.args && control.args[0]) ?? dataBind(jodit, key);\n dataBind(jodit, key, value);\n jodit.execCommand(control.command, false, value === 'default' ? null : value);\n};\nIcon.set('ol', olIcon).set('ul', ulIcon);\nConfig.prototype.controls.ul = {\n command: 'insertUnorderedList',\n tags: ['ul'],\n tooltip: 'Insert Unordered List',\n list: {\n default: 'Default',\n circle: 'Circle',\n disc: 'Dot',\n square: 'Quadrate'\n },\n exec: memoExec\n};\nConfig.prototype.controls.ol = {\n command: 'insertOrderedList',\n tags: ['ol'],\n tooltip: 'Insert Ordered List',\n list: {\n default: 'Default',\n 'lower-alpha': 'Lower Alpha',\n 'lower-greek': 'Lower Greek',\n 'lower-roman': 'Lower Roman',\n 'upper-alpha': 'Upper Alpha',\n 'upper-roman': 'Upper Roman'\n },\n exec: memoExec\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { autobind } from \"../../core/decorators/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport \"./config.js\";\n/**\n * Process commands insertOrderedList and insertUnOrderedList\n */\nexport class orderedList extends Plugin {\n constructor() {\n super(...arguments);\n this.buttons = [\n {\n name: 'ul',\n group: 'list'\n },\n {\n name: 'ol',\n group: 'list'\n }\n ];\n }\n afterInit(jodit) {\n jodit\n .registerCommand('insertUnorderedList', this.onCommand)\n .registerCommand('insertOrderedList', this.onCommand);\n }\n onCommand(command, _, type) {\n this.jodit.s.commitStyle({\n element: command === 'insertunorderedlist' ? 'ul' : 'ol',\n attributes: {\n style: {\n listStyleType: type ?? null\n }\n }\n });\n this.jodit.synchronizeValues();\n return false;\n }\n beforeDestruct(jodit) { }\n}\n__decorate([\n autobind\n], orderedList.prototype, \"onCommand\", null);\npluginSystem.add('orderedList', orderedList);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugins/placeholder\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.showPlaceholder = true;\nConfig.prototype.placeholder = 'Type something';\nConfig.prototype.useInputsPlaceholder = true;\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport * as consts from \"../../core/constants.js\";\nimport { INSEPARABLE_TAGS } from \"../../core/constants.js\";\nimport { debounce } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { isMarker } from \"../../core/helpers/checker/is-marker.js\";\nimport { attr } from \"../../core/helpers/utils/attr.js\";\nimport { css } from \"../../core/helpers/utils/css.js\";\nimport { Plugin } from \"../../core/plugin/plugin.js\";\nimport \"./config.js\";\n/**\n * Check if root node is empty\n * @private\n */\nexport function isEditorEmpty(root) {\n if (!root.firstChild) {\n return true;\n }\n const first = root.firstChild;\n if (INSEPARABLE_TAGS.has(first.nodeName?.toLowerCase()) ||\n /^(TABLE)$/i.test(first.nodeName)) {\n return false;\n }\n const next = Dom.next(first, node => node && !Dom.isEmptyTextNode(node), root);\n if (Dom.isText(first) && !next) {\n return Dom.isEmptyTextNode(first);\n }\n return (!next &&\n Dom.each(first, elm => !(Dom.isLeaf(elm) || Dom.isList(elm)) &&\n (Dom.isEmpty(elm) || Dom.isTag(elm, 'br'))));\n}\n/**\n * Show placeholder inside empty editor\n */\nexport class placeholder extends Plugin {\n constructor() {\n super(...arguments);\n this.addNativeListeners = () => {\n this.j.e\n .off(this.j.editor, 'input.placeholder keydown.placeholder')\n .on(this.j.editor, 'input.placeholder keydown.placeholder', this.toggle);\n };\n this.addEvents = () => {\n const editor = this.j;\n if (editor.o.useInputsPlaceholder &&\n editor.element.hasAttribute('placeholder')) {\n this.placeholderElm.innerHTML =\n attr(editor.element, 'placeholder') || '';\n }\n editor.e.fire('placeholder', this.placeholderElm.innerHTML);\n editor.e\n .off('.placeholder')\n .on('changePlace.placeholder', this.addNativeListeners)\n .on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' +\n 'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder', this.toggle)\n .on(window, 'load', this.toggle);\n this.addNativeListeners();\n this.toggle();\n };\n }\n afterInit(editor) {\n if (!editor.o.showPlaceholder) {\n return;\n }\n this.placeholderElm = editor.c.fromHTML(`<span data-ref=\"placeholder\" style=\"display: none;\" class=\"jodit-placeholder\">${editor.i18n(editor.o.placeholder)}</span>`);\n if (editor.o.direction === 'rtl') {\n this.placeholderElm.style.right = '0px';\n this.placeholderElm.style.direction = 'rtl';\n }\n editor.e\n .on('readonly', (isReadOnly) => {\n if (isReadOnly) {\n this.hide();\n }\n else {\n this.toggle();\n }\n })\n .on('changePlace', this.addEvents);\n this.addEvents();\n }\n show() {\n const editor = this.j;\n if (editor.o.readonly) {\n return;\n }\n let marginTop = 0, marginLeft = 0;\n const current = editor.s.current(), wrapper = (current && Dom.closest(current, Dom.isBlock, editor.editor)) ||\n editor.editor;\n const style = editor.ew.getComputedStyle(wrapper);\n const styleEditor = editor.ew.getComputedStyle(editor.editor);\n editor.workplace.appendChild(this.placeholderElm);\n const { firstChild } = editor.editor;\n if (Dom.isElement(firstChild) && !isMarker(firstChild)) {\n const style2 = editor.ew.getComputedStyle(firstChild);\n marginTop = parseInt(style2.getPropertyValue('margin-top'), 10);\n marginLeft = parseInt(style2.getPropertyValue('margin-left'), 10);\n this.placeholderElm.style.fontSize =\n parseInt(style2.getPropertyValue('font-size'), 10) + 'px';\n this.placeholderElm.style.lineHeight =\n style2.getPropertyValue('line-height');\n }\n else {\n this.placeholderElm.style.fontSize =\n parseInt(style.getPropertyValue('font-size'), 10) + 'px';\n this.placeholderElm.style.lineHeight =\n style.getPropertyValue('line-height');\n }\n css(this.placeholderElm, {\n display: 'block',\n textAlign: style.getPropertyValue('text-align'),\n paddingTop: parseInt(styleEditor.paddingTop, 10) + 'px',\n paddingLeft: parseInt(styleEditor.paddingLeft, 10) + 'px',\n paddingRight: parseInt(styleEditor.paddingRight, 10) + 'px',\n marginTop: Math.max(parseInt(style.getPropertyValue('margin-top'), 10), marginTop),\n marginLeft: Math.max(parseInt(style.getPropertyValue('margin-left'), 10), marginLeft)\n });\n }\n hide() {\n Dom.safeRemove(this.placeholderElm);\n }\n toggle() {\n const editor = this.j;\n if (!editor.editor || editor.isInDestruct) {\n return;\n }\n if (editor.getRealMode() !== consts.MODE_WYSIWYG) {\n this.hide();\n return;\n }\n if (!isEditorEmpty(editor.editor)) {\n this.hide();\n }\n else {\n this.show();\n }\n }\n beforeDestruct(jodit) {\n this.hide();\n jodit.e.off('.placeholder').off(window, 'load', this.toggle);\n }\n}\n__decorate([\n debounce(ctx => ctx.defaultTimeout / 10, true)\n], placeholder.prototype, \"toggle\", null);\npluginSystem.add('placeholder', placeholder);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { pluginSystem } from \"../../core/global.js\";\nexport function poweredByJodit(jodit) {\n const { o } = jodit;\n if (!o.hidePoweredByJodit &&\n !o.inline &&\n (o.showCharsCounter ||\n o.showWordsCounter ||\n o.showXPathInStatusbar)) {\n jodit.hookStatus('ready', () => {\n jodit.statusbar.append(jodit.create.fromHTML(`<a\n\t\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\t\tstyle=\"text-transform: uppercase\"\n\t\t\t\t\t\tclass=\"jodit-status-bar-link\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\thref=\"https://xdsoft.net/jodit/\">\n\t\t\t\t\t\t\tPowered by Jodit\n\t\t\t\t\t\t</a>`), true);\n });\n }\n}\npluginSystem.add('poweredByJodit', poweredByJodit);\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0 225-52t179-147q7-10 23-12 14 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109 132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298 164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14 39 17 39 59z\\\"/> </svg> \";","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M1664 896q0 156-61 298t-164 245-245 164-298 61q-172 0-327-72.5t-264-204.5q-7-10-6.5-22.5t8.5-20.5l137-138q10-9 25-9 16 2 23 12 73 95 179 147t225 52q104 0 198.5-40.5t163.5-109.5 109.5-163.5 40.5-198.5-40.5-198.5-109.5-163.5-163.5-109.5-198.5-40.5q-98 0-188 35.5t-160 101.5l137 138q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59 39-17 69 14l130 129q107-101 244.5-156.5t284.5-55.5q156 0 298 61t245 164 164 245 61 298z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport * as consts from \"../../core/constants.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { Plugin } from \"../../core/plugin/plugin.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport redoIcon from \"./icons/redo.svg.js\";\nimport undoIcon from \"./icons/undo.svg.js\";\nIcon.set('redo', redoIcon).set('undo', undoIcon);\nConfig.prototype.controls.redo = {\n mode: consts.MODE_SPLIT,\n isDisabled: (editor) => !editor.history.canRedo(),\n tooltip: 'Redo'\n};\nConfig.prototype.controls.undo = {\n mode: consts.MODE_SPLIT,\n isDisabled: (editor) => !editor.history.canUndo(),\n tooltip: 'Undo'\n};\n/**\n * Custom process Redo and Undo functionality\n */\nexport class redoUndo extends Plugin {\n constructor() {\n super(...arguments);\n /** @override */\n this.buttons = [\n {\n name: 'undo',\n group: 'history'\n },\n {\n name: 'redo',\n group: 'history'\n }\n ];\n }\n beforeDestruct() {\n // do nothing\n }\n afterInit(editor) {\n const callback = (command) => {\n editor.history[command]();\n return false;\n };\n editor.registerCommand('redo', {\n exec: callback,\n hotkeys: ['ctrl+y', 'ctrl+shift+z', 'cmd+y', 'cmd+shift+z']\n });\n editor.registerCommand('undo', {\n exec: callback,\n hotkeys: ['ctrl+z', 'cmd+z']\n });\n }\n}\npluginSystem.add('redoUndo', redoUndo);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugins/size\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.minWidth = 200;\nConfig.prototype.maxWidth = '100%';\n/**\n * Editor's min-height\n *\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * minHeight: '30%' //min-height: 30%\n * })\n * ```\n * @example\n * ```javascript\n * Jodit.make('.editor', {\n * minHeight: 200 //min-height: 200px\n * })\n * ```\n */\nConfig.prototype.minHeight = 200;\nConfig.prototype.maxHeight = 'auto';\n/**\n * if set true and height !== auto then after reload editor will have the latest height\n */\nConfig.prototype.saveHeightInStorage = false;\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { autobind, throttle } from \"../../core/decorators/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { isNumber } from \"../../core/helpers/checker/is-number.js\";\nimport { css } from \"../../core/helpers/utils/css.js\";\nimport { Plugin } from \"../../core/plugin/plugin.js\";\nimport \"./config.js\";\n/**\n * Calculate sizes for editor workspace and handle setHeight and setWidth events\n */\nlet size = class size extends Plugin {\n constructor() {\n super(...arguments);\n /**\n * Debounced wrapper for resizeWorkspaceImd\n */\n this.__resizeWorkspaces = this.j.async.debounce(this.__resizeWorkspaceImd, this.j.defaultTimeout, true);\n }\n afterInit(editor) {\n editor.e\n .on('setHeight.size', this.__setHeight)\n .on('setWidth.size', this.__setWidth)\n .on('afterInit.size changePlace.size', this.__initialize, {\n top: true\n })\n .on(editor.ow, 'load.size', this.__resizeWorkspaces)\n .on('afterInit.size resize.size afterUpdateToolbar.size ' +\n 'scroll.size afterResize.size', this.__resizeWorkspaces)\n .on('toggleFullSize.size toggleToolbar.size', this.__resizeWorkspaceImd);\n this.__initialize();\n }\n /**\n * Set editor size by options\n */\n __initialize() {\n const { j } = this;\n if (j.o.inline) {\n return;\n }\n let { height } = j.o;\n if (j.o.saveHeightInStorage && height !== 'auto') {\n const localHeight = j.storage.get('height');\n if (localHeight) {\n height = localHeight;\n }\n }\n css(j.editor, {\n minHeight: '100%'\n });\n css(j.container, {\n minHeight: j.o.minHeight,\n maxHeight: j.o.maxHeight,\n minWidth: j.o.minWidth,\n maxWidth: j.o.maxWidth\n });\n if (!j.isFullSize) {\n this.__setHeight(height);\n this.__setWidth(j.o.width);\n }\n }\n /**\n * Manually change height\n */\n __setHeight(height) {\n if (isNumber(height)) {\n const { minHeight, maxHeight } = this.j.o;\n if (isNumber(minHeight) && minHeight > height) {\n height = minHeight;\n }\n if (isNumber(maxHeight) && maxHeight < height) {\n height = maxHeight;\n }\n }\n css(this.j.container, 'height', height);\n if (this.j.o.saveHeightInStorage) {\n this.j.storage.set('height', height);\n }\n this.__resizeWorkspaceImd();\n }\n /**\n * Manually change width\n */\n __setWidth(width) {\n if (isNumber(width)) {\n const { minWidth, maxWidth } = this.j.o;\n if (isNumber(minWidth) && minWidth > width) {\n width = minWidth;\n }\n if (isNumber(maxWidth) && maxWidth < width) {\n width = maxWidth;\n }\n }\n css(this.j.container, 'width', width);\n this.__resizeWorkspaceImd();\n }\n /**\n * Returns service spaces: toolbar + statusbar\n */\n __getNotWorkHeight() {\n return ((this.j.toolbarContainer?.offsetHeight || 0) +\n (this.j.statusbar?.getHeight() || 0) +\n 2);\n }\n /**\n * Calculate workspace height\n */\n __resizeWorkspaceImd() {\n if (!this.j || this.j.isDestructed || !this.j.o || this.j.o.inline) {\n return;\n }\n if (!this.j.container || !this.j.container.parentNode) {\n return;\n }\n const minHeight = (css(this.j.container, 'minHeight') || 0) -\n this.__getNotWorkHeight();\n if (isNumber(minHeight) && minHeight > 0) {\n [this.j.workplace, this.j.iframe, this.j.editor].map(elm => {\n elm && css(elm, 'minHeight', minHeight);\n });\n this.j.e.fire('setMinHeight', minHeight);\n }\n if (isNumber(this.j.o.maxHeight)) {\n const maxHeight = this.j.o.maxHeight - this.__getNotWorkHeight();\n [this.j.workplace, this.j.iframe, this.j.editor].map(elm => {\n elm && css(elm, 'maxHeight', maxHeight);\n });\n this.j.e.fire('setMaxHeight', maxHeight);\n }\n if (this.j.container) {\n css(this.j.workplace, 'height', this.j.o.height !== 'auto' || this.j.isFullSize\n ? this.j.container.offsetHeight - this.__getNotWorkHeight()\n : 'auto');\n }\n }\n /** @override **/\n beforeDestruct(jodit) {\n jodit.e\n .off(jodit.ow, 'load.size', this.__resizeWorkspaces)\n .off('.size');\n }\n};\n__decorate([\n throttle()\n], size.prototype, \"__initialize\", null);\n__decorate([\n autobind\n], size.prototype, \"__resizeWorkspaceImd\", null);\nsize = __decorate([\n autobind\n], size);\nexport { size };\npluginSystem.add('size', size);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * @module plugins/stat\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.showCharsCounter = true;\nConfig.prototype.countHTMLChars = false;\nConfig.prototype.showWordsCounter = true;\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { INVISIBLE_SPACE_REG_EXP, SPACE_REG_EXP } from \"../../core/constants.js\";\nimport { Dom } from \"../../core/dom/dom.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { Plugin } from \"../../core/plugin/plugin.js\";\nimport \"./config.js\";\n/**\n * Show stat data - words and chars count\n */\nexport class stat extends Plugin {\n constructor() {\n super(...arguments);\n this.charCounter = null;\n this.wordCounter = null;\n this.reInit = () => {\n if (this.j.o.showCharsCounter && this.charCounter) {\n this.j.statusbar.append(this.charCounter, true);\n }\n if (this.j.o.showWordsCounter && this.wordCounter) {\n this.j.statusbar.append(this.wordCounter, true);\n }\n this.j.e.off('change keyup', this.calc).on('change keyup', this.calc);\n this.calc();\n };\n this.calc = this.j.async.throttle(() => {\n const text = this.j.text;\n if (this.j.o.showCharsCounter && this.charCounter) {\n const chars = this.j.o.countHTMLChars\n ? this.j.value\n : text.replace(SPACE_REG_EXP(), '');\n this.charCounter.textContent = this.j.i18n('Chars: %d', chars.length);\n }\n if (this.j.o.showWordsCounter && this.wordCounter) {\n this.wordCounter.textContent = this.j.i18n('Words: %d', text\n .replace(INVISIBLE_SPACE_REG_EXP(), '')\n .split(SPACE_REG_EXP())\n .filter((e) => e.length).length);\n }\n }, this.j.defaultTimeout);\n }\n /** @override */\n afterInit() {\n this.charCounter = this.j.c.span();\n this.wordCounter = this.j.c.span();\n this.j.e.on('afterInit changePlace afterAddPlace', this.reInit);\n this.reInit();\n }\n /** @override */\n beforeDestruct() {\n Dom.safeRemove(this.charCounter);\n Dom.safeRemove(this.wordCounter);\n this.j.e.off('afterInit changePlace afterAddPlace', this.reInit);\n this.charCounter = null;\n this.wordCounter = null;\n }\n}\npluginSystem.add('stat', stat);\n","export default \"<svg xmlns='http://www.w3.org/2000/svg' viewBox=\\\"0 0 1792 1792\\\"> <path d=\\\"M576 1376v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47h-1344q-66 0-113-47t-47-113v-1088q0-66 47-113t113-47h1344q66 0 113 47t47 113z\\\"/> </svg> \";","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../core/dom/index.js\";\nimport { $$, css, scrollIntoViewIfNeeded } from \"../../core/helpers/index.js\";\nimport { attr } from \"../../core/helpers/utils/index.js\";\nimport { Icon } from \"../../core/ui/icon.js\";\nimport { Config } from \"../../config.js\";\nimport tableIcon from \"./table.svg.js\";\nConfig.prototype.table = {\n selectionCellStyle: 'border: 1px double #1e88e5 !important;',\n useExtraClassesOptions: false\n};\nIcon.set('table', tableIcon);\nConfig.prototype.controls.table = {\n data: {\n cols: 10,\n rows: 10,\n classList: {\n 'table table-bordered': 'Bootstrap Bordered',\n 'table table-striped': 'Bootstrap Striped',\n 'table table-dark': 'Bootstrap Dark'\n }\n },\n popup: (editor, current, close, button) => {\n editor.editor.normalize();\n const snapshot = editor.history.snapshot.make();\n const control = button.control;\n const default_rows_count = control.data && control.data.rows ? control.data.rows : 10, default_cols_count = control.data && control.data.cols ? control.data.cols : 10;\n const generateExtraClasses = () => {\n if (!editor.o.table.useExtraClassesOptions) {\n return '';\n }\n const out = [];\n if (control.data) {\n const classList = control.data.classList;\n Object.keys(classList).forEach((classes) => {\n out.push(`<label class=\"jodit_vertical_middle\"><input class=\"jodit-checkbox\" value=\"${classes}\" type=\"checkbox\"/>${classList[classes]}</label>`);\n });\n }\n return out.join('');\n };\n const form = editor.c.fromHTML('<form class=\"jodit-form jodit-form__inserter\">' +\n '<div class=\"jodit-form__table-creator-box\">' +\n '<div class=\"jodit-form__container\"></div>' +\n '<div class=\"jodit-form__options\">' +\n generateExtraClasses() +\n '</div>' +\n '</div>' +\n '<label class=\"jodit-form__center\">' +\n '<span>1</span> × <span>1</span>' +\n '</label>' +\n '</form>'), rows = form.querySelectorAll('span')[0], cols = form.querySelectorAll('span')[1], blocksContainer = form.querySelector('.jodit-form__container'), options = form.querySelector('.jodit-form__options'), cells = [];\n const cnt = default_rows_count * default_cols_count;\n for (let i = 0; i < cnt; i += 1) {\n if (!cells[i]) {\n cells.push(editor.c.element('span', {\n dataIndex: i\n }));\n }\n }\n const mouseenter = (e, index) => {\n const dv = e.target;\n if (!Dom.isTag(dv, 'span')) {\n return;\n }\n const k = index === undefined || isNaN(index)\n ? parseInt(attr(dv, '-index') || '0', 10)\n : index || 0;\n const rows_count = Math.ceil((k + 1) / default_cols_count), cols_count = (k % default_cols_count) + 1;\n for (let i = 0; i < cells.length; i += 1) {\n if (cols_count >= (i % default_cols_count) + 1 &&\n rows_count >= Math.ceil((i + 1) / default_cols_count)) {\n cells[i].className = 'jodit_hovered';\n }\n else {\n cells[i].className = '';\n }\n }\n cols.textContent = cols_count.toString();\n rows.textContent = rows_count.toString();\n };\n editor.e\n .on(blocksContainer, 'mousemove', mouseenter)\n .on(blocksContainer, 'touchstart mousedown', (e) => {\n const dv = e.target;\n e.preventDefault();\n e.stopImmediatePropagation();\n if (!Dom.isTag(dv, 'span')) {\n return;\n }\n const k = parseInt(attr(dv, '-index') || '0', 10);\n const rows_count = Math.ceil((k + 1) / default_cols_count), cols_count = (k % default_cols_count) + 1;\n const crt = editor.createInside, tbody = crt.element('tbody'), table = crt.element('table');\n table.appendChild(tbody);\n let first_td = null, tr, td;\n for (let i = 1; i <= rows_count; i += 1) {\n tr = crt.element('tr');\n for (let j = 1; j <= cols_count; j += 1) {\n td = crt.element('td');\n if (!first_td) {\n first_td = td;\n }\n css(td, 'width', (100 / cols_count).toFixed(4) + '%');\n td.appendChild(crt.element('br'));\n tr.appendChild(crt.text('\\n'));\n tr.appendChild(crt.text('\\t'));\n tr.appendChild(td);\n }\n tbody.appendChild(crt.text('\\n'));\n tbody.appendChild(tr);\n }\n $$('input[type=checkbox]:checked', options).forEach((input) => {\n input.value\n .split(/[\\s]+/)\n .forEach((className) => {\n table.classList.add(className);\n });\n });\n editor.s.restore();\n editor.s.removeMarkers();\n editor.editor.normalize();\n editor.history.snapshot.restore(snapshot);\n const block = Dom.furthest(editor.s.current(), Dom.isBlock, editor.editor);\n if (block && Dom.isEmpty(block)) {\n Dom.replace(block, table, undefined, false, true);\n }\n else {\n if (block) {\n const fake = crt.text('\\n');\n Dom.after(block, fake);\n Dom.after(fake, table);\n }\n else {\n editor.s.insertNode(table, false);\n }\n }\n if (first_td) {\n editor.s.setCursorIn(first_td);\n scrollIntoViewIfNeeded(first_td, editor.editor, editor.ed);\n }\n close();\n });\n if (button && button.parentElement) {\n for (let i = 0; i < default_rows_count; i += 1) {\n const row = editor.c.div();\n for (let j = 0; j < default_cols_count; j += 1) {\n row.appendChild(cells[i * default_cols_count + j]);\n }\n blocksContainer.appendChild(row);\n }\n if (cells[0]) {\n cells[0].className = 'hovered';\n }\n }\n return form;\n },\n tooltip: 'Insert table'\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { pluginSystem } from \"../../core/global.js\";\nimport \"./config.js\";\nexport function table(editor) {\n editor.registerButton({\n name: 'table',\n group: 'insert'\n });\n}\npluginSystem.add('table', table);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.wrapNodes = {\n exclude: new Set(['hr', 'style', 'br']),\n emptyBlockAfterInit: true\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { autobind } from \"../../core/decorators/index.js\";\nimport { Dom } from \"../../core/dom/index.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { isString } from \"../../core/helpers/checker/is-string.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport \"./config.js\";\n/**\n * Wrap single text nodes in block wrapper\n */\nclass wrapNodes extends Plugin {\n constructor() {\n super(...arguments);\n /**\n * Found Node which should be wrapped\n */\n this.isSuitableStart = (n) => (Dom.isText(n) &&\n isString(n.nodeValue) &&\n (/[^\\s]/.test(n.nodeValue) ||\n (n.parentNode?.firstChild === n &&\n this.isSuitable(n.nextSibling)))) ||\n (this.isNotWrapped(n) && !Dom.isTemporary(n));\n /**\n * Node should add in a block element\n */\n this.isSuitable = (n) => Dom.isText(n) || this.isNotWrapped(n);\n /**\n * Some element which needs to append in block\n */\n this.isNotWrapped = (n) => Dom.isElement(n) &&\n !(Dom.isBlock(n) || Dom.isTag(n, this.j.o.wrapNodes.exclude));\n }\n /** @override **/\n afterInit(jodit) {\n if (jodit.o.enter.toLowerCase() === 'br') {\n return;\n }\n jodit.e\n .on('drop.wtn focus.wtn keydown.wtn mousedown.wtn afterInit.wtn backSpaceAfterDelete.wtn', this.preprocessInput, {\n top: true\n })\n .on('afterInit.wtn postProcessSetEditorValue.wtn afterCommitStyle.wtn backSpaceAfterDelete.wtn', this.postProcessSetEditorValue);\n }\n /** @override **/\n beforeDestruct(jodit) {\n jodit.e.off('.wtn');\n }\n /**\n * Process changed value\n */\n postProcessSetEditorValue() {\n const { jodit } = this;\n if (!jodit.isEditorMode()) {\n return;\n }\n let child = jodit.editor.firstChild, isChanged = false;\n while (child) {\n child = checkAloneListLeaf(child, jodit);\n if (this.isSuitableStart(child)) {\n if (!isChanged) {\n jodit.s.save();\n }\n isChanged = true;\n const box = jodit.createInside.element(jodit.o.enter);\n Dom.before(child, box);\n while (child && this.isSuitable(child)) {\n const next = child.nextSibling;\n box.appendChild(child);\n child = next;\n }\n box.normalize();\n child = box;\n }\n child = child && child.nextSibling;\n }\n if (isChanged) {\n jodit.s.restore();\n if (jodit.e.current === 'afterInit') {\n jodit.e.fire('internalChange');\n }\n }\n }\n /**\n * Process input without parent box\n */\n preprocessInput() {\n const { jodit } = this, isAfterInitEvent = jodit.e.current === 'afterInit';\n if (!jodit.isEditorMode() ||\n jodit.editor.firstChild ||\n (!jodit.o.wrapNodes.emptyBlockAfterInit && isAfterInitEvent)) {\n return;\n }\n const box = jodit.createInside.element(jodit.o.enter);\n const br = jodit.createInside.element('br');\n Dom.append(box, br);\n Dom.append(jodit.editor, box);\n jodit.s.isFocused() && jodit.s.setCursorBefore(br);\n jodit.e.fire('internalChange');\n }\n}\n__decorate([\n autobind\n], wrapNodes.prototype, \"postProcessSetEditorValue\", null);\n__decorate([\n autobind\n], wrapNodes.prototype, \"preprocessInput\", null);\nfunction checkAloneListLeaf(child, jodit) {\n let result = child;\n let next = child;\n do {\n if (Dom.isElement(next) &&\n Dom.isLeaf(next) &&\n !Dom.isList(next.parentElement)) {\n const nextChild = Dom.findNotEmptySibling(next, false);\n if (Dom.isTag(result, 'ul')) {\n result.appendChild(next);\n }\n else {\n result = Dom.wrap(next, 'ul', jodit.createInside);\n }\n next = nextChild;\n }\n else {\n break;\n }\n } while (next);\n return result;\n}\npluginSystem.add('wrapNodes', wrapNodes);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Config } from \"../../config.js\";\nConfig.prototype.dtd = {\n removeExtraBr: true,\n checkBlockNesting: true,\n blockLimits: {\n article: 1,\n aside: 1,\n audio: 1,\n body: 1,\n caption: 1,\n details: 1,\n dir: 1,\n div: 1,\n dl: 1,\n fieldset: 1,\n figcaption: 1,\n figure: 1,\n footer: 1,\n form: 1,\n header: 1,\n hgroup: 1,\n main: 1,\n menu: 1,\n nav: 1,\n ol: 1,\n section: 1,\n table: 1,\n td: 1,\n th: 1,\n tr: 1,\n ul: 1,\n video: 1\n }\n};\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\nconst brBoxes = new Set([\n 'table',\n 'pre',\n 'blockquote',\n 'code'\n]);\n/**\n * Checks if there is a tag in the block element after the inserted br node,\n * if so, removes it\n * @internal\n */\nexport function removeExtraBr(jodit, node) {\n if (!jodit.o.dtd.removeExtraBr || Dom.isTag(node, 'br')) {\n return;\n }\n const parent = Dom.furthest(node, Dom.isBlock, jodit.editor);\n if (parent && !Dom.isTag(parent, brBoxes)) {\n const br = Dom.isTag(node, 'br')\n ? node\n : Dom.findNotEmptySibling(node, false);\n if (!Dom.isTag(br, 'br')) {\n return;\n }\n jodit.s.setCursorBefore(br);\n Dom.safeRemove(br);\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nimport { Dom } from \"../../../core/dom/dom.js\";\n/**\n * Checks whether the insertion of an element at the current location is allowed,\n * if it is not allowed, it deletes an empty block element or moves the cursor after it\n * @internal\n */\nexport function checkBlockNesting(jodit, node) {\n if (Dom.isFragment(node)) {\n node = node.firstChild;\n }\n if (jodit.o.dtd.checkBlockNesting && Dom.isBlock(node)) {\n const parent = Dom.furthest(jodit.s.current(), Dom.isBlock, jodit.editor);\n if (parent && !jodit.o.dtd.blockLimits[parent.tagName.toLowerCase()]) {\n jodit.s.setCursorAfter(parent);\n if (Dom.isEmpty(parent)) {\n Dom.safeRemove(parent);\n }\n }\n }\n}\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if (d = decorators[i])\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { watch } from \"../../core/decorators/watch/watch.js\";\nimport { pluginSystem } from \"../../core/global.js\";\nimport { Plugin } from \"../../core/plugin/index.js\";\nimport \"./config.js\";\nimport * as afterInsertCases from \"./after-insert/index.js\";\nimport * as beforeInsertCases from \"./before-insert/index.js\";\nclass dtd extends Plugin {\n afterInit(jodit) { }\n beforeDestruct(jodit) { }\n __onBeforeInsertNode(node) {\n const casesKeys = Object.keys(beforeInsertCases);\n casesKeys.forEach(key => {\n beforeInsertCases[key](this.j, node);\n });\n }\n __onAfterInsertNode(node) {\n const casesKeys = Object.keys(afterInsertCases);\n casesKeys.forEach(key => {\n afterInsertCases[key](this.j, node);\n });\n }\n}\n__decorate([\n watch(':beforeInsertNode')\n], dtd.prototype, \"__onBeforeInsertNode\", null);\n__decorate([\n watch(':afterInsertNode')\n], dtd.prototype, \"__onAfterInsertNode\", null);\npluginSystem.add('dtd', dtd);\n","/*!\n * Jodit Editor (https://xdsoft.net/jodit/)\n * Released under MIT see LICENSE.txt in the project root for license information.\n * Copyright (c) 2013-2024 Valeriy Chupurnov. All rights reserved. https://xdsoft.net\n */\n/**\n * [[include:README.md]]\n * @packageDocumentation\n * @module jodit\n */\n// eslint-disable-next-line simple-import-sort/imports\nimport { Jodit as DefaultJodit } from \"./jodit.js\";\nimport { isFunction, isString } from \"./core/helpers/checker/index.js\";\nimport * as constants from \"./core/constants.js\";\nimport * as decorators from \"./core/decorators/index.js\";\nimport * as Modules from \"./modules/index.js\";\nimport * as Icons from \"./styles/icons/index.js\";\nimport Languages from \"./languages.js\";\nimport \"./plugins/index.js\";\n// copy constants in Jodit\nObject.keys(constants).forEach((key) => {\n DefaultJodit[key] = constants[key];\n});\nconst esFilter = (key) => key !== '__esModule';\n// Icons\nObject.keys(Icons)\n .filter(esFilter)\n .forEach((key) => {\n Modules.Icon.set(key.replace('_', '-'), Icons[key]);\n});\n// Modules\nObject.keys(Modules)\n .filter(esFilter)\n .forEach((key) => {\n // @ts-ignore\n const module = Modules[key];\n const name = isFunction(module.prototype?.className)\n ? module.prototype.className()\n : key;\n if (!isString(name)) {\n console.warn('Module name must be a string', key);\n return;\n }\n // @ts-ignore\n DefaultJodit.modules[name] = module;\n});\n// Decorators\nObject.keys(decorators)\n .filter(esFilter)\n .forEach((key) => {\n // @ts-ignore\n DefaultJodit.decorators[key] = decorators[key];\n});\n['Confirm', 'Alert', 'Prompt'].forEach((key) => {\n // @ts-ignore\n DefaultJodit[key] = Modules[key];\n});\n// Languages\nObject.keys(Languages)\n .filter(esFilter)\n .forEach((key) => {\n DefaultJodit.lang[key] = Languages[key];\n});\nexport { DefaultJodit as Jodit };\nexport class CommitMode {\n}\n","\n@import \"../../../../../node_modules/jodit/es2021.en/jodit.fat.min.css\";\n\n:host {\n display: block;\n\n --jd-tooltip-color: #fff;\n --jd-tooltip-background-color: rgba(0, 0, 0, .7);\n --jd-tooltip-sfx-shadow: rgba(0, 0, 0, .15);\n --jd-tooltip-border-width: 0;\n --jd-tooltip-border-color: #e5e5e5;\n\n --jd-popup-box-shadow: 0 4px 1px -2px rgba(76, 76, 76, .2), 0 3px 3px 0 rgba(76, 76, 76, .15), 0 1px 4px 0 rgba(76, 76, 76, .13);\n\n --jd-em-color-border: #b6d4fe;\n --jd-em-color-bg: #cfe2ff;\n --jd-em-color-color: #084298;\n --jd-em-border-radius: 0.375rem;\n --jd-em-padding: 0.5rem 1rem;\n --jd-em-font-size: 1rem;\n\n --jd-button-trigger-size: 14px;\n\n --jd-image-editor-resizer-border-color: #05ff00;\n --jd-image-editor-resizer-target-size: padding-default;\n --jd-image-editor-resizer-target-border-color: #383838;\n --jd-image-editor-resizer-target-bg-color: #8c7878;\n\n --jd-color-folder-title: #b1b1b1;\n\n --jd-first-column: 31%;\n --jd-cols: 4;\n --jd-info-background: #e9e9e9;\n --jd-icon-size: 12px;\n --jd-col-size: 150px;\n\n --jd-anl-color-new-line: var(--jd-color-border);\n --jd-anl-handle-size: 20px;\n --jd-anl-handle-offset: calc(100% - var(--jd-anl-handle-size));\n\n --jd-color-picker-cell-size: 24px;\n\n --jd-viewer-width: 70px;\n --jd-viewer-height: 24px;\n --jd-resizer-handle-size: 10px;\n --jd-resizer-border-color: #98c1f1;\n --jd-resizer-handle-color: #5ba4f3;\n --jd-resizer-handle-hover-color: #537ebb;\n\n --jd-height-search: 30px;\n --jd-width-search: 320px;\n --jd-width-search-input-box: 60%;\n --jd-width-search-count-box: 15%;\n --jd-transform-button-active: 0.95;\n --jd-timeout-button-active: 0.1s;\n\n --jd-color-white: #fff;\n --jd-color-gray: #dadada;\n --jd-color-gray-dark: #a5a5a5;\n --jd-color-dark: #4c4c4c;\n --jd-color-blue: #b5d6fd;\n --jd-color-light-blue: rgba(181, 214, 253, .5);\n --jd-color-red: #ff3b3b;\n --jd-color-light-red: rgba(255, 59, 59, .4);\n --jd-color-default: var(--jd-color-dark);\n --jd-color-text: #222;\n --jd-color-label: var(--jd-color-gray-dark);\n --jd-color-error: var(--jd-color-red);\n --jd-color-border: var(--jd-color-gray);\n --jd-color-border-dark: var(--jd-color-dark);\n --jd-color-border-selected: #1e88e5;\n --jd-color-border-active: #b5b5b5;\n --jd-color-selection: var(--jd-color-dark);\n --jd-color-selection-area: #bdbdbd;\n --jd-color-separator: var(--jd-color-border);\n --jd-color-placeholder: var(--jd-color-gray-dark);\n --jd-color-panel: #f9f9f9;\n --jd-color-resizer: #c8c8c8;\n --jd-color-background-default: var(--jd-color-white);\n --jd-color-background-light-gray: #f5f5f6;\n --jd-color-background-gray: var(--jd-color-gray);\n --jd-color-background-gray-hover: #f8f8f8;\n --jd-color-background-button-hover: #ecebe9;\n --jd-color-background-button-hover-opacity30: hsla(40, 7%, 92%, .3);\n --jd-color-background-progress: #b91f1f;\n --jd-color-background-active: #2196f3;\n --jd-color-background-selection: #b5d6fd;\n --jd-color-text-selection: var(--jd-color-white);\n --jd-color-background-selection-opacity50: rgba(181, 214, 253, .995);\n --jd-color-source-area: #323232;\n --jd-color-button-background-hover: #dcdcdc;\n --jd-color-button-background-hover-opacity40: hsla(0, 0%, 86%, .4);\n --jd-color-button-background-hover-opacity60: hsla(0, 0%, 86%, .6);\n --jd-font-default: -apple-system, blinkmacsystemfont, \"Segoe UI\", roboto, oxygen-sans, ubuntu, cantarell, \"Helvetica Neue\", sans-serif;\n --jd-font-size-default: 14px;\n --jd-font-size-small: 11px;\n --jd-color-text-icons: rgba(0, 0, 0, .75);\n --jd-color-icon: var(--jd-color-dark);\n --jd-padding-default: 8px;\n --jd-border-radius-default: 3px;\n --jd-icon-tiny-size: 8px;\n --jd-icon-xsmall-size: 10px;\n --jd-icon-small-size: 12px;\n --jd-icon-middle-size: 14px;\n --jd-icon-large-size: 16px;\n --jd-z-index-full-size: 100000;\n --jd-z-index-popup: 10000001;\n --jd-z-index-dialog-overlay: 20000003;\n --jd-z-index-dialog: 20000004;\n --jd-z-index-context-menu: 30000005;\n --jd-z-index-tooltip: 30000006;\n --jd-icon-loader-size: 48px;\n --jd-width-element-default: 18px;\n --jd-height-element-default: 18px;\n --jd-dark-background-color: #575757;\n --jd-dark-background-ligher: silver;\n --jd-dark-background-darknes: #353535;\n --jd-dark-border-color: #444;\n --jd-dark-text-color: #d1cccc;\n --jd-dark-text-color-opacity80: hsla(0, 5%, 81%, .8);\n --jd-dark-text-color-opacity50: hsla(0, 5%, 81%, .5);\n --jd-dark-icon-color: silver;\n --jd-dark-toolbar-color: #5f5c5c;\n --jd-dark-toolbar-seperator-color1: rgba(81, 81, 81, .41);\n --jd-dark-toolbar-seperator-color2: #686767;\n --jd-dark-toolbar-seperator-color-opacity80: hsla(0, 0%, 41%, .8);\n --jd-dark-toolbar-seperator-color3: hsla(0, 0%, 41%, .75);\n --jd-dark-color-border-selected: #152f5f;\n --jd-width-default: 180px;\n --jd-width-input-min: var(--jd-width-default);\n --jd-input-height: 32px;\n --jd-button-icon-size: 14px;\n --jd-margin-v: 2px;\n --jd-button-df-size: calc((var(--jd-button-icon-size) - 4px)*2);\n --jd-button-size: calc(var(--jd-button-icon-size) + var(--jd-button-df-size) + var(--jd-margin-v)*2);\n --jd-focus-input-box-shadow: 0 0 0 0.05rem rgba(0, 123, 255, .25);\n\n --jd-switche-width: 60px;\n --jd-switche-height: 32px;\n --jd-switche-slider-margin: 4px;\n --jd-switche-slider-size: calc(var(--jd-switche-height) - var(--jd-switche-slider-margin)*2);\n}","import { Component, Host, h, Prop, Event, EventEmitter, Watch, AttachInternals, State, Element } from '@stencil/core';\nimport { Jodit } from \"jodit\";\nimport type { Config } from \"jodit/types/config\";\nimport { decodeHtml } from '../../utilities/stringUtilities';\n\n@Component({\n tag: 'dnn-richtext',\n styleUrl: 'dnn-richtext.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class DnnRichtext {\n /** Optional configuration for Jodit, see https://xdsoft.net/jodit/docs/classes/config.Config.html */\n @Prop() options: Config;\n private textArea: HTMLTextAreaElement;\n private editor: Jodit;\n private dnnDefaultOptions: Config = {\n ...Jodit.defaultOptions,\n useSplitMode: true,\n }\n\n /** Sets the value of the content of the editor. */\n @Prop() value: string;\n\n /** Name of the field when used in a form. */\n @Prop() name: string;\n\n @Element() host: HTMLDnnRichtextElement;\n \n @Watch(\"value\")\n watchValueChanged(newValue: string) {\n if (this.editor !== null && this.editor !== undefined) {\n this.editor.value = decodeHtml(newValue);\n }\n this.setFormValue();\n }\n \n /** Fires when the value changed. */\n @Event() valueChange: EventEmitter<string>;\n \n /** Fires during value input. */\n @Event() valueInput: EventEmitter<string>;\n \n @AttachInternals() internals: ElementInternals;\n \n @State() focused = false;\n \n componentDidLoad(){\n var mergedOptions = {\n ...this.dnnDefaultOptions,\n ...this.options,\n globalFullSize: false,\n shadowRoot: this.host.shadowRoot,\n };\n this.editor = Jodit.make(this.textArea, mergedOptions);\n this.editor.value = decodeHtml(this.value);\n this.setFormValue();\n this.editor.e.on('input', () => this.valueInput.emit(this.editor.value));\n this.editor.e.on(\"focus\", () => this.focused = true);\n this.editor.e.on(\"blur\", () => {\n this.focused = false;\n this.valueChange.emit(this.editor.value);\n this.setFormValue();\n });\n }\n\n // eslint-disable-next-line @stencil-community/own-methods-must-be-private\n formResetCallback() {\n this.editor.value = decodeHtml(this.value);\n this.internals.setValidity({});\n this.setFormValue();\n }\n\n private setFormValue() {\n if (this.name != undefined && this.name.length > 0){\n var data = new FormData();\n data.append(this.name, this.editor.value);\n this.internals.setFormValue(data);\n }\n }\n\n render() {\n return (\n <Host\n tabIndex={this.focused ? -1 : 0}\n onFocus={() => {\n this.focused = true;\n this.editor.focus();\n }}\n onBlur={() => this.focused = false}\n >\n <textarea\n ref={el => this.textArea = el}\n onFocus={() => this.focused = true}\n onBlur={() => this.focused = false}\n >\n </textarea>\n </Host>\n );\n }\n\n}\n"],"mappings":"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,KACrB,GAAIi3E,EAAY,CACZA,EAAa,MACb/nE,EAAOxU,EAAEyuB,gBAAgB,SACzB,OAAO,KACvB,IACW,CAAEvS,IAAK,MAClB,CAEI,cAAA7d,CAAe6E,GACX,GAAIA,EAAMuP,OAAQ,CACdvP,EAAMlD,EAAEuF,IAAI,WACxB,CACA,EAEAisB,GAAan4B,IAAI,UAAW2tE;;;;;GCtI5B34D,GAAOjS,UAAUsgF,cAAgB,GACjCruE,GAAOjS,UAAUugF,YAAc,eAC/BtuE,GAAOjS,UAAUwgF,cAAgB,kBACjCvuE,GAAOjS,UAAUygF,iBAAmB,cACpCxuE,GAAOjS,UAAU0gF,YACb,QACI,YACA,aACA,oBACA,IACA,QACA,yBACA,kBACA,mBACA,gBACA,YACA,0BACA,cACA,YACA,YACA,aACA,oBACA,cACA,iBACA,gBACA,IACA,SACA,cACA,eACA,4BACA,qBACA,mBACA,IACA,SACA,oBACA,yBACA,4BACA,yBACA,wBACA,mBACA,IACA,KACA,gBACA,IACA,uCACA,kBACA,eACA,qBACA,sBACA,IACA,8CACA,qBACA,cACA,aACA,SACA,UACA,YACA,aACA,mBACA,kBACA,gCACA,KACA,mBACA,qBACA,wBACA,0BACA,4BACA,6BACA,wBACA,IACRzuE,GAAOjS,UAAU2gF,eAAiB;;;;;GCjE3B,SAASr9E,GAAO8U,GACnB,MAAMva,EAAMua,EAAOxT,QACnBwT,EAAOxU,EACFsF,GAAG,gBAAgB,KACpB,GAAIkP,EAAOmtD,eAAgB,CACvBntD,EAAOzZ,EAAEooC,OACrB,KAES79B,GAAG,oCAAoC,CAACgnB,EAAOppB,KAChD,MAAM+G,EAAMqiB,GACRppB,EAAMxD,OACDI,cAAcnF,SACvBsP,EAAIyoB,OACJzoB,EAAI0oB,MAAM14B,EAAI2iF,cACV,cAAc3iF,EAAIqW,kCAAkCqG,GAAgB1c,EAAIsW,cACxE,SACA,UAAUtW,EAAI0iF,uBACb1iF,EAAIyiF,cACC,eAAeziF,EAAIyiF,mBACnB,IACN,UACA,sCACA,WACJzyE,EAAI2oB,QACJ,GAAI34B,EAAI8iF,eAAgB,C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","ignoreList":[]}
|