@agorapulse/ui-components 13.2.1 → 13.2.2
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/agorapulse-ui-components-13.2.2.tgz +0 -0
- package/esm2020/src/lib/directives/multi-style-text.directive.mjs +54 -22
- package/fesm2015/agorapulse-ui-components.mjs +52 -20
- package/fesm2015/agorapulse-ui-components.mjs.map +1 -1
- package/fesm2020/agorapulse-ui-components.mjs +52 -20
- package/fesm2020/agorapulse-ui-components.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/directives/multi-style-text.directive.d.ts +5 -4
- package/agorapulse-ui-components-13.2.1.tgz +0 -0
|
Binary file
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { Directive, Input } from '@angular/core';
|
|
1
|
+
import { Directive, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
const PART_START = '<ng-container data-mst="';
|
|
4
4
|
const PARSE_MIDDLE = '">';
|
|
5
5
|
const PARSE_END = '</ng-container>';
|
|
6
|
-
const
|
|
6
|
+
const DATA_SEPARATOR = ',';
|
|
7
|
+
const OPTIONAL_EVENTS_SEPARATOR = ';';
|
|
7
8
|
/**
|
|
8
|
-
* This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes.
|
|
9
|
-
* The specific tags must this schema: <ng-container data-mst="STYLING-CLASSES>TEXT</ng-container>.
|
|
9
|
+
* This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.
|
|
10
|
+
* The specific tags must this schema: <ng-container data-mst="STYLING-CLASSES">TEXT</ng-container>.
|
|
10
11
|
* Example: 'Lorem <ng-container data-mst="my-style">ipsum</ng-container> dolor sit amet'.
|
|
11
12
|
*/
|
|
12
13
|
export class MultiStyleTextDirective {
|
|
@@ -14,43 +15,54 @@ export class MultiStyleTextDirective {
|
|
|
14
15
|
this.elRef = elRef;
|
|
15
16
|
this.renderer = renderer;
|
|
16
17
|
this.childrenCreated = [];
|
|
18
|
+
this.partEvent = new EventEmitter();
|
|
17
19
|
}
|
|
18
20
|
set multiStyleText(fullText) {
|
|
19
21
|
// First remove previously added children (on update).
|
|
20
22
|
for (const child of this.childrenCreated) {
|
|
21
23
|
this.renderer.removeChild(this.elRef.nativeElement, child);
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
MultiStyleTextDirective.parse(fullText).forEach((part) => {
|
|
26
|
+
if (part.clazz || part.clickName) {
|
|
27
|
+
// Parsed item with styling classes and/or event listening.
|
|
26
28
|
const span = this.renderer.createElement('span');
|
|
27
29
|
const text = this.renderer.createText(part.content);
|
|
28
30
|
this.renderer.appendChild(span, text);
|
|
29
|
-
part.clazz
|
|
31
|
+
if (part.clazz) {
|
|
32
|
+
part.clazz.forEach(clazz => this.renderer.addClass(span, clazz));
|
|
33
|
+
}
|
|
34
|
+
if (part.clickName) {
|
|
35
|
+
this.renderer.listen(span, 'click', () => this.partEvent.emit(part.clickName));
|
|
36
|
+
}
|
|
30
37
|
this.renderer.appendChild(this.elRef.nativeElement, span);
|
|
31
38
|
this.childrenCreated.push(span);
|
|
32
39
|
}
|
|
33
40
|
else {
|
|
41
|
+
// Specific of part without styling classes (could be used to get event listening only)
|
|
34
42
|
const text = this.renderer.createText(part.content);
|
|
35
43
|
this.renderer.appendChild(this.elRef.nativeElement, text);
|
|
36
44
|
this.childrenCreated.push(text);
|
|
37
45
|
}
|
|
38
|
-
}
|
|
46
|
+
});
|
|
39
47
|
}
|
|
40
48
|
static parse(toParse) {
|
|
41
49
|
const parts = [];
|
|
42
50
|
let startIndex = toParse.indexOf(PART_START);
|
|
43
51
|
while (startIndex >= 0) {
|
|
44
52
|
if (startIndex > 0) {
|
|
45
|
-
// Optional
|
|
46
|
-
parts.push({ content: toParse.
|
|
53
|
+
// Optional text before first parsed part.
|
|
54
|
+
parts.push({ content: toParse.substring(0, startIndex) });
|
|
47
55
|
}
|
|
48
|
-
const elem = this.cutFirstGroup(toParse.
|
|
56
|
+
const elem = this.cutFirstGroup(toParse.substring(startIndex));
|
|
49
57
|
if (elem === 'invalid') {
|
|
50
58
|
return [];
|
|
51
59
|
}
|
|
52
60
|
else if (elem) {
|
|
53
|
-
parts.push({
|
|
61
|
+
parts.push({
|
|
62
|
+
content: elem.content,
|
|
63
|
+
clazz: elem.classes,
|
|
64
|
+
clickName: elem.clickName
|
|
65
|
+
});
|
|
54
66
|
toParse = elem.rest;
|
|
55
67
|
startIndex = toParse.indexOf(PART_START);
|
|
56
68
|
}
|
|
@@ -66,29 +78,47 @@ export class MultiStyleTextDirective {
|
|
|
66
78
|
}
|
|
67
79
|
static cutFirstGroup(toCut) {
|
|
68
80
|
if (!toCut.startsWith(PART_START)) {
|
|
69
|
-
// String
|
|
81
|
+
// String doesn't start with expected parser start.
|
|
70
82
|
return null;
|
|
71
83
|
}
|
|
72
|
-
const afterParserStart = toCut.
|
|
84
|
+
const afterParserStart = toCut.substring(PART_START.length);
|
|
73
85
|
let index = afterParserStart.indexOf(PARSE_MIDDLE);
|
|
74
86
|
if (index <= 0) {
|
|
75
87
|
console.error('Not able to parse invalid string: ' + toCut);
|
|
76
88
|
return 'invalid';
|
|
77
89
|
}
|
|
78
|
-
const
|
|
79
|
-
let
|
|
90
|
+
const data = afterParserStart.substring(0, index);
|
|
91
|
+
let classes;
|
|
92
|
+
let clickName;
|
|
93
|
+
const eventsPartSeparatorIndex = data.indexOf(OPTIONAL_EVENTS_SEPARATOR);
|
|
94
|
+
if (eventsPartSeparatorIndex > 0) {
|
|
95
|
+
// Case the data contains events part with dedicated separator
|
|
96
|
+
classes = data.substring(0, eventsPartSeparatorIndex);
|
|
97
|
+
clickName = data.substring(eventsPartSeparatorIndex + 1);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// Otherwise, only design classes are provided
|
|
101
|
+
classes = data;
|
|
102
|
+
clickName = undefined;
|
|
103
|
+
}
|
|
104
|
+
let rest = afterParserStart.substring(index + PARSE_MIDDLE.length);
|
|
80
105
|
index = rest.indexOf(PARSE_END);
|
|
81
106
|
if (index <= 0) {
|
|
82
107
|
console.error('Not able to parse invalid string: ' + toCut);
|
|
83
108
|
return 'invalid';
|
|
84
109
|
}
|
|
85
|
-
const content = rest.
|
|
86
|
-
rest = rest.
|
|
87
|
-
return {
|
|
110
|
+
const content = rest.substring(0, index);
|
|
111
|
+
rest = rest.substring(index + PARSE_END.length);
|
|
112
|
+
return {
|
|
113
|
+
content,
|
|
114
|
+
classes: classes.split(DATA_SEPARATOR),
|
|
115
|
+
clickName,
|
|
116
|
+
rest
|
|
117
|
+
};
|
|
88
118
|
}
|
|
89
119
|
}
|
|
90
120
|
/** @nocollapse */ /** @nocollapse */ MultiStyleTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MultiStyleTextDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
91
|
-
/** @nocollapse */ /** @nocollapse */ MultiStyleTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: MultiStyleTextDirective, selector: "[multiStyleText]", inputs: { multiStyleText: "multiStyleText" }, ngImport: i0 });
|
|
121
|
+
/** @nocollapse */ /** @nocollapse */ MultiStyleTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: MultiStyleTextDirective, selector: "[multiStyleText]", inputs: { multiStyleText: "multiStyleText" }, outputs: { partEvent: "partEvent" }, ngImport: i0 });
|
|
92
122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MultiStyleTextDirective, decorators: [{
|
|
93
123
|
type: Directive,
|
|
94
124
|
args: [{
|
|
@@ -97,5 +127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
97
127
|
}]
|
|
98
128
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { multiStyleText: [{
|
|
99
129
|
type: Input
|
|
130
|
+
}], partEvent: [{
|
|
131
|
+
type: Output
|
|
100
132
|
}] } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc3R5bGUtdGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL211bHRpLXN0eWxlLXRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUF3QixNQUFNLGVBQWUsQ0FBQzs7QUFFdEUsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUM7QUFDOUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzFCLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDO0FBQ3BDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQU81Qjs7OztHQUlHO0FBS0gsTUFBTSxPQUFPLHVCQUF1QjtJQTRCaEMsWUFDWSxLQUFpQixFQUNqQixRQUFtQjtRQURuQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVc7UUE1QnZCLG9CQUFlLEdBQVUsRUFBRSxDQUFDO0lBOEJwQyxDQUFDO0lBNUJELElBQWEsY0FBYyxDQUFDLFFBQWdCO1FBQ3hDLHNEQUFzRDtRQUN0RCxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDOUQ7UUFFRCxNQUFNLEtBQUssR0FBRyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRCxN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QUMsb0NBQW9DLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELElBQUksSUFBSSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDcEUsQ0FBQzs7MEpBcEZRLHVCQUF1Qjs4SUFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1AsOENBQThDO29CQUM5QyxRQUFRLEVBQUUsa0JBQWtCO2lCQUMvQjt5SEFLZ0IsY0FBYztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgUmVuZGVyZXIyLCBFbGVtZW50UmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgUEFSVF9TVEFSVCA9ICc8bmctY29udGFpbmVyIGRhdGEtbXN0PVwiJztcbmNvbnN0IFBBUlNFX01JRERMRSA9ICdcIj4nO1xuY29uc3QgUEFSU0VfRU5EID0gJzwvbmctY29udGFpbmVyPic7XG5jb25zdCBDTEFTU19TRVBBUkFUT1IgPSAnLCc7XG5cbmludGVyZmFjZSBQYXJ0IHtcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgY2xheno/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBhaW1zIHRvIHBhcnNlIHNpbXBsZSBzdHJpbmcgdG8gZXh0cmFjdCBzb21lIHNwZWNpZmljIHRhZ3MgYW5kIHRvIHR1cm4gdGhlbSBpbnRvIFNQQU4gd2l0aCBzdHlsaW5nIGNsYXNzZXMgYXR0cmlidXRlcy5cbiAqIFRoZSBzcGVjaWZpYyB0YWdzIG11c3QgdGhpcyBzY2hlbWE6IDxuZy1jb250YWluZXIgZGF0YS1tc3Q9XCJTVFlMSU5HLUNMQVNTRVM+VEVYVDwvbmctY29udGFpbmVyPi5cbiAqIEV4YW1wbGU6ICdMb3JlbSA8bmctY29udGFpbmVyIGRhdGEtbXN0PVwibXktc3R5bGVcIj5pcHN1bTwvbmctY29udGFpbmVyPiBkb2xvciBzaXQgYW1ldCcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1ttdWx0aVN0eWxlVGV4dF0nXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU3R5bGVUZXh0RGlyZWN0aXZlIHtcblxuICAgIHByaXZhdGUgY2hpbGRyZW5DcmVhdGVkOiBhbnlbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgc2V0IG11bHRpU3R5bGVUZXh0KGZ1bGxUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gRmlyc3QgcmVtb3ZlIHByZXZpb3VzbHkgYWRkZWQgY2hpbGRyZW4gKG9uIHVwZGF0ZSkuXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbkNyZWF0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJ0cyA9IE11bHRpU3R5bGVUZXh0RGlyZWN0aXZlLnBhcnNlKGZ1bGxUZXh0KTtcblxuICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgIGlmIChwYXJ0LmNsYXp6KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3BhbiA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQocGFydC5jb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHNwYW4sIHRleHQpO1xuICAgICAgICAgICAgICAgIHBhcnQuY2xhenouZm9yRWFjaChjbGF6eiA9PiB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHNwYW4sIGNsYXp6KSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQsIHNwYW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5DcmVhdGVkLnB1c2goc3Bhbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRleHQocGFydC5jb250ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgdGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbkNyZWF0ZWQucHVzaCh0ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgcGFyc2UodG9QYXJzZTogc3RyaW5nKTogUGFydFtdIHtcbiAgICAgICAgY29uc3QgcGFydHM6IFBhcnRbXSA9IFtdO1xuXG4gICAgICAgIGxldCBzdGFydEluZGV4ID0gdG9QYXJzZS5pbmRleE9mKFBBUlRfU1RBUlQpO1xuICAgICAgICB3aGlsZSAoc3RhcnRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICBpZiAoc3RhcnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBPcHRpb25hbCBzdGFydCBiZWZvcmUgcGFyc2VyIHN0YXJ0LlxuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goe2NvbnRlbnQ6IHRvUGFyc2Uuc3Vic3RyKDAsIHN0YXJ0SW5kZXgpfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5jdXRGaXJzdEdyb3VwKHRvUGFyc2Uuc3Vic3RyKHN0YXJ0SW5kZXgpKTtcbiAgICAgICAgICAgIGlmIChlbGVtID09PSAnaW52YWxpZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW0pIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKHtjb250ZW50OiBlbGVtLmNvbnRlbnQsIGNsYXp6OiBlbGVtLmNsYXNzZXN9KTtcbiAgICAgICAgICAgICAgICB0b1BhcnNlID0gZWxlbS5yZXN0O1xuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSB0b1BhcnNlLmluZGV4T2YoUEFSVF9TVEFSVCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goe2NvbnRlbnQ6IHRvUGFyc2V9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBWZXJ5IGVuZFxuICAgICAgICBpZiAodG9QYXJzZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHtjb250ZW50OiB0b1BhcnNlfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGN1dEZpcnN0R3JvdXAodG9DdXQ6IHN0cmluZyk6IHtjb250ZW50OiBzdHJpbmcsIGNsYXNzZXM6IHN0cmluZ1tdLCByZXN0OiBzdHJpbmd9IHwgJ2ludmFsaWQnIHwgbnVsbCB7XG4gICAgICAgIGlmICghdG9DdXQuc3RhcnRzV2l0aChQQVJUX1NUQVJUKSkge1xuICAgICAgICAgICAgLy8gU3RyaW5nIGRvZXNudCBzdGFydCB3aXRoIGV4cGVjdGVkIHBhcnNlciBzdGFydC5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWZ0ZXJQYXJzZXJTdGFydCA9IHRvQ3V0LnN1YnN0cihQQVJUX1NUQVJULmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGFmdGVyUGFyc2VyU3RhcnQuaW5kZXhPZihQQVJTRV9NSURETEUpO1xuICAgICAgICBpZiAoaW5kZXggPD0gMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm90IGFibGUgdG8gcGFyc2UgaW52YWxpZCBzdHJpbmc6ICcgKyB0b0N1dCk7XG4gICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsYXNzZXMgPSBhZnRlclBhcnNlclN0YXJ0LnN1YnN0cigwLCBpbmRleCk7XG4gICAgICAgIGxldCByZXN0ID0gYWZ0ZXJQYXJzZXJTdGFydC5zdWJzdHIoaW5kZXggKyBQQVJTRV9NSURETEUubGVuZ3RoKTtcbiAgICAgICAgaW5kZXggPSByZXN0LmluZGV4T2YoUEFSU0VfRU5EKTtcbiAgICAgICAgaWYgKGluZGV4IDw9IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vdCBhYmxlIHRvIHBhcnNlIGludmFsaWQgc3RyaW5nOiAnICsgdG9DdXQpO1xuICAgICAgICAgICAgcmV0dXJuICdpbnZhbGlkJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZW50ID0gcmVzdC5zdWJzdHIoMCwgaW5kZXgpO1xuICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHIoaW5kZXggKyBQQVJTRV9FTkQubGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4ge2NvbnRlbnQsIGNsYXNzZXM6IGNsYXNzZXMuc3BsaXQoQ0xBU1NfU0VQQVJBVE9SKSwgcmVzdH07XG4gICAgfVxufVxuIl19
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc3R5bGUtdGV4dC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvc3JjL2xpYi9kaXJlY3RpdmVzL211bHRpLXN0eWxlLXRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUF5QixNQUFNLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUU1RixNQUFNLFVBQVUsR0FBRywwQkFBMEIsQ0FBQztBQUM5QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDMUIsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7QUFDcEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDO0FBQzNCLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFDO0FBUXRDOzs7O0dBSUc7QUFLSCxNQUFNLE9BQU8sdUJBQXVCO0lBbUNoQyxZQUNZLEtBQWlCLEVBQ2pCLFFBQW1CO1FBRG5CLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQW5DdkIsb0JBQWUsR0FBVSxFQUFFLENBQUM7UUErQjFCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBTWpELENBQUM7SUFuQ0QsSUFBYSxjQUFjLENBQUMsUUFBZ0I7UUFDeEMsc0RBQXNEO1FBQ3RELEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5RDtRQUVELHVCQUF1QixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtZQUMzRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxD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QUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25FLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDNUQsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhELE9BQU87WUFDSCxPQUFPO1lBQ1AsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ3RDLFNBQVM7WUFDVCxJQUFJO1NBQ1AsQ0FBQztJQUNOLENBQUM7OzBKQS9HUSx1QkFBdUI7OElBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLDhDQUE4QztvQkFDOUMsUUFBUSxFQUFFLGtCQUFrQjtpQkFDL0I7eUhBS2dCLGNBQWM7c0JBQTFCLEtBQUs7Z0JBNkJJLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgSW5wdXQsIFJlbmRlcmVyMiwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBQQVJUX1NUQVJUID0gJzxuZy1jb250YWluZXIgZGF0YS1tc3Q9XCInO1xuY29uc3QgUEFSU0VfTUlERExFID0gJ1wiPic7XG5jb25zdCBQQVJTRV9FTkQgPSAnPC9uZy1jb250YWluZXI+JztcbmNvbnN0IERBVEFfU0VQQVJBVE9SID0gJywnO1xuY29uc3QgT1BUSU9OQUxfRVZFTlRTX1NFUEFSQVRPUiA9ICc7JztcblxuaW50ZXJmYWNlIFBhcnQge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBjbGF6ej86IHN0cmluZ1tdOyAvLyBOb3QgZGVmaW5lZCBvbiBzdGVyaWxlIHRleHRcbiAgICBjbGlja05hbWU/OiBzdHJpbmc7IC8vIE5vdCBkZWZpbmVkIG9uIHN0ZXJpbGUgdGV4dFxufVxuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIGFpbXMgdG8gcGFyc2Ugc2ltcGxlIHN0cmluZyB0byBleHRyYWN0IHNvbWUgc3BlY2lmaWMgdGFncyBhbmQgdG8gdHVybiB0aGVtIGludG8gU1BBTiB3aXRoIHN0eWxpbmcgY2xhc3NlcyBhdHRyaWJ1dGVzIGFuZCBvcHRpb25hbCBldmVudCBsaXN0ZW5pbmcuXG4gKiBUaGUgc3BlY2lmaWMgdGFncyBtdXN0IHRoaXMgc2NoZW1hOiA8bmctY29udGFpbmVyIGRhdGEtbXN0PVwiU1RZTElORy1DTEFTU0VTXCI+VEVYVDwvbmctY29udGFpbmVyPi5cbiAqIEV4YW1wbGU6ICdMb3JlbSA8bmctY29udGFpbmVyIGRhdGEtbXN0PVwibXktc3R5bGVcIj5pcHN1bTwvbmctY29udGFpbmVyPiBkb2xvciBzaXQgYW1ldCcuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1ttdWx0aVN0eWxlVGV4dF0nXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU3R5bGVUZXh0RGlyZWN0aXZlIHtcblxuICAgIHByaXZhdGUgY2hpbGRyZW5DcmVhdGVkOiBhbnlbXSA9IFtdO1xuXG4gICAgQElucHV0KCkgc2V0IG11bHRpU3R5bGVUZXh0KGZ1bGxUZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgLy8gRmlyc3QgcmVtb3ZlIHByZXZpb3VzbHkgYWRkZWQgY2hpbGRyZW4gKG9uIHVwZGF0ZSkuXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbkNyZWF0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCBjaGlsZCk7XG4gICAgICAgIH1cblxuICAgICAgICBNdWx0aVN0eWxlVGV4dERpcmVjdGl2ZS5wYXJzZShmdWxsVGV4dCkuZm9yRWFjaCgocGFydDogUGFydCkgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcnQuY2xhenogfHwgcGFydC5jbGlja05hbWUpIHtcbiAgICAgICAgICAgICAgICAvLyBQYXJzZWQgaXRlbSB3aXRoIHN0eWxpbmcgY2xhc3NlcyBhbmQvb3IgZXZlbnQgbGlzdGVuaW5nLlxuICAgICAgICAgICAgICAgIGNvbnN0IHNwYW4gPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHBhcnQuY29udGVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChzcGFuLCB0ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAocGFydC5jbGF6eikge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0LmNsYXp6LmZvckVhY2goY2xhenogPT4gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhzcGFuLCBjbGF6eikpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocGFydC5jbGlja05hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oc3BhbiwgJ2NsaWNrJywgKCkgPT4gdGhpcy5wYXJ0RXZlbnQuZW1pdChwYXJ0LmNsaWNrTmFtZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCwgc3Bhbik7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbkNyZWF0ZWQucHVzaChzcGFuKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gU3BlY2lmaWMgb2YgcGFydCB3aXRob3V0IHN0eWxpbmcgY2xhc3NlcyAoY291bGQgYmUgdXNlZCB0byBnZXQgZXZlbnQgbGlzdGVuaW5nIG9ubHkpXG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlVGV4dChwYXJ0LmNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LCB0ZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuQ3JlYXRlZC5wdXNoKHRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgcGFydEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHBhcnNlKHRvUGFyc2U6IHN0cmluZyk6IFBhcnRbXSB7XG4gICAgICAgIGNvbnN0IHBhcnRzOiBQYXJ0W10gPSBbXTtcbiAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSB0b1BhcnNlLmluZGV4T2YoUEFSVF9TVEFSVCk7XG4gICAgICAgIHdoaWxlIChzdGFydEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGlmIChzdGFydEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIE9wdGlvbmFsIHRleHQgYmVmb3JlIGZpcnN0IHBhcnNlZCBwYXJ0LlxuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goe2NvbnRlbnQ6IHRvUGFyc2Uuc3Vic3RyaW5nKDAsIHN0YXJ0SW5kZXgpfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5jdXRGaXJzdEdyb3VwKHRvUGFyc2Uuc3Vic3RyaW5nKHN0YXJ0SW5kZXgpKTtcbiAgICAgICAgICAgIGlmIChlbGVtID09PSAnaW52YWxpZCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW0pIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogZWxlbS5jb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBjbGF6ejogZWxlbS5jbGFzc2VzLFxuICAgICAgICAgICAgICAgICAgICBjbGlja05hbWU6IGVsZW0uY2xpY2tOYW1lXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdG9QYXJzZSA9IGVsZW0ucmVzdDtcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gdG9QYXJzZS5pbmRleE9mKFBBUlRfU1RBUlQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKHtjb250ZW50OiB0b1BhcnNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gVmVyeSBlbmRcbiAgICAgICAgaWYgKHRvUGFyc2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcGFydHMucHVzaCh7Y29udGVudDogdG9QYXJzZX0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJ0cztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjdXRGaXJzdEdyb3VwKHRvQ3V0OiBzdHJpbmcpOiB7Y29udGVudDogc3RyaW5nLCBjbGFzc2VzOiBzdHJpbmdbXSwgY2xpY2tOYW1lOiBzdHJpbmcsIHJlc3Q6IHN0cmluZ30gfCAnaW52YWxpZCcgfCBudWxsIHtcbiAgICAgICAgaWYgKCF0b0N1dC5zdGFydHNXaXRoKFBBUlRfU1RBUlQpKSB7XG4gICAgICAgICAgICAvLyBTdHJpbmcgZG9lc24ndCBzdGFydCB3aXRoIGV4cGVjdGVkIHBhcnNlciBzdGFydC5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYWZ0ZXJQYXJzZXJTdGFydCA9IHRvQ3V0LnN1YnN0cmluZyhQQVJUX1NUQVJULmxlbmd0aCk7XG4gICAgICAgIGxldCBpbmRleCA9IGFmdGVyUGFyc2VyU3RhcnQuaW5kZXhPZihQQVJTRV9NSURETEUpO1xuICAgICAgICBpZiAoaW5kZXggPD0gMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm90IGFibGUgdG8gcGFyc2UgaW52YWxpZCBzdHJpbmc6ICcgKyB0b0N1dCk7XG4gICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhZnRlclBhcnNlclN0YXJ0LnN1YnN0cmluZygwLCBpbmRleCk7XG4gICAgICAgIGxldCBjbGFzc2VzO1xuICAgICAgICBsZXQgY2xpY2tOYW1lO1xuICAgICAgICBjb25zdCBldmVudHNQYXJ0U2VwYXJhdG9ySW5kZXggPSBkYXRhLmluZGV4T2YoT1BUSU9OQUxfRVZFTlRTX1NFUEFSQVRPUik7XG4gICAgICAgIGlmIChldmVudHNQYXJ0U2VwYXJhdG9ySW5kZXggPiAwKSB7XG4gICAgICAgICAgICAvLyBDYXNlIHRoZSBkYXRhIGNvbnRhaW5zIGV2ZW50cyBwYXJ0IHdpdGggZGVkaWNhdGVkIHNlcGFyYXRvclxuICAgICAgICAgICAgY2xhc3NlcyA9IGRhdGEuc3Vic3RyaW5nKDAsIGV2ZW50c1BhcnRTZXBhcmF0b3JJbmRleCk7XG4gICAgICAgICAgICBjbGlja05hbWUgPSBkYXRhLnN1YnN0cmluZyhldmVudHNQYXJ0U2VwYXJhdG9ySW5kZXggKyAxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgb25seSBkZXNpZ24gY2xhc3NlcyBhcmUgcHJvdmlkZWRcbiAgICAgICAgICAgIGNsYXNzZXMgPSBkYXRhO1xuICAgICAgICAgICAgY2xpY2tOYW1lID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN0ID0gYWZ0ZXJQYXJzZXJTdGFydC5zdWJzdHJpbmcoaW5kZXggKyBQQVJTRV9NSURETEUubGVuZ3RoKTtcbiAgICAgICAgaW5kZXggPSByZXN0LmluZGV4T2YoUEFSU0VfRU5EKTtcbiAgICAgICAgaWYgKGluZGV4IDw9IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vdCBhYmxlIHRvIHBhcnNlIGludmFsaWQgc3RyaW5nOiAnICsgdG9DdXQpO1xuICAgICAgICAgICAgcmV0dXJuICdpbnZhbGlkJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb250ZW50ID0gcmVzdC5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICByZXN0ID0gcmVzdC5zdWJzdHJpbmcoaW5kZXggKyBQQVJTRV9FTkQubGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIGNsYXNzZXM6IGNsYXNzZXMuc3BsaXQoREFUQV9TRVBBUkFUT1IpLFxuICAgICAgICAgICAgY2xpY2tOYW1lLFxuICAgICAgICAgICAgcmVzdFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -3264,10 +3264,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
3264
3264
|
const PART_START = '<ng-container data-mst="';
|
|
3265
3265
|
const PARSE_MIDDLE = '">';
|
|
3266
3266
|
const PARSE_END = '</ng-container>';
|
|
3267
|
-
const
|
|
3267
|
+
const DATA_SEPARATOR = ',';
|
|
3268
|
+
const OPTIONAL_EVENTS_SEPARATOR = ';';
|
|
3268
3269
|
/**
|
|
3269
|
-
* This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes.
|
|
3270
|
-
* The specific tags must this schema: <ng-container data-mst="STYLING-CLASSES>TEXT</ng-container>.
|
|
3270
|
+
* This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.
|
|
3271
|
+
* The specific tags must this schema: <ng-container data-mst="STYLING-CLASSES">TEXT</ng-container>.
|
|
3271
3272
|
* Example: 'Lorem <ng-container data-mst="my-style">ipsum</ng-container> dolor sit amet'.
|
|
3272
3273
|
*/
|
|
3273
3274
|
class MultiStyleTextDirective {
|
|
@@ -3275,43 +3276,54 @@ class MultiStyleTextDirective {
|
|
|
3275
3276
|
this.elRef = elRef;
|
|
3276
3277
|
this.renderer = renderer;
|
|
3277
3278
|
this.childrenCreated = [];
|
|
3279
|
+
this.partEvent = new EventEmitter();
|
|
3278
3280
|
}
|
|
3279
3281
|
set multiStyleText(fullText) {
|
|
3280
3282
|
// First remove previously added children (on update).
|
|
3281
3283
|
for (const child of this.childrenCreated) {
|
|
3282
3284
|
this.renderer.removeChild(this.elRef.nativeElement, child);
|
|
3283
3285
|
}
|
|
3284
|
-
|
|
3285
|
-
|
|
3286
|
-
|
|
3286
|
+
MultiStyleTextDirective.parse(fullText).forEach((part) => {
|
|
3287
|
+
if (part.clazz || part.clickName) {
|
|
3288
|
+
// Parsed item with styling classes and/or event listening.
|
|
3287
3289
|
const span = this.renderer.createElement('span');
|
|
3288
3290
|
const text = this.renderer.createText(part.content);
|
|
3289
3291
|
this.renderer.appendChild(span, text);
|
|
3290
|
-
part.clazz
|
|
3292
|
+
if (part.clazz) {
|
|
3293
|
+
part.clazz.forEach(clazz => this.renderer.addClass(span, clazz));
|
|
3294
|
+
}
|
|
3295
|
+
if (part.clickName) {
|
|
3296
|
+
this.renderer.listen(span, 'click', () => this.partEvent.emit(part.clickName));
|
|
3297
|
+
}
|
|
3291
3298
|
this.renderer.appendChild(this.elRef.nativeElement, span);
|
|
3292
3299
|
this.childrenCreated.push(span);
|
|
3293
3300
|
}
|
|
3294
3301
|
else {
|
|
3302
|
+
// Specific of part without styling classes (could be used to get event listening only)
|
|
3295
3303
|
const text = this.renderer.createText(part.content);
|
|
3296
3304
|
this.renderer.appendChild(this.elRef.nativeElement, text);
|
|
3297
3305
|
this.childrenCreated.push(text);
|
|
3298
3306
|
}
|
|
3299
|
-
}
|
|
3307
|
+
});
|
|
3300
3308
|
}
|
|
3301
3309
|
static parse(toParse) {
|
|
3302
3310
|
const parts = [];
|
|
3303
3311
|
let startIndex = toParse.indexOf(PART_START);
|
|
3304
3312
|
while (startIndex >= 0) {
|
|
3305
3313
|
if (startIndex > 0) {
|
|
3306
|
-
// Optional
|
|
3307
|
-
parts.push({ content: toParse.
|
|
3314
|
+
// Optional text before first parsed part.
|
|
3315
|
+
parts.push({ content: toParse.substring(0, startIndex) });
|
|
3308
3316
|
}
|
|
3309
|
-
const elem = this.cutFirstGroup(toParse.
|
|
3317
|
+
const elem = this.cutFirstGroup(toParse.substring(startIndex));
|
|
3310
3318
|
if (elem === 'invalid') {
|
|
3311
3319
|
return [];
|
|
3312
3320
|
}
|
|
3313
3321
|
else if (elem) {
|
|
3314
|
-
parts.push({
|
|
3322
|
+
parts.push({
|
|
3323
|
+
content: elem.content,
|
|
3324
|
+
clazz: elem.classes,
|
|
3325
|
+
clickName: elem.clickName
|
|
3326
|
+
});
|
|
3315
3327
|
toParse = elem.rest;
|
|
3316
3328
|
startIndex = toParse.indexOf(PART_START);
|
|
3317
3329
|
}
|
|
@@ -3327,29 +3339,47 @@ class MultiStyleTextDirective {
|
|
|
3327
3339
|
}
|
|
3328
3340
|
static cutFirstGroup(toCut) {
|
|
3329
3341
|
if (!toCut.startsWith(PART_START)) {
|
|
3330
|
-
// String
|
|
3342
|
+
// String doesn't start with expected parser start.
|
|
3331
3343
|
return null;
|
|
3332
3344
|
}
|
|
3333
|
-
const afterParserStart = toCut.
|
|
3345
|
+
const afterParserStart = toCut.substring(PART_START.length);
|
|
3334
3346
|
let index = afterParserStart.indexOf(PARSE_MIDDLE);
|
|
3335
3347
|
if (index <= 0) {
|
|
3336
3348
|
console.error('Not able to parse invalid string: ' + toCut);
|
|
3337
3349
|
return 'invalid';
|
|
3338
3350
|
}
|
|
3339
|
-
const
|
|
3340
|
-
let
|
|
3351
|
+
const data = afterParserStart.substring(0, index);
|
|
3352
|
+
let classes;
|
|
3353
|
+
let clickName;
|
|
3354
|
+
const eventsPartSeparatorIndex = data.indexOf(OPTIONAL_EVENTS_SEPARATOR);
|
|
3355
|
+
if (eventsPartSeparatorIndex > 0) {
|
|
3356
|
+
// Case the data contains events part with dedicated separator
|
|
3357
|
+
classes = data.substring(0, eventsPartSeparatorIndex);
|
|
3358
|
+
clickName = data.substring(eventsPartSeparatorIndex + 1);
|
|
3359
|
+
}
|
|
3360
|
+
else {
|
|
3361
|
+
// Otherwise, only design classes are provided
|
|
3362
|
+
classes = data;
|
|
3363
|
+
clickName = undefined;
|
|
3364
|
+
}
|
|
3365
|
+
let rest = afterParserStart.substring(index + PARSE_MIDDLE.length);
|
|
3341
3366
|
index = rest.indexOf(PARSE_END);
|
|
3342
3367
|
if (index <= 0) {
|
|
3343
3368
|
console.error('Not able to parse invalid string: ' + toCut);
|
|
3344
3369
|
return 'invalid';
|
|
3345
3370
|
}
|
|
3346
|
-
const content = rest.
|
|
3347
|
-
rest = rest.
|
|
3348
|
-
return {
|
|
3371
|
+
const content = rest.substring(0, index);
|
|
3372
|
+
rest = rest.substring(index + PARSE_END.length);
|
|
3373
|
+
return {
|
|
3374
|
+
content,
|
|
3375
|
+
classes: classes.split(DATA_SEPARATOR),
|
|
3376
|
+
clickName,
|
|
3377
|
+
rest
|
|
3378
|
+
};
|
|
3349
3379
|
}
|
|
3350
3380
|
}
|
|
3351
3381
|
/** @nocollapse */ /** @nocollapse */ MultiStyleTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MultiStyleTextDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3352
|
-
/** @nocollapse */ /** @nocollapse */ MultiStyleTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: MultiStyleTextDirective, selector: "[multiStyleText]", inputs: { multiStyleText: "multiStyleText" }, ngImport: i0 });
|
|
3382
|
+
/** @nocollapse */ /** @nocollapse */ MultiStyleTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: MultiStyleTextDirective, selector: "[multiStyleText]", inputs: { multiStyleText: "multiStyleText" }, outputs: { partEvent: "partEvent" }, ngImport: i0 });
|
|
3353
3383
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: MultiStyleTextDirective, decorators: [{
|
|
3354
3384
|
type: Directive,
|
|
3355
3385
|
args: [{
|
|
@@ -3358,6 +3388,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImpor
|
|
|
3358
3388
|
}]
|
|
3359
3389
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { multiStyleText: [{
|
|
3360
3390
|
type: Input
|
|
3391
|
+
}], partEvent: [{
|
|
3392
|
+
type: Output
|
|
3361
3393
|
}] } });
|
|
3362
3394
|
|
|
3363
3395
|
// Angular
|