@muraai/mnl-form 0.0.1-alpha-db0d938 → 0.0.1-alpha-f274a13

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.
@@ -8,11 +8,21 @@ export class ScoringService {
8
8
  calculateScore(model, fields) {
9
9
  let totalScore = 0;
10
10
  let categoryResults = {};
11
- for (const category of fields) {
12
- const categoryLabel = category.props?.label || 'Unnamed Category';
13
- const categoryWeight = category.props?.weight || 0;
14
- const questions = category.fieldGroup || [];
15
- const perQuestionWeight = categoryWeight / (questions.length || 1);
11
+ const processCategory = (category) => {
12
+ const categoryLabel = category.props?.label;
13
+ const categoryWeight = category.props?.weight ?? 0;
14
+ // Only treat as scoring category if it has a label + weight
15
+ if (!categoryLabel || !categoryWeight) {
16
+ // Still need to go deeper in case children have categories
17
+ if (category.fieldGroup?.length) {
18
+ category.fieldGroup.forEach(processCategory);
19
+ }
20
+ return;
21
+ }
22
+ const questions = (category.fieldGroup || []).filter(q => q.props?.scoring);
23
+ if (questions.length === 0)
24
+ return;
25
+ const perQuestionWeight = categoryWeight / questions.length;
16
26
  let categoryScore = 0;
17
27
  for (const q of questions) {
18
28
  const parentKey = category.key;
@@ -53,7 +63,9 @@ export class ScoringService {
53
63
  score: categoryScore,
54
64
  weight: categoryWeight,
55
65
  };
56
- }
66
+ };
67
+ // start recursive walk
68
+ fields.forEach(processCategory);
57
69
  return {
58
70
  totalScore,
59
71
  categoryResults,
@@ -72,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
72
84
  type: Injectable,
73
85
  args: [{ providedIn: 'root' }]
74
86
  }] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcmluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zY29yaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFFekIsV0FBVyxDQUFDLEtBQVUsRUFBRSxNQUEyQjtRQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQVUsRUFBRSxNQUF1RDtRQUN4RixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxlQUFlLEdBQXNELEVBQUUsQ0FBQztRQUU1RSxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzlCLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLGtCQUFrQixDQUFDO1lBQ2xFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNuRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUM1QyxNQUFNLGlCQUFpQixHQUFHLGNBQWMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFbkUsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBRXRCLEtBQUssTUFBTSxDQUFDLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFVLENBQUM7Z0JBQ3RDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO29CQUN6QyxDQUFDLENBQUMsQ0FBQyxHQUFJLFNBQW1CLEVBQUUsQ0FBQyxDQUFDLEdBQVUsQ0FBQztvQkFDekMsQ0FBQyxDQUFDLENBQUMsU0FBZ0IsRUFBRSxDQUFDLENBQUMsR0FBVSxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFVBQWlCLENBQUMsQ0FBQztnQkFFN0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxPQUFPO29CQUFFLFNBQVM7Z0JBRXZCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFFcEIsUUFBUSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3pCLEtBQUssV0FBVzt3QkFDZCxPQUFPOzRCQUNMLE1BQU0sS0FBSyxJQUFJO2dDQUNmLE1BQU0sS0FBSyxTQUFTO2dDQUNwQixDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzdELE1BQU07b0JBRVIsS0FBSyxZQUFZO3dCQUNmLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQzs0QkFDbEMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO3dCQUM1QyxDQUFDO3dCQUNELE1BQU07b0JBRVIsS0FBSyxPQUFPO3dCQUNWLE1BQU0sR0FBRyxHQUFHLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQ2pFLE9BQU87NEJBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7Z0NBQ3BCLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUc7Z0NBQ3pCLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQzt3QkFDNUIsTUFBTTtnQkFDVixDQUFDO2dCQUVELElBQUksT0FBTyxFQUFFLENBQUM7b0JBQ1osYUFBYSxJQUFJLGlCQUFpQixDQUFDO2dCQUNyQyxDQUFDO1lBQ0gsQ0FBQztZQUVELFVBQVUsSUFBSSxhQUFhLENBQUM7WUFDNUIsZUFBZSxDQUFDLGFBQWEsQ0FBQyxHQUFHO2dCQUMvQixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsTUFBTSxFQUFFLGNBQWM7YUFDdkIsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ0wsVUFBVTtZQUNWLGVBQWU7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsR0FBUSxFQUFFLEdBQTBDO1FBQ3pFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7K0dBN0VVLGNBQWM7bUhBQWQsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEN1c3RvbUZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2NvcmluZ1NlcnZpY2Uge1xuXG4gIHVwZGF0ZVNjb3JlKG1vZGVsOiBhbnksIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2FsY3VsYXRlU2NvcmUobW9kZWwsIGZpZWxkcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlU2NvcmUobW9kZWw6IGFueSwgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdIHwgQ3VzdG9tRm9ybWx5RmllbGRDb25maWdbXSkge1xuICAgIGxldCB0b3RhbFNjb3JlID0gMDtcbiAgICBsZXQgY2F0ZWdvcnlSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IHNjb3JlOiBudW1iZXI7IHdlaWdodDogbnVtYmVyIH0+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGNhdGVnb3J5IG9mIGZpZWxkcykge1xuICAgICAgY29uc3QgY2F0ZWdvcnlMYWJlbCA9IGNhdGVnb3J5LnByb3BzPy5sYWJlbCB8fCAnVW5uYW1lZCBDYXRlZ29yeSc7XG4gICAgICBjb25zdCBjYXRlZ29yeVdlaWdodCA9IGNhdGVnb3J5LnByb3BzPy53ZWlnaHQgfHwgMDtcbiAgICAgIGNvbnN0IHF1ZXN0aW9ucyA9IGNhdGVnb3J5LmZpZWxkR3JvdXAgfHwgW107XG4gICAgICBjb25zdCBwZXJRdWVzdGlvbldlaWdodCA9IGNhdGVnb3J5V2VpZ2h0IC8gKHF1ZXN0aW9ucy5sZW5ndGggfHwgMSk7XG5cbiAgICAgIGxldCBjYXRlZ29yeVNjb3JlID0gMDtcblxuICAgICAgZm9yIChjb25zdCBxIG9mIHF1ZXN0aW9ucykge1xuICAgICAgICBjb25zdCBwYXJlbnRLZXkgPSBjYXRlZ29yeS5rZXkgYXMgYW55O1xuICAgICAgICBjb25zdCBuZXN0ZWRQYXRoID0gQXJyYXkuaXNBcnJheShwYXJlbnRLZXkpXG4gICAgICAgICAgPyBbLi4uKHBhcmVudEtleSBhcyBhbnlbXSksIHEua2V5IGFzIGFueV1cbiAgICAgICAgICA6IFtwYXJlbnRLZXkgYXMgYW55LCBxLmtleSBhcyBhbnldO1xuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG1vZGVsLCBuZXN0ZWRQYXRoIGFzIGFueSk7XG5cbiAgICAgICAgY29uc3Qgc2NvcmluZyA9IHEucHJvcHM/LnNjb3Jpbmc7XG4gICAgICAgIGlmICghc2NvcmluZykgY29udGludWU7XG5cbiAgICAgICAgbGV0IGNvcnJlY3QgPSBmYWxzZTtcblxuICAgICAgICBzd2l0Y2ggKHNjb3JpbmcuY3JpdGVyaWEpIHtcbiAgICAgICAgICBjYXNlICdhdHRlbXB0ZWQnOlxuICAgICAgICAgICAgY29ycmVjdCA9XG4gICAgICAgICAgICAgIGFuc3dlciAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgICBhbnN3ZXIgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAodHlwZW9mIGFuc3dlciA9PT0gJ3N0cmluZycgPyBhbnN3ZXIudHJpbSgpICE9PSAnJyA6IHRydWUpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICdleGFjdE1hdGNoJzpcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjb3JpbmcuYW5zd2VyKSkge1xuICAgICAgICAgICAgICBjb3JyZWN0ID0gc2NvcmluZy5hbnN3ZXIuaW5jbHVkZXMoYW5zd2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICAgICAgY29uc3QgbnVtID0gdHlwZW9mIGFuc3dlciA9PT0gJ251bWJlcicgPyBhbnN3ZXIgOiBOdW1iZXIoYW5zd2VyKTtcbiAgICAgICAgICAgIGNvcnJlY3QgPVxuICAgICAgICAgICAgICBOdW1iZXIuaXNGaW5pdGUobnVtKSAmJlxuICAgICAgICAgICAgICBudW0gPj0gc2NvcmluZy5hbnN3ZXIubWluICYmXG4gICAgICAgICAgICAgIG51bSA8PSBzY29yaW5nLmFuc3dlci5tYXg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb3JyZWN0KSB7XG4gICAgICAgICAgY2F0ZWdvcnlTY29yZSArPSBwZXJRdWVzdGlvbldlaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0b3RhbFNjb3JlICs9IGNhdGVnb3J5U2NvcmU7XG4gICAgICBjYXRlZ29yeVJlc3VsdHNbY2F0ZWdvcnlMYWJlbF0gPSB7XG4gICAgICAgIHNjb3JlOiBjYXRlZ29yeVNjb3JlLFxuICAgICAgICB3ZWlnaHQ6IGNhdGVnb3J5V2VpZ2h0LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgdG90YWxTY29yZSxcbiAgICAgIGNhdGVnb3J5UmVzdWx0cyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXN0ZWRWYWx1ZShvYmo6IGFueSwga2V5OiBzdHJpbmcgfCBudW1iZXIgfCAoc3RyaW5nIHwgbnVtYmVyKVtdKTogYW55IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICByZXR1cm4ga2V5LnJlZHVjZSgoY3VycmVudCwgaykgPT4gY3VycmVudD8uW2tdLCBvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqPy5ba2V5XTtcbiAgfVxufSJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcmluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9zY29yaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNM0MsTUFBTSxPQUFPLGNBQWM7SUFFekIsV0FBVyxDQUFDLEtBQVUsRUFBRSxNQUEyQjtRQUNqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQVUsRUFBRSxNQUF1RDtRQUN6RixJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxlQUFlLEdBQXNELEVBQUUsQ0FBQztRQUU1RSxNQUFNLGVBQWUsR0FBRyxDQUFDLFFBQXFELEVBQUUsRUFBRTtZQUNoRixNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUM1QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFFbkQsNERBQTREO1lBQzVELElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEMsMkRBQTJEO2dCQUMzRCxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQ2hDLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUMvQyxDQUFDO2dCQUNELE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFD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QUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7K0dBNUZVLGNBQWM7bUhBQWQsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEN1c3RvbUZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2NvcmluZ1NlcnZpY2Uge1xuXG4gIHVwZGF0ZVNjb3JlKG1vZGVsOiBhbnksIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY2FsY3VsYXRlU2NvcmUobW9kZWwsIGZpZWxkcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gcHJpdmF0ZSBjYWxjdWxhdGVTY29yZShtb2RlbDogYW55LCBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW10gfCBDdXN0b21Gb3JtbHlGaWVsZENvbmZpZ1tdKSB7XG4gIGxldCB0b3RhbFNjb3JlID0gMDtcbiAgbGV0IGNhdGVnb3J5UmVzdWx0czogUmVjb3JkPHN0cmluZywgeyBzY29yZTogbnVtYmVyOyB3ZWlnaHQ6IG51bWJlciB9PiA9IHt9O1xuXG4gIGNvbnN0IHByb2Nlc3NDYXRlZ29yeSA9IChjYXRlZ29yeTogRm9ybWx5RmllbGRDb25maWcgfCBDdXN0b21Gb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgIGNvbnN0IGNhdGVnb3J5TGFiZWwgPSBjYXRlZ29yeS5wcm9wcz8ubGFiZWw7XG4gICAgY29uc3QgY2F0ZWdvcnlXZWlnaHQgPSBjYXRlZ29yeS5wcm9wcz8ud2VpZ2h0ID8/IDA7XG5cbiAgICAvLyBPbmx5IHRyZWF0IGFzIHNjb3JpbmcgY2F0ZWdvcnkgaWYgaXQgaGFzIGEgbGFiZWwgKyB3ZWlnaHRcbiAgICBpZiAoIWNhdGVnb3J5TGFiZWwgfHwgIWNhdGVnb3J5V2VpZ2h0KSB7XG4gICAgICAvLyBTdGlsbCBuZWVkIHRvIGdvIGRlZXBlciBpbiBjYXNlIGNoaWxkcmVuIGhhdmUgY2F0ZWdvcmllc1xuICAgICAgaWYgKGNhdGVnb3J5LmZpZWxkR3JvdXA/Lmxlbmd0aCkge1xuICAgICAgICBjYXRlZ29yeS5maWVsZEdyb3VwLmZvckVhY2gocHJvY2Vzc0NhdGVnb3J5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVzdGlvbnMgPSAoY2F0ZWdvcnkuZmllbGRHcm91cCB8fCBbXSkuZmlsdGVyKHEgPT4gcS5wcm9wcz8uc2NvcmluZyk7XG4gICAgaWYgKHF1ZXN0aW9ucy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IHBlclF1ZXN0aW9uV2VpZ2h0ID0gY2F0ZWdvcnlXZWlnaHQgLyBxdWVzdGlvbnMubGVuZ3RoO1xuICAgIGxldCBjYXRlZ29yeVNjb3JlID0gMDtcblxuICAgIGZvciAoY29uc3QgcSBvZiBxdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IHBhcmVudEtleSA9IGNhdGVnb3J5LmtleSBhcyBhbnk7XG4gICAgICBjb25zdCBuZXN0ZWRQYXRoID0gQXJyYXkuaXNBcnJheShwYXJlbnRLZXkpXG4gICAgICAgID8gWy4uLihwYXJlbnRLZXkgYXMgYW55W10pLCBxLmtleSBhcyBhbnldXG4gICAgICAgIDogW3BhcmVudEtleSBhcyBhbnksIHEua2V5IGFzIGFueV07XG4gICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG1vZGVsLCBuZXN0ZWRQYXRoIGFzIGFueSk7XG5cbiAgICAgIGNvbnN0IHNjb3JpbmcgPSBxLnByb3BzPy5zY29yaW5nO1xuICAgICAgaWYgKCFzY29yaW5nKSBjb250aW51ZTtcblxuICAgICAgbGV0IGNvcnJlY3QgPSBmYWxzZTtcblxuICAgICAgc3dpdGNoIChzY29yaW5nLmNyaXRlcmlhKSB7XG4gICAgICAgIGNhc2UgJ2F0dGVtcHRlZCc6XG4gICAgICAgICAgY29ycmVjdCA9XG4gICAgICAgICAgICBhbnN3ZXIgIT09IG51bGwgJiZcbiAgICAgICAgICAgIGFuc3dlciAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAodHlwZW9mIGFuc3dlciA9PT0gJ3N0cmluZycgPyBhbnN3ZXIudHJpbSgpICE9PSAnJyA6IHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2V4YWN0TWF0Y2gnOlxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjb3JpbmcuYW5zd2VyKSkge1xuICAgICAgICAgICAgY29ycmVjdCA9IHNjb3JpbmcuYW5zd2VyLmluY2x1ZGVzKGFuc3dlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICBjb25zdCBudW0gPSB0eXBlb2YgYW5zd2VyID09PSAnbnVtYmVyJyA/IGFuc3dlciA6IE51bWJlcihhbnN3ZXIpO1xuICAgICAgICAgIGNvcnJlY3QgPVxuICAgICAgICAgICAgTnVtYmVyLmlzRmluaXRlKG51bSkgJiZcbiAgICAgICAgICAgIG51bSA+PSBzY29yaW5nLmFuc3dlci5taW4gJiZcbiAgICAgICAgICAgIG51bSA8PSBzY29yaW5nLmFuc3dlci5tYXg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb3JyZWN0KSB7XG4gICAgICAgIGNhdGVnb3J5U2NvcmUgKz0gcGVyUXVlc3Rpb25XZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdG90YWxTY29yZSArPSBjYXRlZ29yeVNjb3JlO1xuICAgIGNhdGVnb3J5UmVzdWx0c1tjYXRlZ29yeUxhYmVsXSA9IHtcbiAgICAgIHNjb3JlOiBjYXRlZ29yeVNjb3JlLFxuICAgICAgd2VpZ2h0OiBjYXRlZ29yeVdlaWdodCxcbiAgICB9O1xuICB9O1xuXG4gIC8vIHN0YXJ0IHJlY3Vyc2l2ZSB3YWxrXG4gIGZpZWxkcy5mb3JFYWNoKHByb2Nlc3NDYXRlZ29yeSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3RhbFNjb3JlLFxuICAgIGNhdGVnb3J5UmVzdWx0cyxcbiAgfTtcbn1cblxuXG4gIHByaXZhdGUgZ2V0TmVzdGVkVmFsdWUob2JqOiBhbnksIGtleTogc3RyaW5nIHwgbnVtYmVyIHwgKHN0cmluZyB8IG51bWJlcilbXSk6IGFueSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSkge1xuICAgICAgcmV0dXJuIGtleS5yZWR1Y2UoKGN1cnJlbnQsIGspID0+IGN1cnJlbnQ/LltrXSwgb2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iaj8uW2tleV07XG4gIH1cbn0iXX0=
@@ -17,14 +17,24 @@ import * as i4 from "@ngx-formly/core";
17
17
  import * as i5 from "@angular/forms";
18
18
  import * as i6 from "@angular/material/slide-toggle";
19
19
  export class MnlFormHelperTextInputComponent extends FieldType {
20
+ get helperLabel() {
21
+ return this.to['helperProps']?.['helperLabel'] || 'Need help?';
22
+ }
23
+ get defaultHelperText() {
24
+ return this.to['helperProps']?.['defaultHelperText'] || '';
25
+ }
26
+ get currentValue() {
27
+ const fieldKey = this.field.key;
28
+ return this.field.model?.[fieldKey];
29
+ }
20
30
  constructor(cdr) {
21
31
  super();
22
32
  this.cdr = cdr;
23
33
  this.checked = false;
24
34
  }
25
35
  ngOnInit() {
36
+ this.originalValue = this.currentValue;
26
37
  this.setupDefaultField();
27
- // If mode is helper, set up the initial state based on scoring
28
38
  if (this.to['enableHelper']) {
29
39
  this.setCorrectValue();
30
40
  this.determineInitialState();
@@ -32,6 +42,9 @@ export class MnlFormHelperTextInputComponent extends FieldType {
32
42
  }
33
43
  toggleSlide() {
34
44
  this.checked = !this.checked;
45
+ if (this.checked) {
46
+ this.formControl?.setValue(this.defaultHelperText);
47
+ }
35
48
  this.cdr.detectChanges();
36
49
  }
37
50
  setupDefaultField() {
@@ -65,12 +78,12 @@ export class MnlFormHelperTextInputComponent extends FieldType {
65
78
  switch (this.to['scoring']?.['criteria']) {
66
79
  case 'exactMatch':
67
80
  if (Array.isArray(this.to['scoring']?.['answer']) &&
68
- !this.to['scoring']?.['answer'].includes(this.to['value'])) {
81
+ !this.to['scoring']?.['answer'].includes(this.currentValue)) {
69
82
  this.checked = true;
70
83
  }
71
84
  break;
72
85
  case 'range':
73
- const answer = this.to['value'];
86
+ const answer = this.currentValue;
74
87
  const num = typeof answer === 'number' ? answer : Number(answer);
75
88
  const correct = Number.isFinite(num) &&
76
89
  num >= this.to['scoring']?.['answer'].min &&
@@ -84,26 +97,25 @@ export class MnlFormHelperTextInputComponent extends FieldType {
84
97
  setCorrectValue() {
85
98
  switch (this.to['scoring']?.['criteria']) {
86
99
  case 'attempted':
87
- this.formControl?.setValue(this.to['value']);
100
+ this.formControl?.setValue(this.defaultHelperText);
88
101
  break;
89
102
  case 'exactMatch':
90
103
  if (Array.isArray(this.to['scoring']?.['answer']) &&
91
- !this.to['scoring']?.['answer'].includes(this.to['value'])) {
92
- this.formControl?.setValue(this.to['scoring']['answer'].join(', '));
104
+ !this.to['scoring']?.['answer'].includes(this.originalValue)) {
105
+ this.formControl?.setValue(this.defaultHelperText);
93
106
  }
94
107
  break;
95
108
  case 'range':
96
- const answer = this.to['value'];
109
+ const answer = this.currentValue;
97
110
  const num = typeof answer === 'number' ? answer : Number(answer);
98
111
  const correct = Number.isFinite(num) &&
99
112
  num >= this.to['scoring']?.['answer'].min &&
100
113
  num <= this.to['scoring']?.['answer'].max;
101
114
  if (!correct) {
102
- this.formControl?.setValue(`Value must be in range of ${this.to['scoring']?.['answer'].min} & ${this.to['scoring']?.['answer'].max}`);
115
+ this.formControl?.setValue(this.defaultHelperText);
103
116
  }
104
117
  break;
105
118
  default:
106
- this.formControl?.setValue(this.to['value']);
107
119
  break;
108
120
  }
109
121
  }
@@ -113,12 +125,12 @@ export class MnlFormHelperTextInputComponent extends FieldType {
113
125
  <!-- Helper Mode - Show toggle and conditional content -->
114
126
  <div *ngIf="to['enableHelper']">
115
127
  <mat-label>{{ to.label }}</mat-label>
116
- <div *ngIf="to['value']" class="flex-row">
117
- <span class="answer">Answer: {{ to['value'] }}</span>
128
+ <div *ngIf="originalValue" class="flex-row">
129
+ <span class="answer">{{ originalValue }}</span>
118
130
  <mat-slide-toggle
119
131
  [(ngModel)]="checked"
120
132
  (toggleChange)="toggleSlide()"
121
- >{{ to['helperLabel'] }}</mat-slide-toggle
133
+ >{{ helperLabel }}</mat-slide-toggle
122
134
  >
123
135
  </div>
124
136
 
@@ -159,12 +171,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
159
171
  <!-- Helper Mode - Show toggle and conditional content -->
160
172
  <div *ngIf="to['enableHelper']">
161
173
  <mat-label>{{ to.label }}</mat-label>
162
- <div *ngIf="to['value']" class="flex-row">
163
- <span class="answer">Answer: {{ to['value'] }}</span>
174
+ <div *ngIf="originalValue" class="flex-row">
175
+ <span class="answer">{{ originalValue }}</span>
164
176
  <mat-slide-toggle
165
177
  [(ngModel)]="checked"
166
178
  (toggleChange)="toggleSlide()"
167
- >{{ to['helperLabel'] }}</mat-slide-toggle
179
+ >{{ helperLabel }}</mat-slide-toggle
168
180
  >
169
181
  </div>
170
182
 
@@ -187,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
187
199
  </div>
188
200
  `, styles: [".helper-text-container{display:flex;flex-direction:column}.answer{font-size:12px}.textarea{margin:0!important;width:100%}.flex-row{display:flex;flex-direction:row;justify-content:space-between}.w-full{width:100%}\n"] }]
189
201
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXUtaGVscGVyLXRleHQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tbGliL3NyYy9saWIvdHlwZXMvbXUtaGVscGVyLXRleHQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFxQixTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUdMLFlBQVksR0FDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUF1RWpELE1BQU0sT0FBTywrQkFDWCxTQUFRLFNBQTBCO0lBTWxDLFlBQW9CLEdBQXNCO1FBQ3hDLEtBQUssRUFBRSxDQUFDO1FBRFUsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFIMUMsWUFBTyxHQUFHLEtBQUssQ0FBQztJQUtoQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXpCLCtEQUErRDtRQUMvRCxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFD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Qix5WEFDcEIsZUFBZSw4QkFDZixtQkFBbUIsOEJBQ25CLG1CQUFtQjs7NEZBd0RWLCtCQUErQjtrQkFyRTNDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQge1xuICBGaWVsZFR5cGVDb25maWcsXG4gIEZvcm1seUZpZWxkQ29uZmlnLFxuICBGb3JtbHlNb2R1bGUsXG59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdS1oZWxwZXItdGV4dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImhlbHBlci10ZXh0LWNvbnRhaW5lclwiPlxuICAgICAgPCEtLSBIZWxwZXIgTW9kZSAtIFNob3cgdG9nZ2xlIGFuZCBjb25kaXRpb25hbCBjb250ZW50IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInRvWydlbmFibGVIZWxwZXInXVwiPlxuICAgICAgICA8bWF0LWxhYmVsPnt7IHRvLmxhYmVsIH19PC9tYXQtbGFiZWw+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0b1sndmFsdWUnXVwiIGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFuc3dlclwiPkFuc3dlcjoge3sgdG9bJ3ZhbHVlJ10gfX08L3NwYW4+XG4gICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICAodG9nZ2xlQ2hhbmdlKT1cInRvZ2dsZVNsaWRlKClcIlxuICAgICAgICAgICAgPnt7IHRvWydoZWxwZXJMYWJlbCddIH19PC9tYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ0ZXh0YXJlYVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJjaGVja2VkXCI+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0b1sncmVhZG9ubHknXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEZWZhdWx0IE1vZGUgLSBTaG93IGZpZWxkIGRpcmVjdGx5IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cIiF0b1snZW5hYmxlSGVscGVyJ11cIj5cbiAgICAgICAgPGZvcm1seS1maWVsZCAqbmdJZj1cImRlZmF1bHRGaWVsZENvbmZpZ1wiIFtmaWVsZF09XCJkZWZhdWx0RmllbGRDb25maWdcIj5cbiAgICAgICAgPC9mb3JtbHktZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgIC5oZWxwZXItdGV4dC1jb250YWluZXJ7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgfVxuICAgICAuYW5zd2Vye1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICB9XG4gICAgICAudGV4dGFyZWF7XG4gICAgICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgIH1cbiAgICAgLmZsZXgtcm93e1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgIH1cbiAgICAgLnctZnVsbHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE1ubEZvcm1IZWxwZXJUZXh0SW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBjaGVja2VkID0gZmFsc2U7XG4gIGRlZmF1bHRGaWVsZENvbmZpZz86IEZvcm1seUZpZWxkQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldHVwRGVmYXVsdEZpZWxkKCk7XG5cbiAgICAvLyBJZiBtb2RlIGlzIGhlbHBlciwgc2V0IHVwIHRoZSBpbml0aWFsIHN0YXRlIGJhc2VkIG9uIHNjb3JpbmdcbiAgICBpZiAodGhpcy50b1snZW5hYmxlSGVscGVyJ10pIHtcbiAgICAgICAgdGhpcy5zZXRDb3JyZWN0VmFsdWUoKTtcbiAgICAgIHRoaXMuZGV0ZXJtaW5lSW5pdGlhbFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlU2xpZGUoKSB7XG4gICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBzZXR1cERlZmF1bHRGaWVsZCgpIHtcbiAgICBjb25zdCBmaWVsZENvbmZpZyA9IHRoaXMudG9bJ2RlZmF1bHRGaWVsZENvbmZpZyddO1xuICAgIGlmIChmaWVsZENvbmZpZykge1xuICAgICAgdGhpcy5kZWZhdWx0RmllbGRDb25maWcgPSB7XG4gICAgICAgIC4uLmZpZWxkQ29uZmlnLFxuICAgICAgICBrZXk6IHRoaXMuZmllbGQua2V5IHx8IGZpZWxkQ29uZmlnLmtleSB8fCAnZGVmYXVsdEtleScsXG4gICAgICAgIGZvcm1Db250cm9sOiB0aGlzLmZvcm1Db250cm9sLFxuICAgICAgICAvLyBBZGQgcmVxdWlyZWQgcHJvcGVydGllcyB0aGF0IGZvcm1seSBleHBlY3RzXG4gICAgICAgIG1vZGVsT3B0aW9uczogZmllbGRDb25maWcubW9kZWxPcHRpb25zIHx8IHRoaXMuZmllbGQubW9kZWxPcHRpb25zIHx8IHt9LFxuICAgICAgICB2YWxpZGF0b3JzOiBmaWVsZENvbmZpZy52YWxpZGF0b3JzIHx8IHRoaXMuZmllbGQudmFsaWRhdG9ycyB8fCB7fSxcbiAgICAgICAgYXN5bmNWYWxpZGF0b3JzOlxuICAgICAgICAgIGZpZWxkQ29uZmlnLmFzeW5jVmFsaWRhdG9ycyB8fCB0aGlzLmZpZWxkLmFzeW5jVmFsaWRhdG9ycyB8fCB7fSxcbiAgICAgICAgaG9va3M6IGZpZWxkQ29uZmlnLmhvb2tzIHx8IHRoaXMuZmllbGQuaG9va3MgfHwge30sXG4gICAgICAgIGV4cHJlc3Npb25zOiBmaWVsZENvbmZpZy5leHByZXNzaW9ucyB8fCB0aGlzLmZpZWxkLmV4cHJlc3Npb25zIHx8IHt9LFxuICAgICAgICBoaWRlOiBmaWVsZENvbmZpZy5oaWRlICE9PSB1bmRlZmluZWQgPyBmaWVsZENvbmZpZy5oaWRlIDogZmFsc2UsXG4gICAgICAgIGNsYXNzTmFtZTogZmllbGRDb25maWcuY2xhc3NOYW1lIHx8IHRoaXMuZmllbGQuY2xhc3NOYW1lIHx8ICcnLFxuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOlxuICAgICAgICAgIGZpZWxkQ29uZmlnLmZpZWxkR3JvdXBDbGFzc05hbWUgfHxcbiAgICAgICAgICB0aGlzLmZpZWxkLmZpZWxkR3JvdXBDbGFzc05hbWUgfHxcbiAgICAgICAgICAnJyxcbiAgICAgICAgLy8gSW5oZXJpdCBwYXJlbnQgZmllbGQncyBmb3JtIGFuZCBtb2RlbFxuICAgICAgICBwYXJlbnQ6IHRoaXMuZmllbGQucGFyZW50LFxuICAgICAgICBvcHRpb25zOiB0aGlzLmZpZWxkLm9wdGlvbnMsXG4gICAgICAgIG1vZGVsOiB0aGlzLmZpZWxkLm1vZGVsLFxuICAgICAgICBmb3JtOiB0aGlzLmZpZWxkLmZvcm0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGRldGVybWluZUluaXRpYWxTdGF0ZSgpIHtcbiAgICAvLyBBdXRvLW9wZW4gaGVscGVyIGJhc2VkIG9uIHNjb3JpbmcgY3JpdGVyaWFcbiAgICBzd2l0Y2ggKHRoaXMudG9bJ3Njb3JpbmcnXT8uWydjcml0ZXJpYSddKSB7XG4gICAgICBjYXNlICdleGFjdE1hdGNoJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy50b1snc2NvcmluZyddPy5bJ2Fuc3dlciddKSAmJlxuICAgICAgICAgICF0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10uaW5jbHVkZXModGhpcy50b1sndmFsdWUnXSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLnRvWyd2YWx1ZSddO1xuICAgICAgICBjb25zdCBudW0gPSB0eXBlb2YgYW5zd2VyID09PSAnbnVtYmVyJyA/IGFuc3dlciA6IE51bWJlcihhbnN3ZXIpO1xuXG4gICAgICAgIGNvbnN0IGNvcnJlY3QgPVxuICAgICAgICAgIE51bWJlci5pc0Zpbml0ZShudW0pICYmXG4gICAgICAgICAgbnVtID49IHRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5taW4gJiZcbiAgICAgICAgICBudW0gPD0gdGhpcy50b1snc2NvcmluZyddPy5bJ2Fuc3dlciddLm1heDtcblxuICAgICAgICBpZiAoIWNvcnJlY3QpIHtcbiAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHNldENvcnJlY3RWYWx1ZSgpIHtcbiAgICBzd2l0Y2ggKHRoaXMudG9bJ3Njb3JpbmcnXT8uWydjcml0ZXJpYSddKSB7XG4gICAgICBjYXNlICdhdHRlbXB0ZWQnOlxuICAgICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLnRvWyd2YWx1ZSddKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2V4YWN0TWF0Y2gnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgQXJyYXkuaXNBcnJheSh0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10pICYmXG4gICAgICAgICAgIXRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5pbmNsdWRlcyh0aGlzLnRvWyd2YWx1ZSddKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLnRvWydzY29yaW5nJ11bJ2Fuc3dlciddLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgIGNvbnN0IGFuc3dlciA9IHRoaXMudG9bJ3ZhbHVlJ107XG4gICAgICAgIGNvbnN0IG51bSA9IHR5cGVvZiBhbnN3ZXIgPT09ICdudW1iZXInID8gYW5zd2VyIDogTnVtYmVyKGFuc3dlcik7XG5cbiAgICAgICAgY29uc3QgY29ycmVjdCA9XG4gICAgICAgICAgTnVtYmVyLmlzRmluaXRlKG51bSkgJiZcbiAgICAgICAgICBudW0gPj0gdGhpcy50b1snc2NvcmluZyddPy5bJ2Fuc3dlciddLm1pbiAmJlxuICAgICAgICAgIG51bSA8PSB0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10ubWF4O1xuXG4gICAgICAgIGlmICghY29ycmVjdCkge1xuICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldFZhbHVlKFxuICAgICAgICAgICAgYFZhbHVlIG11c3QgYmUgaW4gcmFuZ2Ugb2YgJHt0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10ubWlufSAmICR7dGhpcy50b1snc2NvcmluZyddPy5bJ2Fuc3dlciddLm1heH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUodGhpcy50b1sndmFsdWUnXSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXUtaGVscGVyLXRleHQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tbGliL3NyYy9saWIvdHlwZXMvbXUtaGVscGVyLXRleHQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFxQixTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUdMLFlBQVksR0FDYixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUF1RWpELE1BQU0sT0FBTywrQkFDWCxTQUFRLFNBQTBCO0lBSWxDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLFlBQVksQ0FBQztJQUNqRSxDQUFDO0lBQ0QsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLENBQUM7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Q0FBQzsrR0FoSVUsK0JBQStCO21HQUEvQiwrQkFBK0IsaUdBdERoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCwrUkExQ0MsWUFBWSxrSUFDWixjQUFjLHNuQkFDZCxZQUFZLCtPQUNaLG1CQUFtQix5a0JBQ25CLFdBQVcsc1BBQ1gsa0JBQWtCLDhCQUNsQixvQkFBb0IseVhBQ3BCLGVBQWUsOEJBQ2YsbUJBQW1CLDhCQUNuQixtQkFBbUI7OzRGQXdEViwrQkFBK0I7a0JBckUzQyxTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixtQkFBbUI7cUJBQ3BCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdE5hdGl2ZURhdGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHtcbiAgRmllbGRUeXBlQ29uZmlnLFxuICBGb3JtbHlGaWVsZENvbmZpZyxcbiAgRm9ybWx5TW9kdWxlLFxufSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJ0BuZ3gtZm9ybWx5L21hdGVyaWFsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXUtaGVscGVyLXRleHQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJoZWxwZXItdGV4dC1jb250YWluZXJcIj5cbiAgICAgIDwhLS0gSGVscGVyIE1vZGUgLSBTaG93IHRvZ2dsZSBhbmQgY29uZGl0aW9uYWwgY29udGVudCAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJ0b1snZW5hYmxlSGVscGVyJ11cIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyB0by5sYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3JpZ2luYWxWYWx1ZVwiIGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFuc3dlclwiPnt7IG9yaWdpbmFsVmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICAodG9nZ2xlQ2hhbmdlKT1cInRvZ2dsZVNsaWRlKClcIlxuICAgICAgICAgICAgPnt7IGhlbHBlckxhYmVsIH19PC9tYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ0ZXh0YXJlYVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgKm5nSWY9XCJjaGVja2VkXCI+XG4gICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtmb3JtbHlBdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJ0b1sncmVhZG9ubHknXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEZWZhdWx0IE1vZGUgLSBTaG93IGZpZWxkIGRpcmVjdGx5IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cIiF0b1snZW5hYmxlSGVscGVyJ11cIj5cbiAgICAgICAgPGZvcm1seS1maWVsZCAqbmdJZj1cImRlZmF1bHRGaWVsZENvbmZpZ1wiIFtmaWVsZF09XCJkZWZhdWx0RmllbGRDb25maWdcIj5cbiAgICAgICAgPC9mb3JtbHktZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgIC5oZWxwZXItdGV4dC1jb250YWluZXJ7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgfVxuICAgICAuYW5zd2Vye1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICB9XG4gICAgICAudGV4dGFyZWF7XG4gICAgICBtYXJnaW46IDBweCAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgIH1cbiAgICAgLmZsZXgtcm93e1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgIH1cbiAgICAgLnctZnVsbHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICB9XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE1ubEZvcm1IZWxwZXJUZXh0SW5wdXRDb21wb25lbnRcbiAgZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBjaGVja2VkID0gZmFsc2U7XG4gIGdldCBoZWxwZXJMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy50b1snaGVscGVyUHJvcHMnXT8uWydoZWxwZXJMYWJlbCddIHx8ICdOZWVkIGhlbHA/JztcbiAgfVxuICBnZXQgZGVmYXVsdEhlbHBlclRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9bJ2hlbHBlclByb3BzJ10/LlsnZGVmYXVsdEhlbHBlclRleHQnXSB8fCAnJztcbiAgfVxuICBnZXQgY3VycmVudFZhbHVlKCkge1xuICAgIGNvbnN0IGZpZWxkS2V5ID0gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nO1xuICAgIHJldHVybiB0aGlzLmZpZWxkLm1vZGVsPy5bZmllbGRLZXldO1xuICB9XG4gIG9yaWdpbmFsVmFsdWU6IGFueTtcbiAgZGVmYXVsdEZpZWxkQ29uZmlnPzogRm9ybWx5RmllbGRDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub3JpZ2luYWxWYWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlOyAgICBcbiAgICB0aGlzLnNldHVwRGVmYXVsdEZpZWxkKCk7XG4gICAgaWYgKHRoaXMudG9bJ2VuYWJsZUhlbHBlciddKSB7XG4gICAgICB0aGlzLnNldENvcnJlY3RWYWx1ZSgpO1xuICAgICAgdGhpcy5kZXRlcm1pbmVJbml0aWFsU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTbGlkZSgpIHtcbiAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgIGlmKHRoaXMuY2hlY2tlZCkge1xuICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUodGhpcy5kZWZhdWx0SGVscGVyVGV4dCk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHNldHVwRGVmYXVsdEZpZWxkKCkge1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy50b1snZGVmYXVsdEZpZWxkQ29uZmlnJ107XG4gICAgaWYgKGZpZWxkQ29uZmlnKSB7XG4gICAgICB0aGlzLmRlZmF1bHRGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgLi4uZmllbGRDb25maWcsXG4gICAgICAgIGtleTogdGhpcy5maWVsZC5rZXkgfHwgZmllbGRDb25maWcua2V5IHx8ICdkZWZhdWx0S2V5JyxcbiAgICAgICAgZm9ybUNvbnRyb2w6IHRoaXMuZm9ybUNvbnRyb2wsXG4gICAgICAgIC8vIEFkZCByZXF1aXJlZCBwcm9wZXJ0aWVzIHRoYXQgZm9ybWx5IGV4cGVjdHNcbiAgICAgICAgbW9kZWxPcHRpb25zOiBmaWVsZENvbmZpZy5tb2RlbE9wdGlvbnMgfHwgdGhpcy5maWVsZC5tb2RlbE9wdGlvbnMgfHwge30sXG4gICAgICAgIHZhbGlkYXRvcnM6IGZpZWxkQ29uZmlnLnZhbGlkYXRvcnMgfHwgdGhpcy5maWVsZC52YWxpZGF0b3JzIHx8IHt9LFxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6XG4gICAgICAgICAgZmllbGRDb25maWcuYXN5bmNWYWxpZGF0b3JzIHx8IHRoaXMuZmllbGQuYXN5bmNWYWxpZGF0b3JzIHx8IHt9LFxuICAgICAgICBob29rczogZmllbGRDb25maWcuaG9va3MgfHwgdGhpcy5maWVsZC5ob29rcyB8fCB7fSxcbiAgICAgICAgZXhwcmVzc2lvbnM6IGZpZWxkQ29uZmlnLmV4cHJlc3Npb25zIHx8IHRoaXMuZmllbGQuZXhwcmVzc2lvbnMgfHwge30sXG4gICAgICAgIGhpZGU6IGZpZWxkQ29uZmlnLmhpZGUgIT09IHVuZGVmaW5lZCA/IGZpZWxkQ29uZmlnLmhpZGUgOiBmYWxzZSxcbiAgICAgICAgY2xhc3NOYW1lOiBmaWVsZENvbmZpZy5jbGFzc05hbWUgfHwgdGhpcy5maWVsZC5jbGFzc05hbWUgfHwgJycsXG4gICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6XG4gICAgICAgICAgZmllbGRDb25maWcuZmllbGRHcm91cENsYXNzTmFtZSB8fFxuICAgICAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cENsYXNzTmFtZSB8fFxuICAgICAgICAgICcnLFxuICAgICAgICAvLyBJbmhlcml0IHBhcmVudCBmaWVsZCdzIGZvcm0gYW5kIG1vZGVsXG4gICAgICAgIHBhcmVudDogdGhpcy5maWVsZC5wYXJlbnQsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuZmllbGQub3B0aW9ucyxcbiAgICAgICAgbW9kZWw6IHRoaXMuZmllbGQubW9kZWwsXG4gICAgICAgIGZvcm06IHRoaXMuZmllbGQuZm9ybSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgZGV0ZXJtaW5lSW5pdGlhbFN0YXRlKCkge1xuICAgIC8vIEF1dG8tb3BlbiBoZWxwZXIgYmFzZWQgb24gc2NvcmluZyBjcml0ZXJpYVxuICAgIHN3aXRjaCAodGhpcy50b1snc2NvcmluZyddPy5bJ2NyaXRlcmlhJ10pIHtcbiAgICAgIGNhc2UgJ2V4YWN0TWF0Y2gnOlxuICAgICAgICBpZiAoXG4gICAgICAgICAgQXJyYXkuaXNBcnJheSh0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10pICYmXG4gICAgICAgICAgIXRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5pbmNsdWRlcyh0aGlzLmN1cnJlbnRWYWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgY29uc3QgbnVtID0gdHlwZW9mIGFuc3dlciA9PT0gJ251bWJlcicgPyBhbnN3ZXIgOiBOdW1iZXIoYW5zd2VyKTtcblxuICAgICAgICBjb25zdCBjb3JyZWN0ID1cbiAgICAgICAgICBOdW1iZXIuaXNGaW5pdGUobnVtKSAmJlxuICAgICAgICAgIG51bSA+PSB0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10ubWluICYmXG4gICAgICAgICAgbnVtIDw9IHRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5tYXg7XG5cbiAgICAgICAgaWYgKCFjb3JyZWN0KSB7XG4gICAgICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRDb3JyZWN0VmFsdWUoKSB7XG4gICAgc3dpdGNoICh0aGlzLnRvWydzY29yaW5nJ10/LlsnY3JpdGVyaWEnXSkge1xuICAgICAgY2FzZSAnYXR0ZW1wdGVkJzpcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUodGhpcy5kZWZhdWx0SGVscGVyVGV4dCk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdleGFjdE1hdGNoJzpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkodGhpcy50b1snc2NvcmluZyddPy5bJ2Fuc3dlciddKSAmJlxuICAgICAgICAgICF0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10uaW5jbHVkZXModGhpcy5vcmlnaW5hbFZhbHVlKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRIZWxwZXJUZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgY29uc3QgbnVtID0gdHlwZW9mIGFuc3dlciA9PT0gJ251bWJlcicgPyBhbnN3ZXIgOiBOdW1iZXIoYW5zd2VyKTtcblxuICAgICAgICBjb25zdCBjb3JyZWN0ID1cbiAgICAgICAgICBOdW1iZXIuaXNGaW5pdGUobnVtKSAmJlxuICAgICAgICAgIG51bSA+PSB0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10ubWluICYmXG4gICAgICAgICAgbnVtIDw9IHRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5tYXg7XG5cbiAgICAgICAgaWYgKCFjb3JyZWN0KSB7XG4gICAgICAgICAgdGhpcy5mb3JtQ29udHJvbD8uc2V0VmFsdWUodGhpcy5kZWZhdWx0SGVscGVyVGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -146,7 +146,7 @@ export class FormlyFieldScrollableTabsComponent extends FieldType {
146
146
  </div>
147
147
  </div>
148
148
  </div>
149
- `, isInline: true, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%}.tabs-container .sticky-tabs{position:sticky;z-index:1}.tabs-container .tab-content{flex:1;overflow-y:auto;padding:16px}.tabs-container .tab-content .tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d}.tabs-container .tab-content .tab-section h2{margin:0 0 8px}.tabs-container .tab-content .tab-section .spacer{height:400px}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
149
+ `, isInline: true, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%;.sticky-tabs{position:sticky;z-index:1}.tab-content{flex:1;overflow-y:auto;padding:16px;.tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d;h2{margin:0 0 8px}.spacer{height:400px}}}}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
150
150
  }
151
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldScrollableTabsComponent, decorators: [{
152
152
  type: Component,
@@ -209,7 +209,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
209
209
  </div>
210
210
  </div>
211
211
  </div>
212
- `, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%}.tabs-container .sticky-tabs{position:sticky;z-index:1}.tabs-container .tab-content{flex:1;overflow-y:auto;padding:16px}.tabs-container .tab-content .tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d}.tabs-container .tab-content .tab-section h2{margin:0 0 8px}.tabs-container .tab-content .tab-section .spacer{height:400px}\n"] }]
212
+ `, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%;.sticky-tabs{position:sticky;z-index:1}.tab-content{flex:1;overflow-y:auto;padding:16px;.tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d;h2{margin:0 0 8px}.spacer{height:400px}}}}\n"] }]
213
213
  }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { tabGroup: [{
214
214
  type: ViewChild,
215
215
  args: ['tabGroup']
@@ -217,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
217
217
  type: ViewChild,
218
218
  args: ['tabContent', { static: false }]
219
219
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS10YWJzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi90eXBlcy9zY3JvbGxhYmxlLXRhYnMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFHTCxhQUFhLEdBQ2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNMLFNBQVMsR0FFVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBMEd0RCxNQUFNLE9BQU8sa0NBQ1gsU0FBUSxTQUEwQjtJQWNsQyxZQUFvQixNQUFjO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVRsQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSXhCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO0lBT2xCLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBcUI7UUFDM0IsSUFBSSxRQUFRLElBQUksUUFBUSxD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LDhCQUNmLFlBQVksb1ZBQ1osZUFBZSwyRkFDZixhQUFhLG1MQUNiLGdCQUFnQjs7NEZBNkZQLGtDQUFrQztrQkF4RzlDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUDt3QkFDUCxhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRFQ7MkVBaURzQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3VCLFVBQVU7c0JBQXJELFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGluamVjdCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7XG4gIE1hdFRhYkNoYW5nZUV2ZW50LFxuICBNYXRUYWJHcm91cCxcbiAgTWF0VGFic01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgRmllbGRUeXBlLFxuICBGaWVsZFR5cGVDb25maWcsXG59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXUtZm9ybWx5LWZpZWxkLXRhYnMxJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJ0YWJzLWNvbnRhaW5lclwiPlxuICAgICAgPG1hdC10YWItZ3JvdXBcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktdGFic1wiXG4gICAgICAgIFsoc2VsZWN0ZWRJbmRleCldPVwic2VsZWN0ZWRJbmRleFwiXG4gICAgICAgIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cIm9uVGFiSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgQGZvcih0YWIgb2YgZmllbGQuZmllbGRHcm91cDsgdHJhY2sgdGFiOyBsZXQgaSA9ICRpbmRleDsgbGV0IGxhc3QgPVxuICAgICAgICAkbGFzdCl7XG4gICAgICAgIDxtYXQtdGFiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXQtdGFiLWxhYmVsPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgIWlzVmFsaWQoZmllbGQuZmllbGRHcm91cCA/IGZpZWxkLmZpZWxkR3JvdXBbaV0gOiB7fSkgJiZcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybVN0YXRlPy5zaG93VmFsaWRhdGlvbkVycm9yXG4gICAgICAgICAgICAgICAgICAgID8gJ3JlZCdcbiAgICAgICAgICAgICAgICAgICAgOiAnYmxhY2snXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyB0YWI/LnByb3BzPy5sYWJlbCB8fCAnJyB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7eyAnTUFOREFUT1JZX0ZJRUxEU19UT09MVElQJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIWlzVmFsaWQoZmllbGQuZmllbGRHcm91cCA/IGZpZWxkLmZpZWxkR3JvdXBbaV0gOiB7fSkgJiZcbiAgICAgICAgICAgICAgICBvcHRpb25zLmZvcm1TdGF0ZT8uc2hvd1ZhbGlkYXRpb25FcnJvclxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVycm9yLXN0ZXBcIlxuICAgICAgICAgICAgICA+ZXJyb3I8L21hdC1pY29uXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICB9XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBmaWVsZC5maWVsZEdyb3VwOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICBbaWRdPVwiJ3RhYi0nICsgaVwiXG4gICAgICAgICAgY2xhc3M9XCJ0YWItc2VjdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJ0YWItdGl0bGVcIiAqbmdJZj1cInRhYj8ucHJvcHM/LmxhYmVsXCI+XG4gICAgICAgICAgICB7eyB0YWI/LnByb3BzPy5sYWJlbCB8fCAnJyB9fVxuICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgPGZvcm1seS1maWVsZCBbZmllbGRdPVwidGFiXCI+PC9mb3JtbHktZmllbGQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC50YWItdGl0bGUge1xuICAgICAgICBjb2xvcjogIzAwYWU0ZDtcbiAgICAgIH1cbiAgICAgIC5lcnJvci1zdGVwIHtcbiAgICAgICAgY29sb3I6ICNkMzJmMmYgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC50YWJzLWNvbnRhaW5lciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGhlaWdodDogMTAwJTtcblxuICAgICAgICAuc3RpY2t5LXRhYnMge1xuICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgfVxuXG4gICAgICAgIC50YWItY29udGVudCB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XG5cbiAgICAgICAgICAudGFiLXNlY3Rpb24ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNDVweDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjMDBhZTRkO1xuXG4gICAgICAgICAgICBoMiB7XG4gICAgICAgICAgICAgIG1hcmdpbjogMCAwIDhweDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNwYWNlciB7XG4gICAgICAgICAgICAgIGhlaWdodDogNDAwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWx5RmllbGRTY3JvbGxhYmxlVGFic0NvbXBvbmVudFxuICBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIHN1Ym1pdHRlZERhdGEhOiBhbnlbXTtcblxuICByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgdXNlcjogYW55O1xuICBAVmlld0NoaWxkKCd0YWJHcm91cCcpIHRhYkdyb3VwITogTWF0VGFiR3JvdXA7XG5cbiAgc2VsZWN0ZWRJbmRleCA9IDA7XG4gIEBWaWV3Q2hpbGQoJ3RhYkNvbnRlbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFiQ29udGVudCE6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBkZWJvdW5jZVRpbWVvdXQ6IGFueTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5leHRUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKSB7XG4gICAgaWYgKHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFiR3JvdXAuc2VsZWN0ZWRJbmRleDtcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPCAodGFiR3JvdXAuX3RhYnM/Lmxlbmd0aCB8fCAwKSAtIDEpIHtcbiAgICAgICAgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IGN1cnJlbnRJbmRleCArIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJldmlvdXNUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKSB7XG4gICAgaWYgKHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggIT0gbnVsbCkge1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFiR3JvdXAuc2VsZWN0ZWRJbmRleDtcbiAgICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XG4gICAgICAgIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBjdXJyZW50SW5kZXggLSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzRmlyc3RUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPT09IDA7XG4gIH1cblxuICBpc0xhc3RUYWIodGFiR3JvdXA6IE1hdFRhYkdyb3VwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRhYkdyb3VwICYmIHRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPT09ICh0YWJHcm91cC5fdGFicz8ubGVuZ3RoIHx8IDApIC0gMVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsb2dnZWRJblVzZXInKSB8fCAne30nKTtcbiAgfVxuXG4gIGlzVmFsaWQoZmllbGQ6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChmaWVsZC5rZXkpIHtcbiAgICAgIGlmIChmaWVsZC5wcm9wcz8uZXhjbHVkZVZhbGlkYXRpb24pIHJldHVybiB0cnVlO1xuICAgICAgcmV0dXJuIGZpZWxkPy5mb3JtQ29udHJvbD8udmFsaWQgfHwgZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkLmZpZWxkR3JvdXBcbiAgICAgID8gZmllbGQuZmllbGRHcm91cC5ldmVyeSgoZjogYW55KSA9PiB0aGlzLmlzVmFsaWQoZikpXG4gICAgICA6IHRydWU7XG4gIH1cblxuICBvblRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBldmVudC5pbmRleDtcbiAgICBjb25zb2xlLmxvZygnU2VsZWN0ZWQgdGFiIGluZGV4OicsIHRoaXMuc2VsZWN0ZWRJbmRleCk7XG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5wcm9wcz8uWyd0YWJDaGFuZ2UnXSkge1xuICAgICAgdGhpcy5maWVsZC5wcm9wcz8uWyd0YWJDaGFuZ2UnXShldmVudCwgdGhpcy5maWVsZCk7XG4gICAgfVxuICB9XG5cbiAgb25UYWJJbmRleENoYW5nZShpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGB0YWItJHtpbmRleH1gKTtcbiAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xuICAgICAgdGFyZ2V0RWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdzdGFydCcgfSk7XG4gICAgfVxuICB9XG5cbiAgb25TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVib3VuY2VUaW1lb3V0KTtcblxuICAgIHRoaXMuZGVib3VuY2VUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBzY3JvbGxDb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPSBzY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wO1xuXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5maWVsZC5maWVsZEdyb3VwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuZmllbGQuZmllbGRHcm91cD8ubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHRhYi0ke2luZGV4fWApO1xuICAgICAgICAgICAgaWYgKHRhYkVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgY29uc3QgdGFiVG9wID0gdGFiRWxlbWVudC5vZmZzZXRUb3AgLSBzY3JvbGxDb250YWluZXIub2Zmc2V0VG9wO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHRhYkhlaWdodCA9IHRhYkVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgIGlmIChzY3JvbGxUb3AgPj0gdGFiVG9wICYmIHNjcm9sbFRvcCA8IHRhYlRvcCArIHRhYkhlaWdodCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sIDEwMCk7XG4gIH1cbn1cbiJdfQ==
220
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS10YWJzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1saWIvc3JjL2xpYi90eXBlcy9zY3JvbGxhYmxlLXRhYnMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFHTCxhQUFhLEdBQ2QsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUNMLFNBQVMsR0FFVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBMEd0RCxNQUFNLE9BQU8sa0NBQ1gsU0FBUSxTQUEwQjtJQWNsQyxZQUFvQixNQUFjO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVRsQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSXhCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO0lBT2xCLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBcUI7UUFDM0IsSUFBSSxRQUFRLElBQUksUUFBUSxD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OEJBQ2YsWUFBWSxvVkFDWixlQUFlLDJGQUNmLGFBQWEsbUxBQ2IsZ0JBQWdCOzs0RkE2RlAsa0NBQWtDO2tCQXhHOUMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQO3dCQUNQLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtEVDsyRUFpRHNCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFHdUIsVUFBVTtzQkFBckQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBOZ1pvbmUsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtcbiAgTWF0VGFiQ2hhbmdlRXZlbnQsXG4gIE1hdFRhYkdyb3VwLFxuICBNYXRUYWJzTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBGaWVsZFR5cGUsXG4gIEZpZWxkVHlwZUNvbmZpZyxcbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdS1mb3JtbHktZmllbGQtdGFiczEnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1seU1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInRhYnMtY29udGFpbmVyXCI+XG4gICAgICA8bWF0LXRhYi1ncm91cFxuICAgICAgICBjbGFzcz1cInN0aWNreS10YWJzXCJcbiAgICAgICAgWyhzZWxlY3RlZEluZGV4KV09XCJzZWxlY3RlZEluZGV4XCJcbiAgICAgICAgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwib25UYWJJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKHNlbGVjdGVkVGFiQ2hhbmdlKT1cIm9uVGFiQ2hhbmdlKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICBAZm9yKHRhYiBvZiBmaWVsZC5maWVsZEdyb3VwOyB0cmFjayB0YWI7IGxldCBpID0gJGluZGV4OyBsZXQgbGFzdCA9XG4gICAgICAgICRsYXN0KXtcbiAgICAgICAgPG1hdC10YWI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgICAgICAhaXNWYWxpZChmaWVsZC5maWVsZEdyb3VwID8gZmllbGQuZmllbGRHcm91cFtpXSA6IHt9KSAmJlxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mb3JtU3RhdGU/LnNob3dWYWxpZGF0aW9uRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgPyAncmVkJ1xuICAgICAgICAgICAgICAgICAgICA6ICdibGFjaydcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHRhYj8ucHJvcHM/LmxhYmVsIHx8ICcnIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7ICdNQU5EQVRPUllfRklFTERTX1RPT0xUSVAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAhaXNWYWxpZChmaWVsZC5maWVsZEdyb3VwID8gZmllbGQuZmllbGRHcm91cFtpXSA6IHt9KSAmJlxuICAgICAgICAgICAgICAgIG9wdGlvbnMuZm9ybVN0YXRlPy5zaG93VmFsaWRhdGlvbkVycm9yXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXJyb3Itc3RlcFwiXG4gICAgICAgICAgICAgID5lcnJvcjwvbWF0LWljb25cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cblxuICAgICAgPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIGZpZWxkLmZpZWxkR3JvdXA7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtpZF09XCIndGFiLScgKyBpXCJcbiAgICAgICAgICBjbGFzcz1cInRhYi1zZWN0aW9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoMiBjbGFzcz1cInRhYi10aXRsZVwiICpuZ0lmPVwidGFiPy5wcm9wcz8ubGFiZWxcIj5cbiAgICAgICAgICAgIHt7IHRhYj8ucHJvcHM/LmxhYmVsIHx8ICcnIH19XG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgICA8Zm9ybWx5LWZpZWxkIFtmaWVsZF09XCJ0YWJcIj48L2Zvcm1seS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnRhYi10aXRsZSB7XG4gICAgICAgIGNvbG9yOiAjMDBhZTRkO1xuICAgICAgfVxuICAgICAgLmVycm9yLXN0ZXAge1xuICAgICAgICBjb2xvcjogI2QzMmYyZiAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLnRhYnMtY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgICAgIC5zdGlja3ktdGFicyB7XG4gICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcbiAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRhYi1jb250ZW50IHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgcGFkZGluZzogMTZweDtcblxuICAgICAgICAgIC50YWItc2VjdGlvbiB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0NXB4O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwMGFlNGQ7XG5cbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiAwIDAgOHB4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc3BhY2VyIHtcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtbHlGaWVsZFNjcm9sbGFibGVUYWJzQ29tcG9uZW50XG4gIGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgc3VibWl0dGVkRGF0YSE6IGFueVtdO1xuXG4gIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICB1c2VyOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJykgdGFiR3JvdXAhOiBNYXRUYWJHcm91cDtcblxuICBzZWxlY3RlZEluZGV4ID0gMDtcbiAgQFZpZXdDaGlsZCgndGFiQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0YWJDb250ZW50ITogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIGRlYm91bmNlVGltZW91dDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmV4dFRhYih0YWJHcm91cDogTWF0VGFiR3JvdXApIHtcbiAgICBpZiAodGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0YWJHcm91cC5zZWxlY3RlZEluZGV4O1xuICAgICAgaWYgKGN1cnJlbnRJbmRleCA8ICh0YWJHcm91cC5fdGFicz8ubGVuZ3RoIHx8IDApIC0gMSkge1xuICAgICAgICB0YWJHcm91cC5zZWxlY3RlZEluZGV4ID0gY3VycmVudEluZGV4ICsgMTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcmV2aW91c1RhYih0YWJHcm91cDogTWF0VGFiR3JvdXApIHtcbiAgICBpZiAodGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0YWJHcm91cC5zZWxlY3RlZEluZGV4O1xuICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgICAgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IGN1cnJlbnRJbmRleCAtIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNGaXJzdFRhYih0YWJHcm91cDogTWF0VGFiR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9PT0gMDtcbiAgfVxuXG4gIGlzTGFzdFRhYih0YWJHcm91cDogTWF0VGFiR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGFiR3JvdXAgJiYgdGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9PT0gKHRhYkdyb3VwLl90YWJzPy5sZW5ndGggfHwgMCkgLSAxXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xvZ2dlZEluVXNlcicpIHx8ICd7fScpO1xuICB9XG5cbiAgaXNWYWxpZChmaWVsZDogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGZpZWxkLmtleSkge1xuICAgICAgaWYgKGZpZWxkLnByb3BzPy5leGNsdWRlVmFsaWRhdGlvbikgcmV0dXJuIHRydWU7XG4gICAgICByZXR1cm4gZmllbGQ/LmZvcm1Db250cm9sPy52YWxpZCB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGQuZmllbGRHcm91cFxuICAgICAgPyBmaWVsZC5maWVsZEdyb3VwLmV2ZXJ5KChmOiBhbnkpID0+IHRoaXMuaXNWYWxpZChmKSlcbiAgICAgIDogdHJ1ZTtcbiAgfVxuXG4gIG9uVGFiQ2hhbmdlKGV2ZW50OiBNYXRUYWJDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGV2ZW50LmluZGV4O1xuICAgIGNvbnNvbGUubG9nKCdTZWxlY3RlZCB0YWIgaW5kZXg6JywgdGhpcy5zZWxlY3RlZEluZGV4KTtcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLnByb3BzPy5bJ3RhYkNoYW5nZSddKSB7XG4gICAgICB0aGlzLmZpZWxkLnByb3BzPy5bJ3RhYkNoYW5nZSddKGV2ZW50LCB0aGlzLmZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBvblRhYkluZGV4Q2hhbmdlKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHRhYi0ke2luZGV4fWApO1xuICAgIGlmICh0YXJnZXRFbGVtZW50KSB7XG4gICAgICB0YXJnZXRFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTtcbiAgICB9XG4gIH1cblxuICBvblNjcm9sbChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5kZWJvdW5jZVRpbWVvdXQpO1xuXG4gICAgdGhpcy5kZWJvdW5jZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHNjcm9sbENvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3A7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmZpZWxkR3JvdXApIHtcbiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5maWVsZC5maWVsZEdyb3VwPy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdGFiLSR7aW5kZXh9YCk7XG4gICAgICAgICAgICBpZiAodGFiRWxlbWVudCkge1xuICAgICAgICAgICAgICBjb25zdCB0YWJUb3AgPSB0YWJFbGVtZW50Lm9mZnNldFRvcCAtIHNjcm9sbENvbnRhaW5lci5vZmZzZXRUb3A7XG5cbiAgICAgICAgICAgICAgY29uc3QgdGFiSGVpZ2h0ID0gdGFiRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgaWYgKHNjcm9sbFRvcCA+PSB0YWJUb3AgJiYgc2Nyb2xsVG9wIDwgdGFiVG9wICsgdGFiSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSwgMTAwKTtcbiAgfVxufVxuIl19
@@ -4193,7 +4193,7 @@ class FormlyFieldScrollableTabsComponent extends FieldType {
4193
4193
  </div>
4194
4194
  </div>
4195
4195
  </div>
4196
- `, isInline: true, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%}.tabs-container .sticky-tabs{position:sticky;z-index:1}.tabs-container .tab-content{flex:1;overflow-y:auto;padding:16px}.tabs-container .tab-content .tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d}.tabs-container .tab-content .tab-section h2{margin:0 0 8px}.tabs-container .tab-content .tab-section .spacer{height:400px}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i1$1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i1$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i1$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$1.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
4196
+ `, isInline: true, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%;.sticky-tabs{position:sticky;z-index:1}.tab-content{flex:1;overflow-y:auto;padding:16px;.tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d;h2{margin:0 0 8px}.spacer{height:400px}}}}\n"], dependencies: [{ kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i1$1.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i1$1.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i1$1.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i2$1.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
4197
4197
  }
4198
4198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormlyFieldScrollableTabsComponent, decorators: [{
4199
4199
  type: Component,
@@ -4256,7 +4256,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4256
4256
  </div>
4257
4257
  </div>
4258
4258
  </div>
4259
- `, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%}.tabs-container .sticky-tabs{position:sticky;z-index:1}.tabs-container .tab-content{flex:1;overflow-y:auto;padding:16px}.tabs-container .tab-content .tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d}.tabs-container .tab-content .tab-section h2{margin:0 0 8px}.tabs-container .tab-content .tab-section .spacer{height:400px}\n"] }]
4259
+ `, styles: [".tab-title{color:#00ae4d}.error-step{color:#d32f2f!important}.tabs-container{display:flex;flex-direction:column;height:100%;.sticky-tabs{position:sticky;z-index:1}.tab-content{flex:1;overflow-y:auto;padding:16px;.tab-section{margin-bottom:45px;border-bottom:2px solid #00ae4d;h2{margin:0 0 8px}.spacer{height:400px}}}}\n"] }]
4260
4260
  }], ctorParameters: () => [{ type: i0.NgZone }], propDecorators: { tabGroup: [{
4261
4261
  type: ViewChild,
4262
4262
  args: ['tabGroup']
@@ -4518,14 +4518,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4518
4518
  }] });
4519
4519
 
4520
4520
  class MnlFormHelperTextInputComponent extends FieldType$1 {
4521
+ get helperLabel() {
4522
+ return this.to['helperProps']?.['helperLabel'] || 'Need help?';
4523
+ }
4524
+ get defaultHelperText() {
4525
+ return this.to['helperProps']?.['defaultHelperText'] || '';
4526
+ }
4527
+ get currentValue() {
4528
+ const fieldKey = this.field.key;
4529
+ return this.field.model?.[fieldKey];
4530
+ }
4521
4531
  constructor(cdr) {
4522
4532
  super();
4523
4533
  this.cdr = cdr;
4524
4534
  this.checked = false;
4525
4535
  }
4526
4536
  ngOnInit() {
4537
+ this.originalValue = this.currentValue;
4527
4538
  this.setupDefaultField();
4528
- // If mode is helper, set up the initial state based on scoring
4529
4539
  if (this.to['enableHelper']) {
4530
4540
  this.setCorrectValue();
4531
4541
  this.determineInitialState();
@@ -4533,6 +4543,9 @@ class MnlFormHelperTextInputComponent extends FieldType$1 {
4533
4543
  }
4534
4544
  toggleSlide() {
4535
4545
  this.checked = !this.checked;
4546
+ if (this.checked) {
4547
+ this.formControl?.setValue(this.defaultHelperText);
4548
+ }
4536
4549
  this.cdr.detectChanges();
4537
4550
  }
4538
4551
  setupDefaultField() {
@@ -4566,12 +4579,12 @@ class MnlFormHelperTextInputComponent extends FieldType$1 {
4566
4579
  switch (this.to['scoring']?.['criteria']) {
4567
4580
  case 'exactMatch':
4568
4581
  if (Array.isArray(this.to['scoring']?.['answer']) &&
4569
- !this.to['scoring']?.['answer'].includes(this.to['value'])) {
4582
+ !this.to['scoring']?.['answer'].includes(this.currentValue)) {
4570
4583
  this.checked = true;
4571
4584
  }
4572
4585
  break;
4573
4586
  case 'range':
4574
- const answer = this.to['value'];
4587
+ const answer = this.currentValue;
4575
4588
  const num = typeof answer === 'number' ? answer : Number(answer);
4576
4589
  const correct = Number.isFinite(num) &&
4577
4590
  num >= this.to['scoring']?.['answer'].min &&
@@ -4585,26 +4598,25 @@ class MnlFormHelperTextInputComponent extends FieldType$1 {
4585
4598
  setCorrectValue() {
4586
4599
  switch (this.to['scoring']?.['criteria']) {
4587
4600
  case 'attempted':
4588
- this.formControl?.setValue(this.to['value']);
4601
+ this.formControl?.setValue(this.defaultHelperText);
4589
4602
  break;
4590
4603
  case 'exactMatch':
4591
4604
  if (Array.isArray(this.to['scoring']?.['answer']) &&
4592
- !this.to['scoring']?.['answer'].includes(this.to['value'])) {
4593
- this.formControl?.setValue(this.to['scoring']['answer'].join(', '));
4605
+ !this.to['scoring']?.['answer'].includes(this.originalValue)) {
4606
+ this.formControl?.setValue(this.defaultHelperText);
4594
4607
  }
4595
4608
  break;
4596
4609
  case 'range':
4597
- const answer = this.to['value'];
4610
+ const answer = this.currentValue;
4598
4611
  const num = typeof answer === 'number' ? answer : Number(answer);
4599
4612
  const correct = Number.isFinite(num) &&
4600
4613
  num >= this.to['scoring']?.['answer'].min &&
4601
4614
  num <= this.to['scoring']?.['answer'].max;
4602
4615
  if (!correct) {
4603
- this.formControl?.setValue(`Value must be in range of ${this.to['scoring']?.['answer'].min} & ${this.to['scoring']?.['answer'].max}`);
4616
+ this.formControl?.setValue(this.defaultHelperText);
4604
4617
  }
4605
4618
  break;
4606
4619
  default:
4607
- this.formControl?.setValue(this.to['value']);
4608
4620
  break;
4609
4621
  }
4610
4622
  }
@@ -4614,12 +4626,12 @@ class MnlFormHelperTextInputComponent extends FieldType$1 {
4614
4626
  <!-- Helper Mode - Show toggle and conditional content -->
4615
4627
  <div *ngIf="to['enableHelper']">
4616
4628
  <mat-label>{{ to.label }}</mat-label>
4617
- <div *ngIf="to['value']" class="flex-row">
4618
- <span class="answer">Answer: {{ to['value'] }}</span>
4629
+ <div *ngIf="originalValue" class="flex-row">
4630
+ <span class="answer">{{ originalValue }}</span>
4619
4631
  <mat-slide-toggle
4620
4632
  [(ngModel)]="checked"
4621
4633
  (toggleChange)="toggleSlide()"
4622
- >{{ to['helperLabel'] }}</mat-slide-toggle
4634
+ >{{ helperLabel }}</mat-slide-toggle
4623
4635
  >
4624
4636
  </div>
4625
4637
 
@@ -4660,12 +4672,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4660
4672
  <!-- Helper Mode - Show toggle and conditional content -->
4661
4673
  <div *ngIf="to['enableHelper']">
4662
4674
  <mat-label>{{ to.label }}</mat-label>
4663
- <div *ngIf="to['value']" class="flex-row">
4664
- <span class="answer">Answer: {{ to['value'] }}</span>
4675
+ <div *ngIf="originalValue" class="flex-row">
4676
+ <span class="answer">{{ originalValue }}</span>
4665
4677
  <mat-slide-toggle
4666
4678
  [(ngModel)]="checked"
4667
4679
  (toggleChange)="toggleSlide()"
4668
- >{{ to['helperLabel'] }}</mat-slide-toggle
4680
+ >{{ helperLabel }}</mat-slide-toggle
4669
4681
  >
4670
4682
  </div>
4671
4683
 
@@ -4805,11 +4817,21 @@ class ScoringService {
4805
4817
  calculateScore(model, fields) {
4806
4818
  let totalScore = 0;
4807
4819
  let categoryResults = {};
4808
- for (const category of fields) {
4809
- const categoryLabel = category.props?.label || 'Unnamed Category';
4810
- const categoryWeight = category.props?.weight || 0;
4811
- const questions = category.fieldGroup || [];
4812
- const perQuestionWeight = categoryWeight / (questions.length || 1);
4820
+ const processCategory = (category) => {
4821
+ const categoryLabel = category.props?.label;
4822
+ const categoryWeight = category.props?.weight ?? 0;
4823
+ // Only treat as scoring category if it has a label + weight
4824
+ if (!categoryLabel || !categoryWeight) {
4825
+ // Still need to go deeper in case children have categories
4826
+ if (category.fieldGroup?.length) {
4827
+ category.fieldGroup.forEach(processCategory);
4828
+ }
4829
+ return;
4830
+ }
4831
+ const questions = (category.fieldGroup || []).filter(q => q.props?.scoring);
4832
+ if (questions.length === 0)
4833
+ return;
4834
+ const perQuestionWeight = categoryWeight / questions.length;
4813
4835
  let categoryScore = 0;
4814
4836
  for (const q of questions) {
4815
4837
  const parentKey = category.key;
@@ -4850,7 +4872,9 @@ class ScoringService {
4850
4872
  score: categoryScore,
4851
4873
  weight: categoryWeight,
4852
4874
  };
4853
- }
4875
+ };
4876
+ // start recursive walk
4877
+ fields.forEach(processCategory);
4854
4878
  return {
4855
4879
  totalScore,
4856
4880
  categoryResults,