@firestitch/report 18.18.1 → 18.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/reports/chart-axis-settings.d.ts +4 -0
- package/app/reports/components/report-component/report-component.component.d.ts +1 -0
- package/app/reports/dialogs/component-settings/component-settings.component.d.ts +24 -0
- package/app/reports/dialogs/global-settings/global-settings.component.d.ts +2 -6
- package/app/reports/enums/report-chart-date-label.enum.d.ts +2 -1
- package/app/reports/enums/report-chart-span-mode.enum.d.ts +5 -0
- package/app/reports/enums/report-chart-span-through.enum.d.ts +3 -0
- package/app/reports/format.d.ts +1 -0
- package/app/reports/interfaces/report-chart-axis-settings.interface.d.ts +6 -0
- package/app/reports/interfaces/report-chart-span.interface.d.ts +6 -0
- package/app/reports/interfaces/report.interface.d.ts +5 -0
- package/esm2022/app/reports/chart-axis-settings.mjs +24 -0
- package/esm2022/app/reports/components/report-component/report-component.component.mjs +27 -4
- package/esm2022/app/reports/dialogs/component-settings/component-settings.component.mjs +121 -16
- package/esm2022/app/reports/dialogs/global-settings/components/ai-knowledge/ai-knowledge.component.mjs +8 -6
- package/esm2022/app/reports/dialogs/global-settings/components/semantic-database/semantic-database.component.mjs +3 -3
- package/esm2022/app/reports/dialogs/global-settings/global-settings.component.mjs +32 -51
- package/esm2022/app/reports/dialogs/instruction-history/instruction-history.component.mjs +5 -5
- package/esm2022/app/reports/enums/report-chart-date-label.enum.mjs +5 -2
- package/esm2022/app/reports/enums/report-chart-span-mode.enum.mjs +10 -0
- package/esm2022/app/reports/enums/report-chart-span-through.enum.mjs +11 -0
- package/esm2022/app/reports/format.mjs +3 -1
- package/esm2022/app/reports/interfaces/report-chart-axis-settings.interface.mjs +2 -0
- package/esm2022/app/reports/interfaces/report-chart-span.interface.mjs +2 -0
- package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
- package/esm2022/app/reports/option-builder.mjs +34 -10
- package/esm2022/public_api.mjs +4 -1
- package/fesm2022/{firestitch-report-echarts-DrTDdBIP.mjs → firestitch-report-echarts-WOx5HoDM.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-DrTDdBIP.mjs.map → firestitch-report-echarts-WOx5HoDM.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-Bgr_IprU.mjs → firestitch-report-firestitch-report-DztXL6p8.mjs} +286 -136
- package/fesm2022/firestitch-report-firestitch-report-DztXL6p8.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +3 -0
- package/app/reports/dialogs/global-settings/components/general/general.component.d.ts +0 -8
- package/esm2022/app/reports/dialogs/global-settings/components/general/general.component.mjs +0 -34
- package/fesm2022/firestitch-report-firestitch-report-Bgr_IprU.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, DestroyRef,
|
|
1
|
+
import { ChangeDetectionStrategy, Component, DestroyRef, inject, signal, viewChild } from '@angular/core';
|
|
2
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
3
|
import { FormsModule } from '@angular/forms';
|
|
4
4
|
import { MatButton } from '@angular/material/button';
|
|
@@ -13,7 +13,6 @@ import { switchMap, tap } from 'rxjs/operators';
|
|
|
13
13
|
import { ReportData } from '../../data/report.data';
|
|
14
14
|
import { InstructionHistoryComponent } from '../instruction-history/instruction-history.component';
|
|
15
15
|
import { AiKnowledgeComponent } from './components/ai-knowledge/ai-knowledge.component';
|
|
16
|
-
import { GeneralComponent } from './components/general/general.component';
|
|
17
16
|
import { SemanticDatabaseComponent } from './components/semantic-database/semantic-database.component';
|
|
18
17
|
import * as i0 from "@angular/core";
|
|
19
18
|
import * as i1 from "@angular/forms";
|
|
@@ -22,8 +21,8 @@ import * as i3 from "@firestitch/form";
|
|
|
22
21
|
import * as i4 from "@firestitch/skeleton";
|
|
23
22
|
import * as i5 from "@firestitch/tabs";
|
|
24
23
|
import * as i6 from "@angular/material/tabs";
|
|
25
|
-
// Matches the backend cap (
|
|
26
|
-
// rides along on every agent turn, so it is a prompt-budget guard.
|
|
24
|
+
// Matches the backend cap (CreateReportInstructionOperation::MAX_LENGTH) — the
|
|
25
|
+
// document rides along on every agent turn, so it is a prompt-budget guard.
|
|
27
26
|
const MAX_LENGTH = 50000;
|
|
28
27
|
// Seeded into the editor (client-side, unsaved) when no version exists yet, so
|
|
29
28
|
// the operator sees the intended shape of the document.
|
|
@@ -34,25 +33,31 @@ const SCAFFOLD = [
|
|
|
34
33
|
'',
|
|
35
34
|
'# Business rules',
|
|
36
35
|
'',
|
|
37
|
-
'*Rules
|
|
36
|
+
'*Rules to apply when building or explaining reports.*',
|
|
38
37
|
'',
|
|
39
38
|
'# Special cases',
|
|
40
39
|
'',
|
|
41
|
-
'*Known exceptions and data quirks
|
|
40
|
+
'*Known exceptions and data quirks that can\'t be worked out from the data alone.*',
|
|
42
41
|
'',
|
|
43
42
|
].join('\n');
|
|
44
|
-
// Global report settings, opened from the reports listing's gear.
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
//
|
|
48
|
-
//
|
|
43
|
+
// Global report settings, opened from the reports listing's gear. Neither tab
|
|
44
|
+
// is chat-only, so nothing here is worded as AI: an install that turns the
|
|
45
|
+
// report chat off and builds reports over MCP still keeps both up to date.
|
|
46
|
+
// A thin shell: the dialog frame, the tab group, and a per-tab footer. Each tab
|
|
47
|
+
// is its own component —
|
|
48
|
+
// Knowledge — the operator-authored markdown document every report build
|
|
49
|
+
// reads: the in-app agent's system instructions on each chat turn, and
|
|
50
|
+
// ReadReportKnowledgeOperation for a client over MCP. Its footer carries a
|
|
49
51
|
// View History button opening the version-history dialog (restores happen
|
|
50
52
|
// there; the shell refreshes on close).
|
|
51
|
-
// Semantic Database — the build scoreboard
|
|
52
|
-
// self-contained Build action.
|
|
53
|
-
//
|
|
54
|
-
//
|
|
55
|
-
//
|
|
53
|
+
// Semantic Database — the build scoreboard reports are built and run from,
|
|
54
|
+
// with a self-contained Build action.
|
|
55
|
+
// There is no General tab while the build's AI function pass is disabled
|
|
56
|
+
// (ReportSemanticBuildProcess::run): its one field, the semantic-build
|
|
57
|
+
// concurrency, is read only by that pass. The reports/settings route that
|
|
58
|
+
// stores it, and ReportData.settings()/saveSettings(), are left in place.
|
|
59
|
+
// The shell owns the instructions document and the save; everything else lives
|
|
60
|
+
// in the children.
|
|
56
61
|
export class GlobalSettingsComponent {
|
|
57
62
|
selectedTab = 'knowledge';
|
|
58
63
|
// The Semantic Database tab component, so the shared footer can drive its
|
|
@@ -63,15 +68,10 @@ export class GlobalSettingsComponent {
|
|
|
63
68
|
content = signal('');
|
|
64
69
|
editorConfig = {
|
|
65
70
|
maxLength: MAX_LENGTH,
|
|
66
|
-
placeholder: '
|
|
71
|
+
placeholder: 'Business terms, rules and special cases every report should follow…',
|
|
67
72
|
};
|
|
68
|
-
//
|
|
73
|
+
// null until loaded — the form waits behind the skeleton until it is in.
|
|
69
74
|
instructions = signal(null);
|
|
70
|
-
settings = signal(null);
|
|
71
|
-
// The General tab's concurrency draft (bound to its field), seeded from settings.
|
|
72
|
-
concurrency = signal(0);
|
|
73
|
-
// Gate the whole form on both loads, so every tab's fields are ready to render.
|
|
74
|
-
loaded = computed(() => !!this.instructions() && !!this.settings());
|
|
75
75
|
_dialogRef = inject(MatDialogRef);
|
|
76
76
|
_dialog = inject(MatDialog);
|
|
77
77
|
_reportData = inject(ReportData);
|
|
@@ -80,23 +80,12 @@ export class GlobalSettingsComponent {
|
|
|
80
80
|
constructor() {
|
|
81
81
|
this._init();
|
|
82
82
|
}
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
.pipe(tap((settings) => {
|
|
90
|
-
this._applySettings(settings);
|
|
91
|
-
this._message.success('Settings saved');
|
|
92
|
-
}));
|
|
93
|
-
}
|
|
94
|
-
return this._reportData.saveInstructions(this.content())
|
|
95
|
-
.pipe(tap((instructions) => {
|
|
96
|
-
this._message.success('AI knowledge saved');
|
|
97
|
-
this._dialogRef.close(instructions);
|
|
98
|
-
}));
|
|
99
|
-
};
|
|
83
|
+
// Only the Knowledge tab saves: a new document version, then the dialog closes.
|
|
84
|
+
save = () => this._reportData.saveInstructions(this.content())
|
|
85
|
+
.pipe(tap((instructions) => {
|
|
86
|
+
this._message.success('Knowledge saved');
|
|
87
|
+
this._dialogRef.close(instructions);
|
|
88
|
+
}));
|
|
100
89
|
// Open the version-history dialog. Restores happen inside it, so when it
|
|
101
90
|
// closes (however it closes) re-fetch the document: a restore changed the
|
|
102
91
|
// current version and must reseed the editor; otherwise just refresh the
|
|
@@ -125,20 +114,13 @@ export class GlobalSettingsComponent {
|
|
|
125
114
|
this._reportData.instructions()
|
|
126
115
|
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
127
116
|
.subscribe((instructions) => this._applyInstructions(instructions));
|
|
128
|
-
this._reportData.settings()
|
|
129
|
-
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
130
|
-
.subscribe((settings) => this._applySettings(settings));
|
|
131
117
|
}
|
|
132
118
|
_applyInstructions(instructions) {
|
|
133
119
|
this.instructions.set(instructions);
|
|
134
120
|
this.content.set(instructions.instructions?.content ?? SCAFFOLD);
|
|
135
121
|
}
|
|
136
|
-
_applySettings(settings) {
|
|
137
|
-
this.settings.set(settings);
|
|
138
|
-
this.concurrency.set(settings.semanticBuildConcurrency);
|
|
139
|
-
}
|
|
140
122
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlobalSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
141
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GlobalSettingsComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "semanticDatabase", first: true, predicate: SemanticDatabaseComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<form\n *fsSkeletonForm=\"
|
|
123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GlobalSettingsComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "semanticDatabase", first: true, predicate: SemanticDatabaseComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<form\n *fsSkeletonForm=\"instructions()\"\n fsForm\n [submit]=\"save\">\n <fs-dialog>\n <fs-dialog-title>\n Report Settings\n </fs-dialog-title>\n <mat-dialog-content>\n <mat-tab-group [(selected)]=\"selectedTab\">\n <mat-tab\n label=\"Knowledge\"\n name=\"knowledge\">\n <fs-ai-report-global-settings-ai-knowledge\n [content]=\"content()\"\n (contentChange)=\"content.set($event)\"\n [config]=\"editorConfig\">\n </fs-ai-report-global-settings-ai-knowledge>\n </mat-tab>\n <mat-tab\n label=\"Semantic Database\"\n name=\"build\">\n <fs-ai-report-global-settings-semantic-database>\n </fs-ai-report-global-settings-semantic-database>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <!-- The footer follows the selected tab. Knowledge projects its own\n Save | View History | Cancel row (fs-form-dialog-actions renders\n projected content after Save/Cancel, so the default pair can't keep\n View History beside Save); the Semantic Database tab is a read/run\n surface, so it gets a primary Close plus its Build/Rebuild/Stop\n action. Neither uses the default Save/Cancel pair. -->\n <fs-form-dialog-actions [save]=\"false\">\n @if (selectedTab === 'knowledge') {\n <button\n type=\"submit\"\n mat-button\n color=\"primary\">\n Save\n </button>\n <button\n type=\"button\"\n mat-button\n (click)=\"openHistory()\">\n View History\n </button>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (selectedTab === 'build') {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n }\n @if (selectedTab === 'build' && semanticDatabase(); as db) {\n @if (db.buildActive()) {\n <button\n type=\"button\"\n mat-button\n color=\"warn\"\n (click)=\"db.stopBuild()\">\n Stop Build\n </button>\n } @else {\n <!-- Never gated on the status load: a status response that fails\n must not take the Build action away with it. -->\n <button\n type=\"button\"\n mat-button\n (click)=\"db.build()\">\n {{ db.rebuild() ? 'Rebuild' : 'Build' }}\n </button>\n }\n }\n </fs-form-dialog-actions>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "component", type: i2.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { kind: "component", type: i2.FsDialogTitleComponent, selector: "fs-dialog-title", inputs: ["close", "dockToggle", "back"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "component", type: i3.FsFormDialogActionsComponent, selector: "fs-form-dialog-actions", inputs: ["save", "create", "close", "done", "closeData", "name"] }, { kind: "directive", type: i3.FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i4.FsSkeletonFormDirective, selector: "[fsSkeletonForm]", inputs: ["fsSkeletonForm", "fsSkeletonFormLines"] }, { kind: "ngmodule", type: FsTabsModule }, { kind: "directive", type: i5.FsTabsHeaderTabGroupDirective, selector: "mat-tab-group, matTabGroup, [matTabGroup]", inputs: ["orientation", "selected", "selectedData"], outputs: ["selectedChange", "selectedDataChange"], exportAs: ["fsTabsHeaderTabGroup"] }, { kind: "directive", type: i5.FsTabsTabDirective, selector: "mat-tab,matTab", inputs: ["name", "data"], exportAs: ["fsTabsTab"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i6.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i6.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: "component", type: AiKnowledgeComponent, selector: "fs-ai-report-global-settings-ai-knowledge", inputs: ["content", "config"], outputs: ["contentChange"] }, { kind: "component", type: SemanticDatabaseComponent, selector: "fs-ai-report-global-settings-semantic-database" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
142
124
|
}
|
|
143
125
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlobalSettingsComponent, decorators: [{
|
|
144
126
|
type: Component,
|
|
@@ -154,8 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
154
136
|
MatDialogContent,
|
|
155
137
|
MatTabsModule,
|
|
156
138
|
AiKnowledgeComponent,
|
|
157
|
-
GeneralComponent,
|
|
158
139
|
SemanticDatabaseComponent,
|
|
159
|
-
], template: "<form\n *fsSkeletonForm=\"
|
|
140
|
+
], template: "<form\n *fsSkeletonForm=\"instructions()\"\n fsForm\n [submit]=\"save\">\n <fs-dialog>\n <fs-dialog-title>\n Report Settings\n </fs-dialog-title>\n <mat-dialog-content>\n <mat-tab-group [(selected)]=\"selectedTab\">\n <mat-tab\n label=\"Knowledge\"\n name=\"knowledge\">\n <fs-ai-report-global-settings-ai-knowledge\n [content]=\"content()\"\n (contentChange)=\"content.set($event)\"\n [config]=\"editorConfig\">\n </fs-ai-report-global-settings-ai-knowledge>\n </mat-tab>\n <mat-tab\n label=\"Semantic Database\"\n name=\"build\">\n <fs-ai-report-global-settings-semantic-database>\n </fs-ai-report-global-settings-semantic-database>\n </mat-tab>\n </mat-tab-group>\n </mat-dialog-content>\n <mat-dialog-actions>\n <!-- The footer follows the selected tab. Knowledge projects its own\n Save | View History | Cancel row (fs-form-dialog-actions renders\n projected content after Save/Cancel, so the default pair can't keep\n View History beside Save); the Semantic Database tab is a read/run\n surface, so it gets a primary Close plus its Build/Rebuild/Stop\n action. Neither uses the default Save/Cancel pair. -->\n <fs-form-dialog-actions [save]=\"false\">\n @if (selectedTab === 'knowledge') {\n <button\n type=\"submit\"\n mat-button\n color=\"primary\">\n Save\n </button>\n <button\n type=\"button\"\n mat-button\n (click)=\"openHistory()\">\n View History\n </button>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n }\n @if (selectedTab === 'build') {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n [mat-dialog-close]=\"undefined\">\n Close\n </button>\n }\n @if (selectedTab === 'build' && semanticDatabase(); as db) {\n @if (db.buildActive()) {\n <button\n type=\"button\"\n mat-button\n color=\"warn\"\n (click)=\"db.stopBuild()\">\n Stop Build\n </button>\n } @else {\n <!-- Never gated on the status load: a status response that fails\n must not take the Build action away with it. -->\n <button\n type=\"button\"\n mat-button\n (click)=\"db.build()\">\n {{ db.rebuild() ? 'Rebuild' : 'Build' }}\n </button>\n }\n }\n </fs-form-dialog-actions>\n </mat-dialog-actions>\n </fs-dialog>\n</form>\n", styles: [":host{display:block}\n"] }]
|
|
160
141
|
}], ctorParameters: () => [] });
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9kaWFsb2dzL2dsb2JhbC1zZXR0aW5ncy9nbG9iYWwtc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2RpYWxvZ3MvZ2xvYmFsLXNldHRpbmdzL2dsb2JhbC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1B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Q1osZ0JBQWdCLHdLQUNoQixZQUFZLG9hQUNaLFNBQVMsaUxBQ1QsZ0JBQWdCLDRIQUNoQixjQUFjLHFMQUNkLGdCQUFnQix3R0FDaEIsYUFBYSw2b0JBQ2Isb0JBQW9CLGlKQUNwQixnQkFBZ0Isd0pBQ2hCLHlCQUF5Qjs7NEZBR2hCLHVCQUF1QjtrQkFyQm5DLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLGdCQUFnQjt3QkFDaEIseUJBQXlCO3FCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcbmltcG9ydCB7IEZzRm9ybU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNNYXJrZG93bkVkaXRvckNvbmZpZyB9IGZyb20gJ0BmaXJlc3RpdGNoL21hcmtkb3duLWVkaXRvcic7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9za2VsZXRvbic7XG5pbXBvcnQgeyBGc1RhYnNNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC90YWJzJztcblxuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFJlcG9ydERhdGEgfSBmcm9tICcuLi8uLi9kYXRhL3JlcG9ydC5kYXRhJztcbmltcG9ydCB7IFJlcG9ydEluc3RydWN0aW9ucywgUmVwb3J0U2V0dGluZ3MgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25IaXN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi4vaW5zdHJ1Y3Rpb24taGlzdG9yeS9pbnN0cnVjdGlvbi1oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBaUtub3dsZWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9haS1rbm93bGVkZ2UvYWkta25vd2xlZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW5lcmFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2dlbmVyYWwvZ2VuZXJhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VtYW50aWNEYXRhYmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zZW1hbnRpYy1kYXRhYmFzZS9zZW1hbnRpYy1kYXRhYmFzZS5jb21wb25lbnQnO1xuXG5cbi8vIE1hdGNoZXMgdGhlIGJhY2tlbmQgY2FwIChSZXBvcnRzVmlldzo6SU5TVFJVQ1RJT05TX01BWF9MRU5HVEgpIOKAlCB0aGUgZG9jdW1lbnRcbi8vIHJpZGVzIGFsb25nIG9uIGV2ZXJ5IGFnZW50IHR1cm4sIHNvIGl0IGlzIGEgcHJvbXB0LWJ1ZGdldCBndWFyZC5cbmNvbnN0IE1BWF9MRU5HVEggPSA1MDAwMDtcblxuLy8gU2VlZGVkIGludG8gdGhlIGVkaXRvciAoY2xpZW50LXNpZGUsIHVuc2F2ZWQpIHdoZW4gbm8gdmVyc2lvbiBleGlzdHMgeWV0LCBzb1xuLy8gdGhlIG9wZXJhdG9yIHNlZXMgdGhlIGludGVuZGVkIHNoYXBlIG9mIHRoZSBkb2N1bWVudC5cbmNvbnN0IFNDQUZGT0xEID0gW1xuICAnIyBHbG9zc2FyeScsXG4gICcnLFxuICAnKlRlcm1zIHlvdXIgdGVhbSB1c2VzIGFuZCB3aGF0IHRoZXkgbWVhbiBpbiB0aGUgZGF0YSDigJQgZS5nLiBcImFjdGl2ZSBhY2NvdW50c1wiIGFyZSBhY2NvdW50cyB3aXRoIGFuIG9yZGVyIGluIHRoZSBsYXN0IDkwIGRheXMuKicsXG4gICcnLFxuICAnIyBCdXNpbmVzcyBydWxlcycsXG4gICcnLFxuICAnKlJ1bGVzIHRoZSBBSSBzaG91bGQgYXBwbHkgd2hlbiBidWlsZGluZyBvciBleHBsYWluaW5nIHJlcG9ydHMuKicsXG4gICcnLFxuICAnIyBTcGVjaWFsIGNhc2VzJyxcbiAgJycsXG4gICcqS25vd24gZXhjZXB0aW9ucyBhbmQgZGF0YSBxdWlya3MgdGhlIEFJIGNhbm5vdCBpbmZlciBvbiBpdHMgb3duLionLFxuICAnJyxcbl0uam9pbignXFxuJyk7XG5cblxuLy8gR2xvYmFsIHJlcG9ydCBzZXR0aW5ncywgb3BlbmVkIGZyb20gdGhlIHJlcG9ydHMgbGlzdGluZydzIGdlYXIuIEEgdGhpbiBzaGVsbDpcbi8vIHRoZSBkaWFsb2cgZnJhbWUsIHRoZSB0YWIgZ3JvdXAsIGFuZCBhIHBlci10YWIgZm9vdGVyLiBFYWNoIHRhYiBpcyBpdHMgb3duXG4vLyBjb21wb25lbnQg4oCUXG4vLyAgIEFJIEtub3dsZWRnZSDigJQgdGhlIG9wZXJhdG9yLWF1dGhvcmVkIG1hcmtkb3duIGRvY3VtZW50IGFwcGVuZGVkIHRvIHRoZVxuLy8gICByZXBvcnQgYWdlbnQncyBzeXN0ZW0gaW5zdHJ1Y3Rpb25zIG9uIGV2ZXJ5IGNoYXQgdHVybi4gSXRzIGZvb3RlciBjYXJyaWVzIGFcbi8vICAgVmlldyBIaXN0b3J5IGJ1dHRvbiBvcGVuaW5nIHRoZSB2ZXJzaW9uLWhpc3RvcnkgZGlhbG9nIChyZXN0b3JlcyBoYXBwZW5cbi8vICAgdGhlcmU7IHRoZSBzaGVsbCByZWZyZXNoZXMgb24gY2xvc2UpLlxuLy8gICBTZW1hbnRpYyBEYXRhYmFzZSDigJQgdGhlIGJ1aWxkIHNjb3JlYm9hcmQgdGhlIEFJIGlzIGJ1aWx0IGZyb20sIHdpdGggYVxuLy8gICBzZWxmLWNvbnRhaW5lZCBCdWlsZCBhY3Rpb24uXG4vLyAgIEdlbmVyYWwg4oCUIHJlcG9ydC1tb2R1bGUgc2V0dGluZ3MgKHRoZSBzZW1hbnRpYy1idWlsZCBjb25jdXJyZW5jeSkuXG4vLyBUaGUgc2hlbGwgb3ducyB0aGUgc2hhcmVkIGRhdGEgKHRoZSBpbnN0cnVjdGlvbnMgZG9jdW1lbnQsIHRoZSBzZXR0aW5ncyBmb3Jcbi8vIEdlbmVyYWwpIHBsdXMgdGhlIHRhYi1hd2FyZSBzYXZlOyBldmVyeXRoaW5nIGVsc2UgbGl2ZXMgaW4gdGhlIGNoaWxkcmVuLlxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9nbG9iYWwtc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9nbG9iYWwtc2V0dGluZ3MuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBGc0RpYWxvZ01vZHVsZSxcbiAgICBGc0Zvcm1Nb2R1bGUsXG4gICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICBGc1RhYnNNb2R1bGUsXG4gICAgTWF0QnV0dG9uLFxuICAgIE1hdERpYWxvZ0FjdGlvbnMsXG4gICAgTWF0RGlhbG9nQ2xvc2UsXG4gICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIEFpS25vd2xlZGdlQ29tcG9uZW50LFxuICAgIEdlbmVyYWxDb21wb25lbnQsXG4gICAgU2VtYW50aWNEYXRhYmFzZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR2xvYmFsU2V0dGluZ3NDb21wb25lbnQge1xuXG4gIHB1YmxpYyBzZWxlY3RlZFRhYiA9ICdrbm93bGVkZ2UnO1xuXG4gIC8vIFRoZSBTZW1hbnRpYyBEYXRhYmFzZSB0YWIgY29tcG9uZW50LCBzbyB0aGUgc2hhcmVkIGZvb3RlciBjYW4gZHJpdmUgaXRzXG4gIC8vIEJ1aWxkL1JlYnVpbGQvU3RvcCBhY3Rpb24gaW5saW5lIG5leHQgdG8gQ2xvc2UgKHRoZSBidWlsZCBzdGF0ZSBsaXZlcyB0aGVyZSkuXG4gIHB1YmxpYyByZWFkb25seSBzZW1hbnRpY0RhdGFiYXNlID0gdmlld0NoaWxkKFNlbWFudGljRGF0YWJhc2VDb21wb25lbnQpO1xuXG4gIC8vIFRoZSBlZGl0b3IncyBkcmFmdCwgaGVsZCBvbiB0aGUgc2hlbGwgc28gc3dpdGNoaW5nIHRhYnMgbmV2ZXIgbG9zZXMgYW4gZWRpdFxuICAvLyDigJQgc2VlZGVkIGZyb20gdGhlIGN1cnJlbnQgdmVyc2lvbiAob3IgdGhlIHNjYWZmb2xkKS5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRlbnQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVkaXRvckNvbmZpZzogRnNNYXJrZG93bkVkaXRvckNvbmZpZyA9IHtcbiAgICBtYXhMZW5ndGg6IE1BWF9MRU5HVEgsXG4gICAgcGxhY2Vob2xkZXI6ICdUZXJtaW5vbG9neSwgYnVzaW5lc3MgcnVsZXMgYW5kIHNwZWNpYWwgY2FzZXMgdGhlIHJlcG9ydCBBSSBzaG91bGQga25vd+KApicsXG4gIH07XG5cbiAgLy8gQm90aCBudWxsIHVudGlsIGxvYWRlZCDigJQgdGhlIGZvcm0gd2FpdHMgYmVoaW5kIHRoZSBza2VsZXRvbiB1bnRpbCBlYWNoIGlzIGluLlxuICBwdWJsaWMgcmVhZG9ubHkgaW5zdHJ1Y3Rpb25zID0gc2lnbmFsPFJlcG9ydEluc3RydWN0aW9ucyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2V0dGluZ3MgPSBzaWduYWw8UmVwb3J0U2V0dGluZ3MgfCBudWxsPihudWxsKTtcblxuICAvLyBUaGUgR2VuZXJhbCB0YWIncyBjb25jdXJyZW5jeSBkcmFmdCAoYm91bmQgdG8gaXRzIGZpZWxkKSwgc2VlZGVkIGZyb20gc2V0dGluZ3MuXG4gIHB1YmxpYyByZWFkb25seSBjb25jdXJyZW5jeSA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gIC8vIEdhdGUgdGhlIHdob2xlIGZvcm0gb24gYm90aCBsb2Fkcywgc28gZXZlcnkgdGFiJ3MgZmllbGRzIGFyZSByZWFkeSB0byByZW5kZXIuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkZWQgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiAhIXRoaXMuaW5zdHJ1Y3Rpb25zKCkgJiYgISF0aGlzLnNldHRpbmdzKCkpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZ1JlZiA9IGluamVjdDxNYXREaWFsb2dSZWY8R2xvYmFsU2V0dGluZ3NDb21wb25lbnQ+PihNYXREaWFsb2dSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVwb3J0RGF0YSA9IGluamVjdChSZXBvcnREYXRhKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2luaXQoKTtcbiAgfVxuXG4gIC8vIFRoZSBmb290ZXIgU2F2ZSBpcyBzaGFyZWQsIHNvIGl0IHNhdmVzIHdoYXRldmVyIHRoZSBjdXJyZW50IHRhYiBvd25zOiB0aGVcbiAgLy8gR2VuZXJhbCB0YWIgcGVyc2lzdHMgaXRzIHNldHRpbmdzIChhbmQgc3RheXMgb3Blbik7IEFJIEtub3dsZWRnZSBzYXZlcyBhIG5ld1xuICAvLyBkb2N1bWVudCB2ZXJzaW9uIGFuZCBjbG9zZXMuXG4gIHB1YmxpYyBzYXZlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVGFiID09PSAnZ2VuZXJhbCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZXBvcnREYXRhLnNhdmVTZXR0aW5ncyh7IHNlbWFudGljQnVpbGRDb25jdXJyZW5jeTogdGhpcy5jb25jdXJyZW5jeSgpIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoc2V0dGluZ3M6IFJlcG9ydFNldHRpbmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9hcHBseVNldHRpbmdzKHNldHRpbmdzKTtcbiAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnU2V0dGluZ3Mgc2F2ZWQnKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcmVwb3J0RGF0YS5zYXZlSW5zdHJ1Y3Rpb25zKHRoaXMuY29udGVudCgpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoaW5zdHJ1Y3Rpb25zOiBSZXBvcnRJbnN0cnVjdGlvbnMpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0FJIGtub3dsZWRnZSBzYXZlZCcpO1xuICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShpbnN0cnVjdGlvbnMpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgLy8gT3BlbiB0aGUgdmVyc2lvbi1oaXN0b3J5IGRpYWxvZy4gUmVzdG9yZXMgaGFwcGVuIGluc2lkZSBpdCwgc28gd2hlbiBpdFxuICAvLyBjbG9zZXMgKGhvd2V2ZXIgaXQgY2xvc2VzKSByZS1mZXRjaCB0aGUgZG9jdW1lbnQ6IGEgcmVzdG9yZSBjaGFuZ2VkIHRoZVxuICAvLyBjdXJyZW50IHZlcnNpb24gYW5kIG11c3QgcmVzZWVkIHRoZSBlZGl0b3I7IG90aGVyd2lzZSBqdXN0IHJlZnJlc2ggdGhlXG4gIC8vIHZlcnNpb24gbGlzdCB3aXRob3V0IHRvdWNoaW5nIGFuIHVuc2F2ZWQgZHJhZnQuXG4gIHB1YmxpYyBvcGVuSGlzdG9yeSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SWQgPSB0aGlzLmluc3RydWN0aW9ucygpPy5pbnN0cnVjdGlvbnM/LmlkO1xuXG4gICAgdGhpcy5fZGlhbG9nLm9wZW4oSW5zdHJ1Y3Rpb25IaXN0b3J5Q29tcG9uZW50LCB7XG4gICAgICB3aWR0aDogJzgwMHB4JyxcbiAgICAgIG1heFdpZHRoOiAnOTV2dycsXG4gICAgICBtYXhIZWlnaHQ6ICc4NXZoJyxcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICBkYXRhOiB7IHZlcnNpb25zOiB0aGlzLmluc3RydWN0aW9ucygpPy52ZXJzaW9ucyA/PyBbXSB9LFxuICAgIH0pXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9yZXBvcnREYXRhLmluc3RydWN0aW9ucygpKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoaW5zdHJ1Y3Rpb25zOiBSZXBvcnRJbnN0cnVjdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKGluc3RydWN0aW9ucy5pbnN0cnVjdGlvbnM/LmlkICE9PSBjdXJyZW50SWQpIHtcbiAgICAgICAgICB0aGlzLl9hcHBseUluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuaW5zdHJ1Y3Rpb25zLnNldChpbnN0cnVjdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVwb3J0RGF0YS5pbnN0cnVjdGlvbnMoKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoaW5zdHJ1Y3Rpb25zOiBSZXBvcnRJbnN0cnVjdGlvbnMpID0+IHRoaXMuX2FwcGx5SW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykpO1xuXG4gICAgdGhpcy5fcmVwb3J0RGF0YS5zZXR0aW5ncygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChzZXR0aW5nczogUmVwb3J0U2V0dGluZ3MpID0+IHRoaXMuX2FwcGx5U2V0dGluZ3Moc2V0dGluZ3MpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5SW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uczogUmVwb3J0SW5zdHJ1Y3Rpb25zKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMuc2V0KGluc3RydWN0aW9ucyk7XG4gICAgdGhpcy5jb250ZW50LnNldChpbnN0cnVjdGlvbnMuaW5zdHJ1Y3Rpb25zPy5jb250ZW50ID8/IFNDQUZGT0xEKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5U2V0dGluZ3Moc2V0dGluZ3M6IFJlcG9ydFNldHRpbmdzKTogdm9pZCB7XG4gICAgdGhpcy5zZXR0aW5ncy5zZXQoc2V0dGluZ3MpO1xuICAgIHRoaXMuY29uY3VycmVuY3kuc2V0KHNldHRpbmdzLnNlbWFudGljQnVpbGRDb25jdXJyZW5jeSk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gICAgKmZzU2tlbGV0b25Gb3JtPVwibG9hZGVkKClcIlxuICAgIGZzRm9ybVxuICAgIFtzdWJtaXRdPVwic2F2ZVwiPlxuICA8ZnMtZGlhbG9nPlxuICAgIDxmcy1kaWFsb2ctdGl0bGU+XG4gICAgICBSZXBvcnQgU2V0dGluZ3NcbiAgICA8L2ZzLWRpYWxvZy10aXRsZT5cbiAgICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgPG1hdC10YWItZ3JvdXAgWyhzZWxlY3RlZCldPVwic2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPG1hdC10YWJcbiAgICAgICAgICAgIGxhYmVsPVwiQUkgS25vd2xlZGdlXCJcbiAgICAgICAgICAgIG5hbWU9XCJrbm93bGVkZ2VcIj5cbiAgICAgICAgICA8ZnMtYWktcmVwb3J0LWdsb2JhbC1zZXR0aW5ncy1haS1rbm93bGVkZ2VcbiAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiY29udGVudCgpXCJcbiAgICAgICAgICAgICAgKGNvbnRlbnRDaGFuZ2UpPVwiY29udGVudC5zZXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZWRpdG9yQ29uZmlnXCI+XG4gICAgICAgICAgPC9mcy1haS1yZXBvcnQtZ2xvYmFsLXNldHRpbmdzLWFpLWtub3dsZWRnZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYlxuICAgICAgICAgICAgbGFiZWw9XCJTZW1hbnRpYyBEYXRhYmFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiYnVpbGRcIj5cbiAgICAgICAgICA8ZnMtYWktcmVwb3J0LWdsb2JhbC1zZXR0aW5ncy1zZW1hbnRpYy1kYXRhYmFzZT5cbiAgICAgICAgICA8L2ZzLWFpLXJlcG9ydC1nbG9iYWwtc2V0dGluZ3Mtc2VtYW50aWMtZGF0YWJhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWJcbiAgICAgICAgICAgIGxhYmVsPVwiR2VuZXJhbFwiXG4gICAgICAgICAgICBuYW1lPVwiZ2VuZXJhbFwiPlxuICAgICAgICAgIDxmcy1haS1yZXBvcnQtZ2xvYmFsLXNldHRpbmdzLWdlbmVyYWxcbiAgICAgICAgICAgICAgW2NvbmN1cnJlbmN5XT1cImNvbmN1cnJlbmN5KClcIlxuICAgICAgICAgICAgICAoY29uY3VycmVuY3lDaGFuZ2UpPVwiY29uY3VycmVuY3kuc2V0KCRldmVudClcIlxuICAgICAgICAgICAgICBbbWluXT1cInNldHRpbmdzKCkhLnNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1pblwiXG4gICAgICAgICAgICAgIFttYXhdPVwic2V0dGluZ3MoKSEuc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWF4XCI+XG4gICAgICAgICAgPC9mcy1haS1yZXBvcnQtZ2xvYmFsLXNldHRpbmdzLWdlbmVyYWw+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPCEtLSBUaGUgZm9vdGVyIGZvbGxvd3MgdGhlIHNlbGVjdGVkIHRhYi4gQUkgS25vd2xlZGdlIHByb2plY3RzIGl0cyBvd25cbiAgICAgICAgICAgU2F2ZSB8IFZpZXcgSGlzdG9yeSB8IENhbmNlbCByb3cgKGZzLWZvcm0tZGlhbG9nLWFjdGlvbnMgcmVuZGVyc1xuICAgICAgICAgICBwcm9qZWN0ZWQgY29udGVudCBhZnRlciBTYXZlL0NhbmNlbCwgc28gdGhlIGRlZmF1bHQgcGFpciBjYW4ndCBrZWVwXG4gICAgICAgICAgIFZpZXcgSGlzdG9yeSBiZXNpZGUgU2F2ZSk7IEdlbmVyYWwgdXNlcyB0aGUgZGVmYXVsdCBTYXZlL0NhbmNlbDsgdGhlXG4gICAgICAgICAgIFNlbWFudGljIERhdGFiYXNlIHRhYiBpcyBhIHJlYWQvcnVuIHN1cmZhY2UsIHNvIGl0IGdldHMgYSBwcmltYXJ5XG4gICAgICAgICAgIENsb3NlIHBsdXMgaXRzIEJ1aWxkL1JlYnVpbGQvU3RvcCBhY3Rpb24uIC0tPlxuICAgICAgPGZzLWZvcm0tZGlhbG9nLWFjdGlvbnMgW3NhdmVdPVwic2VsZWN0ZWRUYWIgPT09ICdnZW5lcmFsJ1wiPlxuICAgICAgICBAaWYgKHNlbGVjdGVkVGFiID09PSAna25vd2xlZGdlJykge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICBTYXZlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbkhpc3RvcnkoKVwiPlxuICAgICAgICAgICAgVmlldyBIaXN0b3J5XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNlbGVjdGVkVGFiID09PSAnYnVpbGQnKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ1bmRlZmluZWRcIj5cbiAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzZWxlY3RlZFRhYiA9PT0gJ2J1aWxkJyAmJiBzZW1hbnRpY0RhdGFiYXNlKCk7IGFzIGRiKSB7XG4gICAgICAgICAgQGlmIChkYi5idWlsZEFjdGl2ZSgpKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRiLnN0b3BCdWlsZCgpXCI+XG4gICAgICAgICAgICAgIFN0b3AgQnVpbGRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPCEtLSBOZXZlciBnYXRlZCBvbiB0aGUgc3RhdHVzIGxvYWQ6IGEgc3RhdHVzIHJlc3BvbnNlIHRoYXQgZmFpbHNcbiAgICAgICAgICAgICAgICAgbXVzdCBub3QgdGFrZSB0aGUgQnVpbGQgYWN0aW9uIGF3YXkgd2l0aCBpdC4gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYi5idWlsZCgpXCI+XG4gICAgICAgICAgICAgIHt7IGRiLnJlYnVpbGQoKSA/ICdSZWJ1aWxkJyA6ICdCdWlsZCcgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9mcy1mb3JtLWRpYWxvZy1hY3Rpb25zPlxuICAgIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8L2ZzLWRpYWxvZz5cbjwvZm9ybT5cbiJdfQ==
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9kaWFsb2dzL2dsb2JhbC1zZXR0aW5ncy9nbG9iYWwtc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2RpYWxvZ3MvZ2xvYmFsLXNldHRpbmdzL2dsb2JhbC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0Is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QUNYLGNBQWMsOFRBQ2QsWUFBWSxteEJBQ1osZ0JBQWdCLHdLQUNoQixZQUFZLG9hQUNaLFNBQVMsaUxBQ1QsZ0JBQWdCLDRIQUNoQixjQUFjLHFMQUNkLGdCQUFnQix3R0FDaEIsYUFBYSw2b0JBQ2Isb0JBQW9CLGlKQUNwQix5QkFBeUI7OzRGQUdoQix1QkFBdUI7a0JBcEJuQyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQix5QkFBeUI7cUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgaW5qZWN0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50LCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuXG5pbXBvcnQgeyBGc0RpYWxvZ01vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RpYWxvZyc7XG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWFya2Rvd25FZGl0b3JDb25maWcgfSBmcm9tICdAZmlyZXN0aXRjaC9tYXJrZG93bi1lZGl0b3InO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5pbXBvcnQgeyBGc1NrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2tlbGV0b24nO1xuaW1wb3J0IHsgRnNUYWJzTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvdGFicyc7XG5cbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSZXBvcnREYXRhIH0gZnJvbSAnLi4vLi4vZGF0YS9yZXBvcnQuZGF0YSc7XG5pbXBvcnQgeyBSZXBvcnRJbnN0cnVjdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25IaXN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi4vaW5zdHJ1Y3Rpb24taGlzdG9yeS9pbnN0cnVjdGlvbi1oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBaUtub3dsZWRnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9haS1rbm93bGVkZ2UvYWkta25vd2xlZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZW1hbnRpY0RhdGFiYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlbWFudGljLWRhdGFiYXNlL3NlbWFudGljLWRhdGFiYXNlLmNvbXBvbmVudCc7XG5cblxuLy8gTWF0Y2hlcyB0aGUgYmFja2VuZCBjYXAgKENyZWF0ZVJlcG9ydEluc3RydWN0aW9uT3BlcmF0aW9uOjpNQVhfTEVOR1RIKSDigJQgdGhlXG4vLyBkb2N1bWVudCByaWRlcyBhbG9uZyBvbiBldmVyeSBhZ2VudCB0dXJuLCBzbyBpdCBpcyBhIHByb21wdC1idWRnZXQgZ3VhcmQuXG5jb25zdCBNQVhfTEVOR1RIID0gNTAwMDA7XG5cbi8vIFNlZWRlZCBpbnRvIHRoZSBlZGl0b3IgKGNsaWVudC1zaWRlLCB1bnNhdmVkKSB3aGVuIG5vIHZlcnNpb24gZXhpc3RzIHlldCwgc29cbi8vIHRoZSBvcGVyYXRvciBzZWVzIHRoZSBpbnRlbmRlZCBzaGFwZSBvZiB0aGUgZG9jdW1lbnQuXG5jb25zdCBTQ0FGRk9MRCA9IFtcbiAgJyMgR2xvc3NhcnknLFxuICAnJyxcbiAgJypUZXJtcyB5b3VyIHRlYW0gdXNlcyBhbmQgd2hhdCB0aGV5IG1lYW4gaW4gdGhlIGRhdGEg4oCUIGUuZy4gXCJhY3RpdmUgYWNjb3VudHNcIiBhcmUgYWNjb3VudHMgd2l0aCBhbiBvcmRlciBpbiB0aGUgbGFzdCA5MCBkYXlzLionLFxuICAnJyxcbiAgJyMgQnVzaW5lc3MgcnVsZXMnLFxuICAnJyxcbiAgJypSdWxlcyB0byBhcHBseSB3aGVuIGJ1aWxkaW5nIG9yIGV4cGxhaW5pbmcgcmVwb3J0cy4qJyxcbiAgJycsXG4gICcjIFNwZWNpYWwgY2FzZXMnLFxuICAnJyxcbiAgJypLbm93biBleGNlcHRpb25zIGFuZCBkYXRhIHF1aXJrcyB0aGF0IGNhblxcJ3QgYmUgd29ya2VkIG91dCBmcm9tIHRoZSBkYXRhIGFsb25lLionLFxuICAnJyxcbl0uam9pbignXFxuJyk7XG5cblxuLy8gR2xvYmFsIHJlcG9ydCBzZXR0aW5ncywgb3BlbmVkIGZyb20gdGhlIHJlcG9ydHMgbGlzdGluZydzIGdlYXIuIE5laXRoZXIgdGFiXG4vLyBpcyBjaGF0LW9ubHksIHNvIG5vdGhpbmcgaGVyZSBpcyB3b3JkZWQgYXMgQUk6IGFuIGluc3RhbGwgdGhhdCB0dXJucyB0aGVcbi8vIHJlcG9ydCBjaGF0IG9mZiBhbmQgYnVpbGRzIHJlcG9ydHMgb3ZlciBNQ1Agc3RpbGwga2VlcHMgYm90aCB1cCB0byBkYXRlLlxuLy8gQSB0aGluIHNoZWxsOiB0aGUgZGlhbG9nIGZyYW1lLCB0aGUgdGFiIGdyb3VwLCBhbmQgYSBwZXItdGFiIGZvb3Rlci4gRWFjaCB0YWJcbi8vIGlzIGl0cyBvd24gY29tcG9uZW50IOKAlFxuLy8gICBLbm93bGVkZ2Ug4oCUIHRoZSBvcGVyYXRvci1hdXRob3JlZCBtYXJrZG93biBkb2N1bWVudCBldmVyeSByZXBvcnQgYnVpbGRcbi8vICAgcmVhZHM6IHRoZSBpbi1hcHAgYWdlbnQncyBzeXN0ZW0gaW5zdHJ1Y3Rpb25zIG9uIGVhY2ggY2hhdCB0dXJuLCBhbmRcbi8vICAgUmVhZFJlcG9ydEtub3dsZWRnZU9wZXJhdGlvbiBmb3IgYSBjbGllbnQgb3ZlciBNQ1AuIEl0cyBmb290ZXIgY2FycmllcyBhXG4vLyAgIFZpZXcgSGlzdG9yeSBidXR0b24gb3BlbmluZyB0aGUgdmVyc2lvbi1oaXN0b3J5IGRpYWxvZyAocmVzdG9yZXMgaGFwcGVuXG4vLyAgIHRoZXJlOyB0aGUgc2hlbGwgcmVmcmVzaGVzIG9uIGNsb3NlKS5cbi8vICAgU2VtYW50aWMgRGF0YWJhc2Ug4oCUIHRoZSBidWlsZCBzY29yZWJvYXJkIHJlcG9ydHMgYXJlIGJ1aWx0IGFuZCBydW4gZnJvbSxcbi8vICAgd2l0aCBhIHNlbGYtY29udGFpbmVkIEJ1aWxkIGFjdGlvbi5cbi8vIFRoZXJlIGlzIG5vIEdlbmVyYWwgdGFiIHdoaWxlIHRoZSBidWlsZCdzIEFJIGZ1bmN0aW9uIHBhc3MgaXMgZGlzYWJsZWRcbi8vIChSZXBvcnRTZW1hbnRpY0J1aWxkUHJvY2Vzczo6cnVuKTogaXRzIG9uZSBmaWVsZCwgdGhlIHNlbWFudGljLWJ1aWxkXG4vLyBjb25jdXJyZW5jeSwgaXMgcmVhZCBvbmx5IGJ5IHRoYXQgcGFzcy4gVGhlIHJlcG9ydHMvc2V0dGluZ3Mgcm91dGUgdGhhdFxuLy8gc3RvcmVzIGl0LCBhbmQgUmVwb3J0RGF0YS5zZXR0aW5ncygpL3NhdmVTZXR0aW5ncygpLCBhcmUgbGVmdCBpbiBwbGFjZS5cbi8vIFRoZSBzaGVsbCBvd25zIHRoZSBpbnN0cnVjdGlvbnMgZG9jdW1lbnQgYW5kIHRoZSBzYXZlOyBldmVyeXRoaW5nIGVsc2UgbGl2ZXNcbi8vIGluIHRoZSBjaGlsZHJlbi5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZ2xvYmFsLXNldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2xvYmFsLXNldHRpbmdzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRnNEaWFsb2dNb2R1bGUsXG4gICAgRnNGb3JtTW9kdWxlLFxuICAgIEZzU2tlbGV0b25Nb2R1bGUsXG4gICAgRnNUYWJzTW9kdWxlLFxuICAgIE1hdEJ1dHRvbixcbiAgICBNYXREaWFsb2dBY3Rpb25zLFxuICAgIE1hdERpYWxvZ0Nsb3NlLFxuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBBaUtub3dsZWRnZUNvbXBvbmVudCxcbiAgICBTZW1hbnRpY0RhdGFiYXNlQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBHbG9iYWxTZXR0aW5nc0NvbXBvbmVudCB7XG5cbiAgcHVibGljIHNlbGVjdGVkVGFiID0gJ2tub3dsZWRnZSc7XG5cbiAgLy8gVGhlIFNlbWFudGljIERhdGFiYXNlIHRhYiBjb21wb25lbnQsIHNvIHRoZSBzaGFyZWQgZm9vdGVyIGNhbiBkcml2ZSBpdHNcbiAgLy8gQnVpbGQvUmVidWlsZC9TdG9wIGFjdGlvbiBpbmxpbmUgbmV4dCB0byBDbG9zZSAodGhlIGJ1aWxkIHN0YXRlIGxpdmVzIHRoZXJlKS5cbiAgcHVibGljIHJlYWRvbmx5IHNlbWFudGljRGF0YWJhc2UgPSB2aWV3Q2hpbGQoU2VtYW50aWNEYXRhYmFzZUNvbXBvbmVudCk7XG5cbiAgLy8gVGhlIGVkaXRvcidzIGRyYWZ0LCBoZWxkIG9uIHRoZSBzaGVsbCBzbyBzd2l0Y2hpbmcgdGFicyBuZXZlciBsb3NlcyBhbiBlZGl0XG4gIC8vIOKAlCBzZWVkZWQgZnJvbSB0aGUgY3VycmVudCB2ZXJzaW9uIChvciB0aGUgc2NhZmZvbGQpLlxuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWRpdG9yQ29uZmlnOiBGc01hcmtkb3duRWRpdG9yQ29uZmlnID0ge1xuICAgIG1heExlbmd0aDogTUFYX0xFTkdUSCxcbiAgICBwbGFjZWhvbGRlcjogJ0J1c2luZXNzIHRlcm1zLCBydWxlcyBhbmQgc3BlY2lhbCBjYXNlcyBldmVyeSByZXBvcnQgc2hvdWxkIGZvbGxvd+KApicsXG4gIH07XG5cbiAgLy8gbnVsbCB1bnRpbCBsb2FkZWQg4oCUIHRoZSBmb3JtIHdhaXRzIGJlaGluZCB0aGUgc2tlbGV0b24gdW50aWwgaXQgaXMgaW4uXG4gIHB1YmxpYyByZWFkb25seSBpbnN0cnVjdGlvbnMgPSBzaWduYWw8UmVwb3J0SW5zdHJ1Y3Rpb25zIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxHbG9iYWxTZXR0aW5nc0NvbXBvbmVudD4+KE1hdERpYWxvZ1JlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXBvcnREYXRhID0gaW5qZWN0KFJlcG9ydERhdGEpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faW5pdCgpO1xuICB9XG5cbiAgLy8gT25seSB0aGUgS25vd2xlZGdlIHRhYiBzYXZlczogYSBuZXcgZG9jdW1lbnQgdmVyc2lvbiwgdGhlbiB0aGUgZGlhbG9nIGNsb3Nlcy5cbiAgcHVibGljIHNhdmUgPSAoKSA9PiB0aGlzLl9yZXBvcnREYXRhLnNhdmVJbnN0cnVjdGlvbnModGhpcy5jb250ZW50KCkpXG4gICAgLnBpcGUoXG4gICAgICB0YXAoKGluc3RydWN0aW9uczogUmVwb3J0SW5zdHJ1Y3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnS25vd2xlZGdlIHNhdmVkJyk7XG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZShpbnN0cnVjdGlvbnMpO1xuICAgICAgfSksXG4gICAgKTtcblxuICAvLyBPcGVuIHRoZSB2ZXJzaW9uLWhpc3RvcnkgZGlhbG9nLiBSZXN0b3JlcyBoYXBwZW4gaW5zaWRlIGl0LCBzbyB3aGVuIGl0XG4gIC8vIGNsb3NlcyAoaG93ZXZlciBpdCBjbG9zZXMpIHJlLWZldGNoIHRoZSBkb2N1bWVudDogYSByZXN0b3JlIGNoYW5nZWQgdGhlXG4gIC8vIGN1cnJlbnQgdmVyc2lvbiBhbmQgbXVzdCByZXNlZWQgdGhlIGVkaXRvcjsgb3RoZXJ3aXNlIGp1c3QgcmVmcmVzaCB0aGVcbiAgLy8gdmVyc2lvbiBsaXN0IHdpdGhvdXQgdG91Y2hpbmcgYW4gdW5zYXZlZCBkcmFmdC5cbiAgcHVibGljIG9wZW5IaXN0b3J5KCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRJZCA9IHRoaXMuaW5zdHJ1Y3Rpb25zKCk/Lmluc3RydWN0aW9ucz8uaWQ7XG5cbiAgICB0aGlzLl9kaWFsb2cub3BlbihJbnN0cnVjdGlvbkhpc3RvcnlDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnODAwcHgnLFxuICAgICAgbWF4V2lkdGg6ICc5NXZ3JyxcbiAgICAgIG1heEhlaWdodDogJzg1dmgnLFxuICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIGRhdGE6IHsgdmVyc2lvbnM6IHRoaXMuaW5zdHJ1Y3Rpb25zKCk/LnZlcnNpb25zID8/IFtdIH0sXG4gICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuX3JlcG9ydERhdGEuaW5zdHJ1Y3Rpb25zKCkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9ucykgPT4ge1xuICAgICAgICBpZiAoaW5zdHJ1Y3Rpb25zLmluc3RydWN0aW9ucz8uaWQgIT09IGN1cnJlbnRJZCkge1xuICAgICAgICAgIHRoaXMuX2FwcGx5SW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5pbnN0cnVjdGlvbnMuc2V0KGluc3RydWN0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXBvcnREYXRhLmluc3RydWN0aW9ucygpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKChpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9ucykgPT4gdGhpcy5fYXBwbHlJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKSk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnM6IFJlcG9ydEluc3RydWN0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuaW5zdHJ1Y3Rpb25zLnNldChpbnN0cnVjdGlvbnMpO1xuICAgIHRoaXMuY29udGVudC5zZXQoaW5zdHJ1Y3Rpb25zLmluc3RydWN0aW9ucz8uY29udGVudCA/PyBTQ0FGRk9MRCk7XG4gIH1cbn1cbiIsIjxmb3JtXG4gICAgKmZzU2tlbGV0b25Gb3JtPVwiaW5zdHJ1Y3Rpb25zKClcIlxuICAgIGZzRm9ybVxuICAgIFtzdWJtaXRdPVwic2F2ZVwiPlxuICA8ZnMtZGlhbG9nPlxuICAgIDxmcy1kaWFsb2ctdGl0bGU+XG4gICAgICBSZXBvcnQgU2V0dGluZ3NcbiAgICA8L2ZzLWRpYWxvZy10aXRsZT5cbiAgICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgPG1hdC10YWItZ3JvdXAgWyhzZWxlY3RlZCldPVwic2VsZWN0ZWRUYWJcIj5cbiAgICAgICAgPG1hdC10YWJcbiAgICAgICAgICAgIGxhYmVsPVwiS25vd2xlZGdlXCJcbiAgICAgICAgICAgIG5hbWU9XCJrbm93bGVkZ2VcIj5cbiAgICAgICAgICA8ZnMtYWktcmVwb3J0LWdsb2JhbC1zZXR0aW5ncy1haS1rbm93bGVkZ2VcbiAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiY29udGVudCgpXCJcbiAgICAgICAgICAgICAgKGNvbnRlbnRDaGFuZ2UpPVwiY29udGVudC5zZXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZWRpdG9yQ29uZmlnXCI+XG4gICAgICAgICAgPC9mcy1haS1yZXBvcnQtZ2xvYmFsLXNldHRpbmdzLWFpLWtub3dsZWRnZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYlxuICAgICAgICAgICAgbGFiZWw9XCJTZW1hbnRpYyBEYXRhYmFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiYnVpbGRcIj5cbiAgICAgICAgICA8ZnMtYWktcmVwb3J0LWdsb2JhbC1zZXR0aW5ncy1zZW1hbnRpYy1kYXRhYmFzZT5cbiAgICAgICAgICA8L2ZzLWFpLXJlcG9ydC1nbG9iYWwtc2V0dGluZ3Mtc2VtYW50aWMtZGF0YWJhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgPCEtLSBUaGUgZm9vdGVyIGZvbGxvd3MgdGhlIHNlbGVjdGVkIHRhYi4gS25vd2xlZGdlIHByb2plY3RzIGl0cyBvd25cbiAgICAgICAgICAgU2F2ZSB8IFZpZXcgSGlzdG9yeSB8IENhbmNlbCByb3cgKGZzLWZvcm0tZGlhbG9nLWFjdGlvbnMgcmVuZGVyc1xuICAgICAgICAgICBwcm9qZWN0ZWQgY29udGVudCBhZnRlciBTYXZlL0NhbmNlbCwgc28gdGhlIGRlZmF1bHQgcGFpciBjYW4ndCBrZWVwXG4gICAgICAgICAgIFZpZXcgSGlzdG9yeSBiZXNpZGUgU2F2ZSk7IHRoZSBTZW1hbnRpYyBEYXRhYmFzZSB0YWIgaXMgYSByZWFkL3J1blxuICAgICAgICAgICBzdXJmYWNlLCBzbyBpdCBnZXRzIGEgcHJpbWFyeSBDbG9zZSBwbHVzIGl0cyBCdWlsZC9SZWJ1aWxkL1N0b3BcbiAgICAgICAgICAgYWN0aW9uLiBOZWl0aGVyIHVzZXMgdGhlIGRlZmF1bHQgU2F2ZS9DYW5jZWwgcGFpci4gLS0+XG4gICAgICA8ZnMtZm9ybS1kaWFsb2ctYWN0aW9ucyBbc2F2ZV09XCJmYWxzZVwiPlxuICAgICAgICBAaWYgKHNlbGVjdGVkVGFiID09PSAna25vd2xlZGdlJykge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCI+XG4gICAgICAgICAgICBTYXZlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbkhpc3RvcnkoKVwiPlxuICAgICAgICAgICAgVmlldyBIaXN0b3J5XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgICAgICAgICBDYW5jZWxcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKHNlbGVjdGVkVGFiID09PSAnYnVpbGQnKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ1bmRlZmluZWRcIj5cbiAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzZWxlY3RlZFRhYiA9PT0gJ2J1aWxkJyAmJiBzZW1hbnRpY0RhdGFiYXNlKCk7IGFzIGRiKSB7XG4gICAgICAgICAgQGlmIChkYi5idWlsZEFjdGl2ZSgpKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgIGNvbG9yPVwid2FyblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRiLnN0b3BCdWlsZCgpXCI+XG4gICAgICAgICAgICAgIFN0b3AgQnVpbGRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPCEtLSBOZXZlciBnYXRlZCBvbiB0aGUgc3RhdHVzIGxvYWQ6IGEgc3RhdHVzIHJlc3BvbnNlIHRoYXQgZmFpbHNcbiAgICAgICAgICAgICAgICAgbXVzdCBub3QgdGFrZSB0aGUgQnVpbGQgYWN0aW9uIGF3YXkgd2l0aCBpdC4gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkYi5idWlsZCgpXCI+XG4gICAgICAgICAgICAgIHt7IGRiLnJlYnVpbGQoKSA/ICdSZWJ1aWxkJyA6ICdCdWlsZCcgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgPC9mcy1mb3JtLWRpYWxvZy1hY3Rpb25zPlxuICAgIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8L2ZzLWRpYWxvZz5cbjwvZm9ybT5cbiJdfQ==
|
|
@@ -15,7 +15,7 @@ import * as i1 from "@firestitch/chip";
|
|
|
15
15
|
import * as i2 from "@firestitch/date";
|
|
16
16
|
import * as i3 from "@firestitch/dialog";
|
|
17
17
|
import * as i4 from "@firestitch/message";
|
|
18
|
-
// The
|
|
18
|
+
// The Knowledge document's version history (append-only), each version
|
|
19
19
|
// previewed and restorable — opened from the Report Settings footer's View
|
|
20
20
|
// History button. Restores happen here (confirm, then flip the current flag —
|
|
21
21
|
// no new version is created); the opener refreshes its instructions after this
|
|
@@ -31,7 +31,7 @@ export class InstructionHistoryComponent {
|
|
|
31
31
|
restore(version) {
|
|
32
32
|
this._prompt.confirm({
|
|
33
33
|
title: 'Restore version',
|
|
34
|
-
template: 'Make this version the current
|
|
34
|
+
template: 'Make this version the current knowledge? The newer versions stay in the history.',
|
|
35
35
|
commitLabel: 'Restore',
|
|
36
36
|
})
|
|
37
37
|
.pipe(switchMap(() => this._reportData.restoreInstruction(version.id)), takeUntilDestroyed(this._destroyRef))
|
|
@@ -41,7 +41,7 @@ export class InstructionHistoryComponent {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InstructionHistoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: InstructionHistoryComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <fs-dialog-title>\n
|
|
44
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: InstructionHistoryComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<fs-dialog>\n <fs-dialog-title>\n Knowledge History\n </fs-dialog-title>\n <mat-dialog-content>\n @if (versions().length) {\n <div class=\"versions\">\n @for (version of versions(); track version.id) {\n <div class=\"version\">\n <div class=\"version-header\">\n <fs-date\n [date]=\"version.createDate\"\n format=\"date-time\">\n </fs-date>\n @if (version.accountName) {\n <span class=\"author\">{{ version.accountName }}</span>\n }\n <span class=\"spacer\"></span>\n @if (version.current) {\n <fs-chip\n size=\"tiny\"\n [backgroundColor]=\"'#2e7d32'\"\n color=\"#ffffff\">\n Current\n </fs-chip>\n } @else {\n <button\n type=\"button\"\n mat-stroked-button\n (click)=\"restore(version)\">\n Restore\n </button>\n }\n </div>\n <div class=\"version-preview\">\n <fs-markdown-renderer [markdown]=\"version.content\"></fs-markdown-renderer>\n </div>\n </div>\n }\n </div>\n } @else {\n <fs-message-info>\n No versions yet \u2014 every save of the Knowledge document lands here, and\n any version can be restored.\n </fs-message-info>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [".version{border:1px solid rgba(0,0,0,.12);border-radius:6px;padding:12px}.version+.version{margin-top:12px}.version .version-header{display:flex;align-items:center;gap:8px}.version .version-header .author{color:#0009}.version .version-header .spacer{flex:1}.version .version-preview{margin-top:8px;max-height:200px;overflow-y:auto;border-top:1px solid rgba(0,0,0,.08);padding-top:8px}\n"], dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "disabled", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "ngmodule", type: FsDateModule }, { kind: "component", type: i2.FsDateComponent, selector: "fs-date", inputs: ["date", "format", "timezone"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "component", type: i3.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout"] }, { kind: "component", type: i3.FsDialogTitleComponent, selector: "fs-dialog-title", inputs: ["close", "dockToggle", "back"] }, { kind: "component", type: FsMarkdownRendererComponent, selector: "fs-markdown-renderer", inputs: ["config", "markdown"] }, { kind: "ngmodule", type: FsMessageModule }, { kind: "component", type: i4.FsMessageInfoComponent, selector: "fs-message-info" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
45
45
|
}
|
|
46
46
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InstructionHistoryComponent, decorators: [{
|
|
47
47
|
type: Component,
|
|
@@ -55,6 +55,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
55
55
|
FsDialogModule,
|
|
56
56
|
FsMarkdownRendererComponent,
|
|
57
57
|
FsMessageModule,
|
|
58
|
-
], template: "<fs-dialog>\n <fs-dialog-title>\n
|
|
58
|
+
], template: "<fs-dialog>\n <fs-dialog-title>\n Knowledge History\n </fs-dialog-title>\n <mat-dialog-content>\n @if (versions().length) {\n <div class=\"versions\">\n @for (version of versions(); track version.id) {\n <div class=\"version\">\n <div class=\"version-header\">\n <fs-date\n [date]=\"version.createDate\"\n format=\"date-time\">\n </fs-date>\n @if (version.accountName) {\n <span class=\"author\">{{ version.accountName }}</span>\n }\n <span class=\"spacer\"></span>\n @if (version.current) {\n <fs-chip\n size=\"tiny\"\n [backgroundColor]=\"'#2e7d32'\"\n color=\"#ffffff\">\n Current\n </fs-chip>\n } @else {\n <button\n type=\"button\"\n mat-stroked-button\n (click)=\"restore(version)\">\n Restore\n </button>\n }\n </div>\n <div class=\"version-preview\">\n <fs-markdown-renderer [markdown]=\"version.content\"></fs-markdown-renderer>\n </div>\n </div>\n }\n </div>\n } @else {\n <fs-message-info>\n No versions yet \u2014 every save of the Knowledge document lands here, and\n any version can be restored.\n </fs-message-info>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n [mat-dialog-close]=\"null\">\n Close\n </button>\n </mat-dialog-actions>\n</fs-dialog>\n", styles: [".version{border:1px solid rgba(0,0,0,.12);border-radius:6px;padding:12px}.version+.version{margin-top:12px}.version .version-header{display:flex;align-items:center;gap:8px}.version .version-header .author{color:#0009}.version .version-header .spacer{flex:1}.version .version-preview{margin-top:8px;max-height:200px;overflow-y:auto;border-top:1px solid rgba(0,0,0,.08);padding-top:8px}\n"] }]
|
|
59
59
|
}] });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb24taGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvZGlhbG9ncy9pbnN0cnVjdGlvbi1oaXN0b3J5L2luc3RydWN0aW9uLWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2RpYWxvZ3MvaW5zdHJ1Y3Rpb24taGlzdG9yeS9pbnN0cnVjdGlvbi1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBU3BELHVFQUF1RTtBQUN2RSwyRUFBMkU7QUFDM0UsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSxrRUFBa0U7QUFrQmxFLE1BQU0sT0FBTywyQkFBMkI7SUFFckIsS0FBSyxHQUFHLE1BQU0sQ0FBK0IsZUFBZSxDQUFDLENBQUM7SUFFL0QsUUFBUSxHQUFHLE1BQU0sQ0FBc0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUUzRCxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWxELDRFQUE0RTtJQUNyRSxPQUFPLENBQUMsT0FBMEI7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFDbkIsS0FBSyxFQUFFLGlCQUFpQjtZQUN4QixRQUFRLEVBQUUsa0ZBQWtGO1lBQzVGLFdBQVcsRUFBRSxTQUFTO1NBQ3ZCLENBQUM7YUFDQyxJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ2hFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLENBQUMsQ0FBQyxZQUFnQyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQTFCVSwyQkFBMkI7NEZBQTNCLDJCQUEyQix3RUM5Q3hDLGd2REF5REEsNGJEdEJJLFNBQVMsaUxBQ1QsZ0JBQWdCLHlHQUNoQixnQkFBZ0IsNEhBQ2hCLGNBQWMsb0xBQ2QsWUFBWSxxWEFDWixZQUFZLDRJQUNaLGNBQWMsK1RBQ2QsMkJBQTJCLGdHQUMzQixlQUFlOzs0RkFHTiwyQkFBMkI7a0JBakJ2QyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsMkJBQTJCO3dCQUMzQixlQUFlO3FCQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIERlc3Ryb3lSZWYsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlLCBNYXREaWFsb2dDb250ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRnNDaGlwTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvY2hpcCc7XG5pbXBvcnQgeyBGc0RhdGVNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9kYXRlJztcbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcbmltcG9ydCB7IEZzTWFya2Rvd25SZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJ0BmaXJlc3RpdGNoL21hcmtkb3duLWVkaXRvcic7XG5pbXBvcnQgeyBGc01lc3NhZ2UsIEZzTWVzc2FnZU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNQcm9tcHQgfSBmcm9tICdAZmlyZXN0aXRjaC9wcm9tcHQnO1xuXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFJlcG9ydERhdGEgfSBmcm9tICcuLi8uLi9kYXRhL3JlcG9ydC5kYXRhJztcbmltcG9ydCB7IFJlcG9ydEluc3RydWN0aW9uLCBSZXBvcnRJbnN0cnVjdGlvbnMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdHJ1Y3Rpb25IaXN0b3J5RGlhbG9nRGF0YSB7XG4gIHZlcnNpb25zOiBSZXBvcnRJbnN0cnVjdGlvbltdO1xufVxuXG5cbi8vIFRoZSBLbm93bGVkZ2UgZG9jdW1lbnQncyB2ZXJzaW9uIGhpc3RvcnkgKGFwcGVuZC1vbmx5KSwgZWFjaCB2ZXJzaW9uXG4vLyBwcmV2aWV3ZWQgYW5kIHJlc3RvcmFibGUg4oCUIG9wZW5lZCBmcm9tIHRoZSBSZXBvcnQgU2V0dGluZ3MgZm9vdGVyJ3MgVmlld1xuLy8gSGlzdG9yeSBidXR0b24uIFJlc3RvcmVzIGhhcHBlbiBoZXJlIChjb25maXJtLCB0aGVuIGZsaXAgdGhlIGN1cnJlbnQgZmxhZyDigJRcbi8vIG5vIG5ldyB2ZXJzaW9uIGlzIGNyZWF0ZWQpOyB0aGUgb3BlbmVyIHJlZnJlc2hlcyBpdHMgaW5zdHJ1Y3Rpb25zIGFmdGVyIHRoaXNcbi8vIGRpYWxvZyBjbG9zZXMsIHNvIGEgcmVzdG9yZSBtYWRlIGhlcmUgcmVzZWVkcyB0aGUgZWRpdG9yIHRoZXJlLlxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9pbnN0cnVjdGlvbi1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaW5zdHJ1Y3Rpb24taGlzdG9yeS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEJ1dHRvbixcbiAgICBNYXREaWFsb2dDb250ZW50LFxuICAgIE1hdERpYWxvZ0FjdGlvbnMsXG4gICAgTWF0RGlhbG9nQ2xvc2UsXG4gICAgRnNDaGlwTW9kdWxlLFxuICAgIEZzRGF0ZU1vZHVsZSxcbiAgICBGc0RpYWxvZ01vZHVsZSxcbiAgICBGc01hcmtkb3duUmVuZGVyZXJDb21wb25lbnQsXG4gICAgRnNNZXNzYWdlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbnN0cnVjdGlvbkhpc3RvcnlDb21wb25lbnQge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGEgPSBpbmplY3Q8SW5zdHJ1Y3Rpb25IaXN0b3J5RGlhbG9nRGF0YT4oTUFUX0RJQUxPR19EQVRBKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbnMgPSBzaWduYWw8UmVwb3J0SW5zdHJ1Y3Rpb25bXT4odGhpcy5fZGF0YS52ZXJzaW9ucyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVwb3J0RGF0YSA9IGluamVjdChSZXBvcnREYXRhKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcHJvbXB0ID0gaW5qZWN0KEZzUHJvbXB0KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8vIE1ha2UgYW4gZWFybGllciB2ZXJzaW9uIGN1cnJlbnQg4oCUIGZsaXBzIHRoZSBmbGFnLCBjcmVhdGVzIG5vIG5ldyB2ZXJzaW9uLlxuICBwdWJsaWMgcmVzdG9yZSh2ZXJzaW9uOiBSZXBvcnRJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3Byb21wdC5jb25maXJtKHtcbiAgICAgIHRpdGxlOiAnUmVzdG9yZSB2ZXJzaW9uJyxcbiAgICAgIHRlbXBsYXRlOiAnTWFrZSB0aGlzIHZlcnNpb24gdGhlIGN1cnJlbnQga25vd2xlZGdlPyBUaGUgbmV3ZXIgdmVyc2lvbnMgc3RheSBpbiB0aGUgaGlzdG9yeS4nLFxuICAgICAgY29tbWl0TGFiZWw6ICdSZXN0b3JlJyxcbiAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLl9yZXBvcnREYXRhLnJlc3RvcmVJbnN0cnVjdGlvbih2ZXJzaW9uLmlkKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGluc3RydWN0aW9uczogUmVwb3J0SW5zdHJ1Y3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMudmVyc2lvbnMuc2V0KGluc3RydWN0aW9ucy52ZXJzaW9ucyk7XG4gICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnVmVyc2lvbiByZXN0b3JlZCcpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxmcy1kaWFsb2c+XG4gIDxmcy1kaWFsb2ctdGl0bGU+XG4gICAgS25vd2xlZGdlIEhpc3RvcnlcbiAgPC9mcy1kaWFsb2ctdGl0bGU+XG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgQGlmICh2ZXJzaW9ucygpLmxlbmd0aCkge1xuICAgICAgPGRpdiBjbGFzcz1cInZlcnNpb25zXCI+XG4gICAgICAgIEBmb3IgKHZlcnNpb24gb2YgdmVyc2lvbnMoKTsgdHJhY2sgdmVyc2lvbi5pZCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJzaW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVyc2lvbi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPGZzLWRhdGVcbiAgICAgICAgICAgICAgICAgIFtkYXRlXT1cInZlcnNpb24uY3JlYXRlRGF0ZVwiXG4gICAgICAgICAgICAgICAgICBmb3JtYXQ9XCJkYXRlLXRpbWVcIj5cbiAgICAgICAgICAgICAgPC9mcy1kYXRlPlxuICAgICAgICAgICAgICBAaWYgKHZlcnNpb24uYWNjb3VudE5hbWUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dGhvclwiPnt7IHZlcnNpb24uYWNjb3VudE5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGFjZXJcIj48L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAodmVyc2lvbi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgPGZzLWNoaXBcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInRpbnlcIlxuICAgICAgICAgICAgICAgICAgICBbYmFja2dyb3VuZENvbG9yXT1cIicjMmU3ZDMyJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiI2ZmZmZmZlwiPlxuICAgICAgICAgICAgICAgICAgQ3VycmVudFxuICAgICAgICAgICAgICAgIDwvZnMtY2hpcD5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXN0b3JlKHZlcnNpb24pXCI+XG4gICAgICAgICAgICAgICAgICBSZXN0b3JlXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnNpb24tcHJldmlld1wiPlxuICAgICAgICAgICAgICA8ZnMtbWFya2Rvd24tcmVuZGVyZXIgW21hcmtkb3duXT1cInZlcnNpb24uY29udGVudFwiPjwvZnMtbWFya2Rvd24tcmVuZGVyZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8ZnMtbWVzc2FnZS1pbmZvPlxuICAgICAgICBObyB2ZXJzaW9ucyB5ZXQg4oCUIGV2ZXJ5IHNhdmUgb2YgdGhlIEtub3dsZWRnZSBkb2N1bWVudCBsYW5kcyBoZXJlLCBhbmRcbiAgICAgICAgYW55IHZlcnNpb24gY2FuIGJlIHJlc3RvcmVkLlxuICAgICAgPC9mcy1tZXNzYWdlLWluZm8+XG4gICAgfVxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIj5cbiAgICAgIENsb3NlXG4gICAgPC9idXR0b24+XG4gIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mcy1kaWFsb2c+XG4iXX0=
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// How a time axis writes its period labels: short ('May', with the year on a
|
|
2
2
|
// second line when the data spans years), long ('May 2026', in the report's
|
|
3
|
-
// locale)
|
|
3
|
+
// locale), numeric ('2026-05', the same in every locale) or periodEnd (the
|
|
4
|
+
// period's last day as a numeric date in the locale: a week its Sunday
|
|
5
|
+
// '9/7/2025', a month '9/30/2025', a year '12/31/2025'). A category axis
|
|
4
6
|
// prints its values as they are.
|
|
5
7
|
//
|
|
6
8
|
// Mirrors the server's ChartDateLabelEnum value for value.
|
|
@@ -9,5 +11,6 @@ export var ReportChartDateLabel;
|
|
|
9
11
|
ReportChartDateLabel["Short"] = "short";
|
|
10
12
|
ReportChartDateLabel["Long"] = "long";
|
|
11
13
|
ReportChartDateLabel["Numeric"] = "numeric";
|
|
14
|
+
ReportChartDateLabel["PeriodEnd"] = "periodEnd";
|
|
12
15
|
})(ReportChartDateLabel || (ReportChartDateLabel = {}));
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXJ0LWRhdGUtbGFiZWwuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0ZS1sYWJlbC5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUsMkVBQTJFO0FBQzNFLHVFQUF1RTtBQUN2RSx5RUFBeUU7QUFDekUsaUNBQWlDO0FBQ2pDLEVBQUU7QUFDRiwyREFBMkQ7QUFDM0QsTUFBTSxDQUFOLElBQVksb0JBS1g7QUFMRCxXQUFZLG9CQUFvQjtJQUM5Qix1Q0FBZSxDQUFBO0lBQ2YscUNBQWEsQ0FBQTtJQUNiLDJDQUFtQixDQUFBO0lBQ25CLCtDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFMVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBSy9CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSG93IGEgdGltZSBheGlzIHdyaXRlcyBpdHMgcGVyaW9kIGxhYmVsczogc2hvcnQgKCdNYXknLCB3aXRoIHRoZSB5ZWFyIG9uIGFcbi8vIHNlY29uZCBsaW5lIHdoZW4gdGhlIGRhdGEgc3BhbnMgeWVhcnMpLCBsb25nICgnTWF5IDIwMjYnLCBpbiB0aGUgcmVwb3J0J3Ncbi8vIGxvY2FsZSksIG51bWVyaWMgKCcyMDI2LTA1JywgdGhlIHNhbWUgaW4gZXZlcnkgbG9jYWxlKSBvciBwZXJpb2RFbmQgKHRoZVxuLy8gcGVyaW9kJ3MgbGFzdCBkYXkgYXMgYSBudW1lcmljIGRhdGUgaW4gdGhlIGxvY2FsZTogYSB3ZWVrIGl0cyBTdW5kYXlcbi8vICc5LzcvMjAyNScsIGEgbW9udGggJzkvMzAvMjAyNScsIGEgeWVhciAnMTIvMzEvMjAyNScpLiBBIGNhdGVnb3J5IGF4aXNcbi8vIHByaW50cyBpdHMgdmFsdWVzIGFzIHRoZXkgYXJlLlxuLy9cbi8vIE1pcnJvcnMgdGhlIHNlcnZlcidzIENoYXJ0RGF0ZUxhYmVsRW51bSB2YWx1ZSBmb3IgdmFsdWUuXG5leHBvcnQgZW51bSBSZXBvcnRDaGFydERhdGVMYWJlbCB7XG4gIFNob3J0ID0gJ3Nob3J0JyxcbiAgTG9uZyA9ICdsb25nJyxcbiAgTnVtZXJpYyA9ICdudW1lcmljJyxcbiAgUGVyaW9kRW5kID0gJ3BlcmlvZEVuZCcsXG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// What a chart's settings dialog offers for the periods its time axis draws:
|
|
2
|
+
// the viewer's date range as it is (none, no span), the last N periods, or
|
|
3
|
+
// every period since a fixed day, each up to the end of the date filter.
|
|
4
|
+
export var ReportChartSpanMode;
|
|
5
|
+
(function (ReportChartSpanMode) {
|
|
6
|
+
ReportChartSpanMode["None"] = "none";
|
|
7
|
+
ReportChartSpanMode["Periods"] = "periods";
|
|
8
|
+
ReportChartSpanMode["Start"] = "start";
|
|
9
|
+
})(ReportChartSpanMode || (ReportChartSpanMode = {}));
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXJ0LXNwYW4tbW9kZS5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2VudW1zL3JlcG9ydC1jaGFydC1zcGFuLW1vZGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2RUFBNkU7QUFDN0UsMkVBQTJFO0FBQzNFLHlFQUF5RTtBQUN6RSxNQUFNLENBQU4sSUFBWSxtQkFJWDtBQUpELFdBQVksbUJBQW1CO0lBQzdCLG9DQUFhLENBQUE7SUFDYiwwQ0FBbUIsQ0FBQTtJQUNuQixzQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV2hhdCBhIGNoYXJ0J3Mgc2V0dGluZ3MgZGlhbG9nIG9mZmVycyBmb3IgdGhlIHBlcmlvZHMgaXRzIHRpbWUgYXhpcyBkcmF3czpcbi8vIHRoZSB2aWV3ZXIncyBkYXRlIHJhbmdlIGFzIGl0IGlzIChub25lLCBubyBzcGFuKSwgdGhlIGxhc3QgTiBwZXJpb2RzLCBvclxuLy8gZXZlcnkgcGVyaW9kIHNpbmNlIGEgZml4ZWQgZGF5LCBlYWNoIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGRhdGUgZmlsdGVyLlxuZXhwb3J0IGVudW0gUmVwb3J0Q2hhcnRTcGFuTW9kZSB7XG4gIE5vbmUgPSAnbm9uZScsXG4gIFBlcmlvZHMgPSAncGVyaW9kcycsXG4gIFN0YXJ0ID0gJ3N0YXJ0Jyxcbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Where a chart's xAxis.span ends: at the end of the date filter the viewer
|
|
2
|
+
// set, else the end of the document's own timeframe on the axis, else the
|
|
3
|
+
// current period. The server lays the span over the axis and runs it, so the
|
|
4
|
+
// screen and every export draw the same periods.
|
|
5
|
+
//
|
|
6
|
+
// Mirrors the server's ChartSpanThroughEnum value for value.
|
|
7
|
+
export var ReportChartSpanThrough;
|
|
8
|
+
(function (ReportChartSpanThrough) {
|
|
9
|
+
ReportChartSpanThrough["FilterEnd"] = "filterEnd";
|
|
10
|
+
})(ReportChartSpanThrough || (ReportChartSpanThrough = {}));
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWNoYXJ0LXNwYW4tdGhyb3VnaC5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2VudW1zL3JlcG9ydC1jaGFydC1zcGFuLXRocm91Z2guZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0RUFBNEU7QUFDNUUsMEVBQTBFO0FBQzFFLDZFQUE2RTtBQUM3RSxpREFBaUQ7QUFDakQsRUFBRTtBQUNGLDZEQUE2RDtBQUM3RCxNQUFNLENBQU4sSUFBWSxzQkFFWDtBQUZELFdBQVksc0JBQXNCO0lBQ2hDLGlEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFGVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBRWpDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gV2hlcmUgYSBjaGFydCdzIHhBeGlzLnNwYW4gZW5kczogYXQgdGhlIGVuZCBvZiB0aGUgZGF0ZSBmaWx0ZXIgdGhlIHZpZXdlclxuLy8gc2V0LCBlbHNlIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50J3Mgb3duIHRpbWVmcmFtZSBvbiB0aGUgYXhpcywgZWxzZSB0aGVcbi8vIGN1cnJlbnQgcGVyaW9kLiBUaGUgc2VydmVyIGxheXMgdGhlIHNwYW4gb3ZlciB0aGUgYXhpcyBhbmQgcnVucyBpdCwgc28gdGhlXG4vLyBzY3JlZW4gYW5kIGV2ZXJ5IGV4cG9ydCBkcmF3IHRoZSBzYW1lIHBlcmlvZHMuXG4vL1xuLy8gTWlycm9ycyB0aGUgc2VydmVyJ3MgQ2hhcnRTcGFuVGhyb3VnaEVudW0gdmFsdWUgZm9yIHZhbHVlLlxuZXhwb3J0IGVudW0gUmVwb3J0Q2hhcnRTcGFuVGhyb3VnaCB7XG4gIEZpbHRlckVuZCA9ICdmaWx0ZXJFbmQnLFxufVxuIl19
|