atr-components 0.2.417 → 2.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.
- package/atr-components.module.d.ts +9 -9
- package/atr-public-api.d.ts +53 -53
- package/core/animations/animations.d.ts +1 -1
- package/core/animations/fly-in.d.ts +1 -1
- package/core/animations/scroll-screen.d.ts +1 -1
- package/core/auth/auth.guard.d.ts +11 -11
- package/core/base/atr-common.d.ts +347 -347
- package/core/directive/error-img.directive.d.ts +10 -10
- package/core/directive/hq-spin.directive.d.ts +13 -13
- package/core/directive/role.directive.d.ts +16 -16
- package/core/interceptor/base.interceptor.d.ts +17 -17
- package/core/ngz-module/cus-zorro-antd.module.d.ts +75 -75
- package/core/pipe/china-num.pipe.d.ts +7 -7
- package/core/pipe/count.pipe.d.ts +7 -7
- package/core/pipe/day.pipe.d.ts +8 -8
- package/core/pipe/defaultVal.pipe.d.ts +7 -7
- package/core/pipe/dicts.pipe.d.ts +10 -10
- package/core/pipe/image-pipe.pipe.d.ts +8 -8
- package/core/pipe/is-empty.pipe.d.ts +7 -7
- package/core/pipe/is-not-empty.pipe.d.ts +7 -7
- package/core/pipe/oss.pipe.d.ts +7 -7
- package/core/pipe/ossStatic.pipe.d.ts +7 -7
- package/core/pipe/pipe-module.module.d.ts +21 -21
- package/core/pipe/remove-html.pipe.d.ts +10 -10
- package/core/pipe/safe-compute.pipe.d.ts +7 -7
- package/core/pipe/safe-html.pipe.d.ts +10 -10
- package/core/pipe/safe-url.pipe.d.ts +10 -10
- package/core/routereuse/atr-reuse-strategy.d.ts +19 -19
- package/core/services/dict/dict.service.d.ts +20 -20
- package/core/services/http.service.d.ts +31 -31
- package/core/services/menu.service.d.ts +29 -29
- package/core/services/upload-oss.service.d.ts +14 -14
- package/core/utils/ToolsUtil.d.ts +180 -180
- package/core/utils/localstorage.util.d.ts +15 -15
- package/core/utils/sessionstorage.util.d.ts +15 -15
- package/{esm2020 → esm2022}/atr-components.mjs +4 -4
- package/esm2022/atr-components.module.mjs +36 -0
- package/{esm2020 → esm2022}/atr-public-api.mjs +54 -54
- package/{esm2020 → esm2022}/core/animations/animations.mjs +9 -9
- package/{esm2020 → esm2022}/core/animations/fly-in.mjs +18 -18
- package/{esm2020 → esm2022}/core/animations/scroll-screen.mjs +22 -22
- package/{esm2020 → esm2022}/core/auth/auth.guard.mjs +37 -37
- package/esm2022/core/base/atr-common.mjs +47 -0
- package/{esm2020 → esm2022}/core/directive/error-img.directive.mjs +31 -31
- package/{esm2020 → esm2022}/core/directive/hq-spin.directive.mjs +48 -48
- package/esm2022/core/directive/role.directive.mjs +69 -0
- package/{esm2020 → esm2022}/core/interceptor/base.interceptor.mjs +165 -165
- package/{esm2020 → esm2022}/core/ngz-module/cus-zorro-antd.module.mjs +292 -292
- package/{esm2020 → esm2022}/core/pipe/china-num.pipe.mjs +36 -36
- package/{esm2020 → esm2022}/core/pipe/count.pipe.mjs +34 -34
- package/{esm2020 → esm2022}/core/pipe/day.pipe.mjs +24 -24
- package/{esm2020 → esm2022}/core/pipe/defaultVal.pipe.mjs +23 -23
- package/{esm2020 → esm2022}/core/pipe/dicts.pipe.mjs +28 -28
- package/{esm2020 → esm2022}/core/pipe/image-pipe.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/is-empty.pipe.mjs +20 -20
- package/{esm2020 → esm2022}/core/pipe/is-not-empty.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/oss.pipe.mjs +17 -17
- package/{esm2020 → esm2022}/core/pipe/ossStatic.pipe.mjs +17 -17
- package/esm2022/core/pipe/pipe-module.module.mjs +38 -0
- package/{esm2020 → esm2022}/core/pipe/remove-html.pipe.mjs +21 -21
- package/{esm2020 → esm2022}/core/pipe/safe-compute.pipe.mjs +23 -23
- package/{esm2020 → esm2022}/core/pipe/safe-html.pipe.mjs +20 -20
- package/{esm2020 → esm2022}/core/pipe/safe-url.pipe.mjs +20 -20
- package/esm2022/core/routereuse/atr-reuse-strategy.mjs +79 -0
- package/esm2022/core/services/dict/dict.service.mjs +152 -0
- package/{esm2020 → esm2022}/core/services/http.service.mjs +306 -306
- package/{esm2020 → esm2022}/core/services/menu.service.mjs +130 -130
- package/{esm2020 → esm2022}/core/services/upload-oss.service.mjs +74 -74
- package/esm2022/core/utils/ToolsUtil.mjs +622 -0
- package/{esm2020 → esm2022}/core/utils/localstorage.util.mjs +94 -94
- package/{esm2020 → esm2022}/core/utils/sessionstorage.util.mjs +72 -72
- package/{esm2020 → esm2022}/lib/hello/hello.component.mjs +15 -15
- package/esm2022/lib/hello/hello.module.mjs +20 -0
- package/esm2022/lib/shared/atr-shared.module.mjs +204 -0
- package/esm2022/lib/shared/echarts/echarts.component.mjs +77 -0
- package/esm2022/lib/shared/form/form.component.mjs +574 -0
- package/esm2022/lib/shared/img-canvas/img-canvas.component.mjs +132 -0
- package/esm2022/lib/shared/local-upload/local-upload.component.mjs +68 -0
- package/esm2022/lib/shared/quill-editor/quill-editor.component.mjs +248 -0
- package/esm2022/lib/shared/select-icons/select-icons.component.mjs +90 -0
- package/{esm2020 → esm2022}/lib/shared/select-tree/select-tree.component.mjs +55 -55
- package/{esm2020 → esm2022}/lib/shared/service/busi.service.mjs +69 -69
- package/{esm2020 → esm2022}/lib/shared/share.service.mjs +107 -107
- package/esm2022/lib/shared/table/table-form-item/table-form-item.component.mjs +96 -0
- package/esm2022/lib/shared/table/table-td/table-td.component.mjs +165 -0
- package/esm2022/lib/shared/table/table.component.mjs +749 -0
- package/{esm2020 → esm2022}/lib/shared/upload/upload.component.mjs +274 -274
- package/{esm2020 → esm2022}/lib/shared/validators/atr-validtors.mjs +8 -8
- package/esm2022/lib/shared/video/video.component.mjs +16 -0
- package/esm2022/lib/shared/view-form/view-form.component.mjs +181 -0
- package/{fesm2020 → fesm2022}/atr-components.mjs +5311 -5312
- package/fesm2022/atr-components.mjs.map +1 -0
- package/{atr-components.d.ts → index.d.ts} +5 -5
- package/lib/hello/hello.component.d.ts +8 -8
- package/lib/hello/hello.module.d.ts +8 -8
- package/lib/shared/atr-shared.module.d.ts +36 -33
- package/lib/shared/echarts/echarts.component.d.ts +34 -34
- package/lib/shared/form/form.component.d.ts +45 -45
- package/lib/shared/img-canvas/img-canvas.component.d.ts +28 -28
- package/lib/shared/local-upload/local-upload.component.d.ts +22 -22
- package/lib/shared/quill-editor/quill-editor.component.d.ts +45 -45
- package/lib/shared/select-icons/select-icons.component.d.ts +24 -24
- package/lib/shared/select-tree/select-tree.component.d.ts +23 -23
- package/lib/shared/service/busi.service.d.ts +20 -20
- package/lib/shared/share.service.d.ts +14 -14
- package/lib/shared/table/table-form-item/table-form-item.component.d.ts +25 -25
- package/lib/shared/table/table-td/table-td.component.d.ts +26 -26
- package/lib/shared/table/table.component.d.ts +94 -94
- package/lib/shared/upload/upload.component.d.ts +53 -53
- package/lib/shared/validators/atr-validtors.d.ts +2 -2
- package/lib/shared/video/video.component.d.ts +7 -7
- package/lib/shared/view-form/view-form.component.d.ts +28 -28
- package/package.json +14 -22
- package/esm2020/atr-components.module.mjs +0 -38
- package/esm2020/core/base/atr-common.mjs +0 -47
- package/esm2020/core/directive/role.directive.mjs +0 -69
- package/esm2020/core/pipe/pipe-module.module.mjs +0 -40
- package/esm2020/core/routereuse/atr-reuse-strategy.mjs +0 -79
- package/esm2020/core/services/dict/dict.service.mjs +0 -152
- package/esm2020/core/utils/ToolsUtil.mjs +0 -622
- package/esm2020/lib/hello/hello.module.mjs +0 -22
- package/esm2020/lib/shared/atr-shared.module.mjs +0 -199
- package/esm2020/lib/shared/echarts/echarts.component.mjs +0 -77
- package/esm2020/lib/shared/form/form.component.mjs +0 -574
- package/esm2020/lib/shared/img-canvas/img-canvas.component.mjs +0 -132
- package/esm2020/lib/shared/local-upload/local-upload.component.mjs +0 -68
- package/esm2020/lib/shared/quill-editor/quill-editor.component.mjs +0 -248
- package/esm2020/lib/shared/select-icons/select-icons.component.mjs +0 -90
- package/esm2020/lib/shared/table/table-form-item/table-form-item.component.mjs +0 -96
- package/esm2020/lib/shared/table/table-td/table-td.component.mjs +0 -165
- package/esm2020/lib/shared/table/table.component.mjs +0 -749
- package/esm2020/lib/shared/video/video.component.mjs +0 -15
- package/esm2020/lib/shared/view-form/view-form.component.mjs +0 -181
- package/fesm2015/atr-components.mjs +0 -5522
- package/fesm2015/atr-components.mjs.map +0 -1
- package/fesm2020/atr-components.mjs.map +0 -1
|
@@ -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
|
-
constructor(elementRef) {
|
|
5
|
-
this.elementRef = elementRef;
|
|
6
|
-
this.needTime = false;
|
|
7
|
-
this.width = 800;
|
|
8
|
-
this.height = 800;
|
|
9
|
-
this.clipArr = [];
|
|
10
|
-
this.rotateNum = 0;
|
|
11
|
-
this.loadOver = new EventEmitter();
|
|
12
|
-
this.needContextmenu = false;
|
|
13
|
-
}
|
|
14
|
-
set url(url) {
|
|
15
|
-
// if (url && url.indexOf('?v=') < 0) {
|
|
16
|
-
// if (url.indexOf("?") < 0) {
|
|
17
|
-
// url += "?";
|
|
18
|
-
//
|
|
19
|
-
// }
|
|
20
|
-
// url += "v=" + new Date().getTime()
|
|
21
|
-
// }
|
|
22
|
-
this.imgUrl = url;
|
|
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
|
-
}
|
|
111
|
-
ImgCanvasComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImgCanvasComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
-
ImgCanvasComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", 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\">\r\n \u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u753B\u5E03\uFF01\r\n</canvas>\r\n<ng-content></ng-content>\r\n", styles: [""] });
|
|
113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ImgCanvasComponent, decorators: [{
|
|
114
|
-
type: Component,
|
|
115
|
-
args: [{ selector: 'app-img', template: "<canvas #canvas1 style=\"width: 100%;height: 100%;\" oncontextmenu=\"return needContextmenu\">\r\n \u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u753B\u5E03\uFF01\r\n</canvas>\r\n<ng-content></ng-content>\r\n", styles: [""] }]
|
|
116
|
-
}], ctorParameters: function () { return [{ 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2ltZy1jYW52YXMvaW1nLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2ltZy1jYW52YXMvaW1nLWNhbnZhcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBU25ILE1BQU0sT0FBTyxrQkFBa0I7SUEwQjdCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUF4QmpDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFlMUIsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNaLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFHSixZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBUSxDQUFDLENBQUM7UUFDbEIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xELG9CQUFlLEdBQUcsS0FBSyxDQUFBO0lBR2hDLENBQUM7SUF2QkQsSUFBYSxHQUFHLENBQUMsR0FBVztRQUMxQix1Q0FBdUM7UUFDdkMsZ0NBQWdDO1FBQ2hDLGtCQUFrQjtRQUNsQixFQUFFO1FBQ0YsTUFBTTtRQUNOLHVDQUF1QztRQUN2QyxJQUFJO1FBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEIsQ0FBQztJQWdCRCxRQUFRO0lBRVIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQSxDQUFBLE1BQU07UUFDL0IsSUFBSSxJQUFJLEdBQUcs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QUMsT0FBTyxFQUFFLENBQUE7UUFDaEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ1QsQ0FBQzs7Z0hBdkhVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLG9UQ1QvQixzTkFJQTs0RkRLYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsU0FBUztpR0FNVixRQUFRO3NCQUFoQixLQUFLO2dCQUVPLEdBQUc7c0JBQWYsS0FBSztnQkFXaUMsT0FBTztzQkFBN0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQU01QixPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U2Vzc2lvblN0b3JhZ2VVdGlsfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91dGlscy9zZXNzaW9uc3RvcmFnZS51dGlsXCI7XHJcbmltcG9ydCB7VG9vbHNVdGlsfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91dGlscy9Ub29sc1V0aWxcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWltZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ltZy1jYW52YXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ltZy1jYW52YXMuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1nQ2FudmFzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQElucHV0KCkgbmVlZFRpbWUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2V0IHVybCh1cmw6IHN0cmluZykge1xyXG4gICAgLy8gaWYgKHVybCAmJiB1cmwuaW5kZXhPZignP3Y9JykgPCAwKSB7XHJcbiAgICAvLyAgIGlmICh1cmwuaW5kZXhPZihcIj9cIikgPCAwKSB7XHJcbiAgICAvLyAgICAgdXJsICs9IFwiP1wiO1xyXG4gICAgLy9cclxuICAgIC8vICAgfVxyXG4gICAgLy8gICB1cmwgKz0gXCJ2PVwiICsgbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIC8vIH1cclxuICAgIHRoaXMuaW1nVXJsID0gdXJsO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnY2FudmFzMScsIHtzdGF0aWM6IGZhbHNlfSkgY2FudmFzMTogYW55O1xyXG4gIGNhbnZhc0RvbTogYW55XHJcbiAgd2lkdGggPSA4MDA7XHJcbiAgaGVpZ2h0ID0gODAwO1xyXG4gIGltZ1VybDogYW55O1xyXG4gIGltZzogYW55O1xyXG4gIEBJbnB1dCgpIGNsaXBBcnI6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgcm90YXRlTnVtOiBhbnkgPSAwO1xyXG4gIEBPdXRwdXQoKSBsb2FkT3ZlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgbmVlZENvbnRleHRtZW51ID0gZmFsc2VcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRDYW52YXNGdWxsKCkge1xyXG4gICAgbGV0IGltZ1cgPSB0aGlzLmltZy53aWR0aC8v5Zu+54mH55qE5a69XHJcbiAgICBsZXQgaW1nSCA9IHRoaXMuaW1nLmhlaWdodC8v5Zu+54mH55qE6auYXHJcbiAgICBsZXQgY1cgPSB0aGlzLndpZHRoO1xyXG4gICAgbGV0IGNIID0gdGhpcy5oZWlnaHQ7XHJcbiAgICBsZXQgcmF0ZVcgPSBpbWdIIC8gaW1nVy8v5q+U5L6LXHJcbiAgICBsZXQgcmF0ZUggPSBpbWdXIC8gaW1nSC8v5q+U5L6LXHJcbiAgICBpZiAoaW1nVyA+IGltZ0gpIHtcclxuICAgICAgaW1nVyA9IHRoaXMud2lkdGhcclxuICAgICAgaW1nSCA9IGltZ1cgKiByYXRlVztcclxuICAgICAgaWYgKGltZ0ggPiBjSCkge1xyXG4gICAgICAgIGltZ0ggPSBjSFxyXG4gICAgICAgIGltZ1cgPSBpbWdIICogcmF0ZUhcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaW1nSCA9IHRoaXMuaGVpZ2h0XHJcbiAgICAgIGltZ1cgPSBpbWdIICogcmF0ZUg7XHJcbiAgICAgIGlmIChpbWdXID4gY1cpIHtcclxuICAgICAgICBpbWdXID0gY1dcclxuICAgICAgICBpbWdIID0gaW1nVyAqIHJhdGVXXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpbWdIID0gdGhpcy5jYW52YXNEb20ub2Zmc2V0SGVpZ2h0XHJcbiAgICAvLyBpbWdXID0gdGhpcy5jYW52YXNEb20ub2Zmc2V0V2lkdGhcclxuICAgIC8vIGxldCBjYW52YXNIID0gaW1nSCAqIHJhdGVcclxuICAgIC8vIGlmIChjYW52YXNIID4gdGhpcy5oZWlnaHQpIHtcclxuICAgIC8vICAgY2FudmFzSCA9IHRoaXMuaGVpZ2h0XHJcbiAgICAvLyAgIHJhdGUgPSBjYW52YXNIIC8gaW1nSFxyXG4gICAgLy8gICBjYW52YXNXID0gaW1nVyAqIHJhdGVcclxuICAgIC8vIH1cclxuICAgIGNvbnNvbGUubG9nKFwi5Zu+54mH5a696auYXCIsIGltZ1cgKyBcIjtcIiArIGltZ0gpXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpbWdXOiBpbWdXLFxyXG4gICAgICBpbWdIOiBpbWdIXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0SW1nKG5lZWRTZXNzaW9uID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5jYW52YXNEb20gPSB0aGlzLmNhbnZhczEubmF0aXZlRWxlbWVudDtcclxuICAgIC8vIHRoaXMuY2FudmFzRG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5jYW52YXNJZCk7XHJcbiAgICAvL+ajgOa1i+aUr+aMgeaAp1xyXG4gICAgaWYgKCF0aGlzLmNhbnZhc0RvbS5nZXRDb250ZXh0KCcyZCcpKSByZXR1cm47XHJcbiAgICAvL+iOt+W+lyAyZCDkuIrkuIvmloflr7nosaFcclxuICAgIGxldCBjb250ZXh0MSA9IHRoaXMuY2FudmFzRG9tLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBsZXQgaW1nID0gbmV3IEltYWdlKClcclxuICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJ2Fub255bW91cycpXHJcbiAgICBpZiAodGhpcy5uZWVkVGltZSkge1xyXG4gICAgICBpZiAodGhpcy5pbWdVcmwuaW5kZXhPZihcIj9cIikgPCAwKSB7XHJcbiAgICAgICAgdGhpcy5pbWdVcmwgKz0gXCI/XCI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5pbWdVcmwgKz0gXCJ2PVwiICsgbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgIH1cclxuICAgIGltZy5zcmMgPSB0aGlzLmltZ1VybFxyXG4gICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgdGhpcy5pbWcgPSBpbWdcclxuICAgICAgY29uc3Qge2ltZ1csIGltZ0h9ID0gdGhpcy5nZXRDYW52YXNGdWxsKCk7XHJcbiAgICAgIHRoaXMuY2FudmFzRG9tLndpZHRoID0gdGhpcy53aWR0aDtcclxuICAgICAgdGhpcy5jYW52YXNEb20uaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XHJcbiAgICAgIGlmICh0aGlzLmNsaXBBcnIgJiYgdGhpcy5jbGlwQXJyLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmdvQ2xpcChjb250ZXh0MSlcclxuICAgICAgfVxyXG4gICAgICAvLyDlj4LmlbAgMe+8muimgee7mOWItueahCBpbWcgICDlj4LmlbAgMuOAgTPvvJrnu5jliLbnmoQgaW1nIOWcqCBjYW52YXMg5Lit55qE5Z2Q5qCHIOWPguaVsDQsNeaYr3dpZHRo77yMaGVpZ2h0XHJcbiAgICAgIGNvbnRleHQxLmRyYXdJbWFnZSh0aGlzLmltZywgMCwgMCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsKTtcclxuICAgICAgdGhpcy5sb2FkT3Zlci5lbWl0KHtjb2RlOiAnbG9hZE92ZXInfSlcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBnb0NsaXAoY29udGV4dDogYW55KSB7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpXHJcbiAgICBjb250ZXh0Lm1vdmVUbyh0aGlzLmNsaXBBcnJbMF0ueDEsIHRoaXMuY2xpcEFyclswXS55MSk7XHJcbiAgICB0aGlzLmNsaXBBcnIuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueDEsIGl0ZW0ueTEpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgICBjb250ZXh0LmxpbmVUbyh0aGlzLmNsaXBBcnJbMF0ueDEsIHRoaXMuY2xpcEFyclswXS55MSk7XHJcbiAgICBjb250ZXh0LmNsaXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygn5b2T5YmN57uE5Lu25a696auYJywgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KVxyXG4gICAgICB0aGlzLmluaXRJbWcoKVxyXG4gICAgfSwgMzAwKVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPGNhbnZhcyAjY2FudmFzMSBzdHlsZT1cIndpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtcIiBvbmNvbnRleHRtZW51PVwicmV0dXJuIG5lZWRDb250ZXh0bWVudVwiPlxyXG4gIOaCqOeahOa1j+iniOWZqOS4jeaUr+aMgeeUu+W4g++8gVxyXG48L2NhbnZhcz5cclxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4iXX0=
|
|
@@ -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 "ng-zorro-antd/upload";
|
|
5
|
-
import * as i2 from "ng-zorro-antd/button";
|
|
6
|
-
import * as i3 from "@angular/common";
|
|
7
|
-
import * as i4 from "../../../core/directive/role.directive";
|
|
8
|
-
import * as i5 from "ng-zorro-antd/core/wave";
|
|
9
|
-
import * as i6 from "ng-zorro-antd/core/transition-patch";
|
|
10
|
-
import * as i7 from "ng-zorro-antd/icon";
|
|
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
|
-
}
|
|
48
|
-
LocalUploadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: LocalUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
49
|
-
LocalUploadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", 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\" [nzHeaders]=\"header\" [nzShowUploadList]=\"showList\"\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: [""], components: [{ type: i1.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"] }, { type: i2.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.AtrRoleDirective, selector: "[atrRole]", inputs: ["atrRole"] }, { type: i5.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { type: i6.ɵ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"] }, { type: i7.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] });
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", 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\" [nzHeaders]=\"header\" [nzShowUploadList]=\"showList\"\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: [""] }]
|
|
53
|
-
}], ctorParameters: function () { return []; }, 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvbG9jYWwtdXBsb2FkL2xvY2FsLXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2xvY2FsLXVwbG9hZC9sb2NhbC11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7O0FBVXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFXL0I7UUFSUyxhQUFRLEdBQUcsMEJBQTBCLENBQUM7UUFLL0MsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVwRCxhQUFRLEdBQVEsS0FBSyxDQUFDO1FBTXRCLFdBQU0sR0FBSSxDQUFDLElBQWtCLEVBQUUsRUFBRTtZQUMvQixJQUFJLEdBQUcsR0FBRztnQkFDUixjQUFjLEVBQUMsS0FBSztnQkFDcEIsT0FBTyxFQUFHLGdCQUFnQixDQUFDLFlBQVksRUFBRTtnQkFDekMscUNBQXFDO2FBQ3RDLENBQUE7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQztJQWJjLENBQUM7SUFFakIsUUFBUTtRQUNOLDBEQUEwRDtJQUM1RCxDQUFDO0lBVUQsUUFBUSxDQUFDLE1BQTJCO1FBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUN4RCxJQUFJLFFBQVEsR0FBVSxFQUFFLENBQUM7WUFDekIsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLEVBQUU7b0JBQzVCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzNCLFNBQVM7aUJBQ1Y7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO29CQUN0QixJQUFJLGFBQWEsR0FBUSxJQUFJLENBQUMsYUFBYSxDQUFBO29CQUMzQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLEVBQUU7d0JBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7cUJBQ3BDO2lCQUNGO2FBQ0Y7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7O2tIQTVDVSxvQkFBb0I7c0dBQXBCLG9CQUFvQixxT0NaakMsMjJCQWdCQTs0RkRKYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCOzBFQUtuQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge056VXBsb2FkQ2hhbmdlUGFyYW0sIE56VXBsb2FkRmlsZX0gZnJvbSAnbmctem9ycm8tYW50ZC91cGxvYWQvbmctem9ycm8tYW50ZC11cGxvYWQnO1xyXG5pbXBvcnQge0xvY2FsU3RvcmFnZVV0aWx9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3V0aWxzL2xvY2Fsc3RvcmFnZS51dGlsXCI7XHJcbmltcG9ydCB7VG9vbHNVdGlsfSBmcm9tIFwiLi4vLi4vLi4vY29yZS91dGlscy9Ub29sc1V0aWxcIjtcclxuaW1wb3J0IHthdHJfc3RhdGljX2RhdGFzfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9iYXNlL2F0ci1jb21tb25cIjtcclxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhdHItbG9jYWwtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbG9jYWwtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sb2NhbC11cGxvYWQuY29tcG9uZW50Lmxlc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxVcGxvYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGJlZm9yZVVwbG9hZDogYW55O1xyXG4gIEBJbnB1dCgpIHVybDphbnk7XHJcbiAgQElucHV0KCkgbnpBY2NlcHQgPSAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJztcclxuICBASW5wdXQoKSBuYW1lOmFueTtcclxuICBASW5wdXQoKSBjb2RlOmFueTtcclxuICBASW5wdXQoKSB3aXRob3V0Um9sZTphbnk7XHJcbiAgQE91dHB1dCgpXHJcbiAgYWZ0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBzaG93TGlzdCA6YW55ID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyB0aGlzLmhlYWRlciA9IHRoaXMuZ2V0RGVmYXVsdEhlYWRlcihuZXcgSHR0cEhlYWRlcnMoKSk7XHJcbiAgfVxyXG4gIGhlYWRlciAgPSAoZmlsZTogTnpVcGxvYWRGaWxlKSA9PiB7XHJcbiAgICBsZXQgb2JqID0ge1xyXG4gICAgICBcIngtaGVhZGVyLWF0clwiOlwid2ViXCIsXHJcbiAgICAgIFwidG9rZW5cIiA6IExvY2FsU3RvcmFnZVV0aWwuZ2V0VXNlclRva2VuKCksXHJcbiAgICAgIC8vIFwib3JnQ29kZVwiIDogVG9vbHNVdGlsLmdldE9yZ0NvZGUoKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvYmo7XHJcbiAgfTtcclxuICBvbkNoYW5nZShwYXJhbXM6IE56VXBsb2FkQ2hhbmdlUGFyYW0pIHtcclxuICAgIGNvbnNvbGUubG9nKHBhcmFtcyk7XHJcbiAgICBpZiAocGFyYW1zLnR5cGUgPT0gXCJzdWNjZXNzXCIgfHwgcGFyYW1zLnR5cGUgPT0gXCJyZW1vdmVkXCIpIHtcclxuICAgICAgbGV0IGZpbGVVcmxzOiBhbnlbXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBmaWxlIG9mIHBhcmFtcy5maWxlTGlzdCkge1xyXG4gICAgICAgIGlmIChmaWxlW1wia2V5XCJdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgZmlsZVVybHMucHVzaChmaWxlW1wia2V5XCJdKTtcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmlsZS5vcmlnaW5GaWxlT2JqKSB7XHJcbiAgICAgICAgICBsZXQgb3JpZ2luRmlsZU9iajogYW55ID0gZmlsZS5vcmlnaW5GaWxlT2JqXHJcbiAgICAgICAgICBpZiAob3JpZ2luRmlsZU9ialtcImtleVwiXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZmlsZVVybHMucHVzaChvcmlnaW5GaWxlT2JqW1wia2V5XCJdKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5hZnRlckNoYW5nZS5lbWl0KHBhcmFtcyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIGdldERlZmF1bHRIZWFkZXIoX2hlYWRlcnM6SHR0cEhlYWRlcnMpOkh0dHBIZWFkZXJze1xyXG4gIC8vICAgX2hlYWRlcnMgPSBfaGVhZGVycy5zZXQoXCJ4LWhlYWRlci1hdHJcIixcIm1hbmFnZVwiKTtcclxuICAvLyAgIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwidG9rZW5cIixMb2NhbFN0b3JhZ2VVdGlsLmdldFVzZXJUb2tlbigpKTtcclxuICAvLyAgIF9oZWFkZXJzID0gX2hlYWRlcnMuc2V0KFwidXNlcklkXCIsTG9jYWxTdG9yYWdlVXRpbC5nZXRVc2VySWQoKSk7XHJcbiAgLy8gICBfaGVhZGVycyA9IF9oZWFkZXJzLnNldChcIm9yZ0NvZGVcIixUb29sc1V0aWwuZ2V0T3JnQ29kZSgpKTtcclxuICAvLyAgIHJldHVybiBfaGVhZGVycztcclxuICAvLyB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3aXRob3V0Um9sZVwiPlxyXG4gIDxuei11cGxvYWQgW256QWN0aW9uXT1cInVybFwiIFtuekFjY2VwdF09XCJuekFjY2VwdFwiIFtuekhlYWRlcnNdPVwiaGVhZGVyXCIgW256U2hvd1VwbG9hZExpc3RdPVwic2hvd0xpc3RcIlxyXG4gICAgICAgICAgICAgW256QmVmb3JlVXBsb2FkXT1cImJlZm9yZVVwbG9hZFwiXHJcbiAgICAgICAgICAgICAobnpDaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAqYXRyUm9sZT1cImNvZGVcIiBbbnpMaW1pdF09JzEnPlxyXG4gICAgPGJ1dHRvbiBuei1idXR0b24gbnpTaXplPVwic21hbGxcIj48aSBuei1pY29uIG56VHlwZT1cInVwbG9hZFwiPjwvaT48c3Bhbj4ge3tuYW1lfX08L3NwYW4+PC9idXR0b24+XHJcbiAgPC9uei11cGxvYWQ+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwid2l0aG91dFJvbGVcIj5cclxuICA8bnotdXBsb2FkIFtuekFjdGlvbl09XCJ1cmxcIiBbbnpBY2NlcHRdPVwibnpBY2NlcHRcIiBbbnpIZWFkZXJzXT1cImhlYWRlclwiIFtuelNob3dVcGxvYWRMaXN0XT1cInNob3dMaXN0XCJcclxuICAgICAgICAgICAgIFtuekJlZm9yZVVwbG9hZF09XCJiZWZvcmVVcGxvYWRcIlxyXG4gICAgICAgICAgICAgKG56Q2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgW256TGltaXRdPScxJz5cclxuICAgIDxidXR0b24gbnotYnV0dG9uIG56U2l6ZT1cInNtYWxsXCI+PGkgbnotaWNvbiBuelR5cGU9XCJ1cGxvYWRcIj48L2k+PHNwYW4+IHt7bmFtZX19PC9zcGFuPjwvYnV0dG9uPlxyXG4gIDwvbnotdXBsb2FkPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import { Component, Input, forwardRef } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { debounceTime } from 'rxjs/operators';
|
|
4
|
-
import Quill from 'quill';
|
|
5
|
-
import ResizeModule from "@ssumo/quill-resize-module";
|
|
6
|
-
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
7
|
-
import { UploadOssService } from "../../../core/services/upload-oss.service";
|
|
8
|
-
import { ToolsUtil } from "../../../core/utils/ToolsUtil";
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "../../../core/services/upload-oss.service";
|
|
11
|
-
import * as i2 from "ng-zorro-antd/message";
|
|
12
|
-
import * as i3 from "ngx-quill";
|
|
13
|
-
import * as i4 from "ng-zorro-antd/modal";
|
|
14
|
-
import * as i5 from "@angular/forms";
|
|
15
|
-
import * as i6 from "@angular/common";
|
|
16
|
-
import * as i7 from "ng-zorro-antd/core/transition-patch";
|
|
17
|
-
import * as i8 from "ng-zorro-antd/icon";
|
|
18
|
-
Quill.register("modules/resize", ResizeModule);
|
|
19
|
-
const icons = Quill.import('ui/icons');
|
|
20
|
-
icons.undo = `<svg viewbox="0 0 18 18">
|
|
21
|
-
<polygon class="ql-fill ql-stroke" points="6 10 4 12 2 10 6 10"></polygon>
|
|
22
|
-
<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>
|
|
23
|
-
</svg>`;
|
|
24
|
-
icons.redo = `<svg viewbox="0 0 18 18">
|
|
25
|
-
<polygon class="ql-fill ql-stroke" points="12 10 14 12 16 10 12 10"></polygon>
|
|
26
|
-
<path class="ql-stroke" d="M9.91,13.91A4.6,4.6,0,0,1,9,14a5,5,0,1,1,5-5"></path>
|
|
27
|
-
</svg>`;
|
|
28
|
-
export class QuillEditorComponent {
|
|
29
|
-
constructor(uploadOssService, message) {
|
|
30
|
-
this.uploadOssService = uploadOssService;
|
|
31
|
-
this.message = message;
|
|
32
|
-
this.placeholder = '请输入';
|
|
33
|
-
this.styles = { height: '350px' };
|
|
34
|
-
this.readOnly = false;
|
|
35
|
-
this.needImgSeq = false;
|
|
36
|
-
this.imgUrls = [];
|
|
37
|
-
this.editor$ = new Subject();
|
|
38
|
-
this.imgVis = false;
|
|
39
|
-
}
|
|
40
|
-
ngOnInit() {
|
|
41
|
-
this.editor$.pipe(debounceTime(700)).subscribe((editorContent) => {
|
|
42
|
-
if (typeof (this.onChangeListener) === 'function' && typeof (this.onTouchedListener)) {
|
|
43
|
-
this.onChangeListener(editorContent); // 告诉form,你的表单值改变成了payload
|
|
44
|
-
this.onTouchedListener(); // 告诉form,你的表单有交互发生
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
writeValue(value) {
|
|
49
|
-
this.value = value;
|
|
50
|
-
}
|
|
51
|
-
registerOnChange(fn) {
|
|
52
|
-
this.onChangeListener = fn;
|
|
53
|
-
}
|
|
54
|
-
registerOnTouched(fn) {
|
|
55
|
-
this.onTouchedListener = fn;
|
|
56
|
-
}
|
|
57
|
-
setDisabledState(isDisabled) {
|
|
58
|
-
}
|
|
59
|
-
onChange(quill) {
|
|
60
|
-
this.editor$.next(quill.html);
|
|
61
|
-
}
|
|
62
|
-
EditorCreated(quill) {
|
|
63
|
-
const toolbar = quill.getModule('toolbar');
|
|
64
|
-
toolbar.addHandler('image', this.imageHandler.bind(this));
|
|
65
|
-
this.editor = quill;
|
|
66
|
-
let that = this;
|
|
67
|
-
quill.on('text-change', function (delta, oldDelta, source) {
|
|
68
|
-
if (source == 'api') {
|
|
69
|
-
}
|
|
70
|
-
else if (source == 'user') {
|
|
71
|
-
console.log('user');
|
|
72
|
-
that.uploadImgs([], 0);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
getBlobByBase64(url, oldUrl) {
|
|
77
|
-
const c = document.createElement('canvas');
|
|
78
|
-
console.log(c);
|
|
79
|
-
const ctx = c.getContext('2d');
|
|
80
|
-
ctx.stroke();
|
|
81
|
-
let blob = ToolsUtil.dataURItoBlob(url);
|
|
82
|
-
blob.name = '.png';
|
|
83
|
-
let delta = this.editor.getContents();
|
|
84
|
-
console.log('delta', delta);
|
|
85
|
-
for (let i = 0; i < delta.ops.length; i++) {
|
|
86
|
-
if (delta.ops[i].insert.image == oldUrl) {
|
|
87
|
-
return {
|
|
88
|
-
index: i,
|
|
89
|
-
blob: blob,
|
|
90
|
-
oldUrl: oldUrl
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
uploadImgs(blods, index) {
|
|
97
|
-
let details = this.editor.getContents();
|
|
98
|
-
let opt = details.ops[index];
|
|
99
|
-
if (opt && opt.insert && opt.insert.image) {
|
|
100
|
-
if (ToolsUtil.isBase64(opt.insert.image)) {
|
|
101
|
-
blods.push(this.getBlobByBase64(opt.insert.image, opt.insert.image));
|
|
102
|
-
this.isEndContents(blods, index);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
let c = document.createElement('canvas');
|
|
106
|
-
let ctx = c.getContext('2d');
|
|
107
|
-
let img = new Image();
|
|
108
|
-
img.src = opt.insert.image;
|
|
109
|
-
img.setAttribute('crossOrigin', '*');
|
|
110
|
-
let that = this;
|
|
111
|
-
img.onload = function () {
|
|
112
|
-
c.width = img.width;
|
|
113
|
-
c.height = img.height;
|
|
114
|
-
ctx.drawImage(img, 0, 0, img.width, img.height);
|
|
115
|
-
let url = c.toDataURL();
|
|
116
|
-
blods.push(that.getBlobByBase64(url, img.src));
|
|
117
|
-
that.isEndContents(blods, index);
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
this.isEndContents(blods, index);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
uploadImg(blods) {
|
|
126
|
-
if (!blods || blods.length <= 0) {
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
for (let i = 0; i < blods.length; i++) {
|
|
130
|
-
let blob = blods[i];
|
|
131
|
-
this.uploadOssService.uploadOss(blob).subscribe((url) => {
|
|
132
|
-
let delta = this.editor.getContents();
|
|
133
|
-
delta.filter((opt) => opt && opt.insert && opt.insert.image == blods[i].oldUrl).forEach((opt, index) => {
|
|
134
|
-
opt.insert.image = url;
|
|
135
|
-
});
|
|
136
|
-
this.editor.setContents(delta, 'api');
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
isEndContents(blods, index) {
|
|
141
|
-
let details = this.editor.getContents();
|
|
142
|
-
if (++index != details.ops.length) {
|
|
143
|
-
this.uploadImgs(blods, index);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
this.uploadImg(blods);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
imageHandler() {
|
|
150
|
-
const Imageinput = document.createElement('input');
|
|
151
|
-
Imageinput.setAttribute('type', 'file');
|
|
152
|
-
Imageinput.setAttribute('multiple', 'multiple');
|
|
153
|
-
Imageinput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp');
|
|
154
|
-
Imageinput.classList.add('ql-image');
|
|
155
|
-
Imageinput.addEventListener('change', () => {
|
|
156
|
-
if (this.needImgSeq) {
|
|
157
|
-
this.imgVis = true;
|
|
158
|
-
}
|
|
159
|
-
console.log(Imageinput);
|
|
160
|
-
let files = Imageinput.files;
|
|
161
|
-
if (files === null || files.length == 0) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
this.imgUrls = [];
|
|
165
|
-
for (let i = 0; i < files.length; i++) {
|
|
166
|
-
const file = files[i];
|
|
167
|
-
if (file === null) {
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
const error = (res) => {
|
|
171
|
-
this.message.warning('上传失败');
|
|
172
|
-
};
|
|
173
|
-
this.uploadOssService.uploadOss(file).subscribe((url) => {
|
|
174
|
-
console.log(file);
|
|
175
|
-
if (url) {
|
|
176
|
-
this.imgUrls.push({ url: url, file: file, index: i });
|
|
177
|
-
if (!this.needImgSeq) {
|
|
178
|
-
this.editor.insertEmbed(this.editor.getSelection(true).index, 'image', url);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
this.message.warning('上传失败');
|
|
183
|
-
}
|
|
184
|
-
if (this.needImgSeq && this.imgUrls.length == files.length) {
|
|
185
|
-
this.imgVis = true;
|
|
186
|
-
this.imgUrls.sort((a, b) => a.index - b.index);
|
|
187
|
-
document.getElementById("te")?.click();
|
|
188
|
-
}
|
|
189
|
-
}, error);
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
Imageinput.click();
|
|
193
|
-
}
|
|
194
|
-
saveSeq() {
|
|
195
|
-
console.log(123);
|
|
196
|
-
for (let i = this.imgUrls.length - 1; i >= 0; i--) {
|
|
197
|
-
this.editor.insertEmbed(this.editor.getSelection(true).index, 'image', this.imgUrls[i].url);
|
|
198
|
-
}
|
|
199
|
-
this.imgVis = false;
|
|
200
|
-
}
|
|
201
|
-
arrowUp(index) {
|
|
202
|
-
let img = this.imgUrls[index];
|
|
203
|
-
this.imgUrls[index] = this.imgUrls[index - 1];
|
|
204
|
-
this.imgUrls[index - 1] = img;
|
|
205
|
-
}
|
|
206
|
-
arrowDown(index) {
|
|
207
|
-
let img = this.imgUrls[index];
|
|
208
|
-
this.imgUrls[index] = this.imgUrls[index + 1];
|
|
209
|
-
this.imgUrls[index + 1] = img;
|
|
210
|
-
}
|
|
211
|
-
cancle() {
|
|
212
|
-
this.imgVis = false;
|
|
213
|
-
}
|
|
214
|
-
te() {
|
|
215
|
-
console.log('上传完毕');
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
QuillEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: QuillEditorComponent, deps: [{ token: i1.UploadOssService }, { token: i2.NzMessageService }], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
-
QuillEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: QuillEditorComponent, selector: "app-quill-editor", inputs: { placeholder: "placeholder", styles: "styles", value: "value", readOnly: "readOnly", needImgSeq: "needImgSeq" }, providers: [
|
|
220
|
-
UploadOssService,
|
|
221
|
-
{
|
|
222
|
-
provide: NG_VALUE_ACCESSOR,
|
|
223
|
-
useExisting: forwardRef(() => QuillEditorComponent),
|
|
224
|
-
multi: true
|
|
225
|
-
}
|
|
226
|
-
], 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: [".img-div{border:1px solid #d9d9d9;border-radius:4px;margin-top:5px;display:flex;align-items:center;padding:0 5px}\n"], components: [{ type: i3.QuillEditorComponent, selector: "quill-editor" }, { type: i4.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzContent", "nzComponentParams", "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"] }], directives: [{ type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ɵ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"] }, { type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] });
|
|
227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: QuillEditorComponent, decorators: [{
|
|
228
|
-
type: Component,
|
|
229
|
-
args: [{ selector: 'app-quill-editor', providers: [
|
|
230
|
-
UploadOssService,
|
|
231
|
-
{
|
|
232
|
-
provide: NG_VALUE_ACCESSOR,
|
|
233
|
-
useExisting: forwardRef(() => QuillEditorComponent),
|
|
234
|
-
multi: true
|
|
235
|
-
}
|
|
236
|
-
], 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: [".img-div{border:1px solid #d9d9d9;border-radius:4px;margin-top:5px;display:flex;align-items:center;padding:0 5px}\n"] }]
|
|
237
|
-
}], ctorParameters: function () { return [{ type: i1.UploadOssService }, { type: i2.NzMessageService }]; }, propDecorators: { placeholder: [{
|
|
238
|
-
type: Input
|
|
239
|
-
}], styles: [{
|
|
240
|
-
type: Input
|
|
241
|
-
}], value: [{
|
|
242
|
-
type: Input
|
|
243
|
-
}], readOnly: [{
|
|
244
|
-
type: Input
|
|
245
|
-
}], needImgSeq: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}] } });
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpbGwtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvcXVpbGwtZWRpdG9yL3F1aWxsLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3F1aWxsLWVkaXRvci9xdWlsbC1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzlFLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFlBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQXVCLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7O0FBRXhELEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN2QyxLQUFLLENBQUMsSUFBSSxHQUFHOzs7T0FHTixDQUFDO0FBQ1IsS0FBSyxDQUFDLElBQUksR0FBRzs7O09BR04sQ0FBQztBQWVSLE1BQU0sT0FBTyxvQkFBb0I7SUFjL0IsWUFBb0IsZ0JBQWtDLEVBQVUsT0FBeUI7UUFBckUscUJBQWdCLEdBQWhCLGdCQUFn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RSxJQUFJO1NBQ1o7S0FDRiwwQkNoQ0gsaXZEQW1DQTs0RkREYSxvQkFBb0I7a0JBYmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGFBR2pCO3dCQUNULGdCQUFnQjt3QkFDaEI7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NJQUlRLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuaW1wb3J0IFJlc2l6ZU1vZHVsZSBmcm9tIFwiQHNzdW1vL3F1aWxsLXJlc2l6ZS1tb2R1bGVcIjtcclxuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtOek1lc3NhZ2VTZXJ2aWNlfSBmcm9tICduZy16b3Jyby1hbnRkL21lc3NhZ2UnO1xyXG5pbXBvcnQge1VwbG9hZE9zc1NlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL3VwbG9hZC1vc3Muc2VydmljZVwiO1xyXG5pbXBvcnQge1Rvb2xzVXRpbH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvdXRpbHMvVG9vbHNVdGlsXCI7XHJcblxyXG5RdWlsbC5yZWdpc3RlcihcIm1vZHVsZXMvcmVzaXplXCIsIFJlc2l6ZU1vZHVsZSk7XHJcbmNvbnN0IGljb25zID0gUXVpbGwuaW1wb3J0KCd1aS9pY29ucycpO1xyXG5pY29ucy51bmRvID0gYDxzdmcgdmlld2JveD1cIjAgMCAxOCAxOFwiPlxyXG4gIDxwb2x5Z29uIGNsYXNzPVwicWwtZmlsbCBxbC1zdHJva2VcIiBwb2ludHM9XCI2IDEwIDQgMTIgMiAxMCA2IDEwXCI+PC9wb2x5Z29uPlxyXG4gIDxwYXRoIGNsYXNzPVwicWwtc3Ryb2tlXCIgZD1cIk04LjA5LDEzLjkxQTQuNiw0LjYsMCwwLDAsOSwxNCw1LDUsMCwxLDAsNCw5XCI+PC9wYXRoPlxyXG48L3N2Zz5gO1xyXG5pY29ucy5yZWRvID0gYDxzdmcgdmlld2JveD1cIjAgMCAxOCAxOFwiPlxyXG4gIDxwb2x5Z29uIGNsYXNzPVwicWwtZmlsbCBxbC1zdHJva2VcIiBwb2ludHM9XCIxMiAxMCAxNCAxMiAxNiAxMCAxMiAxMFwiPjwvcG9seWdvbj5cclxuICA8cGF0aCBjbGFzcz1cInFsLXN0cm9rZVwiIGQ9XCJNOS45MSwxMy45MUE0LjYsNC42LDAsMCwxLDksMTRhNSw1LDAsMSwxLDUtNVwiPjwvcGF0aD5cclxuPC9zdmc+YDtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXF1aWxsLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3F1aWxsLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcXVpbGwtZWRpdG9yLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBVcGxvYWRPc3NTZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUXVpbGxFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFF1aWxsRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ+ivt+i+k+WFpSc7XHJcbiAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSB7aGVpZ2h0OiAnMzUwcHgnfTtcclxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nIHwgYW55OyAvLyDnu4Tku7blr7nlupTnmoQg4oCcIG5nTW9kZWwg4oCdXHJcbiAgQElucHV0KCkgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBuZWVkSW1nU2VxOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZWRpdG9yOiBhbnk7XHJcbiAgb25DaGFuZ2VMaXN0ZW5lcjogYW55OyAvLyDmlLnlj5jlgLzlm57osINcclxuICBvblRvdWNoZWRMaXN0ZW5lcjogYW55OyAvLyDkuqTkupLlm57osINcclxuICBpbWdVcmxzOiBhbnkgPSBbXTtcclxuICBlZGl0b3IkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIGltZ1ZpcyA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVwbG9hZE9zc1NlcnZpY2U6IFVwbG9hZE9zc1NlcnZpY2UsIHByaXZhdGUgbWVzc2FnZTogTnpNZXNzYWdlU2VydmljZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmVkaXRvciQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDcwMClcclxuICAgICkuc3Vic2NyaWJlKChlZGl0b3JDb250ZW50OiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiAodGhpcy5vbkNoYW5nZUxpc3RlbmVyKSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgKHRoaXMub25Ub3VjaGVkTGlzdGVuZXIpKSB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZUxpc3RlbmVyKGVkaXRvckNvbnRlbnQpOyAvLyDlkYror4lmb3Jt77yM5L2g55qE6KGo5Y2V5YC85pS55Y+Y5oiQ5LqGcGF5bG9hZFxyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkTGlzdGVuZXIoKTsgLy8g5ZGK6K+JZm9ybe+8jOS9oOeahOihqOWNleacieS6pOS6kuWPkeeUn1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VMaXN0ZW5lciA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRMaXN0ZW5lciA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHF1aWxsOiBhbnkpIHtcclxuICAgIHRoaXMuZWRpdG9yJC5uZXh0KHF1aWxsLmh0bWwpO1xyXG4gIH1cclxuXHJcbiAgRWRpdG9yQ3JlYXRlZChxdWlsbDogYW55KSB7XHJcbiAgICBjb25zdCB0b29sYmFyID0gcXVpbGwuZ2V0TW9kdWxlKCd0b29sYmFyJyk7XHJcbiAgICB0b29sYmFyLmFkZEhhbmRsZXIoJ2ltYWdlJywgdGhpcy5pbWFnZUhhbmRsZXIuYmluZCh0aGlzKSk7XHJcbiAgICB0aGlzLmVkaXRvciA9IHF1aWxsO1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgcXVpbGwub24oJ3RleHQtY2hhbmdlJywgZnVuY3Rpb24gKGRlbHRhOiBhbnksIG9sZERlbHRhOiBhbnksIHNvdXJjZTogYW55KSB7XHJcbiAgICAgIGlmIChzb3VyY2UgPT0gJ2FwaScpIHtcclxuICAgICAgfSBlbHNlIGlmIChzb3VyY2UgPT0gJ3VzZXInKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3VzZXInKTtcclxuICAgICAgICB0aGF0LnVwbG9hZEltZ3MoW10sIDApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEJsb2JCeUJhc2U2NCh1cmw6IGFueSwgb2xkVXJsOiBhbnkpIHtcclxuICAgIGNvbnN0IGM6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xyXG4gICAgY29uc29sZS5sb2coYyk7XHJcbiAgICBjb25zdCBjdHggPSBjLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICBjdHguc3Ryb2tlKCk7XHJcbiAgICBsZXQgYmxvYjogYW55ID0gVG9vbHNVdGlsLmRhdGFVUkl0b0Jsb2IodXJsKTtcclxuICAgIGJsb2IubmFtZSA9ICcucG5nJztcclxuICAgIGxldCBkZWx0YSA9IHRoaXMuZWRpdG9yLmdldENvbnRlbnRzKCk7XHJcbiAgICBjb25zb2xlLmxvZygnZGVsdGEnLCBkZWx0YSlcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGEub3BzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChkZWx0YS5vcHNbaV0uaW5zZXJ0LmltYWdlID09IG9sZFVybCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgIGJsb2I6IGJsb2IsXHJcbiAgICAgICAgICBvbGRVcmw6IG9sZFVybFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkSW1ncyhibG9kczogYW55LCBpbmRleDogYW55KSB7XHJcbiAgICBsZXQgZGV0YWlscyA9IHRoaXMuZWRpdG9yLmdldENvbnRlbnRzKCk7XHJcbiAgICBsZXQgb3B0ID0gZGV0YWlscy5vcHNbaW5kZXhdO1xyXG4gICAgaWYgKG9wdCAmJiBvcHQuaW5zZXJ0ICYmIG9wdC5pbnNlcnQuaW1hZ2UpIHtcclxuICAgICAgaWYgKFRvb2xzVXRpbC5pc0Jhc2U2NChvcHQuaW5zZXJ0LmltYWdlKSkge1xyXG4gICAgICAgIGJsb2RzLnB1c2godGhpcy5nZXRCbG9iQnlCYXNlNjQob3B0Lmluc2VydC5pbWFnZSwgb3B0Lmluc2VydC5pbWFnZSkpO1xyXG4gICAgICAgIHRoaXMuaXNFbmRDb250ZW50cyhibG9kcywgaW5kZXgpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcclxuICAgICAgICBsZXQgY3R4OiBhbnkgPSBjLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgbGV0IGltZyA9IG5ldyBJbWFnZSgpO1xyXG4gICAgICAgIGltZy5zcmMgPSBvcHQuaW5zZXJ0LmltYWdlO1xyXG4gICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ2Nyb3NzT3JpZ2luJywgJyonKTtcclxuICAgICAgICBsZXQgdGhhdCA9IHRoaXM7XHJcbiAgICAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIGMud2lkdGggPSBpbWcud2lkdGg7XHJcbiAgICAgICAgICBjLmhlaWdodCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgICBjdHguZHJhd0ltYWdlKGltZywgMCwgMCwgaW1nLndpZHRoLCBpbWcuaGVpZ2h0KTtcclxuICAgICAgICAgIGxldCB1cmwgPSBjLnRvRGF0YVVSTCgpO1xyXG4gICAgICAgICAgYmxvZHMucHVzaCh0aGF0LmdldEJsb2JCeUJhc2U2NCh1cmwsIGltZy5zcmMpKVxyXG4gICAgICAgICAgdGhhdC5pc0VuZENvbnRlbnRzKGJsb2RzLCBpbmRleClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXNFbmRDb250ZW50cyhibG9kcywgaW5kZXgpXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICB1cGxvYWRJbWcoYmxvZHM6YW55KSB7XHJcbiAgICBpZiAoIWJsb2RzIHx8IGJsb2RzLmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG5cclxuICAgIGZvcihsZXQgaSA9IDA7aTwgYmxvZHMubGVuZ3RoO2krKyl7XHJcbiAgICAgIGxldCBibG9iID0gYmxvZHNbaV07XHJcbiAgICAgIHRoaXMudXBsb2FkT3NzU2VydmljZS51cGxvYWRPc3MoYmxvYikuc3Vic2NyaWJlKCh1cmwpID0+IHtcclxuICAgICAgICBsZXQgZGVsdGEgPSB0aGlzLmVkaXRvci5nZXRDb250ZW50cygpO1xyXG4gICAgICAgIGRlbHRhLmZpbHRlcigob3B0OmFueSkgPT4gb3B0ICYmIG9wdC5pbnNlcnQgJiYgb3B0Lmluc2VydC5pbWFnZSA9PSBibG9kc1tpXS5vbGRVcmwpLmZvckVhY2goKG9wdDphbnksIGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgb3B0Lmluc2VydC5pbWFnZSA9IHVybFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnNldENvbnRlbnRzKGRlbHRhLCAnYXBpJyk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGlzRW5kQ29udGVudHMoYmxvZHM6YW55LCBpbmRleDphbnkpIHtcclxuICAgIGxldCBkZXRhaWxzID0gdGhpcy5lZGl0b3IuZ2V0Q29udGVudHMoKTtcclxuICAgIGlmICgrK2luZGV4ICE9IGRldGFpbHMub3BzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnVwbG9hZEltZ3MoYmxvZHMsIGluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudXBsb2FkSW1nKGJsb2RzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGltYWdlSGFuZGxlcigpIHtcclxuICAgIGNvbnN0IEltYWdlaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgSW1hZ2VpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnZmlsZScpO1xyXG4gICAgSW1hZ2VpbnB1dC5zZXRBdHRyaWJ1dGUoJ211bHRpcGxlJywgJ211bHRpcGxlJyk7XHJcbiAgICBJbWFnZWlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAnKTtcclxuICAgIEltYWdlaW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtaW1hZ2UnKTtcclxuICAgIEltYWdlaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5uZWVkSW1nU2VxKSB7XHJcbiAgICAgICAgdGhpcy5pbWdWaXMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKEltYWdlaW5wdXQpO1xyXG4gICAgICBsZXQgZmlsZXM6IGFueSA9IEltYWdlaW5wdXQuZmlsZXM7XHJcbiAgICAgIGlmIChmaWxlcyA9PT0gbnVsbCB8fCBmaWxlcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmltZ1VybHMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1tpXTtcclxuICAgICAgICBpZiAoZmlsZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgY29uc3QgZXJyb3IgPSAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZS53YXJuaW5nKCfkuIrkvKDlpLHotKUnKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLnVwbG9hZE9zc1NlcnZpY2UudXBsb2FkT3NzKGZpbGUpLnN1YnNjcmliZSgodXJsKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhmaWxlKTtcclxuICAgICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5pbWdVcmxzLnB1c2goe3VybDogdXJsLCBmaWxlOiBmaWxlLCBpbmRleDogaX0pO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubmVlZEltZ1NlcSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdG9yLmluc2VydEVtYmVkKHRoaXMuZWRpdG9yLmdldFNlbGVjdGlvbih0cnVlKS5pbmRleCwgJ2ltYWdlJywgdXJsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLndhcm5pbmcoJ+S4iuS8oOWksei0pScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHRoaXMubmVlZEltZ1NlcSAmJiB0aGlzLmltZ1VybHMubGVuZ3RoID09IGZpbGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmltZ1ZpcyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaW1nVXJscy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRlXCIpPy5jbGljaygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIEltYWdlaW5wdXQuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIHNhdmVTZXEoKSB7XHJcbiAgICBjb25zb2xlLmxvZygxMjMpO1xyXG4gICAgZm9yIChsZXQgaSA9IHRoaXMuaW1nVXJscy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICB0aGlzLmVkaXRvci5pbnNlcnRFbWJlZCh0aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24odHJ1ZSkuaW5kZXgsICdpbWFnZScsIHRoaXMuaW1nVXJsc1tpXS51cmwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbWdWaXMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFycm93VXAoaW5kZXg6IGFueSkge1xyXG4gICAgbGV0IGltZyA9IHRoaXMuaW1nVXJsc1tpbmRleF07XHJcbiAgICB0aGlzLmltZ1VybHNbaW5kZXhdID0gdGhpcy5pbWdVcmxzW2luZGV4IC0gMV07XHJcbiAgICB0aGlzLmltZ1VybHNbaW5kZXggLSAxXSA9IGltZztcclxuICB9XHJcblxyXG4gIGFycm93RG93bihpbmRleDogYW55KSB7XHJcbiAgICBsZXQgaW1nID0gdGhpcy5pbWdVcmxzW2luZGV4XTtcclxuICAgIHRoaXMuaW1nVXJsc1tpbmRleF0gPSB0aGlzLmltZ1VybHNbaW5kZXggKyAxXTtcclxuICAgIHRoaXMuaW1nVXJsc1tpbmRleCArIDFdID0gaW1nO1xyXG4gIH1cclxuXHJcbiAgY2FuY2xlKCkge1xyXG4gICAgdGhpcy5pbWdWaXMgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHRlKCkge1xyXG4gICAgY29uc29sZS5sb2coJ+S4iuS8oOWujOavlScpXHJcbiAgfVxyXG59XHJcbiIsIjxxdWlsbC1lZGl0b3JcclxuICBbc3R5bGVzXT1cInN0eWxlc1wiXHJcbiAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAob25FZGl0b3JDcmVhdGVkKT1cIkVkaXRvckNyZWF0ZWQoJGV2ZW50KVwiXHJcbiAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgKG9uQ29udGVudENoYW5nZWQpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcclxuPjwvcXVpbGwtZWRpdG9yPlxyXG48IS0t6L+Z5LiqZGl2LOaYr+WboOS4uuS4iuS8oOWujOavleeEpueCuei/mOWcqOWvjOaWh+acrOmHjCzlvLnlh7rml6Dms5XmmL7npLouLi4uLi0tPlxyXG48ZGl2IGlkPVwidGVcIiAoY2xpY2spPVwidGUoKVwiPjwvZGl2PlxyXG48bnotbW9kYWwgWyhuelZpc2libGUpXT1cImltZ1Zpc1wiIChuek9uT2spPVwic2F2ZVNlcSgpXCIgKG56T25DYW5jZWwpPVwiY2FuY2xlKClcIiBuek1hc2tDbG9zYWJsZT1cImZhbHNlXCJcclxuICAgICAgICAgIFtuelN0eWxlXT1cIntwYWRkaW5nOjB9XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbnpNb2RhbENvbnRlbnQ+XHJcbiAgPGRpdiBzdHlsZT1cIm1heC1oZWlnaHQ6NjAwcHg7b3ZlcmZsb3c6YXV0bzttYXJnaW4tdG9wOiAxMHB4O1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImltZ3NDb250ZW50XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbnotbW9kYWw+XHJcbjxuZy10ZW1wbGF0ZSAjaW1nc0NvbnRlbnQ+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1nT3B0IG9mIGltZ1VybHM7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImltZy1kaXZcIj5cclxuICAgICAgPGltZyBbc3JjXT1cImltZ09wdC51cmxcIiBbbmdTdHlsZV09XCJ7IHdpZHRoOiAnMTAwcHgnLGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLCBtYXJnaW46JzVweCcgfVwiLz5cclxuICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyMHB4OyBjb2xvcjogZ3JleTtcIj57e2ltZ09wdC5maWxlLm5hbWV9fTwvZGl2PlxyXG4gICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAyMHB4OyBmbGV4OiAxO3RleHQtYWxpZ246IHJpZ2h0O1wiPlxyXG4gICAgICAgIDxhIHRpdGxlPVwi5LiK56e7XCIgKm5nSWY9XCIgaSA+IDBcIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiIChjbGljayk9XCJhcnJvd1VwKGkpXCI+XHJcbiAgICAgICAgICA8aSBuei1pY29uIG56VHlwZT1cImFycm93LXVwXCIgbnpUaGVtZT1cIm91dGxpbmVcIiBzdHlsZT1cImNvbG9yOiAjMTg5MGZmOyBmb250LXNpemU6IDE1cHg7XCI+PC9pPlxyXG4gICAgICAgICAg5LiK56e7PC9hPlxyXG4gICAgICAgIDxhIHRpdGxlPVwi5LiL56e7XCIgKm5nSWY9XCIgaSA8IGltZ1VybHMubGVuZ3RoIC0gMVwiIChjbGljayk9XCJhcnJvd0Rvd24oaSlcIj5cclxuICAgICAgICAgIDxpIG56LWljb24gbnpUeXBlPVwiYXJyb3ctZG93blwiIG56VGhlbWU9XCJvdXRsaW5lXCIgc3R5bGU9XCJjb2xvcjogIzE4OTBmZjsgZm9udC1zaXplOiAxNXB4XCI+PC9pPlxyXG4gICAgICAgICAg5LiL56e7PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19
|