@ni/nimble-components 20.2.14 → 20.2.15
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 +2276 -19
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +2448 -2264
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/rich-text/editor/index.d.ts +9 -0
- package/dist/esm/rich-text/editor/index.js +48 -0
- package/dist/esm/rich-text/editor/index.js.map +1 -1
- package/dist/esm/rich-text/editor/styles.js +30 -1
- package/dist/esm/rich-text/editor/styles.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.d.ts +3 -0
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js +24 -5
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js.map +1 -1
- package/dist/esm/rich-text/models/markdown-parser.d.ts +2 -0
- package/dist/esm/rich-text/models/markdown-parser.js +45 -3
- package/dist/esm/rich-text/models/markdown-parser.js.map +1 -1
- package/dist/esm/rich-text/models/markdown-serializer.js +22 -1
- package/dist/esm/rich-text/models/markdown-serializer.js.map +1 -1
- package/dist/esm/rich-text/models/testing/markdown-parser-utils.d.ts +2 -0
- package/dist/esm/rich-text/models/testing/markdown-parser-utils.js +10 -0
- package/dist/esm/rich-text/models/testing/markdown-parser-utils.js.map +1 -1
- package/dist/esm/rich-text/viewer/styles.js +1 -10
- package/dist/esm/rich-text/viewer/styles.js.map +1 -1
- package/dist/esm/src/rich-text/editor/index.d.ts +9 -0
- package/dist/esm/src/rich-text/editor/testing/rich-text-editor.pageobject.d.ts +3 -0
- package/dist/esm/src/rich-text/models/markdown-parser.d.ts +2 -0
- package/dist/esm/src/rich-text/models/testing/markdown-parser-utils.d.ts +2 -0
- package/package.json +2 -1
|
@@ -163,6 +163,15 @@ export declare class RichTextEditor extends FoundationElement implements ErrorPa
|
|
|
163
163
|
stopEventPropagation(event: Event): boolean;
|
|
164
164
|
private createEditor;
|
|
165
165
|
private createTiptapEditor;
|
|
166
|
+
/**
|
|
167
|
+
* Extending the default link mark schema defined in the TipTap.
|
|
168
|
+
*
|
|
169
|
+
* "excludes": https://prosemirror.net/docs/ref/#model.MarkSpec.excludes
|
|
170
|
+
* "inclusive": https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive
|
|
171
|
+
* "parseHTML": https://tiptap.dev/guide/custom-extensions#parse-html
|
|
172
|
+
* "renderHTML": https://tiptap.dev/guide/custom-extensions/#render-html
|
|
173
|
+
*/
|
|
174
|
+
private getCustomLinkExtension;
|
|
166
175
|
/**
|
|
167
176
|
* This function takes the Fragment from parseMarkdownToDOM function and return the serialized string using XMLSerializer
|
|
168
177
|
*/
|
|
@@ -8,6 +8,7 @@ import BulletList from '@tiptap/extension-bullet-list';
|
|
|
8
8
|
import Document from '@tiptap/extension-document';
|
|
9
9
|
import History from '@tiptap/extension-history';
|
|
10
10
|
import Italic from '@tiptap/extension-italic';
|
|
11
|
+
import Link from '@tiptap/extension-link';
|
|
11
12
|
import ListItem from '@tiptap/extension-list-item';
|
|
12
13
|
import OrderedList from '@tiptap/extension-ordered-list';
|
|
13
14
|
import Paragraph from '@tiptap/extension-paragraph';
|
|
@@ -18,6 +19,7 @@ import { styles } from './styles';
|
|
|
18
19
|
import { TipTapNodeName } from './types';
|
|
19
20
|
import { RichTextMarkdownParser } from '../models/markdown-parser';
|
|
20
21
|
import { RichTextMarkdownSerializer } from '../models/markdown-serializer';
|
|
22
|
+
import { anchorTag } from '../../anchor';
|
|
21
23
|
/**
|
|
22
24
|
* A nimble styled rich text editor
|
|
23
25
|
*/
|
|
@@ -230,6 +232,7 @@ export class RichTextEditor extends FoundationElement {
|
|
|
230
232
|
return editor;
|
|
231
233
|
}
|
|
232
234
|
createTiptapEditor() {
|
|
235
|
+
const customLink = this.getCustomLinkExtension();
|
|
233
236
|
/**
|
|
234
237
|
* For more information on the extensions for the supported formatting options, refer to the links below.
|
|
235
238
|
* Tiptap marks: https://tiptap.dev/api/marks
|
|
@@ -250,10 +253,55 @@ export class RichTextEditor extends FoundationElement {
|
|
|
250
253
|
Placeholder.configure({
|
|
251
254
|
placeholder: '',
|
|
252
255
|
showOnlyWhenEditable: false
|
|
256
|
+
}),
|
|
257
|
+
customLink.configure({
|
|
258
|
+
// HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap
|
|
259
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
260
|
+
HTMLAttributes: {
|
|
261
|
+
rel: 'noopener noreferrer',
|
|
262
|
+
target: null
|
|
263
|
+
},
|
|
264
|
+
autolink: true,
|
|
265
|
+
openOnClick: false,
|
|
266
|
+
// linkOnPaste can be enabled when hyperlink support added
|
|
267
|
+
// See: https://github.com/ni/nimble/issues/1527
|
|
268
|
+
linkOnPaste: false,
|
|
269
|
+
validate: href => /^https?:\/\//i.test(href)
|
|
253
270
|
})
|
|
254
271
|
]
|
|
255
272
|
});
|
|
256
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Extending the default link mark schema defined in the TipTap.
|
|
276
|
+
*
|
|
277
|
+
* "excludes": https://prosemirror.net/docs/ref/#model.MarkSpec.excludes
|
|
278
|
+
* "inclusive": https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive
|
|
279
|
+
* "parseHTML": https://tiptap.dev/guide/custom-extensions#parse-html
|
|
280
|
+
* "renderHTML": https://tiptap.dev/guide/custom-extensions/#render-html
|
|
281
|
+
*/
|
|
282
|
+
getCustomLinkExtension() {
|
|
283
|
+
return Link.extend({
|
|
284
|
+
// Excludes can be removed/enabled when hyperlink support added
|
|
285
|
+
// See: https://github.com/ni/nimble/issues/1527
|
|
286
|
+
excludes: '_',
|
|
287
|
+
// Inclusive can be updated when hyperlink support added
|
|
288
|
+
// See: https://github.com/ni/nimble/issues/1527
|
|
289
|
+
inclusive: false,
|
|
290
|
+
parseHTML() {
|
|
291
|
+
// To load the `nimble-anchor` from the HTML parsed content by markdown-parser as links in the
|
|
292
|
+
// Tiptap editor, the `parseHTML` of Link extension should return `anchorTag`. This is because the
|
|
293
|
+
// link mark schema in `markdown-parser.ts` file uses `<nimble-anchor>` as anchor tag and not `<a>`.
|
|
294
|
+
return [{ tag: anchorTag }];
|
|
295
|
+
},
|
|
296
|
+
// HTMLAttribute cannot be in camelCase as we want to match it with the name in Tiptap
|
|
297
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
298
|
+
renderHTML({ HTMLAttributes }) {
|
|
299
|
+
// The below 'a' tag should be replaced with 'nimble-anchor' once the below issue is fixed.
|
|
300
|
+
// https://github.com/ni/nimble/issues/1516
|
|
301
|
+
return ['a', HTMLAttributes];
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
}
|
|
257
305
|
/**
|
|
258
306
|
* This function takes the Fragment from parseMarkdownToDOM function and return the serialized string using XMLSerializer
|
|
259
307
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EACH,WAAW,EACX,6BAA6B,EAC7B,YAAY,EACZ,iBAAiB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACH,MAAM,EACN,cAAc,EACd,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text/editor/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
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, standardPadding } from '../../theme-provider/design-tokens';
|
|
3
|
+
import { bodyDisabledFontColor, bodyFont, bodyFontColor, borderHoverColor, borderRgbPartialColor, borderWidth, controlLabelFontColor, controlLabelDisabledFontColor, failColor, iconSize, smallDelay, standardPadding, linkFontColor } from '../../theme-provider/design-tokens';
|
|
4
4
|
import { styles as errorStyles } from '../../patterns/error/styles';
|
|
5
5
|
export const styles = css `
|
|
6
6
|
${display('inline-flex')}
|
|
@@ -169,6 +169,35 @@ export const styles = css `
|
|
|
169
169
|
color: ${controlLabelDisabledFontColor};
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
${
|
|
173
|
+
/**
|
|
174
|
+
* Custom anchor stylings can be removed once leveraging 'nimble-anchor' is supported.
|
|
175
|
+
* See: https://github.com/ni/nimble/issues/1516
|
|
176
|
+
*/ ''}
|
|
177
|
+
.ProseMirror a {
|
|
178
|
+
color: ${linkFontColor};
|
|
179
|
+
white-space: normal;
|
|
180
|
+
${
|
|
181
|
+
/**
|
|
182
|
+
* Setting 'pointer-events: none;' to restrict the user from opening a link using the right-click context menu: If the user manually edits
|
|
183
|
+
* the link's text content, the 'href' attribute of the anchor tag will not be updated. If they attempt to open it using
|
|
184
|
+
* the right-click context menu with 'Open in new tab/window,' it will still navigate to the link specified
|
|
185
|
+
* in the 'href' attribute, which may create unnecessary confusion while trying to open the link.
|
|
186
|
+
*
|
|
187
|
+
* Using pointer-events: none to disable link interactions can be removed when hyperlink support is added.
|
|
188
|
+
* see: https://github.com/ni/nimble/issues/1527
|
|
189
|
+
*/ ''}
|
|
190
|
+
pointer-events: none;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
:host([disabled]) .ProseMirror a {
|
|
194
|
+
color: ${bodyDisabledFontColor};
|
|
195
|
+
fill: currentcolor;
|
|
196
|
+
cursor: default;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
${ /** End of anchor styles */''}
|
|
200
|
+
|
|
172
201
|
.footer-section {
|
|
173
202
|
display: flex;
|
|
174
203
|
justify-content: space-between;
|
|
@@ -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,eAAe,
|
|
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,eAAe,EACf,aAAa,EAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,aAAa,CAAC;MACtB,WAAW;;;gBAGD,QAAQ;;iBAEP,aAAa;;;cAGhB,WAAW;;UAEf;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;;;;+BAIlC,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;;;MAGxB;AACE;;;;GAIG,CAAC,EACR;;;;;;;;;;;;oBAYgB,eAAe;;;CAGlC,CAAC"}
|
|
@@ -19,10 +19,12 @@ export declare class RichTextEditorPageObject {
|
|
|
19
19
|
spaceKeyActivatesButton(button: ToolbarButton): void;
|
|
20
20
|
enterKeyActivatesButton(button: ToolbarButton): void;
|
|
21
21
|
setEditorTextContent(value: string): Promise<void>;
|
|
22
|
+
getEditorLastChildAttribute(attribute: string): string;
|
|
22
23
|
getEditorFirstChildTagName(): string;
|
|
23
24
|
getEditorFirstChildTextContent(): string;
|
|
24
25
|
getEditorTagNames(): string[];
|
|
25
26
|
getEditorLeafContents(): string[];
|
|
27
|
+
getEditorTagNamesWithClosingTags(): string[];
|
|
26
28
|
getFormattingButtonTextContent(toolbarButton: ToolbarButton): string;
|
|
27
29
|
getFormattingButtonTitle(toolbarButton: ToolbarButton): string;
|
|
28
30
|
isRichTextEditorActiveElement(): boolean;
|
|
@@ -36,5 +38,6 @@ export declare class RichTextEditorPageObject {
|
|
|
36
38
|
private getFooter;
|
|
37
39
|
private getTiptapEditor;
|
|
38
40
|
private getFormattingButton;
|
|
41
|
+
private getEditorLastChildElement;
|
|
39
42
|
private getIconSlot;
|
|
40
43
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { keySpace, keyEnter, keyTab } from '@microsoft/fast-web-utilities';
|
|
2
2
|
import { waitForUpdatesAsync } from '../../../testing/async-helpers';
|
|
3
|
-
import { getTagsFromElement, getLeafContentsFromElement } from '../../models/testing/markdown-parser-utils';
|
|
3
|
+
import { getTagsFromElement, getLeafContentsFromElement, getLastChildElement, getLastChildElementAttribute } from '../../models/testing/markdown-parser-utils';
|
|
4
4
|
/**
|
|
5
5
|
* Page object for the `nimble-rich-text-editor` component.
|
|
6
6
|
*/
|
|
@@ -92,13 +92,13 @@ export class RichTextEditorPageObject {
|
|
|
92
92
|
toggleButton.control.dispatchEvent(event);
|
|
93
93
|
}
|
|
94
94
|
async setEditorTextContent(value) {
|
|
95
|
-
|
|
96
|
-
while (lastElement?.lastElementChild) {
|
|
97
|
-
lastElement = lastElement?.lastElementChild;
|
|
98
|
-
}
|
|
95
|
+
const lastElement = this.getEditorLastChildElement();
|
|
99
96
|
lastElement.parentElement.textContent = value;
|
|
100
97
|
await waitForUpdatesAsync();
|
|
101
98
|
}
|
|
99
|
+
getEditorLastChildAttribute(attribute) {
|
|
100
|
+
return getLastChildElementAttribute(attribute, this.getTiptapEditor());
|
|
101
|
+
}
|
|
102
102
|
getEditorFirstChildTagName() {
|
|
103
103
|
return this.getTiptapEditor()?.firstElementChild?.tagName ?? '';
|
|
104
104
|
}
|
|
@@ -111,6 +111,22 @@ export class RichTextEditorPageObject {
|
|
|
111
111
|
getEditorLeafContents() {
|
|
112
112
|
return getLeafContentsFromElement(this.getTiptapEditor());
|
|
113
113
|
}
|
|
114
|
+
getEditorTagNamesWithClosingTags() {
|
|
115
|
+
const tagNames = [];
|
|
116
|
+
const tiptapEditor = this.getTiptapEditor();
|
|
117
|
+
const processNode = (node) => {
|
|
118
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
119
|
+
const el = node;
|
|
120
|
+
tagNames.push(el.tagName);
|
|
121
|
+
el.childNodes.forEach(processNode);
|
|
122
|
+
tagNames.push(`/${el.tagName}`);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
if (tiptapEditor) {
|
|
126
|
+
processNode(tiptapEditor);
|
|
127
|
+
}
|
|
128
|
+
return tagNames.slice(1, -1);
|
|
129
|
+
}
|
|
114
130
|
getFormattingButtonTextContent(toolbarButton) {
|
|
115
131
|
const button = this.getFormattingButton(toolbarButton);
|
|
116
132
|
return button.textContent.trim();
|
|
@@ -170,6 +186,9 @@ export class RichTextEditorPageObject {
|
|
|
170
186
|
const buttons = this.richTextEditorElement.shadowRoot.querySelectorAll('nimble-toggle-button');
|
|
171
187
|
return buttons[button];
|
|
172
188
|
}
|
|
189
|
+
getEditorLastChildElement() {
|
|
190
|
+
return getLastChildElement(this.getTiptapEditor());
|
|
191
|
+
}
|
|
173
192
|
getIconSlot(button) {
|
|
174
193
|
const toggleButton = this.getFormattingButton(button);
|
|
175
194
|
return toggleButton?.shadowRoot?.querySelector('.start');
|
|
@@ -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;AAGrE,OAAO,EACH,kBAAkB,EAClB,0BAA0B,
|
|
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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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Provides markdown parser for rich text components
|
|
3
3
|
*/
|
|
4
4
|
export declare class RichTextMarkdownParser {
|
|
5
|
+
private static readonly updatedSchema;
|
|
5
6
|
private static readonly markdownParser;
|
|
6
7
|
private static readonly domSerializer;
|
|
7
8
|
/**
|
|
@@ -11,4 +12,5 @@ export declare class RichTextMarkdownParser {
|
|
|
11
12
|
*/
|
|
12
13
|
static parseMarkdownToDOM(value: string): HTMLElement | DocumentFragment;
|
|
13
14
|
private static initializeMarkdownParser;
|
|
15
|
+
private static getSchemaWithLinkConfiguration;
|
|
14
16
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
import { schema, defaultMarkdownParser, MarkdownParser } from 'prosemirror-markdown';
|
|
3
|
-
import { DOMSerializer } from 'prosemirror-model';
|
|
3
|
+
import { DOMSerializer, Schema } from 'prosemirror-model';
|
|
4
|
+
import { anchorTag } from '../../anchor';
|
|
4
5
|
/**
|
|
5
6
|
* Provides markdown parser for rich text components
|
|
6
7
|
*/
|
|
@@ -33,10 +34,51 @@ export class RichTextMarkdownParser {
|
|
|
33
34
|
'autolink',
|
|
34
35
|
'escape'
|
|
35
36
|
]);
|
|
36
|
-
|
|
37
|
+
supportedTokenizerRules.validateLink = href => /^https?:\/\//i.test(href);
|
|
38
|
+
/**
|
|
39
|
+
* In order to display encoded characters, non-ASCII characters, emojis, and other special characters in their original form,
|
|
40
|
+
* we bypass the default normalization of link text in markdown-it. This is done because we support only "AutoLink" feature in CommonMark flavor.
|
|
41
|
+
* "normalizeLinkText" method reference in markdown-it: https://github.com/markdown-it/markdown-it/blob/2b6cac25823af011ff3bc7628bc9b06e483c5a08/lib/index.js#L67C1-L86C2
|
|
42
|
+
*
|
|
43
|
+
* We can use the default normalization once hyperlink support is added.
|
|
44
|
+
* See: https://github.com/ni/nimble/issues/1527
|
|
45
|
+
*/
|
|
46
|
+
supportedTokenizerRules.normalizeLinkText = url => url;
|
|
47
|
+
return new MarkdownParser(this.updatedSchema, supportedTokenizerRules, defaultMarkdownParser.tokens);
|
|
48
|
+
}
|
|
49
|
+
static getSchemaWithLinkConfiguration() {
|
|
50
|
+
return new Schema({
|
|
51
|
+
nodes: schema.spec.nodes,
|
|
52
|
+
marks: {
|
|
53
|
+
link: {
|
|
54
|
+
attrs: {
|
|
55
|
+
href: {},
|
|
56
|
+
rel: { default: 'noopener noreferrer' }
|
|
57
|
+
},
|
|
58
|
+
// Inclusive can be updated when hyperlink support added
|
|
59
|
+
// See: https://github.com/ni/nimble/issues/1527
|
|
60
|
+
inclusive: false,
|
|
61
|
+
// Excludes can be removed/enabled when hyperlink support added
|
|
62
|
+
// See: https://github.com/ni/nimble/issues/1527
|
|
63
|
+
excludes: '_',
|
|
64
|
+
toDOM(node) {
|
|
65
|
+
return [
|
|
66
|
+
anchorTag,
|
|
67
|
+
{
|
|
68
|
+
href: node.attrs.href,
|
|
69
|
+
rel: node.attrs.rel
|
|
70
|
+
}
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
em: schema.spec.marks.get('em'),
|
|
75
|
+
strong: schema.spec.marks.get('strong')
|
|
76
|
+
}
|
|
77
|
+
});
|
|
37
78
|
}
|
|
38
79
|
}
|
|
39
80
|
_a = RichTextMarkdownParser;
|
|
81
|
+
RichTextMarkdownParser.updatedSchema = _a.getSchemaWithLinkConfiguration();
|
|
40
82
|
RichTextMarkdownParser.markdownParser = _a.initializeMarkdownParser();
|
|
41
|
-
RichTextMarkdownParser.domSerializer = DOMSerializer.fromSchema(
|
|
83
|
+
RichTextMarkdownParser.domSerializer = DOMSerializer.fromSchema(_a.updatedSchema);
|
|
42
84
|
//# sourceMappingURL=markdown-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../../../src/rich-text/models/markdown-parser.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,MAAM,EACN,qBAAqB,EACrB,cAAc,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../../../src/rich-text/models/markdown-parser.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,MAAM,EACN,qBAAqB,EACrB,cAAc,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAQ/B;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAC5B,KAAa;QAEb,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,qBAAqB,KAAK,IAAI,EAAE;YAChC,OAAO,QAAQ,CAAC,sBAAsB,EAAE,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CACvC,qBAAqB,CAAC,OAAO,CAChC,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,wBAAwB;QACnC;;;;;WAKG;QACH,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErF,uGAAuG;QACvG,oCAAoC;QACpC,MAAM,uBAAuB,GAAG,0BAA0B,CAAC,MAAM,CAAC;YAC9D,UAAU;YACV,MAAM;YACN,UAAU;YACV,QAAQ;SACX,CAAC,CAAC;QAEH,uBAAuB,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1E;;;;;;;WAOG;QACH,uBAAuB,CAAC,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;QAEvD,OAAO,IAAI,cAAc,CACrB,IAAI,CAAC,aAAa,EAClB,uBAAuB,EACvB,qBAAqB,CAAC,MAAM,CAC/B,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,8BAA8B;QACzC,OAAO,IAAI,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,KAAK,EAAE;gBACH,IAAI,EAAE;oBACF,KAAK,EAAE;wBACH,IAAI,EAAE,EAAE;wBACR,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE;qBAC1C;oBACD,wDAAwD;oBACxD,gDAAgD;oBAChD,SAAS,EAAE,KAAK;oBAChB,+DAA+D;oBAC/D,gDAAgD;oBAChD,QAAQ,EAAE,GAAG;oBACb,KAAK,CAAC,IAAI;wBACN,OAAO;4BACH,SAAS;4BACT;gCACI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAY;gCAC7B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAW;6BAC9B;yBACJ,CAAC;oBACN,CAAC;iBACJ;gBACD,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE;gBAChC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE;aAC3C;SACJ,CAAC,CAAC;IACP,CAAC;;;AA1FuB,oCAAa,GAAG,EAAI,CAAC,8BAA8B,EAAG,CAAA;AAEtD,qCAAc,GAAG,EAAI,CAAC,wBAAwB,EAAG,CAAA;AACjD,oCAAa,GAAG,aAAa,CAAC,UAAU,CAC5D,EAAI,CAAC,aAAa,CACpB,CAAA"}
|
|
@@ -39,7 +39,28 @@ export class RichTextMarkdownSerializer {
|
|
|
39
39
|
};
|
|
40
40
|
const marks = {
|
|
41
41
|
italic: defaultMarkdownSerializer.marks.em,
|
|
42
|
-
bold: defaultMarkdownSerializer.marks.strong
|
|
42
|
+
bold: defaultMarkdownSerializer.marks.strong,
|
|
43
|
+
/**
|
|
44
|
+
* When a user inserts an absolute link into the editor and then modifies it, the 'defaultMarkdownSerializer.marks.link' function
|
|
45
|
+
* will detect whether it should be serialized as an autolink (<url>) or a hyperlink ([text](url)) in Markdown format by
|
|
46
|
+
* comparing the link text with 'href'. Since our markdown-parser only supports the autolink format, we need to ensure that the
|
|
47
|
+
* serializer also only supports autolink. Unfortunately, prosemirror-markdown does not offer a built-in way to update the
|
|
48
|
+
* 'defaultMarkdownSerializer' for this purpose. Therefore, we had to create a modified implementation to enable support for
|
|
49
|
+
* only autolink in serialization. This modified implementation will just load the link text content in between '<>' angular brackets
|
|
50
|
+
* and ignores the 'href' part.
|
|
51
|
+
*
|
|
52
|
+
* Autolink markdown in CommonMark flavor: https://spec.commonmark.org/0.30/#autolinks
|
|
53
|
+
* ProseMirror model reference: https://github.com/ProseMirror/prosemirror-markdown/blob/c7210d0e55c82bfb0b2f7cba5dffe804575fafb3/src/to_markdown.ts#L3C1-L26C2
|
|
54
|
+
*
|
|
55
|
+
* The defaultMarkdownSerializer can be used once hyperlink support is added:
|
|
56
|
+
* See: https://github.com/ni/nimble/issues/1527
|
|
57
|
+
*/
|
|
58
|
+
link: {
|
|
59
|
+
open: '<',
|
|
60
|
+
close: '>',
|
|
61
|
+
escape: false,
|
|
62
|
+
expelEnclosingWhitespace: true
|
|
63
|
+
}
|
|
43
64
|
};
|
|
44
65
|
return new MarkdownSerializer(nodes, marks);
|
|
45
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-serializer.js","sourceRoot":"","sources":["../../../../src/rich-text/models/markdown-serializer.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,kBAAkB,EAClB,yBAAyB,EAE5B,MAAM,sBAAsB,CAAC;AAG9B;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAG5B,MAAM,CAAC,sBAAsB,CAAC,GAAS;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAEO,MAAM,CAAC,qCAAqC;QAChD;;;;;WAKG;QACH,MAAM,eAAe,GAAG,SAAS,WAAW,CACxC,KAA8B,EAC9B,IAAU;YAEV,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,KAAgB,IAAI,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YACxD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;gBAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/B,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF;;;;;WAKG;QACH,MAAM,KAAK,GAAG;YACV,UAAU,EAAE,yBAAyB,CAAC,KAAK,CAAC,WAAY;YACxD,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC,SAAU;YACpD,WAAW,EAAE,eAAe;YAC5B,GAAG,EAAE,yBAAyB,CAAC,KAAK,CAAC,GAAI;YACzC,SAAS,EAAE,yBAAyB,CAAC,KAAK,CAAC,SAAU;YACrD,IAAI,EAAE,yBAAyB,CAAC,KAAK,CAAC,IAAK;SAC9C,CAAC;QACF,MAAM,KAAK,GAAG;YACV,MAAM,EAAE,yBAAyB,CAAC,KAAK,CAAC,EAAG;YAC3C,IAAI,EAAE,yBAAyB,CAAC,KAAK,CAAC,MAAO;
|
|
1
|
+
{"version":3,"file":"markdown-serializer.js","sourceRoot":"","sources":["../../../../src/rich-text/models/markdown-serializer.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,kBAAkB,EAClB,yBAAyB,EAE5B,MAAM,sBAAsB,CAAC;AAG9B;;GAEG;AACH,MAAM,OAAO,0BAA0B;IAG5B,MAAM,CAAC,sBAAsB,CAAC,GAAS;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAEO,MAAM,CAAC,qCAAqC;QAChD;;;;;WAKG;QACH,MAAM,eAAe,GAAG,SAAS,WAAW,CACxC,KAA8B,EAC9B,IAAU;YAEV,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,KAAgB,IAAI,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YACxD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE;gBAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC/B,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF;;;;;WAKG;QACH,MAAM,KAAK,GAAG;YACV,UAAU,EAAE,yBAAyB,CAAC,KAAK,CAAC,WAAY;YACxD,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC,SAAU;YACpD,WAAW,EAAE,eAAe;YAC5B,GAAG,EAAE,yBAAyB,CAAC,KAAK,CAAC,GAAI;YACzC,SAAS,EAAE,yBAAyB,CAAC,KAAK,CAAC,SAAU;YACrD,IAAI,EAAE,yBAAyB,CAAC,KAAK,CAAC,IAAK;SAC9C,CAAC;QACF,MAAM,KAAK,GAAG;YACV,MAAM,EAAE,yBAAyB,CAAC,KAAK,CAAC,EAAG;YAC3C,IAAI,EAAE,yBAAyB,CAAC,KAAK,CAAC,MAAO;YAC7C;;;;;;;;;;;;;;eAcG;YACH,IAAI,EAAE;gBACF,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,KAAK;gBACb,wBAAwB,EAAE,IAAI;aACjC;SACJ,CAAC;QACF,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;;;AAlEuB,6CAAkB,GAAG,EAAI,CAAC,qCAAqC,EAAG,CAAA"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export declare const getTagsFromElement: (doc: DocumentFragment | HTMLElement) => string[];
|
|
2
2
|
export declare const getLeafContentsFromElement: (doc: DocumentFragment | HTMLElement) => string[];
|
|
3
|
+
export declare const getLastChildElementAttribute: (attribute: string, doc: DocumentFragment | HTMLElement) => string;
|
|
4
|
+
export declare function getLastChildElement(doc: DocumentFragment | HTMLElement): Element | null | undefined;
|
|
@@ -10,4 +10,14 @@ export const getLeafContentsFromElement = (doc) => {
|
|
|
10
10
|
.map(el => el.textContent || '');
|
|
11
11
|
return nodes;
|
|
12
12
|
};
|
|
13
|
+
export const getLastChildElementAttribute = (attribute, doc) => {
|
|
14
|
+
return getLastChildElement(doc)?.getAttribute(attribute) ?? '';
|
|
15
|
+
};
|
|
16
|
+
export function getLastChildElement(doc) {
|
|
17
|
+
let lastElement = doc.lastElementChild;
|
|
18
|
+
while (lastElement?.lastElementChild) {
|
|
19
|
+
lastElement = lastElement.lastElementChild;
|
|
20
|
+
}
|
|
21
|
+
return lastElement;
|
|
22
|
+
}
|
|
13
23
|
//# sourceMappingURL=markdown-parser-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-parser-utils.js","sourceRoot":"","sources":["../../../../../src/rich-text/models/testing/markdown-parser-utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,GAAmC,EAC3B,EAAE;IACV,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,GAAmC,EAC3B,EAAE;IACV,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;SACD,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"markdown-parser-utils.js","sourceRoot":"","sources":["../../../../../src/rich-text/models/testing/markdown-parser-utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,GAAmC,EAC3B,EAAE;IACV,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACtC,GAAmC,EAC3B,EAAE;IACV,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACd,OAAO,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC;SACD,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACrC,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CACxC,SAAiB,EACjB,GAAmC,EAC7B,EAAE;IACR,OAAO,mBAAmB,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAC/B,GAAmC;IAEnC,IAAI,WAAW,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAEvC,OAAO,WAAW,EAAE,gBAAgB,EAAE;QAClC,WAAW,GAAG,WAAW,CAAC,gBAAgB,CAAC;KAC9C;IACD,OAAO,WAAW,CAAC;AACvB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { css } from '@microsoft/fast-element';
|
|
2
2
|
import { display } from '@microsoft/fast-foundation';
|
|
3
|
-
import { bodyFont, bodyFontColor
|
|
3
|
+
import { bodyFont, bodyFontColor } from '../../theme-provider/design-tokens';
|
|
4
4
|
export const styles = css `
|
|
5
5
|
${display('flex')}
|
|
6
6
|
|
|
@@ -39,14 +39,5 @@ export const styles = css `
|
|
|
39
39
|
li > p:empty {
|
|
40
40
|
display: none;
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
a {
|
|
44
|
-
word-break: break-all;
|
|
45
|
-
color: ${linkFontColor};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
a:active {
|
|
49
|
-
color: ${linkActiveFontColor};
|
|
50
|
-
}
|
|
51
42
|
`;
|
|
52
43
|
//# sourceMappingURL=styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/viewer/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/viewer/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,MAAM,CAAC;;;gBAGL,QAAQ;;iBAEP,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2BxB;AACE,gLAAgL,CAAC,EACrL;;;;CAIH,CAAC"}
|
|
@@ -163,6 +163,15 @@ export declare class RichTextEditor extends FoundationElement implements ErrorPa
|
|
|
163
163
|
stopEventPropagation(event: Event): boolean;
|
|
164
164
|
private createEditor;
|
|
165
165
|
private createTiptapEditor;
|
|
166
|
+
/**
|
|
167
|
+
* Extending the default link mark schema defined in the TipTap.
|
|
168
|
+
*
|
|
169
|
+
* "excludes": https://prosemirror.net/docs/ref/#model.MarkSpec.excludes
|
|
170
|
+
* "inclusive": https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive
|
|
171
|
+
* "parseHTML": https://tiptap.dev/guide/custom-extensions#parse-html
|
|
172
|
+
* "renderHTML": https://tiptap.dev/guide/custom-extensions/#render-html
|
|
173
|
+
*/
|
|
174
|
+
private getCustomLinkExtension;
|
|
166
175
|
/**
|
|
167
176
|
* This function takes the Fragment from parseMarkdownToDOM function and return the serialized string using XMLSerializer
|
|
168
177
|
*/
|
|
@@ -19,10 +19,12 @@ export declare class RichTextEditorPageObject {
|
|
|
19
19
|
spaceKeyActivatesButton(button: ToolbarButton): void;
|
|
20
20
|
enterKeyActivatesButton(button: ToolbarButton): void;
|
|
21
21
|
setEditorTextContent(value: string): Promise<void>;
|
|
22
|
+
getEditorLastChildAttribute(attribute: string): string;
|
|
22
23
|
getEditorFirstChildTagName(): string;
|
|
23
24
|
getEditorFirstChildTextContent(): string;
|
|
24
25
|
getEditorTagNames(): string[];
|
|
25
26
|
getEditorLeafContents(): string[];
|
|
27
|
+
getEditorTagNamesWithClosingTags(): string[];
|
|
26
28
|
getFormattingButtonTextContent(toolbarButton: ToolbarButton): string;
|
|
27
29
|
getFormattingButtonTitle(toolbarButton: ToolbarButton): string;
|
|
28
30
|
isRichTextEditorActiveElement(): boolean;
|
|
@@ -36,5 +38,6 @@ export declare class RichTextEditorPageObject {
|
|
|
36
38
|
private getFooter;
|
|
37
39
|
private getTiptapEditor;
|
|
38
40
|
private getFormattingButton;
|
|
41
|
+
private getEditorLastChildElement;
|
|
39
42
|
private getIconSlot;
|
|
40
43
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Provides markdown parser for rich text components
|
|
3
3
|
*/
|
|
4
4
|
export declare class RichTextMarkdownParser {
|
|
5
|
+
private static readonly updatedSchema;
|
|
5
6
|
private static readonly markdownParser;
|
|
6
7
|
private static readonly domSerializer;
|
|
7
8
|
/**
|
|
@@ -11,4 +12,5 @@ export declare class RichTextMarkdownParser {
|
|
|
11
12
|
*/
|
|
12
13
|
static parseMarkdownToDOM(value: string): HTMLElement | DocumentFragment;
|
|
13
14
|
private static initializeMarkdownParser;
|
|
15
|
+
private static getSchemaWithLinkConfiguration;
|
|
14
16
|
}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export declare const getTagsFromElement: (doc: DocumentFragment | HTMLElement) => string[];
|
|
2
2
|
export declare const getLeafContentsFromElement: (doc: DocumentFragment | HTMLElement) => string[];
|
|
3
|
+
export declare const getLastChildElementAttribute: (attribute: string, doc: DocumentFragment | HTMLElement) => string;
|
|
4
|
+
export declare function getLastChildElement(doc: DocumentFragment | HTMLElement): Element | null | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ni/nimble-components",
|
|
3
|
-
"version": "20.2.
|
|
3
|
+
"version": "20.2.15",
|
|
4
4
|
"description": "Styled web components for the NI Nimble Design System",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build": "npm run generate-icons && npm run build-components && npm run bundle-components && npm run generate-scss && npm run build-storybook",
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"@tiptap/extension-document": "^2.1.6",
|
|
71
71
|
"@tiptap/extension-history": "^2.1.6",
|
|
72
72
|
"@tiptap/extension-italic": "^2.1.6",
|
|
73
|
+
"@tiptap/extension-link": "^2.1.6",
|
|
73
74
|
"@tiptap/extension-list-item": "^2.1.6",
|
|
74
75
|
"@tiptap/extension-ordered-list": "^2.1.6",
|
|
75
76
|
"@tiptap/extension-paragraph": "^2.1.6",
|