@mdaemon/html-editor 1.3.0 → 1.4.1
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 +103 -3
- package/dist/index.d.ts +138 -0
- package/dist/index.js +1593 -54
- package/dist/index.mjs +1593 -54
- package/dist/styles.css +22 -0
- package/package.json +10 -2
package/dist/index.mjs
CHANGED
|
@@ -23055,6 +23055,96 @@ var StarterKit = Extension.create({
|
|
|
23055
23055
|
return extensions;
|
|
23056
23056
|
}
|
|
23057
23057
|
});
|
|
23058
|
+
var Subscript = Mark2.create({
|
|
23059
|
+
name: "subscript",
|
|
23060
|
+
addOptions() {
|
|
23061
|
+
return {
|
|
23062
|
+
HTMLAttributes: {}
|
|
23063
|
+
};
|
|
23064
|
+
},
|
|
23065
|
+
parseHTML() {
|
|
23066
|
+
return [
|
|
23067
|
+
{
|
|
23068
|
+
tag: "sub"
|
|
23069
|
+
},
|
|
23070
|
+
{
|
|
23071
|
+
style: "vertical-align",
|
|
23072
|
+
getAttrs(value) {
|
|
23073
|
+
if (value !== "sub") {
|
|
23074
|
+
return false;
|
|
23075
|
+
}
|
|
23076
|
+
return null;
|
|
23077
|
+
}
|
|
23078
|
+
}
|
|
23079
|
+
];
|
|
23080
|
+
},
|
|
23081
|
+
renderHTML({ HTMLAttributes }) {
|
|
23082
|
+
return ["sub", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];
|
|
23083
|
+
},
|
|
23084
|
+
addCommands() {
|
|
23085
|
+
return {
|
|
23086
|
+
setSubscript: () => ({ commands }) => {
|
|
23087
|
+
return commands.setMark(this.name);
|
|
23088
|
+
},
|
|
23089
|
+
toggleSubscript: () => ({ commands }) => {
|
|
23090
|
+
return commands.toggleMark(this.name);
|
|
23091
|
+
},
|
|
23092
|
+
unsetSubscript: () => ({ commands }) => {
|
|
23093
|
+
return commands.unsetMark(this.name);
|
|
23094
|
+
}
|
|
23095
|
+
};
|
|
23096
|
+
},
|
|
23097
|
+
addKeyboardShortcuts() {
|
|
23098
|
+
return {
|
|
23099
|
+
"Mod-,": () => this.editor.commands.toggleSubscript()
|
|
23100
|
+
};
|
|
23101
|
+
}
|
|
23102
|
+
});
|
|
23103
|
+
var Superscript = Mark2.create({
|
|
23104
|
+
name: "superscript",
|
|
23105
|
+
addOptions() {
|
|
23106
|
+
return {
|
|
23107
|
+
HTMLAttributes: {}
|
|
23108
|
+
};
|
|
23109
|
+
},
|
|
23110
|
+
parseHTML() {
|
|
23111
|
+
return [
|
|
23112
|
+
{
|
|
23113
|
+
tag: "sup"
|
|
23114
|
+
},
|
|
23115
|
+
{
|
|
23116
|
+
style: "vertical-align",
|
|
23117
|
+
getAttrs(value) {
|
|
23118
|
+
if (value !== "super") {
|
|
23119
|
+
return false;
|
|
23120
|
+
}
|
|
23121
|
+
return null;
|
|
23122
|
+
}
|
|
23123
|
+
}
|
|
23124
|
+
];
|
|
23125
|
+
},
|
|
23126
|
+
renderHTML({ HTMLAttributes }) {
|
|
23127
|
+
return ["sup", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];
|
|
23128
|
+
},
|
|
23129
|
+
addCommands() {
|
|
23130
|
+
return {
|
|
23131
|
+
setSuperscript: () => ({ commands }) => {
|
|
23132
|
+
return commands.setMark(this.name);
|
|
23133
|
+
},
|
|
23134
|
+
toggleSuperscript: () => ({ commands }) => {
|
|
23135
|
+
return commands.toggleMark(this.name);
|
|
23136
|
+
},
|
|
23137
|
+
unsetSuperscript: () => ({ commands }) => {
|
|
23138
|
+
return commands.unsetMark(this.name);
|
|
23139
|
+
}
|
|
23140
|
+
};
|
|
23141
|
+
},
|
|
23142
|
+
addKeyboardShortcuts() {
|
|
23143
|
+
return {
|
|
23144
|
+
"Mod-.": () => this.editor.commands.toggleSuperscript()
|
|
23145
|
+
};
|
|
23146
|
+
}
|
|
23147
|
+
});
|
|
23058
23148
|
var TextAlign = Extension.create({
|
|
23059
23149
|
name: "textAlign",
|
|
23060
23150
|
addOptions() {
|
|
@@ -41869,7 +41959,22 @@ class EmojiPicker {
|
|
|
41869
41959
|
}
|
|
41870
41960
|
}
|
|
41871
41961
|
const DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024;
|
|
41872
|
-
const ACCEPTED_IMAGE_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp", "image/svg+xml"];
|
|
41962
|
+
const ACCEPTED_IMAGE_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp", "image/svg+xml", "image/bmp"];
|
|
41963
|
+
const EXT_TO_MIME = {
|
|
41964
|
+
jpg: "image/jpeg",
|
|
41965
|
+
jpeg: "image/jpeg",
|
|
41966
|
+
jpe: "image/jpeg",
|
|
41967
|
+
png: "image/png",
|
|
41968
|
+
gif: "image/gif",
|
|
41969
|
+
bmp: "image/bmp",
|
|
41970
|
+
webp: "image/webp",
|
|
41971
|
+
svg: "image/svg+xml"
|
|
41972
|
+
};
|
|
41973
|
+
function parseImageFileTypes(spec) {
|
|
41974
|
+
if (!spec) return null;
|
|
41975
|
+
const exts = spec.split(/[\s,|]+/).map((s) => s.trim().toLowerCase().replace(/^\./, "")).filter(Boolean);
|
|
41976
|
+
return exts.length > 0 ? exts : null;
|
|
41977
|
+
}
|
|
41873
41978
|
const SVG_DANGEROUS_TAGS = [
|
|
41874
41979
|
"script",
|
|
41875
41980
|
"foreignobject",
|
|
@@ -42144,16 +42249,44 @@ class ImageUpload {
|
|
|
42144
42249
|
errorEl.textContent = "";
|
|
42145
42250
|
}
|
|
42146
42251
|
}
|
|
42147
|
-
|
|
42148
|
-
|
|
42252
|
+
/** Whether the file matches the configured/default accepted image types. */
|
|
42253
|
+
isAcceptedType(file) {
|
|
42254
|
+
const exts = parseImageFileTypes(this.options.fileTypes);
|
|
42255
|
+
if (!exts) {
|
|
42256
|
+
return ACCEPTED_IMAGE_TYPES.includes(file.type);
|
|
42257
|
+
}
|
|
42258
|
+
const name = (file.name ?? "").toLowerCase();
|
|
42259
|
+
const dot = name.lastIndexOf(".");
|
|
42260
|
+
const ext = dot >= 0 ? name.slice(dot + 1) : "";
|
|
42261
|
+
if (ext && exts.includes(ext)) return true;
|
|
42262
|
+
const acceptedMimes = exts.map((e) => EXT_TO_MIME[e]).filter(Boolean);
|
|
42263
|
+
return !!file.type && acceptedMimes.includes(file.type);
|
|
42264
|
+
}
|
|
42265
|
+
/**
|
|
42266
|
+
* Validate a file before upload. Returns an error message (translated) to
|
|
42267
|
+
* reject, or null to allow. Runs the caller's validate hook, then the
|
|
42268
|
+
* type and size guards.
|
|
42269
|
+
*/
|
|
42270
|
+
validateFile(file) {
|
|
42149
42271
|
const t = this.options.trans;
|
|
42150
|
-
if (
|
|
42151
|
-
this.
|
|
42152
|
-
return;
|
|
42272
|
+
if (this.options.validate) {
|
|
42273
|
+
const msg = this.options.validate(file);
|
|
42274
|
+
if (msg) return msg;
|
|
42275
|
+
}
|
|
42276
|
+
if (!this.isAcceptedType(file)) {
|
|
42277
|
+
return t("Invalid file type");
|
|
42153
42278
|
}
|
|
42154
42279
|
const maxSize = this.options.uploadMaxSize ?? DEFAULT_MAX_FILE_SIZE;
|
|
42155
42280
|
if (file.size > maxSize) {
|
|
42156
|
-
|
|
42281
|
+
return t("File too large");
|
|
42282
|
+
}
|
|
42283
|
+
return null;
|
|
42284
|
+
}
|
|
42285
|
+
handleFileSelected(file) {
|
|
42286
|
+
this.clearError();
|
|
42287
|
+
const validationError = this.validateFile(file);
|
|
42288
|
+
if (validationError) {
|
|
42289
|
+
this.showError(validationError);
|
|
42157
42290
|
return;
|
|
42158
42291
|
}
|
|
42159
42292
|
this.currentFile = file;
|
|
@@ -42240,16 +42373,14 @@ class ImageUpload {
|
|
|
42240
42373
|
this.options.onInsert(src, alt);
|
|
42241
42374
|
this.close();
|
|
42242
42375
|
} catch (err) {
|
|
42243
|
-
|
|
42376
|
+
const message = err instanceof Error && err.message ? err.message : this.options.trans("Upload failed");
|
|
42377
|
+
this.showError(message);
|
|
42244
42378
|
}
|
|
42245
42379
|
}
|
|
42246
42380
|
uploadFile(file) {
|
|
42247
|
-
|
|
42248
|
-
|
|
42249
|
-
|
|
42250
|
-
const maxSize = this.options.uploadMaxSize ?? DEFAULT_MAX_FILE_SIZE;
|
|
42251
|
-
if (file.size > maxSize) {
|
|
42252
|
-
return Promise.reject(new Error("File too large"));
|
|
42381
|
+
const validationError = this.validateFile(file);
|
|
42382
|
+
if (validationError) {
|
|
42383
|
+
return Promise.reject(new Error(validationError));
|
|
42253
42384
|
}
|
|
42254
42385
|
if (file.type === "image/svg+xml") {
|
|
42255
42386
|
return this.sanitizeAndUploadSVG(file);
|
|
@@ -42885,6 +43016,126 @@ class LinkEditor {
|
|
|
42885
43016
|
}
|
|
42886
43017
|
}
|
|
42887
43018
|
}
|
|
43019
|
+
class AnchorDialog {
|
|
43020
|
+
options;
|
|
43021
|
+
overlay = null;
|
|
43022
|
+
dialog = null;
|
|
43023
|
+
nameInput = null;
|
|
43024
|
+
errorEl = null;
|
|
43025
|
+
constructor(options) {
|
|
43026
|
+
this.options = options;
|
|
43027
|
+
}
|
|
43028
|
+
get tiptap() {
|
|
43029
|
+
return this.options.editor.getTipTap();
|
|
43030
|
+
}
|
|
43031
|
+
open() {
|
|
43032
|
+
if (!this.overlay) {
|
|
43033
|
+
this.createDialog();
|
|
43034
|
+
}
|
|
43035
|
+
if (this.nameInput) this.nameInput.value = "";
|
|
43036
|
+
this.clearError();
|
|
43037
|
+
this.overlay.style.display = "flex";
|
|
43038
|
+
this.nameInput?.focus();
|
|
43039
|
+
}
|
|
43040
|
+
close() {
|
|
43041
|
+
if (this.overlay) {
|
|
43042
|
+
this.overlay.style.display = "none";
|
|
43043
|
+
}
|
|
43044
|
+
}
|
|
43045
|
+
clearError() {
|
|
43046
|
+
if (this.errorEl) {
|
|
43047
|
+
this.errorEl.style.display = "none";
|
|
43048
|
+
this.errorEl.textContent = "";
|
|
43049
|
+
}
|
|
43050
|
+
}
|
|
43051
|
+
showError(message) {
|
|
43052
|
+
if (this.errorEl) {
|
|
43053
|
+
this.errorEl.textContent = message;
|
|
43054
|
+
this.errorEl.style.display = "block";
|
|
43055
|
+
}
|
|
43056
|
+
}
|
|
43057
|
+
save() {
|
|
43058
|
+
const trans = this.options.trans;
|
|
43059
|
+
const name = this.nameInput?.value.trim() ?? "";
|
|
43060
|
+
if (!name) {
|
|
43061
|
+
this.showError(trans("Anchor name is required"));
|
|
43062
|
+
return;
|
|
43063
|
+
}
|
|
43064
|
+
if (/\s/.test(name)) {
|
|
43065
|
+
this.showError(trans("Anchor name cannot contain spaces"));
|
|
43066
|
+
return;
|
|
43067
|
+
}
|
|
43068
|
+
this.tiptap?.chain().focus().insertContent({ type: "anchor", attrs: { id: name, name } }).run();
|
|
43069
|
+
this.close();
|
|
43070
|
+
}
|
|
43071
|
+
createDialog() {
|
|
43072
|
+
const trans = this.options.trans;
|
|
43073
|
+
const skin = this.options.editor.getConfig().skin ?? "oxide";
|
|
43074
|
+
this.overlay = document.createElement("div");
|
|
43075
|
+
this.overlay.className = "md-dialog-overlay";
|
|
43076
|
+
this.overlay.addEventListener("click", (e) => {
|
|
43077
|
+
if (e.target === this.overlay) {
|
|
43078
|
+
this.close();
|
|
43079
|
+
}
|
|
43080
|
+
});
|
|
43081
|
+
const themeWrapper = document.createElement("div");
|
|
43082
|
+
themeWrapper.className = `md-editor-${skin}`;
|
|
43083
|
+
themeWrapper.style.display = "contents";
|
|
43084
|
+
this.dialog = document.createElement("div");
|
|
43085
|
+
this.dialog.className = "md-dialog md-anchor-dialog";
|
|
43086
|
+
const header = document.createElement("div");
|
|
43087
|
+
header.className = "md-dialog-header";
|
|
43088
|
+
header.innerHTML = `
|
|
43089
|
+
<h3>${trans("Insert anchor")}</h3>
|
|
43090
|
+
<button type="button" class="md-dialog-close">×</button>
|
|
43091
|
+
`;
|
|
43092
|
+
header.querySelector(".md-dialog-close")?.addEventListener("click", () => this.close());
|
|
43093
|
+
const body = document.createElement("div");
|
|
43094
|
+
body.className = "md-dialog-body";
|
|
43095
|
+
const nameRow = document.createElement("div");
|
|
43096
|
+
nameRow.className = "md-anchor-dialog-row";
|
|
43097
|
+
nameRow.innerHTML = `<label>${trans("Anchor name")}</label>`;
|
|
43098
|
+
this.nameInput = document.createElement("input");
|
|
43099
|
+
this.nameInput.type = "text";
|
|
43100
|
+
this.nameInput.className = "md-anchor-dialog-input";
|
|
43101
|
+
nameRow.appendChild(this.nameInput);
|
|
43102
|
+
this.errorEl = document.createElement("div");
|
|
43103
|
+
this.errorEl.className = "md-anchor-dialog-error";
|
|
43104
|
+
this.errorEl.style.display = "none";
|
|
43105
|
+
const footer = document.createElement("div");
|
|
43106
|
+
footer.className = "md-anchor-dialog-footer";
|
|
43107
|
+
footer.innerHTML = `
|
|
43108
|
+
<button type="button" class="md-btn md-anchor-dialog-cancel">${trans("Cancel")}</button>
|
|
43109
|
+
<button type="button" class="md-btn md-btn-primary md-anchor-dialog-save">${trans("Save")}</button>
|
|
43110
|
+
`;
|
|
43111
|
+
footer.querySelector(".md-anchor-dialog-cancel")?.addEventListener("click", () => this.close());
|
|
43112
|
+
footer.querySelector(".md-anchor-dialog-save")?.addEventListener("click", () => this.save());
|
|
43113
|
+
body.appendChild(nameRow);
|
|
43114
|
+
body.appendChild(this.errorEl);
|
|
43115
|
+
body.appendChild(footer);
|
|
43116
|
+
this.dialog.appendChild(header);
|
|
43117
|
+
this.dialog.appendChild(body);
|
|
43118
|
+
themeWrapper.appendChild(this.dialog);
|
|
43119
|
+
this.overlay.appendChild(themeWrapper);
|
|
43120
|
+
this.overlay.addEventListener("keydown", (e) => {
|
|
43121
|
+
if (e.key === "Escape") {
|
|
43122
|
+
this.close();
|
|
43123
|
+
} else if (e.key === "Enter") {
|
|
43124
|
+
this.save();
|
|
43125
|
+
}
|
|
43126
|
+
});
|
|
43127
|
+
document.body.appendChild(this.overlay);
|
|
43128
|
+
}
|
|
43129
|
+
destroy() {
|
|
43130
|
+
if (this.overlay) {
|
|
43131
|
+
this.overlay.remove();
|
|
43132
|
+
this.overlay = null;
|
|
43133
|
+
this.dialog = null;
|
|
43134
|
+
this.nameInput = null;
|
|
43135
|
+
this.errorEl = null;
|
|
43136
|
+
}
|
|
43137
|
+
}
|
|
43138
|
+
}
|
|
42888
43139
|
const SPEECH_LANGUAGES = [
|
|
42889
43140
|
{ code: "ar-SA", name: "العربية" },
|
|
42890
43141
|
{ code: "ca-ES", name: "Català" },
|
|
@@ -43455,6 +43706,13 @@ const DEFAULT_BUTTON_PRIORITY = {
|
|
|
43455
43706
|
link: 1,
|
|
43456
43707
|
forecolor: 1
|
|
43457
43708
|
};
|
|
43709
|
+
const DEFAULT_BLOCK_FORMATS = "Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6";
|
|
43710
|
+
const DEFAULT_STYLE_FORMATS = [
|
|
43711
|
+
{ title: "Blue Title", block: "h3", styles: { color: "Blue" } },
|
|
43712
|
+
{ title: "Red Title", block: "h3", styles: { color: "Red" } },
|
|
43713
|
+
{ title: "Marker: Yellow", inline: "span", styles: { "background-color": "Yellow" } },
|
|
43714
|
+
{ title: "Marker: Green", inline: "span", styles: { "background-color": "Lime" } }
|
|
43715
|
+
];
|
|
43458
43716
|
const DEFAULT_COLORS = [
|
|
43459
43717
|
{ value: "#000000", label: "Black" },
|
|
43460
43718
|
{ value: "#434343", label: "Dark Gray 4" },
|
|
@@ -43508,6 +43766,7 @@ class Toolbar {
|
|
|
43508
43766
|
searchReplace = null;
|
|
43509
43767
|
sourceEditor = null;
|
|
43510
43768
|
linkEditor = null;
|
|
43769
|
+
anchorDialog = null;
|
|
43511
43770
|
speechToText = null;
|
|
43512
43771
|
dictation = null;
|
|
43513
43772
|
updateInterval = null;
|
|
@@ -43704,6 +43963,33 @@ class Toolbar {
|
|
|
43704
43963
|
return this.createActionButton("strikethrough", this.icon("strikethrough"), this.trans("Strikethrough"), () => {
|
|
43705
43964
|
this.tiptap?.chain().focus().toggleStrike().run();
|
|
43706
43965
|
}, () => this.tiptap?.isActive("strike") ?? false);
|
|
43966
|
+
case "subscript":
|
|
43967
|
+
return this.createActionButton("subscript", this.icon("subscript"), this.trans("Subscript"), () => {
|
|
43968
|
+
this.tiptap?.chain().focus().toggleSubscript().run();
|
|
43969
|
+
}, () => this.tiptap?.isActive("subscript") ?? false);
|
|
43970
|
+
case "superscript":
|
|
43971
|
+
return this.createActionButton("superscript", this.icon("superscript"), this.trans("Superscript"), () => {
|
|
43972
|
+
this.tiptap?.chain().focus().toggleSuperscript().run();
|
|
43973
|
+
}, () => this.tiptap?.isActive("superscript") ?? false);
|
|
43974
|
+
case "hr":
|
|
43975
|
+
return this.createActionButton("hr", this.icon("hr"), this.trans("Horizontal rule"), () => {
|
|
43976
|
+
this.tiptap?.chain().focus().setHorizontalRule().run();
|
|
43977
|
+
});
|
|
43978
|
+
case "blocks":
|
|
43979
|
+
case "formatselect":
|
|
43980
|
+
return this.createFormatDropdown();
|
|
43981
|
+
case "styles":
|
|
43982
|
+
return this.createStylesDropdown();
|
|
43983
|
+
case "table":
|
|
43984
|
+
return this.createTableDropdown();
|
|
43985
|
+
case "anchor":
|
|
43986
|
+
return this.createActionButton("anchor", this.icon("anchor"), this.trans("Insert anchor"), () => {
|
|
43987
|
+
this.openAnchorDialog();
|
|
43988
|
+
});
|
|
43989
|
+
case "unlink":
|
|
43990
|
+
return this.createActionButton("unlink", this.icon("unlink"), this.trans("Unlink"), () => {
|
|
43991
|
+
this.tiptap?.chain().focus().unsetLink().run();
|
|
43992
|
+
}, () => this.tiptap?.isActive("link") ?? false);
|
|
43707
43993
|
case "bullist":
|
|
43708
43994
|
return this.createActionButton("bullist", this.icon("bullist"), this.trans("Bullet list"), () => {
|
|
43709
43995
|
this.tiptap?.chain().focus().toggleBulletList().run();
|
|
@@ -43956,6 +44242,126 @@ class Toolbar {
|
|
|
43956
44242
|
}
|
|
43957
44243
|
});
|
|
43958
44244
|
}
|
|
44245
|
+
createFormatDropdown() {
|
|
44246
|
+
const spec = this.options.config.block_formats ?? DEFAULT_BLOCK_FORMATS;
|
|
44247
|
+
const options = spec.split(";").map((entry) => {
|
|
44248
|
+
const [label, value] = entry.split("=");
|
|
44249
|
+
return { label: this.trans(label.trim()), value: (value ?? label).trim().toLowerCase() };
|
|
44250
|
+
}).filter((o) => o.value);
|
|
44251
|
+
return this.createDropdown("blocks", this.trans("Format"), options, (option) => {
|
|
44252
|
+
const chain = this.tiptap?.chain().focus();
|
|
44253
|
+
if (!chain) return;
|
|
44254
|
+
const m = /^h([1-6])$/.exec(option.value);
|
|
44255
|
+
if (m) {
|
|
44256
|
+
chain.toggleHeading({ level: Number(m[1]) }).run();
|
|
44257
|
+
} else {
|
|
44258
|
+
chain.setParagraph().run();
|
|
44259
|
+
}
|
|
44260
|
+
}, () => {
|
|
44261
|
+
for (let level = 1; level <= 6; level++) {
|
|
44262
|
+
if (this.tiptap?.isActive("heading", { level })) return `h${level}`;
|
|
44263
|
+
}
|
|
44264
|
+
return this.tiptap?.isActive("paragraph") ? "p" : "";
|
|
44265
|
+
});
|
|
44266
|
+
}
|
|
44267
|
+
getStyleFormats() {
|
|
44268
|
+
return this.options.config.style_formats ?? DEFAULT_STYLE_FORMATS;
|
|
44269
|
+
}
|
|
44270
|
+
createStylesDropdown() {
|
|
44271
|
+
const formats = this.getStyleFormats();
|
|
44272
|
+
const options = formats.map((f, i) => ({ label: f.title, value: String(i) }));
|
|
44273
|
+
return this.createDropdown("styles", this.trans("Styles"), options, (option) => {
|
|
44274
|
+
const fmt = formats[Number(option.value)];
|
|
44275
|
+
if (fmt) this.applyStyleFormat(fmt);
|
|
44276
|
+
});
|
|
44277
|
+
}
|
|
44278
|
+
/**
|
|
44279
|
+
* Apply a StyleFormat to the current selection. Block elements map to
|
|
44280
|
+
* heading/paragraph; color and background map to the existing Color /
|
|
44281
|
+
* Highlight marks; classes map to the InlineStyle textStyle class.
|
|
44282
|
+
* (Arbitrary element wrapping from CKEditor stylesSet is not supported.)
|
|
44283
|
+
*/
|
|
44284
|
+
applyStyleFormat(fmt) {
|
|
44285
|
+
const chain = this.tiptap?.chain().focus();
|
|
44286
|
+
if (!chain) return;
|
|
44287
|
+
const blockEl = fmt.block;
|
|
44288
|
+
if (blockEl) {
|
|
44289
|
+
const m = /^h([1-6])$/.exec(blockEl);
|
|
44290
|
+
if (m) {
|
|
44291
|
+
chain.setHeading({ level: Number(m[1]) });
|
|
44292
|
+
} else if (blockEl === "p") {
|
|
44293
|
+
chain.setParagraph();
|
|
44294
|
+
}
|
|
44295
|
+
}
|
|
44296
|
+
if (fmt.styles) {
|
|
44297
|
+
if (fmt.styles.color) {
|
|
44298
|
+
chain.setColor(fmt.styles.color);
|
|
44299
|
+
}
|
|
44300
|
+
const bg = fmt.styles["background-color"];
|
|
44301
|
+
if (bg) {
|
|
44302
|
+
chain.setHighlight({ color: bg });
|
|
44303
|
+
}
|
|
44304
|
+
}
|
|
44305
|
+
if (fmt.classes) {
|
|
44306
|
+
chain.setInlineClass(fmt.classes);
|
|
44307
|
+
}
|
|
44308
|
+
chain.run();
|
|
44309
|
+
}
|
|
44310
|
+
createTableDropdown() {
|
|
44311
|
+
const t = this.trans;
|
|
44312
|
+
const options = [
|
|
44313
|
+
{ label: t("Insert table"), value: "insert" },
|
|
44314
|
+
{ label: t("Insert row before"), value: "rowBefore" },
|
|
44315
|
+
{ label: t("Insert row after"), value: "rowAfter" },
|
|
44316
|
+
{ label: t("Delete row"), value: "deleteRow" },
|
|
44317
|
+
{ label: t("Insert column before"), value: "colBefore" },
|
|
44318
|
+
{ label: t("Insert column after"), value: "colAfter" },
|
|
44319
|
+
{ label: t("Delete column"), value: "deleteCol" },
|
|
44320
|
+
{ label: t("Merge cells"), value: "merge" },
|
|
44321
|
+
{ label: t("Split cell"), value: "split" },
|
|
44322
|
+
{ label: t("Toggle header row"), value: "headerRow" },
|
|
44323
|
+
{ label: t("Delete table"), value: "deleteTable" }
|
|
44324
|
+
];
|
|
44325
|
+
return this.createDropdown("table", this.trans("Table"), options, (option) => {
|
|
44326
|
+
const chain = this.tiptap?.chain().focus();
|
|
44327
|
+
if (!chain) return;
|
|
44328
|
+
switch (option.value) {
|
|
44329
|
+
case "insert":
|
|
44330
|
+
chain.insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run();
|
|
44331
|
+
break;
|
|
44332
|
+
case "rowBefore":
|
|
44333
|
+
chain.addRowBefore().run();
|
|
44334
|
+
break;
|
|
44335
|
+
case "rowAfter":
|
|
44336
|
+
chain.addRowAfter().run();
|
|
44337
|
+
break;
|
|
44338
|
+
case "deleteRow":
|
|
44339
|
+
chain.deleteRow().run();
|
|
44340
|
+
break;
|
|
44341
|
+
case "colBefore":
|
|
44342
|
+
chain.addColumnBefore().run();
|
|
44343
|
+
break;
|
|
44344
|
+
case "colAfter":
|
|
44345
|
+
chain.addColumnAfter().run();
|
|
44346
|
+
break;
|
|
44347
|
+
case "deleteCol":
|
|
44348
|
+
chain.deleteColumn().run();
|
|
44349
|
+
break;
|
|
44350
|
+
case "merge":
|
|
44351
|
+
chain.mergeCells().run();
|
|
44352
|
+
break;
|
|
44353
|
+
case "split":
|
|
44354
|
+
chain.splitCell().run();
|
|
44355
|
+
break;
|
|
44356
|
+
case "headerRow":
|
|
44357
|
+
chain.toggleHeaderRow().run();
|
|
44358
|
+
break;
|
|
44359
|
+
case "deleteTable":
|
|
44360
|
+
chain.deleteTable().run();
|
|
44361
|
+
break;
|
|
44362
|
+
}
|
|
44363
|
+
});
|
|
44364
|
+
}
|
|
43959
44365
|
/**
|
|
43960
44366
|
* Position a fixed-position menu below its trigger button.
|
|
43961
44367
|
* Uses getBoundingClientRect so the menu escapes any overflow:hidden ancestor.
|
|
@@ -44193,6 +44599,15 @@ class Toolbar {
|
|
|
44193
44599
|
case "strikethrough":
|
|
44194
44600
|
isActive2 = this.tiptap?.isActive("strike") ?? false;
|
|
44195
44601
|
break;
|
|
44602
|
+
case "subscript":
|
|
44603
|
+
isActive2 = this.tiptap?.isActive("subscript") ?? false;
|
|
44604
|
+
break;
|
|
44605
|
+
case "superscript":
|
|
44606
|
+
isActive2 = this.tiptap?.isActive("superscript") ?? false;
|
|
44607
|
+
break;
|
|
44608
|
+
case "unlink":
|
|
44609
|
+
isActive2 = this.tiptap?.isActive("link") ?? false;
|
|
44610
|
+
break;
|
|
44196
44611
|
case "bullist":
|
|
44197
44612
|
isActive2 = this.tiptap?.isActive("bulletList") ?? false;
|
|
44198
44613
|
break;
|
|
@@ -44239,6 +44654,9 @@ class Toolbar {
|
|
|
44239
44654
|
uploadBasePath: this.options.config.images_upload_base_path,
|
|
44240
44655
|
uploadMaxSize: this.options.config.images_upload_max_size,
|
|
44241
44656
|
uploadHeaders: this.options.config.images_upload_headers,
|
|
44657
|
+
fileTypes: this.options.config.images_file_types,
|
|
44658
|
+
validate: this.options.config.images_upload_validate,
|
|
44659
|
+
onError: this.options.config.images_upload_error,
|
|
44242
44660
|
trans: this.trans
|
|
44243
44661
|
});
|
|
44244
44662
|
}
|
|
@@ -44253,6 +44671,25 @@ class Toolbar {
|
|
|
44253
44671
|
}
|
|
44254
44672
|
this.linkEditor.open();
|
|
44255
44673
|
}
|
|
44674
|
+
openAnchorDialog() {
|
|
44675
|
+
if (!this.anchorDialog) {
|
|
44676
|
+
this.anchorDialog = new AnchorDialog({
|
|
44677
|
+
editor: this.options.editor,
|
|
44678
|
+
trans: this.trans
|
|
44679
|
+
});
|
|
44680
|
+
}
|
|
44681
|
+
this.anchorDialog.open();
|
|
44682
|
+
}
|
|
44683
|
+
/**
|
|
44684
|
+
* Enable or disable the whole toolbar (used for read-only mode).
|
|
44685
|
+
* Blocks pointer interaction and dims the toolbar via CSS.
|
|
44686
|
+
*/
|
|
44687
|
+
setEnabled(enabled) {
|
|
44688
|
+
this.container.classList.toggle("md-toolbar-disabled", !enabled);
|
|
44689
|
+
if (!enabled) {
|
|
44690
|
+
this.closeAllDropdowns();
|
|
44691
|
+
}
|
|
44692
|
+
}
|
|
44256
44693
|
openCharMap() {
|
|
44257
44694
|
if (!this.charMap) {
|
|
44258
44695
|
this.charMap = new CharacterMap({
|
|
@@ -44361,6 +44798,12 @@ class Toolbar {
|
|
|
44361
44798
|
this.speechToText = null;
|
|
44362
44799
|
this.dictation?.destroy();
|
|
44363
44800
|
this.dictation = null;
|
|
44801
|
+
this.anchorDialog?.destroy();
|
|
44802
|
+
this.anchorDialog = null;
|
|
44803
|
+
this.linkEditor?.destroy();
|
|
44804
|
+
this.linkEditor = null;
|
|
44805
|
+
this.sourceEditor?.destroy();
|
|
44806
|
+
this.sourceEditor = null;
|
|
44364
44807
|
this.buttonElements.clear();
|
|
44365
44808
|
this.dropdowns.clear();
|
|
44366
44809
|
this.removeBodyMenus();
|
|
@@ -44385,6 +44828,9 @@ class Toolbar {
|
|
|
44385
44828
|
this.searchReplace?.destroy();
|
|
44386
44829
|
this.speechToText?.destroy();
|
|
44387
44830
|
this.dictation?.destroy();
|
|
44831
|
+
this.anchorDialog?.destroy();
|
|
44832
|
+
this.linkEditor?.destroy();
|
|
44833
|
+
this.sourceEditor?.destroy();
|
|
44388
44834
|
this.buttonElements.clear();
|
|
44389
44835
|
this.dropdowns.clear();
|
|
44390
44836
|
this.removeBodyMenus();
|
|
@@ -44403,6 +44849,10 @@ const SVG_ALIGN_RIGHT = '<svg width="16" height="16" viewBox="0 0 24 24" fill="n
|
|
|
44403
44849
|
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>';
|
|
44404
44850
|
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>';
|
|
44405
44851
|
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>';
|
|
44852
|
+
const SVG_HR = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="3" y1="12" x2="21" y2="12"/></svg>';
|
|
44853
|
+
const SVG_TABLE = '<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="3" y="3" width="18" height="18" rx="1"/><line x1="3" y1="9" x2="21" y2="9"/><line x1="3" y1="15" x2="21" y2="15"/><line x1="9" y1="3" x2="9" y2="21"/><line x1="15" y1="3" x2="15" y2="21"/></svg>';
|
|
44854
|
+
const SVG_ANCHOR = '<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="5" r="3"/><line x1="12" y1="22" x2="12" y2="8"/><path d="M5 12H2a10 10 0 0 0 20 0h-3"/></svg>';
|
|
44855
|
+
const SVG_UNLINK = '<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="M18.84 12.25l1.72-1.71a4 4 0 0 0-5.66-5.66l-1.71 1.72"/><path d="M5.17 11.75l-1.71 1.71a4 4 0 0 0 5.66 5.66l1.71-1.71"/><line x1="2" y1="2" x2="22" y2="22"/></svg>';
|
|
44406
44856
|
const DEFAULT_ICONS = {
|
|
44407
44857
|
bold: "B",
|
|
44408
44858
|
italic: "I",
|
|
@@ -44436,7 +44886,15 @@ const DEFAULT_ICONS = {
|
|
|
44436
44886
|
searchreplace: "🔍",
|
|
44437
44887
|
speechtotext: "🎤",
|
|
44438
44888
|
dictate: "🎙️",
|
|
44439
|
-
togglemore: "…"
|
|
44889
|
+
togglemore: "…",
|
|
44890
|
+
subscript: "X₂",
|
|
44891
|
+
superscript: "X²",
|
|
44892
|
+
hr: SVG_HR,
|
|
44893
|
+
table: SVG_TABLE,
|
|
44894
|
+
anchor: SVG_ANCHOR,
|
|
44895
|
+
unlink: SVG_UNLINK,
|
|
44896
|
+
blocks: "¶",
|
|
44897
|
+
styles: "A"
|
|
44440
44898
|
};
|
|
44441
44899
|
const CONFAB_ICONS = {
|
|
44442
44900
|
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>',
|
|
@@ -44471,7 +44929,15 @@ const CONFAB_ICONS = {
|
|
|
44471
44929
|
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>',
|
|
44472
44930
|
speechtotext: '<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="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" y1="19" x2="12" y2="23"/><line x1="8" y1="23" x2="16" y2="23"/></svg>',
|
|
44473
44931
|
dictate: '<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="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><circle cx="12" cy="12" r="1" fill="currentColor" stroke="none"/><circle cx="12" cy="8" r="1" fill="currentColor" stroke="none"/><circle cx="12" cy="16" r="0.5" fill="currentColor" stroke="none"/></svg>',
|
|
44474
|
-
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>'
|
|
44932
|
+
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>',
|
|
44933
|
+
subscript: '<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 5l8 10M12 5L4 15"/><path d="M20 19h-4c0-1.5.44-2 1.5-2.5S20 15.33 20 14c0-.47-.17-.93-.48-1.29a2 2 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07"/></svg>',
|
|
44934
|
+
superscript: '<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 9l8 10M12 9l-8 10"/><path d="M20 8h-4c0-1.5.44-2 1.5-2.5S20 4.33 20 3c0-.47-.17-.93-.48-1.29a2 2 0 0 0-2.62-.44c-.42.24-.74.62-.9 1.07"/></svg>',
|
|
44935
|
+
hr: SVG_HR,
|
|
44936
|
+
table: SVG_TABLE,
|
|
44937
|
+
anchor: SVG_ANCHOR,
|
|
44938
|
+
unlink: SVG_UNLINK,
|
|
44939
|
+
blocks: '<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="M13 4v16"/><path d="M17 4v16"/><path d="M19 4H9.5a4.5 4.5 0 0 0 0 9H13"/></svg>',
|
|
44940
|
+
styles: '<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="M12 3l4 7h-8z"/><path d="M8 10h8l-4 11z"/></svg>'
|
|
44475
44941
|
};
|
|
44476
44942
|
const FontSize = Extension.create({
|
|
44477
44943
|
name: "fontSize",
|
|
@@ -44616,7 +45082,10 @@ const SignatureBlock = Node3.create({
|
|
|
44616
45082
|
parseHTML() {
|
|
44617
45083
|
return [
|
|
44618
45084
|
{
|
|
44619
|
-
|
|
45085
|
+
// Higher priority than the generic div->paragraph rule used when
|
|
45086
|
+
// forced_root_block is 'div', so the signature wrapper still matches.
|
|
45087
|
+
tag: 'div[id="signature"]',
|
|
45088
|
+
priority: 100
|
|
44620
45089
|
}
|
|
44621
45090
|
];
|
|
44622
45091
|
},
|
|
@@ -44672,6 +45141,80 @@ const Mention = Node3.create({
|
|
|
44672
45141
|
];
|
|
44673
45142
|
}
|
|
44674
45143
|
});
|
|
45144
|
+
const Anchor = Node3.create({
|
|
45145
|
+
name: "anchor",
|
|
45146
|
+
inline: true,
|
|
45147
|
+
group: "inline",
|
|
45148
|
+
atom: true,
|
|
45149
|
+
selectable: true,
|
|
45150
|
+
addOptions() {
|
|
45151
|
+
return {
|
|
45152
|
+
HTMLAttributes: { class: "md-anchor" }
|
|
45153
|
+
};
|
|
45154
|
+
},
|
|
45155
|
+
addAttributes() {
|
|
45156
|
+
return {
|
|
45157
|
+
id: {
|
|
45158
|
+
default: null,
|
|
45159
|
+
parseHTML: (element) => element.getAttribute("id"),
|
|
45160
|
+
renderHTML: (attributes) => attributes.id ? { id: attributes.id } : {}
|
|
45161
|
+
},
|
|
45162
|
+
name: {
|
|
45163
|
+
default: null,
|
|
45164
|
+
parseHTML: (element) => element.getAttribute("name"),
|
|
45165
|
+
renderHTML: (attributes) => attributes.name ? { name: attributes.name } : {}
|
|
45166
|
+
}
|
|
45167
|
+
};
|
|
45168
|
+
},
|
|
45169
|
+
parseHTML() {
|
|
45170
|
+
return [{ tag: "a[id]:not([href])", priority: 60 }];
|
|
45171
|
+
},
|
|
45172
|
+
renderHTML({ HTMLAttributes }) {
|
|
45173
|
+
return ["a", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes)];
|
|
45174
|
+
},
|
|
45175
|
+
addCommands() {
|
|
45176
|
+
return {
|
|
45177
|
+
setAnchor: (name) => ({ commands }) => commands.insertContent({ type: this.name, attrs: { id: name, name } })
|
|
45178
|
+
};
|
|
45179
|
+
}
|
|
45180
|
+
});
|
|
45181
|
+
const InlineStyle = Extension.create({
|
|
45182
|
+
name: "inlineStyle",
|
|
45183
|
+
addOptions() {
|
|
45184
|
+
return {
|
|
45185
|
+
types: ["textStyle"]
|
|
45186
|
+
};
|
|
45187
|
+
},
|
|
45188
|
+
addGlobalAttributes() {
|
|
45189
|
+
return [
|
|
45190
|
+
{
|
|
45191
|
+
types: this.options.types,
|
|
45192
|
+
attributes: {
|
|
45193
|
+
styleClass: {
|
|
45194
|
+
default: null,
|
|
45195
|
+
parseHTML: (element) => element.getAttribute("class") || null,
|
|
45196
|
+
renderHTML: (attributes) => {
|
|
45197
|
+
if (!attributes.styleClass) {
|
|
45198
|
+
return {};
|
|
45199
|
+
}
|
|
45200
|
+
return { class: attributes.styleClass };
|
|
45201
|
+
}
|
|
45202
|
+
}
|
|
45203
|
+
}
|
|
45204
|
+
}
|
|
45205
|
+
];
|
|
45206
|
+
},
|
|
45207
|
+
addCommands() {
|
|
45208
|
+
return {
|
|
45209
|
+
setInlineClass: (className) => ({ chain }) => {
|
|
45210
|
+
return chain().setMark("textStyle", { styleClass: className }).run();
|
|
45211
|
+
},
|
|
45212
|
+
unsetInlineClass: () => ({ chain }) => {
|
|
45213
|
+
return chain().setMark("textStyle", { styleClass: null }).removeEmptyTextStyle().run();
|
|
45214
|
+
}
|
|
45215
|
+
};
|
|
45216
|
+
}
|
|
45217
|
+
});
|
|
44675
45218
|
const WORD_MARKERS = [
|
|
44676
45219
|
'xmlns:o="urn:schemas-microsoft-com:office:office"',
|
|
44677
45220
|
'xmlns:w="urn:schemas-microsoft-com:office:word"',
|
|
@@ -45133,7 +45676,37 @@ const en = {
|
|
|
45133
45676
|
"No speech detected": "No speech detected",
|
|
45134
45677
|
"Microphone access denied": "Microphone access denied",
|
|
45135
45678
|
"No microphone found": "No microphone found",
|
|
45136
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
45679
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
45680
|
+
"Subscript": "Subscript",
|
|
45681
|
+
"Superscript": "Superscript",
|
|
45682
|
+
"Horizontal rule": "Horizontal rule",
|
|
45683
|
+
"Unlink": "Unlink",
|
|
45684
|
+
"Format": "Format",
|
|
45685
|
+
"Paragraph": "Paragraph",
|
|
45686
|
+
"Heading 1": "Heading 1",
|
|
45687
|
+
"Heading 2": "Heading 2",
|
|
45688
|
+
"Heading 3": "Heading 3",
|
|
45689
|
+
"Heading 4": "Heading 4",
|
|
45690
|
+
"Heading 5": "Heading 5",
|
|
45691
|
+
"Heading 6": "Heading 6",
|
|
45692
|
+
"Styles": "Styles",
|
|
45693
|
+
"Insert anchor": "Insert anchor",
|
|
45694
|
+
"Anchor": "Anchor",
|
|
45695
|
+
"Anchor name": "Anchor name",
|
|
45696
|
+
"Anchor name is required": "Anchor name is required",
|
|
45697
|
+
"Anchor name cannot contain spaces": "Anchor name cannot contain spaces",
|
|
45698
|
+
"Table": "Table",
|
|
45699
|
+
"Insert table": "Insert table",
|
|
45700
|
+
"Insert row before": "Insert row before",
|
|
45701
|
+
"Insert row after": "Insert row after",
|
|
45702
|
+
"Delete row": "Delete row",
|
|
45703
|
+
"Insert column before": "Insert column before",
|
|
45704
|
+
"Insert column after": "Insert column after",
|
|
45705
|
+
"Delete column": "Delete column",
|
|
45706
|
+
"Merge cells": "Merge cells",
|
|
45707
|
+
"Split cell": "Split cell",
|
|
45708
|
+
"Toggle header row": "Toggle header row",
|
|
45709
|
+
"Delete table": "Delete table"
|
|
45137
45710
|
};
|
|
45138
45711
|
const ar = {
|
|
45139
45712
|
"Bold": "غامق",
|
|
@@ -45218,7 +45791,37 @@ const ar = {
|
|
|
45218
45791
|
"No speech detected": "?? ??? ?????? ????",
|
|
45219
45792
|
"Microphone access denied": "?? ??? ?????? ??? ??????????",
|
|
45220
45793
|
"No microphone found": "No microphone found",
|
|
45221
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
45794
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
45795
|
+
"Subscript": "منخفض",
|
|
45796
|
+
"Superscript": "مرتفع",
|
|
45797
|
+
"Horizontal rule": "خط أفقي",
|
|
45798
|
+
"Unlink": "إزالة الرابط",
|
|
45799
|
+
"Format": "تنسيق",
|
|
45800
|
+
"Paragraph": "فقرة",
|
|
45801
|
+
"Heading 1": "عنوان 1",
|
|
45802
|
+
"Heading 2": "عنوان 2",
|
|
45803
|
+
"Heading 3": "عنوان 3",
|
|
45804
|
+
"Heading 4": "عنوان 4",
|
|
45805
|
+
"Heading 5": "عنوان 5",
|
|
45806
|
+
"Heading 6": "عنوان 6",
|
|
45807
|
+
"Styles": "أنماط",
|
|
45808
|
+
"Insert anchor": "إدراج مرساة",
|
|
45809
|
+
"Anchor": "مرساة",
|
|
45810
|
+
"Anchor name": "اسم المرساة",
|
|
45811
|
+
"Anchor name is required": "اسم المرساة مطلوب",
|
|
45812
|
+
"Anchor name cannot contain spaces": "لا يمكن أن يحتوي اسم المرساة على مسافات",
|
|
45813
|
+
"Table": "جدول",
|
|
45814
|
+
"Insert table": "إدراج جدول",
|
|
45815
|
+
"Insert row before": "إدراج صف قبل",
|
|
45816
|
+
"Insert row after": "إدراج صف بعد",
|
|
45817
|
+
"Delete row": "حذف الصف",
|
|
45818
|
+
"Insert column before": "إدراج عمود قبل",
|
|
45819
|
+
"Insert column after": "إدراج عمود بعد",
|
|
45820
|
+
"Delete column": "حذف العمود",
|
|
45821
|
+
"Merge cells": "دمج الخلايا",
|
|
45822
|
+
"Split cell": "تقسيم الخلية",
|
|
45823
|
+
"Toggle header row": "تبديل صف الرأس",
|
|
45824
|
+
"Delete table": "حذف الجدول"
|
|
45222
45825
|
};
|
|
45223
45826
|
const ca = {
|
|
45224
45827
|
"Bold": "Negreta",
|
|
@@ -45303,7 +45906,37 @@ const ca = {
|
|
|
45303
45906
|
"No speech detected": "No s'ha detectat veu",
|
|
45304
45907
|
"Microphone access denied": "Acc�s al micr�fon denegat",
|
|
45305
45908
|
"No microphone found": "No microphone found",
|
|
45306
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
45909
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
45910
|
+
"Subscript": "Subíndex",
|
|
45911
|
+
"Superscript": "Superíndex",
|
|
45912
|
+
"Horizontal rule": "Línia horitzontal",
|
|
45913
|
+
"Unlink": "Treure enllaç",
|
|
45914
|
+
"Format": "Format",
|
|
45915
|
+
"Paragraph": "Paràgraf",
|
|
45916
|
+
"Heading 1": "Encapçalament 1",
|
|
45917
|
+
"Heading 2": "Encapçalament 2",
|
|
45918
|
+
"Heading 3": "Encapçalament 3",
|
|
45919
|
+
"Heading 4": "Encapçalament 4",
|
|
45920
|
+
"Heading 5": "Encapçalament 5",
|
|
45921
|
+
"Heading 6": "Encapçalament 6",
|
|
45922
|
+
"Styles": "Estils",
|
|
45923
|
+
"Insert anchor": "Inserir àncora",
|
|
45924
|
+
"Anchor": "Àncora",
|
|
45925
|
+
"Anchor name": "Nom de l'àncora",
|
|
45926
|
+
"Anchor name is required": "El nom de l'àncora és obligatori",
|
|
45927
|
+
"Anchor name cannot contain spaces": "El nom de l'àncora no pot contenir espais",
|
|
45928
|
+
"Table": "Taula",
|
|
45929
|
+
"Insert table": "Inserir taula",
|
|
45930
|
+
"Insert row before": "Inserir fila a sobre",
|
|
45931
|
+
"Insert row after": "Inserir fila a sota",
|
|
45932
|
+
"Delete row": "Eliminar fila",
|
|
45933
|
+
"Insert column before": "Inserir columna abans",
|
|
45934
|
+
"Insert column after": "Inserir columna després",
|
|
45935
|
+
"Delete column": "Eliminar columna",
|
|
45936
|
+
"Merge cells": "Combinar cel·les",
|
|
45937
|
+
"Split cell": "Dividir cel·la",
|
|
45938
|
+
"Toggle header row": "Alternar fila de capçalera",
|
|
45939
|
+
"Delete table": "Eliminar taula"
|
|
45307
45940
|
};
|
|
45308
45941
|
const zh = {
|
|
45309
45942
|
"Bold": "粗体",
|
|
@@ -45388,7 +46021,37 @@ const zh = {
|
|
|
45388
46021
|
"No speech detected": "??????",
|
|
45389
46022
|
"Microphone access denied": "????????",
|
|
45390
46023
|
"No microphone found": "No microphone found",
|
|
45391
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46024
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46025
|
+
"Subscript": "下标",
|
|
46026
|
+
"Superscript": "上标",
|
|
46027
|
+
"Horizontal rule": "水平线",
|
|
46028
|
+
"Unlink": "取消链接",
|
|
46029
|
+
"Format": "格式",
|
|
46030
|
+
"Paragraph": "段落",
|
|
46031
|
+
"Heading 1": "标题 1",
|
|
46032
|
+
"Heading 2": "标题 2",
|
|
46033
|
+
"Heading 3": "标题 3",
|
|
46034
|
+
"Heading 4": "标题 4",
|
|
46035
|
+
"Heading 5": "标题 5",
|
|
46036
|
+
"Heading 6": "标题 6",
|
|
46037
|
+
"Styles": "样式",
|
|
46038
|
+
"Insert anchor": "插入锚点",
|
|
46039
|
+
"Anchor": "锚点",
|
|
46040
|
+
"Anchor name": "锚点名称",
|
|
46041
|
+
"Anchor name is required": "锚点名称为必填项",
|
|
46042
|
+
"Anchor name cannot contain spaces": "锚点名称不能包含空格",
|
|
46043
|
+
"Table": "表格",
|
|
46044
|
+
"Insert table": "插入表格",
|
|
46045
|
+
"Insert row before": "在上方插入行",
|
|
46046
|
+
"Insert row after": "在下方插入行",
|
|
46047
|
+
"Delete row": "删除行",
|
|
46048
|
+
"Insert column before": "在左侧插入列",
|
|
46049
|
+
"Insert column after": "在右侧插入列",
|
|
46050
|
+
"Delete column": "删除列",
|
|
46051
|
+
"Merge cells": "合并单元格",
|
|
46052
|
+
"Split cell": "拆分单元格",
|
|
46053
|
+
"Toggle header row": "切换标题行",
|
|
46054
|
+
"Delete table": "删除表格"
|
|
45392
46055
|
};
|
|
45393
46056
|
const cs = {
|
|
45394
46057
|
"Bold": "Tučné",
|
|
@@ -45473,7 +46136,37 @@ const cs = {
|
|
|
45473
46136
|
"No speech detected": "Nebyla detekov�na rec",
|
|
45474
46137
|
"Microphone access denied": "Pr�stup k mikrofonu zam�tnut",
|
|
45475
46138
|
"No microphone found": "No microphone found",
|
|
45476
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46139
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46140
|
+
"Subscript": "Dolní index",
|
|
46141
|
+
"Superscript": "Horní index",
|
|
46142
|
+
"Horizontal rule": "Vodorovná čára",
|
|
46143
|
+
"Unlink": "Odebrat odkaz",
|
|
46144
|
+
"Format": "Formát",
|
|
46145
|
+
"Paragraph": "Odstavec",
|
|
46146
|
+
"Heading 1": "Nadpis 1",
|
|
46147
|
+
"Heading 2": "Nadpis 2",
|
|
46148
|
+
"Heading 3": "Nadpis 3",
|
|
46149
|
+
"Heading 4": "Nadpis 4",
|
|
46150
|
+
"Heading 5": "Nadpis 5",
|
|
46151
|
+
"Heading 6": "Nadpis 6",
|
|
46152
|
+
"Styles": "Styly",
|
|
46153
|
+
"Insert anchor": "Vložit kotvu",
|
|
46154
|
+
"Anchor": "Kotva",
|
|
46155
|
+
"Anchor name": "Název kotvy",
|
|
46156
|
+
"Anchor name is required": "Název kotvy je povinný",
|
|
46157
|
+
"Anchor name cannot contain spaces": "Název kotvy nesmí obsahovat mezery",
|
|
46158
|
+
"Table": "Tabulka",
|
|
46159
|
+
"Insert table": "Vložit tabulku",
|
|
46160
|
+
"Insert row before": "Vložit řádek před",
|
|
46161
|
+
"Insert row after": "Vložit řádek za",
|
|
46162
|
+
"Delete row": "Odstranit řádek",
|
|
46163
|
+
"Insert column before": "Vložit sloupec před",
|
|
46164
|
+
"Insert column after": "Vložit sloupec za",
|
|
46165
|
+
"Delete column": "Odstranit sloupec",
|
|
46166
|
+
"Merge cells": "Sloučit buňky",
|
|
46167
|
+
"Split cell": "Rozdělit buňku",
|
|
46168
|
+
"Toggle header row": "Přepnout řádek záhlaví",
|
|
46169
|
+
"Delete table": "Odstranit tabulku"
|
|
45477
46170
|
};
|
|
45478
46171
|
const da = {
|
|
45479
46172
|
"Bold": "Fed",
|
|
@@ -45558,7 +46251,37 @@ const da = {
|
|
|
45558
46251
|
"No speech detected": "Ingen tale registreret",
|
|
45559
46252
|
"Microphone access denied": "Mikrofonadgang n�gtet",
|
|
45560
46253
|
"No microphone found": "No microphone found",
|
|
45561
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46254
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46255
|
+
"Subscript": "Sænket skrift",
|
|
46256
|
+
"Superscript": "Hævet skrift",
|
|
46257
|
+
"Horizontal rule": "Vandret streg",
|
|
46258
|
+
"Unlink": "Fjern link",
|
|
46259
|
+
"Format": "Format",
|
|
46260
|
+
"Paragraph": "Afsnit",
|
|
46261
|
+
"Heading 1": "Overskrift 1",
|
|
46262
|
+
"Heading 2": "Overskrift 2",
|
|
46263
|
+
"Heading 3": "Overskrift 3",
|
|
46264
|
+
"Heading 4": "Overskrift 4",
|
|
46265
|
+
"Heading 5": "Overskrift 5",
|
|
46266
|
+
"Heading 6": "Overskrift 6",
|
|
46267
|
+
"Styles": "Typografier",
|
|
46268
|
+
"Insert anchor": "Indsæt anker",
|
|
46269
|
+
"Anchor": "Anker",
|
|
46270
|
+
"Anchor name": "Ankernavn",
|
|
46271
|
+
"Anchor name is required": "Ankernavn er påkrævet",
|
|
46272
|
+
"Anchor name cannot contain spaces": "Ankernavn må ikke indeholde mellemrum",
|
|
46273
|
+
"Table": "Tabel",
|
|
46274
|
+
"Insert table": "Indsæt tabel",
|
|
46275
|
+
"Insert row before": "Indsæt række før",
|
|
46276
|
+
"Insert row after": "Indsæt række efter",
|
|
46277
|
+
"Delete row": "Slet række",
|
|
46278
|
+
"Insert column before": "Indsæt kolonne før",
|
|
46279
|
+
"Insert column after": "Indsæt kolonne efter",
|
|
46280
|
+
"Delete column": "Slet kolonne",
|
|
46281
|
+
"Merge cells": "Flet celler",
|
|
46282
|
+
"Split cell": "Opdel celle",
|
|
46283
|
+
"Toggle header row": "Skift overskriftsrække",
|
|
46284
|
+
"Delete table": "Slet tabel"
|
|
45562
46285
|
};
|
|
45563
46286
|
const enGb = {
|
|
45564
46287
|
"Bold": "Bold",
|
|
@@ -45643,7 +46366,37 @@ const enGb = {
|
|
|
45643
46366
|
"No speech detected": "No speech detected",
|
|
45644
46367
|
"Microphone access denied": "Microphone access denied",
|
|
45645
46368
|
"No microphone found": "No microphone found",
|
|
45646
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46369
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46370
|
+
"Subscript": "Subscript",
|
|
46371
|
+
"Superscript": "Superscript",
|
|
46372
|
+
"Horizontal rule": "Horizontal rule",
|
|
46373
|
+
"Unlink": "Unlink",
|
|
46374
|
+
"Format": "Format",
|
|
46375
|
+
"Paragraph": "Paragraph",
|
|
46376
|
+
"Heading 1": "Heading 1",
|
|
46377
|
+
"Heading 2": "Heading 2",
|
|
46378
|
+
"Heading 3": "Heading 3",
|
|
46379
|
+
"Heading 4": "Heading 4",
|
|
46380
|
+
"Heading 5": "Heading 5",
|
|
46381
|
+
"Heading 6": "Heading 6",
|
|
46382
|
+
"Styles": "Styles",
|
|
46383
|
+
"Insert anchor": "Insert anchor",
|
|
46384
|
+
"Anchor": "Anchor",
|
|
46385
|
+
"Anchor name": "Anchor name",
|
|
46386
|
+
"Anchor name is required": "Anchor name is required",
|
|
46387
|
+
"Anchor name cannot contain spaces": "Anchor name cannot contain spaces",
|
|
46388
|
+
"Table": "Table",
|
|
46389
|
+
"Insert table": "Insert table",
|
|
46390
|
+
"Insert row before": "Insert row before",
|
|
46391
|
+
"Insert row after": "Insert row after",
|
|
46392
|
+
"Delete row": "Delete row",
|
|
46393
|
+
"Insert column before": "Insert column before",
|
|
46394
|
+
"Insert column after": "Insert column after",
|
|
46395
|
+
"Delete column": "Delete column",
|
|
46396
|
+
"Merge cells": "Merge cells",
|
|
46397
|
+
"Split cell": "Split cell",
|
|
46398
|
+
"Toggle header row": "Toggle header row",
|
|
46399
|
+
"Delete table": "Delete table"
|
|
45647
46400
|
};
|
|
45648
46401
|
const fi = {
|
|
45649
46402
|
"Bold": "Lihavoitu",
|
|
@@ -45728,7 +46481,37 @@ const fi = {
|
|
|
45728
46481
|
"No speech detected": "Puhetta ei havaittu",
|
|
45729
46482
|
"Microphone access denied": "Mikrofonin k�ytt� estetty",
|
|
45730
46483
|
"No microphone found": "No microphone found",
|
|
45731
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46484
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46485
|
+
"Subscript": "Alaindeksi",
|
|
46486
|
+
"Superscript": "Yläindeksi",
|
|
46487
|
+
"Horizontal rule": "Vaakaviiva",
|
|
46488
|
+
"Unlink": "Poista linkki",
|
|
46489
|
+
"Format": "Muotoilu",
|
|
46490
|
+
"Paragraph": "Kappale",
|
|
46491
|
+
"Heading 1": "Otsikko 1",
|
|
46492
|
+
"Heading 2": "Otsikko 2",
|
|
46493
|
+
"Heading 3": "Otsikko 3",
|
|
46494
|
+
"Heading 4": "Otsikko 4",
|
|
46495
|
+
"Heading 5": "Otsikko 5",
|
|
46496
|
+
"Heading 6": "Otsikko 6",
|
|
46497
|
+
"Styles": "Tyylit",
|
|
46498
|
+
"Insert anchor": "Lisää ankkuri",
|
|
46499
|
+
"Anchor": "Ankkuri",
|
|
46500
|
+
"Anchor name": "Ankkurin nimi",
|
|
46501
|
+
"Anchor name is required": "Ankkurin nimi vaaditaan",
|
|
46502
|
+
"Anchor name cannot contain spaces": "Ankkurin nimi ei voi sisältää välilyöntejä",
|
|
46503
|
+
"Table": "Taulukko",
|
|
46504
|
+
"Insert table": "Lisää taulukko",
|
|
46505
|
+
"Insert row before": "Lisää rivi ennen",
|
|
46506
|
+
"Insert row after": "Lisää rivi jälkeen",
|
|
46507
|
+
"Delete row": "Poista rivi",
|
|
46508
|
+
"Insert column before": "Lisää sarake ennen",
|
|
46509
|
+
"Insert column after": "Lisää sarake jälkeen",
|
|
46510
|
+
"Delete column": "Poista sarake",
|
|
46511
|
+
"Merge cells": "Yhdistä solut",
|
|
46512
|
+
"Split cell": "Jaa solu",
|
|
46513
|
+
"Toggle header row": "Vaihda otsikkorivi",
|
|
46514
|
+
"Delete table": "Poista taulukko"
|
|
45732
46515
|
};
|
|
45733
46516
|
const fr = {
|
|
45734
46517
|
"Bold": "Gras",
|
|
@@ -45813,7 +46596,37 @@ const fr = {
|
|
|
45813
46596
|
"No speech detected": "Aucune parole d�tect�e",
|
|
45814
46597
|
"Microphone access denied": "Acc�s au microphone refus�",
|
|
45815
46598
|
"No microphone found": "No microphone found",
|
|
45816
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46599
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46600
|
+
"Subscript": "Indice",
|
|
46601
|
+
"Superscript": "Exposant",
|
|
46602
|
+
"Horizontal rule": "Ligne horizontale",
|
|
46603
|
+
"Unlink": "Supprimer le lien",
|
|
46604
|
+
"Format": "Format",
|
|
46605
|
+
"Paragraph": "Paragraphe",
|
|
46606
|
+
"Heading 1": "Titre 1",
|
|
46607
|
+
"Heading 2": "Titre 2",
|
|
46608
|
+
"Heading 3": "Titre 3",
|
|
46609
|
+
"Heading 4": "Titre 4",
|
|
46610
|
+
"Heading 5": "Titre 5",
|
|
46611
|
+
"Heading 6": "Titre 6",
|
|
46612
|
+
"Styles": "Styles",
|
|
46613
|
+
"Insert anchor": "Insérer une ancre",
|
|
46614
|
+
"Anchor": "Ancre",
|
|
46615
|
+
"Anchor name": "Nom de l'ancre",
|
|
46616
|
+
"Anchor name is required": "Le nom de l'ancre est requis",
|
|
46617
|
+
"Anchor name cannot contain spaces": "Le nom de l'ancre ne peut pas contenir d'espaces",
|
|
46618
|
+
"Table": "Tableau",
|
|
46619
|
+
"Insert table": "Insérer un tableau",
|
|
46620
|
+
"Insert row before": "Insérer une ligne avant",
|
|
46621
|
+
"Insert row after": "Insérer une ligne après",
|
|
46622
|
+
"Delete row": "Supprimer la ligne",
|
|
46623
|
+
"Insert column before": "Insérer une colonne avant",
|
|
46624
|
+
"Insert column after": "Insérer une colonne après",
|
|
46625
|
+
"Delete column": "Supprimer la colonne",
|
|
46626
|
+
"Merge cells": "Fusionner les cellules",
|
|
46627
|
+
"Split cell": "Diviser la cellule",
|
|
46628
|
+
"Toggle header row": "Basculer la ligne d'en-tête",
|
|
46629
|
+
"Delete table": "Supprimer le tableau"
|
|
45817
46630
|
};
|
|
45818
46631
|
const frCa = {
|
|
45819
46632
|
"Bold": "Gras",
|
|
@@ -45898,7 +46711,37 @@ const frCa = {
|
|
|
45898
46711
|
"No speech detected": "Aucune parole d�tect�e",
|
|
45899
46712
|
"Microphone access denied": "Acc�s au microphone refus�",
|
|
45900
46713
|
"No microphone found": "No microphone found",
|
|
45901
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46714
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46715
|
+
"Subscript": "Indice",
|
|
46716
|
+
"Superscript": "Exposant",
|
|
46717
|
+
"Horizontal rule": "Ligne horizontale",
|
|
46718
|
+
"Unlink": "Supprimer le lien",
|
|
46719
|
+
"Format": "Format",
|
|
46720
|
+
"Paragraph": "Paragraphe",
|
|
46721
|
+
"Heading 1": "Titre 1",
|
|
46722
|
+
"Heading 2": "Titre 2",
|
|
46723
|
+
"Heading 3": "Titre 3",
|
|
46724
|
+
"Heading 4": "Titre 4",
|
|
46725
|
+
"Heading 5": "Titre 5",
|
|
46726
|
+
"Heading 6": "Titre 6",
|
|
46727
|
+
"Styles": "Styles",
|
|
46728
|
+
"Insert anchor": "Insérer une ancre",
|
|
46729
|
+
"Anchor": "Ancre",
|
|
46730
|
+
"Anchor name": "Nom de l'ancre",
|
|
46731
|
+
"Anchor name is required": "Le nom de l'ancre est requis",
|
|
46732
|
+
"Anchor name cannot contain spaces": "Le nom de l'ancre ne peut pas contenir d'espaces",
|
|
46733
|
+
"Table": "Tableau",
|
|
46734
|
+
"Insert table": "Insérer un tableau",
|
|
46735
|
+
"Insert row before": "Insérer une ligne avant",
|
|
46736
|
+
"Insert row after": "Insérer une ligne après",
|
|
46737
|
+
"Delete row": "Supprimer la ligne",
|
|
46738
|
+
"Insert column before": "Insérer une colonne avant",
|
|
46739
|
+
"Insert column after": "Insérer une colonne après",
|
|
46740
|
+
"Delete column": "Supprimer la colonne",
|
|
46741
|
+
"Merge cells": "Fusionner les cellules",
|
|
46742
|
+
"Split cell": "Diviser la cellule",
|
|
46743
|
+
"Toggle header row": "Basculer la ligne d'en-tête",
|
|
46744
|
+
"Delete table": "Supprimer le tableau"
|
|
45902
46745
|
};
|
|
45903
46746
|
const de = {
|
|
45904
46747
|
"Bold": "Fett",
|
|
@@ -45983,7 +46826,37 @@ const de = {
|
|
|
45983
46826
|
"No speech detected": "Keine Sprache erkannt",
|
|
45984
46827
|
"Microphone access denied": "Mikrofonzugriff verweigert",
|
|
45985
46828
|
"No microphone found": "No microphone found",
|
|
45986
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46829
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46830
|
+
"Subscript": "Tiefgestellt",
|
|
46831
|
+
"Superscript": "Hochgestellt",
|
|
46832
|
+
"Horizontal rule": "Horizontale Linie",
|
|
46833
|
+
"Unlink": "Link entfernen",
|
|
46834
|
+
"Format": "Format",
|
|
46835
|
+
"Paragraph": "Absatz",
|
|
46836
|
+
"Heading 1": "Überschrift 1",
|
|
46837
|
+
"Heading 2": "Überschrift 2",
|
|
46838
|
+
"Heading 3": "Überschrift 3",
|
|
46839
|
+
"Heading 4": "Überschrift 4",
|
|
46840
|
+
"Heading 5": "Überschrift 5",
|
|
46841
|
+
"Heading 6": "Überschrift 6",
|
|
46842
|
+
"Styles": "Formatvorlagen",
|
|
46843
|
+
"Insert anchor": "Anker einfügen",
|
|
46844
|
+
"Anchor": "Anker",
|
|
46845
|
+
"Anchor name": "Ankername",
|
|
46846
|
+
"Anchor name is required": "Ankername ist erforderlich",
|
|
46847
|
+
"Anchor name cannot contain spaces": "Ankername darf keine Leerzeichen enthalten",
|
|
46848
|
+
"Table": "Tabelle",
|
|
46849
|
+
"Insert table": "Tabelle einfügen",
|
|
46850
|
+
"Insert row before": "Zeile davor einfügen",
|
|
46851
|
+
"Insert row after": "Zeile danach einfügen",
|
|
46852
|
+
"Delete row": "Zeile löschen",
|
|
46853
|
+
"Insert column before": "Spalte davor einfügen",
|
|
46854
|
+
"Insert column after": "Spalte danach einfügen",
|
|
46855
|
+
"Delete column": "Spalte löschen",
|
|
46856
|
+
"Merge cells": "Zellen verbinden",
|
|
46857
|
+
"Split cell": "Zelle teilen",
|
|
46858
|
+
"Toggle header row": "Kopfzeile umschalten",
|
|
46859
|
+
"Delete table": "Tabelle löschen"
|
|
45987
46860
|
};
|
|
45988
46861
|
const el = {
|
|
45989
46862
|
"Bold": "Έντονα",
|
|
@@ -46068,7 +46941,37 @@ const el = {
|
|
|
46068
46941
|
"No speech detected": "?e? a????e????e ?�???a",
|
|
46069
46942
|
"Microphone access denied": "? p??s�as? st? �????f??? ap????f???e",
|
|
46070
46943
|
"No microphone found": "No microphone found",
|
|
46071
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
46944
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
46945
|
+
"Subscript": "Δείκτης",
|
|
46946
|
+
"Superscript": "Εκθέτης",
|
|
46947
|
+
"Horizontal rule": "Οριζόντια γραμμή",
|
|
46948
|
+
"Unlink": "Κατάργηση συνδέσμου",
|
|
46949
|
+
"Format": "Μορφή",
|
|
46950
|
+
"Paragraph": "Παράγραφος",
|
|
46951
|
+
"Heading 1": "Επικεφαλίδα 1",
|
|
46952
|
+
"Heading 2": "Επικεφαλίδα 2",
|
|
46953
|
+
"Heading 3": "Επικεφαλίδα 3",
|
|
46954
|
+
"Heading 4": "Επικεφαλίδα 4",
|
|
46955
|
+
"Heading 5": "Επικεφαλίδα 5",
|
|
46956
|
+
"Heading 6": "Επικεφαλίδα 6",
|
|
46957
|
+
"Styles": "Στυλ",
|
|
46958
|
+
"Insert anchor": "Εισαγωγή αγκύρωσης",
|
|
46959
|
+
"Anchor": "Αγκύρωση",
|
|
46960
|
+
"Anchor name": "Όνομα αγκύρωσης",
|
|
46961
|
+
"Anchor name is required": "Απαιτείται όνομα αγκύρωσης",
|
|
46962
|
+
"Anchor name cannot contain spaces": "Το όνομα αγκύρωσης δεν μπορεί να περιέχει κενά",
|
|
46963
|
+
"Table": "Πίνακας",
|
|
46964
|
+
"Insert table": "Εισαγωγή πίνακα",
|
|
46965
|
+
"Insert row before": "Εισαγωγή γραμμής πριν",
|
|
46966
|
+
"Insert row after": "Εισαγωγή γραμμής μετά",
|
|
46967
|
+
"Delete row": "Διαγραφή γραμμής",
|
|
46968
|
+
"Insert column before": "Εισαγωγή στήλης πριν",
|
|
46969
|
+
"Insert column after": "Εισαγωγή στήλης μετά",
|
|
46970
|
+
"Delete column": "Διαγραφή στήλης",
|
|
46971
|
+
"Merge cells": "Συγχώνευση κελιών",
|
|
46972
|
+
"Split cell": "Διαίρεση κελιού",
|
|
46973
|
+
"Toggle header row": "Εναλλαγή γραμμής κεφαλίδας",
|
|
46974
|
+
"Delete table": "Διαγραφή πίνακα"
|
|
46072
46975
|
};
|
|
46073
46976
|
const hu = {
|
|
46074
46977
|
"Bold": "Félkövér",
|
|
@@ -46153,7 +47056,37 @@ const hu = {
|
|
|
46153
47056
|
"No speech detected": "Nem �szlelheto besz�d",
|
|
46154
47057
|
"Microphone access denied": "Mikrofon hozz�f�r�s megtagadva",
|
|
46155
47058
|
"No microphone found": "No microphone found",
|
|
46156
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47059
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47060
|
+
"Subscript": "Alsó index",
|
|
47061
|
+
"Superscript": "Felső index",
|
|
47062
|
+
"Horizontal rule": "Vízszintes vonal",
|
|
47063
|
+
"Unlink": "Hivatkozás eltávolítása",
|
|
47064
|
+
"Format": "Formátum",
|
|
47065
|
+
"Paragraph": "Bekezdés",
|
|
47066
|
+
"Heading 1": "Címsor 1",
|
|
47067
|
+
"Heading 2": "Címsor 2",
|
|
47068
|
+
"Heading 3": "Címsor 3",
|
|
47069
|
+
"Heading 4": "Címsor 4",
|
|
47070
|
+
"Heading 5": "Címsor 5",
|
|
47071
|
+
"Heading 6": "Címsor 6",
|
|
47072
|
+
"Styles": "Stílusok",
|
|
47073
|
+
"Insert anchor": "Horgony beszúrása",
|
|
47074
|
+
"Anchor": "Horgony",
|
|
47075
|
+
"Anchor name": "Horgony neve",
|
|
47076
|
+
"Anchor name is required": "A horgony neve kötelező",
|
|
47077
|
+
"Anchor name cannot contain spaces": "A horgony neve nem tartalmazhat szóközöket",
|
|
47078
|
+
"Table": "Táblázat",
|
|
47079
|
+
"Insert table": "Táblázat beszúrása",
|
|
47080
|
+
"Insert row before": "Sor beszúrása elé",
|
|
47081
|
+
"Insert row after": "Sor beszúrása mögé",
|
|
47082
|
+
"Delete row": "Sor törlése",
|
|
47083
|
+
"Insert column before": "Oszlop beszúrása elé",
|
|
47084
|
+
"Insert column after": "Oszlop beszúrása mögé",
|
|
47085
|
+
"Delete column": "Oszlop törlése",
|
|
47086
|
+
"Merge cells": "Cellák egyesítése",
|
|
47087
|
+
"Split cell": "Cella felosztása",
|
|
47088
|
+
"Toggle header row": "Fejlécsor be-/kikapcsolása",
|
|
47089
|
+
"Delete table": "Táblázat törlése"
|
|
46157
47090
|
};
|
|
46158
47091
|
const id = {
|
|
46159
47092
|
"Bold": "Tebal",
|
|
@@ -46238,7 +47171,37 @@ const id = {
|
|
|
46238
47171
|
"No speech detected": "Tidak ada ucapan terdeteksi",
|
|
46239
47172
|
"Microphone access denied": "Akses mikrofon ditolak",
|
|
46240
47173
|
"No microphone found": "No microphone found",
|
|
46241
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47174
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47175
|
+
"Subscript": "Subskrip",
|
|
47176
|
+
"Superscript": "Superskrip",
|
|
47177
|
+
"Horizontal rule": "Garis horizontal",
|
|
47178
|
+
"Unlink": "Hapus tautan",
|
|
47179
|
+
"Format": "Format",
|
|
47180
|
+
"Paragraph": "Paragraf",
|
|
47181
|
+
"Heading 1": "Judul 1",
|
|
47182
|
+
"Heading 2": "Judul 2",
|
|
47183
|
+
"Heading 3": "Judul 3",
|
|
47184
|
+
"Heading 4": "Judul 4",
|
|
47185
|
+
"Heading 5": "Judul 5",
|
|
47186
|
+
"Heading 6": "Judul 6",
|
|
47187
|
+
"Styles": "Gaya",
|
|
47188
|
+
"Insert anchor": "Sisipkan jangkar",
|
|
47189
|
+
"Anchor": "Jangkar",
|
|
47190
|
+
"Anchor name": "Nama jangkar",
|
|
47191
|
+
"Anchor name is required": "Nama jangkar wajib diisi",
|
|
47192
|
+
"Anchor name cannot contain spaces": "Nama jangkar tidak boleh mengandung spasi",
|
|
47193
|
+
"Table": "Tabel",
|
|
47194
|
+
"Insert table": "Sisipkan tabel",
|
|
47195
|
+
"Insert row before": "Sisipkan baris sebelum",
|
|
47196
|
+
"Insert row after": "Sisipkan baris sesudah",
|
|
47197
|
+
"Delete row": "Hapus baris",
|
|
47198
|
+
"Insert column before": "Sisipkan kolom sebelum",
|
|
47199
|
+
"Insert column after": "Sisipkan kolom sesudah",
|
|
47200
|
+
"Delete column": "Hapus kolom",
|
|
47201
|
+
"Merge cells": "Gabungkan sel",
|
|
47202
|
+
"Split cell": "Pisahkan sel",
|
|
47203
|
+
"Toggle header row": "Alihkan baris header",
|
|
47204
|
+
"Delete table": "Hapus tabel"
|
|
46242
47205
|
};
|
|
46243
47206
|
const it = {
|
|
46244
47207
|
"Bold": "Grassetto",
|
|
@@ -46323,7 +47286,37 @@ const it = {
|
|
|
46323
47286
|
"No speech detected": "Nessun discorso rilevato",
|
|
46324
47287
|
"Microphone access denied": "Accesso al microfono negato",
|
|
46325
47288
|
"No microphone found": "No microphone found",
|
|
46326
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47289
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47290
|
+
"Subscript": "Pedice",
|
|
47291
|
+
"Superscript": "Apice",
|
|
47292
|
+
"Horizontal rule": "Linea orizzontale",
|
|
47293
|
+
"Unlink": "Rimuovi collegamento",
|
|
47294
|
+
"Format": "Formato",
|
|
47295
|
+
"Paragraph": "Paragrafo",
|
|
47296
|
+
"Heading 1": "Titolo 1",
|
|
47297
|
+
"Heading 2": "Titolo 2",
|
|
47298
|
+
"Heading 3": "Titolo 3",
|
|
47299
|
+
"Heading 4": "Titolo 4",
|
|
47300
|
+
"Heading 5": "Titolo 5",
|
|
47301
|
+
"Heading 6": "Titolo 6",
|
|
47302
|
+
"Styles": "Stili",
|
|
47303
|
+
"Insert anchor": "Inserisci ancora",
|
|
47304
|
+
"Anchor": "Ancora",
|
|
47305
|
+
"Anchor name": "Nome ancora",
|
|
47306
|
+
"Anchor name is required": "Il nome dell'ancora è obbligatorio",
|
|
47307
|
+
"Anchor name cannot contain spaces": "Il nome dell'ancora non può contenere spazi",
|
|
47308
|
+
"Table": "Tabella",
|
|
47309
|
+
"Insert table": "Inserisci tabella",
|
|
47310
|
+
"Insert row before": "Inserisci riga prima",
|
|
47311
|
+
"Insert row after": "Inserisci riga dopo",
|
|
47312
|
+
"Delete row": "Elimina riga",
|
|
47313
|
+
"Insert column before": "Inserisci colonna prima",
|
|
47314
|
+
"Insert column after": "Inserisci colonna dopo",
|
|
47315
|
+
"Delete column": "Elimina colonna",
|
|
47316
|
+
"Merge cells": "Unisci celle",
|
|
47317
|
+
"Split cell": "Dividi cella",
|
|
47318
|
+
"Toggle header row": "Attiva/disattiva riga di intestazione",
|
|
47319
|
+
"Delete table": "Elimina tabella"
|
|
46327
47320
|
};
|
|
46328
47321
|
const ja = {
|
|
46329
47322
|
"Bold": "太字",
|
|
@@ -46408,7 +47401,37 @@ const ja = {
|
|
|
46408
47401
|
"No speech detected": "?????????????",
|
|
46409
47402
|
"Microphone access denied": "?????????????????",
|
|
46410
47403
|
"No microphone found": "No microphone found",
|
|
46411
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47404
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47405
|
+
"Subscript": "下付き文字",
|
|
47406
|
+
"Superscript": "上付き文字",
|
|
47407
|
+
"Horizontal rule": "水平線",
|
|
47408
|
+
"Unlink": "リンクの解除",
|
|
47409
|
+
"Format": "書式",
|
|
47410
|
+
"Paragraph": "段落",
|
|
47411
|
+
"Heading 1": "見出し 1",
|
|
47412
|
+
"Heading 2": "見出し 2",
|
|
47413
|
+
"Heading 3": "見出し 3",
|
|
47414
|
+
"Heading 4": "見出し 4",
|
|
47415
|
+
"Heading 5": "見出し 5",
|
|
47416
|
+
"Heading 6": "見出し 6",
|
|
47417
|
+
"Styles": "スタイル",
|
|
47418
|
+
"Insert anchor": "アンカーの挿入",
|
|
47419
|
+
"Anchor": "アンカー",
|
|
47420
|
+
"Anchor name": "アンカー名",
|
|
47421
|
+
"Anchor name is required": "アンカー名は必須です",
|
|
47422
|
+
"Anchor name cannot contain spaces": "アンカー名にスペースを含めることはできません",
|
|
47423
|
+
"Table": "テーブル",
|
|
47424
|
+
"Insert table": "テーブルの挿入",
|
|
47425
|
+
"Insert row before": "上に行を挿入",
|
|
47426
|
+
"Insert row after": "下に行を挿入",
|
|
47427
|
+
"Delete row": "行の削除",
|
|
47428
|
+
"Insert column before": "左に列を挿入",
|
|
47429
|
+
"Insert column after": "右に列を挿入",
|
|
47430
|
+
"Delete column": "列の削除",
|
|
47431
|
+
"Merge cells": "セルの結合",
|
|
47432
|
+
"Split cell": "セルの分割",
|
|
47433
|
+
"Toggle header row": "ヘッダー行の切り替え",
|
|
47434
|
+
"Delete table": "テーブルの削除"
|
|
46412
47435
|
};
|
|
46413
47436
|
const ko = {
|
|
46414
47437
|
"Bold": "굵게",
|
|
@@ -46493,7 +47516,37 @@ const ko = {
|
|
|
46493
47516
|
"No speech detected": "??? ???? ?????",
|
|
46494
47517
|
"Microphone access denied": "??? ??? ???????",
|
|
46495
47518
|
"No microphone found": "No microphone found",
|
|
46496
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47519
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47520
|
+
"Subscript": "아래 첨자",
|
|
47521
|
+
"Superscript": "위 첨자",
|
|
47522
|
+
"Horizontal rule": "가로줄",
|
|
47523
|
+
"Unlink": "링크 제거",
|
|
47524
|
+
"Format": "형식",
|
|
47525
|
+
"Paragraph": "단락",
|
|
47526
|
+
"Heading 1": "제목 1",
|
|
47527
|
+
"Heading 2": "제목 2",
|
|
47528
|
+
"Heading 3": "제목 3",
|
|
47529
|
+
"Heading 4": "제목 4",
|
|
47530
|
+
"Heading 5": "제목 5",
|
|
47531
|
+
"Heading 6": "제목 6",
|
|
47532
|
+
"Styles": "스타일",
|
|
47533
|
+
"Insert anchor": "앵커 삽입",
|
|
47534
|
+
"Anchor": "앵커",
|
|
47535
|
+
"Anchor name": "앵커 이름",
|
|
47536
|
+
"Anchor name is required": "앵커 이름은 필수입니다",
|
|
47537
|
+
"Anchor name cannot contain spaces": "앵커 이름에 공백을 포함할 수 없습니다",
|
|
47538
|
+
"Table": "표",
|
|
47539
|
+
"Insert table": "표 삽입",
|
|
47540
|
+
"Insert row before": "위에 행 삽입",
|
|
47541
|
+
"Insert row after": "아래에 행 삽입",
|
|
47542
|
+
"Delete row": "행 삭제",
|
|
47543
|
+
"Insert column before": "왼쪽에 열 삽입",
|
|
47544
|
+
"Insert column after": "오른쪽에 열 삽입",
|
|
47545
|
+
"Delete column": "열 삭제",
|
|
47546
|
+
"Merge cells": "셀 병합",
|
|
47547
|
+
"Split cell": "셀 분할",
|
|
47548
|
+
"Toggle header row": "머리글 행 전환",
|
|
47549
|
+
"Delete table": "표 삭제"
|
|
46497
47550
|
};
|
|
46498
47551
|
const nl = {
|
|
46499
47552
|
"Bold": "Vet",
|
|
@@ -46578,7 +47631,37 @@ const nl = {
|
|
|
46578
47631
|
"No speech detected": "Geen spraak gedetecteerd",
|
|
46579
47632
|
"Microphone access denied": "Toegang tot microfoon geweigerd",
|
|
46580
47633
|
"No microphone found": "No microphone found",
|
|
46581
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47634
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47635
|
+
"Subscript": "Subscript",
|
|
47636
|
+
"Superscript": "Superscript",
|
|
47637
|
+
"Horizontal rule": "Horizontale lijn",
|
|
47638
|
+
"Unlink": "Link verwijderen",
|
|
47639
|
+
"Format": "Opmaak",
|
|
47640
|
+
"Paragraph": "Alinea",
|
|
47641
|
+
"Heading 1": "Kop 1",
|
|
47642
|
+
"Heading 2": "Kop 2",
|
|
47643
|
+
"Heading 3": "Kop 3",
|
|
47644
|
+
"Heading 4": "Kop 4",
|
|
47645
|
+
"Heading 5": "Kop 5",
|
|
47646
|
+
"Heading 6": "Kop 6",
|
|
47647
|
+
"Styles": "Stijlen",
|
|
47648
|
+
"Insert anchor": "Anker invoegen",
|
|
47649
|
+
"Anchor": "Anker",
|
|
47650
|
+
"Anchor name": "Ankernaam",
|
|
47651
|
+
"Anchor name is required": "Ankernaam is verplicht",
|
|
47652
|
+
"Anchor name cannot contain spaces": "Ankernaam mag geen spaties bevatten",
|
|
47653
|
+
"Table": "Tabel",
|
|
47654
|
+
"Insert table": "Tabel invoegen",
|
|
47655
|
+
"Insert row before": "Rij ervoor invoegen",
|
|
47656
|
+
"Insert row after": "Rij erna invoegen",
|
|
47657
|
+
"Delete row": "Rij verwijderen",
|
|
47658
|
+
"Insert column before": "Kolom ervoor invoegen",
|
|
47659
|
+
"Insert column after": "Kolom erna invoegen",
|
|
47660
|
+
"Delete column": "Kolom verwijderen",
|
|
47661
|
+
"Merge cells": "Cellen samenvoegen",
|
|
47662
|
+
"Split cell": "Cel splitsen",
|
|
47663
|
+
"Toggle header row": "Koprij in-/uitschakelen",
|
|
47664
|
+
"Delete table": "Tabel verwijderen"
|
|
46582
47665
|
};
|
|
46583
47666
|
const nb = {
|
|
46584
47667
|
"Bold": "Fet",
|
|
@@ -46663,7 +47746,37 @@ const nb = {
|
|
|
46663
47746
|
"No speech detected": "Ingen tale oppdaget",
|
|
46664
47747
|
"Microphone access denied": "Mikrofontilgang nektet",
|
|
46665
47748
|
"No microphone found": "No microphone found",
|
|
46666
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47749
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47750
|
+
"Subscript": "Senket skrift",
|
|
47751
|
+
"Superscript": "Hevet skrift",
|
|
47752
|
+
"Horizontal rule": "Horisontal linje",
|
|
47753
|
+
"Unlink": "Fjern lenke",
|
|
47754
|
+
"Format": "Format",
|
|
47755
|
+
"Paragraph": "Avsnitt",
|
|
47756
|
+
"Heading 1": "Overskrift 1",
|
|
47757
|
+
"Heading 2": "Overskrift 2",
|
|
47758
|
+
"Heading 3": "Overskrift 3",
|
|
47759
|
+
"Heading 4": "Overskrift 4",
|
|
47760
|
+
"Heading 5": "Overskrift 5",
|
|
47761
|
+
"Heading 6": "Overskrift 6",
|
|
47762
|
+
"Styles": "Stiler",
|
|
47763
|
+
"Insert anchor": "Sett inn anker",
|
|
47764
|
+
"Anchor": "Anker",
|
|
47765
|
+
"Anchor name": "Ankernavn",
|
|
47766
|
+
"Anchor name is required": "Ankernavn er påkrevd",
|
|
47767
|
+
"Anchor name cannot contain spaces": "Ankernavn kan ikke inneholde mellomrom",
|
|
47768
|
+
"Table": "Tabell",
|
|
47769
|
+
"Insert table": "Sett inn tabell",
|
|
47770
|
+
"Insert row before": "Sett inn rad før",
|
|
47771
|
+
"Insert row after": "Sett inn rad etter",
|
|
47772
|
+
"Delete row": "Slett rad",
|
|
47773
|
+
"Insert column before": "Sett inn kolonne før",
|
|
47774
|
+
"Insert column after": "Sett inn kolonne etter",
|
|
47775
|
+
"Delete column": "Slett kolonne",
|
|
47776
|
+
"Merge cells": "Slå sammen celler",
|
|
47777
|
+
"Split cell": "Del celle",
|
|
47778
|
+
"Toggle header row": "Veksle overskriftsrad",
|
|
47779
|
+
"Delete table": "Slett tabell"
|
|
46667
47780
|
};
|
|
46668
47781
|
const pl = {
|
|
46669
47782
|
"Bold": "Pogrubienie",
|
|
@@ -46748,7 +47861,37 @@ const pl = {
|
|
|
46748
47861
|
"No speech detected": "Nie wykryto mowy",
|
|
46749
47862
|
"Microphone access denied": "Odmowa dostepu do mikrofonu",
|
|
46750
47863
|
"No microphone found": "No microphone found",
|
|
46751
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47864
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47865
|
+
"Subscript": "Indeks dolny",
|
|
47866
|
+
"Superscript": "Indeks górny",
|
|
47867
|
+
"Horizontal rule": "Linia pozioma",
|
|
47868
|
+
"Unlink": "Usuń odnośnik",
|
|
47869
|
+
"Format": "Format",
|
|
47870
|
+
"Paragraph": "Akapit",
|
|
47871
|
+
"Heading 1": "Nagłówek 1",
|
|
47872
|
+
"Heading 2": "Nagłówek 2",
|
|
47873
|
+
"Heading 3": "Nagłówek 3",
|
|
47874
|
+
"Heading 4": "Nagłówek 4",
|
|
47875
|
+
"Heading 5": "Nagłówek 5",
|
|
47876
|
+
"Heading 6": "Nagłówek 6",
|
|
47877
|
+
"Styles": "Style",
|
|
47878
|
+
"Insert anchor": "Wstaw kotwicę",
|
|
47879
|
+
"Anchor": "Kotwica",
|
|
47880
|
+
"Anchor name": "Nazwa kotwicy",
|
|
47881
|
+
"Anchor name is required": "Nazwa kotwicy jest wymagana",
|
|
47882
|
+
"Anchor name cannot contain spaces": "Nazwa kotwicy nie może zawierać spacji",
|
|
47883
|
+
"Table": "Tabela",
|
|
47884
|
+
"Insert table": "Wstaw tabelę",
|
|
47885
|
+
"Insert row before": "Wstaw wiersz przed",
|
|
47886
|
+
"Insert row after": "Wstaw wiersz po",
|
|
47887
|
+
"Delete row": "Usuń wiersz",
|
|
47888
|
+
"Insert column before": "Wstaw kolumnę przed",
|
|
47889
|
+
"Insert column after": "Wstaw kolumnę po",
|
|
47890
|
+
"Delete column": "Usuń kolumnę",
|
|
47891
|
+
"Merge cells": "Scal komórki",
|
|
47892
|
+
"Split cell": "Podziel komórkę",
|
|
47893
|
+
"Toggle header row": "Przełącz wiersz nagłówka",
|
|
47894
|
+
"Delete table": "Usuń tabelę"
|
|
46752
47895
|
};
|
|
46753
47896
|
const pt = {
|
|
46754
47897
|
"Bold": "Negrito",
|
|
@@ -46833,7 +47976,37 @@ const pt = {
|
|
|
46833
47976
|
"No speech detected": "Nenhuma fala detectada",
|
|
46834
47977
|
"Microphone access denied": "Acesso ao microfone negado",
|
|
46835
47978
|
"No microphone found": "No microphone found",
|
|
46836
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
47979
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
47980
|
+
"Subscript": "Subscrito",
|
|
47981
|
+
"Superscript": "Sobrescrito",
|
|
47982
|
+
"Horizontal rule": "Linha horizontal",
|
|
47983
|
+
"Unlink": "Remover link",
|
|
47984
|
+
"Format": "Formato",
|
|
47985
|
+
"Paragraph": "Parágrafo",
|
|
47986
|
+
"Heading 1": "Título 1",
|
|
47987
|
+
"Heading 2": "Título 2",
|
|
47988
|
+
"Heading 3": "Título 3",
|
|
47989
|
+
"Heading 4": "Título 4",
|
|
47990
|
+
"Heading 5": "Título 5",
|
|
47991
|
+
"Heading 6": "Título 6",
|
|
47992
|
+
"Styles": "Estilos",
|
|
47993
|
+
"Insert anchor": "Inserir âncora",
|
|
47994
|
+
"Anchor": "Âncora",
|
|
47995
|
+
"Anchor name": "Nome da âncora",
|
|
47996
|
+
"Anchor name is required": "O nome da âncora é obrigatório",
|
|
47997
|
+
"Anchor name cannot contain spaces": "O nome da âncora não pode conter espaços",
|
|
47998
|
+
"Table": "Tabela",
|
|
47999
|
+
"Insert table": "Inserir tabela",
|
|
48000
|
+
"Insert row before": "Inserir linha antes",
|
|
48001
|
+
"Insert row after": "Inserir linha depois",
|
|
48002
|
+
"Delete row": "Excluir linha",
|
|
48003
|
+
"Insert column before": "Inserir coluna antes",
|
|
48004
|
+
"Insert column after": "Inserir coluna depois",
|
|
48005
|
+
"Delete column": "Excluir coluna",
|
|
48006
|
+
"Merge cells": "Mesclar células",
|
|
48007
|
+
"Split cell": "Dividir célula",
|
|
48008
|
+
"Toggle header row": "Alternar linha de cabeçalho",
|
|
48009
|
+
"Delete table": "Excluir tabela"
|
|
46837
48010
|
};
|
|
46838
48011
|
const ro = {
|
|
46839
48012
|
"Bold": "Îngroșat",
|
|
@@ -46918,7 +48091,37 @@ const ro = {
|
|
|
46918
48091
|
"No speech detected": "Nu a fost detectata nicio voce",
|
|
46919
48092
|
"Microphone access denied": "Accesul la microfon a fost refuzat",
|
|
46920
48093
|
"No microphone found": "No microphone found",
|
|
46921
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48094
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48095
|
+
"Subscript": "Indice",
|
|
48096
|
+
"Superscript": "Exponent",
|
|
48097
|
+
"Horizontal rule": "Linie orizontală",
|
|
48098
|
+
"Unlink": "Eliminare link",
|
|
48099
|
+
"Format": "Format",
|
|
48100
|
+
"Paragraph": "Paragraf",
|
|
48101
|
+
"Heading 1": "Titlu 1",
|
|
48102
|
+
"Heading 2": "Titlu 2",
|
|
48103
|
+
"Heading 3": "Titlu 3",
|
|
48104
|
+
"Heading 4": "Titlu 4",
|
|
48105
|
+
"Heading 5": "Titlu 5",
|
|
48106
|
+
"Heading 6": "Titlu 6",
|
|
48107
|
+
"Styles": "Stiluri",
|
|
48108
|
+
"Insert anchor": "Inserare ancoră",
|
|
48109
|
+
"Anchor": "Ancoră",
|
|
48110
|
+
"Anchor name": "Nume ancoră",
|
|
48111
|
+
"Anchor name is required": "Numele ancorei este obligatoriu",
|
|
48112
|
+
"Anchor name cannot contain spaces": "Numele ancorei nu poate conține spații",
|
|
48113
|
+
"Table": "Tabel",
|
|
48114
|
+
"Insert table": "Inserare tabel",
|
|
48115
|
+
"Insert row before": "Inserare rând înainte",
|
|
48116
|
+
"Insert row after": "Inserare rând după",
|
|
48117
|
+
"Delete row": "Ștergere rând",
|
|
48118
|
+
"Insert column before": "Inserare coloană înainte",
|
|
48119
|
+
"Insert column after": "Inserare coloană după",
|
|
48120
|
+
"Delete column": "Ștergere coloană",
|
|
48121
|
+
"Merge cells": "Îmbinare celule",
|
|
48122
|
+
"Split cell": "Divizare celulă",
|
|
48123
|
+
"Toggle header row": "Comutare rând antet",
|
|
48124
|
+
"Delete table": "Ștergere tabel"
|
|
46922
48125
|
};
|
|
46923
48126
|
const ru = {
|
|
46924
48127
|
"Bold": "Полужирный",
|
|
@@ -47003,7 +48206,37 @@ const ru = {
|
|
|
47003
48206
|
"No speech detected": "???? ?? ??????????",
|
|
47004
48207
|
"Microphone access denied": "?????? ? ????????? ????????",
|
|
47005
48208
|
"No microphone found": "No microphone found",
|
|
47006
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48209
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48210
|
+
"Subscript": "Подстрочный",
|
|
48211
|
+
"Superscript": "Надстрочный",
|
|
48212
|
+
"Horizontal rule": "Горизонтальная линия",
|
|
48213
|
+
"Unlink": "Удалить ссылку",
|
|
48214
|
+
"Format": "Формат",
|
|
48215
|
+
"Paragraph": "Абзац",
|
|
48216
|
+
"Heading 1": "Заголовок 1",
|
|
48217
|
+
"Heading 2": "Заголовок 2",
|
|
48218
|
+
"Heading 3": "Заголовок 3",
|
|
48219
|
+
"Heading 4": "Заголовок 4",
|
|
48220
|
+
"Heading 5": "Заголовок 5",
|
|
48221
|
+
"Heading 6": "Заголовок 6",
|
|
48222
|
+
"Styles": "Стили",
|
|
48223
|
+
"Insert anchor": "Вставить якорь",
|
|
48224
|
+
"Anchor": "Якорь",
|
|
48225
|
+
"Anchor name": "Имя якоря",
|
|
48226
|
+
"Anchor name is required": "Требуется имя якоря",
|
|
48227
|
+
"Anchor name cannot contain spaces": "Имя якоря не может содержать пробелы",
|
|
48228
|
+
"Table": "Таблица",
|
|
48229
|
+
"Insert table": "Вставить таблицу",
|
|
48230
|
+
"Insert row before": "Вставить строку выше",
|
|
48231
|
+
"Insert row after": "Вставить строку ниже",
|
|
48232
|
+
"Delete row": "Удалить строку",
|
|
48233
|
+
"Insert column before": "Вставить столбец слева",
|
|
48234
|
+
"Insert column after": "Вставить столбец справа",
|
|
48235
|
+
"Delete column": "Удалить столбец",
|
|
48236
|
+
"Merge cells": "Объединить ячейки",
|
|
48237
|
+
"Split cell": "Разделить ячейку",
|
|
48238
|
+
"Toggle header row": "Переключить строку заголовка",
|
|
48239
|
+
"Delete table": "Удалить таблицу"
|
|
47007
48240
|
};
|
|
47008
48241
|
const sr = {
|
|
47009
48242
|
"Bold": "Подебљано",
|
|
@@ -47088,7 +48321,37 @@ const sr = {
|
|
|
47088
48321
|
"No speech detected": "????? ???? ????????",
|
|
47089
48322
|
"Microphone access denied": "??????? ????????? ???????",
|
|
47090
48323
|
"No microphone found": "No microphone found",
|
|
47091
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48324
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48325
|
+
"Subscript": "Индекс",
|
|
48326
|
+
"Superscript": "Експонент",
|
|
48327
|
+
"Horizontal rule": "Хоризонтална линија",
|
|
48328
|
+
"Unlink": "Уклони везу",
|
|
48329
|
+
"Format": "Формат",
|
|
48330
|
+
"Paragraph": "Пасус",
|
|
48331
|
+
"Heading 1": "Наслов 1",
|
|
48332
|
+
"Heading 2": "Наслов 2",
|
|
48333
|
+
"Heading 3": "Наслов 3",
|
|
48334
|
+
"Heading 4": "Наслов 4",
|
|
48335
|
+
"Heading 5": "Наслов 5",
|
|
48336
|
+
"Heading 6": "Наслов 6",
|
|
48337
|
+
"Styles": "Стилови",
|
|
48338
|
+
"Insert anchor": "Уметни сидро",
|
|
48339
|
+
"Anchor": "Сидро",
|
|
48340
|
+
"Anchor name": "Назив сидра",
|
|
48341
|
+
"Anchor name is required": "Назив сидра је обавезан",
|
|
48342
|
+
"Anchor name cannot contain spaces": "Назив сидра не може садржати размаке",
|
|
48343
|
+
"Table": "Табела",
|
|
48344
|
+
"Insert table": "Уметни табелу",
|
|
48345
|
+
"Insert row before": "Уметни ред изнад",
|
|
48346
|
+
"Insert row after": "Уметни ред испод",
|
|
48347
|
+
"Delete row": "Обриши ред",
|
|
48348
|
+
"Insert column before": "Уметни колону лево",
|
|
48349
|
+
"Insert column after": "Уметни колону десно",
|
|
48350
|
+
"Delete column": "Обриши колону",
|
|
48351
|
+
"Merge cells": "Споји ћелије",
|
|
48352
|
+
"Split cell": "Подели ћелију",
|
|
48353
|
+
"Toggle header row": "Укључи/искључи ред заглавља",
|
|
48354
|
+
"Delete table": "Обриши табелу"
|
|
47092
48355
|
};
|
|
47093
48356
|
const sl = {
|
|
47094
48357
|
"Bold": "Krepko",
|
|
@@ -47173,7 +48436,37 @@ const sl = {
|
|
|
47173
48436
|
"No speech detected": "Govor ni bil zaznan",
|
|
47174
48437
|
"Microphone access denied": "Dostop do mikrofona zavrnjen",
|
|
47175
48438
|
"No microphone found": "No microphone found",
|
|
47176
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48439
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48440
|
+
"Subscript": "Podpisano",
|
|
48441
|
+
"Superscript": "Nadpisano",
|
|
48442
|
+
"Horizontal rule": "Vodoravna črta",
|
|
48443
|
+
"Unlink": "Odstrani povezavo",
|
|
48444
|
+
"Format": "Oblika",
|
|
48445
|
+
"Paragraph": "Odstavek",
|
|
48446
|
+
"Heading 1": "Naslov 1",
|
|
48447
|
+
"Heading 2": "Naslov 2",
|
|
48448
|
+
"Heading 3": "Naslov 3",
|
|
48449
|
+
"Heading 4": "Naslov 4",
|
|
48450
|
+
"Heading 5": "Naslov 5",
|
|
48451
|
+
"Heading 6": "Naslov 6",
|
|
48452
|
+
"Styles": "Slogi",
|
|
48453
|
+
"Insert anchor": "Vstavi sidro",
|
|
48454
|
+
"Anchor": "Sidro",
|
|
48455
|
+
"Anchor name": "Ime sidra",
|
|
48456
|
+
"Anchor name is required": "Ime sidra je obvezno",
|
|
48457
|
+
"Anchor name cannot contain spaces": "Ime sidra ne sme vsebovati presledkov",
|
|
48458
|
+
"Table": "Tabela",
|
|
48459
|
+
"Insert table": "Vstavi tabelo",
|
|
48460
|
+
"Insert row before": "Vstavi vrstico pred",
|
|
48461
|
+
"Insert row after": "Vstavi vrstico za",
|
|
48462
|
+
"Delete row": "Izbriši vrstico",
|
|
48463
|
+
"Insert column before": "Vstavi stolpec pred",
|
|
48464
|
+
"Insert column after": "Vstavi stolpec za",
|
|
48465
|
+
"Delete column": "Izbriši stolpec",
|
|
48466
|
+
"Merge cells": "Združi celice",
|
|
48467
|
+
"Split cell": "Razdeli celico",
|
|
48468
|
+
"Toggle header row": "Preklopi vrstico glave",
|
|
48469
|
+
"Delete table": "Izbriši tabelo"
|
|
47177
48470
|
};
|
|
47178
48471
|
const es = {
|
|
47179
48472
|
"Bold": "Negrita",
|
|
@@ -47258,7 +48551,37 @@ const es = {
|
|
|
47258
48551
|
"No speech detected": "No se detect� voz",
|
|
47259
48552
|
"Microphone access denied": "Acceso al micr�fono denegado",
|
|
47260
48553
|
"No microphone found": "No microphone found",
|
|
47261
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48554
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48555
|
+
"Subscript": "Subíndice",
|
|
48556
|
+
"Superscript": "Superíndice",
|
|
48557
|
+
"Horizontal rule": "Línea horizontal",
|
|
48558
|
+
"Unlink": "Quitar enlace",
|
|
48559
|
+
"Format": "Formato",
|
|
48560
|
+
"Paragraph": "Párrafo",
|
|
48561
|
+
"Heading 1": "Encabezado 1",
|
|
48562
|
+
"Heading 2": "Encabezado 2",
|
|
48563
|
+
"Heading 3": "Encabezado 3",
|
|
48564
|
+
"Heading 4": "Encabezado 4",
|
|
48565
|
+
"Heading 5": "Encabezado 5",
|
|
48566
|
+
"Heading 6": "Encabezado 6",
|
|
48567
|
+
"Styles": "Estilos",
|
|
48568
|
+
"Insert anchor": "Insertar ancla",
|
|
48569
|
+
"Anchor": "Ancla",
|
|
48570
|
+
"Anchor name": "Nombre del ancla",
|
|
48571
|
+
"Anchor name is required": "El nombre del ancla es obligatorio",
|
|
48572
|
+
"Anchor name cannot contain spaces": "El nombre del ancla no puede contener espacios",
|
|
48573
|
+
"Table": "Tabla",
|
|
48574
|
+
"Insert table": "Insertar tabla",
|
|
48575
|
+
"Insert row before": "Insertar fila antes",
|
|
48576
|
+
"Insert row after": "Insertar fila después",
|
|
48577
|
+
"Delete row": "Eliminar fila",
|
|
48578
|
+
"Insert column before": "Insertar columna antes",
|
|
48579
|
+
"Insert column after": "Insertar columna después",
|
|
48580
|
+
"Delete column": "Eliminar columna",
|
|
48581
|
+
"Merge cells": "Combinar celdas",
|
|
48582
|
+
"Split cell": "Dividir celda",
|
|
48583
|
+
"Toggle header row": "Alternar fila de encabezado",
|
|
48584
|
+
"Delete table": "Eliminar tabla"
|
|
47262
48585
|
};
|
|
47263
48586
|
const sv = {
|
|
47264
48587
|
"Bold": "Fet",
|
|
@@ -47343,7 +48666,37 @@ const sv = {
|
|
|
47343
48666
|
"No speech detected": "Inget tal detekterat",
|
|
47344
48667
|
"Microphone access denied": "Mikrofon�tkomst nekad",
|
|
47345
48668
|
"No microphone found": "No microphone found",
|
|
47346
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48669
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48670
|
+
"Subscript": "Nedsänkt",
|
|
48671
|
+
"Superscript": "Upphöjd",
|
|
48672
|
+
"Horizontal rule": "Vågrät linje",
|
|
48673
|
+
"Unlink": "Ta bort länk",
|
|
48674
|
+
"Format": "Format",
|
|
48675
|
+
"Paragraph": "Stycke",
|
|
48676
|
+
"Heading 1": "Rubrik 1",
|
|
48677
|
+
"Heading 2": "Rubrik 2",
|
|
48678
|
+
"Heading 3": "Rubrik 3",
|
|
48679
|
+
"Heading 4": "Rubrik 4",
|
|
48680
|
+
"Heading 5": "Rubrik 5",
|
|
48681
|
+
"Heading 6": "Rubrik 6",
|
|
48682
|
+
"Styles": "Stilar",
|
|
48683
|
+
"Insert anchor": "Infoga ankare",
|
|
48684
|
+
"Anchor": "Ankare",
|
|
48685
|
+
"Anchor name": "Ankarnamn",
|
|
48686
|
+
"Anchor name is required": "Ankarnamn krävs",
|
|
48687
|
+
"Anchor name cannot contain spaces": "Ankarnamn får inte innehålla mellanslag",
|
|
48688
|
+
"Table": "Tabell",
|
|
48689
|
+
"Insert table": "Infoga tabell",
|
|
48690
|
+
"Insert row before": "Infoga rad före",
|
|
48691
|
+
"Insert row after": "Infoga rad efter",
|
|
48692
|
+
"Delete row": "Ta bort rad",
|
|
48693
|
+
"Insert column before": "Infoga kolumn före",
|
|
48694
|
+
"Insert column after": "Infoga kolumn efter",
|
|
48695
|
+
"Delete column": "Ta bort kolumn",
|
|
48696
|
+
"Merge cells": "Slå samman celler",
|
|
48697
|
+
"Split cell": "Dela cell",
|
|
48698
|
+
"Toggle header row": "Växla rubrikrad",
|
|
48699
|
+
"Delete table": "Ta bort tabell"
|
|
47347
48700
|
};
|
|
47348
48701
|
const zhTw = {
|
|
47349
48702
|
"Bold": "粗體",
|
|
@@ -47428,7 +48781,37 @@ const zhTw = {
|
|
|
47428
48781
|
"No speech detected": "??????",
|
|
47429
48782
|
"Microphone access denied": "????????",
|
|
47430
48783
|
"No microphone found": "No microphone found",
|
|
47431
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48784
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48785
|
+
"Subscript": "下標",
|
|
48786
|
+
"Superscript": "上標",
|
|
48787
|
+
"Horizontal rule": "水平線",
|
|
48788
|
+
"Unlink": "移除連結",
|
|
48789
|
+
"Format": "格式",
|
|
48790
|
+
"Paragraph": "段落",
|
|
48791
|
+
"Heading 1": "標題 1",
|
|
48792
|
+
"Heading 2": "標題 2",
|
|
48793
|
+
"Heading 3": "標題 3",
|
|
48794
|
+
"Heading 4": "標題 4",
|
|
48795
|
+
"Heading 5": "標題 5",
|
|
48796
|
+
"Heading 6": "標題 6",
|
|
48797
|
+
"Styles": "樣式",
|
|
48798
|
+
"Insert anchor": "插入錨點",
|
|
48799
|
+
"Anchor": "錨點",
|
|
48800
|
+
"Anchor name": "錨點名稱",
|
|
48801
|
+
"Anchor name is required": "錨點名稱為必填",
|
|
48802
|
+
"Anchor name cannot contain spaces": "錨點名稱不能包含空格",
|
|
48803
|
+
"Table": "表格",
|
|
48804
|
+
"Insert table": "插入表格",
|
|
48805
|
+
"Insert row before": "在上方插入列",
|
|
48806
|
+
"Insert row after": "在下方插入列",
|
|
48807
|
+
"Delete row": "刪除列",
|
|
48808
|
+
"Insert column before": "在左側插入欄",
|
|
48809
|
+
"Insert column after": "在右側插入欄",
|
|
48810
|
+
"Delete column": "刪除欄",
|
|
48811
|
+
"Merge cells": "合併儲存格",
|
|
48812
|
+
"Split cell": "分割儲存格",
|
|
48813
|
+
"Toggle header row": "切換標題列",
|
|
48814
|
+
"Delete table": "刪除表格"
|
|
47432
48815
|
};
|
|
47433
48816
|
const th = {
|
|
47434
48817
|
"Bold": "ตัวหนา",
|
|
@@ -47513,7 +48896,37 @@ const th = {
|
|
|
47513
48896
|
"No speech detected": "?????????????",
|
|
47514
48897
|
"Microphone access denied": "???????????????????????????",
|
|
47515
48898
|
"No microphone found": "No microphone found",
|
|
47516
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
48899
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
48900
|
+
"Subscript": "ตัวห้อย",
|
|
48901
|
+
"Superscript": "ตัวยก",
|
|
48902
|
+
"Horizontal rule": "เส้นแนวนอน",
|
|
48903
|
+
"Unlink": "ลบลิงก์",
|
|
48904
|
+
"Format": "รูปแบบ",
|
|
48905
|
+
"Paragraph": "ย่อหน้า",
|
|
48906
|
+
"Heading 1": "หัวข้อ 1",
|
|
48907
|
+
"Heading 2": "หัวข้อ 2",
|
|
48908
|
+
"Heading 3": "หัวข้อ 3",
|
|
48909
|
+
"Heading 4": "หัวข้อ 4",
|
|
48910
|
+
"Heading 5": "หัวข้อ 5",
|
|
48911
|
+
"Heading 6": "หัวข้อ 6",
|
|
48912
|
+
"Styles": "สไตล์",
|
|
48913
|
+
"Insert anchor": "แทรกจุดยึด",
|
|
48914
|
+
"Anchor": "จุดยึด",
|
|
48915
|
+
"Anchor name": "ชื่อจุดยึด",
|
|
48916
|
+
"Anchor name is required": "ต้องระบุชื่อจุดยึด",
|
|
48917
|
+
"Anchor name cannot contain spaces": "ชื่อจุดยึดต้องไม่มีช่องว่าง",
|
|
48918
|
+
"Table": "ตาราง",
|
|
48919
|
+
"Insert table": "แทรกตาราง",
|
|
48920
|
+
"Insert row before": "แทรกแถวก่อนหน้า",
|
|
48921
|
+
"Insert row after": "แทรกแถวถัดไป",
|
|
48922
|
+
"Delete row": "ลบแถว",
|
|
48923
|
+
"Insert column before": "แทรกคอลัมน์ก่อนหน้า",
|
|
48924
|
+
"Insert column after": "แทรกคอลัมน์ถัดไป",
|
|
48925
|
+
"Delete column": "ลบคอลัมน์",
|
|
48926
|
+
"Merge cells": "ผสานเซลล์",
|
|
48927
|
+
"Split cell": "แยกเซลล์",
|
|
48928
|
+
"Toggle header row": "สลับแถวส่วนหัว",
|
|
48929
|
+
"Delete table": "ลบตาราง"
|
|
47517
48930
|
};
|
|
47518
48931
|
const tr = {
|
|
47519
48932
|
"Bold": "Kalın",
|
|
@@ -47598,7 +49011,37 @@ const tr = {
|
|
|
47598
49011
|
"No speech detected": "Konusma algilanmadi",
|
|
47599
49012
|
"Microphone access denied": "Mikrofon erisimi reddedildi",
|
|
47600
49013
|
"No microphone found": "No microphone found",
|
|
47601
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
49014
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
49015
|
+
"Subscript": "Alt simge",
|
|
49016
|
+
"Superscript": "Üst simge",
|
|
49017
|
+
"Horizontal rule": "Yatay çizgi",
|
|
49018
|
+
"Unlink": "Bağlantıyı kaldır",
|
|
49019
|
+
"Format": "Biçim",
|
|
49020
|
+
"Paragraph": "Paragraf",
|
|
49021
|
+
"Heading 1": "Başlık 1",
|
|
49022
|
+
"Heading 2": "Başlık 2",
|
|
49023
|
+
"Heading 3": "Başlık 3",
|
|
49024
|
+
"Heading 4": "Başlık 4",
|
|
49025
|
+
"Heading 5": "Başlık 5",
|
|
49026
|
+
"Heading 6": "Başlık 6",
|
|
49027
|
+
"Styles": "Stiller",
|
|
49028
|
+
"Insert anchor": "Çapa ekle",
|
|
49029
|
+
"Anchor": "Çapa",
|
|
49030
|
+
"Anchor name": "Çapa adı",
|
|
49031
|
+
"Anchor name is required": "Çapa adı gereklidir",
|
|
49032
|
+
"Anchor name cannot contain spaces": "Çapa adı boşluk içeremez",
|
|
49033
|
+
"Table": "Tablo",
|
|
49034
|
+
"Insert table": "Tablo ekle",
|
|
49035
|
+
"Insert row before": "Önceye satır ekle",
|
|
49036
|
+
"Insert row after": "Sonraya satır ekle",
|
|
49037
|
+
"Delete row": "Satırı sil",
|
|
49038
|
+
"Insert column before": "Önceye sütun ekle",
|
|
49039
|
+
"Insert column after": "Sonraya sütun ekle",
|
|
49040
|
+
"Delete column": "Sütunu sil",
|
|
49041
|
+
"Merge cells": "Hücreleri birleştir",
|
|
49042
|
+
"Split cell": "Hücreyi böl",
|
|
49043
|
+
"Toggle header row": "Başlık satırını aç/kapat",
|
|
49044
|
+
"Delete table": "Tabloyu sil"
|
|
47602
49045
|
};
|
|
47603
49046
|
const vi = {
|
|
47604
49047
|
"Bold": "In đậm",
|
|
@@ -47683,7 +49126,37 @@ const vi = {
|
|
|
47683
49126
|
"No speech detected": "Kh�ng ph�t hi?n gi?ng n�i",
|
|
47684
49127
|
"Microphone access denied": "Quy?n truy c?p micr� b? t? ch?i",
|
|
47685
49128
|
"No microphone found": "No microphone found",
|
|
47686
|
-
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet"
|
|
49129
|
+
"Network error - speech recognition requires internet": "Network error - speech recognition requires internet",
|
|
49130
|
+
"Subscript": "Chỉ số dưới",
|
|
49131
|
+
"Superscript": "Chỉ số trên",
|
|
49132
|
+
"Horizontal rule": "Đường kẻ ngang",
|
|
49133
|
+
"Unlink": "Bỏ liên kết",
|
|
49134
|
+
"Format": "Định dạng",
|
|
49135
|
+
"Paragraph": "Đoạn văn",
|
|
49136
|
+
"Heading 1": "Tiêu đề 1",
|
|
49137
|
+
"Heading 2": "Tiêu đề 2",
|
|
49138
|
+
"Heading 3": "Tiêu đề 3",
|
|
49139
|
+
"Heading 4": "Tiêu đề 4",
|
|
49140
|
+
"Heading 5": "Tiêu đề 5",
|
|
49141
|
+
"Heading 6": "Tiêu đề 6",
|
|
49142
|
+
"Styles": "Kiểu",
|
|
49143
|
+
"Insert anchor": "Chèn neo",
|
|
49144
|
+
"Anchor": "Neo",
|
|
49145
|
+
"Anchor name": "Tên neo",
|
|
49146
|
+
"Anchor name is required": "Tên neo là bắt buộc",
|
|
49147
|
+
"Anchor name cannot contain spaces": "Tên neo không được chứa khoảng trắng",
|
|
49148
|
+
"Table": "Bảng",
|
|
49149
|
+
"Insert table": "Chèn bảng",
|
|
49150
|
+
"Insert row before": "Chèn hàng phía trước",
|
|
49151
|
+
"Insert row after": "Chèn hàng phía sau",
|
|
49152
|
+
"Delete row": "Xóa hàng",
|
|
49153
|
+
"Insert column before": "Chèn cột phía trước",
|
|
49154
|
+
"Insert column after": "Chèn cột phía sau",
|
|
49155
|
+
"Delete column": "Xóa cột",
|
|
49156
|
+
"Merge cells": "Gộp ô",
|
|
49157
|
+
"Split cell": "Tách ô",
|
|
49158
|
+
"Toggle header row": "Bật/tắt hàng tiêu đề",
|
|
49159
|
+
"Delete table": "Xóa bảng"
|
|
47687
49160
|
};
|
|
47688
49161
|
const locales = {
|
|
47689
49162
|
en,
|
|
@@ -47729,8 +49202,8 @@ const availableLocales = Object.keys(locales);
|
|
|
47729
49202
|
const TRANSLATION_KEYS = Object.keys(en);
|
|
47730
49203
|
const lowlight = createLowlight(grammars);
|
|
47731
49204
|
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";
|
|
47732
|
-
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";
|
|
47733
|
-
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";
|
|
49205
|
+
const FULL_TOOLBAR = "bold italic underline strikethrough subscript superscript | blocks styles | bullist numlist outdent indent blockquote | fontfamily fontsize | lineheight alignleft aligncenter alignright alignjustify | forecolor backcolor | removeformat copy cut paste | undo redo | image table charmap emoticons hr | fullscreen preview | code link unlink anchor codesample | ltr rtl | searchreplace";
|
|
49206
|
+
const BASIC_TOOLBAR = "bold italic underline strikethrough subscript superscript | bullist numlist outdent indent | fontfamily fontsize blockquote | lineheight alignleft aligncenter alignright alignjustify | forecolor backcolor | removeformat copy cut paste | undo redo | charmap emoticons | link unlink | ltr rtl | searchreplace";
|
|
47734
49207
|
const DEFAULT_FONT_SIZES = "8pt 9pt 10pt 12pt 14pt 18pt 24pt 36pt";
|
|
47735
49208
|
let editorIdCounter = 0;
|
|
47736
49209
|
let globalTranslate = (key) => key;
|
|
@@ -47786,6 +49259,8 @@ class HTMLEditor {
|
|
|
47786
49259
|
normalizeConfig(config) {
|
|
47787
49260
|
return {
|
|
47788
49261
|
basicEditor: config.basicEditor ?? false,
|
|
49262
|
+
readonly: config.readonly ?? false,
|
|
49263
|
+
forced_root_block: config.forced_root_block ?? "p",
|
|
47789
49264
|
includeTemplates: config.includeTemplates ?? false,
|
|
47790
49265
|
templates: config.templates ?? [],
|
|
47791
49266
|
dropbox: config.dropbox ?? false,
|
|
@@ -47794,8 +49269,14 @@ class HTMLEditor {
|
|
|
47794
49269
|
images_upload_base_path: config.images_upload_base_path ?? "/",
|
|
47795
49270
|
images_upload_max_size: config.images_upload_max_size,
|
|
47796
49271
|
images_upload_headers: config.images_upload_headers,
|
|
47797
|
-
|
|
47798
|
-
|
|
49272
|
+
images_file_types: config.images_file_types,
|
|
49273
|
+
images_upload_validate: config.images_upload_validate,
|
|
49274
|
+
images_upload_error: config.images_upload_error,
|
|
49275
|
+
// CKEditor aliases: font_names / fontSize_sizes map to the TinyMCE keys
|
|
49276
|
+
font_family_formats: config.font_family_formats ?? config.font_names ?? fontNames,
|
|
49277
|
+
font_size_formats: config.font_size_formats ?? config.fontSize_sizes ?? DEFAULT_FONT_SIZES,
|
|
49278
|
+
block_formats: config.block_formats,
|
|
49279
|
+
style_formats: config.style_formats,
|
|
47799
49280
|
fontName: config.fontName,
|
|
47800
49281
|
fontSize: config.fontSize,
|
|
47801
49282
|
directionality: config.directionality ?? "ltr",
|
|
@@ -47869,6 +49350,7 @@ class HTMLEditor {
|
|
|
47869
49350
|
element: editorContent,
|
|
47870
49351
|
extensions,
|
|
47871
49352
|
content: "",
|
|
49353
|
+
editable: !this.config.readonly,
|
|
47872
49354
|
editorProps: {
|
|
47873
49355
|
attributes: {
|
|
47874
49356
|
class: "md-editor-body",
|
|
@@ -47907,6 +49389,10 @@ class HTMLEditor {
|
|
|
47907
49389
|
narrowBreakpoint: this.config.toolbar_narrow_breakpoint ?? 768,
|
|
47908
49390
|
priorityOverrides: this.config.toolbar_priority ?? {}
|
|
47909
49391
|
});
|
|
49392
|
+
if (this.config.readonly) {
|
|
49393
|
+
this.editorWrapper.classList.add("md-editor-readonly");
|
|
49394
|
+
this.toolbar.setEnabled(false);
|
|
49395
|
+
}
|
|
47910
49396
|
if (this.config.auto_focus) {
|
|
47911
49397
|
setTimeout(() => this.focus(), 10);
|
|
47912
49398
|
} else if (this.config.setFocus) {
|
|
@@ -47931,6 +49417,9 @@ class HTMLEditor {
|
|
|
47931
49417
|
uploadBasePath: this.config.images_upload_base_path,
|
|
47932
49418
|
uploadMaxSize: this.config.images_upload_max_size,
|
|
47933
49419
|
uploadHeaders: this.config.images_upload_headers,
|
|
49420
|
+
fileTypes: this.config.images_file_types,
|
|
49421
|
+
validate: this.config.images_upload_validate,
|
|
49422
|
+
onError: this.config.images_upload_error,
|
|
47934
49423
|
trans: globalTranslate
|
|
47935
49424
|
});
|
|
47936
49425
|
}
|
|
@@ -47979,19 +49468,29 @@ class HTMLEditor {
|
|
|
47979
49468
|
const helper = this.getImageUploadHelper();
|
|
47980
49469
|
helper.uploadFile(file).then((src) => {
|
|
47981
49470
|
this.tiptap?.chain().focus().setImage({ src }).run();
|
|
47982
|
-
}).catch(() => {
|
|
49471
|
+
}).catch((err) => {
|
|
49472
|
+
const message = err instanceof Error && err.message ? err.message : globalTranslate("Upload failed");
|
|
49473
|
+
this.config.images_upload_error?.(message);
|
|
47983
49474
|
});
|
|
47984
49475
|
}
|
|
47985
49476
|
buildExtensions() {
|
|
49477
|
+
const useDivBlocks = this.config.forced_root_block === "div";
|
|
47986
49478
|
const extensions = [
|
|
47987
49479
|
StarterKit.configure({
|
|
47988
|
-
codeBlock: false
|
|
49480
|
+
codeBlock: false,
|
|
47989
49481
|
// We use CodeBlockLowlight instead
|
|
49482
|
+
// When forced_root_block is 'div', swap StarterKit's <p> paragraph for
|
|
49483
|
+
// a custom Paragraph that renders as <div> (CKEditor ENTER_DIV parity).
|
|
49484
|
+
...useDivBlocks ? { paragraph: false } : {}
|
|
47990
49485
|
}),
|
|
47991
49486
|
SignatureBlock,
|
|
47992
49487
|
Mention,
|
|
49488
|
+
Anchor,
|
|
49489
|
+
Subscript,
|
|
49490
|
+
Superscript,
|
|
47993
49491
|
Underline,
|
|
47994
49492
|
TextStyle,
|
|
49493
|
+
InlineStyle,
|
|
47995
49494
|
FontFamily,
|
|
47996
49495
|
FontSize,
|
|
47997
49496
|
LineHeight,
|
|
@@ -48028,6 +49527,18 @@ class HTMLEditor {
|
|
|
48028
49527
|
}),
|
|
48029
49528
|
TextDirection
|
|
48030
49529
|
];
|
|
49530
|
+
if (useDivBlocks) {
|
|
49531
|
+
extensions.push(
|
|
49532
|
+
Paragraph.extend({
|
|
49533
|
+
parseHTML() {
|
|
49534
|
+
return [{ tag: "p" }, { tag: "div" }];
|
|
49535
|
+
},
|
|
49536
|
+
renderHTML({ HTMLAttributes }) {
|
|
49537
|
+
return ["div", mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];
|
|
49538
|
+
}
|
|
49539
|
+
})
|
|
49540
|
+
);
|
|
49541
|
+
}
|
|
48031
49542
|
if (this.config.paste_from_office !== false) {
|
|
48032
49543
|
extensions.push(PasteFromOffice);
|
|
48033
49544
|
}
|
|
@@ -48097,6 +49608,12 @@ class HTMLEditor {
|
|
|
48097
49608
|
case "strikethrough":
|
|
48098
49609
|
chain.toggleStrike().run();
|
|
48099
49610
|
return true;
|
|
49611
|
+
case "subscript":
|
|
49612
|
+
chain.toggleSubscript().run();
|
|
49613
|
+
return true;
|
|
49614
|
+
case "superscript":
|
|
49615
|
+
chain.toggleSuperscript().run();
|
|
49616
|
+
return true;
|
|
48100
49617
|
case "fontname":
|
|
48101
49618
|
if (typeof value === "string") {
|
|
48102
49619
|
chain.setFontFamily(value).run();
|
|
@@ -48160,6 +49677,12 @@ class HTMLEditor {
|
|
|
48160
49677
|
case "removeformat":
|
|
48161
49678
|
chain.unsetAllMarks().clearNodes().run();
|
|
48162
49679
|
return true;
|
|
49680
|
+
case "unlink":
|
|
49681
|
+
chain.unsetLink().run();
|
|
49682
|
+
return true;
|
|
49683
|
+
case "inserthorizontalrule":
|
|
49684
|
+
chain.setHorizontalRule().run();
|
|
49685
|
+
return true;
|
|
48163
49686
|
case "mceremoveeditor":
|
|
48164
49687
|
this.destroy();
|
|
48165
49688
|
return true;
|
|
@@ -48177,6 +49700,19 @@ class HTMLEditor {
|
|
|
48177
49700
|
this.fire("dirty", false);
|
|
48178
49701
|
}
|
|
48179
49702
|
}
|
|
49703
|
+
/**
|
|
49704
|
+
* Toggle read-only mode. Disables editing and dims the toolbar.
|
|
49705
|
+
* Mirrors CKEditor's editor.setReadOnly(bool).
|
|
49706
|
+
*/
|
|
49707
|
+
setReadOnly(state) {
|
|
49708
|
+
this.config.readonly = state;
|
|
49709
|
+
this.tiptap?.setEditable(!state);
|
|
49710
|
+
this.editorWrapper?.classList.toggle("md-editor-readonly", state);
|
|
49711
|
+
this.toolbar?.setEnabled(!state);
|
|
49712
|
+
}
|
|
49713
|
+
isReadOnly() {
|
|
49714
|
+
return this.config.readonly ?? false;
|
|
49715
|
+
}
|
|
48180
49716
|
focus() {
|
|
48181
49717
|
this.tiptap?.commands.focus();
|
|
48182
49718
|
}
|
|
@@ -48245,6 +49781,8 @@ class HTMLEditor {
|
|
|
48245
49781
|
}
|
|
48246
49782
|
}
|
|
48247
49783
|
export {
|
|
49784
|
+
Anchor,
|
|
49785
|
+
AnchorDialog,
|
|
48248
49786
|
CHAR_MAP,
|
|
48249
49787
|
CONFAB_ICONS,
|
|
48250
49788
|
CharacterMap,
|
|
@@ -48254,6 +49792,7 @@ export {
|
|
|
48254
49792
|
EmojiPicker,
|
|
48255
49793
|
FontSize,
|
|
48256
49794
|
HTMLEditor,
|
|
49795
|
+
InlineStyle,
|
|
48257
49796
|
LineHeight,
|
|
48258
49797
|
LinkEditor,
|
|
48259
49798
|
Mention,
|