@ckeditor/ckeditor5-markdown-gfm 0.0.0-nightly-20240509.0 → 0.0.0-nightly-20240511.0

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/index.js CHANGED
@@ -156,72 +156,83 @@ const regex = new RegExp(// Prefix.
156
156
  return length;
157
157
  }
158
158
 
159
- class GFMDataProcessor {
159
+ /**
160
+ * This data processor implementation uses GitHub Flavored Markdown as input/output data.
161
+ *
162
+ * See the {@glink features/markdown Markdown output} guide to learn more on how to enable it.
163
+ */ class GFMDataProcessor {
164
+ /**
165
+ * HTML data processor used to process HTML produced by the Markdown-to-HTML converter and the other way.
166
+ */ _htmlDP;
160
167
  /**
161
- * Keeps the specified element in the output as HTML. This is useful if the editor contains
162
- * features producing HTML that is not a part of the Markdown standard.
163
- *
164
- * By default, all HTML tags are removed.
165
- *
166
- * @param element The element name to be kept.
167
- */ keepHtml(element) {
168
+ * Creates a new instance of the Markdown data processor class.
169
+ */ constructor(document){
170
+ this._htmlDP = new HtmlDataProcessor(document);
171
+ }
172
+ /**
173
+ * Keeps the specified element in the output as HTML. This is useful if the editor contains
174
+ * features producing HTML that is not a part of the Markdown standard.
175
+ *
176
+ * By default, all HTML tags are removed.
177
+ *
178
+ * @param element The element name to be kept.
179
+ */ keepHtml(element) {
168
180
  turndownService.keep([
169
181
  element
170
182
  ]);
171
183
  }
172
184
  /**
173
- * Converts the provided Markdown string to a view tree.
174
- *
175
- * @param data A Markdown string.
176
- * @returns The converted view element.
177
- */ toView(data) {
185
+ * Converts the provided Markdown string to a view tree.
186
+ *
187
+ * @param data A Markdown string.
188
+ * @returns The converted view element.
189
+ */ toView(data) {
178
190
  const html = markdown2html(data);
179
191
  return this._htmlDP.toView(html);
180
192
  }
181
193
  /**
182
- * Converts the provided {@link module:engine/view/documentfragment~DocumentFragment} to data format – in this
183
- * case to a Markdown string.
184
- *
185
- * @returns Markdown string.
186
- */ toData(viewFragment) {
194
+ * Converts the provided {@link module:engine/view/documentfragment~DocumentFragment} to data format – in this
195
+ * case to a Markdown string.
196
+ *
197
+ * @returns Markdown string.
198
+ */ toData(viewFragment) {
187
199
  const html = this._htmlDP.toData(viewFragment);
188
200
  return html2markdown(html);
189
201
  }
190
202
  /**
191
- * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data
192
- * and not processed during the conversion from Markdown to view elements.
193
- *
194
- * The raw data can be later accessed by a
195
- * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `"$rawContent"`.
196
- *
197
- * @param pattern The pattern matching all view elements whose content should
198
- * be treated as raw data.
199
- */ registerRawContentMatcher(pattern) {
203
+ * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data
204
+ * and not processed during the conversion from Markdown to view elements.
205
+ *
206
+ * The raw data can be later accessed by a
207
+ * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `"$rawContent"`.
208
+ *
209
+ * @param pattern The pattern matching all view elements whose content should
210
+ * be treated as raw data.
211
+ */ registerRawContentMatcher(pattern) {
200
212
  this._htmlDP.registerRawContentMatcher(pattern);
201
213
  }
202
214
  /**
203
- * This method does not have any effect on the data processor result. It exists for compatibility with the
204
- * {@link module:engine/dataprocessor/dataprocessor~DataProcessor `DataProcessor` interface}.
205
- */ useFillerType() {}
206
- /**
207
- * Creates a new instance of the Markdown data processor class.
208
- */ constructor(document){
209
- this._htmlDP = new HtmlDataProcessor(document);
210
- }
215
+ * This method does not have any effect on the data processor result. It exists for compatibility with the
216
+ * {@link module:engine/dataprocessor/dataprocessor~DataProcessor `DataProcessor` interface}.
217
+ */ useFillerType() {}
211
218
  }
212
219
 
213
- class Markdown extends Plugin {
214
- /**
215
- * @inheritDoc
216
- */ static get pluginName() {
217
- return 'Markdown';
218
- }
220
+ /**
221
+ * The GitHub Flavored Markdown (GFM) plugin.
222
+ *
223
+ * For a detailed overview, check the {@glink features/markdown Markdown feature} guide.
224
+ */ class Markdown extends Plugin {
219
225
  /**
220
- * @inheritDoc
221
- */ constructor(editor){
226
+ * @inheritDoc
227
+ */ constructor(editor){
222
228
  super(editor);
223
229
  editor.data.processor = new GFMDataProcessor(editor.data.viewDocument);
224
230
  }
231
+ /**
232
+ * @inheritDoc
233
+ */ static get pluginName() {
234
+ return 'Markdown';
235
+ }
225
236
  }
226
237
 
227
238
  const ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS = [
@@ -230,22 +241,35 @@ const ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS = [
230
241
  'PRE',
231
242
  'CODE'
232
243
  ];
233
- class PasteFromMarkdownExperimental extends Plugin {
244
+ /**
245
+ * The GitHub Flavored Markdown (GFM) paste plugin.
246
+ *
247
+ * For a detailed overview, check the {@glink features/pasting/paste-markdown Paste Markdown feature} guide.
248
+ */ class PasteFromMarkdownExperimental extends Plugin {
249
+ /**
250
+ * @internal
251
+ */ _gfmDataProcessor;
252
+ /**
253
+ * @inheritDoc
254
+ */ constructor(editor){
255
+ super(editor);
256
+ this._gfmDataProcessor = new GFMDataProcessor(editor.data.viewDocument);
257
+ }
234
258
  /**
235
- * @inheritDoc
236
- */ static get pluginName() {
259
+ * @inheritDoc
260
+ */ static get pluginName() {
237
261
  return 'PasteFromMarkdownExperimental';
238
262
  }
239
263
  /**
240
- * @inheritDoc
241
- */ static get requires() {
264
+ * @inheritDoc
265
+ */ static get requires() {
242
266
  return [
243
267
  ClipboardPipeline
244
268
  ];
245
269
  }
246
270
  /**
247
- * @inheritDoc
248
- */ init() {
271
+ * @inheritDoc
272
+ */ init() {
249
273
  const editor = this.editor;
250
274
  const view = editor.editing.view;
251
275
  const viewDocument = view.document;
@@ -271,13 +295,13 @@ class PasteFromMarkdownExperimental extends Plugin {
271
295
  });
272
296
  }
273
297
  /**
274
- * Determines if the code copied from a website in the `text/html` type can be parsed as Markdown.
275
- * It removes any OS-specific HTML tags, for example, <meta> on macOS and <!--StartFragment--> on Windows.
276
- * Then removes a single wrapper HTML tag or wrappers for sibling tags, and if there are no more tags left,
277
- * returns the remaining text. Returns null if there are any remaining HTML tags detected.
278
- *
279
- * @param htmlString Clipboard content in the `text/html` type format.
280
- */ _parseMarkdownFromHtml(htmlString) {
298
+ * Determines if the code copied from a website in the `text/html` type can be parsed as Markdown.
299
+ * It removes any OS-specific HTML tags, for example, <meta> on macOS and <!--StartFragment--> on Windows.
300
+ * Then removes a single wrapper HTML tag or wrappers for sibling tags, and if there are no more tags left,
301
+ * returns the remaining text. Returns null if there are any remaining HTML tags detected.
302
+ *
303
+ * @param htmlString Clipboard content in the `text/html` type format.
304
+ */ _parseMarkdownFromHtml(htmlString) {
281
305
  const withoutOsSpecificTags = this._removeOsSpecificTags(htmlString);
282
306
  if (!this._containsOnlyAllowedFirstLevelTags(withoutOsSpecificTags)) {
283
307
  return null;
@@ -289,10 +313,10 @@ class PasteFromMarkdownExperimental extends Plugin {
289
313
  return this._replaceHtmlReservedEntitiesWithCharacters(withoutWrapperTag);
290
314
  }
291
315
  /**
292
- * Removes OS-specific tags.
293
- *
294
- * @param htmlString Clipboard content in the `text/html` type format.
295
- */ _removeOsSpecificTags(htmlString) {
316
+ * Removes OS-specific tags.
317
+ *
318
+ * @param htmlString Clipboard content in the `text/html` type format.
319
+ */ _removeOsSpecificTags(htmlString) {
296
320
  // Removing the <meta> tag present on Mac.
297
321
  const withoutMetaTag = htmlString.replace(/^<meta\b[^>]*>/, '').trim();
298
322
  // Removing the <html> tag present on Windows.
@@ -303,21 +327,21 @@ class PasteFromMarkdownExperimental extends Plugin {
303
327
  return withoutBodyTag.replace(/^<!--StartFragment-->/, '').replace(/<!--EndFragment-->$/, '').trim();
304
328
  }
305
329
  /**
306
- * If the input HTML string contains any first-level formatting tags
307
- * like <b>, <strong>, or <i>, we should not treat it as Markdown.
308
- *
309
- * @param htmlString Clipboard content.
310
- */ _containsOnlyAllowedFirstLevelTags(htmlString) {
330
+ * If the input HTML string contains any first-level formatting tags
331
+ * like <b>, <strong>, or <i>, we should not treat it as Markdown.
332
+ *
333
+ * @param htmlString Clipboard content.
334
+ */ _containsOnlyAllowedFirstLevelTags(htmlString) {
311
335
  const parser = new DOMParser();
312
336
  const { body: tempElement } = parser.parseFromString(htmlString, 'text/html');
313
337
  const tagNames = Array.from(tempElement.children).map((el)=>el.tagName);
314
338
  return tagNames.every((el)=>ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS.includes(el));
315
339
  }
316
340
  /**
317
- * Removes multiple HTML wrapper tags from a list of sibling HTML tags.
318
- *
319
- * @param htmlString Clipboard content without any OS-specific tags.
320
- */ _removeFirstLevelWrapperTagsAndBrs(htmlString) {
341
+ * Removes multiple HTML wrapper tags from a list of sibling HTML tags.
342
+ *
343
+ * @param htmlString Clipboard content without any OS-specific tags.
344
+ */ _removeFirstLevelWrapperTagsAndBrs(htmlString) {
321
345
  const parser = new DOMParser();
322
346
  const { body: tempElement } = parser.parseFromString(htmlString, 'text/html');
323
347
  const brElements = tempElement.querySelectorAll('br');
@@ -332,23 +356,17 @@ class PasteFromMarkdownExperimental extends Plugin {
332
356
  return tempElement.innerHTML;
333
357
  }
334
358
  /**
335
- * Determines if a string contains any HTML tags.
336
- */ _containsAnyRemainingHtmlTags(str) {
359
+ * Determines if a string contains any HTML tags.
360
+ */ _containsAnyRemainingHtmlTags(str) {
337
361
  return str.includes('<');
338
362
  }
339
363
  /**
340
- * Replaces the reserved HTML entities with the actual characters.
341
- *
342
- * @param htmlString Clipboard content without any tags.
343
- */ _replaceHtmlReservedEntitiesWithCharacters(htmlString) {
364
+ * Replaces the reserved HTML entities with the actual characters.
365
+ *
366
+ * @param htmlString Clipboard content without any tags.
367
+ */ _replaceHtmlReservedEntitiesWithCharacters(htmlString) {
344
368
  return htmlString.replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&nbsp;/g, ' ');
345
369
  }
346
- /**
347
- * @inheritDoc
348
- */ constructor(editor){
349
- super(editor);
350
- this._gfmDataProcessor = new GFMDataProcessor(editor.data.viewDocument);
351
- }
352
370
  }
353
371
 
354
372
  export { Markdown, PasteFromMarkdownExperimental };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.js","../src/markdown2html/markdown2html.ts","../src/html2markdown/html2markdown.ts","../src/gfmdataprocessor.ts","../src/markdown.ts","../src/pastefrommarkdownexperimental.ts"],"names":["marked","use","tokenizer","autolink","url","renderer","checkbox","args","Object","getPrototypeOf","call","trimRight","code","replace","markdown2html","markdown","options","gfm","breaks","tables","xhtml","headerIds","parse","originalEscape","TurndownService","prototype","escape","string","escaped","lastLinkEnd","match","matchAutolink","index","substring","matchedURL","length","turndownService","codeBlockStyle","hr","headingStyle","todoList","html2markdown","html","turndown","addRule","filter","node","type","parentNode","nodeName","replacement","content","checked","regex","RegExp","source","matchAll","matched","autolinkFindEnd","assign","char","includes","openBrackets","i","GFMDataProcessor","keepHtml","element","keep","toView","data","_htmlDP","toData","viewFragment","registerRawContentMatcher","pattern","useFillerType","constructor","document","HtmlDataProcessor","Markdown","Plugin","pluginName","editor","processor","viewDocument","ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS","PasteFromMarkdownExperimental","requires","ClipboardPipeline","init","view","editing","clipboardPipeline","plugins","get","shiftPressed","listenTo","evt","shiftKey","dataAsTextHtml","dataTransfer","getData","dataAsTextPlain","_gfmDataProcessor","markdownFromHtml","_parseMarkdownFromHtml","htmlString","withoutOsSpecificTags","_removeOsSpecificTags","_containsOnlyAllowedFirstLevelTags","withoutWrapperTag","_removeFirstLevelWrapperTagsAndBrs","_containsAnyRemainingHtmlTags","_replaceHtmlReservedEntitiesWithCharacters","withoutMetaTag","trim","withoutHtmlTag","withoutBodyTag","parser","DOMParser","body","tempElement","parseFromString","tagNames","Array","from","children","map","el","tagName","every","brElements","querySelectorAll","br","replaceWith","outerElements","elementClone","cloneNode","childNodes","innerHTML","str"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { HtmlDataProcessor } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { marked } from 'marked';\nimport TurndownService from 'turndown/lib/turndown.browser.es.js';\nimport { gfm } from 'turndown-plugin-gfm';\nimport { ClipboardPipeline } from '@ckeditor/ckeditor5-clipboard/dist/index.js';\n\n// Overrides.\nmarked.use({\n tokenizer: {\n // Disable the autolink rule in the lexer.\n autolink: ()=>null,\n url: ()=>null\n },\n renderer: {\n checkbox (...args) {\n // Remove bogus space after <input type=\"checkbox\"> because it would be preserved\n // by DomConverter as it's next to an inline object.\n return Object.getPrototypeOf(this).checkbox.call(this, ...args).trimRight();\n },\n code (...args) {\n // Since marked v1.2.8, every <code> gets a trailing \"\\n\" whether it originally\n // ended with one or not (see https://github.com/markedjs/marked/issues/1884 to learn why).\n // This results in a redundant soft break in the model when loaded into the editor, which\n // is best prevented at this stage. See https://github.com/ckeditor/ckeditor5/issues/11124.\n return Object.getPrototypeOf(this).code.call(this, ...args).replace('\\n</code>', '</code>');\n }\n }\n});\n/**\n * Parses markdown string to an HTML.\n */ function markdown2html(markdown) {\n const options = {\n gfm: true,\n breaks: true,\n tables: true,\n xhtml: true,\n headerIds: false\n };\n return marked.parse(markdown, options);\n}\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */ /**\n * @module markdown-gfm/html2markdown/html2markdown\n */ /* eslint-disable @typescript-eslint/ban-ts-comment */ // Importing types for this package is problematic, so it's omitted.\n// @ts-ignore\n// Override the original escape method by not escaping links.\nconst originalEscape = TurndownService.prototype.escape;\nfunction escape(string) {\n string = originalEscape(string);\n // Escape \"<\".\n string = string.replace(/</g, '\\\\<');\n return string;\n}\nTurndownService.prototype.escape = function(string) {\n // Urls should not be escaped. Our strategy is using a regex to find them and escape everything\n // which is out of the matches parts.\n let escaped = '';\n let lastLinkEnd = 0;\n for (const match of matchAutolink(string)){\n const index = match.index;\n // Append the substring between the last match and the current one (if anything).\n if (index > lastLinkEnd) {\n escaped += escape(string.substring(lastLinkEnd, index));\n }\n const matchedURL = match[0];\n escaped += matchedURL;\n lastLinkEnd = index + matchedURL.length;\n }\n // Add text after the last link or at the string start if no matches.\n if (lastLinkEnd < string.length) {\n escaped += escape(string.substring(lastLinkEnd, string.length));\n }\n return escaped;\n};\nconst turndownService = new TurndownService({\n codeBlockStyle: 'fenced',\n hr: '---',\n headingStyle: 'atx'\n});\nturndownService.use([\n gfm,\n todoList\n]);\n/**\n * Parses HTML to a markdown.\n */ function html2markdown(html) {\n return turndownService.turndown(html);\n}\n// This is a copy of the original taskListItems rule from turdown-plugin-gfm, with minor changes.\nfunction todoList(turndownService) {\n turndownService.addRule('taskListItems', {\n filter (node) {\n return node.type === 'checkbox' && // Changes here as CKEditor outputs a deeper structure.\n (node.parentNode.nodeName === 'LI' || node.parentNode.parentNode.nodeName === 'LI');\n },\n replacement (content, node) {\n return (node.checked ? '[x]' : '[ ]') + ' ';\n }\n });\n}\n// Autolink matcher.\nconst regex = new RegExp(// Prefix.\n/\\b(?:(?:https?|ftp):\\/\\/|www\\.)/.source + // Domain name.\n/(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})/.source + // The rest.\n/(?:[^\\s<>]*)/.source, 'gi');\n/**\n * Trimming end of link.\n * https://github.github.com/gfm/#autolinks-extension-\n */ function* matchAutolink(string) {\n for (const match of string.matchAll(regex)){\n const matched = match[0];\n const length = autolinkFindEnd(matched);\n yield Object.assign([\n matched.substring(0, length)\n ], {\n index: match.index\n });\n // We could adjust regex.lastIndex but it's not needed because what we skipped is for sure not a valid URL.\n }\n}\n/**\n * Returns the new length of the link (after it would trim trailing characters).\n */ function autolinkFindEnd(string) {\n let length = string.length;\n while(length > 0){\n const char = string[length - 1];\n if ('?!.,:*_~\\'\"'.includes(char)) {\n length--;\n } else if (char == ')') {\n let openBrackets = 0;\n for(let i = 0; i < length; i++){\n if (string[i] == '(') {\n openBrackets++;\n } else if (string[i] == ')') {\n openBrackets--;\n }\n }\n // If there is fewer opening brackets then closing ones we should remove a closing bracket.\n if (openBrackets < 0) {\n length--;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n return length;\n}\n\nclass GFMDataProcessor {\n /**\n * Keeps the specified element in the output as HTML. This is useful if the editor contains\n * features producing HTML that is not a part of the Markdown standard.\n *\n * By default, all HTML tags are removed.\n *\n * @param element The element name to be kept.\n */ keepHtml(element) {\n turndownService.keep([\n element\n ]);\n }\n /**\n * Converts the provided Markdown string to a view tree.\n *\n * @param data A Markdown string.\n * @returns The converted view element.\n */ toView(data) {\n const html = markdown2html(data);\n return this._htmlDP.toView(html);\n }\n /**\n * Converts the provided {@link module:engine/view/documentfragment~DocumentFragment} to data format &ndash; in this\n * case to a Markdown string.\n *\n * @returns Markdown string.\n */ toData(viewFragment) {\n const html = this._htmlDP.toData(viewFragment);\n return html2markdown(html);\n }\n /**\n * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data\n * and not processed during the conversion from Markdown to view elements.\n *\n * The raw data can be later accessed by a\n * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `\"$rawContent\"`.\n *\n * @param pattern The pattern matching all view elements whose content should\n * be treated as raw data.\n */ registerRawContentMatcher(pattern) {\n this._htmlDP.registerRawContentMatcher(pattern);\n }\n /**\n * This method does not have any effect on the data processor result. It exists for compatibility with the\n * {@link module:engine/dataprocessor/dataprocessor~DataProcessor `DataProcessor` interface}.\n */ useFillerType() {}\n /**\n * Creates a new instance of the Markdown data processor class.\n */ constructor(document){\n this._htmlDP = new HtmlDataProcessor(document);\n }\n}\n\nclass Markdown extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'Markdown';\n }\n /**\n * @inheritDoc\n */ constructor(editor){\n super(editor);\n editor.data.processor = new GFMDataProcessor(editor.data.viewDocument);\n }\n}\n\nconst ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS = [\n 'SPAN',\n 'BR',\n 'PRE',\n 'CODE'\n];\nclass PasteFromMarkdownExperimental extends Plugin {\n /**\n * @inheritDoc\n */ static get pluginName() {\n return 'PasteFromMarkdownExperimental';\n }\n /**\n * @inheritDoc\n */ static get requires() {\n return [\n ClipboardPipeline\n ];\n }\n /**\n * @inheritDoc\n */ init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const clipboardPipeline = editor.plugins.get('ClipboardPipeline');\n let shiftPressed = false;\n this.listenTo(viewDocument, 'keydown', (evt, data)=>{\n shiftPressed = data.shiftKey;\n });\n this.listenTo(clipboardPipeline, 'inputTransformation', (evt, data)=>{\n if (shiftPressed) {\n return;\n }\n const dataAsTextHtml = data.dataTransfer.getData('text/html');\n if (!dataAsTextHtml) {\n const dataAsTextPlain = data.dataTransfer.getData('text/plain');\n data.content = this._gfmDataProcessor.toView(dataAsTextPlain);\n return;\n }\n const markdownFromHtml = this._parseMarkdownFromHtml(dataAsTextHtml);\n if (markdownFromHtml) {\n data.content = this._gfmDataProcessor.toView(markdownFromHtml);\n }\n });\n }\n /**\n * Determines if the code copied from a website in the `text/html` type can be parsed as Markdown.\n * It removes any OS-specific HTML tags, for example, <meta> on macOS and <!--StartFragment--> on Windows.\n * Then removes a single wrapper HTML tag or wrappers for sibling tags, and if there are no more tags left,\n * returns the remaining text. Returns null if there are any remaining HTML tags detected.\n *\n * @param htmlString Clipboard content in the `text/html` type format.\n */ _parseMarkdownFromHtml(htmlString) {\n const withoutOsSpecificTags = this._removeOsSpecificTags(htmlString);\n if (!this._containsOnlyAllowedFirstLevelTags(withoutOsSpecificTags)) {\n return null;\n }\n const withoutWrapperTag = this._removeFirstLevelWrapperTagsAndBrs(withoutOsSpecificTags);\n if (this._containsAnyRemainingHtmlTags(withoutWrapperTag)) {\n return null;\n }\n return this._replaceHtmlReservedEntitiesWithCharacters(withoutWrapperTag);\n }\n /**\n * Removes OS-specific tags.\n *\n * @param htmlString Clipboard content in the `text/html` type format.\n */ _removeOsSpecificTags(htmlString) {\n // Removing the <meta> tag present on Mac.\n const withoutMetaTag = htmlString.replace(/^<meta\\b[^>]*>/, '').trim();\n // Removing the <html> tag present on Windows.\n const withoutHtmlTag = withoutMetaTag.replace(/^<html>/, '').replace(/<\\/html>$/, '').trim();\n // Removing the <body> tag present on Windows.\n const withoutBodyTag = withoutHtmlTag.replace(/^<body>/, '').replace(/<\\/body>$/, '').trim();\n // Removing the <!--StartFragment--> tag present on Windows.\n return withoutBodyTag.replace(/^<!--StartFragment-->/, '').replace(/<!--EndFragment-->$/, '').trim();\n }\n /**\n * If the input HTML string contains any first-level formatting tags\n * like <b>, <strong>, or <i>, we should not treat it as Markdown.\n *\n * @param htmlString Clipboard content.\n */ _containsOnlyAllowedFirstLevelTags(htmlString) {\n const parser = new DOMParser();\n const { body: tempElement } = parser.parseFromString(htmlString, 'text/html');\n const tagNames = Array.from(tempElement.children).map((el)=>el.tagName);\n return tagNames.every((el)=>ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS.includes(el));\n }\n /**\n * Removes multiple HTML wrapper tags from a list of sibling HTML tags.\n *\n * @param htmlString Clipboard content without any OS-specific tags.\n */ _removeFirstLevelWrapperTagsAndBrs(htmlString) {\n const parser = new DOMParser();\n const { body: tempElement } = parser.parseFromString(htmlString, 'text/html');\n const brElements = tempElement.querySelectorAll('br');\n for (const br of brElements){\n br.replaceWith('\\n');\n }\n const outerElements = tempElement.querySelectorAll(':scope > *');\n for (const element of outerElements){\n const elementClone = element.cloneNode(true);\n element.replaceWith(...elementClone.childNodes);\n }\n return tempElement.innerHTML;\n }\n /**\n * Determines if a string contains any HTML tags.\n */ _containsAnyRemainingHtmlTags(str) {\n return str.includes('<');\n }\n /**\n * Replaces the reserved HTML entities with the actual characters.\n *\n * @param htmlString Clipboard content without any tags.\n */ _replaceHtmlReservedEntitiesWithCharacters(htmlString) {\n return htmlString.replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&nbsp;/g, ' ');\n }\n /**\n * @inheritDoc\n */ constructor(editor){\n super(editor);\n this._gfmDataProcessor = new GFMDataProcessor(editor.data.viewDocument);\n }\n}\n\nexport { Markdown, PasteFromMarkdownExperimental };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/markdown2html/markdown2html\n */\n\nimport { marked } from 'marked';\n\n// Overrides.\nmarked.use( {\n\ttokenizer: {\n\t\t// Disable the autolink rule in the lexer.\n\t\tautolink: () => null as any,\n\t\turl: () => null as any\n\t},\n\trenderer: {\n\t\tcheckbox( ...args: Array<any> ) {\n\t\t\t// Remove bogus space after <input type=\"checkbox\"> because it would be preserved\n\t\t\t// by DomConverter as it's next to an inline object.\n\t\t\treturn Object.getPrototypeOf( this ).checkbox.call( this, ...args ).trimRight();\n\t\t},\n\n\t\tcode( ...args: Array<any> ) {\n\t\t\t// Since marked v1.2.8, every <code> gets a trailing \"\\n\" whether it originally\n\t\t\t// ended with one or not (see https://github.com/markedjs/marked/issues/1884 to learn why).\n\t\t\t// This results in a redundant soft break in the model when loaded into the editor, which\n\t\t\t// is best prevented at this stage. See https://github.com/ckeditor/ckeditor5/issues/11124.\n\t\t\treturn Object.getPrototypeOf( this ).code.call( this, ...args ).replace( '\\n</code>', '</code>' );\n\t\t}\n\t}\n} );\n\n/**\n * Parses markdown string to an HTML.\n */\nexport default function markdown2html( markdown: string ): string {\n\tconst options = {\n\t\tgfm: true,\n\t\tbreaks: true,\n\t\ttables: true,\n\t\txhtml: true,\n\t\theaderIds: false\n\t};\n\n\treturn marked.parse( markdown, options );\n}\n\nexport { marked };\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/html2markdown/html2markdown\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\n// Importing types for this package is problematic, so it's omitted.\n// @ts-ignore\nimport TurndownService from 'turndown/lib/turndown.browser.es.js';\n\n// There no avaialble types for 'turndown-plugin-gfm' module and it's not worth to generate them on our own.\n// @ts-ignore\nimport { gfm } from 'turndown-plugin-gfm';\n\n// Override the original escape method by not escaping links.\nconst originalEscape = TurndownService.prototype.escape;\n\nfunction escape( string: string ): string {\n\tstring = originalEscape( string );\n\n\t// Escape \"<\".\n\tstring = string.replace( /</g, '\\\\<' );\n\n\treturn string;\n}\n\nTurndownService.prototype.escape = function( string: string ): string {\n\t// Urls should not be escaped. Our strategy is using a regex to find them and escape everything\n\t// which is out of the matches parts.\n\n\tlet escaped = '';\n\tlet lastLinkEnd = 0;\n\n\tfor ( const match of matchAutolink( string ) ) {\n\t\tconst index = match.index!;\n\n\t\t// Append the substring between the last match and the current one (if anything).\n\t\tif ( index > lastLinkEnd ) {\n\t\t\tescaped += escape( string.substring( lastLinkEnd, index ) );\n\t\t}\n\n\t\tconst matchedURL = match[ 0 ];\n\n\t\tescaped += matchedURL;\n\n\t\tlastLinkEnd = index + matchedURL.length;\n\t}\n\n\t// Add text after the last link or at the string start if no matches.\n\tif ( lastLinkEnd < string.length ) {\n\t\tescaped += escape( string.substring( lastLinkEnd, string.length ) );\n\t}\n\n\treturn escaped;\n};\n\nconst turndownService = new TurndownService( {\n\tcodeBlockStyle: 'fenced',\n\thr: '---',\n\theadingStyle: 'atx'\n} );\n\nturndownService.use( [\n\tgfm,\n\ttodoList\n] );\n\n/**\n * Parses HTML to a markdown.\n */\nexport default function html2markdown( html: string ): string {\n\treturn turndownService.turndown( html );\n}\n\nexport { turndownService };\n\n// This is a copy of the original taskListItems rule from turdown-plugin-gfm, with minor changes.\nfunction todoList( turndownService: TurndownService ): void {\n\tturndownService.addRule( 'taskListItems', {\n\t\tfilter( node: any ) {\n\t\t\treturn node.type === 'checkbox' &&\n\t\t\t\t// Changes here as CKEditor outputs a deeper structure.\n\t\t\t\t( node.parentNode.nodeName === 'LI' || node.parentNode.parentNode.nodeName === 'LI' );\n\t\t},\n\t\treplacement( content: any, node: any ) {\n\t\t\treturn ( node.checked ? '[x]' : '[ ]' ) + ' ';\n\t\t}\n\t} );\n}\n\n// Autolink matcher.\nconst regex = new RegExp(\n\t// Prefix.\n\t/\\b(?:(?:https?|ftp):\\/\\/|www\\.)/.source +\n\n\t// Domain name.\n\t/(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})/.source +\n\n\t// The rest.\n\t/(?:[^\\s<>]*)/.source,\n\t'gi'\n);\n\n/**\n * Trimming end of link.\n * https://github.github.com/gfm/#autolinks-extension-\n */\nfunction* matchAutolink( string: string ) {\n\tfor ( const match of string.matchAll( regex ) ) {\n\t\tconst matched = match[ 0 ];\n\t\tconst length = autolinkFindEnd( matched );\n\n\t\tyield Object.assign(\n\t\t\t[ matched.substring( 0, length ) ],\n\t\t\t{ index: match.index }\n\t\t);\n\n\t\t// We could adjust regex.lastIndex but it's not needed because what we skipped is for sure not a valid URL.\n\t}\n}\n\n/**\n * Returns the new length of the link (after it would trim trailing characters).\n */\nfunction autolinkFindEnd( string: string ) {\n\tlet length = string.length;\n\n\twhile ( length > 0 ) {\n\t\tconst char = string[ length - 1 ];\n\n\t\tif ( '?!.,:*_~\\'\"'.includes( char ) ) {\n\t\t\tlength--;\n\t\t} else if ( char == ')' ) {\n\t\t\tlet openBrackets = 0;\n\n\t\t\tfor ( let i = 0; i < length; i++ ) {\n\t\t\t\tif ( string[ i ] == '(' ) {\n\t\t\t\t\topenBrackets++;\n\t\t\t\t} else if ( string[ i ] == ')' ) {\n\t\t\t\t\topenBrackets--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If there is fewer opening brackets then closing ones we should remove a closing bracket.\n\t\t\tif ( openBrackets < 0 ) {\n\t\t\t\tlength--;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn length;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/gfmdataprocessor\n */\n\nimport {\n\tHtmlDataProcessor,\n\ttype DataProcessor,\n\ttype ViewDocument,\n\ttype ViewDocumentFragment,\n\ttype MatcherPattern\n} from 'ckeditor5/src/engine.js';\n\nimport markdown2html from './markdown2html/markdown2html.js';\nimport html2markdown, { turndownService } from './html2markdown/html2markdown.js';\n\n/**\n * This data processor implementation uses GitHub Flavored Markdown as input/output data.\n *\n * See the {@glink features/markdown Markdown output} guide to learn more on how to enable it.\n */\nexport default class GFMDataProcessor implements DataProcessor {\n\t/**\n\t * HTML data processor used to process HTML produced by the Markdown-to-HTML converter and the other way.\n\t */\n\tprivate _htmlDP: HtmlDataProcessor;\n\n\t/**\n\t * Creates a new instance of the Markdown data processor class.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis._htmlDP = new HtmlDataProcessor( document );\n\t}\n\n\t/**\n\t * Keeps the specified element in the output as HTML. This is useful if the editor contains\n\t * features producing HTML that is not a part of the Markdown standard.\n\t *\n\t * By default, all HTML tags are removed.\n\t *\n\t * @param element The element name to be kept.\n\t */\n\tpublic keepHtml( element: keyof HTMLElementTagNameMap ): void {\n\t\tturndownService.keep( [ element ] );\n\t}\n\n\t/**\n\t * Converts the provided Markdown string to a view tree.\n\t *\n\t * @param data A Markdown string.\n\t * @returns The converted view element.\n\t */\n\tpublic toView( data: string ): ViewDocumentFragment {\n\t\tconst html = markdown2html( data );\n\t\treturn this._htmlDP.toView( html );\n\t}\n\n\t/**\n\t * Converts the provided {@link module:engine/view/documentfragment~DocumentFragment} to data format &ndash; in this\n\t * case to a Markdown string.\n\t *\n\t * @returns Markdown string.\n\t */\n\tpublic toData( viewFragment: ViewDocumentFragment ): string {\n\t\tconst html = this._htmlDP.toData( viewFragment );\n\t\treturn html2markdown( html );\n\t}\n\n\t/**\n\t * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data\n\t * and not processed during the conversion from Markdown to view elements.\n\t *\n\t * The raw data can be later accessed by a\n\t * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `\"$rawContent\"`.\n\t *\n\t * @param pattern The pattern matching all view elements whose content should\n\t * be treated as raw data.\n\t */\n\tpublic registerRawContentMatcher( pattern: MatcherPattern ): void {\n\t\tthis._htmlDP.registerRawContentMatcher( pattern );\n\t}\n\n\t/**\n\t * This method does not have any effect on the data processor result. It exists for compatibility with the\n\t * {@link module:engine/dataprocessor/dataprocessor~DataProcessor `DataProcessor` interface}.\n\t */\n\tpublic useFillerType(): void {}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/markdown\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport GFMDataProcessor from './gfmdataprocessor.js';\n\n/**\n * The GitHub Flavored Markdown (GFM) plugin.\n *\n * For a detailed overview, check the {@glink features/markdown Markdown feature} guide.\n */\nexport default class Markdown extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.data.processor = new GFMDataProcessor( editor.data.viewDocument );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Markdown' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/pastefrommarkdownexperimental\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport { ClipboardPipeline, type ClipboardInputTransformationEvent } from 'ckeditor5/src/clipboard.js';\nimport GFMDataProcessor from './gfmdataprocessor.js';\nimport type { ViewDocumentKeyDownEvent } from 'ckeditor5/src/engine.js';\n\nconst ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS = [ 'SPAN', 'BR', 'PRE', 'CODE' ];\n\n/**\n * The GitHub Flavored Markdown (GFM) paste plugin.\n *\n * For a detailed overview, check the {@glink features/pasting/paste-markdown Paste Markdown feature} guide.\n */\nexport default class PasteFromMarkdownExperimental extends Plugin {\n\t/**\n\t * @internal\n\t */\n\tprivate _gfmDataProcessor: GFMDataProcessor;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._gfmDataProcessor = new GFMDataProcessor( editor.data.viewDocument );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PasteFromMarkdownExperimental' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tlet shiftPressed = false;\n\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tshiftPressed = data.shiftKey;\n\t\t} );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>( clipboardPipeline, 'inputTransformation', ( evt, data ) => {\n\t\t\tif ( shiftPressed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dataAsTextHtml = data.dataTransfer.getData( 'text/html' );\n\n\t\t\tif ( !dataAsTextHtml ) {\n\t\t\t\tconst dataAsTextPlain = data.dataTransfer.getData( 'text/plain' );\n\n\t\t\t\tdata.content = this._gfmDataProcessor.toView( dataAsTextPlain );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst markdownFromHtml = this._parseMarkdownFromHtml( dataAsTextHtml );\n\n\t\t\tif ( markdownFromHtml ) {\n\t\t\t\tdata.content = this._gfmDataProcessor.toView( markdownFromHtml );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Determines if the code copied from a website in the `text/html` type can be parsed as Markdown.\n\t * It removes any OS-specific HTML tags, for example, <meta> on macOS and <!--StartFragment--> on Windows.\n\t * Then removes a single wrapper HTML tag or wrappers for sibling tags, and if there are no more tags left,\n\t * returns the remaining text. Returns null if there are any remaining HTML tags detected.\n\t *\n\t * @param htmlString Clipboard content in the `text/html` type format.\n\t */\n\tprivate _parseMarkdownFromHtml( htmlString: string ): string | null {\n\t\tconst withoutOsSpecificTags = this._removeOsSpecificTags( htmlString );\n\n\t\tif ( !this._containsOnlyAllowedFirstLevelTags( withoutOsSpecificTags ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst withoutWrapperTag = this._removeFirstLevelWrapperTagsAndBrs( withoutOsSpecificTags );\n\n\t\tif ( this._containsAnyRemainingHtmlTags( withoutWrapperTag ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._replaceHtmlReservedEntitiesWithCharacters( withoutWrapperTag );\n\t}\n\n\t/**\n\t * Removes OS-specific tags.\n\t *\n\t * @param htmlString Clipboard content in the `text/html` type format.\n\t */\n\tprivate _removeOsSpecificTags( htmlString: string ): string {\n\t\t// Removing the <meta> tag present on Mac.\n\t\tconst withoutMetaTag = htmlString.replace( /^<meta\\b[^>]*>/, '' ).trim();\n\t\t// Removing the <html> tag present on Windows.\n\t\tconst withoutHtmlTag = withoutMetaTag.replace( /^<html>/, '' ).replace( /<\\/html>$/, '' ).trim();\n\t\t// Removing the <body> tag present on Windows.\n\t\tconst withoutBodyTag = withoutHtmlTag.replace( /^<body>/, '' ).replace( /<\\/body>$/, '' ).trim();\n\n\t\t// Removing the <!--StartFragment--> tag present on Windows.\n\t\treturn withoutBodyTag.replace( /^<!--StartFragment-->/, '' ).replace( /<!--EndFragment-->$/, '' ).trim();\n\t}\n\n\t/**\n\t * If the input HTML string contains any first-level formatting tags\n\t * like <b>, <strong>, or <i>, we should not treat it as Markdown.\n\t *\n\t * @param htmlString Clipboard content.\n\t */\n\tprivate _containsOnlyAllowedFirstLevelTags( htmlString: string ): boolean {\n\t\tconst parser = new DOMParser();\n\t\tconst { body: tempElement } = parser.parseFromString( htmlString, 'text/html' );\n\n\t\tconst tagNames = Array.from( tempElement.children ).map( el => el.tagName );\n\n\t\treturn tagNames.every( el => ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS.includes( el ) );\n\t}\n\n\t/**\n\t * Removes multiple HTML wrapper tags from a list of sibling HTML tags.\n\t *\n\t * @param htmlString Clipboard content without any OS-specific tags.\n\t */\n\tprivate _removeFirstLevelWrapperTagsAndBrs( htmlString: string ): string {\n\t\tconst parser = new DOMParser();\n\t\tconst { body: tempElement } = parser.parseFromString( htmlString, 'text/html' );\n\n\t\tconst brElements = tempElement.querySelectorAll( 'br' );\n\n\t\tfor ( const br of brElements ) {\n\t\t\tbr.replaceWith( '\\n' );\n\t\t}\n\n\t\tconst outerElements = tempElement.querySelectorAll( ':scope > *' );\n\n\t\tfor ( const element of outerElements ) {\n\t\t\tconst elementClone = element.cloneNode( true );\n\t\t\telement.replaceWith( ...elementClone.childNodes );\n\t\t}\n\n\t\treturn tempElement.innerHTML;\n\t}\n\n\t/**\n\t * Determines if a string contains any HTML tags.\n\t */\n\tprivate _containsAnyRemainingHtmlTags( str: string ): boolean {\n\t\treturn str.includes( '<' );\n\t}\n\n\t/**\n\t * Replaces the reserved HTML entities with the actual characters.\n\t *\n\t * @param htmlString Clipboard content without any tags.\n\t */\n\tprivate _replaceHtmlReservedEntitiesWithCharacters( htmlString: string ) {\n\t\treturn htmlString\n\t\t\t.replace( /&gt;/g, '>' )\n\t\t\t.replace( /&lt;/g, '<' )\n\t\t\t.replace( /&nbsp;/g, ' ' );\n\t}\n}\n"]}
1
+ {"version":3,"sources":["index.js","../src/markdown2html/markdown2html.ts","../src/html2markdown/html2markdown.ts","../src/gfmdataprocessor.ts","../src/markdown.ts","../src/pastefrommarkdownexperimental.ts"],"names":["marked","use","tokenizer","autolink","url","renderer","checkbox","args","Object","getPrototypeOf","call","trimRight","code","replace","markdown2html","markdown","options","gfm","breaks","tables","xhtml","headerIds","parse","originalEscape","TurndownService","prototype","escape","string","escaped","lastLinkEnd","match","matchAutolink","index","substring","matchedURL","length","turndownService","codeBlockStyle","hr","headingStyle","todoList","html2markdown","html","turndown","addRule","filter","node","type","parentNode","nodeName","replacement","content","checked","regex","RegExp","source","matchAll","matched","autolinkFindEnd","assign","char","includes","openBrackets","i","GFMDataProcessor","constructor","document","_htmlDP","HtmlDataProcessor","keepHtml","element","keep","toView","data","toData","viewFragment","registerRawContentMatcher","pattern","useFillerType","Markdown","Plugin","editor","processor","viewDocument","pluginName","ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS","PasteFromMarkdownExperimental","_gfmDataProcessor","requires","ClipboardPipeline","view","editing","clipboardPipeline","plugins","get","shiftPressed","listenTo","evt","shiftKey","dataAsTextHtml","dataTransfer","getData","dataAsTextPlain","markdownFromHtml","_parseMarkdownFromHtml","htmlString","withoutOsSpecificTags","_removeOsSpecificTags","_containsOnlyAllowedFirstLevelTags","withoutWrapperTag","_removeFirstLevelWrapperTagsAndBrs","_containsAnyRemainingHtmlTags","_replaceHtmlReservedEntitiesWithCharacters","withoutMetaTag","trim","withoutHtmlTag","withoutBodyTag","parser","DOMParser","body","tempElement","parseFromString","tagNames","Array","from","children","map","el","tagName","every","brElements","querySelectorAll","br","replaceWith","outerElements","elementClone","cloneNode","childNodes","innerHTML","str"],"mappings":"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","file":"index.js.map","sourcesContent":["import { Plugin } from '@ckeditor/ckeditor5-core/dist/index.js';\nimport { HtmlDataProcessor } from '@ckeditor/ckeditor5-engine/dist/index.js';\nimport { marked } from 'marked';\nimport TurndownService from 'turndown/lib/turndown.browser.es.js';\nimport { gfm } from 'turndown-plugin-gfm';\nimport { ClipboardPipeline } from '@ckeditor/ckeditor5-clipboard/dist/index.js';\n\n// Overrides.\nmarked.use({\n tokenizer: {\n // Disable the autolink rule in the lexer.\n autolink: ()=>null,\n url: ()=>null\n },\n renderer: {\n checkbox (...args) {\n // Remove bogus space after <input type=\"checkbox\"> because it would be preserved\n // by DomConverter as it's next to an inline object.\n return Object.getPrototypeOf(this).checkbox.call(this, ...args).trimRight();\n },\n code (...args) {\n // Since marked v1.2.8, every <code> gets a trailing \"\\n\" whether it originally\n // ended with one or not (see https://github.com/markedjs/marked/issues/1884 to learn why).\n // This results in a redundant soft break in the model when loaded into the editor, which\n // is best prevented at this stage. See https://github.com/ckeditor/ckeditor5/issues/11124.\n return Object.getPrototypeOf(this).code.call(this, ...args).replace('\\n</code>', '</code>');\n }\n }\n});\n/**\n * Parses markdown string to an HTML.\n */ function markdown2html(markdown) {\n const options = {\n gfm: true,\n breaks: true,\n tables: true,\n xhtml: true,\n headerIds: false\n };\n return marked.parse(markdown, options);\n}\n\n/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */ /**\n * @module markdown-gfm/html2markdown/html2markdown\n */ /* eslint-disable @typescript-eslint/ban-ts-comment */ // Importing types for this package is problematic, so it's omitted.\n// @ts-ignore\n// Override the original escape method by not escaping links.\nconst originalEscape = TurndownService.prototype.escape;\nfunction escape(string) {\n string = originalEscape(string);\n // Escape \"<\".\n string = string.replace(/</g, '\\\\<');\n return string;\n}\nTurndownService.prototype.escape = function(string) {\n // Urls should not be escaped. Our strategy is using a regex to find them and escape everything\n // which is out of the matches parts.\n let escaped = '';\n let lastLinkEnd = 0;\n for (const match of matchAutolink(string)){\n const index = match.index;\n // Append the substring between the last match and the current one (if anything).\n if (index > lastLinkEnd) {\n escaped += escape(string.substring(lastLinkEnd, index));\n }\n const matchedURL = match[0];\n escaped += matchedURL;\n lastLinkEnd = index + matchedURL.length;\n }\n // Add text after the last link or at the string start if no matches.\n if (lastLinkEnd < string.length) {\n escaped += escape(string.substring(lastLinkEnd, string.length));\n }\n return escaped;\n};\nconst turndownService = new TurndownService({\n codeBlockStyle: 'fenced',\n hr: '---',\n headingStyle: 'atx'\n});\nturndownService.use([\n gfm,\n todoList\n]);\n/**\n * Parses HTML to a markdown.\n */ function html2markdown(html) {\n return turndownService.turndown(html);\n}\n// This is a copy of the original taskListItems rule from turdown-plugin-gfm, with minor changes.\nfunction todoList(turndownService) {\n turndownService.addRule('taskListItems', {\n filter (node) {\n return node.type === 'checkbox' && // Changes here as CKEditor outputs a deeper structure.\n (node.parentNode.nodeName === 'LI' || node.parentNode.parentNode.nodeName === 'LI');\n },\n replacement (content, node) {\n return (node.checked ? '[x]' : '[ ]') + ' ';\n }\n });\n}\n// Autolink matcher.\nconst regex = new RegExp(// Prefix.\n/\\b(?:(?:https?|ftp):\\/\\/|www\\.)/.source + // Domain name.\n/(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})/.source + // The rest.\n/(?:[^\\s<>]*)/.source, 'gi');\n/**\n * Trimming end of link.\n * https://github.github.com/gfm/#autolinks-extension-\n */ function* matchAutolink(string) {\n for (const match of string.matchAll(regex)){\n const matched = match[0];\n const length = autolinkFindEnd(matched);\n yield Object.assign([\n matched.substring(0, length)\n ], {\n index: match.index\n });\n // We could adjust regex.lastIndex but it's not needed because what we skipped is for sure not a valid URL.\n }\n}\n/**\n * Returns the new length of the link (after it would trim trailing characters).\n */ function autolinkFindEnd(string) {\n let length = string.length;\n while(length > 0){\n const char = string[length - 1];\n if ('?!.,:*_~\\'\"'.includes(char)) {\n length--;\n } else if (char == ')') {\n let openBrackets = 0;\n for(let i = 0; i < length; i++){\n if (string[i] == '(') {\n openBrackets++;\n } else if (string[i] == ')') {\n openBrackets--;\n }\n }\n // If there is fewer opening brackets then closing ones we should remove a closing bracket.\n if (openBrackets < 0) {\n length--;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n return length;\n}\n\n/**\n * This data processor implementation uses GitHub Flavored Markdown as input/output data.\n *\n * See the {@glink features/markdown Markdown output} guide to learn more on how to enable it.\n */ class GFMDataProcessor {\n /**\n\t * HTML data processor used to process HTML produced by the Markdown-to-HTML converter and the other way.\n\t */ _htmlDP;\n /**\n\t * Creates a new instance of the Markdown data processor class.\n\t */ constructor(document){\n this._htmlDP = new HtmlDataProcessor(document);\n }\n /**\n\t * Keeps the specified element in the output as HTML. This is useful if the editor contains\n\t * features producing HTML that is not a part of the Markdown standard.\n\t *\n\t * By default, all HTML tags are removed.\n\t *\n\t * @param element The element name to be kept.\n\t */ keepHtml(element) {\n turndownService.keep([\n element\n ]);\n }\n /**\n\t * Converts the provided Markdown string to a view tree.\n\t *\n\t * @param data A Markdown string.\n\t * @returns The converted view element.\n\t */ toView(data) {\n const html = markdown2html(data);\n return this._htmlDP.toView(html);\n }\n /**\n\t * Converts the provided {@link module:engine/view/documentfragment~DocumentFragment} to data format &ndash; in this\n\t * case to a Markdown string.\n\t *\n\t * @returns Markdown string.\n\t */ toData(viewFragment) {\n const html = this._htmlDP.toData(viewFragment);\n return html2markdown(html);\n }\n /**\n\t * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data\n\t * and not processed during the conversion from Markdown to view elements.\n\t *\n\t * The raw data can be later accessed by a\n\t * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `\"$rawContent\"`.\n\t *\n\t * @param pattern The pattern matching all view elements whose content should\n\t * be treated as raw data.\n\t */ registerRawContentMatcher(pattern) {\n this._htmlDP.registerRawContentMatcher(pattern);\n }\n /**\n\t * This method does not have any effect on the data processor result. It exists for compatibility with the\n\t * {@link module:engine/dataprocessor/dataprocessor~DataProcessor `DataProcessor` interface}.\n\t */ useFillerType() {}\n}\n\n/**\n * The GitHub Flavored Markdown (GFM) plugin.\n *\n * For a detailed overview, check the {@glink features/markdown Markdown feature} guide.\n */ class Markdown extends Plugin {\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n editor.data.processor = new GFMDataProcessor(editor.data.viewDocument);\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'Markdown';\n }\n}\n\nconst ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS = [\n 'SPAN',\n 'BR',\n 'PRE',\n 'CODE'\n];\n/**\n * The GitHub Flavored Markdown (GFM) paste plugin.\n *\n * For a detailed overview, check the {@glink features/pasting/paste-markdown Paste Markdown feature} guide.\n */ class PasteFromMarkdownExperimental extends Plugin {\n /**\n\t * @internal\n\t */ _gfmDataProcessor;\n /**\n\t * @inheritDoc\n\t */ constructor(editor){\n super(editor);\n this._gfmDataProcessor = new GFMDataProcessor(editor.data.viewDocument);\n }\n /**\n\t * @inheritDoc\n\t */ static get pluginName() {\n return 'PasteFromMarkdownExperimental';\n }\n /**\n\t * @inheritDoc\n\t */ static get requires() {\n return [\n ClipboardPipeline\n ];\n }\n /**\n\t * @inheritDoc\n\t */ init() {\n const editor = this.editor;\n const view = editor.editing.view;\n const viewDocument = view.document;\n const clipboardPipeline = editor.plugins.get('ClipboardPipeline');\n let shiftPressed = false;\n this.listenTo(viewDocument, 'keydown', (evt, data)=>{\n shiftPressed = data.shiftKey;\n });\n this.listenTo(clipboardPipeline, 'inputTransformation', (evt, data)=>{\n if (shiftPressed) {\n return;\n }\n const dataAsTextHtml = data.dataTransfer.getData('text/html');\n if (!dataAsTextHtml) {\n const dataAsTextPlain = data.dataTransfer.getData('text/plain');\n data.content = this._gfmDataProcessor.toView(dataAsTextPlain);\n return;\n }\n const markdownFromHtml = this._parseMarkdownFromHtml(dataAsTextHtml);\n if (markdownFromHtml) {\n data.content = this._gfmDataProcessor.toView(markdownFromHtml);\n }\n });\n }\n /**\n\t * Determines if the code copied from a website in the `text/html` type can be parsed as Markdown.\n\t * It removes any OS-specific HTML tags, for example, <meta> on macOS and <!--StartFragment--> on Windows.\n\t * Then removes a single wrapper HTML tag or wrappers for sibling tags, and if there are no more tags left,\n\t * returns the remaining text. Returns null if there are any remaining HTML tags detected.\n\t *\n\t * @param htmlString Clipboard content in the `text/html` type format.\n\t */ _parseMarkdownFromHtml(htmlString) {\n const withoutOsSpecificTags = this._removeOsSpecificTags(htmlString);\n if (!this._containsOnlyAllowedFirstLevelTags(withoutOsSpecificTags)) {\n return null;\n }\n const withoutWrapperTag = this._removeFirstLevelWrapperTagsAndBrs(withoutOsSpecificTags);\n if (this._containsAnyRemainingHtmlTags(withoutWrapperTag)) {\n return null;\n }\n return this._replaceHtmlReservedEntitiesWithCharacters(withoutWrapperTag);\n }\n /**\n\t * Removes OS-specific tags.\n\t *\n\t * @param htmlString Clipboard content in the `text/html` type format.\n\t */ _removeOsSpecificTags(htmlString) {\n // Removing the <meta> tag present on Mac.\n const withoutMetaTag = htmlString.replace(/^<meta\\b[^>]*>/, '').trim();\n // Removing the <html> tag present on Windows.\n const withoutHtmlTag = withoutMetaTag.replace(/^<html>/, '').replace(/<\\/html>$/, '').trim();\n // Removing the <body> tag present on Windows.\n const withoutBodyTag = withoutHtmlTag.replace(/^<body>/, '').replace(/<\\/body>$/, '').trim();\n // Removing the <!--StartFragment--> tag present on Windows.\n return withoutBodyTag.replace(/^<!--StartFragment-->/, '').replace(/<!--EndFragment-->$/, '').trim();\n }\n /**\n\t * If the input HTML string contains any first-level formatting tags\n\t * like <b>, <strong>, or <i>, we should not treat it as Markdown.\n\t *\n\t * @param htmlString Clipboard content.\n\t */ _containsOnlyAllowedFirstLevelTags(htmlString) {\n const parser = new DOMParser();\n const { body: tempElement } = parser.parseFromString(htmlString, 'text/html');\n const tagNames = Array.from(tempElement.children).map((el)=>el.tagName);\n return tagNames.every((el)=>ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS.includes(el));\n }\n /**\n\t * Removes multiple HTML wrapper tags from a list of sibling HTML tags.\n\t *\n\t * @param htmlString Clipboard content without any OS-specific tags.\n\t */ _removeFirstLevelWrapperTagsAndBrs(htmlString) {\n const parser = new DOMParser();\n const { body: tempElement } = parser.parseFromString(htmlString, 'text/html');\n const brElements = tempElement.querySelectorAll('br');\n for (const br of brElements){\n br.replaceWith('\\n');\n }\n const outerElements = tempElement.querySelectorAll(':scope > *');\n for (const element of outerElements){\n const elementClone = element.cloneNode(true);\n element.replaceWith(...elementClone.childNodes);\n }\n return tempElement.innerHTML;\n }\n /**\n\t * Determines if a string contains any HTML tags.\n\t */ _containsAnyRemainingHtmlTags(str) {\n return str.includes('<');\n }\n /**\n\t * Replaces the reserved HTML entities with the actual characters.\n\t *\n\t * @param htmlString Clipboard content without any tags.\n\t */ _replaceHtmlReservedEntitiesWithCharacters(htmlString) {\n return htmlString.replace(/&gt;/g, '>').replace(/&lt;/g, '<').replace(/&nbsp;/g, ' ');\n }\n}\n\nexport { Markdown, PasteFromMarkdownExperimental };\n//# sourceMappingURL=index.js.map\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/markdown2html/markdown2html\n */\n\nimport { marked } from 'marked';\n\n// Overrides.\nmarked.use( {\n\ttokenizer: {\n\t\t// Disable the autolink rule in the lexer.\n\t\tautolink: () => null as any,\n\t\turl: () => null as any\n\t},\n\trenderer: {\n\t\tcheckbox( ...args: Array<any> ) {\n\t\t\t// Remove bogus space after <input type=\"checkbox\"> because it would be preserved\n\t\t\t// by DomConverter as it's next to an inline object.\n\t\t\treturn Object.getPrototypeOf( this ).checkbox.call( this, ...args ).trimRight();\n\t\t},\n\n\t\tcode( ...args: Array<any> ) {\n\t\t\t// Since marked v1.2.8, every <code> gets a trailing \"\\n\" whether it originally\n\t\t\t// ended with one or not (see https://github.com/markedjs/marked/issues/1884 to learn why).\n\t\t\t// This results in a redundant soft break in the model when loaded into the editor, which\n\t\t\t// is best prevented at this stage. See https://github.com/ckeditor/ckeditor5/issues/11124.\n\t\t\treturn Object.getPrototypeOf( this ).code.call( this, ...args ).replace( '\\n</code>', '</code>' );\n\t\t}\n\t}\n} );\n\n/**\n * Parses markdown string to an HTML.\n */\nexport default function markdown2html( markdown: string ): string {\n\tconst options = {\n\t\tgfm: true,\n\t\tbreaks: true,\n\t\ttables: true,\n\t\txhtml: true,\n\t\theaderIds: false\n\t};\n\n\treturn marked.parse( markdown, options );\n}\n\nexport { marked };\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/html2markdown/html2markdown\n */\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\n\n// Importing types for this package is problematic, so it's omitted.\n// @ts-ignore\nimport TurndownService from 'turndown/lib/turndown.browser.es.js';\n\n// There no avaialble types for 'turndown-plugin-gfm' module and it's not worth to generate them on our own.\n// @ts-ignore\nimport { gfm } from 'turndown-plugin-gfm';\n\n// Override the original escape method by not escaping links.\nconst originalEscape = TurndownService.prototype.escape;\n\nfunction escape( string: string ): string {\n\tstring = originalEscape( string );\n\n\t// Escape \"<\".\n\tstring = string.replace( /</g, '\\\\<' );\n\n\treturn string;\n}\n\nTurndownService.prototype.escape = function( string: string ): string {\n\t// Urls should not be escaped. Our strategy is using a regex to find them and escape everything\n\t// which is out of the matches parts.\n\n\tlet escaped = '';\n\tlet lastLinkEnd = 0;\n\n\tfor ( const match of matchAutolink( string ) ) {\n\t\tconst index = match.index!;\n\n\t\t// Append the substring between the last match and the current one (if anything).\n\t\tif ( index > lastLinkEnd ) {\n\t\t\tescaped += escape( string.substring( lastLinkEnd, index ) );\n\t\t}\n\n\t\tconst matchedURL = match[ 0 ];\n\n\t\tescaped += matchedURL;\n\n\t\tlastLinkEnd = index + matchedURL.length;\n\t}\n\n\t// Add text after the last link or at the string start if no matches.\n\tif ( lastLinkEnd < string.length ) {\n\t\tescaped += escape( string.substring( lastLinkEnd, string.length ) );\n\t}\n\n\treturn escaped;\n};\n\nconst turndownService = new TurndownService( {\n\tcodeBlockStyle: 'fenced',\n\thr: '---',\n\theadingStyle: 'atx'\n} );\n\nturndownService.use( [\n\tgfm,\n\ttodoList\n] );\n\n/**\n * Parses HTML to a markdown.\n */\nexport default function html2markdown( html: string ): string {\n\treturn turndownService.turndown( html );\n}\n\nexport { turndownService };\n\n// This is a copy of the original taskListItems rule from turdown-plugin-gfm, with minor changes.\nfunction todoList( turndownService: TurndownService ): void {\n\tturndownService.addRule( 'taskListItems', {\n\t\tfilter( node: any ) {\n\t\t\treturn node.type === 'checkbox' &&\n\t\t\t\t// Changes here as CKEditor outputs a deeper structure.\n\t\t\t\t( node.parentNode.nodeName === 'LI' || node.parentNode.parentNode.nodeName === 'LI' );\n\t\t},\n\t\treplacement( content: any, node: any ) {\n\t\t\treturn ( node.checked ? '[x]' : '[ ]' ) + ' ';\n\t\t}\n\t} );\n}\n\n// Autolink matcher.\nconst regex = new RegExp(\n\t// Prefix.\n\t/\\b(?:(?:https?|ftp):\\/\\/|www\\.)/.source +\n\n\t// Domain name.\n\t/(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})/.source +\n\n\t// The rest.\n\t/(?:[^\\s<>]*)/.source,\n\t'gi'\n);\n\n/**\n * Trimming end of link.\n * https://github.github.com/gfm/#autolinks-extension-\n */\nfunction* matchAutolink( string: string ) {\n\tfor ( const match of string.matchAll( regex ) ) {\n\t\tconst matched = match[ 0 ];\n\t\tconst length = autolinkFindEnd( matched );\n\n\t\tyield Object.assign(\n\t\t\t[ matched.substring( 0, length ) ],\n\t\t\t{ index: match.index }\n\t\t);\n\n\t\t// We could adjust regex.lastIndex but it's not needed because what we skipped is for sure not a valid URL.\n\t}\n}\n\n/**\n * Returns the new length of the link (after it would trim trailing characters).\n */\nfunction autolinkFindEnd( string: string ) {\n\tlet length = string.length;\n\n\twhile ( length > 0 ) {\n\t\tconst char = string[ length - 1 ];\n\n\t\tif ( '?!.,:*_~\\'\"'.includes( char ) ) {\n\t\t\tlength--;\n\t\t} else if ( char == ')' ) {\n\t\t\tlet openBrackets = 0;\n\n\t\t\tfor ( let i = 0; i < length; i++ ) {\n\t\t\t\tif ( string[ i ] == '(' ) {\n\t\t\t\t\topenBrackets++;\n\t\t\t\t} else if ( string[ i ] == ')' ) {\n\t\t\t\t\topenBrackets--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If there is fewer opening brackets then closing ones we should remove a closing bracket.\n\t\t\tif ( openBrackets < 0 ) {\n\t\t\t\tlength--;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn length;\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/gfmdataprocessor\n */\n\nimport {\n\tHtmlDataProcessor,\n\ttype DataProcessor,\n\ttype ViewDocument,\n\ttype ViewDocumentFragment,\n\ttype MatcherPattern\n} from 'ckeditor5/src/engine.js';\n\nimport markdown2html from './markdown2html/markdown2html.js';\nimport html2markdown, { turndownService } from './html2markdown/html2markdown.js';\n\n/**\n * This data processor implementation uses GitHub Flavored Markdown as input/output data.\n *\n * See the {@glink features/markdown Markdown output} guide to learn more on how to enable it.\n */\nexport default class GFMDataProcessor implements DataProcessor {\n\t/**\n\t * HTML data processor used to process HTML produced by the Markdown-to-HTML converter and the other way.\n\t */\n\tprivate _htmlDP: HtmlDataProcessor;\n\n\t/**\n\t * Creates a new instance of the Markdown data processor class.\n\t */\n\tconstructor( document: ViewDocument ) {\n\t\tthis._htmlDP = new HtmlDataProcessor( document );\n\t}\n\n\t/**\n\t * Keeps the specified element in the output as HTML. This is useful if the editor contains\n\t * features producing HTML that is not a part of the Markdown standard.\n\t *\n\t * By default, all HTML tags are removed.\n\t *\n\t * @param element The element name to be kept.\n\t */\n\tpublic keepHtml( element: keyof HTMLElementTagNameMap ): void {\n\t\tturndownService.keep( [ element ] );\n\t}\n\n\t/**\n\t * Converts the provided Markdown string to a view tree.\n\t *\n\t * @param data A Markdown string.\n\t * @returns The converted view element.\n\t */\n\tpublic toView( data: string ): ViewDocumentFragment {\n\t\tconst html = markdown2html( data );\n\t\treturn this._htmlDP.toView( html );\n\t}\n\n\t/**\n\t * Converts the provided {@link module:engine/view/documentfragment~DocumentFragment} to data format &ndash; in this\n\t * case to a Markdown string.\n\t *\n\t * @returns Markdown string.\n\t */\n\tpublic toData( viewFragment: ViewDocumentFragment ): string {\n\t\tconst html = this._htmlDP.toData( viewFragment );\n\t\treturn html2markdown( html );\n\t}\n\n\t/**\n\t * Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data\n\t * and not processed during the conversion from Markdown to view elements.\n\t *\n\t * The raw data can be later accessed by a\n\t * {@link module:engine/view/element~Element#getCustomProperty custom property of a view element} called `\"$rawContent\"`.\n\t *\n\t * @param pattern The pattern matching all view elements whose content should\n\t * be treated as raw data.\n\t */\n\tpublic registerRawContentMatcher( pattern: MatcherPattern ): void {\n\t\tthis._htmlDP.registerRawContentMatcher( pattern );\n\t}\n\n\t/**\n\t * This method does not have any effect on the data processor result. It exists for compatibility with the\n\t * {@link module:engine/dataprocessor/dataprocessor~DataProcessor `DataProcessor` interface}.\n\t */\n\tpublic useFillerType(): void {}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/markdown\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport GFMDataProcessor from './gfmdataprocessor.js';\n\n/**\n * The GitHub Flavored Markdown (GFM) plugin.\n *\n * For a detailed overview, check the {@glink features/markdown Markdown feature} guide.\n */\nexport default class Markdown extends Plugin {\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\teditor.data.processor = new GFMDataProcessor( editor.data.viewDocument );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'Markdown' as const;\n\t}\n}\n","/**\n * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.\n * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license\n */\n\n/**\n * @module markdown-gfm/pastefrommarkdownexperimental\n */\n\nimport { Plugin, type Editor } from 'ckeditor5/src/core.js';\nimport { ClipboardPipeline, type ClipboardInputTransformationEvent } from 'ckeditor5/src/clipboard.js';\nimport GFMDataProcessor from './gfmdataprocessor.js';\nimport type { ViewDocumentKeyDownEvent } from 'ckeditor5/src/engine.js';\n\nconst ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS = [ 'SPAN', 'BR', 'PRE', 'CODE' ];\n\n/**\n * The GitHub Flavored Markdown (GFM) paste plugin.\n *\n * For a detailed overview, check the {@glink features/pasting/paste-markdown Paste Markdown feature} guide.\n */\nexport default class PasteFromMarkdownExperimental extends Plugin {\n\t/**\n\t * @internal\n\t */\n\tprivate _gfmDataProcessor: GFMDataProcessor;\n\n\t/**\n\t * @inheritDoc\n\t */\n\tconstructor( editor: Editor ) {\n\t\tsuper( editor );\n\n\t\tthis._gfmDataProcessor = new GFMDataProcessor( editor.data.viewDocument );\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get pluginName() {\n\t\treturn 'PasteFromMarkdownExperimental' as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic static get requires() {\n\t\treturn [ ClipboardPipeline ] as const;\n\t}\n\n\t/**\n\t * @inheritDoc\n\t */\n\tpublic init(): void {\n\t\tconst editor = this.editor;\n\t\tconst view = editor.editing.view;\n\t\tconst viewDocument = view.document;\n\n\t\tconst clipboardPipeline: ClipboardPipeline = editor.plugins.get( 'ClipboardPipeline' );\n\n\t\tlet shiftPressed = false;\n\n\t\tthis.listenTo<ViewDocumentKeyDownEvent>( viewDocument, 'keydown', ( evt, data ) => {\n\t\t\tshiftPressed = data.shiftKey;\n\t\t} );\n\n\t\tthis.listenTo<ClipboardInputTransformationEvent>( clipboardPipeline, 'inputTransformation', ( evt, data ) => {\n\t\t\tif ( shiftPressed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst dataAsTextHtml = data.dataTransfer.getData( 'text/html' );\n\n\t\t\tif ( !dataAsTextHtml ) {\n\t\t\t\tconst dataAsTextPlain = data.dataTransfer.getData( 'text/plain' );\n\n\t\t\t\tdata.content = this._gfmDataProcessor.toView( dataAsTextPlain );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst markdownFromHtml = this._parseMarkdownFromHtml( dataAsTextHtml );\n\n\t\t\tif ( markdownFromHtml ) {\n\t\t\t\tdata.content = this._gfmDataProcessor.toView( markdownFromHtml );\n\t\t\t}\n\t\t} );\n\t}\n\n\t/**\n\t * Determines if the code copied from a website in the `text/html` type can be parsed as Markdown.\n\t * It removes any OS-specific HTML tags, for example, <meta> on macOS and <!--StartFragment--> on Windows.\n\t * Then removes a single wrapper HTML tag or wrappers for sibling tags, and if there are no more tags left,\n\t * returns the remaining text. Returns null if there are any remaining HTML tags detected.\n\t *\n\t * @param htmlString Clipboard content in the `text/html` type format.\n\t */\n\tprivate _parseMarkdownFromHtml( htmlString: string ): string | null {\n\t\tconst withoutOsSpecificTags = this._removeOsSpecificTags( htmlString );\n\n\t\tif ( !this._containsOnlyAllowedFirstLevelTags( withoutOsSpecificTags ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst withoutWrapperTag = this._removeFirstLevelWrapperTagsAndBrs( withoutOsSpecificTags );\n\n\t\tif ( this._containsAnyRemainingHtmlTags( withoutWrapperTag ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._replaceHtmlReservedEntitiesWithCharacters( withoutWrapperTag );\n\t}\n\n\t/**\n\t * Removes OS-specific tags.\n\t *\n\t * @param htmlString Clipboard content in the `text/html` type format.\n\t */\n\tprivate _removeOsSpecificTags( htmlString: string ): string {\n\t\t// Removing the <meta> tag present on Mac.\n\t\tconst withoutMetaTag = htmlString.replace( /^<meta\\b[^>]*>/, '' ).trim();\n\t\t// Removing the <html> tag present on Windows.\n\t\tconst withoutHtmlTag = withoutMetaTag.replace( /^<html>/, '' ).replace( /<\\/html>$/, '' ).trim();\n\t\t// Removing the <body> tag present on Windows.\n\t\tconst withoutBodyTag = withoutHtmlTag.replace( /^<body>/, '' ).replace( /<\\/body>$/, '' ).trim();\n\n\t\t// Removing the <!--StartFragment--> tag present on Windows.\n\t\treturn withoutBodyTag.replace( /^<!--StartFragment-->/, '' ).replace( /<!--EndFragment-->$/, '' ).trim();\n\t}\n\n\t/**\n\t * If the input HTML string contains any first-level formatting tags\n\t * like <b>, <strong>, or <i>, we should not treat it as Markdown.\n\t *\n\t * @param htmlString Clipboard content.\n\t */\n\tprivate _containsOnlyAllowedFirstLevelTags( htmlString: string ): boolean {\n\t\tconst parser = new DOMParser();\n\t\tconst { body: tempElement } = parser.parseFromString( htmlString, 'text/html' );\n\n\t\tconst tagNames = Array.from( tempElement.children ).map( el => el.tagName );\n\n\t\treturn tagNames.every( el => ALLOWED_MARKDOWN_FIRST_LEVEL_TAGS.includes( el ) );\n\t}\n\n\t/**\n\t * Removes multiple HTML wrapper tags from a list of sibling HTML tags.\n\t *\n\t * @param htmlString Clipboard content without any OS-specific tags.\n\t */\n\tprivate _removeFirstLevelWrapperTagsAndBrs( htmlString: string ): string {\n\t\tconst parser = new DOMParser();\n\t\tconst { body: tempElement } = parser.parseFromString( htmlString, 'text/html' );\n\n\t\tconst brElements = tempElement.querySelectorAll( 'br' );\n\n\t\tfor ( const br of brElements ) {\n\t\t\tbr.replaceWith( '\\n' );\n\t\t}\n\n\t\tconst outerElements = tempElement.querySelectorAll( ':scope > *' );\n\n\t\tfor ( const element of outerElements ) {\n\t\t\tconst elementClone = element.cloneNode( true );\n\t\t\telement.replaceWith( ...elementClone.childNodes );\n\t\t}\n\n\t\treturn tempElement.innerHTML;\n\t}\n\n\t/**\n\t * Determines if a string contains any HTML tags.\n\t */\n\tprivate _containsAnyRemainingHtmlTags( str: string ): boolean {\n\t\treturn str.includes( '<' );\n\t}\n\n\t/**\n\t * Replaces the reserved HTML entities with the actual characters.\n\t *\n\t * @param htmlString Clipboard content without any tags.\n\t */\n\tprivate _replaceHtmlReservedEntitiesWithCharacters( htmlString: string ) {\n\t\treturn htmlString\n\t\t\t.replace( /&gt;/g, '>' )\n\t\t\t.replace( /&lt;/g, '<' )\n\t\t\t.replace( /&nbsp;/g, ' ' );\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-markdown-gfm",
3
- "version": "0.0.0-nightly-20240509.0",
3
+ "version": "0.0.0-nightly-20240511.0",
4
4
  "description": "GitHub Flavored Markdown data processor for CKEditor 5.",
5
5
  "keywords": [
6
6
  "ckeditor",
@@ -13,7 +13,7 @@
13
13
  "type": "module",
14
14
  "main": "src/index.js",
15
15
  "dependencies": {
16
- "ckeditor5": "0.0.0-nightly-20240509.0",
16
+ "ckeditor5": "0.0.0-nightly-20240511.0",
17
17
  "marked": "4.0.12",
18
18
  "turndown": "6.0.0",
19
19
  "turndown-plugin-gfm": "1.0.2"