jodit 4.14.2 → 4.14.3
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/CHANGELOG.md +21 -0
- package/es2015/jodit.css +1 -1
- package/es2015/jodit.fat.min.js +7 -7
- package/es2015/jodit.js +469 -313
- package/es2015/jodit.min.js +5 -5
- package/es2015/plugins/debug/debug.css +1 -1
- package/es2015/plugins/debug/debug.js +1 -1
- package/es2015/plugins/debug/debug.min.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2018/jodit.fat.min.js +7 -7
- package/es2018/jodit.min.js +5 -5
- package/es2018/plugins/debug/debug.min.js +1 -1
- package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021/jodit.css +1 -1
- package/es2021/jodit.fat.min.js +9 -9
- package/es2021/jodit.js +456 -304
- package/es2021/jodit.min.js +6 -6
- package/es2021/plugins/debug/debug.css +1 -1
- package/es2021/plugins/debug/debug.js +1 -1
- package/es2021/plugins/debug/debug.min.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021.en/jodit.css +1 -1
- package/es2021.en/jodit.fat.min.js +5 -5
- package/es2021.en/jodit.js +395 -251
- package/es2021.en/jodit.min.js +5 -5
- package/es2021.en/plugins/debug/debug.css +1 -1
- package/es2021.en/plugins/debug/debug.js +1 -1
- package/es2021.en/plugins/debug/debug.min.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es5/jodit.css +2 -2
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +701 -381
- package/es5/jodit.min.css +2 -2
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/debug/debug.css +1 -1
- package/es5/plugins/debug/debug.js +1 -1
- package/es5/plugins/debug/debug.min.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es5/polyfills.fat.min.js +1 -1
- package/es5/polyfills.js +1 -1
- package/es5/polyfills.min.js +1 -1
- package/esm/core/constants.js +1 -1
- package/esm/core/selection/helpers/index.js +5 -2
- package/esm/core/selection/selection.d.ts +8 -5
- package/esm/core/selection/selection.js +267 -159
- package/esm/core/selection/style/api/extract.js +1 -3
- package/esm/core/selection/style/api/is-same-attributes.js +5 -2
- package/esm/core/selection/style/api/toggle-attributes.js +27 -10
- package/esm/core/selection/style/api/unwrap-children.js +39 -33
- package/esm/core/selection/style/apply-style.js +23 -25
- package/esm/core/selection/style/commit-style.js +3 -0
- package/esm/core/selection/style/transactions.js +2 -1
- package/esm/langs/az.d.ts +223 -0
- package/esm/langs/az.js +240 -0
- package/esm/languages.js +2 -0
- package/esm/modules/history/snapshot.js +45 -20
- package/esm/types/style.d.ts +2 -2
- package/esm/types/types.d.ts +3 -0
- package/package.json +1 -1
- package/types/core/selection/selection.d.ts +8 -5
- package/types/langs/az.d.ts +223 -0
- package/types/types/style.d.ts +2 -2
- package/types/types/types.d.ts +3 -0
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Dom } from "../../../dom/dom.js";
|
|
7
7
|
import { isMarker } from "../../../helpers/checker/is-marker.js";
|
|
8
|
-
import { trim } from "../../../helpers/string/trim.js";
|
|
9
8
|
import { call } from "../../../helpers/utils/utils.js";
|
|
10
9
|
/**
|
|
11
10
|
* If the selection area is inside an element that matches the commit (suitable relative),
|
|
@@ -44,8 +43,7 @@ export function extractSelectedPart(wrapper, font, jodit) {
|
|
|
44
43
|
*/
|
|
45
44
|
function extractAndMove(wrapper, range, left) {
|
|
46
45
|
const fragment = range.extractContents();
|
|
47
|
-
if ((
|
|
48
|
-
fragment.firstChild) {
|
|
46
|
+
if (Dom.isEmpty(fragment) && fragment.firstChild) {
|
|
49
47
|
Dom.unwrap(fragment.firstChild);
|
|
50
48
|
}
|
|
51
49
|
if (wrapper.parentNode) {
|
|
@@ -20,13 +20,16 @@ export function isSameAttributes(elm, attrs) {
|
|
|
20
20
|
}
|
|
21
21
|
assert(attrs, 'Attrs must be a non-empty object');
|
|
22
22
|
return Object.keys(attrs).every(key => {
|
|
23
|
+
var _a;
|
|
23
24
|
if (key === 'class' || key === 'className') {
|
|
24
|
-
|
|
25
|
+
const classes = (_a = String(attrs[key]).match(/[^\t\n\f\r ]+/g)) !== null && _a !== void 0 ? _a : [];
|
|
26
|
+
return classes.every(name => elm.classList.contains(name));
|
|
25
27
|
}
|
|
26
28
|
if (key === 'style') {
|
|
27
29
|
return hasSameStyle(elm, attrs[key]);
|
|
28
30
|
}
|
|
29
|
-
|
|
31
|
+
const value = attrs[key];
|
|
32
|
+
return attr(elm, key) === (value == null ? value : String(value));
|
|
30
33
|
});
|
|
31
34
|
}
|
|
32
35
|
export function elementsEqualAttributes(elm1, elm2) {
|
|
@@ -29,7 +29,7 @@ export function toggleAttributes(commitStyle, elm, jodit, mode, dry = false) {
|
|
|
29
29
|
const value = attributes[key];
|
|
30
30
|
switch (key) {
|
|
31
31
|
case 'style': {
|
|
32
|
-
mode = toggleStyle(
|
|
32
|
+
mode = toggleStyle(jodit, value, elm, dry, mode);
|
|
33
33
|
break;
|
|
34
34
|
}
|
|
35
35
|
case 'className':
|
|
@@ -41,9 +41,13 @@ export function toggleAttributes(commitStyle, elm, jodit, mode, dry = false) {
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
// Cleanup belongs to the complete attribute transaction. Removing a
|
|
45
|
+
// wrapper between CSS rules would apply the remaining rules to a detached node.
|
|
46
|
+
return !dry && (attributes === null || attributes === void 0 ? void 0 : attributes.style)
|
|
47
|
+
? removeExtraStyleAttribute(commitStyle, elm, mode)
|
|
48
|
+
: mode;
|
|
45
49
|
}
|
|
46
|
-
function toggleStyle(
|
|
50
|
+
function toggleStyle(jodit, style, elm, dry, mode) {
|
|
47
51
|
assert(isPlainObject(style) && size(style), 'Style must be an object');
|
|
48
52
|
Object.keys(style).forEach((rule) => {
|
|
49
53
|
const inlineValue = cssInline(elm, rule);
|
|
@@ -51,6 +55,15 @@ function toggleStyle(commitStyle, jodit, style, elm, dry, mode) {
|
|
|
51
55
|
if (inlineValue === '' && newValue == null) {
|
|
52
56
|
return;
|
|
53
57
|
}
|
|
58
|
+
if (newValue == null || newValue === '') {
|
|
59
|
+
if (inlineValue) {
|
|
60
|
+
!dry && css(elm, rule, null);
|
|
61
|
+
// An explicit reset changes a style; it is not a toggle of
|
|
62
|
+
// the owning element (notably when resetting list-style-type).
|
|
63
|
+
mode = CHANGE;
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
54
67
|
if (getNativeCSSValue(jodit, elm, rule) ===
|
|
55
68
|
normalizeCssValue(rule, newValue)) {
|
|
56
69
|
if (!inlineValue) {
|
|
@@ -58,34 +71,37 @@ function toggleStyle(commitStyle, jodit, style, elm, dry, mode) {
|
|
|
58
71
|
}
|
|
59
72
|
!dry && css(elm, rule, null);
|
|
60
73
|
mode = UNSET;
|
|
61
|
-
mode = removeExtraStyleAttribute(commitStyle, elm, mode);
|
|
62
74
|
return;
|
|
63
75
|
}
|
|
64
76
|
mode = CHANGE;
|
|
65
77
|
if (!dry) {
|
|
66
78
|
css(elm, rule, newValue);
|
|
67
|
-
mode = removeExtraStyleAttribute(commitStyle, elm, mode);
|
|
68
79
|
}
|
|
69
80
|
});
|
|
70
81
|
return mode;
|
|
71
82
|
}
|
|
72
83
|
function toggleClass(jodit, value, elm, mode, dry) {
|
|
84
|
+
var _a;
|
|
73
85
|
assert(isString(value), 'Class name must be a string');
|
|
86
|
+
const classes = (_a = value.match(/[^\t\n\f\r ]+/g)) !== null && _a !== void 0 ? _a : [];
|
|
87
|
+
if (!classes.length) {
|
|
88
|
+
return mode;
|
|
89
|
+
}
|
|
74
90
|
const hook = jodit.e.fire.bind(jodit.e, `${_PREFIX}AfterToggleAttribute`);
|
|
75
|
-
if (elm.classList.contains(
|
|
91
|
+
if (classes.every(name => elm.classList.contains(name))) {
|
|
76
92
|
mode = UNSET;
|
|
77
93
|
if (!dry) {
|
|
78
|
-
elm.classList.remove(
|
|
94
|
+
elm.classList.remove(...classes);
|
|
79
95
|
if (elm.classList.length === 0) {
|
|
80
96
|
attr(elm, 'class', null);
|
|
81
|
-
hook(mode, elm, 'class', null);
|
|
82
97
|
}
|
|
98
|
+
hook(mode, elm, 'class', attr(elm, 'class'));
|
|
83
99
|
}
|
|
84
100
|
}
|
|
85
101
|
else {
|
|
86
102
|
mode = CHANGE;
|
|
87
103
|
if (!dry) {
|
|
88
|
-
elm.classList.add(
|
|
104
|
+
elm.classList.add(...classes);
|
|
89
105
|
hook(mode, elm, 'class', value);
|
|
90
106
|
}
|
|
91
107
|
}
|
|
@@ -116,7 +132,8 @@ function toggleAttribute(jodit, value, elm, key, dry, mode) {
|
|
|
116
132
|
function removeExtraStyleAttribute(commitStyle, elm, mode) {
|
|
117
133
|
if (!attr(elm, 'style')) {
|
|
118
134
|
attr(elm, 'style', null);
|
|
119
|
-
if (elm.
|
|
135
|
+
if (!elm.attributes.length &&
|
|
136
|
+
elm.tagName.toLowerCase() === commitStyle.defaultTag) {
|
|
120
137
|
Dom.unwrap(elm);
|
|
121
138
|
mode = UNWRAP;
|
|
122
139
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { Dom } from "../../../dom/dom.js";
|
|
7
7
|
import { attr, css } from "../../../helpers/utils/index.js";
|
|
8
8
|
import { hasSameStyleKeys } from "./has-same-style.js";
|
|
9
|
-
import {
|
|
9
|
+
import { isSuitElement } from "./is-suit-element.js";
|
|
10
10
|
/**
|
|
11
11
|
* Unwrap all suit elements inside
|
|
12
12
|
* @private
|
|
@@ -17,42 +17,48 @@ export function unwrapChildren(style, font) {
|
|
|
17
17
|
const needChangeStyle = [];
|
|
18
18
|
let firstElementSuit;
|
|
19
19
|
const cssStyle = (_a = style.options.attributes) === null || _a === void 0 ? void 0 : _a.style;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
const styleKeys = Object.keys(cssStyle !== null && cssStyle !== void 0 ? cssStyle : {});
|
|
21
|
+
const clearedStyle = {};
|
|
22
|
+
styleKeys.forEach(key => {
|
|
23
|
+
clearedStyle[key] = null;
|
|
24
|
+
});
|
|
25
|
+
const clearStyle = (elm) => {
|
|
26
|
+
css(elm, clearedStyle);
|
|
27
|
+
if (!attr(elm, 'style')) {
|
|
28
|
+
attr(elm, 'style', null);
|
|
29
|
+
}
|
|
30
|
+
if (!elm.attributes.length && Dom.isTag(elm, style.element)) {
|
|
31
|
+
needUnwrap.push(elm);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
for (const elm of Dom.eachGen(font)) {
|
|
35
|
+
if (!Dom.isContentEditable(elm, font)) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (isSuitElement(style, elm, true) &&
|
|
39
|
+
(!cssStyle || hasSameStyleKeys(elm, cssStyle))) {
|
|
40
|
+
if (firstElementSuit === undefined) {
|
|
41
|
+
firstElementSuit = true;
|
|
42
|
+
}
|
|
43
|
+
if (cssStyle) {
|
|
44
|
+
needChangeStyle.push(() => clearStyle(elm));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
30
47
|
needUnwrap.push(elm);
|
|
31
48
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
acc[key] = null;
|
|
39
|
-
return acc;
|
|
40
|
-
}, {}));
|
|
41
|
-
if (!attr(elm, 'style')) {
|
|
42
|
-
attr(elm, 'style', null);
|
|
43
|
-
}
|
|
44
|
-
if (!attr(elm, 'style') &&
|
|
45
|
-
elm.nodeName.toLowerCase() === style.element) {
|
|
46
|
-
needUnwrap.push(elm);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
+
}
|
|
50
|
+
else if (cssStyle &&
|
|
51
|
+
Dom.isHTMLElement(elm) &&
|
|
52
|
+
styleKeys.some(key => css(elm, key, true) !== '')) {
|
|
53
|
+
if (firstElementSuit === undefined) {
|
|
54
|
+
firstElementSuit = false;
|
|
49
55
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
needChangeStyle.push(() => clearStyle(elm));
|
|
57
|
+
}
|
|
58
|
+
else if (!Dom.isEmptyTextNode(elm)) {
|
|
59
|
+
if (firstElementSuit === undefined) {
|
|
60
|
+
firstElementSuit = false;
|
|
54
61
|
}
|
|
55
|
-
item = gen.next();
|
|
56
62
|
}
|
|
57
63
|
}
|
|
58
64
|
needChangeStyle.forEach(clb => clb());
|
|
@@ -10,33 +10,31 @@ import { states, transactions } from "./transactions.js";
|
|
|
10
10
|
export function ApplyStyle(jodit, cs) {
|
|
11
11
|
var _a;
|
|
12
12
|
const { s: sel, editor } = jodit;
|
|
13
|
-
// sel.save();
|
|
14
13
|
(_a = editor.firstChild) === null || _a === void 0 ? void 0 : _a.normalize(); // FF fix for test "commandsTest - Exec command "bold"
|
|
15
14
|
const fakes = sel.fakes();
|
|
16
|
-
const
|
|
17
|
-
let
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
//
|
|
35
|
-
|
|
15
|
+
const collapsed = sel.isCollapsed();
|
|
16
|
+
let mode = INITIAL;
|
|
17
|
+
try {
|
|
18
|
+
// for...of closes the generator on an exception, releasing every
|
|
19
|
+
// temporary wrapper before the selection is restored in finally.
|
|
20
|
+
for (const font of sel.wrapInTagGen(fakes)) {
|
|
21
|
+
let state = {
|
|
22
|
+
collapsed,
|
|
23
|
+
mode,
|
|
24
|
+
element: font,
|
|
25
|
+
next: states.START,
|
|
26
|
+
jodit,
|
|
27
|
+
style: cs
|
|
28
|
+
};
|
|
29
|
+
const machine = new FiniteStateMachine(states.START, transactions);
|
|
30
|
+
while (!jodit.isInDestruct && machine.getState() !== states.END) {
|
|
31
|
+
state = machine.dispatch('exec', state);
|
|
32
|
+
}
|
|
33
|
+
// The first selected fragment determines how later fragments toggle.
|
|
34
|
+
mode = state.mode;
|
|
36
35
|
}
|
|
37
|
-
// console.log('-------------------');
|
|
38
|
-
font = gen.next();
|
|
39
36
|
}
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
finally {
|
|
38
|
+
sel.restoreFakes(fakes);
|
|
39
|
+
}
|
|
42
40
|
}
|
|
@@ -25,7 +25,8 @@ export const transactions = {
|
|
|
25
25
|
[states.START]: {
|
|
26
26
|
exec(value) {
|
|
27
27
|
const { element, jodit, style, mode, collapsed } = value;
|
|
28
|
-
if (
|
|
28
|
+
if (!Dom.isContentEditable(element, jodit.editor) ||
|
|
29
|
+
isInsideInvisibleElement(element, jodit.editor) ||
|
|
29
30
|
(!collapsed && Dom.isEmptyContent(element))) {
|
|
30
31
|
return { ...value, next: states.END };
|
|
31
32
|
}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
declare const _exports: {
|
|
2
|
+
'Type something': string;
|
|
3
|
+
Advanced: string;
|
|
4
|
+
'About Jodit': string;
|
|
5
|
+
'Jodit Editor': string;
|
|
6
|
+
"Jodit User's Guide": string;
|
|
7
|
+
'contains detailed help for using': string;
|
|
8
|
+
'For information about the license, please go to our website:': string;
|
|
9
|
+
'Buy full version': string;
|
|
10
|
+
'Copyright \u00A9 XDSoft.net - Chupurnov Valeriy. All rights reserved.': string;
|
|
11
|
+
Anchor: string;
|
|
12
|
+
'Open in new tab': string;
|
|
13
|
+
'Open in fullsize': string;
|
|
14
|
+
'Clear Formatting': string;
|
|
15
|
+
'Fill color or set the text color': string;
|
|
16
|
+
Redo: string;
|
|
17
|
+
Undo: string;
|
|
18
|
+
Bold: string;
|
|
19
|
+
Italic: string;
|
|
20
|
+
'Insert Unordered List': string;
|
|
21
|
+
'Insert Ordered List': string;
|
|
22
|
+
'Align Center': string;
|
|
23
|
+
'Align Justify': string;
|
|
24
|
+
'Align Left': string;
|
|
25
|
+
'Align Right': string;
|
|
26
|
+
'Insert Horizontal Line': string;
|
|
27
|
+
'Insert Image': string;
|
|
28
|
+
'Insert file': string;
|
|
29
|
+
'Insert youtube/vimeo video': string;
|
|
30
|
+
'Insert link': string;
|
|
31
|
+
'Font size': string;
|
|
32
|
+
'Font family': string;
|
|
33
|
+
'Line height': string;
|
|
34
|
+
Spellcheck: string;
|
|
35
|
+
'Speech Recognize': string;
|
|
36
|
+
newline: string;
|
|
37
|
+
'Insert format block': string;
|
|
38
|
+
Normal: string;
|
|
39
|
+
'Heading 1': string;
|
|
40
|
+
'Heading 2': string;
|
|
41
|
+
'Heading 3': string;
|
|
42
|
+
'Heading 4': string;
|
|
43
|
+
Quote: string;
|
|
44
|
+
Code: string;
|
|
45
|
+
Insert: string;
|
|
46
|
+
'Insert table': string;
|
|
47
|
+
'Decrease Indent': string;
|
|
48
|
+
'Increase Indent': string;
|
|
49
|
+
'Select Special Character': string;
|
|
50
|
+
'Insert Special Character': string;
|
|
51
|
+
'Paint format': string;
|
|
52
|
+
'Change mode': string;
|
|
53
|
+
Margins: string;
|
|
54
|
+
top: string;
|
|
55
|
+
right: string;
|
|
56
|
+
bottom: string;
|
|
57
|
+
left: string;
|
|
58
|
+
Styles: string;
|
|
59
|
+
Classes: string;
|
|
60
|
+
Align: string;
|
|
61
|
+
Right: string;
|
|
62
|
+
Center: string;
|
|
63
|
+
Left: string;
|
|
64
|
+
'--Not Set--': string;
|
|
65
|
+
Src: string;
|
|
66
|
+
Title: string;
|
|
67
|
+
Alternative: string;
|
|
68
|
+
Link: string;
|
|
69
|
+
'Open link in new tab': string;
|
|
70
|
+
Image: string;
|
|
71
|
+
file: string;
|
|
72
|
+
'Image properties': string;
|
|
73
|
+
Cancel: string;
|
|
74
|
+
Ok: string;
|
|
75
|
+
'Your code is similar to HTML. Keep as HTML?': string;
|
|
76
|
+
'Paste as HTML': string;
|
|
77
|
+
Keep: string;
|
|
78
|
+
Clean: string;
|
|
79
|
+
'Insert as Text': string;
|
|
80
|
+
'Word Paste Detected': string;
|
|
81
|
+
'The pasted content is coming from a Microsoft Word/Excel document. Do you want to keep the format or clean it up?': string;
|
|
82
|
+
'Insert only Text': string;
|
|
83
|
+
'File Browser': string;
|
|
84
|
+
'Error on load list': string;
|
|
85
|
+
'Error on load folders': string;
|
|
86
|
+
'Are you sure?': string;
|
|
87
|
+
'Enter Directory name': string;
|
|
88
|
+
'Create directory': string;
|
|
89
|
+
'type name': string;
|
|
90
|
+
'type dir name': string;
|
|
91
|
+
'Drop image': string;
|
|
92
|
+
'Drop file': string;
|
|
93
|
+
'or click': string;
|
|
94
|
+
'Alternative text': string;
|
|
95
|
+
Browse: string;
|
|
96
|
+
Upload: string;
|
|
97
|
+
Background: string;
|
|
98
|
+
Text: string;
|
|
99
|
+
Top: string;
|
|
100
|
+
Middle: string;
|
|
101
|
+
Bottom: string;
|
|
102
|
+
'Insert column before': string;
|
|
103
|
+
'Insert column after': string;
|
|
104
|
+
'Insert row above': string;
|
|
105
|
+
'Insert row below': string;
|
|
106
|
+
'Delete table': string;
|
|
107
|
+
'Delete row': string;
|
|
108
|
+
'Delete column': string;
|
|
109
|
+
'Empty cell': string;
|
|
110
|
+
Delete: string;
|
|
111
|
+
'Strike through': string;
|
|
112
|
+
Underline: string;
|
|
113
|
+
Break: string;
|
|
114
|
+
'Search for': string;
|
|
115
|
+
'Replace with': string;
|
|
116
|
+
Replace: string;
|
|
117
|
+
Edit: string;
|
|
118
|
+
'Vertical align': string;
|
|
119
|
+
'Horizontal align': string;
|
|
120
|
+
Filter: string;
|
|
121
|
+
'Sort by changed': string;
|
|
122
|
+
'Sort by name': string;
|
|
123
|
+
'Sort by size': string;
|
|
124
|
+
'Add folder': string;
|
|
125
|
+
'Split vertical': string;
|
|
126
|
+
'Split horizontal': string;
|
|
127
|
+
Split: string;
|
|
128
|
+
Merge: string;
|
|
129
|
+
'Add column': string;
|
|
130
|
+
'Add row': string;
|
|
131
|
+
Border: string;
|
|
132
|
+
'Embed code': string;
|
|
133
|
+
Update: string;
|
|
134
|
+
superscript: string;
|
|
135
|
+
subscript: string;
|
|
136
|
+
'Cut selection': string;
|
|
137
|
+
Paste: string;
|
|
138
|
+
'Choose Content to Paste': string;
|
|
139
|
+
'Chars: %d': string;
|
|
140
|
+
'Words: %d': string;
|
|
141
|
+
All: string;
|
|
142
|
+
'Select %s': string;
|
|
143
|
+
'Select all': string;
|
|
144
|
+
source: string;
|
|
145
|
+
bold: string;
|
|
146
|
+
italic: string;
|
|
147
|
+
brush: string;
|
|
148
|
+
link: string;
|
|
149
|
+
undo: string;
|
|
150
|
+
redo: string;
|
|
151
|
+
table: string;
|
|
152
|
+
image: string;
|
|
153
|
+
eraser: string;
|
|
154
|
+
paragraph: string;
|
|
155
|
+
fontsize: string;
|
|
156
|
+
video: string;
|
|
157
|
+
font: string;
|
|
158
|
+
about: string;
|
|
159
|
+
print: string;
|
|
160
|
+
underline: string;
|
|
161
|
+
strikethrough: string;
|
|
162
|
+
indent: string;
|
|
163
|
+
outdent: string;
|
|
164
|
+
fullsize: string;
|
|
165
|
+
shrink: string;
|
|
166
|
+
hr: string;
|
|
167
|
+
ul: string;
|
|
168
|
+
ol: string;
|
|
169
|
+
'Lower Alpha': string;
|
|
170
|
+
'Upper Alpha': string;
|
|
171
|
+
'Lower Roman': string;
|
|
172
|
+
'Upper Roman': string;
|
|
173
|
+
'Lower Greek': string;
|
|
174
|
+
cut: string;
|
|
175
|
+
selectall: string;
|
|
176
|
+
'Open link': string;
|
|
177
|
+
'Edit link': string;
|
|
178
|
+
'No follow': string;
|
|
179
|
+
Unlink: string;
|
|
180
|
+
Eye: string;
|
|
181
|
+
pencil: string;
|
|
182
|
+
' URL': string;
|
|
183
|
+
Reset: string;
|
|
184
|
+
Save: string;
|
|
185
|
+
'Save as ...': string;
|
|
186
|
+
Resize: string;
|
|
187
|
+
Crop: string;
|
|
188
|
+
Width: string;
|
|
189
|
+
Height: string;
|
|
190
|
+
'Keep Aspect Ratio': string;
|
|
191
|
+
Yes: string;
|
|
192
|
+
No: string;
|
|
193
|
+
Remove: string;
|
|
194
|
+
Select: string;
|
|
195
|
+
'You can only edit your own images. Download this image on the host?': string;
|
|
196
|
+
'The image has been successfully uploaded to the host!': string;
|
|
197
|
+
palette: string;
|
|
198
|
+
'There are no files': string;
|
|
199
|
+
Rename: string;
|
|
200
|
+
'Enter new name': string;
|
|
201
|
+
preview: string;
|
|
202
|
+
download: string;
|
|
203
|
+
'Paste from clipboard': string;
|
|
204
|
+
"Your browser doesn't support direct access to the clipboard.": string;
|
|
205
|
+
'Copy selection': string;
|
|
206
|
+
copy: string;
|
|
207
|
+
'Border radius': string;
|
|
208
|
+
'Show all': string;
|
|
209
|
+
Apply: string;
|
|
210
|
+
'Please fill out this field': string;
|
|
211
|
+
'Please enter a web address': string;
|
|
212
|
+
Default: string;
|
|
213
|
+
Circle: string;
|
|
214
|
+
Dot: string;
|
|
215
|
+
Quadrate: string;
|
|
216
|
+
Find: string;
|
|
217
|
+
'Find Previous': string;
|
|
218
|
+
'Find Next': string;
|
|
219
|
+
'Insert className': string;
|
|
220
|
+
'Press Alt for custom resizing': string;
|
|
221
|
+
'License: %s': string;
|
|
222
|
+
};
|
|
223
|
+
export = _exports;
|