@ni/nimble-components 20.15.0 → 20.16.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.
Files changed (103) hide show
  1. package/dist/all-components-bundle.js +12525 -11724
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +2993 -2857
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/label-provider/table/index.d.ts +6 -0
  6. package/dist/esm/label-provider/table/index.js +9 -1
  7. package/dist/esm/label-provider/table/index.js.map +1 -1
  8. package/dist/esm/label-provider/table/label-token-defaults.js +2 -0
  9. package/dist/esm/label-provider/table/label-token-defaults.js.map +1 -1
  10. package/dist/esm/label-provider/table/label-tokens.d.ts +2 -0
  11. package/dist/esm/label-provider/table/label-tokens.js +8 -0
  12. package/dist/esm/label-provider/table/label-tokens.js.map +1 -1
  13. package/dist/esm/patterns/expand-collapse/styles.d.ts +1 -0
  14. package/dist/esm/patterns/expand-collapse/styles.js +27 -0
  15. package/dist/esm/patterns/expand-collapse/styles.js.map +1 -0
  16. package/dist/esm/rich-text/base/index.d.ts +36 -0
  17. package/dist/esm/rich-text/base/index.js +73 -0
  18. package/dist/esm/rich-text/base/index.js.map +1 -0
  19. package/dist/esm/rich-text/editor/index.d.ts +25 -27
  20. package/dist/esm/rich-text/editor/index.js +95 -173
  21. package/dist/esm/rich-text/editor/index.js.map +1 -1
  22. package/dist/esm/rich-text/editor/models/create-tiptap-editor.d.ts +3 -0
  23. package/dist/esm/rich-text/editor/models/create-tiptap-editor.js +228 -0
  24. package/dist/esm/rich-text/editor/models/create-tiptap-editor.js.map +1 -0
  25. package/dist/esm/rich-text/editor/styles.js +9 -1
  26. package/dist/esm/rich-text/editor/styles.js.map +1 -1
  27. package/dist/esm/rich-text/editor/template.js +2 -2
  28. package/dist/esm/rich-text/editor/template.js.map +1 -1
  29. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.d.ts +4 -0
  30. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js +24 -4
  31. package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
  32. package/dist/esm/rich-text/editor/testing/types.d.ts +15 -0
  33. package/dist/esm/rich-text/editor/testing/types.js.map +1 -1
  34. package/dist/esm/rich-text/editor/types.d.ts +1 -0
  35. package/dist/esm/rich-text/editor/types.js +1 -0
  36. package/dist/esm/rich-text/editor/types.js.map +1 -1
  37. package/dist/esm/rich-text/models/configuration.d.ts +10 -0
  38. package/dist/esm/rich-text/models/configuration.js +15 -0
  39. package/dist/esm/rich-text/models/configuration.js.map +1 -0
  40. package/dist/esm/rich-text/models/editor-configuration.d.ts +10 -0
  41. package/dist/esm/rich-text/models/editor-configuration.js +14 -0
  42. package/dist/esm/rich-text/models/editor-configuration.js.map +1 -0
  43. package/dist/esm/rich-text/models/markdown-parser-mention-configuration.d.ts +2 -2
  44. package/dist/esm/rich-text/models/markdown-parser-mention-configuration.js +5 -1
  45. package/dist/esm/rich-text/models/markdown-parser-mention-configuration.js.map +1 -1
  46. package/dist/esm/rich-text/models/markdown-parser.d.ts +8 -1
  47. package/dist/esm/rich-text/models/markdown-parser.js +20 -4
  48. package/dist/esm/rich-text/models/markdown-parser.js.map +1 -1
  49. package/dist/esm/rich-text/models/markdown-serializer.d.ts +4 -3
  50. package/dist/esm/rich-text/models/markdown-serializer.js +16 -5
  51. package/dist/esm/rich-text/models/markdown-serializer.js.map +1 -1
  52. package/dist/esm/rich-text/models/mention-extension-configuration.d.ts +15 -0
  53. package/dist/esm/rich-text/models/mention-extension-configuration.js +18 -0
  54. package/dist/esm/rich-text/models/mention-extension-configuration.js.map +1 -0
  55. package/dist/esm/rich-text/viewer/index.d.ts +5 -23
  56. package/dist/esm/rich-text/viewer/index.js +13 -61
  57. package/dist/esm/rich-text/viewer/index.js.map +1 -1
  58. package/dist/esm/rich-text/viewer/styles.js +2 -1
  59. package/dist/esm/rich-text/viewer/styles.js.map +1 -1
  60. package/dist/esm/rich-text-mention/base/index.d.ts +17 -16
  61. package/dist/esm/rich-text-mention/base/index.js +34 -20
  62. package/dist/esm/rich-text-mention/base/index.js.map +1 -1
  63. package/dist/esm/rich-text-mention/base/models/mention-internals.d.ts +9 -4
  64. package/dist/esm/rich-text-mention/base/models/mention-internals.js +6 -2
  65. package/dist/esm/rich-text-mention/base/models/mention-internals.js.map +1 -1
  66. package/dist/esm/rich-text-mention/base/models/mention-validator.d.ts +3 -5
  67. package/dist/esm/rich-text-mention/base/models/mention-validator.js +6 -10
  68. package/dist/esm/rich-text-mention/base/models/mention-validator.js.map +1 -1
  69. package/dist/esm/rich-text-mention/base/template.d.ts +1 -1
  70. package/dist/esm/rich-text-mention/base/template.js +1 -1
  71. package/dist/esm/rich-text-mention/base/template.js.map +1 -1
  72. package/dist/esm/rich-text-mention/base/types.d.ts +10 -0
  73. package/dist/esm/rich-text-mention/base/types.js +2 -0
  74. package/dist/esm/rich-text-mention/base/types.js.map +1 -0
  75. package/dist/esm/rich-text-mention/users/index.d.ts +2 -3
  76. package/dist/esm/rich-text-mention/users/index.js +1 -6
  77. package/dist/esm/rich-text-mention/users/index.js.map +1 -1
  78. package/dist/esm/rich-text-mention/{base → users}/models/mapping-user-config.d.ts +1 -1
  79. package/dist/esm/rich-text-mention/{base → users}/models/mapping-user-config.js +1 -1
  80. package/dist/esm/rich-text-mention/users/models/mapping-user-config.js.map +1 -0
  81. package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.d.ts +4 -2
  82. package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.js +11 -2
  83. package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.js.map +1 -1
  84. package/dist/esm/rich-text-mention/users/view/styles.js +8 -3
  85. package/dist/esm/rich-text-mention/users/view/styles.js.map +1 -1
  86. package/dist/esm/table/components/cell/styles.js +2 -2
  87. package/dist/esm/table/components/cell/styles.js.map +1 -1
  88. package/dist/esm/table/components/group-row/styles.js +3 -22
  89. package/dist/esm/table/components/group-row/styles.js.map +1 -1
  90. package/dist/esm/table/components/group-row/template.js +2 -1
  91. package/dist/esm/table/components/group-row/template.js.map +1 -1
  92. package/dist/esm/table/components/row/index.d.ts +12 -0
  93. package/dist/esm/table/components/row/index.js +37 -4
  94. package/dist/esm/table/components/row/index.js.map +1 -1
  95. package/dist/esm/table/components/row/styles.js +20 -1
  96. package/dist/esm/table/components/row/styles.js.map +1 -1
  97. package/dist/esm/table/components/row/template.js +28 -7
  98. package/dist/esm/table/components/row/template.js.map +1 -1
  99. package/dist/esm/table/index.js +4 -3
  100. package/dist/esm/table/index.js.map +1 -1
  101. package/dist/esm/table/types.d.ts +8 -0
  102. package/package.json +3 -1
  103. package/dist/esm/rich-text-mention/base/models/mapping-user-config.js.map +0 -1
