UNPKG

jodit

Version:

Jodit is awesome and usefully wysiwyg editor with filebrowser

1,244 lines (1,122 loc) 965 kB
/*! * jodit - Jodit is awesome and usefully wysiwyg editor with filebrowser * Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/) * Version: v3.4.14 * Url: https://xdsoft.net/jodit/ * License(s): MIT */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else { var a = factory(); for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; } })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/build/"; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 128); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, "cns", function() { return /* reexport */ utils["c" /* cns */]; }); __webpack_require__.d(__webpack_exports__, "markDeprecated", function() { return /* reexport */ utils["g" /* markDeprecated */]; }); __webpack_require__.d(__webpack_exports__, "call", function() { return /* reexport */ utils["b" /* call */]; }); __webpack_require__.d(__webpack_exports__, "attr", function() { return /* reexport */ utils["a" /* attr */]; }); __webpack_require__.d(__webpack_exports__, "markOwner", function() { return /* reexport */ utils["h" /* markOwner */]; }); __webpack_require__.d(__webpack_exports__, "get", function() { return /* reexport */ utils["d" /* get */]; }); __webpack_require__.d(__webpack_exports__, "keepNames", function() { return /* reexport */ utils["f" /* keepNames */]; }); __webpack_require__.d(__webpack_exports__, "getClassName", function() { return /* reexport */ utils["e" /* getClassName */]; }); __webpack_require__.d(__webpack_exports__, "asArray", function() { return /* reexport */ asArray; }); __webpack_require__.d(__webpack_exports__, "splitArray", function() { return /* reexport */ splitArray; }); __webpack_require__.d(__webpack_exports__, "setTimeout", function() { return /* reexport */ set_timeout_setTimeout; }); __webpack_require__.d(__webpack_exports__, "clearTimeout", function() { return /* reexport */ set_timeout_clearTimeout; }); __webpack_require__.d(__webpack_exports__, "extend", function() { return /* reexport */ extend["a" /* extend */]; }); __webpack_require__.d(__webpack_exports__, "hasBrowserColorPicker", function() { return /* reexport */ checker["a" /* hasBrowserColorPicker */]; }); __webpack_require__.d(__webpack_exports__, "isArray", function() { return /* reexport */ checker["c" /* isArray */]; }); __webpack_require__.d(__webpack_exports__, "isEqual", function() { return /* reexport */ checker["f" /* isEqual */]; }); __webpack_require__.d(__webpack_exports__, "isFastEqual", function() { return /* reexport */ checker["g" /* isFastEqual */]; }); __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return /* reexport */ checker["d" /* isBoolean */]; }); __webpack_require__.d(__webpack_exports__, "isFunction", function() { return /* reexport */ checker["h" /* isFunction */]; }); __webpack_require__.d(__webpack_exports__, "isHTML", function() { return /* reexport */ checker["i" /* isHTML */]; }); __webpack_require__.d(__webpack_exports__, "isHtmlFromWord", function() { return /* reexport */ checker["j" /* isHtmlFromWord */]; }); __webpack_require__.d(__webpack_exports__, "isInitable", function() { return /* reexport */ checker["k" /* isInitable */]; }); __webpack_require__.d(__webpack_exports__, "isDestructable", function() { return /* reexport */ checker["e" /* isDestructable */]; }); __webpack_require__.d(__webpack_exports__, "hasContainer", function() { return /* reexport */ checker["b" /* hasContainer */]; }); __webpack_require__.d(__webpack_exports__, "isInt", function() { return /* reexport */ checker["l" /* isInt */]; }); __webpack_require__.d(__webpack_exports__, "isJoditObject", function() { return /* reexport */ checker["m" /* isJoditObject */]; }); __webpack_require__.d(__webpack_exports__, "isViewObject", function() { return /* reexport */ checker["v" /* isViewObject */]; }); __webpack_require__.d(__webpack_exports__, "isLicense", function() { return /* reexport */ checker["n" /* isLicense */]; }); __webpack_require__.d(__webpack_exports__, "isNumber", function() { return /* reexport */ checker["o" /* isNumber */]; }); __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return /* reexport */ checker["p" /* isNumeric */]; }); __webpack_require__.d(__webpack_exports__, "isPlainObject", function() { return /* reexport */ checker["q" /* isPlainObject */]; }); __webpack_require__.d(__webpack_exports__, "isString", function() { return /* reexport */ checker["s" /* isString */]; }); __webpack_require__.d(__webpack_exports__, "isURL", function() { return /* reexport */ checker["t" /* isURL */]; }); __webpack_require__.d(__webpack_exports__, "isValidName", function() { return /* reexport */ checker["u" /* isValidName */]; }); __webpack_require__.d(__webpack_exports__, "isVoid", function() { return /* reexport */ checker["w" /* isVoid */]; }); __webpack_require__.d(__webpack_exports__, "isWindow", function() { return /* reexport */ checker["x" /* isWindow */]; }); __webpack_require__.d(__webpack_exports__, "isPromise", function() { return /* reexport */ checker["r" /* isPromise */]; }); __webpack_require__.d(__webpack_exports__, "colorToHex", function() { return /* reexport */ color["a" /* colorToHex */]; }); __webpack_require__.d(__webpack_exports__, "applyStyles", function() { return /* reexport */ applyStyles; }); __webpack_require__.d(__webpack_exports__, "cleanFromWord", function() { return /* reexport */ cleanFromWord; }); __webpack_require__.d(__webpack_exports__, "htmlspecialchars", function() { return /* reexport */ htmlspecialchars; }); __webpack_require__.d(__webpack_exports__, "stripTags", function() { return /* reexport */ stripTags; }); __webpack_require__.d(__webpack_exports__, "nl2br", function() { return /* reexport */ nl2br; }); __webpack_require__.d(__webpack_exports__, "normalizeKeyAliases", function() { return /* reexport */ normalize["c" /* normalizeKeyAliases */]; }); __webpack_require__.d(__webpack_exports__, "normalizeLicense", function() { return /* reexport */ normalize["d" /* normalizeLicense */]; }); __webpack_require__.d(__webpack_exports__, "normalizeNode", function() { return /* reexport */ normalize["e" /* normalizeNode */]; }); __webpack_require__.d(__webpack_exports__, "normalizePath", function() { return /* reexport */ normalize["f" /* normalizePath */]; }); __webpack_require__.d(__webpack_exports__, "normalizeRelativePath", function() { return /* reexport */ normalize["g" /* normalizeRelativePath */]; }); __webpack_require__.d(__webpack_exports__, "normalizeSize", function() { return /* reexport */ normalize["h" /* normalizeSize */]; }); __webpack_require__.d(__webpack_exports__, "normalizeUrl", function() { return /* reexport */ normalize["i" /* normalizeUrl */]; }); __webpack_require__.d(__webpack_exports__, "normalizeCssValue", function() { return /* reexport */ normalize["b" /* normalizeCssValue */]; }); __webpack_require__.d(__webpack_exports__, "normalizeColor", function() { return /* reexport */ normalize["a" /* normalizeColor */]; }); __webpack_require__.d(__webpack_exports__, "getContentWidth", function() { return /* reexport */ getContentWidth; }); __webpack_require__.d(__webpack_exports__, "innerWidth", function() { return /* reexport */ inner_width_innerWidth; }); __webpack_require__.d(__webpack_exports__, "offset", function() { return /* reexport */ offset; }); __webpack_require__.d(__webpack_exports__, "position", function() { return /* reexport */ position; }); __webpack_require__.d(__webpack_exports__, "camelCase", function() { return /* reexport */ string["a" /* camelCase */]; }); __webpack_require__.d(__webpack_exports__, "stringify", function() { return /* reexport */ string["e" /* stringify */]; }); __webpack_require__.d(__webpack_exports__, "kebabCase", function() { return /* reexport */ string["c" /* kebabCase */]; }); __webpack_require__.d(__webpack_exports__, "trim", function() { return /* reexport */ string["f" /* trim */]; }); __webpack_require__.d(__webpack_exports__, "trimInv", function() { return /* reexport */ string["g" /* trimInv */]; }); __webpack_require__.d(__webpack_exports__, "ucfirst", function() { return /* reexport */ string["h" /* ucfirst */]; }); __webpack_require__.d(__webpack_exports__, "sprintf", function() { return /* reexport */ string["d" /* sprintf */]; }); __webpack_require__.d(__webpack_exports__, "i18n", function() { return /* reexport */ string["b" /* i18n */]; }); __webpack_require__.d(__webpack_exports__, "appendScript", function() { return /* reexport */ appendScript; }); __webpack_require__.d(__webpack_exports__, "appendScriptAsync", function() { return /* reexport */ appendScriptAsync; }); __webpack_require__.d(__webpack_exports__, "appendStyleAsync", function() { return /* reexport */ appendStyleAsync; }); __webpack_require__.d(__webpack_exports__, "loadNext", function() { return /* reexport */ loadNext; }); __webpack_require__.d(__webpack_exports__, "browser", function() { return /* reexport */ browser; }); __webpack_require__.d(__webpack_exports__, "convertMediaUrlToVideoEmbed", function() { return /* reexport */ convertMediaUrlToVideoEmbed; }); __webpack_require__.d(__webpack_exports__, "css", function() { return /* reexport */ css; }); __webpack_require__.d(__webpack_exports__, "clearCenterAlign", function() { return /* reexport */ clearCenterAlign; }); __webpack_require__.d(__webpack_exports__, "ctrlKey", function() { return /* reexport */ ctrlKey; }); __webpack_require__.d(__webpack_exports__, "dataBind", function() { return /* reexport */ dataBind; }); __webpack_require__.d(__webpack_exports__, "defaultLanguage", function() { return /* reexport */ default_language["a" /* defaultLanguage */]; }); __webpack_require__.d(__webpack_exports__, "each", function() { return /* reexport */ each; }); __webpack_require__.d(__webpack_exports__, "completeUrl", function() { return /* reexport */ completeUrl; }); __webpack_require__.d(__webpack_exports__, "humanSizeToBytes", function() { return /* reexport */ humanSizeToBytes; }); __webpack_require__.d(__webpack_exports__, "JoditArray", function() { return /* reexport */ jodit_array["a" /* JoditArray */]; }); __webpack_require__.d(__webpack_exports__, "JoditObject", function() { return /* reexport */ jodit_object["a" /* JoditObject */]; }); __webpack_require__.d(__webpack_exports__, "parseQuery", function() { return /* reexport */ parseQuery; }); __webpack_require__.d(__webpack_exports__, "buildQuery", function() { return /* reexport */ buildQuery; }); __webpack_require__.d(__webpack_exports__, "inView", function() { return /* reexport */ inView; }); __webpack_require__.d(__webpack_exports__, "scrollIntoView", function() { return /* reexport */ scrollIntoView; }); __webpack_require__.d(__webpack_exports__, "$$", function() { return /* reexport */ $$; }); __webpack_require__.d(__webpack_exports__, "getXPathByElement", function() { return /* reexport */ getXPathByElement; }); __webpack_require__.d(__webpack_exports__, "refs", function() { return /* reexport */ refs; }); __webpack_require__.d(__webpack_exports__, "cssPath", function() { return /* reexport */ cssPath; }); __webpack_require__.d(__webpack_exports__, "resolveElement", function() { return /* reexport */ resolveElement; }); __webpack_require__.d(__webpack_exports__, "hasOwn", function() { return /* reexport */ type["b" /* hasOwn */]; }); __webpack_require__.d(__webpack_exports__, "type", function() { return /* reexport */ type["c" /* type */]; }); __webpack_require__.d(__webpack_exports__, "error", function() { return /* reexport */ type["a" /* error */]; }); __webpack_require__.d(__webpack_exports__, "val", function() { return /* reexport */ val; }); // EXTERNAL MODULE: ./src/core/helpers/utils/index.ts + 4 modules var utils = __webpack_require__(10); // EXTERNAL MODULE: ./src/core/helpers/checker/index.ts + 20 modules var checker = __webpack_require__(5); // CONCATENATED MODULE: ./src/core/helpers/array/as-array.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const asArray = (a) => (Object(checker["c" /* isArray */])(a) ? a : [a]); // CONCATENATED MODULE: ./src/core/helpers/array/split-array.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function splitArray(a) { return Object(checker["s" /* isString */])(a) ? a.split(/[,\s]+/) : a; } // CONCATENATED MODULE: ./src/core/helpers/array/index.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ // CONCATENATED MODULE: ./src/core/helpers/async/set-timeout.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function set_timeout_setTimeout(callback, timeout, ...args) { if (!timeout) { callback.call(null, ...args); } else { return window.setTimeout(callback, timeout, ...args); } return 0; } function set_timeout_clearTimeout(timer) { window.clearTimeout(timer); } // CONCATENATED MODULE: ./src/core/helpers/async/index.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ // EXTERNAL MODULE: ./src/core/helpers/extend.ts var extend = __webpack_require__(24); // EXTERNAL MODULE: ./src/core/helpers/color/index.ts + 1 modules var color = __webpack_require__(25); // EXTERNAL MODULE: ./src/core/dom.ts var dom = __webpack_require__(1); // EXTERNAL MODULE: ./src/core/constants.ts var constants = __webpack_require__(2); // EXTERNAL MODULE: ./src/core/helpers/type.ts var type = __webpack_require__(21); // EXTERNAL MODULE: ./src/core/helpers/string/index.ts + 6 modules var string = __webpack_require__(11); // CONCATENATED MODULE: ./src/core/helpers/selector.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ let temp = 1; const $$temp = () => { temp++; return temp; }; function $$(selector, root) { let result; if (/:scope/.test(selector) && constants["IS_IE"] && !(root && root.nodeType === Node.DOCUMENT_NODE)) { const id = root.id, temp_id = id || '_selector_id_' + ('' + Math.random()).slice(2) + $$temp(); selector = selector.replace(/:scope/g, '#' + temp_id); !id && root.setAttribute('id', temp_id); result = root.parentNode.querySelectorAll(selector); if (!id) { root.removeAttribute('id'); } } else { result = root.querySelectorAll(selector); } return [].slice.call(result); } const getXPathByElement = (element, root) => { if (!element || element.nodeType !== Node.ELEMENT_NODE) { return ''; } if (!element.parentNode || root === element) { return ''; } if (element.id) { return "//*[@id='" + element.id + "']"; } const sames = [].filter.call(element.parentNode.childNodes, (x) => x.nodeName === element.nodeName); return (getXPathByElement(element.parentNode, root) + '/' + element.nodeName.toLowerCase() + (sames.length > 1 ? '[' + (Array.from(sames).indexOf(element) + 1) + ']' : '')); }; const refs = (root) => { return $$('[ref],[data-ref]', root).reduce((def, child) => { const key = Object(utils["a" /* attr */])(child, '-ref'); if (key && Object(checker["s" /* isString */])(key)) { def[Object(string["a" /* camelCase */])(key)] = child; def[key] = child; } return def; }, {}); }; const cssPath = (el) => { if (!dom["a" /* Dom */].isElement(el)) { return null; } const path = []; let start = el; while (start && start.nodeType === Node.ELEMENT_NODE) { let selector = start.nodeName.toLowerCase(); if (start.id) { selector += '#' + start.id; path.unshift(selector); break; } else { let sib = start, nth = 1; do { sib = sib.previousElementSibling; if (sib && sib.nodeName.toLowerCase() === selector) { nth++; } } while (sib); selector += ':nth-of-type(' + nth + ')'; } path.unshift(selector); start = start.parentNode; } return path.join(' > '); }; function resolveElement(element, od) { let resolved = element; if (Object(checker["s" /* isString */])(element)) { try { resolved = od.querySelector(element); } catch (_a) { throw Object(type["a" /* error */])('String "' + element + '" should be valid HTML selector'); } } if (!resolved || typeof resolved !== 'object' || !dom["a" /* Dom */].isElement(resolved) || !resolved.cloneNode) { throw Object(type["a" /* error */])('Element "' + element + '" should be string or HTMLElement instance'); } return resolved; } // CONCATENATED MODULE: ./src/core/helpers/html/apply-styles.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function normalizeCSS(s) { return s .replace(/mso-[a-z-]+:[\s]*[^;]+;/gi, '') .replace(/mso-[a-z-]+:[\s]*[^";]+$/gi, '') .replace(/border[a-z-]*:[\s]*[^;]+;/gi, '') .replace(/([0-9.]+)(pt|cm)/gi, (match, units, metrics) => { switch (metrics.toLowerCase()) { case 'pt': return (parseFloat(units) * 1.328).toFixed(0) + 'px'; case 'cm': return (parseFloat(units) * 0.02645833).toFixed(0) + 'px'; } return match; }); } function applyStyles(html) { if (html.indexOf('<html ') === -1) { return html; } html = html.substring(html.indexOf('<html '), html.length); html = html.substring(0, html.lastIndexOf('</html>') + '</html>'.length); const iframe = document.createElement('iframe'); iframe.style.display = 'none'; document.body.appendChild(iframe); let convertedString = '', collection = [], rules = []; try { const iframeDoc = iframe.contentDocument || (iframe.contentWindow ? iframe.contentWindow.document : null); if (iframeDoc) { iframeDoc.open(); iframeDoc.write(html); iframeDoc.close(); if (iframeDoc.styleSheets.length) { rules = iframeDoc.styleSheets[iframeDoc.styleSheets.length - 1].cssRules; } for (let idx = 0; idx < rules.length; idx += 1) { if (rules[idx].selectorText === '') { continue; } collection = $$(rules[idx].selectorText, iframeDoc.body); collection.forEach((elm) => { elm.style.cssText = normalizeCSS(rules[idx].style.cssText + ';' + elm.style.cssText); }); } dom["a" /* Dom */].each(iframeDoc.body, node => { if (dom["a" /* Dom */].isElement(node)) { const elm = node; const css = elm.style.cssText; if (css) { elm.style.cssText = normalizeCSS(css); } if (elm.hasAttribute('lang')) { elm.removeAttribute('lang'); } } }); convertedString = iframeDoc.firstChild ? Object(string["f" /* trim */])(iframeDoc.body.innerHTML) : ''; } } catch (_a) { } finally { dom["a" /* Dom */].safeRemove(iframe); } if (convertedString) { html = convertedString; } return Object(string["f" /* trim */])(html .replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '') .replace(/<!--[^>]*>/g, '')); } // CONCATENATED MODULE: ./src/core/helpers/html/clean-from-word.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function cleanFromWord(html) { if (html.indexOf('<html ') !== -1) { html = html.substring(html.indexOf('<html '), html.length); html = html.substring(0, html.lastIndexOf('</html>') + '</html>'.length); } let convertedString = ''; try { const div = document.createElement('div'); div.innerHTML = html; const marks = []; if (div.firstChild) { dom["a" /* Dom */].all(div, node => { if (!node) { return; } switch (node.nodeType) { case Node.ELEMENT_NODE: switch (node.nodeName) { case 'STYLE': case 'LINK': case 'META': marks.push(node); break; case 'W:SDT': case 'W:SDTPR': case 'FONT': dom["a" /* Dom */].unwrap(node); break; default: Array.from(node.attributes).forEach((attr) => { if ([ 'src', 'href', 'rel', 'content' ].indexOf(attr.name.toLowerCase()) === -1) { node.removeAttribute(attr.name); } }); } break; case Node.TEXT_NODE: break; default: marks.push(node); } }); } marks.forEach(dom["a" /* Dom */].safeRemove); convertedString = div.innerHTML; } catch (e) { } if (convertedString) { html = convertedString; } html = html .split(/(\n)/) .filter(string["f" /* trim */]) .join('\n'); return html .replace(/<(\/)?(html|colgroup|col|o:p)[^>]*>/g, '') .replace(/<!--[^>]*>/g, ''); } // CONCATENATED MODULE: ./src/core/helpers/html/htmlspecialchars.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function htmlspecialchars(html) { const tmp = document.createElement('div'); tmp.textContent = html; return tmp.innerHTML; } // CONCATENATED MODULE: ./src/core/helpers/html/strip-tags.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function stripTags(html, doc = document) { const tmp = doc.createElement('div'); if (Object(checker["s" /* isString */])(html)) { tmp.innerHTML = html; } else { tmp.appendChild(html); } $$('DIV, P, BR, H1, H2, H3, H4, H5, H6, HR', tmp).forEach(p => { const pr = p.parentNode; if (!pr) { return; } const nx = p.nextSibling; if (dom["a" /* Dom */].isText(nx) && /^\s/.test(nx.nodeValue || '')) { return; } if (nx) { pr.insertBefore(doc.createTextNode(' '), nx); } }); return Object(string["f" /* trim */])(tmp.innerText) || ''; } // CONCATENATED MODULE: ./src/core/helpers/html/nl2br.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function nl2br(html) { return html.replace(/([^>])([\n\r]+)/g, '$1<br/>$2'); } // CONCATENATED MODULE: ./src/core/helpers/html/index.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ // EXTERNAL MODULE: ./src/core/helpers/normalize/index.ts + 9 modules var normalize = __webpack_require__(20); // CONCATENATED MODULE: ./src/core/helpers/size/get-content-width.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const getContentWidth = (element, win) => { 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'); return width - paddingLeft - paddingRight; }; // CONCATENATED MODULE: ./src/core/helpers/size/inner-width.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const inner_width_innerWidth = (element, win) => { const computedStyle = win.getComputedStyle(element); let elementWidth = element.clientWidth; elementWidth -= parseFloat(computedStyle.paddingLeft || '0') + parseFloat(computedStyle.paddingRight || '0'); return elementWidth; }; // CONCATENATED MODULE: ./src/core/helpers/size/offset.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const offset = (elm, jodit, doc, recurse = false) => { let rect; try { rect = elm.getBoundingClientRect(); } catch (e) { rect = { top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0 }; } const body = doc.body, docElem = doc.documentElement || { clientTop: 0, clientLeft: 0, scrollTop: 0, scrollLeft: 0 }, 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; let topValue, leftValue; const iframe = jodit.iframe; if (!recurse && jodit && jodit.options && jodit.o.iframe && iframe) { const { top, left } = offset(iframe, jodit, jodit.od, true); topValue = rect.top + top; leftValue = rect.left + left; } else { topValue = rect.top + scrollTop - clientTop; leftValue = rect.left + scrollLeft - clientLeft; } return { top: Math.round(topValue), left: Math.round(leftValue), width: rect.width, height: rect.height }; }; // CONCATENATED MODULE: ./src/core/helpers/size/position.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function position(elm, jodit, recurse = false) { const rect = elm.getBoundingClientRect(); let xPos = rect.left, yPos = rect.top; if (Object(checker["m" /* isJoditObject */])(jodit) && jodit.iframe && !recurse) { const { left, top } = position(jodit.iframe, jodit, true); xPos += left; yPos += top; } return { left: Math.round(xPos), top: Math.round(yPos), width: Math.round(elm.offsetWidth), height: Math.round(elm.offsetHeight) }; } // CONCATENATED MODULE: ./src/core/helpers/size/index.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ // CONCATENATED MODULE: ./src/core/helpers/complete-url.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const completeUrl = (url) => { if (window.location.protocol === 'file:' && /^\/\//.test(url)) { url = 'https:' + url; } return url; }; // CONCATENATED MODULE: ./src/core/helpers/append-script.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const alreadyLoadedList = new Map(); const cacheLoaders = (loader) => { return async (jodit, url) => { if (alreadyLoadedList.has(url)) { return alreadyLoadedList.get(url); } const promise = loader(jodit, url); alreadyLoadedList.set(url, promise); return promise; }; }; const appendScript = (jodit, url, callback) => { const script = jodit.c.element('script'); script.type = 'text/javascript'; if (Object(checker["h" /* isFunction */])(callback) && !jodit.isInDestruct) { jodit.e.on(script, 'load', callback); } if (!script.src) { script.src = completeUrl(url); } jodit.od.body.appendChild(script); return { callback, element: script }; }; const appendScriptAsync = cacheLoaders((jodit, url) => { return new Promise((resolve, reject) => { const { element } = appendScript(jodit, url, resolve); !jodit.isInDestruct && jodit.e.on(element, 'error', reject); }); }); const appendStyleAsync = cacheLoaders((jodit, url) => { return new Promise((resolve, reject) => { const link = jodit.c.element('link'); link.rel = 'stylesheet'; link.media = 'all'; link.crossOrigin = 'anonymous'; const callback = () => resolve(link); !jodit.isInDestruct && jodit.e.on(link, 'load', callback).on(link, 'error', reject); link.href = completeUrl(url); if (jodit.o.shadowRoot) { jodit.o.shadowRoot.appendChild(link); } else { jodit.od.body.appendChild(link); } }); }); const loadNext = (jodit, urls, i = 0) => { if (!Object(checker["s" /* isString */])(urls[i])) { return Promise.resolve(); } return appendScriptAsync(jodit, urls[i]).then(() => loadNext(jodit, urls, i + 1)); }; // CONCATENATED MODULE: ./src/core/helpers/browser.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const browser = (browser) => { const ua = navigator.userAgent.toLowerCase(), match = /(firefox)[\s/]([\w.]+)/.exec(ua) || /(chrome)[\s/]([\w.]+)/.exec(ua) || /(webkit)[\s/]([\w.]+)/.exec(ua) || /(opera)(?:.*version)[\s/]([\w.]+)/.exec(ua) || /(msie)[\s]([\w.]+)/.exec(ua) || /(trident)\/([\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 || []; if (browser === 'version') { return match[2]; } if (browser === 'webkit') { return match[1] === 'chrome' || match[1] === 'webkit'; } if (browser === 'ff') { return match[1] === 'firefox'; } if (browser === 'msie') { return match[1] === 'trident' || match[1] === 'msie'; } return match[1] === browser; }; // CONCATENATED MODULE: ./src/core/helpers/parse-query.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const parseQuery = (queryString) => { const query = {}, a = queryString.substr(1).split('&'); for (let i = 0; i < a.length; i += 1) { const keyValue = a[i].split('='); query[decodeURIComponent(keyValue[0])] = decodeURIComponent(keyValue[1] || ''); } return query; }; // CONCATENATED MODULE: ./src/core/helpers/convert-media-url-to-video-embed.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const convertMediaUrlToVideoEmbed = (url, width = 400, height = 345) => { if (!Object(checker["t" /* isURL */])(url)) { return url; } const parser = document.createElement('a'), pattern1 = /(?:http?s?:\/\/)?(?:www\.)?(?:vimeo\.com)\/?(.+)/g; parser.href = url; if (!width) { width = 400; } if (!height) { height = 345; } const protocol = parser.protocol || ''; switch (parser.hostname) { case 'www.vimeo.com': case 'vimeo.com': return pattern1.test(url) ? url.replace(pattern1, '<iframe width="' + width + '" height="' + height + '" src="' + protocol + '//player.vimeo.com/video/$1" frameborder="0" allowfullscreen></iframe>') : url; case 'youtube.com': case 'www.youtube.com': case 'youtu.be': case 'www.youtu.be': { const query = parser.search ? parseQuery(parser.search) : { v: parser.pathname.substr(1) }; return query.v ? '<iframe width="' + width + '" height="' + height + '" src="' + protocol + '//www.youtube.com/embed/' + query.v + '" frameborder="0" allowfullscreen></iframe>' : url; } } return url; }; // CONCATENATED MODULE: ./src/core/helpers/css.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const css = (element, key, value, onlyStyleMode = false) => { const numberFieldsReg = /^left|top|bottom|right|width|min|max|height|margin|padding|fontsize|font-size/i; if (Object(checker["q" /* isPlainObject */])(key) || value !== undefined) { const setValue = (elm, _key, _value) => { if (!Object(checker["w" /* isVoid */])(_value) && numberFieldsReg.test(_key) && Object(checker["p" /* isNumeric */])(_value.toString())) { _value = parseInt(_value.toString(), 10) + 'px'; } if (!Object(checker["w" /* isVoid */])(_value) && css(elm, _key, undefined, true) !== Object(normalize["b" /* normalizeCssValue */])(_key, _value)) { elm.style[_key] = _value; } }; if (Object(checker["q" /* isPlainObject */])(key)) { const keys = Object.keys(key); for (let j = 0; j < keys.length; j += 1) { setValue(element, Object(string["a" /* camelCase */])(keys[j]), key[keys[j]]); } } else { setValue(element, Object(string["a" /* camelCase */])(key), value); } return ''; } const key2 = Object(string["c" /* kebabCase */])(key), doc = element.ownerDocument || document, win = doc ? doc.defaultView || doc.parentWindow : false; const currentValue = element.style[key]; let result = ''; if (currentValue !== undefined && currentValue !== '') { result = currentValue; } else if (win && !onlyStyleMode) { result = win.getComputedStyle(element).getPropertyValue(key2); } if (numberFieldsReg.test(key) && /^[-+]?[0-9.]+px$/.test(result.toString())) { result = parseInt(result.toString(), 10); } return Object(normalize["b" /* normalizeCssValue */])(key, result); }; const clearCenterAlign = (image) => { if (css(image, 'display') === 'block') { css(image, 'display', ''); } if (image.style.marginLeft === 'auto' && image.style.marginRight === 'auto') { image.style.marginLeft = ''; image.style.marginRight = ''; } }; // CONCATENATED MODULE: ./src/core/helpers/ctrl-key.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const ctrlKey = (e) => { if (typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Mac OS X') !== -1) { if (e.metaKey && !e.altKey) { return true; } } else if (e.ctrlKey && !e.altKey) { return true; } return false; }; // EXTERNAL MODULE: ./src/core/component/index.ts + 3 modules var component = __webpack_require__(8); // CONCATENATED MODULE: ./src/core/helpers/data-bind.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const store = new WeakMap(); const dataBind = (elm, key, value) => { let itemStore = store.get(elm); if (!itemStore) { itemStore = {}; store.set(elm, itemStore); let e = null; if (elm instanceof component["c" /* ViewComponent */]) { e = elm.j.e; } if (Object(checker["v" /* isViewObject */])(elm)) { e = elm.e; } e && e.on('beforeDestruct', () => { store.delete(elm); }); } if (value === undefined) { return itemStore[key]; } itemStore[key] = value; return value; }; // EXTERNAL MODULE: ./src/core/helpers/default-language.ts var default_language = __webpack_require__(26); // CONCATENATED MODULE: ./src/core/helpers/each.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ function each(obj, callback) { let length, keys, i; if (Object(checker["c" /* isArray */])(obj)) { length = obj.length; for (i = 0; i < length; i += 1) { if (callback.call(obj[i], i, obj[i]) === false) { return false; } } } else { keys = Object.keys(obj); for (i = 0; i < keys.length; i += 1) { if (callback.call(obj[keys[i]], keys[i], obj[keys[i]]) === false) { return false; } } } return true; } // CONCATENATED MODULE: ./src/core/helpers/human-size-to-bytes.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const humanSizeToBytes = (human) => { if (/^[0-9.]+$/.test(human.toString())) { return parseFloat(human); } const format = human.substr(-2, 2).toUpperCase(), formats = ['KB', 'MB', 'GB', 'TB'], number = parseFloat(human.substr(0, human.length - 2)); return formats.indexOf(format) !== -1 ? number * Math.pow(1024, formats.indexOf(format) + 1) : parseInt(human, 10); }; // EXTERNAL MODULE: ./src/core/helpers/jodit-array.ts var jodit_array = __webpack_require__(23); // EXTERNAL MODULE: ./src/core/helpers/jodit-object.ts var jodit_object = __webpack_require__(27); // CONCATENATED MODULE: ./src/core/helpers/build-query.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const buildQuery = (data, prefix) => { const str = []; const enc = encodeURIComponent; for (const dataKey in data) { if (Object.prototype.hasOwnProperty.call(data, dataKey)) { const k = prefix ? prefix + '[' + dataKey + ']' : dataKey; const v = data[dataKey]; str.push(Object(checker["q" /* isPlainObject */])(v) ? buildQuery(v, k) : enc(k) + '=' + enc(v)); } } return str.join('&'); }; // CONCATENATED MODULE: ./src/core/helpers/scroll-into-view.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const inView = (elm, root, doc) => { let rect = elm.getBoundingClientRect(), el = elm; const top = rect.top, height = rect.height; do { if (el && el.parentNode) { el = el.parentNode; rect = el.getBoundingClientRect(); if (!(top <= rect.bottom)) { return false; } if (top + height <= rect.top) { return false; } } } while (el && el !== root && el.parentNode); return (top <= ((doc.documentElement && doc.documentElement.clientHeight) || 0)); }; const scrollIntoView = (elm, root, doc) => { if (!inView(elm, root, doc)) { if (root.clientHeight !== root.scrollHeight) { root.scrollTop = elm.offsetTop; } if (!inView(elm, root, doc)) { elm.scrollIntoView(); } } }; // CONCATENATED MODULE: ./src/core/helpers/val.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ const val = (elm, selector, value) => { const child = elm.querySelector(selector); if (!child) { return ''; } if (value) { child.value = value; } return child.value; }; // CONCATENATED MODULE: ./src/core/helpers/index.ts /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Dom; }); /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); /* harmony import */ var _plugins_keyboard_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16); /*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2020 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ class Dom { static detach(node) { while (node.firstChild) { node.removeChild(node.firstChild); } } static wrapInline(current, tag, editor) { let tmp, first = current, last = current; const selInfo = editor.s.save(); let needFindNext = false; do { needFindNext = false; tmp = first.previousSibling; if (tmp && !Dom.isBlock(tmp, editor.ew)) { needFindNext = true; first = tmp; } } while (needFindNext); do { needFindNext = false; tmp = last.nextSibling; if (tmp && !Dom.isBlock(tmp, editor.ew)) { needFindNext = true; last = tmp; } } while (needFindNext); const wrapper = Object(_helpers__WEBPACK_IMPORTED_MODULE_1__["isString"])(tag) ? editor.createInside.element(tag) : tag; if (first.parentNode) { first.parentNode.insertBefore(wrapper, first); } let next = first; while (next) { next = first.nextSibling; wrapper.appendChild(first); if (first === last || !next) { break; } first = next; } editor.s.restore(selInfo); retur