@deeksha2309/sunbird-collection-editor 8.0.7
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/README.md +24 -0
- package/esm2022/lib/collection-editor-cursor.service.mjs +3 -0
- package/esm2022/lib/collection-editor-library.component.mjs +16 -0
- package/esm2022/lib/collection-editor-library.module.mjs +137 -0
- package/esm2022/lib/components/answer/answer.component.mjs +43 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +325 -0
- package/esm2022/lib/components/asset-browser/asset-browser.data.mjs +53 -0
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +191 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +895 -0
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +43 -0
- package/esm2022/lib/components/contentplayer-page/contentplayer-page.component.mjs +351 -0
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +178 -0
- package/esm2022/lib/components/dialcode/dialcode.component.mjs +182 -0
- package/esm2022/lib/components/editor/editor.component.mjs +1125 -0
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +529 -0
- package/esm2022/lib/components/header/header.component.mjs +123 -0
- package/esm2022/lib/components/library/library.component.mjs +242 -0
- package/esm2022/lib/components/library-filter/library-filter.component.mjs +149 -0
- package/esm2022/lib/components/library-list/library-list.component.mjs +92 -0
- package/esm2022/lib/components/library-player/library-player.component.mjs +62 -0
- package/esm2022/lib/components/manage-collaborator/manage-collaborator.component.mjs +256 -0
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +377 -0
- package/esm2022/lib/components/options/options.component.mjs +144 -0
- package/esm2022/lib/components/plain-tree/plain-tree.component.mjs +125 -0
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +46 -0
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +67 -0
- package/esm2022/lib/components/quality-params-modal/quality-params-modal.component.mjs +52 -0
- package/esm2022/lib/components/question/question.component.mjs +1360 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +73 -0
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +84 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +143 -0
- package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +26 -0
- package/esm2022/lib/components/template/template.component.mjs +42 -0
- package/esm2022/lib/components/term-and-condition/term-and-condition.component.mjs +68 -0
- package/esm2022/lib/directives/telemetry-interact/telemetry-interact.directive.mjs +33 -0
- package/esm2022/lib/interfaces/McqForm.mjs +29 -0
- package/esm2022/lib/interfaces/editor.mjs +2 -0
- package/esm2022/lib/interfaces/framework.mjs +2 -0
- package/esm2022/lib/interfaces/httpOptions.mjs +2 -0
- package/esm2022/lib/interfaces/requestParam.mjs +2 -0
- package/esm2022/lib/interfaces/serverResponse.mjs +2 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +20 -0
- package/esm2022/lib/services/config/category.config.json +8 -0
- package/esm2022/lib/services/config/config.service.mjs +27 -0
- package/esm2022/lib/services/config/editor.config.json +31 -0
- package/esm2022/lib/services/config/label.config.json +314 -0
- package/esm2022/lib/services/config/player.config.json +96 -0
- package/esm2022/lib/services/config/url.config.json +69 -0
- package/esm2022/lib/services/data/data.service.mjs +192 -0
- package/esm2022/lib/services/dialcode/dialcode.service.mjs +309 -0
- package/esm2022/lib/services/editor/editor.service.mjs +682 -0
- package/esm2022/lib/services/framework/framework.service.mjs +106 -0
- package/esm2022/lib/services/helper/helper.service.mjs +160 -0
- package/esm2022/lib/services/player/player.service.mjs +99 -0
- package/esm2022/lib/services/public-data/public-data.service.mjs +21 -0
- package/esm2022/lib/services/question/question.service.mjs +167 -0
- package/esm2022/lib/services/telemetry/telemetry.service.mjs +120 -0
- package/esm2022/lib/services/toaster/toaster.service.mjs +105 -0
- package/esm2022/lib/services/tree/tree.service.mjs +284 -0
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +5 -0
- package/esm2022/public-api.mjs +4 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs +10138 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/assets/.gitkeep +0 -0
- package/lib/assets/images/MCQ.png +0 -0
- package/lib/assets/images/Spin.gif +0 -0
- package/lib/assets/images/bulkuploadfile.png +0 -0
- package/lib/assets/images/cancel-sign copy.png +0 -0
- package/lib/assets/images/cancel-sign.png +0 -0
- package/lib/assets/images/emptyResult.svg +1 -0
- package/lib/assets/images/icons-rtl.gif +0 -0
- package/lib/assets/images/icons.gif +0 -0
- package/lib/assets/images/imageicon.svg +16 -0
- package/lib/assets/images/imageicon_blue.svg +16 -0
- package/lib/assets/images/layoutoneicon.svg +16 -0
- package/lib/assets/images/layoutoneicon_blue.svg +16 -0
- package/lib/assets/images/layoutthreeicon.svg +18 -0
- package/lib/assets/images/layoutthreeicon_blue.svg +18 -0
- package/lib/assets/images/layouttwoicon.svg +18 -0
- package/lib/assets/images/layouttwoicon_blue.svg +18 -0
- package/lib/assets/images/leftalignicon.svg +17 -0
- package/lib/assets/images/leftalignicon_blue.svg +17 -0
- package/lib/assets/images/loader.gif +0 -0
- package/lib/assets/images/loader.svg +1 -0
- package/lib/assets/images/loading.gif +0 -0
- package/lib/assets/images/middlealignicon.svg +17 -0
- package/lib/assets/images/middlealignicon_blue.svg +17 -0
- package/lib/assets/images/question_collection.svg +18 -0
- package/lib/assets/images/rightalignicon.svg +17 -0
- package/lib/assets/images/rightalignicon_blue.svg +17 -0
- package/lib/assets/images/vline-rtl.gif +0 -0
- package/lib/assets/images/vline.gif +0 -0
- package/lib/assets/images/writing.png +0 -0
- package/lib/collection-editor-cursor.service.d.ts +5 -0
- package/lib/collection-editor-cursor.service.d.ts.map +1 -0
- package/lib/collection-editor-library.component.d.ts +9 -0
- package/lib/collection-editor-library.component.d.ts.map +1 -0
- package/lib/collection-editor-library.module.d.ts +50 -0
- package/lib/collection-editor-library.module.d.ts.map +1 -0
- package/lib/components/answer/answer.component.d.ts +24 -0
- package/lib/components/answer/answer.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts +81 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts +52 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts.map +1 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts +38 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +161 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts +18 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts.map +1 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts +54 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts.map +1 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts +42 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts.map +1 -0
- package/lib/components/dialcode/dialcode.component.d.ts +48 -0
- package/lib/components/dialcode/dialcode.component.d.ts.map +1 -0
- package/lib/components/editor/editor.component.d.ts +146 -0
- package/lib/components/editor/editor.component.d.ts.map +1 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +77 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -0
- package/lib/components/header/header.component.d.ts +46 -0
- package/lib/components/header/header.component.d.ts.map +1 -0
- package/lib/components/library/library.component.d.ts +69 -0
- package/lib/components/library/library.component.d.ts.map +1 -0
- package/lib/components/library-filter/library-filter.component.d.ts +47 -0
- package/lib/components/library-filter/library-filter.component.d.ts.map +1 -0
- package/lib/components/library-list/library-list.component.d.ts +32 -0
- package/lib/components/library-list/library-list.component.d.ts.map +1 -0
- package/lib/components/library-player/library-player.component.d.ts +24 -0
- package/lib/components/library-player/library-player.component.d.ts.map +1 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts +75 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts.map +1 -0
- package/lib/components/meta-form/meta-form.component.d.ts +51 -0
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -0
- package/lib/components/options/options.component.d.ts +53 -0
- package/lib/components/options/options.component.d.ts.map +1 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts +20 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts.map +1 -0
- package/lib/components/progress-status/progress-status.component.d.ts +25 -0
- package/lib/components/progress-status/progress-status.component.d.ts.map +1 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +23 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts +24 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts.map +1 -0
- package/lib/components/question/question.component.d.ts +215 -0
- package/lib/components/question/question.component.d.ts.map +1 -0
- package/lib/components/quml-player/quml-player.component.d.ts +26 -0
- package/lib/components/quml-player/quml-player.component.d.ts.map +1 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts +31 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts.map +1 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts +45 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts.map +1 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +13 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/components/template/template.component.d.ts +21 -0
- package/lib/components/template/template.component.d.ts.map +1 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts +26 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts.map +1 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts +27 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts.map +1 -0
- package/lib/interfaces/McqForm.d.ts +32 -0
- package/lib/interfaces/McqForm.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +78 -0
- package/lib/interfaces/editor.d.ts.map +1 -0
- package/lib/interfaces/framework.d.ts +46 -0
- package/lib/interfaces/framework.d.ts.map +1 -0
- package/lib/interfaces/httpOptions.d.ts +35 -0
- package/lib/interfaces/httpOptions.d.ts.map +1 -0
- package/lib/interfaces/requestParam.d.ts +24 -0
- package/lib/interfaces/requestParam.d.ts.map +1 -0
- package/lib/interfaces/serverResponse.d.ts +38 -0
- package/lib/interfaces/serverResponse.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +11 -0
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -0
- package/lib/services/config/config.service.d.ts +13 -0
- package/lib/services/config/config.service.d.ts.map +1 -0
- package/lib/services/data/data.service.d.ts +85 -0
- package/lib/services/data/data.service.d.ts.map +1 -0
- package/lib/services/dialcode/dialcode.service.d.ts +36 -0
- package/lib/services/dialcode/dialcode.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +150 -0
- package/lib/services/editor/editor.service.d.ts.map +1 -0
- package/lib/services/framework/framework.service.d.ts +35 -0
- package/lib/services/framework/framework.service.d.ts.map +1 -0
- package/lib/services/helper/helper.service.d.ts +41 -0
- package/lib/services/helper/helper.service.d.ts.map +1 -0
- package/lib/services/player/player.service.d.ts +33 -0
- package/lib/services/player/player.service.d.ts.map +1 -0
- package/lib/services/public-data/public-data.service.d.ts +15 -0
- package/lib/services/public-data/public-data.service.d.ts.map +1 -0
- package/lib/services/question/question.service.d.ts +30 -0
- package/lib/services/question/question.service.d.ts.map +1 -0
- package/lib/services/telemetry/telemetry.service.d.ts +45 -0
- package/lib/services/telemetry/telemetry.service.d.ts.map +1 -0
- package/lib/services/toaster/toaster.service.d.ts +50 -0
- package/lib/services/toaster/toaster.service.d.ts.map +1 -0
- package/lib/services/tree/tree.service.d.ts +51 -0
- package/lib/services/tree/tree.service.d.ts.map +1 -0
- package/package.json +32 -0
- package/project-sunbird-sunbird-collection-editor.d.ts.map +1 -0
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -0
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import * as _ from 'lodash-es';
|
|
3
|
+
import { catchError } from 'rxjs/operators';
|
|
4
|
+
import { throwError, Observable } from 'rxjs';
|
|
5
|
+
import { config } from './asset-browser.data';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../services/editor/editor.service";
|
|
8
|
+
import * as i2 from "../../services/config/config.service";
|
|
9
|
+
import * as i3 from "../../services/question/question.service";
|
|
10
|
+
import * as i4 from "@angular/common";
|
|
11
|
+
import * as i5 from "@angular/forms";
|
|
12
|
+
import * as i6 from "@project-sunbird/ng2-semantic-ui";
|
|
13
|
+
import * as i7 from "@project-sunbird/common-form-elements-full";
|
|
14
|
+
import * as i8 from "ngx-infinite-scroll";
|
|
15
|
+
export class AssetBrowserComponent {
|
|
16
|
+
constructor(editorService, configService, questionService) {
|
|
17
|
+
this.editorService = editorService;
|
|
18
|
+
this.configService = configService;
|
|
19
|
+
this.questionService = questionService;
|
|
20
|
+
this.assetBrowserEmitter = new EventEmitter();
|
|
21
|
+
this.modalDismissEmitter = new EventEmitter();
|
|
22
|
+
this.assetConfig = {};
|
|
23
|
+
this.myAssets = [];
|
|
24
|
+
this.allImages = [];
|
|
25
|
+
this.imageUploadLoader = false;
|
|
26
|
+
this.isClosable = true;
|
|
27
|
+
this.loading = false;
|
|
28
|
+
this.assetProxyUrl = '/assets/public/';
|
|
29
|
+
this.searchMyInput = '';
|
|
30
|
+
this.assestData = {};
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
this.initialFormConfig = _.get(config, 'uploadIconFormConfig');
|
|
34
|
+
this.formConfig = _.get(config, 'uploadIconFormConfig');
|
|
35
|
+
this.assetConfig = this.editorService.editorConfig.config.assetConfig;
|
|
36
|
+
this.termsAndCondition = _.get(this.configService.labelConfig, 'termsAndConditions.001');
|
|
37
|
+
this.emptySearchMessage = _.get(this.configService.labelConfig, 'messages.error.016');
|
|
38
|
+
this.acceptImageType = this.getAcceptType(this.assetConfig.image.accepted, 'image');
|
|
39
|
+
}
|
|
40
|
+
getAcceptType(typeList, type) {
|
|
41
|
+
const acceptTypeList = typeList.split(', ');
|
|
42
|
+
const result = [];
|
|
43
|
+
_.forEach(acceptTypeList, (content) => {
|
|
44
|
+
result.push(`${type}/${content}`);
|
|
45
|
+
});
|
|
46
|
+
return result.toString();
|
|
47
|
+
}
|
|
48
|
+
initializeImagePicker() {
|
|
49
|
+
this.showImagePicker = true;
|
|
50
|
+
}
|
|
51
|
+
outputEventHandler(event) {
|
|
52
|
+
console.log(JSON.stringify(event));
|
|
53
|
+
}
|
|
54
|
+
getMyImages(offset, query, search) {
|
|
55
|
+
this.assetsCount = 0;
|
|
56
|
+
if (!search) {
|
|
57
|
+
this.searchMyInput = '';
|
|
58
|
+
}
|
|
59
|
+
if (offset === 0) {
|
|
60
|
+
this.myAssets.length = 0;
|
|
61
|
+
}
|
|
62
|
+
const req = {
|
|
63
|
+
filters: {
|
|
64
|
+
mediaType: ['image'],
|
|
65
|
+
createdBy: _.get(this.editorService.editorConfig, 'context.user.id')
|
|
66
|
+
},
|
|
67
|
+
offset
|
|
68
|
+
};
|
|
69
|
+
if (query) {
|
|
70
|
+
req['query'] = query;
|
|
71
|
+
}
|
|
72
|
+
this.questionService.getAssetMedia(req).pipe(catchError(err => {
|
|
73
|
+
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.022') };
|
|
74
|
+
return throwError(this.editorService.apiErrorHandling(err, errInfo));
|
|
75
|
+
})).subscribe((res) => {
|
|
76
|
+
this.assetsCount = res.result.count;
|
|
77
|
+
_.map(res.result.content, (item) => {
|
|
78
|
+
if (item.downloadUrl) {
|
|
79
|
+
this.myAssets.push(item);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
addImageInEditor(imageUrl, imageId) {
|
|
85
|
+
this.appIcon = imageUrl;
|
|
86
|
+
this.showImagePicker = false;
|
|
87
|
+
this.assetBrowserEmitter.emit({ type: 'image', url: this.appIcon });
|
|
88
|
+
}
|
|
89
|
+
getAllImages(offset, query, search) {
|
|
90
|
+
this.assetsCount = 0;
|
|
91
|
+
if (!search) {
|
|
92
|
+
this.searchAllInput = '';
|
|
93
|
+
}
|
|
94
|
+
if (offset === 0) {
|
|
95
|
+
this.allImages.length = 0;
|
|
96
|
+
}
|
|
97
|
+
const req = {
|
|
98
|
+
filters: {
|
|
99
|
+
mediaType: ['image']
|
|
100
|
+
},
|
|
101
|
+
offset
|
|
102
|
+
};
|
|
103
|
+
if (query) {
|
|
104
|
+
req['query'] = query;
|
|
105
|
+
}
|
|
106
|
+
this.questionService.getAssetMedia(req).pipe(catchError(err => {
|
|
107
|
+
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.022') };
|
|
108
|
+
return throwError(this.editorService.apiErrorHandling(err, errInfo));
|
|
109
|
+
}))
|
|
110
|
+
.subscribe((res) => {
|
|
111
|
+
this.assetsCount = res.result.count;
|
|
112
|
+
_.map(res.result.content, (item) => {
|
|
113
|
+
if (item.downloadUrl) {
|
|
114
|
+
this.allImages.push(item);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
lazyloadMyImages() {
|
|
120
|
+
const offset = this.myAssets.length;
|
|
121
|
+
this.getMyImages(offset, this.query, true);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* function to lazy load all images
|
|
125
|
+
*/
|
|
126
|
+
lazyloadAllImages() {
|
|
127
|
+
const offset = this.allImages.length;
|
|
128
|
+
this.getAllImages(offset, this.query, true);
|
|
129
|
+
}
|
|
130
|
+
uploadImage(event) {
|
|
131
|
+
const file = event.target.files[0];
|
|
132
|
+
const reader = new FileReader();
|
|
133
|
+
this.formData = new FormData();
|
|
134
|
+
this.formData.append('file', file);
|
|
135
|
+
this.assetName = file.name;
|
|
136
|
+
const fileType = file.type;
|
|
137
|
+
const fileName = file.name.split('.').slice(0, -1).join('.');
|
|
138
|
+
const fileSize = file.size / 1024 / 1024;
|
|
139
|
+
if (fileType.split('/')[0] === 'image') {
|
|
140
|
+
this.showErrorMsg = false;
|
|
141
|
+
if (fileSize > this.assetConfig.image.size) {
|
|
142
|
+
this.showErrorMsg = true;
|
|
143
|
+
this.errorMsg = _.get(this.configService.labelConfig, 'messages.error.021') +
|
|
144
|
+
this.assetConfig.image.size + this.assetConfig.image.sizeType;
|
|
145
|
+
this.resetFormData();
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
this.errorMsg = '';
|
|
149
|
+
this.showErrorMsg = false;
|
|
150
|
+
reader.readAsDataURL(file);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.showErrorMsg = true;
|
|
155
|
+
this.errorMsg = _.get(this.configService.labelConfig, 'messages.error.020');
|
|
156
|
+
}
|
|
157
|
+
if (!this.showErrorMsg) {
|
|
158
|
+
this.imageFile = file;
|
|
159
|
+
this.imageUploadLoader = true;
|
|
160
|
+
this.imageFormValid = true;
|
|
161
|
+
this.assestData = this.generateAssetCreateRequest(fileName, fileType, 'image');
|
|
162
|
+
this.populateFormData(this.assestData);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
resetFormData() {
|
|
166
|
+
this.imageUploadLoader = false;
|
|
167
|
+
this.imageFormValid = false;
|
|
168
|
+
this.formConfig = this.initialFormConfig;
|
|
169
|
+
}
|
|
170
|
+
populateFormData(formData) {
|
|
171
|
+
const formvalue = _.cloneDeep(this.formConfig);
|
|
172
|
+
this.formConfig = null;
|
|
173
|
+
_.forEach(formvalue, (formFieldCategory) => {
|
|
174
|
+
formFieldCategory.default = formData[formFieldCategory.code];
|
|
175
|
+
formFieldCategory.editable = true;
|
|
176
|
+
});
|
|
177
|
+
this.formConfig = formvalue;
|
|
178
|
+
}
|
|
179
|
+
uploadAndUseImage(modal) {
|
|
180
|
+
this.questionService.createMediaAsset({ content: this.assestData }).pipe(catchError(err => {
|
|
181
|
+
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') };
|
|
182
|
+
return throwError(this.editorService.apiErrorHandling(err, errInfo));
|
|
183
|
+
})).subscribe((res) => {
|
|
184
|
+
const imgId = res.result.node_id;
|
|
185
|
+
const request = {
|
|
186
|
+
data: this.formData
|
|
187
|
+
};
|
|
188
|
+
this.questionService.uploadMedia(request, imgId).pipe(catchError(err => {
|
|
189
|
+
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') };
|
|
190
|
+
return throwError(this.editorService.apiErrorHandling(err, errInfo));
|
|
191
|
+
})).subscribe((response) => {
|
|
192
|
+
const signedURL = response.result.pre_signed_url;
|
|
193
|
+
let blobConfig = {
|
|
194
|
+
processData: false,
|
|
195
|
+
contentType: 'Asset'
|
|
196
|
+
};
|
|
197
|
+
blobConfig = this.editorService.appendCloudStorageHeaders(blobConfig);
|
|
198
|
+
this.uploadToBlob(signedURL, this.imageFile, blobConfig).subscribe(() => {
|
|
199
|
+
const fileURL = signedURL.split('?')[0];
|
|
200
|
+
const data = new FormData();
|
|
201
|
+
data.append('fileUrl', fileURL);
|
|
202
|
+
data.append('mimeType', _.get(this.imageFile, 'type'));
|
|
203
|
+
const config1 = {
|
|
204
|
+
enctype: 'multipart/form-data',
|
|
205
|
+
processData: false,
|
|
206
|
+
contentType: false,
|
|
207
|
+
cache: false
|
|
208
|
+
};
|
|
209
|
+
const uploadMediaConfig = {
|
|
210
|
+
data,
|
|
211
|
+
param: config1
|
|
212
|
+
};
|
|
213
|
+
this.questionService.uploadMedia(uploadMediaConfig, imgId).pipe(catchError(err => {
|
|
214
|
+
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') };
|
|
215
|
+
this.isClosable = true;
|
|
216
|
+
this.loading = false;
|
|
217
|
+
this.imageFormValid = true;
|
|
218
|
+
return throwError(this.editorService.apiErrorHandling(err, errInfo));
|
|
219
|
+
})).subscribe((response1) => {
|
|
220
|
+
this.addImageInEditor(response1.result.content_url, response1.result.node_id);
|
|
221
|
+
this.showImageUploadModal = false;
|
|
222
|
+
this.dismissPops(modal);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
generateAssetCreateRequest(fileName, fileType, mediaType) {
|
|
229
|
+
return {
|
|
230
|
+
name: fileName,
|
|
231
|
+
mediaType,
|
|
232
|
+
mimeType: fileType,
|
|
233
|
+
createdBy: _.get(this.editorService.editorConfig, 'context.user.id'),
|
|
234
|
+
creator: _.get(this.editorService.editorConfig, 'context.user.fullName'),
|
|
235
|
+
channel: _.get(this.editorService.editorConfig, 'context.channel')
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
uploadToBlob(signedURL, file, config) {
|
|
239
|
+
const csp = _.get(this.editorService.editorConfig, 'context.cloudStorage.provider', 'azure');
|
|
240
|
+
return new Observable((observer) => {
|
|
241
|
+
const uploaderLib = new SunbirdFileUploadLib.FileUploader();
|
|
242
|
+
uploaderLib.upload({ url: signedURL, file, csp })
|
|
243
|
+
.on("error", (error) => {
|
|
244
|
+
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.018') };
|
|
245
|
+
this.isClosable = true;
|
|
246
|
+
this.loading = false;
|
|
247
|
+
observer.error(this.editorService.apiErrorHandling(error, errInfo));
|
|
248
|
+
}).on("completed", (completed) => {
|
|
249
|
+
observer.next(completed);
|
|
250
|
+
observer.complete();
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
dismissImageUploadModal() {
|
|
255
|
+
this.showImagePicker = true;
|
|
256
|
+
this.showImageUploadModal = false;
|
|
257
|
+
}
|
|
258
|
+
openImageUploadModal() {
|
|
259
|
+
this.showImageUploadModal = true;
|
|
260
|
+
this.formData = null;
|
|
261
|
+
this.formConfig = this.initialFormConfig;
|
|
262
|
+
this.imageUploadLoader = false;
|
|
263
|
+
this.imageFormValid = false;
|
|
264
|
+
this.showErrorMsg = false;
|
|
265
|
+
}
|
|
266
|
+
dismissPops(modal) {
|
|
267
|
+
this.dismissImagePicker();
|
|
268
|
+
modal.deny();
|
|
269
|
+
}
|
|
270
|
+
dismissImagePicker() {
|
|
271
|
+
this.showImagePicker = false;
|
|
272
|
+
this.modalDismissEmitter.emit({});
|
|
273
|
+
}
|
|
274
|
+
searchImages(event, type) {
|
|
275
|
+
if (event === 'clearInput' && type === 'myImages') {
|
|
276
|
+
this.query = '';
|
|
277
|
+
this.searchMyInput = '';
|
|
278
|
+
}
|
|
279
|
+
else if (event === 'clearInput' && type === 'allImages') {
|
|
280
|
+
this.query = '';
|
|
281
|
+
this.searchAllInput = '';
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
this.query = event.target.value;
|
|
285
|
+
}
|
|
286
|
+
if (type === 'myImages') {
|
|
287
|
+
this.getMyImages(0, this.query, true);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
this.getAllImages(0, this.query, true);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
onStatusChanges(event) {
|
|
294
|
+
if (event.isValid && this.imageUploadLoader) {
|
|
295
|
+
this.imageFormValid = true;
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
this.imageFormValid = false;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
valueChanges(event) {
|
|
302
|
+
this.assestData = _.merge({}, this.assestData, event);
|
|
303
|
+
}
|
|
304
|
+
ngOnDestroy() {
|
|
305
|
+
if (this.modal && this.modal.deny) {
|
|
306
|
+
this.modal.deny();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssetBrowserComponent, deps: [{ token: i1.EditorService }, { token: i2.ConfigService }, { token: i3.QuestionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
310
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssetBrowserComponent, selector: "lib-asset-browser", inputs: { showImagePicker: "showImagePicker" }, outputs: { assetBrowserEmitter: "assetBrowserEmitter", modalDismissEmitter: "modalDismissEmitter" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<sui-modal [isClosable]=\"true\" class=\"sb-modal overflow-modal\" [isInverted]=\"false\" (dismissed)=\"dismissImagePicker()\"\n *ngIf=\"showImagePicker\" [size]=\"'normal'\" [isFullScreen]=\"false\" [mustScroll]=\"true\" #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.selectImage}}</div>\n <div class=\"sb-modal-content p-0\">\n <sui-tabset>\n <div class=\"sb-tabset-menu\">\n <a class=\"sb-item\" (activate)=\"getMyImages(0)\" suiTabHeader=\"1\">{{configService.labelConfig?.lbl?.myImages}}</a>\n <a class=\"sb-item\" (activate)=\"getAllImages(0)\" suiTabHeader=\"2\">{{configService.labelConfig?.lbl?.allImage}}</a>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadMyImages()\" suiTabContent=\"1\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'myImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchMyInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'myImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!myAssets?.length && searchMyInput\" class=\"fs-0785 my-10\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of myAssets\">\n <div class=\"sb-image-section relative position\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadAllImages()\" suiTabContent=\"2\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'allImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchAllInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'allImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!allImages?.length && searchAllInput\" class=\"fs-0785\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of allImages\">\n <div class=\"sb-image-section\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n </sui-tabset>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-end\">\n <button (click)=\"openImageUploadModal();\" class=\"sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.lbl?.uploadAndUse}}</button>\n </div>\n</sui-modal>\n<sui-modal class=\"sb-modal overflow-modal\" [isClosable]=\"true\" [isInverted]=\"false\"\n (dismissed)=\"dismissImageUploadModal()\" *ngIf=\"showImageUploadModal\" [size]=\"'large'\" [isFullScreen]=\"false\"\n [mustScroll]=\"true\" appBodyScroll #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.uploadAndUse}}</div>\n <div class=\"p-10 sb-bg-white\">\n <div class=\"d-flex\">\n <div class=\"w-50\">\n <div class=\"content\">\n <h6 class=\"mb-8 fs-normal\"> {{configService.labelConfig?.lbl?.chooseOrDragImage}}<span class=\"red\">*</span></h6>\n <div class=\"upload-image-modal-section d-flex flex-ai-center flex-jc-center flex-dc\">\n <ng-container>\n <button class=\"upload-input-button sb-btn sb-btn-success sb-btn-normal\">\n {{configService.labelConfig?.lbl?.uploadFromComputer}} \n <input (change)=\"uploadImage($event)\" type=\"file\" [accept]=\"acceptImageType\" name=\"assetfile\">\n </button>\n <div class=\"py-10 fs-0-785 sb-color-primary\" *ngIf=\"imageUploadLoader\"> {{assetName}} </div>\n <span class=\"fsmall mt-8\">{{configService.labelConfig?.lbl?.upload}} {{assetConfig.image.accepted}} \n ({{configService.labelConfig?.lbl?.maxFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}})</span>\n <div *ngIf=\"showErrorMsg\" class=\"sb-color-error fsmall mt-8\">\n <p>{{errorMsg}}</p>\n </div>\n </ng-container>\n </div>\n <div class=\"ui info message sb-info-bx\">\n <ul class=\"list\">\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.allowedFileTypes}} {{assetConfig.image.accepted}}</li>\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.maximumAllowedFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}}</li>\n </ul>\n </div>\n <h6 class=\"fs-0785\">{{configService.labelConfig?.lbl?.copyRightsAndLicense}}<span class=\"red\">*</span></h6>\n <p class=\"fsmall mt-8 terms-and-condition\">{{termsAndCondition}}</p>\n </div>\n </div>\n <div class=\"w-50 pl-10 ml-10 b-bl\">\n <div class=\"ui info message sb-info-bx mb-0\">\n <ul class=\"list\">\n <li class=\"fs-0785 font-weight-bold\">\n <i class=\"icon info circle\" aria-hidden=\"true\"></i>\n {{configService.labelConfig?.lbl?.dropChooseFile}} </li>\n </ul>\n </div>\n <div class=\"sb-form-fields\">\n <div class=\"form-container upload-form\">\n <sb-dynamic-form [config]=\"formConfig\" \n (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-between p-0\">\n <div>\n <button (click)=\"dismissPops(modal);\" class=\"mr-10 sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n\n <button (click)=\"uploadAndUseImage(modal);\" [disabled]=\"!imageFormValid\" \n [ngClass]=\"{'sb-btn-primary': imageFormValid, 'sb-btn-disabled': !imageFormValid}\"\n class=\"sb-btn sb-btn-normal text-left\">{{configService.labelConfig?.button_labels?.upload_use_btn_label}}\n </button>\n </div>\n <div>\n <button (click)=\"dismissImageUploadModal();\" class=\" sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.back_btn_label}}</button>\n </div>\n </div>\n </div>\n</sui-modal>", styles: [".editorWrapper{border:0px solid white}.editorWrapper.hasError{border:0px solid red}.characterCount{text-align:right;border-top:0;padding-right:7px;font-size:11px;font-weight:700;margin-top:-16px;position:relative}.custom-image img{border:1px dotted;padding:7px;margin:6px;cursor:pointer}.resource-image{height:180px!important}.asset_container{overflow-y:auto;overflow-x:hidden;min-height:300px!important;max-height:300px!important;padding:5px}.insert-image-btn{position:absolute;z-index:1;left:315px;background-color:transparent;padding:12px 14px!important;margin-left:6px}.insert-image-btn>.icon{opacity:1}.insert-image-btn:active{background-color:transparent}.upload-file-description p{color:#999}.upload-file-description ul{margin:0;list-style:disc}.upload-file-description ul li{margin-bottom:8px}.upload-file-description ul li a{cursor:pointer;font-size:12px}.sb-grid-layout{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));grid-gap:16px}.sb-grid-layout.image{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.sb-grid-layout.video{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.sb-grid-layout .sb-video-content .sb-image-section{height:96px;overflow:hidden;border-radius:4px;box-shadow:inset 0 1px 3px #00000080}.sb-image-section .selected-video{display:none}.sb-image-section.active .selected-video{position:absolute;right:4px;top:4px;color:#07bc81;font-size:20px;display:block}.sb-grid-layout .sb-video-content .sb-image-section img{width:100%;height:100%;cursor:pointer}.overlay-image{width:100%;height:100%;background:#0000004d;position:absolute;left:0;right:0;cursor:pointer}.overlay-image .play.icon{position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;color:#fff9;font-size:32px;cursor:pointer}::ng-deep .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,::ng-deep .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-left:none;border-right:none;border-bottom:1px solid #c4c4c4;border-radius:0}::ng-deep .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,::ng-deep .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:none}.upload-image-modal-section{border-radius:4px;width:100%;min-height:140px;background:#f5f9fc;border:1px dashed #024f9d}.upload-input-button input[type=file]{position:absolute;right:0;top:0;font-size:118px;margin:0;padding:0;cursor:pointer;opacity:0;height:100%}.upload-file-section{display:flex;height:240px;width:100%;max-width:800px;align-items:center;justify-content:center;flex-direction:column;margin:0 auto;background-color:#f5f9fc;border:1px dashed #80a7ce}.qq-uploader.qq-uploader-selector.custom-qq-uploader{background:inherit;border-color:none;border:none;max-height:inherit;min-height:inherit;overflow-y:inherit;width:688px;height:240px;display:flex;justify-content:center;align-items:center}.terms-and-condition{line-height:14px}.sb-info-bx{padding:.4rem!important}.sb-info-bx li{margin:0!important;padding:0!important}.sb-info-bx li:before{content:\"\"!important}.red{color:red}.b-bl{border-left:solid 1px #e4e1e1}.sb-form-fields .sb-field-group{margin:1rem 0}.sb-form-fields .sb-field{position:relative;margin-bottom:.5rem}.sb-form-fields .sb-field .sb-form-control{border:1px solid rgba(34,36,38,.15);width:100%;border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;padding:.25rem .5rem!important}.sb-color-grey{color:#666}.flex-jc-space-end{justify-content:flex-end!important}.fs-0785{font-size:.785rem!important}.ui.info.message{color:#276f86!important}.sb-textbox[disabled=true]{opacity:.3!important;font-weight:500!important}.sb-tabset-segment{min-height:288px;max-height:288px;overflow-y:auto}input:focus-visible{border:none!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "component", type: i6.SuiTabset, selector: "sui-tabset" }, { kind: "directive", type: i6.SuiTabHeader, selector: "[suiTabHeader]", inputs: ["suiTabHeader", "isActive", "isDisabled"], outputs: ["isActiveChange", "activate", "deactivate"] }, { kind: "directive", type: i6.SuiTabContent, selector: "[suiTabContent]", inputs: ["suiTabContent"] }, { kind: "component", type: i7.DynamicFormComponent, selector: "sb-dynamic-form", inputs: ["config", "dataLoadStatusDelegate"], outputs: ["initialize", "finalize", "valueChanges", "statusChanges"] }, { kind: "directive", type: i8.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
311
|
+
}
|
|
312
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssetBrowserComponent, decorators: [{
|
|
313
|
+
type: Component,
|
|
314
|
+
args: [{ selector: 'lib-asset-browser', template: "<sui-modal [isClosable]=\"true\" class=\"sb-modal overflow-modal\" [isInverted]=\"false\" (dismissed)=\"dismissImagePicker()\"\n *ngIf=\"showImagePicker\" [size]=\"'normal'\" [isFullScreen]=\"false\" [mustScroll]=\"true\" #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.selectImage}}</div>\n <div class=\"sb-modal-content p-0\">\n <sui-tabset>\n <div class=\"sb-tabset-menu\">\n <a class=\"sb-item\" (activate)=\"getMyImages(0)\" suiTabHeader=\"1\">{{configService.labelConfig?.lbl?.myImages}}</a>\n <a class=\"sb-item\" (activate)=\"getAllImages(0)\" suiTabHeader=\"2\">{{configService.labelConfig?.lbl?.allImage}}</a>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadMyImages()\" suiTabContent=\"1\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'myImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchMyInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'myImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!myAssets?.length && searchMyInput\" class=\"fs-0785 my-10\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of myAssets\">\n <div class=\"sb-image-section relative position\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadAllImages()\" suiTabContent=\"2\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'allImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchAllInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'allImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!allImages?.length && searchAllInput\" class=\"fs-0785\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of allImages\">\n <div class=\"sb-image-section\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n </sui-tabset>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-end\">\n <button (click)=\"openImageUploadModal();\" class=\"sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.lbl?.uploadAndUse}}</button>\n </div>\n</sui-modal>\n<sui-modal class=\"sb-modal overflow-modal\" [isClosable]=\"true\" [isInverted]=\"false\"\n (dismissed)=\"dismissImageUploadModal()\" *ngIf=\"showImageUploadModal\" [size]=\"'large'\" [isFullScreen]=\"false\"\n [mustScroll]=\"true\" appBodyScroll #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.uploadAndUse}}</div>\n <div class=\"p-10 sb-bg-white\">\n <div class=\"d-flex\">\n <div class=\"w-50\">\n <div class=\"content\">\n <h6 class=\"mb-8 fs-normal\"> {{configService.labelConfig?.lbl?.chooseOrDragImage}}<span class=\"red\">*</span></h6>\n <div class=\"upload-image-modal-section d-flex flex-ai-center flex-jc-center flex-dc\">\n <ng-container>\n <button class=\"upload-input-button sb-btn sb-btn-success sb-btn-normal\">\n {{configService.labelConfig?.lbl?.uploadFromComputer}} \n <input (change)=\"uploadImage($event)\" type=\"file\" [accept]=\"acceptImageType\" name=\"assetfile\">\n </button>\n <div class=\"py-10 fs-0-785 sb-color-primary\" *ngIf=\"imageUploadLoader\"> {{assetName}} </div>\n <span class=\"fsmall mt-8\">{{configService.labelConfig?.lbl?.upload}} {{assetConfig.image.accepted}} \n ({{configService.labelConfig?.lbl?.maxFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}})</span>\n <div *ngIf=\"showErrorMsg\" class=\"sb-color-error fsmall mt-8\">\n <p>{{errorMsg}}</p>\n </div>\n </ng-container>\n </div>\n <div class=\"ui info message sb-info-bx\">\n <ul class=\"list\">\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.allowedFileTypes}} {{assetConfig.image.accepted}}</li>\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.maximumAllowedFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}}</li>\n </ul>\n </div>\n <h6 class=\"fs-0785\">{{configService.labelConfig?.lbl?.copyRightsAndLicense}}<span class=\"red\">*</span></h6>\n <p class=\"fsmall mt-8 terms-and-condition\">{{termsAndCondition}}</p>\n </div>\n </div>\n <div class=\"w-50 pl-10 ml-10 b-bl\">\n <div class=\"ui info message sb-info-bx mb-0\">\n <ul class=\"list\">\n <li class=\"fs-0785 font-weight-bold\">\n <i class=\"icon info circle\" aria-hidden=\"true\"></i>\n {{configService.labelConfig?.lbl?.dropChooseFile}} </li>\n </ul>\n </div>\n <div class=\"sb-form-fields\">\n <div class=\"form-container upload-form\">\n <sb-dynamic-form [config]=\"formConfig\" \n (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-between p-0\">\n <div>\n <button (click)=\"dismissPops(modal);\" class=\"mr-10 sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n\n <button (click)=\"uploadAndUseImage(modal);\" [disabled]=\"!imageFormValid\" \n [ngClass]=\"{'sb-btn-primary': imageFormValid, 'sb-btn-disabled': !imageFormValid}\"\n class=\"sb-btn sb-btn-normal text-left\">{{configService.labelConfig?.button_labels?.upload_use_btn_label}}\n </button>\n </div>\n <div>\n <button (click)=\"dismissImageUploadModal();\" class=\" sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.back_btn_label}}</button>\n </div>\n </div>\n </div>\n</sui-modal>", styles: [".editorWrapper{border:0px solid white}.editorWrapper.hasError{border:0px solid red}.characterCount{text-align:right;border-top:0;padding-right:7px;font-size:11px;font-weight:700;margin-top:-16px;position:relative}.custom-image img{border:1px dotted;padding:7px;margin:6px;cursor:pointer}.resource-image{height:180px!important}.asset_container{overflow-y:auto;overflow-x:hidden;min-height:300px!important;max-height:300px!important;padding:5px}.insert-image-btn{position:absolute;z-index:1;left:315px;background-color:transparent;padding:12px 14px!important;margin-left:6px}.insert-image-btn>.icon{opacity:1}.insert-image-btn:active{background-color:transparent}.upload-file-description p{color:#999}.upload-file-description ul{margin:0;list-style:disc}.upload-file-description ul li{margin-bottom:8px}.upload-file-description ul li a{cursor:pointer;font-size:12px}.sb-grid-layout{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));grid-gap:16px}.sb-grid-layout.image{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.sb-grid-layout.video{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.sb-grid-layout .sb-video-content .sb-image-section{height:96px;overflow:hidden;border-radius:4px;box-shadow:inset 0 1px 3px #00000080}.sb-image-section .selected-video{display:none}.sb-image-section.active .selected-video{position:absolute;right:4px;top:4px;color:#07bc81;font-size:20px;display:block}.sb-grid-layout .sb-video-content .sb-image-section img{width:100%;height:100%;cursor:pointer}.overlay-image{width:100%;height:100%;background:#0000004d;position:absolute;left:0;right:0;cursor:pointer}.overlay-image .play.icon{position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;color:#fff9;font-size:32px;cursor:pointer}::ng-deep .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,::ng-deep .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-left:none;border-right:none;border-bottom:1px solid #c4c4c4;border-radius:0}::ng-deep .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,::ng-deep .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:none}.upload-image-modal-section{border-radius:4px;width:100%;min-height:140px;background:#f5f9fc;border:1px dashed #024f9d}.upload-input-button input[type=file]{position:absolute;right:0;top:0;font-size:118px;margin:0;padding:0;cursor:pointer;opacity:0;height:100%}.upload-file-section{display:flex;height:240px;width:100%;max-width:800px;align-items:center;justify-content:center;flex-direction:column;margin:0 auto;background-color:#f5f9fc;border:1px dashed #80a7ce}.qq-uploader.qq-uploader-selector.custom-qq-uploader{background:inherit;border-color:none;border:none;max-height:inherit;min-height:inherit;overflow-y:inherit;width:688px;height:240px;display:flex;justify-content:center;align-items:center}.terms-and-condition{line-height:14px}.sb-info-bx{padding:.4rem!important}.sb-info-bx li{margin:0!important;padding:0!important}.sb-info-bx li:before{content:\"\"!important}.red{color:red}.b-bl{border-left:solid 1px #e4e1e1}.sb-form-fields .sb-field-group{margin:1rem 0}.sb-form-fields .sb-field{position:relative;margin-bottom:.5rem}.sb-form-fields .sb-field .sb-form-control{border:1px solid rgba(34,36,38,.15);width:100%;border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;padding:.25rem .5rem!important}.sb-color-grey{color:#666}.flex-jc-space-end{justify-content:flex-end!important}.fs-0785{font-size:.785rem!important}.ui.info.message{color:#276f86!important}.sb-textbox[disabled=true]{opacity:.3!important;font-weight:500!important}.sb-tabset-segment{min-height:288px;max-height:288px;overflow-y:auto}input:focus-visible{border:none!important}\n"] }]
|
|
315
|
+
}], ctorParameters: function () { return [{ type: i1.EditorService }, { type: i2.ConfigService }, { type: i3.QuestionService }]; }, propDecorators: { showImagePicker: [{
|
|
316
|
+
type: Input
|
|
317
|
+
}], assetBrowserEmitter: [{
|
|
318
|
+
type: Output
|
|
319
|
+
}], modalDismissEmitter: [{
|
|
320
|
+
type: Output
|
|
321
|
+
}], modal: [{
|
|
322
|
+
type: ViewChild,
|
|
323
|
+
args: ['modal']
|
|
324
|
+
}] } });
|
|
325
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtYnJvd3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9hc3NldC1icm93c2VyL2Fzc2V0LWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvYXNzZXQtYnJvd3Nlci9hc3NldC1icm93c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBUzlDLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBb0IsYUFBNEIsRUFBUyxhQUE0QixFQUMzRSxlQUFnQztRQUR0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNFLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUpoQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzlDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJeEQsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDUixz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TGpDLFNBQVM7K0JBQ0UsbUJBQW1COzhKQUtwQixlQUFlO3NCQUF2QixLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ3FCLEtBQUs7c0JBQWhDLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9uL3F1ZXN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9hc3NldC1icm93c2VyLmRhdGEnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5kZWNsYXJlIGNvbnN0IFN1bmJpcmRGaWxlVXBsb2FkTGliOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hc3NldC1icm93c2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LWJyb3dzZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NldC1icm93c2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRCcm93c2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzaG93SW1hZ2VQaWNrZXI7XG4gIEBPdXRwdXQoKSBhc3NldEJyb3dzZXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb2RhbERpc21pc3NFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgcHJpdmF0ZSBtb2RhbDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXN0aW9uU2VydmljZTogUXVlc3Rpb25TZXJ2aWNlKSB7IH1cbiAgYXNzZXRDb25maWc6IGFueSA9IHt9O1xuICBteUFzc2V0cyA9IFtdO1xuICBhbGxJbWFnZXMgPSBbXTtcbiAgcHVibGljIGltYWdlVXBsb2FkTG9hZGVyID0gZmFsc2U7XG4gIHNob3dJbWFnZVVwbG9hZE1vZGFsOiBib29sZWFuO1xuICBhY2NlcHRJbWFnZVR5cGU6IGFueTtcbiAgc2hvd0Vycm9yTXNnOiBib29sZWFuO1xuICBlcnJvck1zZzogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICB1cGxvYWRlcjtcbiAgaXNDbG9zYWJsZSA9IHRydWU7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIG1lZGlhb2JqO1xuICBwdWJsaWMgYXNzZXRQcm94eVVybCA9ICcvYXNzZXRzL3B1YmxpYy8nO1xuICBwdWJsaWMgZWRpdG9ySW5zdGFuY2U6IGFueTtcbiAgcHVibGljIGFzc2V0c0NvdW50OiBhbnk7XG4gIHB1YmxpYyBzZWFyY2hNeUlucHV0ID0gJyc7XG4gIHB1YmxpYyBzZWFyY2hBbGxJbnB1dDogYW55O1xuICBzaG93QWRkQnV0dG9uOiBib29sZWFuO1xuICBhcHBJY29uO1xuICBwdWJsaWMgZm9ybURhdGE6IGFueTtcbiAgcHVibGljIGFzc2VzdERhdGEgPSB7fTtcbiAgcHVibGljIGZvcm1Db25maWc6IGFueTtcbiAgcHVibGljIGluaXRpYWxGb3JtQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBpbWFnZUZvcm1WYWxpZDogYW55O1xuICBwdWJsaWMgdGVybXNBbmRDb25kaXRpb246IGFueTtcbiAgcHVibGljIGFzc2V0TmFtZTogYW55O1xuICBwdWJsaWMgZW1wdHlTZWFyY2hNZXNzYWdlOiBhbnk7XG4gIHB1YmxpYyBpbWFnZUZpbGU6IGFueTtcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsRm9ybUNvbmZpZyA9IF8uZ2V0KGNvbmZpZywgJ3VwbG9hZEljb25Gb3JtQ29uZmlnJyk7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gXy5nZXQoY29uZmlnLCAndXBsb2FkSWNvbkZvcm1Db25maWcnKTtcbiAgICB0aGlzLmFzc2V0Q29uZmlnID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb25maWcuYXNzZXRDb25maWc7XG4gICAgdGhpcy50ZXJtc0FuZENvbmRpdGlvbiA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ3Rlcm1zQW5kQ29uZGl0aW9ucy4wMDEnKTtcbiAgICB0aGlzLmVtcHR5U2VhcmNoTWVzc2FnZSA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAxNicpO1xuICAgIHRoaXMuYWNjZXB0SW1hZ2VUeXBlID0gdGhpcy5nZXRBY2NlcHRUeXBlKHRoaXMuYXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWQsICdpbWFnZScpO1xuICB9XG5cbiAgZ2V0QWNjZXB0VHlwZSh0eXBlTGlzdCwgdHlwZSkge1xuICAgIGNvbnN0IGFjY2VwdFR5cGVMaXN0ID0gdHlwZUxpc3Quc3BsaXQoJywgJyk7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgXy5mb3JFYWNoKGFjY2VwdFR5cGVMaXN0LCAoY29udGVudCkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2goYCR7dHlwZX0vJHtjb250ZW50fWApO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGluaXRpYWxpemVJbWFnZVBpY2tlcigpIHtcbiAgICB0aGlzLnNob3dJbWFnZVBpY2tlciA9IHRydWU7XG4gIH1cblxuICBvdXRwdXRFdmVudEhhbmRsZXIoZXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICB9XG5cbiAgZ2V0TXlJbWFnZXMob2Zmc2V0LCBxdWVyeT8sIHNlYXJjaD8pIHtcbiAgICB0aGlzLmFzc2V0c0NvdW50ID0gMDtcbiAgICBpZiAoIXNlYXJjaCkge1xuICAgICAgdGhpcy5zZWFyY2hNeUlucHV0ID0gJyc7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPT09IDApIHtcbiAgICAgIHRoaXMubXlBc3NldHMubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBtZWRpYVR5cGU6IFsnaW1hZ2UnXSxcbiAgICAgICAgY3JlYXRlZEJ5OiBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yQ29uZmlnLCAnY29udGV4dC51c2VyLmlkJylcbiAgICAgIH0sXG4gICAgICBvZmZzZXRcbiAgICB9O1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgcmVxWydxdWVyeSddID0gcXVlcnk7XG4gICAgfVxuICAgIHRoaXMucXVlc3Rpb25TZXJ2aWNlLmdldEFzc2V0TWVkaWEocmVxKS5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMjInKSB9O1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyLCBlcnJJbmZvKSk7XG4gICAgfSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLmFzc2V0c0NvdW50ID0gcmVzLnJlc3VsdC5jb3VudDtcbiAgICAgIF8ubWFwKHJlcy5yZXN1bHQuY29udGVudCwgKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uZG93bmxvYWRVcmwpIHtcbiAgICAgICAgICB0aGlzLm15QXNzZXRzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkSW1hZ2VJbkVkaXRvcihpbWFnZVVybCwgaW1hZ2VJZCkge1xuICAgIHRoaXMuYXBwSWNvbiA9IGltYWdlVXJsO1xuICAgIHRoaXMuc2hvd0ltYWdlUGlja2VyID0gZmFsc2U7XG4gICAgdGhpcy5hc3NldEJyb3dzZXJFbWl0dGVyLmVtaXQoeyB0eXBlOiAnaW1hZ2UnLCB1cmw6IHRoaXMuYXBwSWNvbiB9KTtcbiAgfVxuXG4gIGdldEFsbEltYWdlcyhvZmZzZXQsIHF1ZXJ5Pywgc2VhcmNoPykge1xuICAgIHRoaXMuYXNzZXRzQ291bnQgPSAwO1xuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICB0aGlzLnNlYXJjaEFsbElucHV0ID0gJyc7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPT09IDApIHtcbiAgICAgIHRoaXMuYWxsSW1hZ2VzLmxlbmd0aCA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgbWVkaWFUeXBlOiBbJ2ltYWdlJ11cbiAgICAgIH0sXG4gICAgICBvZmZzZXRcbiAgICB9O1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgcmVxWydxdWVyeSddID0gcXVlcnk7XG4gICAgfVxuICAgIHRoaXMucXVlc3Rpb25TZXJ2aWNlLmdldEFzc2V0TWVkaWEocmVxKS5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMjInKSB9O1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyLCBlcnJJbmZvKSk7XG4gICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5hc3NldHNDb3VudCA9IHJlcy5yZXN1bHQuY291bnQ7XG4gICAgICAgIF8ubWFwKHJlcy5yZXN1bHQuY29udGVudCwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5kb3dubG9hZFVybCkge1xuICAgICAgICAgICAgdGhpcy5hbGxJbWFnZXMucHVzaChpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBsYXp5bG9hZE15SW1hZ2VzKCkge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMubXlBc3NldHMubGVuZ3RoO1xuICAgIHRoaXMuZ2V0TXlJbWFnZXMob2Zmc2V0LCB0aGlzLnF1ZXJ5LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmdW5jdGlvbiB0byBsYXp5IGxvYWQgYWxsIGltYWdlc1xuICAgKi9cbiAgbGF6eWxvYWRBbGxJbWFnZXMoKSB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5hbGxJbWFnZXMubGVuZ3RoO1xuICAgIHRoaXMuZ2V0QWxsSW1hZ2VzKG9mZnNldCwgdGhpcy5xdWVyeSwgdHJ1ZSk7XG4gIH1cbiAgdXBsb2FkSW1hZ2UoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgdGhpcy5mb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIHRoaXMuZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG4gICAgdGhpcy5hc3NldE5hbWUgPSBmaWxlLm5hbWU7XG4gICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpO1xuICAgIGNvbnN0IGZpbGVTaXplID0gZmlsZS5zaXplIC8gMTAyNCAvIDEwMjQ7XG4gICAgaWYgKGZpbGVUeXBlLnNwbGl0KCcvJylbMF0gPT09ICdpbWFnZScpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yTXNnID0gZmFsc2U7XG4gICAgICBpZiAoZmlsZVNpemUgPiB0aGlzLmFzc2V0Q29uZmlnLmltYWdlLnNpemUpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3JNc2cgPSB0cnVlO1xuICAgICAgICB0aGlzLmVycm9yTXNnID0gXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnLCAnbWVzc2FnZXMuZXJyb3IuMDIxJykgK1xuICAgICAgICAgIHRoaXMuYXNzZXRDb25maWcuaW1hZ2Uuc2l6ZSArIHRoaXMuYXNzZXRDb25maWcuaW1hZ2Uuc2l6ZVR5cGU7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtRGF0YSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lcnJvck1zZyA9ICcnO1xuICAgICAgICB0aGlzLnNob3dFcnJvck1zZyA9IGZhbHNlO1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93RXJyb3JNc2cgPSB0cnVlO1xuICAgICAgdGhpcy5lcnJvck1zZyA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAyMCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd0Vycm9yTXNnKSB7XG4gICAgICB0aGlzLmltYWdlRmlsZSA9IGZpbGU7XG4gICAgICB0aGlzLmltYWdlVXBsb2FkTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSB0cnVlO1xuICAgICAgdGhpcy5hc3Nlc3REYXRhID0gdGhpcy5nZW5lcmF0ZUFzc2V0Q3JlYXRlUmVxdWVzdChmaWxlTmFtZSwgZmlsZVR5cGUsICdpbWFnZScpO1xuICAgICAgdGhpcy5wb3B1bGF0ZUZvcm1EYXRhKHRoaXMuYXNzZXN0RGF0YSk7XG4gICAgfVxuICB9XG4gIHJlc2V0Rm9ybURhdGEoKSB7XG4gICAgdGhpcy5pbWFnZVVwbG9hZExvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1Db25maWcgPSB0aGlzLmluaXRpYWxGb3JtQ29uZmlnO1xuICB9XG4gIHBvcHVsYXRlRm9ybURhdGEoZm9ybURhdGEpIHtcbiAgICBjb25zdCBmb3JtdmFsdWUgPSBfLmNsb25lRGVlcCh0aGlzLmZvcm1Db25maWcpO1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IG51bGw7XG4gICAgXy5mb3JFYWNoKGZvcm12YWx1ZSwgKGZvcm1GaWVsZENhdGVnb3J5KSA9PiB7XG4gICAgICBmb3JtRmllbGRDYXRlZ29yeS5kZWZhdWx0ID0gZm9ybURhdGFbZm9ybUZpZWxkQ2F0ZWdvcnkuY29kZV07XG4gICAgICBmb3JtRmllbGRDYXRlZ29yeS5lZGl0YWJsZSA9IHRydWU7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gZm9ybXZhbHVlO1xuICB9XG4gIHVwbG9hZEFuZFVzZUltYWdlKG1vZGFsKSB7XG4gICAgdGhpcy5xdWVzdGlvblNlcnZpY2UuY3JlYXRlTWVkaWFBc3NldCh7IGNvbnRlbnQ6IHRoaXMuYXNzZXN0RGF0YSB9KS5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMTknKSB9O1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyLCBlcnJJbmZvKSk7XG4gICAgfSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBjb25zdCBpbWdJZCA9IHJlcy5yZXN1bHQubm9kZV9pZDtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGFcbiAgICAgIH07XG4gICAgICB0aGlzLnF1ZXN0aW9uU2VydmljZS51cGxvYWRNZWRpYShyZXF1ZXN0LCBpbWdJZCkucGlwZShjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMTknKSB9O1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0aGlzLmVkaXRvclNlcnZpY2UuYXBpRXJyb3JIYW5kbGluZyhlcnIsIGVyckluZm8pKTtcbiAgICAgIH0pKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25lZFVSTCA9IHJlc3BvbnNlLnJlc3VsdC5wcmVfc2lnbmVkX3VybDtcbiAgICAgICAgbGV0IGJsb2JDb25maWcgPSB7XG4gICAgICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiAnQXNzZXQnXG4gICAgICAgIH07XG4gICAgICAgIGJsb2JDb25maWcgPSB0aGlzLmVkaXRvclNlcnZpY2UuYXBwZW5kQ2xvdWRTdG9yYWdlSGVhZGVycyhibG9iQ29uZmlnKTtcbiAgICAgICAgdGhpcy51cGxvYWRUb0Jsb2Ioc2lnbmVkVVJMLCB0aGlzLmltYWdlRmlsZSwgYmxvYkNvbmZpZykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWxlVVJMID0gc2lnbmVkVVJMLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgIGRhdGEuYXBwZW5kKCdmaWxlVXJsJywgZmlsZVVSTCk7XG4gICAgICAgICAgZGF0YS5hcHBlbmQoJ21pbWVUeXBlJywgXy5nZXQodGhpcy5pbWFnZUZpbGUsICd0eXBlJykpO1xuICAgICAgICAgIGNvbnN0IGNvbmZpZzEgPSB7XG4gICAgICAgICAgICBlbmN0eXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXG4gICAgICAgICAgICBjb250ZW50VHlwZTogZmFsc2UsXG4gICAgICAgICAgICBjYWNoZTogZmFsc2VcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHVwbG9hZE1lZGlhQ29uZmlnID0ge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhcmFtOiBjb25maWcxXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uU2VydmljZS51cGxvYWRNZWRpYSh1cGxvYWRNZWRpYUNvbmZpZywgaW1nSWQpLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJySW5mbyA9IHsgZXJyb3JNc2c6IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAxOScpIH07XG4gICAgICAgICAgICB0aGlzLmlzQ2xvc2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmltYWdlRm9ybVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRoaXMuZWRpdG9yU2VydmljZS5hcGlFcnJvckhhbmRsaW5nKGVyciwgZXJySW5mbykpO1xuICAgICAgICAgIH0pKS5zdWJzY3JpYmUoKHJlc3BvbnNlMSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZGRJbWFnZUluRWRpdG9yKHJlc3BvbnNlMS5yZXN1bHQuY29udGVudF91cmwsIHJlc3BvbnNlMS5yZXN1bHQubm9kZV9pZCk7XG4gICAgICAgICAgICB0aGlzLnNob3dJbWFnZVVwbG9hZE1vZGFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRpc21pc3NQb3BzKG1vZGFsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBnZW5lcmF0ZUFzc2V0Q3JlYXRlUmVxdWVzdChmaWxlTmFtZSwgZmlsZVR5cGUsIG1lZGlhVHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICAgIG1lZGlhVHlwZSxcbiAgICAgIG1pbWVUeXBlOiBmaWxlVHlwZSxcbiAgICAgIGNyZWF0ZWRCeTogXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQudXNlci5pZCcpLFxuICAgICAgY3JlYXRvcjogXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQudXNlci5mdWxsTmFtZScpLFxuICAgICAgY2hhbm5lbDogXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQuY2hhbm5lbCcpXG4gICAgfTtcbiAgfVxuXG4gIHVwbG9hZFRvQmxvYihzaWduZWRVUkwsIGZpbGUsIGNvbmZpZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgY3NwID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQuY2xvdWRTdG9yYWdlLnByb3ZpZGVyJywgJ2F6dXJlJyk7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgdXBsb2FkZXJMaWIgPSBuZXcgU3VuYmlyZEZpbGVVcGxvYWRMaWIuRmlsZVVwbG9hZGVyKCk7XG4gICAgICB1cGxvYWRlckxpYi51cGxvYWQoeyB1cmw6IHNpZ25lZFVSTCwgZmlsZSwgY3NwIH0pXG4gICAgICAgIC5vbihcImVycm9yXCIsIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMTgnKSB9O1xuICAgICAgICAgIHRoaXMuaXNDbG9zYWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyb3IsIGVyckluZm8pKTtcbiAgICAgICAgfSkub24oXCJjb21wbGV0ZWRcIiwgKGNvbXBsZXRlZCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoY29tcGxldGVkKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgIH0pO1xuICB9XG5cblxuICBkaXNtaXNzSW1hZ2VVcGxvYWRNb2RhbCgpIHtcbiAgICB0aGlzLnNob3dJbWFnZVBpY2tlciA9IHRydWU7XG4gICAgdGhpcy5zaG93SW1hZ2VVcGxvYWRNb2RhbCA9IGZhbHNlO1xuICB9XG4gIG9wZW5JbWFnZVVwbG9hZE1vZGFsKCkge1xuICAgIHRoaXMuc2hvd0ltYWdlVXBsb2FkTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuZm9ybURhdGEgPSBudWxsO1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMuaW5pdGlhbEZvcm1Db25maWc7XG4gICAgdGhpcy5pbWFnZVVwbG9hZExvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dFcnJvck1zZyA9IGZhbHNlO1xuICB9XG4gIGRpc21pc3NQb3BzKG1vZGFsKSB7XG4gICAgdGhpcy5kaXNtaXNzSW1hZ2VQaWNrZXIoKTtcbiAgICBtb2RhbC5kZW55KCk7XG4gIH1cbiAgZGlzbWlzc0ltYWdlUGlja2VyKCkge1xuICAgIHRoaXMuc2hvd0ltYWdlUGlja2VyID0gZmFsc2U7XG4gICAgdGhpcy5tb2RhbERpc21pc3NFbWl0dGVyLmVtaXQoe30pXG4gIH1cbiAgc2VhcmNoSW1hZ2VzKGV2ZW50LCB0eXBlKSB7XG4gICAgaWYgKGV2ZW50ID09PSAnY2xlYXJJbnB1dCcgJiYgdHlwZSA9PT0gJ215SW1hZ2VzJykge1xuICAgICAgdGhpcy5xdWVyeSA9ICcnO1xuICAgICAgdGhpcy5zZWFyY2hNeUlucHV0ID0gJyc7XG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2NsZWFySW5wdXQnICYmIHR5cGUgPT09ICdhbGxJbWFnZXMnKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICB0aGlzLnNlYXJjaEFsbElucHV0ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcnkgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnbXlJbWFnZXMnKSB7XG4gICAgICB0aGlzLmdldE15SW1hZ2VzKDAsIHRoaXMucXVlcnksIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldEFsbEltYWdlcygwLCB0aGlzLnF1ZXJ5LCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgb25TdGF0dXNDaGFuZ2VzKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmlzVmFsaWQgJiYgdGhpcy5pbWFnZVVwbG9hZExvYWRlcikge1xuICAgICAgdGhpcy5pbWFnZUZvcm1WYWxpZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgdmFsdWVDaGFuZ2VzKGV2ZW50KSB7XG4gICAgdGhpcy5hc3Nlc3REYXRhID0gXy5tZXJnZSh7fSwgdGhpcy5hc3Nlc3REYXRhLCBldmVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2RhbCAmJiB0aGlzLm1vZGFsLmRlbnkpIHtcbiAgICAgIHRoaXMubW9kYWwuZGVueSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8c3VpLW1vZGFsIFtpc0Nsb3NhYmxlXT1cInRydWVcIiBjbGFzcz1cInNiLW1vZGFsIG92ZXJmbG93LW1vZGFsXCIgW2lzSW52ZXJ0ZWRdPVwiZmFsc2VcIiAoZGlzbWlzc2VkKT1cImRpc21pc3NJbWFnZVBpY2tlcigpXCJcbiAgKm5nSWY9XCJzaG93SW1hZ2VQaWNrZXJcIiBbc2l6ZV09XCInbm9ybWFsJ1wiIFtpc0Z1bGxTY3JlZW5dPVwiZmFsc2VcIiBbbXVzdFNjcm9sbF09XCJ0cnVlXCIgI21vZGFsPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlbGVjdEltYWdlfX08L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWNvbnRlbnQgcC0wXCI+XG4gICAgPHN1aS10YWJzZXQ+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItdGFic2V0LW1lbnVcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJzYi1pdGVtXCIgKGFjdGl2YXRlKT1cImdldE15SW1hZ2VzKDApXCIgc3VpVGFiSGVhZGVyPVwiMVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5teUltYWdlc319PC9hPlxuICAgICAgICA8YSBjbGFzcz1cInNiLWl0ZW1cIiAoYWN0aXZhdGUpPVwiZ2V0QWxsSW1hZ2VzKDApXCIgc3VpVGFiSGVhZGVyPVwiMlwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5hbGxJbWFnZX19PC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidWkgc2VnbWVudCBzYi10YWJzZXQtc2VnbWVudCBtLTAgcHQtMTVcIiBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIyXCJcbiAgICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTAwXCIgW3Njcm9sbFdpbmRvd109XCJmYWxzZVwiIChzY3JvbGxlZCk9XCJsYXp5bG9hZE15SW1hZ2VzKClcIiBzdWlUYWJDb250ZW50PVwiMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidWkgIHBiLTE2IGQtZmxleCBwbC0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiLXNlYXJjaC1ib3ggc21hbGwgbm8tYnRuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZGl2IHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic2VhcmNoIGljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInNlYXJjaEltYWdlcygkZXZlbnQsICdteUltYWdlcycpXCIgY2xhc3M9XCJzYi1zZWFyY2gtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaE15SW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlYXJjaFBsYWNlaG9sZGVyfX0gLz5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjbG9zZSBpY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGNsaWNrKT1cInNlYXJjaEltYWdlcygnY2xlYXJJbnB1dCcsICdteUltYWdlcycpXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWxcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LnNlYXJjaF9idG5fbGFiZWx9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZnMtMC05ODYgbWwtYXV0byBzYi1jb2xvci1ncmV5XCIgPnt7YXNzZXRzQ291bnR9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbXlBc3NldHM/Lmxlbmd0aCAmJiBzZWFyY2hNeUlucHV0XCIgY2xhc3M9XCJmcy0wNzg1IG15LTEwXCI+IHt7ZW1wdHlTZWFyY2hNZXNzYWdlfX0gIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZ3JpZC1sYXlvdXQgaW1hZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItdmlkZW8tY29udGVudFwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIG15QXNzZXRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItaW1hZ2Utc2VjdGlvbiByZWxhdGl2ZSBwb3NpdGlvblwiPlxuICAgICAgICAgICAgICA8aW1nIChjbGljayk9XCJhZGRJbWFnZUluRWRpdG9yKGRhdGEuZG93bmxvYWRVcmwsIGRhdGEuaWRlbnRpZmllcilcIiBhbHQ9XCJcIiBbc3JjXT1cImRhdGEuZG93bmxvYWRVcmxcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInVpIHNlZ21lbnQgc2ItdGFic2V0LXNlZ21lbnQgbS0wIHB0LTE1XCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiXG4gICAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwMFwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIiAoc2Nyb2xsZWQpPVwibGF6eWxvYWRBbGxJbWFnZXMoKVwiIHN1aVRhYkNvbnRlbnQ9XCIyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aSAgcGItMTYgZC1mbGV4IHBsLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Itc2VhcmNoLWJveCBzbWFsbCBuby1idG5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1kaXYgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzZWFyY2ggaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwic2VhcmNoSW1hZ2VzKCRldmVudCwgJ2FsbEltYWdlcycpXCIgY2xhc3M9XCJzYi1zZWFyY2gtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEFsbElucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPXt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5zZWFyY2hQbGFjZWhvbGRlcn19IC8+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2xvc2UgaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChjbGljayk9XCJzZWFyY2hJbWFnZXMoJ2NsZWFySW5wdXQnLCAnYWxsSW1hZ2VzJylcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uc2VhcmNoX2J0bl9sYWJlbH19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgY2xhc3M9XCJmcy0wLTk4NiBtbC1hdXRvIHNiLWNvbG9yLWdyZXlcIiA+e3thc3NldHNDb3VudH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhbGxJbWFnZXM/Lmxlbmd0aCAmJiBzZWFyY2hBbGxJbnB1dFwiIGNsYXNzPVwiZnMtMDc4NVwiPiB7e2VtcHR5U2VhcmNoTWVzc2FnZX19IDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZ3JpZC1sYXlvdXQgaW1hZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItdmlkZW8tY29udGVudFwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFsbEltYWdlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiLWltYWdlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGltZyAoY2xpY2spPVwiYWRkSW1hZ2VJbkVkaXRvcihkYXRhLmRvd25sb2FkVXJsLCBkYXRhLmlkZW50aWZpZXIpXCIgYWx0PVwiXCIgW3NyY109XCJkYXRhLmRvd25sb2FkVXJsXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3N1aS10YWJzZXQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9ucyBmbGV4LWpjLXNwYWNlLWVuZFwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5JbWFnZVVwbG9hZE1vZGFsKCk7XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLXByaW1hcnkgc2ItYnRuLW5vcm1hbFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy51cGxvYWRBbmRVc2V9fTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPlxuPHN1aS1tb2RhbCBjbGFzcz1cInNiLW1vZGFsIG92ZXJmbG93LW1vZGFsXCIgW2lzQ2xvc2FibGVdPVwidHJ1ZVwiIFtpc0ludmVydGVkXT1cImZhbHNlXCJcbiAgKGRpc21pc3NlZCk9XCJkaXNtaXNzSW1hZ2VVcGxvYWRNb2RhbCgpXCIgKm5nSWY9XCJzaG93SW1hZ2VVcGxvYWRNb2RhbFwiIFtzaXplXT1cIidsYXJnZSdcIiBbaXNGdWxsU2NyZWVuXT1cImZhbHNlXCJcbiAgW211c3RTY3JvbGxdPVwidHJ1ZVwiIGFwcEJvZHlTY3JvbGwgI21vZGFsPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnVwbG9hZEFuZFVzZX19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwLTEwIHNiLWJnLXdoaXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8aDYgY2xhc3M9XCJtYi04IGZzLW5vcm1hbFwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY2hvb3NlT3JEcmFnSW1hZ2V9fTxzcGFuIGNsYXNzPVwicmVkXCI+Kjwvc3Bhbj48L2g2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1hZ2UtbW9kYWwtc2VjdGlvbiBkLWZsZXggZmxleC1haS1jZW50ZXIgZmxleC1qYy1jZW50ZXIgZmxleC1kY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVwbG9hZC1pbnB1dC1idXR0b24gc2ItYnRuIHNiLWJ0bi1zdWNjZXNzIHNiLWJ0bi1ub3JtYWxcIj5cbiAgICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkRnJvbUNvbXB1dGVyfX0gIFxuICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInVwbG9hZEltYWdlKCRldmVudClcIiB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0SW1hZ2VUeXBlXCIgbmFtZT1cImFzc2V0ZmlsZVwiPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTEwIGZzLTAtNzg1IHNiLWNvbG9yLXByaW1hcnlcIiAqbmdJZj1cImltYWdlVXBsb2FkTG9hZGVyXCI+IHt7YXNzZXROYW1lfX0gPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnNtYWxsIG10LThcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkfX0gIHt7YXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWR9fSBcbiAgICAgICAgICAgICAgICAoe3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm1heEZpbGVTaXplfX0ge3thc3NldENvbmZpZy5pbWFnZS5zaXplfX17e2Fzc2V0Q29uZmlnLmltYWdlLnNpemVUeXBlfX0pPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yTXNnXCIgY2xhc3M9XCJzYi1jb2xvci1lcnJvciBmc21hbGwgbXQtOFwiPlxuICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNc2d9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidWkgaW5mbyBtZXNzYWdlIHNiLWluZm8tYnhcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZnMtMDc4NVwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uYWxsb3dlZEZpbGVUeXBlc319IHt7YXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWR9fTwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZzLTA3ODVcIj4ge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm1heGltdW1BbGxvd2VkRmlsZVNpemV9fSB7e2Fzc2V0Q29uZmlnLmltYWdlLnNpemV9fXt7YXNzZXRDb25maWcuaW1hZ2Uuc2l6ZVR5cGV9fTwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTA3ODVcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY29weVJpZ2h0c0FuZExpY2Vuc2V9fTxzcGFuIGNsYXNzPVwicmVkXCI+Kjwvc3Bhbj48L2g2PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZnNtYWxsIG10LTggdGVybXMtYW5kLWNvbmRpdGlvblwiPnt7dGVybXNBbmRDb25kaXRpb259fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTUwIHBsLTEwIG1sLTEwIGItYmxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVpIGluZm8gbWVzc2FnZSBzYi1pbmZvLWJ4IG1iLTBcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJmcy0wNzg1IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8gY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZHJvcENob29zZUZpbGV9fSA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZm9ybS1maWVsZHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgdXBsb2FkLWZvcm1cIj5cbiAgICAgICAgICAgIDxzYi1keW5hbWljLWZvcm0gW2NvbmZpZ109XCJmb3JtQ29uZmlnXCIgXG4gICAgICAgICAgICAgIChzdGF0dXNDaGFuZ2VzKT1cIm9uU3RhdHVzQ2hhbmdlcygkZXZlbnQpXCIgKHZhbHVlQ2hhbmdlcyk9XCJ2YWx1ZUNoYW5nZXMoJGV2ZW50KVwiPjwvc2ItZHluYW1pYy1mb3JtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzYi1tb2RhbC1hY3Rpb25zIGZsZXgtamMtc3BhY2UtYmV0d2VlbiBwLTBcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRpc21pc3NQb3BzKG1vZGFsKTtcIiBjbGFzcz1cIm1yLTEwIHNiLWJ0biBzYi1idG4tcHJpbWFyeSBzYi1idG4tbm9ybWFsXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy5jYW5jZWxfYnRuX2xhYmVsfX08L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ1cGxvYWRBbmRVc2VJbWFnZShtb2RhbCk7XCIgW2Rpc2FibGVkXT1cIiFpbWFnZUZvcm1WYWxpZFwiIFxuICAgICAgICBbbmdDbGFzc109XCJ7J3NiLWJ0bi1wcmltYXJ5JzogaW1hZ2VGb3JtVmFsaWQsICdzYi1idG4tZGlzYWJsZWQnOiAhaW1hZ2VGb3JtVmFsaWR9XCJcbiAgICAgICAgY2xhc3M9XCJzYi1idG4gIHNiLWJ0bi1ub3JtYWwgdGV4dC1sZWZ0XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy51cGxvYWRfdXNlX2J0bl9sYWJlbH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRpc21pc3NJbWFnZVVwbG9hZE1vZGFsKCk7XCIgY2xhc3M9XCIgc2ItYnRuIHNiLWJ0bi1wcmltYXJ5IHNiLWJ0bi1ub3JtYWxcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LmJhY2tfYnRuX2xhYmVsfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPiJdfQ==
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const config = {
|
|
2
|
+
uploadIconFormConfig: [{
|
|
3
|
+
'code': 'name',
|
|
4
|
+
'dataType': 'text',
|
|
5
|
+
'editable': false,
|
|
6
|
+
'inputType': 'text',
|
|
7
|
+
'label': 'Asset Caption',
|
|
8
|
+
'name': 'Asset Caption',
|
|
9
|
+
'placeholder': 'Enter asset caption',
|
|
10
|
+
'renderingHints': {
|
|
11
|
+
'class': 'sb-g-col-lg-2 required'
|
|
12
|
+
},
|
|
13
|
+
'required': true,
|
|
14
|
+
'visible': true,
|
|
15
|
+
'validations': [
|
|
16
|
+
{
|
|
17
|
+
'type': 'required',
|
|
18
|
+
'message': 'Please enter asset caption'
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
'code': 'keywords',
|
|
24
|
+
'visible': true,
|
|
25
|
+
'editable': false,
|
|
26
|
+
'dataType': 'list',
|
|
27
|
+
'name': 'Tags',
|
|
28
|
+
'placeholder': 'Add tag',
|
|
29
|
+
'renderingHints': {
|
|
30
|
+
'class': 'sb-g-col-lg-2'
|
|
31
|
+
},
|
|
32
|
+
'description': '',
|
|
33
|
+
'inputType': 'keywords',
|
|
34
|
+
'label': 'Tags',
|
|
35
|
+
'required': true,
|
|
36
|
+
'validations': []
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
'code': 'creator',
|
|
40
|
+
'dataType': 'text',
|
|
41
|
+
'editable': false,
|
|
42
|
+
'inputType': 'text',
|
|
43
|
+
'label': 'Creator',
|
|
44
|
+
'name': 'Creator',
|
|
45
|
+
'placeholder': 'Enter name',
|
|
46
|
+
'renderingHints': {
|
|
47
|
+
'class': 'sb-g-col-lg-2'
|
|
48
|
+
},
|
|
49
|
+
'required': true,
|
|
50
|
+
'visible': true
|
|
51
|
+
}]
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtYnJvd3Nlci5kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvYXNzZXQtYnJvd3Nlci9hc3NldC1icm93c2VyLmRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ2xCLG9CQUFvQixFQUNoQixDQUFDO1lBQ0csTUFBTSxFQUFFLE1BQU07WUFDZCxVQUFVLEVBQUUsTUFBTTtZQUNsQixVQUFVLEVBQUUsS0FBSztZQUNqQixXQUFXLEVBQUUsTUFBTTtZQUNuQixPQUFPLEVBQUUsZUFBZTtZQUN4QixNQUFNLEVBQUUsZUFBZTtZQUN2QixhQUFhLEVBQUUscUJBQXFCO1lBQ3BDLGdCQUFnQixFQUFFO2dCQUNkLE9BQU8sRUFBRSx3QkFBd0I7YUFDcEM7WUFDRCxVQUFVLEVBQUUsSUFBSTtZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLGFBQWEsRUFBRTtnQkFDWDtvQkFDSSxNQUFNLEVBQUUsVUFBVTtvQkFDbEIsU0FBUyxFQUFFLDRCQUE0QjtpQkFDMUM7YUFDSjtTQUNKO1FBQ0Q7WUFDSSxNQUFNLEVBQUUsVUFBVTtZQUNsQixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsYUFBYSxFQUFFLFNBQVM7WUFDeEIsZ0JBQWdCLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLGVBQWU7YUFDM0I7WUFDRCxhQUFhLEVBQUUsRUFBRTtZQUNqQixXQUFXLEVBQUUsVUFBVTtZQUN2QixPQUFPLEVBQUUsTUFBTTtZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRSxFQUFFO1NBQ3BCO1FBQ0Q7WUFDSSxNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsTUFBTTtZQUNsQixVQUFVLEVBQUUsS0FBSztZQUNqQixXQUFXLEVBQUUsTUFBTTtZQUNuQixPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNLEVBQUUsU0FBUztZQUNqQixhQUFhLEVBQUUsWUFBWTtZQUMzQixnQkFBZ0IsRUFBRTtnQkFDZCxPQUFPLEVBQUUsZUFBZTthQUMzQjtZQUNELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQUM7Q0FDVCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNvbmZpZyA9IHtcbiAgICB1cGxvYWRJY29uRm9ybUNvbmZpZzpcbiAgICAgICAgW3tcbiAgICAgICAgICAgICdjb2RlJzogJ25hbWUnLFxuICAgICAgICAgICAgJ2RhdGFUeXBlJzogJ3RleHQnLFxuICAgICAgICAgICAgJ2VkaXRhYmxlJzogZmFsc2UsXG4gICAgICAgICAgICAnaW5wdXRUeXBlJzogJ3RleHQnLFxuICAgICAgICAgICAgJ2xhYmVsJzogJ0Fzc2V0IENhcHRpb24nLFxuICAgICAgICAgICAgJ25hbWUnOiAnQXNzZXQgQ2FwdGlvbicsXG4gICAgICAgICAgICAncGxhY2Vob2xkZXInOiAnRW50ZXIgYXNzZXQgY2FwdGlvbicsXG4gICAgICAgICAgICAncmVuZGVyaW5nSGludHMnOiB7XG4gICAgICAgICAgICAgICAgJ2NsYXNzJzogJ3NiLWctY29sLWxnLTIgcmVxdWlyZWQnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ3JlcXVpcmVkJzogdHJ1ZSxcbiAgICAgICAgICAgICd2aXNpYmxlJzogdHJ1ZSxcbiAgICAgICAgICAgICd2YWxpZGF0aW9ucyc6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ3JlcXVpcmVkJyxcbiAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnUGxlYXNlIGVudGVyIGFzc2V0IGNhcHRpb24nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICAnY29kZSc6ICdrZXl3b3JkcycsXG4gICAgICAgICAgICAndmlzaWJsZSc6IHRydWUsXG4gICAgICAgICAgICAnZWRpdGFibGUnOiBmYWxzZSxcbiAgICAgICAgICAgICdkYXRhVHlwZSc6ICdsaXN0JyxcbiAgICAgICAgICAgICduYW1lJzogJ1RhZ3MnLFxuICAgICAgICAgICAgJ3BsYWNlaG9sZGVyJzogJ0FkZCB0YWcnLFxuICAgICAgICAgICAgJ3JlbmRlcmluZ0hpbnRzJzoge1xuICAgICAgICAgICAgICAgICdjbGFzcyc6ICdzYi1nLWNvbC1sZy0yJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICcnLFxuICAgICAgICAgICAgJ2lucHV0VHlwZSc6ICdrZXl3b3JkcycsXG4gICAgICAgICAgICAnbGFiZWwnOiAnVGFncycsXG4gICAgICAgICAgICAncmVxdWlyZWQnOiB0cnVlLFxuICAgICAgICAgICAgJ3ZhbGlkYXRpb25zJzogW11cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgJ2NvZGUnOiAnY3JlYXRvcicsXG4gICAgICAgICAgICAnZGF0YVR5cGUnOiAndGV4dCcsXG4gICAgICAgICAgICAnZWRpdGFibGUnOiBmYWxzZSxcbiAgICAgICAgICAgICdpbnB1dFR5cGUnOiAndGV4dCcsXG4gICAgICAgICAgICAnbGFiZWwnOiAnQ3JlYXRvcicsXG4gICAgICAgICAgICAnbmFtZSc6ICdDcmVhdG9yJyxcbiAgICAgICAgICAgICdwbGFjZWhvbGRlcic6ICdFbnRlciBuYW1lJyxcbiAgICAgICAgICAgICdyZW5kZXJpbmdIaW50cyc6IHtcbiAgICAgICAgICAgICAgICAnY2xhc3MnOiAnc2ItZy1jb2wtbGctMidcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAncmVxdWlyZWQnOiB0cnVlLFxuICAgICAgICAgICAgJ3Zpc2libGUnOiB0cnVlXG4gICAgICAgIH1dXG59Il19
|