atr-components 2.2.4 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +24 -24
  2. package/fesm2022/atr-components.mjs +191 -576
  3. package/fesm2022/atr-components.mjs.map +1 -1
  4. package/index.d.ts +1371 -5
  5. package/package.json +2 -4
  6. package/atr-components.module.d.ts +0 -9
  7. package/atr-public-api.d.ts +0 -53
  8. package/core/animations/animations.d.ts +0 -1
  9. package/core/animations/fly-in.d.ts +0 -1
  10. package/core/animations/scroll-screen.d.ts +0 -1
  11. package/core/auth/auth.guard.d.ts +0 -11
  12. package/core/base/atr-common.d.ts +0 -362
  13. package/core/directive/Infinite-scroll.directive.d.ts +0 -12
  14. package/core/directive/debounce-click.directive.d.ts +0 -14
  15. package/core/directive/error-img.directive.d.ts +0 -10
  16. package/core/directive/hq-spin.directive.d.ts +0 -13
  17. package/core/directive/role.directive.d.ts +0 -16
  18. package/core/interceptor/base.interceptor.d.ts +0 -17
  19. package/core/ngz-module/cus-zorro-antd.module.d.ts +0 -75
  20. package/core/pipe/china-num.pipe.d.ts +0 -7
  21. package/core/pipe/count.pipe.d.ts +0 -7
  22. package/core/pipe/day.pipe.d.ts +0 -8
  23. package/core/pipe/defaultVal.pipe.d.ts +0 -7
  24. package/core/pipe/dicts.pipe.d.ts +0 -10
  25. package/core/pipe/image-pipe.pipe.d.ts +0 -8
  26. package/core/pipe/is-empty.pipe.d.ts +0 -7
  27. package/core/pipe/is-not-empty.pipe.d.ts +0 -7
  28. package/core/pipe/oss.pipe.d.ts +0 -7
  29. package/core/pipe/ossStatic.pipe.d.ts +0 -7
  30. package/core/pipe/pipe-module.module.d.ts +0 -21
  31. package/core/pipe/remove-html.pipe.d.ts +0 -10
  32. package/core/pipe/safe-compute.pipe.d.ts +0 -7
  33. package/core/pipe/safe-html.pipe.d.ts +0 -10
  34. package/core/pipe/safe-url.pipe.d.ts +0 -10
  35. package/core/routereuse/atr-reuse-strategy.d.ts +0 -19
  36. package/core/services/dict/dict.service.d.ts +0 -20
  37. package/core/services/http.service.d.ts +0 -31
  38. package/core/services/menu.service.d.ts +0 -30
  39. package/core/services/upload-oss.service.d.ts +0 -14
  40. package/core/utils/ToolsUtil.d.ts +0 -180
  41. package/core/utils/localstorage.util.d.ts +0 -15
  42. package/core/utils/sessionstorage.util.d.ts +0 -15
  43. package/esm2022/atr-components.mjs +0 -5
  44. package/esm2022/atr-components.module.mjs +0 -36
  45. package/esm2022/atr-public-api.mjs +0 -55
  46. package/esm2022/core/animations/animations.mjs +0 -10
  47. package/esm2022/core/animations/fly-in.mjs +0 -19
  48. package/esm2022/core/animations/scroll-screen.mjs +0 -23
  49. package/esm2022/core/auth/auth.guard.mjs +0 -37
  50. package/esm2022/core/base/atr-common.mjs +0 -48
  51. package/esm2022/core/directive/Infinite-scroll.directive.mjs +0 -36
  52. package/esm2022/core/directive/debounce-click.directive.mjs +0 -41
  53. package/esm2022/core/directive/error-img.directive.mjs +0 -31
  54. package/esm2022/core/directive/hq-spin.directive.mjs +0 -48
  55. package/esm2022/core/directive/role.directive.mjs +0 -69
  56. package/esm2022/core/interceptor/base.interceptor.mjs +0 -165
  57. package/esm2022/core/ngz-module/cus-zorro-antd.module.mjs +0 -292
  58. package/esm2022/core/pipe/china-num.pipe.mjs +0 -36
  59. package/esm2022/core/pipe/count.pipe.mjs +0 -34
  60. package/esm2022/core/pipe/day.pipe.mjs +0 -24
  61. package/esm2022/core/pipe/defaultVal.pipe.mjs +0 -23
  62. package/esm2022/core/pipe/dicts.pipe.mjs +0 -28
  63. package/esm2022/core/pipe/image-pipe.pipe.mjs +0 -17
  64. package/esm2022/core/pipe/is-empty.pipe.mjs +0 -20
  65. package/esm2022/core/pipe/is-not-empty.pipe.mjs +0 -17
  66. package/esm2022/core/pipe/oss.pipe.mjs +0 -17
  67. package/esm2022/core/pipe/ossStatic.pipe.mjs +0 -17
  68. package/esm2022/core/pipe/pipe-module.module.mjs +0 -78
  69. package/esm2022/core/pipe/remove-html.pipe.mjs +0 -21
  70. package/esm2022/core/pipe/safe-compute.pipe.mjs +0 -23
  71. package/esm2022/core/pipe/safe-html.pipe.mjs +0 -20
  72. package/esm2022/core/pipe/safe-url.pipe.mjs +0 -20
  73. package/esm2022/core/routereuse/atr-reuse-strategy.mjs +0 -79
  74. package/esm2022/core/services/dict/dict.service.mjs +0 -152
  75. package/esm2022/core/services/http.service.mjs +0 -316
  76. package/esm2022/core/services/menu.service.mjs +0 -130
  77. package/esm2022/core/services/upload-oss.service.mjs +0 -74
  78. package/esm2022/core/utils/ToolsUtil.mjs +0 -622
  79. package/esm2022/core/utils/localstorage.util.mjs +0 -94
  80. package/esm2022/core/utils/sessionstorage.util.mjs +0 -73
  81. package/esm2022/lib/shared/atr-shared.module.mjs +0 -248
  82. package/esm2022/lib/shared/echarts/echarts.component.mjs +0 -77
  83. package/esm2022/lib/shared/form/form.component.mjs +0 -624
  84. package/esm2022/lib/shared/img-canvas/img-canvas.component.mjs +0 -132
  85. package/esm2022/lib/shared/local-upload/local-upload.component.mjs +0 -68
  86. package/esm2022/lib/shared/quill-editor/quill-editor.component.mjs +0 -254
  87. package/esm2022/lib/shared/select-icons/select-icons.component.mjs +0 -90
  88. package/esm2022/lib/shared/select-tree/select-tree.component.mjs +0 -55
  89. package/esm2022/lib/shared/service/busi.service.mjs +0 -69
  90. package/esm2022/lib/shared/share.service.mjs +0 -107
  91. package/esm2022/lib/shared/table/table-form-item/table-form-item.component.mjs +0 -96
  92. package/esm2022/lib/shared/table/table-td/table-td.component.mjs +0 -165
  93. package/esm2022/lib/shared/table/table.component.mjs +0 -766
  94. package/esm2022/lib/shared/upload/upload.component.mjs +0 -273
  95. package/esm2022/lib/shared/validators/atr-validtors.mjs +0 -9
  96. package/esm2022/lib/shared/video/video.component.mjs +0 -16
  97. package/esm2022/lib/shared/view-form/view-form.component.mjs +0 -186
  98. package/lib/shared/atr-shared.module.d.ts +0 -39
  99. package/lib/shared/echarts/echarts.component.d.ts +0 -34
  100. package/lib/shared/form/form.component.d.ts +0 -49
  101. package/lib/shared/img-canvas/img-canvas.component.d.ts +0 -28
  102. package/lib/shared/local-upload/local-upload.component.d.ts +0 -22
  103. package/lib/shared/quill-editor/quill-editor.component.d.ts +0 -45
  104. package/lib/shared/select-icons/select-icons.component.d.ts +0 -24
  105. package/lib/shared/select-tree/select-tree.component.d.ts +0 -23
  106. package/lib/shared/service/busi.service.d.ts +0 -20
  107. package/lib/shared/share.service.d.ts +0 -14
  108. package/lib/shared/table/table-form-item/table-form-item.component.d.ts +0 -25
  109. package/lib/shared/table/table-td/table-td.component.d.ts +0 -26
  110. package/lib/shared/table/table.component.d.ts +0 -94
  111. package/lib/shared/upload/upload.component.d.ts +0 -53
  112. package/lib/shared/validators/atr-validtors.d.ts +0 -2
  113. package/lib/shared/video/video.component.d.ts +0 -7
  114. package/lib/shared/view-form/view-form.component.d.ts +0 -27
