@webiny/app-file-manager 5.41.1 → 5.41.2-beta.0

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.
@@ -1,6 +1,9 @@
1
1
  import React from "react";
2
2
  export interface SupportedFileTypesProps {
3
3
  accept: string[];
4
+ loading: boolean;
5
+ totalCount: number;
6
+ currentCount: number;
4
7
  }
5
- declare const SupportedFileTypes: ({ accept }: SupportedFileTypesProps) => React.JSX.Element | null;
8
+ declare const SupportedFileTypes: ({ accept, loading, totalCount, currentCount }: SupportedFileTypesProps) => React.JSX.Element | null;
6
9
  export default SupportedFileTypes;
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
8
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
10
11
  var _i18n = require("@webiny/app/i18n");
11
12
  var _lite = _interopRequireDefault(require("mime/lite"));
12
13
  var _templateObject, _templateObject2;
@@ -32,14 +33,26 @@ var getUniqueFilePlugins = function getUniqueFilePlugins(accept) {
32
33
  return Object.keys(exts);
33
34
  };
34
35
  var SupportedFileTypes = function SupportedFileTypes(_ref) {
35
- var accept = _ref.accept;
36
- if (!accept) {
36
+ var accept = _ref.accept,
37
+ loading = _ref.loading,
38
+ totalCount = _ref.totalCount,
39
+ currentCount = _ref.currentCount;
40
+ var getLabel = (0, _react.useCallback)(function () {
41
+ var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
42
+ return "".concat(count, " ").concat(count === 1 ? "file" : "files");
43
+ }, []);
44
+ if (!accept || loading) {
37
45
  return null;
38
46
  }
39
47
  if (accept.length === 0) {
40
- return /*#__PURE__*/_react.default.createElement("span", null, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Showing all file extensions."]))));
48
+ return /*#__PURE__*/_react.default.createElement("span", null, t(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["Showing {currentCount} out of {totalCountLabel} from all file extensions."])))({
49
+ currentCount: currentCount,
50
+ totalCountLabel: getLabel(totalCount)
51
+ }));
41
52
  }
42
- return /*#__PURE__*/_react.default.createElement("span", null, t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Showing the following file extensions: {files}."])))({
53
+ return /*#__PURE__*/_react.default.createElement("span", null, t(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["Showing {currentCount} out of {totalCountLabel} from the following file extensions: {files}."])))({
54
+ currentCount: currentCount,
55
+ totalCountLabel: getLabel(totalCount),
43
56
  files: getUniqueFilePlugins(accept).join(", ")
44
57
  }));
45
58
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_i18n","_lite","_templateObject","_templateObject2","mime","define","t","i18n","ns","getUniqueFilePlugins","accept","exts","forEach","item","ext","getExtension","Object","keys","SupportedFileTypes","_ref","length","default","createElement","_taggedTemplateLiteral2","files","join","_default","exports"],"sources":["SupportedFileTypes.tsx"],"sourcesContent":["import React from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport mime from \"mime/lite\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst t = i18n.ns(\"app-admin/file-manager/components/bottom-info-bar/supported-files\");\n\nconst getUniqueFilePlugins = (accept: string[]): string[] => {\n const exts: Record<string, boolean> = {};\n accept.forEach(item => {\n const ext = mime.getExtension(item);\n if (!ext) {\n return;\n }\n exts[ext] = true;\n });\n\n return Object.keys(exts);\n};\n\nexport interface SupportedFileTypesProps {\n accept: string[];\n}\n\nconst SupportedFileTypes = ({ accept }: SupportedFileTypesProps) => {\n if (!accept) {\n return null;\n }\n\n if (accept.length === 0) {\n return <span>{t`Showing all file extensions.`}</span>;\n }\n\n return (\n <span>\n {t`Showing the following file extensions: {files}.`({\n files: getUniqueFilePlugins(accept).join(\", \")\n })}\n </span>\n );\n};\n\nexport default SupportedFileTypes;\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA6B,IAAAG,eAAA,EAAAC,gBAAA;AAE7BC,aAAI,CAACC,MAAM,CAAC;EAAE,cAAc,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAC9CD,aAAI,CAACC,MAAM,CAAC;EAAE,WAAW,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAC3CD,aAAI,CAACC,MAAM,CAAC;EAAE,0BAA0B,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAE1D,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,mEAAmE,CAAC;AAEtF,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,MAAgB,EAAe;EACzD,IAAMC,IAA6B,GAAG,CAAC,CAAC;EACxCD,MAAM,CAACE,OAAO,CAAC,UAAAC,IAAI,EAAI;IACnB,IAAMC,GAAG,GAAGV,aAAI,CAACW,YAAY,CAACF,IAAI,CAAC;IACnC,IAAI,CAACC,GAAG,EAAE;MACN;IACJ;IACAH,IAAI,CAACG,GAAG,CAAC,GAAG,IAAI;EACpB,CAAC,CAAC;EAEF,OAAOE,MAAM,CAACC,IAAI,CAACN,IAAI,CAAC;AAC5B,CAAC;AAMD,IAAMO,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAA4C;EAAA,IAAtCT,MAAM,GAAAS,IAAA,CAANT,MAAM;EAChC,IAAI,CAACA,MAAM,EAAE;IACT,OAAO,IAAI;EACf;EAEA,IAAIA,MAAM,CAACU,MAAM,KAAK,CAAC,EAAE;IACrB,oBAAOvB,MAAA,CAAAwB,OAAA,CAAAC,aAAA,eAAOhB,CAAC,CAAAJ,eAAA,KAAAA,eAAA,OAAAqB,uBAAA,CAAAF,OAAA,qCAAqC,CAAC;EACzD;EAEA,oBACIxB,MAAA,CAAAwB,OAAA,CAAAC,aAAA,eACKhB,CAAC,CAAAH,gBAAA,KAAAA,gBAAA,OAAAoB,uBAAA,CAAAF,OAAA,yDAAkD;IAChDG,KAAK,EAAEf,oBAAoB,CAACC,MAAM,CAAC,CAACe,IAAI,CAAC,IAAI;EACjD,CAAC,CACC,CAAC;AAEf,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAN,OAAA,GAEaH,kBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_i18n","_lite","_interopRequireDefault","_templateObject","_templateObject2","mime","define","t","i18n","ns","getUniqueFilePlugins","accept","exts","forEach","item","ext","getExtension","Object","keys","SupportedFileTypes","_ref","loading","totalCount","currentCount","getLabel","useCallback","count","arguments","length","undefined","concat","default","createElement","_taggedTemplateLiteral2","totalCountLabel","files","join","_default","exports"],"sources":["SupportedFileTypes.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport mime from \"mime/lite\";\n\nmime.define({ \"image/x-icon\": [\"ico\"] }, true);\nmime.define({ \"image/jpg\": [\"jpg\"] }, true);\nmime.define({ \"image/vnd.microsoft.icon\": [\"ico\"] }, true);\n\nconst t = i18n.ns(\"app-admin/file-manager/components/bottom-info-bar/supported-files\");\n\nconst getUniqueFilePlugins = (accept: string[]): string[] => {\n const exts: Record<string, boolean> = {};\n accept.forEach(item => {\n const ext = mime.getExtension(item);\n if (!ext) {\n return;\n }\n exts[ext] = true;\n });\n\n return Object.keys(exts);\n};\n\nexport interface SupportedFileTypesProps {\n accept: string[];\n loading: boolean;\n totalCount: number;\n currentCount: number;\n}\n\nconst SupportedFileTypes = ({\n accept,\n loading,\n totalCount,\n currentCount\n}: SupportedFileTypesProps) => {\n const getLabel = useCallback((count = 0): string => {\n return `${count} ${count === 1 ? \"file\" : \"files\"}`;\n }, []);\n\n if (!accept || loading) {\n return null;\n }\n\n if (accept.length === 0) {\n return (\n <span>\n {t`Showing {currentCount} out of {totalCountLabel} from all file extensions.`({\n currentCount,\n totalCountLabel: getLabel(totalCount)\n })}\n </span>\n );\n }\n\n return (\n <span>\n {t`Showing {currentCount} out of {totalCountLabel} from the following file extensions: {files}.`(\n {\n currentCount,\n totalCountLabel: getLabel(totalCount),\n files: getUniqueFilePlugins(accept).join(\", \")\n }\n )}\n </span>\n );\n};\n\nexport default SupportedFileTypes;\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AAA6B,IAAAI,eAAA,EAAAC,gBAAA;AAE7BC,aAAI,CAACC,MAAM,CAAC;EAAE,cAAc,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAC9CD,aAAI,CAACC,MAAM,CAAC;EAAE,WAAW,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAC3CD,aAAI,CAACC,MAAM,CAAC;EAAE,0BAA0B,EAAE,CAAC,KAAK;AAAE,CAAC,EAAE,IAAI,CAAC;AAE1D,IAAMC,CAAC,GAAGC,UAAI,CAACC,EAAE,CAAC,mEAAmE,CAAC;AAEtF,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIC,MAAgB,EAAe;EACzD,IAAMC,IAA6B,GAAG,CAAC,CAAC;EACxCD,MAAM,CAACE,OAAO,CAAC,UAAAC,IAAI,EAAI;IACnB,IAAMC,GAAG,GAAGV,aAAI,CAACW,YAAY,CAACF,IAAI,CAAC;IACnC,IAAI,CAACC,GAAG,EAAE;MACN;IACJ;IACAH,IAAI,CAACG,GAAG,CAAC,GAAG,IAAI;EACpB,CAAC,CAAC;EAEF,OAAOE,MAAM,CAACC,IAAI,CAACN,IAAI,CAAC;AAC5B,CAAC;AASD,IAAMO,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAAC,IAAA,EAKO;EAAA,IAJ3BT,MAAM,GAAAS,IAAA,CAANT,MAAM;IACNU,OAAO,GAAAD,IAAA,CAAPC,OAAO;IACPC,UAAU,GAAAF,IAAA,CAAVE,UAAU;IACVC,YAAY,GAAAH,IAAA,CAAZG,YAAY;EAEZ,IAAMC,QAAQ,GAAG,IAAAC,kBAAW,EAAC,YAAuB;IAAA,IAAtBC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC;IACnC,UAAAG,MAAA,CAAUJ,KAAK,OAAAI,MAAA,CAAIJ,KAAK,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO;EACrD,CAAC,EAAE,EAAE,CAAC;EAEN,IAAI,CAACf,MAAM,IAAIU,OAAO,EAAE;IACpB,OAAO,IAAI;EACf;EAEA,IAAIV,MAAM,CAACiB,MAAM,KAAK,CAAC,EAAE;IACrB,oBACI/B,MAAA,CAAAkC,OAAA,CAAAC,aAAA,eACKzB,CAAC,CAAAJ,eAAA,KAAAA,eAAA,OAAA8B,uBAAA,CAAAF,OAAA,mFAA4E;MAC1ER,YAAY,EAAZA,YAAY;MACZW,eAAe,EAAEV,QAAQ,CAACF,UAAU;IACxC,CAAC,CACC,CAAC;EAEf;EAEA,oBACIzB,MAAA,CAAAkC,OAAA,CAAAC,aAAA,eACKzB,CAAC,CAAAH,gBAAA,KAAAA,gBAAA,OAAA6B,uBAAA,CAAAF,OAAA,sGACE;IACIR,YAAY,EAAZA,YAAY;IACZW,eAAe,EAAEV,QAAQ,CAACF,UAAU,CAAC;IACrCa,KAAK,EAAEzB,oBAAoB,CAACC,MAAM,CAAC,CAACyB,IAAI,CAAC,IAAI;EACjD,CACJ,CACE,CAAC;AAEf,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAP,OAAA,GAEaZ,kBAAkB","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import { BatchDTO, FieldDTO, OperationDTO, OperatorDTO } from "../domain";
2
+ import type { FormInvalidFields } from "@webiny/form";
2
3
  export interface IBatchEditorDialogPresenter {
3
4
  load(batch: BatchDTO, fields: FieldDTO[]): void;
4
5
  addOperation(): void;
@@ -9,10 +10,7 @@ export interface IBatchEditorDialogPresenter {
9
10
  get vm(): BatchEditorDialogViewModel;
10
11
  }
11
12
  export interface BatchEditorDialogViewModel {
12
- invalidFields: Record<string, {
13
- isValid: boolean;
14
- message: string;
15
- }>;
13
+ invalidFields: FormInvalidFields;
16
14
  canAddOperation: boolean;
17
15
  data: BatchEditorFormData;
18
16
  }
@@ -35,10 +33,7 @@ export declare class BatchEditorDialogPresenter implements IBatchEditorDialogPre
35
33
  constructor();
36
34
  load(batch: BatchDTO, fields: FieldDTO[]): void;
37
35
  get vm(): {
38
- invalidFields: Record<string, {
39
- isValid: boolean;
40
- message: string;
41
- }>;
36
+ invalidFields: FormInvalidFields;
42
37
  canAddOperation: boolean;
43
38
  data: {
44
39
  operations: {
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","_domain","BatchEditorDialogPresenter","exports","_this","_classCallCheck2","default","_defineProperty2","batch","operations","map","operation","operationIndex","fieldOptions","getFieldOptions","field","selectedField","find","value","operatorOptions","operators","title","getOperationTitle","operator","concat","open","canDelete","undefined","fields","makeAutoObservable","_createClass2","key","load","get","getOperations","canAddOperation","length","invalidFields","data","addOperation","push","deleteOperation","filter","_","index","setOperationFieldData","batchIndex","_toConsumableArray2","slice","setBatch","_objectSpread3","formWasSubmitted","validateBatch","onApply","onSuccess","onError","result","success","inputField","inputOperation","label","currentFieldId","arguments","existings","includes","validation","Batch","validate","error","issues","reduce","acc","issue","path","join","message"],"sources":["BatchEditorDialogPresenter.tsx"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\n\nimport {\n Batch,\n BatchDTO,\n FieldDTO,\n OperationDTO,\n OperatorDTO\n} from \"~/components/BulkActions/ActionEdit/domain\";\n\nexport interface IBatchEditorDialogPresenter {\n load(batch: BatchDTO, fields: FieldDTO[]): void;\n addOperation(): void;\n deleteOperation(operationIndex: number): void;\n setOperationFieldData(operationIndex: number, data: string): void;\n setBatch(data: any): void;\n onApply(onSuccess?: (batch: BatchDTO) => void, onError?: (batch: BatchDTO) => void): void;\n get vm(): BatchEditorDialogViewModel;\n}\n\nexport interface BatchEditorDialogViewModel {\n invalidFields: Record<string, { isValid: boolean; message: string }>;\n canAddOperation: boolean;\n data: BatchEditorFormData;\n}\n\nexport interface BatchEditorFormData {\n operations: OperationFormData[];\n}\n\nexport type OperationFormData = OperationDTO & {\n canDelete: boolean;\n title: string;\n open: boolean;\n fieldOptions: FieldDTO[];\n operatorOptions: OperatorDTO[];\n selectedField?: FieldDTO;\n};\n\nexport class BatchEditorDialogPresenter implements IBatchEditorDialogPresenter {\n private batch: BatchDTO | undefined;\n private fields: FieldDTO[];\n private invalidFields: BatchEditorDialogViewModel[\"invalidFields\"] = {};\n private formWasSubmitted = false;\n\n constructor() {\n this.batch = undefined;\n this.fields = [];\n makeAutoObservable(this);\n }\n\n load(batch: BatchDTO, fields: FieldDTO[]) {\n this.batch = batch;\n this.fields = fields;\n }\n\n get vm() {\n const operations = this.getOperations();\n const canAddOperation = operations[operations.length - 1].fieldOptions.length > 1 ?? false;\n\n return {\n invalidFields: this.invalidFields,\n canAddOperation,\n data: {\n operations\n }\n };\n }\n\n addOperation(): void {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations.push({\n field: \"\",\n operator: \"\",\n value: undefined\n });\n }\n\n deleteOperation(operationIndex: number): void {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations = this.batch.operations.filter(\n (_, index) => index !== operationIndex\n );\n\n // Make sure we always have at least 1 operation!\n if (this.batch.operations.length === 0) {\n this.addOperation();\n }\n }\n\n setOperationFieldData(batchIndex: number, data: string) {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations = [\n ...this.batch.operations.slice(0, batchIndex),\n {\n field: data,\n operator: \"\",\n value: undefined\n },\n ...this.batch.operations.slice(batchIndex + 1)\n ];\n }\n\n setBatch(data: BatchEditorFormData): void {\n if (!this.batch) {\n return;\n }\n\n this.batch = {\n ...this.batch,\n operations: data.operations.map(operation => ({\n field: operation.field,\n operator: operation.operator,\n value: operation.value\n }))\n };\n\n if (this.formWasSubmitted) {\n this.validateBatch(this.batch);\n }\n }\n\n onApply(\n onSuccess?: (batch: BatchDTO) => void,\n onError?: (\n batch: BatchDTO,\n invalidFields: BatchEditorDialogViewModel[\"invalidFields\"]\n ) => void\n ) {\n if (!this.batch) {\n return;\n }\n\n const result = this.validateBatch(this.batch);\n if (result.success) {\n onSuccess && onSuccess(this.batch);\n } else {\n onError && onError(this.batch, this.invalidFields);\n }\n }\n\n private getOperations = () => {\n return (\n this.batch?.operations.map((operation: OperationDTO, operationIndex) => {\n const fieldOptions = this.getFieldOptions(operation.field);\n const selectedField = fieldOptions.find(field => field.value === operation.field);\n const operatorOptions = selectedField?.operators || [];\n\n return {\n title:\n this.getOperationTitle(operation.field, operation.operator) ??\n `Operation #${operationIndex + 1}`,\n open: true,\n field: operation.field,\n operator: operation.operator,\n value: operation.value,\n canDelete: operationIndex !== 0,\n fieldOptions,\n selectedField,\n operatorOptions\n };\n }) || []\n );\n };\n\n private getOperationTitle(inputField?: string, inputOperation?: string) {\n if (!inputField || !inputOperation) {\n return undefined;\n }\n\n const field = this.fields.find(field => field.value === inputField);\n\n if (!field) {\n return undefined;\n }\n\n const operator = field.operators.find(operator => operator.value === inputOperation);\n\n if (!operator) {\n return undefined;\n }\n\n return `${operator.label} for field \"${field.label}\"`;\n }\n\n private getFieldOptions(currentFieldId = \"\") {\n if (!this.batch) {\n return [];\n }\n\n const existings = this.batch.operations\n .filter(operation => operation.field !== currentFieldId)\n .map(operation => operation.field);\n\n return this.fields.filter(field => !existings.includes(field.value));\n }\n\n private validateBatch(data: BatchDTO) {\n this.formWasSubmitted = true;\n const validation = Batch.validate(data);\n\n if (!validation.success) {\n this.invalidFields = validation.error.issues.reduce((acc, issue) => {\n return {\n ...acc,\n [issue.path.join(\".\")]: issue.message\n };\n }, {});\n } else {\n this.invalidFields = {};\n }\n\n return validation;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","_domain","BatchEditorDialogPresenter","exports","_this","_classCallCheck2","default","_defineProperty2","batch","operations","map","operation","operationIndex","fieldOptions","getFieldOptions","field","selectedField","find","value","operatorOptions","operators","title","getOperationTitle","operator","concat","open","canDelete","undefined","fields","makeAutoObservable","_createClass2","key","load","get","getOperations","canAddOperation","length","invalidFields","data","addOperation","push","deleteOperation","filter","_","index","setOperationFieldData","batchIndex","_toConsumableArray2","slice","setBatch","_objectSpread3","formWasSubmitted","validateBatch","onApply","onSuccess","onError","result","success","inputField","inputOperation","label","currentFieldId","arguments","existings","includes","validation","Batch","validate","error","issues","reduce","acc","issue","path","join","message"],"sources":["BatchEditorDialogPresenter.tsx"],"sourcesContent":["import { makeAutoObservable } from \"mobx\";\n\nimport {\n Batch,\n BatchDTO,\n FieldDTO,\n OperationDTO,\n OperatorDTO\n} from \"~/components/BulkActions/ActionEdit/domain\";\nimport type { FormInvalidFields } from \"@webiny/form\";\n\nexport interface IBatchEditorDialogPresenter {\n load(batch: BatchDTO, fields: FieldDTO[]): void;\n addOperation(): void;\n deleteOperation(operationIndex: number): void;\n setOperationFieldData(operationIndex: number, data: string): void;\n setBatch(data: any): void;\n onApply(onSuccess?: (batch: BatchDTO) => void, onError?: (batch: BatchDTO) => void): void;\n get vm(): BatchEditorDialogViewModel;\n}\n\nexport interface BatchEditorDialogViewModel {\n invalidFields: FormInvalidFields;\n canAddOperation: boolean;\n data: BatchEditorFormData;\n}\n\nexport interface BatchEditorFormData {\n operations: OperationFormData[];\n}\n\nexport type OperationFormData = OperationDTO & {\n canDelete: boolean;\n title: string;\n open: boolean;\n fieldOptions: FieldDTO[];\n operatorOptions: OperatorDTO[];\n selectedField?: FieldDTO;\n};\n\nexport class BatchEditorDialogPresenter implements IBatchEditorDialogPresenter {\n private batch: BatchDTO | undefined;\n private fields: FieldDTO[];\n private invalidFields: BatchEditorDialogViewModel[\"invalidFields\"] = {};\n private formWasSubmitted = false;\n\n constructor() {\n this.batch = undefined;\n this.fields = [];\n makeAutoObservable(this);\n }\n\n load(batch: BatchDTO, fields: FieldDTO[]) {\n this.batch = batch;\n this.fields = fields;\n }\n\n get vm() {\n const operations = this.getOperations();\n const canAddOperation = operations[operations.length - 1].fieldOptions.length > 1 ?? false;\n\n return {\n invalidFields: this.invalidFields,\n canAddOperation,\n data: {\n operations\n }\n };\n }\n\n addOperation(): void {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations.push({\n field: \"\",\n operator: \"\",\n value: undefined\n });\n }\n\n deleteOperation(operationIndex: number): void {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations = this.batch.operations.filter(\n (_, index) => index !== operationIndex\n );\n\n // Make sure we always have at least 1 operation!\n if (this.batch.operations.length === 0) {\n this.addOperation();\n }\n }\n\n setOperationFieldData(batchIndex: number, data: string) {\n if (!this.batch) {\n return;\n }\n\n this.batch.operations = [\n ...this.batch.operations.slice(0, batchIndex),\n {\n field: data,\n operator: \"\",\n value: undefined\n },\n ...this.batch.operations.slice(batchIndex + 1)\n ];\n }\n\n setBatch(data: BatchEditorFormData): void {\n if (!this.batch) {\n return;\n }\n\n this.batch = {\n ...this.batch,\n operations: data.operations.map(operation => ({\n field: operation.field,\n operator: operation.operator,\n value: operation.value\n }))\n };\n\n if (this.formWasSubmitted) {\n this.validateBatch(this.batch);\n }\n }\n\n onApply(\n onSuccess?: (batch: BatchDTO) => void,\n onError?: (\n batch: BatchDTO,\n invalidFields: BatchEditorDialogViewModel[\"invalidFields\"]\n ) => void\n ) {\n if (!this.batch) {\n return;\n }\n\n const result = this.validateBatch(this.batch);\n if (result.success) {\n onSuccess && onSuccess(this.batch);\n } else {\n onError && onError(this.batch, this.invalidFields);\n }\n }\n\n private getOperations = () => {\n return (\n this.batch?.operations.map((operation: OperationDTO, operationIndex) => {\n const fieldOptions = this.getFieldOptions(operation.field);\n const selectedField = fieldOptions.find(field => field.value === operation.field);\n const operatorOptions = selectedField?.operators || [];\n\n return {\n title:\n this.getOperationTitle(operation.field, operation.operator) ??\n `Operation #${operationIndex + 1}`,\n open: true,\n field: operation.field,\n operator: operation.operator,\n value: operation.value,\n canDelete: operationIndex !== 0,\n fieldOptions,\n selectedField,\n operatorOptions\n };\n }) || []\n );\n };\n\n private getOperationTitle(inputField?: string, inputOperation?: string) {\n if (!inputField || !inputOperation) {\n return undefined;\n }\n\n const field = this.fields.find(field => field.value === inputField);\n\n if (!field) {\n return undefined;\n }\n\n const operator = field.operators.find(operator => operator.value === inputOperation);\n\n if (!operator) {\n return undefined;\n }\n\n return `${operator.label} for field \"${field.label}\"`;\n }\n\n private getFieldOptions(currentFieldId = \"\") {\n if (!this.batch) {\n return [];\n }\n\n const existings = this.batch.operations\n .filter(operation => operation.field !== currentFieldId)\n .map(operation => operation.field);\n\n return this.fields.filter(field => !existings.includes(field.value));\n }\n\n private validateBatch(data: BatchDTO) {\n this.formWasSubmitted = true;\n const validation = Batch.validate(data);\n\n if (!validation.success) {\n this.invalidFields = validation.error.issues.reduce((acc, issue) => {\n return {\n ...acc,\n [issue.path.join(\".\")]: issue.message\n };\n }, {});\n } else {\n this.invalidFields = {};\n }\n\n return validation;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -59,7 +59,7 @@ var FileListWrapper = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_EN
59
59
  } : {
60
60
  name: "1wp8fn",
61
61
  styles: "z-index:60;height:calc(100vh - 94px);position:relative;.mdc-data-table{display:inline-table;}",
62
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpbGVNYW5hZ2VyVmlldy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEN3QiIsImZpbGUiOiJGaWxlTWFuYWdlclZpZXcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRmlsZXMsIHsgRmlsZXNSZW5kZXJDaGlsZHJlbiB9IGZyb20gXCJyZWFjdC1idXR0ZXJmaWxlc1wiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcImxvZGFzaC9kZWJvdW5jZVwiO1xuaW1wb3J0IG9taXQgZnJvbSBcImxvZGFzaC9vbWl0XCI7XG5pbXBvcnQgeyBwb3NpdGlvblZhbHVlcyB9IGZyb20gXCJyZWFjdC1jdXN0b20tc2Nyb2xsYmFyc1wiO1xuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHsgdXNlSG90a2V5cyB9IGZyb20gXCJyZWFjdC1ob3RrZXl6XCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0LWxpdGVcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFVwbG9hZEljb24gfSBmcm9tIFwiQG1hdGVyaWFsLWRlc2lnbi1pY29ucy9zdmcvZmlsbGVkL2Nsb3VkX3VwbG9hZC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIEFkZEljb24gfSBmcm9tIFwiQG1hdGVyaWFsLWRlc2lnbi1pY29ucy9zdmcvZmlsbGVkL2FkZC5zdmdcIjtcbmltcG9ydCB7IGkxOG4gfSBmcm9tIFwiQHdlYmlueS9hcHAvaTE4blwiO1xuaW1wb3J0IHsgdXNlQ3JlYXRlRGlhbG9nIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFjb1wiO1xuaW1wb3J0IHsgT3ZlcmxheUxheW91dCwgdXNlU25hY2tiYXIgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcbmltcG9ydCB7IExlZnRQYW5lbCwgUmlnaHRQYW5lbCwgU3BsaXRWaWV3IH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluL2NvbXBvbmVudHMvU3BsaXRWaWV3XCI7XG5pbXBvcnQgeyB1c2VJMThOIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWkxOG5cIjtcbmltcG9ydCB7IHVzZVRlbmFuY3kgfSBmcm9tIFwiQHdlYmlueS9hcHAtdGVuYW5jeVwiO1xuaW1wb3J0IHsgQnV0dG9uSWNvbiwgQnV0dG9uUHJpbWFyeSwgQnV0dG9uUHJvcHMsIEJ1dHRvblNlY29uZGFyeSB9IGZyb20gXCJAd2ViaW55L3VpL0J1dHRvblwiO1xuaW1wb3J0IHsgU29ydGluZyB9IGZyb20gXCJAd2ViaW55L3VpL0RhdGFUYWJsZVwiO1xuaW1wb3J0IHsgU2Nyb2xsYmFyIH0gZnJvbSBcIkB3ZWJpbnkvdWkvU2Nyb2xsYmFyXCI7XG5pbXBvcnQgeyB1c2VGaWxlTWFuYWdlclZpZXcgfSBmcm9tIFwifi9tb2R1bGVzL0ZpbGVNYW5hZ2VyUmVuZGVyZXIvRmlsZU1hbmFnZXJWaWV3UHJvdmlkZXJcIjtcbmltcG9ydCB7IG91dHB1dEZpbGVTZWxlY3Rpb25FcnJvciB9IGZyb20gXCIuL291dHB1dEZpbGVTZWxlY3Rpb25FcnJvclwiO1xuaW1wb3J0IHsgTGVmdFNpZGViYXIgfSBmcm9tIFwiLi9MZWZ0U2lkZWJhclwiO1xuaW1wb3J0IHsgdXNlRmlsZU1hbmFnZXJBcGksIHVzZUZpbGVNYW5hZ2VyVmlld0NvbmZpZyB9IGZyb20gXCJ+L2luZGV4XCI7XG5pbXBvcnQgeyBGaWxlSXRlbSB9IGZyb20gXCJAd2ViaW55L2FwcC1hZG1pbi90eXBlc1wiO1xuaW1wb3J0IHsgQm90dG9tSW5mb0JhciB9IGZyb20gXCJ+L2NvbXBvbmVudHMvQm90dG9tSW5mb0JhclwiO1xuaW1wb3J0IHsgQnVsa0FjdGlvbnMgfSBmcm9tIFwifi9jb21wb25lbnRzL0J1bGtBY3Rpb25zXCI7XG5pbXBvcnQgeyBEcm9wRmlsZXNIZXJlIH0gZnJvbSBcIn4vY29tcG9uZW50cy9Ecm9wRmlsZXNIZXJlXCI7XG5pbXBvcnQgeyBFbXB0eSB9IGZyb20gXCJ+L2NvbXBvbmVudHMvRW1wdHlcIjtcbmltcG9ydCB7IEZpbGVEZXRhaWxzIH0gZnJvbSBcIn4vY29tcG9uZW50cy9GaWxlRGV0YWlsc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJ+L2NvbXBvbmVudHMvR3JpZFwiO1xuaW1wb3J0IHsgTGF5b3V0U3dpdGNoIH0gZnJvbSBcIn4vY29tcG9uZW50cy9MYXlvdXRTd2l0Y2hcIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVByb3BzIH0gZnJvbSBcIn4vY29tcG9uZW50cy9UYWJsZVwiO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tIFwifi9jb21wb25lbnRzL1RpdGxlXCI7XG5pbXBvcnQgeyBVcGxvYWRTdGF0dXMgfSBmcm9tIFwifi9jb21wb25lbnRzL1VwbG9hZFN0YXR1c1wiO1xuaW1wb3J0IHsgQmF0Y2hGaWxlVXBsb2FkZXIgfSBmcm9tIFwifi9CYXRjaEZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IHsgU2VhcmNoV2lkZ2V0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9TZWFyY2hXaWRnZXRcIjtcbmltcG9ydCB7IEZpbHRlcnMgfSBmcm9tIFwiLi9jb21wb25lbnRzL0ZpbHRlcnNcIjtcbmltcG9ydCB7IFRhZ3NMaXN0IH0gZnJvbSBcIn4vbW9kdWxlcy9GaWxlTWFuYWdlclJlbmRlcmVyL0ZpbGVNYW5hZ2VyVmlldy9jb21wb25lbnRzL1RhZ3NMaXN0XCI7XG5pbXBvcnQgeyBMaXN0RmlsZXNTb3J0LCBMaXN0RmlsZXNTb3J0SXRlbSB9IGZyb20gXCJ+L21vZHVsZXMvRmlsZU1hbmFnZXJBcGlQcm92aWRlci9ncmFwaHFsXCI7XG5pbXBvcnQgeyBUYWJsZUl0ZW0gfSBmcm9tIFwifi90eXBlc1wiO1xuXG5jb25zdCB0ID0gaTE4bi5ucyhcImFwcC1hZG1pbi9maWxlLW1hbmFnZXIvZmlsZS1tYW5hZ2VyLXZpZXdcIik7XG5cbmNvbnN0IEZpbGVMaXN0V3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgekluZGV4OiA2MCxcbiAgICBoZWlnaHQ6IFwiY2FsYygxMDB2aCAtIDk0cHgpXCIsXG4gICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICBcIi5tZGMtZGF0YS10YWJsZVwiOiB7XG4gICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLXRhYmxlXCJcbiAgICB9XG59KTtcblxudHlwZSBCcm93c2VGaWxlc0hhbmRsZXIgPSB7XG4gICAgYnJvd3NlRmlsZXM6IEZpbGVzUmVuZGVyQ2hpbGRyZW5bXCJicm93c2VGaWxlc1wiXTtcbn07XG5cbnR5cGUgR2V0RmlsZVVwbG9hZEVycm9yTWVzc2FnZVByb3BzID1cbiAgICB8IHN0cmluZ1xuICAgIHwge1xuICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIH07XG5cbmNvbnN0IGNyZWF0ZVNvcnQgPSAoc29ydGluZz86IFNvcnRpbmcpOiBMaXN0RmlsZXNTb3J0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoIXNvcnRpbmc/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gc29ydGluZy5yZWR1Y2U8TGlzdEZpbGVzU29ydD4oKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvcnQgPSBgJHtpdGVtLmlkfV8ke2l0ZW0uZGVzYyA/IFwiREVTQ1wiIDogXCJBU0NcIn1gIGFzIExpc3RGaWxlc1NvcnRJdGVtO1xuICAgICAgICBpZiAoaXRlbXMuaW5jbHVkZXMoc29ydCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICBpdGVtcy5wdXNoKHNvcnQpO1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10pO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBgbGF5b3V0SWRgIHRvIGJlIHVzZWQgd2l0aCB0aGUgYDxTcGxpdFZpZXcgLz5gIGNvbXBvbmVudC5cbiAqIFRoZSBgbGF5b3V0SWRgIGlzIGVzc2VudGlhbCBmb3Igc2F2aW5nIHVzZXIgcHJlZmVyZW5jZXMgaW50byBsb2NhbFN0b3JhZ2UuXG4gKiBUaGUgZ2VuZXJhdGlvbiBvZiB0aGUgYGxheW91dElkYCB0YWtlcyBpbnRvIGFjY291bnQgdGhlIGN1cnJlbnQgYHRlbmFudElkYCwgYGxvY2FsZUNvZGVgLCBhbmQgdGhlIHByb3ZpZGVkIGBhcHBsaWNhdGlvbklkYC5cbiAqXG4gKiAgVE9ETzogZXhwb3J0IHRoZSB1c2VMYXlvdXRJZCBmcm9tIGEgZ2VuZXJpYyB1c2UgcGFja2FnZSwgc3VjaCBhcyBhcHAtYWRtaW4uIEF0IHRoZSBtb21lbnQgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2Ugb2YgY2lyY3VsYXIgZGVwZW5kZW5jeSBpc3N1ZXMuXG4gKi9cbmNvbnN0IHVzZUxheW91dElkID0gKGFwcGxpY2F0aW9uSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHsgdGVuYW50IH0gPSB1c2VUZW5hbmN5KCk7XG4gICAgY29uc3QgeyBnZXRDdXJyZW50TG9jYWxlIH0gPSB1c2VJMThOKCk7XG4gICAgY29uc3QgbG9jYWxlQ29kZSA9IGdldEN1cnJlbnRMb2NhbGUoXCJjb250ZW50XCIpO1xuXG4gICAgaWYgKCF0ZW5hbnQgfHwgIWxvY2FsZUNvZGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiTWlzc2luZyB0ZW5hbnQgb3IgbG9jYWxlQ29kZSB3aGlsZSBjcmVhdGluZyBsYXlvdXRJZFwiKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBUIyR7dGVuYW50fSNMIyR7bG9jYWxlQ29kZX0jQSMke2FwcGxpY2F0aW9uSWR9YDtcbn07XG5cbmNvbnN0IEZpbGVNYW5hZ2VyVmlldyA9ICgpID0+IHtcbiAgICBjb25zdCB2aWV3ID0gdXNlRmlsZU1hbmFnZXJWaWV3KCk7XG4gICAgY29uc3QgZmlsZU1hbmFnZXIgPSB1c2VGaWxlTWFuYWdlckFwaSgpO1xuICAgIGNvbnN0IHsgYnJvd3NlciB9ID0gdXNlRmlsZU1hbmFnZXJWaWV3Q29uZmlnKCk7XG4gICAgY29uc3QgeyBzaG93U25hY2tiYXIgfSA9IHVzZVNuYWNrYmFyKCk7XG4gICAgY29uc3QgeyBzaG93RGlhbG9nOiBzaG93Q3JlYXRlRm9sZGVyRGlhbG9nIH0gPSB1c2VDcmVhdGVEaWFsb2coKTtcbiAgICBjb25zdCBbZHJhd2VyTG9hZGluZywgc2V0RHJhd2VyTG9hZGluZ10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIGNvbnN0IHVwbG9hZGVyID0gdXNlTWVtbzxCYXRjaEZpbGVVcGxvYWRlcj4oXG4gICAgICAgICgpID0+IG5ldyBCYXRjaEZpbGVVcGxvYWRlcih2aWV3LnVwbG9hZEZpbGUpLFxuICAgICAgICBbdmlldy5mb2xkZXJJZF1cbiAgICApO1xuXG4gICAgY29uc3QgW3RhYmxlU29ydGluZywgc2V0VGFibGVTb3J0aW5nXSA9IHVzZVN0YXRlPFNvcnRpbmc+KFtdKTtcbiAgICBjb25zdCBbY3VycmVudEZpbGUsIHNldEN1cnJlbnRGaWxlXSA9IHVzZVN0YXRlPEZpbGVJdGVtPigpO1xuICAgIGNvbnN0IGxheW91dElkID0gdXNlTGF5b3V0SWQoXCJmbTpmaWxlXCIpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmV0Y2hGaWxlRGV0YWlscyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh2aWV3LnNob3dpbmdGaWxlRGV0YWlscykge1xuICAgICAgICAgICAgICAgIHNldERyYXdlckxvYWRpbmcoXCJMb2FkaW5nIGZpbGUgZGV0YWlscy4uLlwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgdmlldy5nZXRGaWxlKHZpZXcuc2hvd2luZ0ZpbGVEZXRhaWxzKTtcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50RmlsZShmaWxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudEZpbGUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldERyYXdlckxvYWRpbmcobnVsbCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gY2FsbCB0aGUgZnVuY3Rpb25cbiAgICAgICAgZmV0Y2hGaWxlRGV0YWlscygpO1xuICAgIH0sIFt2aWV3LnNob3dpbmdGaWxlRGV0YWlsc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0YWJsZVNvcnRpbmc/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNvcnQgPSBjcmVhdGVTb3J0KHRhYmxlU29ydGluZyk7XG4gICAgICAgIGlmICghc29ydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZpZXcuc2V0TGlzdFNvcnQoc29ydCk7XG4gICAgfSwgW3RhYmxlU29ydGluZ10pO1xuXG4gICAgY29uc3QgZ2V0RmlsZVVwbG9hZEVycm9yTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChlOiBHZXRGaWxlVXBsb2FkRXJyb3JNZXNzYWdlUHJvcHMpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IGUubWF0Y2goL01lc3NhZ2U+KC4qPyk8XFwvTWVzc2FnZS8pO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgbWVzc2FnZV0gPSBtYXRjaDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGUubWVzc2FnZTtcbiAgICB9LCBbXSk7XG5cbiAgICB1c2VIb3RrZXlzKHtcbiAgICAgICAgekluZGV4OiA1MCxcbiAgICAgICAga2V5czoge1xuICAgICAgICAgICAgZXNjOiB2aWV3Lm9uQ2xvc2VcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdXBsb2FkRmlsZXMgPSBhc3luYyAoZmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgICAgICB1cGxvYWRlci5hZGRGaWxlcyhmaWxlcyk7XG5cbiAgICAgICAgdXBsb2FkZXIub25VcGxvYWRGaW5pc2hlZCgoeyB1cGxvYWRlZCwgZXJyb3JzIH0pID0+IHtcbiAgICAgICAgICAgIHVwbG9hZGVyLnJlc2V0KCk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNob3dTbmFja2JhcihcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0YE9uZSBvciBtb3JlIGZpbGVzIHdlcmUgbm90IHVwbG9hZGVkIHN1Y2Nlc3NmdWxseTpgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPG9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvcnMubWFwKCh7IGZpbGUsIGUgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtmaWxlLm5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57ZmlsZS5uYW1lfTwvc3Ryb25nPjoge2dldEZpbGVVcGxvYWRFcnJvck1lc3NhZ2UoZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L29sPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2hvd1NuYWNrYmFyKHRgRmlsZSB1cGxvYWQgY29tcGxldGUuYCk7XG5cbiAgICAgICAgICAgIHZpZXcub25VcGxvYWRDb21wbGV0aW9uKHVwbG9hZGVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlclVwbG9hZEZpbGVBY3Rpb24gPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKHsgYnJvd3NlRmlsZXMgfTogQnJvd3NlRmlsZXNIYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZpbGVNYW5hZ2VyLmNhbkNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QnV0dG9uUHJpbWFyeVxuICAgICAgICAgICAgICAgICAgICBmbGF0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICBzbWFsbD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YnJvd3NlRmlsZXMgYXMgQnV0dG9uUHJvcHNbXCJvbkNsaWNrXCJdfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbkljb24gaWNvbj17PFVwbG9hZEljb24gLz59IC8+XG4gICAgICAgICAgICAgICAgICAgIHt0YFVwbG9hZC4uLmB9XG4gICAgICAgICAgICAgICAgPC9CdXR0b25QcmltYXJ5PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgW2ZpbGVNYW5hZ2VyLmNhbkNyZWF0ZV1cbiAgICApO1xuXG4gICAgY29uc3QgZmlsZXNCZWluZ1VwbG9hZGVkID0gdXBsb2FkZXIuZ2V0Sm9icygpLmxlbmd0aDtcbiAgICBjb25zdCBwcm9ncmVzcyA9IHVwbG9hZGVyLnByb2dyZXNzO1xuXG4gICAgY29uc3QgcmVuZGVyTGlzdCA9IChicm93c2VGaWxlczogRmlsZXNSZW5kZXJDaGlsZHJlbltcImJyb3dzZUZpbGVzXCJdKSA9PiB7XG4gICAgICAgIGlmICghdmlldy5pc0xpc3RMb2FkaW5nICYmIHZpZXcuaXNTZWFyY2ggJiYgdmlldy5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiA8RW1wdHkgaXNTZWFyY2hSZXN1bHQ9e3RydWV9IGJyb3dzZUZpbGVzPXticm93c2VGaWxlc30gLz47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZpZXcuaXNMaXN0TG9hZGluZyAmJiB2aWV3LmZpbGVzLmxlbmd0aCA9PT0gMCAmJiB2aWV3LmZvbGRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gPEVtcHR5IGlzU2VhcmNoUmVzdWx0PXtmYWxzZX0gYnJvd3NlRmlsZXM9e2Jyb3dzZUZpbGVzfSAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2aWV3Lmxpc3RUYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgZ2V0U2VsZWN0YWJsZVJvdyA9IChyb3dzOiBUYWJsZUl0ZW1bXSkgPT5cbiAgICAgICAgICAgICAgICByb3dzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocm93ID0+IHJvdy4kdHlwZSA9PT0gXCJSRUNPUkRcIilcbiAgICAgICAgICAgICAgICAgICAgLm1hcChyb3cgPT4gb21pdChyb3csIFtcIiR0eXBlXCIsIFwiJHNlbGVjdGFibGVcIl0pIGFzIEZpbGVJdGVtKTtcblxuICAgICAgICAgICAgY29uc3Qgb25TZWxlY3RSb3c6IFRhYmxlUHJvcHNbXCJvblNlbGVjdFJvd1wiXSA9IHZpZXcuaGFzT25TZWxlY3RDYWxsYmFja1xuICAgICAgICAgICAgICAgID8gcm93cyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBnZXRTZWxlY3RhYmxlUm93KHJvd3MpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXcubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5zZXRTZWxlY3RlZChmaWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5vbkNoYW5nZShmaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogcm93cyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBnZXRTZWxlY3RhYmxlUm93KHJvd3MpO1xuICAgICAgICAgICAgICAgICAgICAgIHZpZXcuc2V0U2VsZWN0ZWQoZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3Qgb25Ub2dnbGVSb3c6IFRhYmxlUHJvcHNbXCJvblRvZ2dsZVJvd1wiXSA9IHZpZXcuaGFzT25TZWxlY3RDYWxsYmFja1xuICAgICAgICAgICAgICAgID8gcm93ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IGdldFNlbGVjdGFibGVSb3coW3Jvd10pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXcubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy50b2dnbGVTZWxlY3RlZChmaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5vbkNoYW5nZShmaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogcm93ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IGdldFNlbGVjdGFibGVSb3coW3Jvd10pO1xuICAgICAgICAgICAgICAgICAgICAgIHZpZXcudG9nZ2xlU2VsZWN0ZWQoZmlsZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VGFibGVcbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RSb3c9e29uU2VsZWN0Um93fVxuICAgICAgICAgICAgICAgICAgICBvblRvZ2dsZVJvdz17b25Ub2dnbGVSb3d9XG4gICAgICAgICAgICAgICAgICAgIHNvcnRpbmc9e3RhYmxlU29ydGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRUYWJsZVNvcnRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBmb2xkZXJzPXt2aWV3LmZvbGRlcnN9XG4gICAgICAgICAgICAgICAgcmVjb3Jkcz17dmlldy5maWxlc31cbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt2aWV3LmlzTGlzdExvYWRpbmd9XG4gICAgICAgICAgICAgICAgb25Gb2xkZXJDbGljaz17dmlldy5zZXRGb2xkZXJJZH1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZD17dmlldy5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBtdWx0aXBsZT17dmlldy5tdWx0aXBsZX1cbiAgICAgICAgICAgICAgICB0b2dnbGVTZWxlY3RlZD17dmlldy50b2dnbGVTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBkZXNlbGVjdEFsbD17dmlldy5kZXNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmlldy5vbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXt2aWV3Lm9uQ2xvc2V9XG4gICAgICAgICAgICAgICAgaGFzT25TZWxlY3RDYWxsYmFjaz17dmlldy5oYXNPblNlbGVjdENhbGxiYWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9hZE1vcmVPblNjcm9sbCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICBkZWJvdW5jZShhc3luYyAoeyBzY3JvbGxGcmFtZSB9OiB7IHNjcm9sbEZyYW1lOiBwb3NpdGlvblZhbHVlcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsRnJhbWUudG9wID4gMC44KSB7XG4gICAgICAgICAgICAgICAgdmlldy5sb2FkTW9yZUZpbGVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDIwMCksXG4gICAgICAgIFt2aWV3Lm1ldGEsIHZpZXcubG9hZE1vcmVGaWxlc11cbiAgICApO1xuXG4gICAgY29uc3Qgb25DcmVhdGVGb2xkZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNob3dDcmVhdGVGb2xkZXJEaWFsb2coeyBjdXJyZW50UGFyZW50SWQ6IHZpZXcuZm9sZGVySWQgfSk7XG4gICAgfSwgW3ZpZXcuZm9sZGVySWRdKTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpbGUgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgYXN5bmMgKGRhdGE6IEZpbGVJdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGlkLCAuLi5maWxlRGF0YSB9ID0gZGF0YTtcbiAgICAgICAgICAgIHNldERyYXdlckxvYWRpbmcoXCJTYXZpbmcgZmlsZSBjaGFuZ2VzLi4uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdmlldy51cGRhdGVGaWxlKGlkLCBmaWxlRGF0YSk7XG4gICAgICAgICAgICBzZXREcmF3ZXJMb2FkaW5nKG51bGwpO1xuICAgICAgICAgICAgc2hvd1NuYWNrYmFyKFwiRmlsZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseSFcIik7XG4gICAgICAgICAgICB2aWV3LmhpZGVGaWxlRGV0YWlscygpO1xuICAgICAgICB9LFxuICAgICAgICBbdmlldy51cGRhdGVGaWxlXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPEZpbGVzXG4gICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICBtYXhTaXplPXt2aWV3LnNldHRpbmdzID8gdmlldy5zZXR0aW5ncy51cGxvYWRNYXhGaWxlU2l6ZSArIFwiYlwiIDogXCIxVEJcIn1cbiAgICAgICAgICAgICAgICBtdWx0aXBsZU1heFNpemU9e1wiMVRCXCJ9XG4gICAgICAgICAgICAgICAgYWNjZXB0PXt2aWV3LmFjY2VwdH1cbiAgICAgICAgICAgICAgICBvblN1Y2Nlc3M9e2ZpbGVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXNUb1VwbG9hZCA9IGZpbGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZpbGUgPT4gZmlsZS5zcmMuZmlsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgRmlsZVtdO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRGaWxlcyhmaWxlc1RvVXBsb2FkKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ycyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBvdXRwdXRGaWxlU2VsZWN0aW9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NuYWNrYmFyKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyh7IGdldERyb3Bab25lUHJvcHMsIGJyb3dzZUZpbGVzIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgPE92ZXJsYXlMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhpdGVkPXt2aWV3Lm9uQ2xvc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXJMZWZ0PXs8VGl0bGUgdGl0bGU9e3ZpZXcubGlzdFRpdGxlfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhck1pZGRsZT17PFNlYXJjaFdpZGdldCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhclJpZ2h0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmlldy5oYXNPblNlbGVjdENhbGxiYWNrICYmIHZpZXcuc2VsZWN0ZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25QcmltYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB2aWV3Lm9uQ2hhbmdlKHZpZXcuc2VsZWN0ZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0YFNlbGVjdGB9IHt2aWV3Lm11bHRpcGxlICYmIGAoJHt2aWV3LnNlbGVjdGVkLmxlbmd0aH0pYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uUHJpbWFyeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclVwbG9hZEZpbGVBY3Rpb24oeyBicm93c2VGaWxlcyB9IGFzIEJyb3dzZUZpbGVzSGFuZGxlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e1wiZmlsZS1tYW5hZ2VyLmNyZWF0ZS1mb2xkZXItYnV0dG9uXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNyZWF0ZUZvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luOiBcIjAgOHB4XCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbkljb24gaWNvbj17PEFkZEljb24gLz59IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGBOZXcgRm9sZGVyYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b25TZWNvbmRhcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRTd2l0Y2ggLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZURldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZHJhd2VyTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT17Y3VycmVudEZpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW49e0Jvb2xlYW4odmlldy5zaG93aW5nRmlsZURldGFpbHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXt2aWV3LmhpZGVGaWxlRGV0YWlsc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TYXZlPXt1cGRhdGVGaWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNwbGl0VmlldyBsYXlvdXRJZD17bGF5b3V0SWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdFBhbmVsIHNwYW49ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnRTaWRlYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZvbGRlcj17dmlldy5mb2xkZXJJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvbGRlckNsaWNrPXt2aWV3LnNldEZvbGRlcklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHticm93c2VyLmZpbHRlckJ5VGFncyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhZ3NMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPXt2aWV3LnRhZ3MubG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhZ3M9e3ZpZXcudGFncy5hY3RpdmVUYWdzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncz17dmlldy50YWdzLmFsbFRhZ3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFjdGl2YXRlZFRhZ3NDaGFuZ2U9e3ZpZXcudGFncy5zZXRBY3RpdmVUYWdzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MZWZ0U2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MZWZ0UGFuZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodFBhbmVsIHNwYW49ezEwfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlTGlzdFdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RHJvcFpvbmVQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRHJhZ092ZXI6ICgpID0+IHZpZXcuc2V0RHJhZ2dpbmcodHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRHJhZ0xlYXZlOiAoKSA9PiB2aWV3LnNldERyYWdnaW5nKGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ecm9wOiAoKSA9PiB2aWV3LnNldERyYWdnaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtcImZtLWxpc3Qtd3JhcHBlclwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2aWV3LmRyYWdnaW5nICYmIDxEcm9wRmlsZXNIZXJlIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdWxrQWN0aW9ucyAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJzIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjcm9sbEZyYW1lPXtzY3JvbGxGcmFtZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1vcmVPblNjcm9sbCh7IHNjcm9sbEZyYW1lIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJMaXN0KGJyb3dzZUZpbGVzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Njcm9sbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tSW5mb0JhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9e3ZpZXcuYWNjZXB0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0aW5nPXt2aWV3LmlzTGlzdExvYWRpbmdNb3JlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVwbG9hZFN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZkZpbGVzPXtmaWxlc0JlaW5nVXBsb2FkZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzPXtwcm9ncmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlTGlzdFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmlnaHRQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NwbGl0Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICA8L092ZXJsYXlMYXlvdXQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRmlsZXM+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBvYnNlcnZlcihGaWxlTWFuYWdlclZpZXcpO1xuIl19 */",
62
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkZpbGVNYW5hZ2VyVmlldy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEN3QiIsImZpbGUiOiJGaWxlTWFuYWdlclZpZXcudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRmlsZXMsIHsgRmlsZXNSZW5kZXJDaGlsZHJlbiB9IGZyb20gXCJyZWFjdC1idXR0ZXJmaWxlc1wiO1xuaW1wb3J0IHN0eWxlZCBmcm9tIFwiQGVtb3Rpb24vc3R5bGVkXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcImxvZGFzaC9kZWJvdW5jZVwiO1xuaW1wb3J0IG9taXQgZnJvbSBcImxvZGFzaC9vbWl0XCI7XG5pbXBvcnQgeyBwb3NpdGlvblZhbHVlcyB9IGZyb20gXCJyZWFjdC1jdXN0b20tc2Nyb2xsYmFyc1wiO1xuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHsgdXNlSG90a2V5cyB9IGZyb20gXCJyZWFjdC1ob3RrZXl6XCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0LWxpdGVcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIFVwbG9hZEljb24gfSBmcm9tIFwiQG1hdGVyaWFsLWRlc2lnbi1pY29ucy9zdmcvZmlsbGVkL2Nsb3VkX3VwbG9hZC5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIEFkZEljb24gfSBmcm9tIFwiQG1hdGVyaWFsLWRlc2lnbi1pY29ucy9zdmcvZmlsbGVkL2FkZC5zdmdcIjtcbmltcG9ydCB7IGkxOG4gfSBmcm9tIFwiQHdlYmlueS9hcHAvaTE4blwiO1xuaW1wb3J0IHsgdXNlQ3JlYXRlRGlhbG9nIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFjb1wiO1xuaW1wb3J0IHsgT3ZlcmxheUxheW91dCwgdXNlU25hY2tiYXIgfSBmcm9tIFwiQHdlYmlueS9hcHAtYWRtaW5cIjtcbmltcG9ydCB7IExlZnRQYW5lbCwgUmlnaHRQYW5lbCwgU3BsaXRWaWV3IH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWFkbWluL2NvbXBvbmVudHMvU3BsaXRWaWV3XCI7XG5pbXBvcnQgeyB1c2VJMThOIH0gZnJvbSBcIkB3ZWJpbnkvYXBwLWkxOG5cIjtcbmltcG9ydCB7IHVzZVRlbmFuY3kgfSBmcm9tIFwiQHdlYmlueS9hcHAtdGVuYW5jeVwiO1xuaW1wb3J0IHsgQnV0dG9uSWNvbiwgQnV0dG9uUHJpbWFyeSwgQnV0dG9uUHJvcHMsIEJ1dHRvblNlY29uZGFyeSB9IGZyb20gXCJAd2ViaW55L3VpL0J1dHRvblwiO1xuaW1wb3J0IHsgU29ydGluZyB9IGZyb20gXCJAd2ViaW55L3VpL0RhdGFUYWJsZVwiO1xuaW1wb3J0IHsgU2Nyb2xsYmFyIH0gZnJvbSBcIkB3ZWJpbnkvdWkvU2Nyb2xsYmFyXCI7XG5pbXBvcnQgeyB1c2VGaWxlTWFuYWdlclZpZXcgfSBmcm9tIFwifi9tb2R1bGVzL0ZpbGVNYW5hZ2VyUmVuZGVyZXIvRmlsZU1hbmFnZXJWaWV3UHJvdmlkZXJcIjtcbmltcG9ydCB7IG91dHB1dEZpbGVTZWxlY3Rpb25FcnJvciB9IGZyb20gXCIuL291dHB1dEZpbGVTZWxlY3Rpb25FcnJvclwiO1xuaW1wb3J0IHsgTGVmdFNpZGViYXIgfSBmcm9tIFwiLi9MZWZ0U2lkZWJhclwiO1xuaW1wb3J0IHsgdXNlRmlsZU1hbmFnZXJBcGksIHVzZUZpbGVNYW5hZ2VyVmlld0NvbmZpZyB9IGZyb20gXCJ+L2luZGV4XCI7XG5pbXBvcnQgeyBGaWxlSXRlbSB9IGZyb20gXCJAd2ViaW55L2FwcC1hZG1pbi90eXBlc1wiO1xuaW1wb3J0IHsgQm90dG9tSW5mb0JhciB9IGZyb20gXCJ+L2NvbXBvbmVudHMvQm90dG9tSW5mb0JhclwiO1xuaW1wb3J0IHsgQnVsa0FjdGlvbnMgfSBmcm9tIFwifi9jb21wb25lbnRzL0J1bGtBY3Rpb25zXCI7XG5pbXBvcnQgeyBEcm9wRmlsZXNIZXJlIH0gZnJvbSBcIn4vY29tcG9uZW50cy9Ecm9wRmlsZXNIZXJlXCI7XG5pbXBvcnQgeyBFbXB0eSB9IGZyb20gXCJ+L2NvbXBvbmVudHMvRW1wdHlcIjtcbmltcG9ydCB7IEZpbGVEZXRhaWxzIH0gZnJvbSBcIn4vY29tcG9uZW50cy9GaWxlRGV0YWlsc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJ+L2NvbXBvbmVudHMvR3JpZFwiO1xuaW1wb3J0IHsgTGF5b3V0U3dpdGNoIH0gZnJvbSBcIn4vY29tcG9uZW50cy9MYXlvdXRTd2l0Y2hcIjtcbmltcG9ydCB7IFRhYmxlLCBUYWJsZVByb3BzIH0gZnJvbSBcIn4vY29tcG9uZW50cy9UYWJsZVwiO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tIFwifi9jb21wb25lbnRzL1RpdGxlXCI7XG5pbXBvcnQgeyBVcGxvYWRTdGF0dXMgfSBmcm9tIFwifi9jb21wb25lbnRzL1VwbG9hZFN0YXR1c1wiO1xuaW1wb3J0IHsgQmF0Y2hGaWxlVXBsb2FkZXIgfSBmcm9tIFwifi9CYXRjaEZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IHsgU2VhcmNoV2lkZ2V0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9TZWFyY2hXaWRnZXRcIjtcbmltcG9ydCB7IEZpbHRlcnMgfSBmcm9tIFwiLi9jb21wb25lbnRzL0ZpbHRlcnNcIjtcbmltcG9ydCB7IFRhZ3NMaXN0IH0gZnJvbSBcIn4vbW9kdWxlcy9GaWxlTWFuYWdlclJlbmRlcmVyL0ZpbGVNYW5hZ2VyVmlldy9jb21wb25lbnRzL1RhZ3NMaXN0XCI7XG5pbXBvcnQgeyBMaXN0RmlsZXNTb3J0LCBMaXN0RmlsZXNTb3J0SXRlbSB9IGZyb20gXCJ+L21vZHVsZXMvRmlsZU1hbmFnZXJBcGlQcm92aWRlci9ncmFwaHFsXCI7XG5pbXBvcnQgeyBUYWJsZUl0ZW0gfSBmcm9tIFwifi90eXBlc1wiO1xuXG5jb25zdCB0ID0gaTE4bi5ucyhcImFwcC1hZG1pbi9maWxlLW1hbmFnZXIvZmlsZS1tYW5hZ2VyLXZpZXdcIik7XG5cbmNvbnN0IEZpbGVMaXN0V3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSh7XG4gICAgekluZGV4OiA2MCxcbiAgICBoZWlnaHQ6IFwiY2FsYygxMDB2aCAtIDk0cHgpXCIsXG4gICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICBcIi5tZGMtZGF0YS10YWJsZVwiOiB7XG4gICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLXRhYmxlXCJcbiAgICB9XG59KTtcblxudHlwZSBCcm93c2VGaWxlc0hhbmRsZXIgPSB7XG4gICAgYnJvd3NlRmlsZXM6IEZpbGVzUmVuZGVyQ2hpbGRyZW5bXCJicm93c2VGaWxlc1wiXTtcbn07XG5cbnR5cGUgR2V0RmlsZVVwbG9hZEVycm9yTWVzc2FnZVByb3BzID1cbiAgICB8IHN0cmluZ1xuICAgIHwge1xuICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICAgIH07XG5cbmNvbnN0IGNyZWF0ZVNvcnQgPSAoc29ydGluZz86IFNvcnRpbmcpOiBMaXN0RmlsZXNTb3J0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoIXNvcnRpbmc/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gc29ydGluZy5yZWR1Y2U8TGlzdEZpbGVzU29ydD4oKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHNvcnQgPSBgJHtpdGVtLmlkfV8ke2l0ZW0uZGVzYyA/IFwiREVTQ1wiIDogXCJBU0NcIn1gIGFzIExpc3RGaWxlc1NvcnRJdGVtO1xuICAgICAgICBpZiAoaXRlbXMuaW5jbHVkZXMoc29ydCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgfVxuICAgICAgICBpdGVtcy5wdXNoKHNvcnQpO1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10pO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBgbGF5b3V0SWRgIHRvIGJlIHVzZWQgd2l0aCB0aGUgYDxTcGxpdFZpZXcgLz5gIGNvbXBvbmVudC5cbiAqIFRoZSBgbGF5b3V0SWRgIGlzIGVzc2VudGlhbCBmb3Igc2F2aW5nIHVzZXIgcHJlZmVyZW5jZXMgaW50byBsb2NhbFN0b3JhZ2UuXG4gKiBUaGUgZ2VuZXJhdGlvbiBvZiB0aGUgYGxheW91dElkYCB0YWtlcyBpbnRvIGFjY291bnQgdGhlIGN1cnJlbnQgYHRlbmFudElkYCwgYGxvY2FsZUNvZGVgLCBhbmQgdGhlIHByb3ZpZGVkIGBhcHBsaWNhdGlvbklkYC5cbiAqXG4gKiAgVE9ETzogZXhwb3J0IHRoZSB1c2VMYXlvdXRJZCBmcm9tIGEgZ2VuZXJpYyB1c2UgcGFja2FnZSwgc3VjaCBhcyBhcHAtYWRtaW4uIEF0IHRoZSBtb21lbnQgaXMgbm90IHBvc3NpYmxlIGJlY2F1c2Ugb2YgY2lyY3VsYXIgZGVwZW5kZW5jeSBpc3N1ZXMuXG4gKi9cbmNvbnN0IHVzZUxheW91dElkID0gKGFwcGxpY2F0aW9uSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHsgdGVuYW50IH0gPSB1c2VUZW5hbmN5KCk7XG4gICAgY29uc3QgeyBnZXRDdXJyZW50TG9jYWxlIH0gPSB1c2VJMThOKCk7XG4gICAgY29uc3QgbG9jYWxlQ29kZSA9IGdldEN1cnJlbnRMb2NhbGUoXCJjb250ZW50XCIpO1xuXG4gICAgaWYgKCF0ZW5hbnQgfHwgIWxvY2FsZUNvZGUpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiTWlzc2luZyB0ZW5hbnQgb3IgbG9jYWxlQ29kZSB3aGlsZSBjcmVhdGluZyBsYXlvdXRJZFwiKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBUIyR7dGVuYW50fSNMIyR7bG9jYWxlQ29kZX0jQSMke2FwcGxpY2F0aW9uSWR9YDtcbn07XG5cbmNvbnN0IEZpbGVNYW5hZ2VyVmlldyA9ICgpID0+IHtcbiAgICBjb25zdCB2aWV3ID0gdXNlRmlsZU1hbmFnZXJWaWV3KCk7XG4gICAgY29uc3QgZmlsZU1hbmFnZXIgPSB1c2VGaWxlTWFuYWdlckFwaSgpO1xuICAgIGNvbnN0IHsgYnJvd3NlciB9ID0gdXNlRmlsZU1hbmFnZXJWaWV3Q29uZmlnKCk7XG4gICAgY29uc3QgeyBzaG93U25hY2tiYXIgfSA9IHVzZVNuYWNrYmFyKCk7XG4gICAgY29uc3QgeyBzaG93RGlhbG9nOiBzaG93Q3JlYXRlRm9sZGVyRGlhbG9nIH0gPSB1c2VDcmVhdGVEaWFsb2coKTtcbiAgICBjb25zdCBbZHJhd2VyTG9hZGluZywgc2V0RHJhd2VyTG9hZGluZ10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICAgIGNvbnN0IHVwbG9hZGVyID0gdXNlTWVtbzxCYXRjaEZpbGVVcGxvYWRlcj4oXG4gICAgICAgICgpID0+IG5ldyBCYXRjaEZpbGVVcGxvYWRlcih2aWV3LnVwbG9hZEZpbGUpLFxuICAgICAgICBbdmlldy5mb2xkZXJJZF1cbiAgICApO1xuXG4gICAgY29uc3QgW3RhYmxlU29ydGluZywgc2V0VGFibGVTb3J0aW5nXSA9IHVzZVN0YXRlPFNvcnRpbmc+KFtdKTtcbiAgICBjb25zdCBbY3VycmVudEZpbGUsIHNldEN1cnJlbnRGaWxlXSA9IHVzZVN0YXRlPEZpbGVJdGVtPigpO1xuICAgIGNvbnN0IGxheW91dElkID0gdXNlTGF5b3V0SWQoXCJmbTpmaWxlXCIpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmV0Y2hGaWxlRGV0YWlscyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh2aWV3LnNob3dpbmdGaWxlRGV0YWlscykge1xuICAgICAgICAgICAgICAgIHNldERyYXdlckxvYWRpbmcoXCJMb2FkaW5nIGZpbGUgZGV0YWlscy4uLlwiKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgdmlldy5nZXRGaWxlKHZpZXcuc2hvd2luZ0ZpbGVEZXRhaWxzKTtcbiAgICAgICAgICAgICAgICBzZXRDdXJyZW50RmlsZShmaWxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0Q3VycmVudEZpbGUodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldERyYXdlckxvYWRpbmcobnVsbCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gY2FsbCB0aGUgZnVuY3Rpb25cbiAgICAgICAgZmV0Y2hGaWxlRGV0YWlscygpO1xuICAgIH0sIFt2aWV3LnNob3dpbmdGaWxlRGV0YWlsc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0YWJsZVNvcnRpbmc/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNvcnQgPSBjcmVhdGVTb3J0KHRhYmxlU29ydGluZyk7XG4gICAgICAgIGlmICghc29ydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZpZXcuc2V0TGlzdFNvcnQoc29ydCk7XG4gICAgfSwgW3RhYmxlU29ydGluZ10pO1xuXG4gICAgY29uc3QgZ2V0RmlsZVVwbG9hZEVycm9yTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChlOiBHZXRGaWxlVXBsb2FkRXJyb3JNZXNzYWdlUHJvcHMpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaCA9IGUubWF0Y2goL01lc3NhZ2U+KC4qPyk8XFwvTWVzc2FnZS8pO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgbWVzc2FnZV0gPSBtYXRjaDtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGUubWVzc2FnZTtcbiAgICB9LCBbXSk7XG5cbiAgICB1c2VIb3RrZXlzKHtcbiAgICAgICAgekluZGV4OiA1MCxcbiAgICAgICAga2V5czoge1xuICAgICAgICAgICAgZXNjOiB2aWV3Lm9uQ2xvc2VcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdXBsb2FkRmlsZXMgPSBhc3luYyAoZmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgICAgICB1cGxvYWRlci5hZGRGaWxlcyhmaWxlcyk7XG5cbiAgICAgICAgdXBsb2FkZXIub25VcGxvYWRGaW5pc2hlZCgoeyB1cGxvYWRlZCwgZXJyb3JzIH0pID0+IHtcbiAgICAgICAgICAgIHVwbG9hZGVyLnJlc2V0KCk7XG5cbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHNob3dTbmFja2JhcihcbiAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0YE9uZSBvciBtb3JlIGZpbGVzIHdlcmUgbm90IHVwbG9hZGVkIHN1Y2Nlc3NmdWxseTpgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPG9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtlcnJvcnMubWFwKCh7IGZpbGUsIGUgfSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtmaWxlLm5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz57ZmlsZS5uYW1lfTwvc3Ryb25nPjoge2dldEZpbGVVcGxvYWRFcnJvck1lc3NhZ2UoZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L29sPlxuICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2hvd1NuYWNrYmFyKHRgRmlsZSB1cGxvYWQgY29tcGxldGUuYCk7XG5cbiAgICAgICAgICAgIHZpZXcub25VcGxvYWRDb21wbGV0aW9uKHVwbG9hZGVkKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlclVwbG9hZEZpbGVBY3Rpb24gPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKHsgYnJvd3NlRmlsZXMgfTogQnJvd3NlRmlsZXNIYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZpbGVNYW5hZ2VyLmNhbkNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QnV0dG9uUHJpbWFyeVxuICAgICAgICAgICAgICAgICAgICBmbGF0PXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICBzbWFsbD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YnJvd3NlRmlsZXMgYXMgQnV0dG9uUHJvcHNbXCJvbkNsaWNrXCJdfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbkljb24gaWNvbj17PFVwbG9hZEljb24gLz59IC8+XG4gICAgICAgICAgICAgICAgICAgIHt0YFVwbG9hZC4uLmB9XG4gICAgICAgICAgICAgICAgPC9CdXR0b25QcmltYXJ5PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgW2ZpbGVNYW5hZ2VyLmNhbkNyZWF0ZV1cbiAgICApO1xuXG4gICAgY29uc3QgZmlsZXNCZWluZ1VwbG9hZGVkID0gdXBsb2FkZXIuZ2V0Sm9icygpLmxlbmd0aDtcbiAgICBjb25zdCBwcm9ncmVzcyA9IHVwbG9hZGVyLnByb2dyZXNzO1xuXG4gICAgY29uc3QgcmVuZGVyTGlzdCA9IChicm93c2VGaWxlczogRmlsZXNSZW5kZXJDaGlsZHJlbltcImJyb3dzZUZpbGVzXCJdKSA9PiB7XG4gICAgICAgIGlmICghdmlldy5pc0xpc3RMb2FkaW5nICYmIHZpZXcuaXNTZWFyY2ggJiYgdmlldy5maWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiA8RW1wdHkgaXNTZWFyY2hSZXN1bHQ9e3RydWV9IGJyb3dzZUZpbGVzPXticm93c2VGaWxlc30gLz47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZpZXcuaXNMaXN0TG9hZGluZyAmJiB2aWV3LmZpbGVzLmxlbmd0aCA9PT0gMCAmJiB2aWV3LmZvbGRlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gPEVtcHR5IGlzU2VhcmNoUmVzdWx0PXtmYWxzZX0gYnJvd3NlRmlsZXM9e2Jyb3dzZUZpbGVzfSAvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2aWV3Lmxpc3RUYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgZ2V0U2VsZWN0YWJsZVJvdyA9IChyb3dzOiBUYWJsZUl0ZW1bXSkgPT5cbiAgICAgICAgICAgICAgICByb3dzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocm93ID0+IHJvdy4kdHlwZSA9PT0gXCJSRUNPUkRcIilcbiAgICAgICAgICAgICAgICAgICAgLm1hcChyb3cgPT4gb21pdChyb3csIFtcIiR0eXBlXCIsIFwiJHNlbGVjdGFibGVcIl0pIGFzIEZpbGVJdGVtKTtcblxuICAgICAgICAgICAgY29uc3Qgb25TZWxlY3RSb3c6IFRhYmxlUHJvcHNbXCJvblNlbGVjdFJvd1wiXSA9IHZpZXcuaGFzT25TZWxlY3RDYWxsYmFja1xuICAgICAgICAgICAgICAgID8gcm93cyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBnZXRTZWxlY3RhYmxlUm93KHJvd3MpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXcubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5zZXRTZWxlY3RlZChmaWxlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5vbkNoYW5nZShmaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogcm93cyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBnZXRTZWxlY3RhYmxlUm93KHJvd3MpO1xuICAgICAgICAgICAgICAgICAgICAgIHZpZXcuc2V0U2VsZWN0ZWQoZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3Qgb25Ub2dnbGVSb3c6IFRhYmxlUHJvcHNbXCJvblRvZ2dsZVJvd1wiXSA9IHZpZXcuaGFzT25TZWxlY3RDYWxsYmFja1xuICAgICAgICAgICAgICAgID8gcm93ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IGdldFNlbGVjdGFibGVSb3coW3Jvd10pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXcubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy50b2dnbGVTZWxlY3RlZChmaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5vbkNoYW5nZShmaWxlc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogcm93ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IGdldFNlbGVjdGFibGVSb3coW3Jvd10pO1xuICAgICAgICAgICAgICAgICAgICAgIHZpZXcudG9nZ2xlU2VsZWN0ZWQoZmlsZXNbMF0pO1xuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VGFibGVcbiAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RSb3c9e29uU2VsZWN0Um93fVxuICAgICAgICAgICAgICAgICAgICBvblRvZ2dsZVJvdz17b25Ub2dnbGVSb3d9XG4gICAgICAgICAgICAgICAgICAgIHNvcnRpbmc9e3RhYmxlU29ydGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Tb3J0aW5nQ2hhbmdlPXtzZXRUYWJsZVNvcnRpbmd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBmb2xkZXJzPXt2aWV3LmZvbGRlcnN9XG4gICAgICAgICAgICAgICAgcmVjb3Jkcz17dmlldy5maWxlc31cbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt2aWV3LmlzTGlzdExvYWRpbmd9XG4gICAgICAgICAgICAgICAgb25Gb2xkZXJDbGljaz17dmlldy5zZXRGb2xkZXJJZH1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZD17dmlldy5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBtdWx0aXBsZT17dmlldy5tdWx0aXBsZX1cbiAgICAgICAgICAgICAgICB0b2dnbGVTZWxlY3RlZD17dmlldy50b2dnbGVTZWxlY3RlZH1cbiAgICAgICAgICAgICAgICBkZXNlbGVjdEFsbD17dmlldy5kZXNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmlldy5vbkNoYW5nZX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXt2aWV3Lm9uQ2xvc2V9XG4gICAgICAgICAgICAgICAgaGFzT25TZWxlY3RDYWxsYmFjaz17dmlldy5oYXNPblNlbGVjdENhbGxiYWNrfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9hZE1vcmVPblNjcm9sbCA9IHVzZUNhbGxiYWNrKFxuICAgICAgICBkZWJvdW5jZShhc3luYyAoeyBzY3JvbGxGcmFtZSB9OiB7IHNjcm9sbEZyYW1lOiBwb3NpdGlvblZhbHVlcyB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsRnJhbWUudG9wID4gMC44KSB7XG4gICAgICAgICAgICAgICAgdmlldy5sb2FkTW9yZUZpbGVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDIwMCksXG4gICAgICAgIFt2aWV3Lm1ldGEsIHZpZXcubG9hZE1vcmVGaWxlc11cbiAgICApO1xuXG4gICAgY29uc3Qgb25DcmVhdGVGb2xkZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHNob3dDcmVhdGVGb2xkZXJEaWFsb2coeyBjdXJyZW50UGFyZW50SWQ6IHZpZXcuZm9sZGVySWQgfSk7XG4gICAgfSwgW3ZpZXcuZm9sZGVySWRdKTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpbGUgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgYXN5bmMgKGRhdGE6IEZpbGVJdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGlkLCAuLi5maWxlRGF0YSB9ID0gZGF0YTtcbiAgICAgICAgICAgIHNldERyYXdlckxvYWRpbmcoXCJTYXZpbmcgZmlsZSBjaGFuZ2VzLi4uXCIpO1xuICAgICAgICAgICAgYXdhaXQgdmlldy51cGRhdGVGaWxlKGlkLCBmaWxlRGF0YSk7XG4gICAgICAgICAgICBzZXREcmF3ZXJMb2FkaW5nKG51bGwpO1xuICAgICAgICAgICAgc2hvd1NuYWNrYmFyKFwiRmlsZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseSFcIik7XG4gICAgICAgICAgICB2aWV3LmhpZGVGaWxlRGV0YWlscygpO1xuICAgICAgICB9LFxuICAgICAgICBbdmlldy51cGRhdGVGaWxlXVxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAgPEZpbGVzXG4gICAgICAgICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICAgICAgICBtYXhTaXplPXt2aWV3LnNldHRpbmdzID8gdmlldy5zZXR0aW5ncy51cGxvYWRNYXhGaWxlU2l6ZSArIFwiYlwiIDogXCIxVEJcIn1cbiAgICAgICAgICAgICAgICBtdWx0aXBsZU1heFNpemU9e1wiMVRCXCJ9XG4gICAgICAgICAgICAgICAgYWNjZXB0PXt2aWV3LmFjY2VwdH1cbiAgICAgICAgICAgICAgICBvblN1Y2Nlc3M9e2ZpbGVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZXNUb1VwbG9hZCA9IGZpbGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZpbGUgPT4gZmlsZS5zcmMuZmlsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgRmlsZVtdO1xuICAgICAgICAgICAgICAgICAgICB1cGxvYWRGaWxlcyhmaWxlc1RvVXBsb2FkKTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9uRXJyb3I9e2Vycm9ycyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBvdXRwdXRGaWxlU2VsZWN0aW9uRXJyb3IoZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1NuYWNrYmFyKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgeyh7IGdldERyb3Bab25lUHJvcHMsIGJyb3dzZUZpbGVzIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgPE92ZXJsYXlMYXlvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uRXhpdGVkPXt2aWV3Lm9uQ2xvc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBiYXJMZWZ0PXs8VGl0bGUgdGl0bGU9e3ZpZXcubGlzdFRpdGxlfSAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhck1pZGRsZT17PFNlYXJjaFdpZGdldCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJhclJpZ2h0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmlldy5oYXNPblNlbGVjdENhbGxiYWNrICYmIHZpZXcuc2VsZWN0ZWQubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b25QcmltYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWFsbD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB2aWV3Lm9uQ2hhbmdlKHZpZXcuc2VsZWN0ZWQpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0YFNlbGVjdGB9IHt2aWV3Lm11bHRpcGxlICYmIGAoJHt2aWV3LnNlbGVjdGVkLmxlbmd0aH0pYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uUHJpbWFyeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclVwbG9hZEZpbGVBY3Rpb24oeyBicm93c2VGaWxlcyB9IGFzIEJyb3dzZUZpbGVzSGFuZGxlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e1wiZmlsZS1tYW5hZ2VyLmNyZWF0ZS1mb2xkZXItYnV0dG9uXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvbkNyZWF0ZUZvbGRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNtYWxsPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luOiBcIjAgOHB4XCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbkljb24gaWNvbj17PEFkZEljb24gLz59IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGBOZXcgRm9sZGVyYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b25TZWNvbmRhcnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXlvdXRTd2l0Y2ggLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZURldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz17ZHJhd2VyTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT17Y3VycmVudEZpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW49e0Jvb2xlYW4odmlldy5zaG93aW5nRmlsZURldGFpbHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXt2aWV3LmhpZGVGaWxlRGV0YWlsc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TYXZlPXt1cGRhdGVGaWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNwbGl0VmlldyBsYXlvdXRJZD17bGF5b3V0SWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdFBhbmVsIHNwYW49ezJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnRTaWRlYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEZvbGRlcj17dmlldy5mb2xkZXJJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvbGRlckNsaWNrPXt2aWV3LnNldEZvbGRlcklkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHticm93c2VyLmZpbHRlckJ5VGFncyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRhZ3NMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPXt2aWV3LnRhZ3MubG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRhZ3M9e3ZpZXcudGFncy5hY3RpdmVUYWdzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncz17dmlldy50YWdzLmFsbFRhZ3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFjdGl2YXRlZFRhZ3NDaGFuZ2U9e3ZpZXcudGFncy5zZXRBY3RpdmVUYWdzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MZWZ0U2lkZWJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MZWZ0UGFuZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodFBhbmVsIHNwYW49ezEwfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlTGlzdFdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Li4uZ2V0RHJvcFpvbmVQcm9wcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRHJhZ092ZXI6ICgpID0+IHZpZXcuc2V0RHJhZ2dpbmcodHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRHJhZ0xlYXZlOiAoKSA9PiB2aWV3LnNldERyYWdnaW5nKGZhbHNlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ecm9wOiAoKSA9PiB2aWV3LnNldERyYWdnaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtcImZtLWxpc3Qtd3JhcHBlclwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2aWV3LmRyYWdnaW5nICYmIDxEcm9wRmlsZXNIZXJlIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdWxrQWN0aW9ucyAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWx0ZXJzIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNjcm9sbGJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNjcm9sbEZyYW1lPXtzY3JvbGxGcmFtZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZE1vcmVPblNjcm9sbCh7IHNjcm9sbEZyYW1lIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJMaXN0KGJyb3dzZUZpbGVzKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Njcm9sbGJhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tSW5mb0JhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9e3ZpZXcuYWNjZXB0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0aW5nPXt2aWV3LmlzTGlzdExvYWRpbmdNb3JlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPXt2aWV3LmlzTGlzdExvYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsQ291bnQ9e3ZpZXcubWV0YT8udG90YWxDb3VudCA/PyAwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q291bnQ9e3ZpZXcuZmlsZXMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFVwbG9hZFN0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJPZkZpbGVzPXtmaWxlc0JlaW5nVXBsb2FkZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzPXtwcm9ncmVzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlTGlzdFdyYXBwZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmlnaHRQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NwbGl0Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICA8L092ZXJsYXlMYXlvdXQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRmlsZXM+XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBvYnNlcnZlcihGaWxlTWFuYWdlclZpZXcpO1xuIl19 */",
63
63
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
64
64
  });
65
65
  var createSort = function createSort(sorting) {
@@ -364,7 +364,10 @@ var FileManagerView = function FileManagerView() {
364
364
  }
365
365
  }, renderList(browseFiles)), /*#__PURE__*/_react.default.createElement(_BottomInfoBar.BottomInfoBar, {
366
366
  accept: view.accept,
367
- listing: view.isListLoadingMore
367
+ listing: view.isListLoadingMore,
368
+ loading: view.isListLoading,
369
+ totalCount: view.meta?.totalCount ?? 0,
370
+ currentCount: view.files.length
368
371
  }), /*#__PURE__*/_react.default.createElement(_UploadStatus.UploadStatus, {
369
372
  numberOfFiles: filesBeingUploaded,
370
373
  progress: progress
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactButterfiles","_interopRequireDefault","_debounce","_omit","_reactHotkeyz","_mobxReactLite","_cloud_upload","_add","_i18n","_appAco","_appAdmin","_SplitView","_appI18n","_appTenancy","_Button","_Scrollbar","_FileManagerViewProvider","_outputFileSelectionError","_LeftSidebar","_","_BottomInfoBar","_BulkActions","_DropFilesHere","_Empty","_FileDetails","_Grid","_LayoutSwitch","_Table","_Title","_UploadStatus","_BatchFileUploader","_SearchWidget","_Filters","_TagsList","_excluded","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_EMOTION_STRINGIFIED_CSS_ERROR__","t","i18n","ns","FileListWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","createSort","sorting","length","undefined","reduce","items","item","sort","concat","id","desc","includes","push","useLayoutId","applicationId","_useTenancy","useTenancy","tenant","_useI18N","useI18N","getCurrentLocale","localeCode","console","warn","FileManagerView","view","useFileManagerView","fileManager","useFileManagerApi","_useFileManagerViewCo","useFileManagerViewConfig","browser","_useSnackbar","useSnackbar","showSnackbar","_useCreateDialog","useCreateDialog","showCreateFolderDialog","showDialog","_useState","useState","_useState2","_slicedToArray2","drawerLoading","setDrawerLoading","uploader","useMemo","BatchFileUploader","uploadFile","folderId","_useState3","_useState4","tableSorting","setTableSorting","_useState5","_useState6","currentFile","setCurrentFile","layoutId","useEffect","fetchFileDetails","showingFileDetails","file","getFile","setListSort","getFileUploadErrorMessage","useCallback","e","match","_match","message","useHotkeys","zIndex","keys","esc","onClose","uploadFiles","files","addFiles","onUploadFinished","_ref","uploaded","errors","reset","createElement","Fragment","_taggedTemplateLiteral2","_ref2","key","onUploadCompletion","renderUploadFileAction","_ref3","browseFiles","canCreate","ButtonPrimary","flat","small","onClick","ButtonIcon","icon","ReactComponent","filesBeingUploaded","getJobs","progress","renderList","isListLoading","isSearch","Empty","isSearchResult","folders","listTable","getSelectableRow","rows","filter","row","$type","omit","onSelectRow","hasOnSelectCallback","multiple","setSelected","onChange","onToggleRow","toggleSelected","Table","onSortingChange","Grid","records","loading","onFolderClick","setFolderId","selected","deselectAll","loadMoreOnScroll","debounce","_ref4","scrollFrame","top","loadMoreFiles","meta","onCreateFolder","currentParentId","updateFile","data","fileData","_objectWithoutProperties2","hideFileDetails","maxSize","settings","uploadMaxFileSize","multipleMaxSize","accept","onSuccess","filesToUpload","src","Boolean","onError","outputFileSelectionError","_ref5","getDropZoneProps","OverlayLayout","onExited","barLeft","Title","title","listTitle","barMiddle","SearchWidget","barRight","ButtonSecondary","style","margin","LayoutSwitch","FileDetails","open","onSave","SplitView","LeftPanel","span","LeftSidebar","currentFolder","filterByTags","TagsList","tags","activeTags","allTags","onActivatedTagsChange","setActiveTags","RightPanel","Object","assign","onDragOver","setDragging","onDragLeave","onDrop","dragging","DropFilesHere","BulkActions","Filters","Scrollbar","onScrollFrame","BottomInfoBar","listing","isListLoadingMore","UploadStatus","numberOfFiles","_default","exports","observer"],"sources":["FileManagerView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport Files, { FilesRenderChildren } from \"react-butterfiles\";\nimport styled from \"@emotion/styled\";\nimport debounce from \"lodash/debounce\";\nimport omit from \"lodash/omit\";\nimport { positionValues } from \"react-custom-scrollbars\";\n// @ts-expect-error\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { observer } from \"mobx-react-lite\";\nimport { ReactComponent as UploadIcon } from \"@material-design-icons/svg/filled/cloud_upload.svg\";\nimport { ReactComponent as AddIcon } from \"@material-design-icons/svg/filled/add.svg\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useCreateDialog } from \"@webiny/app-aco\";\nimport { OverlayLayout, useSnackbar } from \"@webiny/app-admin\";\nimport { LeftPanel, RightPanel, SplitView } from \"@webiny/app-admin/components/SplitView\";\nimport { useI18N } from \"@webiny/app-i18n\";\nimport { useTenancy } from \"@webiny/app-tenancy\";\nimport { ButtonIcon, ButtonPrimary, ButtonProps, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Sorting } from \"@webiny/ui/DataTable\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { useFileManagerView } from \"~/modules/FileManagerRenderer/FileManagerViewProvider\";\nimport { outputFileSelectionError } from \"./outputFileSelectionError\";\nimport { LeftSidebar } from \"./LeftSidebar\";\nimport { useFileManagerApi, useFileManagerViewConfig } from \"~/index\";\nimport { FileItem } from \"@webiny/app-admin/types\";\nimport { BottomInfoBar } from \"~/components/BottomInfoBar\";\nimport { BulkActions } from \"~/components/BulkActions\";\nimport { DropFilesHere } from \"~/components/DropFilesHere\";\nimport { Empty } from \"~/components/Empty\";\nimport { FileDetails } from \"~/components/FileDetails\";\nimport { Grid } from \"~/components/Grid\";\nimport { LayoutSwitch } from \"~/components/LayoutSwitch\";\nimport { Table, TableProps } from \"~/components/Table\";\nimport { Title } from \"~/components/Title\";\nimport { UploadStatus } from \"~/components/UploadStatus\";\nimport { BatchFileUploader } from \"~/BatchFileUploader\";\nimport { SearchWidget } from \"./components/SearchWidget\";\nimport { Filters } from \"./components/Filters\";\nimport { TagsList } from \"~/modules/FileManagerRenderer/FileManagerView/components/TagsList\";\nimport { ListFilesSort, ListFilesSortItem } from \"~/modules/FileManagerApiProvider/graphql\";\nimport { TableItem } from \"~/types\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst FileListWrapper = styled(\"div\")({\n zIndex: 60,\n height: \"calc(100vh - 94px)\",\n position: \"relative\",\n \".mdc-data-table\": {\n display: \"inline-table\"\n }\n});\n\ntype BrowseFilesHandler = {\n browseFiles: FilesRenderChildren[\"browseFiles\"];\n};\n\ntype GetFileUploadErrorMessageProps =\n | string\n | {\n message: string;\n };\n\nconst createSort = (sorting?: Sorting): ListFilesSort | undefined => {\n if (!sorting?.length) {\n return undefined;\n }\n return sorting.reduce<ListFilesSort>((items, item) => {\n const sort = `${item.id}_${item.desc ? \"DESC\" : \"ASC\"}` as ListFilesSortItem;\n if (items.includes(sort)) {\n return items;\n }\n items.push(sort);\n return items;\n }, []);\n};\n\n/**\n * Generates a `layoutId` to be used with the `<SplitView />` component.\n * The `layoutId` is essential for saving user preferences into localStorage.\n * The generation of the `layoutId` takes into account the current `tenantId`, `localeCode`, and the provided `applicationId`.\n *\n * TODO: export the useLayoutId from a generic use package, such as app-admin. At the moment is not possible because of circular dependency issues.\n */\nconst useLayoutId = (applicationId: string) => {\n const { tenant } = useTenancy();\n const { getCurrentLocale } = useI18N();\n const localeCode = getCurrentLocale(\"content\");\n\n if (!tenant || !localeCode) {\n console.warn(\"Missing tenant or localeCode while creating layoutId\");\n return null;\n }\n\n return `T#${tenant}#L#${localeCode}#A#${applicationId}`;\n};\n\nconst FileManagerView = () => {\n const view = useFileManagerView();\n const fileManager = useFileManagerApi();\n const { browser } = useFileManagerViewConfig();\n const { showSnackbar } = useSnackbar();\n const { showDialog: showCreateFolderDialog } = useCreateDialog();\n const [drawerLoading, setDrawerLoading] = useState<string | null>(null);\n\n const uploader = useMemo<BatchFileUploader>(\n () => new BatchFileUploader(view.uploadFile),\n [view.folderId]\n );\n\n const [tableSorting, setTableSorting] = useState<Sorting>([]);\n const [currentFile, setCurrentFile] = useState<FileItem>();\n const layoutId = useLayoutId(\"fm:file\");\n\n useEffect(() => {\n const fetchFileDetails = async () => {\n if (view.showingFileDetails) {\n setDrawerLoading(\"Loading file details...\");\n const file = await view.getFile(view.showingFileDetails);\n setCurrentFile(file);\n } else {\n setCurrentFile(undefined);\n }\n setDrawerLoading(null);\n };\n\n // call the function\n fetchFileDetails();\n }, [view.showingFileDetails]);\n\n useEffect(() => {\n if (!tableSorting?.length) {\n return;\n }\n const sort = createSort(tableSorting);\n if (!sort) {\n return;\n }\n view.setListSort(sort);\n }, [tableSorting]);\n\n const getFileUploadErrorMessage = useCallback((e: GetFileUploadErrorMessageProps) => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: view.onClose\n }\n });\n\n const uploadFiles = async (files: File[]) => {\n uploader.addFiles(files);\n\n uploader.onUploadFinished(({ uploaded, errors }) => {\n uploader.reset();\n\n if (errors.length > 0) {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n return;\n }\n\n showSnackbar(t`File upload complete.`);\n\n view.onUploadCompletion(uploaded);\n });\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }: BrowseFilesHandler) => {\n if (!fileManager.canCreate) {\n return null;\n }\n return (\n <ButtonPrimary\n flat={true}\n small={true}\n onClick={browseFiles as ButtonProps[\"onClick\"]}\n >\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [fileManager.canCreate]\n );\n\n const filesBeingUploaded = uploader.getJobs().length;\n const progress = uploader.progress;\n\n const renderList = (browseFiles: FilesRenderChildren[\"browseFiles\"]) => {\n if (!view.isListLoading && view.isSearch && view.files.length === 0) {\n return <Empty isSearchResult={true} browseFiles={browseFiles} />;\n }\n\n if (!view.isListLoading && view.files.length === 0 && view.folders.length === 0) {\n return <Empty isSearchResult={false} browseFiles={browseFiles} />;\n }\n\n if (view.listTable) {\n const getSelectableRow = (rows: TableItem[]) =>\n rows\n .filter(row => row.$type === \"RECORD\")\n .map(row => omit(row, [\"$type\", \"$selectable\"]) as FileItem);\n\n const onSelectRow: TableProps[\"onSelectRow\"] = view.hasOnSelectCallback\n ? rows => {\n const files = getSelectableRow(rows);\n\n if (view.multiple) {\n view.setSelected(files);\n } else {\n view.onChange(files[0]);\n }\n }\n : rows => {\n const files = getSelectableRow(rows);\n view.setSelected(files);\n };\n\n const onToggleRow: TableProps[\"onToggleRow\"] = view.hasOnSelectCallback\n ? row => {\n const files = getSelectableRow([row]);\n\n if (view.multiple) {\n view.toggleSelected(files[0]);\n } else {\n view.onChange(files[0]);\n }\n }\n : row => {\n const files = getSelectableRow([row]);\n view.toggleSelected(files[0]);\n };\n\n return (\n <Table\n onSelectRow={onSelectRow}\n onToggleRow={onToggleRow}\n sorting={tableSorting}\n onSortingChange={setTableSorting}\n />\n );\n }\n\n return (\n <Grid\n folders={view.folders}\n records={view.files}\n loading={view.isListLoading}\n onFolderClick={view.setFolderId}\n selected={view.selected}\n multiple={view.multiple}\n toggleSelected={view.toggleSelected}\n deselectAll={view.deselectAll}\n onChange={view.onChange}\n onClose={view.onClose}\n hasOnSelectCallback={view.hasOnSelectCallback}\n />\n );\n };\n\n const loadMoreOnScroll = useCallback(\n debounce(async ({ scrollFrame }: { scrollFrame: positionValues }) => {\n if (scrollFrame.top > 0.8) {\n view.loadMoreFiles();\n }\n }, 200),\n [view.meta, view.loadMoreFiles]\n );\n\n const onCreateFolder = useCallback(() => {\n showCreateFolderDialog({ currentParentId: view.folderId });\n }, [view.folderId]);\n\n const updateFile = useCallback(\n async (data: FileItem) => {\n const { id, ...fileData } = data;\n setDrawerLoading(\"Saving file changes...\");\n await view.updateFile(id, fileData);\n setDrawerLoading(null);\n showSnackbar(\"File updated successfully!\");\n view.hideFileDetails();\n },\n [view.updateFile]\n );\n\n return (\n <>\n <Files\n multiple\n maxSize={view.settings ? view.settings.uploadMaxFileSize + \"b\" : \"1TB\"}\n multipleMaxSize={\"1TB\"}\n accept={view.accept}\n onSuccess={files => {\n const filesToUpload = files\n .map(file => file.src.file)\n .filter(Boolean) as File[];\n uploadFiles(filesToUpload);\n }}\n onError={errors => {\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles }) => (\n <OverlayLayout\n onExited={view.onClose}\n barLeft={<Title title={view.listTitle} />}\n barMiddle={<SearchWidget />}\n barRight={\n <>\n {view.hasOnSelectCallback && view.selected.length > 0 ? (\n <ButtonPrimary\n flat={true}\n small={true}\n onClick={() => view.onChange(view.selected)}\n >\n {t`Select`} {view.multiple && `(${view.selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles } as BrowseFilesHandler)\n )}\n <ButtonSecondary\n data-testid={\"file-manager.create-folder-button\"}\n onClick={onCreateFolder}\n small={true}\n style={{ margin: \"0 8px\" }}\n >\n <ButtonIcon icon={<AddIcon />} />\n {t`New Folder`}\n </ButtonSecondary>\n <LayoutSwitch />\n </>\n }\n >\n <>\n <FileDetails\n loading={drawerLoading}\n file={currentFile}\n open={Boolean(view.showingFileDetails)}\n onClose={view.hideFileDetails}\n onSave={updateFile}\n />\n <SplitView layoutId={layoutId}>\n <LeftPanel span={2}>\n <LeftSidebar\n currentFolder={view.folderId}\n onFolderClick={view.setFolderId}\n >\n {browser.filterByTags ? (\n <TagsList\n loading={view.tags.loading}\n activeTags={view.tags.activeTags}\n tags={view.tags.allTags}\n onActivatedTagsChange={view.tags.setActiveTags}\n />\n ) : null}\n </LeftSidebar>\n </LeftPanel>\n <RightPanel span={10}>\n <FileListWrapper\n {...getDropZoneProps({\n onDragOver: () => view.setDragging(true),\n onDragLeave: () => view.setDragging(false),\n onDrop: () => view.setDragging(false)\n })}\n data-testid={\"fm-list-wrapper\"}\n >\n {view.dragging && <DropFilesHere />}\n <BulkActions />\n <Filters />\n <Scrollbar\n onScrollFrame={scrollFrame =>\n loadMoreOnScroll({ scrollFrame })\n }\n >\n {renderList(browseFiles)}\n </Scrollbar>\n <BottomInfoBar\n accept={view.accept}\n listing={view.isListLoadingMore}\n />\n <UploadStatus\n numberOfFiles={filesBeingUploaded}\n progress={progress}\n />\n </FileListWrapper>\n </RightPanel>\n </SplitView>\n </>\n </OverlayLayout>\n )}\n </Files>\n </>\n );\n};\n\nexport default observer(FileManagerView);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactButterfiles","_interopRequireDefault","_debounce","_omit","_reactHotkeyz","_mobxReactLite","_cloud_upload","_add","_i18n","_appAco","_appAdmin","_SplitView","_appI18n","_appTenancy","_Button","_Scrollbar","_FileManagerViewProvider","_outputFileSelectionError","_LeftSidebar","_","_BottomInfoBar","_BulkActions","_DropFilesHere","_Empty","_FileDetails","_Grid","_LayoutSwitch","_Table","_Title","_UploadStatus","_BatchFileUploader","_SearchWidget","_Filters","_TagsList","_excluded","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_EMOTION_STRINGIFIED_CSS_ERROR__","t","i18n","ns","FileListWrapper","_base","default","process","env","NODE_ENV","target","label","name","styles","map","toString","createSort","sorting","length","undefined","reduce","items","item","sort","concat","id","desc","includes","push","useLayoutId","applicationId","_useTenancy","useTenancy","tenant","_useI18N","useI18N","getCurrentLocale","localeCode","console","warn","FileManagerView","view","useFileManagerView","fileManager","useFileManagerApi","_useFileManagerViewCo","useFileManagerViewConfig","browser","_useSnackbar","useSnackbar","showSnackbar","_useCreateDialog","useCreateDialog","showCreateFolderDialog","showDialog","_useState","useState","_useState2","_slicedToArray2","drawerLoading","setDrawerLoading","uploader","useMemo","BatchFileUploader","uploadFile","folderId","_useState3","_useState4","tableSorting","setTableSorting","_useState5","_useState6","currentFile","setCurrentFile","layoutId","useEffect","fetchFileDetails","showingFileDetails","file","getFile","setListSort","getFileUploadErrorMessage","useCallback","e","match","_match","message","useHotkeys","zIndex","keys","esc","onClose","uploadFiles","files","addFiles","onUploadFinished","_ref","uploaded","errors","reset","createElement","Fragment","_taggedTemplateLiteral2","_ref2","key","onUploadCompletion","renderUploadFileAction","_ref3","browseFiles","canCreate","ButtonPrimary","flat","small","onClick","ButtonIcon","icon","ReactComponent","filesBeingUploaded","getJobs","progress","renderList","isListLoading","isSearch","Empty","isSearchResult","folders","listTable","getSelectableRow","rows","filter","row","$type","omit","onSelectRow","hasOnSelectCallback","multiple","setSelected","onChange","onToggleRow","toggleSelected","Table","onSortingChange","Grid","records","loading","onFolderClick","setFolderId","selected","deselectAll","loadMoreOnScroll","debounce","_ref4","scrollFrame","top","loadMoreFiles","meta","onCreateFolder","currentParentId","updateFile","data","fileData","_objectWithoutProperties2","hideFileDetails","maxSize","settings","uploadMaxFileSize","multipleMaxSize","accept","onSuccess","filesToUpload","src","Boolean","onError","outputFileSelectionError","_ref5","getDropZoneProps","OverlayLayout","onExited","barLeft","Title","title","listTitle","barMiddle","SearchWidget","barRight","ButtonSecondary","style","margin","LayoutSwitch","FileDetails","open","onSave","SplitView","LeftPanel","span","LeftSidebar","currentFolder","filterByTags","TagsList","tags","activeTags","allTags","onActivatedTagsChange","setActiveTags","RightPanel","Object","assign","onDragOver","setDragging","onDragLeave","onDrop","dragging","DropFilesHere","BulkActions","Filters","Scrollbar","onScrollFrame","BottomInfoBar","listing","isListLoadingMore","totalCount","currentCount","UploadStatus","numberOfFiles","_default","exports","observer"],"sources":["FileManagerView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport Files, { FilesRenderChildren } from \"react-butterfiles\";\nimport styled from \"@emotion/styled\";\nimport debounce from \"lodash/debounce\";\nimport omit from \"lodash/omit\";\nimport { positionValues } from \"react-custom-scrollbars\";\n// @ts-expect-error\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { observer } from \"mobx-react-lite\";\nimport { ReactComponent as UploadIcon } from \"@material-design-icons/svg/filled/cloud_upload.svg\";\nimport { ReactComponent as AddIcon } from \"@material-design-icons/svg/filled/add.svg\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { useCreateDialog } from \"@webiny/app-aco\";\nimport { OverlayLayout, useSnackbar } from \"@webiny/app-admin\";\nimport { LeftPanel, RightPanel, SplitView } from \"@webiny/app-admin/components/SplitView\";\nimport { useI18N } from \"@webiny/app-i18n\";\nimport { useTenancy } from \"@webiny/app-tenancy\";\nimport { ButtonIcon, ButtonPrimary, ButtonProps, ButtonSecondary } from \"@webiny/ui/Button\";\nimport { Sorting } from \"@webiny/ui/DataTable\";\nimport { Scrollbar } from \"@webiny/ui/Scrollbar\";\nimport { useFileManagerView } from \"~/modules/FileManagerRenderer/FileManagerViewProvider\";\nimport { outputFileSelectionError } from \"./outputFileSelectionError\";\nimport { LeftSidebar } from \"./LeftSidebar\";\nimport { useFileManagerApi, useFileManagerViewConfig } from \"~/index\";\nimport { FileItem } from \"@webiny/app-admin/types\";\nimport { BottomInfoBar } from \"~/components/BottomInfoBar\";\nimport { BulkActions } from \"~/components/BulkActions\";\nimport { DropFilesHere } from \"~/components/DropFilesHere\";\nimport { Empty } from \"~/components/Empty\";\nimport { FileDetails } from \"~/components/FileDetails\";\nimport { Grid } from \"~/components/Grid\";\nimport { LayoutSwitch } from \"~/components/LayoutSwitch\";\nimport { Table, TableProps } from \"~/components/Table\";\nimport { Title } from \"~/components/Title\";\nimport { UploadStatus } from \"~/components/UploadStatus\";\nimport { BatchFileUploader } from \"~/BatchFileUploader\";\nimport { SearchWidget } from \"./components/SearchWidget\";\nimport { Filters } from \"./components/Filters\";\nimport { TagsList } from \"~/modules/FileManagerRenderer/FileManagerView/components/TagsList\";\nimport { ListFilesSort, ListFilesSortItem } from \"~/modules/FileManagerApiProvider/graphql\";\nimport { TableItem } from \"~/types\";\n\nconst t = i18n.ns(\"app-admin/file-manager/file-manager-view\");\n\nconst FileListWrapper = styled(\"div\")({\n zIndex: 60,\n height: \"calc(100vh - 94px)\",\n position: \"relative\",\n \".mdc-data-table\": {\n display: \"inline-table\"\n }\n});\n\ntype BrowseFilesHandler = {\n browseFiles: FilesRenderChildren[\"browseFiles\"];\n};\n\ntype GetFileUploadErrorMessageProps =\n | string\n | {\n message: string;\n };\n\nconst createSort = (sorting?: Sorting): ListFilesSort | undefined => {\n if (!sorting?.length) {\n return undefined;\n }\n return sorting.reduce<ListFilesSort>((items, item) => {\n const sort = `${item.id}_${item.desc ? \"DESC\" : \"ASC\"}` as ListFilesSortItem;\n if (items.includes(sort)) {\n return items;\n }\n items.push(sort);\n return items;\n }, []);\n};\n\n/**\n * Generates a `layoutId` to be used with the `<SplitView />` component.\n * The `layoutId` is essential for saving user preferences into localStorage.\n * The generation of the `layoutId` takes into account the current `tenantId`, `localeCode`, and the provided `applicationId`.\n *\n * TODO: export the useLayoutId from a generic use package, such as app-admin. At the moment is not possible because of circular dependency issues.\n */\nconst useLayoutId = (applicationId: string) => {\n const { tenant } = useTenancy();\n const { getCurrentLocale } = useI18N();\n const localeCode = getCurrentLocale(\"content\");\n\n if (!tenant || !localeCode) {\n console.warn(\"Missing tenant or localeCode while creating layoutId\");\n return null;\n }\n\n return `T#${tenant}#L#${localeCode}#A#${applicationId}`;\n};\n\nconst FileManagerView = () => {\n const view = useFileManagerView();\n const fileManager = useFileManagerApi();\n const { browser } = useFileManagerViewConfig();\n const { showSnackbar } = useSnackbar();\n const { showDialog: showCreateFolderDialog } = useCreateDialog();\n const [drawerLoading, setDrawerLoading] = useState<string | null>(null);\n\n const uploader = useMemo<BatchFileUploader>(\n () => new BatchFileUploader(view.uploadFile),\n [view.folderId]\n );\n\n const [tableSorting, setTableSorting] = useState<Sorting>([]);\n const [currentFile, setCurrentFile] = useState<FileItem>();\n const layoutId = useLayoutId(\"fm:file\");\n\n useEffect(() => {\n const fetchFileDetails = async () => {\n if (view.showingFileDetails) {\n setDrawerLoading(\"Loading file details...\");\n const file = await view.getFile(view.showingFileDetails);\n setCurrentFile(file);\n } else {\n setCurrentFile(undefined);\n }\n setDrawerLoading(null);\n };\n\n // call the function\n fetchFileDetails();\n }, [view.showingFileDetails]);\n\n useEffect(() => {\n if (!tableSorting?.length) {\n return;\n }\n const sort = createSort(tableSorting);\n if (!sort) {\n return;\n }\n view.setListSort(sort);\n }, [tableSorting]);\n\n const getFileUploadErrorMessage = useCallback((e: GetFileUploadErrorMessageProps) => {\n if (typeof e === \"string\") {\n const match = e.match(/Message>(.*?)<\\/Message/);\n if (match) {\n const [, message] = match;\n return message;\n }\n\n return e;\n }\n return e.message;\n }, []);\n\n useHotkeys({\n zIndex: 50,\n keys: {\n esc: view.onClose\n }\n });\n\n const uploadFiles = async (files: File[]) => {\n uploader.addFiles(files);\n\n uploader.onUploadFinished(({ uploaded, errors }) => {\n uploader.reset();\n\n if (errors.length > 0) {\n showSnackbar(\n <>\n {t`One or more files were not uploaded successfully:`}\n <ol>\n {errors.map(({ file, e }) => (\n <li key={file.name}>\n <strong>{file.name}</strong>: {getFileUploadErrorMessage(e)}\n </li>\n ))}\n </ol>\n </>\n );\n return;\n }\n\n showSnackbar(t`File upload complete.`);\n\n view.onUploadCompletion(uploaded);\n });\n };\n\n const renderUploadFileAction = useCallback(\n ({ browseFiles }: BrowseFilesHandler) => {\n if (!fileManager.canCreate) {\n return null;\n }\n return (\n <ButtonPrimary\n flat={true}\n small={true}\n onClick={browseFiles as ButtonProps[\"onClick\"]}\n >\n <ButtonIcon icon={<UploadIcon />} />\n {t`Upload...`}\n </ButtonPrimary>\n );\n },\n [fileManager.canCreate]\n );\n\n const filesBeingUploaded = uploader.getJobs().length;\n const progress = uploader.progress;\n\n const renderList = (browseFiles: FilesRenderChildren[\"browseFiles\"]) => {\n if (!view.isListLoading && view.isSearch && view.files.length === 0) {\n return <Empty isSearchResult={true} browseFiles={browseFiles} />;\n }\n\n if (!view.isListLoading && view.files.length === 0 && view.folders.length === 0) {\n return <Empty isSearchResult={false} browseFiles={browseFiles} />;\n }\n\n if (view.listTable) {\n const getSelectableRow = (rows: TableItem[]) =>\n rows\n .filter(row => row.$type === \"RECORD\")\n .map(row => omit(row, [\"$type\", \"$selectable\"]) as FileItem);\n\n const onSelectRow: TableProps[\"onSelectRow\"] = view.hasOnSelectCallback\n ? rows => {\n const files = getSelectableRow(rows);\n\n if (view.multiple) {\n view.setSelected(files);\n } else {\n view.onChange(files[0]);\n }\n }\n : rows => {\n const files = getSelectableRow(rows);\n view.setSelected(files);\n };\n\n const onToggleRow: TableProps[\"onToggleRow\"] = view.hasOnSelectCallback\n ? row => {\n const files = getSelectableRow([row]);\n\n if (view.multiple) {\n view.toggleSelected(files[0]);\n } else {\n view.onChange(files[0]);\n }\n }\n : row => {\n const files = getSelectableRow([row]);\n view.toggleSelected(files[0]);\n };\n\n return (\n <Table\n onSelectRow={onSelectRow}\n onToggleRow={onToggleRow}\n sorting={tableSorting}\n onSortingChange={setTableSorting}\n />\n );\n }\n\n return (\n <Grid\n folders={view.folders}\n records={view.files}\n loading={view.isListLoading}\n onFolderClick={view.setFolderId}\n selected={view.selected}\n multiple={view.multiple}\n toggleSelected={view.toggleSelected}\n deselectAll={view.deselectAll}\n onChange={view.onChange}\n onClose={view.onClose}\n hasOnSelectCallback={view.hasOnSelectCallback}\n />\n );\n };\n\n const loadMoreOnScroll = useCallback(\n debounce(async ({ scrollFrame }: { scrollFrame: positionValues }) => {\n if (scrollFrame.top > 0.8) {\n view.loadMoreFiles();\n }\n }, 200),\n [view.meta, view.loadMoreFiles]\n );\n\n const onCreateFolder = useCallback(() => {\n showCreateFolderDialog({ currentParentId: view.folderId });\n }, [view.folderId]);\n\n const updateFile = useCallback(\n async (data: FileItem) => {\n const { id, ...fileData } = data;\n setDrawerLoading(\"Saving file changes...\");\n await view.updateFile(id, fileData);\n setDrawerLoading(null);\n showSnackbar(\"File updated successfully!\");\n view.hideFileDetails();\n },\n [view.updateFile]\n );\n\n return (\n <>\n <Files\n multiple\n maxSize={view.settings ? view.settings.uploadMaxFileSize + \"b\" : \"1TB\"}\n multipleMaxSize={\"1TB\"}\n accept={view.accept}\n onSuccess={files => {\n const filesToUpload = files\n .map(file => file.src.file)\n .filter(Boolean) as File[];\n uploadFiles(filesToUpload);\n }}\n onError={errors => {\n const message = outputFileSelectionError(errors);\n showSnackbar(message);\n }}\n >\n {({ getDropZoneProps, browseFiles }) => (\n <OverlayLayout\n onExited={view.onClose}\n barLeft={<Title title={view.listTitle} />}\n barMiddle={<SearchWidget />}\n barRight={\n <>\n {view.hasOnSelectCallback && view.selected.length > 0 ? (\n <ButtonPrimary\n flat={true}\n small={true}\n onClick={() => view.onChange(view.selected)}\n >\n {t`Select`} {view.multiple && `(${view.selected.length})`}\n </ButtonPrimary>\n ) : (\n renderUploadFileAction({ browseFiles } as BrowseFilesHandler)\n )}\n <ButtonSecondary\n data-testid={\"file-manager.create-folder-button\"}\n onClick={onCreateFolder}\n small={true}\n style={{ margin: \"0 8px\" }}\n >\n <ButtonIcon icon={<AddIcon />} />\n {t`New Folder`}\n </ButtonSecondary>\n <LayoutSwitch />\n </>\n }\n >\n <>\n <FileDetails\n loading={drawerLoading}\n file={currentFile}\n open={Boolean(view.showingFileDetails)}\n onClose={view.hideFileDetails}\n onSave={updateFile}\n />\n <SplitView layoutId={layoutId}>\n <LeftPanel span={2}>\n <LeftSidebar\n currentFolder={view.folderId}\n onFolderClick={view.setFolderId}\n >\n {browser.filterByTags ? (\n <TagsList\n loading={view.tags.loading}\n activeTags={view.tags.activeTags}\n tags={view.tags.allTags}\n onActivatedTagsChange={view.tags.setActiveTags}\n />\n ) : null}\n </LeftSidebar>\n </LeftPanel>\n <RightPanel span={10}>\n <FileListWrapper\n {...getDropZoneProps({\n onDragOver: () => view.setDragging(true),\n onDragLeave: () => view.setDragging(false),\n onDrop: () => view.setDragging(false)\n })}\n data-testid={\"fm-list-wrapper\"}\n >\n {view.dragging && <DropFilesHere />}\n <BulkActions />\n <Filters />\n <Scrollbar\n onScrollFrame={scrollFrame =>\n loadMoreOnScroll({ scrollFrame })\n }\n >\n {renderList(browseFiles)}\n </Scrollbar>\n <BottomInfoBar\n accept={view.accept}\n listing={view.isListLoadingMore}\n loading={view.isListLoading}\n totalCount={view.meta?.totalCount ?? 0}\n currentCount={view.files.length}\n />\n <UploadStatus\n numberOfFiles={filesBeingUploaded}\n progress={progress}\n />\n </FileListWrapper>\n </RightPanel>\n </SplitView>\n </>\n </OverlayLayout>\n )}\n </Files>\n </>\n );\n};\n\nexport default observer(FileManagerView);\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-file-manager",
3
- "version": "5.41.1",
3
+ "version": "5.41.2-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,22 +17,22 @@
17
17
  "@emotion/styled": "11.10.6",
18
18
  "@material-design-icons/svg": "0.14.13",
19
19
  "@types/react": "18.2.79",
20
- "@webiny/app": "5.41.1",
21
- "@webiny/app-aco": "5.41.1",
22
- "@webiny/app-admin": "5.41.1",
23
- "@webiny/app-headless-cms": "5.41.1",
24
- "@webiny/app-headless-cms-common": "5.41.1",
25
- "@webiny/app-i18n": "5.41.1",
26
- "@webiny/app-security": "5.41.1",
27
- "@webiny/app-tenancy": "5.41.1",
28
- "@webiny/error": "5.41.1",
29
- "@webiny/form": "5.41.1",
30
- "@webiny/plugins": "5.41.1",
31
- "@webiny/react-composition": "5.41.1",
32
- "@webiny/react-properties": "5.41.1",
33
- "@webiny/ui": "5.41.1",
34
- "@webiny/utils": "5.41.1",
35
- "@webiny/validation": "5.41.1",
20
+ "@webiny/app": "5.41.2-beta.0",
21
+ "@webiny/app-aco": "5.41.2-beta.0",
22
+ "@webiny/app-admin": "5.41.2-beta.0",
23
+ "@webiny/app-headless-cms": "5.41.2-beta.0",
24
+ "@webiny/app-headless-cms-common": "5.41.2-beta.0",
25
+ "@webiny/app-i18n": "5.41.2-beta.0",
26
+ "@webiny/app-security": "5.41.2-beta.0",
27
+ "@webiny/app-tenancy": "5.41.2-beta.0",
28
+ "@webiny/error": "5.41.2-beta.0",
29
+ "@webiny/form": "5.41.2-beta.0",
30
+ "@webiny/plugins": "5.41.2-beta.0",
31
+ "@webiny/react-composition": "5.41.2-beta.0",
32
+ "@webiny/react-properties": "5.41.2-beta.0",
33
+ "@webiny/ui": "5.41.2-beta.0",
34
+ "@webiny/utils": "5.41.2-beta.0",
35
+ "@webiny/validation": "5.41.2-beta.0",
36
36
  "apollo-cache": "1.3.5",
37
37
  "apollo-client": "2.6.10",
38
38
  "apollo-link": "1.2.14",
@@ -65,8 +65,8 @@
65
65
  "@babel/preset-react": "7.24.1",
66
66
  "@babel/preset-typescript": "7.24.1",
67
67
  "@svgr/webpack": "6.5.1",
68
- "@webiny/cli": "5.41.1",
69
- "@webiny/project-utils": "5.41.1",
68
+ "@webiny/cli": "5.41.2-beta.0",
69
+ "@webiny/project-utils": "5.41.2-beta.0",
70
70
  "rimraf": "5.0.5",
71
71
  "ttypescript": "1.5.15",
72
72
  "typescript": "4.9.5"
@@ -79,5 +79,5 @@
79
79
  "build": "yarn webiny run build",
80
80
  "watch": "yarn webiny run watch"
81
81
  },
82
- "gitHead": "4d34943dbfc5a776afc74fffd2cfd2dca60bffcd"
82
+ "gitHead": "a259e2af938ceb1e2d35b2bef9edcee4459352de"
83
83
  }