@editorjs/list
Version:
List Tool for EditorJS
1,339 lines • 72 kB
JavaScript
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode('.cdx-list{margin:0;padding:0;outline:none;display:grid;counter-reset:item;gap:var(--spacing-s);padding:var(--spacing-xs);--spacing-s: 8px;--spacing-xs: 6px;--list-counter-type: numeric;--radius-border: 5px;--checkbox-background: #fff;--color-border: #C9C9C9;--color-bg-checked: #369FFF;--line-height: 1.45em;--color-bg-checked-hover: #0059AB;--color-tick: #fff;--size-checkbox: 1.2em}.cdx-list__item{line-height:var(--line-height);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-template-areas:"checkbox content" ". child"}.cdx-list__item-children{display:grid;grid-area:child;gap:var(--spacing-s);padding-top:var(--spacing-s)}.cdx-list__item [contenteditable]{outline:none}.cdx-list__item-content{word-break:break-word;white-space:pre-wrap;grid-area:content;padding-left:var(--spacing-s)}.cdx-list__item:before{counter-increment:item;white-space:nowrap}.cdx-list-ordered .cdx-list__item:before{content:counters(item,".",var(--list-counter-type)) "."}.cdx-list-ordered{counter-reset:item}.cdx-list-unordered .cdx-list__item:before{content:"•"}.cdx-list-checklist .cdx-list__item:before{content:""}.cdx-list__settings .cdx-settings-button{width:50%}.cdx-list__checkbox{padding-top:calc((var(--line-height) - var(--size-checkbox)) / 2);grid-area:checkbox;width:var(--size-checkbox);height:var(--size-checkbox);display:flex;cursor:pointer}.cdx-list__checkbox svg{opacity:0;height:var(--size-checkbox);width:var(--size-checkbox);left:-1px;top:-1px;position:absolute}@media (hover: hover){.cdx-list__checkbox:not(.cdx-list__checkbox--no-hover):hover .cdx-list__checkbox-check svg{opacity:1}}.cdx-list__checkbox--checked{line-height:var(--line-height)}@media (hover: hover){.cdx-list__checkbox--checked:not(.cdx-list__checkbox--checked--no-hover):hover .cdx-checklist__checkbox-check{background:var(--color-bg-checked-hover);border-color:var(--color-bg-checked-hover)}}.cdx-list__checkbox--checked .cdx-list__checkbox-check{background:var(--color-bg-checked);border-color:var(--color-bg-checked)}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg{opacity:1}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg path{stroke:var(--color-tick)}.cdx-list__checkbox--checked .cdx-list__checkbox-check:before{opacity:0;visibility:visible;transform:scale(2.5)}.cdx-list__checkbox-check{cursor:pointer;display:inline-block;position:relative;margin:0 auto;width:var(--size-checkbox);height:var(--size-checkbox);box-sizing:border-box;border-radius:var(--radius-border);border:1px solid var(--color-border);background:var(--checkbox-background)}.cdx-list__checkbox-check:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:100%;background-color:var(--color-bg-checked);visibility:hidden;pointer-events:none;transform:scale(1);transition:transform .4s ease-out,opacity .4s}.cdx-list__checkbox-check--disabled{pointer-events:none}.cdx-list-start-with-field{background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-list-start-with-field--invalid{background:#FFECED;border:1px solid #E13F3F}.cdx-list-start-with-field--invalid .cdx-list-start-with-field__input{color:#e13f3f}.cdx-list-start-with-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - var(--toolbox-buttons-size) - var(--icon-margin-right))}.cdx-list-start-with-field__input::placeholder{color:var(--grayText);font-weight:500}')),document.head.appendChild(e)}}catch(c){console.error("vite-plugin-css-injected-by-js",c)}})();
const Ct = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M7 12L10.4884 15.8372C10.5677 15.9245 10.705 15.9245 10.7844 15.8372L17 9"/></svg>', Ae = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M9.2 12L11.0586 13.8586C11.1367 13.9367 11.2633 13.9367 11.3414 13.8586L14.7 10.5"/><rect width="14" height="14" x="5" y="5" stroke="currentColor" stroke-width="2" rx="4"/></svg>', $e = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><line x1="9" x2="19" y1="7" y2="7" stroke="currentColor" stroke-linecap="round" stroke-width="2"/><line x1="9" x2="19" y1="12" y2="12" stroke="currentColor" stroke-linecap="round" stroke-width="2"/><line x1="9" x2="19" y1="17" y2="17" stroke="currentColor" stroke-linecap="round" stroke-width="2"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M5.00001 17H4.99002"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M5.00001 12H4.99002"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M5.00001 7H4.99002"/></svg>', Be = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><line x1="12" x2="19" y1="7" y2="7" stroke="currentColor" stroke-linecap="round" stroke-width="2"/><line x1="12" x2="19" y1="12" y2="12" stroke="currentColor" stroke-linecap="round" stroke-width="2"/><line x1="12" x2="19" y1="17" y2="17" stroke="currentColor" stroke-linecap="round" stroke-width="2"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M7.79999 14L7.79999 7.2135C7.79999 7.12872 7.7011 7.0824 7.63597 7.13668L4.79999 9.5"/></svg>', St = '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10 14.2L10 7.4135C10 7.32872 9.90111 7.28241 9.83598 7.33668L7 9.7" stroke="black" stroke-width="1.6" stroke-linecap="round"/><path d="M13.2087 14.2H13.2" stroke="black" stroke-width="1.6" stroke-linecap="round"/></svg>', Ot = '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.2087 14.2H13.2" stroke="black" stroke-width="1.6" stroke-linecap="round"/><path d="M10 14.2L10 9.5" stroke="black" stroke-width="1.6" stroke-linecap="round"/><path d="M10 7.01L10 7" stroke="black" stroke-width="1.8" stroke-linecap="round"/></svg>', kt = '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M13.2087 14.2H13.2" stroke="black" stroke-width="1.6" stroke-linecap="round"/><path d="M10 14.2L10 7.2" stroke="black" stroke-width="1.6" stroke-linecap="round"/></svg>', _t = '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16.0087 14.2H16" stroke="black" stroke-width="1.6" stroke-linecap="round"/><path d="M7 14.2L7.78865 12M13 14.2L12.1377 12M7.78865 12C7.78865 12 9.68362 7 10 7C10.3065 7 12.1377 12 12.1377 12M7.78865 12L12.1377 12" stroke="black" stroke-width="1.6" stroke-linecap="round"/></svg>', Et = '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.2087 14.2H14.2" stroke="black" stroke-width="1.6" stroke-linecap="round"/><path d="M11.5 14.5C11.5 14.5 11 13.281 11 12.5M7 9.5C7 9.5 7.5 8.5 9 8.5C10.5 8.5 11 9.5 11 10.5L11 11.5M11 11.5L11 12.5M11 11.5C11 11.5 7 11 7 13C7 15.3031 11 15 11 12.5" stroke="black" stroke-width="1.6" stroke-linecap="round"/></svg>', It = '<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 14.2L8 7.4135C8 7.32872 7.90111 7.28241 7.83598 7.33668L5 9.7" stroke="black" stroke-width="1.6" stroke-linecap="round"/><path d="M14 13L16.4167 10.7778M16.4167 10.7778L14 8.5M16.4167 10.7778H11.6562" stroke="black" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>';
var A = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function wt(e) {
if (e.__esModule)
return e;
var t = e.default;
if (typeof t == "function") {
var n = function r() {
return this instanceof r ? Reflect.construct(t, arguments, this.constructor) : t.apply(this, arguments);
};
n.prototype = t.prototype;
} else
n = {};
return Object.defineProperty(n, "__esModule", { value: !0 }), Object.keys(e).forEach(function(r) {
var i = Object.getOwnPropertyDescriptor(e, r);
Object.defineProperty(n, r, i.get ? i : {
enumerable: !0,
get: function() {
return e[r];
}
});
}), n;
}
var c = {}, V = {}, Y = {};
Object.defineProperty(Y, "__esModule", { value: !0 });
Y.allInputsSelector = Pt;
function Pt() {
var e = ["text", "password", "email", "number", "search", "tel", "url"];
return "[contenteditable=true], textarea, input:not([type]), " + e.map(function(t) {
return 'input[type="'.concat(t, '"]');
}).join(", ");
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.allInputsSelector = void 0;
var t = Y;
Object.defineProperty(e, "allInputsSelector", { enumerable: !0, get: function() {
return t.allInputsSelector;
} });
})(V);
var k = {}, J = {};
Object.defineProperty(J, "__esModule", { value: !0 });
J.isNativeInput = jt;
function jt(e) {
var t = [
"INPUT",
"TEXTAREA"
];
return e && e.tagName ? t.includes(e.tagName) : !1;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isNativeInput = void 0;
var t = J;
Object.defineProperty(e, "isNativeInput", { enumerable: !0, get: function() {
return t.isNativeInput;
} });
})(k);
var Fe = {}, Q = {};
Object.defineProperty(Q, "__esModule", { value: !0 });
Q.append = Tt;
function Tt(e, t) {
Array.isArray(t) ? t.forEach(function(n) {
e.appendChild(n);
}) : e.appendChild(t);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.append = void 0;
var t = Q;
Object.defineProperty(e, "append", { enumerable: !0, get: function() {
return t.append;
} });
})(Fe);
var Z = {}, x = {};
Object.defineProperty(x, "__esModule", { value: !0 });
x.blockElements = Lt;
function Lt() {
return [
"address",
"article",
"aside",
"blockquote",
"canvas",
"div",
"dl",
"dt",
"fieldset",
"figcaption",
"figure",
"footer",
"form",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"header",
"hgroup",
"hr",
"li",
"main",
"nav",
"noscript",
"ol",
"output",
"p",
"pre",
"ruby",
"section",
"table",
"tbody",
"thead",
"tr",
"tfoot",
"ul",
"video"
];
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.blockElements = void 0;
var t = x;
Object.defineProperty(e, "blockElements", { enumerable: !0, get: function() {
return t.blockElements;
} });
})(Z);
var Re = {}, ee = {};
Object.defineProperty(ee, "__esModule", { value: !0 });
ee.calculateBaseline = Mt;
function Mt(e) {
var t = window.getComputedStyle(e), n = parseFloat(t.fontSize), r = parseFloat(t.lineHeight) || n * 1.2, i = parseFloat(t.paddingTop), a = parseFloat(t.borderTopWidth), l = parseFloat(t.marginTop), s = n * 0.8, o = (r - n) / 2, d = l + a + i + o + s;
return d;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.calculateBaseline = void 0;
var t = ee;
Object.defineProperty(e, "calculateBaseline", { enumerable: !0, get: function() {
return t.calculateBaseline;
} });
})(Re);
var qe = {}, te = {}, ne = {}, re = {};
Object.defineProperty(re, "__esModule", { value: !0 });
re.isContentEditable = Nt;
function Nt(e) {
return e.contentEditable === "true";
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isContentEditable = void 0;
var t = re;
Object.defineProperty(e, "isContentEditable", { enumerable: !0, get: function() {
return t.isContentEditable;
} });
})(ne);
Object.defineProperty(te, "__esModule", { value: !0 });
te.canSetCaret = Bt;
var At = k, $t = ne;
function Bt(e) {
var t = !0;
if ((0, At.isNativeInput)(e))
switch (e.type) {
case "file":
case "checkbox":
case "radio":
case "hidden":
case "submit":
case "button":
case "image":
case "reset":
t = !1;
break;
}
else
t = (0, $t.isContentEditable)(e);
return t;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.canSetCaret = void 0;
var t = te;
Object.defineProperty(e, "canSetCaret", { enumerable: !0, get: function() {
return t.canSetCaret;
} });
})(qe);
var $ = {}, ie = {};
function Wt(e, t, n) {
const r = n.value !== void 0 ? "value" : "get", i = n[r], a = `#${t}Cache`;
if (n[r] = function(...l) {
return this[a] === void 0 && (this[a] = i.apply(this, l)), this[a];
}, r === "get" && n.set) {
const l = n.set;
n.set = function(s) {
delete e[a], l.apply(this, s);
};
}
return n;
}
function Ue() {
const e = {
win: !1,
mac: !1,
x11: !1,
linux: !1
}, t = Object.keys(e).find((n) => window.navigator.appVersion.toLowerCase().indexOf(n) !== -1);
return t !== void 0 && (e[t] = !0), e;
}
function ae(e) {
return e != null && e !== "" && (typeof e != "object" || Object.keys(e).length > 0);
}
function Dt(e) {
return !ae(e);
}
const Ht = () => typeof window < "u" && window.navigator !== null && ae(window.navigator.platform) && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === "MacIntel" && window.navigator.maxTouchPoints > 1);
function Ft(e) {
const t = Ue();
return e = e.replace(/shift/gi, "⇧").replace(/backspace/gi, "⌫").replace(/enter/gi, "⏎").replace(/up/gi, "↑").replace(/left/gi, "→").replace(/down/gi, "↓").replace(/right/gi, "←").replace(/escape/gi, "⎋").replace(/insert/gi, "Ins").replace(/delete/gi, "␡").replace(/\+/gi, "+"), t.mac ? e = e.replace(/ctrl|cmd/gi, "⌘").replace(/alt/gi, "⌥") : e = e.replace(/cmd/gi, "Ctrl").replace(/windows/gi, "WIN"), e;
}
function Rt(e) {
return e[0].toUpperCase() + e.slice(1);
}
function qt(e) {
const t = document.createElement("div");
t.style.position = "absolute", t.style.left = "-999px", t.style.bottom = "-999px", t.innerHTML = e, document.body.appendChild(t);
const n = window.getSelection(), r = document.createRange();
if (r.selectNode(t), n === null)
throw new Error("Cannot copy text to clipboard");
n.removeAllRanges(), n.addRange(r), document.execCommand("copy"), document.body.removeChild(t);
}
function Ut(e, t, n) {
let r;
return (...i) => {
const a = this, l = () => {
r = void 0, n !== !0 && e.apply(a, i);
}, s = n === !0 && r !== void 0;
window.clearTimeout(r), r = window.setTimeout(l, t), s && e.apply(a, i);
};
}
function S(e) {
return Object.prototype.toString.call(e).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
}
function Kt(e) {
return S(e) === "boolean";
}
function Ke(e) {
return S(e) === "function" || S(e) === "asyncfunction";
}
function zt(e) {
return Ke(e) && /^\s*class\s+/.test(e.toString());
}
function Xt(e) {
return S(e) === "number";
}
function M(e) {
return S(e) === "object";
}
function Gt(e) {
return Promise.resolve(e) === e;
}
function Vt(e) {
return S(e) === "string";
}
function Yt(e) {
return S(e) === "undefined";
}
function X(e, ...t) {
if (!t.length)
return e;
const n = t.shift();
if (M(e) && M(n))
for (const r in n)
M(n[r]) ? (e[r] === void 0 && Object.assign(e, { [r]: {} }), X(e[r], n[r])) : Object.assign(e, { [r]: n[r] });
return X(e, ...t);
}
function Jt(e, t, n) {
const r = `«${t}» is deprecated and will be removed in the next major release. Please use the «${n}» instead.`;
e && console.warn(r);
}
function Qt(e) {
try {
return new URL(e).href;
} catch {
}
return e.substring(0, 2) === "//" ? window.location.protocol + e : window.location.origin + e;
}
function Zt(e) {
return e > 47 && e < 58 || e === 32 || e === 13 || e === 229 || e > 64 && e < 91 || e > 95 && e < 112 || e > 185 && e < 193 || e > 218 && e < 223;
}
const xt = {
BACKSPACE: 8,
TAB: 9,
ENTER: 13,
SHIFT: 16,
CTRL: 17,
ALT: 18,
ESC: 27,
SPACE: 32,
LEFT: 37,
UP: 38,
DOWN: 40,
RIGHT: 39,
DELETE: 46,
META: 91,
SLASH: 191
}, en = {
LEFT: 0,
WHEEL: 1,
RIGHT: 2,
BACKWARD: 3,
FORWARD: 4
};
class tn {
constructor() {
this.completed = Promise.resolve();
}
/**
* Add new promise to queue
* @param operation - promise should be added to queue
*/
add(t) {
return new Promise((n, r) => {
this.completed = this.completed.then(t).then(n).catch(r);
});
}
}
function nn(e, t, n = void 0) {
let r, i, a, l = null, s = 0;
n || (n = {});
const o = function() {
s = n.leading === !1 ? 0 : Date.now(), l = null, a = e.apply(r, i), l === null && (r = i = null);
};
return function() {
const d = Date.now();
!s && n.leading === !1 && (s = d);
const u = t - (d - s);
return r = this, i = arguments, u <= 0 || u > t ? (l && (clearTimeout(l), l = null), s = d, a = e.apply(r, i), l === null && (r = i = null)) : !l && n.trailing !== !1 && (l = setTimeout(o, u)), a;
};
}
const rn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
PromiseQueue: tn,
beautifyShortcut: Ft,
cacheable: Wt,
capitalize: Rt,
copyTextToClipboard: qt,
debounce: Ut,
deepMerge: X,
deprecationAssert: Jt,
getUserOS: Ue,
getValidUrl: Qt,
isBoolean: Kt,
isClass: zt,
isEmpty: Dt,
isFunction: Ke,
isIosDevice: Ht,
isNumber: Xt,
isObject: M,
isPrintableKey: Zt,
isPromise: Gt,
isString: Vt,
isUndefined: Yt,
keyCodes: xt,
mouseButtons: en,
notEmpty: ae,
throttle: nn,
typeOf: S
}, Symbol.toStringTag, { value: "Module" })), le = /* @__PURE__ */ wt(rn);
Object.defineProperty(ie, "__esModule", { value: !0 });
ie.containsOnlyInlineElements = sn;
var an = le, ln = Z;
function sn(e) {
var t;
(0, an.isString)(e) ? (t = document.createElement("div"), t.innerHTML = e) : t = e;
var n = function(r) {
return !(0, ln.blockElements)().includes(r.tagName.toLowerCase()) && Array.from(r.children).every(n);
};
return Array.from(t.children).every(n);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.containsOnlyInlineElements = void 0;
var t = ie;
Object.defineProperty(e, "containsOnlyInlineElements", { enumerable: !0, get: function() {
return t.containsOnlyInlineElements;
} });
})($);
var ze = {}, se = {}, B = {}, oe = {};
Object.defineProperty(oe, "__esModule", { value: !0 });
oe.make = on;
function on(e, t, n) {
var r;
t === void 0 && (t = null), n === void 0 && (n = {});
var i = document.createElement(e);
if (Array.isArray(t)) {
var a = t.filter(function(s) {
return s !== void 0;
});
(r = i.classList).add.apply(r, a);
} else
t !== null && i.classList.add(t);
for (var l in n)
Object.prototype.hasOwnProperty.call(n, l) && (i[l] = n[l]);
return i;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.make = void 0;
var t = oe;
Object.defineProperty(e, "make", { enumerable: !0, get: function() {
return t.make;
} });
})(B);
Object.defineProperty(se, "__esModule", { value: !0 });
se.fragmentToString = cn;
var un = B;
function cn(e) {
var t = (0, un.make)("div");
return t.appendChild(e), t.innerHTML;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.fragmentToString = void 0;
var t = se;
Object.defineProperty(e, "fragmentToString", { enumerable: !0, get: function() {
return t.fragmentToString;
} });
})(ze);
var Xe = {}, ue = {};
Object.defineProperty(ue, "__esModule", { value: !0 });
ue.getContentLength = fn;
var dn = k;
function fn(e) {
var t, n;
return (0, dn.isNativeInput)(e) ? e.value.length : e.nodeType === Node.TEXT_NODE ? e.length : (n = (t = e.textContent) === null || t === void 0 ? void 0 : t.length) !== null && n !== void 0 ? n : 0;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.getContentLength = void 0;
var t = ue;
Object.defineProperty(e, "getContentLength", { enumerable: !0, get: function() {
return t.getContentLength;
} });
})(Xe);
var ce = {}, de = {}, We = A && A.__spreadArray || function(e, t, n) {
if (n || arguments.length === 2)
for (var r = 0, i = t.length, a; r < i; r++)
(a || !(r in t)) && (a || (a = Array.prototype.slice.call(t, 0, r)), a[r] = t[r]);
return e.concat(a || Array.prototype.slice.call(t));
};
Object.defineProperty(de, "__esModule", { value: !0 });
de.getDeepestBlockElements = Ge;
var pn = $;
function Ge(e) {
return (0, pn.containsOnlyInlineElements)(e) ? [e] : Array.from(e.children).reduce(function(t, n) {
return We(We([], t, !0), Ge(n), !0);
}, []);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.getDeepestBlockElements = void 0;
var t = de;
Object.defineProperty(e, "getDeepestBlockElements", { enumerable: !0, get: function() {
return t.getDeepestBlockElements;
} });
})(ce);
var Ve = {}, fe = {}, W = {}, pe = {};
Object.defineProperty(pe, "__esModule", { value: !0 });
pe.isLineBreakTag = hn;
function hn(e) {
return [
"BR",
"WBR"
].includes(e.tagName);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isLineBreakTag = void 0;
var t = pe;
Object.defineProperty(e, "isLineBreakTag", { enumerable: !0, get: function() {
return t.isLineBreakTag;
} });
})(W);
var D = {}, he = {};
Object.defineProperty(he, "__esModule", { value: !0 });
he.isSingleTag = mn;
function mn(e) {
return [
"AREA",
"BASE",
"BR",
"COL",
"COMMAND",
"EMBED",
"HR",
"IMG",
"INPUT",
"KEYGEN",
"LINK",
"META",
"PARAM",
"SOURCE",
"TRACK",
"WBR"
].includes(e.tagName);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isSingleTag = void 0;
var t = he;
Object.defineProperty(e, "isSingleTag", { enumerable: !0, get: function() {
return t.isSingleTag;
} });
})(D);
Object.defineProperty(fe, "__esModule", { value: !0 });
fe.getDeepestNode = Ye;
var gn = k, vn = W, bn = D;
function Ye(e, t) {
t === void 0 && (t = !1);
var n = t ? "lastChild" : "firstChild", r = t ? "previousSibling" : "nextSibling";
if (e.nodeType === Node.ELEMENT_NODE && e[n]) {
var i = e[n];
if ((0, bn.isSingleTag)(i) && !(0, gn.isNativeInput)(i) && !(0, vn.isLineBreakTag)(i))
if (i[r])
i = i[r];
else if (i.parentNode !== null && i.parentNode[r])
i = i.parentNode[r];
else
return i.parentNode;
return Ye(i, t);
}
return e;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.getDeepestNode = void 0;
var t = fe;
Object.defineProperty(e, "getDeepestNode", { enumerable: !0, get: function() {
return t.getDeepestNode;
} });
})(Ve);
var Je = {}, me = {}, T = A && A.__spreadArray || function(e, t, n) {
if (n || arguments.length === 2)
for (var r = 0, i = t.length, a; r < i; r++)
(a || !(r in t)) && (a || (a = Array.prototype.slice.call(t, 0, r)), a[r] = t[r]);
return e.concat(a || Array.prototype.slice.call(t));
};
Object.defineProperty(me, "__esModule", { value: !0 });
me.findAllInputs = kn;
var yn = $, Cn = ce, Sn = V, On = k;
function kn(e) {
return Array.from(e.querySelectorAll((0, Sn.allInputsSelector)())).reduce(function(t, n) {
return (0, On.isNativeInput)(n) || (0, yn.containsOnlyInlineElements)(n) ? T(T([], t, !0), [n], !1) : T(T([], t, !0), (0, Cn.getDeepestBlockElements)(n), !0);
}, []);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.findAllInputs = void 0;
var t = me;
Object.defineProperty(e, "findAllInputs", { enumerable: !0, get: function() {
return t.findAllInputs;
} });
})(Je);
var Qe = {}, ge = {};
Object.defineProperty(ge, "__esModule", { value: !0 });
ge.isCollapsedWhitespaces = _n;
function _n(e) {
return !/[^\t\n\r ]/.test(e);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isCollapsedWhitespaces = void 0;
var t = ge;
Object.defineProperty(e, "isCollapsedWhitespaces", { enumerable: !0, get: function() {
return t.isCollapsedWhitespaces;
} });
})(Qe);
var ve = {}, be = {};
Object.defineProperty(be, "__esModule", { value: !0 });
be.isElement = In;
var En = le;
function In(e) {
return (0, En.isNumber)(e) ? !1 : !!e && !!e.nodeType && e.nodeType === Node.ELEMENT_NODE;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isElement = void 0;
var t = be;
Object.defineProperty(e, "isElement", { enumerable: !0, get: function() {
return t.isElement;
} });
})(ve);
var Ze = {}, ye = {}, Ce = {}, Se = {};
Object.defineProperty(Se, "__esModule", { value: !0 });
Se.isLeaf = wn;
function wn(e) {
return e === null ? !1 : e.childNodes.length === 0;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isLeaf = void 0;
var t = Se;
Object.defineProperty(e, "isLeaf", { enumerable: !0, get: function() {
return t.isLeaf;
} });
})(Ce);
var Oe = {}, ke = {};
Object.defineProperty(ke, "__esModule", { value: !0 });
ke.isNodeEmpty = Mn;
var Pn = W, jn = ve, Tn = k, Ln = D;
function Mn(e, t) {
var n = "";
return (0, Ln.isSingleTag)(e) && !(0, Pn.isLineBreakTag)(e) ? !1 : ((0, jn.isElement)(e) && (0, Tn.isNativeInput)(e) ? n = e.value : e.textContent !== null && (n = e.textContent.replace("", "")), t !== void 0 && (n = n.replace(new RegExp(t, "g"), "")), n.trim().length === 0);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isNodeEmpty = void 0;
var t = ke;
Object.defineProperty(e, "isNodeEmpty", { enumerable: !0, get: function() {
return t.isNodeEmpty;
} });
})(Oe);
Object.defineProperty(ye, "__esModule", { value: !0 });
ye.isEmpty = $n;
var Nn = Ce, An = Oe;
function $n(e, t) {
e.normalize();
for (var n = [e]; n.length > 0; ) {
var r = n.shift();
if (r) {
if (e = r, (0, Nn.isLeaf)(e) && !(0, An.isNodeEmpty)(e, t))
return !1;
n.push.apply(n, Array.from(e.childNodes));
}
}
return !0;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isEmpty = void 0;
var t = ye;
Object.defineProperty(e, "isEmpty", { enumerable: !0, get: function() {
return t.isEmpty;
} });
})(Ze);
var xe = {}, _e = {};
Object.defineProperty(_e, "__esModule", { value: !0 });
_e.isFragment = Wn;
var Bn = le;
function Wn(e) {
return (0, Bn.isNumber)(e) ? !1 : !!e && !!e.nodeType && e.nodeType === Node.DOCUMENT_FRAGMENT_NODE;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isFragment = void 0;
var t = _e;
Object.defineProperty(e, "isFragment", { enumerable: !0, get: function() {
return t.isFragment;
} });
})(xe);
var et = {}, Ee = {};
Object.defineProperty(Ee, "__esModule", { value: !0 });
Ee.isHTMLString = Hn;
var Dn = B;
function Hn(e) {
var t = (0, Dn.make)("div");
return t.innerHTML = e, t.childElementCount > 0;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isHTMLString = void 0;
var t = Ee;
Object.defineProperty(e, "isHTMLString", { enumerable: !0, get: function() {
return t.isHTMLString;
} });
})(et);
var tt = {}, Ie = {};
Object.defineProperty(Ie, "__esModule", { value: !0 });
Ie.offset = Fn;
function Fn(e) {
var t = e.getBoundingClientRect(), n = window.pageXOffset || document.documentElement.scrollLeft, r = window.pageYOffset || document.documentElement.scrollTop, i = t.top + r, a = t.left + n;
return {
top: i,
left: a,
bottom: i + t.height,
right: a + t.width
};
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.offset = void 0;
var t = Ie;
Object.defineProperty(e, "offset", { enumerable: !0, get: function() {
return t.offset;
} });
})(tt);
var nt = {}, we = {};
Object.defineProperty(we, "__esModule", { value: !0 });
we.prepend = Rn;
function Rn(e, t) {
Array.isArray(t) ? (t = t.reverse(), t.forEach(function(n) {
return e.prepend(n);
})) : e.prepend(t);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.prepend = void 0;
var t = we;
Object.defineProperty(e, "prepend", { enumerable: !0, get: function() {
return t.prepend;
} });
})(nt);
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.prepend = e.offset = e.make = e.isLineBreakTag = e.isSingleTag = e.isNodeEmpty = e.isLeaf = e.isHTMLString = e.isFragment = e.isEmpty = e.isElement = e.isContentEditable = e.isCollapsedWhitespaces = e.findAllInputs = e.isNativeInput = e.allInputsSelector = e.getDeepestNode = e.getDeepestBlockElements = e.getContentLength = e.fragmentToString = e.containsOnlyInlineElements = e.canSetCaret = e.calculateBaseline = e.blockElements = e.append = void 0;
var t = V;
Object.defineProperty(e, "allInputsSelector", { enumerable: !0, get: function() {
return t.allInputsSelector;
} });
var n = k;
Object.defineProperty(e, "isNativeInput", { enumerable: !0, get: function() {
return n.isNativeInput;
} });
var r = Fe;
Object.defineProperty(e, "append", { enumerable: !0, get: function() {
return r.append;
} });
var i = Z;
Object.defineProperty(e, "blockElements", { enumerable: !0, get: function() {
return i.blockElements;
} });
var a = Re;
Object.defineProperty(e, "calculateBaseline", { enumerable: !0, get: function() {
return a.calculateBaseline;
} });
var l = qe;
Object.defineProperty(e, "canSetCaret", { enumerable: !0, get: function() {
return l.canSetCaret;
} });
var s = $;
Object.defineProperty(e, "containsOnlyInlineElements", { enumerable: !0, get: function() {
return s.containsOnlyInlineElements;
} });
var o = ze;
Object.defineProperty(e, "fragmentToString", { enumerable: !0, get: function() {
return o.fragmentToString;
} });
var d = Xe;
Object.defineProperty(e, "getContentLength", { enumerable: !0, get: function() {
return d.getContentLength;
} });
var u = ce;
Object.defineProperty(e, "getDeepestBlockElements", { enumerable: !0, get: function() {
return u.getDeepestBlockElements;
} });
var p = Ve;
Object.defineProperty(e, "getDeepestNode", { enumerable: !0, get: function() {
return p.getDeepestNode;
} });
var g = Je;
Object.defineProperty(e, "findAllInputs", { enumerable: !0, get: function() {
return g.findAllInputs;
} });
var w = Qe;
Object.defineProperty(e, "isCollapsedWhitespaces", { enumerable: !0, get: function() {
return w.isCollapsedWhitespaces;
} });
var _ = ne;
Object.defineProperty(e, "isContentEditable", { enumerable: !0, get: function() {
return _.isContentEditable;
} });
var ut = ve;
Object.defineProperty(e, "isElement", { enumerable: !0, get: function() {
return ut.isElement;
} });
var ct = Ze;
Object.defineProperty(e, "isEmpty", { enumerable: !0, get: function() {
return ct.isEmpty;
} });
var dt = xe;
Object.defineProperty(e, "isFragment", { enumerable: !0, get: function() {
return dt.isFragment;
} });
var ft = et;
Object.defineProperty(e, "isHTMLString", { enumerable: !0, get: function() {
return ft.isHTMLString;
} });
var pt = Ce;
Object.defineProperty(e, "isLeaf", { enumerable: !0, get: function() {
return pt.isLeaf;
} });
var ht = Oe;
Object.defineProperty(e, "isNodeEmpty", { enumerable: !0, get: function() {
return ht.isNodeEmpty;
} });
var mt = W;
Object.defineProperty(e, "isLineBreakTag", { enumerable: !0, get: function() {
return mt.isLineBreakTag;
} });
var gt = D;
Object.defineProperty(e, "isSingleTag", { enumerable: !0, get: function() {
return gt.isSingleTag;
} });
var vt = B;
Object.defineProperty(e, "make", { enumerable: !0, get: function() {
return vt.make;
} });
var bt = tt;
Object.defineProperty(e, "offset", { enumerable: !0, get: function() {
return bt.offset;
} });
var yt = nt;
Object.defineProperty(e, "prepend", { enumerable: !0, get: function() {
return yt.prepend;
} });
})(c);
const m = "cdx-list", h = {
wrapper: m,
item: `${m}__item`,
itemContent: `${m}__item-content`,
itemChildren: `${m}__item-children`
};
class v {
/**
* Getter for all CSS classes used in unordered list rendering
*/
static get CSS() {
return {
...h,
orderedList: `${m}-ordered`
};
}
/**
* Assign passed readonly mode and config to relevant class properties
* @param readonly - read-only mode flag
* @param config - user config for Tool
*/
constructor(t, n) {
this.config = n, this.readOnly = t;
}
/**
* Renders ol wrapper for list
* @param isRoot - boolean variable that represents level of the wrappre (root or childList)
* @returns - created html ol element
*/
renderWrapper(t) {
let n;
return t === !0 ? n = c.make("ol", [v.CSS.wrapper, v.CSS.orderedList]) : n = c.make("ol", [v.CSS.orderedList, v.CSS.itemChildren]), n;
}
/**
* Redners list item element
* @param content - content used in list item rendering
* @param _meta - meta of the list item unused in rendering of the ordered list
* @returns - created html list item element
*/
renderItem(t, n) {
const r = c.make("li", v.CSS.item), i = c.make("div", v.CSS.itemContent, {
innerHTML: t,
contentEditable: (!this.readOnly).toString()
});
return r.appendChild(i), r;
}
/**
* Return the item content
* @param item - item wrapper (<li>)
* @returns - item content string
*/
getItemContent(t) {
const n = t.querySelector(`.${v.CSS.itemContent}`);
return !n || c.isEmpty(n) ? "" : n.innerHTML;
}
/**
* Returns item meta, for ordered list
* @returns item meta object
*/
getItemMeta() {
return {};
}
/**
* Returns default item meta used on creation of the new item
*/
composeDefaultMeta() {
return {};
}
}
class b {
/**
* Getter for all CSS classes used in unordered list rendering
*/
static get CSS() {
return {
...h,
unorderedList: `${m}-unordered`
};
}
/**
* Assign passed readonly mode and config to relevant class properties
* @param readonly - read-only mode flag
* @param config - user config for Tool
*/
constructor(t, n) {
this.config = n, this.readOnly = t;
}
/**
* Renders ol wrapper for list
* @param isRoot - boolean variable that represents level of the wrappre (root or childList)
* @returns - created html ul element
*/
renderWrapper(t) {
let n;
return t === !0 ? n = c.make("ul", [b.CSS.wrapper, b.CSS.unorderedList]) : n = c.make("ul", [b.CSS.unorderedList, b.CSS.itemChildren]), n;
}
/**
* Redners list item element
* @param content - content used in list item rendering
* @param _meta - meta of the list item unused in rendering of the unordered list
* @returns - created html list item element
*/
renderItem(t, n) {
const r = c.make("li", b.CSS.item), i = c.make("div", b.CSS.itemContent, {
innerHTML: t,
contentEditable: (!this.readOnly).toString()
});
return r.appendChild(i), r;
}
/**
* Return the item content
* @param item - item wrapper (<li>)
* @returns - item content string
*/
getItemContent(t) {
const n = t.querySelector(`.${b.CSS.itemContent}`);
return !n || c.isEmpty(n) ? "" : n.innerHTML;
}
/**
* Returns item meta, for unordered list
* @returns Item meta object
*/
getItemMeta() {
return {};
}
/**
* Returns default item meta used on creation of the new item
*/
composeDefaultMeta() {
return {};
}
}
function O(e) {
return e.nodeType === Node.ELEMENT_NODE;
}
var j = {}, Pe = {}, H = {}, F = {};
Object.defineProperty(F, "__esModule", { value: !0 });
F.getContenteditableSlice = Un;
var qn = c;
function Un(e, t, n, r, i) {
var a;
i === void 0 && (i = !1);
var l = document.createRange();
if (r === "left" ? (l.setStart(e, 0), l.setEnd(t, n)) : (l.setStart(t, n), l.setEnd(e, e.childNodes.length)), i === !0) {
var s = l.extractContents();
return (0, qn.fragmentToString)(s);
}
var o = l.cloneContents(), d = document.createElement("div");
d.appendChild(o);
var u = (a = d.textContent) !== null && a !== void 0 ? a : "";
return u;
}
Object.defineProperty(H, "__esModule", { value: !0 });
H.checkContenteditableSliceForEmptiness = Xn;
var Kn = c, zn = F;
function Xn(e, t, n, r) {
var i = (0, zn.getContenteditableSlice)(e, t, n, r);
return (0, Kn.isCollapsedWhitespaces)(i);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.checkContenteditableSliceForEmptiness = void 0;
var t = H;
Object.defineProperty(e, "checkContenteditableSliceForEmptiness", { enumerable: !0, get: function() {
return t.checkContenteditableSliceForEmptiness;
} });
})(Pe);
var rt = {};
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.getContenteditableSlice = void 0;
var t = F;
Object.defineProperty(e, "getContenteditableSlice", { enumerable: !0, get: function() {
return t.getContenteditableSlice;
} });
})(rt);
var it = {}, je = {};
Object.defineProperty(je, "__esModule", { value: !0 });
je.focus = Vn;
var Gn = c;
function Vn(e, t) {
var n, r;
if (t === void 0 && (t = !0), (0, Gn.isNativeInput)(e)) {
e.focus();
var i = t ? 0 : e.value.length;
e.setSelectionRange(i, i);
} else {
var a = document.createRange(), l = window.getSelection();
if (!l)
return;
var s = function(g, w) {
w === void 0 && (w = !1);
var _ = document.createTextNode("");
w ? g.insertBefore(_, g.firstChild) : g.appendChild(_), a.setStart(_, 0), a.setEnd(_, 0);
}, o = function(g) {
return g != null;
}, d = e.childNodes, u = t ? d[0] : d[d.length - 1];
if (o(u)) {
for (; o(u) && u.nodeType !== Node.TEXT_NODE; )
u = t ? u.firstChild : u.lastChild;
if (o(u) && u.nodeType === Node.TEXT_NODE) {
var p = (r = (n = u.textContent) === null || n === void 0 ? void 0 : n.length) !== null && r !== void 0 ? r : 0, i = t ? 0 : p;
a.setStart(u, i), a.setEnd(u, i);
} else
s(e, t);
} else
s(e);
l.removeAllRanges(), l.addRange(a);
}
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.focus = void 0;
var t = je;
Object.defineProperty(e, "focus", { enumerable: !0, get: function() {
return t.focus;
} });
})(it);
var Te = {}, R = {};
Object.defineProperty(R, "__esModule", { value: !0 });
R.getCaretNodeAndOffset = Yn;
function Yn() {
var e = window.getSelection();
if (e === null)
return [null, 0];
var t = e.focusNode, n = e.focusOffset;
return t === null ? [null, 0] : (t.nodeType !== Node.TEXT_NODE && t.childNodes.length > 0 && (t.childNodes[n] !== void 0 ? (t = t.childNodes[n], n = 0) : (t = t.childNodes[n - 1], t.textContent !== null && (n = t.textContent.length))), [t, n]);
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.getCaretNodeAndOffset = void 0;
var t = R;
Object.defineProperty(e, "getCaretNodeAndOffset", { enumerable: !0, get: function() {
return t.getCaretNodeAndOffset;
} });
})(Te);
var at = {}, q = {};
Object.defineProperty(q, "__esModule", { value: !0 });
q.getRange = Jn;
function Jn() {
var e = window.getSelection();
return e && e.rangeCount ? e.getRangeAt(0) : null;
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.getRange = void 0;
var t = q;
Object.defineProperty(e, "getRange", { enumerable: !0, get: function() {
return t.getRange;
} });
})(at);
var lt = {}, Le = {};
Object.defineProperty(Le, "__esModule", { value: !0 });
Le.isCaretAtEndOfInput = xn;
var De = c, Qn = Te, Zn = Pe;
function xn(e) {
var t = (0, De.getDeepestNode)(e, !0);
if (t === null)
return !0;
if ((0, De.isNativeInput)(t))
return t.selectionEnd === t.value.length;
var n = (0, Qn.getCaretNodeAndOffset)(), r = n[0], i = n[1];
return r === null ? !1 : (0, Zn.checkContenteditableSliceForEmptiness)(e, r, i, "right");
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isCaretAtEndOfInput = void 0;
var t = Le;
Object.defineProperty(e, "isCaretAtEndOfInput", { enumerable: !0, get: function() {
return t.isCaretAtEndOfInput;
} });
})(lt);
var st = {}, Me = {};
Object.defineProperty(Me, "__esModule", { value: !0 });
Me.isCaretAtStartOfInput = nr;
var L = c, er = R, tr = H;
function nr(e) {
var t = (0, L.getDeepestNode)(e);
if (t === null || (0, L.isEmpty)(e))
return !0;
if ((0, L.isNativeInput)(t))
return t.selectionEnd === 0;
if ((0, L.isEmpty)(e))
return !0;
var n = (0, er.getCaretNodeAndOffset)(), r = n[0], i = n[1];
return r === null ? !1 : (0, tr.checkContenteditableSliceForEmptiness)(e, r, i, "left");
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.isCaretAtStartOfInput = void 0;
var t = Me;
Object.defineProperty(e, "isCaretAtStartOfInput", { enumerable: !0, get: function() {
return t.isCaretAtStartOfInput;
} });
})(st);
var ot = {}, Ne = {};
Object.defineProperty(Ne, "__esModule", { value: !0 });
Ne.save = ar;
var rr = c, ir = q;
function ar() {
var e = (0, ir.getRange)(), t = (0, rr.make)("span");
if (t.id = "cursor", t.hidden = !0, !!e)
return e.insertNode(t), function() {
var r = window.getSelection();
r && (e.setStartAfter(t), e.setEndAfter(t), r.removeAllRanges(), r.addRange(e), setTimeout(function() {
t.remove();
}, 150));
};
}
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.save = void 0;
var t = Ne;
Object.defineProperty(e, "save", { enumerable: !0, get: function() {
return t.save;
} });
})(ot);
(function(e) {
Object.defineProperty(e, "__esModule", { value: !0 }), e.save = e.isCaretAtStartOfInput = e.isCaretAtEndOfInput = e.getRange = e.getCaretNodeAndOffset = e.focus = e.getContenteditableSlice = e.checkContenteditableSliceForEmptiness = void 0;
var t = Pe;
Object.defineProperty(e, "checkContenteditableSliceForEmptiness", { enumerable: !0, get: function() {
return t.checkContenteditableSliceForEmptiness;
} });
var n = rt;
Object.defineProperty(e, "getContenteditableSlice", { enumerable: !0, get: function() {
return n.getContenteditableSlice;
} });
var r = it;
Object.defineProperty(e, "focus", { enumerable: !0, get: function() {
return r.focus;
} });
var i = Te;
Object.defineProperty(e, "getCaretNodeAndOffset", { enumerable: !0, get: function() {
return i.getCaretNodeAndOffset;
} });
var a = at;
Object.defineProperty(e, "getRange", { enumerable: !0, get: function() {
return a.getRange;
} });
var l = lt;
Object.defineProperty(e, "isCaretAtEndOfInput", { enumerable: !0, get: function() {
return l.isCaretAtEndOfInput;
} });
var s = st;
Object.defineProperty(e, "isCaretAtStartOfInput", { enumerable: !0, get: function() {
return s.isCaretAtStartOfInput;
} });
var o = ot;
Object.defineProperty(e, "save", { enumerable: !0, get: function() {
return o.save;
} });
})(j);
class f {
/**
* Getter for all CSS classes used in unordered list rendering
*/
static get CSS() {
return {
...h,
checklist: `${m}-checklist`,
itemChecked: `${m}__checkbox--checked`,
noHover: `${m}__checkbox--no-hover`,
checkbox: `${m}__checkbox-check`,
checkboxContainer: `${m}__checkbox`,
checkboxCheckDisabled: `${m}__checkbox-check--disabled`
};
}
/**
* Assign passed readonly mode and config to relevant class properties
* @param readonly - read-only mode flag
* @param config - user config for Tool
*/
constructor(t, n) {
this.config = n, this.readOnly = t;
}
/**
* Renders ul wrapper for list
* @param isRoot - boolean variable that represents level of the wrappre (root or childList)
* @returns - created html ul element
*/
renderWrapper(t) {
let n;
return t === !0 ? (n = c.make("ul", [f.CSS.wrapper, f.CSS.checklist]), n.addEventListener("click", (r) => {
const i = r.target;
if (i) {
const a = i.closest(`.${f.CSS.checkboxContainer}`);
a && a.contains(i) && this.toggleCheckbox(a);
}
})) : n = c.make("ul", [f.CSS.checklist, f.CSS.itemChildren]), n;
}
/**
* Redners list item element
* @param content - content used in list item rendering
* @param meta - meta of the list item used in rendering of the checklist
* @returns - created html list item element
*/
renderItem(t, n) {
const r = c.make("li", [f.CSS.item, f.CSS.item]), i = c.make("div", f.CSS.itemContent, {
innerHTML: t,
contentEditable: (!this.readOnly).toString()
}), a = c.make("span", f.CSS.checkbox), l = c.make("div", f.CSS.checkboxContainer);
return n.checked === !0 && l.classList.add(f.CSS.itemChecked), this.readOnly && l.classList.add(f.CSS.checkboxCheckDisabled), a.innerHTML = Ct, l.appendChild(a), r.appendChild(l), r.appendChild(i), r;
}
/**
* Return the item content
* @param item - item wrapper (<li>)
* @returns - item content string
*/
getItemContent(t) {
const n = t.querySelector(`.${f.CSS.itemContent}`);
return !n || c.isEmpty(n) ? "" : n.innerHTML;
}
/**
* Return meta object of certain element
* @param item - will be returned meta information of this item
* @returns Item meta object
*/
getItemMeta(t) {
const n = t.querySelector(`.${f.CSS.checkboxContainer}`);
return {
checked: n ? n.classList.contains(f.CSS.itemChecked) : !1
};
}
/**
* Returns default item meta used on creation of the new item
*/
composeDefaultMeta() {
return { checked: !1 };
}
/**
* Toggle checklist item state
* @param checkbox - checkbox element to be toggled
*/
toggleCheckbox(t) {
t.classList.toggle(f.CSS.itemChecked), t.classList.add(f.CSS.noHover), t.addEventListener("mouseleave", () => this.removeSpecialHoverBehavior(t), { once: !0 });
}
/**
* Removes class responsible for special hover behavior on an item
* @param el - item wrapper
*/
removeSpecialHoverBehavior(t) {
t.classList.remove(f.CSS.noHover);
}
}
function U(e, t = "after") {
const n = [];
let r;
function i(a) {
switch (t) {
case "after":
return a.nextElementSibling;
case "before":
return a.previousElementSibling;
}
}
for (r = i(e); r !== null; )
n.push(r), r = i(r);
return n.length !== 0 ? n : null;
}
function y(e, t = !0) {
let n = e;
return e.classList.contains(h.item) && (n = e.querySelector(`.${h.itemChildren}`)), n === null ? [] : t ? Array.from(n.querySelectorAll(`:scope > .${h.item}`)) : Array.from(n.querySelectorAll(`.${h.item}`));
}
function lr(e) {
return e.nextElementSibling === null;
}
function sr(e) {
return e.querySelector(`.${h.itemChildren}`) !== null;
}
function C(e) {
return e.querySelector(`.${h.itemChildren}`);
}
function K(e) {
let t = e;
e.classList.contains(h.item) && (t = C(e)), t !== null && y(t).length === 0 && t.remove();
}
function N(e) {
return e.querySelector(`.${h.itemContent}`);
}
function E(e, t = !0) {
const n = N(e);
n && j.focus(n, t);
}
class z {
/**
* Getter method to get current item
* @returns current list item or null if caret position is not undefined
*/
get currentItem() {
const t = window.getSelection();
if (!t)
return null;
let n = t.anchorNode;
return !n || (O(n) || (n = n.parentNode), !n) || !O(n) ? null : n.closest(`.${h.item}`);
}
/**
* Method that returns nesting level of the current item, null if there is no selection
*/
get currentItemLevel() {
const t = this.currentItem;
if (t === null)
return null;
let n = t.parentNode, r = 0;
for (; n !== null && n !== this.listWrapper; )
O(n) && n.classList.contains(h.item) && (r += 1), n = n.parentNode;
return r + 1;
}
/**
* Assign all passed params and renderer to relevant class properties
* @param params - tool constructor options
* @param params.data - previously saved data
* @param params.config - user config for Tool
* @param params.api - Editor.js API
* @param params.readOnly - read-only mode flag
* @param renderer - renderer instance initialized in tool class
*/
constructor({ data: t, config: n, api: r, readOnly: i, block: a }, l) {
this.config = n, this.data = t, this.readOnly = i, this.api = r, this.block = a, this.renderer = l;
}
/**
* Function that is responsible for rendering list with contents
* @returns Filled with content wrapper element of the list
*/
render() {
return this.listWrapper = this.renderer.renderWrapper(!0), this.data.items.length ? this.appendItems(this.data.items, this.listWrapper) : this.appendItems(
[
{
content: "",
meta: {},
items: []
}
],
this.listWrapper
), this.readOnly || this.listWrapper.addEventListener(
"keydown",
(t) => {
switch (t.key) {
case "Enter":
t.shiftKey || this.enterPressed(t);
break;
case "Backspace":
this.backspace(t);
break;
case "Tab":
t.shiftKey ? this.shiftTab(t) : this.addTab(t);
break;
}
},
!1
), "start" in this.data.meta && this.data.meta.start !== void 0 && this.changeStartWith(this.data.meta.start), "counterType" in this.data.meta && this.data.meta.counterType !== void 0 && this.changeCounters(this.data.meta.counterType), this.listWrapper;
}
/**
* Function that is responsible for list content saving
* @param wrapper - optional argument wrapper
* @returns whole list saved data if wrapper not passes, otherwise will return data o