@ni/nimble-components 20.15.0 → 20.15.1
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/all-components-bundle.js +12405 -11698
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +2923 -2830
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/rich-text/base/index.d.ts +36 -0
- package/dist/esm/rich-text/base/index.js +73 -0
- package/dist/esm/rich-text/base/index.js.map +1 -0
- package/dist/esm/rich-text/editor/index.d.ts +25 -27
- package/dist/esm/rich-text/editor/index.js +95 -173
- package/dist/esm/rich-text/editor/index.js.map +1 -1
- package/dist/esm/rich-text/editor/models/create-tiptap-editor.d.ts +3 -0
- package/dist/esm/rich-text/editor/models/create-tiptap-editor.js +228 -0
- package/dist/esm/rich-text/editor/models/create-tiptap-editor.js.map +1 -0
- package/dist/esm/rich-text/editor/styles.js +9 -1
- package/dist/esm/rich-text/editor/styles.js.map +1 -1
- package/dist/esm/rich-text/editor/template.js +2 -2
- package/dist/esm/rich-text/editor/template.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.d.ts +4 -0
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js +24 -4
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/types.d.ts +15 -0
- package/dist/esm/rich-text/editor/testing/types.js.map +1 -1
- package/dist/esm/rich-text/editor/types.d.ts +1 -0
- package/dist/esm/rich-text/editor/types.js +1 -0
- package/dist/esm/rich-text/editor/types.js.map +1 -1
- package/dist/esm/rich-text/models/configuration.d.ts +10 -0
- package/dist/esm/rich-text/models/configuration.js +15 -0
- package/dist/esm/rich-text/models/configuration.js.map +1 -0
- package/dist/esm/rich-text/models/editor-configuration.d.ts +10 -0
- package/dist/esm/rich-text/models/editor-configuration.js +14 -0
- package/dist/esm/rich-text/models/editor-configuration.js.map +1 -0
- package/dist/esm/rich-text/models/markdown-parser-mention-configuration.d.ts +2 -2
- package/dist/esm/rich-text/models/markdown-parser-mention-configuration.js +5 -1
- package/dist/esm/rich-text/models/markdown-parser-mention-configuration.js.map +1 -1
- package/dist/esm/rich-text/models/markdown-parser.d.ts +8 -1
- package/dist/esm/rich-text/models/markdown-parser.js +20 -4
- package/dist/esm/rich-text/models/markdown-parser.js.map +1 -1
- package/dist/esm/rich-text/models/markdown-serializer.d.ts +4 -3
- package/dist/esm/rich-text/models/markdown-serializer.js +16 -5
- package/dist/esm/rich-text/models/markdown-serializer.js.map +1 -1
- package/dist/esm/rich-text/models/mention-extension-configuration.d.ts +15 -0
- package/dist/esm/rich-text/models/mention-extension-configuration.js +18 -0
- package/dist/esm/rich-text/models/mention-extension-configuration.js.map +1 -0
- package/dist/esm/rich-text/viewer/index.d.ts +5 -23
- package/dist/esm/rich-text/viewer/index.js +13 -61
- package/dist/esm/rich-text/viewer/index.js.map +1 -1
- package/dist/esm/rich-text/viewer/styles.js +2 -1
- package/dist/esm/rich-text/viewer/styles.js.map +1 -1
- package/dist/esm/rich-text-mention/base/index.d.ts +17 -16
- package/dist/esm/rich-text-mention/base/index.js +34 -20
- package/dist/esm/rich-text-mention/base/index.js.map +1 -1
- package/dist/esm/rich-text-mention/base/models/mention-internals.d.ts +9 -4
- package/dist/esm/rich-text-mention/base/models/mention-internals.js +6 -2
- package/dist/esm/rich-text-mention/base/models/mention-internals.js.map +1 -1
- package/dist/esm/rich-text-mention/base/models/mention-validator.d.ts +3 -5
- package/dist/esm/rich-text-mention/base/models/mention-validator.js +6 -10
- package/dist/esm/rich-text-mention/base/models/mention-validator.js.map +1 -1
- package/dist/esm/rich-text-mention/base/template.d.ts +1 -1
- package/dist/esm/rich-text-mention/base/template.js +1 -1
- package/dist/esm/rich-text-mention/base/template.js.map +1 -1
- package/dist/esm/rich-text-mention/base/types.d.ts +10 -0
- package/dist/esm/rich-text-mention/base/types.js +2 -0
- package/dist/esm/rich-text-mention/base/types.js.map +1 -0
- package/dist/esm/rich-text-mention/users/index.d.ts +2 -3
- package/dist/esm/rich-text-mention/users/index.js +1 -6
- package/dist/esm/rich-text-mention/users/index.js.map +1 -1
- package/dist/esm/rich-text-mention/{base → users}/models/mapping-user-config.d.ts +1 -1
- package/dist/esm/rich-text-mention/{base → users}/models/mapping-user-config.js +1 -1
- package/dist/esm/rich-text-mention/users/models/mapping-user-config.js.map +1 -0
- package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.d.ts +4 -2
- package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.js +11 -2
- package/dist/esm/rich-text-mention/users/models/rich-text-mention-users-validator.js.map +1 -1
- package/dist/esm/rich-text-mention/users/view/styles.js +8 -3
- package/dist/esm/rich-text-mention/users/view/styles.js.map +1 -1
- package/package.json +3 -1
- package/dist/esm/rich-text-mention/base/models/mapping-user-config.js.map +0 -1
|
@@ -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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-tiptap-editor.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/models/create-tiptap-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { css } from '@microsoft/fast-element';
|
|
2
2
|
import { display } from '@microsoft/fast-foundation';
|
|
3
|
-
import { bodyDisabledFontColor, bodyFont, bodyFontColor, borderHoverColor, borderRgbPartialColor, borderWidth, controlLabelFontColor, controlLabelDisabledFontColor, failColor, iconSize, smallDelay, mediumPadding, standardPadding, linkFontColor } from '../../theme-provider/design-tokens';
|
|
3
|
+
import { bodyDisabledFontColor, bodyFont, bodyFontColor, borderHoverColor, borderRgbPartialColor, borderWidth, controlLabelFontColor, controlLabelDisabledFontColor, failColor, iconSize, smallDelay, mediumPadding, standardPadding, linkFontColor, mentionDisabledFontColor, mentionFontColor } from '../../theme-provider/design-tokens';
|
|
4
4
|
import { styles as errorStyles } from '../../patterns/error/styles';
|
|
5
|
+
import { richTextMentionUsersViewTag } from '../../rich-text-mention/users/view';
|
|
5
6
|
export const styles = css `
|
|
6
7
|
${display('inline-flex')}
|
|
7
8
|
${errorStyles}
|
|
@@ -14,6 +15,8 @@ export const styles = css `
|
|
|
14
15
|
--ni-private-rich-text-editor-hover-indicator-width: calc(
|
|
15
16
|
${borderWidth} + 1px
|
|
16
17
|
);
|
|
18
|
+
--ni-nimble-private-mention-font-color: ${mentionFontColor};
|
|
19
|
+
|
|
17
20
|
${
|
|
18
21
|
/** Initial height of rich text editor with one line space when the footer is visible. */ ''}
|
|
19
22
|
height: 82px;
|
|
@@ -59,6 +62,11 @@ export const styles = css `
|
|
|
59
62
|
:host([disabled]) .container {
|
|
60
63
|
color: ${bodyDisabledFontColor};
|
|
61
64
|
border: ${borderWidth} solid rgba(${borderRgbPartialColor}, 0.1);
|
|
65
|
+
--ni-nimble-private-mention-font-color: ${mentionDisabledFontColor};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:host([disabled]) ${richTextMentionUsersViewTag} {
|
|
69
|
+
color: ${bodyDisabledFontColor};
|
|
62
70
|
}
|
|
63
71
|
|
|
64
72
|
:host([error-visible]) .container {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,qBAAqB,EACrB,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,SAAS,EACT,QAAQ,EACR,UAAU,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,wBAAwB,EACxB,gBAAgB,EACnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,aAAa,CAAC;MACtB,WAAW;;;gBAGD,QAAQ;;iBAEP,aAAa;;;cAGhB,WAAW;;kDAEyB,gBAAgB;;UAExD;AACE,yFAAyF,CAAC,EAC9F;;;UAGE;AACE,qHAAqH,CAAC,EAC1H;;;;;;;;;;kBAUU,WAAW,eAAe,qBAAqB;;;;;;;4BAOrC,WAAW;;;;;yBAKd,gBAAgB;;4BAEb,UAAU;;;;+BAIP,gBAAgB;;;;;;;;;;iBAU9B,qBAAqB;kBACpB,WAAW,eAAe,qBAAqB;kDACf,wBAAwB;;;wBAGlD,2BAA2B;iBAClC,qBAAqB;;;;+BAIP,SAAS;;;;iCAIP,WAAW;;;;;;;;+BAQb,SAAS;;;;;;;;;;kBAUtB,WAAW;;;;;;;;;;;;;;;;;;UAkBnB;AACE,wFAAwF,CAAC,EAC7F;8BACsB,QAAQ;;;;;;MAMhC;AACE;;;;;GAKG,CAAC,EACR;;;;;;;;;;;;;;;;;MAiBE,CAAA,+DAAgE,EAAE;;;;;;;;;;;;;;;;;;MAkBlE;AACE;;;GAGG,CAAC,EACR;;iBAEa,qBAAqB;;;;;;;;;iBASrB,6BAA6B;;;MAGxC;AACE;;;GAGG,CAAC,EACR;;iBAEa,aAAa;;UAEpB;AACE;;;;;;;;GAQG,CAAC,EACR;;;;;iBAKS,qBAAqB;;;;;MAKhC,CAAA,2BAA4B,EAAE;;;;;;kBAMlB,WAAW;iCACI,qBAAqB;;;;;;;;;;;;;;;;;;;;;6BAqBzB,eAAe;eAC7B,eAAe;;;;;;;;;;;eAWf,aAAa;;;CAG3B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { html, ref } from '@microsoft/fast-element';
|
|
1
|
+
import { children, elements, html, ref } from '@microsoft/fast-element';
|
|
2
2
|
import { toolbarTag } from '../../toolbar';
|
|
3
3
|
import { toggleButtonTag } from '../../toggle-button';
|
|
4
4
|
import { iconBoldBTag } from '../../icons/bold-b';
|
|
@@ -10,7 +10,7 @@ import { errorTextTemplate } from '../../patterns/error/template';
|
|
|
10
10
|
import { iconExclamationMarkTag } from '../../icons/exclamation-mark';
|
|
11
11
|
// prettier-ignore
|
|
12
12
|
export const template = html `
|
|
13
|
-
<template>
|
|
13
|
+
<template ${children({ property: 'childItems', filter: elements() })}>
|
|
14
14
|
<div class="container">
|
|
15
15
|
<section ${ref('editorContainer')} class="editor-container">
|
|
16
16
|
</section>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,11 +28,14 @@ export declare class RichTextEditorPageObject {
|
|
|
28
28
|
pasteHTMLToEditor(htmlString: string): void;
|
|
29
29
|
setEditorTextContent(value: string): Promise<void>;
|
|
30
30
|
replaceEditorContent(value: string): Promise<void>;
|
|
31
|
+
sliceEditorContent(number: number): Promise<void>;
|
|
31
32
|
getEditorLastChildAttribute(attribute: string): string;
|
|
33
|
+
getEditorMentionViewAttributeValues(attribute: string): string[];
|
|
32
34
|
getEditorFirstChildTagName(): string;
|
|
33
35
|
getEditorFirstChildTextContent(): string;
|
|
34
36
|
getEditorTextContents(): string[];
|
|
35
37
|
getEditorTagNames(): string[];
|
|
38
|
+
getMarkdownRenderedTagNames(): string[];
|
|
36
39
|
getEditorLeafContents(): string[];
|
|
37
40
|
getEditorTagNamesWithClosingTags(): string[];
|
|
38
41
|
getFormattingButtonTextContent(toolbarButton: ToolbarButton): string;
|
|
@@ -44,6 +47,7 @@ export declare class RichTextEditorPageObject {
|
|
|
44
47
|
setDisabled(disabled: boolean): Promise<void>;
|
|
45
48
|
isButtonDisabled(button: ToolbarButton): boolean;
|
|
46
49
|
getPlaceholderValue(): string;
|
|
50
|
+
getParsedHtmlFromMarkdown(markdown: string): string;
|
|
47
51
|
private getEditorSection;
|
|
48
52
|
private getFooter;
|
|
49
53
|
private getTiptapEditor;
|
|
@@ -2,6 +2,8 @@ import { keySpace, keyEnter, keyTab } from '@microsoft/fast-web-utilities';
|
|
|
2
2
|
import { waitForUpdatesAsync } from '../../../testing/async-helpers';
|
|
3
3
|
import { ToolbarButton } from './types';
|
|
4
4
|
import { getTagsFromElement, getLeafContentsFromElement, getLastChildElement, getLastChildElementAttribute } from '../../models/testing/markdown-parser-utils';
|
|
5
|
+
import { richTextMentionUsersViewTag } from '../../../rich-text-mention/users/view';
|
|
6
|
+
import { RichTextMarkdownParser } from '../../models/markdown-parser';
|
|
5
7
|
/**
|
|
6
8
|
* Page object for the `nimble-rich-text-editor` component.
|
|
7
9
|
*/
|
|
@@ -149,14 +151,23 @@ export class RichTextEditorPageObject {
|
|
|
149
151
|
lastElement.parentElement.textContent = value;
|
|
150
152
|
await waitForUpdatesAsync();
|
|
151
153
|
}
|
|
154
|
+
async sliceEditorContent(number) {
|
|
155
|
+
const lastElement = this.getEditorLastChildElement();
|
|
156
|
+
const text = lastElement.parentElement.textContent;
|
|
157
|
+
lastElement.parentElement.textContent = text.substring(0, text.length - number);
|
|
158
|
+
await waitForUpdatesAsync();
|
|
159
|
+
}
|
|
152
160
|
getEditorLastChildAttribute(attribute) {
|
|
153
161
|
return getLastChildElementAttribute(attribute, this.getTiptapEditor());
|
|
154
162
|
}
|
|
163
|
+
getEditorMentionViewAttributeValues(attribute) {
|
|
164
|
+
return Array.from(this.getTiptapEditor().querySelectorAll(richTextMentionUsersViewTag)).map(el => el.getAttribute(attribute) || '');
|
|
165
|
+
}
|
|
155
166
|
getEditorFirstChildTagName() {
|
|
156
|
-
return this.getTiptapEditor()
|
|
167
|
+
return this.getTiptapEditor().firstElementChild?.tagName ?? '';
|
|
157
168
|
}
|
|
158
169
|
getEditorFirstChildTextContent() {
|
|
159
|
-
return this.getTiptapEditor()
|
|
170
|
+
return this.getTiptapEditor().firstElementChild?.textContent ?? '';
|
|
160
171
|
}
|
|
161
172
|
getEditorTextContents() {
|
|
162
173
|
return Array.from(this.getTiptapEditor().querySelectorAll('*')).map(el => el.textContent || '');
|
|
@@ -164,6 +175,11 @@ export class RichTextEditorPageObject {
|
|
|
164
175
|
getEditorTagNames() {
|
|
165
176
|
return getTagsFromElement(this.getTiptapEditor());
|
|
166
177
|
}
|
|
178
|
+
// Return list of tags, excluding those such as 'IMG' (prosemirror-separator) that do not affect the UI or markdown output.
|
|
179
|
+
// These tags are considered extraneous and are added by prosemirror.
|
|
180
|
+
getMarkdownRenderedTagNames() {
|
|
181
|
+
return getTagsFromElement(this.getTiptapEditor()).filter(tag => tag !== 'IMG');
|
|
182
|
+
}
|
|
167
183
|
getEditorLeafContents() {
|
|
168
184
|
return getLeafContentsFromElement(this.getTiptapEditor());
|
|
169
185
|
}
|
|
@@ -197,7 +213,7 @@ export class RichTextEditorPageObject {
|
|
|
197
213
|
=== this.getTiptapEditor());
|
|
198
214
|
}
|
|
199
215
|
getEditorTabIndex() {
|
|
200
|
-
return this.getTiptapEditor()
|
|
216
|
+
return this.getTiptapEditor().getAttribute('tabindex') ?? '';
|
|
201
217
|
}
|
|
202
218
|
async setFooterHidden(footerHidden) {
|
|
203
219
|
if (footerHidden) {
|
|
@@ -229,6 +245,10 @@ export class RichTextEditorPageObject {
|
|
|
229
245
|
const editor = this.getTiptapEditor();
|
|
230
246
|
return editor.firstElementChild?.getAttribute('data-placeholder') ?? '';
|
|
231
247
|
}
|
|
248
|
+
getParsedHtmlFromMarkdown(markdown) {
|
|
249
|
+
const parseResult = RichTextMarkdownParser.parseMarkdownToDOM(markdown, this.richTextEditorElement.configuration?.parserMentionConfig);
|
|
250
|
+
return this.richTextEditorElement.xmlSerializer.serializeToString(parseResult.fragment);
|
|
251
|
+
}
|
|
232
252
|
getEditorSection() {
|
|
233
253
|
return this.richTextEditorElement.shadowRoot?.querySelector('.editor');
|
|
234
254
|
}
|
|
@@ -236,7 +256,7 @@ export class RichTextEditorPageObject {
|
|
|
236
256
|
return this.richTextEditorElement.shadowRoot.querySelector('.footer-section');
|
|
237
257
|
}
|
|
238
258
|
getTiptapEditor() {
|
|
239
|
-
return this.richTextEditorElement.shadowRoot
|
|
259
|
+
return this.richTextEditorElement.shadowRoot.querySelector('.ProseMirror');
|
|
240
260
|
}
|
|
241
261
|
getFormattingButton(button) {
|
|
242
262
|
const buttons = this.richTextEditorElement.shadowRoot.querySelectorAll('nimble-toggle-button');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-editor.pageobject.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/rich-text-editor.pageobject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAC1D,OAAO,EACH,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,4BAA4B,EAC/B,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"rich-text-editor.pageobject.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/rich-text-editor.pageobject.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import type { MappingUser } from '../../../mapping/user';
|
|
2
|
+
import type { RichTextMentionTest } from '../../../rich-text-mention/base/tests/rich-text-mention.fixtures';
|
|
3
|
+
import type { RichTextMentionUsers } from '../../../rich-text-mention/users';
|
|
1
4
|
export declare const ToolbarButton: {
|
|
2
5
|
readonly bold: 0;
|
|
3
6
|
readonly italics: 1;
|
|
@@ -7,3 +10,15 @@ export declare const ToolbarButton: {
|
|
|
7
10
|
export declare type ToolbarButton = (typeof ToolbarButton)[keyof typeof ToolbarButton];
|
|
8
11
|
export declare type LabelProvider = 'toggleBold' | 'toggleItalics' | 'toggleBulletedList' | 'toggleNumberedList';
|
|
9
12
|
export declare type ToolbarButtonKey = keyof typeof ToolbarButton;
|
|
13
|
+
export interface UserMentionElements {
|
|
14
|
+
userMentionElement: RichTextMentionUsers;
|
|
15
|
+
mappingElements: MappingUser[];
|
|
16
|
+
}
|
|
17
|
+
export interface TestMentionElements {
|
|
18
|
+
testMentionElement: RichTextMentionTest;
|
|
19
|
+
mappingElements: MappingUser[];
|
|
20
|
+
}
|
|
21
|
+
export interface MappingConfiguration {
|
|
22
|
+
key?: string;
|
|
23
|
+
displayName?: string;
|
|
24
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/rich-text/editor/testing/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,CAAC;CACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,aAAa;CACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,aAAa;CACrB,CAAC;AAKX,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RichTextMention } from '../../rich-text-mention/base';
|
|
2
|
+
import { MarkdownParserMentionConfiguration } from './markdown-parser-mention-configuration';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for Configuration, contains mention configuration required for RichTextMarkdownParser
|
|
5
|
+
*/
|
|
6
|
+
export declare class Configuration {
|
|
7
|
+
parserMentionConfig: MarkdownParserMentionConfiguration[];
|
|
8
|
+
protected isValid: boolean;
|
|
9
|
+
constructor(mentionElements: RichTextMention[]);
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MarkdownParserMentionConfiguration } from './markdown-parser-mention-configuration';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for Configuration, contains mention configuration required for RichTextMarkdownParser
|
|
4
|
+
*/
|
|
5
|
+
export class Configuration {
|
|
6
|
+
constructor(mentionElements) {
|
|
7
|
+
this.parserMentionConfig = [];
|
|
8
|
+
this.isValid = true;
|
|
9
|
+
this.isValid = mentionElements.every(mentionElement => mentionElement.mentionInternals.validConfiguration);
|
|
10
|
+
this.parserMentionConfig = this.isValid
|
|
11
|
+
? mentionElements.map(mentionElement => new MarkdownParserMentionConfiguration(mentionElement.mentionInternals))
|
|
12
|
+
: [];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../../../src/rich-text/models/configuration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAC;AAE7F;;GAEG;AACH,MAAM,OAAO,aAAa;IAKtB,YAAmB,eAAkC;QAJ9C,wBAAmB,GAAyC,EAAE,CAAC;QAE5D,YAAO,GAAG,IAAI,CAAC;QAGrB,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,KAAK,CAChC,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CACvE,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO;YACnC,CAAC,CAAC,eAAe,CAAC,GAAG,CACjB,cAAc,CAAC,EAAE,CAAC,IAAI,kCAAkC,CACpD,cAAc,CAAC,gBAAgB,CAClC,CACJ;YACD,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;CACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RichTextMention } from '../../rich-text-mention/base';
|
|
2
|
+
import { Configuration } from './configuration';
|
|
3
|
+
import { MentionExtensionConfiguration } from './mention-extension-configuration';
|
|
4
|
+
/**
|
|
5
|
+
* EditorConfiguration which will hold mentionExtensionConfig for configuring editor's mention extension and RichTextMarkdownSerializer
|
|
6
|
+
*/
|
|
7
|
+
export declare class EditorConfiguration extends Configuration {
|
|
8
|
+
mentionExtensionConfig: MentionExtensionConfiguration[];
|
|
9
|
+
constructor(mentionElements: RichTextMention[]);
|
|
10
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Configuration } from './configuration';
|
|
2
|
+
import { MentionExtensionConfiguration } from './mention-extension-configuration';
|
|
3
|
+
/**
|
|
4
|
+
* EditorConfiguration which will hold mentionExtensionConfig for configuring editor's mention extension and RichTextMarkdownSerializer
|
|
5
|
+
*/
|
|
6
|
+
export class EditorConfiguration extends Configuration {
|
|
7
|
+
constructor(mentionElements) {
|
|
8
|
+
super(mentionElements);
|
|
9
|
+
this.mentionExtensionConfig = this.isValid
|
|
10
|
+
? mentionElements.map(mentionElement => new MentionExtensionConfiguration(mentionElement.mentionInternals))
|
|
11
|
+
: [];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=editor-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-configuration.js","sourceRoot":"","sources":["../../../../src/rich-text/models/editor-configuration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAElF;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAGlD,YAAmB,eAAkC;QACjD,KAAK,CAAC,eAAe,CAAC,CAAC;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO;YACtC,CAAC,CAAC,eAAe,CAAC,GAAG,CACjB,cAAc,CAAC,EAAE,CAAC,IAAI,6BAA6B,CAC/C,cAAc,CAAC,gBAAgB,CAClC,CACJ;YACD,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;CACJ"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { RichTextMentionConfig } from '../../rich-text-mention/base';
|
|
2
1
|
import type { MentionInternals } from '../../rich-text-mention/base/models/mention-internals';
|
|
3
2
|
/**
|
|
4
3
|
* A configuration object for a Markdown parser, to be used by the viewer and editor components.
|
|
@@ -8,7 +7,8 @@ export declare class MarkdownParserMentionConfiguration {
|
|
|
8
7
|
readonly viewElement: string;
|
|
9
8
|
private readonly regexPattern;
|
|
10
9
|
private readonly mappingConfigs?;
|
|
11
|
-
constructor(mentionInternals: MentionInternals
|
|
10
|
+
constructor(mentionInternals: MentionInternals);
|
|
11
|
+
static isObservedMentionInternalsProperty(arg: unknown): boolean;
|
|
12
12
|
isValidMentionHref(mentionHref: string): boolean;
|
|
13
13
|
getDisplayName(mentionHref: string): string | undefined;
|
|
14
14
|
private extractMentionId;
|
|
@@ -5,9 +5,13 @@
|
|
|
5
5
|
export class MarkdownParserMentionConfiguration {
|
|
6
6
|
constructor(mentionInternals) {
|
|
7
7
|
this.regexPattern = new RegExp(mentionInternals.pattern ?? '');
|
|
8
|
-
this.mappingConfigs = mentionInternals.
|
|
8
|
+
this.mappingConfigs = mentionInternals.mappingConfigs;
|
|
9
9
|
this.viewElement = mentionInternals.viewElement;
|
|
10
10
|
}
|
|
11
|
+
static isObservedMentionInternalsProperty(arg) {
|
|
12
|
+
return (typeof arg === 'string'
|
|
13
|
+
&& ['pattern', 'mappingConfigs'].includes(arg));
|
|
14
|
+
}
|
|
11
15
|
isValidMentionHref(mentionHref) {
|
|
12
16
|
return this.regexPattern.test(mentionHref);
|
|
13
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-parser-mention-configuration.js","sourceRoot":"","sources":["../../../../src/rich-text/models/markdown-parser-mention-configuration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown-parser-mention-configuration.js","sourceRoot":"","sources":["../../../../src/rich-text/models/markdown-parser-mention-configuration.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,kCAAkC;IAM3C,YAAmB,gBAAkC;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,kCAAkC,CAAC,GAAY;QACzD,OAAO,CACH,OAAO,GAAG,KAAK,QAAQ;eACpB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CACjD,CAAC;IACN,CAAC;IAEM,kBAAkB,CAAC,WAAmB;QACzC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAEM,cAAc,CAAC,WAAmB;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACrD,OAAO,cAAc,EAAE,WAAW,IAAI,SAAS,CAAC;IACpD,CAAC;IAEO,gBAAgB,CAAC,WAAmB;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAExD,kEAAkE;QAClE,iEAAiE;QACjE,OAAO,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IACzC,CAAC;CACJ"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import type { MarkdownParserMentionConfiguration } from './markdown-parser-mention-configuration';
|
|
2
|
+
export interface ParseResult {
|
|
3
|
+
fragment: HTMLElement | DocumentFragment;
|
|
4
|
+
mentionedHrefs: string[];
|
|
5
|
+
}
|
|
2
6
|
/**
|
|
3
7
|
* Provides markdown parser for rich text components
|
|
4
8
|
*/
|
|
5
9
|
export declare class RichTextMarkdownParser {
|
|
10
|
+
private static readonly mentionedHrefs;
|
|
6
11
|
private static readonly updatedSchema;
|
|
7
12
|
private static readonly markdownParser;
|
|
8
13
|
private static readonly domSerializer;
|
|
@@ -17,7 +22,9 @@ export declare class RichTextMarkdownParser {
|
|
|
17
22
|
* DOM structure using a DOMSerializer, and returns the serialized result.
|
|
18
23
|
* If the markdown parser returns null, it will clear the viewer component by creating an empty document fragment.
|
|
19
24
|
*/
|
|
20
|
-
static parseMarkdownToDOM(value: string, markdownParserMentionConfig?: MarkdownParserMentionConfiguration[]):
|
|
25
|
+
static parseMarkdownToDOM(value: string, markdownParserMentionConfig?: MarkdownParserMentionConfiguration[]): ParseResult;
|
|
21
26
|
private static initializeMarkdownParser;
|
|
22
27
|
private static getCustomSchemaConfiguration;
|
|
28
|
+
private static setup;
|
|
29
|
+
private static cleanup;
|
|
23
30
|
}
|