@visuno/angular 0.0.0-stage → 0.1.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/LICENSE +24 -0
- package/README.md +56 -2
- package/account-table/account-table.component.d.ts +72 -0
- package/action-log/action-log.component.d.ts +41 -0
- package/activity-heatmap/activity-heatmap.component.d.ts +67 -0
- package/agent-inbox/agent-inbox.component.d.ts +75 -0
- package/agent-lanes/agent-lanes.component.d.ts +152 -0
- package/agent-phases/agent-phases.component.d.ts +62 -0
- package/agent-run-timeline/agent-run-timeline.component.d.ts +113 -0
- package/agent-tree/agent-tree.component.d.ts +80 -0
- package/answer-action-bar/answer-action-bar.component.d.ts +110 -0
- package/artifact-card/artifact-card.component.d.ts +145 -0
- package/attachment-tray/attachment-tray.component.d.ts +84 -0
- package/badge/badge.component.d.ts +25 -0
- package/bar-chart/bar-chart.component.d.ts +87 -0
- package/browser-session/browser-session.component.d.ts +70 -0
- package/buttons/buttons.component.d.ts +63 -0
- package/card/card.component.d.ts +21 -0
- package/change-review/change-review.component.d.ts +97 -0
- package/citation-hover-card/citation-hover-card.component.d.ts +95 -0
- package/code-viewer/code-viewer.component.d.ts +86 -0
- package/composer/composer.component.d.ts +114 -0
- package/context-meter/context-meter.component.d.ts +60 -0
- package/core/icon.component.d.ts +10 -0
- package/core/reduced-motion.service.d.ts +15 -0
- package/decision-prompt/decision-prompt.component.d.ts +56 -0
- package/design-review/design-review.component.d.ts +108 -0
- package/design-tuner/design-tuner.component.d.ts +75 -0
- package/details-panel/details-panel.component.d.ts +150 -0
- package/donut-chart/donut-chart.component.d.ts +63 -0
- package/draft-review/draft-review.component.d.ts +128 -0
- package/error-recovery/error-recovery.component.d.ts +59 -0
- package/esm2022/account-table/account-table.component.mjs +399 -0
- package/esm2022/action-log/action-log.component.mjs +177 -0
- package/esm2022/activity-heatmap/activity-heatmap.component.mjs +285 -0
- package/esm2022/agent-inbox/agent-inbox.component.mjs +284 -0
- package/esm2022/agent-lanes/agent-lanes.component.mjs +600 -0
- package/esm2022/agent-phases/agent-phases.component.mjs +300 -0
- package/esm2022/agent-run-timeline/agent-run-timeline.component.mjs +412 -0
- package/esm2022/agent-tree/agent-tree.component.mjs +393 -0
- package/esm2022/answer-action-bar/answer-action-bar.component.mjs +636 -0
- package/esm2022/artifact-card/artifact-card.component.mjs +916 -0
- package/esm2022/attachment-tray/attachment-tray.component.mjs +402 -0
- package/esm2022/badge/badge.component.mjs +97 -0
- package/esm2022/bar-chart/bar-chart.component.mjs +300 -0
- package/esm2022/browser-session/browser-session.component.mjs +352 -0
- package/esm2022/buttons/buttons.component.mjs +215 -0
- package/esm2022/card/card.component.mjs +107 -0
- package/esm2022/change-review/change-review.component.mjs +398 -0
- package/esm2022/citation-hover-card/citation-hover-card.component.mjs +360 -0
- package/esm2022/code-viewer/code-viewer.component.mjs +291 -0
- package/esm2022/composer/composer.component.mjs +743 -0
- package/esm2022/context-meter/context-meter.component.mjs +275 -0
- package/esm2022/core/icon.component.mjs +111 -0
- package/esm2022/core/reduced-motion.service.mjs +34 -0
- package/esm2022/decision-prompt/decision-prompt.component.mjs +259 -0
- package/esm2022/design-review/design-review.component.mjs +428 -0
- package/esm2022/design-tuner/design-tuner.component.mjs +341 -0
- package/esm2022/details-panel/details-panel.component.mjs +537 -0
- package/esm2022/donut-chart/donut-chart.component.mjs +240 -0
- package/esm2022/draft-review/draft-review.component.mjs +549 -0
- package/esm2022/error-recovery/error-recovery.component.mjs +231 -0
- package/esm2022/eval-results/eval-results.component.mjs +368 -0
- package/esm2022/feedback-sheet/feedback-sheet.component.mjs +411 -0
- package/esm2022/field-extraction/field-extraction.component.mjs +368 -0
- package/esm2022/funnel-chart/funnel-chart.component.mjs +258 -0
- package/esm2022/grid/grid.component.mjs +66 -0
- package/esm2022/health-score/health-score.component.mjs +420 -0
- package/esm2022/human-handoff/human-handoff.component.mjs +676 -0
- package/esm2022/image-generation/image-generation.component.mjs +1028 -0
- package/esm2022/inline-text-diff/inline-text-diff.component.mjs +390 -0
- package/esm2022/launch-checklist/launch-checklist.component.mjs +229 -0
- package/esm2022/line-chart/line-chart.component.mjs +417 -0
- package/esm2022/live-answer/live-answer.component.mjs +411 -0
- package/esm2022/metric-insight/metric-insight.component.mjs +511 -0
- package/esm2022/modal/modal.component.mjs +202 -0
- package/esm2022/model-picker/model-picker.component.mjs +491 -0
- package/esm2022/permission-gate/permission-gate.component.mjs +498 -0
- package/esm2022/plan-review/plan-review.component.mjs +432 -0
- package/esm2022/progress/progress.component.mjs +503 -0
- package/esm2022/prompt-library/prompt-library.component.mjs +453 -0
- package/esm2022/prompt-starters/prompt-starters.component.mjs +272 -0
- package/esm2022/proposal-card/proposal-card.component.mjs +402 -0
- package/esm2022/public-api.mjs +88 -0
- package/esm2022/radar-chart/radar-chart.component.mjs +500 -0
- package/esm2022/radial-goals/radial-goals.component.mjs +418 -0
- package/esm2022/reasoning-trail/reasoning-trail.component.mjs +284 -0
- package/esm2022/response-versions/response-versions.component.mjs +288 -0
- package/esm2022/rewrite-toolbar/rewrite-toolbar.component.mjs +397 -0
- package/esm2022/rich-text-editor/rich-text-editor.component.mjs +1755 -0
- package/esm2022/run-cost/run-cost.component.mjs +215 -0
- package/esm2022/run-queue/run-queue.component.mjs +481 -0
- package/esm2022/run-summary/run-summary.component.mjs +331 -0
- package/esm2022/scatter-chart/scatter-chart.component.mjs +705 -0
- package/esm2022/score-breakdown/score-breakdown.component.mjs +460 -0
- package/esm2022/segmented-control/segmented-control.component.mjs +180 -0
- package/esm2022/source-stack/source-stack.component.mjs +245 -0
- package/esm2022/stat-cards/stat-cards.component.mjs +258 -0
- package/esm2022/status-pill/status-pill.component.mjs +305 -0
- package/esm2022/steering/steering.component.mjs +343 -0
- package/esm2022/step-loader/step-loader.component.mjs +209 -0
- package/esm2022/task-table/task-table.component.mjs +534 -0
- package/esm2022/terminal-stream/terminal-stream.component.mjs +583 -0
- package/esm2022/thinking/thinking.component.mjs +276 -0
- package/esm2022/thinking-states/thinking-states.component.mjs +333 -0
- package/esm2022/thread-panel/thread-panel.component.mjs +271 -0
- package/esm2022/toast/toast.component.mjs +195 -0
- package/esm2022/toast-stack/toast-stack.component.mjs +301 -0
- package/esm2022/tool-call/tool-call.component.mjs +273 -0
- package/esm2022/tooltip/tooltip.component.mjs +417 -0
- package/esm2022/top-pages/top-pages.component.mjs +240 -0
- package/esm2022/trace-view/trace-view.component.mjs +440 -0
- package/esm2022/visuno-angular.mjs +5 -0
- package/esm2022/voice-capture/voice-capture.component.mjs +650 -0
- package/esm2022/voice-orb/voice-orb.component.mjs +538 -0
- package/esm2022/web-search/web-search.component.mjs +374 -0
- package/eval-results/eval-results.component.d.ts +67 -0
- package/feedback-sheet/feedback-sheet.component.d.ts +74 -0
- package/fesm2022/visuno-angular.mjs +31992 -0
- package/fesm2022/visuno-angular.mjs.map +1 -0
- package/field-extraction/field-extraction.component.d.ts +82 -0
- package/funnel-chart/funnel-chart.component.d.ts +70 -0
- package/grid/grid.component.d.ts +22 -0
- package/health-score/health-score.component.d.ts +87 -0
- package/human-handoff/human-handoff.component.d.ts +125 -0
- package/image-generation/image-generation.component.d.ts +253 -0
- package/index.d.ts +5 -0
- package/inline-text-diff/inline-text-diff.component.d.ts +76 -0
- package/launch-checklist/launch-checklist.component.d.ts +46 -0
- package/line-chart/line-chart.component.d.ts +89 -0
- package/live-answer/live-answer.component.d.ts +110 -0
- package/metric-insight/metric-insight.component.d.ts +110 -0
- package/modal/modal.component.d.ts +37 -0
- package/model-picker/model-picker.component.d.ts +97 -0
- package/package.json +51 -4
- package/permission-gate/permission-gate.component.d.ts +100 -0
- package/plan-review/plan-review.component.d.ts +86 -0
- package/progress/progress.component.d.ts +91 -0
- package/prompt-library/prompt-library.component.d.ts +121 -0
- package/prompt-starters/prompt-starters.component.d.ts +65 -0
- package/proposal-card/proposal-card.component.d.ts +101 -0
- package/public-api.d.ts +82 -0
- package/radar-chart/radar-chart.component.d.ts +110 -0
- package/radial-goals/radial-goals.component.d.ts +90 -0
- package/reasoning-trail/reasoning-trail.component.d.ts +73 -0
- package/response-versions/response-versions.component.d.ts +54 -0
- package/rewrite-toolbar/rewrite-toolbar.component.d.ts +92 -0
- package/rich-text-editor/rich-text-editor.component.d.ts +180 -0
- package/run-cost/run-cost.component.d.ts +43 -0
- package/run-queue/run-queue.component.d.ts +93 -0
- package/run-summary/run-summary.component.d.ts +81 -0
- package/scatter-chart/scatter-chart.component.d.ts +139 -0
- package/score-breakdown/score-breakdown.component.d.ts +107 -0
- package/segmented-control/segmented-control.component.d.ts +44 -0
- package/source-stack/source-stack.component.d.ts +60 -0
- package/stat-cards/stat-cards.component.d.ts +86 -0
- package/status-pill/status-pill.component.d.ts +64 -0
- package/steering/steering.component.d.ts +75 -0
- package/step-loader/step-loader.component.d.ts +40 -0
- package/styles.css +424 -0
- package/task-table/task-table.component.d.ts +114 -0
- package/terminal-stream/terminal-stream.component.d.ts +110 -0
- package/thinking/thinking.component.d.ts +63 -0
- package/thinking-states/thinking-states.component.d.ts +51 -0
- package/thread-panel/thread-panel.component.d.ts +75 -0
- package/toast/toast.component.d.ts +56 -0
- package/toast-stack/toast-stack.component.d.ts +72 -0
- package/tokens.css +424 -0
- package/tool-call/tool-call.component.d.ts +61 -0
- package/tooltip/tooltip.component.d.ts +89 -0
- package/top-pages/top-pages.component.d.ts +75 -0
- package/trace-view/trace-view.component.d.ts +95 -0
- package/voice-capture/voice-capture.component.d.ts +103 -0
- package/voice-orb/voice-orb.component.d.ts +78 -0
- package/web-search/web-search.component.d.ts +77 -0
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
// framework/angular/account-table/account-table.component.ts
|
|
2
|
+
//
|
|
3
|
+
// Native Angular port of framework/react/account-table/AccountTable.tsx.
|
|
4
|
+
// Accounts you can search and filter by plan; a row opens to show what the agent
|
|
5
|
+
// noticed, with an optional action button (Draft email) that spins while its
|
|
6
|
+
// promise settles. The rows stagger in whenever the search or the filter changes.
|
|
7
|
+
// Inputs mirror the React props; React callbacks become @Output EventEmitters.
|
|
8
|
+
//
|
|
9
|
+
// Icons: search (field), spark (the note's glyph) and check (the done state) — all
|
|
10
|
+
// present in the Angular icon set, so no substitution was needed.
|
|
11
|
+
import { Component, EventEmitter, Input, Output, ViewEncapsulation, inject, } from '@angular/core';
|
|
12
|
+
import { VoIconComponent } from '../core/icon.component';
|
|
13
|
+
import { ReducedMotionService } from '../core/reduced-motion.service';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
const TONE = {
|
|
16
|
+
blue: 'b',
|
|
17
|
+
purple: 'l',
|
|
18
|
+
green: 'm',
|
|
19
|
+
orange: 'p',
|
|
20
|
+
red: 'r',
|
|
21
|
+
yellow: 'y',
|
|
22
|
+
pink: 'k',
|
|
23
|
+
teal: 't',
|
|
24
|
+
};
|
|
25
|
+
const TONES = {
|
|
26
|
+
Enterprise: 'purple',
|
|
27
|
+
Pro: 'blue',
|
|
28
|
+
Team: 'teal',
|
|
29
|
+
};
|
|
30
|
+
export class AccountTableComponent {
|
|
31
|
+
constructor() {
|
|
32
|
+
this.accounts = [];
|
|
33
|
+
/** The tag colour for each plan. Defaults to Enterprise purple, Pro blue, Team teal. */
|
|
34
|
+
this.planTones = TONES;
|
|
35
|
+
this.defaultPlan = '';
|
|
36
|
+
this.planChange = new EventEmitter();
|
|
37
|
+
this.defaultQuery = '';
|
|
38
|
+
this.queryChange = new EventEmitter();
|
|
39
|
+
this.defaultOpen = null;
|
|
40
|
+
this.openChange = new EventEmitter();
|
|
41
|
+
this.placeholder = 'Search accounts';
|
|
42
|
+
/** Shown when nothing matches the search and filter. */
|
|
43
|
+
this.emptyLabel = 'No accounts match';
|
|
44
|
+
this.motion = inject(ReducedMotionService);
|
|
45
|
+
this.filter = this.defaultPlan;
|
|
46
|
+
this.text = this.defaultQuery;
|
|
47
|
+
this.opened = this.defaultOpen;
|
|
48
|
+
this.draft = 'idle';
|
|
49
|
+
/** Replays the stagger whenever the search or filter changes. */
|
|
50
|
+
this.animate = !this.motion.reduce();
|
|
51
|
+
this.draftFor = this.opened;
|
|
52
|
+
this.alive = true;
|
|
53
|
+
}
|
|
54
|
+
ngOnChanges(changes) {
|
|
55
|
+
if (changes['plan'] && this.plan !== undefined)
|
|
56
|
+
this.filter = this.plan;
|
|
57
|
+
if (changes['query'] && this.query !== undefined)
|
|
58
|
+
this.text = this.query;
|
|
59
|
+
if (changes['open'] && this.open !== undefined)
|
|
60
|
+
this.opened = this.open;
|
|
61
|
+
if (changes['defaultPlan'] && this.plan === undefined)
|
|
62
|
+
this.filter = this.defaultPlan;
|
|
63
|
+
if (changes['defaultQuery'] && this.query === undefined)
|
|
64
|
+
this.text = this.defaultQuery;
|
|
65
|
+
if (changes['defaultOpen'] && this.open === undefined)
|
|
66
|
+
this.opened = this.defaultOpen;
|
|
67
|
+
// the action button resets whenever another row opens
|
|
68
|
+
if (this.draftFor !== this.opened) {
|
|
69
|
+
this.draftFor = this.opened;
|
|
70
|
+
this.draft = 'idle';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
tabs() {
|
|
74
|
+
if (this.plans)
|
|
75
|
+
return this.plans;
|
|
76
|
+
return [...new Set(this.accounts.map((a) => a.plan))];
|
|
77
|
+
}
|
|
78
|
+
rows() {
|
|
79
|
+
const s = this.text.trim().toLowerCase();
|
|
80
|
+
return this.accounts.filter((a) => (!this.filter || a.plan === this.filter) && (!s || a.name.toLowerCase().includes(s)));
|
|
81
|
+
}
|
|
82
|
+
toneClass(plan) {
|
|
83
|
+
const tone = this.planTones[plan];
|
|
84
|
+
return tone ? TONE[tone] : '';
|
|
85
|
+
}
|
|
86
|
+
healthColor(h) {
|
|
87
|
+
return h >= 80 ? 'var(--vo-atb-ok)' : h >= 60 ? 'var(--vo-atb-warn)' : 'var(--vo-atb-bad)';
|
|
88
|
+
}
|
|
89
|
+
onText(value) {
|
|
90
|
+
this.replay();
|
|
91
|
+
if (this.query === undefined)
|
|
92
|
+
this.text = value;
|
|
93
|
+
this.queryChange.emit(value);
|
|
94
|
+
}
|
|
95
|
+
setFilter(p) {
|
|
96
|
+
this.replay();
|
|
97
|
+
if (this.plan === undefined)
|
|
98
|
+
this.filter = p;
|
|
99
|
+
this.planChange.emit(p);
|
|
100
|
+
}
|
|
101
|
+
toggle(name) {
|
|
102
|
+
const next = this.opened === name ? null : name;
|
|
103
|
+
if (this.open === undefined) {
|
|
104
|
+
this.opened = next;
|
|
105
|
+
if (this.draftFor !== this.opened) {
|
|
106
|
+
this.draftFor = this.opened;
|
|
107
|
+
this.draft = 'idle';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
this.openChange.emit(next);
|
|
111
|
+
}
|
|
112
|
+
onRowKey(e, name) {
|
|
113
|
+
if ((e.key === 'Enter' || e.key === ' ') && e.target === e.currentTarget) {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
this.toggle(name);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
runAction(e, a) {
|
|
119
|
+
e.stopPropagation();
|
|
120
|
+
if (!this.action || this.draft === 'busy')
|
|
121
|
+
return;
|
|
122
|
+
const r = this.action.onClick(a);
|
|
123
|
+
if (r && typeof r.then === 'function') {
|
|
124
|
+
this.draft = 'busy';
|
|
125
|
+
r.then(() => {
|
|
126
|
+
if (this.alive)
|
|
127
|
+
this.draft = 'done';
|
|
128
|
+
}, () => {
|
|
129
|
+
if (this.alive)
|
|
130
|
+
this.draft = 'idle';
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this.draft = 'done';
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// the rows restart their stagger for one pass after a search or filter change
|
|
138
|
+
replay() {
|
|
139
|
+
if (this.motion.reduce())
|
|
140
|
+
return;
|
|
141
|
+
this.animate = false;
|
|
142
|
+
setTimeout(() => (this.animate = true));
|
|
143
|
+
}
|
|
144
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccountTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
145
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AccountTableComponent, isStandalone: true, selector: "vo-account-table", inputs: { accounts: "accounts", plans: "plans", planTones: "planTones", plan: "plan", defaultPlan: "defaultPlan", query: "query", defaultQuery: "defaultQuery", open: "open", defaultOpen: "defaultOpen", action: "action", placeholder: "placeholder", emptyLabel: "emptyLabel" }, outputs: { planChange: "planChange", queryChange: "queryChange", openChange: "openChange" }, usesOnChanges: true, ngImport: i0, template: `
|
|
146
|
+
<div data-vo="" class="atb panel">
|
|
147
|
+
<div class="atb-h">
|
|
148
|
+
<label class="atb-s">
|
|
149
|
+
<vo-icon name="search"></vo-icon>
|
|
150
|
+
<input
|
|
151
|
+
[placeholder]="placeholder"
|
|
152
|
+
[attr.aria-label]="placeholder"
|
|
153
|
+
[value]="text"
|
|
154
|
+
(input)="onText($any($event.target).value)"
|
|
155
|
+
/>
|
|
156
|
+
</label>
|
|
157
|
+
<div class="atb-fl" role="group" aria-label="Plan">
|
|
158
|
+
@for (p of tabs(); track p) {
|
|
159
|
+
<button
|
|
160
|
+
type="button"
|
|
161
|
+
class="chip sm"
|
|
162
|
+
[class.on]="filter === p"
|
|
163
|
+
[attr.aria-pressed]="filter === p"
|
|
164
|
+
(click)="setFilter(p)"
|
|
165
|
+
>
|
|
166
|
+
{{ p || 'All' }}
|
|
167
|
+
</button>
|
|
168
|
+
}
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
<div class="atb-sc">
|
|
172
|
+
<table>
|
|
173
|
+
<thead>
|
|
174
|
+
<tr>
|
|
175
|
+
<th>Account</th>
|
|
176
|
+
<th>Plan</th>
|
|
177
|
+
<th>Seats</th>
|
|
178
|
+
<th>Health</th>
|
|
179
|
+
<th class="r">MRR</th>
|
|
180
|
+
</tr>
|
|
181
|
+
</thead>
|
|
182
|
+
<tbody>
|
|
183
|
+
@if (rows().length) {
|
|
184
|
+
@for (a of rows(); track a.name; let i = $index) {
|
|
185
|
+
<tr
|
|
186
|
+
class="row"
|
|
187
|
+
[class.open]="opened === a.name"
|
|
188
|
+
[class.enter]="animate"
|
|
189
|
+
[style.animation-delay]="animate ? i * 35 + 'ms' : null"
|
|
190
|
+
tabindex="0"
|
|
191
|
+
[attr.aria-expanded]="opened === a.name"
|
|
192
|
+
(click)="toggle(a.name)"
|
|
193
|
+
(keydown)="onRowKey($event, a.name)"
|
|
194
|
+
>
|
|
195
|
+
<td>
|
|
196
|
+
<span class="nm">
|
|
197
|
+
<span class="lg" [style.background]="a.color">{{ a.name[0] }}</span
|
|
198
|
+
>{{ a.name }}
|
|
199
|
+
</span>
|
|
200
|
+
</td>
|
|
201
|
+
<td>
|
|
202
|
+
<span class="tag" [class]="'tag ' + toneClass(a.plan)">{{ a.plan }}</span>
|
|
203
|
+
</td>
|
|
204
|
+
<td class="num">{{ a.seats }}</td>
|
|
205
|
+
<td>
|
|
206
|
+
<span class="hb"
|
|
207
|
+
><i
|
|
208
|
+
><b [style.width]="a.health + '%'" [style.background]="healthColor(a.health)"></b></i
|
|
209
|
+
><span class="num">{{ a.health }}</span></span
|
|
210
|
+
>
|
|
211
|
+
</td>
|
|
212
|
+
<td class="r num">{{ a.mrr }}</td>
|
|
213
|
+
</tr>
|
|
214
|
+
@if (opened === a.name) {
|
|
215
|
+
<tr class="det">
|
|
216
|
+
<td colspan="5">
|
|
217
|
+
<div class="fold">
|
|
218
|
+
<div>
|
|
219
|
+
<div class="atb-note enter">
|
|
220
|
+
<vo-icon name="spark"></vo-icon>
|
|
221
|
+
<span>{{ a.note }}</span>
|
|
222
|
+
@if (action) {
|
|
223
|
+
<button
|
|
224
|
+
type="button"
|
|
225
|
+
class="pill soft sm"
|
|
226
|
+
[attr.aria-busy]="draft === 'busy' ? true : null"
|
|
227
|
+
(click)="runAction($event, a)"
|
|
228
|
+
>
|
|
229
|
+
@if (draft === 'busy') {
|
|
230
|
+
<span class="spin" aria-hidden="true"></span>
|
|
231
|
+
} @else if (draft === 'done') {
|
|
232
|
+
<vo-icon name="check"></vo-icon>{{ action.doneLabel ?? 'Done' }}
|
|
233
|
+
} @else {
|
|
234
|
+
{{ action.label }}
|
|
235
|
+
}
|
|
236
|
+
</button>
|
|
237
|
+
}
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
</div>
|
|
241
|
+
</td>
|
|
242
|
+
</tr>
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
} @else {
|
|
246
|
+
<tr class="atb-empty">
|
|
247
|
+
<td colspan="5">{{ emptyLabel }}</td>
|
|
248
|
+
</tr>
|
|
249
|
+
}
|
|
250
|
+
</tbody>
|
|
251
|
+
</table>
|
|
252
|
+
</div>
|
|
253
|
+
</div>
|
|
254
|
+
`, isInline: true, styles: [".atb{overflow:hidden}.atb{--vo-atb-ok:#4cbb17;--vo-atb-warn:#cd7a00;--vo-atb-bad:#f03e48;--vo-pb:#0663d2;--vo-pb-bg:color-mix(in srgb,#4890fa 15%,transparent);--vo-pl:#7d2dfc;--vo-pl-bg:color-mix(in srgb,#9776fa 15%,transparent);--vo-pm:#087744;--vo-pm-bg:color-mix(in srgb,#1fad66 15%,transparent);--vo-pp:#a34f06;--vo-pp-bg:color-mix(in srgb,#dc7019 15%,transparent);--vo-pr:#c50b2d;--vo-pr-bg:color-mix(in srgb,#fb4652 15%,transparent);--vo-py:#886006;--vo-py-bg:color-mix(in srgb,#bb881a 15%,transparent);--vo-pk:#b80a75;--vo-pk-bg:color-mix(in srgb,#fb27a2 15%,transparent);--vo-pt:#08727c;--vo-pt-bg:color-mix(in srgb,#1fa5b1 15%,transparent)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .atb{--vo-atb-ok:#5fcb2a;--vo-atb-warn:#f59e0b;--vo-atb-bad:#fb4849;--vo-pb:#a4c9fe;--vo-pb-bg:color-mix(in srgb,#4890fa 22%,transparent);--vo-pl:#c9befe;--vo-pl-bg:color-mix(in srgb,#9776fa 22%,transparent);--vo-pm:#19e285;--vo-pm-bg:color-mix(in srgb,#1fad66 22%,transparent);--vo-pp:#feb68b;--vo-pp-bg:color-mix(in srgb,#dc7019 22%,transparent);--vo-pr:#feb1ad;--vo-pr-bg:color-mix(in srgb,#fb4652 22%,transparent);--vo-py:#feba28;--vo-py-bg:color-mix(in srgb,#bb881a 22%,transparent);--vo-pk:#feabcf;--vo-pk-bg:color-mix(in srgb,#fb27a2 22%,transparent);--vo-pt:#19daeb;--vo-pt-bg:color-mix(in srgb,#1fa5b1 22%,transparent)}}:root[data-theme=dark] .atb{--vo-atb-ok:#5fcb2a;--vo-atb-warn:#f59e0b;--vo-atb-bad:#fb4849;--vo-pb:#a4c9fe;--vo-pb-bg:color-mix(in srgb,#4890fa 22%,transparent);--vo-pl:#c9befe;--vo-pl-bg:color-mix(in srgb,#9776fa 22%,transparent);--vo-pm:#19e285;--vo-pm-bg:color-mix(in srgb,#1fad66 22%,transparent);--vo-pp:#feb68b;--vo-pp-bg:color-mix(in srgb,#dc7019 22%,transparent);--vo-pr:#feb1ad;--vo-pr-bg:color-mix(in srgb,#fb4652 22%,transparent);--vo-py:#feba28;--vo-py-bg:color-mix(in srgb,#bb881a 22%,transparent);--vo-pk:#feabcf;--vo-pk-bg:color-mix(in srgb,#fb27a2 22%,transparent);--vo-pt:#19daeb;--vo-pt-bg:color-mix(in srgb,#1fa5b1 22%,transparent)}.atb-h{display:flex;align-items:center;gap:var(--vo-s-2);padding:10px;flex-wrap:wrap;border-bottom:1px solid color-mix(in srgb,var(--vo-line) 50%,transparent)}.atb-s{display:flex;align-items:center;gap:var(--vo-s-2);height:32px;padding:0 10px;border-radius:var(--vo-r-field);background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-field-line) 50%,transparent);color:var(--vo-muted);flex:1;min-width:160px;transition:box-shadow var(--vo-t-fast)}@supports (corner-shape:squircle){.atb-s{corner-shape:squircle;border-radius:var(--vo-r-field-sq)}}.atb-s input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;font-size:13px;color:var(--vo-fg)}.atb-s:has(input:focus){box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-field-line-strong) 50%,transparent)}.atb-s input::placeholder{color:var(--vo-muted)}.atb-fl{display:flex;gap:var(--vo-s-1);flex-wrap:wrap}.atb-fl .chip{background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-pick-line) 50%,transparent)}@media (hover:hover) and (pointer:fine){.atb-fl .chip:hover{background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-faint) 50%,transparent)}}.atb-sc{overflow-x:auto}.atb table{width:100%;border-collapse:collapse;font-size:13px;min-width:560px}.atb th{text-align:left;font-weight:500;font-size:12px;color:var(--vo-muted);padding:9px var(--vo-s-3);white-space:nowrap}.atb th.r,.atb td.r{text-align:right}.atb td{padding:9px var(--vo-s-3);border-top:1px solid color-mix(in srgb,var(--vo-line) 50%,transparent);white-space:nowrap}.atb tr.row{cursor:pointer;transition:background .2s}@media (hover:hover) and (pointer:fine){.atb tr.row:hover{background:var(--vo-row)}}.atb tr.row:focus-visible{outline-offset:-2px}.atb tr.row.open{background:var(--vo-wash)}.atb .nm{display:flex;align-items:center;gap:9px;font-weight:500}.atb .lg{width:24px;height:24px;border-radius:calc(7px * var(--vo-rk));display:grid;place-items:center;font-size:10px;font-weight:500;color:#fff}.atb .hb{display:flex;align-items:center;gap:var(--vo-s-2)}.atb .hb i{width:54px;height:5px;border-radius:3px;background:var(--vo-line);overflow:hidden;display:block}.atb .hb i b{display:block;height:100%;border-radius:3px}.atb .hb span{font-size:12px;color:var(--vo-fg2)}.atb tr.det td{padding:0;border-top:0}.atb-note{display:flex;align-items:center;gap:10px;padding:10px var(--vo-s-3) var(--vo-s-3) 45px;font-size:12.5px;color:var(--vo-fg2);white-space:normal}.atb-note>svg{color:var(--vo-accent-fg,var(--vo-accent));flex:none}.atb-note span{flex:1}.atb-empty td{text-align:center;color:var(--vo-muted);padding:var(--vo-s-6)}.atb .num{font-variant-numeric:tabular-nums}.atb .chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:var(--vo-r-pill);font-size:12px;color:var(--vo-fg2);background:var(--vo-chip);white-space:nowrap;cursor:pointer;transition:background var(--vo-t-fast),color var(--vo-t-fast),box-shadow var(--vo-t-fast)}.atb .chip.on{color:var(--vo-fg)}.atb .tag{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px;border-radius:var(--vo-r-tag);font-size:11.5px;font-weight:500;white-space:nowrap;background:var(--vo-chip);color:var(--vo-fg2)}@supports (corner-shape:squircle){.atb .tag{corner-shape:squircle;border-radius:var(--vo-r-tag-sq)}}.atb .tag.b{background:var(--vo-pb-bg);color:var(--vo-pb)}.atb .tag.l{background:var(--vo-pl-bg);color:var(--vo-pl)}.atb .tag.m{background:var(--vo-pm-bg);color:var(--vo-pm)}.atb .tag.p{background:var(--vo-pp-bg);color:var(--vo-pp)}.atb .tag.r{background:var(--vo-pr-bg);color:var(--vo-pr)}.atb .tag.y{background:var(--vo-py-bg);color:var(--vo-py)}.atb .tag.k{background:var(--vo-pk-bg);color:var(--vo-pk)}.atb .tag.t{background:var(--vo-pt-bg);color:var(--vo-pt)}.atb .pill{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:28px;padding:0 11px;border-radius:var(--vo-r-pill);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;border:0;transition:background var(--vo-t-fast),color var(--vo-t-fast),transform .15s}.atb .pill:active{transform:scale(.97)}.atb .pill.soft{background:var(--vo-soft);color:var(--vo-fg);box-shadow:var(--vo-soft-ring)}@media (hover:hover) and (pointer:fine){.atb .pill.soft:hover{background:var(--vo-soft-h)}}.atb .fold{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--vo-t) var(--vo-ease),opacity var(--vo-t) var(--vo-ease)}.atb .fold>*{overflow:hidden;min-height:0}.atb .fold.shut{grid-template-rows:0fr;opacity:0}.atb .enter{animation:atb-enter var(--vo-t-slow) var(--vo-ease) backwards}@keyframes atb-enter{0%{opacity:0;transform:translateY(6px);filter:blur(4px)}to{opacity:1;transform:none;filter:blur(0)}}.atb .spin{width:12px;height:12px;border-radius:50%;border:1.5px solid currentColor;border-right-color:transparent;animation:atb-rot .8s linear infinite;flex:none;display:inline-block}@keyframes atb-rot{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type: VoIconComponent, selector: "vo-icon", inputs: ["name", "size"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
255
|
+
}
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccountTableComponent, decorators: [{
|
|
257
|
+
type: Component,
|
|
258
|
+
args: [{ selector: 'vo-account-table', standalone: true, encapsulation: ViewEncapsulation.None, imports: [VoIconComponent], template: `
|
|
259
|
+
<div data-vo="" class="atb panel">
|
|
260
|
+
<div class="atb-h">
|
|
261
|
+
<label class="atb-s">
|
|
262
|
+
<vo-icon name="search"></vo-icon>
|
|
263
|
+
<input
|
|
264
|
+
[placeholder]="placeholder"
|
|
265
|
+
[attr.aria-label]="placeholder"
|
|
266
|
+
[value]="text"
|
|
267
|
+
(input)="onText($any($event.target).value)"
|
|
268
|
+
/>
|
|
269
|
+
</label>
|
|
270
|
+
<div class="atb-fl" role="group" aria-label="Plan">
|
|
271
|
+
@for (p of tabs(); track p) {
|
|
272
|
+
<button
|
|
273
|
+
type="button"
|
|
274
|
+
class="chip sm"
|
|
275
|
+
[class.on]="filter === p"
|
|
276
|
+
[attr.aria-pressed]="filter === p"
|
|
277
|
+
(click)="setFilter(p)"
|
|
278
|
+
>
|
|
279
|
+
{{ p || 'All' }}
|
|
280
|
+
</button>
|
|
281
|
+
}
|
|
282
|
+
</div>
|
|
283
|
+
</div>
|
|
284
|
+
<div class="atb-sc">
|
|
285
|
+
<table>
|
|
286
|
+
<thead>
|
|
287
|
+
<tr>
|
|
288
|
+
<th>Account</th>
|
|
289
|
+
<th>Plan</th>
|
|
290
|
+
<th>Seats</th>
|
|
291
|
+
<th>Health</th>
|
|
292
|
+
<th class="r">MRR</th>
|
|
293
|
+
</tr>
|
|
294
|
+
</thead>
|
|
295
|
+
<tbody>
|
|
296
|
+
@if (rows().length) {
|
|
297
|
+
@for (a of rows(); track a.name; let i = $index) {
|
|
298
|
+
<tr
|
|
299
|
+
class="row"
|
|
300
|
+
[class.open]="opened === a.name"
|
|
301
|
+
[class.enter]="animate"
|
|
302
|
+
[style.animation-delay]="animate ? i * 35 + 'ms' : null"
|
|
303
|
+
tabindex="0"
|
|
304
|
+
[attr.aria-expanded]="opened === a.name"
|
|
305
|
+
(click)="toggle(a.name)"
|
|
306
|
+
(keydown)="onRowKey($event, a.name)"
|
|
307
|
+
>
|
|
308
|
+
<td>
|
|
309
|
+
<span class="nm">
|
|
310
|
+
<span class="lg" [style.background]="a.color">{{ a.name[0] }}</span
|
|
311
|
+
>{{ a.name }}
|
|
312
|
+
</span>
|
|
313
|
+
</td>
|
|
314
|
+
<td>
|
|
315
|
+
<span class="tag" [class]="'tag ' + toneClass(a.plan)">{{ a.plan }}</span>
|
|
316
|
+
</td>
|
|
317
|
+
<td class="num">{{ a.seats }}</td>
|
|
318
|
+
<td>
|
|
319
|
+
<span class="hb"
|
|
320
|
+
><i
|
|
321
|
+
><b [style.width]="a.health + '%'" [style.background]="healthColor(a.health)"></b></i
|
|
322
|
+
><span class="num">{{ a.health }}</span></span
|
|
323
|
+
>
|
|
324
|
+
</td>
|
|
325
|
+
<td class="r num">{{ a.mrr }}</td>
|
|
326
|
+
</tr>
|
|
327
|
+
@if (opened === a.name) {
|
|
328
|
+
<tr class="det">
|
|
329
|
+
<td colspan="5">
|
|
330
|
+
<div class="fold">
|
|
331
|
+
<div>
|
|
332
|
+
<div class="atb-note enter">
|
|
333
|
+
<vo-icon name="spark"></vo-icon>
|
|
334
|
+
<span>{{ a.note }}</span>
|
|
335
|
+
@if (action) {
|
|
336
|
+
<button
|
|
337
|
+
type="button"
|
|
338
|
+
class="pill soft sm"
|
|
339
|
+
[attr.aria-busy]="draft === 'busy' ? true : null"
|
|
340
|
+
(click)="runAction($event, a)"
|
|
341
|
+
>
|
|
342
|
+
@if (draft === 'busy') {
|
|
343
|
+
<span class="spin" aria-hidden="true"></span>
|
|
344
|
+
} @else if (draft === 'done') {
|
|
345
|
+
<vo-icon name="check"></vo-icon>{{ action.doneLabel ?? 'Done' }}
|
|
346
|
+
} @else {
|
|
347
|
+
{{ action.label }}
|
|
348
|
+
}
|
|
349
|
+
</button>
|
|
350
|
+
}
|
|
351
|
+
</div>
|
|
352
|
+
</div>
|
|
353
|
+
</div>
|
|
354
|
+
</td>
|
|
355
|
+
</tr>
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
} @else {
|
|
359
|
+
<tr class="atb-empty">
|
|
360
|
+
<td colspan="5">{{ emptyLabel }}</td>
|
|
361
|
+
</tr>
|
|
362
|
+
}
|
|
363
|
+
</tbody>
|
|
364
|
+
</table>
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
`, styles: [".atb{overflow:hidden}.atb{--vo-atb-ok:#4cbb17;--vo-atb-warn:#cd7a00;--vo-atb-bad:#f03e48;--vo-pb:#0663d2;--vo-pb-bg:color-mix(in srgb,#4890fa 15%,transparent);--vo-pl:#7d2dfc;--vo-pl-bg:color-mix(in srgb,#9776fa 15%,transparent);--vo-pm:#087744;--vo-pm-bg:color-mix(in srgb,#1fad66 15%,transparent);--vo-pp:#a34f06;--vo-pp-bg:color-mix(in srgb,#dc7019 15%,transparent);--vo-pr:#c50b2d;--vo-pr-bg:color-mix(in srgb,#fb4652 15%,transparent);--vo-py:#886006;--vo-py-bg:color-mix(in srgb,#bb881a 15%,transparent);--vo-pk:#b80a75;--vo-pk-bg:color-mix(in srgb,#fb27a2 15%,transparent);--vo-pt:#08727c;--vo-pt-bg:color-mix(in srgb,#1fa5b1 15%,transparent)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .atb{--vo-atb-ok:#5fcb2a;--vo-atb-warn:#f59e0b;--vo-atb-bad:#fb4849;--vo-pb:#a4c9fe;--vo-pb-bg:color-mix(in srgb,#4890fa 22%,transparent);--vo-pl:#c9befe;--vo-pl-bg:color-mix(in srgb,#9776fa 22%,transparent);--vo-pm:#19e285;--vo-pm-bg:color-mix(in srgb,#1fad66 22%,transparent);--vo-pp:#feb68b;--vo-pp-bg:color-mix(in srgb,#dc7019 22%,transparent);--vo-pr:#feb1ad;--vo-pr-bg:color-mix(in srgb,#fb4652 22%,transparent);--vo-py:#feba28;--vo-py-bg:color-mix(in srgb,#bb881a 22%,transparent);--vo-pk:#feabcf;--vo-pk-bg:color-mix(in srgb,#fb27a2 22%,transparent);--vo-pt:#19daeb;--vo-pt-bg:color-mix(in srgb,#1fa5b1 22%,transparent)}}:root[data-theme=dark] .atb{--vo-atb-ok:#5fcb2a;--vo-atb-warn:#f59e0b;--vo-atb-bad:#fb4849;--vo-pb:#a4c9fe;--vo-pb-bg:color-mix(in srgb,#4890fa 22%,transparent);--vo-pl:#c9befe;--vo-pl-bg:color-mix(in srgb,#9776fa 22%,transparent);--vo-pm:#19e285;--vo-pm-bg:color-mix(in srgb,#1fad66 22%,transparent);--vo-pp:#feb68b;--vo-pp-bg:color-mix(in srgb,#dc7019 22%,transparent);--vo-pr:#feb1ad;--vo-pr-bg:color-mix(in srgb,#fb4652 22%,transparent);--vo-py:#feba28;--vo-py-bg:color-mix(in srgb,#bb881a 22%,transparent);--vo-pk:#feabcf;--vo-pk-bg:color-mix(in srgb,#fb27a2 22%,transparent);--vo-pt:#19daeb;--vo-pt-bg:color-mix(in srgb,#1fa5b1 22%,transparent)}.atb-h{display:flex;align-items:center;gap:var(--vo-s-2);padding:10px;flex-wrap:wrap;border-bottom:1px solid color-mix(in srgb,var(--vo-line) 50%,transparent)}.atb-s{display:flex;align-items:center;gap:var(--vo-s-2);height:32px;padding:0 10px;border-radius:var(--vo-r-field);background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-field-line) 50%,transparent);color:var(--vo-muted);flex:1;min-width:160px;transition:box-shadow var(--vo-t-fast)}@supports (corner-shape:squircle){.atb-s{corner-shape:squircle;border-radius:var(--vo-r-field-sq)}}.atb-s input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;font-size:13px;color:var(--vo-fg)}.atb-s:has(input:focus){box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-field-line-strong) 50%,transparent)}.atb-s input::placeholder{color:var(--vo-muted)}.atb-fl{display:flex;gap:var(--vo-s-1);flex-wrap:wrap}.atb-fl .chip{background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-pick-line) 50%,transparent)}@media (hover:hover) and (pointer:fine){.atb-fl .chip:hover{background:var(--vo-surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--vo-faint) 50%,transparent)}}.atb-sc{overflow-x:auto}.atb table{width:100%;border-collapse:collapse;font-size:13px;min-width:560px}.atb th{text-align:left;font-weight:500;font-size:12px;color:var(--vo-muted);padding:9px var(--vo-s-3);white-space:nowrap}.atb th.r,.atb td.r{text-align:right}.atb td{padding:9px var(--vo-s-3);border-top:1px solid color-mix(in srgb,var(--vo-line) 50%,transparent);white-space:nowrap}.atb tr.row{cursor:pointer;transition:background .2s}@media (hover:hover) and (pointer:fine){.atb tr.row:hover{background:var(--vo-row)}}.atb tr.row:focus-visible{outline-offset:-2px}.atb tr.row.open{background:var(--vo-wash)}.atb .nm{display:flex;align-items:center;gap:9px;font-weight:500}.atb .lg{width:24px;height:24px;border-radius:calc(7px * var(--vo-rk));display:grid;place-items:center;font-size:10px;font-weight:500;color:#fff}.atb .hb{display:flex;align-items:center;gap:var(--vo-s-2)}.atb .hb i{width:54px;height:5px;border-radius:3px;background:var(--vo-line);overflow:hidden;display:block}.atb .hb i b{display:block;height:100%;border-radius:3px}.atb .hb span{font-size:12px;color:var(--vo-fg2)}.atb tr.det td{padding:0;border-top:0}.atb-note{display:flex;align-items:center;gap:10px;padding:10px var(--vo-s-3) var(--vo-s-3) 45px;font-size:12.5px;color:var(--vo-fg2);white-space:normal}.atb-note>svg{color:var(--vo-accent-fg,var(--vo-accent));flex:none}.atb-note span{flex:1}.atb-empty td{text-align:center;color:var(--vo-muted);padding:var(--vo-s-6)}.atb .num{font-variant-numeric:tabular-nums}.atb .chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border-radius:var(--vo-r-pill);font-size:12px;color:var(--vo-fg2);background:var(--vo-chip);white-space:nowrap;cursor:pointer;transition:background var(--vo-t-fast),color var(--vo-t-fast),box-shadow var(--vo-t-fast)}.atb .chip.on{color:var(--vo-fg)}.atb .tag{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px;border-radius:var(--vo-r-tag);font-size:11.5px;font-weight:500;white-space:nowrap;background:var(--vo-chip);color:var(--vo-fg2)}@supports (corner-shape:squircle){.atb .tag{corner-shape:squircle;border-radius:var(--vo-r-tag-sq)}}.atb .tag.b{background:var(--vo-pb-bg);color:var(--vo-pb)}.atb .tag.l{background:var(--vo-pl-bg);color:var(--vo-pl)}.atb .tag.m{background:var(--vo-pm-bg);color:var(--vo-pm)}.atb .tag.p{background:var(--vo-pp-bg);color:var(--vo-pp)}.atb .tag.r{background:var(--vo-pr-bg);color:var(--vo-pr)}.atb .tag.y{background:var(--vo-py-bg);color:var(--vo-py)}.atb .tag.k{background:var(--vo-pk-bg);color:var(--vo-pk)}.atb .tag.t{background:var(--vo-pt-bg);color:var(--vo-pt)}.atb .pill{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:28px;padding:0 11px;border-radius:var(--vo-r-pill);font-size:12.5px;font-weight:500;white-space:nowrap;cursor:pointer;border:0;transition:background var(--vo-t-fast),color var(--vo-t-fast),transform .15s}.atb .pill:active{transform:scale(.97)}.atb .pill.soft{background:var(--vo-soft);color:var(--vo-fg);box-shadow:var(--vo-soft-ring)}@media (hover:hover) and (pointer:fine){.atb .pill.soft:hover{background:var(--vo-soft-h)}}.atb .fold{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--vo-t) var(--vo-ease),opacity var(--vo-t) var(--vo-ease)}.atb .fold>*{overflow:hidden;min-height:0}.atb .fold.shut{grid-template-rows:0fr;opacity:0}.atb .enter{animation:atb-enter var(--vo-t-slow) var(--vo-ease) backwards}@keyframes atb-enter{0%{opacity:0;transform:translateY(6px);filter:blur(4px)}to{opacity:1;transform:none;filter:blur(0)}}.atb .spin{width:12px;height:12px;border-radius:50%;border:1.5px solid currentColor;border-right-color:transparent;animation:atb-rot .8s linear infinite;flex:none;display:inline-block}@keyframes atb-rot{to{transform:rotate(360deg)}}\n"] }]
|
|
368
|
+
}], propDecorators: { accounts: [{
|
|
369
|
+
type: Input
|
|
370
|
+
}], plans: [{
|
|
371
|
+
type: Input
|
|
372
|
+
}], planTones: [{
|
|
373
|
+
type: Input
|
|
374
|
+
}], plan: [{
|
|
375
|
+
type: Input
|
|
376
|
+
}], defaultPlan: [{
|
|
377
|
+
type: Input
|
|
378
|
+
}], planChange: [{
|
|
379
|
+
type: Output
|
|
380
|
+
}], query: [{
|
|
381
|
+
type: Input
|
|
382
|
+
}], defaultQuery: [{
|
|
383
|
+
type: Input
|
|
384
|
+
}], queryChange: [{
|
|
385
|
+
type: Output
|
|
386
|
+
}], open: [{
|
|
387
|
+
type: Input
|
|
388
|
+
}], defaultOpen: [{
|
|
389
|
+
type: Input
|
|
390
|
+
}], openChange: [{
|
|
391
|
+
type: Output
|
|
392
|
+
}], action: [{
|
|
393
|
+
type: Input
|
|
394
|
+
}], placeholder: [{
|
|
395
|
+
type: Input
|
|
396
|
+
}], emptyLabel: [{
|
|
397
|
+
type: Input
|
|
398
|
+
}] } });
|
|
399
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hY2NvdW50LXRhYmxlL2FjY291bnQtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxFQUFFO0FBQ0YseUVBQXlFO0FBQ3pFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0Usa0ZBQWtGO0FBQ2xGLCtFQUErRTtBQUMvRSxFQUFFO0FBQ0YsbUZBQW1GO0FBQ25GLGtFQUFrRTtBQUVsRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQXFDdEUsTUFBTSxJQUFJLEdBQXFDO0lBQzdDLElBQUksRUFBRSxHQUFHO0lBQ1QsTUFBTSxFQUFFLEdBQUc7SUFDWCxLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsR0FBRyxFQUFFLEdBQUc7SUFDUixNQUFNLEVBQUUsR0FBRztJQUNYLElBQUksRUFBRSxHQUFHO0lBQ1QsSUFBSSxFQUFFLEdBQUc7Q0FDVixDQUFDO0FBQ0YsTUFBTSxLQUFLLEdBQXFDO0lBQzlDLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLEdBQUcsRUFBRSxNQUFNO0lBQ1gsSUFBSSxFQUFFLE1BQU07Q0FDYixDQUFDO0FBdUhGLE1BQU0sT0FBTyxxQkFBcUI7SUFySGxDO1FBc0hXLGFBQVEsR0FBMEIsRUFBRSxDQUFDO1FBRzlDLHdGQUF3RjtRQUMvRSxjQUFTLEdBQXFDLEtBQUssQ0FBQztRQUlwRCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUs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QkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUdFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNJLFdBQVc7c0JBQXBCLE1BQU07Z0JBR0UsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFHRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZnJhbWV3b3JrL2FuZ3VsYXIvYWNjb3VudC10YWJsZS9hY2NvdW50LXRhYmxlLmNvbXBvbmVudC50c1xuLy9cbi8vIE5hdGl2ZSBBbmd1bGFyIHBvcnQgb2YgZnJhbWV3b3JrL3JlYWN0L2FjY291bnQtdGFibGUvQWNjb3VudFRhYmxlLnRzeC5cbi8vIEFjY291bnRzIHlvdSBjYW4gc2VhcmNoIGFuZCBmaWx0ZXIgYnkgcGxhbjsgYSByb3cgb3BlbnMgdG8gc2hvdyB3aGF0IHRoZSBhZ2VudFxuLy8gbm90aWNlZCwgd2l0aCBhbiBvcHRpb25hbCBhY3Rpb24gYnV0dG9uIChEcmFmdCBlbWFpbCkgdGhhdCBzcGlucyB3aGlsZSBpdHNcbi8vIHByb21pc2Ugc2V0dGxlcy4gVGhlIHJvd3Mgc3RhZ2dlciBpbiB3aGVuZXZlciB0aGUgc2VhcmNoIG9yIHRoZSBmaWx0ZXIgY2hhbmdlcy5cbi8vIElucHV0cyBtaXJyb3IgdGhlIFJlYWN0IHByb3BzOyBSZWFjdCBjYWxsYmFja3MgYmVjb21lIEBPdXRwdXQgRXZlbnRFbWl0dGVycy5cbi8vXG4vLyBJY29uczogc2VhcmNoIChmaWVsZCksIHNwYXJrICh0aGUgbm90ZSdzIGdseXBoKSBhbmQgY2hlY2sgKHRoZSBkb25lIHN0YXRlKSDigJQgYWxsXG4vLyBwcmVzZW50IGluIHRoZSBBbmd1bGFyIGljb24gc2V0LCBzbyBubyBzdWJzdGl0dXRpb24gd2FzIG5lZWRlZC5cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWb0ljb25Db21wb25lbnQgfSBmcm9tICcuLi9jb3JlL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFJlZHVjZWRNb3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9yZWR1Y2VkLW1vdGlvbi5zZXJ2aWNlJztcblxuLyoqIFRoZSB0YWcgY29sb3VycyBhIHBsYW4gY2FuIHRha2UuICovXG5leHBvcnQgdHlwZSBBY2NvdW50VGFibGVUb25lID1cbiAgfCAnYmx1ZSdcbiAgfCAncHVycGxlJ1xuICB8ICdncmVlbidcbiAgfCAnb3JhbmdlJ1xuICB8ICdyZWQnXG4gIHwgJ3llbGxvdydcbiAgfCAncGluaydcbiAgfCAndGVhbCc7XG5cbi8qKiBPbmUgYWNjb3VudCByb3cuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRUYWJsZUFjY291bnQge1xuICAvKiogQWxzbyB0aGUgYWNjb3VudCdzIGtleSwgYW5kIGl0cyBmaXJzdCBsZXR0ZXIgbWFrZXMgdGhlIGxvZ28uICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFRoZSBsb2dvJ3MgY29sb3VyLCBsaWtlICd2YXIoLS12by1hdi1iKScuIFRha2VzIHdoaXRlIGluayBmb3IgdGhlIGxldHRlci4gKi9cbiAgY29sb3I6IHN0cmluZztcbiAgcGxhbjogc3RyaW5nO1xuICBzZWF0czogbnVtYmVyO1xuICAvKiogMCB0byAxMDAuIEdyZWVuIGZyb20gODAsIGFtYmVyIGZyb20gNjAsIHJlZCBiZWxvdy4gKi9cbiAgaGVhbHRoOiBudW1iZXI7XG4gIC8qKiBBbHJlYWR5IGZvcm1hdHRlZCwgbGlrZSBcIiQxNCw0MDBcIi4gKi9cbiAgbXJyOiBzdHJpbmc7XG4gIC8qKiBXaGF0IHRoZSBhZ2VudCBub3RpY2VkLCBzaG93biB3aGVuIHRoZSByb3cgb3BlbnMuICovXG4gIG5vdGU/OiBzdHJpbmc7XG59XG5cbi8qKiBBIGJ1dHRvbiBpbiB0aGUgb3BlbiByb3cncyBub3RlLCBsaWtlIERyYWZ0IGVtYWlsLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY2NvdW50VGFibGVBY3Rpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICBkb25lTGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBSZXR1cm4gYSBwcm9taXNlIGFuZCBpdCBzcGlucyB1bnRpbCBpdCBzZXR0bGVzLCB0aGVuIHNob3dzIGBkb25lTGFiZWxgLiAqL1xuICBvbkNsaWNrOiAoYWNjb3VudDogQWNjb3VudFRhYmxlQWNjb3VudCkgPT4gdm9pZCB8IFByb21pc2U8dW5rbm93bj47XG59XG5cbmNvbnN0IFRPTkU6IFJlY29yZDxBY2NvdW50VGFibGVUb25lLCBzdHJpbmc+ID0ge1xuICBibHVlOiAnYicsXG4gIHB1cnBsZTogJ2wnLFxuICBncmVlbjogJ20nLFxuICBvcmFuZ2U6ICdwJyxcbiAgcmVkOiAncicsXG4gIHllbGxvdzogJ3knLFxuICBwaW5rOiAnaycsXG4gIHRlYWw6ICd0Jyxcbn07XG5jb25zdCBUT05FUzogUmVjb3JkPHN0cmluZywgQWNjb3VudFRhYmxlVG9uZT4gPSB7XG4gIEVudGVycHJpc2U6ICdwdXJwbGUnLFxuICBQcm86ICdibHVlJyxcbiAgVGVhbTogJ3RlYWwnLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndm8tYWNjb3VudC10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtWb0ljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgZGF0YS12bz1cIlwiIGNsYXNzPVwiYXRiIHBhbmVsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXRiLWhcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiYXRiLXNcIj5cbiAgICAgICAgICA8dm8taWNvbiBuYW1lPVwic2VhcmNoXCI+PC92by1pY29uPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInRleHRcIlxuICAgICAgICAgICAgKGlucHV0KT1cIm9uVGV4dCgkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF0Yi1mbFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJQbGFuXCI+XG4gICAgICAgICAgQGZvciAocCBvZiB0YWJzKCk7IHRyYWNrIHApIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcCBzbVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5vbl09XCJmaWx0ZXIgPT09IHBcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLXByZXNzZWRdPVwiZmlsdGVyID09PSBwXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldEZpbHRlcihwKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHAgfHwgJ0FsbCcgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJhdGItc2NcIj5cbiAgICAgICAgPHRhYmxlPlxuICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoPkFjY291bnQ8L3RoPlxuICAgICAgICAgICAgICA8dGg+UGxhbjwvdGg+XG4gICAgICAgICAgICAgIDx0aD5TZWF0czwvdGg+XG4gICAgICAgICAgICAgIDx0aD5IZWFsdGg8L3RoPlxuICAgICAgICAgICAgICA8dGggY2xhc3M9XCJyXCI+TVJSPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICBAaWYgKHJvd3MoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgQGZvciAoYSBvZiByb3dzKCk7IHRyYWNrIGEubmFtZTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93XCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5vcGVuXT1cIm9wZW5lZCA9PT0gYS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5lbnRlcl09XCJhbmltYXRlXCJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5hbmltYXRpb24tZGVsYXldPVwiYW5pbWF0ZSA/IGkgKiAzNSArICdtcycgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5lZCA9PT0gYS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGUoYS5uYW1lKVwiXG4gICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblJvd0tleSgkZXZlbnQsIGEubmFtZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJubVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGdcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJhLmNvbG9yXCI+e3sgYS5uYW1lWzBdIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgPnt7IGEubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZ1wiIFtjbGFzc109XCIndGFnICcgKyB0b25lQ2xhc3MoYS5wbGFuKVwiPnt7IGEucGxhbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJudW1cIj57eyBhLnNlYXRzIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYlwiXG4gICAgICAgICAgICAgICAgICAgICAgPjxpXG4gICAgICAgICAgICAgICAgICAgICAgICA+PGIgW3N0eWxlLndpZHRoXT1cImEuaGVhbHRoICsgJyUnXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiaGVhbHRoQ29sb3IoYS5oZWFsdGgpXCI+PC9iPjwvaVxuICAgICAgICAgICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cIm51bVwiPnt7IGEuaGVhbHRoIH19PC9zcGFuPjwvc3BhblxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiciBudW1cIj57eyBhLm1yciB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICBAaWYgKG9wZW5lZCA9PT0gYS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJkZXRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI1XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdGItbm90ZSBlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2by1pY29uIG5hbWU9XCJzcGFya1wiPjwvdm8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBhLm5vdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGlsbCBzb2Z0IHNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1idXN5XT1cImRyYWZ0ID09PSAnYnVzeScgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJydW5BY3Rpb24oJGV2ZW50LCBhKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZHJhZnQgPT09ICdidXN5Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3BpblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZHJhZnQgPT09ICdkb25lJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2by1pY29uIG5hbWU9XCJjaGVja1wiPjwvdm8taWNvbj57eyBhY3Rpb24uZG9uZUxhYmVsID8/ICdEb25lJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJhdGItZW1wdHlcIj5cbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjVcIj57eyBlbXB0eUxhYmVsIH19PC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9hY2NvdW50LXRhYmxlLmNzcycsXG59KVxuZXhwb3J0IGNsYXNzIEFjY291bnRUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGFjY291bnRzOiBBY2NvdW50VGFibGVBY2NvdW50W10gPSBbXTtcbiAgLyoqIFRoZSBwbGFuIGZpbHRlcnMgYWZ0ZXIgQWxsLiBEZWZhdWx0cyB0byB0aGUgcGxhbnMgaW4gYGFjY291bnRzYCwgaW4gZmlyc3Qtc2VlbiBvcmRlci4gKi9cbiAgQElucHV0KCkgcGxhbnM/OiBzdHJpbmdbXTtcbiAgLyoqIFRoZSB0YWcgY29sb3VyIGZvciBlYWNoIHBsYW4uIERlZmF1bHRzIHRvIEVudGVycHJpc2UgcHVycGxlLCBQcm8gYmx1ZSwgVGVhbSB0ZWFsLiAqL1xuICBASW5wdXQoKSBwbGFuVG9uZXM6IFJlY29yZDxzdHJpbmcsIEFjY291bnRUYWJsZVRvbmU+ID0gVE9ORVM7XG5cbiAgLyoqIFRoZSBwbGFuIGZpbHRlciwgb3IgJycgZm9yIEFsbC4gTGVhdmUgdW5kZWZpbmVkIHRvIGxldCB0aGUgY2hpcHMgZHJpdmUgaXQuICovXG4gIEBJbnB1dCgpIHBsYW4/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlZmF1bHRQbGFuID0gJyc7XG4gIEBPdXRwdXQoKSBwbGFuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIFRoZSBzZWFyY2ggdGV4dC4gTWF0Y2hlcyBhY2NvdW50IG5hbWVzLiAqL1xuICBASW5wdXQoKSBxdWVyeT86IHN0cmluZztcbiAgQElucHV0KCkgZGVmYXVsdFF1ZXJ5ID0gJyc7XG4gIEBPdXRwdXQoKSBxdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBUaGUgYWNjb3VudCB3aG9zZSByb3cgaXMgb3Blbiwgb3IgbnVsbC4gKi9cbiAgQElucHV0KCkgb3Blbj86IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpIGRlZmF1bHRPcGVuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XG5cbiAgLyoqIEEgYnV0dG9uIGluIHRoZSBvcGVuIHJvdydzIG5vdGUuICovXG4gIEBJbnB1dCgpIGFjdGlvbj86IEFjY291bnRUYWJsZUFjdGlvbjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnU2VhcmNoIGFjY291bnRzJztcbiAgLyoqIFNob3duIHdoZW4gbm90aGluZyBtYXRjaGVzIHRoZSBzZWFyY2ggYW5kIGZpbHRlci4gKi9cbiAgQElucHV0KCkgZW1wdHlMYWJlbCA9ICdObyBhY2NvdW50cyBtYXRjaCc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb3Rpb24gPSBpbmplY3QoUmVkdWNlZE1vdGlvblNlcnZpY2UpO1xuXG4gIGZpbHRlciA9IHRoaXMuZGVmYXVsdFBsYW47XG4gIHRleHQgPSB0aGlzLmRlZmF1bHRRdWVyeTtcbiAgb3BlbmVkOiBzdHJpbmcgfCBudWxsID0gdGhpcy5kZWZhdWx0T3BlbjtcbiAgZHJhZnQ6ICdpZGxlJyB8ICdidXN5JyB8ICdkb25lJyA9ICdpZGxlJztcbiAgLyoqIFJlcGxheXMgdGhlIHN0YWdnZXIgd2hlbmV2ZXIgdGhlIHNlYXJjaCBvciBmaWx0ZXIgY2hhbmdlcy4gKi9cbiAgYW5pbWF0ZSA9ICF0aGlzLm1vdGlvbi5yZWR1Y2UoKTtcblxuICBwcml2YXRlIGRyYWZ0Rm9yOiBzdHJpbmcgfCBudWxsID0gdGhpcy5vcGVuZWQ7XG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncGxhbiddICYmIHRoaXMucGxhbiAhPT0gdW5kZWZpbmVkKSB0aGlzLmZpbHRlciA9IHRoaXMucGxhbjtcbiAgICBpZiAoY2hhbmdlc1sncXVlcnknXSAmJiB0aGlzLnF1ZXJ5ICE9PSB1bmRlZmluZWQpIHRoaXMudGV4dCA9IHRoaXMucXVlcnk7XG4gICAgaWYgKGNoYW5nZXNbJ29wZW4nXSAmJiB0aGlzLm9wZW4gIT09IHVuZGVmaW5lZCkgdGhpcy5vcGVuZWQgPSB0aGlzLm9wZW47XG4gICAgaWYgKGNoYW5nZXNbJ2RlZmF1bHRQbGFuJ10gJiYgdGhpcy5wbGFuID09PSB1bmRlZmluZWQpIHRoaXMuZmlsdGVyID0gdGhpcy5kZWZhdWx0UGxhbjtcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdFF1ZXJ5J10gJiYgdGhpcy5xdWVyeSA9PT0gdW5kZWZpbmVkKSB0aGlzLnRleHQgPSB0aGlzLmRlZmF1bHRRdWVyeTtcbiAgICBpZiAoY2hhbmdlc1snZGVmYXVsdE9wZW4nXSAmJiB0aGlzLm9wZW4gPT09IHVuZGVmaW5lZCkgdGhpcy5vcGVuZWQgPSB0aGlzLmRlZmF1bHRPcGVuO1xuICAgIC8vIHRoZSBhY3Rpb24gYnV0dG9uIHJlc2V0cyB3aGVuZXZlciBhbm90aGVyIHJvdyBvcGVuc1xuICAgIGlmICh0aGlzLmRyYWZ0Rm9yICE9PSB0aGlzLm9wZW5lZCkge1xuICAgICAgdGhpcy5kcmFmdEZvciA9IHRoaXMub3BlbmVkO1xuICAgICAgdGhpcy5kcmFmdCA9ICdpZGxlJztcbiAgICB9XG4gIH1cblxuICB0YWJzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5wbGFucykgcmV0dXJuIHRoaXMucGxhbnM7XG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMuYWNjb3VudHMubWFwKChhKSA9PiBhLnBsYW4pKV07XG4gIH1cblxuICByb3dzKCk6IEFjY291bnRUYWJsZUFjY291bnRbXSB7XG4gICAgY29uc3QgcyA9IHRoaXMudGV4dC50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50cy5maWx0ZXIoXG4gICAgICAoYSkgPT4gKCF0aGlzLmZpbHRlciB8fCBhLnBsYW4gPT09IHRoaXMuZmlsdGVyKSAmJiAoIXMgfHwgYS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocykpLFxuICAgICk7XG4gIH1cblxuICB0b25lQ2xhc3MocGxhbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b25lID0gdGhpcy5wbGFuVG9uZXNbcGxhbl07XG4gICAgcmV0dXJuIHRvbmUgPyBUT05FW3RvbmVdIDogJyc7XG4gIH1cblxuICBoZWFsdGhDb2xvcihoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBoID49IDgwID8gJ3ZhcigtLXZvLWF0Yi1vayknIDogaCA+PSA2MCA/ICd2YXIoLS12by1hdGItd2FybiknIDogJ3ZhcigtLXZvLWF0Yi1iYWQpJztcbiAgfVxuXG4gIG9uVGV4dCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZXBsYXkoKTtcbiAgICBpZiAodGhpcy5xdWVyeSA9PT0gdW5kZWZpbmVkKSB0aGlzLnRleHQgPSB2YWx1ZTtcbiAgICB0aGlzLnF1ZXJ5Q2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgc2V0RmlsdGVyKHA6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVwbGF5KCk7XG4gICAgaWYgKHRoaXMucGxhbiA9PT0gdW5kZWZpbmVkKSB0aGlzLmZpbHRlciA9IHA7XG4gICAgdGhpcy5wbGFuQ2hhbmdlLmVtaXQocCk7XG4gIH1cblxuICB0b2dnbGUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IHRoaXMub3BlbmVkID09PSBuYW1lID8gbnVsbCA6IG5hbWU7XG4gICAgaWYgKHRoaXMub3BlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm9wZW5lZCA9IG5leHQ7XG4gICAgICBpZiAodGhpcy5kcmFmdEZvciAhPT0gdGhpcy5vcGVuZWQpIHtcbiAgICAgICAgdGhpcy5kcmFmdEZvciA9IHRoaXMub3BlbmVkO1xuICAgICAgICB0aGlzLmRyYWZ0ID0gJ2lkbGUnO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChuZXh0KTtcbiAgfVxuXG4gIG9uUm93S2V5KGU6IEtleWJvYXJkRXZlbnQsIG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICgoZS5rZXkgPT09ICdFbnRlcicgfHwgZS5rZXkgPT09ICcgJykgJiYgZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy50b2dnbGUobmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcnVuQWN0aW9uKGU6IEV2ZW50LCBhOiBBY2NvdW50VGFibGVBY2NvdW50KTogdm9pZCB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIXRoaXMuYWN0aW9uIHx8IHRoaXMuZHJhZnQgPT09ICdidXN5JykgcmV0dXJuO1xuICAgIGNvbnN0IHIgPSB0aGlzLmFjdGlvbi5vbkNsaWNrKGEpO1xuICAgIGlmIChyICYmIHR5cGVvZiAociBhcyBQcm9taXNlPHVua25vd24+KS50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmRyYWZ0ID0gJ2J1c3knO1xuICAgICAgKHIgYXMgUHJvbWlzZTx1bmtub3duPikudGhlbihcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmFsaXZlKSB0aGlzLmRyYWZ0ID0gJ2RvbmUnO1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuYWxpdmUpIHRoaXMuZHJhZnQgPSAnaWRsZSc7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRyYWZ0ID0gJ2RvbmUnO1xuICAgIH1cbiAgfVxuXG4gIC8vIHRoZSByb3dzIHJlc3RhcnQgdGhlaXIgc3RhZ2dlciBmb3Igb25lIHBhc3MgYWZ0ZXIgYSBzZWFyY2ggb3IgZmlsdGVyIGNoYW5nZVxuICBwcml2YXRlIHJlcGxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb3Rpb24ucmVkdWNlKCkpIHJldHVybjtcbiAgICB0aGlzLmFuaW1hdGUgPSBmYWxzZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmFuaW1hdGUgPSB0cnVlKSk7XG4gIH1cbn1cbiJdfQ==
|