@sd-angular/core 1.2.8 → 1.2.11
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/api/sd-angular-core-api.metadata.json +1 -1
- package/api/src/lib/api.service.d.ts +0 -6
- package/bundles/sd-angular-core-api.umd.js +4 -25
- package/bundles/sd-angular-core-api.umd.js.map +1 -1
- package/bundles/sd-angular-core-api.umd.min.js +1 -1
- package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.js +18 -11
- package/bundles/sd-angular-core-export.umd.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.min.js +1 -1
- package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js +13 -8
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.js +1 -5
- package/bundles/sd-angular-core-select.umd.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.min.js +1 -1
- package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
- package/esm2015/api/src/lib/api.service.js +1 -22
- package/esm2015/export/src/lib/export.service.js +21 -13
- package/esm2015/grid-material/src/lib/components/desktop-cell-editor/desktop-cell-editor.component.js +10 -7
- package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +5 -3
- package/esm2015/grid-material/src/lib/models/grid-column.model.js +1 -1
- package/esm2015/select/src/lib/select.component.js +1 -4
- package/export/sd-angular-core-export.metadata.json +1 -1
- package/export/src/lib/export.service.d.ts +3 -1
- package/fesm2015/sd-angular-core-api.js +0 -21
- package/fesm2015/sd-angular-core-api.js.map +1 -1
- package/fesm2015/sd-angular-core-export.js +17 -10
- package/fesm2015/sd-angular-core-export.js.map +1 -1
- package/fesm2015/sd-angular-core-grid-material.js +13 -8
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-select.js +0 -3
- package/fesm2015/sd-angular-core-select.js.map +1 -1
- package/grid-material/src/lib/models/grid-column.model.d.ts +3 -3
- package/package.json +1 -1
- package/{sd-angular-core-1.2.8.tgz → sd-angular-core-1.2.11.tgz} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/select/src/lib/select-display-def.directive.ts","../../../../projects/sd-core/select/src/lib/select.component.ts","../../../../projects/sd-core/select/src/lib/select.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","templateRef","Directive","args","selector","TemplateRef","SdSelect","ref","formConfig","_this","_input","_name","uuid.v4","disableErrorMessage","formControl","SdFormControl","searchTerm$","Subject","_form","_itemsChanges","BehaviorSubject","loading","_delay","isRequired","_validator","multiple","limit","filtered","selectAll","modelChange","EventEmitter","sdChange","sdSelection","_subscription","Subscription","_allItems","_allItem","allSelected","_cache","isFocused","_updateValidator","clearValidators","clearAsyncValidators","validators","asyncValidators","Validators","required","_customValidator","setValidators","setAsyncValidators","updateValueAndValidity","_loadSelectedItems","items","toString","values","Array","isArray","valueField","displayField","some","val","undefined","catch","finally","results","_c","objItem","toObject","objValue","map","_d","assign","_a","_loadItems","searchText","key","hash","checksum","cacheChecksum","union","onSelectionChange","change","select","options","selected","_onChange","reValidate","emitEvent","emit","item","clear","$event","stopPropagation","setValue","onClick","sdView","disabled","focus","setTimeout","_b","open","func","c","message","customValidator","onOpenChange","isOpened","onOptionChange","tooltip","hide","trackByKey","index","defineProperty","prototype","input","NgForm","form","qcId","filter","validator","disable","enable","ngOnInit","appearance","add","sdChanges","subscribe","markForCheck","combineLatest","asObservable","pipe","startWith","debounceTime","valueChanges","switchMap","formValue","hasFields","filteredItems","display","String","aliasIncludes","sort","current","value1","value2","flag1","selectedItems","find","allItems","paging","join","ngAfterViewInit","addControl","ngOnDestroy","removeControl","unsubscribe","onSelectAll","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","Inject","FORM_CONFIG","type","Optional","ViewChild","MatInput","Input","ContentChild","SdSelectDisplayDefDirective","Output","SdViewDefDirective","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatTooltipModule","MatFormFieldModule","MatIconModule","MatSelectModule","MatProgressSpinnerModule","MatCheckboxModule","SdTranslateModule","SdCommonModule","SdPopoverModule","declarations","exports","providers"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSelectDisplayDef]'\r\n})\r\nexport class SdSelectDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy, ContentChild, Inject, Optional } from '@angular/core';\r\nimport { NgForm, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { BehaviorSubject, combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n@Component({\r\n selector: 'sd-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdSelect implements OnInit, AfterViewInit, OnDestroy {\r\n #input: MatInput;\r\n @ViewChild(MatInput) set input(input: MatInput) {\r\n if (this.#input !== input) {\r\n this.#input = input;\r\n this.#input.value = null;\r\n }\r\n }\r\n @ViewChild('select') select: MatSelect;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n formControl = new SdFormControl();\r\n\r\n searchTerm$ = new Subject<string>();\r\n\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-select',\r\n label: val\r\n });\r\n };\r\n @Input() placeholder: string;\r\n\r\n // Model\r\n display: Observable<string>;\r\n @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n this.formControl.setValue(value);\r\n }\r\n // Items\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(items);\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() cacheChecksum: any;\r\n\r\n // Server search\r\n loading = false;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n\r\n // Validator\r\n isRequired = false;\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n multiple = false;\r\n @Input('multiple') set _multiple(val: boolean | '') {\r\n this.multiple = (val === '') || val;\r\n }\r\n @Input() limit = 100;\r\n filtered = false;\r\n @Input('filtered') set _filtered(val: boolean | '') {\r\n this.filtered = (val === '') || val;\r\n }\r\n @ContentChild(SdSelectDisplayDefDirective) selectDisplayDef: SdSelectDisplayDefDirective;\r\n selectAll = false;\r\n @Input('selectAll') set _selectAll(val: boolean | '') {\r\n this.selectAll = (val === '') || val;\r\n }\r\n\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n @Output() sdSelection = new EventEmitter<{ value: any | any[], item?: any, items?: any[] }>();\r\n #subscription = new Subscription();\r\n selectedItems: Observable<any[]>;\r\n #allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n allSelected = false;\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.searchTerm$.asObservable().pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n switchMap(async ([items, val, formValue]) => {\r\n formValue = this.formControl.value;\r\n if (typeof (items) === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n const filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\r\n return true;\r\n }\r\n if (isArray) {\r\n return formValue.some(e => e === value);\r\n }\r\n return formValue === value;\r\n });\r\n if (items.length <= this.limit) {\r\n return filteredItems;\r\n }\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return filteredItems.sort((current, next) => {\r\n const value1 = hasFields ? current[this.valueField] : current;\r\n const value2 = hasFields ? next[this.valueField] : next;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n if (isArray) {\r\n flag1 = formValue.some(e => e === value1) ? 1 : 0;\r\n flag2 = formValue.some(e => e === value2) ? 1 : 0;\r\n return flag2 - flag1;\r\n }\r\n flag1 = formValue === value1 ? 1 : 0;\r\n flag2 = formValue === value2 ? 1 : 0;\r\n return flag2 - flag1;\r\n });\r\n }));\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!val?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(val) ? val : [val];\r\n if (!this.valueField) {\r\n return values;\r\n }\r\n if (typeof (items) === 'function') {\r\n return await this.#loadSelectedItems(val, items);\r\n }\r\n return values.map(value => {\r\n return items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value\r\n };\r\n });\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.paging(this.limit)));\r\n this.display = this.selectedItems.pipe(\r\n map(selectedItems => selectedItems?.map(item => this.displayField ? item[this.displayField] : item)?.join(', ')));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })), this.valueField);\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n }\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText\r\n });\r\n \r\n if (this.#cache[key] === undefined) {\r\n this.loading = true;\r\n const results = await items(searchText).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n this.#cache[key] = results.union(this.valueField);\r\n }\r\n if (!this.multiple) {\r\n return this.#cache[key];\r\n }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...this.#cache[key]].union(this.valueField);\r\n }\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n this.allSelected = !this.select.options.some(e => !e.selected);\r\n const value = change?.value ?? '';\r\n if (this.multiple) {\r\n this.#onChange(value || []);\r\n } else {\r\n this.searchTerm$.next('');\r\n this.#onChange(value);\r\n }\r\n }\r\n\r\n onSelectAll() {\r\n if (this.allSelected) {\r\n this.formControl.setValue(this.select.options.map(e => e.value));\r\n } else {\r\n this.formControl.setValue([]);\r\n }\r\n this.#onChange(this.formControl.value);\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n\r\n #onChange = async (value: boolean | number | string | (number | string)[]) => {\r\n if (Array.isArray(value)) {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n items: value.map(val => this.#allItem[val?.toString()])\r\n });\r\n } else {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n item: this.#allItem[value?.toString()]\r\n });\r\n }\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n if (this.multiple) {\r\n this.formControl.setValue([]);\r\n this.modelChange.emit([]);\r\n this.sdChange.emit([]);\r\n this.sdSelection.emit({\r\n value: [],\r\n items: []\r\n });\r\n } else {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n this.sdSelection.emit({\r\n value: null,\r\n item: null\r\n });\r\n }\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.select?.focus();\r\n this.select?.open();\r\n }, 100);\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n onOpenChange = (isOpened: boolean) => {\r\n if (isOpened) {\r\n this.isFocused = true;\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n } else {\r\n this.isFocused = false;\r\n }\r\n }\r\n\r\n onOptionChange = (tooltip: MatTooltip) => {\r\n tooltip?.hide();\r\n }\r\n\r\n trackByKey = (index, item) => {\r\n if (this.valueField) {\r\n return item?.[this.valueField];\r\n }\r\n return item;\r\n }\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | string[], isFormValue?: boolean) => Promise<any[]>;","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdSelect } from './select.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdPopoverModule } from '@sd-angular/core/popover';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatProgressSpinnerModule,\r\n MatCheckboxModule,\r\n SdTranslateModule,\r\n SdCommonModule,\r\n SdPopoverModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectModule {\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","../../../../projects/sd-core/select/src/lib/select-display-def.directive.ts","../../../../projects/sd-core/select/src/lib/select.component.ts","../../../../projects/sd-core/select/src/lib/select.module.ts"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","Object","create","__read","o","m","r","i","ar","error","__spread","arguments","concat","__classPrivateFieldGet","receiver","state","kind","has","get","__classPrivateFieldSet","set","templateRef","Directive","args","selector","TemplateRef","SdSelect","ref","formConfig","_this","_input","_name","uuid.v4","disableErrorMessage","formControl","SdFormControl","searchTerm$","Subject","_form","_itemsChanges","BehaviorSubject","loading","_delay","isRequired","_validator","multiple","limit","filtered","selectAll","modelChange","EventEmitter","sdChange","sdSelection","_subscription","Subscription","_allItems","_allItem","allSelected","_cache","isFocused","_updateValidator","clearValidators","clearAsyncValidators","validators","asyncValidators","Validators","required","_customValidator","setValidators","setAsyncValidators","updateValueAndValidity","_loadSelectedItems","items","toString","values","Array","isArray","valueField","displayField","some","val","undefined","catch","finally","results","_c","objItem","toObject","objValue","map","_d","assign","_a","_loadItems","searchText","key","hash","checksum","cacheChecksum","union","onSelectionChange","change","select","options","selected","_onChange","reValidate","emitEvent","emit","item","clear","$event","stopPropagation","setValue","onClick","sdView","disabled","focus","setTimeout","_b","open","func","c","message","customValidator","onOpenChange","isOpened","onOptionChange","tooltip","hide","trackByKey","index","defineProperty","prototype","input","NgForm","form","qcId","filter","validator","disable","enable","ngOnInit","appearance","add","sdChanges","subscribe","markForCheck","combineLatest","asObservable","pipe","startWith","debounceTime","valueChanges","switchMap","formValue","hasFields","filteredItems","display","String","aliasIncludes","sort","current","value1","value2","flag1","selectedItems","find","allItems","paging","join","ngAfterViewInit","addControl","ngOnDestroy","removeControl","unsubscribe","onSelectAll","Component","template","changeDetection","ChangeDetectionStrategy","OnPush","ChangeDetectorRef","Inject","FORM_CONFIG","type","Optional","ViewChild","MatInput","Input","ContentChild","SdSelectDisplayDefDirective","Output","SdViewDefDirective","NgModule","imports","CommonModule","FormsModule","ReactiveFormsModule","MatInputModule","MatTooltipModule","MatFormFieldModule","MatIconModule","MatSelectModule","MatProgressSpinnerModule","MatCheckboxModule","SdTranslateModule","SdCommonModule","SdPopoverModule","declarations","exports","providers"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdSelectDisplayDef]'\r\n})\r\nexport class SdSelectDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectorRef, AfterViewInit, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy, ContentChild, Inject, Optional } from '@angular/core';\r\nimport { NgForm, Validators, ValidatorFn, AbstractControl, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport hash from 'object-hash';\r\nimport { MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { BehaviorSubject, combineLatest, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { FORM_CONFIG, IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\n@Component({\r\n selector: 'sd-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdSelect implements OnInit, AfterViewInit, OnDestroy {\r\n #input: MatInput;\r\n @ViewChild(MatInput) set input(input: MatInput) {\r\n if (this.#input !== input) {\r\n this.#input = input;\r\n this.#input.value = null;\r\n }\r\n }\r\n @ViewChild('select') select: MatSelect;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() appearance: MatFormFieldAppearance;\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n formControl = new SdFormControl();\r\n\r\n searchTerm$ = new Subject<string>();\r\n\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n qcId: string;\r\n label: string;\r\n @Input('label') set _label(val: string) {\r\n this.label = val;\r\n this.qcId = hash({\r\n selector: 'sd-select',\r\n label: val\r\n });\r\n };\r\n @Input() placeholder: string;\r\n\r\n // Model\r\n display: Observable<string>;\r\n @Input() set model(value: undefined | boolean | number | string | (number | string)[]) {\r\n this.formControl.setValue(value);\r\n }\r\n // Items\r\n\r\n #itemsChanges = new BehaviorSubject<any[] | SearchFunc>([]);\r\n @Input() set items(items: undefined | any[] | SearchFunc) {\r\n this.#delay = 0;\r\n if (!items) {\r\n this.#itemsChanges.next([]);\r\n } else if (Array.isArray(items)) {\r\n this.#itemsChanges.next(items.filter(e => e !== null && e !== undefined));\r\n } else {\r\n this.#delay = 500;\r\n this.#itemsChanges.next(items);\r\n }\r\n this.searchTerm$.next('');\r\n }\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() cacheChecksum: any;\r\n\r\n // Server search\r\n loading = false;\r\n #delay = 200; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n\r\n // Validator\r\n isRequired = false;\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n multiple = false;\r\n @Input('multiple') set _multiple(val: boolean | '') {\r\n this.multiple = (val === '') || val;\r\n }\r\n @Input() limit = 100;\r\n filtered = false;\r\n @Input('filtered') set _filtered(val: boolean | '') {\r\n this.filtered = (val === '') || val;\r\n }\r\n @ContentChild(SdSelectDisplayDefDirective) selectDisplayDef: SdSelectDisplayDefDirective;\r\n selectAll = false;\r\n @Input('selectAll') set _selectAll(val: boolean | '') {\r\n this.selectAll = (val === '') || val;\r\n }\r\n\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n @Output() sdSelection = new EventEmitter<{ value: any | any[], item?: any, items?: any[] }>();\r\n #subscription = new Subscription();\r\n selectedItems: Observable<any[]>;\r\n #allItems: Observable<any[]>;\r\n filteredItems: Observable<any[]>;\r\n #allItem: {\r\n [key: string]: any\r\n } = {};\r\n allSelected = false;\r\n #cache: {\r\n [key: string]: any[]\r\n } = {};\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n @Inject(FORM_CONFIG) @Optional() private formConfig: IFormConfiguration\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.appearance = this.appearance || this.formConfig?.appearance;\r\n this.#subscription.add(this.formControl.sdChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#allItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.searchTerm$.asObservable().pipe(startWith(''), debounceTime(this.#delay)),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))]).pipe(\r\n switchMap(async ([items, val, formValue]) => {\r\n formValue = this.formControl.value;\r\n if (typeof (items) === 'function') {\r\n return await this.#loadItems(val, items);\r\n }\r\n this.#allItem = items.toObject(this.valueField);\r\n const isArray = Array.isArray(formValue);\r\n const hasFields = !!this.valueField && !!this.displayField;\r\n const filteredItems = items.filter(item => {\r\n const value = hasFields ? item[this.valueField] : item;\r\n const display = hasFields ? item[this.displayField] : item;\r\n if (String.aliasIncludes(value, val) || String.aliasIncludes(display, val)) {\r\n return true;\r\n }\r\n if (isArray) {\r\n return formValue.some(e => e === value);\r\n }\r\n return formValue === value;\r\n });\r\n if (items.length <= this.limit) {\r\n return filteredItems;\r\n }\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return filteredItems.sort((current, next) => {\r\n const value1 = hasFields ? current[this.valueField] : current;\r\n const value2 = hasFields ? next[this.valueField] : next;\r\n let flag1 = 0;\r\n let flag2 = 0;\r\n if (isArray) {\r\n flag1 = formValue.some(e => e === value1) ? 1 : 0;\r\n flag2 = formValue.some(e => e === value2) ? 1 : 0;\r\n return flag2 - flag1;\r\n }\r\n flag1 = formValue === value1 ? 1 : 0;\r\n flag2 = formValue === value2 ? 1 : 0;\r\n return flag2 - flag1;\r\n });\r\n }));\r\n this.selectedItems = combineLatest([\r\n this.#itemsChanges.asObservable(),\r\n this.formControl.valueChanges.pipe(startWith(this.formControl.value))])\r\n .pipe(\r\n switchMap(async ([items, val]) => {\r\n // Vì một số lý do chưa xác định mà khi sử dụng sdViewDef thì khi chuyển sang dạng view sẽ trigger val = null\r\n // Nhưng formControl.value vẫn có giá trị đúng nên thực hiện gán val = this.formControl.value;\r\n val = this.formControl.value;\r\n if (!val?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(val) ? val : [val];\r\n if (!this.valueField) {\r\n return values;\r\n }\r\n if (typeof (items) === 'function') {\r\n return await this.#loadSelectedItems(val, items);\r\n }\r\n return values.map(value => {\r\n return items?.find(item => item[this.valueField] === value) || {\r\n [this.valueField]: value,\r\n [this.displayField]: value\r\n };\r\n });\r\n })\r\n );\r\n this.filteredItems = this.#allItems.pipe(map(allItems => allItems.paging(this.limit)));\r\n this.display = this.selectedItems.pipe(\r\n map(selectedItems => selectedItems?.map(item => this.displayField ? item[this.displayField] : item)?.join(', ')));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #loadSelectedItems = async (value: string | string[], items: SearchFunc) => {\r\n if (!value?.toString()) {\r\n return [];\r\n }\r\n const values = Array.isArray(value) ? value : [value];\r\n if (!this.valueField && !this.displayField) {\r\n return values;\r\n }\r\n this.loading = true;\r\n if (values.some(val => this.#allItem[val] === undefined)) {\r\n const results = await items(value, true).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n const objValue = Array.toObject(\r\n values.map(val => ({ [val?.toString()]: { [this.valueField]: val, [this.displayField]: val } })), this.valueField);\r\n this.#allItem = {\r\n ...objValue,\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n }\r\n return values.map(val => this.#allItem[val?.toString()] ?? { [this.valueField]: val, [this.displayField]: val });\r\n }\r\n\r\n #loadItems = async (searchText: string, items: SearchFunc) => {\r\n searchText = searchText?.toString() || '';\r\n const key = hash({\r\n checksum: this.cacheChecksum || null,\r\n searchText\r\n });\r\n \r\n if (this.#cache[key] === undefined) {\r\n this.loading = true;\r\n const results = await items(searchText).catch(() => []).finally(() => this.loading = false);\r\n const objItem = Array.toObject(results, this.valueField);\r\n this.#allItem = {\r\n ...this.#allItem,\r\n ...objItem\r\n };\r\n this.#cache[key] = results.union(this.valueField);\r\n }\r\n const selectedItems = await this.#loadSelectedItems(this.formControl.value, items);\r\n // Đưa những selectedItems lên đầu nếu không mat-select-trigger sẽ không work\r\n return [...selectedItems, ...this.#cache[key]].union(this.valueField);\r\n }\r\n\r\n onSelectionChange = (change: MatSelectChange) => {\r\n this.allSelected = !this.select.options.some(e => !e.selected);\r\n const value = change?.value ?? '';\r\n if (this.multiple) {\r\n this.#onChange(value || []);\r\n } else {\r\n this.searchTerm$.next('');\r\n this.#onChange(value);\r\n }\r\n }\r\n\r\n onSelectAll() {\r\n if (this.allSelected) {\r\n this.formControl.setValue(this.select.options.map(e => e.value));\r\n } else {\r\n this.formControl.setValue([]);\r\n }\r\n this.#onChange(this.formControl.value);\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n\r\n #onChange = async (value: boolean | number | string | (number | string)[]) => {\r\n if (Array.isArray(value)) {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n items: value.map(val => this.#allItem[val?.toString()])\r\n });\r\n } else {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n this.sdSelection.emit({\r\n value: value,\r\n item: this.#allItem[value?.toString()]\r\n });\r\n }\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n if (this.multiple) {\r\n this.formControl.setValue([]);\r\n this.modelChange.emit([]);\r\n this.sdChange.emit([]);\r\n this.sdSelection.emit({\r\n value: [],\r\n items: []\r\n });\r\n } else {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n this.sdSelection.emit({\r\n value: null,\r\n item: null\r\n });\r\n }\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.select?.focus();\r\n this.select?.open();\r\n }, 100);\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n onOpenChange = (isOpened: boolean) => {\r\n if (isOpened) {\r\n this.isFocused = true;\r\n if (this.#input) {\r\n this.#input.value = null;\r\n }\r\n this.searchTerm$.next('');\r\n } else {\r\n this.isFocused = false;\r\n }\r\n }\r\n\r\n onOptionChange = (tooltip: MatTooltip) => {\r\n tooltip?.hide();\r\n }\r\n\r\n trackByKey = (index, item) => {\r\n if (this.valueField) {\r\n return item?.[this.valueField];\r\n }\r\n return item;\r\n }\r\n}\r\n\r\ntype SearchFunc = (searchText?: string | string[], isFormValue?: boolean) => Promise<any[]>;","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdSelect } from './select.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SdSelectDisplayDefDirective } from './select-display-def.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { SdPopoverModule } from '@sd-angular/core/popover';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatSelectModule,\r\n MatProgressSpinnerModule,\r\n MatCheckboxModule,\r\n SdTranslateModule,\r\n SdCommonModule,\r\n SdPopoverModule\r\n ],\r\n declarations: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective\r\n ],\r\n exports: [\r\n SdSelect,\r\n SdSelectDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdSelectModule {\r\n\r\n}\r\n"]}
|
|
@@ -3,7 +3,6 @@ import { __awaiter, __classPrivateFieldGet } from "tslib";
|
|
|
3
3
|
import { Injectable, Inject, Optional } from '@angular/core';
|
|
4
4
|
import { HttpClient } from '@angular/common/http';
|
|
5
5
|
import { take, timeout } from 'rxjs/operators';
|
|
6
|
-
import $ from 'jquery';
|
|
7
6
|
import { API_CONFIG } from './api.model';
|
|
8
7
|
import { SdCacheService } from '@sd-angular/core/cache';
|
|
9
8
|
import { SdTokenService } from './token.service';
|
|
@@ -21,7 +20,6 @@ export class SdApiService {
|
|
|
21
20
|
this.configuration = configuration;
|
|
22
21
|
this.cacheService = cacheService;
|
|
23
22
|
this.tokenService = tokenService;
|
|
24
|
-
this.uploadId = 'U118fefb1-3085-4641-8cb8-f7fe5c28f509';
|
|
25
23
|
_timeout.set(this, 120000); // 120s
|
|
26
24
|
_cacheDuration.set(this, 2000); // 2s
|
|
27
25
|
_cache.set(this, {});
|
|
@@ -224,25 +222,6 @@ export class SdApiService {
|
|
|
224
222
|
}
|
|
225
223
|
return get();
|
|
226
224
|
});
|
|
227
|
-
this.uploadSingle = (url, option) => {
|
|
228
|
-
return new Promise((resolve, reject) => {
|
|
229
|
-
if ($(`#${this.uploadId}`).length) {
|
|
230
|
-
$('body').children(`#${this.uploadId}`).remove();
|
|
231
|
-
}
|
|
232
|
-
$('body').append(`<input id='${this.uploadId}' style='display: none' type='file' />`);
|
|
233
|
-
$(`#${this.uploadId}`).on('change', (evt) => {
|
|
234
|
-
try {
|
|
235
|
-
const target = evt.target;
|
|
236
|
-
const fileToUpload = target.files.item(0);
|
|
237
|
-
this.upload(url, fileToUpload, option).then(resolve).catch(reject);
|
|
238
|
-
}
|
|
239
|
-
catch (error) {
|
|
240
|
-
reject(error);
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
$(`#${this.uploadId}`).trigger('click');
|
|
244
|
-
});
|
|
245
|
-
};
|
|
246
225
|
this.upload = (url, file, option) => __awaiter(this, void 0, void 0, function* () {
|
|
247
226
|
var _c;
|
|
248
227
|
const lastDot = file.name.lastIndexOf('.');
|
|
@@ -323,4 +302,4 @@ SdApiService.ctorParameters = () => [
|
|
|
323
302
|
{ type: SdCacheService },
|
|
324
303
|
{ type: SdTokenService }
|
|
325
304
|
];
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2FwaS8iLCJzb3VyY2VzIjpbInNyYy9saWIvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFLN0IsTUFBTSxPQUFPLFlBQVk7SUFxQnZCLFlBQ1UsVUFBc0IsRUFDVSxhQUFnQyxFQUNoRSxZQUE0QixFQUM1QixZQUE0QjtRQUg1QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ1Usa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hFLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUF4QjlCLGFBQVEsR0FBRyx1Q0FBdUMsQ0FBQztRQUUzRCxtQkFBVyxNQUFNLEVBQUMsQ0FBQyxPQUFPO1FBRTFCLHlCQUFpQixJQUFJLEVBQUMsQ0FBQyxLQUFLO1FBQzVCLGlC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QUFNO2FBQ25COzs7WUFaUSxVQUFVOzRDQW9DZCxNQUFNLFNBQUMsVUFBVSxjQUFHLFFBQVE7WUFoQ3hCLGNBQWM7WUFDZCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHRha2UsIHRpbWVvdXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCB7IElBcGlDb25maWd1cmF0aW9uLCBBUElfQ09ORklHIH0gZnJvbSAnLi9hcGkubW9kZWwnO1xyXG5pbXBvcnQgeyBTZENhY2hlU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY2FjaGUnO1xyXG5pbXBvcnQgeyBTZFRva2VuU2VydmljZSB9IGZyb20gJy4vdG9rZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RBcGlTZXJ2aWNlIHtcclxuICBwcml2YXRlIHVwbG9hZElkID0gJ1UxMThmZWZiMS0zMDg1LTQ2NDEtOGNiOC1mN2ZlNWMyOGY1MDknO1xyXG5cclxuICAjdGltZW91dCA9IDEyMDAwMDsgLy8gMTIwc1xyXG5cclxuICAjY2FjaGVEdXJhdGlvbiA9IDIwMDA7IC8vIDJzXHJcbiAgI2NhY2hlOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiB7XHJcbiAgICAgIGNyZWF0ZWREYXRlOiBEYXRlO1xyXG4gICAgICBzdWJqZWN0OiBTdWJqZWN0PGFueT47XHJcbiAgICAgIHJlc3BvbnNlPzoge1xyXG4gICAgICAgIHN0YXR1cz86ICdzdWNjZXNzJyB8ICdlcnJvcic7XHJcbiAgICAgICAgcmVzdWx0OiBhbnksXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9ID0ge307XHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbj8udHJhbnNsYXRlKHZhbHVlKSB8fCB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgQEluamVjdChBUElfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZ3VyYXRpb246IElBcGlDb25maWd1cmF0aW9uLFxyXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IFNkQ2FjaGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0b2tlblNlcnZpY2U6IFNkVG9rZW5TZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBwb3N0ID0gYXN5bmMgPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIG9wdGlvbnM/OiB7XHJcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgbGV0IGhhc2hLZXkgPSB1dWlkLnY0KCk7XHJcbiAgICBpZiAoIShib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpKSB7XHJcbiAgICAgIGhhc2hLZXkgPSBoYXNoKHtcclxuICAgICAgICB1cmwsXHJcbiAgICAgICAgaGVhZGVycyxcclxuICAgICAgICBib2R5XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLiNjYWNoZVtoYXNoS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW2hhc2hLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNjYWNoZUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0gPSB7XHJcbiAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKSxcclxuICAgICAgfTtcclxuICAgICAgaWYgKG9wdGlvbnM/LnJlc3BvbnNlVHlwZSAmJiBvcHRpb25zLnJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LnBvc3QoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICAgIG9ic2VydmU6ICdib2R5JyxcclxuICAgICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgICByZXNwb25zZVR5cGU6IG9wdGlvbnM/LnJlc3BvbnNlVHlwZSBhcyBhbnlcclxuICAgICAgICB9KS5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgIHJlc3VsdDogcmVzXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5wb3N0KGVuY29kZVVSSSh1cmwpLCBib2R5LCB7XHJcbiAgICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgICAgaGVhZGVyc1xyXG4gICAgICAgIH0pLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMub2spIHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzLmJvZHkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHlcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihyZXMuYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZS5yZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgcG9zdENhY2hlID0gYXN5bmMgPFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBvcHRpb25zPzoge1xyXG4gICAgY2FjaGVUeXBlPzogJ2RlZmF1bHQnIHwgJ3Nlc3Npb24nIHwgJ2xvY2FsJztcclxuICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnM/LmhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB7IGdldCwgc2V0LCBoYXMgfSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmNyZWF0ZSh7XHJcbiAgICAgIHVybCxcclxuICAgICAgaGVhZGVycyxcclxuICAgICAgYm9keVxyXG4gICAgfSwge1xyXG4gICAgICB0eXBlOiBvcHRpb25zPy5jYWNoZVR5cGUsXHJcbiAgICAgIGhvdXJzOiBvcHRpb25zPy5jYWNoZUhvdXJzXHJcbiAgICB9KTtcclxuICAgIGlmICghaGFzKCkpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wb3N0KHVybCwgYm9keSwgb3B0aW9ucz8uaGVhZGVycyk7XHJcbiAgICAgIHNldChyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldCgpO1xyXG4gIH1cclxuXHJcbiAgcHV0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBib2R5PzogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPFQ+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnQucHV0KGVuY29kZVVSSSh1cmwpLCBib2R5LCB7XHJcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgIH0pLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkudG9Qcm9taXNlKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQub2spIHtcclxuICAgICAgICAgIHJlc29sdmUocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZWplY3QocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkuY2F0Y2goKGh0dHBFcnJvclJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJlamVjdChodHRwRXJyb3JSZXNwb25zZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAjZGVmaW5lUGFyYW1zID0gKHJlcXVlc3Q6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgcnEgPSBbXTtcclxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlcXVlc3QpKSB7XHJcbiAgICAgIGlmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkge1xyXG4gICAgICAgIHJxLnB1c2goXHJcbiAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5IGFzIHN0cmluZyl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxyXG4gICAgICAgICAgICB2YWx1ZSBhcyBzdHJpbmdcclxuICAgICAgICAgICl9YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBgPyR7cnE/LmpvaW4oJyYnKX1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0V2l0aFBhcmFtcyA9IDxUID0gYW55Pih1cmw6IHN0cmluZywgcGFyYW1zOiBhbnksIG9wdGlvbnM/OiB7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMsXHJcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLmdldChgJHt1cmx9JHt0aGlzLiNkZWZpbmVQYXJhbXMocGFyYW1zKX1gLCBvcHRpb25zPy5oZWFkZXJzLCB7IC4uLm9wdGlvbnMsIGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWNoZVdpdGhQYXJhbXMgPSA8VCA9IGFueT4odXJsOiBzdHJpbmcsIHBhcmFtczogYW55LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIG9wdGlvbnM/OiB7XHJcbiAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgY2FjaGVUeXBlPzogJ2RlZmF1bHQnIHwgJ3Nlc3Npb24nIHwgJ2xvY2FsJztcclxuICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2FjaGUoYCR7dXJsfSR7dGhpcy4jZGVmaW5lUGFyYW1zKHBhcmFtcyl9YCwgeyAuLi5vcHRpb25zLCBoZWFkZXJzLCBlbmNvZGVVUkk6IGZhbHNlIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0ID0gPFQgPSBhbnk+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIG9wdGlvbnM/OiB7XHJcbiAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xyXG4gICAgZW5jb2RlVVJJPzogYm9vbGVhblxyXG4gIH0pOiBQcm9taXNlPFQ+ID0+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgZW5jb2RlZFVybCA9IG9wdGlvbnM/LmVuY29kZVVSSSA9PT0gZmFsc2UgPyB1cmwgOiBlbmNvZGVVUkkodXJsKTtcclxuICAgIC8vIGNvbnN0IGhhc2hLZXkgPSBoYXNoKHtcclxuICAgIC8vICAgZW5jb2RlZFVybCxcclxuICAgIC8vICAgaGVhZGVyc1xyXG4gICAgLy8gfSk7XHJcbiAgICBjb25zdCBoYXNoS2V5ID0gaGFzaCh7XHJcbiAgICAgIGVuY29kZWRVcmwsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgIH0pO1xyXG4gICAgaWYgKCF0aGlzLiNjYWNoZVtoYXNoS2V5XSB8fCBEYXRlLmFkZE1pbGlzZWNvbmRzKHRoaXMuI2NhY2hlW2hhc2hLZXldLmNyZWF0ZWREYXRlLCB0aGlzLiNjYWNoZUR1cmF0aW9uKSA8IG5ldyBEYXRlKCkpIHtcclxuICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0gPSB7XHJcbiAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgc3ViamVjdDogbmV3IFN1YmplY3QoKVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAob3B0aW9ucz8ucmVzcG9uc2VUeXBlICYmIG9wdGlvbnMucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcclxuICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGVuY29kZWRVcmwsIHsgb2JzZXJ2ZTogJ2JvZHknLCBoZWFkZXJzLCByZXNwb25zZVR5cGU6IG9wdGlvbnM/LnJlc3BvbnNlVHlwZSBhcyBhbnkgfSlcclxuICAgICAgICAgIC5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogcmVzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMpO1xyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoZW5jb2RlZFVybCwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCBoZWFkZXJzIH0pXHJcbiAgICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgICBpZiAocmVzLm9rKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHlcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMuYm9keSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6IHJlcy5ib2R5XHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogZXJyXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IoZXJyKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICBpZiAodGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2U/LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICB0aHJvdyB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZS5yZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2FjaGUgPSBhc3luYyA8VCA9IGFueT4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiB7XHJcbiAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgY2FjaGVUeXBlPzogJ2RlZmF1bHQnIHwgJ3Nlc3Npb24nIHwgJ2xvY2FsJztcclxuICAgIGNhY2hlSG91cnM/OiBudW1iZXI7XHJcbiAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnM7XHJcbiAgICBlbmNvZGVVUkk/OiBib29sZWFuXHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG9wdGlvbnM/LmhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBlbmNvZGVkVXJsID0gb3B0aW9ucz8uZW5jb2RlVVJJID09PSBmYWxzZSA/IHVybCA6IGVuY29kZVVSSSh1cmwpO1xyXG4gICAgY29uc3QgeyBnZXQsIHNldCwgaGFzIH0gPSB0aGlzLmNhY2hlU2VydmljZS5jcmVhdGUoe1xyXG4gICAgICBlbmNvZGVkVXJsLFxyXG4gICAgICBoZWFkZXJzXHJcbiAgICB9LCB7XHJcbiAgICAgIHR5cGU6IG9wdGlvbnM/LmNhY2hlVHlwZSxcclxuICAgICAgaG91cnM6IG9wdGlvbnM/LmNhY2hlSG91cnNcclxuICAgIH0pO1xyXG4gICAgaWYgKCFoYXMoKSB8fCBvcHRpb25zPy5yZWxvYWQpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXQoZW5jb2RlZFVybCwgb3B0aW9ucz8uaGVhZGVycywgeyBlbmNvZGVVUkk6IGZhbHNlIH0pO1xyXG4gICAgICBzZXQocmVzdWx0KTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiBnZXQoKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZTxUID0gYW55Pih1cmw6IHN0cmluZywgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxUPiB7XHJcbiAgICBoZWFkZXJzID0gaGVhZGVycyB8fCB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgdXJsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5odHRwQ2xpZW50LmRlbGV0ZShlbmNvZGVVUkkodXJsKSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCBoZWFkZXJzIH0pXHJcbiAgICAgICAgLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSlcclxuICAgICAgICAudG9Qcm9taXNlKCkudGhlbihyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdC5vaykge1xyXG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJlamVjdChyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkuY2F0Y2goKGh0dHBFcnJvclJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KGh0dHBFcnJvclJlc3BvbnNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkU2luZ2xlID0gKHVybDogc3RyaW5nLCBvcHRpb24/OiB7XHJcbiAgICBleHRlbnNpb25zPzogc3RyaW5nW10sXHJcbiAgICBtYXhTaXplSW5NYj86IG51bWJlcixcclxuICAgIHZhbGlkYXRvcj86IChmaWxlTmFtZTogc3RyaW5nKSA9PiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICgkKGAjJHt0aGlzLnVwbG9hZElkfWApLmxlbmd0aCkge1xyXG4gICAgICAgICQoJ2JvZHknKS5jaGlsZHJlbihgIyR7dGhpcy51cGxvYWRJZH1gKS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICAkKCdib2R5JykuYXBwZW5kKGA8aW5wdXQgaWQ9JyR7dGhpcy51cGxvYWRJZH0nIHN0eWxlPSdkaXNwbGF5OiBub25lJyB0eXBlPSdmaWxlJyAvPmApO1xyXG4gICAgICAkKGAjJHt0aGlzLnVwbG9hZElkfWApLm9uKCdjaGFuZ2UnLCAoZXZ0OiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldnQudGFyZ2V0O1xyXG4gICAgICAgICAgY29uc3QgZmlsZVRvVXBsb2FkID0gdGFyZ2V0LmZpbGVzLml0ZW0oMCk7XHJcbiAgICAgICAgICB0aGlzLnVwbG9hZCh1cmwsIGZpbGVUb1VwbG9hZCwgb3B0aW9uKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgJChgIyR7dGhpcy51cGxvYWRJZH1gKS50cmlnZ2VyKCdjbGljaycpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWQgPSBhc3luYyAodXJsOiBzdHJpbmcsIGZpbGU6IEZpbGUsIG9wdGlvbj86IHtcclxuICAgIGV4dGVuc2lvbnM/OiBzdHJpbmdbXSxcclxuICAgIG1heFNpemVJbk1iPzogbnVtYmVyLFxyXG4gICAgdmFsaWRhdG9yPzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IGxhc3REb3QgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgIGlmIChsYXN0RG90ID09PSAtMSkge1xyXG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoYEludmFsaWQgZmlsZSBleHRlbnNpb25gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnN1YnN0cmluZyhsYXN0RG90ICsgMSk7XHJcbiAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgIGlmIChvcHRpb24uZXh0ZW5zaW9ucz8ubGVuZ3RoICYmICFvcHRpb24uZXh0ZW5zaW9ucy5zb21lKGUgPT4gZS50b1VwcGVyQ2FzZSgpID09PSBleHRlbnNpb24udG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ1VwbG9hZGVkIGZpbGUgaXMgbm90IG1hdGNoIGV4dGVuc2lvbicpfSAke29wdGlvbi5leHRlbnNpb25zLmpvaW4oJywgJyl9YDtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbi5tYXhTaXplSW5NYiA+IDAgJiYgb3B0aW9uLm1heFNpemVJbk1iICogMTAyNCAqIDEwMjQgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ01heCBmaWxlIHNpemUnKX0gJHtvcHRpb24ubWF4U2l6ZUluTWJ9IE1ic2A7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24udmFsaWRhdG9yICYmIG9wdGlvbi52YWxpZGF0b3IoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBvcHRpb24udmFsaWRhdG9yKGZpbGUubmFtZSk7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wb3N0KHVybCwgZm9ybURhdGEpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2FwaS8iLCJzb3VyY2VzIjpbInNyYy9saWIvYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7Ozs7OztBQUs3QixNQUFNLE9BQU8sWUFBWTtJQWtCdkIsWUFDVSxVQUFzQixFQUNVLGFBQWdDLEVBQ2hFLFlBQTRCLEVBQzVCLFlBQTRCO1FBSDVCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDVSxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFDaEUsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzVCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQXJCdEMsbUJBQVcsTUFBTSxFQUFDLENBQUMsT0FBTztRQUMxQix5QkFBaUIsSUFBSSxFQUFDLENBQUMsS0FBSztRQUM1QixpQkFTSSxFQUFFLEVBQUM7UUFFQyxjQUFTLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRTs7WUFDNUMsT0FB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QUFNLFNBQUMsVUFBVSxjQUFHLFFBQVE7WUE3QnhCLGNBQWM7WUFDZCxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IHRha2UsIHRpbWVvdXQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IElBcGlDb25maWd1cmF0aW9uLCBBUElfQ09ORklHIH0gZnJvbSAnLi9hcGkubW9kZWwnO1xyXG5pbXBvcnQgeyBTZENhY2hlU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY2FjaGUnO1xyXG5pbXBvcnQgeyBTZFRva2VuU2VydmljZSB9IGZyb20gJy4vdG9rZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RBcGlTZXJ2aWNlIHtcclxuICAjdGltZW91dCA9IDEyMDAwMDsgLy8gMTIwc1xyXG4gICNjYWNoZUR1cmF0aW9uID0gMjAwMDsgLy8gMnNcclxuICAjY2FjaGU6IHtcclxuICAgIFtrZXk6IHN0cmluZ106IHtcclxuICAgICAgY3JlYXRlZERhdGU6IERhdGU7XHJcbiAgICAgIHN1YmplY3Q6IFN1YmplY3Q8YW55PjtcclxuICAgICAgcmVzcG9uc2U/OiB7XHJcbiAgICAgICAgc3RhdHVzPzogJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcclxuICAgICAgICByZXN1bHQ6IGFueSxcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uPy50cmFuc2xhdGUodmFsdWUpIHx8IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KEFQSV9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogSUFwaUNvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogU2RDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRva2VuU2VydmljZTogU2RUb2tlblNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIHBvc3QgPSBhc3luYyA8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgb3B0aW9ucz86IHtcclxuICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBsZXQgaGFzaEtleSA9IHV1aWQudjQoKTtcclxuICAgIGlmICghKGJvZHkgaW5zdGFuY2VvZiBGb3JtRGF0YSkpIHtcclxuICAgICAgaGFzaEtleSA9IGhhc2goe1xyXG4gICAgICAgIHVybCxcclxuICAgICAgICBoZWFkZXJzLFxyXG4gICAgICAgIGJvZHlcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuI2NhY2hlW2hhc2hLZXldIHx8IERhdGUuYWRkTWlsaXNlY29uZHModGhpcy4jY2FjaGVbaGFzaEtleV0uY3JlYXRlZERhdGUsIHRoaXMuI2NhY2hlRHVyYXRpb24pIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XSA9IHtcclxuICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdCgpLFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAob3B0aW9ucz8ucmVzcG9uc2VUeXBlICYmIG9wdGlvbnMucmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcclxuICAgICAgICB0aGlzLmh0dHBDbGllbnQucG9zdChlbmNvZGVVUkkodXJsKSwgYm9keSwge1xyXG4gICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxyXG4gICAgICAgICAgaGVhZGVycyxcclxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucz8ucmVzcG9uc2VUeXBlIGFzIGFueVxyXG4gICAgICAgIH0pLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgcmVzdWx0OiByZXNcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0Lm5leHQocmVzKTtcclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LnBvc3QoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICAgIG9ic2VydmU6ICdyZXNwb25zZScsXHJcbiAgICAgICAgICBoZWFkZXJzXHJcbiAgICAgICAgfSkucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5vaykge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdzdWNjZXNzJyxcclxuICAgICAgICAgICAgICByZXN1bHQ6IHJlcy5ib2R5XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QubmV4dChyZXMuYm9keSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKHJlcy5ib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LmVycm9yKGVycik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBwb3N0Q2FjaGUgPSBhc3luYyA8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIG9wdGlvbnM/OiB7XHJcbiAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgY2FjaGVIb3Vycz86IG51bWJlcjtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICB9KTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucz8uaGVhZGVycyB8fCB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgdXJsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHsgZ2V0LCBzZXQsIGhhcyB9ID0gdGhpcy5jYWNoZVNlcnZpY2UuY3JlYXRlKHtcclxuICAgICAgdXJsLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5XHJcbiAgICB9LCB7XHJcbiAgICAgIHR5cGU6IG9wdGlvbnM/LmNhY2hlVHlwZSxcclxuICAgICAgaG91cnM6IG9wdGlvbnM/LmNhY2hlSG91cnNcclxuICAgIH0pO1xyXG4gICAgaWYgKCFoYXMoKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBvc3QodXJsLCBib2R5LCBvcHRpb25zPy5oZWFkZXJzKTtcclxuICAgICAgc2V0KHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZ2V0KCk7XHJcbiAgfVxyXG5cclxuICBwdXQ8VCA9IGFueT4odXJsOiBzdHJpbmcsIGJvZHk/OiBhbnksIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8VD4ge1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5wdXQoZW5jb2RlVVJJKHVybCksIGJvZHksIHtcclxuICAgICAgICBvYnNlcnZlOiAncmVzcG9uc2UnLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgfSkucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKS50b1Byb21pc2UoKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5vaykge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlamVjdChyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaCgoaHR0cEVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgcmVqZWN0KGh0dHBFcnJvclJlc3BvbnNlKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICNkZWZpbmVQYXJhbXMgPSAocmVxdWVzdDogYW55KSA9PiB7XHJcbiAgICBjb25zdCBycSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVxdWVzdCkpIHtcclxuICAgICAgaWYgKHZhbHVlIHx8IHZhbHVlID09PSAwKSB7XHJcbiAgICAgICAgcnEucHVzaChcclxuICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkgYXMgc3RyaW5nKX09JHtlbmNvZGVVUklDb21wb25lbnQoXHJcbiAgICAgICAgICAgIHZhbHVlIGFzIHN0cmluZ1xyXG4gICAgICAgICAgKX1gXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGA/JHtycT8uam9pbignJicpfWA7XHJcbiAgfVxyXG5cclxuICBnZXRXaXRoUGFyYW1zID0gPFQgPSBhbnk+KHVybDogc3RyaW5nLCBwYXJhbXM6IGFueSwgb3B0aW9ucz86IHtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyxcclxuICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0KGAke3VybH0ke3RoaXMuI2RlZmluZVBhcmFtcyhwYXJhbXMpfWAsIG9wdGlvbnM/LmhlYWRlcnMsIHsgLi4ub3B0aW9ucywgZW5jb2RlVVJJOiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIGdldENhY2hlV2l0aFBhcmFtcyA9IDxUID0gYW55Pih1cmw6IHN0cmluZywgcGFyYW1zOiBhbnksIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgb3B0aW9ucz86IHtcclxuICAgIHJlbG9hZD86IGJvb2xlYW4sXHJcbiAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgY2FjaGVIb3Vycz86IG51bWJlcjtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICB9KTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDYWNoZShgJHt1cmx9JHt0aGlzLiNkZWZpbmVQYXJhbXMocGFyYW1zKX1gLCB7IC4uLm9wdGlvbnMsIGhlYWRlcnMsIGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgPSA8VCA9IGFueT4odXJsOiBzdHJpbmcsIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgb3B0aW9ucz86IHtcclxuICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XHJcbiAgICBlbmNvZGVVUkk/OiBib29sZWFuXHJcbiAgfSk6IFByb21pc2U8VD4gPT4ge1xyXG4gICAgaGVhZGVycyA9IGhlYWRlcnMgfHwgdGhpcy50b2tlblNlcnZpY2UuY3VzdG9tSGVhZGVycyh7XHJcbiAgICAgIHVybFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBlbmNvZGVkVXJsID0gb3B0aW9ucz8uZW5jb2RlVVJJID09PSBmYWxzZSA/IHVybCA6IGVuY29kZVVSSSh1cmwpO1xyXG4gICAgLy8gY29uc3QgaGFzaEtleSA9IGhhc2goe1xyXG4gICAgLy8gICBlbmNvZGVkVXJsLFxyXG4gICAgLy8gICBoZWFkZXJzXHJcbiAgICAvLyB9KTtcclxuICAgIGNvbnN0IGhhc2hLZXkgPSBoYXNoKHtcclxuICAgICAgZW5jb2RlZFVybCxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIXRoaXMuI2NhY2hlW2hhc2hLZXldIHx8IERhdGUuYWRkTWlsaXNlY29uZHModGhpcy4jY2FjaGVbaGFzaEtleV0uY3JlYXRlZERhdGUsIHRoaXMuI2NhY2hlRHVyYXRpb24pIDwgbmV3IERhdGUoKSkge1xyXG4gICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XSA9IHtcclxuICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgICBzdWJqZWN0OiBuZXcgU3ViamVjdCgpXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChvcHRpb25zPy5yZXNwb25zZVR5cGUgJiYgb3B0aW9ucy5yZXNwb25zZVR5cGUgIT09ICdqc29uJykge1xyXG4gICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoZW5jb2RlZFVybCwgeyBvYnNlcnZlOiAnYm9keScsIGhlYWRlcnMsIHJlc3BvbnNlVHlwZTogb3B0aW9ucz8ucmVzcG9uc2VUeXBlIGFzIGFueSB9KVxyXG4gICAgICAgICAgLnBpcGUodGltZW91dCh0aGlzLiN0aW1lb3V0KSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UgPSB7XHJcbiAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiByZXNcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcyk7XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldChlbmNvZGVkVXJsLCB7IG9ic2VydmU6ICdyZXNwb25zZScsIGhlYWRlcnMgfSlcclxuICAgICAgICAgIC5waXBlKHRpbWVvdXQodGhpcy4jdGltZW91dCkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMub2spIHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgICAgICAgcmVzdWx0OiByZXMuYm9keVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5uZXh0KHJlcy5ib2R5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgIHJlc3VsdDogcmVzLmJvZHlcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIHRoaXMuI2NhY2hlW2hhc2hLZXldLnN1YmplY3QuZXJyb3IocmVzLmJvZHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCBlcnIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZSA9IHtcclxuICAgICAgICAgICAgICBzdGF0dXM6ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgcmVzdWx0OiBlcnJcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy4jY2FjaGVbaGFzaEtleV0uc3ViamVjdC5lcnJvcihlcnIpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgIGlmICh0aGlzLiNjYWNoZVtoYXNoS2V5XS5yZXNwb25zZT8uc3RhdHVzID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jY2FjaGVbaGFzaEtleV0ucmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IHRoaXMuI2NhY2hlW2hhc2hLZXldLnJlc3BvbnNlLnJlc3VsdDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLiNjYWNoZVtoYXNoS2V5XS5zdWJqZWN0LnBpcGUodGFrZSgxKSkudG9Qcm9taXNlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYWNoZSA9IGFzeW5jIDxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IHtcclxuICAgIHJlbG9hZD86IGJvb2xlYW4sXHJcbiAgICBjYWNoZVR5cGU/OiAnZGVmYXVsdCcgfCAnc2Vzc2lvbicgfCAnbG9jYWwnO1xyXG4gICAgY2FjaGVIb3Vycz86IG51bWJlcjtcclxuICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycztcclxuICAgIGVuY29kZVVSST86IGJvb2xlYW5cclxuICB9KTogUHJvbWlzZTxUPiA9PiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gb3B0aW9ucz8uaGVhZGVycyB8fCB0aGlzLnRva2VuU2VydmljZS5jdXN0b21IZWFkZXJzKHtcclxuICAgICAgdXJsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGVuY29kZWRVcmwgPSBvcHRpb25zPy5lbmNvZGVVUkkgPT09IGZhbHNlID8gdXJsIDogZW5jb2RlVVJJKHVybCk7XHJcbiAgICBjb25zdCB7IGdldCwgc2V0LCBoYXMgfSA9IHRoaXMuY2FjaGVTZXJ2aWNlLmNyZWF0ZSh7XHJcbiAgICAgIGVuY29kZWRVcmwsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgIH0sIHtcclxuICAgICAgdHlwZTogb3B0aW9ucz8uY2FjaGVUeXBlLFxyXG4gICAgICBob3Vyczogb3B0aW9ucz8uY2FjaGVIb3Vyc1xyXG4gICAgfSk7XHJcbiAgICBpZiAoIWhhcygpIHx8IG9wdGlvbnM/LnJlbG9hZCkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldChlbmNvZGVkVXJsLCBvcHRpb25zPy5oZWFkZXJzLCB7IGVuY29kZVVSSTogZmFsc2UgfSk7XHJcbiAgICAgIHNldChyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdldCgpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlPFQgPSBhbnk+KHVybDogc3RyaW5nLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiBQcm9taXNlPFQ+IHtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzIHx8IHRoaXMudG9rZW5TZXJ2aWNlLmN1c3RvbUhlYWRlcnMoe1xyXG4gICAgICB1cmxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZGVsZXRlKGVuY29kZVVSSSh1cmwpLCB7IG9ic2VydmU6ICdyZXNwb25zZScsIGhlYWRlcnMgfSlcclxuICAgICAgICAucGlwZSh0aW1lb3V0KHRoaXMuI3RpbWVvdXQpKVxyXG4gICAgICAgIC50b1Byb21pc2UoKS50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzdWx0Lm9rKSB7XHJcbiAgICAgICAgICAgIHJlc29sdmUocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmVqZWN0KHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaCgoaHR0cEVycm9yUmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZWplY3QoaHR0cEVycm9yUmVzcG9uc2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWQgPSBhc3luYyAodXJsOiBzdHJpbmcsIGZpbGU6IEZpbGUsIG9wdGlvbj86IHtcclxuICAgIGV4dGVuc2lvbnM/OiBzdHJpbmdbXSxcclxuICAgIG1heFNpemVJbk1iPzogbnVtYmVyLFxyXG4gICAgdmFsaWRhdG9yPzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IGxhc3REb3QgPSBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKTtcclxuICAgIGlmIChsYXN0RG90ID09PSAtMSkge1xyXG4gICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy50cmFuc2xhdGUoYEludmFsaWQgZmlsZSBleHRlbnNpb25gKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnN1YnN0cmluZyhsYXN0RG90ICsgMSk7XHJcbiAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgIGlmIChvcHRpb24uZXh0ZW5zaW9ucz8ubGVuZ3RoICYmICFvcHRpb24uZXh0ZW5zaW9ucy5zb21lKGUgPT4gZS50b1VwcGVyQ2FzZSgpID09PSBleHRlbnNpb24udG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ1VwbG9hZGVkIGZpbGUgaXMgbm90IG1hdGNoIGV4dGVuc2lvbicpfSAke29wdGlvbi5leHRlbnNpb25zLmpvaW4oJywgJyl9YDtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG9wdGlvbi5tYXhTaXplSW5NYiA+IDAgJiYgb3B0aW9uLm1heFNpemVJbk1iICogMTAyNCAqIDEwMjQgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy50cmFuc2xhdGUoJ01heCBmaWxlIHNpemUnKX0gJHtvcHRpb24ubWF4U2l6ZUluTWJ9IE1ic2A7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChvcHRpb24udmFsaWRhdG9yICYmIG9wdGlvbi52YWxpZGF0b3IoZmlsZS5uYW1lKSkge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBvcHRpb24udmFsaWRhdG9yKGZpbGUubmFtZSk7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wb3N0KHVybCwgZm9ybURhdGEpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -8,13 +8,16 @@ import hash from 'object-hash';
|
|
|
8
8
|
import { AngularCsv } from 'angular-csv-ext/dist/Angular-csv';
|
|
9
9
|
import { EXPORT_CONFIG, API } from './export.model';
|
|
10
10
|
import { SdNotifyService } from '@sd-angular/core/notify';
|
|
11
|
+
import { SdUtilityService } from '@sd-angular/core/utility';
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "@sd-angular/core/api";
|
|
13
|
-
import * as i2 from "@sd-angular/core/
|
|
14
|
-
import * as i3 from "
|
|
14
|
+
import * as i2 from "@sd-angular/core/utility";
|
|
15
|
+
import * as i3 from "@sd-angular/core/notify";
|
|
16
|
+
import * as i4 from "./export.model";
|
|
15
17
|
export class SdExportService {
|
|
16
|
-
constructor(apiService, notifyService, configuration) {
|
|
18
|
+
constructor(apiService, utilityService, notifyService, configuration) {
|
|
17
19
|
this.apiService = apiService;
|
|
20
|
+
this.utilityService = utilityService;
|
|
18
21
|
this.notifyService = notifyService;
|
|
19
22
|
this.configuration = configuration;
|
|
20
23
|
_directory.set(this, (key, group) => {
|
|
@@ -43,18 +46,22 @@ export class SdExportService {
|
|
|
43
46
|
const { firebaseUrl } = this.configuration;
|
|
44
47
|
const { uploadTemplate } = API;
|
|
45
48
|
const url = `${firebaseUrl}${uploadTemplate}?${__classPrivateFieldGet(this, _directory).call(this, key, group)}`;
|
|
46
|
-
const
|
|
49
|
+
const file = yield this.utilityService.upload({
|
|
47
50
|
extensions: ['xlsx'],
|
|
48
51
|
maxSizeInMb: 0.1,
|
|
49
52
|
validator
|
|
50
|
-
}).catch((err) => {
|
|
51
|
-
this.notifyService.notify.warning(err === null || err === void 0 ? void 0 : err.message);
|
|
52
|
-
throw err;
|
|
53
53
|
});
|
|
54
|
-
|
|
55
|
-
filePath,
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
if (file) {
|
|
55
|
+
const { filePath, fileName } = yield this.apiService.upload(url, file).catch((err) => {
|
|
56
|
+
this.notifyService.notify.warning(err === null || err === void 0 ? void 0 : err.message);
|
|
57
|
+
throw err;
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
filePath,
|
|
61
|
+
fileName,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
58
65
|
});
|
|
59
66
|
this.generateUploadTemplate = (args) => __awaiter(this, void 0, void 0, function* () {
|
|
60
67
|
const { key, template, group } = args;
|
|
@@ -193,7 +200,7 @@ export class SdExportService {
|
|
|
193
200
|
}
|
|
194
201
|
}
|
|
195
202
|
_directory = new WeakMap(), _blobToSaveAs = new WeakMap();
|
|
196
|
-
SdExportService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SdExportService_Factory() { return new SdExportService(i0.ɵɵinject(i1.SdApiService), i0.ɵɵinject(i2.
|
|
203
|
+
SdExportService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SdExportService_Factory() { return new SdExportService(i0.ɵɵinject(i1.SdApiService), i0.ɵɵinject(i2.SdUtilityService), i0.ɵɵinject(i3.SdNotifyService), i0.ɵɵinject(i4.EXPORT_CONFIG, 8)); }, token: SdExportService, providedIn: "root" });
|
|
197
204
|
SdExportService.decorators = [
|
|
198
205
|
{ type: Injectable, args: [{
|
|
199
206
|
providedIn: 'root'
|
|
@@ -201,7 +208,8 @@ SdExportService.decorators = [
|
|
|
201
208
|
];
|
|
202
209
|
SdExportService.ctorParameters = () => [
|
|
203
210
|
{ type: SdApiService },
|
|
211
|
+
{ type: SdUtilityService },
|
|
204
212
|
{ type: SdNotifyService },
|
|
205
213
|
{ type: undefined, decorators: [{ type: Inject, args: [EXPORT_CONFIG,] }, { type: Optional }] }
|
|
206
214
|
];
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBd0MsYUFBYSxFQUFpQixHQUFHLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQUsxRCxNQUFNLE9BQU8sZUFBZTtJQUkxQixZQUNVLFVBQXdCLEVBQ3hCLGFBQThCLEVBQ0ssYUFBbUM7UUFGdEUsZUFBVSxHQUFWLFVBQVUsQ0FBYztRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDSyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUF1QmhGLHFCQUFhLENBQUMsR0FBVyxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzFDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDdEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDVixPQUFPLFFBQVEsSUFBSSxDQUFDLE1BQU0sV0FBVyxZ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UUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDcEMsSUFBSSxFQUFDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFDRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDOzs7OztZQS9CRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVRRLFlBQVk7WUFLWixlQUFlOzRDQVluQixNQUFNLFNBQUMsYUFBYSxjQUFHLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RBcGlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCB7IEFuZ3VsYXJDc3YgfSBmcm9tICdhbmd1bGFyLWNzdi1leHQvZGlzdC9Bbmd1bGFyLWNzdic7XHJcbmltcG9ydCB7IEV4cG9ydFRlbXBsYXRlLCBJRXhwb3J0Q29uZmlndXJhdGlvbiwgRVhQT1JUX0NPTkZJRywgSUV4cG9ydE9wdGlvbiwgQVBJLCBTZEV4cG9ydEZpbGUgfSBmcm9tICcuL2V4cG9ydC5tb2RlbCc7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRXhwb3J0U2VydmljZSB7XHJcbiAgZ2V0IGhhc0NvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZ3VyYXRpb24/LmZpcmViYXNlVXJsO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU2RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBASW5qZWN0KEVYUE9SVF9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogSUV4cG9ydENvbmZpZ3VyYXRpb24pIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IGZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBpZiAodHlwZW9mIChmb2xkZXIpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvbGRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgdXNlckZvbGRlcigpIHtcclxuICAgIGNvbnN0IHsgdXNlciB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgaWYgKCF1c2VyPy5mb2xkZXIpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IHVzZXI7XHJcbiAgICBpZiAodHlwZW9mIChmb2xkZXIpID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZm9sZGVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvbGRlcigpO1xyXG4gIH1cclxuXHJcbiAgI2RpcmVjdG9yeSA9IChrZXk6IHN0cmluZywgZ3JvdXA6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IGhhc2hlZEZvbGRlciA9IGhhc2goe1xyXG4gICAgICBmb2xkZXI6IHRoaXMuZm9sZGVyLFxyXG4gICAgICB1c2VyRm9sZGVyOiB0aGlzLnVzZXJGb2xkZXJcclxuICAgIH0pO1xyXG4gICAgaWYgKCFncm91cCkge1xyXG4gICAgICByZXR1cm4gYGRpcjE9JHt0aGlzLmZvbGRlcn0mZGlyMj1VLSR7aGFzaGVkRm9sZGVyfSZkaXIzPSR7a2V5IHx8ICcnfWA7XHJcbiAgICB9XHJcbiAgICBoYXNoZWRGb2xkZXIgPSBoYXNoKHtcclxuICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcixcclxuICAgICAgZ3JvdXBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9Ry0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVUZW1wbGF0ZSA9IGFzeW5jICh0ZW1wbGF0ZTogRXhwb3J0VGVtcGxhdGUpID0+IHtcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgZ2VuZXJhdGVUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtnZW5lcmF0ZVRlbXBsYXRlfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB0ZW1wbGF0ZSk7XHJcbiAgICByZXR1cm4geyBmaWxlUGF0aCwgZmlsZU5hbWUgfTtcclxuICB9XHJcblxyXG4gIHVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgICB2YWxpZGF0b3I/OiAoZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nXHJcbiAgfSk6IFByb21pc2U8U2RFeHBvcnRGaWxlPiA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAsIHZhbGlkYXRvciB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgdXBsb2FkVGVtcGxhdGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke2ZpcmViYXNlVXJsfSR7dXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnVwbG9hZFNpbmdsZSh1cmwsIHtcclxuICAgICAgZXh0ZW5zaW9uczogWyd4bHN4J10sXHJcbiAgICAgIG1heFNpemVJbk1iOiAwLjEsXHJcbiAgICAgIHZhbGlkYXRvclxyXG4gICAgfSkuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKGVycj8ubWVzc2FnZSk7XHJcbiAgICAgIHRocm93IGVycjtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZmlsZVBhdGgsXHJcbiAgICAgIGZpbGVOYW1lLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICB0ZW1wbGF0ZTogRXhwb3J0VGVtcGxhdGU7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgdGVtcGxhdGUsIGdyb3VwIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke2dlbmVyYXRlVXBsb2FkVGVtcGxhdGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfWA7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBmaWxlTmFtZSB9ID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB0ZW1wbGF0ZSk7XHJcbiAgICByZXR1cm4geyBmaWxlUGF0aCwgZmlsZU5hbWUgfTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpbGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsga2V5LCBncm91cCwgZmlsZU5hbWUgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpcmViYXNlVXJsIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB7IHJlbW92ZUZpbGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke2ZpcmViYXNlVXJsfSR7cmVtb3ZlRmlsZX0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9Jm5hbWU9JHtmaWxlTmFtZX1gO1xyXG4gICAgYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsKTtcclxuICB9XHJcblxyXG4gIGZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoYXJnczoge1xyXG4gICAga2V5OiBzdHJpbmc7XHJcbiAgICBncm91cD86IHN0cmluZztcclxuICB9KTogUHJvbWlzZTxTZEV4cG9ydEZpbGVbXT4gPT4ge1xyXG4gICAgaW50ZXJmYWNlIEZpbGVzSW5Gb2xkZXJSZXMge1xyXG4gICAgICBkaXJlY3Rvcnk6IHN0cmluZztcclxuICAgICAgZmlsZXM6IHtcclxuICAgICAgICBwdWJsaWNVcmw6IHN0cmluZywgZnVsbFBhdGg6IHN0cmluZywgbmFtZTogc3RyaW5nXHJcbiAgICAgIH1bXTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsga2V5LCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgZmlsZXNJbkZvbGRlciB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtmaWxlc0luRm9sZGVyfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldDxGaWxlc0luRm9sZGVyUmVzPih1cmwpO1xyXG4gICAgcmV0dXJuIHJlcy5maWxlcz8ubWFwKGUgPT4gKHtcclxuICAgICAgZmlsZVBhdGg6IGUucHVibGljVXJsLFxyXG4gICAgICBmaWxlTmFtZTogZS5uYW1lXHJcbiAgICB9KSkgfHwgW107XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCA9IChmaWxlUGF0aDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgbGluazogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGAke2ZpbGVOYW1lIHx8IHV1aWQudjQoKX0ueGxzeGA7XHJcbiAgICBsaW5rLmhyZWYgPSBmaWxlUGF0aDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0QnlUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7XHJcbiAgICBmaWxlUGF0aDogc3RyaW5nLFxyXG4gICAgY29sdW1uczogYW55W10sXHJcbiAgICBpdGVtczogYW55W10sXHJcbiAgICBmaWxlTmFtZT86IHN0cmluZ1xyXG4gIH0pID0+IHtcclxuICAgIGNvbnN0IHsgZmlsZVBhdGgsIGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgc2RFeHBvcnRCeVRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkRXhwb3J0QnlUZW1wbGF0ZX1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCB7XHJcbiAgICAgIGZpbGVQYXRoLFxyXG4gICAgICBjb2x1bW5zLFxyXG4gICAgICBpdGVtcyxcclxuICAgICAgZmlsZU5hbWVcclxuICAgIH0sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LCcgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0ID0gYXN5bmMgKG9wdGlvbjogSUV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBzZEV4cG9ydCB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtzZEV4cG9ydH1gO1xyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnBvc3QodXJsLCBvcHRpb24sIG51bGwsIHtcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7YmFzZTY0LCcgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgb3B0aW9uPy5maWxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRDU1YgPSBhc3luYyAob3B0aW9uOiBJRXhwb3J0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCB7IGNvbHVtbnMsIGl0ZW1zLCBmaWxlTmFtZSB9ID0gb3B0aW9uO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgZmllbGRTZXBhcmF0b3I6ICcsJyxcclxuICAgICAgcXVvdGVTdHJpbmdzOiAnXCInLFxyXG4gICAgICBkZWNpbWFsc2VwYXJhdG9yOiAnLicsXHJcbiAgICAgIHNob3dMYWJlbHM6IHRydWUsXHJcbiAgICAgIHNob3dUaXRsZTogZmFsc2UsXHJcbiAgICAgIHRpdGxlOiBmaWxlTmFtZSB8fCAnQ1NWJyxcclxuICAgICAgdXNlQm9tOiB0cnVlLFxyXG4gICAgICBub0Rvd25sb2FkOiBmYWxzZSxcclxuICAgICAgdXNlSGVhZGVyOiBmYWxzZSxcclxuICAgICAgbnVsbFRvRW1wdHlTdHJpbmc6IHRydWUsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgaGVhZGVyQ1NWID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGhlYWRlckNTVltjb2x1bW4uZmllbGRdID0gY29sdW1uLnRpdGxlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBBbmd1bGFyQ3N2KFsuLi5baGVhZGVyQ1NWXSwgLi4uaXRlbXNdLCBgJHtmaWxlTmFtZSB8fCAnQ1NWJ31fJHtEYXRlLnRvRm9ybWF0KG5ldyBEYXRlKCksICd5eXl5LU1NLWRkLUhILW1tLXNzJyl9YCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBtZXJnZVBERiA9IGFzeW5jICh1cmxzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyBzZE1lcmdlUERGIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3NkTWVyZ2VQREZ9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwge1xyXG4gICAgICB1cmxzXHJcbiAgICB9LCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XHJcbiAgICB0aGlzLiNibG9iVG9TYXZlQXMoYmxvYiwgYCR7dXVpZC52NCgpfWApO1xyXG4gIH1cclxuXHJcbiAgI2Jsb2JUb1NhdmVBcyA9IChibG9iOiBCbG9iLCBmaWxlTmFtZTogc3RyaW5nID0gJ0V4cG9ydCcpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnJlcGxhY2UoLy54bHN4L2ksICcnKTtcclxuICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8ucGRmL2ksICcnKTtcclxuICAgICAgaWYgKGxpbmsuZG93bmxvYWQgIT09IHVuZGVmaW5lZCkgeyAvLyBmZWF0dXJlIGRldGVjdGlvblxyXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBgJHtmaWxlTmFtZX1fJHtuZXcgRGF0ZSgpLnRvRm9ybWF0KCd5eXl5X01NX2RkX0hIX21tJyl9YCk7XHJcbiAgICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdCbG9iVG9TYXZlQXMgZXJyb3InLCBlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4cG9ydEluZm8ge1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIHNoZWV0TmFtZT86IHN0cmluZztcclxuICBmaWxlTmFtZT86IHN0cmluZztcclxufVxyXG4iXX0=
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvbmdoaWF0dDE1X29uZW1vdW50L0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL2V4cG9ydC8iLCJzb3VyY2VzIjpbInNyYy9saWIvZXhwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxhQUFhLENBQUM7QUFDL0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBd0MsYUFBYSxFQUFpQixHQUFHLEVBQWdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFLNUQsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxVQUF3QixFQUN4QixjQUFnQyxFQUNoQyxhQUE4QixFQUNLLGFBQW1DO1FBSHRFLGVBQVUsR0FBVixVQUFVLENBQWM7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUNLLGtCQUFhLEdBQWIsYUFBYSxDQUFzQjtRQXVCaEYscUJBQWEsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFVBQVUsRUFBRSxJQUFJLENB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Q0FBQztJQUMzQyxDQUFDO0lBUUQsSUFBWSxNQUFNO1FBQ2hCLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUNoQyxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ3BCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3BDLElBQUksRUFBQyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsTUFBTSxDQUFBLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLEVBQUU7WUFDaEMsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELE9BQU8sTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQzs7Ozs7WUFoQ0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFWUSxZQUFZO1lBTVosZ0JBQWdCO1lBRGhCLGVBQWU7NENBY25CLE1BQU0sU0FBQyxhQUFhLGNBQUcsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZEFwaVNlcnZpY2UgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2FwaSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgQW5ndWxhckNzdiB9IGZyb20gJ2FuZ3VsYXItY3N2LWV4dC9kaXN0L0FuZ3VsYXItY3N2JztcclxuaW1wb3J0IHsgRXhwb3J0VGVtcGxhdGUsIElFeHBvcnRDb25maWd1cmF0aW9uLCBFWFBPUlRfQ09ORklHLCBJRXhwb3J0T3B0aW9uLCBBUEksIFNkRXhwb3J0RmlsZSB9IGZyb20gJy4vZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBTZFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS91dGlsaXR5JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRXhwb3J0U2VydmljZSB7XHJcbiAgZ2V0IGhhc0NvbmZpZ3VyYXRpb24oKSB7XHJcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZ3VyYXRpb24/LmZpcmViYXNlVXJsO1xyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU2RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5U2VydmljZTogU2RVdGlsaXR5U2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgQEluamVjdChFWFBPUlRfQ09ORklHKSBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbmZpZ3VyYXRpb246IElFeHBvcnRDb25maWd1cmF0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBmb2xkZXIoKSB7XHJcbiAgICBjb25zdCB7IGZvbGRlciB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgaWYgKHR5cGVvZiAoZm9sZGVyKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIGZvbGRlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBmb2xkZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IHVzZXJGb2xkZXIoKSB7XHJcbiAgICBjb25zdCB7IHVzZXIgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGlmICghdXNlcj8uZm9sZGVyKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSB1c2VyO1xyXG4gICAgaWYgKHR5cGVvZiAoZm9sZGVyKSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIGZvbGRlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBmb2xkZXIoKTtcclxuICB9XHJcblxyXG4gICNkaXJlY3RvcnkgPSAoa2V5OiBzdHJpbmcsIGdyb3VwOiBzdHJpbmcpID0+IHtcclxuICAgIGxldCBoYXNoZWRGb2xkZXIgPSBoYXNoKHtcclxuICAgICAgZm9sZGVyOiB0aGlzLmZvbGRlcixcclxuICAgICAgdXNlckZvbGRlcjogdGhpcy51c2VyRm9sZGVyXHJcbiAgICB9KTtcclxuICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgcmV0dXJuIGBkaXIxPSR7dGhpcy5mb2xkZXJ9JmRpcjI9VS0ke2hhc2hlZEZvbGRlcn0mZGlyMz0ke2tleSB8fCAnJ31gO1xyXG4gICAgfVxyXG4gICAgaGFzaGVkRm9sZGVyID0gaGFzaCh7XHJcbiAgICAgIGZvbGRlcjogdGhpcy5mb2xkZXIsXHJcbiAgICAgIGdyb3VwXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBgZGlyMT0ke3RoaXMuZm9sZGVyfSZkaXIyPUctJHtoYXNoZWRGb2xkZXJ9JmRpcjM9JHtrZXkgfHwgJyd9YDtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGVtcGxhdGUgPSBhc3luYyAodGVtcGxhdGU6IEV4cG9ydFRlbXBsYXRlKSA9PiB7XHJcbiAgICBjb25zdCB7IGZpcmViYXNlVXJsIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB7IGdlbmVyYXRlVGVtcGxhdGUgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke2ZpcmViYXNlVXJsfSR7Z2VuZXJhdGVUZW1wbGF0ZX1gO1xyXG4gICAgY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwgdGVtcGxhdGUpO1xyXG4gICAgcmV0dXJuIHsgZmlsZVBhdGgsIGZpbGVOYW1lIH07XHJcbiAgfVxyXG5cclxuICB1cGxvYWRUZW1wbGF0ZSA9IGFzeW5jIChhcmdzOiB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIGdyb3VwPzogc3RyaW5nO1xyXG4gICAgdmFsaWRhdG9yPzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHN0cmluZ1xyXG4gIH0pOiBQcm9taXNlPFNkRXhwb3J0RmlsZT4gPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIGdyb3VwLCB2YWxpZGF0b3IgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpcmViYXNlVXJsIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB7IHVwbG9hZFRlbXBsYXRlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3VwbG9hZFRlbXBsYXRlfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IHRoaXMudXRpbGl0eVNlcnZpY2UudXBsb2FkKHtcclxuICAgICAgZXh0ZW5zaW9uczogWyd4bHN4J10sXHJcbiAgICAgIG1heFNpemVJbk1iOiAwLjEsXHJcbiAgICAgIHZhbGlkYXRvclxyXG4gICAgfSk7XHJcbiAgICBpZihmaWxlKSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZVBhdGgsIGZpbGVOYW1lIH0gPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UudXBsb2FkKHVybCwgZmlsZSkuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcoZXJyPy5tZXNzYWdlKTtcclxuICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGZpbGVQYXRoLFxyXG4gICAgICAgIGZpbGVOYW1lLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGFyZ3M6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdGVtcGxhdGU6IEV4cG9ydFRlbXBsYXRlO1xyXG4gICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgfSkgPT4ge1xyXG4gICAgY29uc3QgeyBrZXksIHRlbXBsYXRlLCBncm91cCB9ID0gYXJncztcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgZ2VuZXJhdGVVcGxvYWRUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtnZW5lcmF0ZVVwbG9hZFRlbXBsYXRlfT8ke3RoaXMuI2RpcmVjdG9yeShrZXksIGdyb3VwKX1gO1xyXG4gICAgY29uc3QgeyBmaWxlUGF0aCwgZmlsZU5hbWUgfSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwgdGVtcGxhdGUpO1xyXG4gICAgcmV0dXJuIHsgZmlsZVBhdGgsIGZpbGVOYW1lIH07XHJcbiAgfVxyXG5cclxuICByZW1vdmVGaWxlID0gYXN5bmMgKGFyZ3M6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgICBmaWxlTmFtZT86IHN0cmluZztcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAsIGZpbGVOYW1lIH0gPSBhcmdzO1xyXG4gICAgY29uc3QgeyBmaXJlYmFzZVVybCB9ID0gdGhpcy5jb25maWd1cmF0aW9uO1xyXG4gICAgY29uc3QgeyByZW1vdmVGaWxlIH0gPSBBUEk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHtmaXJlYmFzZVVybH0ke3JlbW92ZUZpbGV9PyR7dGhpcy4jZGlyZWN0b3J5KGtleSwgZ3JvdXApfSZuYW1lPSR7ZmlsZU5hbWV9YDtcclxuICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCk7XHJcbiAgfVxyXG5cclxuICBmaWxlc0luRm9sZGVyID0gYXN5bmMgKGFyZ3M6IHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgZ3JvdXA/OiBzdHJpbmc7XHJcbiAgfSk6IFByb21pc2U8U2RFeHBvcnRGaWxlW10+ID0+IHtcclxuICAgIGludGVyZmFjZSBGaWxlc0luRm9sZGVyUmVzIHtcclxuICAgICAgZGlyZWN0b3J5OiBzdHJpbmc7XHJcbiAgICAgIGZpbGVzOiB7XHJcbiAgICAgICAgcHVibGljVXJsOiBzdHJpbmcsIGZ1bGxQYXRoOiBzdHJpbmcsIG5hbWU6IHN0cmluZ1xyXG4gICAgICB9W107XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGtleSwgZ3JvdXAgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpcmViYXNlVXJsIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB7IGZpbGVzSW5Gb2xkZXIgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke2ZpcmViYXNlVXJsfSR7ZmlsZXNJbkZvbGRlcn0/JHt0aGlzLiNkaXJlY3Rvcnkoa2V5LCBncm91cCl9YDtcclxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5nZXQ8RmlsZXNJbkZvbGRlclJlcz4odXJsKTtcclxuICAgIHJldHVybiByZXMuZmlsZXM/Lm1hcChlID0+ICh7XHJcbiAgICAgIGZpbGVQYXRoOiBlLnB1YmxpY1VybCxcclxuICAgICAgZmlsZU5hbWU6IGUubmFtZVxyXG4gICAgfSkpIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQgPSAoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBgJHtmaWxlTmFtZSB8fCB1dWlkLnY0KCl9Lnhsc3hgO1xyXG4gICAgbGluay5ocmVmID0gZmlsZVBhdGg7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydEJ5VGVtcGxhdGUgPSBhc3luYyAoYXJnczoge1xyXG4gICAgZmlsZVBhdGg6IHN0cmluZyxcclxuICAgIGNvbHVtbnM6IGFueVtdLFxyXG4gICAgaXRlbXM6IGFueVtdLFxyXG4gICAgZmlsZU5hbWU/OiBzdHJpbmdcclxuICB9KSA9PiB7XHJcbiAgICBjb25zdCB7IGZpbGVQYXRoLCBjb2x1bW5zLCBpdGVtcywgZmlsZU5hbWUgfSA9IGFyZ3M7XHJcbiAgICBjb25zdCB7IGZpcmViYXNlVXJsIH0gPSB0aGlzLmNvbmZpZ3VyYXRpb247XHJcbiAgICBjb25zdCB7IHNkRXhwb3J0QnlUZW1wbGF0ZSB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtzZEV4cG9ydEJ5VGVtcGxhdGV9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwge1xyXG4gICAgICBmaWxlUGF0aCxcclxuICAgICAgY29sdW1ucyxcclxuICAgICAgaXRlbXMsXHJcbiAgICAgIGZpbGVOYW1lXHJcbiAgICB9LCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2Jhc2U2NCwnIH0pO1xyXG4gICAgdGhpcy4jYmxvYlRvU2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCA9IGFzeW5jIChvcHRpb246IElFeHBvcnRPcHRpb24pID0+IHtcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgc2RFeHBvcnQgfSA9IEFQSTtcclxuICAgIGNvbnN0IHVybCA9IGAke2ZpcmViYXNlVXJsfSR7c2RFeHBvcnR9YDtcclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5wb3N0KHVybCwgb3B0aW9uLCBudWxsLCB7XHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJ1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2Jhc2U2NCwnIH0pO1xyXG4gICAgdGhpcy4jYmxvYlRvU2F2ZUFzKGJsb2IsIG9wdGlvbj8uZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0Q1NWID0gYXN5bmMgKG9wdGlvbjogSUV4cG9ydE9wdGlvbikgPT4ge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBpdGVtcywgZmlsZU5hbWUgfSA9IG9wdGlvbjtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIGZpZWxkU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgIHF1b3RlU3RyaW5nczogJ1wiJyxcclxuICAgICAgZGVjaW1hbHNlcGFyYXRvcjogJy4nLFxyXG4gICAgICBzaG93TGFiZWxzOiB0cnVlLFxyXG4gICAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgICB0aXRsZTogZmlsZU5hbWUgfHwgJ0NTVicsXHJcbiAgICAgIHVzZUJvbTogdHJ1ZSxcclxuICAgICAgbm9Eb3dubG9hZDogZmFsc2UsXHJcbiAgICAgIHVzZUhlYWRlcjogZmFsc2UsXHJcbiAgICAgIG51bGxUb0VtcHR5U3RyaW5nOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhlYWRlckNTViA9IHt9O1xyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICBoZWFkZXJDU1ZbY29sdW1uLmZpZWxkXSA9IGNvbHVtbi50aXRsZTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgQW5ndWxhckNzdihbLi4uW2hlYWRlckNTVl0sIC4uLml0ZW1zXSwgYCR7ZmlsZU5hbWUgfHwgJ0NTVid9XyR7RGF0ZS50b0Zvcm1hdChuZXcgRGF0ZSgpLCAneXl5eS1NTS1kZC1ISC1tbS1zcycpfWAsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgbWVyZ2VQREYgPSBhc3luYyAodXJsczogc3RyaW5nW10pID0+IHtcclxuICAgIGNvbnN0IHsgZmlyZWJhc2VVcmwgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgIGNvbnN0IHsgc2RNZXJnZVBERiB9ID0gQVBJO1xyXG4gICAgY29uc3QgdXJsID0gYCR7ZmlyZWJhc2VVcmx9JHtzZE1lcmdlUERGfWA7XHJcbiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UucG9zdCh1cmwsIHtcclxuICAgICAgdXJsc1xyXG4gICAgfSwgbnVsbCwge1xyXG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcidcclxuICAgIH0pO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnIH0pO1xyXG4gICAgdGhpcy4jYmxvYlRvU2F2ZUFzKGJsb2IsIGAke3V1aWQudjQoKX1gKTtcclxuICB9XHJcblxyXG4gICNibG9iVG9TYXZlQXMgPSAoYmxvYjogQmxvYiwgZmlsZU5hbWU6IHN0cmluZyA9ICdFeHBvcnQnKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5yZXBsYWNlKC8ueGxzeC9pLCAnJyk7XHJcbiAgICAgIGZpbGVOYW1lID0gZmlsZU5hbWUucmVwbGFjZSgvLnBkZi9pLCAnJyk7XHJcbiAgICAgIGlmIChsaW5rLmRvd25sb2FkICE9PSB1bmRlZmluZWQpIHsgLy8gZmVhdHVyZSBkZXRlY3Rpb25cclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XHJcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgYCR7ZmlsZU5hbWV9XyR7bmV3IERhdGUoKS50b0Zvcm1hdCgneXl5eV9NTV9kZF9ISF9tbScpfWApO1xyXG4gICAgICAgIGxpbmsuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignQmxvYlRvU2F2ZUFzIGVycm9yJywgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFeHBvcnRJbmZvIHtcclxuICBkYXRhOiBhbnlbXTtcclxuICBzaGVldE5hbWU/OiBzdHJpbmc7XHJcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XHJcbn1cclxuIl19
|