tiny-markdown-editor 0.2.28 → 0.2.30

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.
@@ -67,6 +67,14 @@ const DefaultCommands = {
67
67
  title: "Quote",
68
68
  hotkey: "Mod2-Shift-Q",
69
69
  },
70
+ tasklist: {
71
+ name: "tasklist",
72
+ action: (editor) => editor.toggleTaskList(),
73
+ enabled: (editor, focus) => focus ? editor.isTaskListItem(focus.row) : null,
74
+ innerHTML: svg_1.default.tasklist,
75
+ title: "Task list",
76
+ hotkey: "Mod2-Shift-T",
77
+ },
70
78
  insertLink: {
71
79
  name: "insertLink",
72
80
  action: (editor) => {
@@ -148,6 +156,7 @@ class CommandBar {
148
156
  "|",
149
157
  "ul",
150
158
  "ol",
159
+ "tasklist",
151
160
  "|",
152
161
  "blockquote",
153
162
  "hr",
package/lib/grammar.d.ts CHANGED
@@ -35,6 +35,13 @@ export interface LineCommand {
35
35
  export type Command = InlineCommand | LineCommand;
36
36
  export declare const punctuationLeading: RegExp;
37
37
  export declare const punctuationTrailing: RegExp;
38
+ /**
39
+ * Standalone regular expressions used by the editor logic (TinyMDE.ts) that aren't part of the
40
+ * block / inline grammar tables above. Centralized here so every pattern the editor relies on lives
41
+ * in one place. Patterns flagged `g` are only ever used with String.prototype.replace(), which
42
+ * resets lastIndex, so sharing a single instance across call sites is safe.
43
+ */
44
+ export declare const editorRegExp: Record<string, RegExp>;
38
45
  /**
39
46
  * This is CommonMark's block grammar, but we're ignoring nested blocks here.
40
47
  */
package/lib/grammar.js CHANGED
@@ -1,11 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.commands = exports.inlineGrammar = exports.htmlBlockGrammar = exports.lineGrammar = exports.punctuationTrailing = exports.punctuationLeading = void 0;
3
+ exports.commands = exports.inlineGrammar = exports.htmlBlockGrammar = exports.lineGrammar = exports.editorRegExp = exports.punctuationTrailing = exports.punctuationLeading = void 0;
4
4
  exports.createMergedInlineGrammar = createMergedInlineGrammar;
5
5
  exports.htmlescape = htmlescape;
6
6
  const replacements = {
7
7
  ASCIIPunctuation: /[!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~\\]/,
8
- NotTriggerChar: /[^`_*[\]()<>!~]/,
8
+ // Newlines are excluded so that, when a paragraph spanning multiple source lines is parsed as
9
+ // one joined string, a soft line break (\n) terminates the current text run and can be handled
10
+ // explicitly as a line break rather than being swallowed into a default token.
11
+ NotTriggerChar: /[^`_*[\]()<>!~\n]/,
9
12
  Scheme: /[A-Za-z][A-Za-z0-9+.-]{1,31}/,
10
13
  Email: /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*/, // From CommonMark spec
11
14
  HTMLOpenTag: /<HTMLTagName(?:HTMLAttribute)*\s*\/?>/,
@@ -22,6 +25,61 @@ const replacements = {
22
25
  // From CommonMark.js.
23
26
  exports.punctuationLeading = new RegExp(/^(?:[!"#$%&'()*+,\-./:;<=>?@[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B])/);
24
27
  exports.punctuationTrailing = new RegExp(/(?:[!"#$%&'()*+,\-./:;<=>?@[\]\\^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B])$/);
28
+ /**
29
+ * Standalone regular expressions used by the editor logic (TinyMDE.ts) that aren't part of the
30
+ * block / inline grammar tables above. Centralized here so every pattern the editor relies on lives
31
+ * in one place. Patterns flagged `g` are only ever used with String.prototype.replace(), which
32
+ * resets lastIndex, so sharing a single instance across call sites is safe.
33
+ */
34
+ exports.editorRegExp = {
35
+ // Platform detection and line splitting.
36
+ macPlatform: /Mac|iPod|iPhone|iPad/,
37
+ lineSplit: /(?:\r\n|\r|\n)/,
38
+ // Replacement-template placeholder substitution.
39
+ replacementPlaceholder: /(\${1,2})([0-9])/g, // $N (literal) or $$N (inline content)
40
+ inlineContentPlaceholder: /\$\$([0-9])/, // locate the $$N inline-content placeholder
41
+ inlineReplacementPlaceholder: /\$([1-9])/g, // single-$ placeholder in merged inline grammar
42
+ // Blank / whitespace helpers.
43
+ blankContent: /^\s*$/,
44
+ leadingWhitespace: /^\s/,
45
+ trailingWhitespace: /\s$/,
46
+ leadingWhitespaceRun: /^\s+/,
47
+ surroundingWhitespace: /^(?<leading>\s*).*\S(?<trailing>\s*)$/,
48
+ // List / task list items.
49
+ taskListItem: /^(\[)([ xX])(\])(\s|$)([\s\S]*)$/,
50
+ orderedListNumber: /\d{1,9}/,
51
+ // Opening tag name of an inline HTML element.
52
+ inlineTagName: /^<\s*([a-zA-Z][a-zA-Z0-9]*)/,
53
+ // Event type matching (addEventListener).
54
+ changeEvent: /^(?:change|input)$/i,
55
+ selectionEvent: /^(?:selection|selectionchange)$/i,
56
+ dropEvent: /^(?:drop)$/i,
57
+ // Inline emphasis / strikethrough delimiters and the extended-autolink boundary.
58
+ autolinkPrecedingChar: /[\s*_~(]/,
59
+ emphasisDelimiter: /(^\*+)|(^_+)/,
60
+ strikethroughDelimiter: /^~~/,
61
+ // GFM extended (non-delimited) autolinks.
62
+ autolinkScheme: /^(?:https?|ftp):\/\//i,
63
+ autolinkWww: /^www\./i,
64
+ autolinkDomain: /^[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)+/,
65
+ autolinkPath: /^[^\s<]*/,
66
+ autolinkProtocol: /^(?:mailto|xmpp):/i,
67
+ autolinkXmpp: /^xmpp:/i,
68
+ autolinkXmppResource: /^\/[a-zA-Z0-9@.\-_]+/,
69
+ autolinkEmail: /^[a-zA-Z0-9.\-_+]+@[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)+/,
70
+ emailTrailingChar: /[-_]$/,
71
+ emailTld: /\.[a-zA-Z0-9]+$/,
72
+ // Link / image destination parser (character-by-character scanning).
73
+ linkClosingBracket: /^\]/,
74
+ openingAngle: /^</,
75
+ closingAngle: /^>/,
76
+ titleQuote: /^["']/,
77
+ openingParen: /^\(/,
78
+ closingParen: /^\)/,
79
+ endsWithOpenAngle: /<$/,
80
+ containsOpenAngle: /</,
81
+ anyChar: /^./,
82
+ };
25
83
  /**
26
84
  * This is CommonMark's block grammar, but we're ignoring nested blocks here.
27
85
  */
package/lib/svg/svg.js CHANGED
@@ -14,6 +14,124 @@ const svg = {
14
14
  ol: `<svg height="18" width="18"><path d="M1.5 7a.5.5 0 100 1h1a.5.5 0 01.5.5c0 .164-.08.31-.14.355l-1.655 1.25A.492.492 0 001 10.5a.5.5 0 00.5.5h2a.5.5 0 000-1H3l.398-.299A1.5 1.5 0 002.5 7z"/><path d="M1.5 12c-.667 0-.667 1 0 1h1.25c.333 0 .333.5 0 .5H2.5c-.667 0-.667 1 0 1h.25c.333 0 .333.5 0 .5H1.5c-.667 0-.667 1 0 1h1c.398 0 .78-.131 1.06-.365.282-.235.44-.554.44-.885a1.121 1.121 0 00-.303-.75c.191-.204.3-.47.303-.75 0-.332-.158-.651-.44-.885-.3-.241-.675-.37-1.06-.365z"/><rect y="13" x="6" height="2" width="12" ry="1"/><rect ry="1" width="12" height="2" x="6" y="8"/><rect y="3" x="6" height="2" width="12" ry="1"/><path d="M1.5 2a.5.5 0 100 1H2v2h-.5a.5.5 0 100 1h2a.5.5 0 100-1H3V2.5c0-.277-.223-.5-.5-.5z"/></svg>`,
15
15
  redo: `<svg height="18" width="18"><path d="M 7.2695308,2.7050781 C 8.1128755,2.7081581 8.9529895,2.8712156 9.730469,3.1347656 11.408874,3.7037121 12.90142,4.6847104 14,5.6367188 V 4 h 2 V 9 H 11 V 7 h 1.509765 C 11.59075,6.2485173 10.340208,5.453808 9.0878904,5.0292969 7.4309398,4.4676231 5.9453458,4.468717 4.7070308,5.7070312 c -1.225014,1.2250142 -1.409769,2.7206953 -0.779297,4.2968748 0.630472,1.57618 2.167475,3.158006 4.4433598,4.06836 l -0.7421878,1.855468 c -2.724115,-1.089646 -4.687112,-3.00782 -5.55664,-5.18164 -0.869528,-2.1738206 -0.554283,-4.6781393 1.220703,-6.4531252 0.923857,-0.9238568 2.015388,-1.388828 3.134765,-1.5351563 0.279845,-0.036582 0.560682,-0.053761 0.841797,-0.052734 z" /></svg>`,
16
16
  strikethrough: `<svg width="18" height="18"><path d="M10 2C6 2 4 4 4 6c0 .338.08.672.193 1h2.34C6.113 6.629 6 6.295 6 6c0-.334.117-.725.691-1.154C7.265 4.416 8.331 4 10 4h3a1 1 0 000-2zm1.477 9c.413.368.523.706.523 1 0 .334-.127.712-.701 1.143-.575.43-1.632.85-3.299.857l-1.006.007V14H5a1 1 0 000 2h3c4 0 6-2 6-4 0-.338-.081-.672-.195-1z"/><rect ry="1" y="8" x="1" height="2" width="16"/></svg>`,
17
+ tasklist: `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
18
+ <svg
19
+ height="18"
20
+ width="18"
21
+ version="1.1"
22
+ id="svg4"
23
+ sodipodi:docname="tasklist.svg"
24
+ inkscape:version="1.4 (e7c3feb1, 2024-10-09)"
25
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
26
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
27
+ xmlns="http://www.w3.org/2000/svg"
28
+ xmlns:svg="http://www.w3.org/2000/svg">
29
+ <defs
30
+ id="defs4" />
31
+ <sodipodi:namedview
32
+ id="namedview4"
33
+ pagecolor="#ffffff"
34
+ bordercolor="#000000"
35
+ borderopacity="0.25"
36
+ inkscape:showpageshadow="2"
37
+ inkscape:pageopacity="0.0"
38
+ inkscape:pagecheckerboard="0"
39
+ inkscape:deskcolor="#d1d1d1"
40
+ showgrid="true"
41
+ inkscape:zoom="24.934044"
42
+ inkscape:cx="9.3847591"
43
+ inkscape:cy="7.8206326"
44
+ inkscape:window-width="1200"
45
+ inkscape:window-height="1027"
46
+ inkscape:window-x="661"
47
+ inkscape:window-y="44"
48
+ inkscape:window-maximized="0"
49
+ inkscape:current-layer="svg4">
50
+ <inkscape:grid
51
+ id="grid4"
52
+ units="px"
53
+ originx="0"
54
+ originy="0"
55
+ spacingx="1"
56
+ spacingy="1"
57
+ empcolor="#0099e5"
58
+ empopacity="0.30196078"
59
+ color="#0099e5"
60
+ opacity="0.14901961"
61
+ empspacing="5"
62
+ enabled="true"
63
+ visible="true" />
64
+ </sodipodi:namedview>
65
+ <rect
66
+ x="1.25"
67
+ y="25.75"
68
+ width="6"
69
+ height="6"
70
+ rx="1"
71
+ fill="none"
72
+ stroke="currentColor"
73
+ stroke-width="1.5"
74
+ id="rect1" />
75
+ <path
76
+ d="m 2.75,28.75 1.3,1.5 2.7,-3.5"
77
+ fill="none"
78
+ stroke="currentColor"
79
+ stroke-width="1.5"
80
+ id="path1" />
81
+ <rect
82
+ x="1.25"
83
+ y="33.75"
84
+ width="6"
85
+ height="6"
86
+ rx="1"
87
+ fill="none"
88
+ stroke="currentColor"
89
+ stroke-width="1.5"
90
+ id="rect2" />
91
+ <rect
92
+ ry="1"
93
+ y="27.25"
94
+ x="9.25"
95
+ height="2"
96
+ width="8"
97
+ id="rect3" />
98
+ <rect
99
+ ry="1"
100
+ y="35.25"
101
+ x="9.25"
102
+ height="2"
103
+ width="8"
104
+ id="rect4" />
105
+ <path
106
+ style="stroke-linecap:round"
107
+ d="M 2.3339844,1 C 1.6039663,1 1,1.6039663 1,2.3339844 V 5.6660156 C 1,6.3960337 1.6039663,7 2.3339844,7 H 5.6660156 C 6.3960337,7 7,6.3960337 7,5.6660156 V 2.3339844 C 7,1.6039663 6.3960337,1 5.6660156,1 Z m 0,1 H 5.6660156 C 5.8593309,2 6,2.1406691 6,2.3339844 V 5.6660156 C 6,5.8593309 5.8593309,6 5.6660156,6 H 2.3339844 C 2.1406691,6 2,5.8593309 2,5.6660156 V 2.3339844 C 2,2.1406691 2.1406691,2 2.3339844,2 Z"
108
+ id="rect5" />
109
+ <path
110
+ style="stroke-linecap:round"
111
+ d="M 2.3339844,11 C 1.6039663,11 1,11.603966 1,12.333984 v 3.332032 C 1,16.396034 1.6039663,17 2.3339844,17 H 5.6660156 C 6.3960337,17 7,16.396034 7,15.666016 V 12.333984 C 7,11.603966 6.3960337,11 5.6660156,11 Z m 0,1 H 5.6660156 C 5.8593309,12 6,12.140669 6,12.333984 v 3.332032 C 6,15.859331 5.8593309,16 5.6660156,16 H 2.3339844 C 2.1406691,16 2,15.859331 2,15.666016 V 12.333984 C 2,12.140669 2.1406691,12 2.3339844,12 Z"
112
+ id="rect5-7" />
113
+ <rect
114
+ y="3"
115
+ x="9"
116
+ height="2"
117
+ width="9"
118
+ ry="1"
119
+ id="rect2-3"
120
+ style="stroke-width:1" />
121
+ <rect
122
+ y="13"
123
+ x="9"
124
+ height="2"
125
+ width="9"
126
+ ry="1"
127
+ id="rect2-3-7"
128
+ style="stroke-width:1" />
129
+ <path
130
+ style="stroke-linecap:round;stroke-linejoin:round"
131
+ d="M 4.8417969,2.5253906 A 0.5,0.5 0 0 0 4.5527344,2.7773438 L 3.8632813,4.15625 3.3535156,3.6464844 a 0.5,0.5 0 0 0 -0.7070312,0 0.5,0.5 0 0 0 0,0.7070312 l 1,1 A 0.50005,0.50005 0 0 0 4.4472656,5.2226562 l 1,-1.9999999 A 0.5,0.5 0 0 0 5.2226562,2.5527344 0.5,0.5 0 0 0 4.8417969,2.5253906 Z"
132
+ id="path6" />
133
+ </svg>
134
+ `,
17
135
  ul: `<svg height="18" width="18"><circle cx="2" cy="9" r="2"/><circle cy="4" cx="2" r="2"/><rect y="3" x="6" height="2" width="12" ry="1"/><circle cx="2" cy="14" r="2"/><rect ry="1" width="12" height="2" x="6" y="8"/><rect y="13" x="6" height="2" width="12" ry="1"/></svg>`,
18
136
  undo: `<svg height="18" width="18"><path d="M 10.730469 2.7050781 C 9.8871243 2.7081594 9.0470103 2.8712156 8.2695312 3.1347656 C 6.5911256 3.7037121 5.0985797 4.6847104 4 5.6367188 L 4 4 L 2 4 L 2 9 L 7 9 L 7 7 L 5.4902344 7 C 6.4092499 6.2485173 7.6597914 5.453808 8.9121094 5.0292969 C 10.56906 4.4676231 12.054654 4.468717 13.292969 5.7070312 C 14.517983 6.9320454 14.702738 8.4277265 14.072266 10.003906 C 13.441794 11.580086 11.904791 13.161912 9.6289062 14.072266 L 10.371094 15.927734 C 13.095209 14.838088 15.058206 12.919914 15.927734 10.746094 C 16.797262 8.5722734 16.482017 6.0679547 14.707031 4.2929688 C 13.783174 3.369112 12.691643 2.9041408 11.572266 2.7578125 C 11.292421 2.7212304 11.011584 2.704051 10.730469 2.7050781 z " /></svg>
19
137
  `
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tiny-markdown-editor",
3
- "version": "0.2.28",
3
+ "version": "0.2.30",
4
4
  "description": "TinyMDE: A tiny, ultra low dependency, embeddable HTML/JavaScript Markdown editor.",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -45,7 +45,7 @@
45
45
  "@babel/plugin-transform-modules-commonjs": "^7.27.1",
46
46
  "@babel/preset-env": "^7.27.2",
47
47
  "@babel/preset-typescript": "^7.27.1",
48
- "@playwright/test": "^1.54.1",
48
+ "@playwright/test": "^1.60.0",
49
49
  "@rollup/plugin-babel": "^6.0.4",
50
50
  "@rollup/plugin-commonjs": "^28.0.3",
51
51
  "@rollup/plugin-node-resolve": "^16.0.1",
@@ -69,7 +69,7 @@
69
69
  "gulp-typescript": "^6.0.0-alpha.1",
70
70
  "jest": "^29.7.0",
71
71
  "jest-cli": "^29.7.0",
72
- "playwright": "^1.54.1",
72
+ "playwright": "^1.60.0",
73
73
  "postcss-import": "^16.1.0",
74
74
  "rollup": "^4.41.1",
75
75
  "rollup-plugin-eslint": "^7.0.0",