@@ -1,132 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ImgCanvasComponent {
4
- set url(url) {
5
- // if (url && url.indexOf('?v=') < 0) {
6
- // if (url.indexOf("?") < 0) {
7
- // url += "?";
8
- //
9
- // }
10
- // url += "v=" + new Date().getTime()
11
- // }
12
- this.imgUrl = url;
13
- }
14
- constructor(elementRef) {
15
- this.elementRef = elementRef;
16
- this.needTime = false;
17
- this.width = 800;
18
- this.height = 800;
19
- this.clipArr = [];
20
- this.rotateNum = 0;
21
- this.loadOver = new EventEmitter();
22
- this.needContextmenu = false;
23
- }
24
- ngOnInit() {
25
- }
26
- getCanvasFull() {
27
- let imgW = this.img.width; //图片的宽
28
- let imgH = this.img.height; //图片的高
29
- let cW = this.width;
30
- let cH = this.height;
31
- let rateW = imgH / imgW; //比例
32
- let rateH = imgW / imgH; //比例
33
- if (imgW > imgH) {
34
- imgW = this.width;
35
- imgH = imgW * rateW;
36
- if (imgH > cH) {
37
- imgH = cH;
38
- imgW = imgH * rateH;
39
- }
40
- }
41
- else {
42
- imgH = this.height;
43
- imgW = imgH * rateH;
44
- if (imgW > cW) {
45
- imgW = cW;
46
- imgH = imgW * rateW;
47
- }
48
- }
49
- // imgH = this.canvasDom.offsetHeight
50
- // imgW = this.canvasDom.offsetWidth
51
- // let canvasH = imgH * rate
52
- // if (canvasH > this.height) {
53
- // canvasH = this.height
54
- // rate = canvasH / imgH
55
- // canvasW = imgW * rate
56
- // }
57
- console.log("图片宽高", imgW + ";" + imgH);
58
- return {
59
- imgW: imgW,
60
- imgH: imgH
61
- };
62
- }
63
- initImg(needSession = true) {
64
- this.canvasDom = this.canvas1.nativeElement;
65
- // this.canvasDom = document.getElementById(this.canvasId);
66
- //检测支持性
67
- if (!this.canvasDom.getContext('2d'))
68
- return;
69
- //获得 2d 上下文对象
70
- let context1 = this.canvasDom.getContext('2d');
71
- let img = new Image();
72
- img.setAttribute('crossOrigin', 'anonymous');
73
- if (this.needTime) {
74
- if (this.imgUrl.indexOf("?") < 0) {
75
- this.imgUrl += "?";
76
- }
77
- this.imgUrl += "v=" + new Date().getTime();
78
- }
79
- img.src = this.imgUrl;
80
- img.onload = () => {
81
- this.img = img;
82
- const { imgW, imgH } = this.getCanvasFull();
83
- this.canvasDom.width = this.width;
84
- this.canvasDom.height = this.height;
85
- if (this.clipArr && this.clipArr.length > 0) {
86
- this.goClip(context1);
87
- }
88
- // 参数 1:要绘制的 img 参数 2、3:绘制的 img 在 canvas 中的坐标 参数4,5是width,height
89
- context1.drawImage(this.img, 0, 0, this.width, this.height);
90
- this.loadOver.emit({ code: 'loadOver' });
91
- };
92
- }
93
- goClip(context) {
94
- context.beginPath();
95
- context.moveTo(this.clipArr[0].x1, this.clipArr[0].y1);
96
- this.clipArr.forEach((item, index) => {
97
- if (index > 0) {
98
- context.lineTo(item.x1, item.y1);
99
- }
100
- });
101
- context.lineTo(this.clipArr[0].x1, this.clipArr[0].y1);
102
- context.clip();
103
- }
104
- ngAfterViewInit() {
105
- setTimeout(() => {
106
- console.log('当前组件宽高', this.elementRef.nativeElement.offsetHeight);
107
- this.initImg();
108
- }, 300);
109
- }
110
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgCanvasComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
111
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ImgCanvasComponent, selector: "app-img", inputs: { needTime: "needTime", url: "url", clipArr: "clipArr", rotateNum: "rotateNum", needContextmenu: "needContextmenu" }, outputs: { loadOver: "loadOver" }, viewQueries: [{ propertyName: "canvas1", first: true, predicate: ["canvas1"], descendants: true }], ngImport: i0, template: "<canvas #canvas1 style=\"width: 100%;height: 100%;\" oncontextmenu=\"return needContextmenu\">\n \u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u753B\u5E03\uFF01\n</canvas>\n<ng-content></ng-content>\n", styles: [""] }); }
112
- }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImgCanvasComponent, decorators: [{
114
- type: Component,
115
- args: [{ selector: 'app-img', template: "<canvas #canvas1 style=\"width: 100%;height: 100%;\" oncontextmenu=\"return needContextmenu\">\n \u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u753B\u5E03\uFF01\n</canvas>\n<ng-content></ng-content>\n" }]
116
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { needTime: [{
117
- type: Input
118
- }], url: [{
119
- type: Input
120
- }], canvas1: [{
121
- type: ViewChild,
122
- args: ['canvas1', { static: false }]
123
- }], clipArr: [{
124
- type: Input
125
- }], rotateNum: [{
126
- type: Input
127
- }], loadOver: [{
128
- type: Output
129
- }], needContextmenu: [{
130
- type: Input
131
- }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2ltZy1jYW52YXMvaW1nLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2ltZy1jYW52YXMvaW1nLWNhbnZhcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBU25ILE1BQU0sT0FBTyxrQkFBa0I7SUFJN0IsSUFBYSxHQUFHLENBQUMsR0FBVztRQUMxQix1Q0FBdUM7UUFDdkMsZ0NBQWdDO1FBQ2hDLGtCQUFrQjtRQUNsQixFQUFFO1FBQ0YsTUFBTTtRQUNOLHVDQUF1QztRQUN2QyxJQUFJO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQWFELFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF4QmpDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFlMUIsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNaLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFHSixZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBUSxDQUFDLENBQUM7UUFDbEIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELG9CQUFlLEdBQUcsS0FBSyxDQUFBO0lBR2hDLENBQUM7SUFFRCxRQUFRO0lBRVIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFBLE1BQU07UUFDL0IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUEsQ0FBQSxNQUFNO1FBQ2hDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDcEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFBLENBQUEsSUFBSTtRQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFBLENBQUEsSUFBSTtRQUMzQixJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7WUFDZixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtZQUNqQixJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxHQUFHLEVBQUUsQ0FBQTtnQkFDVCxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQTthQUNwQjtTQUNGO2FBQU07WUFDTCxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtZQUNsQixJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLElBQUksR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsSUFBSSxHQUFHLEVBQUUsQ0FBQTtnQkFDVCxJQUFJLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQTthQUNwQjtTQUNGO1FBRUQscUNBQXFDO1FBQ3JDLG9DQUFvQztRQUNwQyw0QkFBNEI7UUFDNUIsK0JBQStCO1FBQy9CLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsMEJBQTBCO1FBQzFCLElBQUk7UUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQ3RDLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJO1NBQ1gsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUk7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUM1QywyREFBMkQ7UUFDM0QsT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBQzdDLGFBQWE7UUFDYixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQyxJQUFJLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO1FBQ3JCLEdBQUcsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQzVDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7YUFDcEI7WUFDRCxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFBO1NBQzNDO1FBQ0QsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1FBQ3JCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFBO1lBQ2QsTUFBTSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDdEI7WUFDRCxrRUFBa0U7WUFDbEUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQTtRQUN4QyxDQUFDLENBQUE7SUFDSCxDQUFDO0lBR0QsTUFBTSxDQUFDLE9BQVk7UUFDakIsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ25CLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNuQyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsZUFBZTtRQUNiLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUNqRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDaEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ1QsQ0FBQzsrR0F2SFUsa0JBQWtCO21HQUFsQixrQkFBa0Isb1RDVC9CLDhNQUlBOzs0RkRLYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsU0FBUzsrRUFNVixRQUFRO3NCQUFoQixLQUFLO2dCQUVPLEdBQUc7c0JBQWYsS0FBSztnQkFXaUMsT0FBTztzQkFBN0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQU01QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Nlc3Npb25TdG9yYWdlVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvc2Vzc2lvbnN0b3JhZ2UudXRpbFwiO1xuaW1wb3J0IHtUb29sc1V0aWx9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3V0aWxzL1Rvb2xzVXRpbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtaW1nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ltZy1jYW52YXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbWctY2FudmFzLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1nQ2FudmFzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSBuZWVkVGltZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICAvLyBpZiAodXJsICYmIHVybC5pbmRleE9mKCc/dj0nKSA8IDApIHtcbiAgICAvLyAgIGlmICh1cmwuaW5kZXhPZihcIj9cIikgPCAwKSB7XG4gICAgLy8gICAgIHVybCArPSBcIj9cIjtcbiAgICAvL1xuICAgIC8vICAgfVxuICAgIC8vICAgdXJsICs9IFwidj1cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgLy8gfVxuICAgIHRoaXMuaW1nVXJsID0gdXJsO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnY2FudmFzMScsIHtzdGF0aWM6IGZhbHNlfSkgY2FudmFzMTogYW55O1xuICBjYW52YXNEb206IGFueVxuICB3aWR0aCA9IDgwMDtcbiAgaGVpZ2h0ID0gODAwO1xuICBpbWdVcmw6IGFueTtcbiAgaW1nOiBhbnk7XG4gIEBJbnB1dCgpIGNsaXBBcnI6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHJvdGF0ZU51bTogYW55ID0gMDtcbiAgQE91dHB1dCgpIGxvYWRPdmVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgbmVlZENvbnRleHRtZW51ID0gZmFsc2VcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gIH1cblxuICBnZXRDYW52YXNGdWxsKCkge1xuICAgIGxldCBpbWdXID0gdGhpcy5pbWcud2lkdGgvL+WbvueJh+eahOWuvVxuICAgIGxldCBpbWdIID0gdGhpcy5pbWcuaGVpZ2h0Ly/lm77niYfnmoTpq5hcbiAgICBsZXQgY1cgPSB0aGlzLndpZHRoO1xuICAgIGxldCBjSCA9IHRoaXMuaGVpZ2h0O1xuICAgIGxldCByYXRlVyA9IGltZ0ggLyBpbWdXLy/mr5TkvotcbiAgICBsZXQgcmF0ZUggPSBpbWdXIC8gaW1nSC8v5q+U5L6LXG4gICAgaWYgKGltZ1cgPiBpbWdIKSB7XG4gICAgICBpbWdXID0gdGhpcy53aWR0aFxuICAgICAgaW1nSCA9IGltZ1cgKiByYXRlVztcbiAgICAgIGlmIChpbWdIID4gY0gpIHtcbiAgICAgICAgaW1nSCA9IGNIXG4gICAgICAgIGltZ1cgPSBpbWdIICogcmF0ZUhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW1nSCA9IHRoaXMuaGVpZ2h0XG4gICAgICBpbWdXID0gaW1nSCAqIHJhdGVIO1xuICAgICAgaWYgKGltZ1cgPiBjVykge1xuICAgICAgICBpbWdXID0gY1dcbiAgICAgICAgaW1nSCA9IGltZ1cgKiByYXRlV1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGltZ0ggPSB0aGlzLmNhbnZhc0RvbS5vZmZzZXRIZWlnaHRcbiAgICAvLyBpbWdXID0gdGhpcy5jYW52YXNEb20ub2Zmc2V0V2lkdGhcbiAgICAvLyBsZXQgY2FudmFzSCA9IGltZ0ggKiByYXRlXG4gICAgLy8gaWYgKGNhbnZhc0ggPiB0aGlzLmhlaWdodCkge1xuICAgIC8vICAgY2FudmFzSCA9IHRoaXMuaGVpZ2h0XG4gICAgLy8gICByYXRlID0gY2FudmFzSCAvIGltZ0hcbiAgICAvLyAgIGNhbnZhc1cgPSBpbWdXICogcmF0ZVxuICAgIC8vIH1cbiAgICBjb25zb2xlLmxvZyhcIuWbvueJh+WuvemrmFwiLCBpbWdXICsgXCI7XCIgKyBpbWdIKVxuICAgIHJldHVybiB7XG4gICAgICBpbWdXOiBpbWdXLFxuICAgICAgaW1nSDogaW1nSFxuICAgIH1cbiAgfVxuXG4gIGluaXRJbWcobmVlZFNlc3Npb24gPSB0cnVlKSB7XG4gICAgdGhpcy5jYW52YXNEb20gPSB0aGlzLmNhbnZhczEubmF0aXZlRWxlbWVudDtcbiAgICAvLyB0aGlzLmNhbnZhc0RvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuY2FudmFzSWQpO1xuICAgIC8v5qOA5rWL5pSv5oyB5oCnXG4gICAgaWYgKCF0aGlzLmNhbnZhc0RvbS5nZXRDb250ZXh0KCcyZCcpKSByZXR1cm47XG4gICAgLy/ojrflvpcgMmQg5LiK5LiL5paH5a+56LGhXG4gICAgbGV0IGNvbnRleHQxID0gdGhpcy5jYW52YXNEb20uZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBsZXQgaW1nID0gbmV3IEltYWdlKClcbiAgICBpbWcuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICdhbm9ueW1vdXMnKVxuICAgIGlmICh0aGlzLm5lZWRUaW1lKSB7XG4gICAgICBpZiAodGhpcy5pbWdVcmwuaW5kZXhPZihcIj9cIikgPCAwKSB7XG4gICAgICAgIHRoaXMuaW1nVXJsICs9IFwiP1wiO1xuICAgICAgfVxuICAgICAgdGhpcy5pbWdVcmwgKz0gXCJ2PVwiICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICB9XG4gICAgaW1nLnNyYyA9IHRoaXMuaW1nVXJsXG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHRoaXMuaW1nID0gaW1nXG4gICAgICBjb25zdCB7aW1nVywgaW1nSH0gPSB0aGlzLmdldENhbnZhc0Z1bGwoKTtcbiAgICAgIHRoaXMuY2FudmFzRG9tLndpZHRoID0gdGhpcy53aWR0aDtcbiAgICAgIHRoaXMuY2FudmFzRG9tLmhlaWdodCA9IHRoaXMuaGVpZ2h0O1xuICAgICAgaWYgKHRoaXMuY2xpcEFyciAmJiB0aGlzLmNsaXBBcnIubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmdvQ2xpcChjb250ZXh0MSlcbiAgICAgIH1cbiAgICAgIC8vIOWPguaVsCAx77ya6KaB57uY5Yi255qEIGltZyAgIOWPguaVsCAy44CBM++8mue7mOWItueahCBpbWcg5ZyoIGNhbnZhcyDkuK3nmoTlnZDmoIcg5Y+C5pWwNCw15pivd2lkdGjvvIxoZWlnaHRcbiAgICAgIGNvbnRleHQxLmRyYXdJbWFnZSh0aGlzLmltZywgMCwgMCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsKTtcbiAgICAgIHRoaXMubG9hZE92ZXIuZW1pdCh7Y29kZTogJ2xvYWRPdmVyJ30pXG4gICAgfVxuICB9XG5cblxuICBnb0NsaXAoY29udGV4dDogYW55KSB7XG4gICAgY29udGV4dC5iZWdpblBhdGgoKVxuICAgIGNvbnRleHQubW92ZVRvKHRoaXMuY2xpcEFyclswXS54MSwgdGhpcy5jbGlwQXJyWzBdLnkxKTtcbiAgICB0aGlzLmNsaXBBcnIuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54MSwgaXRlbS55MSlcbiAgICAgIH1cbiAgICB9KVxuICAgIGNvbnRleHQubGluZVRvKHRoaXMuY2xpcEFyclswXS54MSwgdGhpcy5jbGlwQXJyWzBdLnkxKTtcbiAgICBjb250ZXh0LmNsaXAoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCflvZPliY3nu4Tku7blrr3pq5gnLCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpXG4gICAgICB0aGlzLmluaXRJbWcoKVxuICAgIH0sIDMwMClcbiAgfVxuXG59XG4iLCI8Y2FudmFzICNjYW52YXMxIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO1wiIG9uY29udGV4dG1lbnU9XCJyZXR1cm4gbmVlZENvbnRleHRtZW51XCI+XG4gIOaCqOeahOa1j+iniOWZqOS4jeaUr+aMgeeUu+W4g++8gVxuPC9jYW52YXM+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
@@ -1,68 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { LocalStorageUtil } from "../../../core/utils/localstorage.util";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "ng-zorro-antd/button";
6
- import * as i3 from "ng-zorro-antd/core/transition-patch";
7
- import * as i4 from "ng-zorro-antd/core/wave";
8
- import * as i5 from "ng-zorro-antd/icon";
9
- import * as i6 from "ng-zorro-antd/upload";
10
- import * as i7 from "../../../core/directive/role.directive";
11
- export class LocalUploadComponent {
12
- constructor() {
13
- this.nzAccept = 'application/vnd.ms-excel';
14
- this.afterChange = new EventEmitter();
15
- this.showList = false;
16
- this.header = (file) => {
17
- let obj = {
18
- "x-header-atr": "web",
19
- "token": LocalStorageUtil.getUserToken(),
20
- // "orgCode" : ToolsUtil.getOrgCode()
21
- };
22
- return obj;
23
- };
24
- }
25
- ngOnInit() {
26
- // this.header = this.getDefaultHeader(new HttpHeaders());
27
- }
28
- onChange(params) {
29
- console.log(params);
30
- if (params.type == "success" || params.type == "removed") {
31
- let fileUrls = [];
32
- for (let file of params.fileList) {
33
- if (file["key"] != undefined) {
34
- fileUrls.push(file["key"]);
35
- continue;
36
- }
37
- if (file.originFileObj) {
38
- let originFileObj = file.originFileObj;
39
- if (originFileObj["key"] != undefined) {
40
- fileUrls.push(originFileObj["key"]);
41
- }
42
- }
43
- }
44
- this.afterChange.emit(params);
45
- }
46
- }
47
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LocalUploadComponent, selector: "atr-local-upload", inputs: { beforeUpload: "beforeUpload", url: "url", nzAccept: "nzAccept", name: "name", code: "code", withoutRole: "withoutRole" }, outputs: { afterChange: "afterChange" }, ngImport: i0, template: "<ng-container *ngIf=\"!withoutRole\">\r\n <nz-upload [nzAction]=\"url\" [nzAccept]=\"nzAccept\"\r\n [nzHeaders]=\"header\" [nzShowUploadList]=\"showList\"\r\n nzListType=\"picture-card\"\r\n [nzBeforeUpload]=\"beforeUpload\"\r\n (nzChange)=\"onChange($event)\"\r\n *atrRole=\"code\" [nzLimit]='1'>\r\n <button nz-button nzSize=\"small\"><i nz-icon nzType=\"upload\"></i><span> {{name}}</span></button>\r\n </nz-upload>\r\n</ng-container>\r\n<ng-container *ngIf=\"withoutRole\">\r\n <nz-upload [nzAction]=\"url\" [nzAccept]=\"nzAccept\" [nzHeaders]=\"header\" [nzShowUploadList]=\"showList\"\r\n [nzBeforeUpload]=\"beforeUpload\"\r\n (nzChange)=\"onChange($event)\"\r\n [nzLimit]='1'>\r\n <button nz-button nzSize=\"small\"><i nz-icon nzType=\"upload\"></i><span> {{name}}</span></button>\r\n </nz-upload>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i3.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i4.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "directive", type: i5.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i6.NzUploadComponent, selector: "nz-upload", inputs: ["nzType", "nzLimit", "nzSize", "nzFileType", "nzAccept", "nzAction", "nzDirectory", "nzOpenFileDialogOnClick", "nzBeforeUpload", "nzCustomRequest", "nzData", "nzFilter", "nzFileList", "nzDisabled", "nzHeaders", "nzListType", "nzMultiple", "nzName", "nzShowUploadList", "nzShowButton", "nzWithCredentials", "nzRemove", "nzPreview", "nzPreviewFile", "nzPreviewIsImage", "nzTransformFile", "nzDownload", "nzIconRender", "nzFileListRender"], outputs: ["nzChange", "nzFileListChange"], exportAs: ["nzUpload"] }, { kind: "directive", type: i7.AtrRoleDirective, selector: "[atrRole]", inputs: ["atrRole"] }] }); }
49
- }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalUploadComponent, decorators: [{
51
- type: Component,
52
- args: [{ selector: 'atr-local-upload', template: "<ng-container *ngIf=\"!withoutRole\">\r\n <nz-upload [nzAction]=\"url\" [nzAccept]=\"nzAccept\"\r\n [nzHeaders]=\"header\" [nzShowUploadList]=\"showList\"\r\n nzListType=\"picture-card\"\r\n [nzBeforeUpload]=\"beforeUpload\"\r\n (nzChange)=\"onChange($event)\"\r\n *atrRole=\"code\" [nzLimit]='1'>\r\n <button nz-button nzSize=\"small\"><i nz-icon nzType=\"upload\"></i><span> {{name}}</span></button>\r\n </nz-upload>\r\n</ng-container>\r\n<ng-container *ngIf=\"withoutRole\">\r\n <nz-upload [nzAction]=\"url\" [nzAccept]=\"nzAccept\" [nzHeaders]=\"header\" [nzShowUploadList]=\"showList\"\r\n [nzBeforeUpload]=\"beforeUpload\"\r\n (nzChange)=\"onChange($event)\"\r\n [nzLimit]='1'>\r\n <button nz-button nzSize=\"small\"><i nz-icon nzType=\"upload\"></i><span> {{name}}</span></button>\r\n </nz-upload>\r\n</ng-container>\r\n" }]
53
- }], ctorParameters: () => [], propDecorators: { beforeUpload: [{
54
- type: Input
55
- }], url: [{
56
- type: Input
57
- }], nzAccept: [{
58
- type: Input
59
- }], name: [{
60
- type: Input
61
- }], code: [{
62
- type: Input
63
- }], withoutRole: [{
64
- type: Input
65
- }], afterChange: [{
66
- type: Output
67
- }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvbG9jYWwtdXBsb2FkL2xvY2FsLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2xvY2FsLXVwbG9hZC9sb2NhbC11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7O0FBUXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFXL0I7UUFSUyxhQUFRLEdBQUcsMEJBQTBCLENBQUM7UUFLL0MsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRCxhQUFRLEdBQVEsS0FBSyxDQUFDO1FBTXRCLFdBQU0sR0FBSSxDQUFDLElBQWtCLEVBQUUsRUFBRTtZQUMvQixJQUFJLEdBQUcsR0FBRztnQkFDUixjQUFjLEVBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFHLGdCQUFnQixDQUFDLFlBQVksRUFBRTtnQkFDekMscUNBQXFDO2FBQ3RDLENBQUE7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQztJQWJjLENBQUM7SUFFakIsUUFBUTtRQUNOLDBEQUEwRDtJQUM1RCxDQUFDO0lBVUQsUUFBUSxDQUFDLE1BQTJCO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUN4RCxJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7WUFDekIsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLEVBQUU7b0JBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzNCLFNBQVM7aUJBQ1Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUN0QixJQUFJLGFBQWEsR0FBUSxJQUFJLENBQUMsYUFBYSxDQUFBO29CQUMzQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLEVBQUU7d0JBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7cUJBQ3BDO2lCQUNGO2FBQ0Y7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7K0dBNUNVLG9CQUFvQjttR0FBcEIsb0JBQW9CLHFPQ1RqQyx1NkJBa0JBOzs0RkRUYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCO3dEQUtuQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3V0aWxzL2xvY2Fsc3RvcmFnZS51dGlsXCI7XHJcbmltcG9ydCB7TnpVcGxvYWRDaGFuZ2VQYXJhbSwgTnpVcGxvYWRGaWxlfSBmcm9tICduZy16b3Jyby1hbnRkL3VwbG9hZCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F0ci1sb2NhbC11cGxvYWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2NhbC11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xvY2FsLXVwbG9hZC5jb21wb25lbnQubGVzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgYmVmb3JlVXBsb2FkOiBhbnk7XHJcbiAgQElucHV0KCkgdXJsOmFueTtcclxuICBASW5wdXQoKSBuekFjY2VwdCA9ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnO1xyXG4gIEBJbnB1dCgpIG5hbWU6YW55O1xyXG4gIEBJbnB1dCgpIGNvZGU6YW55O1xyXG4gIEBJbnB1dCgpIHdpdGhvdXRSb2xlOmFueTtcclxuICBAT3V0cHV0KClcclxuICBhZnRlckNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHNob3dMaXN0IDphbnkgPSBmYWxzZTtcclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vIHRoaXMuaGVhZGVyID0gdGhpcy5nZXREZWZhdWx0SGVhZGVyKG5ldyBIdHRwSGVhZGVycygpKTtcclxuICB9XHJcbiAgaGVhZGVyICA9IChmaWxlOiBOelVwbG9hZEZpbGUpID0+IHtcclxuICAgIGxldCBvYmogPSB7XHJcbiAgICAgIFwieC1oZWFkZXItYXRyXCI6XCJ3ZWJcIixcclxuICAgICAgXCJ0b2tlblwiIDogTG9jYWxTdG9yYWdlVXRpbC5nZXRVc2VyVG9rZW4oKSxcclxuICAgICAgLy8gXCJvcmdDb2RlXCIgOiBUb29sc1V0aWwuZ2V0T3JnQ29kZSgpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9iajtcclxuICB9O1xyXG4gIG9uQ2hhbmdlKHBhcmFtczogTnpVcGxvYWRDaGFuZ2VQYXJhbSkge1xyXG4gICAgY29uc29sZS5sb2cocGFyYW1zKTtcclxuICAgIGlmIChwYXJhbXMudHlwZSA9PSBcInN1Y2Nlc3NcIiB8fCBwYXJhbXMudHlwZSA9PSBcInJlbW92ZWRcIikge1xyXG4gICAgICBsZXQgZmlsZVVybHM6IGFueVtdID0gW107XHJcbiAgICAgIGZvciAobGV0IGZpbGUgb2YgcGFyYW1zLmZpbGVMaXN0KSB7XHJcbiAgICAgICAgaWYgKGZpbGVbXCJrZXlcIl0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBmaWxlVXJscy5wdXNoKGZpbGVbXCJrZXlcIl0pO1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWxlLm9yaWdpbkZpbGVPYmopIHtcclxuICAgICAgICAgIGxldCBvcmlnaW5GaWxlT2JqOiBhbnkgPSBmaWxlLm9yaWdpbkZpbGVPYmpcclxuICAgICAgICAgIGlmIChvcmlnaW5GaWxlT2JqW1wia2V5XCJdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBmaWxlVXJscy5wdXNoKG9yaWdpbkZpbGVPYmpbXCJrZXlcIl0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmFmdGVyQ2hhbmdlLmVtaXQocGFyYW1zKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gZ2V0RGVmYXVsdEhlYWRlcihfaGVhZGVyczpIdHRwSGVhZGVycyk6SHR0cEhlYWRlcnN7XHJcbiAgLy8gICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIngtaGVhZGVyLWF0clwiLFwibWFuYWdlXCIpO1xyXG4gIC8vICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJ0b2tlblwiLExvY2FsU3RvcmFnZVV0aWwuZ2V0VXNlclRva2VuKCkpO1xyXG4gIC8vICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJ1c2VySWRcIixMb2NhbFN0b3JhZ2VVdGlsLmdldFVzZXJJZCgpKTtcclxuICAvLyAgIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwib3JnQ29kZVwiLFRvb2xzVXRpbC5nZXRPcmdDb2RlKCkpO1xyXG4gIC8vICAgcmV0dXJuIF9oZWFkZXJzO1xyXG4gIC8vIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIXdpdGhvdXRSb2xlXCI+XHJcbiAgPG56LXVwbG9hZCBbbnpBY3Rpb25dPVwidXJsXCIgW256QWNjZXB0XT1cIm56QWNjZXB0XCJcclxuICAgICAgICAgICAgIFtuekhlYWRlcnNdPVwiaGVhZGVyXCIgW256U2hvd1VwbG9hZExpc3RdPVwic2hvd0xpc3RcIlxyXG4gICAgICAgICAgICAgbnpMaXN0VHlwZT1cInBpY3R1cmUtY2FyZFwiXHJcbiAgICAgICAgICAgICBbbnpCZWZvcmVVcGxvYWRdPVwiYmVmb3JlVXBsb2FkXCJcclxuICAgICAgICAgICAgIChuekNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICphdHJSb2xlPVwiY29kZVwiIFtuekxpbWl0XT0nMSc+XHJcbiAgICA8YnV0dG9uIG56LWJ1dHRvbiBuelNpemU9XCJzbWFsbFwiPjxpIG56LWljb24gbnpUeXBlPVwidXBsb2FkXCI+PC9pPjxzcGFuPiB7e25hbWV9fTwvc3Bhbj48L2J1dHRvbj5cclxuICA8L256LXVwbG9hZD5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJ3aXRob3V0Um9sZVwiPlxyXG4gIDxuei11cGxvYWQgW256QWN0aW9uXT1cInVybFwiIFtuekFjY2VwdF09XCJuekFjY2VwdFwiIFtuekhlYWRlcnNdPVwiaGVhZGVyXCIgW256U2hvd1VwbG9hZExpc3RdPVwic2hvd0xpc3RcIlxyXG4gICAgICAgICAgICAgW256QmVmb3JlVXBsb2FkXT1cImJlZm9yZVVwbG9hZFwiXHJcbiAgICAgICAgICAgICAobnpDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbbnpMaW1pdF09JzEnPlxyXG4gICAgPGJ1dHRvbiBuei1idXR0b24gbnpTaXplPVwic21hbGxcIj48aSBuei1pY29uIG56VHlwZT1cInVwbG9hZFwiPjwvaT48c3Bhbj4ge3tuYW1lfX08L3NwYW4+PC9idXR0b24+XHJcbiAgPC9uei11cGxvYWQ+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
@@ -1,254 +0,0 @@
1
- import { Component, Input, forwardRef } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { debounceTime } from 'rxjs/operators';
4
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
- import { UploadOssService } from "../../../core/services/upload-oss.service";
6
- import { ToolsUtil } from "../../../core/utils/ToolsUtil";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../../core/services/upload-oss.service";
9
- import * as i2 from "ng-zorro-antd/message";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "ng-zorro-antd/core/transition-patch";
13
- import * as i6 from "ng-zorro-antd/icon";
14
- import * as i7 from "ng-zorro-antd/modal";
15
- import * as i8 from "ngx-quill";
16
- // const icons:any = Quill.import('ui/icons');
17
- // icons.undo = `<svg viewbox="0 0 18 18">
18
- // <polygon class="ql-fill ql-stroke" points="6 10 4 12 2 10 6 10"></polygon>
19
- // <path class="ql-stroke" d="M8.09,13.91A4.6,4.6,0,0,0,9,14,5,5,0,1,0,4,9"></path>
20
- // </svg>`;
21
- // icons.redo = `<svg viewbox="0 0 18 18">
22
- // <polygon class="ql-fill ql-stroke" points="12 10 14 12 16 10 12 10"></polygon>
23
- // <path class="ql-stroke" d="M9.91,13.91A4.6,4.6,0,0,1,9,14a5,5,0,1,1,5-5"></path>
24
- // </svg>`;
25
- export class QuillEditorComponent {
26
- constructor(uploadOssService, message) {
27
- this.uploadOssService = uploadOssService;
28
- this.message = message;
29
- this.placeholder = '请输入';
30
- this.styles = { height: '350px' };
31
- this.readOnly = false;
32
- this.needImgSeq = false;
33
- this.imgUrls = [];
34
- this.editor$ = new Subject();
35
- this.imgVis = false;
36
- // const icons: any = Quill.import('ui/icons');
37
- // icons["undo"] = `<svg viewbox="0 0 18 18">
38
- // <polygon class="ql-fill ql-stroke" points="6 10 4 12 2 10 6 10"></polygon>
39
- // <path class="ql-stroke" d="M8.09,13.91A4.6,4.6,0,0,0,9,14,5,5,0,1,0,4,9"></path>
40
- // </svg>`;
41
- // icons["redo"] = `<svg viewbox="0 0 18 18">
42
- // <polygon class="ql-fill ql-stroke" points="12 10 14 12 16 10 12 10"></polygon>
43
- // <path class="ql-stroke" d="M9.91,13.91A4.6,4.6,0,0,1,9,14a5,5,0,1,1,5-5"></path>
44
- // </svg>`;
45
- }
46
- ngOnInit() {
47
- this.editor$.pipe(debounceTime(700)).subscribe((editorContent) => {
48
- if (typeof (this.onChangeListener) === 'function' && typeof (this.onTouchedListener)) {
49
- this.onChangeListener(editorContent); // 告诉form,你的表单值改变成了payload
50
- this.onTouchedListener(); // 告诉form,你的表单有交互发生
51
- }
52
- });
53
- }
54
- writeValue(value) {
55
- this.value = value;
56
- }
57
- registerOnChange(fn) {
58
- this.onChangeListener = fn;
59
- }
60
- registerOnTouched(fn) {
61
- this.onTouchedListener = fn;
62
- }
63
- setDisabledState(isDisabled) {
64
- }
65
- onChange(quill) {
66
- this.editor$.next(quill.html);
67
- }
68
- EditorCreated(quill) {
69
- const toolbar = quill.getModule('toolbar');
70
- toolbar.addHandler('image', this.imageHandler.bind(this));
71
- this.editor = quill;
72
- let that = this;
73
- quill.on('text-change', function (delta, oldDelta, source) {
74
- if (source == 'api') {
75
- }
76
- else if (source == 'user') {
77
- console.log('user');
78
- that.uploadImgs([], 0);
79
- }
80
- });
81
- }
82
- getBlobByBase64(url, oldUrl) {
83
- const c = document.createElement('canvas');
84
- console.log(c);
85
- const ctx = c.getContext('2d');
86
- ctx.stroke();
87
- let blob = ToolsUtil.dataURItoBlob(url);
88
- blob.name = '.png';
89
- let delta = this.editor.getContents();
90
- console.log('delta', delta);
91
- for (let i = 0; i < delta.ops.length; i++) {
92
- if (delta.ops[i].insert.image == oldUrl) {
93
- return {
94
- index: i,
95
- blob: blob,
96
- oldUrl: oldUrl
97
- };
98
- }
99
- }
100
- return;
101
- }
102
- uploadImgs(blods, index) {
103
- let details = this.editor.getContents();
104
- let opt = details.ops[index];
105
- if (opt && opt.insert && opt.insert.image) {
106
- if (ToolsUtil.isBase64(opt.insert.image)) {
107
- blods.push(this.getBlobByBase64(opt.insert.image, opt.insert.image));
108
- this.isEndContents(blods, index);
109
- }
110
- else {
111
- let c = document.createElement('canvas');
112
- let ctx = c.getContext('2d');
113
- let img = new Image();
114
- img.src = opt.insert.image;
115
- img.setAttribute('crossOrigin', '*');
116
- let that = this;
117
- img.onload = function () {
118
- c.width = img.width;
119
- c.height = img.height;
120
- ctx.drawImage(img, 0, 0, img.width, img.height);
121
- let url = c.toDataURL();
122
- blods.push(that.getBlobByBase64(url, img.src));
123
- that.isEndContents(blods, index);
124
- };
125
- }
126
- }
127
- else {
128
- this.isEndContents(blods, index);
129
- }
130
- }
131
- uploadImg(blods) {
132
- if (!blods || blods.length <= 0) {
133
- return;
134
- }
135
- for (let i = 0; i < blods.length; i++) {
136
- let blob = blods[i];
137
- this.uploadOssService.uploadOss(blob).subscribe((url) => {
138
- let delta = this.editor.getContents();
139
- delta.filter((opt) => opt && opt.insert && opt.insert.image == blods[i].oldUrl).forEach((opt, index) => {
140
- opt.insert.image = url;
141
- });
142
- this.editor.setContents(delta, 'api');
143
- });
144
- }
145
- }
146
- isEndContents(blods, index) {
147
- let details = this.editor.getContents();
148
- if (++index != details.ops.length) {
149
- this.uploadImgs(blods, index);
150
- }
151
- else {
152
- this.uploadImg(blods);
153
- }
154
- }
155
- imageHandler() {
156
- const Imageinput = document.createElement('input');
157
- Imageinput.setAttribute('type', 'file');
158
- Imageinput.setAttribute('multiple', 'multiple');
159
- Imageinput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp');
160
- Imageinput.classList.add('ql-image');
161
- Imageinput.addEventListener('change', () => {
162
- if (this.needImgSeq) {
163
- this.imgVis = true;
164
- }
165
- console.log(Imageinput);
166
- let files = Imageinput.files;
167
- if (files === null || files.length == 0) {
168
- return;
169
- }
170
- this.imgUrls = [];
171
- for (let i = 0; i < files.length; i++) {
172
- const file = files[i];
173
- if (file === null) {
174
- continue;
175
- }
176
- const error = (res) => {
177
- this.message.warning('上传失败');
178
- };
179
- this.uploadOssService.uploadOss(file).subscribe((url) => {
180
- console.log(file);
181
- if (url) {
182
- this.imgUrls.push({ url: url, file: file, index: i });
183
- if (!this.needImgSeq) {
184
- this.editor.insertEmbed(this.editor.getSelection(true).index, 'image', url);
185
- }
186
- }
187
- else {
188
- this.message.warning('上传失败');
189
- }
190
- if (this.needImgSeq && this.imgUrls.length == files.length) {
191
- this.imgVis = true;
192
- this.imgUrls.sort((a, b) => a.index - b.index);
193
- document.getElementById("te")?.click();
194
- }
195
- }, error);
196
- }
197
- });
198
- Imageinput.click();
199
- }
200
- saveSeq() {
201
- console.log(123);
202
- for (let i = this.imgUrls.length - 1; i >= 0; i--) {
203
- this.editor.insertEmbed(this.editor.getSelection(true).index, 'image', this.imgUrls[i].url);
204
- }
205
- this.imgVis = false;
206
- }
207
- arrowUp(index) {
208
- let img = this.imgUrls[index];
209
- this.imgUrls[index] = this.imgUrls[index - 1];
210
- this.imgUrls[index - 1] = img;
211
- }
212
- arrowDown(index) {
213
- let img = this.imgUrls[index];
214
- this.imgUrls[index] = this.imgUrls[index + 1];
215
- this.imgUrls[index + 1] = img;
216
- }
217
- cancle() {
218
- this.imgVis = false;
219
- }
220
- te() {
221
- console.log('上传完毕');
222
- }
223
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QuillEditorComponent, deps: [{ token: i1.UploadOssService }, { token: i2.NzMessageService }], target: i0.ɵɵFactoryTarget.Component }); }
224
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: QuillEditorComponent, selector: "app-quill-editor", inputs: { placeholder: "placeholder", styles: "styles", value: "value", readOnly: "readOnly", needImgSeq: "needImgSeq" }, providers: [
225
- UploadOssService,
226
- {
227
- provide: NG_VALUE_ACCESSOR,
228
- useExisting: forwardRef(() => QuillEditorComponent),
229
- multi: true
230
- }
231
- ], ngImport: i0, template: "<quill-editor\r\n [styles]=\"styles\"\r\n [placeholder]=\"placeholder\"\r\n (onEditorCreated)=\"EditorCreated($event)\"\r\n [(ngModel)]=\"value\"\r\n (onContentChanged)=\"onChange($event)\"\r\n [readOnly]=\"readOnly\"\r\n></quill-editor>\r\n<!--\u8FD9\u4E2Adiv,\u662F\u56E0\u4E3A\u4E0A\u4F20\u5B8C\u6BD5\u7126\u70B9\u8FD8\u5728\u5BCC\u6587\u672C\u91CC,\u5F39\u51FA\u65E0\u6CD5\u663E\u793A.....-->\r\n<div id=\"te\" (click)=\"te()\"></div>\r\n<nz-modal [(nzVisible)]=\"imgVis\" (nzOnOk)=\"saveSeq()\" (nzOnCancel)=\"cancle()\" nzMaskClosable=\"false\"\r\n [nzStyle]=\"{padding:0}\">\r\n <ng-container *nzModalContent>\r\n <div style=\"max-height:600px;overflow:auto;margin-top: 10px;\">\r\n <ng-container *ngTemplateOutlet=\"imgsContent\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</nz-modal>\r\n<ng-template #imgsContent>\r\n <ng-container *ngFor=\"let imgOpt of imgUrls;let i = index\">\r\n <div class=\"img-div\">\r\n <img [src]=\"imgOpt.url\" [ngStyle]=\"{ width: '100px',display: 'inline-block', margin:'5px' }\"/>\r\n <div style=\"margin-left: 20px; color: grey;\">{{imgOpt.file.name}}</div>\r\n <div style=\"margin-right: 20px; flex: 1;text-align: right;\">\r\n <a title=\"\u4E0A\u79FB\" *ngIf=\" i > 0\" style=\"display: block;\" (click)=\"arrowUp(i)\">\r\n <i nz-icon nzType=\"arrow-up\" nzTheme=\"outline\" style=\"color: #1890ff; font-size: 15px;\"></i>\r\n \u4E0A\u79FB</a>\r\n <a title=\"\u4E0B\u79FB\" *ngIf=\" i < imgUrls.length - 1\" (click)=\"arrowDown(i)\">\r\n <i nz-icon nzType=\"arrow-down\" nzTheme=\"outline\" style=\"color: #1890ff; font-size: 15px\"></i>\r\n \u4E0B\u79FB</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [":host{width:100%;height:100%;display:block}.img-div{border:1px solid #d9d9d9;border-radius:4px;margin-top:5px;display:flex;align-items:center;padding:0 5px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i6.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i7.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i7.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "component", type: i8.QuillEditorComponent, selector: "quill-editor" }] }); }
232
- }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QuillEditorComponent, decorators: [{
234
- type: Component,
235
- args: [{ selector: 'app-quill-editor', providers: [
236
- UploadOssService,
237
- {
238
- provide: NG_VALUE_ACCESSOR,
239
- useExisting: forwardRef(() => QuillEditorComponent),
240
- multi: true
241
- }
242
- ], template: "<quill-editor\r\n [styles]=\"styles\"\r\n [placeholder]=\"placeholder\"\r\n (onEditorCreated)=\"EditorCreated($event)\"\r\n [(ngModel)]=\"value\"\r\n (onContentChanged)=\"onChange($event)\"\r\n [readOnly]=\"readOnly\"\r\n></quill-editor>\r\n<!--\u8FD9\u4E2Adiv,\u662F\u56E0\u4E3A\u4E0A\u4F20\u5B8C\u6BD5\u7126\u70B9\u8FD8\u5728\u5BCC\u6587\u672C\u91CC,\u5F39\u51FA\u65E0\u6CD5\u663E\u793A.....-->\r\n<div id=\"te\" (click)=\"te()\"></div>\r\n<nz-modal [(nzVisible)]=\"imgVis\" (nzOnOk)=\"saveSeq()\" (nzOnCancel)=\"cancle()\" nzMaskClosable=\"false\"\r\n [nzStyle]=\"{padding:0}\">\r\n <ng-container *nzModalContent>\r\n <div style=\"max-height:600px;overflow:auto;margin-top: 10px;\">\r\n <ng-container *ngTemplateOutlet=\"imgsContent\"></ng-container>\r\n </div>\r\n </ng-container>\r\n</nz-modal>\r\n<ng-template #imgsContent>\r\n <ng-container *ngFor=\"let imgOpt of imgUrls;let i = index\">\r\n <div class=\"img-div\">\r\n <img [src]=\"imgOpt.url\" [ngStyle]=\"{ width: '100px',display: 'inline-block', margin:'5px' }\"/>\r\n <div style=\"margin-left: 20px; color: grey;\">{{imgOpt.file.name}}</div>\r\n <div style=\"margin-right: 20px; flex: 1;text-align: right;\">\r\n <a title=\"\u4E0A\u79FB\" *ngIf=\" i > 0\" style=\"display: block;\" (click)=\"arrowUp(i)\">\r\n <i nz-icon nzType=\"arrow-up\" nzTheme=\"outline\" style=\"color: #1890ff; font-size: 15px;\"></i>\r\n \u4E0A\u79FB</a>\r\n <a title=\"\u4E0B\u79FB\" *ngIf=\" i < imgUrls.length - 1\" (click)=\"arrowDown(i)\">\r\n <i nz-icon nzType=\"arrow-down\" nzTheme=\"outline\" style=\"color: #1890ff; font-size: 15px\"></i>\r\n \u4E0B\u79FB</a>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</ng-template>\r\n\r\n", styles: [":host{width:100%;height:100%;display:block}.img-div{border:1px solid #d9d9d9;border-radius:4px;margin-top:5px;display:flex;align-items:center;padding:0 5px}\n"] }]
243
- }], ctorParameters: () => [{ type: i1.UploadOssService }, { type: i2.NzMessageService }], propDecorators: { placeholder: [{
244
- type: Input
245
- }], styles: [{
246
- type: Input
247
- }], value: [{
248
- type: Input
249
- }], readOnly: [{
250
- type: Input
251
- }], needImgSeq: [{
252
- type: Input
253
- }] } });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcXVpbGwtZWRpdG9yL3F1aWxsLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3F1aWxsLWVkaXRvci9xdWlsbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7QUFDeEQsOENBQThDO0FBQzlDLDBDQUEwQztBQUMxQywrRUFBK0U7QUFDL0UscUZBQXFGO0FBQ3JGLFdBQVc7QUFDWCwwQ0FBMEM7QUFDMUMsbUZBQW1GO0FBQ25GLHFGQUFxRjtBQUNyRixXQUFXO0FBZVgsTUFBTSxPQUFPLG9CQUFvQjtJQWMvQixZQUFvQixnQkFBa0MsRUFBVSxPQUF5QjtRQUFyRSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFaaEYsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsV0FBTSxHQUFRLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBQyxDQUFDO1FBRWhDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUlyQyxZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2hDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFHYixnREFBZ0Q7UUFDaEQsNkNBQTZDO1FBQzdDLCtFQUErRTtRQUMvRSxxRkFBcUY7UUFDckYsV0FBVztRQUNYLDZDQUE2QztRQUM3QyxtRkFBbUY7UUFDbkYscUZBQXFGO1FBQ3JGLFdBQVc7SUFDYixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FDbEIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFxQixFQUFFLEVBQUU7WUFDcEMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRTtnQkFDcEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsMEJBQTBCO2dCQUNoRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQjthQUM5QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFxQjtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQixDQUFFLFVBQW1CO0lBRXJDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBVTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDM0MsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxLQUFVLEVBQUUsUUFBYSxFQUFFLE1BQVc7WUFDdEUsSUFBSSxNQUFNLElBQUksS0FBSyxFQUFFO2FBQ3BCO2lCQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRTtnQkFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBUSxFQUFFLE1BQVc7UUFDbkMsTUFBTSxDQUFDLEdBQVEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDYixJQUFJLElBQUksR0FBUSxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ25CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDM0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sRUFBRTtnQkFDdkMsT0FBTztvQkFDTCxLQUFLLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsSUFBSTtvQkFDVixNQUFNLEVBQUUsTUFBTTtpQkFDZixDQUFBO2FBQ0Y7U0FDRjtRQUNELE9BQU87SUFDVCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVUsRUFBRSxLQUFVO1FBQy9CLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1lBQ3pDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN4QyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTthQUNqQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLEdBQUcsR0FBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxJQUFJLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN0QixHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMzQixHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDckMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNoQixHQUFHLENBQUMsTUFBTSxHQUFHO29CQUNYLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDcEIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO29CQUN0QixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNoRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7b0JBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO2dCQUNsQyxDQUFDLENBQUE7YUFDRjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtTQUNqQztJQUVILENBQUM7SUFDRCxTQUFTLENBQUMsS0FBUztRQUNqQixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQy9CLE9BQU07U0FDUDtRQUVELEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLENBQUMsR0FBRSxLQUFLLENBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFDO1lBQ2hDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUN0RCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN0QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBTyxFQUFFLEtBQVMsRUFBRSxFQUFFO29CQUNqSCxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUE7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQTtTQUNIO0lBQ0gsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFTLEVBQUUsS0FBUztRQUNoQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLElBQUksRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDL0I7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztRQUNqRixVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ3BCO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QixJQUFJLEtBQUssR0FBUSxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ2xDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDdkMsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUNqQixTQUFTO2lCQUNWO2dCQUdELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQixDQUFDLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDbEIsSUFBSSxHQUFHLEVBQUU7d0JBQ1AsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7d0JBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFOzRCQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3lCQUM3RTtxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDOUI7b0JBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7d0JBQzFELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO3dCQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN6RCxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO3FCQUN4QztnQkFDSCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDWDtRQUVILENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM3RjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBVTtRQUNsQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELEVBQUU7UUFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3JCLENBQUM7K0dBN05VLG9CQUFvQjttR0FBcEIsb0JBQW9CLHFLQVRwQjtZQUNULGdCQUFnQjtZQUNoQjtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUNuRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsMEJDNUJILGl2REFtQ0E7OzRGRExhLG9CQUFvQjtrQkFiaEMsU0FBUzsrQkFDRSxrQkFBa0IsYUFHakI7d0JBQ1QsZ0JBQWdCO3dCQUNoQjs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0hBSVEsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtOek1lc3NhZ2VTZXJ2aWNlfSBmcm9tICduZy16b3Jyby1hbnRkL21lc3NhZ2UnO1xyXG5pbXBvcnQge1VwbG9hZE9zc1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3VwbG9hZC1vc3Muc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcbi8vIGNvbnN0IGljb25zOmFueSA9IFF1aWxsLmltcG9ydCgndWkvaWNvbnMnKTtcclxuLy8gaWNvbnMudW5kbyA9IGA8c3ZnIHZpZXdib3g9XCIwIDAgMTggMThcIj5cclxuLy8gICA8cG9seWdvbiBjbGFzcz1cInFsLWZpbGwgcWwtc3Ryb2tlXCIgcG9pbnRzPVwiNiAxMCA0IDEyIDIgMTAgNiAxMFwiPjwvcG9seWdvbj5cclxuLy8gICA8cGF0aCBjbGFzcz1cInFsLXN0cm9rZVwiIGQ9XCJNOC4wOSwxMy45MUE0LjYsNC42LDAsMCwwLDksMTQsNSw1LDAsMSwwLDQsOVwiPjwvcGF0aD5cclxuLy8gPC9zdmc+YDtcclxuLy8gaWNvbnMucmVkbyA9IGA8c3ZnIHZpZXdib3g9XCIwIDAgMTggMThcIj5cclxuLy8gICA8cG9seWdvbiBjbGFzcz1cInFsLWZpbGwgcWwtc3Ryb2tlXCIgcG9pbnRzPVwiMTIgMTAgMTQgMTIgMTYgMTAgMTIgMTBcIj48L3BvbHlnb24+XHJcbi8vICAgPHBhdGggY2xhc3M9XCJxbC1zdHJva2VcIiBkPVwiTTkuOTEsMTMuOTFBNC42LDQuNiwwLDAsMSw5LDE0YTUsNSwwLDEsMSw1LTVcIj48L3BhdGg+XHJcbi8vIDwvc3ZnPmA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1xdWlsbC1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWlsbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3F1aWxsLWVkaXRvci5jb21wb25lbnQubGVzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgVXBsb2FkT3NzU2VydmljZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFF1aWxsRWRpdG9yQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBRdWlsbEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICfor7fovpPlhaUnO1xyXG4gIEBJbnB1dCgpIHN0eWxlczogYW55ID0ge2hlaWdodDogJzM1MHB4J307XHJcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyB8IGFueTsgLy8g57uE5Lu25a+55bqU55qEIOKAnCBuZ01vZGVsIOKAnVxyXG4gIEBJbnB1dCgpIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgbmVlZEltZ1NlcTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGVkaXRvcjogYW55O1xyXG4gIG9uQ2hhbmdlTGlzdGVuZXI6IGFueTsgLy8g5pS55Y+Y5YC85Zue6LCDXHJcbiAgb25Ub3VjaGVkTGlzdGVuZXI6IGFueTsgLy8g5Lqk5LqS5Zue6LCDXHJcbiAgaW1nVXJsczogYW55ID0gW107XHJcbiAgZWRpdG9yJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICBpbWdWaXMgPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1cGxvYWRPc3NTZXJ2aWNlOiBVcGxvYWRPc3NTZXJ2aWNlLCBwcml2YXRlIG1lc3NhZ2U6IE56TWVzc2FnZVNlcnZpY2UpIHtcclxuICAgIC8vIGNvbnN0IGljb25zOiBhbnkgID0gUXVpbGwuaW1wb3J0KCd1aS9pY29ucycpO1xyXG4gICAgLy8gaWNvbnNbXCJ1bmRvXCJdID0gYDxzdmcgdmlld2JveD1cIjAgMCAxOCAxOFwiPlxyXG4gICAgLy8gICA8cG9seWdvbiBjbGFzcz1cInFsLWZpbGwgcWwtc3Ryb2tlXCIgcG9pbnRzPVwiNiAxMCA0IDEyIDIgMTAgNiAxMFwiPjwvcG9seWdvbj5cclxuICAgIC8vICAgPHBhdGggY2xhc3M9XCJxbC1zdHJva2VcIiBkPVwiTTguMDksMTMuOTFBNC42LDQuNiwwLDAsMCw5LDE0LDUsNSwwLDEsMCw0LDlcIj48L3BhdGg+XHJcbiAgICAvLyA8L3N2Zz5gO1xyXG4gICAgLy8gaWNvbnNbXCJyZWRvXCJdID0gYDxzdmcgdmlld2JveD1cIjAgMCAxOCAxOFwiPlxyXG4gICAgLy8gICA8cG9seWdvbiBjbGFzcz1cInFsLWZpbGwgcWwtc3Ryb2tlXCIgcG9pbnRzPVwiMTIgMTAgMTQgMTIgMTYgMTAgMTIgMTBcIj48L3BvbHlnb24+XHJcbiAgICAvLyAgIDxwYXRoIGNsYXNzPVwicWwtc3Ryb2tlXCIgZD1cIk05LjkxLDEzLjkxQTQuNiw0LjYsMCwwLDEsOSwxNGE1LDUsMCwxLDEsNS01XCI+PC9wYXRoPlxyXG4gICAgLy8gPC9zdmc+YDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5lZGl0b3IkLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSg3MDApXHJcbiAgICApLnN1YnNjcmliZSgoZWRpdG9yQ29udGVudDogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHRoaXMub25DaGFuZ2VMaXN0ZW5lcikgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mICh0aGlzLm9uVG91Y2hlZExpc3RlbmVyKSkge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2VMaXN0ZW5lcihlZGl0b3JDb250ZW50KTsgLy8g5ZGK6K+JZm9ybe+8jOS9oOeahOihqOWNleWAvOaUueWPmOaIkOS6hnBheWxvYWRcclxuICAgICAgICB0aGlzLm9uVG91Y2hlZExpc3RlbmVyKCk7IC8vIOWRiuiviWZvcm3vvIzkvaDnmoTooajljZXmnInkuqTkupLlj5HnlJ9cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBhbnlbXSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlTGlzdGVuZXIgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkTGlzdGVuZXIgPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShxdWlsbDogYW55KSB7XHJcbiAgICB0aGlzLmVkaXRvciQubmV4dChxdWlsbC5odG1sKTtcclxuICB9XHJcblxyXG4gIEVkaXRvckNyZWF0ZWQocXVpbGw6IGFueSkge1xyXG4gICAgY29uc3QgdG9vbGJhciA9IHF1aWxsLmdldE1vZHVsZSgndG9vbGJhcicpO1xyXG4gICAgdG9vbGJhci5hZGRIYW5kbGVyKCdpbWFnZScsIHRoaXMuaW1hZ2VIYW5kbGVyLmJpbmQodGhpcykpO1xyXG4gICAgdGhpcy5lZGl0b3IgPSBxdWlsbDtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIGZ1bmN0aW9uIChkZWx0YTogYW55LCBvbGREZWx0YTogYW55LCBzb3VyY2U6IGFueSkge1xyXG4gICAgICBpZiAoc291cmNlID09ICdhcGknKSB7XHJcbiAgICAgIH0gZWxzZSBpZiAoc291cmNlID09ICd1c2VyJykge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCd1c2VyJyk7XHJcbiAgICAgICAgdGhhdC51cGxvYWRJbWdzKFtdLCAwKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRCbG9iQnlCYXNlNjQodXJsOiBhbnksIG9sZFVybDogYW55KSB7XHJcbiAgICBjb25zdCBjOiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgIGNvbnNvbGUubG9nKGMpO1xyXG4gICAgY29uc3QgY3R4ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY3R4LnN0cm9rZSgpO1xyXG4gICAgbGV0IGJsb2I6IGFueSA9IFRvb2xzVXRpbC5kYXRhVVJJdG9CbG9iKHVybCk7XHJcbiAgICBibG9iLm5hbWUgPSAnLnBuZyc7XHJcbiAgICBsZXQgZGVsdGEgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50cygpO1xyXG4gICAgY29uc29sZS5sb2coJ2RlbHRhJywgZGVsdGEpXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbHRhLm9wcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoZGVsdGEub3BzW2ldLmluc2VydC5pbWFnZSA9PSBvbGRVcmwpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICBibG9iOiBibG9iLFxyXG4gICAgICAgICAgb2xkVXJsOiBvbGRVcmxcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIHVwbG9hZEltZ3MoYmxvZHM6IGFueSwgaW5kZXg6IGFueSkge1xyXG4gICAgbGV0IGRldGFpbHMgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50cygpO1xyXG4gICAgbGV0IG9wdCA9IGRldGFpbHMub3BzW2luZGV4XTtcclxuICAgIGlmIChvcHQgJiYgb3B0Lmluc2VydCAmJiBvcHQuaW5zZXJ0LmltYWdlKSB7XHJcbiAgICAgIGlmIChUb29sc1V0aWwuaXNCYXNlNjQob3B0Lmluc2VydC5pbWFnZSkpIHtcclxuICAgICAgICBibG9kcy5wdXNoKHRoaXMuZ2V0QmxvYkJ5QmFzZTY0KG9wdC5pbnNlcnQuaW1hZ2UsIG9wdC5pbnNlcnQuaW1hZ2UpKTtcclxuICAgICAgICB0aGlzLmlzRW5kQ29udGVudHMoYmxvZHMsIGluZGV4KVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBjID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XHJcbiAgICAgICAgbGV0IGN0eDogYW55ID0gYy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgICAgIGxldCBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuICAgICAgICBpbWcuc3JjID0gb3B0Lmluc2VydC5pbWFnZTtcclxuICAgICAgICBpbWcuc2V0QXR0cmlidXRlKCdjcm9zc09yaWdpbicsICcqJyk7XHJcbiAgICAgICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBjLndpZHRoID0gaW1nLndpZHRoO1xyXG4gICAgICAgICAgYy5oZWlnaHQgPSBpbWcuaGVpZ2h0O1xyXG4gICAgICAgICAgY3R4LmRyYXdJbWFnZShpbWcsIDAsIDAsIGltZy53aWR0aCwgaW1nLmhlaWdodCk7XHJcbiAgICAgICAgICBsZXQgdXJsID0gYy50b0RhdGFVUkwoKTtcclxuICAgICAgICAgIGJsb2RzLnB1c2godGhhdC5nZXRCbG9iQnlCYXNlNjQodXJsLCBpbWcuc3JjKSlcclxuICAgICAgICAgIHRoYXQuaXNFbmRDb250ZW50cyhibG9kcywgaW5kZXgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRW5kQ29udGVudHMoYmxvZHMsIGluZGV4KVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgdXBsb2FkSW1nKGJsb2RzOmFueSkge1xyXG4gICAgaWYgKCFibG9kcyB8fCBibG9kcy5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBmb3IobGV0IGkgPSAwO2k8IGJsb2RzLmxlbmd0aDtpKyspe1xyXG4gICAgICBsZXQgYmxvYiA9IGJsb2RzW2ldO1xyXG4gICAgICB0aGlzLnVwbG9hZE9zc1NlcnZpY2UudXBsb2FkT3NzKGJsb2IpLnN1YnNjcmliZSgodXJsKSA9PiB7XHJcbiAgICAgICAgbGV0IGRlbHRhID0gdGhpcy5lZGl0b3IuZ2V0Q29udGVudHMoKTtcclxuICAgICAgICBkZWx0YS5maWx0ZXIoKG9wdDphbnkpID0+IG9wdCAmJiBvcHQuaW5zZXJ0ICYmIG9wdC5pbnNlcnQuaW1hZ2UgPT0gYmxvZHNbaV0ub2xkVXJsKS5mb3JFYWNoKChvcHQ6YW55LCBpbmRleDphbnkpID0+IHtcclxuICAgICAgICAgIG9wdC5pbnNlcnQuaW1hZ2UgPSB1cmxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmVkaXRvci5zZXRDb250ZW50cyhkZWx0YSwgJ2FwaScpO1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuICBpc0VuZENvbnRlbnRzKGJsb2RzOmFueSwgaW5kZXg6YW55KSB7XHJcbiAgICBsZXQgZGV0YWlscyA9IHRoaXMuZWRpdG9yLmdldENvbnRlbnRzKCk7XHJcbiAgICBpZiAoKytpbmRleCAhPSBkZXRhaWxzLm9wcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51cGxvYWRJbWdzKGJsb2RzLCBpbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVwbG9hZEltZyhibG9kcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbWFnZUhhbmRsZXIoKSB7XHJcbiAgICBjb25zdCBJbWFnZWlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgIEltYWdlaW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2ZpbGUnKTtcclxuICAgIEltYWdlaW5wdXQuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xyXG4gICAgSW1hZ2VpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsICdpbWFnZS9wbmcsIGltYWdlL2dpZiwgaW1hZ2UvanBlZywgaW1hZ2UvYm1wJyk7XHJcbiAgICBJbWFnZWlucHV0LmNsYXNzTGlzdC5hZGQoJ3FsLWltYWdlJyk7XHJcbiAgICBJbWFnZWlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMubmVlZEltZ1NlcSkge1xyXG4gICAgICAgIHRoaXMuaW1nVmlzID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhJbWFnZWlucHV0KTtcclxuICAgICAgbGV0IGZpbGVzOiBhbnkgPSBJbWFnZWlucHV0LmZpbGVzO1xyXG4gICAgICBpZiAoZmlsZXMgPT09IG51bGwgfHwgZmlsZXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbWdVcmxzID0gW107XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBmaWxlID0gZmlsZXNbaV07XHJcbiAgICAgICAgaWYgKGZpbGUgPT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGNvbnN0IGVycm9yID0gKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lc3NhZ2Uud2FybmluZygn5LiK5Lyg5aSx6LSlJyk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy51cGxvYWRPc3NTZXJ2aWNlLnVwbG9hZE9zcyhmaWxlKS5zdWJzY3JpYmUoKHVybCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZmlsZSk7XHJcbiAgICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW1nVXJscy5wdXNoKHt1cmw6IHVybCwgZmlsZTogZmlsZSwgaW5kZXg6IGl9KTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLm5lZWRJbWdTZXEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmVkaXRvci5pbnNlcnRFbWJlZCh0aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24odHJ1ZSkuaW5kZXgsICdpbWFnZScsIHVybCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS53YXJuaW5nKCfkuIrkvKDlpLHotKUnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLm5lZWRJbWdTZXEgJiYgdGhpcy5pbWdVcmxzLmxlbmd0aCA9PSBmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5pbWdWaXMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmltZ1VybHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0ZVwiKT8uY2xpY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuXHJcbiAgICBJbWFnZWlucHV0LmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBzYXZlU2VxKCkge1xyXG4gICAgY29uc29sZS5sb2coMTIzKTtcclxuICAgIGZvciAobGV0IGkgPSB0aGlzLmltZ1VybHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgdGhpcy5lZGl0b3IuaW5zZXJ0RW1iZWQodGhpcy5lZGl0b3IuZ2V0U2VsZWN0aW9uKHRydWUpLmluZGV4LCAnaW1hZ2UnLCB0aGlzLmltZ1VybHNbaV0udXJsKTtcclxuICAgIH1cclxuICAgIHRoaXMuaW1nVmlzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhcnJvd1VwKGluZGV4OiBhbnkpIHtcclxuICAgIGxldCBpbWcgPSB0aGlzLmltZ1VybHNbaW5kZXhdO1xyXG4gICAgdGhpcy5pbWdVcmxzW2luZGV4XSA9IHRoaXMuaW1nVXJsc1tpbmRleCAtIDFdO1xyXG4gICAgdGhpcy5pbWdVcmxzW2luZGV4IC0gMV0gPSBpbWc7XHJcbiAgfVxyXG5cclxuICBhcnJvd0Rvd24oaW5kZXg6IGFueSkge1xyXG4gICAgbGV0IGltZyA9IHRoaXMuaW1nVXJsc1tpbmRleF07XHJcbiAgICB0aGlzLmltZ1VybHNbaW5kZXhdID0gdGhpcy5pbWdVcmxzW2luZGV4ICsgMV07XHJcbiAgICB0aGlzLmltZ1VybHNbaW5kZXggKyAxXSA9IGltZztcclxuICB9XHJcblxyXG4gIGNhbmNsZSgpIHtcclxuICAgIHRoaXMuaW1nVmlzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0ZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKCfkuIrkvKDlrozmr5UnKVxyXG4gIH1cclxufVxyXG4iLCI8cXVpbGwtZWRpdG9yXHJcbiAgW3N0eWxlc109XCJzdHlsZXNcIlxyXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgKG9uRWRpdG9yQ3JlYXRlZCk9XCJFZGl0b3JDcmVhdGVkKCRldmVudClcIlxyXG4gIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gIChvbkNvbnRlbnRDaGFuZ2VkKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gIFtyZWFkT25seV09XCJyZWFkT25seVwiXHJcbj48L3F1aWxsLWVkaXRvcj5cclxuPCEtLei/meS4qmRpdizmmK/lm6DkuLrkuIrkvKDlrozmr5XnhKbngrnov5jlnKjlr4zmlofmnKzph4ws5by55Ye65peg5rOV5pi+56S6Li4uLi4tLT5cclxuPGRpdiBpZD1cInRlXCIgKGNsaWNrKT1cInRlKClcIj48L2Rpdj5cclxuPG56LW1vZGFsIFsobnpWaXNpYmxlKV09XCJpbWdWaXNcIiAobnpPbk9rKT1cInNhdmVTZXEoKVwiIChuek9uQ2FuY2VsKT1cImNhbmNsZSgpXCIgbnpNYXNrQ2xvc2FibGU9XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbnpTdHlsZV09XCJ7cGFkZGluZzowfVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm56TW9kYWxDb250ZW50PlxyXG4gIDxkaXYgc3R5bGU9XCJtYXgtaGVpZ2h0OjYwMHB4O292ZXJmbG93OmF1dG87bWFyZ2luLXRvcDogMTBweDtcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWdzQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L256LW1vZGFsPlxyXG48bmctdGVtcGxhdGUgI2ltZ3NDb250ZW50PlxyXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltZ09wdCBvZiBpbWdVcmxzO2xldCBpID0gaW5kZXhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWctZGl2XCI+XHJcbiAgICAgIDxpbWcgW3NyY109XCJpbWdPcHQudXJsXCIgW25nU3R5bGVdPVwieyB3aWR0aDogJzEwMHB4JyxkaXNwbGF5OiAnaW5saW5lLWJsb2NrJywgbWFyZ2luOic1cHgnIH1cIi8+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tbGVmdDogMjBweDsgY29sb3I6IGdyZXk7XCI+e3tpbWdPcHQuZmlsZS5uYW1lfX08L2Rpdj5cclxuICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBweDsgZmxleDogMTt0ZXh0LWFsaWduOiByaWdodDtcIj5cclxuICAgICAgICA8YSB0aXRsZT1cIuS4iuenu1wiICpuZ0lmPVwiIGkgPiAwXCIgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcIiAoY2xpY2spPVwiYXJyb3dVcChpKVwiPlxyXG4gICAgICAgICAgPGkgbnotaWNvbiBuelR5cGU9XCJhcnJvdy11cFwiIG56VGhlbWU9XCJvdXRsaW5lXCIgc3R5bGU9XCJjb2xvcjogIzE4OTBmZjsgZm9udC1zaXplOiAxNXB4O1wiPjwvaT5cclxuICAgICAgICAgIOS4iuenuzwvYT5cclxuICAgICAgICA8YSB0aXRsZT1cIuS4i+enu1wiICpuZ0lmPVwiIGkgPCBpbWdVcmxzLmxlbmd0aCAtIDFcIiAoY2xpY2spPVwiYXJyb3dEb3duKGkpXCI+XHJcbiAgICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cImFycm93LWRvd25cIiBuelRoZW1lPVwib3V0bGluZVwiIHN0eWxlPVwiY29sb3I6ICMxODkwZmY7IGZvbnQtc2l6ZTogMTVweFwiPjwvaT5cclxuICAgICAgICAgIOS4i+enuzwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiJdfQ==