@hestia-earth/ui-components 0.28.0 → 0.28.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/collapsible-box/collapsible-box.component.d.ts +9 -0
- package/common/index.d.ts +1 -0
- package/common/resized.directive.d.ts +1 -1
- package/esm2022/common/collapsible-box/collapsible-box.component.mjs +22 -0
- package/esm2022/common/drawer-container/drawer-container.component.mjs +3 -3
- package/esm2022/common/index.mjs +2 -1
- package/esm2022/common/navigation-menu/navigation-menu.component.mjs +3 -3
- package/esm2022/common/resized.directive.mjs +1 -1
- package/esm2022/common/responsive.service.mjs +2 -2
- package/esm2022/cycles/cycles-nodes/cycles-nodes.component.mjs +3 -3
- package/esm2022/files/files-error-summary/files-error-summary-item/files-error-summary-item.component.mjs +36 -0
- package/esm2022/files/files-error-summary/files-error-summary.component.mjs +62 -0
- package/esm2022/files/files-error-summary/files-error-summary.model.mjs +53 -0
- package/esm2022/files/files-error.model.mjs +11 -5
- package/esm2022/files/files-upload-errors/files-upload-errors.component.mjs +1 -1
- package/esm2022/files/index.mjs +3 -2
- package/esm2022/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +3 -3
- package/esm2022/schema/schema-validation.model.mjs +9 -2
- package/esm2022/sites/sites-nodes/sites-nodes.component.mjs +3 -3
- package/fesm2022/hestia-earth-ui-components.mjs +177 -61
- package/fesm2022/hestia-earth-ui-components.mjs.map +1 -1
- package/files/files-error-summary/files-error-summary-item/files-error-summary-item.component.d.ts +22 -0
- package/files/files-error-summary/files-error-summary.component.d.ts +37 -0
- package/files/{files-error-summary.model.d.ts → files-error-summary/files-error-summary.model.d.ts} +10 -5
- package/files/files-upload-errors/files-upload-errors.component.d.ts +20 -20
- package/files/index.d.ts +2 -1
- package/package.json +1 -1
- package/schema/schema-validation.model.d.ts +1 -0
- package/svg-icons/far-magnifier-v2.svg +3 -0
- package/svg-icons/icons.json +5 -1
- package/esm2022/files/files-error-summary.model.mjs +0 -52
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { from } from 'rxjs';
|
|
2
|
+
import { filter, map, mergeMap, reduce, toArray } from 'rxjs/operators';
|
|
3
|
+
import get from 'lodash.get';
|
|
4
|
+
import set from 'lodash.set';
|
|
5
|
+
import { SchemaType } from '@hestia-earth/schema';
|
|
6
|
+
import { unique } from '@hestia-earth/utils';
|
|
7
|
+
import { code, nodeLink } from '../../common/utils';
|
|
8
|
+
import { filterError, formatError, dataPathLabel } from '../files-error.model';
|
|
9
|
+
import { dataPathToKey } from '../files-form.model';
|
|
10
|
+
const nodeTerm = (node, key) => {
|
|
11
|
+
const termType = get(node, `${key}.type`, get(node, `${key}.@type`, null));
|
|
12
|
+
return termType === SchemaType.Term ? get(node, key, null) : null;
|
|
13
|
+
};
|
|
14
|
+
const findNodeTerm = (node, { dataPath }) => nodeTerm(node, dataPathToKey(dataPath)) ||
|
|
15
|
+
nodeTerm(node, `${dataPathToKey(dataPath)}.term`) ||
|
|
16
|
+
nodeTerm(node, dataPathToKey(dataPath, true)) ||
|
|
17
|
+
nodeTerm(node, `${dataPathToKey(dataPath, true)}.term`);
|
|
18
|
+
const uniqueTerms = (errors) => unique(errors
|
|
19
|
+
.map(({ term }) => (term ? nodeLink(term) || code(term.name || term['@id'] || term.id) : null))
|
|
20
|
+
.filter(Boolean));
|
|
21
|
+
const summaryShowErrors = (summaryData, { path, level, message }) => summaryData.find(summary => summary.path === path && summary.level === level && summary.message === message)
|
|
22
|
+
?.showErrors || true;
|
|
23
|
+
const defaultNodeLabel = (node) => node?.type || node?.['@type'] || '';
|
|
24
|
+
/**
|
|
25
|
+
* Build the summary objects.
|
|
26
|
+
*
|
|
27
|
+
* @param nodes The list of nodes.
|
|
28
|
+
* @param errors The list of errors per node.
|
|
29
|
+
* @param summaryData The previously computed summary objects.
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
export const buildSummary = (nodes = [], errors = [], summaryData = []) => from(errors).pipe(mergeMap(error => error.error.map((v, index) => ({ ...v, nodeIndex: error.index, index }))), filter(filterError), reduce((prev, error) => {
|
|
33
|
+
const { level, message, nodeIndex } = error;
|
|
34
|
+
const node = get(nodes, nodeIndex, null);
|
|
35
|
+
const label = dataPathLabel(error.dataPath) || defaultNodeLabel(node);
|
|
36
|
+
const term = error.params?.term || findNodeTerm(node, error);
|
|
37
|
+
prev[message] = prev[message] || {};
|
|
38
|
+
const key = [level, label].join('.');
|
|
39
|
+
set(prev[message], key, get(prev[message], key, []));
|
|
40
|
+
prev[message][level][label].push({ node, error, term });
|
|
41
|
+
return prev;
|
|
42
|
+
}, {}), mergeMap(data => from(Object.keys(data)).pipe(filter(message => !!message), mergeMap(message => Object.entries(data[message]).flatMap(([level, paths]) => Object.entries(paths).map(([path, summaries]) => ({
|
|
43
|
+
level,
|
|
44
|
+
path,
|
|
45
|
+
message,
|
|
46
|
+
formattedMessage: formatError(summaries[0].error, summaries.map(({ error }) => error))?.message,
|
|
47
|
+
terms: uniqueTerms(summaries).join(' ; '),
|
|
48
|
+
errors: summaries,
|
|
49
|
+
nodeIndexes: unique(summaries.map(summary => summary.error.nodeIndex)),
|
|
50
|
+
count: summaries.length,
|
|
51
|
+
showErrors: summaryShowErrors(summaryData, { level: level, path, message })
|
|
52
|
+
})))), filter(({ formattedMessage }) => !!formattedMessage))), toArray(), map(values => values.map((value, index) => ({ ...value, index }))));
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZXJyb3Itc3VtbWFyeS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1lcnJvci1zdW1tYXJ5L2ZpbGVzLWVycm9yLXN1bW1hcnkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUFzQixVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQTZCLFdBQVcsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBaUNwRCxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQTRCLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDN0QsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEdBQUcsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE9BQU8sUUFBUSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFD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QUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekMsTUFBTSxFQUFFLFNBQVM7SUFDakIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RSxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU07SUFDdkIsVUFBVSxFQUFFLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUE2QixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztDQUNwRyxDQUFhLENBQ2pCLENBQ0YsQ0FDRixFQUNELE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQ3JELENBQ0YsRUFDRCxPQUFPLEVBQUUsRUFDVCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQWUsQ0FBQyxDQUNqRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCByZWR1Y2UsIHRvQXJyYXkgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuaW1wb3J0IHNldCBmcm9tICdsb2Rhc2guc2V0JztcbmltcG9ydCB7IEpTT04gYXMgSGVzdGlhSnNvbiwgU2NoZW1hVHlwZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHVuaXF1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuXG5pbXBvcnQgeyBjb2RlLCBub2RlTGluayB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgeyBJVmFsaWRhdGlvbkVycm9yLCB2YWxpZGF0aW9uRXJyb3JMZXZlbCB9IGZyb20gJy4uLy4uL3NjaGVtYS9zY2hlbWEtdmFsaWRhdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBJVmFsaWRhdGlvbkVycm9yV2l0aEluZGV4LCBmaWx0ZXJFcnJvciwgZm9ybWF0RXJyb3IsIGRhdGFQYXRoTGFiZWwgfSBmcm9tICcuLi9maWxlcy1lcnJvci5tb2RlbCc7XG5pbXBvcnQgeyBkYXRhUGF0aFRvS2V5IH0gZnJvbSAnLi4vZmlsZXMtZm9ybS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1bW1hcnlFcnJvciB7XG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT47XG4gIGVycm9yOiBJVmFsaWRhdGlvbkVycm9yO1xuICBlcnJvckluZGV4PzogbnVtYmVyO1xuICB0ZXJtPzogYW55O1xufVxuXG5pbnRlcmZhY2UgSVN1bW1hcnlHcm91cGVkIHtcbiAgW21lc3NhZ2U6IHN0cmluZ106IHtcbiAgICBbbGV2ZWw6IHN0cmluZ106IHtcbiAgICAgIFtsYWJlbDogc3RyaW5nXTogSVN1bW1hcnlFcnJvcltdO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1bW1hcnkge1xuICAvKipcbiAgICogSW5kZXggb2YgdGhlIHN1bW1hcnkgaW4gdGhlIGxpc3QuXG4gICAqL1xuICBpbmRleDogbnVtYmVyO1xuICBsZXZlbDogdmFsaWRhdGlvbkVycm9yTGV2ZWw7XG4gIHBhdGg6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBmb3JtYXR0ZWRNZXNzYWdlOiBzdHJpbmc7XG4gIGNvdW50OiBudW1iZXI7XG4gIHNob3dFcnJvcnM6IGJvb2xlYW47XG4gIGVycm9yczogSVN1bW1hcnlFcnJvcltdO1xuICBub2RlSW5kZXhlczogbnVtYmVyW107XG4gIHRlcm1zPzogc3RyaW5nO1xufVxuXG5jb25zdCBub2RlVGVybSA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCB0ZXJtVHlwZSA9IGdldChub2RlLCBgJHtrZXl9LnR5cGVgLCBnZXQobm9kZSwgYCR7a2V5fS5AdHlwZWAsIG51bGwpKTtcbiAgcmV0dXJuIHRlcm1UeXBlID09PSBTY2hlbWFUeXBlLlRlcm0gPyBnZXQobm9kZSwga2V5LCBudWxsKSA6IG51bGw7XG59O1xuXG5jb25zdCBmaW5kTm9kZVRlcm0gPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwgeyBkYXRhUGF0aCB9OiBJVmFsaWRhdGlvbkVycm9yKSA9PlxuICBub2RlVGVybShub2RlLCBkYXRhUGF0aFRvS2V5KGRhdGFQYXRoKSkgfHxcbiAgbm9kZVRlcm0obm9kZSwgYCR7ZGF0YVBhdGhUb0tleShkYXRhUGF0aCl9LnRlcm1gKSB8fFxuICBub2RlVGVybShub2RlLCBkYXRhUGF0aFRvS2V5KGRhdGFQYXRoLCB0cnVlKSkgfHxcbiAgbm9kZVRlcm0obm9kZSwgYCR7ZGF0YVBhdGhUb0tleShkYXRhUGF0aCwgdHJ1ZSl9LnRlcm1gKTtcblxuY29uc3QgdW5pcXVlVGVybXMgPSAoZXJyb3JzOiBJU3VtbWFyeUVycm9yW10pID0+XG4gIHVuaXF1ZShcbiAgICBlcnJvcnNcbiAgICAgIC5tYXAoKHsgdGVybSB9KSA9PiAodGVybSA/IG5vZGVMaW5rKHRlcm0pIHx8IGNvZGUodGVybS5uYW1lIHx8IHRlcm1bJ0BpZCddIHx8IHRlcm0uaWQpIDogbnVsbCkpXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICk7XG5cbmNvbnN0IHN1bW1hcnlTaG93RXJyb3JzID0gKHN1bW1hcnlEYXRhOiBJU3VtbWFyeVtdLCB7IHBhdGgsIGxldmVsLCBtZXNzYWdlIH06IFBhcnRpYWw8SVN1bW1hcnk+KSA9PlxuICBzdW1tYXJ5RGF0YS5maW5kKHN1bW1hcnkgPT4gc3VtbWFyeS5wYXRoID09PSBwYXRoICYmIHN1bW1hcnkubGV2ZWwgPT09IGxldmVsICYmIHN1bW1hcnkubWVzc2FnZSA9PT0gbWVzc2FnZSlcbiAgICA/LnNob3dFcnJvcnMgfHwgdHJ1ZTtcblxuY29uc3QgZGVmYXVsdE5vZGVMYWJlbCA9IChub2RlOiBhbnkpID0+IG5vZGU/LnR5cGUgfHwgbm9kZT8uWydAdHlwZSddIHx8ICcnO1xuXG4vKipcbiAqIEJ1aWxkIHRoZSBzdW1tYXJ5IG9iamVjdHMuXG4gKlxuICogQHBhcmFtIG5vZGVzIFRoZSBsaXN0IG9mIG5vZGVzLlxuICogQHBhcmFtIGVycm9ycyBUaGUgbGlzdCBvZiBlcnJvcnMgcGVyIG5vZGUuXG4gKiBAcGFyYW0gc3VtbWFyeURhdGEgVGhlIHByZXZpb3VzbHkgY29tcHV0ZWQgc3VtbWFyeSBvYmplY3RzLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkU3VtbWFyeSA9IChcbiAgbm9kZXM6IEhlc3RpYUpzb248U2NoZW1hVHlwZT5bXSA9IFtdLFxuICBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JXaXRoSW5kZXhbXSA9IFtdLFxuICBzdW1tYXJ5RGF0YTogSVN1bW1hcnlbXSA9IFtdXG4pID0+XG4gIGZyb20oZXJyb3JzKS5waXBlKFxuICAgIG1lcmdlTWFwKGVycm9yID0+IGVycm9yLmVycm9yLm1hcCgodiwgaW5kZXgpID0+ICh7IC4uLnYsIG5vZGVJbmRleDogZXJyb3IuaW5kZXgsIGluZGV4IH0pKSksXG4gICAgZmlsdGVyKGZpbHRlckVycm9yKSxcbiAgICByZWR1Y2UoKHByZXYsIGVycm9yKSA9PiB7XG4gICAgICBjb25zdCB7IGxldmVsLCBtZXNzYWdlLCBub2RlSW5kZXggfSA9IGVycm9yIGFzIElWYWxpZGF0aW9uRXJyb3I7XG4gICAgICBjb25zdCBub2RlID0gZ2V0KG5vZGVzLCBub2RlSW5kZXghLCBudWxsKSE7XG4gICAgICBjb25zdCBsYWJlbCA9IGRhdGFQYXRoTGFiZWwoZXJyb3IuZGF0YVBhdGgpIHx8IGRlZmF1bHROb2RlTGFiZWwobm9kZSk7XG4gICAgICBjb25zdCB0ZXJtID0gZXJyb3IucGFyYW1zPy50ZXJtIHx8IGZpbmROb2RlVGVybShub2RlLCBlcnJvcik7XG4gICAgICBwcmV2W21lc3NhZ2VdID0gcHJldlttZXNzYWdlXSB8fCB7fTtcbiAgICAgIGNvbnN0IGtleSA9IFtsZXZlbCwgbGFiZWxdLmpvaW4oJy4nKTtcbiAgICAgIHNldChwcmV2W21lc3NhZ2VdLCBrZXksIGdldChwcmV2W21lc3NhZ2VdLCBrZXksIFtdKSk7XG4gICAgICBwcmV2W21lc3NhZ2VdW2xldmVsIV1bbGFiZWxdLnB1c2goeyBub2RlLCBlcnJvciwgdGVybSB9KTtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9IGFzIElTdW1tYXJ5R3JvdXBlZCksXG4gICAgbWVyZ2VNYXAoZGF0YSA9PlxuICAgICAgZnJvbShPYmplY3Qua2V5cyhkYXRhKSkucGlwZShcbiAgICAgICAgZmlsdGVyKG1lc3NhZ2UgPT4gISFtZXNzYWdlKSxcbiAgICAgICAgbWVyZ2VNYXAobWVzc2FnZSA9PlxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGFbbWVzc2FnZV0pLmZsYXRNYXAoKFtsZXZlbCwgcGF0aHNdKSA9PlxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocGF0aHMpLm1hcChcbiAgICAgICAgICAgICAgKFtwYXRoLCBzdW1tYXJpZXNdKSA9PlxuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkTWVzc2FnZTogZm9ybWF0RXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcmllc1swXS5lcnJvcixcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyaWVzLm1hcCgoeyBlcnJvciB9KSA9PiBlcnJvcilcbiAgICAgICAgICAgICAgICAgICk/Lm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICB0ZXJtczogdW5pcXVlVGVybXMoc3VtbWFyaWVzKS5qb2luKCcgOyAnKSxcbiAgICAgICAgICAgICAgICAgIGVycm9yczogc3VtbWFyaWVzLFxuICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ZXM6IHVuaXF1ZShzdW1tYXJpZXMubWFwKHN1bW1hcnkgPT4gc3VtbWFyeS5lcnJvci5ub2RlSW5kZXgpKSxcbiAgICAgICAgICAgICAgICAgIGNvdW50OiBzdW1tYXJpZXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgc2hvd0Vycm9yczogc3VtbWFyeVNob3dFcnJvcnMoc3VtbWFyeURhdGEsIHsgbGV2ZWw6IGxldmVsIGFzIHZhbGlkYXRpb25FcnJvckxldmVsLCBwYXRoLCBtZXNzYWdlIH0pXG4gICAgICAgICAgICAgICAgfSkgYXMgSVN1bW1hcnlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGZpbHRlcigoeyBmb3JtYXR0ZWRNZXNzYWdlIH0pID0+ICEhZm9ybWF0dGVkTWVzc2FnZSlcbiAgICAgIClcbiAgICApLFxuICAgIHRvQXJyYXkoKSxcbiAgICBtYXAodmFsdWVzID0+IHZhbHVlcy5tYXAoKHZhbHVlLCBpbmRleCkgPT4gKHsgLi4udmFsdWUsIGluZGV4IH0pKSBhcyBJU3VtbWFyeVtdKVxuICApO1xuIl19
|