@@ -1,31 +1,20 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { observable, attr, DOM } from '@microsoft/fast-element';
3
- import { applyMixins, ARIAGlobalStatesAndProperties, DesignSystem, FoundationElement } from '@microsoft/fast-foundation';
3
+ import { applyMixins, ARIAGlobalStatesAndProperties, DesignSystem } from '@microsoft/fast-foundation';
4
4
  import { keyEnter, keySpace } from '@microsoft/fast-web-utilities';
5
- import { Editor, findParentNode, isList } from '@tiptap/core';
6
- import Bold from '@tiptap/extension-bold';
7
- import BulletList from '@tiptap/extension-bullet-list';
8
- import Document from '@tiptap/extension-document';
9
- import History from '@tiptap/extension-history';
10
- import Italic from '@tiptap/extension-italic';
11
- import Link from '@tiptap/extension-link';
12
- import ListItem from '@tiptap/extension-list-item';
13
- import OrderedList from '@tiptap/extension-ordered-list';
14
- import Paragraph from '@tiptap/extension-paragraph';
15
- import Placeholder from '@tiptap/extension-placeholder';
16
- import Text from '@tiptap/extension-text';
17
- import HardBreak from '@tiptap/extension-hard-break';
18
- import { Slice, Fragment } from 'prosemirror-model';
5
+ import { findParentNode, isList } from '@tiptap/core';
19
6
  import { template } from './template';
