@toast-ui/editor 3.2.1 → 3.2.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/dist/esm/i18n/ar.js +1 -1
- package/dist/esm/i18n/cs-cz.js +1 -1
- package/dist/esm/i18n/de-de.js +1 -1
- package/dist/esm/i18n/en-us.js +1 -1
- package/dist/esm/i18n/es-es.js +1 -1
- package/dist/esm/i18n/fi-fi.js +1 -1
- package/dist/esm/i18n/fr-fr.js +1 -1
- package/dist/esm/i18n/gl-es.js +1 -1
- package/dist/esm/i18n/hr-hr.js +1 -1
- package/dist/esm/i18n/i18n.js +1 -1
- package/dist/esm/i18n/it-it.js +1 -1
- package/dist/esm/i18n/ja-jp.js +1 -1
- package/dist/esm/i18n/ko-kr.js +1 -1
- package/dist/esm/i18n/nb-no.js +1 -1
- package/dist/esm/i18n/nl-nl.js +1 -1
- package/dist/esm/i18n/pl-pl.js +1 -1
- package/dist/esm/i18n/pt-br.js +1 -1
- package/dist/esm/i18n/ru-ru.js +1 -1
- package/dist/esm/i18n/sv-se.js +1 -1
- package/dist/esm/i18n/tr-tr.js +1 -1
- package/dist/esm/i18n/uk-ua.js +1 -1
- package/dist/esm/i18n/zh-cn.js +1 -1
- package/dist/esm/i18n/zh-tw.js +1 -1
- package/dist/esm/index.js +26 -54
- package/dist/esm/indexViewer.js +1 -1
- package/dist/i18n/ar.js +1 -1
- package/dist/i18n/cs-cz.js +1 -1
- package/dist/i18n/de-de.js +1 -1
- package/dist/i18n/es-es.js +1 -1
- package/dist/i18n/fi-fi.js +1 -1
- package/dist/i18n/fr-fr.js +1 -1
- package/dist/i18n/gl-es.js +1 -1
- package/dist/i18n/hr-hr.js +1 -1
- package/dist/i18n/it-it.js +1 -1
- package/dist/i18n/ja-jp.js +1 -1
- package/dist/i18n/ko-kr.js +1 -1
- package/dist/i18n/nb-no.js +1 -1
- package/dist/i18n/nl-nl.js +1 -1
- package/dist/i18n/pl-pl.js +1 -1
- package/dist/i18n/pt-br.js +1 -1
- package/dist/i18n/ru-ru.js +1 -1
- package/dist/i18n/sv-se.js +1 -1
- package/dist/i18n/tr-tr.js +1 -1
- package/dist/i18n/uk-ua.js +1 -1
- package/dist/i18n/zh-cn.js +1 -1
- package/dist/i18n/zh-tw.js +1 -1
- package/dist/toastui-editor-only.css +2 -2
- package/dist/toastui-editor-viewer.css +1 -1
- package/dist/toastui-editor-viewer.js +6 -10
- package/dist/toastui-editor.css +2 -2
- package/dist/toastui-editor.js +27 -55
- package/package.json +1 -1
- package/types/convertor.d.ts +2 -4
- package/types/index.d.ts +1 -1
package/dist/esm/i18n/ar.js
CHANGED
package/dist/esm/i18n/cs-cz.js
CHANGED
package/dist/esm/i18n/de-de.js
CHANGED
package/dist/esm/i18n/en-us.js
CHANGED
package/dist/esm/i18n/es-es.js
CHANGED
package/dist/esm/i18n/fi-fi.js
CHANGED
package/dist/esm/i18n/fr-fr.js
CHANGED
package/dist/esm/i18n/gl-es.js
CHANGED
package/dist/esm/i18n/hr-hr.js
CHANGED
package/dist/esm/i18n/i18n.js
CHANGED
package/dist/esm/i18n/it-it.js
CHANGED
package/dist/esm/i18n/ja-jp.js
CHANGED
package/dist/esm/i18n/ko-kr.js
CHANGED
package/dist/esm/i18n/nb-no.js
CHANGED
package/dist/esm/i18n/nl-nl.js
CHANGED
package/dist/esm/i18n/pl-pl.js
CHANGED
package/dist/esm/i18n/pt-br.js
CHANGED
package/dist/esm/i18n/ru-ru.js
CHANGED
package/dist/esm/i18n/sv-se.js
CHANGED
package/dist/esm/i18n/tr-tr.js
CHANGED
package/dist/esm/i18n/uk-ua.js
CHANGED
package/dist/esm/i18n/zh-cn.js
CHANGED
package/dist/esm/i18n/zh-tw.js
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @toast-ui/editor
|
|
3
|
-
* @version 3.2.
|
|
3
|
+
* @version 3.2.3 | Sun Nov 15 2026
|
|
4
4
|
* @author NHN Cloud FE Development Lab <dl_javascript@nhn.com>
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -914,14 +914,6 @@ function assign(targetObj, obj) {
|
|
|
914
914
|
function getSortedNumPair(valueA, valueB) {
|
|
915
915
|
return valueA > valueB ? [valueB, valueA] : [valueA, valueB];
|
|
916
916
|
}
|
|
917
|
-
function isStartWithSpace(text) {
|
|
918
|
-
var reStartWithSpace = /^\s(\S*)/g;
|
|
919
|
-
return reStartWithSpace.test(text);
|
|
920
|
-
}
|
|
921
|
-
function isEndWithSpace(text) {
|
|
922
|
-
var reEndWithSpace = /(\S*)\s$/g;
|
|
923
|
-
return reEndWithSpace.test(text);
|
|
924
|
-
}
|
|
925
917
|
|
|
926
918
|
/**
|
|
927
919
|
* @fileoverview Transform the Array-like object to Array.
|
|
@@ -1373,7 +1365,6 @@ var reHTMLTag = new RegExp("^" + HTML_TAG, 'i');
|
|
|
1373
1365
|
var reBR = /<br\s*\/*>/i;
|
|
1374
1366
|
var reHTMLComment = /<! ---->|<!--(?:-?[^>-])(?:-?[^-])*-->/;
|
|
1375
1367
|
var ALTERNATIVE_TAG_FOR_BR = '</p><p>';
|
|
1376
|
-
var DEFAULT_TEXT_NOT_START_OR_END_WITH_SPACE = 'a';
|
|
1377
1368
|
|
|
1378
1369
|
function isPositionInBox(style, offsetX, offsetY) {
|
|
1379
1370
|
var left = parseInt(style.left, 10);
|
|
@@ -15760,6 +15751,11 @@ function getCustomAttrs(attrs) {
|
|
|
15760
15751
|
var htmlAttrs = attrs.htmlAttrs, classNames = attrs.classNames;
|
|
15761
15752
|
return __assign$1(__assign$1({}, htmlAttrs), { class: classNames ? classNames.join(' ') : null });
|
|
15762
15753
|
}
|
|
15754
|
+
function getSafeRawHTMLTag(rawHTML, allowed, fallback) {
|
|
15755
|
+
return typeof rawHTML === 'string' && includes(allowed, rawHTML.toLowerCase())
|
|
15756
|
+
? rawHTML
|
|
15757
|
+
: fallback;
|
|
15758
|
+
}
|
|
15763
15759
|
|
|
15764
15760
|
function findWrappingOutside(range, type) {
|
|
15765
15761
|
var parent = range.parent, startIndex = range.startIndex, endIndex = range.endIndex;
|
|
@@ -17914,7 +17910,7 @@ var CodeBlock = /** @class */ (function (_super) {
|
|
|
17914
17910
|
toDOM: function (_a) {
|
|
17915
17911
|
var attrs = _a.attrs;
|
|
17916
17912
|
return [
|
|
17917
|
-
attrs.rawHTML
|
|
17913
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['pre'], 'pre'),
|
|
17918
17914
|
['code', __assign$1({ 'data-language': attrs.language }, getCustomAttrs(attrs)), 0],
|
|
17919
17915
|
];
|
|
17920
17916
|
},
|
|
@@ -18044,7 +18040,7 @@ var OrderedList = /** @class */ (function (_super) {
|
|
|
18044
18040
|
toDOM: function (_a) {
|
|
18045
18041
|
var attrs = _a.attrs;
|
|
18046
18042
|
return [
|
|
18047
|
-
attrs.rawHTML
|
|
18043
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['ol'], 'ol'),
|
|
18048
18044
|
__assign$1({ start: attrs.order === 1 ? null : attrs.order }, getCustomAttrs(attrs)),
|
|
18049
18045
|
0,
|
|
18050
18046
|
];
|
|
@@ -18106,14 +18102,14 @@ var ListItem = /** @class */ (function (_super) {
|
|
|
18106
18102
|
var attrs = _a.attrs;
|
|
18107
18103
|
var task = attrs.task, checked = attrs.checked;
|
|
18108
18104
|
if (!task) {
|
|
18109
|
-
return [attrs.rawHTML
|
|
18105
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['li'], 'li'), 0];
|
|
18110
18106
|
}
|
|
18111
18107
|
var classNames = ['task-list-item'];
|
|
18112
18108
|
if (checked) {
|
|
18113
18109
|
classNames.push('checked');
|
|
18114
18110
|
}
|
|
18115
18111
|
return [
|
|
18116
|
-
attrs.rawHTML
|
|
18112
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['li'], 'li'),
|
|
18117
18113
|
__assign$1({ class: classNames.join(' '), 'data-task': task }, (checked && { 'data-task-checked': checked })),
|
|
18118
18114
|
0,
|
|
18119
18115
|
];
|
|
@@ -18972,7 +18968,7 @@ var Image = /** @class */ (function (_super) {
|
|
|
18972
18968
|
toDOM: function (_a) {
|
|
18973
18969
|
var attrs = _a.attrs;
|
|
18974
18970
|
return [
|
|
18975
|
-
attrs.rawHTML
|
|
18971
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['img'], 'img'),
|
|
18976
18972
|
__assign$1(__assign$1({ src: escapeXml$1(attrs.imageUrl) }, (attrs.altText && { alt: attrs.altText })), getCustomAttrs(attrs)),
|
|
18977
18973
|
];
|
|
18978
18974
|
},
|
|
@@ -19023,7 +19019,7 @@ var ThematicBreak = /** @class */ (function (_super) {
|
|
|
19023
19019
|
selectable: false,
|
|
19024
19020
|
toDOM: function (_a) {
|
|
19025
19021
|
var attrs = _a.attrs;
|
|
19026
|
-
return ['div', getCustomAttrs(attrs), [attrs.rawHTML
|
|
19022
|
+
return ['div', getCustomAttrs(attrs), [getSafeRawHTMLTag(attrs.rawHTML, ['hr'], 'hr')]];
|
|
19027
19023
|
},
|
|
19028
19024
|
};
|
|
19029
19025
|
},
|
|
@@ -19093,7 +19089,7 @@ var Strong = /** @class */ (function (_super) {
|
|
|
19093
19089
|
parseDOM: parseDOM,
|
|
19094
19090
|
toDOM: function (_a) {
|
|
19095
19091
|
var attrs = _a.attrs;
|
|
19096
|
-
return [attrs.rawHTML
|
|
19092
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['b', 'strong'], 'strong'), getCustomAttrs(attrs)];
|
|
19097
19093
|
},
|
|
19098
19094
|
};
|
|
19099
19095
|
},
|
|
@@ -19144,7 +19140,7 @@ var Emph = /** @class */ (function (_super) {
|
|
|
19144
19140
|
parseDOM: parseDOM,
|
|
19145
19141
|
toDOM: function (_a) {
|
|
19146
19142
|
var attrs = _a.attrs;
|
|
19147
|
-
return [attrs.rawHTML
|
|
19143
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['i', 'em'], 'em'), getCustomAttrs(attrs)];
|
|
19148
19144
|
},
|
|
19149
19145
|
};
|
|
19150
19146
|
},
|
|
@@ -19195,7 +19191,7 @@ var Strike = /** @class */ (function (_super) {
|
|
|
19195
19191
|
parseDOM: parseDOM,
|
|
19196
19192
|
toDOM: function (_a) {
|
|
19197
19193
|
var attrs = _a.attrs;
|
|
19198
|
-
return [attrs.rawHTML
|
|
19194
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['s', 'del'], 'del'), getCustomAttrs(attrs)];
|
|
19199
19195
|
},
|
|
19200
19196
|
};
|
|
19201
19197
|
},
|
|
@@ -19251,7 +19247,7 @@ var Link = /** @class */ (function (_super) {
|
|
|
19251
19247
|
toDOM: function (_a) {
|
|
19252
19248
|
var attrs = _a.attrs;
|
|
19253
19249
|
return [
|
|
19254
|
-
attrs.rawHTML
|
|
19250
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['a'], 'a'),
|
|
19255
19251
|
__assign$1(__assign$1({ href: escapeXml$1(attrs.linkUrl) }, _this.linkAttributes), getCustomAttrs(attrs)),
|
|
19256
19252
|
];
|
|
19257
19253
|
},
|
|
@@ -19322,7 +19318,7 @@ var Code = /** @class */ (function (_super) {
|
|
|
19322
19318
|
],
|
|
19323
19319
|
toDOM: function (_a) {
|
|
19324
19320
|
var attrs = _a.attrs;
|
|
19325
|
-
return [attrs.rawHTML
|
|
19321
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['code'], 'code'), getCustomAttrs(attrs)];
|
|
19326
19322
|
},
|
|
19327
19323
|
};
|
|
19328
19324
|
},
|
|
@@ -21174,42 +21170,30 @@ var toMdConvertors = {
|
|
|
21174
21170
|
text: node.textContent,
|
|
21175
21171
|
};
|
|
21176
21172
|
},
|
|
21177
|
-
strong: function (_a, _b
|
|
21173
|
+
strong: function (_a, _b) {
|
|
21178
21174
|
var node = _a.node;
|
|
21179
21175
|
var entering = _b.entering;
|
|
21180
21176
|
var rawHTML = node.attrs.rawHTML;
|
|
21181
|
-
var delim = '**';
|
|
21182
|
-
if (!betweenSpace) {
|
|
21183
|
-
delim = entering ? '<strong>' : '</strong>';
|
|
21184
|
-
}
|
|
21185
21177
|
return {
|
|
21186
|
-
delim:
|
|
21178
|
+
delim: '**',
|
|
21187
21179
|
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML),
|
|
21188
21180
|
};
|
|
21189
21181
|
},
|
|
21190
|
-
emph: function (_a, _b
|
|
21182
|
+
emph: function (_a, _b) {
|
|
21191
21183
|
var node = _a.node;
|
|
21192
21184
|
var entering = _b.entering;
|
|
21193
21185
|
var rawHTML = node.attrs.rawHTML;
|
|
21194
|
-
var delim = '*';
|
|
21195
|
-
if (!betweenSpace) {
|
|
21196
|
-
delim = entering ? '<em>' : '</em>';
|
|
21197
|
-
}
|
|
21198
21186
|
return {
|
|
21199
|
-
delim:
|
|
21187
|
+
delim: '*',
|
|
21200
21188
|
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML),
|
|
21201
21189
|
};
|
|
21202
21190
|
},
|
|
21203
|
-
strike: function (_a, _b
|
|
21191
|
+
strike: function (_a, _b) {
|
|
21204
21192
|
var node = _a.node;
|
|
21205
21193
|
var entering = _b.entering;
|
|
21206
21194
|
var rawHTML = node.attrs.rawHTML;
|
|
21207
|
-
var delim = '~~';
|
|
21208
|
-
if (!betweenSpace) {
|
|
21209
|
-
delim = entering ? '<del>' : '</del>';
|
|
21210
|
-
}
|
|
21211
21195
|
return {
|
|
21212
|
-
delim:
|
|
21196
|
+
delim: '~~',
|
|
21213
21197
|
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML),
|
|
21214
21198
|
};
|
|
21215
21199
|
},
|
|
@@ -21316,7 +21300,7 @@ function createMarkTypeConvertors(convertors) {
|
|
|
21316
21300
|
var markTypeConvertors = {};
|
|
21317
21301
|
var markTypes = Object.keys(markTypeOptions);
|
|
21318
21302
|
markTypes.forEach(function (type) {
|
|
21319
|
-
markTypeConvertors[type] = function (nodeInfo, entering
|
|
21303
|
+
markTypeConvertors[type] = function (nodeInfo, entering) {
|
|
21320
21304
|
var markOption = markTypeOptions[type];
|
|
21321
21305
|
var convertor = convertors[type];
|
|
21322
21306
|
// There are two ways to call the mark type converter
|
|
@@ -21324,9 +21308,7 @@ function createMarkTypeConvertors(convertors) {
|
|
|
21324
21308
|
// When calling the converter without using `delim` and `rawHTML` values,
|
|
21325
21309
|
// the converter is called without parameters.
|
|
21326
21310
|
var runConvertor = convertor && nodeInfo && !isUndefined_1(entering);
|
|
21327
|
-
var params = runConvertor
|
|
21328
|
-
? convertor(nodeInfo, { entering: entering }, betweenSpace)
|
|
21329
|
-
: {};
|
|
21311
|
+
var params = runConvertor ? convertor(nodeInfo, { entering: entering }) : {};
|
|
21330
21312
|
return __assign$1(__assign$1({}, params), markOption);
|
|
21331
21313
|
};
|
|
21332
21314
|
});
|
|
@@ -21387,20 +21369,10 @@ var ToMdConvertorState = /** @class */ (function () {
|
|
|
21387
21369
|
ToMdConvertorState.prototype.isInBlank = function () {
|
|
21388
21370
|
return /(^|\n)$/.test(this.result);
|
|
21389
21371
|
};
|
|
21390
|
-
ToMdConvertorState.prototype.isBetweenSpaces = function (parent, index) {
|
|
21391
|
-
var _a, _b;
|
|
21392
|
-
var content = parent.content;
|
|
21393
|
-
var isFrontNodeEndWithSpace = index === 0 ||
|
|
21394
|
-
isEndWithSpace((_a = content.child(index - 1).text) !== null && _a !== void 0 ? _a : DEFAULT_TEXT_NOT_START_OR_END_WITH_SPACE);
|
|
21395
|
-
var isRearNodeStartWithSpace = index >= content.childCount - 1 ||
|
|
21396
|
-
isStartWithSpace((_b = content.child(index + 1).text) !== null && _b !== void 0 ? _b : DEFAULT_TEXT_NOT_START_OR_END_WITH_SPACE);
|
|
21397
|
-
return isFrontNodeEndWithSpace && isRearNodeStartWithSpace;
|
|
21398
|
-
};
|
|
21399
21372
|
ToMdConvertorState.prototype.markText = function (mark, entering, parent, index) {
|
|
21400
21373
|
var convertor = this.getMarkConvertor(mark);
|
|
21401
21374
|
if (convertor) {
|
|
21402
|
-
var
|
|
21403
|
-
var _a = convertor({ node: mark, parent: parent, index: index }, entering, betweenSpace), delim = _a.delim, rawHTML = _a.rawHTML;
|
|
21375
|
+
var _a = convertor({ node: mark, parent: parent, index: index }, entering), delim = _a.delim, rawHTML = _a.rawHTML;
|
|
21404
21376
|
return rawHTML || delim;
|
|
21405
21377
|
}
|
|
21406
21378
|
return '';
|
package/dist/esm/indexViewer.js
CHANGED
package/dist/i18n/ar.js
CHANGED
package/dist/i18n/cs-cz.js
CHANGED
package/dist/i18n/de-de.js
CHANGED
package/dist/i18n/es-es.js
CHANGED
package/dist/i18n/fi-fi.js
CHANGED
package/dist/i18n/fr-fr.js
CHANGED
package/dist/i18n/gl-es.js
CHANGED
package/dist/i18n/hr-hr.js
CHANGED
package/dist/i18n/it-it.js
CHANGED
package/dist/i18n/ja-jp.js
CHANGED
package/dist/i18n/ko-kr.js
CHANGED
package/dist/i18n/nb-no.js
CHANGED
package/dist/i18n/nl-nl.js
CHANGED
package/dist/i18n/pl-pl.js
CHANGED
package/dist/i18n/pt-br.js
CHANGED
package/dist/i18n/ru-ru.js
CHANGED
package/dist/i18n/sv-se.js
CHANGED
package/dist/i18n/tr-tr.js
CHANGED
package/dist/i18n/uk-ua.js
CHANGED
package/dist/i18n/zh-cn.js
CHANGED
package/dist/i18n/zh-tw.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* @toast-ui/editor
|
|
3
|
-
* @version 3.2.
|
|
3
|
+
* @version 3.2.3 | Sun Nov 15 2026
|
|
4
4
|
* @author NHN Cloud FE Development Lab <dl_javascript@nhn.com>
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
7
|
-
@charset "utf-8";
|
|
8
7
|
/* height */
|
|
9
8
|
.auto-height,
|
|
10
9
|
.auto-height .toastui-editor-defaultUI {
|
|
@@ -894,6 +893,7 @@
|
|
|
894
893
|
max-width: none;
|
|
895
894
|
}
|
|
896
895
|
}
|
|
896
|
+
|
|
897
897
|
.toastui-editor-contents .toastui-editor-md-preview-highlight {
|
|
898
898
|
position: relative;
|
|
899
899
|
z-index: 0;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* @toast-ui/editor
|
|
3
|
-
* @version 3.2.
|
|
3
|
+
* @version 3.2.3 | Sun Nov 15 2026
|
|
4
4
|
* @author NHN Cloud FE Development Lab <dl_javascript@nhn.com>
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -12088,7 +12088,6 @@ var reHTMLTag = new RegExp("^" + constants_HTML_TAG, 'i');
|
|
|
12088
12088
|
var constants_reBR = /<br\s*\/*>/i;
|
|
12089
12089
|
var reHTMLComment = /<! ---->|<!--(?:-?[^>-])(?:-?[^-])*-->/;
|
|
12090
12090
|
var constants_ALTERNATIVE_TAG_FOR_BR = '</p><p>';
|
|
12091
|
-
var DEFAULT_TEXT_NOT_START_OR_END_WITH_SPACE = 'a';
|
|
12092
12091
|
|
|
12093
12092
|
// EXTERNAL MODULE: ../../node_modules/tui-code-snippet/type/isNull.js
|
|
12094
12093
|
var type_isNull = __webpack_require__(934);
|
|
@@ -12317,14 +12316,6 @@ function common_assign(targetObj, obj) {
|
|
|
12317
12316
|
function getSortedNumPair(valueA, valueB) {
|
|
12318
12317
|
return valueA > valueB ? [valueB, valueA] : [valueA, valueB];
|
|
12319
12318
|
}
|
|
12320
|
-
function isStartWithSpace(text) {
|
|
12321
|
-
var reStartWithSpace = /^\s(\S*)/g;
|
|
12322
|
-
return reStartWithSpace.test(text);
|
|
12323
|
-
}
|
|
12324
|
-
function isEndWithSpace(text) {
|
|
12325
|
-
var reEndWithSpace = /(\S*)\s$/g;
|
|
12326
|
-
return reEndWithSpace.test(text);
|
|
12327
|
-
}
|
|
12328
12319
|
|
|
12329
12320
|
;// CONCATENATED MODULE: ./src/utils/dom.ts
|
|
12330
12321
|
|
|
@@ -13650,6 +13641,11 @@ function getCustomAttrs(attrs) {
|
|
|
13650
13641
|
var htmlAttrs = attrs.htmlAttrs, classNames = attrs.classNames;
|
|
13651
13642
|
return __assign(__assign({}, htmlAttrs), { class: classNames ? classNames.join(' ') : null });
|
|
13652
13643
|
}
|
|
13644
|
+
function getSafeRawHTMLTag(rawHTML, allowed, fallback) {
|
|
13645
|
+
return typeof rawHTML === 'string' && includes(allowed, rawHTML.toLowerCase())
|
|
13646
|
+
? rawHTML
|
|
13647
|
+
: fallback;
|
|
13648
|
+
}
|
|
13653
13649
|
|
|
13654
13650
|
;// CONCATENATED MODULE: ./src/wysiwyg/helper/tableOffsetMap.ts
|
|
13655
13651
|
|
package/dist/toastui-editor.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* @toast-ui/editor
|
|
3
|
-
* @version 3.2.
|
|
3
|
+
* @version 3.2.3 | Sun Nov 15 2026
|
|
4
4
|
* @author NHN Cloud FE Development Lab <dl_javascript@nhn.com>
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -56,7 +56,6 @@ img.ProseMirror-separator {
|
|
|
56
56
|
margin: 0 !important;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
@charset "utf-8";
|
|
60
59
|
/* height */
|
|
61
60
|
.auto-height,
|
|
62
61
|
.auto-height .toastui-editor-defaultUI {
|
|
@@ -946,6 +945,7 @@ img.ProseMirror-separator {
|
|
|
946
945
|
max-width: none;
|
|
947
946
|
}
|
|
948
947
|
}
|
|
948
|
+
|
|
949
949
|
/*
|
|
950
950
|
z-index basis
|
|
951
951
|
-1: pseudo element
|
package/dist/toastui-editor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* @toast-ui/editor
|
|
3
|
-
* @version 3.2.
|
|
3
|
+
* @version 3.2.3 | Sun Nov 15 2026
|
|
4
4
|
* @author NHN Cloud FE Development Lab <dl_javascript@nhn.com>
|
|
5
5
|
* @license MIT
|
|
6
6
|
*/
|
|
@@ -3602,14 +3602,6 @@ function common_assign(targetObj, obj) {
|
|
|
3602
3602
|
function getSortedNumPair(valueA, valueB) {
|
|
3603
3603
|
return valueA > valueB ? [valueB, valueA] : [valueA, valueB];
|
|
3604
3604
|
}
|
|
3605
|
-
function isStartWithSpace(text) {
|
|
3606
|
-
var reStartWithSpace = /^\s(\S*)/g;
|
|
3607
|
-
return reStartWithSpace.test(text);
|
|
3608
|
-
}
|
|
3609
|
-
function isEndWithSpace(text) {
|
|
3610
|
-
var reEndWithSpace = /(\S*)\s$/g;
|
|
3611
|
-
return reEndWithSpace.test(text);
|
|
3612
|
-
}
|
|
3613
3605
|
|
|
3614
3606
|
// EXTERNAL MODULE: external {"commonjs":"prosemirror-view","commonjs2":"prosemirror-view","amd":"prosemirror-view"}
|
|
3615
3607
|
var external_commonjs_prosemirror_view_commonjs2_prosemirror_view_amd_prosemirror_view_ = __webpack_require__(311);
|
|
@@ -4014,7 +4006,6 @@ var reHTMLTag = new RegExp("^" + HTML_TAG, 'i');
|
|
|
4014
4006
|
var reBR = /<br\s*\/*>/i;
|
|
4015
4007
|
var reHTMLComment = /<! ---->|<!--(?:-?[^>-])(?:-?[^-])*-->/;
|
|
4016
4008
|
var ALTERNATIVE_TAG_FOR_BR = '</p><p>';
|
|
4017
|
-
var DEFAULT_TEXT_NOT_START_OR_END_WITH_SPACE = 'a';
|
|
4018
4009
|
|
|
4019
4010
|
;// CONCATENATED MODULE: ./src/utils/dom.ts
|
|
4020
4011
|
|
|
@@ -17053,6 +17044,11 @@ function getCustomAttrs(attrs) {
|
|
|
17053
17044
|
var htmlAttrs = attrs.htmlAttrs, classNames = attrs.classNames;
|
|
17054
17045
|
return __assign(__assign({}, htmlAttrs), { class: classNames ? classNames.join(' ') : null });
|
|
17055
17046
|
}
|
|
17047
|
+
function getSafeRawHTMLTag(rawHTML, allowed, fallback) {
|
|
17048
|
+
return typeof rawHTML === 'string' && common_includes(allowed, rawHTML.toLowerCase())
|
|
17049
|
+
? rawHTML
|
|
17050
|
+
: fallback;
|
|
17051
|
+
}
|
|
17056
17052
|
|
|
17057
17053
|
;// CONCATENATED MODULE: ./src/wysiwyg/command/list.ts
|
|
17058
17054
|
|
|
@@ -19329,7 +19325,7 @@ var codeBlock_CodeBlock = /** @class */ (function (_super) {
|
|
|
19329
19325
|
toDOM: function (_a) {
|
|
19330
19326
|
var attrs = _a.attrs;
|
|
19331
19327
|
return [
|
|
19332
|
-
attrs.rawHTML
|
|
19328
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['pre'], 'pre'),
|
|
19333
19329
|
['code', __assign({ 'data-language': attrs.language }, getCustomAttrs(attrs)), 0],
|
|
19334
19330
|
];
|
|
19335
19331
|
},
|
|
@@ -19473,7 +19469,7 @@ var OrderedList = /** @class */ (function (_super) {
|
|
|
19473
19469
|
toDOM: function (_a) {
|
|
19474
19470
|
var attrs = _a.attrs;
|
|
19475
19471
|
return [
|
|
19476
|
-
attrs.rawHTML
|
|
19472
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['ol'], 'ol'),
|
|
19477
19473
|
__assign({ start: attrs.order === 1 ? null : attrs.order }, getCustomAttrs(attrs)),
|
|
19478
19474
|
0,
|
|
19479
19475
|
];
|
|
@@ -19504,6 +19500,7 @@ var OrderedList = /** @class */ (function (_super) {
|
|
|
19504
19500
|
|
|
19505
19501
|
|
|
19506
19502
|
|
|
19503
|
+
|
|
19507
19504
|
var listItem_ListItem = /** @class */ (function (_super) {
|
|
19508
19505
|
__extends(ListItem, _super);
|
|
19509
19506
|
function ListItem() {
|
|
@@ -19540,14 +19537,14 @@ var listItem_ListItem = /** @class */ (function (_super) {
|
|
|
19540
19537
|
var attrs = _a.attrs;
|
|
19541
19538
|
var task = attrs.task, checked = attrs.checked;
|
|
19542
19539
|
if (!task) {
|
|
19543
|
-
return [attrs.rawHTML
|
|
19540
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['li'], 'li'), 0];
|
|
19544
19541
|
}
|
|
19545
19542
|
var classNames = ['task-list-item'];
|
|
19546
19543
|
if (checked) {
|
|
19547
19544
|
classNames.push('checked');
|
|
19548
19545
|
}
|
|
19549
19546
|
return [
|
|
19550
|
-
attrs.rawHTML
|
|
19547
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['li'], 'li'),
|
|
19551
19548
|
__assign({ class: classNames.join(' '), 'data-task': task }, (checked && { 'data-task-checked': checked })),
|
|
19552
19549
|
0,
|
|
19553
19550
|
];
|
|
@@ -20466,7 +20463,7 @@ var Image = /** @class */ (function (_super) {
|
|
|
20466
20463
|
toDOM: function (_a) {
|
|
20467
20464
|
var attrs = _a.attrs;
|
|
20468
20465
|
return [
|
|
20469
|
-
attrs.rawHTML
|
|
20466
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['img'], 'img'),
|
|
20470
20467
|
__assign(__assign({ src: escapeXml(attrs.imageUrl) }, (attrs.altText && { alt: attrs.altText })), getCustomAttrs(attrs)),
|
|
20471
20468
|
];
|
|
20472
20469
|
},
|
|
@@ -20522,7 +20519,7 @@ var thematicBreak_ThematicBreak = /** @class */ (function (_super) {
|
|
|
20522
20519
|
selectable: false,
|
|
20523
20520
|
toDOM: function (_a) {
|
|
20524
20521
|
var attrs = _a.attrs;
|
|
20525
|
-
return ['div', getCustomAttrs(attrs), [attrs.rawHTML
|
|
20522
|
+
return ['div', getCustomAttrs(attrs), [getSafeRawHTMLTag(attrs.rawHTML, ['hr'], 'hr')]];
|
|
20526
20523
|
},
|
|
20527
20524
|
};
|
|
20528
20525
|
},
|
|
@@ -20598,7 +20595,7 @@ var strong_Strong = /** @class */ (function (_super) {
|
|
|
20598
20595
|
parseDOM: parseDOM,
|
|
20599
20596
|
toDOM: function (_a) {
|
|
20600
20597
|
var attrs = _a.attrs;
|
|
20601
|
-
return [attrs.rawHTML
|
|
20598
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['b', 'strong'], 'strong'), getCustomAttrs(attrs)];
|
|
20602
20599
|
},
|
|
20603
20600
|
};
|
|
20604
20601
|
},
|
|
@@ -20655,7 +20652,7 @@ var emph_Emph = /** @class */ (function (_super) {
|
|
|
20655
20652
|
parseDOM: parseDOM,
|
|
20656
20653
|
toDOM: function (_a) {
|
|
20657
20654
|
var attrs = _a.attrs;
|
|
20658
|
-
return [attrs.rawHTML
|
|
20655
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['i', 'em'], 'em'), getCustomAttrs(attrs)];
|
|
20659
20656
|
},
|
|
20660
20657
|
};
|
|
20661
20658
|
},
|
|
@@ -20712,7 +20709,7 @@ var strike_Strike = /** @class */ (function (_super) {
|
|
|
20712
20709
|
parseDOM: parseDOM,
|
|
20713
20710
|
toDOM: function (_a) {
|
|
20714
20711
|
var attrs = _a.attrs;
|
|
20715
|
-
return [attrs.rawHTML
|
|
20712
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['s', 'del'], 'del'), getCustomAttrs(attrs)];
|
|
20716
20713
|
},
|
|
20717
20714
|
};
|
|
20718
20715
|
},
|
|
@@ -20777,7 +20774,7 @@ var link_Link = /** @class */ (function (_super) {
|
|
|
20777
20774
|
toDOM: function (_a) {
|
|
20778
20775
|
var attrs = _a.attrs;
|
|
20779
20776
|
return [
|
|
20780
|
-
attrs.rawHTML
|
|
20777
|
+
getSafeRawHTMLTag(attrs.rawHTML, ['a'], 'a'),
|
|
20781
20778
|
__assign(__assign({ href: escapeXml(attrs.linkUrl) }, _this.linkAttributes), getCustomAttrs(attrs)),
|
|
20782
20779
|
];
|
|
20783
20780
|
},
|
|
@@ -20854,7 +20851,7 @@ var code_Code = /** @class */ (function (_super) {
|
|
|
20854
20851
|
],
|
|
20855
20852
|
toDOM: function (_a) {
|
|
20856
20853
|
var attrs = _a.attrs;
|
|
20857
|
-
return [attrs.rawHTML
|
|
20854
|
+
return [getSafeRawHTMLTag(attrs.rawHTML, ['code'], 'code'), getCustomAttrs(attrs)];
|
|
20858
20855
|
},
|
|
20859
20856
|
};
|
|
20860
20857
|
},
|
|
@@ -22741,42 +22738,30 @@ var toMdConvertors = {
|
|
|
22741
22738
|
text: node.textContent,
|
|
22742
22739
|
};
|
|
22743
22740
|
},
|
|
22744
|
-
strong: function (_a, _b
|
|
22741
|
+
strong: function (_a, _b) {
|
|
22745
22742
|
var node = _a.node;
|
|
22746
22743
|
var entering = _b.entering;
|
|
22747
22744
|
var rawHTML = node.attrs.rawHTML;
|
|
22748
|
-
var delim = '**';
|
|
22749
|
-
if (!betweenSpace) {
|
|
22750
|
-
delim = entering ? '<strong>' : '</strong>';
|
|
22751
|
-
}
|
|
22752
22745
|
return {
|
|
22753
|
-
delim:
|
|
22746
|
+
delim: '**',
|
|
22754
22747
|
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML),
|
|
22755
22748
|
};
|
|
22756
22749
|
},
|
|
22757
|
-
emph: function (_a, _b
|
|
22750
|
+
emph: function (_a, _b) {
|
|
22758
22751
|
var node = _a.node;
|
|
22759
22752
|
var entering = _b.entering;
|
|
22760
22753
|
var rawHTML = node.attrs.rawHTML;
|
|
22761
|
-
var delim = '*';
|
|
22762
|
-
if (!betweenSpace) {
|
|
22763
|
-
delim = entering ? '<em>' : '</em>';
|
|
22764
|
-
}
|
|
22765
22754
|
return {
|
|
22766
|
-
delim:
|
|
22755
|
+
delim: '*',
|
|
22767
22756
|
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML),
|
|
22768
22757
|
};
|
|
22769
22758
|
},
|
|
22770
|
-
strike: function (_a, _b
|
|
22759
|
+
strike: function (_a, _b) {
|
|
22771
22760
|
var node = _a.node;
|
|
22772
22761
|
var entering = _b.entering;
|
|
22773
22762
|
var rawHTML = node.attrs.rawHTML;
|
|
22774
|
-
var delim = '~~';
|
|
22775
|
-
if (!betweenSpace) {
|
|
22776
|
-
delim = entering ? '<del>' : '</del>';
|
|
22777
|
-
}
|
|
22778
22763
|
return {
|
|
22779
|
-
delim:
|
|
22764
|
+
delim: '~~',
|
|
22780
22765
|
rawHTML: entering ? getOpenRawHTML(rawHTML) : getCloseRawHTML(rawHTML),
|
|
22781
22766
|
};
|
|
22782
22767
|
},
|
|
@@ -22883,7 +22868,7 @@ function createMarkTypeConvertors(convertors) {
|
|
|
22883
22868
|
var markTypeConvertors = {};
|
|
22884
22869
|
var markTypes = Object.keys(markTypeOptions);
|
|
22885
22870
|
markTypes.forEach(function (type) {
|
|
22886
|
-
markTypeConvertors[type] = function (nodeInfo, entering
|
|
22871
|
+
markTypeConvertors[type] = function (nodeInfo, entering) {
|
|
22887
22872
|
var markOption = markTypeOptions[type];
|
|
22888
22873
|
var convertor = convertors[type];
|
|
22889
22874
|
// There are two ways to call the mark type converter
|
|
@@ -22891,9 +22876,7 @@ function createMarkTypeConvertors(convertors) {
|
|
|
22891
22876
|
// When calling the converter without using `delim` and `rawHTML` values,
|
|
22892
22877
|
// the converter is called without parameters.
|
|
22893
22878
|
var runConvertor = convertor && nodeInfo && !isUndefined_default()(entering);
|
|
22894
|
-
var params = runConvertor
|
|
22895
|
-
? convertor(nodeInfo, { entering: entering }, betweenSpace)
|
|
22896
|
-
: {};
|
|
22879
|
+
var params = runConvertor ? convertor(nodeInfo, { entering: entering }) : {};
|
|
22897
22880
|
return __assign(__assign({}, params), markOption);
|
|
22898
22881
|
};
|
|
22899
22882
|
});
|
|
@@ -22937,7 +22920,6 @@ function createMdConvertors(customConvertors) {
|
|
|
22937
22920
|
|
|
22938
22921
|
;// CONCATENATED MODULE: ./src/convertors/toMarkdown/toMdConvertorState.ts
|
|
22939
22922
|
|
|
22940
|
-
|
|
22941
22923
|
var ToMdConvertorState = /** @class */ (function () {
|
|
22942
22924
|
function ToMdConvertorState(_a) {
|
|
22943
22925
|
var nodeTypeConvertors = _a.nodeTypeConvertors, markTypeConvertors = _a.markTypeConvertors;
|
|
@@ -22957,20 +22939,10 @@ var ToMdConvertorState = /** @class */ (function () {
|
|
|
22957
22939
|
ToMdConvertorState.prototype.isInBlank = function () {
|
|
22958
22940
|
return /(^|\n)$/.test(this.result);
|
|
22959
22941
|
};
|
|
22960
|
-
ToMdConvertorState.prototype.isBetweenSpaces = function (parent, index) {
|
|
22961
|
-
var _a, _b;
|
|
22962
|
-
var content = parent.content;
|
|
22963
|
-
var isFrontNodeEndWithSpace = index === 0 ||
|
|
22964
|
-
isEndWithSpace((_a = content.child(index - 1).text) !== null && _a !== void 0 ? _a : DEFAULT_TEXT_NOT_START_OR_END_WITH_SPACE);
|
|
22965
|
-
var isRearNodeStartWithSpace = index >= content.childCount - 1 ||
|
|
22966
|
-
isStartWithSpace((_b = content.child(index + 1).text) !== null && _b !== void 0 ? _b : DEFAULT_TEXT_NOT_START_OR_END_WITH_SPACE);
|
|
22967
|
-
return isFrontNodeEndWithSpace && isRearNodeStartWithSpace;
|
|
22968
|
-
};
|
|
22969
22942
|
ToMdConvertorState.prototype.markText = function (mark, entering, parent, index) {
|
|
22970
22943
|
var convertor = this.getMarkConvertor(mark);
|
|
22971
22944
|
if (convertor) {
|
|
22972
|
-
var
|
|
22973
|
-
var _a = convertor({ node: mark, parent: parent, index: index }, entering, betweenSpace), delim = _a.delim, rawHTML = _a.rawHTML;
|
|
22945
|
+
var _a = convertor({ node: mark, parent: parent, index: index }, entering), delim = _a.delim, rawHTML = _a.rawHTML;
|
|
22974
22946
|
return rawHTML || delim;
|
|
22975
22947
|
}
|
|
22976
22948
|
return '';
|
package/package.json
CHANGED
package/types/convertor.d.ts
CHANGED
|
@@ -113,8 +113,7 @@ export type ToMdNodeTypeConvertorMap = Partial<Record<WwNodeType, ToMdNodeTypeCo
|
|
|
113
113
|
|
|
114
114
|
type ToMdMarkTypeConvertor = (
|
|
115
115
|
nodeInfo?: MarkInfo,
|
|
116
|
-
entering?: boolean
|
|
117
|
-
betweenSpace?: boolean
|
|
116
|
+
entering?: boolean
|
|
118
117
|
) => ToMdConvertorReturnValues & ToMdMarkTypeOption;
|
|
119
118
|
|
|
120
119
|
export type ToMdMarkTypeConvertorMap = Partial<Record<WwMarkType, ToMdMarkTypeConvertor>>;
|
|
@@ -127,8 +126,7 @@ interface ToMdConvertorContext {
|
|
|
127
126
|
|
|
128
127
|
type ToMdConvertor = (
|
|
129
128
|
nodeInfo: NodeInfo | MarkInfo,
|
|
130
|
-
context: ToMdConvertorContext
|
|
131
|
-
betweenSpace?: boolean
|
|
129
|
+
context: ToMdConvertorContext
|
|
132
130
|
) => ToMdConvertorReturnValues;
|
|
133
131
|
|
|
134
132
|
export type ToMdConvertorMap = Partial<Record<WwNodeType | MdNodeType, ToMdConvertor>>;
|
package/types/index.d.ts
CHANGED