@ni/nimble-components 20.16.2 → 20.16.3
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 +767 -225
- package/dist/all-components-bundle.js.map +1 -1
- package/dist/all-components-bundle.min.js +3413 -3283
- package/dist/all-components-bundle.min.js.map +1 -1
- package/dist/esm/rich-text/base/index.d.ts +1 -4
- package/dist/esm/rich-text/base/index.js +2 -2
- package/dist/esm/rich-text/base/index.js.map +1 -1
- package/dist/esm/rich-text/editor/index.d.ts +50 -0
- package/dist/esm/rich-text/editor/index.js +110 -8
- package/dist/esm/rich-text/editor/index.js.map +1 -1
- package/dist/esm/rich-text/editor/models/create-tiptap-editor.d.ts +3 -1
- package/dist/esm/rich-text/editor/models/create-tiptap-editor.js +45 -6
- package/dist/esm/rich-text/editor/models/create-tiptap-editor.js.map +1 -1
- package/dist/esm/rich-text/editor/template.js +29 -2
- package/dist/esm/rich-text/editor/template.js.map +1 -1
- package/dist/esm/rich-text/editor/testing/rich-text-editor-utils.d.ts +6 -0
- package/dist/esm/rich-text/editor/testing/rich-text-editor-utils.js +52 -0
- package/dist/esm/rich-text/editor/testing/rich-text-editor-utils.js.map +1 -0
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.d.ts +20 -3
- package/dist/esm/rich-text/editor/testing/rich-text-editor.pageobject.js +117 -10
- 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 +7 -0
- package/dist/esm/rich-text/editor/testing/types.js +7 -0
- package/dist/esm/rich-text/editor/testing/types.js.map +1 -1
- package/dist/esm/rich-text/editor/types.d.ts +13 -0
- package/dist/esm/rich-text/editor/types.js.map +1 -1
- package/dist/esm/rich-text/mention-listbox/index.d.ts +116 -0
- package/dist/esm/rich-text/mention-listbox/index.js +234 -0
- package/dist/esm/rich-text/mention-listbox/index.js.map +1 -0
- package/dist/esm/rich-text/mention-listbox/styles.d.ts +1 -0
- package/dist/esm/rich-text/mention-listbox/styles.js +22 -0
- package/dist/esm/rich-text/mention-listbox/styles.js.map +1 -0
- package/dist/esm/rich-text/mention-listbox/template.d.ts +2 -0
- package/dist/esm/rich-text/mention-listbox/template.js +33 -0
- package/dist/esm/rich-text/mention-listbox/template.js.map +1 -0
- package/dist/esm/rich-text/mention-listbox/types.d.ts +7 -0
- package/dist/esm/rich-text/mention-listbox/types.js +2 -0
- package/dist/esm/rich-text/mention-listbox/types.js.map +1 -0
- package/dist/esm/rich-text/models/markdown-parser.js +10 -2
- package/dist/esm/rich-text/models/markdown-parser.js.map +1 -1
- package/dist/esm/rich-text/models/mention-extension-configuration.d.ts +6 -1
- package/dist/esm/rich-text/models/mention-extension-configuration.js +6 -0
- package/dist/esm/rich-text/models/mention-extension-configuration.js.map +1 -1
- package/dist/esm/rich-text-mention/base/index.d.ts +6 -0
- package/dist/esm/rich-text-mention/base/index.js +9 -1
- package/dist/esm/rich-text-mention/base/index.js.map +1 -1
- package/dist/esm/rich-text-mention/base/models/mention-internals.d.ts +7 -2
- package/dist/esm/rich-text-mention/base/models/mention-internals.js +5 -2
- package/dist/esm/rich-text-mention/base/models/mention-internals.js.map +1 -1
- package/dist/esm/rich-text-mention/users/index.d.ts +1 -0
- package/dist/esm/rich-text-mention/users/index.js +3 -0
- package/dist/esm/rich-text-mention/users/index.js.map +1 -1
- package/dist/esm/rich-text-mention/users/view/styles.js +5 -1
- package/dist/esm/rich-text-mention/users/view/styles.js.map +1 -1
- package/dist/esm/utilities/models/string-normalizers.d.ts +5 -0
- package/dist/esm/utilities/models/string-normalizers.js +13 -0
- package/dist/esm/utilities/models/string-normalizers.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Observable, observable } from '@microsoft/fast-element';
|
|
3
|
+
import { DesignSystem, ListboxElement as FoundationListbox } from '@microsoft/fast-foundation';
|
|
4
|
+
import { keyEnter, keyEscape, keyTab } from '@microsoft/fast-web-utilities';
|
|
5
|
+
import { styles } from './styles';
|
|
6
|
+
import { template } from './template';
|
|
7
|
+
import { diacriticInsensitiveStringNormalizer } from '../../utilities/models/string-normalizers';
|
|
8
|
+
/**
|
|
9
|
+
* A rich text mention listbox which acts as a popup for "@mention" support in editor
|
|
10
|
+
*/
|
|
11
|
+
export class RichTextMentionListbox extends FoundationListbox {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
this.filter = '';
|
|
18
|
+
/**
|
|
19
|
+
* The collection of currently filtered options.
|
|
20
|
+
* The approach is defined based on the `Combobox.filteredOptions` implementation.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
this.filteredOptions = [];
|
|
25
|
+
this.anchorElementIntersectionObserver = new IntersectionObserver(entries => {
|
|
26
|
+
if (!entries[0]?.isIntersecting) {
|
|
27
|
+
this.setOpen(false);
|
|
28
|
+
}
|
|
29
|
+
}, { threshold: 1.0, root: document });
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
close() {
|
|
35
|
+
this.setOpen(false);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The list of options.
|
|
39
|
+
*
|
|
40
|
+
* @public
|
|
41
|
+
* @remarks
|
|
42
|
+
* Overrides `Listbox.options`.
|
|
43
|
+
*/
|
|
44
|
+
get options() {
|
|
45
|
+
Observable.track(this, 'options');
|
|
46
|
+
return this.filteredOptions?.length ? this.filteredOptions : [];
|
|
47
|
+
}
|
|
48
|
+
set options(value) {
|
|
49
|
+
this._options = value;
|
|
50
|
+
Observable.notify(this, 'options');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Triggers when the mention plugin is activated upon pressing the `key`
|
|
54
|
+
*
|
|
55
|
+
* @public
|
|
56
|
+
*/
|
|
57
|
+
show(options) {
|
|
58
|
+
this.filter = options.filter;
|
|
59
|
+
this.anchorElement = options.anchorNode;
|
|
60
|
+
this.setOpen(true);
|
|
61
|
+
this.filterOptions();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Handle keydown actions for listbox navigation and selection.
|
|
65
|
+
*
|
|
66
|
+
* @param e - the keyboard event
|
|
67
|
+
* @public
|
|
68
|
+
*/
|
|
69
|
+
keydownHandler(event) {
|
|
70
|
+
if (!this.open) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
switch (event.key) {
|
|
74
|
+
case keyTab:
|
|
75
|
+
case keyEnter: {
|
|
76
|
+
if (!this.hasSelectableOptions) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const mentionDetail = {
|
|
80
|
+
href: this.firstSelectedOption.value,
|
|
81
|
+
displayName: this.firstSelectedOption.text
|
|
82
|
+
};
|
|
83
|
+
this.emitMentionSelected(mentionDetail);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
case keyEscape: {
|
|
87
|
+
this.setOpen(false);
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
default: {
|
|
91
|
+
super.keydownHandler(event);
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Filter available options by filter value.
|
|
98
|
+
* The method is defined based on the `Combobox.filterOptions` and `Combobox.inputHandler` implementation.
|
|
99
|
+
*
|
|
100
|
+
* @internal
|
|
101
|
+
*/
|
|
102
|
+
filterOptions() {
|
|
103
|
+
if (!this.filter) {
|
|
104
|
+
this.filteredOptions = this._options;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
const normalizedFilter = diacriticInsensitiveStringNormalizer(this.filter);
|
|
108
|
+
this.filteredOptions = this._options.filter(o => diacriticInsensitiveStringNormalizer(o.text).includes(normalizedFilter));
|
|
109
|
+
}
|
|
110
|
+
this._options.forEach(o => {
|
|
111
|
+
o.hidden = !this.filteredOptions.includes(o);
|
|
112
|
+
});
|
|
113
|
+
if (this.filteredOptions.length) {
|
|
114
|
+
this.selectedOptions = [this.filteredOptions[0]];
|
|
115
|
+
this.selectedIndex = this.options.indexOf(this.firstSelectedOption);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
this.selectedOptions = [];
|
|
119
|
+
this.selectedIndex = -1;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Synchronize the form-associated proxy and update the value property of the element.
|
|
124
|
+
*
|
|
125
|
+
* @param prev - the previous collection of slotted option elements
|
|
126
|
+
* @param next - the next collection of slotted option elements
|
|
127
|
+
*
|
|
128
|
+
* @internal
|
|
129
|
+
*/
|
|
130
|
+
slottedOptionsChanged(prev, next) {
|
|
131
|
+
super.slottedOptionsChanged(prev, next);
|
|
132
|
+
this.filterOptions();
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Triggers the `suggestionProps` command to notify the tiptap editor to select the option.
|
|
136
|
+
* The method is defined based on the `Listbox.clickHandler` implementation.
|
|
137
|
+
*
|
|
138
|
+
* @internal
|
|
139
|
+
*/
|
|
140
|
+
clickHandler(e) {
|
|
141
|
+
const capturedElement = e.target.closest('option,[role=option]');
|
|
142
|
+
const capturedListOption = capturedElement;
|
|
143
|
+
if (!capturedListOption || capturedListOption.disabled) {
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
const mentionDetail = {
|
|
147
|
+
href: capturedListOption.value,
|
|
148
|
+
displayName: capturedListOption.text
|
|
149
|
+
};
|
|
150
|
+
this.emitMentionSelected(mentionDetail);
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Observes the anchor element using intersection observer.
|
|
155
|
+
* Once the anchor element intersects, the anchor region will be closed.
|
|
156
|
+
*
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
anchorElementChanged(prev, next) {
|
|
160
|
+
if (prev) {
|
|
161
|
+
this.anchorElementIntersectionObserver.unobserve(prev);
|
|
162
|
+
}
|
|
163
|
+
if (this.region && this.anchorElement) {
|
|
164
|
+
this.region.anchorElement = this.anchorElement;
|
|
165
|
+
this.region.update();
|
|
166
|
+
this.anchorElementIntersectionObserver.observe(next);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Observes the anchor region.
|
|
171
|
+
*
|
|
172
|
+
* @internal
|
|
173
|
+
*/
|
|
174
|
+
regionChanged() {
|
|
175
|
+
if (this.regionNotifier) {
|
|
176
|
+
this.regionNotifier.unsubscribe(this);
|
|
177
|
+
}
|
|
178
|
+
this.regionNotifier = Observable.getNotifier(this.region);
|
|
179
|
+
this.regionNotifier.subscribe(this);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Handles the events of the anchored region.
|
|
183
|
+
* Repositions the listbox scroll bar when the `initialLayoutComplete` event is triggered.
|
|
184
|
+
* Other events will be passed to the base class.
|
|
185
|
+
*
|
|
186
|
+
* @internal
|
|
187
|
+
*/
|
|
188
|
+
handleChange(source, args) {
|
|
189
|
+
super.handleChange(source, args);
|
|
190
|
+
if (args === 'initialLayoutComplete') {
|
|
191
|
+
this.focusAndScrollOptionIntoView();
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Focus the control and scroll the first selected option into view.
|
|
196
|
+
*
|
|
197
|
+
* @internal
|
|
198
|
+
* @remarks
|
|
199
|
+
* Overrides: `Listbox.focusAndScrollOptionIntoView`
|
|
200
|
+
*/
|
|
201
|
+
focusAndScrollOptionIntoView() {
|
|
202
|
+
if (this.firstSelectedOption) {
|
|
203
|
+
requestAnimationFrame(() => {
|
|
204
|
+
this.firstSelectedOption?.scrollIntoView({ block: 'nearest' });
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
emitMentionSelected(mentionDetail) {
|
|
209
|
+
this.$emit('mention-selected', mentionDetail);
|
|
210
|
+
this.setOpen(false);
|
|
211
|
+
}
|
|
212
|
+
setOpen(value) {
|
|
213
|
+
this.open = value;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
__decorate([
|
|
217
|
+
observable
|
|
218
|
+
], RichTextMentionListbox.prototype, "open", void 0);
|
|
219
|
+
__decorate([
|
|
220
|
+
observable
|
|
221
|
+
], RichTextMentionListbox.prototype, "region", void 0);
|
|
222
|
+
__decorate([
|
|
223
|
+
observable
|
|
224
|
+
], RichTextMentionListbox.prototype, "anchorElement", void 0);
|
|
225
|
+
const nimbleRichTextMentionListbox = RichTextMentionListbox.compose({
|
|
226
|
+
baseName: 'rich-text-mention-listbox',
|
|
227
|
+
template,
|
|
228
|
+
styles
|
|
229
|
+
});
|
|
230
|
+
DesignSystem.getOrCreate()
|
|
231
|
+
.withPrefix('nimble')
|
|
232
|
+
.register(nimbleRichTextMentionListbox());
|
|
233
|
+
export const richTextMentionListboxTag = DesignSystem.tagFor(RichTextMentionListbox);
|
|
234
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("@microsoft/fast-element").ElementStyles;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { css } from '@microsoft/fast-element';
|
|
2
|
+
import { styles as dropdownStyles } from '../../patterns/dropdown/styles';
|
|
3
|
+
import { focusVisible } from '../../utilities/style/focus';
|
|
4
|
+
import { controlHeight, menuMinWidth } from '../../theme-provider/design-tokens';
|
|
5
|
+
export const styles = css `
|
|
6
|
+
${dropdownStyles}
|
|
7
|
+
|
|
8
|
+
:host {
|
|
9
|
+
height: auto;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
:host(:hover)::after,
|
|
13
|
+
:host(${focusVisible})::after {
|
|
14
|
+
width: auto;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.listbox {
|
|
18
|
+
min-width: ${menuMinWidth};
|
|
19
|
+
max-height: calc(5.5 * ${controlHeight});
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACH,aAAa,EACb,YAAY,EACf,MAAM,oCAAoC,CAAC;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,cAAc;;;;;;;YAOR,YAAY;;;;;qBAKH,YAAY;iCACA,aAAa;;CAE7C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { html, ref, slotted } from '@microsoft/fast-element';
|
|
2
|
+
import { Listbox } from '../../listbox';
|
|
3
|
+
import { anchoredRegionTag } from '../../anchored-region';
|
|
4
|
+
// prettier-ignore
|
|
5
|
+
export const template = html `
|
|
6
|
+
<template>
|
|
7
|
+
<${anchoredRegionTag}
|
|
8
|
+
${ref('region')}
|
|
9
|
+
class="anchored-region"
|
|
10
|
+
fixed-placement
|
|
11
|
+
auto-update-mode="auto"
|
|
12
|
+
vertical-default-position="bottom"
|
|
13
|
+
vertical-positioning-mode="locktodefault"
|
|
14
|
+
horizontal-default-position="center"
|
|
15
|
+
horizontal-positioning-mode="locktodefault"
|
|
16
|
+
horizontal-scaling="anchor"
|
|
17
|
+
?hidden="${x => !x.open}">
|
|
18
|
+
<div
|
|
19
|
+
class="listbox"
|
|
20
|
+
part="listbox"
|
|
21
|
+
role="listbox"
|
|
22
|
+
@click="${(x, c) => x.clickHandler(c.event)}"
|
|
23
|
+
?disabled="${x => x.disabled}"
|
|
24
|
+
>
|
|
25
|
+
<slot
|
|
26
|
+
${slotted({ filter: (n) => n instanceof HTMLElement && Listbox.slottedOptionFilter(n), flatten: true, property: 'slottedOptions' })}
|
|
27
|
+
>
|
|
28
|
+
</slot>
|
|
29
|
+
</div>
|
|
30
|
+
</${anchoredRegionTag}>
|
|
31
|
+
</template>
|
|
32
|
+
`;
|
|
33
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,kBAAkB;AAClB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAwB;;WAEzC,iBAAiB;cACd,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;uBASJ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;;;;;0BAKT,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAmB,CAAC;6BAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;;;sBAGtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,YAAY,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;;;;gBAI7I,iBAAiB;;CAEhC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/rich-text/mention-listbox/types.ts"],"names":[],"mappings":""}
|
|
@@ -65,7 +65,11 @@ export class RichTextMarkdownParser {
|
|
|
65
65
|
link: {
|
|
66
66
|
attrs: {
|
|
67
67
|
href: {},
|
|
68
|
-
rel: { default: 'noopener noreferrer' }
|
|
68
|
+
rel: { default: 'noopener noreferrer' },
|
|
69
|
+
// Adding `class` here is a workaround to render two mentions without a whitespace as display names
|
|
70
|
+
// This attribute can be removed when the below issue is resolved
|
|
71
|
+
// https://github.com/ni/nimble/issues/1707
|
|
72
|
+
class: { default: '' }
|
|
69
73
|
},
|
|
70
74
|
// Inclusive can be updated when hyperlink support added
|
|
71
75
|
// See: https://github.com/ni/nimble/issues/1527
|
|
@@ -99,7 +103,11 @@ export class RichTextMarkdownParser {
|
|
|
99
103
|
* With this, the user can click the links only when the scheme is HTTP/HTTPS
|
|
100
104
|
*/
|
|
101
105
|
href: /^https?:\/\//i.test(href) ? href : null,
|
|
102
|
-
rel: node.attrs.rel
|
|
106
|
+
rel: node.attrs.rel,
|
|
107
|
+
// Adding `class` here is a workaround to render two mentions without a whitespace as display names
|
|
108
|
+
// This attribute can be removed when the below issue is resolved
|
|
109
|
+
// https://github.com/ni/nimble/issues/1707
|
|
110
|
+
class: href
|
|
103
111
|
}
|
|
104
112
|
];
|
|
105
113
|
}
|
|
@@ -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,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQzC;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAgB/B;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAC5B,KAAa,EACb,2BAAkE;QAElE,IAAI;YACA,sBAAsB,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC1D,MAAM,qBAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,qBAAqB,KAAK,IAAI,EAAE;gBAChC,OAAO;oBACH,QAAQ,EAAE,QAAQ,CAAC,sBAAsB,EAAE;oBAC3C,cAAc,EAAE,KAAK,CAAC,IAAI,CACtB,sBAAsB,CAAC,cAAc,CACxC;iBACJ,CAAC;aACL;YACD,OAAO;gBACH,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAC1C,qBAAqB,CAAC,OAAO,CAChC;gBACD,cAAc,EAAE,KAAK,CAAC,IAAI,CACtB,sBAAsB,CAAC,cAAc,CACxC;aACJ,CAAC;SACL;gBAAS;YACN,sBAAsB,CAAC,OAAO,EAAE,CAAC;SACpC;IACL,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,QAAQ;YACR,UAAU;YACV,SAAS;SACZ,CAAC,CAAC;QAEH;;;;;;;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,4BAA4B;QACvC,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;
|
|
1
|
+
{"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../../../src/rich-text/models/markdown-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
+
import type { ViewTemplate } from '@microsoft/fast-element';
|
|
1
2
|
import type { MentionInternals } from '../../rich-text-mention/base/models/mention-internals';
|
|
2
|
-
import type { MentionUpdateEmitter } from '../../rich-text-mention/base/types';
|
|
3
|
+
import type { MappingConfigs, MentionUpdateEmitter } from '../../rich-text-mention/base/types';
|
|
3
4
|
/**
|
|
4
5
|
* A configuration object for a Mention extension, to be used by the editor for loading mention plugins in tiptap.
|
|
5
6
|
* This object maintains the necessary internal values for loading mention extension.
|
|
6
7
|
*/
|
|
7
8
|
export declare class MentionExtensionConfiguration {
|
|
8
9
|
private static instance;
|
|
10
|
+
readonly iconTemplate: ViewTemplate;
|
|
9
11
|
readonly viewElement: string;
|
|
10
12
|
readonly character: string;
|
|
11
13
|
readonly name: string;
|
|
12
14
|
readonly key: string;
|
|
15
|
+
readonly mappingConfigs?: MappingConfigs;
|
|
16
|
+
readonly buttonLabel: string;
|
|
13
17
|
readonly mentionUpdateEmitter: MentionUpdateEmitter;
|
|
14
18
|
constructor(mentionInternals: MentionInternals);
|
|
19
|
+
static isObservedMentionInternalsProperty(arg: unknown): boolean;
|
|
15
20
|
}
|
|
@@ -11,8 +11,14 @@ export class MentionExtensionConfiguration {
|
|
|
11
11
|
this.key = key;
|
|
12
12
|
this.viewElement = mentionInternals.viewElement;
|
|
13
13
|
this.character = mentionInternals.character;
|
|
14
|
+
this.mappingConfigs = mentionInternals.mappingConfigs;
|
|
15
|
+
this.iconTemplate = mentionInternals.iconTemplate;
|
|
16
|
+
this.buttonLabel = mentionInternals.buttonLabel ?? '';
|
|
14
17
|
this.mentionUpdateEmitter = mentionInternals.mentionUpdateEmitter;
|
|
15
18
|
}
|
|
19
|
+
static isObservedMentionInternalsProperty(arg) {
|
|
20
|
+
return typeof arg === 'string' && ['buttonLabel'].includes(arg);
|
|
21
|
+
}
|
|
16
22
|
}
|
|
17
23
|
MentionExtensionConfiguration.instance = 0;
|
|
18
24
|
//# sourceMappingURL=mention-extension-configuration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mention-extension-configuration.js","sourceRoot":"","sources":["../../../../src/rich-text/models/mention-extension-configuration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"mention-extension-configuration.js","sourceRoot":"","sources":["../../../../src/rich-text/models/mention-extension-configuration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAMtD;;;GAGG;AACH,MAAM,OAAO,6BAA6B;IAWtC,YAAmB,gBAAkC;QACjD,6BAA6B,CAAC,QAAQ,IAAI,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,GAAG,mBAAmB,GAAG,6BAA6B,CAAC,QAAQ,EAAE,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,cAAc,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,WAAW,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IACtE,CAAC;IAEM,MAAM,CAAC,kCAAkC,CAAC,GAAY;QACzD,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;;AAzBc,sCAAQ,GAAG,CAAC,CAAC"}
|
|
@@ -18,6 +18,10 @@ export declare abstract class RichTextMention<TValidator extends RichTextMention
|
|
|
18
18
|
* A regex used to extract user ID from user key (url) while parsing and serializing a markdown.
|
|
19
19
|
*/
|
|
20
20
|
pattern?: string;
|
|
21
|
+
/**
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
buttonLabel?: string;
|
|
21
25
|
/** @internal */
|
|
22
26
|
mappingNotifiers: Notifier[];
|
|
23
27
|
/** @internal */
|
|
@@ -39,12 +43,14 @@ export declare abstract class RichTextMention<TValidator extends RichTextMention
|
|
|
39
43
|
*/
|
|
40
44
|
handleChange(source: unknown, args: unknown): void;
|
|
41
45
|
protected abstract createValidator(): TValidator;
|
|
46
|
+
protected abstract getObservedMappingProperty(): string[];
|
|
42
47
|
protected abstract getMentionInternalsOptions(): MentionInternalsOptions;
|
|
43
48
|
protected abstract createMappingConfig(mapping: Mapping<unknown>): MappingConfig;
|
|
44
49
|
private getMappingConfigs;
|
|
45
50
|
private updateMappingConfigs;
|
|
46
51
|
private mappingElementsChanged;
|
|
47
52
|
private patternChanged;
|
|
53
|
+
private buttonLabelChanged;
|
|
48
54
|
private removeMappingElementObservers;
|
|
49
55
|
private observeMappingElements;
|
|
50
56
|
}
|
|
@@ -47,7 +47,9 @@ export class RichTextMention extends FoundationElement {
|
|
|
47
47
|
* @internal
|
|
48
48
|
*/
|
|
49
49
|
handleChange(source, args) {
|
|
50
|
-
if (source instanceof Mapping
|
|
50
|
+
if (source instanceof Mapping
|
|
51
|
+
&& typeof args === 'string'
|
|
52
|
+
&& this.getObservedMappingProperty().includes(args)) {
|
|
51
53
|
this.updateMappingConfigs();
|
|
52
54
|
}
|
|
53
55
|
}
|
|
@@ -77,6 +79,9 @@ export class RichTextMention extends FoundationElement {
|
|
|
77
79
|
this.validator.validate(this.mappingElements, this.pattern);
|
|
78
80
|
this.mentionInternals.pattern = this.pattern;
|
|
79
81
|
}
|
|
82
|
+
buttonLabelChanged() {
|
|
83
|
+
this.mentionInternals.buttonLabel = this.buttonLabel;
|
|
84
|
+
}
|
|
80
85
|
removeMappingElementObservers() {
|
|
81
86
|
this.mappingNotifiers.forEach(notifier => {
|
|
82
87
|
notifier.unsubscribe(this);
|
|
@@ -95,6 +100,9 @@ export class RichTextMention extends FoundationElement {
|
|
|
95
100
|
__decorate([
|
|
96
101
|
attr
|
|
97
102
|
], RichTextMention.prototype, "pattern", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
attr({ attribute: 'button-label' })
|
|
105
|
+
], RichTextMention.prototype, "buttonLabel", void 0);
|
|
98
106
|
__decorate([
|
|
99
107
|
observable
|
|
100
108
|
], RichTextMention.prototype, "mappingElements", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text-mention/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EAEJ,UAAU,EACV,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAM/D,OAAO,EACH,gBAAgB,EAEnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C;;GAEG;AACH,MAAM,OAAgB,eAGlB,SAAQ,iBAAiB;IAH7B;;QAKI;;WAEG;QACa,qBAAgB,GAAqB,IAAI,gBAAgB,CACrE,IAAI,CAAC,0BAA0B,EAAE,EACjC,CAAC,MAAc,EAAQ,EAAE;YACrB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CACJ,CAAC;QAEF,gBAAgB;QACA,cAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text-mention/base/index.ts"],"names":[],"mappings":";AAAA,OAAO,EACH,IAAI,EAEJ,UAAU,EACV,UAAU,EAEb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAM/D,OAAO,EACH,gBAAgB,EAEnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C;;GAEG;AACH,MAAM,OAAgB,eAGlB,SAAQ,iBAAiB;IAH7B;;QAKI;;WAEG;QACa,qBAAgB,GAAqB,IAAI,gBAAgB,CACrE,IAAI,CAAC,0BAA0B,EAAE,EACjC,CAAC,MAAc,EAAQ,EAAE;YACrB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CACJ,CAAC;QAEF,gBAAgB;QACA,cAAS,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAcnD,gBAAgB;QACT,qBAAgB,GAAe,EAAE,CAAC;QAEzC,gBAAgB;QAET,oBAAe,GAAuB,EAAE,CAAC;IAqGpD,CAAC;IAnGG;;OAEG;IACI,aAAa;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,iBAAiB,CAAC,MAAc;QACnC,MAAM,yBAAyB,GAA6B;YACxD,MAAM;SACT,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,MAAe,EAAE,IAAa;QAC9C,IACI,MAAM,YAAY,OAAO;eACtB,OAAO,IAAI,KAAK,QAAQ;eACxB,IAAI,CAAC,0BAA0B,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EACrD;YACE,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;IACL,CAAC;IAYO,iBAAiB;QACrB,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyB,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC;YACtC,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAChD,MAAM,KAAK,CACP,0EAA0E,CAC7E,CAAC;aACL;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACxD,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEO,oBAAoB;QACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YAC3D,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1B,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;IAEO,sBAAsB;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAClC,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACjD,CAAC;IAEO,kBAAkB;QACtB,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACzD,CAAC;IAEO,6BAA6B;QACjC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC/B,CAAC;IAEO,sBAAsB;QAC1B,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAErC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;YACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACjD,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACxC;IACL,CAAC;CACJ;AAlHG;IADC,IAAI;gDACmB;AAMxB;IADC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;oDACR;AAO5B;IADC,UAAU;wDACqC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ViewTemplate } from '@microsoft/fast-element';
|
|
1
2
|
import type { MappingConfigs, MentionUpdateEmitter } from '../types';
|
|
2
3
|
export interface MentionInternalsOptions {
|
|
3
4
|
readonly icon: string;
|
|
@@ -21,9 +22,13 @@ export declare class MentionInternals {
|
|
|
21
22
|
*/
|
|
22
23
|
pattern?: string;
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
+
* Label to use as accessible name and title of mention button
|
|
25
26
|
*/
|
|
26
|
-
|
|
27
|
+
buttonLabel?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Template of the Icon to display on RichTextEditor Toolbar
|
|
30
|
+
*/
|
|
31
|
+
readonly iconTemplate: ViewTemplate;
|
|
27
32
|
/**
|
|
28
33
|
* Character to show respective mention list
|
|
29
34
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { observable } from '@microsoft/fast-element';
|
|
2
|
+
import { html, observable } from '@microsoft/fast-element';
|
|
3
3
|
/**
|
|
4
4
|
* Internal mention state
|
|
5
5
|
*/
|
|
@@ -9,7 +9,7 @@ export class MentionInternals {
|
|
|
9
9
|
* Whether this mention has a valid configuration.
|
|
10
10
|
*/
|
|
11
11
|
this.validConfiguration = true;
|
|
12
|
-
this.
|
|
12
|
+
this.iconTemplate = html `<${options.icon} slot="start"></${options.icon}>`;
|
|
13
13
|
this.character = options.character;
|
|
14
14
|
this.viewElement = options.viewElement;
|
|
15
15
|
this.mentionUpdateEmitter = mentionUpdateEmitter;
|
|
@@ -24,4 +24,7 @@ __decorate([
|
|
|
24
24
|
__decorate([
|
|
25
25
|
observable
|
|
26
26
|
], MentionInternals.prototype, "pattern", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
observable
|
|
29
|
+
], MentionInternals.prototype, "buttonLabel", void 0);
|
|
27
30
|
//# sourceMappingURL=mention-internals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mention-internals.js","sourceRoot":"","sources":["../../../../../src/rich-text-mention/base/models/mention-internals.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"mention-internals.js","sourceRoot":"","sources":["../../../../../src/rich-text-mention/base/models/mention-internals.ts"],"names":[],"mappings":";AAAA,OAAO,EAAgB,IAAI,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AASzE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IA6CzB,YACI,OAAgC,EAChC,oBAA0C;QAxC9C;;WAEG;QAEI,uBAAkB,GAAG,IAAI,CAAC;QAsC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,IAAI,OAAO,CAAC,IAAI,mBAAmB,OAAO,CAAC,IAAI,GAAG,CAAC;QAC3E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACrD,CAAC;CACJ;AAjDG;IADC,UAAU;wDAC4B;AAMvC;IADC,UAAU;4DACsB;AAMjC;IADC,UAAU;iDACa;AAMxB;IADC,UAAU;qDACiB"}
|
|
@@ -15,6 +15,7 @@ declare global {
|
|
|
15
15
|
export declare class RichTextMentionUsers extends RichTextMention<RichTextMentionUsersValidator> {
|
|
16
16
|
protected createValidator(): RichTextMentionUsersValidator;
|
|
17
17
|
protected getMentionInternalsOptions(): MentionInternalsOptions;
|
|
18
|
+
protected getObservedMappingProperty(): string[];
|
|
18
19
|
protected createMappingConfig(mapping: Mapping<MappingUserKey>): MappingConfig;
|
|
19
20
|
}
|
|
20
21
|
export declare const richTextMentionUsersTag: string;
|
|
@@ -20,6 +20,9 @@ export class RichTextMentionUsers extends RichTextMention {
|
|
|
20
20
|
viewElement: richTextMentionUsersViewTag
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
+
getObservedMappingProperty() {
|
|
24
|
+
return ['key', 'displayName'];
|
|
25
|
+
}
|
|
23
26
|
createMappingConfig(mapping) {
|
|
24
27
|
if (mapping instanceof MappingUser) {
|
|
25
28
|
return new MappingUserConfig(mapping.key, mapping.displayName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text-mention/users/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAQrD;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,eAA8C;IACjE,eAAe;QAC9B,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,CAAC;IAEkB,0BAA0B;QACzC,OAAO;YACH,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,2BAA2B;SAC3C,CAAC;IACN,CAAC;IAES,mBAAmB,CACzB,OAAgC;QAEhC,IAAI,OAAO,YAAY,WAAW,EAAE;YAChC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;SAClE;QACD,+EAA+E;QAC/E,mEAAmE;QACnE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;CACJ;AACD,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,OAAO,CAAC;IAC5D,QAAQ,EAAE,yBAAyB;IACnC,QAAQ;CACX,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/rich-text-mention/users/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,QAAQ,CAAC;AAQrD;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,eAA8C;IACjE,eAAe;QAC9B,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,CAAC;IAEkB,0BAA0B;QACzC,OAAO;YACH,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,2BAA2B;SAC3C,CAAC;IACN,CAAC;IAEkB,0BAA0B;QACzC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAClC,CAAC;IAES,mBAAmB,CACzB,OAAgC;QAEhC,IAAI,OAAO,YAAY,WAAW,EAAE;YAChC,OAAO,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;SAClE;QACD,+EAA+E;QAC/E,mEAAmE;QACnE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;CACJ;AACD,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,OAAO,CAAC;IAC5D,QAAQ,EAAE,yBAAyB;IACnC,QAAQ;CACX,CAAC,CAAC;AAEH,YAAY,CAAC,WAAW,EAAE;KACrB,UAAU,CAAC,QAAQ,CAAC;KACpB,QAAQ,CAAC,0BAA0B,EAAE,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { css } from '@microsoft/fast-element';
|
|
2
2
|
import { display } from '@microsoft/fast-foundation';
|
|
3
|
-
import { mentionDisabledFontColor, bodyFontColor, bodyFont,
|
|
3
|
+
import { mentionFont, mentionDisabledFontColor, bodyFontColor, bodyFont, bodyDisabledFontColor } from '../../../theme-provider/design-tokens';
|
|
4
4
|
export const styles = css `
|
|
5
5
|
${display('inline-block')}
|
|
6
6
|
|
|
@@ -29,6 +29,10 @@ export const styles = css `
|
|
|
29
29
|
color: ${bodyDisabledFontColor};
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
:host([disable-editing]) {
|
|
33
|
+
font: ${mentionFont};
|
|
34
|
+
}
|
|
35
|
+
|
|
32
36
|
:host([disable-editing]) slot {
|
|
33
37
|
display: none;
|
|
34
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/rich-text-mention/users/view/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/rich-text-mention/users/view/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EACH,WAAW,EACX,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACR,qBAAqB,EACxB,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;MACnB,OAAO,CAAC,cAAc,CAAC;;;;gBAIb,QAAQ;iBACP,aAAa;;;;;gBAKd,WAAW;;;;;;;;;;iBAUV,wBAAwB;;;;iBAIxB,qBAAqB;;;;gBAItB,WAAW;;;;;;CAM1B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic normalize method that removes the accents and special characters.
|
|
3
|
+
* This method can be used to normalize the string before performing diacritic-insensitive string comparisons
|
|
4
|
+
*/
|
|
5
|
+
export declare const diacriticInsensitiveStringNormalizer: (value: string) => string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic normalize method that removes the accents and special characters.
|
|
3
|
+
* This method can be used to normalize the string before performing diacritic-insensitive string comparisons
|
|
4
|
+
*/
|
|
5
|
+
export const diacriticInsensitiveStringNormalizer = (value) => {
|
|
6
|
+
// This implementation is based on the below reference.
|
|
7
|
+
// https://claritydev.net/blog/diacritic-insensitive-string-comparison-javascript
|
|
8
|
+
return value
|
|
9
|
+
.normalize('NFD')
|
|
10
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
11
|
+
.toLowerCase();
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=string-normalizers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-normalizers.js","sourceRoot":"","sources":["../../../../src/utilities/models/string-normalizers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,KAAa,EAAU,EAAE;IAC1E,uDAAuD;IACvD,iFAAiF;IACjF,OAAO,KAAK;SACP,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,WAAW,EAAE,CAAC;AACvB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ni/nimble-components",
|
|
3
|
-
"version": "20.16.
|
|
3
|
+
"version": "20.16.3",
|
|
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",
|