@mdaemon/html-editor 1.0.5 → 1.0.7
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/README.md +432 -12
- package/dist/index.d.ts +81 -2
- package/dist/index.js +3261 -157
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3261 -157
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +538 -10
- package/package.json +22 -20
package/dist/index.js
CHANGED
|
@@ -2434,7 +2434,7 @@ function isTagRule(rule) {
|
|
|
2434
2434
|
function isStyleRule(rule) {
|
|
2435
2435
|
return rule.style != null;
|
|
2436
2436
|
}
|
|
2437
|
-
|
|
2437
|
+
let DOMParser$1 = class DOMParser2 {
|
|
2438
2438
|
/**
|
|
2439
2439
|
Create a parser that targets the given schema, using the given
|
|
2440
2440
|
parsing rules.
|
|
@@ -2560,9 +2560,9 @@ class DOMParser {
|
|
|
2560
2560
|
[priority](https://prosemirror.net/docs/ref/#model.GenericParseRule.priority).
|
|
2561
2561
|
*/
|
|
2562
2562
|
static fromSchema(schema) {
|
|
2563
|
-
return schema.cached.domParser || (schema.cached.domParser = new
|
|
2563
|
+
return schema.cached.domParser || (schema.cached.domParser = new DOMParser2(schema, DOMParser2.schemaRules(schema)));
|
|
2564
2564
|
}
|
|
2565
|
-
}
|
|
2565
|
+
};
|
|
2566
2566
|
const blockTags = {
|
|
2567
2567
|
address: true,
|
|
2568
2568
|
article: true,
|
|
@@ -3623,11 +3623,11 @@ class Step {
|
|
|
3623
3623
|
register an ID for your step classes. Try to pick something
|
|
3624
3624
|
that's unlikely to clash with steps from other modules.
|
|
3625
3625
|
*/
|
|
3626
|
-
static jsonID(
|
|
3627
|
-
if (
|
|
3628
|
-
throw new RangeError("Duplicate use of step JSON ID " +
|
|
3629
|
-
stepsByID[
|
|
3630
|
-
stepClass.prototype.jsonID =
|
|
3626
|
+
static jsonID(id2, stepClass) {
|
|
3627
|
+
if (id2 in stepsByID)
|
|
3628
|
+
throw new RangeError("Duplicate use of step JSON ID " + id2);
|
|
3629
|
+
stepsByID[id2] = stepClass;
|
|
3630
|
+
stepClass.prototype.jsonID = id2;
|
|
3631
3631
|
return stepClass;
|
|
3632
3632
|
}
|
|
3633
3633
|
}
|
|
@@ -5302,11 +5302,11 @@ class Selection {
|
|
|
5302
5302
|
can be disambiguated. Try to pick something that's unlikely to
|
|
5303
5303
|
clash with classes from other modules.
|
|
5304
5304
|
*/
|
|
5305
|
-
static jsonID(
|
|
5306
|
-
if (
|
|
5307
|
-
throw new RangeError("Duplicate use of selection JSON ID " +
|
|
5308
|
-
classesById[
|
|
5309
|
-
selectionClass.prototype.jsonID =
|
|
5305
|
+
static jsonID(id2, selectionClass) {
|
|
5306
|
+
if (id2 in classesById)
|
|
5307
|
+
throw new RangeError("Duplicate use of selection JSON ID " + id2);
|
|
5308
|
+
classesById[id2] = selectionClass;
|
|
5309
|
+
selectionClass.prototype.jsonID = id2;
|
|
5310
5310
|
return selectionClass;
|
|
5311
5311
|
}
|
|
5312
5312
|
/**
|
|
@@ -9249,7 +9249,7 @@ function parseFromClipboard(view, text, html, plainText, $context) {
|
|
|
9249
9249
|
dom = child;
|
|
9250
9250
|
}
|
|
9251
9251
|
if (!slice2) {
|
|
9252
|
-
let parser = view.someProp("clipboardParser") || view.someProp("domParser") || DOMParser.fromSchema(view.state.schema);
|
|
9252
|
+
let parser = view.someProp("clipboardParser") || view.someProp("domParser") || DOMParser$1.fromSchema(view.state.schema);
|
|
9253
9253
|
slice2 = parser.parseSlice(dom, {
|
|
9254
9254
|
preserveWhitespace: !!(asText || sliceData),
|
|
9255
9255
|
context: $context,
|
|
@@ -11113,7 +11113,7 @@ function parseBetween(view, from_, to_) {
|
|
|
11113
11113
|
}
|
|
11114
11114
|
}
|
|
11115
11115
|
let startDoc = view.state.doc;
|
|
11116
|
-
let parser = view.someProp("domParser") || DOMParser.fromSchema(view.state.schema);
|
|
11116
|
+
let parser = view.someProp("domParser") || DOMParser$1.fromSchema(view.state.schema);
|
|
11117
11117
|
let $from = startDoc.resolve(from2);
|
|
11118
11118
|
let sel = null, doc2 = parser.parse(parent, {
|
|
11119
11119
|
topNode: $from.parent,
|
|
@@ -12430,7 +12430,6 @@ function isMarkInSet(marks, type, attributes = {}) {
|
|
|
12430
12430
|
return !!findMarkInSet(marks, type, attributes);
|
|
12431
12431
|
}
|
|
12432
12432
|
function getMarkRange($pos, type, attributes) {
|
|
12433
|
-
var _a;
|
|
12434
12433
|
if (!$pos || !type) {
|
|
12435
12434
|
return;
|
|
12436
12435
|
}
|
|
@@ -12441,7 +12440,12 @@ function getMarkRange($pos, type, attributes) {
|
|
|
12441
12440
|
if (!start.node || !start.node.marks.some((mark2) => mark2.type === type)) {
|
|
12442
12441
|
return;
|
|
12443
12442
|
}
|
|
12444
|
-
|
|
12443
|
+
if (!attributes) {
|
|
12444
|
+
const firstMark = start.node.marks.find((mark2) => mark2.type === type);
|
|
12445
|
+
if (firstMark) {
|
|
12446
|
+
attributes = firstMark.attrs;
|
|
12447
|
+
}
|
|
12448
|
+
}
|
|
12445
12449
|
const mark = findMarkInSet([...start.node.marks], type, attributes);
|
|
12446
12450
|
if (!mark) {
|
|
12447
12451
|
return;
|
|
@@ -12472,7 +12476,7 @@ function getMarkType(nameOrType, schema) {
|
|
|
12472
12476
|
}
|
|
12473
12477
|
return nameOrType;
|
|
12474
12478
|
}
|
|
12475
|
-
var extendMarkRange = (typeOrName, attributes
|
|
12479
|
+
var extendMarkRange = (typeOrName, attributes) => ({ tr: tr2, state, dispatch }) => {
|
|
12476
12480
|
const type = getMarkType(typeOrName, state.schema);
|
|
12477
12481
|
const { doc: doc2, selection } = tr2;
|
|
12478
12482
|
const { $from, from: from2, to } = selection;
|
|
@@ -12657,9 +12661,9 @@ function createNodeFromContent(content, schema, options) {
|
|
|
12657
12661
|
})
|
|
12658
12662
|
});
|
|
12659
12663
|
if (options.slice) {
|
|
12660
|
-
DOMParser.fromSchema(contentCheckSchema).parseSlice(elementFromString(content), options.parseOptions);
|
|
12664
|
+
DOMParser$1.fromSchema(contentCheckSchema).parseSlice(elementFromString(content), options.parseOptions);
|
|
12661
12665
|
} else {
|
|
12662
|
-
DOMParser.fromSchema(contentCheckSchema).parse(elementFromString(content), options.parseOptions);
|
|
12666
|
+
DOMParser$1.fromSchema(contentCheckSchema).parse(elementFromString(content), options.parseOptions);
|
|
12663
12667
|
}
|
|
12664
12668
|
if (options.errorOnInvalidContent && hasInvalidContent) {
|
|
12665
12669
|
throw new Error("[tiptap error]: Invalid HTML content", {
|
|
@@ -12667,7 +12671,7 @@ function createNodeFromContent(content, schema, options) {
|
|
|
12667
12671
|
});
|
|
12668
12672
|
}
|
|
12669
12673
|
}
|
|
12670
|
-
const parser = DOMParser.fromSchema(schema);
|
|
12674
|
+
const parser = DOMParser$1.fromSchema(schema);
|
|
12671
12675
|
if (options.slice) {
|
|
12672
12676
|
return parser.parseSlice(elementFromString(content), options.parseOptions).content;
|
|
12673
12677
|
}
|
|
@@ -12783,7 +12787,7 @@ var insertContentAt = (position, value, options) => ({ tr: tr2, dispatch, editor
|
|
|
12783
12787
|
const fromSelectionAtStart = $from.parentOffset === 0;
|
|
12784
12788
|
const isTextSelection2 = $fromNode.isText || $fromNode.isTextblock;
|
|
12785
12789
|
const hasContent = $fromNode.content.size > 0;
|
|
12786
|
-
if (fromSelectionAtStart && isTextSelection2 && hasContent) {
|
|
12790
|
+
if (fromSelectionAtStart && isTextSelection2 && hasContent && isOnlyBlockContent) {
|
|
12787
12791
|
from2 = Math.max(0, from2 - 1);
|
|
12788
12792
|
}
|
|
12789
12793
|
tr2.replaceWith(from2, to, newContent);
|
|
@@ -13226,6 +13230,9 @@ function getAttributesFromExtensions(extensions) {
|
|
|
13226
13230
|
keepOnSplit: true,
|
|
13227
13231
|
isRequired: false
|
|
13228
13232
|
};
|
|
13233
|
+
const nodeExtensionTypes = nodeExtensions.filter((ext) => ext.name !== "text").map((ext) => ext.name);
|
|
13234
|
+
const markExtensionTypes = markExtensions.map((ext) => ext.name);
|
|
13235
|
+
const allExtensionTypes = [...nodeExtensionTypes, ...markExtensionTypes];
|
|
13229
13236
|
extensions.forEach((extension) => {
|
|
13230
13237
|
const context = {
|
|
13231
13238
|
name: extension.name,
|
|
@@ -13243,7 +13250,19 @@ function getAttributesFromExtensions(extensions) {
|
|
|
13243
13250
|
}
|
|
13244
13251
|
const globalAttributes = addGlobalAttributes();
|
|
13245
13252
|
globalAttributes.forEach((globalAttribute) => {
|
|
13246
|
-
|
|
13253
|
+
let resolvedTypes;
|
|
13254
|
+
if (Array.isArray(globalAttribute.types)) {
|
|
13255
|
+
resolvedTypes = globalAttribute.types;
|
|
13256
|
+
} else if (globalAttribute.types === "*") {
|
|
13257
|
+
resolvedTypes = allExtensionTypes;
|
|
13258
|
+
} else if (globalAttribute.types === "nodes") {
|
|
13259
|
+
resolvedTypes = nodeExtensionTypes;
|
|
13260
|
+
} else if (globalAttribute.types === "marks") {
|
|
13261
|
+
resolvedTypes = markExtensionTypes;
|
|
13262
|
+
} else {
|
|
13263
|
+
resolvedTypes = [];
|
|
13264
|
+
}
|
|
13265
|
+
resolvedTypes.forEach((type) => {
|
|
13247
13266
|
Object.entries(globalAttribute.attributes).forEach(([name, attribute]) => {
|
|
13248
13267
|
extensionAttributes.push({
|
|
13249
13268
|
type,
|
|
@@ -13292,6 +13311,67 @@ function getAttributesFromExtensions(extensions) {
|
|
|
13292
13311
|
});
|
|
13293
13312
|
return extensionAttributes;
|
|
13294
13313
|
}
|
|
13314
|
+
function splitStyleDeclarations(styles) {
|
|
13315
|
+
const result = [];
|
|
13316
|
+
let current = "";
|
|
13317
|
+
let inSingleQuote = false;
|
|
13318
|
+
let inDoubleQuote = false;
|
|
13319
|
+
let parenDepth = 0;
|
|
13320
|
+
const length = styles.length;
|
|
13321
|
+
for (let i = 0; i < length; i += 1) {
|
|
13322
|
+
const char = styles[i];
|
|
13323
|
+
if (char === "'" && !inDoubleQuote) {
|
|
13324
|
+
inSingleQuote = !inSingleQuote;
|
|
13325
|
+
current += char;
|
|
13326
|
+
continue;
|
|
13327
|
+
}
|
|
13328
|
+
if (char === '"' && !inSingleQuote) {
|
|
13329
|
+
inDoubleQuote = !inDoubleQuote;
|
|
13330
|
+
current += char;
|
|
13331
|
+
continue;
|
|
13332
|
+
}
|
|
13333
|
+
if (!inSingleQuote && !inDoubleQuote) {
|
|
13334
|
+
if (char === "(") {
|
|
13335
|
+
parenDepth += 1;
|
|
13336
|
+
current += char;
|
|
13337
|
+
continue;
|
|
13338
|
+
}
|
|
13339
|
+
if (char === ")" && parenDepth > 0) {
|
|
13340
|
+
parenDepth -= 1;
|
|
13341
|
+
current += char;
|
|
13342
|
+
continue;
|
|
13343
|
+
}
|
|
13344
|
+
if (char === ";" && parenDepth === 0) {
|
|
13345
|
+
result.push(current);
|
|
13346
|
+
current = "";
|
|
13347
|
+
continue;
|
|
13348
|
+
}
|
|
13349
|
+
}
|
|
13350
|
+
current += char;
|
|
13351
|
+
}
|
|
13352
|
+
if (current) {
|
|
13353
|
+
result.push(current);
|
|
13354
|
+
}
|
|
13355
|
+
return result;
|
|
13356
|
+
}
|
|
13357
|
+
function parseStyleEntries(styles) {
|
|
13358
|
+
const pairs = [];
|
|
13359
|
+
const declarations = splitStyleDeclarations(styles || "");
|
|
13360
|
+
const numDeclarations = declarations.length;
|
|
13361
|
+
for (let i = 0; i < numDeclarations; i += 1) {
|
|
13362
|
+
const declaration = declarations[i];
|
|
13363
|
+
const firstColonIndex = declaration.indexOf(":");
|
|
13364
|
+
if (firstColonIndex === -1) {
|
|
13365
|
+
continue;
|
|
13366
|
+
}
|
|
13367
|
+
const property = declaration.slice(0, firstColonIndex).trim();
|
|
13368
|
+
const value = declaration.slice(firstColonIndex + 1).trim();
|
|
13369
|
+
if (property && value) {
|
|
13370
|
+
pairs.push([property, value]);
|
|
13371
|
+
}
|
|
13372
|
+
}
|
|
13373
|
+
return pairs;
|
|
13374
|
+
}
|
|
13295
13375
|
function mergeAttributes(...objects) {
|
|
13296
13376
|
return objects.filter((item) => !!item).reduce((items, item) => {
|
|
13297
13377
|
const mergedAttributes = { ...items };
|
|
@@ -13307,17 +13387,7 @@ function mergeAttributes(...objects) {
|
|
|
13307
13387
|
const insertClasses = valueClasses.filter((valueClass) => !existingClasses.includes(valueClass));
|
|
13308
13388
|
mergedAttributes[key] = [...existingClasses, ...insertClasses].join(" ");
|
|
13309
13389
|
} else if (key === "style") {
|
|
13310
|
-
const
|
|
13311
|
-
const existingStyles = mergedAttributes[key] ? mergedAttributes[key].split(";").map((style2) => style2.trim()).filter(Boolean) : [];
|
|
13312
|
-
const styleMap = /* @__PURE__ */ new Map();
|
|
13313
|
-
existingStyles.forEach((style2) => {
|
|
13314
|
-
const [property, val] = style2.split(":").map((part) => part.trim());
|
|
13315
|
-
styleMap.set(property, val);
|
|
13316
|
-
});
|
|
13317
|
-
newStyles.forEach((style2) => {
|
|
13318
|
-
const [property, val] = style2.split(":").map((part) => part.trim());
|
|
13319
|
-
styleMap.set(property, val);
|
|
13320
|
-
});
|
|
13390
|
+
const styleMap = new Map([...parseStyleEntries(mergedAttributes[key]), ...parseStyleEntries(value)]);
|
|
13321
13391
|
mergedAttributes[key] = Array.from(styleMap.entries()).map(([property, val]) => `${property}: ${val}`).join("; ");
|
|
13322
13392
|
} else {
|
|
13323
13393
|
mergedAttributes[key] = value;
|
|
@@ -13505,7 +13575,7 @@ function getSchemaByResolvedExtensions(extensions, editor) {
|
|
|
13505
13575
|
});
|
|
13506
13576
|
}
|
|
13507
13577
|
function findDuplicates(items) {
|
|
13508
|
-
const filtered = items.filter((
|
|
13578
|
+
const filtered = items.filter((el2, index) => items.indexOf(el2) !== index);
|
|
13509
13579
|
return Array.from(new Set(filtered));
|
|
13510
13580
|
}
|
|
13511
13581
|
function sortExtensions(extensions) {
|
|
@@ -13741,6 +13811,9 @@ function isMarkActive(state, typeOrName, attributes = {}) {
|
|
|
13741
13811
|
const from2 = $from.pos;
|
|
13742
13812
|
const to = $to.pos;
|
|
13743
13813
|
state.doc.nodesBetween(from2, to, (node, pos) => {
|
|
13814
|
+
if (type && node.inlineContent && !node.type.allowsMarkType(type)) {
|
|
13815
|
+
return false;
|
|
13816
|
+
}
|
|
13744
13817
|
if (!node.isText && !node.marks.length) {
|
|
13745
13818
|
return;
|
|
13746
13819
|
}
|
|
@@ -13849,7 +13922,7 @@ function isNodeEmpty(node, {
|
|
|
13849
13922
|
return true;
|
|
13850
13923
|
}
|
|
13851
13924
|
if (node.isText) {
|
|
13852
|
-
return
|
|
13925
|
+
return !/\S/.test((_a = node.text) != null ? _a : "");
|
|
13853
13926
|
}
|
|
13854
13927
|
}
|
|
13855
13928
|
if (node.isText) {
|
|
@@ -14237,6 +14310,16 @@ var joinListForwards = (tr2, listType) => {
|
|
|
14237
14310
|
tr2.join(after);
|
|
14238
14311
|
return true;
|
|
14239
14312
|
};
|
|
14313
|
+
function createInnerSelectionForWholeDocList(tr2) {
|
|
14314
|
+
const doc2 = tr2.doc;
|
|
14315
|
+
const list = doc2.firstChild;
|
|
14316
|
+
if (!list) {
|
|
14317
|
+
return null;
|
|
14318
|
+
}
|
|
14319
|
+
const from2 = 1;
|
|
14320
|
+
const to = list.nodeSize - 1;
|
|
14321
|
+
return TextSelection.create(doc2, from2, to);
|
|
14322
|
+
}
|
|
14240
14323
|
var toggleList = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) => ({ editor, tr: tr2, state, dispatch, chain, commands, can }) => {
|
|
14241
14324
|
const { extensions, splittableMarks } = editor.extensionManager;
|
|
14242
14325
|
const listType = getNodeType(listTypeOrName, state.schema);
|
|
@@ -14249,13 +14332,36 @@ var toggleList = (listTypeOrName, itemTypeOrName, keepMarks, attributes = {}) =>
|
|
|
14249
14332
|
return false;
|
|
14250
14333
|
}
|
|
14251
14334
|
const parentList = findParentNode((node) => isList(node.type.name, extensions))(selection);
|
|
14252
|
-
|
|
14253
|
-
|
|
14335
|
+
const isAllSelection = selection.from === 0 && selection.to === state.doc.content.size;
|
|
14336
|
+
const topLevelNodes = state.doc.content.content;
|
|
14337
|
+
const soleTopLevelNode = topLevelNodes.length === 1 ? topLevelNodes[0] : null;
|
|
14338
|
+
const allSelectionList = isAllSelection && soleTopLevelNode && isList(soleTopLevelNode.type.name, extensions) ? {
|
|
14339
|
+
node: soleTopLevelNode,
|
|
14340
|
+
pos: 0
|
|
14341
|
+
} : null;
|
|
14342
|
+
const currentList = parentList != null ? parentList : allSelectionList;
|
|
14343
|
+
const isInsideExistingList = !!parentList && range.depth >= 1 && range.depth - parentList.depth <= 1;
|
|
14344
|
+
const hasWholeDocSelectedList = !!allSelectionList;
|
|
14345
|
+
if ((isInsideExistingList || hasWholeDocSelectedList) && currentList) {
|
|
14346
|
+
if (currentList.node.type === listType) {
|
|
14347
|
+
if (isAllSelection && hasWholeDocSelectedList) {
|
|
14348
|
+
return chain().command(({ tr: trx, dispatch: disp }) => {
|
|
14349
|
+
const nextSelection = createInnerSelectionForWholeDocList(trx);
|
|
14350
|
+
if (!nextSelection) {
|
|
14351
|
+
return false;
|
|
14352
|
+
}
|
|
14353
|
+
trx.setSelection(nextSelection);
|
|
14354
|
+
if (disp) {
|
|
14355
|
+
disp(trx);
|
|
14356
|
+
}
|
|
14357
|
+
return true;
|
|
14358
|
+
}).liftListItem(itemType).run();
|
|
14359
|
+
}
|
|
14254
14360
|
return commands.liftListItem(itemType);
|
|
14255
14361
|
}
|
|
14256
|
-
if (isList(
|
|
14362
|
+
if (isList(currentList.node.type.name, extensions) && listType.validContent(currentList.node.content)) {
|
|
14257
14363
|
return chain().command(() => {
|
|
14258
|
-
tr2.setNodeMarkup(
|
|
14364
|
+
tr2.setNodeMarkup(currentList.pos, listType);
|
|
14259
14365
|
return true;
|
|
14260
14366
|
}).command(() => joinListBackwards(tr2, listType)).command(() => joinListForwards(tr2, listType)).run();
|
|
14261
14367
|
}
|
|
@@ -15249,6 +15355,39 @@ var ExtensionManager = class {
|
|
|
15249
15355
|
};
|
|
15250
15356
|
}, baseDispatch);
|
|
15251
15357
|
}
|
|
15358
|
+
/**
|
|
15359
|
+
* Get the composed transformPastedHTML function from all extensions.
|
|
15360
|
+
* @param baseTransform The base transform function (e.g. from the editor props)
|
|
15361
|
+
* @returns A composed transform function that chains all extension transforms
|
|
15362
|
+
*/
|
|
15363
|
+
transformPastedHTML(baseTransform) {
|
|
15364
|
+
const { editor } = this;
|
|
15365
|
+
const extensions = sortExtensions([...this.extensions]);
|
|
15366
|
+
return extensions.reduce(
|
|
15367
|
+
(transform, extension) => {
|
|
15368
|
+
const context = {
|
|
15369
|
+
name: extension.name,
|
|
15370
|
+
options: extension.options,
|
|
15371
|
+
storage: this.editor.extensionStorage[extension.name],
|
|
15372
|
+
editor,
|
|
15373
|
+
type: getSchemaTypeByName(extension.name, this.schema)
|
|
15374
|
+
};
|
|
15375
|
+
const extensionTransform = getExtensionField(
|
|
15376
|
+
extension,
|
|
15377
|
+
"transformPastedHTML",
|
|
15378
|
+
context
|
|
15379
|
+
);
|
|
15380
|
+
if (!extensionTransform) {
|
|
15381
|
+
return transform;
|
|
15382
|
+
}
|
|
15383
|
+
return (html, view) => {
|
|
15384
|
+
const transformedHtml = transform(html, view);
|
|
15385
|
+
return extensionTransform.call(context, transformedHtml);
|
|
15386
|
+
};
|
|
15387
|
+
},
|
|
15388
|
+
baseTransform || ((html) => html)
|
|
15389
|
+
);
|
|
15390
|
+
}
|
|
15252
15391
|
get markViews() {
|
|
15253
15392
|
const { editor } = this;
|
|
15254
15393
|
const { markExtensions } = splitExtensions(this.extensions);
|
|
@@ -15467,7 +15606,7 @@ var Delete = Extension.create({
|
|
|
15467
15606
|
const newEnd = mapping.slice(index).map(step.to);
|
|
15468
15607
|
const oldStart = mapping.invert().map(newStart, -1);
|
|
15469
15608
|
const oldEnd = mapping.invert().map(newEnd);
|
|
15470
|
-
const foundBeforeMark = (_a3 = nextTransaction.doc.nodeAt(newStart - 1)) == null ? void 0 : _a3.marks.some((mark) => mark.eq(step.mark));
|
|
15609
|
+
const foundBeforeMark = newStart > 0 ? (_a3 = nextTransaction.doc.nodeAt(newStart - 1)) == null ? void 0 : _a3.marks.some((mark) => mark.eq(step.mark)) : false;
|
|
15471
15610
|
const foundAfterMark = (_b3 = nextTransaction.doc.nodeAt(newEnd)) == null ? void 0 : _b3.marks.some((mark) => mark.eq(step.mark));
|
|
15472
15611
|
this.editor.emit("delete", {
|
|
15473
15612
|
type: "mark",
|
|
@@ -16104,13 +16243,13 @@ var Editor = class extends EventEmitter {
|
|
|
16104
16243
|
/**
|
|
16105
16244
|
* Attach the editor to the DOM, creating a new editor view.
|
|
16106
16245
|
*/
|
|
16107
|
-
mount(
|
|
16246
|
+
mount(el2) {
|
|
16108
16247
|
if (typeof document === "undefined") {
|
|
16109
16248
|
throw new Error(
|
|
16110
16249
|
`[tiptap error]: The editor cannot be mounted because there is no 'document' defined in this environment.`
|
|
16111
16250
|
);
|
|
16112
16251
|
}
|
|
16113
|
-
this.createView(
|
|
16252
|
+
this.createView(el2);
|
|
16114
16253
|
this.emit("mount", { editor: this });
|
|
16115
16254
|
if (this.css && !document.head.contains(this.css)) {
|
|
16116
16255
|
document.head.appendChild(this.css);
|
|
@@ -16219,7 +16358,7 @@ var Editor = class extends EventEmitter {
|
|
|
16219
16358
|
return this.options.editable && this.view && this.view.editable;
|
|
16220
16359
|
}
|
|
16221
16360
|
/**
|
|
16222
|
-
* Returns the editor
|
|
16361
|
+
* Returns the editor view.
|
|
16223
16362
|
*/
|
|
16224
16363
|
get view() {
|
|
16225
16364
|
if (this.editorView) {
|
|
@@ -16387,6 +16526,8 @@ var Editor = class extends EventEmitter {
|
|
|
16387
16526
|
const { editorProps, enableExtensionDispatchTransaction } = this.options;
|
|
16388
16527
|
const baseDispatch = editorProps.dispatchTransaction || this.dispatchTransaction.bind(this);
|
|
16389
16528
|
const dispatch = enableExtensionDispatchTransaction ? this.extensionManager.dispatchTransaction(baseDispatch) : baseDispatch;
|
|
16529
|
+
const baseTransformPastedHTML = editorProps.transformPastedHTML;
|
|
16530
|
+
const transformPastedHTML = this.extensionManager.transformPastedHTML(baseTransformPastedHTML);
|
|
16390
16531
|
this.editorView = new EditorView(element, {
|
|
16391
16532
|
...editorProps,
|
|
16392
16533
|
attributes: {
|
|
@@ -16395,6 +16536,7 @@ var Editor = class extends EventEmitter {
|
|
|
16395
16536
|
...editorProps == null ? void 0 : editorProps.attributes
|
|
16396
16537
|
},
|
|
16397
16538
|
dispatchTransaction: dispatch,
|
|
16539
|
+
transformPastedHTML,
|
|
16398
16540
|
state: this.editorState,
|
|
16399
16541
|
markViews: this.extensionManager.markViews,
|
|
16400
16542
|
nodeViews: this.extensionManager.nodeViews
|
|
@@ -16902,7 +17044,7 @@ var ResizableNodeView = class {
|
|
|
16902
17044
|
const element = document.createElement("div");
|
|
16903
17045
|
element.dataset.resizeContainer = "";
|
|
16904
17046
|
element.dataset.node = this.node.type.name;
|
|
16905
|
-
element.style.display = "flex";
|
|
17047
|
+
element.style.display = this.node.type.isInline ? "inline-flex" : "flex";
|
|
16906
17048
|
if (this.classNames.container) {
|
|
16907
17049
|
element.className = this.classNames.container;
|
|
16908
17050
|
}
|
|
@@ -17017,7 +17159,7 @@ var ResizableNodeView = class {
|
|
|
17017
17159
|
* Cleans up the handle map and removes each handle element from the DOM.
|
|
17018
17160
|
*/
|
|
17019
17161
|
removeHandles() {
|
|
17020
|
-
this.handleMap.forEach((
|
|
17162
|
+
this.handleMap.forEach((el2) => el2.remove());
|
|
17021
17163
|
this.handleMap.clear();
|
|
17022
17164
|
}
|
|
17023
17165
|
/**
|
|
@@ -17704,17 +17846,21 @@ function renderNestedMarkdownContent(node, h2, prefixOrGenerator, ctx) {
|
|
|
17704
17846
|
const prefix = typeof prefixOrGenerator === "function" ? prefixOrGenerator(ctx) : prefixOrGenerator;
|
|
17705
17847
|
const [content, ...children] = node.content;
|
|
17706
17848
|
const mainContent = h2.renderChildren([content]);
|
|
17707
|
-
|
|
17849
|
+
let output = `${prefix}${mainContent}`;
|
|
17708
17850
|
if (children && children.length > 0) {
|
|
17709
|
-
children.forEach((child) => {
|
|
17710
|
-
|
|
17711
|
-
|
|
17712
|
-
|
|
17713
|
-
|
|
17851
|
+
children.forEach((child, index) => {
|
|
17852
|
+
var _a, _b;
|
|
17853
|
+
const childContent = (_b = (_a = h2.renderChild) == null ? void 0 : _a.call(h2, child, index + 1)) != null ? _b : h2.renderChildren([child]);
|
|
17854
|
+
if (childContent !== void 0 && childContent !== null) {
|
|
17855
|
+
const indentedChild = childContent.split("\n").map((line) => line ? h2.indent(line) : h2.indent("")).join("\n");
|
|
17856
|
+
output += child.type === "paragraph" ? `
|
|
17857
|
+
|
|
17858
|
+
${indentedChild}` : `
|
|
17859
|
+
${indentedChild}`;
|
|
17714
17860
|
}
|
|
17715
17861
|
});
|
|
17716
17862
|
}
|
|
17717
|
-
return output
|
|
17863
|
+
return output;
|
|
17718
17864
|
}
|
|
17719
17865
|
function updateMarkViewAttributes(checkMark, editor, attrs = {}) {
|
|
17720
17866
|
const { state } = editor;
|
|
@@ -17804,7 +17950,10 @@ function markPasteRule(config) {
|
|
|
17804
17950
|
}
|
|
17805
17951
|
markEnd = range.from + startSpaces + captureGroup.length;
|
|
17806
17952
|
tr2.addMark(range.from + startSpaces, markEnd, config.type.create(attributes || {}));
|
|
17807
|
-
|
|
17953
|
+
const isMatchAtEndOfText = match.index !== void 0 && match.input !== void 0 && match.index + match[0].length >= match.input.length;
|
|
17954
|
+
if (!isMatchAtEndOfText) {
|
|
17955
|
+
tr2.removeStoredMark(config.type);
|
|
17956
|
+
}
|
|
17808
17957
|
}
|
|
17809
17958
|
}
|
|
17810
17959
|
});
|
|
@@ -17840,7 +17989,9 @@ var Blockquote = Node3.create({
|
|
|
17840
17989
|
return /* @__PURE__ */ h("blockquote", { ...mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), children: /* @__PURE__ */ h("slot", {}) });
|
|
17841
17990
|
},
|
|
17842
17991
|
parseMarkdown: (token, helpers) => {
|
|
17843
|
-
|
|
17992
|
+
var _a;
|
|
17993
|
+
const parseBlockChildren = (_a = helpers.parseBlockChildren) != null ? _a : helpers.parseChildren;
|
|
17994
|
+
return helpers.createNode("blockquote", void 0, parseBlockChildren(token.tokens || []));
|
|
17844
17995
|
},
|
|
17845
17996
|
renderMarkdown: (node, h2) => {
|
|
17846
17997
|
if (!node.content) {
|
|
@@ -17848,8 +17999,9 @@ var Blockquote = Node3.create({
|
|
|
17848
17999
|
}
|
|
17849
18000
|
const prefix = ">";
|
|
17850
18001
|
const result = [];
|
|
17851
|
-
node.content.forEach((child) => {
|
|
17852
|
-
|
|
18002
|
+
node.content.forEach((child, index) => {
|
|
18003
|
+
var _a, _b;
|
|
18004
|
+
const childContent = (_b = (_a = h2.renderChild) == null ? void 0 : _a.call(h2, child, index)) != null ? _b : h2.renderChildren([child]);
|
|
17853
18005
|
const lines = childContent.split("\n");
|
|
17854
18006
|
const linesWithPrefix = lines.map((line) => {
|
|
17855
18007
|
if (line.trim() === "") {
|
|
@@ -17927,6 +18079,12 @@ var Bold = Mark2.create({
|
|
|
17927
18079
|
parseMarkdown: (token, helpers) => {
|
|
17928
18080
|
return helpers.applyMark("bold", helpers.parseInline(token.tokens || []));
|
|
17929
18081
|
},
|
|
18082
|
+
markdownOptions: {
|
|
18083
|
+
htmlReopen: {
|
|
18084
|
+
open: "<strong>",
|
|
18085
|
+
close: "</strong>"
|
|
18086
|
+
}
|
|
18087
|
+
},
|
|
17930
18088
|
renderMarkdown: (node, h2) => {
|
|
17931
18089
|
return `**${h2.renderChildren(node)}**`;
|
|
17932
18090
|
},
|
|
@@ -18103,8 +18261,8 @@ var CodeBlock = Node3.create({
|
|
|
18103
18261
|
},
|
|
18104
18262
|
markdownTokenName: "code",
|
|
18105
18263
|
parseMarkdown: (token, helpers) => {
|
|
18106
|
-
var _a;
|
|
18107
|
-
if (((_a = token.raw) == null ? void 0 : _a.startsWith("```")) === false && token.codeBlockStyle !== "indented") {
|
|
18264
|
+
var _a, _b;
|
|
18265
|
+
if (((_a = token.raw) == null ? void 0 : _a.startsWith("```")) === false && ((_b = token.raw) == null ? void 0 : _b.startsWith("~~~")) === false && token.codeBlockStyle !== "indented") {
|
|
18108
18266
|
return [];
|
|
18109
18267
|
}
|
|
18110
18268
|
return helpers.createNode(
|
|
@@ -18346,7 +18504,6 @@ var CodeBlock = Node3.create({
|
|
|
18346
18504
|
];
|
|
18347
18505
|
}
|
|
18348
18506
|
});
|
|
18349
|
-
var index_default = CodeBlock;
|
|
18350
18507
|
var Document = Node3.create({
|
|
18351
18508
|
name: "doc",
|
|
18352
18509
|
topNode: true,
|
|
@@ -18623,6 +18780,12 @@ var Italic = Mark2.create({
|
|
|
18623
18780
|
parseMarkdown: (token, helpers) => {
|
|
18624
18781
|
return helpers.applyMark("italic", helpers.parseInline(token.tokens || []));
|
|
18625
18782
|
},
|
|
18783
|
+
markdownOptions: {
|
|
18784
|
+
htmlReopen: {
|
|
18785
|
+
open: "<em>",
|
|
18786
|
+
close: "</em>"
|
|
18787
|
+
}
|
|
18788
|
+
},
|
|
18626
18789
|
renderMarkdown: (node, h2) => {
|
|
18627
18790
|
return `*${h2.renderChildren(node)}*`;
|
|
18628
18791
|
},
|
|
@@ -18871,7 +19034,7 @@ State.prototype = {
|
|
|
18871
19034
|
}
|
|
18872
19035
|
};
|
|
18873
19036
|
const ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);
|
|
18874
|
-
const tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);
|
|
19037
|
+
const tr$1 = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);
|
|
18875
19038
|
const ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);
|
|
18876
19039
|
const tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);
|
|
18877
19040
|
const WORD = "WORD";
|
|
@@ -19049,58 +19212,58 @@ function init$2(customSchemes = []) {
|
|
|
19049
19212
|
tt(Start, "_", UNDERSCORE);
|
|
19050
19213
|
tt(Start, "\\", BACKSLASH);
|
|
19051
19214
|
tt(Start, "・", FULLWIDTHMIDDLEDOT);
|
|
19052
|
-
const Num = tr(Start, DIGIT, NUM, {
|
|
19215
|
+
const Num = tr$1(Start, DIGIT, NUM, {
|
|
19053
19216
|
[numeric]: true
|
|
19054
19217
|
});
|
|
19055
|
-
tr(Num, DIGIT, Num);
|
|
19056
|
-
const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {
|
|
19218
|
+
tr$1(Num, DIGIT, Num);
|
|
19219
|
+
const Asciinumeric = tr$1(Num, ASCII_LETTER, ASCIINUMERICAL, {
|
|
19057
19220
|
[asciinumeric]: true
|
|
19058
19221
|
});
|
|
19059
|
-
const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {
|
|
19222
|
+
const Alphanumeric = tr$1(Num, LETTER, ALPHANUMERICAL, {
|
|
19060
19223
|
[alphanumeric]: true
|
|
19061
19224
|
});
|
|
19062
|
-
const Word = tr(Start, ASCII_LETTER, WORD, {
|
|
19225
|
+
const Word = tr$1(Start, ASCII_LETTER, WORD, {
|
|
19063
19226
|
[ascii]: true
|
|
19064
19227
|
});
|
|
19065
|
-
tr(Word, DIGIT, Asciinumeric);
|
|
19066
|
-
tr(Word, ASCII_LETTER, Word);
|
|
19067
|
-
tr(Asciinumeric, DIGIT, Asciinumeric);
|
|
19068
|
-
tr(Asciinumeric, ASCII_LETTER, Asciinumeric);
|
|
19069
|
-
const UWord = tr(Start, LETTER, UWORD, {
|
|
19228
|
+
tr$1(Word, DIGIT, Asciinumeric);
|
|
19229
|
+
tr$1(Word, ASCII_LETTER, Word);
|
|
19230
|
+
tr$1(Asciinumeric, DIGIT, Asciinumeric);
|
|
19231
|
+
tr$1(Asciinumeric, ASCII_LETTER, Asciinumeric);
|
|
19232
|
+
const UWord = tr$1(Start, LETTER, UWORD, {
|
|
19070
19233
|
[alpha]: true
|
|
19071
19234
|
});
|
|
19072
|
-
tr(UWord, ASCII_LETTER);
|
|
19073
|
-
tr(UWord, DIGIT, Alphanumeric);
|
|
19074
|
-
tr(UWord, LETTER, UWord);
|
|
19075
|
-
tr(Alphanumeric, DIGIT, Alphanumeric);
|
|
19076
|
-
tr(Alphanumeric, ASCII_LETTER);
|
|
19077
|
-
tr(Alphanumeric, LETTER, Alphanumeric);
|
|
19235
|
+
tr$1(UWord, ASCII_LETTER);
|
|
19236
|
+
tr$1(UWord, DIGIT, Alphanumeric);
|
|
19237
|
+
tr$1(UWord, LETTER, UWord);
|
|
19238
|
+
tr$1(Alphanumeric, DIGIT, Alphanumeric);
|
|
19239
|
+
tr$1(Alphanumeric, ASCII_LETTER);
|
|
19240
|
+
tr$1(Alphanumeric, LETTER, Alphanumeric);
|
|
19078
19241
|
const Nl2 = tt(Start, LF, NL, {
|
|
19079
19242
|
[whitespace]: true
|
|
19080
19243
|
});
|
|
19081
19244
|
const Cr = tt(Start, CR, WS, {
|
|
19082
19245
|
[whitespace]: true
|
|
19083
19246
|
});
|
|
19084
|
-
const Ws = tr(Start, SPACE, WS, {
|
|
19247
|
+
const Ws = tr$1(Start, SPACE, WS, {
|
|
19085
19248
|
[whitespace]: true
|
|
19086
19249
|
});
|
|
19087
19250
|
tt(Start, OBJECT_REPLACEMENT, Ws);
|
|
19088
19251
|
tt(Cr, LF, Nl2);
|
|
19089
19252
|
tt(Cr, OBJECT_REPLACEMENT, Ws);
|
|
19090
|
-
tr(Cr, SPACE, Ws);
|
|
19253
|
+
tr$1(Cr, SPACE, Ws);
|
|
19091
19254
|
tt(Ws, CR);
|
|
19092
19255
|
tt(Ws, LF);
|
|
19093
|
-
tr(Ws, SPACE, Ws);
|
|
19256
|
+
tr$1(Ws, SPACE, Ws);
|
|
19094
19257
|
tt(Ws, OBJECT_REPLACEMENT, Ws);
|
|
19095
|
-
const Emoji = tr(Start, EMOJI, EMOJI$1, {
|
|
19258
|
+
const Emoji = tr$1(Start, EMOJI, EMOJI$1, {
|
|
19096
19259
|
[emoji]: true
|
|
19097
19260
|
});
|
|
19098
19261
|
tt(Emoji, "#");
|
|
19099
|
-
tr(Emoji, EMOJI, Emoji);
|
|
19262
|
+
tr$1(Emoji, EMOJI, Emoji);
|
|
19100
19263
|
tt(Emoji, EMOJI_VARIATION, Emoji);
|
|
19101
19264
|
const EmojiJoiner = tt(Emoji, EMOJI_JOINER);
|
|
19102
19265
|
tt(EmojiJoiner, "#");
|
|
19103
|
-
tr(EmojiJoiner, EMOJI, Emoji);
|
|
19266
|
+
tr$1(EmojiJoiner, EMOJI, Emoji);
|
|
19104
19267
|
const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];
|
|
19105
19268
|
const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];
|
|
19106
19269
|
for (let i = 0; i < tlds.length; i++) {
|
|
@@ -20321,14 +20484,16 @@ var ListItem = Node3.create({
|
|
|
20321
20484
|
},
|
|
20322
20485
|
markdownTokenName: "list_item",
|
|
20323
20486
|
parseMarkdown: (token, helpers) => {
|
|
20487
|
+
var _a;
|
|
20324
20488
|
if (token.type !== "list_item") {
|
|
20325
20489
|
return [];
|
|
20326
20490
|
}
|
|
20491
|
+
const parseBlockChildren = (_a = helpers.parseBlockChildren) != null ? _a : helpers.parseChildren;
|
|
20327
20492
|
let content = [];
|
|
20328
20493
|
if (token.tokens && token.tokens.length > 0) {
|
|
20329
20494
|
const hasParagraphTokens = token.tokens.some((t) => t.type === "paragraph");
|
|
20330
20495
|
if (hasParagraphTokens) {
|
|
20331
|
-
content =
|
|
20496
|
+
content = parseBlockChildren(token.tokens);
|
|
20332
20497
|
} else {
|
|
20333
20498
|
const firstToken = token.tokens[0];
|
|
20334
20499
|
if (firstToken && firstToken.type === "text" && firstToken.tokens && firstToken.tokens.length > 0) {
|
|
@@ -20341,11 +20506,11 @@ var ListItem = Node3.create({
|
|
|
20341
20506
|
];
|
|
20342
20507
|
if (token.tokens.length > 1) {
|
|
20343
20508
|
const remainingTokens = token.tokens.slice(1);
|
|
20344
|
-
const additionalContent =
|
|
20509
|
+
const additionalContent = parseBlockChildren(remainingTokens);
|
|
20345
20510
|
content.push(...additionalContent);
|
|
20346
20511
|
}
|
|
20347
20512
|
} else {
|
|
20348
|
-
content =
|
|
20513
|
+
content = parseBlockChildren(token.tokens);
|
|
20349
20514
|
}
|
|
20350
20515
|
}
|
|
20351
20516
|
}
|
|
@@ -21263,18 +21428,22 @@ var Paragraph = Node3.create({
|
|
|
21263
21428
|
return helpers.parseChildren([tokens[0]]);
|
|
21264
21429
|
}
|
|
21265
21430
|
const content = helpers.parseInline(tokens);
|
|
21266
|
-
|
|
21431
|
+
const hasExplicitEmptyParagraphMarker = tokens.length === 1 && tokens[0].type === "text" && (tokens[0].raw === EMPTY_PARAGRAPH_MARKDOWN || tokens[0].text === EMPTY_PARAGRAPH_MARKDOWN || tokens[0].raw === NBSP_CHAR || tokens[0].text === NBSP_CHAR);
|
|
21432
|
+
if (hasExplicitEmptyParagraphMarker && content.length === 1 && content[0].type === "text" && (content[0].text === EMPTY_PARAGRAPH_MARKDOWN || content[0].text === NBSP_CHAR)) {
|
|
21267
21433
|
return helpers.createNode("paragraph", void 0, []);
|
|
21268
21434
|
}
|
|
21269
21435
|
return helpers.createNode("paragraph", void 0, content);
|
|
21270
21436
|
},
|
|
21271
|
-
renderMarkdown: (node, h2) => {
|
|
21437
|
+
renderMarkdown: (node, h2, ctx) => {
|
|
21438
|
+
var _a, _b;
|
|
21272
21439
|
if (!node) {
|
|
21273
21440
|
return "";
|
|
21274
21441
|
}
|
|
21275
21442
|
const content = Array.isArray(node.content) ? node.content : [];
|
|
21276
21443
|
if (content.length === 0) {
|
|
21277
|
-
|
|
21444
|
+
const previousContent = Array.isArray((_a = ctx == null ? void 0 : ctx.previousNode) == null ? void 0 : _a.content) ? ctx.previousNode.content : [];
|
|
21445
|
+
const previousNodeIsEmptyParagraph = ((_b = ctx == null ? void 0 : ctx.previousNode) == null ? void 0 : _b.type) === "paragraph" && previousContent.length === 0;
|
|
21446
|
+
return previousNodeIsEmptyParagraph ? EMPTY_PARAGRAPH_MARKDOWN : "";
|
|
21278
21447
|
}
|
|
21279
21448
|
return h2.renderChildren(content);
|
|
21280
21449
|
},
|
|
@@ -22533,6 +22702,9 @@ var Placeholder = Extension.create({
|
|
|
22533
22702
|
doc2.descendants((node, pos) => {
|
|
22534
22703
|
const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize;
|
|
22535
22704
|
const isEmpty2 = !node.isLeaf && isNodeEmpty(node);
|
|
22705
|
+
if (!node.type.isTextblock) {
|
|
22706
|
+
return this.options.includeChildren;
|
|
22707
|
+
}
|
|
22536
22708
|
if ((hasAnchor || !this.options.showOnlyCurrent) && isEmpty2) {
|
|
22537
22709
|
const classes = [this.options.emptyNodeClass];
|
|
22538
22710
|
if (isEmptyDoc) {
|
|
@@ -22586,6 +22758,7 @@ Extension.create({
|
|
|
22586
22758
|
];
|
|
22587
22759
|
}
|
|
22588
22760
|
});
|
|
22761
|
+
var skipTrailingNodeMeta = "skipTrailingNode";
|
|
22589
22762
|
function nodeEqualsType({ types, node }) {
|
|
22590
22763
|
return node && Array.isArray(types) && types.includes(node.type) || (node == null ? void 0 : node.type) === types;
|
|
22591
22764
|
}
|
|
@@ -22605,11 +22778,14 @@ var TrailingNode = Extension.create({
|
|
|
22605
22778
|
return [
|
|
22606
22779
|
new Plugin({
|
|
22607
22780
|
key: plugin,
|
|
22608
|
-
appendTransaction: (
|
|
22781
|
+
appendTransaction: (transactions, __, state) => {
|
|
22609
22782
|
const { doc: doc2, tr: tr2, schema } = state;
|
|
22610
22783
|
const shouldInsertNodeAtEnd = plugin.getState(state);
|
|
22611
22784
|
const endPosition = doc2.content.size;
|
|
22612
22785
|
const type = schema.nodes[defaultNode];
|
|
22786
|
+
if (transactions.some((transaction) => transaction.getMeta(skipTrailingNodeMeta))) {
|
|
22787
|
+
return;
|
|
22788
|
+
}
|
|
22613
22789
|
if (!shouldInsertNodeAtEnd) {
|
|
22614
22790
|
return;
|
|
22615
22791
|
}
|
|
@@ -23304,7 +23480,7 @@ var Image = Node3.create({
|
|
|
23304
23480
|
}
|
|
23305
23481
|
const { directions, minWidth, minHeight, alwaysPreserveAspectRatio } = this.options.resize;
|
|
23306
23482
|
return ({ node, getPos, HTMLAttributes, editor }) => {
|
|
23307
|
-
const
|
|
23483
|
+
const el2 = document.createElement("img");
|
|
23308
23484
|
Object.entries(HTMLAttributes).forEach(([key, value]) => {
|
|
23309
23485
|
if (value != null) {
|
|
23310
23486
|
switch (key) {
|
|
@@ -23312,20 +23488,20 @@ var Image = Node3.create({
|
|
|
23312
23488
|
case "height":
|
|
23313
23489
|
break;
|
|
23314
23490
|
default:
|
|
23315
|
-
|
|
23491
|
+
el2.setAttribute(key, value);
|
|
23316
23492
|
break;
|
|
23317
23493
|
}
|
|
23318
23494
|
}
|
|
23319
23495
|
});
|
|
23320
|
-
|
|
23496
|
+
el2.src = HTMLAttributes.src;
|
|
23321
23497
|
const nodeView = new ResizableNodeView({
|
|
23322
|
-
element:
|
|
23498
|
+
element: el2,
|
|
23323
23499
|
editor,
|
|
23324
23500
|
node,
|
|
23325
23501
|
getPos,
|
|
23326
23502
|
onResize: (width, height) => {
|
|
23327
|
-
|
|
23328
|
-
|
|
23503
|
+
el2.style.width = `${width}px`;
|
|
23504
|
+
el2.style.height = `${height}px`;
|
|
23329
23505
|
},
|
|
23330
23506
|
onCommit: (width, height) => {
|
|
23331
23507
|
const pos = getPos();
|
|
@@ -23355,7 +23531,7 @@ var Image = Node3.create({
|
|
|
23355
23531
|
const dom = nodeView.dom;
|
|
23356
23532
|
dom.style.visibility = "hidden";
|
|
23357
23533
|
dom.style.pointerEvents = "none";
|
|
23358
|
-
|
|
23534
|
+
el2.onload = () => {
|
|
23359
23535
|
dom.style.visibility = "";
|
|
23360
23536
|
dom.style.pointerEvents = "";
|
|
23361
23537
|
};
|
|
@@ -25107,6 +25283,35 @@ function tableEditing({ allowTableNodeSelection = false } = {}) {
|
|
|
25107
25283
|
}
|
|
25108
25284
|
});
|
|
25109
25285
|
}
|
|
25286
|
+
function normalizeTableCellAlign(value) {
|
|
25287
|
+
if (value === "left" || value === "right" || value === "center") {
|
|
25288
|
+
return value;
|
|
25289
|
+
}
|
|
25290
|
+
return null;
|
|
25291
|
+
}
|
|
25292
|
+
function parseAlign(element) {
|
|
25293
|
+
const styleAlign = (element.style.textAlign || "").trim().toLowerCase();
|
|
25294
|
+
const attrAlign = (element.getAttribute("align") || "").trim().toLowerCase();
|
|
25295
|
+
const align = styleAlign || attrAlign;
|
|
25296
|
+
return normalizeTableCellAlign(align);
|
|
25297
|
+
}
|
|
25298
|
+
function normalizeTableCellAlignFromAttributes(attributes) {
|
|
25299
|
+
return normalizeTableCellAlign(attributes == null ? void 0 : attributes.align);
|
|
25300
|
+
}
|
|
25301
|
+
function createAlignAttribute() {
|
|
25302
|
+
return {
|
|
25303
|
+
default: null,
|
|
25304
|
+
parseHTML: (element) => parseAlign(element),
|
|
25305
|
+
renderHTML: (attributes) => {
|
|
25306
|
+
if (!attributes.align) {
|
|
25307
|
+
return {};
|
|
25308
|
+
}
|
|
25309
|
+
return {
|
|
25310
|
+
style: `text-align: ${attributes.align}`
|
|
25311
|
+
};
|
|
25312
|
+
}
|
|
25313
|
+
};
|
|
25314
|
+
}
|
|
25110
25315
|
var TableCell = Node3.create({
|
|
25111
25316
|
name: "tableCell",
|
|
25112
25317
|
addOptions() {
|
|
@@ -25139,7 +25344,8 @@ var TableCell = Node3.create({
|
|
|
25139
25344
|
}
|
|
25140
25345
|
return value;
|
|
25141
25346
|
}
|
|
25142
|
-
}
|
|
25347
|
+
},
|
|
25348
|
+
align: createAlignAttribute()
|
|
25143
25349
|
};
|
|
25144
25350
|
},
|
|
25145
25351
|
tableRole: "cell",
|
|
@@ -25174,7 +25380,8 @@ var TableHeader = Node3.create({
|
|
|
25174
25380
|
const value = colwidth ? colwidth.split(",").map((width) => parseInt(width, 10)) : null;
|
|
25175
25381
|
return value;
|
|
25176
25382
|
}
|
|
25177
|
-
}
|
|
25383
|
+
},
|
|
25384
|
+
align: createAlignAttribute()
|
|
25178
25385
|
};
|
|
25179
25386
|
},
|
|
25180
25387
|
tableRole: "header_cell",
|
|
@@ -25402,7 +25609,8 @@ function renderTableToMarkdown(node, h2, options = {}) {
|
|
|
25402
25609
|
}
|
|
25403
25610
|
const text = collapseWhitespace(raw);
|
|
25404
25611
|
const isHeader = cellNode.type === "tableHeader";
|
|
25405
|
-
|
|
25612
|
+
const align = normalizeTableCellAlignFromAttributes(cellNode.attrs);
|
|
25613
|
+
cells.push({ text, isHeader, align });
|
|
25406
25614
|
});
|
|
25407
25615
|
}
|
|
25408
25616
|
rows.push(cells);
|
|
@@ -25428,11 +25636,33 @@ function renderTableToMarkdown(node, h2, options = {}) {
|
|
|
25428
25636
|
const pad = (s, width) => s + " ".repeat(Math.max(0, width - s.length));
|
|
25429
25637
|
const headerRow = rows[0];
|
|
25430
25638
|
const hasHeader = headerRow.some((c2) => c2.isHeader);
|
|
25639
|
+
const colAlignments = new Array(columnCount).fill(null);
|
|
25640
|
+
rows.forEach((r2) => {
|
|
25641
|
+
var _a2;
|
|
25642
|
+
for (let i = 0; i < columnCount; i += 1) {
|
|
25643
|
+
if (!colAlignments[i] && ((_a2 = r2[i]) == null ? void 0 : _a2.align)) {
|
|
25644
|
+
colAlignments[i] = r2[i].align;
|
|
25645
|
+
}
|
|
25646
|
+
}
|
|
25647
|
+
});
|
|
25431
25648
|
let out = "\n";
|
|
25432
25649
|
const headerTexts = new Array(columnCount).fill(0).map((_, i) => hasHeader ? headerRow[i] && headerRow[i].text || "" : "");
|
|
25433
25650
|
out += `| ${headerTexts.map((t, i) => pad(t, colWidths[i])).join(" | ")} |
|
|
25434
25651
|
`;
|
|
25435
|
-
out += `| ${colWidths.map((w
|
|
25652
|
+
out += `| ${colWidths.map((w, index) => {
|
|
25653
|
+
const dashCount = Math.max(3, w);
|
|
25654
|
+
const alignment = colAlignments[index];
|
|
25655
|
+
if (alignment === "left") {
|
|
25656
|
+
return `:${"-".repeat(dashCount)}`;
|
|
25657
|
+
}
|
|
25658
|
+
if (alignment === "right") {
|
|
25659
|
+
return `${"-".repeat(dashCount)}:`;
|
|
25660
|
+
}
|
|
25661
|
+
if (alignment === "center") {
|
|
25662
|
+
return `:${"-".repeat(dashCount)}:`;
|
|
25663
|
+
}
|
|
25664
|
+
return "-".repeat(dashCount);
|
|
25665
|
+
}).join(" | ")} |
|
|
25436
25666
|
`;
|
|
25437
25667
|
const body = hasHeader ? rows.slice(1) : rows;
|
|
25438
25668
|
body.forEach((r2) => {
|
|
@@ -25486,18 +25716,27 @@ var Table = Node3.create({
|
|
|
25486
25716
|
},
|
|
25487
25717
|
parseMarkdown: (token, h2) => {
|
|
25488
25718
|
const rows = [];
|
|
25719
|
+
const alignments = Array.isArray(token.align) ? token.align : [];
|
|
25489
25720
|
if (token.header) {
|
|
25490
25721
|
const headerCells = [];
|
|
25491
|
-
token.header.forEach((cell) => {
|
|
25492
|
-
|
|
25722
|
+
token.header.forEach((cell, index) => {
|
|
25723
|
+
var _a;
|
|
25724
|
+
const align = normalizeTableCellAlign((_a = alignments[index]) != null ? _a : cell.align);
|
|
25725
|
+
const attrs = align ? { align } : {};
|
|
25726
|
+
headerCells.push(
|
|
25727
|
+
h2.createNode("tableHeader", attrs, [{ type: "paragraph", content: h2.parseInline(cell.tokens) }])
|
|
25728
|
+
);
|
|
25493
25729
|
});
|
|
25494
25730
|
rows.push(h2.createNode("tableRow", {}, headerCells));
|
|
25495
25731
|
}
|
|
25496
25732
|
if (token.rows) {
|
|
25497
25733
|
token.rows.forEach((row) => {
|
|
25498
25734
|
const bodyCells = [];
|
|
25499
|
-
row.forEach((cell) => {
|
|
25500
|
-
|
|
25735
|
+
row.forEach((cell, index) => {
|
|
25736
|
+
var _a;
|
|
25737
|
+
const align = normalizeTableCellAlign((_a = alignments[index]) != null ? _a : cell.align);
|
|
25738
|
+
const attrs = align ? { align } : {};
|
|
25739
|
+
bodyCells.push(h2.createNode("tableCell", attrs, [{ type: "paragraph", content: h2.parseInline(cell.tokens) }]));
|
|
25501
25740
|
});
|
|
25502
25741
|
rows.push(h2.createNode("tableRow", {}, bodyCells));
|
|
25503
25742
|
});
|
|
@@ -25843,7 +26082,7 @@ function requireCore() {
|
|
|
25843
26082
|
static _collapse(node) {
|
|
25844
26083
|
if (typeof node === "string") return;
|
|
25845
26084
|
if (!node.children) return;
|
|
25846
|
-
if (node.children.every((
|
|
26085
|
+
if (node.children.every((el2) => typeof el2 === "string")) {
|
|
25847
26086
|
node.children = [node.children.join("")];
|
|
25848
26087
|
} else {
|
|
25849
26088
|
node.children.forEach((child) => {
|
|
@@ -26365,7 +26604,7 @@ function requireCore() {
|
|
|
26365
26604
|
if (this.regexes.length === 0) {
|
|
26366
26605
|
this.exec = () => null;
|
|
26367
26606
|
}
|
|
26368
|
-
const terminators = this.regexes.map((
|
|
26607
|
+
const terminators = this.regexes.map((el2) => el2[1]);
|
|
26369
26608
|
this.matcherRe = langRe(_rewriteBackreferences(terminators, { joinWith: "|" }), true);
|
|
26370
26609
|
this.lastIndex = 0;
|
|
26371
26610
|
}
|
|
@@ -26376,7 +26615,7 @@ function requireCore() {
|
|
|
26376
26615
|
if (!match) {
|
|
26377
26616
|
return null;
|
|
26378
26617
|
}
|
|
26379
|
-
const i = match.findIndex((
|
|
26618
|
+
const i = match.findIndex((el2, i2) => i2 > 0 && el2 !== void 0);
|
|
26380
26619
|
const matchData = this.matchIndexes[i];
|
|
26381
26620
|
match.splice(0, i);
|
|
26382
26621
|
return Object.assign(match, matchData);
|
|
@@ -27136,10 +27375,10 @@ function requireCore() {
|
|
|
27136
27375
|
}
|
|
27137
27376
|
});
|
|
27138
27377
|
}
|
|
27139
|
-
function deprecateHighlightBlock(
|
|
27378
|
+
function deprecateHighlightBlock(el2) {
|
|
27140
27379
|
deprecated("10.7.0", "highlightBlock will be removed entirely in v12.0");
|
|
27141
27380
|
deprecated("10.7.0", "Please use highlightElement now.");
|
|
27142
|
-
return highlightElement(
|
|
27381
|
+
return highlightElement(el2);
|
|
27143
27382
|
}
|
|
27144
27383
|
Object.assign(hljs, {
|
|
27145
27384
|
highlight: highlight2,
|
|
@@ -27298,7 +27537,7 @@ function LowlightPlugin({
|
|
|
27298
27537
|
});
|
|
27299
27538
|
return lowlightPlugin;
|
|
27300
27539
|
}
|
|
27301
|
-
var CodeBlockLowlight =
|
|
27540
|
+
var CodeBlockLowlight = CodeBlock.extend({
|
|
27302
27541
|
addOptions() {
|
|
27303
27542
|
var _a;
|
|
27304
27543
|
return {
|
|
@@ -41486,6 +41725,506 @@ class EmojiPicker {
|
|
|
41486
41725
|
}
|
|
41487
41726
|
}
|
|
41488
41727
|
}
|
|
41728
|
+
const DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
41729
|
+
const ACCEPTED_IMAGE_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp", "image/svg+xml"];
|
|
41730
|
+
const SVG_DANGEROUS_TAGS = [
|
|
41731
|
+
"script",
|
|
41732
|
+
"foreignobject",
|
|
41733
|
+
"set",
|
|
41734
|
+
"animate",
|
|
41735
|
+
"animatetransform",
|
|
41736
|
+
"animatemotion",
|
|
41737
|
+
"handler",
|
|
41738
|
+
"listener"
|
|
41739
|
+
];
|
|
41740
|
+
const SVG_EVENT_ATTR_PATTERN = /^on/i;
|
|
41741
|
+
const SVG_DANGEROUS_ATTR_VALUES = /javascript:|data:text\/html/i;
|
|
41742
|
+
function sanitizeSVG(svgText) {
|
|
41743
|
+
const parser = new DOMParser();
|
|
41744
|
+
const doc2 = parser.parseFromString(svgText, "image/svg+xml");
|
|
41745
|
+
const parseError = doc2.querySelector("parsererror");
|
|
41746
|
+
if (parseError) {
|
|
41747
|
+
return null;
|
|
41748
|
+
}
|
|
41749
|
+
const walk = (node) => {
|
|
41750
|
+
const tagName = node.tagName.toLowerCase();
|
|
41751
|
+
if (SVG_DANGEROUS_TAGS.includes(tagName)) {
|
|
41752
|
+
node.remove();
|
|
41753
|
+
return;
|
|
41754
|
+
}
|
|
41755
|
+
const attrs = Array.from(node.attributes);
|
|
41756
|
+
for (const attr of attrs) {
|
|
41757
|
+
if (SVG_EVENT_ATTR_PATTERN.test(attr.name)) {
|
|
41758
|
+
node.removeAttribute(attr.name);
|
|
41759
|
+
} else if (SVG_DANGEROUS_ATTR_VALUES.test(attr.value)) {
|
|
41760
|
+
node.removeAttribute(attr.name);
|
|
41761
|
+
}
|
|
41762
|
+
}
|
|
41763
|
+
const children = Array.from(node.children);
|
|
41764
|
+
for (const child of children) {
|
|
41765
|
+
walk(child);
|
|
41766
|
+
}
|
|
41767
|
+
};
|
|
41768
|
+
walk(doc2.documentElement);
|
|
41769
|
+
return new XMLSerializer().serializeToString(doc2.documentElement);
|
|
41770
|
+
}
|
|
41771
|
+
class ImageUpload {
|
|
41772
|
+
options;
|
|
41773
|
+
overlay = null;
|
|
41774
|
+
dialog = null;
|
|
41775
|
+
activeTab = "upload";
|
|
41776
|
+
currentFile = null;
|
|
41777
|
+
fileInput = null;
|
|
41778
|
+
uploading = false;
|
|
41779
|
+
constructor(options) {
|
|
41780
|
+
this.options = options;
|
|
41781
|
+
}
|
|
41782
|
+
open() {
|
|
41783
|
+
if (this.overlay) {
|
|
41784
|
+
this.reset();
|
|
41785
|
+
this.overlay.style.display = "flex";
|
|
41786
|
+
return;
|
|
41787
|
+
}
|
|
41788
|
+
this.createDialog();
|
|
41789
|
+
}
|
|
41790
|
+
close() {
|
|
41791
|
+
if (this.overlay) {
|
|
41792
|
+
this.overlay.style.display = "none";
|
|
41793
|
+
}
|
|
41794
|
+
this.reset();
|
|
41795
|
+
}
|
|
41796
|
+
reset() {
|
|
41797
|
+
this.currentFile = null;
|
|
41798
|
+
this.uploading = false;
|
|
41799
|
+
if (!this.dialog) return;
|
|
41800
|
+
if (this.fileInput) {
|
|
41801
|
+
this.fileInput.value = "";
|
|
41802
|
+
}
|
|
41803
|
+
const dropzoneText = this.dialog.querySelector(".md-image-upload-dropzone-text");
|
|
41804
|
+
if (dropzoneText) {
|
|
41805
|
+
dropzoneText.textContent = this.options.trans("Drop image here or click to browse");
|
|
41806
|
+
}
|
|
41807
|
+
const urlInput = this.dialog.querySelector(".md-image-upload-url-input");
|
|
41808
|
+
if (urlInput) {
|
|
41809
|
+
urlInput.value = "";
|
|
41810
|
+
}
|
|
41811
|
+
const altInput = this.dialog.querySelector(".md-image-upload-alt-input");
|
|
41812
|
+
if (altInput) {
|
|
41813
|
+
altInput.value = "";
|
|
41814
|
+
}
|
|
41815
|
+
const preview = this.dialog.querySelector(".md-image-upload-preview");
|
|
41816
|
+
if (preview) {
|
|
41817
|
+
preview.innerHTML = "";
|
|
41818
|
+
preview.style.display = "none";
|
|
41819
|
+
}
|
|
41820
|
+
const progress = this.dialog.querySelector(".md-image-upload-progress");
|
|
41821
|
+
if (progress) {
|
|
41822
|
+
progress.style.display = "none";
|
|
41823
|
+
}
|
|
41824
|
+
const insertBtn = this.dialog.querySelector(".md-image-upload-insert");
|
|
41825
|
+
if (insertBtn) {
|
|
41826
|
+
insertBtn.disabled = true;
|
|
41827
|
+
}
|
|
41828
|
+
const error = this.dialog.querySelector(".md-image-upload-error");
|
|
41829
|
+
if (error) {
|
|
41830
|
+
error.style.display = "none";
|
|
41831
|
+
error.textContent = "";
|
|
41832
|
+
}
|
|
41833
|
+
this.switchTab("upload");
|
|
41834
|
+
}
|
|
41835
|
+
createDialog() {
|
|
41836
|
+
const t = this.options.trans;
|
|
41837
|
+
this.overlay = document.createElement("div");
|
|
41838
|
+
this.overlay.className = "md-dialog-overlay";
|
|
41839
|
+
this.overlay.addEventListener("click", (e) => {
|
|
41840
|
+
if (e.target === this.overlay) {
|
|
41841
|
+
this.close();
|
|
41842
|
+
}
|
|
41843
|
+
});
|
|
41844
|
+
this.dialog = document.createElement("div");
|
|
41845
|
+
this.dialog.className = "md-dialog md-image-upload-dialog";
|
|
41846
|
+
const header = document.createElement("div");
|
|
41847
|
+
header.className = "md-dialog-header";
|
|
41848
|
+
header.innerHTML = `
|
|
41849
|
+
<h3>${t("Insert image")}</h3>
|
|
41850
|
+
<button type="button" class="md-dialog-close">×</button>
|
|
41851
|
+
`;
|
|
41852
|
+
header.querySelector(".md-dialog-close")?.addEventListener("click", () => this.close());
|
|
41853
|
+
const body = document.createElement("div");
|
|
41854
|
+
body.className = "md-dialog-body";
|
|
41855
|
+
const tabs = document.createElement("div");
|
|
41856
|
+
tabs.className = "md-image-upload-tabs";
|
|
41857
|
+
const uploadTab = document.createElement("button");
|
|
41858
|
+
uploadTab.type = "button";
|
|
41859
|
+
uploadTab.className = "md-image-upload-tab md-image-upload-tab-active";
|
|
41860
|
+
uploadTab.textContent = t("Upload");
|
|
41861
|
+
uploadTab.addEventListener("click", () => this.switchTab("upload"));
|
|
41862
|
+
const urlTab = document.createElement("button");
|
|
41863
|
+
urlTab.type = "button";
|
|
41864
|
+
urlTab.className = "md-image-upload-tab";
|
|
41865
|
+
urlTab.textContent = t("URL");
|
|
41866
|
+
urlTab.addEventListener("click", () => this.switchTab("url"));
|
|
41867
|
+
tabs.appendChild(uploadTab);
|
|
41868
|
+
tabs.appendChild(urlTab);
|
|
41869
|
+
const uploadPanel = document.createElement("div");
|
|
41870
|
+
uploadPanel.className = "md-image-upload-panel md-image-upload-panel-upload";
|
|
41871
|
+
this.fileInput = document.createElement("input");
|
|
41872
|
+
this.fileInput.type = "file";
|
|
41873
|
+
this.fileInput.accept = "image/*";
|
|
41874
|
+
this.fileInput.style.display = "none";
|
|
41875
|
+
this.fileInput.addEventListener("change", () => {
|
|
41876
|
+
const file = this.fileInput?.files?.[0];
|
|
41877
|
+
if (file) {
|
|
41878
|
+
this.handleFileSelected(file);
|
|
41879
|
+
}
|
|
41880
|
+
});
|
|
41881
|
+
const dropzone = document.createElement("div");
|
|
41882
|
+
dropzone.className = "md-image-upload-dropzone";
|
|
41883
|
+
dropzone.innerHTML = `
|
|
41884
|
+
<div class="md-image-upload-dropzone-icon">
|
|
41885
|
+
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
|
|
41886
|
+
<rect x="3" y="3" width="18" height="18" rx="2"/>
|
|
41887
|
+
<circle cx="8.5" cy="8.5" r="1.5"/>
|
|
41888
|
+
<polyline points="21 15 16 10 5 21"/>
|
|
41889
|
+
</svg>
|
|
41890
|
+
</div>
|
|
41891
|
+
<div class="md-image-upload-dropzone-text">${t("Drop image here or click to browse")}</div>
|
|
41892
|
+
<button type="button" class="md-btn md-btn-primary md-image-upload-browse">${t("Browse...")}</button>
|
|
41893
|
+
`;
|
|
41894
|
+
dropzone.querySelector(".md-image-upload-browse")?.addEventListener("click", (e) => {
|
|
41895
|
+
e.stopPropagation();
|
|
41896
|
+
this.fileInput?.click();
|
|
41897
|
+
});
|
|
41898
|
+
dropzone.addEventListener("click", () => {
|
|
41899
|
+
this.fileInput?.click();
|
|
41900
|
+
});
|
|
41901
|
+
dropzone.addEventListener("dragover", (e) => {
|
|
41902
|
+
e.preventDefault();
|
|
41903
|
+
e.stopPropagation();
|
|
41904
|
+
dropzone.classList.add("md-image-upload-dropzone-active");
|
|
41905
|
+
if (e.dataTransfer) {
|
|
41906
|
+
e.dataTransfer.dropEffect = "copy";
|
|
41907
|
+
}
|
|
41908
|
+
});
|
|
41909
|
+
dropzone.addEventListener("dragleave", (e) => {
|
|
41910
|
+
e.preventDefault();
|
|
41911
|
+
e.stopPropagation();
|
|
41912
|
+
dropzone.classList.remove("md-image-upload-dropzone-active");
|
|
41913
|
+
});
|
|
41914
|
+
dropzone.addEventListener("drop", (e) => {
|
|
41915
|
+
e.preventDefault();
|
|
41916
|
+
e.stopPropagation();
|
|
41917
|
+
dropzone.classList.remove("md-image-upload-dropzone-active");
|
|
41918
|
+
const file = e.dataTransfer?.files?.[0];
|
|
41919
|
+
if (file) {
|
|
41920
|
+
this.handleFileSelected(file);
|
|
41921
|
+
}
|
|
41922
|
+
});
|
|
41923
|
+
uploadPanel.appendChild(this.fileInput);
|
|
41924
|
+
uploadPanel.appendChild(dropzone);
|
|
41925
|
+
const urlPanel = document.createElement("div");
|
|
41926
|
+
urlPanel.className = "md-image-upload-panel md-image-upload-panel-url";
|
|
41927
|
+
urlPanel.style.display = "none";
|
|
41928
|
+
const urlRow = document.createElement("div");
|
|
41929
|
+
urlRow.className = "md-image-upload-row";
|
|
41930
|
+
urlRow.innerHTML = `
|
|
41931
|
+
<label>${t("URL")}</label>
|
|
41932
|
+
<input type="url" class="md-image-upload-url-input" placeholder="https://..." />
|
|
41933
|
+
`;
|
|
41934
|
+
const urlInput = urlRow.querySelector(".md-image-upload-url-input");
|
|
41935
|
+
urlInput.addEventListener("input", () => {
|
|
41936
|
+
this.handleUrlInput(urlInput.value);
|
|
41937
|
+
});
|
|
41938
|
+
urlPanel.appendChild(urlRow);
|
|
41939
|
+
const preview = document.createElement("div");
|
|
41940
|
+
preview.className = "md-image-upload-preview";
|
|
41941
|
+
preview.style.display = "none";
|
|
41942
|
+
const altRow = document.createElement("div");
|
|
41943
|
+
altRow.className = "md-image-upload-row";
|
|
41944
|
+
altRow.innerHTML = `
|
|
41945
|
+
<label>${t("Alt text")}</label>
|
|
41946
|
+
<input type="text" class="md-image-upload-alt-input" />
|
|
41947
|
+
`;
|
|
41948
|
+
const errorEl = document.createElement("div");
|
|
41949
|
+
errorEl.className = "md-image-upload-error";
|
|
41950
|
+
errorEl.style.display = "none";
|
|
41951
|
+
const progressEl = document.createElement("div");
|
|
41952
|
+
progressEl.className = "md-image-upload-progress";
|
|
41953
|
+
progressEl.style.display = "none";
|
|
41954
|
+
progressEl.innerHTML = `
|
|
41955
|
+
<div class="md-image-upload-progress-bar"><div class="md-image-upload-progress-fill"></div></div>
|
|
41956
|
+
<span class="md-image-upload-progress-text">${t("Uploading...")}</span>
|
|
41957
|
+
`;
|
|
41958
|
+
const footer = document.createElement("div");
|
|
41959
|
+
footer.className = "md-image-upload-footer";
|
|
41960
|
+
footer.innerHTML = `
|
|
41961
|
+
<button type="button" class="md-btn md-image-upload-cancel">${t("Cancel")}</button>
|
|
41962
|
+
<button type="button" class="md-btn md-btn-primary md-image-upload-insert" disabled>${t("Insert")}</button>
|
|
41963
|
+
`;
|
|
41964
|
+
footer.querySelector(".md-image-upload-cancel")?.addEventListener("click", () => this.close());
|
|
41965
|
+
footer.querySelector(".md-image-upload-insert")?.addEventListener("click", () => this.handleInsert());
|
|
41966
|
+
body.appendChild(tabs);
|
|
41967
|
+
body.appendChild(uploadPanel);
|
|
41968
|
+
body.appendChild(urlPanel);
|
|
41969
|
+
body.appendChild(preview);
|
|
41970
|
+
body.appendChild(errorEl);
|
|
41971
|
+
body.appendChild(progressEl);
|
|
41972
|
+
body.appendChild(altRow);
|
|
41973
|
+
body.appendChild(footer);
|
|
41974
|
+
this.dialog.appendChild(header);
|
|
41975
|
+
this.dialog.appendChild(body);
|
|
41976
|
+
this.overlay.appendChild(this.dialog);
|
|
41977
|
+
document.body.appendChild(this.overlay);
|
|
41978
|
+
}
|
|
41979
|
+
switchTab(tab) {
|
|
41980
|
+
this.activeTab = tab;
|
|
41981
|
+
if (!this.dialog) return;
|
|
41982
|
+
const tabs = this.dialog.querySelectorAll(".md-image-upload-tab");
|
|
41983
|
+
tabs[0]?.classList.toggle("md-image-upload-tab-active", tab === "upload");
|
|
41984
|
+
tabs[1]?.classList.toggle("md-image-upload-tab-active", tab === "url");
|
|
41985
|
+
const uploadPanel = this.dialog.querySelector(".md-image-upload-panel-upload");
|
|
41986
|
+
const urlPanel = this.dialog.querySelector(".md-image-upload-panel-url");
|
|
41987
|
+
if (uploadPanel) uploadPanel.style.display = tab === "upload" ? "" : "none";
|
|
41988
|
+
if (urlPanel) urlPanel.style.display = tab === "url" ? "" : "none";
|
|
41989
|
+
}
|
|
41990
|
+
showError(message) {
|
|
41991
|
+
const errorEl = this.dialog?.querySelector(".md-image-upload-error");
|
|
41992
|
+
if (errorEl) {
|
|
41993
|
+
errorEl.textContent = message;
|
|
41994
|
+
errorEl.style.display = "block";
|
|
41995
|
+
}
|
|
41996
|
+
}
|
|
41997
|
+
clearError() {
|
|
41998
|
+
const errorEl = this.dialog?.querySelector(".md-image-upload-error");
|
|
41999
|
+
if (errorEl) {
|
|
42000
|
+
errorEl.style.display = "none";
|
|
42001
|
+
errorEl.textContent = "";
|
|
42002
|
+
}
|
|
42003
|
+
}
|
|
42004
|
+
handleFileSelected(file) {
|
|
42005
|
+
this.clearError();
|
|
42006
|
+
const t = this.options.trans;
|
|
42007
|
+
if (!ACCEPTED_IMAGE_TYPES.includes(file.type)) {
|
|
42008
|
+
this.showError(t("Invalid file type"));
|
|
42009
|
+
return;
|
|
42010
|
+
}
|
|
42011
|
+
const maxSize = this.options.uploadMaxSize ?? DEFAULT_MAX_FILE_SIZE;
|
|
42012
|
+
if (file.size > maxSize) {
|
|
42013
|
+
this.showError(t("File too large"));
|
|
42014
|
+
return;
|
|
42015
|
+
}
|
|
42016
|
+
this.currentFile = file;
|
|
42017
|
+
this.showFilePreview(file);
|
|
42018
|
+
const dropzoneText = this.dialog?.querySelector(".md-image-upload-dropzone-text");
|
|
42019
|
+
if (dropzoneText) {
|
|
42020
|
+
dropzoneText.textContent = file.name;
|
|
42021
|
+
}
|
|
42022
|
+
const insertBtn = this.dialog?.querySelector(".md-image-upload-insert");
|
|
42023
|
+
if (insertBtn) {
|
|
42024
|
+
insertBtn.disabled = false;
|
|
42025
|
+
}
|
|
42026
|
+
}
|
|
42027
|
+
showFilePreview(file) {
|
|
42028
|
+
const preview = this.dialog?.querySelector(".md-image-upload-preview");
|
|
42029
|
+
if (!preview) return;
|
|
42030
|
+
const objectUrl = URL.createObjectURL(file);
|
|
42031
|
+
const img = document.createElement("img");
|
|
42032
|
+
img.src = objectUrl;
|
|
42033
|
+
img.alt = "Preview";
|
|
42034
|
+
img.onload = () => URL.revokeObjectURL(objectUrl);
|
|
42035
|
+
preview.innerHTML = "";
|
|
42036
|
+
preview.appendChild(img);
|
|
42037
|
+
preview.style.display = "block";
|
|
42038
|
+
}
|
|
42039
|
+
handleUrlInput(url) {
|
|
42040
|
+
this.clearError();
|
|
42041
|
+
const preview = this.dialog?.querySelector(".md-image-upload-preview");
|
|
42042
|
+
const insertBtn = this.dialog?.querySelector(".md-image-upload-insert");
|
|
42043
|
+
if (!url.trim()) {
|
|
42044
|
+
if (preview) {
|
|
42045
|
+
preview.innerHTML = "";
|
|
42046
|
+
preview.style.display = "none";
|
|
42047
|
+
}
|
|
42048
|
+
if (insertBtn) insertBtn.disabled = true;
|
|
42049
|
+
return;
|
|
42050
|
+
}
|
|
42051
|
+
if (!this.isValidUrl(url)) {
|
|
42052
|
+
if (insertBtn) insertBtn.disabled = true;
|
|
42053
|
+
return;
|
|
42054
|
+
}
|
|
42055
|
+
if (preview) {
|
|
42056
|
+
const img = document.createElement("img");
|
|
42057
|
+
img.src = url;
|
|
42058
|
+
img.alt = "Preview";
|
|
42059
|
+
img.onerror = () => {
|
|
42060
|
+
preview.innerHTML = "";
|
|
42061
|
+
preview.style.display = "none";
|
|
42062
|
+
if (insertBtn) insertBtn.disabled = true;
|
|
42063
|
+
this.showError(this.options.trans("Invalid image URL"));
|
|
42064
|
+
};
|
|
42065
|
+
img.onload = () => {
|
|
42066
|
+
if (insertBtn) insertBtn.disabled = false;
|
|
42067
|
+
};
|
|
42068
|
+
preview.innerHTML = "";
|
|
42069
|
+
preview.appendChild(img);
|
|
42070
|
+
preview.style.display = "block";
|
|
42071
|
+
}
|
|
42072
|
+
}
|
|
42073
|
+
isValidUrl(url) {
|
|
42074
|
+
try {
|
|
42075
|
+
const parsed = new URL(url, window.location.href);
|
|
42076
|
+
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
42077
|
+
} catch {
|
|
42078
|
+
return false;
|
|
42079
|
+
}
|
|
42080
|
+
}
|
|
42081
|
+
async handleInsert() {
|
|
42082
|
+
if (this.uploading) return;
|
|
42083
|
+
const altInput = this.dialog?.querySelector(".md-image-upload-alt-input");
|
|
42084
|
+
const alt = altInput?.value?.trim() || void 0;
|
|
42085
|
+
if (this.activeTab === "url") {
|
|
42086
|
+
const urlInput = this.dialog?.querySelector(".md-image-upload-url-input");
|
|
42087
|
+
const url = urlInput?.value?.trim();
|
|
42088
|
+
if (url && this.isValidUrl(url)) {
|
|
42089
|
+
this.options.onInsert(url, alt);
|
|
42090
|
+
this.close();
|
|
42091
|
+
}
|
|
42092
|
+
return;
|
|
42093
|
+
}
|
|
42094
|
+
if (!this.currentFile) return;
|
|
42095
|
+
try {
|
|
42096
|
+
const src = await this.uploadFile(this.currentFile);
|
|
42097
|
+
this.options.onInsert(src, alt);
|
|
42098
|
+
this.close();
|
|
42099
|
+
} catch (err) {
|
|
42100
|
+
this.showError(this.options.trans("Upload failed"));
|
|
42101
|
+
}
|
|
42102
|
+
}
|
|
42103
|
+
uploadFile(file) {
|
|
42104
|
+
if (!ACCEPTED_IMAGE_TYPES.includes(file.type)) {
|
|
42105
|
+
return Promise.reject(new Error("Invalid file type"));
|
|
42106
|
+
}
|
|
42107
|
+
const maxSize = this.options.uploadMaxSize ?? DEFAULT_MAX_FILE_SIZE;
|
|
42108
|
+
if (file.size > maxSize) {
|
|
42109
|
+
return Promise.reject(new Error("File too large"));
|
|
42110
|
+
}
|
|
42111
|
+
if (file.type === "image/svg+xml") {
|
|
42112
|
+
return this.sanitizeAndUploadSVG(file);
|
|
42113
|
+
}
|
|
42114
|
+
if (!this.options.uploadUrl) {
|
|
42115
|
+
return this.readAsBase64(file);
|
|
42116
|
+
}
|
|
42117
|
+
return this.uploadViaXHR(file);
|
|
42118
|
+
}
|
|
42119
|
+
sanitizeAndUploadSVG(file) {
|
|
42120
|
+
return new Promise((resolve, reject) => {
|
|
42121
|
+
const reader = new FileReader();
|
|
42122
|
+
reader.onload = () => {
|
|
42123
|
+
const svgText = reader.result;
|
|
42124
|
+
const sanitized = sanitizeSVG(svgText);
|
|
42125
|
+
if (!sanitized) {
|
|
42126
|
+
reject(new Error("Invalid SVG file"));
|
|
42127
|
+
return;
|
|
42128
|
+
}
|
|
42129
|
+
const sanitizedBlob = new Blob([sanitized], { type: "image/svg+xml" });
|
|
42130
|
+
const sanitizedFile = new File([sanitizedBlob], file.name, { type: "image/svg+xml" });
|
|
42131
|
+
if (!this.options.uploadUrl) {
|
|
42132
|
+
this.readAsBase64(sanitizedFile).then(resolve, reject);
|
|
42133
|
+
} else {
|
|
42134
|
+
this.uploadViaXHR(sanitizedFile).then(resolve, reject);
|
|
42135
|
+
}
|
|
42136
|
+
};
|
|
42137
|
+
reader.onerror = () => reject(new Error("Failed to read file"));
|
|
42138
|
+
reader.readAsText(file);
|
|
42139
|
+
});
|
|
42140
|
+
}
|
|
42141
|
+
readAsBase64(file) {
|
|
42142
|
+
return new Promise((resolve, reject) => {
|
|
42143
|
+
const reader = new FileReader();
|
|
42144
|
+
reader.onload = () => {
|
|
42145
|
+
if (typeof reader.result === "string") {
|
|
42146
|
+
resolve(reader.result);
|
|
42147
|
+
} else {
|
|
42148
|
+
reject(new Error("Failed to read file"));
|
|
42149
|
+
}
|
|
42150
|
+
};
|
|
42151
|
+
reader.onerror = () => reject(new Error("Failed to read file"));
|
|
42152
|
+
reader.readAsDataURL(file);
|
|
42153
|
+
});
|
|
42154
|
+
}
|
|
42155
|
+
uploadViaXHR(file) {
|
|
42156
|
+
return new Promise((resolve, reject) => {
|
|
42157
|
+
this.uploading = true;
|
|
42158
|
+
const progressEl = this.dialog?.querySelector(".md-image-upload-progress");
|
|
42159
|
+
const progressFill = this.dialog?.querySelector(".md-image-upload-progress-fill");
|
|
42160
|
+
const progressText = this.dialog?.querySelector(".md-image-upload-progress-text");
|
|
42161
|
+
const insertBtn = this.dialog?.querySelector(".md-image-upload-insert");
|
|
42162
|
+
if (progressEl) progressEl.style.display = "flex";
|
|
42163
|
+
if (insertBtn) insertBtn.disabled = true;
|
|
42164
|
+
const xhr = new XMLHttpRequest();
|
|
42165
|
+
const formData = new FormData();
|
|
42166
|
+
formData.append("file", file, file.name);
|
|
42167
|
+
xhr.upload.addEventListener("progress", (e) => {
|
|
42168
|
+
if (e.lengthComputable && progressFill && progressText) {
|
|
42169
|
+
const pct = Math.round(e.loaded / e.total * 100);
|
|
42170
|
+
progressFill.style.width = `${pct}%`;
|
|
42171
|
+
progressText.textContent = `${pct}%`;
|
|
42172
|
+
}
|
|
42173
|
+
});
|
|
42174
|
+
xhr.addEventListener("load", () => {
|
|
42175
|
+
this.uploading = false;
|
|
42176
|
+
if (progressEl) progressEl.style.display = "none";
|
|
42177
|
+
if (xhr.status >= 200 && xhr.status < 300) {
|
|
42178
|
+
try {
|
|
42179
|
+
const response = JSON.parse(xhr.responseText);
|
|
42180
|
+
let url = response.location || response.url || response.link;
|
|
42181
|
+
if (!url) {
|
|
42182
|
+
reject(new Error("No URL returned from server"));
|
|
42183
|
+
return;
|
|
42184
|
+
}
|
|
42185
|
+
const basePath = this.options.uploadBasePath ?? "/";
|
|
42186
|
+
if (url && !url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("data:")) {
|
|
42187
|
+
url = basePath.replace(/\/$/, "") + "/" + url.replace(/^\//, "");
|
|
42188
|
+
}
|
|
42189
|
+
resolve(url);
|
|
42190
|
+
} catch {
|
|
42191
|
+
reject(new Error("Invalid server response"));
|
|
42192
|
+
}
|
|
42193
|
+
} else {
|
|
42194
|
+
reject(new Error(`Upload failed: ${xhr.status}`));
|
|
42195
|
+
}
|
|
42196
|
+
});
|
|
42197
|
+
xhr.addEventListener("error", () => {
|
|
42198
|
+
this.uploading = false;
|
|
42199
|
+
if (progressEl) progressEl.style.display = "none";
|
|
42200
|
+
reject(new Error("Network error"));
|
|
42201
|
+
});
|
|
42202
|
+
xhr.addEventListener("abort", () => {
|
|
42203
|
+
this.uploading = false;
|
|
42204
|
+
if (progressEl) progressEl.style.display = "none";
|
|
42205
|
+
reject(new Error("Upload aborted"));
|
|
42206
|
+
});
|
|
42207
|
+
xhr.open("POST", this.options.uploadUrl);
|
|
42208
|
+
if (this.options.uploadCredentials !== false) {
|
|
42209
|
+
xhr.withCredentials = true;
|
|
42210
|
+
}
|
|
42211
|
+
if (this.options.uploadHeaders) {
|
|
42212
|
+
for (const [key, value] of Object.entries(this.options.uploadHeaders)) {
|
|
42213
|
+
xhr.setRequestHeader(key, value);
|
|
42214
|
+
}
|
|
42215
|
+
}
|
|
42216
|
+
xhr.send(formData);
|
|
42217
|
+
});
|
|
42218
|
+
}
|
|
42219
|
+
destroy() {
|
|
42220
|
+
if (this.overlay) {
|
|
42221
|
+
this.overlay.remove();
|
|
42222
|
+
this.overlay = null;
|
|
42223
|
+
this.dialog = null;
|
|
42224
|
+
this.fileInput = null;
|
|
42225
|
+
}
|
|
42226
|
+
}
|
|
42227
|
+
}
|
|
41489
42228
|
class SearchReplace {
|
|
41490
42229
|
options;
|
|
41491
42230
|
overlay = null;
|
|
@@ -41773,8 +42512,13 @@ class Toolbar {
|
|
|
41773
42512
|
dropdowns = /* @__PURE__ */ new Map();
|
|
41774
42513
|
charMap = null;
|
|
41775
42514
|
emojiPicker = null;
|
|
42515
|
+
imageUpload = null;
|
|
41776
42516
|
searchReplace = null;
|
|
41777
42517
|
updateInterval = null;
|
|
42518
|
+
boundClickHandler = null;
|
|
42519
|
+
boundKeydownHandler = null;
|
|
42520
|
+
overflowEl = null;
|
|
42521
|
+
toggleBtn = null;
|
|
41778
42522
|
constructor(container, options) {
|
|
41779
42523
|
this.container = container;
|
|
41780
42524
|
this.options = options;
|
|
@@ -41792,10 +42536,36 @@ class Toolbar {
|
|
|
41792
42536
|
get trans() {
|
|
41793
42537
|
return getTranslate();
|
|
41794
42538
|
}
|
|
42539
|
+
icon(name) {
|
|
42540
|
+
return this.options.iconSet[name] ?? name;
|
|
42541
|
+
}
|
|
41795
42542
|
render() {
|
|
41796
42543
|
this.container.innerHTML = "";
|
|
41797
42544
|
this.container.className = `md-toolbar md-toolbar-${this.options.mode}${this.options.sticky ? " md-toolbar-sticky" : ""}`;
|
|
41798
|
-
const
|
|
42545
|
+
const rows = this.options.buttons.split("||");
|
|
42546
|
+
const hasOverflow = rows.length > 1;
|
|
42547
|
+
if (hasOverflow) {
|
|
42548
|
+
const primaryEl = document.createElement("div");
|
|
42549
|
+
primaryEl.className = "md-toolbar-primary";
|
|
42550
|
+
this.renderGroups(rows[0].trim(), primaryEl);
|
|
42551
|
+
this.toggleBtn = this.createToggleButton();
|
|
42552
|
+
primaryEl.appendChild(this.toggleBtn);
|
|
42553
|
+
this.container.appendChild(primaryEl);
|
|
42554
|
+
this.overflowEl = document.createElement("div");
|
|
42555
|
+
this.overflowEl.className = "md-toolbar-overflow";
|
|
42556
|
+
const overflowStr = rows.slice(1).join("||").trim();
|
|
42557
|
+
this.renderGroups(overflowStr, this.overflowEl);
|
|
42558
|
+
this.container.appendChild(this.overflowEl);
|
|
42559
|
+
if (this.state.showMoreButtons) {
|
|
42560
|
+
this.overflowEl.classList.add("md-toolbar-overflow-visible");
|
|
42561
|
+
this.toggleBtn.classList.add("md-toolbar-btn-active");
|
|
42562
|
+
}
|
|
42563
|
+
} else {
|
|
42564
|
+
this.renderGroups(this.options.buttons, this.container);
|
|
42565
|
+
}
|
|
42566
|
+
}
|
|
42567
|
+
renderGroups(buttonsStr, parent) {
|
|
42568
|
+
const groups = buttonsStr.split("|").map((g) => g.trim()).filter(Boolean);
|
|
41799
42569
|
groups.forEach((group, index) => {
|
|
41800
42570
|
const groupEl = document.createElement("div");
|
|
41801
42571
|
groupEl.className = "md-toolbar-group";
|
|
@@ -41807,14 +42577,36 @@ class Toolbar {
|
|
|
41807
42577
|
this.buttonElements.set(buttonName, buttonEl);
|
|
41808
42578
|
}
|
|
41809
42579
|
});
|
|
41810
|
-
|
|
42580
|
+
parent.appendChild(groupEl);
|
|
41811
42581
|
if (index < groups.length - 1) {
|
|
41812
42582
|
const separator = document.createElement("div");
|
|
41813
42583
|
separator.className = "md-toolbar-separator";
|
|
41814
|
-
|
|
42584
|
+
parent.appendChild(separator);
|
|
41815
42585
|
}
|
|
41816
42586
|
});
|
|
41817
42587
|
}
|
|
42588
|
+
createToggleButton() {
|
|
42589
|
+
const button = document.createElement("button");
|
|
42590
|
+
button.type = "button";
|
|
42591
|
+
button.className = "md-toolbar-btn md-toolbar-toggle-btn";
|
|
42592
|
+
button.setAttribute("data-button", "togglemore");
|
|
42593
|
+
button.title = this.trans("More");
|
|
42594
|
+
button.innerHTML = `<span class="md-toolbar-btn-icon">${this.icon("togglemore")}</span>`;
|
|
42595
|
+
button.addEventListener("click", (e) => {
|
|
42596
|
+
e.preventDefault();
|
|
42597
|
+
this.toggleOverflow();
|
|
42598
|
+
});
|
|
42599
|
+
return button;
|
|
42600
|
+
}
|
|
42601
|
+
toggleOverflow() {
|
|
42602
|
+
this.state.showMoreButtons = !this.state.showMoreButtons;
|
|
42603
|
+
if (this.overflowEl) {
|
|
42604
|
+
this.overflowEl.classList.toggle("md-toolbar-overflow-visible", this.state.showMoreButtons);
|
|
42605
|
+
}
|
|
42606
|
+
if (this.toggleBtn) {
|
|
42607
|
+
this.toggleBtn.classList.toggle("md-toolbar-btn-active", this.state.showMoreButtons);
|
|
42608
|
+
}
|
|
42609
|
+
}
|
|
41818
42610
|
createButton(name) {
|
|
41819
42611
|
const customSpec = this.options.customButtons.get(name);
|
|
41820
42612
|
if (customSpec) {
|
|
@@ -41822,43 +42614,43 @@ class Toolbar {
|
|
|
41822
42614
|
}
|
|
41823
42615
|
switch (name.toLowerCase()) {
|
|
41824
42616
|
case "bold":
|
|
41825
|
-
return this.createActionButton("bold", "
|
|
42617
|
+
return this.createActionButton("bold", this.icon("bold"), this.trans("Bold"), () => {
|
|
41826
42618
|
this.tiptap?.chain().focus().toggleBold().run();
|
|
41827
42619
|
}, () => this.tiptap?.isActive("bold") ?? false);
|
|
41828
42620
|
case "italic":
|
|
41829
|
-
return this.createActionButton("italic", "
|
|
42621
|
+
return this.createActionButton("italic", this.icon("italic"), this.trans("Italic"), () => {
|
|
41830
42622
|
this.tiptap?.chain().focus().toggleItalic().run();
|
|
41831
42623
|
}, () => this.tiptap?.isActive("italic") ?? false);
|
|
41832
42624
|
case "underline":
|
|
41833
|
-
return this.createActionButton("underline", "
|
|
42625
|
+
return this.createActionButton("underline", this.icon("underline"), this.trans("Underline"), () => {
|
|
41834
42626
|
this.tiptap?.chain().focus().toggleUnderline().run();
|
|
41835
42627
|
}, () => this.tiptap?.isActive("underline") ?? false);
|
|
41836
42628
|
case "strikethrough":
|
|
41837
|
-
return this.createActionButton("strikethrough", "
|
|
42629
|
+
return this.createActionButton("strikethrough", this.icon("strikethrough"), this.trans("Strikethrough"), () => {
|
|
41838
42630
|
this.tiptap?.chain().focus().toggleStrike().run();
|
|
41839
42631
|
}, () => this.tiptap?.isActive("strike") ?? false);
|
|
41840
42632
|
case "bullist":
|
|
41841
|
-
return this.createActionButton("bullist", "
|
|
42633
|
+
return this.createActionButton("bullist", this.icon("bullist"), this.trans("Bullet list"), () => {
|
|
41842
42634
|
this.tiptap?.chain().focus().toggleBulletList().run();
|
|
41843
42635
|
}, () => this.tiptap?.isActive("bulletList") ?? false);
|
|
41844
42636
|
case "numlist":
|
|
41845
|
-
return this.createActionButton("numlist",
|
|
42637
|
+
return this.createActionButton("numlist", this.icon("numlist"), this.trans("Numbered list"), () => {
|
|
41846
42638
|
this.tiptap?.chain().focus().toggleOrderedList().run();
|
|
41847
42639
|
}, () => this.tiptap?.isActive("orderedList") ?? false);
|
|
41848
42640
|
case "outdent":
|
|
41849
|
-
return this.createActionButton("outdent", "
|
|
42641
|
+
return this.createActionButton("outdent", this.icon("outdent"), this.trans("Decrease indent"), () => {
|
|
41850
42642
|
if (this.tiptap?.isActive("listItem")) {
|
|
41851
42643
|
this.tiptap?.chain().focus().liftListItem("listItem").run();
|
|
41852
42644
|
}
|
|
41853
42645
|
});
|
|
41854
42646
|
case "indent":
|
|
41855
|
-
return this.createActionButton("indent", "
|
|
42647
|
+
return this.createActionButton("indent", this.icon("indent"), this.trans("Increase indent"), () => {
|
|
41856
42648
|
if (this.tiptap?.isActive("listItem")) {
|
|
41857
42649
|
this.tiptap?.chain().focus().sinkListItem("listItem").run();
|
|
41858
42650
|
}
|
|
41859
42651
|
});
|
|
41860
42652
|
case "blockquote":
|
|
41861
|
-
return this.createActionButton("blockquote",
|
|
42653
|
+
return this.createActionButton("blockquote", this.icon("blockquote"), this.trans("Blockquote"), () => {
|
|
41862
42654
|
this.tiptap?.chain().focus().toggleBlockquote().run();
|
|
41863
42655
|
}, () => this.tiptap?.isActive("blockquote") ?? false);
|
|
41864
42656
|
case "fontfamily":
|
|
@@ -41868,19 +42660,19 @@ class Toolbar {
|
|
|
41868
42660
|
case "lineheight":
|
|
41869
42661
|
return this.createLineHeightDropdown();
|
|
41870
42662
|
case "alignleft":
|
|
41871
|
-
return this.createActionButton("alignleft", "
|
|
42663
|
+
return this.createActionButton("alignleft", this.icon("alignleft"), this.trans("Align left"), () => {
|
|
41872
42664
|
this.tiptap?.chain().focus().setTextAlign("left").run();
|
|
41873
42665
|
}, () => this.tiptap?.isActive({ textAlign: "left" }) ?? false);
|
|
41874
42666
|
case "aligncenter":
|
|
41875
|
-
return this.createActionButton("aligncenter", "
|
|
42667
|
+
return this.createActionButton("aligncenter", this.icon("aligncenter"), this.trans("Align center"), () => {
|
|
41876
42668
|
this.tiptap?.chain().focus().setTextAlign("center").run();
|
|
41877
42669
|
}, () => this.tiptap?.isActive({ textAlign: "center" }) ?? false);
|
|
41878
42670
|
case "alignright":
|
|
41879
|
-
return this.createActionButton("alignright", "
|
|
42671
|
+
return this.createActionButton("alignright", this.icon("alignright"), this.trans("Align right"), () => {
|
|
41880
42672
|
this.tiptap?.chain().focus().setTextAlign("right").run();
|
|
41881
42673
|
}, () => this.tiptap?.isActive({ textAlign: "right" }) ?? false);
|
|
41882
42674
|
case "alignjustify":
|
|
41883
|
-
return this.createActionButton("alignjustify", "
|
|
42675
|
+
return this.createActionButton("alignjustify", this.icon("alignjustify"), this.trans("Justify"), () => {
|
|
41884
42676
|
this.tiptap?.chain().focus().setTextAlign("justify").run();
|
|
41885
42677
|
}, () => this.tiptap?.isActive({ textAlign: "justify" }) ?? false);
|
|
41886
42678
|
case "forecolor":
|
|
@@ -41892,71 +42684,71 @@ class Toolbar {
|
|
|
41892
42684
|
this.tiptap?.chain().focus().setHighlight({ color }).run();
|
|
41893
42685
|
});
|
|
41894
42686
|
case "removeformat":
|
|
41895
|
-
return this.createActionButton("removeformat", "
|
|
42687
|
+
return this.createActionButton("removeformat", this.icon("removeformat"), this.trans("Remove formatting"), () => {
|
|
41896
42688
|
this.tiptap?.chain().focus().unsetAllMarks().clearNodes().run();
|
|
41897
42689
|
});
|
|
41898
42690
|
case "copy":
|
|
41899
|
-
return this.createActionButton("copy", "
|
|
42691
|
+
return this.createActionButton("copy", this.icon("copy"), this.trans("Copy"), () => {
|
|
41900
42692
|
document.execCommand("copy");
|
|
41901
42693
|
});
|
|
41902
42694
|
case "cut":
|
|
41903
|
-
return this.createActionButton("cut", "
|
|
42695
|
+
return this.createActionButton("cut", this.icon("cut"), this.trans("Cut"), () => {
|
|
41904
42696
|
document.execCommand("cut");
|
|
41905
42697
|
});
|
|
41906
42698
|
case "paste":
|
|
41907
|
-
return this.createActionButton("paste", "
|
|
42699
|
+
return this.createActionButton("paste", this.icon("paste"), this.trans("Paste"), () => {
|
|
41908
42700
|
document.execCommand("paste");
|
|
41909
42701
|
});
|
|
41910
42702
|
case "undo":
|
|
41911
|
-
return this.createActionButton("undo", "
|
|
42703
|
+
return this.createActionButton("undo", this.icon("undo"), this.trans("Undo"), () => {
|
|
41912
42704
|
this.tiptap?.chain().focus().undo().run();
|
|
41913
42705
|
});
|
|
41914
42706
|
case "redo":
|
|
41915
|
-
return this.createActionButton("redo", "
|
|
42707
|
+
return this.createActionButton("redo", this.icon("redo"), this.trans("Redo"), () => {
|
|
41916
42708
|
this.tiptap?.chain().focus().redo().run();
|
|
41917
42709
|
});
|
|
41918
42710
|
case "image":
|
|
41919
|
-
return this.createActionButton("image", "
|
|
42711
|
+
return this.createActionButton("image", this.icon("image"), this.trans("Insert image"), () => {
|
|
41920
42712
|
this.openImageDialog();
|
|
41921
42713
|
});
|
|
41922
42714
|
case "charmap":
|
|
41923
|
-
return this.createActionButton("charmap", "
|
|
42715
|
+
return this.createActionButton("charmap", this.icon("charmap"), this.trans("Special character"), () => {
|
|
41924
42716
|
this.openCharMap();
|
|
41925
42717
|
});
|
|
41926
42718
|
case "emoticons":
|
|
41927
|
-
return this.createActionButton("emoticons", "
|
|
42719
|
+
return this.createActionButton("emoticons", this.icon("emoticons"), this.trans("Emoticons"), () => {
|
|
41928
42720
|
this.openEmojiPicker();
|
|
41929
42721
|
});
|
|
41930
42722
|
case "fullscreen":
|
|
41931
|
-
return this.createActionButton("fullscreen", "
|
|
42723
|
+
return this.createActionButton("fullscreen", this.icon("fullscreen"), this.trans("Fullscreen"), () => {
|
|
41932
42724
|
this.toggleFullscreen();
|
|
41933
42725
|
}, () => this.state.isFullscreen);
|
|
41934
42726
|
case "preview":
|
|
41935
|
-
return this.createActionButton("preview", "
|
|
42727
|
+
return this.createActionButton("preview", this.icon("preview"), this.trans("Preview"), () => {
|
|
41936
42728
|
this.openPreview();
|
|
41937
42729
|
});
|
|
41938
42730
|
case "code":
|
|
41939
|
-
return this.createActionButton("code", "
|
|
42731
|
+
return this.createActionButton("code", this.icon("code"), this.trans("Source code"), () => {
|
|
41940
42732
|
this.openSourceCode();
|
|
41941
42733
|
});
|
|
41942
42734
|
case "link":
|
|
41943
|
-
return this.createActionButton("link", "
|
|
42735
|
+
return this.createActionButton("link", this.icon("link"), this.trans("Insert link"), () => {
|
|
41944
42736
|
this.openLinkDialog();
|
|
41945
42737
|
}, () => this.tiptap?.isActive("link") ?? false);
|
|
41946
42738
|
case "codesample":
|
|
41947
|
-
return this.createActionButton("codesample", "
|
|
42739
|
+
return this.createActionButton("codesample", this.icon("codesample"), this.trans("Code sample"), () => {
|
|
41948
42740
|
this.tiptap?.chain().focus().toggleCodeBlock().run();
|
|
41949
42741
|
}, () => this.tiptap?.isActive("codeBlock") ?? false);
|
|
41950
42742
|
case "ltr":
|
|
41951
|
-
return this.createActionButton("ltr", "
|
|
42743
|
+
return this.createActionButton("ltr", this.icon("ltr"), this.trans("Left to right"), () => {
|
|
41952
42744
|
this.tiptap?.chain().focus().setTextDirection("ltr").run();
|
|
41953
42745
|
});
|
|
41954
42746
|
case "rtl":
|
|
41955
|
-
return this.createActionButton("rtl", "
|
|
42747
|
+
return this.createActionButton("rtl", this.icon("rtl"), this.trans("Right to left"), () => {
|
|
41956
42748
|
this.tiptap?.chain().focus().setTextDirection("rtl").run();
|
|
41957
42749
|
});
|
|
41958
42750
|
case "searchreplace":
|
|
41959
|
-
return this.createActionButton("searchreplace", "
|
|
42751
|
+
return this.createActionButton("searchreplace", this.icon("searchreplace"), this.trans("Find and replace"), () => {
|
|
41960
42752
|
this.openSearchReplace();
|
|
41961
42753
|
});
|
|
41962
42754
|
case "template":
|
|
@@ -42055,8 +42847,12 @@ class Toolbar {
|
|
|
42055
42847
|
value: t.content,
|
|
42056
42848
|
description: t.description
|
|
42057
42849
|
}));
|
|
42058
|
-
return this.createDropdown("template", this.trans("Templates"), options, (
|
|
42059
|
-
this.tiptap?.chain().focus().insertContent(
|
|
42850
|
+
return this.createDropdown("template", this.trans("Templates"), options, (selected) => {
|
|
42851
|
+
this.tiptap?.chain().focus().insertContent(selected.value).run();
|
|
42852
|
+
const matched = templates.find((t) => t.content === selected.value);
|
|
42853
|
+
if (matched) {
|
|
42854
|
+
this.options.editor.fire("templatechange", matched);
|
|
42855
|
+
}
|
|
42060
42856
|
});
|
|
42061
42857
|
}
|
|
42062
42858
|
createDropdown(name, label, options, onSelect, getCurrentValue) {
|
|
@@ -42194,13 +42990,15 @@ class Toolbar {
|
|
|
42194
42990
|
return wrapper;
|
|
42195
42991
|
}
|
|
42196
42992
|
bindEvents() {
|
|
42197
|
-
|
|
42993
|
+
this.unbindEvents();
|
|
42994
|
+
this.boundClickHandler = (e) => {
|
|
42198
42995
|
const target = e.target;
|
|
42199
42996
|
if (!target.closest(".md-toolbar-dropdown, .md-toolbar-colorpicker")) {
|
|
42200
42997
|
this.closeAllDropdowns();
|
|
42201
42998
|
}
|
|
42202
|
-
}
|
|
42203
|
-
document.addEventListener("
|
|
42999
|
+
};
|
|
43000
|
+
document.addEventListener("click", this.boundClickHandler);
|
|
43001
|
+
this.boundKeydownHandler = (e) => {
|
|
42204
43002
|
if (!this.tiptap?.isFocused) return;
|
|
42205
43003
|
const isMod = e.ctrlKey || e.metaKey;
|
|
42206
43004
|
if (isMod && e.key === "b") {
|
|
@@ -42223,7 +43021,18 @@ class Toolbar {
|
|
|
42223
43021
|
e.preventDefault();
|
|
42224
43022
|
this.openSearchReplace();
|
|
42225
43023
|
}
|
|
42226
|
-
}
|
|
43024
|
+
};
|
|
43025
|
+
document.addEventListener("keydown", this.boundKeydownHandler);
|
|
43026
|
+
}
|
|
43027
|
+
unbindEvents() {
|
|
43028
|
+
if (this.boundClickHandler) {
|
|
43029
|
+
document.removeEventListener("click", this.boundClickHandler);
|
|
43030
|
+
this.boundClickHandler = null;
|
|
43031
|
+
}
|
|
43032
|
+
if (this.boundKeydownHandler) {
|
|
43033
|
+
document.removeEventListener("keydown", this.boundKeydownHandler);
|
|
43034
|
+
this.boundKeydownHandler = null;
|
|
43035
|
+
}
|
|
42227
43036
|
}
|
|
42228
43037
|
closeAllDropdowns() {
|
|
42229
43038
|
this.dropdowns.forEach((dropdown) => {
|
|
@@ -42292,10 +43101,20 @@ class Toolbar {
|
|
|
42292
43101
|
}
|
|
42293
43102
|
// Dialog methods
|
|
42294
43103
|
openImageDialog() {
|
|
42295
|
-
|
|
42296
|
-
|
|
42297
|
-
|
|
43104
|
+
if (!this.imageUpload) {
|
|
43105
|
+
this.imageUpload = new ImageUpload({
|
|
43106
|
+
onInsert: (src, alt) => {
|
|
43107
|
+
this.tiptap?.chain().focus().setImage({ src, alt: alt ?? "" }).run();
|
|
43108
|
+
},
|
|
43109
|
+
uploadUrl: this.options.config.images_upload_url,
|
|
43110
|
+
uploadCredentials: this.options.config.images_upload_credentials,
|
|
43111
|
+
uploadBasePath: this.options.config.images_upload_base_path,
|
|
43112
|
+
uploadMaxSize: this.options.config.images_upload_max_size,
|
|
43113
|
+
uploadHeaders: this.options.config.images_upload_headers,
|
|
43114
|
+
trans: this.trans
|
|
43115
|
+
});
|
|
42298
43116
|
}
|
|
43117
|
+
this.imageUpload.open();
|
|
42299
43118
|
}
|
|
42300
43119
|
openLinkDialog() {
|
|
42301
43120
|
const previousUrl = this.tiptap?.getAttributes("link").href ?? "";
|
|
@@ -42375,18 +43194,108 @@ class Toolbar {
|
|
|
42375
43194
|
}
|
|
42376
43195
|
this.updateButtonStates();
|
|
42377
43196
|
}
|
|
43197
|
+
rebuild() {
|
|
43198
|
+
this.charMap?.destroy();
|
|
43199
|
+
this.charMap = null;
|
|
43200
|
+
this.emojiPicker?.destroy();
|
|
43201
|
+
this.emojiPicker = null;
|
|
43202
|
+
this.imageUpload?.destroy();
|
|
43203
|
+
this.imageUpload = null;
|
|
43204
|
+
this.searchReplace?.destroy();
|
|
43205
|
+
this.searchReplace = null;
|
|
43206
|
+
this.buttonElements.clear();
|
|
43207
|
+
this.dropdowns.clear();
|
|
43208
|
+
this.overflowEl = null;
|
|
43209
|
+
this.toggleBtn = null;
|
|
43210
|
+
this.render();
|
|
43211
|
+
this.bindEvents();
|
|
43212
|
+
}
|
|
42378
43213
|
destroy() {
|
|
42379
43214
|
if (this.updateInterval) {
|
|
42380
43215
|
clearInterval(this.updateInterval);
|
|
42381
43216
|
}
|
|
43217
|
+
this.unbindEvents();
|
|
42382
43218
|
this.charMap?.destroy();
|
|
42383
43219
|
this.emojiPicker?.destroy();
|
|
43220
|
+
this.imageUpload?.destroy();
|
|
42384
43221
|
this.searchReplace?.destroy();
|
|
42385
43222
|
this.buttonElements.clear();
|
|
42386
43223
|
this.dropdowns.clear();
|
|
42387
43224
|
this.container.innerHTML = "";
|
|
42388
43225
|
}
|
|
42389
43226
|
}
|
|
43227
|
+
const SVG_ALIGN_LEFT = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="15" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
|
43228
|
+
const SVG_ALIGN_CENTER = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="6" y1="12" x2="18" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
|
43229
|
+
const SVG_ALIGN_RIGHT = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="9" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
|
43230
|
+
const SVG_ALIGN_JUSTIFY = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
|
43231
|
+
const SVG_IMAGE = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/></svg>';
|
|
43232
|
+
const SVG_CODE = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>';
|
|
43233
|
+
const DEFAULT_ICONS = {
|
|
43234
|
+
bold: "B",
|
|
43235
|
+
italic: "I",
|
|
43236
|
+
underline: "U",
|
|
43237
|
+
strikethrough: "S",
|
|
43238
|
+
bullist: "•",
|
|
43239
|
+
numlist: "1.",
|
|
43240
|
+
outdent: "←",
|
|
43241
|
+
indent: "→",
|
|
43242
|
+
blockquote: '"',
|
|
43243
|
+
alignleft: SVG_ALIGN_LEFT,
|
|
43244
|
+
aligncenter: SVG_ALIGN_CENTER,
|
|
43245
|
+
alignright: SVG_ALIGN_RIGHT,
|
|
43246
|
+
alignjustify: SVG_ALIGN_JUSTIFY,
|
|
43247
|
+
removeformat: "✕",
|
|
43248
|
+
copy: "📋",
|
|
43249
|
+
cut: "✂",
|
|
43250
|
+
paste: "📄",
|
|
43251
|
+
undo: "↩",
|
|
43252
|
+
redo: "↪",
|
|
43253
|
+
image: SVG_IMAGE,
|
|
43254
|
+
charmap: "Ω",
|
|
43255
|
+
emoticons: "😀",
|
|
43256
|
+
fullscreen: "⛶",
|
|
43257
|
+
preview: "👁",
|
|
43258
|
+
code: SVG_CODE,
|
|
43259
|
+
link: "🔗",
|
|
43260
|
+
codesample: "{}",
|
|
43261
|
+
ltr: "⇐",
|
|
43262
|
+
rtl: "⇒",
|
|
43263
|
+
searchreplace: "🔍",
|
|
43264
|
+
togglemore: "…"
|
|
43265
|
+
};
|
|
43266
|
+
const CONFAB_ICONS = {
|
|
43267
|
+
bold: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"/><path d="M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z"/></svg>',
|
|
43268
|
+
italic: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="4" x2="10" y2="4"/><line x1="14" y1="20" x2="5" y2="20"/><line x1="15" y1="4" x2="9" y2="20"/></svg>',
|
|
43269
|
+
underline: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3"/><line x1="4" y1="21" x2="20" y2="21"/></svg>',
|
|
43270
|
+
strikethrough: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 4c-1.5-1-3.2-1.5-5-1.5C7.7 2.5 5 4.6 5 7.5c0 1.5.7 2.7 1.8 3.5"/><path d="M8 20c1.5 1 3.2 1.5 5 1.5 3.3 0 6-2.1 6-5 0-1.5-.7-2.7-1.8-3.5"/><line x1="2" y1="12" x2="22" y2="12"/></svg>',
|
|
43271
|
+
bullist: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="9" y1="6" x2="20" y2="6"/><line x1="9" y1="12" x2="20" y2="12"/><line x1="9" y1="18" x2="20" y2="18"/><circle cx="5" cy="6" r="1" fill="currentColor" stroke="none"/><circle cx="5" cy="12" r="1" fill="currentColor" stroke="none"/><circle cx="5" cy="18" r="1" fill="currentColor" stroke="none"/></svg>',
|
|
43272
|
+
numlist: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="10" y1="6" x2="21" y2="6"/><line x1="10" y1="12" x2="21" y2="12"/><line x1="10" y1="18" x2="21" y2="18"/><text x="3" y="8" font-size="7" fill="currentColor" stroke="none" font-family="sans-serif">1</text><text x="3" y="14" font-size="7" fill="currentColor" stroke="none" font-family="sans-serif">2</text><text x="3" y="20" font-size="7" fill="currentColor" stroke="none" font-family="sans-serif">3</text></svg>',
|
|
43273
|
+
outdent: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="4" x2="21" y2="4"/><line x1="3" y1="20" x2="21" y2="20"/><line x1="11" y1="9" x2="21" y2="9"/><line x1="11" y1="15" x2="21" y2="15"/><polyline points="7 9 3 12 7 15"/></svg>',
|
|
43274
|
+
indent: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="4" x2="21" y2="4"/><line x1="3" y1="20" x2="21" y2="20"/><line x1="11" y1="9" x2="21" y2="9"/><line x1="11" y1="15" x2="21" y2="15"/><polyline points="3 9 7 12 3 15"/></svg>',
|
|
43275
|
+
blockquote: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21c3 0 7-1 7-8V5c0-1.25-.76-2.02-2-2H4c-1.25 0-2 .76-2 2v6c0 1.25.76 2 2 2h4.5c-1 2-3.5 3.5-5.5 3.5"/><path d="M15 21c3 0 7-1 7-8V5c0-1.25-.76-2.02-2-2h-4c-1.25 0-2 .76-2 2v6c0 1.25.76 2 2 2h4.5c-1 2-3.5 3.5-5.5 3.5"/></svg>',
|
|
43276
|
+
alignleft: SVG_ALIGN_LEFT,
|
|
43277
|
+
aligncenter: SVG_ALIGN_CENTER,
|
|
43278
|
+
alignright: SVG_ALIGN_RIGHT,
|
|
43279
|
+
alignjustify: SVG_ALIGN_JUSTIFY,
|
|
43280
|
+
removeformat: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h11l-3 14"/><line x1="4" y1="7" x2="9" y2="3"/><line x1="18" y1="4" x2="22" y2="8"/><line x1="18" y1="8" x2="22" y2="4"/></svg>',
|
|
43281
|
+
copy: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',
|
|
43282
|
+
cut: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><line x1="20" y1="4" x2="8.1" y2="15.9"/><line x1="14.5" y1="9.5" x2="20" y2="4"/><line x1="8.1" y1="8.1" x2="20" y2="20"/></svg>',
|
|
43283
|
+
paste: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><rect x="8" y="2" width="8" height="4" rx="1"/></svg>',
|
|
43284
|
+
undo: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="1 4 1 10 7 10"/><path d="M3.5 14a9 9 0 1 0 2.2-5.8L1 10"/></svg>',
|
|
43285
|
+
redo: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><path d="M20.5 14a9 9 0 1 1-2.2-5.8L23 10"/></svg>',
|
|
43286
|
+
image: SVG_IMAGE,
|
|
43287
|
+
charmap: "Ω",
|
|
43288
|
+
emoticons: "😀",
|
|
43289
|
+
fullscreen: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="15 3 21 3 21 9"/><polyline points="9 21 3 21 3 15"/><line x1="21" y1="3" x2="14" y2="10"/><line x1="3" y1="21" x2="10" y2="14"/></svg>',
|
|
43290
|
+
preview: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>',
|
|
43291
|
+
code: SVG_CODE,
|
|
43292
|
+
link: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.5.5l3-3a5 5 0 0 0-7.1-7.1l-1.7 1.7"/><path d="M14 11a5 5 0 0 0-7.5-.5l-3 3a5 5 0 0 0 7.1 7.1l1.7-1.7"/></svg>',
|
|
43293
|
+
codesample: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5a2 2 0 0 0 2 2h1"/><path d="M16 3h1a2 2 0 0 1 2 2v5a2 2 0 0 0 2 2 2 2 0 0 0-2 2v5a2 2 0 0 1-2 2h-1"/></svg>',
|
|
43294
|
+
ltr: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="18" y1="5" x2="18" y2="19"/><path d="M8 5a4 4 0 0 0 0 8h4"/><polyline points="4 17 8 21 12 17"/></svg>',
|
|
43295
|
+
rtl: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="6" y1="5" x2="6" y2="19"/><path d="M16 5a4 4 0 0 1 0 8h-4"/><polyline points="20 17 16 21 12 17"/></svg>',
|
|
43296
|
+
searchreplace: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.6" y2="16.6"/></svg>',
|
|
43297
|
+
togglemore: '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="1" fill="currentColor"/><circle cx="5" cy="12" r="1" fill="currentColor"/><circle cx="19" cy="12" r="1" fill="currentColor"/></svg>'
|
|
43298
|
+
};
|
|
42390
43299
|
const FontSize = Extension.create({
|
|
42391
43300
|
name: "fontSize",
|
|
42392
43301
|
addOptions() {
|
|
@@ -42514,20 +43423,2107 @@ const TextDirection = Extension.create({
|
|
|
42514
43423
|
};
|
|
42515
43424
|
}
|
|
42516
43425
|
});
|
|
43426
|
+
const SignatureBlock = Node3.create({
|
|
43427
|
+
name: "signatureBlock",
|
|
43428
|
+
group: "block",
|
|
43429
|
+
content: "block+",
|
|
43430
|
+
defining: true,
|
|
43431
|
+
isolating: true,
|
|
43432
|
+
addAttributes() {
|
|
43433
|
+
return {
|
|
43434
|
+
id: {
|
|
43435
|
+
default: "signature"
|
|
43436
|
+
}
|
|
43437
|
+
};
|
|
43438
|
+
},
|
|
43439
|
+
parseHTML() {
|
|
43440
|
+
return [
|
|
43441
|
+
{
|
|
43442
|
+
tag: 'div[id="signature"]'
|
|
43443
|
+
}
|
|
43444
|
+
];
|
|
43445
|
+
},
|
|
43446
|
+
renderHTML({ HTMLAttributes }) {
|
|
43447
|
+
return ["div", mergeAttributes(HTMLAttributes), 0];
|
|
43448
|
+
}
|
|
43449
|
+
});
|
|
43450
|
+
const en = {
|
|
43451
|
+
"Bold": "Bold",
|
|
43452
|
+
"Italic": "Italic",
|
|
43453
|
+
"Underline": "Underline",
|
|
43454
|
+
"Strikethrough": "Strikethrough",
|
|
43455
|
+
"Bullet list": "Bullet list",
|
|
43456
|
+
"Numbered list": "Numbered list",
|
|
43457
|
+
"Decrease indent": "Decrease indent",
|
|
43458
|
+
"Increase indent": "Increase indent",
|
|
43459
|
+
"Blockquote": "Blockquote",
|
|
43460
|
+
"Align left": "Align left",
|
|
43461
|
+
"Align center": "Align center",
|
|
43462
|
+
"Align right": "Align right",
|
|
43463
|
+
"Justify": "Justify",
|
|
43464
|
+
"Text color": "Text color",
|
|
43465
|
+
"Background color": "Background color",
|
|
43466
|
+
"Remove formatting": "Remove formatting",
|
|
43467
|
+
"Copy": "Copy",
|
|
43468
|
+
"Cut": "Cut",
|
|
43469
|
+
"Paste": "Paste",
|
|
43470
|
+
"Undo": "Undo",
|
|
43471
|
+
"Redo": "Redo",
|
|
43472
|
+
"Insert image": "Insert image",
|
|
43473
|
+
"Special character": "Special character",
|
|
43474
|
+
"Emoticons": "Emoticons",
|
|
43475
|
+
"Fullscreen": "Fullscreen",
|
|
43476
|
+
"Preview": "Preview",
|
|
43477
|
+
"Source code": "Source code",
|
|
43478
|
+
"Insert link": "Insert link",
|
|
43479
|
+
"Code sample": "Code sample",
|
|
43480
|
+
"Left to right": "Left to right",
|
|
43481
|
+
"Right to left": "Right to left",
|
|
43482
|
+
"Find and replace": "Find and replace",
|
|
43483
|
+
"Font": "Font",
|
|
43484
|
+
"Font size": "Font size",
|
|
43485
|
+
"Line height": "Line height",
|
|
43486
|
+
"Templates": "Templates",
|
|
43487
|
+
"Apply": "Apply",
|
|
43488
|
+
"Enter image URL:": "Enter image URL:",
|
|
43489
|
+
"Enter URL:": "Enter URL:",
|
|
43490
|
+
"Edit HTML source:": "Edit HTML source:",
|
|
43491
|
+
"Find and Replace": "Find and Replace",
|
|
43492
|
+
"Find": "Find",
|
|
43493
|
+
"Replace": "Replace",
|
|
43494
|
+
"Case sensitive": "Case sensitive",
|
|
43495
|
+
"Whole word": "Whole word",
|
|
43496
|
+
"Previous": "Previous",
|
|
43497
|
+
"Next": "Next",
|
|
43498
|
+
"Replace All": "Replace All",
|
|
43499
|
+
"Search...": "Search...",
|
|
43500
|
+
"Special Character": "Special Character",
|
|
43501
|
+
"Upload": "Upload",
|
|
43502
|
+
"URL": "URL",
|
|
43503
|
+
"Browse...": "Browse...",
|
|
43504
|
+
"Drop image here or click to browse": "Drop image here or click to browse",
|
|
43505
|
+
"Alt text": "Alt text",
|
|
43506
|
+
"Insert": "Insert",
|
|
43507
|
+
"Cancel": "Cancel",
|
|
43508
|
+
"Uploading...": "Uploading...",
|
|
43509
|
+
"Upload failed": "Upload failed",
|
|
43510
|
+
"Invalid image URL": "Invalid image URL",
|
|
43511
|
+
"File too large": "File too large",
|
|
43512
|
+
"Invalid file type": "Invalid file type",
|
|
43513
|
+
"More": "More"
|
|
43514
|
+
};
|
|
43515
|
+
const ar = {
|
|
43516
|
+
"Bold": "غامق",
|
|
43517
|
+
"Italic": "مائل",
|
|
43518
|
+
"Underline": "تسطير",
|
|
43519
|
+
"Strikethrough": "يتوسطه خط",
|
|
43520
|
+
"Bullet list": "قائمة نقطية",
|
|
43521
|
+
"Numbered list": "قائمة مرقمة",
|
|
43522
|
+
"Decrease indent": "تقليل المسافة البادئة",
|
|
43523
|
+
"Increase indent": "زيادة المسافة البادئة",
|
|
43524
|
+
"Blockquote": "اقتباس",
|
|
43525
|
+
"Align left": "محاذاة لليسار",
|
|
43526
|
+
"Align center": "توسيط",
|
|
43527
|
+
"Align right": "محاذاة لليمين",
|
|
43528
|
+
"Justify": "ضبط",
|
|
43529
|
+
"Text color": "لون النص",
|
|
43530
|
+
"Background color": "لون الخلفية",
|
|
43531
|
+
"Remove formatting": "إزالة التنسيق",
|
|
43532
|
+
"Copy": "نسخ",
|
|
43533
|
+
"Cut": "قص",
|
|
43534
|
+
"Paste": "لصق",
|
|
43535
|
+
"Undo": "تراجع",
|
|
43536
|
+
"Redo": "إعادة",
|
|
43537
|
+
"Insert image": "إدراج صورة",
|
|
43538
|
+
"Special character": "حرف خاص",
|
|
43539
|
+
"Emoticons": "رموز تعبيرية",
|
|
43540
|
+
"Fullscreen": "ملء الشاشة",
|
|
43541
|
+
"Preview": "معاينة",
|
|
43542
|
+
"Source code": "شفرة المصدر",
|
|
43543
|
+
"Insert link": "إدراج رابط",
|
|
43544
|
+
"Code sample": "عينة من الشفرة",
|
|
43545
|
+
"Left to right": "من اليسار إلى اليمين",
|
|
43546
|
+
"Right to left": "من اليمين إلى اليسار",
|
|
43547
|
+
"Find and replace": "بحث واستبدال",
|
|
43548
|
+
"Font": "الخط",
|
|
43549
|
+
"Font size": "حجم الخط",
|
|
43550
|
+
"Line height": "ارتفاع السطر",
|
|
43551
|
+
"Templates": "قوالب",
|
|
43552
|
+
"Apply": "تطبيق",
|
|
43553
|
+
"Enter image URL:": "أدخل رابط الصورة:",
|
|
43554
|
+
"Enter URL:": "أدخل الرابط:",
|
|
43555
|
+
"Edit HTML source:": "تحرير مصدر HTML:",
|
|
43556
|
+
"Find and Replace": "بحث واستبدال",
|
|
43557
|
+
"Find": "بحث",
|
|
43558
|
+
"Replace": "استبدال",
|
|
43559
|
+
"Case sensitive": "حساس لحالة الأحرف",
|
|
43560
|
+
"Whole word": "كلمة كاملة",
|
|
43561
|
+
"Previous": "السابق",
|
|
43562
|
+
"Next": "التالي",
|
|
43563
|
+
"Replace All": "استبدال الكل",
|
|
43564
|
+
"Search...": "بحث...",
|
|
43565
|
+
"Special Character": "حرف خاص",
|
|
43566
|
+
"Upload": "رفع",
|
|
43567
|
+
"URL": "رابط",
|
|
43568
|
+
"Browse...": "استعراض...",
|
|
43569
|
+
"Drop image here or click to browse": "أسقط الصورة هنا أو انقر للاستعراض",
|
|
43570
|
+
"Alt text": "نص بديل",
|
|
43571
|
+
"Insert": "إدراج",
|
|
43572
|
+
"Cancel": "إلغاء",
|
|
43573
|
+
"Uploading...": "جارٍ الرفع...",
|
|
43574
|
+
"Upload failed": "فشل الرفع",
|
|
43575
|
+
"Invalid image URL": "رابط صورة غير صالح",
|
|
43576
|
+
"File too large": "الملف كبير جداً",
|
|
43577
|
+
"Invalid file type": "نوع ملف غير صالح",
|
|
43578
|
+
"More": "المزيد"
|
|
43579
|
+
};
|
|
43580
|
+
const ca = {
|
|
43581
|
+
"Bold": "Negreta",
|
|
43582
|
+
"Italic": "Cursiva",
|
|
43583
|
+
"Underline": "Subratllat",
|
|
43584
|
+
"Strikethrough": "Barrat",
|
|
43585
|
+
"Bullet list": "Llista de pics",
|
|
43586
|
+
"Numbered list": "Llista numerada",
|
|
43587
|
+
"Decrease indent": "Reduir sagnat",
|
|
43588
|
+
"Increase indent": "Augmentar sagnat",
|
|
43589
|
+
"Blockquote": "Citació",
|
|
43590
|
+
"Align left": "Alinear a l'esquerra",
|
|
43591
|
+
"Align center": "Centrar",
|
|
43592
|
+
"Align right": "Alinear a la dreta",
|
|
43593
|
+
"Justify": "Justificar",
|
|
43594
|
+
"Text color": "Color del text",
|
|
43595
|
+
"Background color": "Color de fons",
|
|
43596
|
+
"Remove formatting": "Eliminar format",
|
|
43597
|
+
"Copy": "Copiar",
|
|
43598
|
+
"Cut": "Tallar",
|
|
43599
|
+
"Paste": "Enganxar",
|
|
43600
|
+
"Undo": "Desfer",
|
|
43601
|
+
"Redo": "Refer",
|
|
43602
|
+
"Insert image": "Inserir imatge",
|
|
43603
|
+
"Special character": "Caràcter especial",
|
|
43604
|
+
"Emoticons": "Emoticones",
|
|
43605
|
+
"Fullscreen": "Pantalla completa",
|
|
43606
|
+
"Preview": "Previsualització",
|
|
43607
|
+
"Source code": "Codi font",
|
|
43608
|
+
"Insert link": "Inserir enllaç",
|
|
43609
|
+
"Code sample": "Mostra de codi",
|
|
43610
|
+
"Left to right": "D'esquerra a dreta",
|
|
43611
|
+
"Right to left": "De dreta a esquerra",
|
|
43612
|
+
"Find and replace": "Cercar i reemplaçar",
|
|
43613
|
+
"Font": "Tipus de lletra",
|
|
43614
|
+
"Font size": "Mida de lletra",
|
|
43615
|
+
"Line height": "Alçada de línia",
|
|
43616
|
+
"Templates": "Plantilles",
|
|
43617
|
+
"Apply": "Aplicar",
|
|
43618
|
+
"Enter image URL:": "Introduïu l'URL de la imatge:",
|
|
43619
|
+
"Enter URL:": "Introduïu l'URL:",
|
|
43620
|
+
"Edit HTML source:": "Editar codi font HTML:",
|
|
43621
|
+
"Find and Replace": "Cercar i reemplaçar",
|
|
43622
|
+
"Find": "Cercar",
|
|
43623
|
+
"Replace": "Reemplaçar",
|
|
43624
|
+
"Case sensitive": "Distingir majúscules",
|
|
43625
|
+
"Whole word": "Paraula sencera",
|
|
43626
|
+
"Previous": "Anterior",
|
|
43627
|
+
"Next": "Següent",
|
|
43628
|
+
"Replace All": "Reemplaçar tot",
|
|
43629
|
+
"Search...": "Cercar...",
|
|
43630
|
+
"Special Character": "Caràcter especial",
|
|
43631
|
+
"Upload": "Pujar",
|
|
43632
|
+
"URL": "URL",
|
|
43633
|
+
"Browse...": "Explorar...",
|
|
43634
|
+
"Drop image here or click to browse": "Deixa anar la imatge aquí o fes clic per explorar",
|
|
43635
|
+
"Alt text": "Text alternatiu",
|
|
43636
|
+
"Insert": "Inserir",
|
|
43637
|
+
"Cancel": "Cancel·lar",
|
|
43638
|
+
"Uploading...": "Pujant...",
|
|
43639
|
+
"Upload failed": "Error en pujar",
|
|
43640
|
+
"Invalid image URL": "URL d'imatge no vàlida",
|
|
43641
|
+
"File too large": "Fitxer massa gran",
|
|
43642
|
+
"Invalid file type": "Tipus de fitxer no vàlid",
|
|
43643
|
+
"More": "Més"
|
|
43644
|
+
};
|
|
43645
|
+
const zh = {
|
|
43646
|
+
"Bold": "粗体",
|
|
43647
|
+
"Italic": "斜体",
|
|
43648
|
+
"Underline": "下划线",
|
|
43649
|
+
"Strikethrough": "删除线",
|
|
43650
|
+
"Bullet list": "项目符号列表",
|
|
43651
|
+
"Numbered list": "编号列表",
|
|
43652
|
+
"Decrease indent": "减少缩进",
|
|
43653
|
+
"Increase indent": "增加缩进",
|
|
43654
|
+
"Blockquote": "引用",
|
|
43655
|
+
"Align left": "左对齐",
|
|
43656
|
+
"Align center": "居中对齐",
|
|
43657
|
+
"Align right": "右对齐",
|
|
43658
|
+
"Justify": "两端对齐",
|
|
43659
|
+
"Text color": "文字颜色",
|
|
43660
|
+
"Background color": "背景颜色",
|
|
43661
|
+
"Remove formatting": "清除格式",
|
|
43662
|
+
"Copy": "复制",
|
|
43663
|
+
"Cut": "剪切",
|
|
43664
|
+
"Paste": "粘贴",
|
|
43665
|
+
"Undo": "撤销",
|
|
43666
|
+
"Redo": "重做",
|
|
43667
|
+
"Insert image": "插入图片",
|
|
43668
|
+
"Special character": "特殊字符",
|
|
43669
|
+
"Emoticons": "表情符号",
|
|
43670
|
+
"Fullscreen": "全屏",
|
|
43671
|
+
"Preview": "预览",
|
|
43672
|
+
"Source code": "源代码",
|
|
43673
|
+
"Insert link": "插入链接",
|
|
43674
|
+
"Code sample": "代码示例",
|
|
43675
|
+
"Left to right": "从左到右",
|
|
43676
|
+
"Right to left": "从右到左",
|
|
43677
|
+
"Find and replace": "查找和替换",
|
|
43678
|
+
"Font": "字体",
|
|
43679
|
+
"Font size": "字号",
|
|
43680
|
+
"Line height": "行高",
|
|
43681
|
+
"Templates": "模板",
|
|
43682
|
+
"Apply": "应用",
|
|
43683
|
+
"Enter image URL:": "输入图片链接:",
|
|
43684
|
+
"Enter URL:": "输入链接:",
|
|
43685
|
+
"Edit HTML source:": "编辑HTML源代码:",
|
|
43686
|
+
"Find and Replace": "查找和替换",
|
|
43687
|
+
"Find": "查找",
|
|
43688
|
+
"Replace": "替换",
|
|
43689
|
+
"Case sensitive": "区分大小写",
|
|
43690
|
+
"Whole word": "全字匹配",
|
|
43691
|
+
"Previous": "上一个",
|
|
43692
|
+
"Next": "下一个",
|
|
43693
|
+
"Replace All": "全部替换",
|
|
43694
|
+
"Search...": "搜索...",
|
|
43695
|
+
"Special Character": "特殊字符",
|
|
43696
|
+
"Upload": "上传",
|
|
43697
|
+
"URL": "URL",
|
|
43698
|
+
"Browse...": "浏览...",
|
|
43699
|
+
"Drop image here or click to browse": "将图片拖放到此处或点击浏览",
|
|
43700
|
+
"Alt text": "替代文本",
|
|
43701
|
+
"Insert": "插入",
|
|
43702
|
+
"Cancel": "取消",
|
|
43703
|
+
"Uploading...": "上传中...",
|
|
43704
|
+
"Upload failed": "上传失败",
|
|
43705
|
+
"Invalid image URL": "无效的图片 URL",
|
|
43706
|
+
"File too large": "文件过大",
|
|
43707
|
+
"Invalid file type": "无效的文件类型",
|
|
43708
|
+
"More": "更多"
|
|
43709
|
+
};
|
|
43710
|
+
const cs = {
|
|
43711
|
+
"Bold": "Tučné",
|
|
43712
|
+
"Italic": "Kurzíva",
|
|
43713
|
+
"Underline": "Podtržené",
|
|
43714
|
+
"Strikethrough": "Přeškrtnuté",
|
|
43715
|
+
"Bullet list": "Odrážkový seznam",
|
|
43716
|
+
"Numbered list": "Číslovaný seznam",
|
|
43717
|
+
"Decrease indent": "Zmenšit odsazení",
|
|
43718
|
+
"Increase indent": "Zvětšit odsazení",
|
|
43719
|
+
"Blockquote": "Citace",
|
|
43720
|
+
"Align left": "Zarovnat vlevo",
|
|
43721
|
+
"Align center": "Zarovnat na střed",
|
|
43722
|
+
"Align right": "Zarovnat vpravo",
|
|
43723
|
+
"Justify": "Zarovnat do bloku",
|
|
43724
|
+
"Text color": "Barva textu",
|
|
43725
|
+
"Background color": "Barva pozadí",
|
|
43726
|
+
"Remove formatting": "Odstranit formátování",
|
|
43727
|
+
"Copy": "Kopírovat",
|
|
43728
|
+
"Cut": "Vyjmout",
|
|
43729
|
+
"Paste": "Vložit",
|
|
43730
|
+
"Undo": "Zpět",
|
|
43731
|
+
"Redo": "Znovu",
|
|
43732
|
+
"Insert image": "Vložit obrázek",
|
|
43733
|
+
"Special character": "Speciální znak",
|
|
43734
|
+
"Emoticons": "Emotikony",
|
|
43735
|
+
"Fullscreen": "Celá obrazovka",
|
|
43736
|
+
"Preview": "Náhled",
|
|
43737
|
+
"Source code": "Zdrojový kód",
|
|
43738
|
+
"Insert link": "Vložit odkaz",
|
|
43739
|
+
"Code sample": "Ukázka kódu",
|
|
43740
|
+
"Left to right": "Zleva doprava",
|
|
43741
|
+
"Right to left": "Zprava doleva",
|
|
43742
|
+
"Find and replace": "Najít a nahradit",
|
|
43743
|
+
"Font": "Písmo",
|
|
43744
|
+
"Font size": "Velikost písma",
|
|
43745
|
+
"Line height": "Výška řádku",
|
|
43746
|
+
"Templates": "Šablony",
|
|
43747
|
+
"Apply": "Použít",
|
|
43748
|
+
"Enter image URL:": "Zadejte URL obrázku:",
|
|
43749
|
+
"Enter URL:": "Zadejte URL:",
|
|
43750
|
+
"Edit HTML source:": "Upravit HTML zdroj:",
|
|
43751
|
+
"Find and Replace": "Najít a nahradit",
|
|
43752
|
+
"Find": "Najít",
|
|
43753
|
+
"Replace": "Nahradit",
|
|
43754
|
+
"Case sensitive": "Rozlišovat velikost písmen",
|
|
43755
|
+
"Whole word": "Celé slovo",
|
|
43756
|
+
"Previous": "Předchozí",
|
|
43757
|
+
"Next": "Další",
|
|
43758
|
+
"Replace All": "Nahradit vše",
|
|
43759
|
+
"Search...": "Hledat...",
|
|
43760
|
+
"Special Character": "Speciální znak",
|
|
43761
|
+
"Upload": "Nahrát",
|
|
43762
|
+
"URL": "URL",
|
|
43763
|
+
"Browse...": "Procházet...",
|
|
43764
|
+
"Drop image here or click to browse": "Přetáhněte obrázek sem nebo klikněte pro výběr",
|
|
43765
|
+
"Alt text": "Alternativní text",
|
|
43766
|
+
"Insert": "Vložit",
|
|
43767
|
+
"Cancel": "Zrušit",
|
|
43768
|
+
"Uploading...": "Nahrávání...",
|
|
43769
|
+
"Upload failed": "Nahrávání selhalo",
|
|
43770
|
+
"Invalid image URL": "Neplatná URL obrázku",
|
|
43771
|
+
"File too large": "Soubor je příliš velký",
|
|
43772
|
+
"Invalid file type": "Neplatný typ souboru",
|
|
43773
|
+
"More": "Více"
|
|
43774
|
+
};
|
|
43775
|
+
const da = {
|
|
43776
|
+
"Bold": "Fed",
|
|
43777
|
+
"Italic": "Kursiv",
|
|
43778
|
+
"Underline": "Understreget",
|
|
43779
|
+
"Strikethrough": "Gennemstreget",
|
|
43780
|
+
"Bullet list": "Punktliste",
|
|
43781
|
+
"Numbered list": "Nummereret liste",
|
|
43782
|
+
"Decrease indent": "Formindsk indrykning",
|
|
43783
|
+
"Increase indent": "Forøg indrykning",
|
|
43784
|
+
"Blockquote": "Blokcitat",
|
|
43785
|
+
"Align left": "Venstrejuster",
|
|
43786
|
+
"Align center": "Centrer",
|
|
43787
|
+
"Align right": "Højrejuster",
|
|
43788
|
+
"Justify": "Lige margener",
|
|
43789
|
+
"Text color": "Tekstfarve",
|
|
43790
|
+
"Background color": "Baggrundsfarve",
|
|
43791
|
+
"Remove formatting": "Fjern formatering",
|
|
43792
|
+
"Copy": "Kopier",
|
|
43793
|
+
"Cut": "Klip",
|
|
43794
|
+
"Paste": "Indsæt",
|
|
43795
|
+
"Undo": "Fortryd",
|
|
43796
|
+
"Redo": "Annuller fortryd",
|
|
43797
|
+
"Insert image": "Indsæt billede",
|
|
43798
|
+
"Special character": "Specialtegn",
|
|
43799
|
+
"Emoticons": "Humørikoner",
|
|
43800
|
+
"Fullscreen": "Fuldskærm",
|
|
43801
|
+
"Preview": "Forhåndsvisning",
|
|
43802
|
+
"Source code": "Kildekode",
|
|
43803
|
+
"Insert link": "Indsæt link",
|
|
43804
|
+
"Code sample": "Kodeeksempel",
|
|
43805
|
+
"Left to right": "Venstre mod højre",
|
|
43806
|
+
"Right to left": "Højre mod venstre",
|
|
43807
|
+
"Find and replace": "Søg og erstat",
|
|
43808
|
+
"Font": "Skrifttype",
|
|
43809
|
+
"Font size": "Skriftstørrelse",
|
|
43810
|
+
"Line height": "Linjehøjde",
|
|
43811
|
+
"Templates": "Skabeloner",
|
|
43812
|
+
"Apply": "Anvend",
|
|
43813
|
+
"Enter image URL:": "Indtast billed-URL:",
|
|
43814
|
+
"Enter URL:": "Indtast URL:",
|
|
43815
|
+
"Edit HTML source:": "Rediger HTML-kilde:",
|
|
43816
|
+
"Find and Replace": "Søg og erstat",
|
|
43817
|
+
"Find": "Søg",
|
|
43818
|
+
"Replace": "Erstat",
|
|
43819
|
+
"Case sensitive": "Forskel på store/små bogstaver",
|
|
43820
|
+
"Whole word": "Helt ord",
|
|
43821
|
+
"Previous": "Forrige",
|
|
43822
|
+
"Next": "Næste",
|
|
43823
|
+
"Replace All": "Erstat alle",
|
|
43824
|
+
"Search...": "Søg...",
|
|
43825
|
+
"Special Character": "Specialtegn",
|
|
43826
|
+
"Upload": "Upload",
|
|
43827
|
+
"URL": "URL",
|
|
43828
|
+
"Browse...": "Gennemse...",
|
|
43829
|
+
"Drop image here or click to browse": "Træk billede hertil eller klik for at gennemse",
|
|
43830
|
+
"Alt text": "Alternativ tekst",
|
|
43831
|
+
"Insert": "Indsæt",
|
|
43832
|
+
"Cancel": "Annuller",
|
|
43833
|
+
"Uploading...": "Uploader...",
|
|
43834
|
+
"Upload failed": "Upload mislykkedes",
|
|
43835
|
+
"Invalid image URL": "Ugyldig billed-URL",
|
|
43836
|
+
"File too large": "Filen er for stor",
|
|
43837
|
+
"Invalid file type": "Ugyldig filtype",
|
|
43838
|
+
"More": "Mere"
|
|
43839
|
+
};
|
|
43840
|
+
const enGb = {
|
|
43841
|
+
"Bold": "Bold",
|
|
43842
|
+
"Italic": "Italic",
|
|
43843
|
+
"Underline": "Underline",
|
|
43844
|
+
"Strikethrough": "Strikethrough",
|
|
43845
|
+
"Bullet list": "Bullet list",
|
|
43846
|
+
"Numbered list": "Numbered list",
|
|
43847
|
+
"Decrease indent": "Decrease indent",
|
|
43848
|
+
"Increase indent": "Increase indent",
|
|
43849
|
+
"Blockquote": "Blockquote",
|
|
43850
|
+
"Align left": "Align left",
|
|
43851
|
+
"Align center": "Align centre",
|
|
43852
|
+
"Align right": "Align right",
|
|
43853
|
+
"Justify": "Justify",
|
|
43854
|
+
"Text color": "Text colour",
|
|
43855
|
+
"Background color": "Background colour",
|
|
43856
|
+
"Remove formatting": "Remove formatting",
|
|
43857
|
+
"Copy": "Copy",
|
|
43858
|
+
"Cut": "Cut",
|
|
43859
|
+
"Paste": "Paste",
|
|
43860
|
+
"Undo": "Undo",
|
|
43861
|
+
"Redo": "Redo",
|
|
43862
|
+
"Insert image": "Insert image",
|
|
43863
|
+
"Special character": "Special character",
|
|
43864
|
+
"Emoticons": "Emoticons",
|
|
43865
|
+
"Fullscreen": "Fullscreen",
|
|
43866
|
+
"Preview": "Preview",
|
|
43867
|
+
"Source code": "Source code",
|
|
43868
|
+
"Insert link": "Insert link",
|
|
43869
|
+
"Code sample": "Code sample",
|
|
43870
|
+
"Left to right": "Left to right",
|
|
43871
|
+
"Right to left": "Right to left",
|
|
43872
|
+
"Find and replace": "Find and replace",
|
|
43873
|
+
"Font": "Font",
|
|
43874
|
+
"Font size": "Font size",
|
|
43875
|
+
"Line height": "Line height",
|
|
43876
|
+
"Templates": "Templates",
|
|
43877
|
+
"Apply": "Apply",
|
|
43878
|
+
"Enter image URL:": "Enter image URL:",
|
|
43879
|
+
"Enter URL:": "Enter URL:",
|
|
43880
|
+
"Edit HTML source:": "Edit HTML source:",
|
|
43881
|
+
"Find and Replace": "Find and Replace",
|
|
43882
|
+
"Find": "Find",
|
|
43883
|
+
"Replace": "Replace",
|
|
43884
|
+
"Case sensitive": "Case sensitive",
|
|
43885
|
+
"Whole word": "Whole word",
|
|
43886
|
+
"Previous": "Previous",
|
|
43887
|
+
"Next": "Next",
|
|
43888
|
+
"Replace All": "Replace All",
|
|
43889
|
+
"Search...": "Search...",
|
|
43890
|
+
"Special Character": "Special Character",
|
|
43891
|
+
"Upload": "Upload",
|
|
43892
|
+
"URL": "URL",
|
|
43893
|
+
"Browse...": "Browse...",
|
|
43894
|
+
"Drop image here or click to browse": "Drop image here or click to browse",
|
|
43895
|
+
"Alt text": "Alt text",
|
|
43896
|
+
"Insert": "Insert",
|
|
43897
|
+
"Cancel": "Cancel",
|
|
43898
|
+
"Uploading...": "Uploading...",
|
|
43899
|
+
"Upload failed": "Upload failed",
|
|
43900
|
+
"Invalid image URL": "Invalid image URL",
|
|
43901
|
+
"File too large": "File too large",
|
|
43902
|
+
"Invalid file type": "Invalid file type",
|
|
43903
|
+
"More": "More"
|
|
43904
|
+
};
|
|
43905
|
+
const fi = {
|
|
43906
|
+
"Bold": "Lihavoitu",
|
|
43907
|
+
"Italic": "Kursivoitu",
|
|
43908
|
+
"Underline": "Alleviivattu",
|
|
43909
|
+
"Strikethrough": "Yliviivattu",
|
|
43910
|
+
"Bullet list": "Luettelomerkkilista",
|
|
43911
|
+
"Numbered list": "Numeroitu lista",
|
|
43912
|
+
"Decrease indent": "Pienennä sisennystä",
|
|
43913
|
+
"Increase indent": "Suurenna sisennystä",
|
|
43914
|
+
"Blockquote": "Lainaus",
|
|
43915
|
+
"Align left": "Tasaa vasemmalle",
|
|
43916
|
+
"Align center": "Keskitä",
|
|
43917
|
+
"Align right": "Tasaa oikealle",
|
|
43918
|
+
"Justify": "Tasaa molemmat reunat",
|
|
43919
|
+
"Text color": "Tekstin väri",
|
|
43920
|
+
"Background color": "Taustaväri",
|
|
43921
|
+
"Remove formatting": "Poista muotoilu",
|
|
43922
|
+
"Copy": "Kopioi",
|
|
43923
|
+
"Cut": "Leikkaa",
|
|
43924
|
+
"Paste": "Liitä",
|
|
43925
|
+
"Undo": "Kumoa",
|
|
43926
|
+
"Redo": "Tee uudelleen",
|
|
43927
|
+
"Insert image": "Lisää kuva",
|
|
43928
|
+
"Special character": "Erikoismerkki",
|
|
43929
|
+
"Emoticons": "Hymiöt",
|
|
43930
|
+
"Fullscreen": "Koko näyttö",
|
|
43931
|
+
"Preview": "Esikatselu",
|
|
43932
|
+
"Source code": "Lähdekoodi",
|
|
43933
|
+
"Insert link": "Lisää linkki",
|
|
43934
|
+
"Code sample": "Koodiesimerkki",
|
|
43935
|
+
"Left to right": "Vasemmalta oikealle",
|
|
43936
|
+
"Right to left": "Oikealta vasemmalle",
|
|
43937
|
+
"Find and replace": "Etsi ja korvaa",
|
|
43938
|
+
"Font": "Kirjasin",
|
|
43939
|
+
"Font size": "Kirjasinkoko",
|
|
43940
|
+
"Line height": "Rivin korkeus",
|
|
43941
|
+
"Templates": "Mallipohjat",
|
|
43942
|
+
"Apply": "Käytä",
|
|
43943
|
+
"Enter image URL:": "Syötä kuvan URL:",
|
|
43944
|
+
"Enter URL:": "Syötä URL:",
|
|
43945
|
+
"Edit HTML source:": "Muokkaa HTML-lähdekoodia:",
|
|
43946
|
+
"Find and Replace": "Etsi ja korvaa",
|
|
43947
|
+
"Find": "Etsi",
|
|
43948
|
+
"Replace": "Korvaa",
|
|
43949
|
+
"Case sensitive": "Huomioi kirjainkoko",
|
|
43950
|
+
"Whole word": "Koko sana",
|
|
43951
|
+
"Previous": "Edellinen",
|
|
43952
|
+
"Next": "Seuraava",
|
|
43953
|
+
"Replace All": "Korvaa kaikki",
|
|
43954
|
+
"Search...": "Etsi...",
|
|
43955
|
+
"Special Character": "Erikoismerkki",
|
|
43956
|
+
"Upload": "Lataa",
|
|
43957
|
+
"URL": "URL",
|
|
43958
|
+
"Browse...": "Selaa...",
|
|
43959
|
+
"Drop image here or click to browse": "Pudota kuva tähän tai napsauta selataksesi",
|
|
43960
|
+
"Alt text": "Vaihtoehtoinen teksti",
|
|
43961
|
+
"Insert": "Lisää",
|
|
43962
|
+
"Cancel": "Peruuta",
|
|
43963
|
+
"Uploading...": "Ladataan...",
|
|
43964
|
+
"Upload failed": "Lataus epäonnistui",
|
|
43965
|
+
"Invalid image URL": "Virheellinen kuvan URL",
|
|
43966
|
+
"File too large": "Tiedosto on liian suuri",
|
|
43967
|
+
"Invalid file type": "Virheellinen tiedostotyyppi",
|
|
43968
|
+
"More": "Lisää"
|
|
43969
|
+
};
|
|
43970
|
+
const fr = {
|
|
43971
|
+
"Bold": "Gras",
|
|
43972
|
+
"Italic": "Italique",
|
|
43973
|
+
"Underline": "Souligné",
|
|
43974
|
+
"Strikethrough": "Barré",
|
|
43975
|
+
"Bullet list": "Liste à puces",
|
|
43976
|
+
"Numbered list": "Liste numérotée",
|
|
43977
|
+
"Decrease indent": "Réduire le retrait",
|
|
43978
|
+
"Increase indent": "Augmenter le retrait",
|
|
43979
|
+
"Blockquote": "Citation",
|
|
43980
|
+
"Align left": "Aligner à gauche",
|
|
43981
|
+
"Align center": "Centrer",
|
|
43982
|
+
"Align right": "Aligner à droite",
|
|
43983
|
+
"Justify": "Justifier",
|
|
43984
|
+
"Text color": "Couleur du texte",
|
|
43985
|
+
"Background color": "Couleur d'arrière-plan",
|
|
43986
|
+
"Remove formatting": "Supprimer la mise en forme",
|
|
43987
|
+
"Copy": "Copier",
|
|
43988
|
+
"Cut": "Couper",
|
|
43989
|
+
"Paste": "Coller",
|
|
43990
|
+
"Undo": "Annuler",
|
|
43991
|
+
"Redo": "Rétablir",
|
|
43992
|
+
"Insert image": "Insérer une image",
|
|
43993
|
+
"Special character": "Caractère spécial",
|
|
43994
|
+
"Emoticons": "Émoticônes",
|
|
43995
|
+
"Fullscreen": "Plein écran",
|
|
43996
|
+
"Preview": "Aperçu",
|
|
43997
|
+
"Source code": "Code source",
|
|
43998
|
+
"Insert link": "Insérer un lien",
|
|
43999
|
+
"Code sample": "Exemple de code",
|
|
44000
|
+
"Left to right": "De gauche à droite",
|
|
44001
|
+
"Right to left": "De droite à gauche",
|
|
44002
|
+
"Find and replace": "Rechercher et remplacer",
|
|
44003
|
+
"Font": "Police",
|
|
44004
|
+
"Font size": "Taille de police",
|
|
44005
|
+
"Line height": "Hauteur de ligne",
|
|
44006
|
+
"Templates": "Modèles",
|
|
44007
|
+
"Apply": "Appliquer",
|
|
44008
|
+
"Enter image URL:": "Entrez l'URL de l'image :",
|
|
44009
|
+
"Enter URL:": "Entrez l'URL :",
|
|
44010
|
+
"Edit HTML source:": "Modifier le code source HTML :",
|
|
44011
|
+
"Find and Replace": "Rechercher et remplacer",
|
|
44012
|
+
"Find": "Rechercher",
|
|
44013
|
+
"Replace": "Remplacer",
|
|
44014
|
+
"Case sensitive": "Sensible à la casse",
|
|
44015
|
+
"Whole word": "Mot entier",
|
|
44016
|
+
"Previous": "Précédent",
|
|
44017
|
+
"Next": "Suivant",
|
|
44018
|
+
"Replace All": "Tout remplacer",
|
|
44019
|
+
"Search...": "Rechercher...",
|
|
44020
|
+
"Special Character": "Caractère spécial",
|
|
44021
|
+
"Upload": "Télécharger",
|
|
44022
|
+
"URL": "URL",
|
|
44023
|
+
"Browse...": "Parcourir...",
|
|
44024
|
+
"Drop image here or click to browse": "Déposez l'image ici ou cliquez pour parcourir",
|
|
44025
|
+
"Alt text": "Texte alternatif",
|
|
44026
|
+
"Insert": "Insérer",
|
|
44027
|
+
"Cancel": "Annuler",
|
|
44028
|
+
"Uploading...": "Téléchargement...",
|
|
44029
|
+
"Upload failed": "Échec du téléchargement",
|
|
44030
|
+
"Invalid image URL": "URL d'image invalide",
|
|
44031
|
+
"File too large": "Fichier trop volumineux",
|
|
44032
|
+
"Invalid file type": "Type de fichier invalide",
|
|
44033
|
+
"More": "Plus"
|
|
44034
|
+
};
|
|
44035
|
+
const frCa = {
|
|
44036
|
+
"Bold": "Gras",
|
|
44037
|
+
"Italic": "Italique",
|
|
44038
|
+
"Underline": "Souligné",
|
|
44039
|
+
"Strikethrough": "Barré",
|
|
44040
|
+
"Bullet list": "Liste à puces",
|
|
44041
|
+
"Numbered list": "Liste numérotée",
|
|
44042
|
+
"Decrease indent": "Réduire le retrait",
|
|
44043
|
+
"Increase indent": "Augmenter le retrait",
|
|
44044
|
+
"Blockquote": "Citation",
|
|
44045
|
+
"Align left": "Aligner à gauche",
|
|
44046
|
+
"Align center": "Centrer",
|
|
44047
|
+
"Align right": "Aligner à droite",
|
|
44048
|
+
"Justify": "Justifier",
|
|
44049
|
+
"Text color": "Couleur du texte",
|
|
44050
|
+
"Background color": "Couleur d'arrière-plan",
|
|
44051
|
+
"Remove formatting": "Supprimer la mise en forme",
|
|
44052
|
+
"Copy": "Copier",
|
|
44053
|
+
"Cut": "Couper",
|
|
44054
|
+
"Paste": "Coller",
|
|
44055
|
+
"Undo": "Annuler",
|
|
44056
|
+
"Redo": "Rétablir",
|
|
44057
|
+
"Insert image": "Insérer une image",
|
|
44058
|
+
"Special character": "Caractère spécial",
|
|
44059
|
+
"Emoticons": "Émoticônes",
|
|
44060
|
+
"Fullscreen": "Plein écran",
|
|
44061
|
+
"Preview": "Aperçu",
|
|
44062
|
+
"Source code": "Code source",
|
|
44063
|
+
"Insert link": "Insérer un lien",
|
|
44064
|
+
"Code sample": "Exemple de code",
|
|
44065
|
+
"Left to right": "De gauche à droite",
|
|
44066
|
+
"Right to left": "De droite à gauche",
|
|
44067
|
+
"Find and replace": "Rechercher et remplacer",
|
|
44068
|
+
"Font": "Police",
|
|
44069
|
+
"Font size": "Taille de police",
|
|
44070
|
+
"Line height": "Hauteur de ligne",
|
|
44071
|
+
"Templates": "Modèles",
|
|
44072
|
+
"Apply": "Appliquer",
|
|
44073
|
+
"Enter image URL:": "Entrez l'URL de l'image :",
|
|
44074
|
+
"Enter URL:": "Entrez l'URL :",
|
|
44075
|
+
"Edit HTML source:": "Modifier le code source HTML :",
|
|
44076
|
+
"Find and Replace": "Rechercher et remplacer",
|
|
44077
|
+
"Find": "Rechercher",
|
|
44078
|
+
"Replace": "Remplacer",
|
|
44079
|
+
"Case sensitive": "Sensible à la casse",
|
|
44080
|
+
"Whole word": "Mot entier",
|
|
44081
|
+
"Previous": "Précédent",
|
|
44082
|
+
"Next": "Suivant",
|
|
44083
|
+
"Replace All": "Tout remplacer",
|
|
44084
|
+
"Search...": "Rechercher...",
|
|
44085
|
+
"Special Character": "Caractère spécial",
|
|
44086
|
+
"Upload": "Téléverser",
|
|
44087
|
+
"URL": "URL",
|
|
44088
|
+
"Browse...": "Parcourir...",
|
|
44089
|
+
"Drop image here or click to browse": "Déposez l'image ici ou cliquez pour parcourir",
|
|
44090
|
+
"Alt text": "Texte alternatif",
|
|
44091
|
+
"Insert": "Insérer",
|
|
44092
|
+
"Cancel": "Annuler",
|
|
44093
|
+
"Uploading...": "Téléversement...",
|
|
44094
|
+
"Upload failed": "Échec du téléversement",
|
|
44095
|
+
"Invalid image URL": "URL d'image invalide",
|
|
44096
|
+
"File too large": "Fichier trop volumineux",
|
|
44097
|
+
"Invalid file type": "Type de fichier invalide",
|
|
44098
|
+
"More": "Plus"
|
|
44099
|
+
};
|
|
44100
|
+
const de = {
|
|
44101
|
+
"Bold": "Fett",
|
|
44102
|
+
"Italic": "Kursiv",
|
|
44103
|
+
"Underline": "Unterstrichen",
|
|
44104
|
+
"Strikethrough": "Durchgestrichen",
|
|
44105
|
+
"Bullet list": "Aufzählung",
|
|
44106
|
+
"Numbered list": "Nummerierte Liste",
|
|
44107
|
+
"Decrease indent": "Einzug verkleinern",
|
|
44108
|
+
"Increase indent": "Einzug vergrößern",
|
|
44109
|
+
"Blockquote": "Zitat",
|
|
44110
|
+
"Align left": "Linksbündig",
|
|
44111
|
+
"Align center": "Zentriert",
|
|
44112
|
+
"Align right": "Rechtsbündig",
|
|
44113
|
+
"Justify": "Blocksatz",
|
|
44114
|
+
"Text color": "Textfarbe",
|
|
44115
|
+
"Background color": "Hintergrundfarbe",
|
|
44116
|
+
"Remove formatting": "Formatierung entfernen",
|
|
44117
|
+
"Copy": "Kopieren",
|
|
44118
|
+
"Cut": "Ausschneiden",
|
|
44119
|
+
"Paste": "Einfügen",
|
|
44120
|
+
"Undo": "Rückgängig",
|
|
44121
|
+
"Redo": "Wiederherstellen",
|
|
44122
|
+
"Insert image": "Bild einfügen",
|
|
44123
|
+
"Special character": "Sonderzeichen",
|
|
44124
|
+
"Emoticons": "Emoticons",
|
|
44125
|
+
"Fullscreen": "Vollbild",
|
|
44126
|
+
"Preview": "Vorschau",
|
|
44127
|
+
"Source code": "Quellcode",
|
|
44128
|
+
"Insert link": "Link einfügen",
|
|
44129
|
+
"Code sample": "Codebeispiel",
|
|
44130
|
+
"Left to right": "Links nach rechts",
|
|
44131
|
+
"Right to left": "Rechts nach links",
|
|
44132
|
+
"Find and replace": "Suchen und ersetzen",
|
|
44133
|
+
"Font": "Schriftart",
|
|
44134
|
+
"Font size": "Schriftgröße",
|
|
44135
|
+
"Line height": "Zeilenhöhe",
|
|
44136
|
+
"Templates": "Vorlagen",
|
|
44137
|
+
"Apply": "Anwenden",
|
|
44138
|
+
"Enter image URL:": "Bild-URL eingeben:",
|
|
44139
|
+
"Enter URL:": "URL eingeben:",
|
|
44140
|
+
"Edit HTML source:": "HTML-Quellcode bearbeiten:",
|
|
44141
|
+
"Find and Replace": "Suchen und Ersetzen",
|
|
44142
|
+
"Find": "Suchen",
|
|
44143
|
+
"Replace": "Ersetzen",
|
|
44144
|
+
"Case sensitive": "Groß-/Kleinschreibung",
|
|
44145
|
+
"Whole word": "Ganzes Wort",
|
|
44146
|
+
"Previous": "Zurück",
|
|
44147
|
+
"Next": "Weiter",
|
|
44148
|
+
"Replace All": "Alle ersetzen",
|
|
44149
|
+
"Search...": "Suchen...",
|
|
44150
|
+
"Special Character": "Sonderzeichen",
|
|
44151
|
+
"Upload": "Hochladen",
|
|
44152
|
+
"URL": "URL",
|
|
44153
|
+
"Browse...": "Durchsuchen...",
|
|
44154
|
+
"Drop image here or click to browse": "Bild hierher ziehen oder klicken zum Durchsuchen",
|
|
44155
|
+
"Alt text": "Alternativtext",
|
|
44156
|
+
"Insert": "Einfügen",
|
|
44157
|
+
"Cancel": "Abbrechen",
|
|
44158
|
+
"Uploading...": "Wird hochgeladen...",
|
|
44159
|
+
"Upload failed": "Hochladen fehlgeschlagen",
|
|
44160
|
+
"Invalid image URL": "Ungültige Bild-URL",
|
|
44161
|
+
"File too large": "Datei zu groß",
|
|
44162
|
+
"Invalid file type": "Ungültiger Dateityp",
|
|
44163
|
+
"More": "Mehr"
|
|
44164
|
+
};
|
|
44165
|
+
const el = {
|
|
44166
|
+
"Bold": "Έντονα",
|
|
44167
|
+
"Italic": "Πλάγια",
|
|
44168
|
+
"Underline": "Υπογράμμιση",
|
|
44169
|
+
"Strikethrough": "Διαγράμμιση",
|
|
44170
|
+
"Bullet list": "Λίστα με κουκκίδες",
|
|
44171
|
+
"Numbered list": "Αριθμημένη λίστα",
|
|
44172
|
+
"Decrease indent": "Μείωση εσοχής",
|
|
44173
|
+
"Increase indent": "Αύξηση εσοχής",
|
|
44174
|
+
"Blockquote": "Παράθεση",
|
|
44175
|
+
"Align left": "Στοίχιση αριστερά",
|
|
44176
|
+
"Align center": "Κεντράρισμα",
|
|
44177
|
+
"Align right": "Στοίχιση δεξιά",
|
|
44178
|
+
"Justify": "Πλήρης στοίχιση",
|
|
44179
|
+
"Text color": "Χρώμα κειμένου",
|
|
44180
|
+
"Background color": "Χρώμα φόντου",
|
|
44181
|
+
"Remove formatting": "Αφαίρεση μορφοποίησης",
|
|
44182
|
+
"Copy": "Αντιγραφή",
|
|
44183
|
+
"Cut": "Αποκοπή",
|
|
44184
|
+
"Paste": "Επικόλληση",
|
|
44185
|
+
"Undo": "Αναίρεση",
|
|
44186
|
+
"Redo": "Επανάληψη",
|
|
44187
|
+
"Insert image": "Εισαγωγή εικόνας",
|
|
44188
|
+
"Special character": "Ειδικός χαρακτήρας",
|
|
44189
|
+
"Emoticons": "Εικονίδια συναισθημάτων",
|
|
44190
|
+
"Fullscreen": "Πλήρης οθόνη",
|
|
44191
|
+
"Preview": "Προεπισκόπηση",
|
|
44192
|
+
"Source code": "Πηγαίος κώδικας",
|
|
44193
|
+
"Insert link": "Εισαγωγή συνδέσμου",
|
|
44194
|
+
"Code sample": "Δείγμα κώδικα",
|
|
44195
|
+
"Left to right": "Αριστερά προς δεξιά",
|
|
44196
|
+
"Right to left": "Δεξιά προς αριστερά",
|
|
44197
|
+
"Find and replace": "Εύρεση και αντικατάσταση",
|
|
44198
|
+
"Font": "Γραμματοσειρά",
|
|
44199
|
+
"Font size": "Μέγεθος γραμματοσειράς",
|
|
44200
|
+
"Line height": "Ύψος γραμμής",
|
|
44201
|
+
"Templates": "Πρότυπα",
|
|
44202
|
+
"Apply": "Εφαρμογή",
|
|
44203
|
+
"Enter image URL:": "Εισάγετε URL εικόνας:",
|
|
44204
|
+
"Enter URL:": "Εισάγετε URL:",
|
|
44205
|
+
"Edit HTML source:": "Επεξεργασία πηγαίου κώδικα HTML:",
|
|
44206
|
+
"Find and Replace": "Εύρεση και αντικατάσταση",
|
|
44207
|
+
"Find": "Εύρεση",
|
|
44208
|
+
"Replace": "Αντικατάσταση",
|
|
44209
|
+
"Case sensitive": "Διάκριση πεζών-κεφαλαίων",
|
|
44210
|
+
"Whole word": "Ολόκληρη λέξη",
|
|
44211
|
+
"Previous": "Προηγούμενο",
|
|
44212
|
+
"Next": "Επόμενο",
|
|
44213
|
+
"Replace All": "Αντικατάσταση όλων",
|
|
44214
|
+
"Search...": "Αναζήτηση...",
|
|
44215
|
+
"Special Character": "Ειδικός χαρακτήρας",
|
|
44216
|
+
"Upload": "Μεταφόρτωση",
|
|
44217
|
+
"URL": "URL",
|
|
44218
|
+
"Browse...": "Αναζήτηση...",
|
|
44219
|
+
"Drop image here or click to browse": "Σύρτε την εικόνα εδώ ή κάντε κλικ για αναζήτηση",
|
|
44220
|
+
"Alt text": "Εναλλακτικό κείμενο",
|
|
44221
|
+
"Insert": "Εισαγωγή",
|
|
44222
|
+
"Cancel": "Ακύρωση",
|
|
44223
|
+
"Uploading...": "Μεταφόρτωση...",
|
|
44224
|
+
"Upload failed": "Η μεταφόρτωση απέτυχε",
|
|
44225
|
+
"Invalid image URL": "Μη έγκυρο URL εικόνας",
|
|
44226
|
+
"File too large": "Το αρχείο είναι πολύ μεγάλο",
|
|
44227
|
+
"Invalid file type": "Μη έγκυρος τύπος αρχείου",
|
|
44228
|
+
"More": "Περισσότερα"
|
|
44229
|
+
};
|
|
44230
|
+
const hu = {
|
|
44231
|
+
"Bold": "Félkövér",
|
|
44232
|
+
"Italic": "Dőlt",
|
|
44233
|
+
"Underline": "Aláhúzott",
|
|
44234
|
+
"Strikethrough": "Áthúzott",
|
|
44235
|
+
"Bullet list": "Felsorolás",
|
|
44236
|
+
"Numbered list": "Számozott lista",
|
|
44237
|
+
"Decrease indent": "Behúzás csökkentése",
|
|
44238
|
+
"Increase indent": "Behúzás növelése",
|
|
44239
|
+
"Blockquote": "Idézet",
|
|
44240
|
+
"Align left": "Balra igazítás",
|
|
44241
|
+
"Align center": "Középre igazítás",
|
|
44242
|
+
"Align right": "Jobbra igazítás",
|
|
44243
|
+
"Justify": "Sorkizárt",
|
|
44244
|
+
"Text color": "Szöveg színe",
|
|
44245
|
+
"Background color": "Háttérszín",
|
|
44246
|
+
"Remove formatting": "Formázás eltávolítása",
|
|
44247
|
+
"Copy": "Másolás",
|
|
44248
|
+
"Cut": "Kivágás",
|
|
44249
|
+
"Paste": "Beillesztés",
|
|
44250
|
+
"Undo": "Visszavonás",
|
|
44251
|
+
"Redo": "Újra",
|
|
44252
|
+
"Insert image": "Kép beszúrása",
|
|
44253
|
+
"Special character": "Speciális karakter",
|
|
44254
|
+
"Emoticons": "Hangulatjelek",
|
|
44255
|
+
"Fullscreen": "Teljes képernyő",
|
|
44256
|
+
"Preview": "Előnézet",
|
|
44257
|
+
"Source code": "Forráskód",
|
|
44258
|
+
"Insert link": "Hivatkozás beszúrása",
|
|
44259
|
+
"Code sample": "Kódminta",
|
|
44260
|
+
"Left to right": "Balról jobbra",
|
|
44261
|
+
"Right to left": "Jobbról balra",
|
|
44262
|
+
"Find and replace": "Keresés és csere",
|
|
44263
|
+
"Font": "Betűtípus",
|
|
44264
|
+
"Font size": "Betűméret",
|
|
44265
|
+
"Line height": "Sormagasság",
|
|
44266
|
+
"Templates": "Sablonok",
|
|
44267
|
+
"Apply": "Alkalmaz",
|
|
44268
|
+
"Enter image URL:": "Adja meg a kép URL-jét:",
|
|
44269
|
+
"Enter URL:": "Adja meg az URL-t:",
|
|
44270
|
+
"Edit HTML source:": "HTML forráskód szerkesztése:",
|
|
44271
|
+
"Find and Replace": "Keresés és csere",
|
|
44272
|
+
"Find": "Keresés",
|
|
44273
|
+
"Replace": "Csere",
|
|
44274
|
+
"Case sensitive": "Kis- és nagybetű érzékeny",
|
|
44275
|
+
"Whole word": "Teljes szó",
|
|
44276
|
+
"Previous": "Előző",
|
|
44277
|
+
"Next": "Következő",
|
|
44278
|
+
"Replace All": "Összes cseréje",
|
|
44279
|
+
"Search...": "Keresés...",
|
|
44280
|
+
"Special Character": "Speciális karakter",
|
|
44281
|
+
"Upload": "Feltöltés",
|
|
44282
|
+
"URL": "URL",
|
|
44283
|
+
"Browse...": "Tallózás...",
|
|
44284
|
+
"Drop image here or click to browse": "Húzza ide a képet, vagy kattintson a tallózáshoz",
|
|
44285
|
+
"Alt text": "Alternatív szöveg",
|
|
44286
|
+
"Insert": "Beszúrás",
|
|
44287
|
+
"Cancel": "Mégse",
|
|
44288
|
+
"Uploading...": "Feltöltés...",
|
|
44289
|
+
"Upload failed": "A feltöltés sikertelen",
|
|
44290
|
+
"Invalid image URL": "Érvénytelen kép URL",
|
|
44291
|
+
"File too large": "A fájl túl nagy",
|
|
44292
|
+
"Invalid file type": "Érvénytelen fájltípus",
|
|
44293
|
+
"More": "Több"
|
|
44294
|
+
};
|
|
44295
|
+
const id = {
|
|
44296
|
+
"Bold": "Tebal",
|
|
44297
|
+
"Italic": "Miring",
|
|
44298
|
+
"Underline": "Garis bawah",
|
|
44299
|
+
"Strikethrough": "Coret",
|
|
44300
|
+
"Bullet list": "Daftar berpoin",
|
|
44301
|
+
"Numbered list": "Daftar bernomor",
|
|
44302
|
+
"Decrease indent": "Kurangi indentasi",
|
|
44303
|
+
"Increase indent": "Tambah indentasi",
|
|
44304
|
+
"Blockquote": "Kutipan",
|
|
44305
|
+
"Align left": "Rata kiri",
|
|
44306
|
+
"Align center": "Rata tengah",
|
|
44307
|
+
"Align right": "Rata kanan",
|
|
44308
|
+
"Justify": "Rata kiri-kanan",
|
|
44309
|
+
"Text color": "Warna teks",
|
|
44310
|
+
"Background color": "Warna latar belakang",
|
|
44311
|
+
"Remove formatting": "Hapus pemformatan",
|
|
44312
|
+
"Copy": "Salin",
|
|
44313
|
+
"Cut": "Potong",
|
|
44314
|
+
"Paste": "Tempel",
|
|
44315
|
+
"Undo": "Batalkan",
|
|
44316
|
+
"Redo": "Ulangi",
|
|
44317
|
+
"Insert image": "Sisipkan gambar",
|
|
44318
|
+
"Special character": "Karakter khusus",
|
|
44319
|
+
"Emoticons": "Emotikon",
|
|
44320
|
+
"Fullscreen": "Layar penuh",
|
|
44321
|
+
"Preview": "Pratinjau",
|
|
44322
|
+
"Source code": "Kode sumber",
|
|
44323
|
+
"Insert link": "Sisipkan tautan",
|
|
44324
|
+
"Code sample": "Contoh kode",
|
|
44325
|
+
"Left to right": "Kiri ke kanan",
|
|
44326
|
+
"Right to left": "Kanan ke kiri",
|
|
44327
|
+
"Find and replace": "Cari dan ganti",
|
|
44328
|
+
"Font": "Font",
|
|
44329
|
+
"Font size": "Ukuran font",
|
|
44330
|
+
"Line height": "Tinggi baris",
|
|
44331
|
+
"Templates": "Templat",
|
|
44332
|
+
"Apply": "Terapkan",
|
|
44333
|
+
"Enter image URL:": "Masukkan URL gambar:",
|
|
44334
|
+
"Enter URL:": "Masukkan URL:",
|
|
44335
|
+
"Edit HTML source:": "Edit kode sumber HTML:",
|
|
44336
|
+
"Find and Replace": "Cari dan ganti",
|
|
44337
|
+
"Find": "Cari",
|
|
44338
|
+
"Replace": "Ganti",
|
|
44339
|
+
"Case sensitive": "Peka huruf besar/kecil",
|
|
44340
|
+
"Whole word": "Kata utuh",
|
|
44341
|
+
"Previous": "Sebelumnya",
|
|
44342
|
+
"Next": "Berikutnya",
|
|
44343
|
+
"Replace All": "Ganti semua",
|
|
44344
|
+
"Search...": "Cari...",
|
|
44345
|
+
"Special Character": "Karakter khusus",
|
|
44346
|
+
"Upload": "Unggah",
|
|
44347
|
+
"URL": "URL",
|
|
44348
|
+
"Browse...": "Telusuri...",
|
|
44349
|
+
"Drop image here or click to browse": "Seret gambar ke sini atau klik untuk menelusuri",
|
|
44350
|
+
"Alt text": "Teks alternatif",
|
|
44351
|
+
"Insert": "Sisipkan",
|
|
44352
|
+
"Cancel": "Batal",
|
|
44353
|
+
"Uploading...": "Mengunggah...",
|
|
44354
|
+
"Upload failed": "Gagal mengunggah",
|
|
44355
|
+
"Invalid image URL": "URL gambar tidak valid",
|
|
44356
|
+
"File too large": "File terlalu besar",
|
|
44357
|
+
"Invalid file type": "Jenis file tidak valid",
|
|
44358
|
+
"More": "Lainnya"
|
|
44359
|
+
};
|
|
44360
|
+
const it = {
|
|
44361
|
+
"Bold": "Grassetto",
|
|
44362
|
+
"Italic": "Corsivo",
|
|
44363
|
+
"Underline": "Sottolineato",
|
|
44364
|
+
"Strikethrough": "Barrato",
|
|
44365
|
+
"Bullet list": "Elenco puntato",
|
|
44366
|
+
"Numbered list": "Elenco numerato",
|
|
44367
|
+
"Decrease indent": "Riduci rientro",
|
|
44368
|
+
"Increase indent": "Aumenta rientro",
|
|
44369
|
+
"Blockquote": "Citazione",
|
|
44370
|
+
"Align left": "Allinea a sinistra",
|
|
44371
|
+
"Align center": "Centra",
|
|
44372
|
+
"Align right": "Allinea a destra",
|
|
44373
|
+
"Justify": "Giustifica",
|
|
44374
|
+
"Text color": "Colore testo",
|
|
44375
|
+
"Background color": "Colore sfondo",
|
|
44376
|
+
"Remove formatting": "Rimuovi formattazione",
|
|
44377
|
+
"Copy": "Copia",
|
|
44378
|
+
"Cut": "Taglia",
|
|
44379
|
+
"Paste": "Incolla",
|
|
44380
|
+
"Undo": "Annulla",
|
|
44381
|
+
"Redo": "Ripristina",
|
|
44382
|
+
"Insert image": "Inserisci immagine",
|
|
44383
|
+
"Special character": "Carattere speciale",
|
|
44384
|
+
"Emoticons": "Emoticon",
|
|
44385
|
+
"Fullscreen": "Schermo intero",
|
|
44386
|
+
"Preview": "Anteprima",
|
|
44387
|
+
"Source code": "Codice sorgente",
|
|
44388
|
+
"Insert link": "Inserisci collegamento",
|
|
44389
|
+
"Code sample": "Esempio di codice",
|
|
44390
|
+
"Left to right": "Da sinistra a destra",
|
|
44391
|
+
"Right to left": "Da destra a sinistra",
|
|
44392
|
+
"Find and replace": "Trova e sostituisci",
|
|
44393
|
+
"Font": "Carattere",
|
|
44394
|
+
"Font size": "Dimensione carattere",
|
|
44395
|
+
"Line height": "Altezza riga",
|
|
44396
|
+
"Templates": "Modelli",
|
|
44397
|
+
"Apply": "Applica",
|
|
44398
|
+
"Enter image URL:": "Inserisci URL immagine:",
|
|
44399
|
+
"Enter URL:": "Inserisci URL:",
|
|
44400
|
+
"Edit HTML source:": "Modifica codice sorgente HTML:",
|
|
44401
|
+
"Find and Replace": "Trova e sostituisci",
|
|
44402
|
+
"Find": "Trova",
|
|
44403
|
+
"Replace": "Sostituisci",
|
|
44404
|
+
"Case sensitive": "Maiuscole/minuscole",
|
|
44405
|
+
"Whole word": "Parola intera",
|
|
44406
|
+
"Previous": "Precedente",
|
|
44407
|
+
"Next": "Successivo",
|
|
44408
|
+
"Replace All": "Sostituisci tutto",
|
|
44409
|
+
"Search...": "Cerca...",
|
|
44410
|
+
"Special Character": "Carattere speciale",
|
|
44411
|
+
"Upload": "Carica",
|
|
44412
|
+
"URL": "URL",
|
|
44413
|
+
"Browse...": "Sfoglia...",
|
|
44414
|
+
"Drop image here or click to browse": "Trascina l'immagine qui o fai clic per sfogliare",
|
|
44415
|
+
"Alt text": "Testo alternativo",
|
|
44416
|
+
"Insert": "Inserisci",
|
|
44417
|
+
"Cancel": "Annulla",
|
|
44418
|
+
"Uploading...": "Caricamento...",
|
|
44419
|
+
"Upload failed": "Caricamento fallito",
|
|
44420
|
+
"Invalid image URL": "URL immagine non valido",
|
|
44421
|
+
"File too large": "File troppo grande",
|
|
44422
|
+
"Invalid file type": "Tipo di file non valido",
|
|
44423
|
+
"More": "Altro"
|
|
44424
|
+
};
|
|
44425
|
+
const ja = {
|
|
44426
|
+
"Bold": "太字",
|
|
44427
|
+
"Italic": "斜体",
|
|
44428
|
+
"Underline": "下線",
|
|
44429
|
+
"Strikethrough": "取り消し線",
|
|
44430
|
+
"Bullet list": "箇条書き",
|
|
44431
|
+
"Numbered list": "番号付きリスト",
|
|
44432
|
+
"Decrease indent": "インデント解除",
|
|
44433
|
+
"Increase indent": "インデント",
|
|
44434
|
+
"Blockquote": "引用",
|
|
44435
|
+
"Align left": "左揃え",
|
|
44436
|
+
"Align center": "中央揃え",
|
|
44437
|
+
"Align right": "右揃え",
|
|
44438
|
+
"Justify": "両端揃え",
|
|
44439
|
+
"Text color": "文字色",
|
|
44440
|
+
"Background color": "背景色",
|
|
44441
|
+
"Remove formatting": "書式のクリア",
|
|
44442
|
+
"Copy": "コピー",
|
|
44443
|
+
"Cut": "切り取り",
|
|
44444
|
+
"Paste": "貼り付け",
|
|
44445
|
+
"Undo": "元に戻す",
|
|
44446
|
+
"Redo": "やり直し",
|
|
44447
|
+
"Insert image": "画像の挿入",
|
|
44448
|
+
"Special character": "特殊文字",
|
|
44449
|
+
"Emoticons": "絵文字",
|
|
44450
|
+
"Fullscreen": "全画面",
|
|
44451
|
+
"Preview": "プレビュー",
|
|
44452
|
+
"Source code": "ソースコード",
|
|
44453
|
+
"Insert link": "リンクの挿入",
|
|
44454
|
+
"Code sample": "コードサンプル",
|
|
44455
|
+
"Left to right": "左から右",
|
|
44456
|
+
"Right to left": "右から左",
|
|
44457
|
+
"Find and replace": "検索と置換",
|
|
44458
|
+
"Font": "フォント",
|
|
44459
|
+
"Font size": "フォントサイズ",
|
|
44460
|
+
"Line height": "行の高さ",
|
|
44461
|
+
"Templates": "テンプレート",
|
|
44462
|
+
"Apply": "適用",
|
|
44463
|
+
"Enter image URL:": "画像のURLを入力:",
|
|
44464
|
+
"Enter URL:": "URLを入力:",
|
|
44465
|
+
"Edit HTML source:": "HTMLソースを編集:",
|
|
44466
|
+
"Find and Replace": "検索と置換",
|
|
44467
|
+
"Find": "検索",
|
|
44468
|
+
"Replace": "置換",
|
|
44469
|
+
"Case sensitive": "大文字小文字を区別",
|
|
44470
|
+
"Whole word": "単語全体",
|
|
44471
|
+
"Previous": "前へ",
|
|
44472
|
+
"Next": "次へ",
|
|
44473
|
+
"Replace All": "すべて置換",
|
|
44474
|
+
"Search...": "検索...",
|
|
44475
|
+
"Special Character": "特殊文字",
|
|
44476
|
+
"Upload": "アップロード",
|
|
44477
|
+
"URL": "URL",
|
|
44478
|
+
"Browse...": "参照...",
|
|
44479
|
+
"Drop image here or click to browse": "画像をここにドロップするかクリックして参照",
|
|
44480
|
+
"Alt text": "代替テキスト",
|
|
44481
|
+
"Insert": "挿入",
|
|
44482
|
+
"Cancel": "キャンセル",
|
|
44483
|
+
"Uploading...": "アップロード中...",
|
|
44484
|
+
"Upload failed": "アップロードに失敗しました",
|
|
44485
|
+
"Invalid image URL": "無効な画像URL",
|
|
44486
|
+
"File too large": "ファイルが大きすぎます",
|
|
44487
|
+
"Invalid file type": "無効なファイル形式",
|
|
44488
|
+
"More": "もっと見る"
|
|
44489
|
+
};
|
|
44490
|
+
const ko = {
|
|
44491
|
+
"Bold": "굵게",
|
|
44492
|
+
"Italic": "기울임꼴",
|
|
44493
|
+
"Underline": "밑줄",
|
|
44494
|
+
"Strikethrough": "취소선",
|
|
44495
|
+
"Bullet list": "글머리 기호 목록",
|
|
44496
|
+
"Numbered list": "번호 매기기 목록",
|
|
44497
|
+
"Decrease indent": "내어쓰기",
|
|
44498
|
+
"Increase indent": "들여쓰기",
|
|
44499
|
+
"Blockquote": "인용구",
|
|
44500
|
+
"Align left": "왼쪽 맞춤",
|
|
44501
|
+
"Align center": "가운데 맞춤",
|
|
44502
|
+
"Align right": "오른쪽 맞춤",
|
|
44503
|
+
"Justify": "양쪽 맞춤",
|
|
44504
|
+
"Text color": "글자 색",
|
|
44505
|
+
"Background color": "배경색",
|
|
44506
|
+
"Remove formatting": "서식 제거",
|
|
44507
|
+
"Copy": "복사",
|
|
44508
|
+
"Cut": "잘라내기",
|
|
44509
|
+
"Paste": "붙여넣기",
|
|
44510
|
+
"Undo": "실행 취소",
|
|
44511
|
+
"Redo": "다시 실행",
|
|
44512
|
+
"Insert image": "이미지 삽입",
|
|
44513
|
+
"Special character": "특수 문자",
|
|
44514
|
+
"Emoticons": "이모티콘",
|
|
44515
|
+
"Fullscreen": "전체 화면",
|
|
44516
|
+
"Preview": "미리보기",
|
|
44517
|
+
"Source code": "소스 코드",
|
|
44518
|
+
"Insert link": "링크 삽입",
|
|
44519
|
+
"Code sample": "코드 샘플",
|
|
44520
|
+
"Left to right": "왼쪽에서 오른쪽",
|
|
44521
|
+
"Right to left": "오른쪽에서 왼쪽",
|
|
44522
|
+
"Find and replace": "찾기 및 바꾸기",
|
|
44523
|
+
"Font": "글꼴",
|
|
44524
|
+
"Font size": "글꼴 크기",
|
|
44525
|
+
"Line height": "줄 높이",
|
|
44526
|
+
"Templates": "템플릿",
|
|
44527
|
+
"Apply": "적용",
|
|
44528
|
+
"Enter image URL:": "이미지 URL 입력:",
|
|
44529
|
+
"Enter URL:": "URL 입력:",
|
|
44530
|
+
"Edit HTML source:": "HTML 소스 편집:",
|
|
44531
|
+
"Find and Replace": "찾기 및 바꾸기",
|
|
44532
|
+
"Find": "찾기",
|
|
44533
|
+
"Replace": "바꾸기",
|
|
44534
|
+
"Case sensitive": "대/소문자 구분",
|
|
44535
|
+
"Whole word": "단어 단위",
|
|
44536
|
+
"Previous": "이전",
|
|
44537
|
+
"Next": "다음",
|
|
44538
|
+
"Replace All": "모두 바꾸기",
|
|
44539
|
+
"Search...": "검색...",
|
|
44540
|
+
"Special Character": "특수 문자",
|
|
44541
|
+
"Upload": "업로드",
|
|
44542
|
+
"URL": "URL",
|
|
44543
|
+
"Browse...": "찾아보기...",
|
|
44544
|
+
"Drop image here or click to browse": "이미지를 여기에 끌어다 놓거나 클릭하여 찾아보기",
|
|
44545
|
+
"Alt text": "대체 텍스트",
|
|
44546
|
+
"Insert": "삽입",
|
|
44547
|
+
"Cancel": "취소",
|
|
44548
|
+
"Uploading...": "업로드 중...",
|
|
44549
|
+
"Upload failed": "업로드 실패",
|
|
44550
|
+
"Invalid image URL": "잘못된 이미지 URL",
|
|
44551
|
+
"File too large": "파일이 너무 큽니다",
|
|
44552
|
+
"Invalid file type": "잘못된 파일 형식",
|
|
44553
|
+
"More": "더 보기"
|
|
44554
|
+
};
|
|
44555
|
+
const nl = {
|
|
44556
|
+
"Bold": "Vet",
|
|
44557
|
+
"Italic": "Cursief",
|
|
44558
|
+
"Underline": "Onderstreept",
|
|
44559
|
+
"Strikethrough": "Doorgehaald",
|
|
44560
|
+
"Bullet list": "Opsommingslijst",
|
|
44561
|
+
"Numbered list": "Genummerde lijst",
|
|
44562
|
+
"Decrease indent": "Inspringing verkleinen",
|
|
44563
|
+
"Increase indent": "Inspringing vergroten",
|
|
44564
|
+
"Blockquote": "Citaat",
|
|
44565
|
+
"Align left": "Links uitlijnen",
|
|
44566
|
+
"Align center": "Centreren",
|
|
44567
|
+
"Align right": "Rechts uitlijnen",
|
|
44568
|
+
"Justify": "Uitvullen",
|
|
44569
|
+
"Text color": "Tekstkleur",
|
|
44570
|
+
"Background color": "Achtergrondkleur",
|
|
44571
|
+
"Remove formatting": "Opmaak verwijderen",
|
|
44572
|
+
"Copy": "Kopiëren",
|
|
44573
|
+
"Cut": "Knippen",
|
|
44574
|
+
"Paste": "Plakken",
|
|
44575
|
+
"Undo": "Ongedaan maken",
|
|
44576
|
+
"Redo": "Opnieuw",
|
|
44577
|
+
"Insert image": "Afbeelding invoegen",
|
|
44578
|
+
"Special character": "Speciaal teken",
|
|
44579
|
+
"Emoticons": "Emoticons",
|
|
44580
|
+
"Fullscreen": "Volledig scherm",
|
|
44581
|
+
"Preview": "Voorbeeld",
|
|
44582
|
+
"Source code": "Broncode",
|
|
44583
|
+
"Insert link": "Link invoegen",
|
|
44584
|
+
"Code sample": "Codevoorbeeld",
|
|
44585
|
+
"Left to right": "Links naar rechts",
|
|
44586
|
+
"Right to left": "Rechts naar links",
|
|
44587
|
+
"Find and replace": "Zoeken en vervangen",
|
|
44588
|
+
"Font": "Lettertype",
|
|
44589
|
+
"Font size": "Lettergrootte",
|
|
44590
|
+
"Line height": "Regelhoogte",
|
|
44591
|
+
"Templates": "Sjablonen",
|
|
44592
|
+
"Apply": "Toepassen",
|
|
44593
|
+
"Enter image URL:": "Voer afbeeldings-URL in:",
|
|
44594
|
+
"Enter URL:": "Voer URL in:",
|
|
44595
|
+
"Edit HTML source:": "HTML-bron bewerken:",
|
|
44596
|
+
"Find and Replace": "Zoeken en vervangen",
|
|
44597
|
+
"Find": "Zoeken",
|
|
44598
|
+
"Replace": "Vervangen",
|
|
44599
|
+
"Case sensitive": "Hoofdlettergevoelig",
|
|
44600
|
+
"Whole word": "Heel woord",
|
|
44601
|
+
"Previous": "Vorige",
|
|
44602
|
+
"Next": "Volgende",
|
|
44603
|
+
"Replace All": "Alles vervangen",
|
|
44604
|
+
"Search...": "Zoeken...",
|
|
44605
|
+
"Special Character": "Speciaal teken",
|
|
44606
|
+
"Upload": "Uploaden",
|
|
44607
|
+
"URL": "URL",
|
|
44608
|
+
"Browse...": "Bladeren...",
|
|
44609
|
+
"Drop image here or click to browse": "Sleep afbeelding hierheen of klik om te bladeren",
|
|
44610
|
+
"Alt text": "Alt-tekst",
|
|
44611
|
+
"Insert": "Invoegen",
|
|
44612
|
+
"Cancel": "Annuleren",
|
|
44613
|
+
"Uploading...": "Uploaden...",
|
|
44614
|
+
"Upload failed": "Upload mislukt",
|
|
44615
|
+
"Invalid image URL": "Ongeldige afbeeldings-URL",
|
|
44616
|
+
"File too large": "Bestand te groot",
|
|
44617
|
+
"Invalid file type": "Ongeldig bestandstype",
|
|
44618
|
+
"More": "Meer"
|
|
44619
|
+
};
|
|
44620
|
+
const nb = {
|
|
44621
|
+
"Bold": "Fet",
|
|
44622
|
+
"Italic": "Kursiv",
|
|
44623
|
+
"Underline": "Understreket",
|
|
44624
|
+
"Strikethrough": "Gjennomstreket",
|
|
44625
|
+
"Bullet list": "Punktliste",
|
|
44626
|
+
"Numbered list": "Nummerert liste",
|
|
44627
|
+
"Decrease indent": "Reduser innrykk",
|
|
44628
|
+
"Increase indent": "Øk innrykk",
|
|
44629
|
+
"Blockquote": "Blokksitat",
|
|
44630
|
+
"Align left": "Venstrejuster",
|
|
44631
|
+
"Align center": "Midtstill",
|
|
44632
|
+
"Align right": "Høyrejuster",
|
|
44633
|
+
"Justify": "Blokkjuster",
|
|
44634
|
+
"Text color": "Tekstfarge",
|
|
44635
|
+
"Background color": "Bakgrunnsfarge",
|
|
44636
|
+
"Remove formatting": "Fjern formatering",
|
|
44637
|
+
"Copy": "Kopier",
|
|
44638
|
+
"Cut": "Klipp ut",
|
|
44639
|
+
"Paste": "Lim inn",
|
|
44640
|
+
"Undo": "Angre",
|
|
44641
|
+
"Redo": "Gjør om",
|
|
44642
|
+
"Insert image": "Sett inn bilde",
|
|
44643
|
+
"Special character": "Spesialtegn",
|
|
44644
|
+
"Emoticons": "Humørifjes",
|
|
44645
|
+
"Fullscreen": "Fullskjerm",
|
|
44646
|
+
"Preview": "Forhåndsvisning",
|
|
44647
|
+
"Source code": "Kildekode",
|
|
44648
|
+
"Insert link": "Sett inn lenke",
|
|
44649
|
+
"Code sample": "Kodeeksempel",
|
|
44650
|
+
"Left to right": "Venstre mot høyre",
|
|
44651
|
+
"Right to left": "Høyre mot venstre",
|
|
44652
|
+
"Find and replace": "Søk og erstatt",
|
|
44653
|
+
"Font": "Skrifttype",
|
|
44654
|
+
"Font size": "Skriftstørrelse",
|
|
44655
|
+
"Line height": "Linjehøyde",
|
|
44656
|
+
"Templates": "Maler",
|
|
44657
|
+
"Apply": "Bruk",
|
|
44658
|
+
"Enter image URL:": "Skriv inn bilde-URL:",
|
|
44659
|
+
"Enter URL:": "Skriv inn URL:",
|
|
44660
|
+
"Edit HTML source:": "Rediger HTML-kilde:",
|
|
44661
|
+
"Find and Replace": "Søk og erstatt",
|
|
44662
|
+
"Find": "Søk",
|
|
44663
|
+
"Replace": "Erstatt",
|
|
44664
|
+
"Case sensitive": "Skille mellom store/små bokstaver",
|
|
44665
|
+
"Whole word": "Helt ord",
|
|
44666
|
+
"Previous": "Forrige",
|
|
44667
|
+
"Next": "Neste",
|
|
44668
|
+
"Replace All": "Erstatt alle",
|
|
44669
|
+
"Search...": "Søk...",
|
|
44670
|
+
"Special Character": "Spesialtegn",
|
|
44671
|
+
"Upload": "Last opp",
|
|
44672
|
+
"URL": "URL",
|
|
44673
|
+
"Browse...": "Bla gjennom...",
|
|
44674
|
+
"Drop image here or click to browse": "Slipp bildet her eller klikk for å bla gjennom",
|
|
44675
|
+
"Alt text": "Alternativ tekst",
|
|
44676
|
+
"Insert": "Sett inn",
|
|
44677
|
+
"Cancel": "Avbryt",
|
|
44678
|
+
"Uploading...": "Laster opp...",
|
|
44679
|
+
"Upload failed": "Opplasting mislyktes",
|
|
44680
|
+
"Invalid image URL": "Ugyldig bilde-URL",
|
|
44681
|
+
"File too large": "Filen er for stor",
|
|
44682
|
+
"Invalid file type": "Ugyldig filtype",
|
|
44683
|
+
"More": "Mer"
|
|
44684
|
+
};
|
|
44685
|
+
const pl = {
|
|
44686
|
+
"Bold": "Pogrubienie",
|
|
44687
|
+
"Italic": "Kursywa",
|
|
44688
|
+
"Underline": "Podkreślenie",
|
|
44689
|
+
"Strikethrough": "Przekreślenie",
|
|
44690
|
+
"Bullet list": "Lista punktowana",
|
|
44691
|
+
"Numbered list": "Lista numerowana",
|
|
44692
|
+
"Decrease indent": "Zmniejsz wcięcie",
|
|
44693
|
+
"Increase indent": "Zwiększ wcięcie",
|
|
44694
|
+
"Blockquote": "Cytat blokowy",
|
|
44695
|
+
"Align left": "Wyrównaj do lewej",
|
|
44696
|
+
"Align center": "Wyśrodkuj",
|
|
44697
|
+
"Align right": "Wyrównaj do prawej",
|
|
44698
|
+
"Justify": "Wyjustuj",
|
|
44699
|
+
"Text color": "Kolor tekstu",
|
|
44700
|
+
"Background color": "Kolor tła",
|
|
44701
|
+
"Remove formatting": "Usuń formatowanie",
|
|
44702
|
+
"Copy": "Kopiuj",
|
|
44703
|
+
"Cut": "Wytnij",
|
|
44704
|
+
"Paste": "Wklej",
|
|
44705
|
+
"Undo": "Cofnij",
|
|
44706
|
+
"Redo": "Ponów",
|
|
44707
|
+
"Insert image": "Wstaw obraz",
|
|
44708
|
+
"Special character": "Znak specjalny",
|
|
44709
|
+
"Emoticons": "Emotikony",
|
|
44710
|
+
"Fullscreen": "Pełny ekran",
|
|
44711
|
+
"Preview": "Podgląd",
|
|
44712
|
+
"Source code": "Kod źródłowy",
|
|
44713
|
+
"Insert link": "Wstaw odnośnik",
|
|
44714
|
+
"Code sample": "Przykład kodu",
|
|
44715
|
+
"Left to right": "Od lewej do prawej",
|
|
44716
|
+
"Right to left": "Od prawej do lewej",
|
|
44717
|
+
"Find and replace": "Znajdź i zamień",
|
|
44718
|
+
"Font": "Czcionka",
|
|
44719
|
+
"Font size": "Rozmiar czcionki",
|
|
44720
|
+
"Line height": "Wysokość wiersza",
|
|
44721
|
+
"Templates": "Szablony",
|
|
44722
|
+
"Apply": "Zastosuj",
|
|
44723
|
+
"Enter image URL:": "Wprowadź adres URL obrazu:",
|
|
44724
|
+
"Enter URL:": "Wprowadź adres URL:",
|
|
44725
|
+
"Edit HTML source:": "Edytuj źródło HTML:",
|
|
44726
|
+
"Find and Replace": "Znajdź i zamień",
|
|
44727
|
+
"Find": "Znajdź",
|
|
44728
|
+
"Replace": "Zamień",
|
|
44729
|
+
"Case sensitive": "Rozróżniaj wielkość liter",
|
|
44730
|
+
"Whole word": "Całe słowo",
|
|
44731
|
+
"Previous": "Poprzedni",
|
|
44732
|
+
"Next": "Następny",
|
|
44733
|
+
"Replace All": "Zamień wszystko",
|
|
44734
|
+
"Search...": "Szukaj...",
|
|
44735
|
+
"Special Character": "Znak specjalny",
|
|
44736
|
+
"Upload": "Prześlij",
|
|
44737
|
+
"URL": "URL",
|
|
44738
|
+
"Browse...": "Przeglądaj...",
|
|
44739
|
+
"Drop image here or click to browse": "Przeciągnij obraz tutaj lub kliknij, aby przeglądać",
|
|
44740
|
+
"Alt text": "Tekst alternatywny",
|
|
44741
|
+
"Insert": "Wstaw",
|
|
44742
|
+
"Cancel": "Anuluj",
|
|
44743
|
+
"Uploading...": "Przesyłanie...",
|
|
44744
|
+
"Upload failed": "Przesyłanie nie powiodło się",
|
|
44745
|
+
"Invalid image URL": "Nieprawidłowy URL obrazu",
|
|
44746
|
+
"File too large": "Plik jest za duży",
|
|
44747
|
+
"Invalid file type": "Nieprawidłowy typ pliku",
|
|
44748
|
+
"More": "Więcej"
|
|
44749
|
+
};
|
|
44750
|
+
const pt = {
|
|
44751
|
+
"Bold": "Negrito",
|
|
44752
|
+
"Italic": "Itálico",
|
|
44753
|
+
"Underline": "Sublinhado",
|
|
44754
|
+
"Strikethrough": "Riscado",
|
|
44755
|
+
"Bullet list": "Lista com marcadores",
|
|
44756
|
+
"Numbered list": "Lista numerada",
|
|
44757
|
+
"Decrease indent": "Diminuir recuo",
|
|
44758
|
+
"Increase indent": "Aumentar recuo",
|
|
44759
|
+
"Blockquote": "Citação",
|
|
44760
|
+
"Align left": "Alinhar à esquerda",
|
|
44761
|
+
"Align center": "Centralizar",
|
|
44762
|
+
"Align right": "Alinhar à direita",
|
|
44763
|
+
"Justify": "Justificar",
|
|
44764
|
+
"Text color": "Cor do texto",
|
|
44765
|
+
"Background color": "Cor de fundo",
|
|
44766
|
+
"Remove formatting": "Remover formatação",
|
|
44767
|
+
"Copy": "Copiar",
|
|
44768
|
+
"Cut": "Cortar",
|
|
44769
|
+
"Paste": "Colar",
|
|
44770
|
+
"Undo": "Desfazer",
|
|
44771
|
+
"Redo": "Refazer",
|
|
44772
|
+
"Insert image": "Inserir imagem",
|
|
44773
|
+
"Special character": "Caractere especial",
|
|
44774
|
+
"Emoticons": "Emoticons",
|
|
44775
|
+
"Fullscreen": "Tela cheia",
|
|
44776
|
+
"Preview": "Pré-visualização",
|
|
44777
|
+
"Source code": "Código fonte",
|
|
44778
|
+
"Insert link": "Inserir link",
|
|
44779
|
+
"Code sample": "Exemplo de código",
|
|
44780
|
+
"Left to right": "Esquerda para a direita",
|
|
44781
|
+
"Right to left": "Direita para a esquerda",
|
|
44782
|
+
"Find and replace": "Localizar e substituir",
|
|
44783
|
+
"Font": "Fonte",
|
|
44784
|
+
"Font size": "Tamanho da fonte",
|
|
44785
|
+
"Line height": "Altura da linha",
|
|
44786
|
+
"Templates": "Modelos",
|
|
44787
|
+
"Apply": "Aplicar",
|
|
44788
|
+
"Enter image URL:": "Insira o URL da imagem:",
|
|
44789
|
+
"Enter URL:": "Insira o URL:",
|
|
44790
|
+
"Edit HTML source:": "Editar código fonte HTML:",
|
|
44791
|
+
"Find and Replace": "Localizar e substituir",
|
|
44792
|
+
"Find": "Localizar",
|
|
44793
|
+
"Replace": "Substituir",
|
|
44794
|
+
"Case sensitive": "Diferenciar maiúsculas/minúsculas",
|
|
44795
|
+
"Whole word": "Palavra inteira",
|
|
44796
|
+
"Previous": "Anterior",
|
|
44797
|
+
"Next": "Próximo",
|
|
44798
|
+
"Replace All": "Substituir tudo",
|
|
44799
|
+
"Search...": "Pesquisar...",
|
|
44800
|
+
"Special Character": "Caractere especial",
|
|
44801
|
+
"Upload": "Carregar",
|
|
44802
|
+
"URL": "URL",
|
|
44803
|
+
"Browse...": "Procurar...",
|
|
44804
|
+
"Drop image here or click to browse": "Arraste a imagem aqui ou clique para procurar",
|
|
44805
|
+
"Alt text": "Texto alternativo",
|
|
44806
|
+
"Insert": "Inserir",
|
|
44807
|
+
"Cancel": "Cancelar",
|
|
44808
|
+
"Uploading...": "Carregando...",
|
|
44809
|
+
"Upload failed": "Falha no carregamento",
|
|
44810
|
+
"Invalid image URL": "URL de imagem inválido",
|
|
44811
|
+
"File too large": "Arquivo muito grande",
|
|
44812
|
+
"Invalid file type": "Tipo de arquivo inválido",
|
|
44813
|
+
"More": "Mais"
|
|
44814
|
+
};
|
|
44815
|
+
const ro = {
|
|
44816
|
+
"Bold": "Îngroșat",
|
|
44817
|
+
"Italic": "Cursiv",
|
|
44818
|
+
"Underline": "Subliniat",
|
|
44819
|
+
"Strikethrough": "Tăiat",
|
|
44820
|
+
"Bullet list": "Listă cu marcatori",
|
|
44821
|
+
"Numbered list": "Listă numerotată",
|
|
44822
|
+
"Decrease indent": "Micșorare indentare",
|
|
44823
|
+
"Increase indent": "Mărire indentare",
|
|
44824
|
+
"Blockquote": "Citat",
|
|
44825
|
+
"Align left": "Aliniere la stânga",
|
|
44826
|
+
"Align center": "Centrare",
|
|
44827
|
+
"Align right": "Aliniere la dreapta",
|
|
44828
|
+
"Justify": "Aliniere stânga-dreapta",
|
|
44829
|
+
"Text color": "Culoare text",
|
|
44830
|
+
"Background color": "Culoare fundal",
|
|
44831
|
+
"Remove formatting": "Eliminare formatare",
|
|
44832
|
+
"Copy": "Copiere",
|
|
44833
|
+
"Cut": "Decupare",
|
|
44834
|
+
"Paste": "Lipire",
|
|
44835
|
+
"Undo": "Anulare",
|
|
44836
|
+
"Redo": "Refacere",
|
|
44837
|
+
"Insert image": "Inserare imagine",
|
|
44838
|
+
"Special character": "Caracter special",
|
|
44839
|
+
"Emoticons": "Emoticoane",
|
|
44840
|
+
"Fullscreen": "Ecran complet",
|
|
44841
|
+
"Preview": "Previzualizare",
|
|
44842
|
+
"Source code": "Cod sursă",
|
|
44843
|
+
"Insert link": "Inserare link",
|
|
44844
|
+
"Code sample": "Exemplu de cod",
|
|
44845
|
+
"Left to right": "De la stânga la dreapta",
|
|
44846
|
+
"Right to left": "De la dreapta la stânga",
|
|
44847
|
+
"Find and replace": "Căutare și înlocuire",
|
|
44848
|
+
"Font": "Font",
|
|
44849
|
+
"Font size": "Dimensiune font",
|
|
44850
|
+
"Line height": "Înălțime linie",
|
|
44851
|
+
"Templates": "Șabloane",
|
|
44852
|
+
"Apply": "Aplicare",
|
|
44853
|
+
"Enter image URL:": "Introduceți URL-ul imaginii:",
|
|
44854
|
+
"Enter URL:": "Introduceți URL-ul:",
|
|
44855
|
+
"Edit HTML source:": "Editare sursă HTML:",
|
|
44856
|
+
"Find and Replace": "Căutare și înlocuire",
|
|
44857
|
+
"Find": "Căutare",
|
|
44858
|
+
"Replace": "Înlocuire",
|
|
44859
|
+
"Case sensitive": "Sensibil la majuscule",
|
|
44860
|
+
"Whole word": "Cuvânt întreg",
|
|
44861
|
+
"Previous": "Anterior",
|
|
44862
|
+
"Next": "Următor",
|
|
44863
|
+
"Replace All": "Înlocuire totală",
|
|
44864
|
+
"Search...": "Căutare...",
|
|
44865
|
+
"Special Character": "Caracter special",
|
|
44866
|
+
"Upload": "Încarcă",
|
|
44867
|
+
"URL": "URL",
|
|
44868
|
+
"Browse...": "Răsfoiește...",
|
|
44869
|
+
"Drop image here or click to browse": "Trage imaginea aici sau dă clic pentru a răsfoi",
|
|
44870
|
+
"Alt text": "Text alternativ",
|
|
44871
|
+
"Insert": "Inserează",
|
|
44872
|
+
"Cancel": "Anulează",
|
|
44873
|
+
"Uploading...": "Se încarcă...",
|
|
44874
|
+
"Upload failed": "Încarcare eșuată",
|
|
44875
|
+
"Invalid image URL": "URL imagine invalid",
|
|
44876
|
+
"File too large": "Fișierul este prea mare",
|
|
44877
|
+
"Invalid file type": "Tip de fișier invalid",
|
|
44878
|
+
"More": "Mai mult"
|
|
44879
|
+
};
|
|
44880
|
+
const ru = {
|
|
44881
|
+
"Bold": "Полужирный",
|
|
44882
|
+
"Italic": "Курсив",
|
|
44883
|
+
"Underline": "Подчёркнутый",
|
|
44884
|
+
"Strikethrough": "Зачёркнутый",
|
|
44885
|
+
"Bullet list": "Маркированный список",
|
|
44886
|
+
"Numbered list": "Нумерованный список",
|
|
44887
|
+
"Decrease indent": "Уменьшить отступ",
|
|
44888
|
+
"Increase indent": "Увеличить отступ",
|
|
44889
|
+
"Blockquote": "Цитата",
|
|
44890
|
+
"Align left": "По левому краю",
|
|
44891
|
+
"Align center": "По центру",
|
|
44892
|
+
"Align right": "По правому краю",
|
|
44893
|
+
"Justify": "По ширине",
|
|
44894
|
+
"Text color": "Цвет текста",
|
|
44895
|
+
"Background color": "Цвет фона",
|
|
44896
|
+
"Remove formatting": "Очистить форматирование",
|
|
44897
|
+
"Copy": "Копировать",
|
|
44898
|
+
"Cut": "Вырезать",
|
|
44899
|
+
"Paste": "Вставить",
|
|
44900
|
+
"Undo": "Отменить",
|
|
44901
|
+
"Redo": "Повторить",
|
|
44902
|
+
"Insert image": "Вставить изображение",
|
|
44903
|
+
"Special character": "Специальный символ",
|
|
44904
|
+
"Emoticons": "Смайлики",
|
|
44905
|
+
"Fullscreen": "Полный экран",
|
|
44906
|
+
"Preview": "Предварительный просмотр",
|
|
44907
|
+
"Source code": "Исходный код",
|
|
44908
|
+
"Insert link": "Вставить ссылку",
|
|
44909
|
+
"Code sample": "Пример кода",
|
|
44910
|
+
"Left to right": "Слева направо",
|
|
44911
|
+
"Right to left": "Справа налево",
|
|
44912
|
+
"Find and replace": "Найти и заменить",
|
|
44913
|
+
"Font": "Шрифт",
|
|
44914
|
+
"Font size": "Размер шрифта",
|
|
44915
|
+
"Line height": "Высота строки",
|
|
44916
|
+
"Templates": "Шаблоны",
|
|
44917
|
+
"Apply": "Применить",
|
|
44918
|
+
"Enter image URL:": "Введите URL изображения:",
|
|
44919
|
+
"Enter URL:": "Введите URL:",
|
|
44920
|
+
"Edit HTML source:": "Редактировать HTML-код:",
|
|
44921
|
+
"Find and Replace": "Найти и заменить",
|
|
44922
|
+
"Find": "Найти",
|
|
44923
|
+
"Replace": "Заменить",
|
|
44924
|
+
"Case sensitive": "С учётом регистра",
|
|
44925
|
+
"Whole word": "Слово целиком",
|
|
44926
|
+
"Previous": "Предыдущий",
|
|
44927
|
+
"Next": "Следующий",
|
|
44928
|
+
"Replace All": "Заменить все",
|
|
44929
|
+
"Search...": "Поиск...",
|
|
44930
|
+
"Special Character": "Специальный символ",
|
|
44931
|
+
"Upload": "Загрузить",
|
|
44932
|
+
"URL": "URL",
|
|
44933
|
+
"Browse...": "Обзор...",
|
|
44934
|
+
"Drop image here or click to browse": "Перетащите изображение сюда или нажмите для обзора",
|
|
44935
|
+
"Alt text": "Альтернативный текст",
|
|
44936
|
+
"Insert": "Вставить",
|
|
44937
|
+
"Cancel": "Отмена",
|
|
44938
|
+
"Uploading...": "Загрузка...",
|
|
44939
|
+
"Upload failed": "Ошибка загрузки",
|
|
44940
|
+
"Invalid image URL": "Недопустимый URL изображения",
|
|
44941
|
+
"File too large": "Файл слишком большой",
|
|
44942
|
+
"Invalid file type": "Недопустимый тип файла",
|
|
44943
|
+
"More": "Ещё"
|
|
44944
|
+
};
|
|
44945
|
+
const sr = {
|
|
44946
|
+
"Bold": "Подебљано",
|
|
44947
|
+
"Italic": "Курзив",
|
|
44948
|
+
"Underline": "Подвучено",
|
|
44949
|
+
"Strikethrough": "Прецртано",
|
|
44950
|
+
"Bullet list": "Листа са знаковима",
|
|
44951
|
+
"Numbered list": "Нумерисана листа",
|
|
44952
|
+
"Decrease indent": "Смањи увлачење",
|
|
44953
|
+
"Increase indent": "Повећај увлачење",
|
|
44954
|
+
"Blockquote": "Цитат",
|
|
44955
|
+
"Align left": "Поравнај лево",
|
|
44956
|
+
"Align center": "Центрирај",
|
|
44957
|
+
"Align right": "Поравнај десно",
|
|
44958
|
+
"Justify": "Обострано поравнање",
|
|
44959
|
+
"Text color": "Боја текста",
|
|
44960
|
+
"Background color": "Боја позадине",
|
|
44961
|
+
"Remove formatting": "Уклони форматирање",
|
|
44962
|
+
"Copy": "Копирај",
|
|
44963
|
+
"Cut": "Исеци",
|
|
44964
|
+
"Paste": "Налепи",
|
|
44965
|
+
"Undo": "Опозови",
|
|
44966
|
+
"Redo": "Понови",
|
|
44967
|
+
"Insert image": "Уметни слику",
|
|
44968
|
+
"Special character": "Специјални знак",
|
|
44969
|
+
"Emoticons": "Емотикони",
|
|
44970
|
+
"Fullscreen": "Цео екран",
|
|
44971
|
+
"Preview": "Преглед",
|
|
44972
|
+
"Source code": "Изворни код",
|
|
44973
|
+
"Insert link": "Уметни везу",
|
|
44974
|
+
"Code sample": "Пример кода",
|
|
44975
|
+
"Left to right": "Слева надесно",
|
|
44976
|
+
"Right to left": "Здесна налево",
|
|
44977
|
+
"Find and replace": "Пронађи и замени",
|
|
44978
|
+
"Font": "Фонт",
|
|
44979
|
+
"Font size": "Величина фонта",
|
|
44980
|
+
"Line height": "Висина реда",
|
|
44981
|
+
"Templates": "Шаблони",
|
|
44982
|
+
"Apply": "Примени",
|
|
44983
|
+
"Enter image URL:": "Унесите URL слике:",
|
|
44984
|
+
"Enter URL:": "Унесите URL:",
|
|
44985
|
+
"Edit HTML source:": "Уреди HTML извор:",
|
|
44986
|
+
"Find and Replace": "Пронађи и замени",
|
|
44987
|
+
"Find": "Пронађи",
|
|
44988
|
+
"Replace": "Замени",
|
|
44989
|
+
"Case sensitive": "Разликуј велика/мала слова",
|
|
44990
|
+
"Whole word": "Цела реч",
|
|
44991
|
+
"Previous": "Претходно",
|
|
44992
|
+
"Next": "Следеће",
|
|
44993
|
+
"Replace All": "Замени све",
|
|
44994
|
+
"Search...": "Претрага...",
|
|
44995
|
+
"Special Character": "Специјални знак",
|
|
44996
|
+
"Upload": "Отпреми",
|
|
44997
|
+
"URL": "URL",
|
|
44998
|
+
"Browse...": "Претражи...",
|
|
44999
|
+
"Drop image here or click to browse": "Превуците слику овде или кликните за претрагу",
|
|
45000
|
+
"Alt text": "Алтернативни текст",
|
|
45001
|
+
"Insert": "Уметни",
|
|
45002
|
+
"Cancel": "Откажи",
|
|
45003
|
+
"Uploading...": "Отпремање...",
|
|
45004
|
+
"Upload failed": "Отпремање није успело",
|
|
45005
|
+
"Invalid image URL": "Неважећи URL слике",
|
|
45006
|
+
"File too large": "Датотека је превелика",
|
|
45007
|
+
"Invalid file type": "Неважећи тип датотеке",
|
|
45008
|
+
"More": "Још"
|
|
45009
|
+
};
|
|
45010
|
+
const sl = {
|
|
45011
|
+
"Bold": "Krepko",
|
|
45012
|
+
"Italic": "Ležeče",
|
|
45013
|
+
"Underline": "Podčrtano",
|
|
45014
|
+
"Strikethrough": "Prečrtano",
|
|
45015
|
+
"Bullet list": "Seznam z oznakami",
|
|
45016
|
+
"Numbered list": "Oštevilčen seznam",
|
|
45017
|
+
"Decrease indent": "Zmanjšaj zamik",
|
|
45018
|
+
"Increase indent": "Povečaj zamik",
|
|
45019
|
+
"Blockquote": "Citat",
|
|
45020
|
+
"Align left": "Poravnaj levo",
|
|
45021
|
+
"Align center": "Sredinska poravnava",
|
|
45022
|
+
"Align right": "Poravnaj desno",
|
|
45023
|
+
"Justify": "Obojestranska poravnava",
|
|
45024
|
+
"Text color": "Barva besedila",
|
|
45025
|
+
"Background color": "Barva ozadja",
|
|
45026
|
+
"Remove formatting": "Odstrani oblikovanje",
|
|
45027
|
+
"Copy": "Kopiraj",
|
|
45028
|
+
"Cut": "Izreži",
|
|
45029
|
+
"Paste": "Prilepi",
|
|
45030
|
+
"Undo": "Razveljavi",
|
|
45031
|
+
"Redo": "Uveljavi",
|
|
45032
|
+
"Insert image": "Vstavi sliko",
|
|
45033
|
+
"Special character": "Posebni znak",
|
|
45034
|
+
"Emoticons": "Emotikoni",
|
|
45035
|
+
"Fullscreen": "Celoten zaslon",
|
|
45036
|
+
"Preview": "Predogled",
|
|
45037
|
+
"Source code": "Izvorna koda",
|
|
45038
|
+
"Insert link": "Vstavi povezavo",
|
|
45039
|
+
"Code sample": "Primer kode",
|
|
45040
|
+
"Left to right": "Od leve proti desni",
|
|
45041
|
+
"Right to left": "Od desne proti levi",
|
|
45042
|
+
"Find and replace": "Najdi in zamenjaj",
|
|
45043
|
+
"Font": "Pisava",
|
|
45044
|
+
"Font size": "Velikost pisave",
|
|
45045
|
+
"Line height": "Višina vrstice",
|
|
45046
|
+
"Templates": "Predloge",
|
|
45047
|
+
"Apply": "Uporabi",
|
|
45048
|
+
"Enter image URL:": "Vnesite URL slike:",
|
|
45049
|
+
"Enter URL:": "Vnesite URL:",
|
|
45050
|
+
"Edit HTML source:": "Uredi HTML izvorno kodo:",
|
|
45051
|
+
"Find and Replace": "Najdi in zamenjaj",
|
|
45052
|
+
"Find": "Najdi",
|
|
45053
|
+
"Replace": "Zamenjaj",
|
|
45054
|
+
"Case sensitive": "Razlikuj velike/male črke",
|
|
45055
|
+
"Whole word": "Cela beseda",
|
|
45056
|
+
"Previous": "Prejšnji",
|
|
45057
|
+
"Next": "Naslednji",
|
|
45058
|
+
"Replace All": "Zamenjaj vse",
|
|
45059
|
+
"Search...": "Iskanje...",
|
|
45060
|
+
"Special Character": "Posebni znak",
|
|
45061
|
+
"Upload": "Naloži",
|
|
45062
|
+
"URL": "URL",
|
|
45063
|
+
"Browse...": "Prebrskaj...",
|
|
45064
|
+
"Drop image here or click to browse": "Povlecite sliko sem ali kliknite za brskanje",
|
|
45065
|
+
"Alt text": "Nadomestno besedilo",
|
|
45066
|
+
"Insert": "Vstavi",
|
|
45067
|
+
"Cancel": "Prekliči",
|
|
45068
|
+
"Uploading...": "Nalaganje...",
|
|
45069
|
+
"Upload failed": "Nalaganje ni uspelo",
|
|
45070
|
+
"Invalid image URL": "Neveljaven URL slike",
|
|
45071
|
+
"File too large": "Datoteka je prevelika",
|
|
45072
|
+
"Invalid file type": "Neveljavna vrsta datoteke",
|
|
45073
|
+
"More": "Več"
|
|
45074
|
+
};
|
|
45075
|
+
const es = {
|
|
45076
|
+
"Bold": "Negrita",
|
|
45077
|
+
"Italic": "Cursiva",
|
|
45078
|
+
"Underline": "Subrayado",
|
|
45079
|
+
"Strikethrough": "Tachado",
|
|
45080
|
+
"Bullet list": "Lista con viñetas",
|
|
45081
|
+
"Numbered list": "Lista numerada",
|
|
45082
|
+
"Decrease indent": "Disminuir sangría",
|
|
45083
|
+
"Increase indent": "Aumentar sangría",
|
|
45084
|
+
"Blockquote": "Cita",
|
|
45085
|
+
"Align left": "Alinear a la izquierda",
|
|
45086
|
+
"Align center": "Centrar",
|
|
45087
|
+
"Align right": "Alinear a la derecha",
|
|
45088
|
+
"Justify": "Justificar",
|
|
45089
|
+
"Text color": "Color del texto",
|
|
45090
|
+
"Background color": "Color de fondo",
|
|
45091
|
+
"Remove formatting": "Quitar formato",
|
|
45092
|
+
"Copy": "Copiar",
|
|
45093
|
+
"Cut": "Cortar",
|
|
45094
|
+
"Paste": "Pegar",
|
|
45095
|
+
"Undo": "Deshacer",
|
|
45096
|
+
"Redo": "Rehacer",
|
|
45097
|
+
"Insert image": "Insertar imagen",
|
|
45098
|
+
"Special character": "Carácter especial",
|
|
45099
|
+
"Emoticons": "Emoticonos",
|
|
45100
|
+
"Fullscreen": "Pantalla completa",
|
|
45101
|
+
"Preview": "Vista previa",
|
|
45102
|
+
"Source code": "Código fuente",
|
|
45103
|
+
"Insert link": "Insertar enlace",
|
|
45104
|
+
"Code sample": "Ejemplo de código",
|
|
45105
|
+
"Left to right": "De izquierda a derecha",
|
|
45106
|
+
"Right to left": "De derecha a izquierda",
|
|
45107
|
+
"Find and replace": "Buscar y reemplazar",
|
|
45108
|
+
"Font": "Fuente",
|
|
45109
|
+
"Font size": "Tamaño de fuente",
|
|
45110
|
+
"Line height": "Altura de línea",
|
|
45111
|
+
"Templates": "Plantillas",
|
|
45112
|
+
"Apply": "Aplicar",
|
|
45113
|
+
"Enter image URL:": "Introduzca la URL de la imagen:",
|
|
45114
|
+
"Enter URL:": "Introduzca la URL:",
|
|
45115
|
+
"Edit HTML source:": "Editar código fuente HTML:",
|
|
45116
|
+
"Find and Replace": "Buscar y reemplazar",
|
|
45117
|
+
"Find": "Buscar",
|
|
45118
|
+
"Replace": "Reemplazar",
|
|
45119
|
+
"Case sensitive": "Distinguir mayúsculas/minúsculas",
|
|
45120
|
+
"Whole word": "Palabra completa",
|
|
45121
|
+
"Previous": "Anterior",
|
|
45122
|
+
"Next": "Siguiente",
|
|
45123
|
+
"Replace All": "Reemplazar todo",
|
|
45124
|
+
"Search...": "Buscar...",
|
|
45125
|
+
"Special Character": "Carácter especial",
|
|
45126
|
+
"Upload": "Subir",
|
|
45127
|
+
"URL": "URL",
|
|
45128
|
+
"Browse...": "Examinar...",
|
|
45129
|
+
"Drop image here or click to browse": "Arrastra la imagen aquí o haz clic para examinar",
|
|
45130
|
+
"Alt text": "Texto alternativo",
|
|
45131
|
+
"Insert": "Insertar",
|
|
45132
|
+
"Cancel": "Cancelar",
|
|
45133
|
+
"Uploading...": "Subiendo...",
|
|
45134
|
+
"Upload failed": "Error al subir",
|
|
45135
|
+
"Invalid image URL": "URL de imagen no válida",
|
|
45136
|
+
"File too large": "Archivo demasiado grande",
|
|
45137
|
+
"Invalid file type": "Tipo de archivo no válido",
|
|
45138
|
+
"More": "Más"
|
|
45139
|
+
};
|
|
45140
|
+
const sv = {
|
|
45141
|
+
"Bold": "Fet",
|
|
45142
|
+
"Italic": "Kursiv",
|
|
45143
|
+
"Underline": "Understruken",
|
|
45144
|
+
"Strikethrough": "Genomstruken",
|
|
45145
|
+
"Bullet list": "Punktlista",
|
|
45146
|
+
"Numbered list": "Numrerad lista",
|
|
45147
|
+
"Decrease indent": "Minska indrag",
|
|
45148
|
+
"Increase indent": "Öka indrag",
|
|
45149
|
+
"Blockquote": "Blockcitat",
|
|
45150
|
+
"Align left": "Vänsterjustera",
|
|
45151
|
+
"Align center": "Centrera",
|
|
45152
|
+
"Align right": "Högerjustera",
|
|
45153
|
+
"Justify": "Marginaljustera",
|
|
45154
|
+
"Text color": "Textfärg",
|
|
45155
|
+
"Background color": "Bakgrundsfärg",
|
|
45156
|
+
"Remove formatting": "Ta bort formatering",
|
|
45157
|
+
"Copy": "Kopiera",
|
|
45158
|
+
"Cut": "Klipp ut",
|
|
45159
|
+
"Paste": "Klistra in",
|
|
45160
|
+
"Undo": "Ångra",
|
|
45161
|
+
"Redo": "Gör om",
|
|
45162
|
+
"Insert image": "Infoga bild",
|
|
45163
|
+
"Special character": "Specialtecken",
|
|
45164
|
+
"Emoticons": "Emotikoner",
|
|
45165
|
+
"Fullscreen": "Helskärm",
|
|
45166
|
+
"Preview": "Förhandsgranska",
|
|
45167
|
+
"Source code": "Källkod",
|
|
45168
|
+
"Insert link": "Infoga länk",
|
|
45169
|
+
"Code sample": "Kodexempel",
|
|
45170
|
+
"Left to right": "Vänster till höger",
|
|
45171
|
+
"Right to left": "Höger till vänster",
|
|
45172
|
+
"Find and replace": "Sök och ersätt",
|
|
45173
|
+
"Font": "Teckensnitt",
|
|
45174
|
+
"Font size": "Teckenstorlek",
|
|
45175
|
+
"Line height": "Radhöjd",
|
|
45176
|
+
"Templates": "Mallar",
|
|
45177
|
+
"Apply": "Tillämpa",
|
|
45178
|
+
"Enter image URL:": "Ange bild-URL:",
|
|
45179
|
+
"Enter URL:": "Ange URL:",
|
|
45180
|
+
"Edit HTML source:": "Redigera HTML-källa:",
|
|
45181
|
+
"Find and Replace": "Sök och ersätt",
|
|
45182
|
+
"Find": "Sök",
|
|
45183
|
+
"Replace": "Ersätt",
|
|
45184
|
+
"Case sensitive": "Skiftlägeskänslig",
|
|
45185
|
+
"Whole word": "Helt ord",
|
|
45186
|
+
"Previous": "Föregående",
|
|
45187
|
+
"Next": "Nästa",
|
|
45188
|
+
"Replace All": "Ersätt alla",
|
|
45189
|
+
"Search...": "Sök...",
|
|
45190
|
+
"Special Character": "Specialtecken",
|
|
45191
|
+
"Upload": "Ladda upp",
|
|
45192
|
+
"URL": "URL",
|
|
45193
|
+
"Browse...": "Bläddra...",
|
|
45194
|
+
"Drop image here or click to browse": "Dra bilden hit eller klicka för att bläddra",
|
|
45195
|
+
"Alt text": "Alternativtext",
|
|
45196
|
+
"Insert": "Infoga",
|
|
45197
|
+
"Cancel": "Avbryt",
|
|
45198
|
+
"Uploading...": "Laddar upp...",
|
|
45199
|
+
"Upload failed": "Uppladdning misslyckades",
|
|
45200
|
+
"Invalid image URL": "Ogiltig bild-URL",
|
|
45201
|
+
"File too large": "Filen är för stor",
|
|
45202
|
+
"Invalid file type": "Ogiltig filtyp",
|
|
45203
|
+
"More": "Mer"
|
|
45204
|
+
};
|
|
45205
|
+
const zhTw = {
|
|
45206
|
+
"Bold": "粗體",
|
|
45207
|
+
"Italic": "斜體",
|
|
45208
|
+
"Underline": "底線",
|
|
45209
|
+
"Strikethrough": "刪除線",
|
|
45210
|
+
"Bullet list": "項目符號清單",
|
|
45211
|
+
"Numbered list": "編號清單",
|
|
45212
|
+
"Decrease indent": "減少縮排",
|
|
45213
|
+
"Increase indent": "增加縮排",
|
|
45214
|
+
"Blockquote": "引用",
|
|
45215
|
+
"Align left": "靠左對齊",
|
|
45216
|
+
"Align center": "置中對齊",
|
|
45217
|
+
"Align right": "靠右對齊",
|
|
45218
|
+
"Justify": "左右對齊",
|
|
45219
|
+
"Text color": "文字顏色",
|
|
45220
|
+
"Background color": "背景顏色",
|
|
45221
|
+
"Remove formatting": "清除格式",
|
|
45222
|
+
"Copy": "複製",
|
|
45223
|
+
"Cut": "剪下",
|
|
45224
|
+
"Paste": "貼上",
|
|
45225
|
+
"Undo": "復原",
|
|
45226
|
+
"Redo": "重做",
|
|
45227
|
+
"Insert image": "插入圖片",
|
|
45228
|
+
"Special character": "特殊字元",
|
|
45229
|
+
"Emoticons": "表情符號",
|
|
45230
|
+
"Fullscreen": "全螢幕",
|
|
45231
|
+
"Preview": "預覽",
|
|
45232
|
+
"Source code": "原始碼",
|
|
45233
|
+
"Insert link": "插入連結",
|
|
45234
|
+
"Code sample": "程式碼範例",
|
|
45235
|
+
"Left to right": "由左至右",
|
|
45236
|
+
"Right to left": "由右至左",
|
|
45237
|
+
"Find and replace": "尋找與取代",
|
|
45238
|
+
"Font": "字型",
|
|
45239
|
+
"Font size": "字型大小",
|
|
45240
|
+
"Line height": "行高",
|
|
45241
|
+
"Templates": "範本",
|
|
45242
|
+
"Apply": "套用",
|
|
45243
|
+
"Enter image URL:": "輸入圖片網址:",
|
|
45244
|
+
"Enter URL:": "輸入網址:",
|
|
45245
|
+
"Edit HTML source:": "編輯HTML原始碼:",
|
|
45246
|
+
"Find and Replace": "尋找與取代",
|
|
45247
|
+
"Find": "尋找",
|
|
45248
|
+
"Replace": "取代",
|
|
45249
|
+
"Case sensitive": "區分大小寫",
|
|
45250
|
+
"Whole word": "全字拼寫",
|
|
45251
|
+
"Previous": "上一個",
|
|
45252
|
+
"Next": "下一個",
|
|
45253
|
+
"Replace All": "全部取代",
|
|
45254
|
+
"Search...": "搜尋...",
|
|
45255
|
+
"Special Character": "特殊字元",
|
|
45256
|
+
"Upload": "上傳",
|
|
45257
|
+
"URL": "URL",
|
|
45258
|
+
"Browse...": "瀏覽...",
|
|
45259
|
+
"Drop image here or click to browse": "將圖片拖放至此處或點擊瀏覽",
|
|
45260
|
+
"Alt text": "替代文字",
|
|
45261
|
+
"Insert": "插入",
|
|
45262
|
+
"Cancel": "取消",
|
|
45263
|
+
"Uploading...": "上傳中...",
|
|
45264
|
+
"Upload failed": "上傳失敗",
|
|
45265
|
+
"Invalid image URL": "無效的圖片 URL",
|
|
45266
|
+
"File too large": "檔案過大",
|
|
45267
|
+
"Invalid file type": "無效的檔案類型",
|
|
45268
|
+
"More": "更多"
|
|
45269
|
+
};
|
|
45270
|
+
const th = {
|
|
45271
|
+
"Bold": "ตัวหนา",
|
|
45272
|
+
"Italic": "ตัวเอียง",
|
|
45273
|
+
"Underline": "ขีดเส้นใต้",
|
|
45274
|
+
"Strikethrough": "ขีดฆ่า",
|
|
45275
|
+
"Bullet list": "รายการสัญลักษณ์",
|
|
45276
|
+
"Numbered list": "รายการลำดับเลข",
|
|
45277
|
+
"Decrease indent": "ลดการเยื้อง",
|
|
45278
|
+
"Increase indent": "เพิ่มการเยื้อง",
|
|
45279
|
+
"Blockquote": "บล็อกอ้างอิง",
|
|
45280
|
+
"Align left": "จัดชิดซ้าย",
|
|
45281
|
+
"Align center": "จัดกึ่งกลาง",
|
|
45282
|
+
"Align right": "จัดชิดขวา",
|
|
45283
|
+
"Justify": "จัดเต็มบรรทัด",
|
|
45284
|
+
"Text color": "สีตัวอักษร",
|
|
45285
|
+
"Background color": "สีพื้นหลัง",
|
|
45286
|
+
"Remove formatting": "ล้างการจัดรูปแบบ",
|
|
45287
|
+
"Copy": "คัดลอก",
|
|
45288
|
+
"Cut": "ตัด",
|
|
45289
|
+
"Paste": "วาง",
|
|
45290
|
+
"Undo": "เลิกทำ",
|
|
45291
|
+
"Redo": "ทำซ้ำ",
|
|
45292
|
+
"Insert image": "แทรกรูปภาพ",
|
|
45293
|
+
"Special character": "อักขระพิเศษ",
|
|
45294
|
+
"Emoticons": "อิโมติคอน",
|
|
45295
|
+
"Fullscreen": "เต็มจอ",
|
|
45296
|
+
"Preview": "ดูตัวอย่าง",
|
|
45297
|
+
"Source code": "ซอร์สโค้ด",
|
|
45298
|
+
"Insert link": "แทรกลิงก์",
|
|
45299
|
+
"Code sample": "ตัวอย่างโค้ด",
|
|
45300
|
+
"Left to right": "ซ้ายไปขวา",
|
|
45301
|
+
"Right to left": "ขวาไปซ้าย",
|
|
45302
|
+
"Find and replace": "ค้นหาและแทนที่",
|
|
45303
|
+
"Font": "แบบอักษร",
|
|
45304
|
+
"Font size": "ขนาดอักษร",
|
|
45305
|
+
"Line height": "ความสูงบรรทัด",
|
|
45306
|
+
"Templates": "เทมเพลต",
|
|
45307
|
+
"Apply": "นำไปใช้",
|
|
45308
|
+
"Enter image URL:": "ป้อน URL รูปภาพ:",
|
|
45309
|
+
"Enter URL:": "ป้อน URL:",
|
|
45310
|
+
"Edit HTML source:": "แก้ไขซอร์สโค้ด HTML:",
|
|
45311
|
+
"Find and Replace": "ค้นหาและแทนที่",
|
|
45312
|
+
"Find": "ค้นหา",
|
|
45313
|
+
"Replace": "แทนที่",
|
|
45314
|
+
"Case sensitive": "ตรงตามตัวพิมพ์",
|
|
45315
|
+
"Whole word": "ทั้งคำ",
|
|
45316
|
+
"Previous": "ก่อนหน้า",
|
|
45317
|
+
"Next": "ถัดไป",
|
|
45318
|
+
"Replace All": "แทนที่ทั้งหมด",
|
|
45319
|
+
"Search...": "ค้นหา...",
|
|
45320
|
+
"Special Character": "อักขระพิเศษ",
|
|
45321
|
+
"Upload": "อัปโหลด",
|
|
45322
|
+
"URL": "URL",
|
|
45323
|
+
"Browse...": "เรียกดู...",
|
|
45324
|
+
"Drop image here or click to browse": "ลากรูปภาพมาที่นี่หรือคลิกเพื่อเรียกดู",
|
|
45325
|
+
"Alt text": "ข้อความทดแทน",
|
|
45326
|
+
"Insert": "แทรก",
|
|
45327
|
+
"Cancel": "ยกเลิก",
|
|
45328
|
+
"Uploading...": "กำลังอัปโหลด...",
|
|
45329
|
+
"Upload failed": "อัปโหลดล้มเหลว",
|
|
45330
|
+
"Invalid image URL": "URL รูปภาพไม่ถูกต้อง",
|
|
45331
|
+
"File too large": "ไฟล์ใหญ่เกินไป",
|
|
45332
|
+
"Invalid file type": "ประเภทไฟล์ไม่ถูกต้อง",
|
|
45333
|
+
"More": "เพิ่มเติม"
|
|
45334
|
+
};
|
|
45335
|
+
const tr = {
|
|
45336
|
+
"Bold": "Kalın",
|
|
45337
|
+
"Italic": "İtalik",
|
|
45338
|
+
"Underline": "Altı çizili",
|
|
45339
|
+
"Strikethrough": "Üstü çizili",
|
|
45340
|
+
"Bullet list": "Madde işaretli liste",
|
|
45341
|
+
"Numbered list": "Numaralı liste",
|
|
45342
|
+
"Decrease indent": "Girintiyi azalt",
|
|
45343
|
+
"Increase indent": "Girintiyi artır",
|
|
45344
|
+
"Blockquote": "Alıntı",
|
|
45345
|
+
"Align left": "Sola hizala",
|
|
45346
|
+
"Align center": "Ortala",
|
|
45347
|
+
"Align right": "Sağa hizala",
|
|
45348
|
+
"Justify": "İki yana yasla",
|
|
45349
|
+
"Text color": "Metin rengi",
|
|
45350
|
+
"Background color": "Arka plan rengi",
|
|
45351
|
+
"Remove formatting": "Biçimlendirmeyi kaldır",
|
|
45352
|
+
"Copy": "Kopyala",
|
|
45353
|
+
"Cut": "Kes",
|
|
45354
|
+
"Paste": "Yapıştır",
|
|
45355
|
+
"Undo": "Geri al",
|
|
45356
|
+
"Redo": "Yinele",
|
|
45357
|
+
"Insert image": "Resim ekle",
|
|
45358
|
+
"Special character": "Özel karakter",
|
|
45359
|
+
"Emoticons": "İfadeler",
|
|
45360
|
+
"Fullscreen": "Tam ekran",
|
|
45361
|
+
"Preview": "Önizleme",
|
|
45362
|
+
"Source code": "Kaynak kodu",
|
|
45363
|
+
"Insert link": "Bağlantı ekle",
|
|
45364
|
+
"Code sample": "Kod örneği",
|
|
45365
|
+
"Left to right": "Soldan sağa",
|
|
45366
|
+
"Right to left": "Sağdan sola",
|
|
45367
|
+
"Find and replace": "Bul ve değiştir",
|
|
45368
|
+
"Font": "Yazı tipi",
|
|
45369
|
+
"Font size": "Yazı tipi boyutu",
|
|
45370
|
+
"Line height": "Satır yüksekliği",
|
|
45371
|
+
"Templates": "Şablonlar",
|
|
45372
|
+
"Apply": "Uygula",
|
|
45373
|
+
"Enter image URL:": "Resim URL'sini girin:",
|
|
45374
|
+
"Enter URL:": "URL girin:",
|
|
45375
|
+
"Edit HTML source:": "HTML kaynağını düzenle:",
|
|
45376
|
+
"Find and Replace": "Bul ve değiştir",
|
|
45377
|
+
"Find": "Bul",
|
|
45378
|
+
"Replace": "Değiştir",
|
|
45379
|
+
"Case sensitive": "Büyük/küçük harf duyarlı",
|
|
45380
|
+
"Whole word": "Tam kelime",
|
|
45381
|
+
"Previous": "Önceki",
|
|
45382
|
+
"Next": "Sonraki",
|
|
45383
|
+
"Replace All": "Tümünü değiştir",
|
|
45384
|
+
"Search...": "Ara...",
|
|
45385
|
+
"Special Character": "Özel karakter",
|
|
45386
|
+
"Upload": "Yükle",
|
|
45387
|
+
"URL": "URL",
|
|
45388
|
+
"Browse...": "Gözat...",
|
|
45389
|
+
"Drop image here or click to browse": "Resmi buraya sürükleyin veya gözatmak için tıklayın",
|
|
45390
|
+
"Alt text": "Alternatif metin",
|
|
45391
|
+
"Insert": "Ekle",
|
|
45392
|
+
"Cancel": "İptal",
|
|
45393
|
+
"Uploading...": "Yükleniyor...",
|
|
45394
|
+
"Upload failed": "Yükleme başarısız",
|
|
45395
|
+
"Invalid image URL": "Geçersiz resim URL'si",
|
|
45396
|
+
"File too large": "Dosya çok büyük",
|
|
45397
|
+
"Invalid file type": "Geçersiz dosya türü",
|
|
45398
|
+
"More": "Daha fazla"
|
|
45399
|
+
};
|
|
45400
|
+
const vi = {
|
|
45401
|
+
"Bold": "In đậm",
|
|
45402
|
+
"Italic": "In nghiêng",
|
|
45403
|
+
"Underline": "Gạch chân",
|
|
45404
|
+
"Strikethrough": "Gạch ngang",
|
|
45405
|
+
"Bullet list": "Danh sách có dấu đầu dòng",
|
|
45406
|
+
"Numbered list": "Danh sách đánh số",
|
|
45407
|
+
"Decrease indent": "Giảm thụt lề",
|
|
45408
|
+
"Increase indent": "Tăng thụt lề",
|
|
45409
|
+
"Blockquote": "Trích dẫn",
|
|
45410
|
+
"Align left": "Căn trái",
|
|
45411
|
+
"Align center": "Căn giữa",
|
|
45412
|
+
"Align right": "Căn phải",
|
|
45413
|
+
"Justify": "Căn đều",
|
|
45414
|
+
"Text color": "Màu chữ",
|
|
45415
|
+
"Background color": "Màu nền",
|
|
45416
|
+
"Remove formatting": "Xóa định dạng",
|
|
45417
|
+
"Copy": "Sao chép",
|
|
45418
|
+
"Cut": "Cắt",
|
|
45419
|
+
"Paste": "Dán",
|
|
45420
|
+
"Undo": "Hoàn tác",
|
|
45421
|
+
"Redo": "Làm lại",
|
|
45422
|
+
"Insert image": "Chèn hình ảnh",
|
|
45423
|
+
"Special character": "Ký tự đặc biệt",
|
|
45424
|
+
"Emoticons": "Biểu tượng cảm xúc",
|
|
45425
|
+
"Fullscreen": "Toàn màn hình",
|
|
45426
|
+
"Preview": "Xem trước",
|
|
45427
|
+
"Source code": "Mã nguồn",
|
|
45428
|
+
"Insert link": "Chèn liên kết",
|
|
45429
|
+
"Code sample": "Mẫu mã",
|
|
45430
|
+
"Left to right": "Trái sang phải",
|
|
45431
|
+
"Right to left": "Phải sang trái",
|
|
45432
|
+
"Find and replace": "Tìm và thay thế",
|
|
45433
|
+
"Font": "Phông chữ",
|
|
45434
|
+
"Font size": "Cỡ chữ",
|
|
45435
|
+
"Line height": "Chiều cao dòng",
|
|
45436
|
+
"Templates": "Mẫu",
|
|
45437
|
+
"Apply": "Áp dụng",
|
|
45438
|
+
"Enter image URL:": "Nhập URL hình ảnh:",
|
|
45439
|
+
"Enter URL:": "Nhập URL:",
|
|
45440
|
+
"Edit HTML source:": "Chỉnh sửa mã nguồn HTML:",
|
|
45441
|
+
"Find and Replace": "Tìm và thay thế",
|
|
45442
|
+
"Find": "Tìm",
|
|
45443
|
+
"Replace": "Thay thế",
|
|
45444
|
+
"Case sensitive": "Phân biệt chữ hoa/thường",
|
|
45445
|
+
"Whole word": "Toàn bộ từ",
|
|
45446
|
+
"Previous": "Trước",
|
|
45447
|
+
"Next": "Tiếp",
|
|
45448
|
+
"Replace All": "Thay thế tất cả",
|
|
45449
|
+
"Search...": "Tìm kiếm...",
|
|
45450
|
+
"Special Character": "Ký tự đặc biệt",
|
|
45451
|
+
"Upload": "Tải lên",
|
|
45452
|
+
"URL": "URL",
|
|
45453
|
+
"Browse...": "Duyệt...",
|
|
45454
|
+
"Drop image here or click to browse": "Kéo thả hình ảnh vào đây hoặc nhấp để duyệt",
|
|
45455
|
+
"Alt text": "Văn bản thay thế",
|
|
45456
|
+
"Insert": "Chèn",
|
|
45457
|
+
"Cancel": "Hủy",
|
|
45458
|
+
"Uploading...": "Đang tải lên...",
|
|
45459
|
+
"Upload failed": "Tải lên thất bại",
|
|
45460
|
+
"Invalid image URL": "URL hình ảnh không hợp lệ",
|
|
45461
|
+
"File too large": "Tệp quá lớn",
|
|
45462
|
+
"Invalid file type": "Loại tệp không hợp lệ",
|
|
45463
|
+
"More": "Thêm"
|
|
45464
|
+
};
|
|
45465
|
+
const locales = {
|
|
45466
|
+
en,
|
|
45467
|
+
ar,
|
|
45468
|
+
ca,
|
|
45469
|
+
zh,
|
|
45470
|
+
cs,
|
|
45471
|
+
da,
|
|
45472
|
+
"en-gb": enGb,
|
|
45473
|
+
fi,
|
|
45474
|
+
fr,
|
|
45475
|
+
"fr-ca": frCa,
|
|
45476
|
+
de,
|
|
45477
|
+
el,
|
|
45478
|
+
hu,
|
|
45479
|
+
id,
|
|
45480
|
+
it,
|
|
45481
|
+
ja,
|
|
45482
|
+
ko,
|
|
45483
|
+
nl,
|
|
45484
|
+
nb,
|
|
45485
|
+
pl,
|
|
45486
|
+
pt,
|
|
45487
|
+
ro,
|
|
45488
|
+
ru,
|
|
45489
|
+
sr,
|
|
45490
|
+
sl,
|
|
45491
|
+
es,
|
|
45492
|
+
sv,
|
|
45493
|
+
"zh-tw": zhTw,
|
|
45494
|
+
th,
|
|
45495
|
+
tr,
|
|
45496
|
+
vi
|
|
45497
|
+
};
|
|
45498
|
+
function getLocale(code) {
|
|
45499
|
+
return locales[code] ?? locales["en"];
|
|
45500
|
+
}
|
|
45501
|
+
function createTranslateFunction(code) {
|
|
45502
|
+
const locale = getLocale(code);
|
|
45503
|
+
return (key) => locale[key] ?? key;
|
|
45504
|
+
}
|
|
45505
|
+
const availableLocales = Object.keys(locales);
|
|
45506
|
+
const TRANSLATION_KEYS = Object.keys(en);
|
|
42517
45507
|
const lowlight = createLowlight(grammars);
|
|
42518
45508
|
const fontNames = "Andale Mono=andale mono,times; Arial=arial,helvetica,sans-serif; Arial Black=arial black,avant garde; Book Antiqua=book antiqua,palatino; Comic Sans MS=comic sans ms,sans-serif; Courier New=courier new,courier; Georgia=georgia,palatino; Helvetica=helvetica; Impact=impact,chicago; Tahoma=tahoma,arial,helvetica,sans-serif; Terminal=terminal,monaco; Times New Roman=times new roman,times; Trebuchet MS=trebuchet ms,geneva; Verdana=verdana,geneva";
|
|
42519
|
-
const FULL_TOOLBAR = "bold italic underline strikethrough | bullist numlist outdent indent blockquote | fontfamily fontsize
|
|
42520
|
-
const BASIC_TOOLBAR = "bold italic underline strikethrough | bullist numlist outdent indent | fontfamily fontsize blockquote
|
|
45509
|
+
const FULL_TOOLBAR = "bold italic underline strikethrough | bullist numlist outdent indent blockquote | fontfamily fontsize || lineheight alignleft aligncenter alignright alignjustify | forecolor backcolor | removeformat copy cut paste | undo redo | image charmap emoticons | fullscreen preview | code link codesample | ltr rtl | searchreplace";
|
|
45510
|
+
const BASIC_TOOLBAR = "bold italic underline strikethrough | bullist numlist outdent indent | fontfamily fontsize blockquote || lineheight alignleft aligncenter alignright alignjustify | forecolor backcolor | removeformat copy cut paste | undo redo | charmap emoticons | link | ltr rtl | searchreplace";
|
|
42521
45511
|
const DEFAULT_FONT_SIZES = "8pt 9pt 10pt 12pt 14pt 18pt 24pt 36pt";
|
|
42522
45512
|
let editorIdCounter = 0;
|
|
42523
45513
|
let globalTranslate = (key) => key;
|
|
45514
|
+
let globalTranslateCustomized = false;
|
|
42524
45515
|
let globalGetFileSrc = (path) => path;
|
|
42525
45516
|
function setTranslate(fn) {
|
|
42526
45517
|
globalTranslate = fn;
|
|
45518
|
+
globalTranslateCustomized = true;
|
|
42527
45519
|
}
|
|
42528
45520
|
function getTranslate() {
|
|
42529
45521
|
return globalTranslate;
|
|
42530
45522
|
}
|
|
45523
|
+
function resetTranslate() {
|
|
45524
|
+
globalTranslate = (key) => key;
|
|
45525
|
+
globalTranslateCustomized = false;
|
|
45526
|
+
}
|
|
42531
45527
|
function setGetFileSrc(fn) {
|
|
42532
45528
|
globalGetFileSrc = fn;
|
|
42533
45529
|
}
|
|
@@ -42546,6 +45542,7 @@ class HTMLEditor {
|
|
|
42546
45542
|
customButtons = /* @__PURE__ */ new Map();
|
|
42547
45543
|
eventListeners = /* @__PURE__ */ new Map();
|
|
42548
45544
|
changeTimeout = null;
|
|
45545
|
+
imageUploadHelper = null;
|
|
42549
45546
|
constructor(container, config = {}) {
|
|
42550
45547
|
this.id = `md-editor-${++editorIdCounter}`;
|
|
42551
45548
|
this.container = container;
|
|
@@ -42572,6 +45569,8 @@ class HTMLEditor {
|
|
|
42572
45569
|
images_upload_url: config.images_upload_url,
|
|
42573
45570
|
images_upload_credentials: config.images_upload_credentials ?? true,
|
|
42574
45571
|
images_upload_base_path: config.images_upload_base_path ?? "/",
|
|
45572
|
+
images_upload_max_size: config.images_upload_max_size,
|
|
45573
|
+
images_upload_headers: config.images_upload_headers,
|
|
42575
45574
|
font_family_formats: config.font_family_formats ?? fontNames,
|
|
42576
45575
|
font_size_formats: config.font_size_formats ?? DEFAULT_FONT_SIZES,
|
|
42577
45576
|
fontName: config.fontName,
|
|
@@ -42579,13 +45578,15 @@ class HTMLEditor {
|
|
|
42579
45578
|
directionality: config.directionality ?? "ltr",
|
|
42580
45579
|
language: config.language ?? "en",
|
|
42581
45580
|
height: config.height ?? 300,
|
|
45581
|
+
min_height: config.min_height,
|
|
45582
|
+
max_height: config.max_height,
|
|
42582
45583
|
auto_focus: config.auto_focus,
|
|
42583
45584
|
setFocus: config.setFocus,
|
|
42584
45585
|
skin: config.skin ?? "oxide",
|
|
42585
45586
|
content_css: config.content_css ?? "default",
|
|
42586
45587
|
content_style: config.content_style,
|
|
42587
45588
|
toolbar: config.toolbar ?? (config.basicEditor ? BASIC_TOOLBAR : FULL_TOOLBAR),
|
|
42588
|
-
toolbar_mode: config.toolbar_mode ?? "
|
|
45589
|
+
toolbar_mode: config.toolbar_mode ?? "wrap",
|
|
42589
45590
|
toolbar_sticky: config.toolbar_sticky ?? true,
|
|
42590
45591
|
menubar: config.menubar ?? false,
|
|
42591
45592
|
contextmenu: config.contextmenu ?? "",
|
|
@@ -42601,6 +45602,9 @@ class HTMLEditor {
|
|
|
42601
45602
|
};
|
|
42602
45603
|
}
|
|
42603
45604
|
createEditor() {
|
|
45605
|
+
if (!globalTranslateCustomized) {
|
|
45606
|
+
globalTranslate = createTranslateFunction(this.config.language ?? "en");
|
|
45607
|
+
}
|
|
42604
45608
|
this.editorWrapper = document.createElement("div");
|
|
42605
45609
|
this.editorWrapper.className = `md-editor md-editor-${this.config.skin}`;
|
|
42606
45610
|
this.editorWrapper.id = this.id;
|
|
@@ -42612,6 +45616,20 @@ class HTMLEditor {
|
|
|
42612
45616
|
this.editorWrapper.style.height = this.config.height;
|
|
42613
45617
|
}
|
|
42614
45618
|
}
|
|
45619
|
+
if (this.config.min_height) {
|
|
45620
|
+
if (typeof this.config.min_height === "number") {
|
|
45621
|
+
this.editorWrapper.style.minHeight = `${this.config.min_height}px`;
|
|
45622
|
+
} else {
|
|
45623
|
+
this.editorWrapper.style.minHeight = this.config.min_height;
|
|
45624
|
+
}
|
|
45625
|
+
}
|
|
45626
|
+
if (this.config.max_height) {
|
|
45627
|
+
if (typeof this.config.max_height === "number") {
|
|
45628
|
+
this.editorWrapper.style.maxHeight = `${this.config.max_height}px`;
|
|
45629
|
+
} else {
|
|
45630
|
+
this.editorWrapper.style.maxHeight = this.config.max_height;
|
|
45631
|
+
}
|
|
45632
|
+
}
|
|
42615
45633
|
const toolbarContainer = document.createElement("div");
|
|
42616
45634
|
toolbarContainer.className = "md-editor-toolbar";
|
|
42617
45635
|
this.editorWrapper.appendChild(toolbarContainer);
|
|
@@ -42650,13 +45668,15 @@ class HTMLEditor {
|
|
|
42650
45668
|
}
|
|
42651
45669
|
};
|
|
42652
45670
|
this.tiptap = new Editor(editorOptions);
|
|
45671
|
+
const iconSet = this.config.skin?.startsWith("confab") ? CONFAB_ICONS : DEFAULT_ICONS;
|
|
42653
45672
|
this.toolbar = new Toolbar(toolbarContainer, {
|
|
42654
45673
|
editor: this,
|
|
42655
45674
|
buttons: this.config.toolbar ?? BASIC_TOOLBAR,
|
|
42656
45675
|
mode: this.config.toolbar_mode ?? "sliding",
|
|
42657
45676
|
sticky: this.config.toolbar_sticky ?? true,
|
|
42658
45677
|
customButtons: this.customButtons,
|
|
42659
|
-
config: this.config
|
|
45678
|
+
config: this.config,
|
|
45679
|
+
iconSet
|
|
42660
45680
|
});
|
|
42661
45681
|
if (this.config.auto_focus) {
|
|
42662
45682
|
setTimeout(() => this.focus(), 10);
|
|
@@ -42668,6 +45688,70 @@ class HTMLEditor {
|
|
|
42668
45688
|
}
|
|
42669
45689
|
}, 10);
|
|
42670
45690
|
}
|
|
45691
|
+
if (!this.config.basicEditor) {
|
|
45692
|
+
this.setupImageHandlers(editorContent);
|
|
45693
|
+
}
|
|
45694
|
+
}
|
|
45695
|
+
getImageUploadHelper() {
|
|
45696
|
+
if (!this.imageUploadHelper) {
|
|
45697
|
+
this.imageUploadHelper = new ImageUpload({
|
|
45698
|
+
onInsert: () => {
|
|
45699
|
+
},
|
|
45700
|
+
uploadUrl: this.config.images_upload_url,
|
|
45701
|
+
uploadCredentials: this.config.images_upload_credentials,
|
|
45702
|
+
uploadBasePath: this.config.images_upload_base_path,
|
|
45703
|
+
uploadMaxSize: this.config.images_upload_max_size,
|
|
45704
|
+
uploadHeaders: this.config.images_upload_headers,
|
|
45705
|
+
trans: globalTranslate
|
|
45706
|
+
});
|
|
45707
|
+
}
|
|
45708
|
+
return this.imageUploadHelper;
|
|
45709
|
+
}
|
|
45710
|
+
setupImageHandlers(editorContent) {
|
|
45711
|
+
editorContent.addEventListener("dragover", (e) => {
|
|
45712
|
+
if (e.dataTransfer?.types.includes("Files")) {
|
|
45713
|
+
e.preventDefault();
|
|
45714
|
+
e.dataTransfer.dropEffect = "copy";
|
|
45715
|
+
this.editorWrapper?.classList.add("md-editor-dragover");
|
|
45716
|
+
}
|
|
45717
|
+
});
|
|
45718
|
+
editorContent.addEventListener("dragleave", (e) => {
|
|
45719
|
+
const related = e.relatedTarget;
|
|
45720
|
+
if (!related || !editorContent.contains(related)) {
|
|
45721
|
+
this.editorWrapper?.classList.remove("md-editor-dragover");
|
|
45722
|
+
}
|
|
45723
|
+
});
|
|
45724
|
+
editorContent.addEventListener("drop", (e) => {
|
|
45725
|
+
this.editorWrapper?.classList.remove("md-editor-dragover");
|
|
45726
|
+
const files = e.dataTransfer?.files;
|
|
45727
|
+
if (!files || files.length === 0) return;
|
|
45728
|
+
const imageFile = Array.from(files).find((f) => f.type.startsWith("image/"));
|
|
45729
|
+
if (!imageFile) return;
|
|
45730
|
+
e.preventDefault();
|
|
45731
|
+
e.stopPropagation();
|
|
45732
|
+
this.handleImageFileUpload(imageFile);
|
|
45733
|
+
});
|
|
45734
|
+
editorContent.addEventListener("paste", (e) => {
|
|
45735
|
+
const items = e.clipboardData?.items;
|
|
45736
|
+
if (!items) return;
|
|
45737
|
+
for (const item of Array.from(items)) {
|
|
45738
|
+
if (item.type.startsWith("image/")) {
|
|
45739
|
+
const file = item.getAsFile();
|
|
45740
|
+
if (file) {
|
|
45741
|
+
e.preventDefault();
|
|
45742
|
+
this.handleImageFileUpload(file);
|
|
45743
|
+
return;
|
|
45744
|
+
}
|
|
45745
|
+
}
|
|
45746
|
+
}
|
|
45747
|
+
});
|
|
45748
|
+
}
|
|
45749
|
+
handleImageFileUpload(file) {
|
|
45750
|
+
const helper = this.getImageUploadHelper();
|
|
45751
|
+
helper.uploadFile(file).then((src) => {
|
|
45752
|
+
this.tiptap?.chain().focus().setImage({ src }).run();
|
|
45753
|
+
}).catch(() => {
|
|
45754
|
+
});
|
|
42671
45755
|
}
|
|
42672
45756
|
buildExtensions() {
|
|
42673
45757
|
const extensions = [
|
|
@@ -42675,6 +45759,7 @@ class HTMLEditor {
|
|
|
42675
45759
|
codeBlock: false
|
|
42676
45760
|
// We use CodeBlockLowlight instead
|
|
42677
45761
|
}),
|
|
45762
|
+
SignatureBlock,
|
|
42678
45763
|
Underline,
|
|
42679
45764
|
TextStyle,
|
|
42680
45765
|
FontFamily,
|
|
@@ -42878,6 +45963,8 @@ class HTMLEditor {
|
|
|
42878
45963
|
this.toolbar = null;
|
|
42879
45964
|
this.tiptap?.destroy();
|
|
42880
45965
|
this.tiptap = null;
|
|
45966
|
+
this.imageUploadHelper?.destroy();
|
|
45967
|
+
this.imageUploadHelper = null;
|
|
42881
45968
|
if (this.editorWrapper) {
|
|
42882
45969
|
this.editorWrapper.remove();
|
|
42883
45970
|
}
|
|
@@ -42888,6 +45975,15 @@ class HTMLEditor {
|
|
|
42888
45975
|
getTipTap() {
|
|
42889
45976
|
return this.tiptap;
|
|
42890
45977
|
}
|
|
45978
|
+
/**
|
|
45979
|
+
* Set the UI language, updating all toolbar and dialog translations.
|
|
45980
|
+
*/
|
|
45981
|
+
setLanguage(code) {
|
|
45982
|
+
this.config.language = code;
|
|
45983
|
+
globalTranslate = createTranslateFunction(code);
|
|
45984
|
+
this.toolbar?.rebuild();
|
|
45985
|
+
this.fire("languagechange", code);
|
|
45986
|
+
}
|
|
42891
45987
|
/**
|
|
42892
45988
|
* Get the editor config
|
|
42893
45989
|
*/
|
|
@@ -42902,18 +45998,26 @@ class HTMLEditor {
|
|
|
42902
45998
|
}
|
|
42903
45999
|
}
|
|
42904
46000
|
exports.CHAR_MAP = CHAR_MAP;
|
|
46001
|
+
exports.CONFAB_ICONS = CONFAB_ICONS;
|
|
42905
46002
|
exports.CharacterMap = CharacterMap;
|
|
46003
|
+
exports.DEFAULT_ICONS = DEFAULT_ICONS;
|
|
42906
46004
|
exports.EMOJI_CATEGORIES = EMOJI_CATEGORIES;
|
|
42907
46005
|
exports.EmojiPicker = EmojiPicker;
|
|
42908
46006
|
exports.FontSize = FontSize;
|
|
42909
46007
|
exports.HTMLEditor = HTMLEditor;
|
|
42910
46008
|
exports.LineHeight = LineHeight;
|
|
42911
46009
|
exports.SearchReplace = SearchReplace;
|
|
46010
|
+
exports.SignatureBlock = SignatureBlock;
|
|
46011
|
+
exports.TRANSLATION_KEYS = TRANSLATION_KEYS;
|
|
42912
46012
|
exports.TextDirection = TextDirection;
|
|
42913
46013
|
exports.Toolbar = Toolbar;
|
|
46014
|
+
exports.availableLocales = availableLocales;
|
|
46015
|
+
exports.createTranslateFunction = createTranslateFunction;
|
|
42914
46016
|
exports.fontNames = fontNames;
|
|
42915
46017
|
exports.getGetFileSrc = getGetFileSrc;
|
|
46018
|
+
exports.getLocale = getLocale;
|
|
42916
46019
|
exports.getTranslate = getTranslate;
|
|
46020
|
+
exports.resetTranslate = resetTranslate;
|
|
42917
46021
|
exports.setGetFileSrc = setGetFileSrc;
|
|
42918
46022
|
exports.setTranslate = setTranslate;
|
|
42919
46023
|
//# sourceMappingURL=index.js.map
|