@hmcts/ccd-case-ui-toolkit 7.0.33 → 7.0.34-pre-release-markdown
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/esm2020/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +83 -38
- package/esm2020/lib/shared/components/case-editor/case-editor.module.mjs +6 -5
- package/esm2020/lib/shared/components/palette/base-field/abstract-form-field.component.mjs +1 -1
- package/esm2020/lib/shared/components/palette/document/write-document-field.component.mjs +4 -4
- package/esm2020/lib/shared/components/palette/dynamic-multi-select-list/write-dynamic-multi-select-list-field.component.mjs +5 -5
- package/esm2020/lib/shared/components/palette/history/event-log/event-log-table.component.mjs +5 -5
- package/esm2020/lib/shared/components/palette/markdown/markdown.component.mjs +26 -3
- package/esm2020/lib/shared/components/palette/text/write-text-field.component.mjs +1 -1
- package/esm2020/lib/shared/components/palette/utils/first-error.pipe.mjs +4 -1
- package/esm2020/lib/shared/services/form/form-validators.service.mjs +27 -2
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs +214 -109
- package/fesm2015/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs +205 -109
- package/fesm2020/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +8 -3
- package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
- package/lib/shared/components/palette/base-field/abstract-form-field.component.d.ts.map +1 -1
- package/lib/shared/components/palette/markdown/markdown.component.d.ts +4 -1
- package/lib/shared/components/palette/markdown/markdown.component.d.ts.map +1 -1
- package/lib/shared/components/palette/utils/first-error.pipe.d.ts.map +1 -1
- package/lib/shared/services/form/form-validators.service.d.ts +4 -0
- package/lib/shared/services/form/form-validators.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { Component, HostListener, Input } from '@angular/core';
|
|
2
|
+
import * as marked from 'marked';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "ngx-md";
|
|
4
5
|
import * as i2 from "rpx-xui-translation";
|
|
5
6
|
import * as i3 from "../../../pipes/case-reference/case-reference.pipe";
|
|
6
7
|
export class MarkdownComponent {
|
|
7
|
-
constructor() {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.renderUrlToTextFeature = true;
|
|
10
|
+
}
|
|
8
11
|
ngOnInit() {
|
|
9
12
|
this.content = this.content.replace(/ \n/g, '<br>');
|
|
13
|
+
if (this.renderUrlToTextFeature) {
|
|
14
|
+
this.renderUrlToText();
|
|
15
|
+
}
|
|
10
16
|
}
|
|
11
17
|
onMarkdownClick(event) {
|
|
12
18
|
// If we don't have an anchor tag, we don't need to do anything.
|
|
@@ -15,11 +21,26 @@ export class MarkdownComponent {
|
|
|
15
21
|
}
|
|
16
22
|
return true;
|
|
17
23
|
}
|
|
24
|
+
renderUrlToText() {
|
|
25
|
+
const renderer = new marked.Renderer();
|
|
26
|
+
renderer.link = (href, title, text) => {
|
|
27
|
+
// Return the text without turning it into a link if it's not an internal link
|
|
28
|
+
return this.isAllowedUrl(href) ? `<a href="${href}">${text}</a>` : text;
|
|
29
|
+
};
|
|
30
|
+
marked.setOptions({
|
|
31
|
+
renderer: renderer
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
isAllowedUrl(url) {
|
|
35
|
+
const currentOrigin = window.location.origin;
|
|
36
|
+
const urlOrigin = new URL(url, window.location.href).origin;
|
|
37
|
+
return urlOrigin === currentOrigin || url.startsWith('/'); // Check if same origin or relative
|
|
38
|
+
}
|
|
18
39
|
}
|
|
19
40
|
MarkdownComponent.ɵfac = function MarkdownComponent_Factory(t) { return new (t || MarkdownComponent)(); };
|
|
20
41
|
MarkdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownComponent, selectors: [["ccd-markdown"]], hostBindings: function MarkdownComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
21
42
|
i0.ɵɵlistener("click", function MarkdownComponent_click_HostBindingHandler($event) { return ctx.onMarkdownClick($event); });
|
|
22
|
-
} }, inputs: { content: "content", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink" }, decls: 4, vars: 5, consts: [[1, "markdown", 3, "data"]], template: function MarkdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
} }, inputs: { content: "content", markdownUseHrefAsRouterLink: "markdownUseHrefAsRouterLink", renderUrlToTextFeature: "renderUrlToTextFeature" }, decls: 4, vars: 5, consts: [[1, "markdown", 3, "data"]], template: function MarkdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
23
44
|
i0.ɵɵelementStart(0, "div");
|
|
24
45
|
i0.ɵɵelement(1, "markdown", 0);
|
|
25
46
|
i0.ɵɵpipe(2, "rpxTranslate");
|
|
@@ -36,8 +57,10 @@ MarkdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MarkdownC
|
|
|
36
57
|
type: Input
|
|
37
58
|
}], markdownUseHrefAsRouterLink: [{
|
|
38
59
|
type: Input
|
|
60
|
+
}], renderUrlToTextFeature: [{
|
|
61
|
+
type: Input
|
|
39
62
|
}], onMarkdownClick: [{
|
|
40
63
|
type: HostListener,
|
|
41
64
|
args: ['click', ['$event']]
|
|
42
65
|
}] }); })();
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbWFya2Rvd24vbWFya2Rvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbWFya2Rvd24vbWFya2Rvd24uaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7O0FBTWpDLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFGTywyQkFBc0IsR0FBYSxJQUFJLENBQUM7SUFFaEMsQ0FBQztJQUVULFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBR00sZUFBZSxDQUFDLEtBQWlCO1FBQ3RDLGdFQUFnRTtRQUNoRSxJQUFJLEtBQUssQ0FBQyxNQUFNLFlBQVksaUJBQWlCLEtBQUssS0FBSyxFQUFFO1lBQ3ZELE9BQU87U0FDUjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLGVBQWU7UUFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFdkMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDcEMsOEVBQThFO1lBQzlFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLEtBQUssSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRSxDQUFDLENBQUM7UUFFRixNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ2hCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQUMsR0FBVztRQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUM3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFNUQsT0FBTyxTQUFTLEtBQUssYUFBYSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxtQ0FBbUM7SUFDaEcsQ0FBQzs7a0ZBNUNVLGlCQUFpQjtvRUFBakIsaUJBQWlCO29HQUFqQiwyQkFBdUI7O1FDUHBDLDJCQUFLO1FBQUEsOEJBQXlGOzs7UUFBQSxpQkFBTTs7UUFBcEUsZUFBa0Q7UUFBbEQsOEVBQWtEOzt1RkRPckUsaUJBQWlCO2NBSjdCLFNBQVM7MkJBQ0UsY0FBYztzQ0FLakIsT0FBTztrQkFEYixLQUFLO1lBR0MsMkJBQTJCO2tCQURqQyxLQUFLO1lBR0Msc0JBQXNCO2tCQUQ1QixLQUFLO1lBYUMsZUFBZTtrQkFEckIsWUFBWTttQkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgbWFya2VkIGZyb20gJ21hcmtlZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1tYXJrZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXJrZG93bi5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBNYXJrZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb250ZW50OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXJrZG93blVzZUhyZWZBc1JvdXRlckxpbmshOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVuZGVyVXJsVG9UZXh0RmVhdHVyZT86IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZW50ID0gdGhpcy5jb250ZW50LnJlcGxhY2UoLyAgXFxuL2csICc8YnI+Jyk7XG4gICAgaWYgKHRoaXMucmVuZGVyVXJsVG9UZXh0RmVhdHVyZSkge1xuICAgICAgdGhpcy5yZW5kZXJVcmxUb1RleHQoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIHB1YmxpYyBvbk1hcmtkb3duQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGFuIGFuY2hvciB0YWcsIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcuXG4gICAgaWYgKGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxBbmNob3JFbGVtZW50ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyVXJsVG9UZXh0KCkgOiB2b2lkIHtcbiAgICBjb25zdCByZW5kZXJlciA9IG5ldyBtYXJrZWQuUmVuZGVyZXIoKTtcblxuICAgIHJlbmRlcmVyLmxpbmsgPSAoaHJlZiwgdGl0bGUsIHRleHQpID0+IHtcbiAgICAgIC8vIFJldHVybiB0aGUgdGV4dCB3aXRob3V0IHR1cm5pbmcgaXQgaW50byBhIGxpbmsgaWYgaXQncyBub3QgYW4gaW50ZXJuYWwgbGlua1xuICAgICAgcmV0dXJuIHRoaXMuaXNBbGxvd2VkVXJsKGhyZWYpID8gYDxhIGhyZWY9XCIke2hyZWZ9XCI+JHt0ZXh0fTwvYT5gIDogdGV4dDtcbiAgICB9O1xuXG4gICAgbWFya2VkLnNldE9wdGlvbnMoe1xuICAgICAgcmVuZGVyZXI6IHJlbmRlcmVyXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzQWxsb3dlZFVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRPcmlnaW4gPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgIGNvbnN0IHVybE9yaWdpbiA9IG5ldyBVUkwodXJsLCB3aW5kb3cubG9jYXRpb24uaHJlZikub3JpZ2luO1xuXG4gICAgcmV0dXJuIHVybE9yaWdpbiA9PT0gY3VycmVudE9yaWdpbiB8fCB1cmwuc3RhcnRzV2l0aCgnLycpOyAvLyBDaGVjayBpZiBzYW1lIG9yaWdpbiBvciByZWxhdGl2ZVxuICB9XG59XG4iLCI8ZGl2PjxtYXJrZG93biBjbGFzcz1cIm1hcmtkb3duXCIgW2RhdGFdPVwiY29udGVudCB8IGNjZENhc2VSZWZlcmVuY2UgfCBycHhUcmFuc2xhdGVcIj48L21hcmtkb3duPjwvZGl2PlxuIl19
|
|
@@ -74,4 +74,4 @@ WriteTextFieldComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wri
|
|
|
74
74
|
type: Component,
|
|
75
75
|
args: [{ selector: 'ccd-write-text-field', template: "<div class=\"form-group\" [ngClass]=\"{'form-group-error': !!textControl && !textControl.valid && (textControl.dirty || textControl.touched)}\">\n <label [for]=\"id()\">\n <span class=\"form-label\" *ngIf=\"caseField.label\">{{caseField | ccdFieldLabel}}</span>\n </label>\n <span class=\"form-hint\" *ngIf=\"caseField.hint_text\">{{caseField.hint_text | rpxTranslate}}</span>\n <span class=\"error-message\" *ngIf=\"textControl?.errors && (textControl.dirty || textControl.touched)\">\n {{textControl.errors | ccdFirstError:caseField.label}}\n </span>\n <input class=\"form-control bottom-30\" [ngClass]=\"{'govuk-input--error': textControl?.errors && (textControl.dirty || textControl.touched)}\"\n [id]=\"id()\" type=\"text\" [formControl]=\"textControl\" (blur)=\"onBlur($event)\">\n</div>\n" }]
|
|
76
76
|
}], null, null); })();
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtdGV4dC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS90ZXh0L3dyaXRlLXRleHQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvdGV4dC93cml0ZS10ZXh0LWZpZWxkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7Ozs7Ozs7O0lDQXZGLCtCQUFpRDtJQUFBLFlBQTZCOztJQUFBLGlCQUFPOzs7SUFBcEMsZUFBNkI7SUFBN0IsNERBQTZCOzs7SUFFaEYsK0JBQW9EO0lBQUEsWUFBc0M7O0lBQUEsaUJBQU87OztJQUE3QyxlQUFzQztJQUF0QyxzRUFBc0M7OztJQUMxRiwrQkFBc0c7SUFDcEcsWUFDRjs7SUFBQSxpQkFBTzs7O0lBREwsZUFDRjtJQURFLHdHQUNGOzs7O0FEQ0YsTUFBTSxPQUFPLHVCQUF3QixTQUFRLDJCQUEyQjtJQUkvRCxRQUFRO1FBQ2IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQWdCLENBQUM7SUFDaEcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNO1FBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25ELENBQUM7OzJRQVZVLHVCQUF1QixTQUF2Qix1QkFBdUI7MEVBQXZCLHVCQUF1QjtRQ1JwQyw4QkFBNEksZUFBQTtRQUV4SSwwRUFBcUY7UUFDdkYsaUJBQVE7UUFDUiwwRUFBaUc7UUFDakcsMEVBRU87UUFDUCxnQ0FDNEU7UUFBeEIsdUdBQVEsa0JBQWMsSUFBQztRQUQzRSxpQkFDNEUsRUFBQTs7UUFUdEQsdUpBQW1IO1FBQ2xJLGVBQVk7UUFBWiw4QkFBWTtRQUNTLGVBQXFCO1FBQXJCLDBDQUFxQjtRQUV4QixlQUF5QjtRQUF6Qiw4Q0FBeUI7UUFDckIsZUFBdUU7UUFBdkUsc0lBQXVFO1FBRzlELGVBQXFHO1FBQXJHLHNLQUFxRyxnQkFBQSxnQ0FBQTs7dUZEQWhJLHVCQUF1QjtjQUpuQyxTQUFTOzJCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdyaXRlLXRleHQtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtdGV4dC1maWVsZC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXcml0ZVRleHRGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHRleHRDb250cm9sOiBGb3JtQ29udHJvbDtcblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy50ZXh0Q29udHJvbCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtQ29udHJvbCh0aGlzLmNhc2VGaWVsZC52YWx1ZSkpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgcHVibGljIG9uQmx1cigkZXZlbnQpIHtcbiAgICAkZXZlbnQudGFyZ2V0LnZhbHVlID0gJGV2ZW50LnRhcmdldC52YWx1ZS50cmltKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogISF0ZXh0Q29udHJvbCAmJiAhdGV4dENvbnRyb2wudmFsaWQgJiYgKHRleHRDb250cm9sLmRpcnR5IHx8IHRleHRDb250cm9sLnRvdWNoZWQpfVwiPlxuICA8bGFiZWwgW2Zvcl09XCJpZCgpXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsXCIgKm5nSWY9XCJjYXNlRmllbGQubGFiZWxcIj57e2Nhc2VGaWVsZCB8IGNjZEZpZWxkTGFiZWx9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbiAgPHNwYW4gY2xhc3M9XCJmb3JtLWhpbnRcIiAqbmdJZj1cImNhc2VGaWVsZC5oaW50X3RleHRcIj57e2Nhc2VGaWVsZC5oaW50X3RleHQgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJlcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJ0ZXh0Q29udHJvbD8uZXJyb3JzICYmICh0ZXh0Q29udHJvbC5kaXJ0eSB8fCB0ZXh0Q29udHJvbC50b3VjaGVkKVwiPlxuICAgIHt7dGV4dENvbnRyb2wuZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjpjYXNlRmllbGQubGFiZWx9fVxuICA8L3NwYW4+XG4gIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzBcIiBbbmdDbGFzc109XCJ7J2dvdnVrLWlucHV0LS1lcnJvcic6IHRleHRDb250cm9sPy5lcnJvcnMgJiYgKHRleHRDb250cm9sLmRpcnR5IHx8IHRleHRDb250cm9sLnRvdWNoZWQpfVwiXG4gIFtpZF09XCJpZCgpXCIgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xdPVwidGV4dENvbnRyb2xcIiAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiPlxuPC9kaXY+XG4iXX0=
|
|
@@ -28,6 +28,9 @@ export class FirstErrorPipe {
|
|
|
28
28
|
else if (keys[0] === 'pattern') {
|
|
29
29
|
errorMessage = 'The data entered is not valid for %FIELDLABEL%';
|
|
30
30
|
}
|
|
31
|
+
else if (keys[0] === 'markDownPattern') {
|
|
32
|
+
errorMessage = 'The data entered is not valid for %FIELDLABEL%. Link mark up characters are not allowed in this field';
|
|
33
|
+
}
|
|
31
34
|
else if (keys[0] === 'minlength') {
|
|
32
35
|
errorMessage = '%FIELDLABEL% is below the minimum length';
|
|
33
36
|
}
|
|
@@ -56,4 +59,4 @@ FirstErrorPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "ccdFirstError",
|
|
|
56
59
|
pure: false
|
|
57
60
|
}]
|
|
58
61
|
}], function () { return [{ type: i1.RpxTranslationService }, { type: i0.Injector }]; }, null); })();
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlyc3QtZXJyb3IucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL3V0aWxzL2ZpcnN0LWVycm9yLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQWEsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUU1RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU0zQyxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUNtQixxQkFBNEMsRUFDNUMsUUFBa0I7UUFEbEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRW5DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBdUIsRUFBRSxJQUFhO1FBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULElBQUksR0FBRyxPQUFPLENBQUM7U0FDaEI7UUFFRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFRCxJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFO1lBQzFCLFlBQVksR0FBRywwQkFBMEIsQ0FBQztTQUMzQzthQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUNoQyxZQUFZLEdBQUcsZ0RBQWdELENBQUM7U0FDakU7YUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsRUFBRTtZQUN4QyxZQUFZLEdBQUcsdUdBQXVHLENBQUM7U0FDeEg7YUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFDbEMsWUFBWSxHQUFHLDBDQUEwQyxDQUFDO1NBQzNEO2FBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ2xDLFlBQVksR0FBRyx5Q0FBeUMsQ0FBQztTQUMxRDthQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO1lBQ3pELFlBQVksR0FBRyw0REFBNEQsQ0FBQztTQUM3RTthQUFNO1lBQ0wsWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQjtRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUM3RCxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsK0JBQStCLENBQUMsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FDOUgsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDOzs0RUFuRFUsY0FBYztvRkFBZCxjQUFjO3VGQUFkLGNBQWM7Y0FKMUIsSUFBSTtlQUFDO2dCQUNKLElBQUksRUFBRSxlQUFlO2dCQUNyQixJQUFJLEVBQUUsS0FBSzthQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBJbmplY3RvciwgT25EZXN0cm95LCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUnB4VHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NjZEZpcnN0RXJyb3InLFxuICBwdXJlOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBGaXJzdEVycm9yUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgYXN5bmNQaXBlOiBBc3luY1BpcGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblNlcnZpY2U6IFJweFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICB0aGlzLmFzeW5jUGlwZSA9IG5ldyBBc3luY1BpcGUodGhpcy5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IFZhbGlkYXRpb25FcnJvcnMsIGFyZ3M/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBpZiAoIWFyZ3MpIHtcbiAgICAgIGFyZ3MgPSAnRmllbGQnO1xuICAgIH1cblxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG5cbiAgICBpZiAoIWtleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIGlmIChrZXlzWzBdID09PSAncmVxdWlyZWQnKSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSAnJUZJRUxETEFCRUwlIGlzIHJlcXVpcmVkJztcbiAgICB9IGVsc2UgaWYgKGtleXNbMF0gPT09ICdwYXR0ZXJuJykge1xuICAgICAgZXJyb3JNZXNzYWdlID0gJ1RoZSBkYXRhIGVudGVyZWQgaXMgbm90IHZhbGlkIGZvciAlRklFTERMQUJFTCUnO1xuICAgIH0gZWxzZSBpZiAoa2V5c1swXSA9PT0gJ21hcmtEb3duUGF0dGVybicpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9ICdUaGUgZGF0YSBlbnRlcmVkIGlzIG5vdCB2YWxpZCBmb3IgJUZJRUxETEFCRUwlLiBMaW5rIG1hcmsgdXAgY2hhcmFjdGVycyBhcmUgbm90IGFsbG93ZWQgaW4gdGhpcyBmaWVsZCc7XG4gICAgfSBlbHNlIGlmIChrZXlzWzBdID09PSAnbWlubGVuZ3RoJykge1xuICAgICAgZXJyb3JNZXNzYWdlID0gJyVGSUVMRExBQkVMJSBpcyBiZWxvdyB0aGUgbWluaW11bSBsZW5ndGgnO1xuICAgIH0gZWxzZSBpZiAoa2V5c1swXSA9PT0gJ21heGxlbmd0aCcpIHtcbiAgICAgIGVycm9yTWVzc2FnZSA9ICclRklFTERMQUJFTCUgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGgnO1xuICAgIH0gZWxzZSBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoJ21hdERhdGV0aW1lUGlja2VyUGFyc2UnKSkge1xuICAgICAgZXJyb3JNZXNzYWdlID0gJ1RoZSBkYXRlIGVudGVyZWQgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIGRhdGUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcnJvck1lc3NhZ2UgPSB2YWx1ZVtrZXlzWzBdXTtcbiAgICB9XG5cbiAgICBjb25zdCBvID0gdGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UuZ2V0VHJhbnNsYXRpb24kKGFyZ3MpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoZmllbGRMYWJlbCA9PiB0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5nZXRUcmFuc2xhdGlvbldpdGhSZXBsYWNlbWVudHMkKGVycm9yTWVzc2FnZSwgeyBGSUVMRExBQkVMOiBmaWVsZExhYmVsIH0pKVxuICAgICk7XG5cbiAgICByZXR1cm4gdGhpcy5hc3luY1BpcGUudHJhbnNmb3JtKG8pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYXN5bmNQaXBlLm5nT25EZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -8,6 +8,7 @@ export class FormValidatorsService {
|
|
|
8
8
|
FormValidatorsService.CUSTOM_VALIDATED_TYPES.indexOf(caseField.field_type.type) === -1) {
|
|
9
9
|
const validators = [Validators.required];
|
|
10
10
|
if (caseField.field_type.type === 'Text') {
|
|
11
|
+
validators.push(this.markDownPatternValidator());
|
|
11
12
|
if (caseField.field_type.regular_expression) {
|
|
12
13
|
validators.push(Validators.pattern(caseField.field_type.regular_expression));
|
|
13
14
|
}
|
|
@@ -21,22 +22,36 @@ export class FormValidatorsService {
|
|
|
21
22
|
validators.push(Validators.maxLength(caseField.field_type.max));
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
if (caseField.field_type.type === 'TextArea') {
|
|
26
|
+
validators.push(this.emptyValidator());
|
|
27
|
+
validators.push(this.markDownPatternValidator());
|
|
28
|
+
}
|
|
24
29
|
if (control.validator) {
|
|
25
30
|
validators.push(control.validator);
|
|
26
31
|
}
|
|
27
32
|
control.setValidators(validators);
|
|
28
33
|
}
|
|
34
|
+
else if (caseField.display_context === 'OPTIONAL' && (caseField.field_type.type === 'Text' || caseField.field_type.type === 'TextArea')) {
|
|
35
|
+
control.setValidators(this.markDownPatternValidator());
|
|
36
|
+
}
|
|
29
37
|
return control;
|
|
30
38
|
}
|
|
31
39
|
static emptyValidator() {
|
|
32
40
|
const validator = (control) => {
|
|
33
|
-
if (control
|
|
41
|
+
if (control?.value?.toString().trim().length === 0) {
|
|
34
42
|
return { required: {} };
|
|
35
43
|
}
|
|
36
44
|
return null;
|
|
37
45
|
};
|
|
38
46
|
return validator;
|
|
39
47
|
}
|
|
48
|
+
static markDownPatternValidator() {
|
|
49
|
+
const pattern = /(\[[^\]]{0,500}\]\([^)]{0,500}\)|!\[[^\]]{0,500}\]\([^)]{0,500}\)|<img[^>]{0,500}>|<a[^>]{0,500}>.*?<\/a>)/;
|
|
50
|
+
return (control) => {
|
|
51
|
+
const value = control?.value?.toString().trim();
|
|
52
|
+
return (value && pattern.test(value)) ? { markDownPattern: {} } : null;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
40
55
|
// TODO: Strip this out as it's only here for the moment because
|
|
41
56
|
// the service is being injected all over the place but it doesn't
|
|
42
57
|
// need to be as FormValidatorsService.addValidators is perfectly
|
|
@@ -44,13 +59,23 @@ export class FormValidatorsService {
|
|
|
44
59
|
addValidators(caseField, control) {
|
|
45
60
|
return FormValidatorsService.addValidators(caseField, control);
|
|
46
61
|
}
|
|
62
|
+
addMarkDownValidators(formGroup, controlPath) {
|
|
63
|
+
const control = formGroup.get(controlPath);
|
|
64
|
+
if (control) {
|
|
65
|
+
control.setValidators(FormValidatorsService.markDownPatternValidator());
|
|
66
|
+
control.updateValueAndValidity();
|
|
67
|
+
}
|
|
68
|
+
return control;
|
|
69
|
+
}
|
|
47
70
|
}
|
|
48
71
|
FormValidatorsService.CUSTOM_VALIDATED_TYPES = [
|
|
49
72
|
'Date', 'MoneyGBP', 'Label', 'JudicialUser'
|
|
50
73
|
];
|
|
74
|
+
FormValidatorsService.DEFAULT_INPUT_TEXT = 'text';
|
|
75
|
+
FormValidatorsService.DEFAULT_INPUT_TEXTAREA = 'textAreas';
|
|
51
76
|
FormValidatorsService.ɵfac = function FormValidatorsService_Factory(t) { return new (t || FormValidatorsService)(); };
|
|
52
77
|
FormValidatorsService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FormValidatorsService, factory: FormValidatorsService.ɵfac });
|
|
53
78
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormValidatorsService, [{
|
|
54
79
|
type: Injectable
|
|
55
80
|
}], null, null); })();
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3JzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL2Zvcm0vZm9ybS12YWxpZGF0b3JzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWtELFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLHFCQUFxQjtJQU96QixNQUFNLENBQUMsYUFBYSxDQUFDLFNBQW9CLEVBQUUsT0FBd0I7UUFDeEUsSUFDRSxTQUFTLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FBQyxTQUFTO1lBQ2pELHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUN0RjtZQUNBLE1BQU0sVUFBVSxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUN4QyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDM0MsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2lCQUM5RTtxQkFBTTtvQkFDTCxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFD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RUFBRSxDQUFDLENBQUM7WUFDeEUsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDbEM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOztBQTVFdUIsNENBQXNCLEdBQW9CO0lBQ2hFLE1BQU0sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLGNBQWM7Q0FDNUMsQ0FBQztBQUNzQix3Q0FBa0IsR0FBRyxNQUFNLENBQUM7QUFDNUIsNENBQXNCLEdBQUcsV0FBVyxDQUFDOzBGQUxsRCxxQkFBcUI7MkVBQXJCLHFCQUFxQixXQUFyQixxQkFBcUI7dUZBQXJCLHFCQUFxQjtjQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29tbW9ucy9jb25zdGFudHMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vZmllbGQtdHlwZS1lbnVtLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1WYWxpZGF0b3JzU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENVU1RPTV9WQUxJREFURURfVFlQRVM6IEZpZWxkVHlwZUVudW1bXSA9IFtcbiAgICAnRGF0ZScsICdNb25leUdCUCcsICdMYWJlbCcsICdKdWRpY2lhbFVzZXInXG4gIF07XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSU5QVVRfVEVYVCA9ICd0ZXh0JztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9JTlBVVF9URVhUQVJFQSA9ICd0ZXh0QXJlYXMnO1xuXG4gIHB1YmxpYyBzdGF0aWMgYWRkVmFsaWRhdG9ycyhjYXNlRmllbGQ6IENhc2VGaWVsZCwgY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICBpZiAoXG4gICAgICBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0ID09PSBDb25zdGFudHMuTUFOREFUT1JZICYmXG4gICAgICBGb3JtVmFsaWRhdG9yc1NlcnZpY2UuQ1VTVE9NX1ZBTElEQVRFRF9UWVBFUy5pbmRleE9mKGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUpID09PSAtMVxuICAgICkge1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkXTtcbiAgICAgIGlmIChjYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnVGV4dCcpIHtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHRoaXMubWFya0Rvd25QYXR0ZXJuVmFsaWRhdG9yKCkpO1xuICAgICAgICBpZiAoY2FzZUZpZWxkLmZpZWxkX3R5cGUucmVndWxhcl9leHByZXNzaW9uKSB7XG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihjYXNlRmllbGQuZmllbGRfdHlwZS5yZWd1bGFyX2V4cHJlc3Npb24pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5lbXB0eVZhbGlkYXRvcigpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FzZUZpZWxkLmZpZWxkX3R5cGUubWluICYmICh0eXBlb2YgY2FzZUZpZWxkLmZpZWxkX3R5cGUubWluID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoY2FzZUZpZWxkLmZpZWxkX3R5cGUubWluKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhc2VGaWVsZC5maWVsZF90eXBlLm1heCAmJiAodHlwZW9mIGNhc2VGaWVsZC5maWVsZF90eXBlLm1heCA9PT0gJ251bWJlcicpKSB7XG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGNhc2VGaWVsZC5maWVsZF90eXBlLm1heCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXNlRmllbGQuZmllbGRfdHlwZS50eXBlID09PSAnVGV4dEFyZWEnKSB7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCh0aGlzLmVtcHR5VmFsaWRhdG9yKCkpO1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2godGhpcy5tYXJrRG93blBhdHRlcm5WYWxpZGF0b3IoKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb250cm9sLnZhbGlkYXRvcikge1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goY29udHJvbC52YWxpZGF0b3IpO1xuICAgICAgfVxuICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xuICAgIH0gZWxzZSBpZiAoY2FzZUZpZWxkLmRpc3BsYXlfY29udGV4dCA9PT0gJ09QVElPTkFMJyAmJiAoY2FzZUZpZWxkLmZpZWxkX3R5cGUudHlwZSA9PT0gJ1RleHQnIHx8IGNhc2VGaWVsZC5maWVsZF90eXBlLnR5cGUgPT09ICdUZXh0QXJlYScpKSB7XG4gICAgICBjb250cm9sLnNldFZhbGlkYXRvcnModGhpcy5tYXJrRG93blBhdHRlcm5WYWxpZGF0b3IoKSk7XG4gICAgfVxuICAgIHJldHVybiBjb250cm9sO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlbXB0eVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgdmFsaWRhdG9yID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6VmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgaWYgKGNvbnRyb2w/LnZhbHVlPy50b1N0cmluZygpLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHsgcmVxdWlyZWQ6IHt9IH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIHJldHVybiB2YWxpZGF0b3I7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1hcmtEb3duUGF0dGVyblZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgcGF0dGVybiA9IC8oXFxbW15cXF1dezAsNTAwfVxcXVxcKFteKV17MCw1MDB9XFwpfCFcXFtbXlxcXV17MCw1MDB9XFxdXFwoW14pXXswLDUwMH1cXCl8PGltZ1tePl17MCw1MDB9Pnw8YVtePl17MCw1MDB9Pi4qPzxcXC9hPikvO1xuXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2w/LnZhbHVlPy50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgIHJldHVybiAodmFsdWUgJiYgcGF0dGVybi50ZXN0KHZhbHVlKSkgPyB7IG1hcmtEb3duUGF0dGVybjoge30gfSA6IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIC8vIFRPRE86IFN0cmlwIHRoaXMgb3V0IGFzIGl0J3Mgb25seSBoZXJlIGZvciB0aGUgbW9tZW50IGJlY2F1c2VcbiAgLy8gdGhlIHNlcnZpY2UgaXMgYmVpbmcgaW5qZWN0ZWQgYWxsIG92ZXIgdGhlIHBsYWNlIGJ1dCBpdCBkb2Vzbid0XG4gIC8vIG5lZWQgdG8gYmUgYXMgRm9ybVZhbGlkYXRvcnNTZXJ2aWNlLmFkZFZhbGlkYXRvcnMgaXMgcGVyZmVjdGx5XG4gIC8vIGhhcHB5IGJlaW5nIHN0YXRpYy5cbiAgcHVibGljIGFkZFZhbGlkYXRvcnMoY2FzZUZpZWxkOiBDYXNlRmllbGQsIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgcmV0dXJuIEZvcm1WYWxpZGF0b3JzU2VydmljZS5hZGRWYWxpZGF0b3JzKGNhc2VGaWVsZCwgY29udHJvbCk7XG4gIH1cblxuICBwdWJsaWMgYWRkTWFya0Rvd25WYWxpZGF0b3JzKGZvcm1Hcm91cDogQWJzdHJhY3RDb250cm9sLCBjb250cm9sUGF0aDogc3RyaW5nKTogQWJzdHJhY3RDb250cm9sIHtcbiAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmdldChjb250cm9sUGF0aCk7XG4gICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyhGb3JtVmFsaWRhdG9yc1NlcnZpY2UubWFya0Rvd25QYXR0ZXJuVmFsaWRhdG9yKCkpO1xuICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICAgIHJldHVybiBjb250cm9sO1xuICB9XG59XG4iXX0=
|