20
7
  import { styles } from './styles';
21
- import { TipTapNodeName } from './types';
8
+ import { TipTapNodeName, mentionPluginPrefix } from './types';
22
9
  import { RichTextMarkdownParser } from '../models/markdown-parser';
23
10
  import { RichTextMarkdownSerializer } from '../models/markdown-serializer';
24
- import { anchorTag } from '../../anchor';
11
+ import { RichText } from '../base';
12
+ import { createTiptapEditor } from './models/create-tiptap-editor';
13
+ import { EditorConfiguration } from '../models/editor-configuration';
25
14
  /**
26
15
  * A nimble styled rich text editor
27
16
  */
28
- export class RichTextEditor extends FoundationElement {
17
+ export class RichTextEditor extends RichText {
29
18
  constructor() {
30
19
  super(...arguments);
31
20
  /**
@@ -35,7 +24,15 @@ export class RichTextEditor extends FoundationElement {
35
24
  /**
36
25
  * @internal
37
26
  */
38
- this.tiptapEditor = this.createTiptapEditor();
27
+ this.tiptapEditor = createTiptapEditor(this.editor, [], this.placeholder);
28
+ /**
29
+ * @internal
30
+ */
31
+ this.xmlSerializer = new XMLSerializer();
32
+ /**
33
+ * @internal
34
+ */
35
+ this.richTextMarkdownSerializer = new RichTextMarkdownSerializer([]);
39
36
  /**
40
37
  * Whether to disable user from editing and interacting with toolbar buttons
41
38
  *
@@ -63,47 +60,6 @@ export class RichTextEditor extends FoundationElement {
63
60
  */
64
61
  this.scrollbarWidth = -1;
65
62
  this.updateScrollbarWidthQueued = false;
66
- this.xmlSerializer = new XMLSerializer();
67
- this.validAbsoluteLinkRegex = /^https?:\/\//i;
68
- /**
69
- * This method finds the Link mark in the pasted content and update its Text node.
70
- * If there is no text node, pass the node's fragment recursively and updates only node containing Link mark.
71
- * If the Text node does not contains Link mark, push the same node to `updatedNodes`.
72
- *
73
- * @param fragment Fragment containing the pasted content. [Fragment](https://prosemirror.net/docs/ref/#model.Fragment)
74
- * @returns modified fragment from the `updatedNode` after updating the valid link text with its href value.
75
- */
76
- this.updateLinkNodes = (fragment) => {
77
- const updatedNodes = [];
78
- fragment.forEach(node => {
79
- if (node.isText && node.marks.length > 0) {
80
- const linkMark = node.marks.find(mark => mark.type.name === 'link' && mark.attrs);
81
- if (linkMark) {
82
- // Checks if the link is valid link or not
83
- // Needing to separately validate the link on paste is a workaround for a tiptap issue
84
- // See: https://github.com/ni/nimble/issues/1527
85
- if (this.validAbsoluteLinkRegex.test(linkMark.attrs.href)) {
86
- // The below lines of code is responsible for updating the text content with its href value and creates a new updated text node.
87
- // This code needs an update when the hyperlink support is added.
88
- // See: https://github.com/ni/nimble/issues/1527
89
- updatedNodes.push(this.tiptapEditor.schema.text(linkMark.attrs.href, node.marks));
90
- }
91
- else {
92
- // If it is a invalid link, creates a new Text node with the same text content and without a Link mark.
93
- updatedNodes.push(this.tiptapEditor.schema.text(node.textContent, linkMark.removeFromSet(node.marks)));
94
- }
95
- }
96
- else {
97
- updatedNodes.push(node);
98
- }
99
- }
100
- else {
101
- const updatedContent = this.updateLinkNodes(node.content);
102
- updatedNodes.push(node.copy(updatedContent));
103
- }
104
- });
105
- return Fragment.fromArray(updatedNodes);
106
- };
107
63
  }
108
64
  /**
109
65
  * True if the editor is empty or contains only whitespace, false otherwise.
@@ -112,9 +68,20 @@ export class RichTextEditor extends FoundationElement {
112
68
  */
113
69
  get empty() {
114
70
  // Tiptap [isEmpty](https://tiptap.dev/api/editor#is-empty) returns false even if the editor has only whitespace.
115
- // However, the expectation is to return true if the editor is empty or contains only whitespace.
116
- // Hence, by retrieving the current text content using Tiptap state docs and then trimming the string to determine whether it is empty or not.
117
- return this.tiptapEditor.state.doc.textContent.trim().length === 0;
71
+ // Get the prose mirror textContent of all the nodes with whitespace trimmed to see if it is empty
72
+ // Mention nodes are formatted as empty text content, so if empty make sure there are no mention nodes remaining
73
+ if (this.tiptapEditor.state.doc.textContent.trim() === '') {
74
+ let hasMention = false;
75
+ this.tiptapEditor.state.doc.descendants(node => {
76
+ if (node.type.name.startsWith(mentionPluginPrefix)) {
77
+ hasMention = true;
78
+ }
79
+ const continueDescent = hasMention === false;
80
+ return continueDescent;
81
+ });
82
+ return !hasMention;
83
+ }
84
+ return false;
118
85
  }
119
86
  /**
120
87
  * @internal
@@ -144,15 +111,13 @@ export class RichTextEditor extends FoundationElement {
144
111
  * @internal
145
112
  */
146
113
  disabledChanged() {
147
- this.tiptapEditor.setEditable(!this.disabled);
148
- this.setEditorTabIndex();
149
- this.editor.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');
114
+ this.disableEditor();
150
115
  }
151
116
  /**
152
117
  * Update the placeholder text and view of the editor.
153
118
  * @internal
154
119
  */
155
- placeholderChanged() {
120
+ placeholderChanged(_prev, _next) {
156
121
  const placeholderExtension = this.getTipTapExtension('placeholder');
157
122
  placeholderExtension.options.placeholder = this.placeholder ?? '';
158
123
  this.tiptapEditor.view.dispatch(this.tiptapEditor.state.tr);
@@ -161,7 +126,7 @@ export class RichTextEditor extends FoundationElement {
161
126
  /**
162
127
  * @internal
163
128
  */
164
- ariaLabelChanged() {
129
+ ariaLabelChanged(_prev, _next) {
165
130
  if (this.ariaLabel !== null && this.ariaLabel !== undefined) {
166
131
  this.editor.setAttribute('aria-label', this.ariaLabel);
167
132
  }
@@ -169,6 +134,22 @@ export class RichTextEditor extends FoundationElement {
169
134
  this.editor.removeAttribute('aria-label');
170
135
  }
171
136
  }
137
+ /**
138
+ * @internal
139
+ */
140
+ configurationChanged(prev, next) {
141
+ if (this.isMentionExtensionConfigUnchanged(prev, next)) {
142
+ this.setMarkdown(this.getMarkdown());
143
+ }
144
+ else {
145
+ const currentStateMarkdown = this.getMarkdown();
146
+ this.richTextMarkdownSerializer = new RichTextMarkdownSerializer(this.configuration instanceof EditorConfiguration
147
+ ? this.configuration.mentionExtensionConfig.map(config => config.name)
148
+ : []);
149
+ this.initializeEditor();
150
+ this.setMarkdown(currentStateMarkdown);
151
+ }
152
+ }
172
153
  /**
173
154
  * Toggle the bold mark and focus back to the editor
174
155
  * @internal
@@ -254,7 +235,7 @@ export class RichTextEditor extends FoundationElement {
254
235
  * @public
255
236
  */
256
237
  getMarkdown() {
257
- return RichTextMarkdownSerializer.serializeDOMToMarkdown(this.tiptapEditor.state.doc);
238
+ return this.richTextMarkdownSerializer.serializeDOMToMarkdown(this.tiptapEditor.state.doc);
258
239
  }
259
240
  /**
260
241
  * @internal
@@ -265,6 +246,29 @@ export class RichTextEditor extends FoundationElement {
265
246
  event.stopPropagation();
266
247
  return false;
267
248
  }
249
+ getMentionedHrefs() {
250
+ const mentionedHrefs = new Set();
251
+ this.tiptapEditor.state.doc.descendants(node => {
252
+ if (node.type.name.startsWith(mentionPluginPrefix)) {
253
+ mentionedHrefs.add(node.attrs.href);
254
+ }
255
+ });
256
+ return Array.from(mentionedHrefs);
257
+ }
258
+ createConfig() {
259
+ return new EditorConfiguration(this.mentionElements);
260
+ }
261
+ isMentionExtensionConfigUnchanged(prev, next) {
262
+ const prevConfigCharacters = prev?.mentionExtensionConfig
263
+ .map(config => config.character)
264
+ .sort((a, b) => a.localeCompare(b))
265
+ .toString();
266
+ const nextConfigCharacters = next.mentionExtensionConfig
267
+ .map(config => config.character)
268
+ .sort((a, b) => a.localeCompare(b))
269
+ .toString();
270
+ return prevConfigCharacters === nextConfigCharacters;
271
+ }
268
272
  createEditor() {
269
273
  const editor = document.createElement('div');
270
274
  editor.className = 'editor';
@@ -273,115 +277,25 @@ export class RichTextEditor extends FoundationElement {
273
277
  editor.setAttribute('aria-disabled', 'false');
274
278
  return editor;
275
279
  }
276
- createTiptapEditor() {
277
- const customLink = this.getCustomLinkExtension();
278
- /**
279
- * @param slice contains the Fragment of the copied content. If the content is a link, the slice contains Text node with Link mark.
280
- * ProseMirror reference for `transformPasted`: https://prosemirror.net/docs/ref/#view.EditorProps.transformPasted
281
- */
282
- const transformPasted = (slice) => {
283
- const modifiedFragment = this.updateLinkNodes(slice.content);
284
- return new Slice(modifiedFragment, slice.openStart, slice.openEnd);
285
- };
286
- /**
287
- * For more information on the extensions for the supported formatting options, refer to the links below.
288
- * Tiptap marks: https://tiptap.dev/api/marks
289
- * Tiptap nodes: https://tiptap.dev/api/nodes
290
- */
291
- return new Editor({
292
- element: this.editor,
293
- // The editor will detect markdown syntax for an input only for these items
294
- // https://tiptap.dev/api/editor#enable-input-rules
295
- enableInputRules: [BulletList, OrderedList],
296
- // The editor will not detect markdown syntax when pasting content in any supported items
297
- // Lists do not have any default paste rules, they have only input rules, so disabled paste rules
298
- // https://tiptap.dev/api/editor#enable-paste-rules
299
- enablePasteRules: false,
300
- editorProps: {
301
- // Validating whether the links in the pasted content belongs to the supported scheme (HTTPS/HTTP),
302
- // and rendering it as a link in the editor. If not, rendering it as a plain text.
303
- // Also, updating the link text content with its href as we support only the absolute link.
304
- // `transformPasted` can be updated/removed when hyperlink support added
305
- // See: https://github.com/ni/nimble/issues/1527
306
- transformPasted
307
- },
308
- extensions: [
309
- Document,
310
- Paragraph,
311
- Text,
312
- BulletList,
313
- OrderedList,
314
- ListItem,
315
- Bold,
316
- Italic,
317
- History,
318
- Placeholder.configure({
319
- placeholder: '',
320
- showOnlyWhenEditable: false
321
- }),
322
- HardBreak,
323
- customLink.configure({
324
- // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap
325
- // eslint-disable-next-line @typescript-eslint/naming-convention
326
- HTMLAttributes: {
327
- rel: 'noopener noreferrer',
328
- target: null
329
- },
330
- autolink: true,
331
- openOnClick: false,
332
- // linkOnPaste can be enabled when hyperlink support added
333
- // See: https://github.com/ni/nimble/issues/1527
334
- linkOnPaste: false,
335
- validate: href => this.validAbsoluteLinkRegex.test(href)
336
- })
337
- ]
338
- });
339
- }
340
- /**
341
- * Extending the default link mark schema defined in the TipTap.
342
- *
343
- * "excludes": https://prosemirror.net/docs/ref/#model.MarkSpec.excludes
344
- * "inclusive": https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive
345
- * "parseHTML": https://tiptap.dev/guide/custom-extensions#parse-html
346
- * "renderHTML": https://tiptap.dev/guide/custom-extensions/#render-html
347
- */
348
- getCustomLinkExtension() {
349
- return Link.extend({
350
- // Excludes can be removed/enabled when hyperlink support added
351
- // See: https://github.com/ni/nimble/issues/1527
352
- excludes: '_',
353
- // Inclusive can be updated when hyperlink support added
354
- // See: https://github.com/ni/nimble/issues/1527
355
- inclusive: false,
356
- parseHTML() {
357
- return [
358
- // To load the `nimble-anchor` from the HTML parsed content by markdown-parser as links in the Tiptap editor, the `parseHTML`
359
- // of Link extension should return nimble `anchorTag`.
360
- // This is because the link mark schema in `markdown-parser.ts` file uses `<nimble-anchor>` as anchor tag and not `<a>`.
361
- {
362
- tag: anchorTag
363
- },
364
- // `<a>` tag is added here to support when pasting a link from external source.
365
- {
366
- tag: 'a'
367
- }
368
- ];
369
- },
370
- // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap
371
- // eslint-disable-next-line @typescript-eslint/naming-convention
372
- renderHTML({ HTMLAttributes }) {
373
- // The below 'a' tag should be replaced with 'nimble-anchor' once the below issue is fixed.
374
- // https://github.com/ni/nimble/issues/1516
375
- return ['a', HTMLAttributes];
376
- }
377
- });
280
+ initializeEditor() {
281
+ this.unbindEditorTransactionEvent();
282
+ this.unbindEditorUpdateEvent();
283
+ this.unbindNativeInputEvent();
284
+ this.tiptapEditor?.destroy();
285
+ this.tiptapEditor = createTiptapEditor(this.editor, this.configuration instanceof EditorConfiguration
286
+ ? this.configuration.mentionExtensionConfig
287
+ : [], this.placeholder);
288
+ this.disableEditor();
289
+ this.bindEditorTransactionEvent();
290
+ this.bindEditorUpdateEvent();
291
+ this.stopNativeInputEventPropagation();
378
292
  }
379
293
  /**
380
294
  * This function takes the Fragment from parseMarkdownToDOM function and return the serialized string using XMLSerializer
381
295
  */
382
296
  getHtmlContent(markdown) {
383
- const documentFragment = RichTextMarkdownParser.parseMarkdownToDOM(markdown);
384
- return this.xmlSerializer.serializeToString(documentFragment);
297
+ const parseResult = RichTextMarkdownParser.parseMarkdownToDOM(markdown, this.configuration?.parserMentionConfig);
298
+ return this.xmlSerializer.serializeToString(parseResult.fragment);
385
299
  }
386
300
  /**
387
301
  * Binding the "transaction" event to the editor allows continuous monitoring the events and updating the button state in response to
@@ -397,6 +311,9 @@ export class RichTextEditor extends FoundationElement {
397
311
  this.tiptapEditor.off('transaction');
398
312
  }
399
313
  updateEditorButtonsState() {
314
+ if (!this.$fastController.isConnected) {
315
+ return;
316
+ }
400
317
  const { extensionManager, state } = this.tiptapEditor;
401
318
  const { extensions } = extensionManager;
402
319
  const { selection } = state;
@@ -429,6 +346,11 @@ export class RichTextEditor extends FoundationElement {
429
346
  this.queueUpdateScrollbarWidth();
430
347
  });
431
348
  }
349
+ disableEditor() {
350
+ this.tiptapEditor.setEditable(!this.disabled);
351
+ this.setEditorTabIndex();
352
+ this.editor.setAttribute('aria-disabled', this.disabled ? 'true' : 'false');
353
+ }
432
354
  /**
433
355
  * Stopping the native input event propagation emitted by the contenteditable element in the Tiptap
434
356
  * since there is an issue (linked below) in ProseMirror where selecting the text and removing it
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Editor } from '@tiptap/core';
2
+ import type { MentionExtensionConfiguration } from '../../models/mention-extension-configuration';
3
+ export declare function createTiptapEditor(editor: HTMLDivElement, mentionExtensionConfig: MentionExtensionConfiguration[], placeholder?: string): Editor;
@@ -0,0 +1,228 @@
1
+ import { Editor, mergeAttributes } from '@tiptap/core';
2
+ import Bold from '@tiptap/extension-bold';
3
+ import BulletList from '@tiptap/extension-bullet-list';
4
+ import Document from '@tiptap/extension-document';
5
+ import History from '@tiptap/extension-history';
6
+ import Italic from '@tiptap/extension-italic';
7
+ import Link from '@tiptap/extension-link';
8
+ import ListItem from '@tiptap/extension-list-item';
9
+ import OrderedList from '@tiptap/extension-ordered-list';
10
+ import Paragraph from '@tiptap/extension-paragraph';
11
+ import Placeholder from '@tiptap/extension-placeholder';
12
+ import Text from '@tiptap/extension-text';
13
+ import Mention from '@tiptap/extension-mention';
14
+ import HardBreak from '@tiptap/extension-hard-break';
15
+ import { Slice, Fragment } from 'prosemirror-model';
16
+ import { PluginKey } from 'prosemirror-state';
17
+ import { mentionPluginPrefix } from '../types';
18
+ import { anchorTag } from '../../../anchor';
19
+ const validAbsoluteLinkRegex = /^https?:\/\//i;
20
+ export function createTiptapEditor(editor, mentionExtensionConfig, placeholder) {
21
+ const customLink = createCustomLinkExtension();
22
+ const mentionExtensions = mentionExtensionConfig.map(config => createCustomMentionExtension(config));
23
+ /**
24
+ * For more information on the extensions for the supported formatting options, refer to the links below.
25
+ * Tiptap marks: https://tiptap.dev/api/marks
26
+ * Tiptap nodes: https://tiptap.dev/api/nodes
27
+ */
28
+ const tipTapEditor = new Editor({
29
+ element: editor,
30
+ // The editor will detect markdown syntax for an input only for these items
31
+ // https://tiptap.dev/api/editor#enable-input-rules
32
+ enableInputRules: [BulletList, OrderedList],
33
+ // The editor will not detect markdown syntax when pasting content in any supported items
34
+ // Lists do not have any default paste rules, they have only input rules, so disabled paste rules
35
+ // https://tiptap.dev/api/editor#enable-paste-rules
36
+ enablePasteRules: false,
37
+ editorProps: {
38
+ // Validating whether the links in the pasted content belongs to the supported scheme (HTTPS/HTTP),
39
+ // and rendering it as a link in the editor. If not, rendering it as a plain text.
40
+ // Also, updating the link text content with its href as we support only the absolute link.
41
+ // `transformPasted` can be updated/removed when hyperlink support added
42
+ // See: https://github.com/ni/nimble/issues/1527
43
+ transformPasted
44
+ },
45
+ extensions: [
46
+ Document,
47
+ Paragraph,
48
+ Text,
49
+ BulletList,
50
+ OrderedList,
51
+ ListItem,
52
+ Bold,
53
+ Italic,
54
+ History,
55
+ Placeholder.configure({
56
+ placeholder,
57
+ showOnlyWhenEditable: false
58
+ }),
59
+ HardBreak,
60
+ customLink,
61
+ ...mentionExtensions
62
+ ]
63
+ });
64
+ /**
65
+ * @param slice contains the Fragment of the copied content. If the content is a link, the slice contains Text node with Link mark.
66
+ * ProseMirror reference for `transformPasted`: https://prosemirror.net/docs/ref/#view.EditorProps.transformPasted
67
+ */
68
+ function transformPasted(slice) {
69
+ const modifiedFragment = updateLinkAndMentionNodes(tipTapEditor, slice.content);
70
+ return new Slice(modifiedFragment, slice.openStart, slice.openEnd);
71
+ }
72
+ return tipTapEditor;
73
+ }
74
+ /**
75
+ * Extending the default link mark schema defined in the TipTap.
76
+ *
77
+ * "excludes": https://prosemirror.net/docs/ref/#model.MarkSpec.excludes
78
+ * "inclusive": https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive
79
+ * "parseHTML": https://tiptap.dev/guide/custom-extensions#parse-html
80
+ * "renderHTML": https://tiptap.dev/guide/custom-extensions/#render-html
81
+ */
82
+ function createCustomLinkExtension() {
83
+ return Link.extend({
84
+ // Excludes can be removed/enabled when hyperlink support added
85
+ // See: https://github.com/ni/nimble/issues/1527
86
+ excludes: '_',
87
+ // Inclusive can be updated when hyperlink support added
88
+ // See: https://github.com/ni/nimble/issues/1527
89
+ inclusive: false,
90
+ parseHTML() {
91
+ return [
92
+ // To load the `nimble-anchor` from the HTML parsed content by markdown-parser as links in the Tiptap editor, the `parseHTML`
93
+ // of Link extension should return nimble `anchorTag`.
94
+ // This is because the link mark schema in `markdown-parser.ts` file uses `<nimble-anchor>` as anchor tag and not `<a>`.
95
+ {
96
+ tag: anchorTag
97
+ },
98
+ // `<a>` tag is added here to support when pasting a link from external source.
99
+ {
100
+ tag: 'a'
101
+ }
102
+ ];
103
+ },
104
+ // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap
105
+ // eslint-disable-next-line @typescript-eslint/naming-convention
106
+ renderHTML({ HTMLAttributes }) {
107
+ // The below 'a' tag should be replaced with 'nimble-anchor' once the below issue is fixed.
108
+ // https://github.com/ni/nimble/issues/1516
109
+ return ['a', HTMLAttributes];
110
+ }
111
+ }).configure({
112
+ // HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap
113
+ // eslint-disable-next-line @typescript-eslint/naming-convention
114
+ HTMLAttributes: {
115
+ rel: 'noopener noreferrer',
116
+ target: null
117
+ },
118
+ autolink: true,
119
+ openOnClick: false,
120
+ // linkOnPaste can be enabled when hyperlink support added
121
+ // See: https://github.com/ni/nimble/issues/1527
122
+ linkOnPaste: false,
123
+ validate: href => validAbsoluteLinkRegex.test(href)
124
+ });
125
+ }
126
+ function createCustomMentionExtension(config) {
127
+ return Mention.extend({
128
+ name: config.name,
129
+ parseHTML() {
130
+ return [
131
+ {
132
+ tag: config.viewElement
133
+ }
134
+ ];
135
+ },
136
+ addAttributes() {
137
+ return {
138
+ href: {
139
+ default: null,
140
+ parseHTML: element => element.getAttribute('mention-href'),
141
+ renderHTML: attributes => {
142
+ return {
143
+ 'mention-href': attributes.href
144
+ };
145
+ }
146
+ },
147
+ label: {
148
+ default: null,
149
+ parseHTML: element => element.getAttribute('mention-label'),
150
+ renderHTML: attributes => {
151
+ return {
152
+ 'mention-label': attributes.label
153
+ };
154
+ }
155
+ }
156
+ };
157
+ },
158
+ // eslint-disable-next-line @typescript-eslint/naming-convention
159
+ renderHTML({ HTMLAttributes }) {
160
+ return [
161
+ config.viewElement,
162
+ mergeAttributes(this.options.HTMLAttributes, HTMLAttributes,
163
+ // disable-editing is a boolean attribute
164
+ { 'disable-editing': '' })
165
+ ];
166
+ }
167
+ }).configure({
168
+ suggestion: {
169
+ char: config.character,
170
+ decorationTag: config.viewElement,
171
+ pluginKey: new PluginKey(config.key),
172
+ allowSpaces: true,
173
+ render: () => {
174
+ return {
175
+ onStart: (props) => {
176
+ config.mentionUpdateEmitter(props.query);
177
+ },
178
+ onUpdate: (props) => {
179
+ config.mentionUpdateEmitter(props.query);
180
+ }
181
+ };
182
+ }
183
+ }
184
+ });
185
+ }
186
+ /**
187
+ * This method finds the Link mark in the pasted content and update its Text node.
188
+ * If there is no text node, pass the node's fragment recursively and updates only node containing Link mark.
189
+ * If the Text node does not contains Link mark, push the same node to `updatedNodes`.
190
+ *
191
+ * @param fragment Fragment containing the pasted content. [Fragment](https://prosemirror.net/docs/ref/#model.Fragment)
192
+ * @returns modified fragment from the `updatedNode` after updating the valid link text with its href value.
193
+ */
194
+ function updateLinkAndMentionNodes(tiptapEditor, fragment) {
195
+ const updatedNodes = [];
196
+ fragment.forEach(node => {
197
+ if (node.isText && node.marks.length > 0) {
198
+ const linkMark = node.marks.find(mark => mark.type.name === 'link' && mark.attrs);
199
+ if (linkMark) {
200
+ // Checks if the link is valid link or not
201
+ // Needing to separately validate the link on paste is a workaround for a tiptap issue
202
+ // See: https://github.com/ni/nimble/issues/1527
203
+ if (validAbsoluteLinkRegex.test(linkMark.attrs.href)) {
204
+ // The below lines of code is responsible for updating the text content with its href value and creates a new updated text node.
205
+ // This code needs an update when the hyperlink support is added.
206
+ // See: https://github.com/ni/nimble/issues/1527
207
+ updatedNodes.push(tiptapEditor.schema.text(linkMark.attrs.href, node.marks));
208
+ }
209
+ else {
210
+ // If it is a invalid link, creates a new Text node with the same text content and without a Link mark.
211
+ updatedNodes.push(tiptapEditor.schema.text(node.textContent, linkMark.removeFromSet(node.marks)));
212
+ }
213
+ }
214
+ else {
215
+ updatedNodes.push(node);
216
+ }
217
+ }
218
+ else if (node.type.name.startsWith(mentionPluginPrefix)) {
219
+ updatedNodes.push(tiptapEditor.schema.text(node.attrs.label));
220
+ }
221
+ else {
222
+ const updatedContent = updateLinkAndMentionNodes(tiptapEditor, node.content);
223
+ updatedNodes.push(node.copy(updatedContent));
224
+ }
225
+ });
226
+ return Fragment.fromArray(updatedNodes);
227
+ }
228
+ //# sourceMappingURL=create-tiptap-editor.js.map