@tolle_/tolle-ui 18.2.28 → 18.2.30
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/esm2022/lib/accordion-item.component.mjs +5 -11
- package/esm2022/lib/accordion.component.mjs +4 -9
- package/esm2022/lib/alert-dialog-dynamic.component.mjs +5 -10
- package/esm2022/lib/alert-dialog.component.mjs +44 -59
- package/esm2022/lib/alert.component.mjs +5 -11
- package/esm2022/lib/aspect-ratio.component.mjs +119 -0
- package/esm2022/lib/attachment.component.mjs +334 -0
- package/esm2022/lib/avatar-fallback.component.mjs +3 -3
- package/esm2022/lib/avatar.component.mjs +4 -9
- package/esm2022/lib/badge.component.mjs +4 -9
- package/esm2022/lib/breadcrumb-item.component.mjs +3 -3
- package/esm2022/lib/breadcrumb-link.component.mjs +3 -3
- package/esm2022/lib/breadcrumb-separator.component.mjs +3 -3
- package/esm2022/lib/breadcrumb.component.mjs +3 -3
- package/esm2022/lib/bubble.component.mjs +301 -0
- package/esm2022/lib/button.component.mjs +5 -11
- package/esm2022/lib/calendar.component.mjs +5 -11
- package/esm2022/lib/card.component.mjs +14 -43
- package/esm2022/lib/carousel/carousel.component.mjs +5 -12
- package/esm2022/lib/chain-of-thought.component.mjs +380 -0
- package/esm2022/lib/chart-pie.component.mjs +386 -0
- package/esm2022/lib/chart.component.mjs +1146 -0
- package/esm2022/lib/chart.service.mjs +555 -0
- package/esm2022/lib/checkbox.component.mjs +5 -11
- package/esm2022/lib/checkpoint.component.mjs +134 -0
- package/esm2022/lib/collapsible.component.mjs +4 -11
- package/esm2022/lib/combobox.component.mjs +372 -0
- package/esm2022/lib/command-dialog.component.mjs +164 -0
- package/esm2022/lib/command.component.mjs +514 -0
- package/esm2022/lib/command.service.mjs +130 -0
- package/esm2022/lib/confirmation.component.mjs +219 -0
- package/esm2022/lib/context-menu-trigger.directive.mjs +36 -0
- package/esm2022/lib/context-menu.component.mjs +460 -0
- package/esm2022/lib/context-menu.service.mjs +121 -0
- package/esm2022/lib/context.component.mjs +377 -0
- package/esm2022/lib/conversation.component.mjs +442 -0
- package/esm2022/lib/country-selector.component.mjs +5 -11
- package/esm2022/lib/data-table.component.mjs +63 -12
- package/esm2022/lib/date-picker.component.mjs +251 -198
- package/esm2022/lib/date-range-picker.component.mjs +224 -116
- package/esm2022/lib/date-time-picker.component.mjs +506 -0
- package/esm2022/lib/direction.component.mjs +79 -0
- package/esm2022/lib/dropdown-item.component.mjs +3 -3
- package/esm2022/lib/dropdown-label.component.mjs +3 -3
- package/esm2022/lib/dropdown-menu.component.mjs +3 -3
- package/esm2022/lib/dropdown-separator.component.mjs +3 -3
- package/esm2022/lib/dropdown-trigger.directive.mjs +6 -4
- package/esm2022/lib/empty-state.component.mjs +4 -9
- package/esm2022/lib/field.component.mjs +394 -0
- package/esm2022/lib/hover-card.component.mjs +6 -16
- package/esm2022/lib/inline-citation.component.mjs +263 -0
- package/esm2022/lib/input-group.component.mjs +418 -0
- package/esm2022/lib/input.component.mjs +5 -11
- package/esm2022/lib/item.component.mjs +243 -0
- package/esm2022/lib/kbd.component.mjs +82 -0
- package/esm2022/lib/label.component.mjs +4 -9
- package/esm2022/lib/marker.component.mjs +135 -0
- package/esm2022/lib/masked-input.component.mjs +5 -11
- package/esm2022/lib/menubar.component.mjs +683 -0
- package/esm2022/lib/message-scroller.component.mjs +353 -0
- package/esm2022/lib/message-scroller.service.mjs +157 -0
- package/esm2022/lib/message.component.mjs +228 -0
- package/esm2022/lib/model-selector.component.mjs +310 -0
- package/esm2022/lib/multi-select.component.mjs +155 -72
- package/esm2022/lib/native-select.component.mjs +201 -0
- package/esm2022/lib/navigation-menu.component.mjs +642 -0
- package/esm2022/lib/otp-group.component.mjs +3 -3
- package/esm2022/lib/otp-slot.component.mjs +4 -9
- package/esm2022/lib/otp.component.mjs +5 -11
- package/esm2022/lib/pagination.component.mjs +7 -10
- package/esm2022/lib/plan.component.mjs +335 -0
- package/esm2022/lib/popover-content.component.mjs +4 -9
- package/esm2022/lib/popover.component.mjs +15 -13
- package/esm2022/lib/progress.component.mjs +4 -9
- package/esm2022/lib/prompt-input.component.mjs +526 -0
- package/esm2022/lib/queue.component.mjs +280 -0
- package/esm2022/lib/radio-group.component.mjs +6 -13
- package/esm2022/lib/radio-item.component.mjs +4 -9
- package/esm2022/lib/range-calendar.component.mjs +5 -11
- package/esm2022/lib/reasoning.component.mjs +335 -0
- package/esm2022/lib/resizable.component.mjs +219 -0
- package/esm2022/lib/segment.component.mjs +17 -7
- package/esm2022/lib/select-group.component.mjs +4 -8
- package/esm2022/lib/select-item.component.mjs +4 -9
- package/esm2022/lib/select-separator.component.mjs +4 -8
- package/esm2022/lib/select.component.mjs +133 -49
- package/esm2022/lib/separator.component.mjs +4 -9
- package/esm2022/lib/sheet.component.mjs +38 -56
- package/esm2022/lib/shimmer.component.mjs +84 -0
- package/esm2022/lib/sidebar.component.mjs +11 -1
- package/esm2022/lib/skeleton.component.mjs +4 -9
- package/esm2022/lib/sources.component.mjs +452 -0
- package/esm2022/lib/spinner.component.mjs +68 -0
- package/esm2022/lib/suggestion.component.mjs +207 -0
- package/esm2022/lib/switch.component.mjs +5 -11
- package/esm2022/lib/table.component.mjs +213 -0
- package/esm2022/lib/tabs.component.mjs +4 -11
- package/esm2022/lib/tag-input.component.mjs +5 -11
- package/esm2022/lib/task.component.mjs +359 -0
- package/esm2022/lib/textarea.component.mjs +5 -11
- package/esm2022/lib/theme.service.mjs +17 -6
- package/esm2022/lib/time-picker.component.mjs +923 -0
- package/esm2022/lib/toast.service.mjs +3 -2
- package/esm2022/lib/toaster.component.mjs +76 -39
- package/esm2022/lib/toggle-group.component.mjs +4 -9
- package/esm2022/lib/toggle.component.mjs +5 -11
- package/esm2022/lib/tool.component.mjs +462 -0
- package/esm2022/lib/typography.component.mjs +83 -0
- package/esm2022/lib/utils/color.mjs +140 -19
- package/esm2022/public-api.mjs +61 -1
- package/fesm2022/tolle-ui.mjs +16457 -1024
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/alert-dialog.component.d.ts +10 -2
- package/lib/aspect-ratio.component.d.ts +20 -0
- package/lib/attachment.component.d.ts +101 -0
- package/lib/bubble.component.d.ts +112 -0
- package/lib/chain-of-thought.component.d.ts +166 -0
- package/lib/chart-pie.component.d.ts +108 -0
- package/lib/chart.component.d.ts +369 -0
- package/lib/chart.service.d.ts +222 -0
- package/lib/checkpoint.component.d.ts +51 -0
- package/lib/combobox.component.d.ts +90 -0
- package/lib/command-dialog.component.d.ts +53 -0
- package/lib/command.component.d.ts +189 -0
- package/lib/command.service.d.ts +67 -0
- package/lib/confirmation.component.d.ts +70 -0
- package/lib/context-menu-trigger.directive.d.ts +12 -0
- package/lib/context-menu.component.d.ts +41 -0
- package/lib/context-menu.service.d.ts +38 -0
- package/lib/context.component.d.ts +134 -0
- package/lib/conversation.component.d.ts +165 -0
- package/lib/data-table.component.d.ts +27 -1
- package/lib/date-picker.component.d.ts +72 -11
- package/lib/date-range-picker.component.d.ts +63 -6
- package/lib/date-time-picker.component.d.ts +119 -0
- package/lib/direction.component.d.ts +45 -0
- package/lib/field.component.d.ts +201 -0
- package/lib/inline-citation.component.d.ts +103 -0
- package/lib/input-group.component.d.ts +150 -0
- package/lib/item.component.d.ts +154 -0
- package/lib/kbd.component.d.ts +50 -0
- package/lib/marker.component.d.ts +58 -0
- package/lib/menubar.component.d.ts +247 -0
- package/lib/message-scroller.component.d.ts +159 -0
- package/lib/message-scroller.service.d.ts +73 -0
- package/lib/message.component.d.ts +128 -0
- package/lib/model-selector.component.d.ts +103 -0
- package/lib/multi-select.component.d.ts +66 -14
- package/lib/native-select.component.d.ts +57 -0
- package/lib/navigation-menu.component.d.ts +230 -0
- package/lib/plan.component.d.ts +120 -0
- package/lib/popover.component.d.ts +1 -0
- package/lib/prompt-input.component.d.ts +194 -0
- package/lib/queue.component.d.ts +106 -0
- package/lib/reasoning.component.d.ts +127 -0
- package/lib/resizable.component.d.ts +43 -0
- package/lib/segment.component.d.ts +13 -3
- package/lib/select.component.d.ts +37 -5
- package/lib/sheet.component.d.ts +3 -0
- package/lib/shimmer.component.d.ts +38 -0
- package/lib/sidebar.component.d.ts +2 -0
- package/lib/sources.component.d.ts +156 -0
- package/lib/spinner.component.d.ts +29 -0
- package/lib/suggestion.component.d.ts +96 -0
- package/lib/table.component.d.ts +106 -0
- package/lib/task.component.d.ts +151 -0
- package/lib/theme.service.d.ts +9 -0
- package/lib/time-picker.component.d.ts +243 -0
- package/lib/toast.service.d.ts +3 -1
- package/lib/toaster.component.d.ts +26 -9
- package/lib/tool.component.d.ts +158 -0
- package/lib/typography.component.d.ts +32 -0
- package/lib/utils/color.d.ts +19 -5
- package/package.json +1 -1
- package/public-api.d.ts +50 -0
- package/registry/docs-content.json +8497 -1553
- package/registry/llms-full.txt +2679 -318
- package/registry/llms.txt +43 -4
- package/registry/manifest.json +9093 -1739
- package/registry/r/accordion-item.json +1 -1
- package/registry/r/accordion.json +1 -1
- package/registry/r/alert-dialog-dynamic.json +1 -1
- package/registry/r/alert-dialog.json +1 -1
- package/registry/r/alert.json +1 -1
- package/registry/r/attachment.json +23 -0
- package/registry/r/avatar-fallback.json +1 -1
- package/registry/r/avatar.json +1 -1
- package/registry/r/badge.json +1 -1
- package/registry/r/breadcrumb-item.json +1 -1
- package/registry/r/breadcrumb-link.json +1 -1
- package/registry/r/breadcrumb-separator.json +1 -1
- package/registry/r/breadcrumb.json +1 -1
- package/registry/r/bubble.json +23 -0
- package/registry/r/button.json +1 -1
- package/registry/r/calendar.json +1 -1
- package/registry/r/card.json +1 -1
- package/registry/r/carousel.json +1 -1
- package/registry/r/chain-of-thought.json +23 -0
- package/registry/r/chart-pie.json +30 -0
- package/registry/r/chart.json +28 -0
- package/registry/r/checkbox.json +1 -1
- package/registry/r/checkpoint.json +23 -0
- package/registry/r/collapsible.json +1 -1
- package/registry/r/combobox.json +31 -0
- package/registry/r/command-dialog.json +21 -0
- package/registry/r/command.json +26 -0
- package/registry/r/confirmation.json +23 -0
- package/registry/r/context.json +26 -0
- package/registry/r/conversation.json +23 -0
- package/registry/r/country-selector.json +1 -1
- package/registry/r/data-table.json +1 -1
- package/registry/r/date-picker.json +4 -4
- package/registry/r/date-range-picker.json +3 -3
- package/registry/r/date-time-picker.json +28 -0
- package/registry/r/direction.json +16 -0
- package/registry/r/dropdown-item.json +1 -1
- package/registry/r/dropdown-label.json +1 -1
- package/registry/r/dropdown-menu.json +1 -1
- package/registry/r/dropdown-separator.json +1 -1
- package/registry/r/dropdown-trigger.json +1 -1
- package/registry/r/empty-state.json +1 -1
- package/registry/r/field.json +23 -0
- package/registry/r/hover-card.json +1 -1
- package/registry/r/inline-citation.json +26 -0
- package/registry/r/input-group.json +23 -0
- package/registry/r/input.json +1 -1
- package/registry/r/item.json +23 -0
- package/registry/r/kbd.json +23 -0
- package/registry/r/label.json +1 -1
- package/registry/r/marker.json +23 -0
- package/registry/r/masked-input.json +1 -1
- package/registry/r/menubar.json +24 -0
- package/registry/r/message-scroller.json +26 -0
- package/registry/r/message.json +23 -0
- package/registry/r/model-selector.json +32 -0
- package/registry/r/multi-select.json +2 -2
- package/registry/r/native-select.json +23 -0
- package/registry/r/navigation-menu.json +24 -0
- package/registry/r/otp-group.json +1 -1
- package/registry/r/otp-slot.json +1 -1
- package/registry/r/otp.json +1 -1
- package/registry/r/pagination.json +3 -2
- package/registry/r/plan.json +23 -0
- package/registry/r/popover-content.json +1 -1
- package/registry/r/popover.json +1 -1
- package/registry/r/progress.json +1 -1
- package/registry/r/prompt-input.json +23 -0
- package/registry/r/queue.json +23 -0
- package/registry/r/radio-group.json +1 -1
- package/registry/r/radio-item.json +1 -1
- package/registry/r/range-calendar.json +1 -1
- package/registry/r/reasoning.json +23 -0
- package/registry/r/segment.json +1 -1
- package/registry/r/select-group.json +1 -1
- package/registry/r/select-item.json +1 -1
- package/registry/r/select-separator.json +1 -1
- package/registry/r/select.json +4 -3
- package/registry/r/separator.json +1 -1
- package/registry/r/sheet.json +1 -1
- package/registry/r/shimmer.json +23 -0
- package/registry/r/sidebar.json +1 -1
- package/registry/r/skeleton.json +1 -1
- package/registry/r/sources.json +23 -0
- package/registry/r/spinner.json +23 -0
- package/registry/r/suggestion.json +23 -0
- package/registry/r/switch.json +1 -1
- package/registry/r/table.json +21 -0
- package/registry/r/tabs.json +1 -1
- package/registry/r/tag-input.json +1 -1
- package/registry/r/task.json +23 -0
- package/registry/r/textarea.json +1 -1
- package/registry/r/time-picker.json +24 -0
- package/registry/r/toaster.json +2 -2
- package/registry/r/toggle-group.json +1 -1
- package/registry/r/toggle.json +1 -1
- package/registry/r/tool.json +23 -0
- package/registry/r/typography.json +23 -0
- package/registry/registry.json +915 -22
- package/theme.css +109 -8
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Injectable, Input, Output, inject } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { cn } from './utils/cn';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/common";
|
|
8
|
+
let queueItemId = 0;
|
|
9
|
+
const queueVariants = cva('w-full rounded-lg border border-border bg-card text-card-foreground', {
|
|
10
|
+
variants: {
|
|
11
|
+
size: {
|
|
12
|
+
sm: 'p-2 text-xs',
|
|
13
|
+
default: 'p-3 text-sm',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: { size: 'default' },
|
|
17
|
+
});
|
|
18
|
+
const queueItemVariants = cva('group/queue-item flex items-center gap-2 rounded-md border px-2 py-1.5 text-sm transition-colors', {
|
|
19
|
+
variants: {
|
|
20
|
+
status: {
|
|
21
|
+
queued: 'border-border bg-background text-muted-foreground',
|
|
22
|
+
running: 'border-info/40 bg-info/5 text-foreground',
|
|
23
|
+
done: 'border-transparent bg-transparent text-muted-foreground',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
defaultVariants: { status: 'queued' },
|
|
27
|
+
});
|
|
28
|
+
const queueItemIconVariants = cva('shrink-0 text-base leading-none', {
|
|
29
|
+
variants: {
|
|
30
|
+
status: {
|
|
31
|
+
queued: 'text-muted-foreground',
|
|
32
|
+
running: 'text-info',
|
|
33
|
+
done: 'text-success',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
defaultVariants: { status: 'queued' },
|
|
37
|
+
});
|
|
38
|
+
/** Remixicon class shown for each queue item status. */
|
|
39
|
+
const QUEUE_ICONS = {
|
|
40
|
+
queued: 'ri-time-line',
|
|
41
|
+
running: 'ri-loader-4-line animate-spin',
|
|
42
|
+
done: 'ri-check-line',
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Counts the items of a single `tolle-queue`.
|
|
46
|
+
*
|
|
47
|
+
* The header is `OnPush` and the item count is not one of its inputs, so it is
|
|
48
|
+
* published as an observable and the subscriber calls `markForCheck()`.
|
|
49
|
+
*/
|
|
50
|
+
export class QueueService {
|
|
51
|
+
statuses = new Map();
|
|
52
|
+
countsSource = new BehaviorSubject({
|
|
53
|
+
total: 0,
|
|
54
|
+
queued: 0,
|
|
55
|
+
running: 0,
|
|
56
|
+
done: 0,
|
|
57
|
+
});
|
|
58
|
+
/** Emits the queue's tallies whenever an item is added, updated or removed. */
|
|
59
|
+
counts$ = this.countsSource.asObservable();
|
|
60
|
+
get counts() {
|
|
61
|
+
return this.countsSource.value;
|
|
62
|
+
}
|
|
63
|
+
register(id, status) {
|
|
64
|
+
this.statuses.set(id, status);
|
|
65
|
+
this.recompute();
|
|
66
|
+
}
|
|
67
|
+
setStatus(id, status) {
|
|
68
|
+
if (!this.statuses.has(id))
|
|
69
|
+
return;
|
|
70
|
+
if (this.statuses.get(id) === status)
|
|
71
|
+
return;
|
|
72
|
+
this.statuses.set(id, status);
|
|
73
|
+
this.recompute();
|
|
74
|
+
}
|
|
75
|
+
unregister(id) {
|
|
76
|
+
if (this.statuses.delete(id))
|
|
77
|
+
this.recompute();
|
|
78
|
+
}
|
|
79
|
+
recompute() {
|
|
80
|
+
const values = [...this.statuses.values()];
|
|
81
|
+
this.countsSource.next({
|
|
82
|
+
total: values.length,
|
|
83
|
+
queued: values.filter((status) => status === 'queued').length,
|
|
84
|
+
running: values.filter((status) => status === 'running').length,
|
|
85
|
+
done: values.filter((status) => status === 'done').length,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueueService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
89
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueueService });
|
|
90
|
+
}
|
|
91
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueueService, decorators: [{
|
|
92
|
+
type: Injectable
|
|
93
|
+
}] });
|
|
94
|
+
/**
|
|
95
|
+
* Messages or tasks waiting their turn. The header counts the entries for you,
|
|
96
|
+
* so the host only has to render `tolle-queue-item` children.
|
|
97
|
+
*
|
|
98
|
+
* ```html
|
|
99
|
+
* <tolle-queue title="Queued">
|
|
100
|
+
* <tolle-queue-item label="Summarise the thread" status="running"></tolle-queue-item>
|
|
101
|
+
* <tolle-queue-item label="Draft a reply" (remove)="drop(1)"></tolle-queue-item>
|
|
102
|
+
* </tolle-queue>
|
|
103
|
+
* ```
|
|
104
|
+
* @new
|
|
105
|
+
*/
|
|
106
|
+
export class QueueComponent {
|
|
107
|
+
/**
|
|
108
|
+
* Angular writes a bound `class` input through its styling path, which does
|
|
109
|
+
* not mark an OnPush component dirty — without this hook the component keeps
|
|
110
|
+
* rendering the class it was born with.
|
|
111
|
+
*/
|
|
112
|
+
ngOnChanges() {
|
|
113
|
+
this.cdr.markForCheck();
|
|
114
|
+
}
|
|
115
|
+
/** Heading shown above the queued items. @default 'Queue' */
|
|
116
|
+
title = 'Queue';
|
|
117
|
+
/** Text shown while the queue holds nothing. @default 'Nothing queued.' */
|
|
118
|
+
emptyMessage = 'Nothing queued.';
|
|
119
|
+
/** Padding and text scale of the queue. @default 'default' */
|
|
120
|
+
size = 'default';
|
|
121
|
+
/** Extra Tailwind classes merged onto the queue via `cn()` (last-wins). */
|
|
122
|
+
class = '';
|
|
123
|
+
/** Emitted with the queue's tallies whenever its items change. */
|
|
124
|
+
countsChange = new EventEmitter();
|
|
125
|
+
service = inject(QueueService);
|
|
126
|
+
cdr = inject(ChangeDetectorRef);
|
|
127
|
+
sub = new Subscription();
|
|
128
|
+
counts = this.service.counts;
|
|
129
|
+
ngOnInit() {
|
|
130
|
+
this.sub.add(this.service.counts$.subscribe((counts) => {
|
|
131
|
+
this.counts = counts;
|
|
132
|
+
this.cdr.markForCheck();
|
|
133
|
+
this.countsChange.emit(counts);
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
ngOnDestroy() {
|
|
137
|
+
this.sub.unsubscribe();
|
|
138
|
+
}
|
|
139
|
+
get computedClass() {
|
|
140
|
+
return cn(queueVariants({ size: this.size }), this.class);
|
|
141
|
+
}
|
|
142
|
+
get countClass() {
|
|
143
|
+
return cn('ml-auto shrink-0 rounded-full border border-border bg-muted px-2 py-0.5 text-xs font-medium tabular-nums text-muted-foreground');
|
|
144
|
+
}
|
|
145
|
+
get listClass() {
|
|
146
|
+
return cn(this.counts.total === 0 ? 'flex flex-col' : 'mt-2 flex flex-col gap-1');
|
|
147
|
+
}
|
|
148
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
149
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: QueueComponent, isStandalone: true, selector: "tolle-queue", inputs: { title: "title", emptyMessage: "emptyMessage", size: "size", class: "class" }, outputs: { countsChange: "countsChange" }, providers: [QueueService], usesOnChanges: true, ngImport: i0, template: `
|
|
150
|
+
<div [class]="computedClass">
|
|
151
|
+
<div class="flex items-center gap-2">
|
|
152
|
+
<i class="ri-stack-line shrink-0 text-muted-foreground" aria-hidden="true"></i>
|
|
153
|
+
<span class="truncate font-medium text-foreground">{{ title }}</span>
|
|
154
|
+
<span [class]="countClass" [attr.aria-label]="counts.total + ' items queued'">{{ counts.total }}</span>
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
<p *ngIf="counts.total === 0" class="mt-2 text-sm text-muted-foreground">{{ emptyMessage }}</p>
|
|
158
|
+
|
|
159
|
+
<div role="list" [class]="listClass">
|
|
160
|
+
<ng-content></ng-content>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
164
|
+
}
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueueComponent, decorators: [{
|
|
166
|
+
type: Component,
|
|
167
|
+
args: [{ selector: 'tolle-queue', standalone: true, imports: [CommonModule], providers: [QueueService], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
168
|
+
<div [class]="computedClass">
|
|
169
|
+
<div class="flex items-center gap-2">
|
|
170
|
+
<i class="ri-stack-line shrink-0 text-muted-foreground" aria-hidden="true"></i>
|
|
171
|
+
<span class="truncate font-medium text-foreground">{{ title }}</span>
|
|
172
|
+
<span [class]="countClass" [attr.aria-label]="counts.total + ' items queued'">{{ counts.total }}</span>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<p *ngIf="counts.total === 0" class="mt-2 text-sm text-muted-foreground">{{ emptyMessage }}</p>
|
|
176
|
+
|
|
177
|
+
<div role="list" [class]="listClass">
|
|
178
|
+
<ng-content></ng-content>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
`, styles: [":host{display:block}\n"] }]
|
|
182
|
+
}], propDecorators: { title: [{
|
|
183
|
+
type: Input
|
|
184
|
+
}], emptyMessage: [{
|
|
185
|
+
type: Input
|
|
186
|
+
}], size: [{
|
|
187
|
+
type: Input
|
|
188
|
+
}], class: [{
|
|
189
|
+
type: Input
|
|
190
|
+
}], countsChange: [{
|
|
191
|
+
type: Output
|
|
192
|
+
}] } });
|
|
193
|
+
/** A single entry in a `tolle-queue`. */
|
|
194
|
+
export class QueueItemComponent {
|
|
195
|
+
/** Text describing the queued work. @default '' */
|
|
196
|
+
label = '';
|
|
197
|
+
/** Lifecycle state of this entry. @default 'queued' */
|
|
198
|
+
status = 'queued';
|
|
199
|
+
/** Shows the trailing dismiss button that emits `remove`. @default true */
|
|
200
|
+
removable = true;
|
|
201
|
+
/** Accessible label for the dismiss button. @default 'Remove from queue' */
|
|
202
|
+
removeLabel = 'Remove from queue';
|
|
203
|
+
/** Extra Tailwind classes merged onto the entry via `cn()` (last-wins). */
|
|
204
|
+
class = '';
|
|
205
|
+
/** Emitted when the user dismisses this entry. */
|
|
206
|
+
remove = new EventEmitter();
|
|
207
|
+
service = inject(QueueService);
|
|
208
|
+
id = 'tolle-queue-item-' + queueItemId++;
|
|
209
|
+
ngOnInit() {
|
|
210
|
+
this.service.register(this.id, this.status);
|
|
211
|
+
}
|
|
212
|
+
ngOnChanges() {
|
|
213
|
+
this.service.setStatus(this.id, this.status);
|
|
214
|
+
}
|
|
215
|
+
ngOnDestroy() {
|
|
216
|
+
this.service.unregister(this.id);
|
|
217
|
+
}
|
|
218
|
+
get computedClass() {
|
|
219
|
+
return cn(queueItemVariants({ status: this.status }), this.class);
|
|
220
|
+
}
|
|
221
|
+
get iconClass() {
|
|
222
|
+
return cn(queueItemIconVariants({ status: this.status }), QUEUE_ICONS[this.status]);
|
|
223
|
+
}
|
|
224
|
+
get labelClass() {
|
|
225
|
+
return cn('min-w-0 flex-1 truncate', this.status === 'done' && 'line-through');
|
|
226
|
+
}
|
|
227
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueueItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
228
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: QueueItemComponent, isStandalone: true, selector: "tolle-queue-item", inputs: { label: "label", status: "status", removable: "removable", removeLabel: "removeLabel", class: "class" }, outputs: { remove: "remove" }, usesOnChanges: true, ngImport: i0, template: `
|
|
229
|
+
<div role="listitem" [class]="computedClass" [attr.data-status]="status">
|
|
230
|
+
<i [class]="iconClass" aria-hidden="true"></i>
|
|
231
|
+
|
|
232
|
+
<span [class]="labelClass">{{ label }}</span>
|
|
233
|
+
<ng-content></ng-content>
|
|
234
|
+
|
|
235
|
+
<button
|
|
236
|
+
*ngIf="removable"
|
|
237
|
+
type="button"
|
|
238
|
+
[attr.aria-label]="removeLabel"
|
|
239
|
+
class="ml-auto shrink-0 rounded-md p-0.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
240
|
+
(click)="remove.emit()"
|
|
241
|
+
>
|
|
242
|
+
<i class="ri-close-line" aria-hidden="true"></i>
|
|
243
|
+
</button>
|
|
244
|
+
</div>
|
|
245
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
246
|
+
}
|
|
247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: QueueItemComponent, decorators: [{
|
|
248
|
+
type: Component,
|
|
249
|
+
args: [{ selector: 'tolle-queue-item', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
250
|
+
<div role="listitem" [class]="computedClass" [attr.data-status]="status">
|
|
251
|
+
<i [class]="iconClass" aria-hidden="true"></i>
|
|
252
|
+
|
|
253
|
+
<span [class]="labelClass">{{ label }}</span>
|
|
254
|
+
<ng-content></ng-content>
|
|
255
|
+
|
|
256
|
+
<button
|
|
257
|
+
*ngIf="removable"
|
|
258
|
+
type="button"
|
|
259
|
+
[attr.aria-label]="removeLabel"
|
|
260
|
+
class="ml-auto shrink-0 rounded-md p-0.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
|
|
261
|
+
(click)="remove.emit()"
|
|
262
|
+
>
|
|
263
|
+
<i class="ri-close-line" aria-hidden="true"></i>
|
|
264
|
+
</button>
|
|
265
|
+
</div>
|
|
266
|
+
`, styles: [":host{display:block}\n"] }]
|
|
267
|
+
}], propDecorators: { label: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], status: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], removable: [{
|
|
272
|
+
type: Input
|
|
273
|
+
}], removeLabel: [{
|
|
274
|
+
type: Input
|
|
275
|
+
}], class: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], remove: [{
|
|
278
|
+
type: Output
|
|
279
|
+
}] } });
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9xdWV1ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNySyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFLaEMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBVXBCLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxxRUFBcUUsRUFBRTtJQUMvRixRQUFRLEVBQUU7UUFDUixJQUFJLEVBQUU7WUFDSixFQUFFLEVBQUUsYUFBYTtZQUNqQixPQUFPLEVBQUUsYUFBYTtTQUN2QjtLQUNGO0lBQ0QsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtDQUNyQyxDQUFDLENBQUM7QUFJSCxNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FDM0Isa0dBQWtHLEVBQ2xHO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsTUFBTSxFQUFFO1lBQ04sTUFBTSxFQUFFLG1EQUFtRDtZQUMzRCxPQUFPLEVBQUUsMENBQTBDO1lBQ25ELElBQUksRUFBRSx5REFBeUQ7U0FDaEU7S0FDRjtJQUNELGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7Q0FDdEMsQ0FDRixDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUMs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IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGN2YSwgdHlwZSBWYXJpYW50UHJvcHMgfSBmcm9tICdjbGFzcy12YXJpYW5jZS1hdXRob3JpdHknO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuLyoqIFdoZXJlIGEgcXVldWVkIGVudHJ5IGlzIGluIGl0cyBsaWZlY3ljbGUuICovXG5leHBvcnQgdHlwZSBRdWV1ZUl0ZW1TdGF0dXMgPSAncXVldWVkJyB8ICdydW5uaW5nJyB8ICdkb25lJztcblxubGV0IHF1ZXVlSXRlbUlkID0gMDtcblxuLyoqIFRhbGxpZXMgb2YgdGhlIGVudHJpZXMgY3VycmVudGx5IGluIGEgcXVldWUuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXVlQ291bnRzIHtcbiAgdG90YWw6IG51bWJlcjtcbiAgcXVldWVkOiBudW1iZXI7XG4gIHJ1bm5pbmc6IG51bWJlcjtcbiAgZG9uZTogbnVtYmVyO1xufVxuXG5jb25zdCBxdWV1ZVZhcmlhbnRzID0gY3ZhKCd3LWZ1bGwgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1jYXJkIHRleHQtY2FyZC1mb3JlZ3JvdW5kJywge1xuICB2YXJpYW50czoge1xuICAgIHNpemU6IHtcbiAgICAgIHNtOiAncC0yIHRleHQteHMnLFxuICAgICAgZGVmYXVsdDogJ3AtMyB0ZXh0LXNtJyxcbiAgICB9LFxuICB9LFxuICBkZWZhdWx0VmFyaWFudHM6IHsgc2l6ZTogJ2RlZmF1bHQnIH0sXG59KTtcblxuZXhwb3J0IHR5cGUgUXVldWVQcm9wcyA9IFZhcmlhbnRQcm9wczx0eXBlb2YgcXVldWVWYXJpYW50cz47XG5cbmNvbnN0IHF1ZXVlSXRlbVZhcmlhbnRzID0gY3ZhKFxuICAnZ3JvdXAvcXVldWUtaXRlbSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiByb3VuZGVkLW1kIGJvcmRlciBweC0yIHB5LTEuNSB0ZXh0LXNtIHRyYW5zaXRpb24tY29sb3JzJyxcbiAge1xuICAgIHZhcmlhbnRzOiB7XG4gICAgICBzdGF0dXM6IHtcbiAgICAgICAgcXVldWVkOiAnYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCcsXG4gICAgICAgIHJ1bm5pbmc6ICdib3JkZXItaW5mby80MCBiZy1pbmZvLzUgdGV4dC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgZG9uZTogJ2JvcmRlci10cmFuc3BhcmVudCBiZy10cmFuc3BhcmVudCB0ZXh0LW11dGVkLWZvcmVncm91bmQnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czogeyBzdGF0dXM6ICdxdWV1ZWQnIH0sXG4gIH1cbik7XG5cbmNvbnN0IHF1ZXVlSXRlbUljb25WYXJpYW50cyA9IGN2YSgnc2hyaW5rLTAgdGV4dC1iYXNlIGxlYWRpbmctbm9uZScsIHtcbiAgdmFyaWFudHM6IHtcbiAgICBzdGF0dXM6IHtcbiAgICAgIHF1ZXVlZDogJ3RleHQtbXV0ZWQtZm9yZWdyb3VuZCcsXG4gICAgICBydW5uaW5nOiAndGV4dC1pbmZvJyxcbiAgICAgIGRvbmU6ICd0ZXh0LXN1Y2Nlc3MnLFxuICAgIH0sXG4gIH0sXG4gIGRlZmF1bHRWYXJpYW50czogeyBzdGF0dXM6ICdxdWV1ZWQnIH0sXG59KTtcblxuZXhwb3J0IHR5cGUgUXVldWVJdGVtUHJvcHMgPSBWYXJpYW50UHJvcHM8dHlwZW9mIHF1ZXVlSXRlbVZhcmlhbnRzPjtcblxuLyoqIFJlbWl4aWNvbiBjbGFzcyBzaG93biBmb3IgZWFjaCBxdWV1ZSBpdGVtIHN0YXR1cy4gKi9cbmNvbnN0IFFVRVVFX0lDT05TOiBSZWNvcmQ8UXVldWVJdGVtU3RhdHVzLCBzdHJpbmc+ID0ge1xuICBxdWV1ZWQ6ICdyaS10aW1lLWxpbmUnLFxuICBydW5uaW5nOiAncmktbG9hZGVyLTQtbGluZSBhbmltYXRlLXNwaW4nLFxuICBkb25lOiAncmktY2hlY2stbGluZScsXG59O1xuXG4vKipcbiAqIENvdW50cyB0aGUgaXRlbXMgb2YgYSBzaW5nbGUgYHRvbGxlLXF1ZXVlYC5cbiAqXG4gKiBUaGUgaGVhZGVyIGlzIGBPblB1c2hgIGFuZCB0aGUgaXRlbSBjb3VudCBpcyBub3Qgb25lIG9mIGl0cyBpbnB1dHMsIHNvIGl0IGlzXG4gKiBwdWJsaXNoZWQgYXMgYW4gb2JzZXJ2YWJsZSBhbmQgdGhlIHN1YnNjcmliZXIgY2FsbHMgYG1hcmtGb3JDaGVjaygpYC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFF1ZXVlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdHVzZXMgPSBuZXcgTWFwPHN0cmluZywgUXVldWVJdGVtU3RhdHVzPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY291bnRzU291cmNlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWV1ZUNvdW50cz4oe1xuICAgIHRvdGFsOiAwLFxuICAgIHF1ZXVlZDogMCxcbiAgICBydW5uaW5nOiAwLFxuICAgIGRvbmU6IDAsXG4gIH0pO1xuICAvKiogRW1pdHMgdGhlIHF1ZXVlJ3MgdGFsbGllcyB3aGVuZXZlciBhbiBpdGVtIGlzIGFkZGVkLCB1cGRhdGVkIG9yIHJlbW92ZWQuICovXG4gIHJlYWRvbmx5IGNvdW50cyQgPSB0aGlzLmNvdW50c1NvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICBnZXQgY291bnRzKCk6IFF1ZXVlQ291bnRzIHtcbiAgICByZXR1cm4gdGhpcy5jb3VudHNTb3VyY2UudmFsdWU7XG4gIH1cblxuICByZWdpc3RlcihpZDogc3RyaW5nLCBzdGF0dXM6IFF1ZXVlSXRlbVN0YXR1cyk6IHZvaWQge1xuICAgIHRoaXMuc3RhdHVzZXMuc2V0KGlkLCBzdGF0dXMpO1xuICAgIHRoaXMucmVjb21wdXRlKCk7XG4gIH1cblxuICBzZXRTdGF0dXMoaWQ6IHN0cmluZywgc3RhdHVzOiBRdWV1ZUl0ZW1TdGF0dXMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhdHVzZXMuaGFzKGlkKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnN0YXR1c2VzLmdldChpZCkgPT09IHN0YXR1cykgcmV0dXJuO1xuICAgIHRoaXMuc3RhdHVzZXMuc2V0KGlkLCBzdGF0dXMpO1xuICAgIHRoaXMucmVjb21wdXRlKCk7XG4gIH1cblxuICB1bnJlZ2lzdGVyKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdGF0dXNlcy5kZWxldGUoaWQpKSB0aGlzLnJlY29tcHV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvbXB1dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gWy4uLnRoaXMuc3RhdHVzZXMudmFsdWVzKCldO1xuICAgIHRoaXMuY291bnRzU291cmNlLm5leHQoe1xuICAgICAgdG90YWw6IHZhbHVlcy5sZW5ndGgsXG4gICAgICBxdWV1ZWQ6IHZhbHVlcy5maWx0ZXIoKHN0YXR1cykgPT4gc3RhdHVzID09PSAncXVldWVkJykubGVuZ3RoLFxuICAgICAgcnVubmluZzogdmFsdWVzLmZpbHRlcigoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdydW5uaW5nJykubGVuZ3RoLFxuICAgICAgZG9uZTogdmFsdWVzLmZpbHRlcigoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdkb25lJykubGVuZ3RoLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogTWVzc2FnZXMgb3IgdGFza3Mgd2FpdGluZyB0aGVpciB0dXJuLiBUaGUgaGVhZGVyIGNvdW50cyB0aGUgZW50cmllcyBmb3IgeW91LFxuICogc28gdGhlIGhvc3Qgb25seSBoYXMgdG8gcmVuZGVyIGB0b2xsZS1xdWV1ZS1pdGVtYCBjaGlsZHJlbi5cbiAqXG4gKiBgYGBodG1sXG4gKiA8dG9sbGUtcXVldWUgdGl0bGU9XCJRdWV1ZWRcIj5cbiAqICAgPHRvbGxlLXF1ZXVlLWl0ZW0gbGFiZWw9XCJTdW1tYXJpc2UgdGhlIHRocmVhZFwiIHN0YXR1cz1cInJ1bm5pbmdcIj48L3RvbGxlLXF1ZXVlLWl0ZW0+XG4gKiAgIDx0b2xsZS1xdWV1ZS1pdGVtIGxhYmVsPVwiRHJhZnQgYSByZXBseVwiIChyZW1vdmUpPVwiZHJvcCgxKVwiPjwvdG9sbGUtcXVldWUtaXRlbT5cbiAqIDwvdG9sbGUtcXVldWU+XG4gKiBgYGBcbiAqIEBuZXdcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtcXVldWUnLFxuICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbUXVldWVTZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgIDxpIGNsYXNzPVwicmktc3RhY2stbGluZSBzaHJpbmstMCB0ZXh0LW11dGVkLWZvcmVncm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGUgZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kXCI+e3sgdGl0bGUgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIFtjbGFzc109XCJjb3VudENsYXNzXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJjb3VudHMudG90YWwgKyAnIGl0ZW1zIHF1ZXVlZCdcIj57eyBjb3VudHMudG90YWwgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHAgKm5nSWY9XCJjb3VudHMudG90YWwgPT09IDBcIiBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj57eyBlbXB0eU1lc3NhZ2UgfX08L3A+XG5cbiAgICAgIDxkaXYgcm9sZT1cImxpc3RcIiBbY2xhc3NdPVwibGlzdENsYXNzXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBRdWV1ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBBbmd1bGFyIHdyaXRlcyBhIGJvdW5kIGBjbGFzc2AgaW5wdXQgdGhyb3VnaCBpdHMgc3R5bGluZyBwYXRoLCB3aGljaCBkb2VzXG4gICAqIG5vdCBtYXJrIGFuIE9uUHVzaCBjb21wb25lbnQgZGlydHkg4oCUIHdpdGhvdXQgdGhpcyBob29rIHRoZSBjb21wb25lbnQga2VlcHNcbiAgICogcmVuZGVyaW5nIHRoZSBjbGFzcyBpdCB3YXMgYm9ybiB3aXRoLlxuICAgKi9cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKiogSGVhZGluZyBzaG93biBhYm92ZSB0aGUgcXVldWVkIGl0ZW1zLiBAZGVmYXVsdCAnUXVldWUnICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJ1F1ZXVlJztcbiAgLyoqIFRleHQgc2hvd24gd2hpbGUgdGhlIHF1ZXVlIGhvbGRzIG5vdGhpbmcuIEBkZWZhdWx0ICdOb3RoaW5nIHF1ZXVlZC4nICovXG4gIEBJbnB1dCgpIGVtcHR5TWVzc2FnZSA9ICdOb3RoaW5nIHF1ZXVlZC4nO1xuICAvKiogUGFkZGluZyBhbmQgdGV4dCBzY2FsZSBvZiB0aGUgcXVldWUuIEBkZWZhdWx0ICdkZWZhdWx0JyAqL1xuICBASW5wdXQoKSBzaXplOiBRdWV1ZVByb3BzWydzaXplJ10gPSAnZGVmYXVsdCc7XG4gIC8qKiBFeHRyYSBUYWlsd2luZCBjbGFzc2VzIG1lcmdlZCBvbnRvIHRoZSBxdWV1ZSB2aWEgYGNuKClgIChsYXN0LXdpbnMpLiAqL1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuXG4gIC8qKiBFbWl0dGVkIHdpdGggdGhlIHF1ZXVlJ3MgdGFsbGllcyB3aGVuZXZlciBpdHMgaXRlbXMgY2hhbmdlLiAqL1xuICBAT3V0cHV0KCkgY291bnRzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxRdWV1ZUNvdW50cz4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2UgPSBpbmplY3QoUXVldWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb3VudHM6IFF1ZXVlQ291bnRzID0gdGhpcy5zZXJ2aWNlLmNvdW50cztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLnNlcnZpY2UuY291bnRzJC5zdWJzY3JpYmUoKGNvdW50cykgPT4ge1xuICAgICAgICB0aGlzLmNvdW50cyA9IGNvdW50cztcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuY291bnRzQ2hhbmdlLmVtaXQoY291bnRzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBnZXQgY29tcHV0ZWRDbGFzcygpIHtcbiAgICByZXR1cm4gY24ocXVldWVWYXJpYW50cyh7IHNpemU6IHRoaXMuc2l6ZSB9KSwgdGhpcy5jbGFzcyk7XG4gIH1cblxuICBnZXQgY291bnRDbGFzcygpIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAnbWwtYXV0byBzaHJpbmstMCByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctbXV0ZWQgcHgtMiBweS0wLjUgdGV4dC14cyBmb250LW1lZGl1bSB0YWJ1bGFyLW51bXMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kJ1xuICAgICk7XG4gIH1cblxuICBnZXQgbGlzdENsYXNzKCkge1xuICAgIHJldHVybiBjbih0aGlzLmNvdW50cy50b3RhbCA9PT0gMCA/ICdmbGV4IGZsZXgtY29sJyA6ICdtdC0yIGZsZXggZmxleC1jb2wgZ2FwLTEnKTtcbiAgfVxufVxuXG4vKiogQSBzaW5nbGUgZW50cnkgaW4gYSBgdG9sbGUtcXVldWVgLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtcXVldWUtaXRlbScsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IHJvbGU9XCJsaXN0aXRlbVwiIFtjbGFzc109XCJjb21wdXRlZENsYXNzXCIgW2F0dHIuZGF0YS1zdGF0dXNdPVwic3RhdHVzXCI+XG4gICAgICA8aSBbY2xhc3NdPVwiaWNvbkNsYXNzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuXG4gICAgICA8c3BhbiBbY2xhc3NdPVwibGFiZWxDbGFzc1wiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwicmVtb3ZhYmxlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVtb3ZlTGFiZWxcIlxuICAgICAgICBjbGFzcz1cIm1sLWF1dG8gc2hyaW5rLTAgcm91bmRlZC1tZCBwLTAuNSB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtZm9yZWdyb3VuZCBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZ1wiXG4gICAgICAgIChjbGljayk9XCJyZW1vdmUuZW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXVlSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvKiogVGV4dCBkZXNjcmliaW5nIHRoZSBxdWV1ZWQgd29yay4gQGRlZmF1bHQgJycgKi9cbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgLyoqIExpZmVjeWNsZSBzdGF0ZSBvZiB0aGlzIGVudHJ5LiBAZGVmYXVsdCAncXVldWVkJyAqL1xuICBASW5wdXQoKSBzdGF0dXM6IFF1ZXVlSXRlbVN0YXR1cyA9ICdxdWV1ZWQnO1xuICAvKiogU2hvd3MgdGhlIHRyYWlsaW5nIGRpc21pc3MgYnV0dG9uIHRoYXQgZW1pdHMgYHJlbW92ZWAuIEBkZWZhdWx0IHRydWUgKi9cbiAgQElucHV0KCkgcmVtb3ZhYmxlID0gdHJ1ZTtcbiAgLyoqIEFjY2Vzc2libGUgbGFiZWwgZm9yIHRoZSBkaXNtaXNzIGJ1dHRvbi4gQGRlZmF1bHQgJ1JlbW92ZSBmcm9tIHF1ZXVlJyAqL1xuICBASW5wdXQoKSByZW1vdmVMYWJlbCA9ICdSZW1vdmUgZnJvbSBxdWV1ZSc7XG4gIC8qKiBFeHRyYSBUYWlsd2luZCBjbGFzc2VzIG1lcmdlZCBvbnRvIHRoZSBlbnRyeSB2aWEgYGNuKClgIChsYXN0LXdpbnMpLiAqL1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuXG4gIC8qKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgZGlzbWlzc2VzIHRoaXMgZW50cnkuICovXG4gIEBPdXRwdXQoKSByZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlID0gaW5qZWN0KFF1ZXVlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaWQgPSAndG9sbGUtcXVldWUtaXRlbS0nICsgcXVldWVJdGVtSWQrKztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UucmVnaXN0ZXIodGhpcy5pZCwgdGhpcy5zdGF0dXMpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zZXJ2aWNlLnNldFN0YXR1cyh0aGlzLmlkLCB0aGlzLnN0YXR1cyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlcnZpY2UudW5yZWdpc3Rlcih0aGlzLmlkKTtcbiAgfVxuXG4gIGdldCBjb21wdXRlZENsYXNzKCkge1xuICAgIHJldHVybiBjbihxdWV1ZUl0ZW1WYXJpYW50cyh7IHN0YXR1czogdGhpcy5zdGF0dXMgfSksIHRoaXMuY2xhc3MpO1xuICB9XG5cbiAgZ2V0IGljb25DbGFzcygpIHtcbiAgICByZXR1cm4gY24ocXVldWVJdGVtSWNvblZhcmlhbnRzKHsgc3RhdHVzOiB0aGlzLnN0YXR1cyB9KSwgUVVFVUVfSUNPTlNbdGhpcy5zdGF0dXNdKTtcbiAgfVxuXG4gIGdldCBsYWJlbENsYXNzKCkge1xuICAgIHJldHVybiBjbignbWluLXctMCBmbGV4LTEgdHJ1bmNhdGUnLCB0aGlzLnN0YXR1cyA9PT0gJ2RvbmUnICYmICdsaW5lLXRocm91Z2gnKTtcbiAgfVxufVxuIl19
|
|
@@ -91,31 +91,24 @@ export class RadioGroupComponent {
|
|
|
91
91
|
<div [class]="cn('grid gap-2', class)" role="radiogroup">
|
|
92
92
|
<ng-content></ng-content>
|
|
93
93
|
</div>
|
|
94
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
94
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
95
95
|
}
|
|
96
96
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RadioGroupComponent, decorators: [{
|
|
97
97
|
type: Component,
|
|
98
|
-
args: [{
|
|
99
|
-
selector: 'tolle-radio-group',
|
|
100
|
-
standalone: true,
|
|
101
|
-
imports: [CommonModule],
|
|
102
|
-
providers: [
|
|
98
|
+
args: [{ selector: 'tolle-radio-group', standalone: true, imports: [CommonModule], providers: [
|
|
103
99
|
RadioService,
|
|
104
100
|
{
|
|
105
101
|
provide: NG_VALUE_ACCESSOR,
|
|
106
102
|
useExisting: forwardRef(() => RadioGroupComponent),
|
|
107
103
|
multi: true
|
|
108
104
|
}
|
|
109
|
-
],
|
|
110
|
-
host: {
|
|
105
|
+
], host: {
|
|
111
106
|
'(keydown)': 'onKeydown($event)'
|
|
112
|
-
},
|
|
113
|
-
template: `
|
|
107
|
+
}, template: `
|
|
114
108
|
<div [class]="cn('grid gap-2', class)" role="radiogroup">
|
|
115
109
|
<ng-content></ng-content>
|
|
116
110
|
</div>
|
|
117
|
-
|
|
118
|
-
}]
|
|
111
|
+
`, styles: [":host{display:block}\n"] }]
|
|
119
112
|
}], ctorParameters: () => [{ type: i1.RadioService }], propDecorators: { class: [{
|
|
120
113
|
type: Input
|
|
121
114
|
}], disabled: [{
|
|
@@ -123,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
123
116
|
}], name: [{
|
|
124
117
|
type: Input
|
|
125
118
|
}] } });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9yYWRpby1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUE4QixNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7QUF3QjdDLE1BQU0sT0FBTyxtQkFBbUI7SUFZVjtJQVhYLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLElBQUksR0FBRyxlQUFlLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTVFLEtBQUssQ0FBTTtJQUNYLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUUxQixzRUFBc0U7SUFDOUQsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUV6QixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUs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VSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFa0IsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3R0FqRmhCLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHlMQWpCbkI7WUFDVCxZQUFZO1lBQ1o7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLCtDQUlTOzs7O0dBSVQsK0ZBaEJTLFlBQVk7OzRGQWtCWCxtQkFBbUI7a0JBdEIvQixTQUFTOytCQUNFLG1CQUFtQixjQUVqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsYUFDWjt3QkFDVCxZQUFZO3dCQUNaOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixRQUNLO3dCQUNKLFdBQVcsRUFBRSxtQkFBbUI7cUJBQ2pDLFlBQ1M7Ozs7R0FJVDtpRkFHUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcbmltcG9ydCB7UmFkaW9TZXJ2aWNlfSBmcm9tICcuL3JhZGlvLXNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1yYWRpby1ncm91cCcsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9J10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICBSYWRpb1NlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb0dyb3VwQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duKSc6ICdvbktleWRvd24oJGV2ZW50KSdcbiAgfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzc109XCJjbignZ3JpZCBnYXAtMicsIGNsYXNzKVwiIHJvbGU9XCJyYWRpb2dyb3VwXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBuYW1lID0gYHJhZGlvLWdyb3VwLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDkpfWA7XG5cbiAgdmFsdWU6IGFueTtcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIC8qKiBTdXBwcmVzc2VzIG9uQ2hhbmdlIHdoaWxlIGFwcGx5aW5nIGEgcHJvZ3JhbW1hdGljIHdyaXRlVmFsdWUoKS4gKi9cbiAgcHJpdmF0ZSBzdXBwcmVzcyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmFkaW9TZXJ2aWNlOiBSYWRpb1NlcnZpY2UpIHtcbiAgICB0aGlzLnJhZGlvU2VydmljZS5zZWxlY3RlZFZhbHVlJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgICBpZiAoIXRoaXMuc3VwcHJlc3MpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMucmFkaW9TZXJ2aWNlLnNldERpc2FibGVkKGlzRGlzYWJsZWQpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5yYWRpb1NlcnZpY2Uuc2V0RGlzYWJsZWQodGhpcy5kaXNhYmxlZCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5zdXBwcmVzcyA9IHRydWU7XG4gICAgdGhpcy5yYWRpb1NlcnZpY2Uuc2VsZWN0KHZhbHVlKTtcbiAgICB0aGlzLnN1cHByZXNzID0gZmFsc2U7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cblxuICAvKipcbiAgICogV0FJLUFSSUEgcmFkaW8gZ3JvdXAga2V5Ym9hcmQgbmF2OiBBcnJvdyBEb3duL1JpZ2h0IHNlbGVjdCtmb2N1cyB0aGUgbmV4dFxuICAgKiBlbmFibGVkIGl0ZW0sIEFycm93IFVwL0xlZnQgdGhlIHByZXZpb3VzLiBXcmFwcyBhcm91bmQgYW5kIHNraXBzIGRpc2FibGVkXG4gICAqIGl0ZW1zOyBtb3Zpbmcgc2VsZWN0aW9uIGFsc28gbW92ZXMgZm9jdXMuXG4gICAqL1xuICBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuICAgIGNvbnN0IGZvcndhcmQgPSBrZXkgPT09ICdBcnJvd0Rvd24nIHx8IGtleSA9PT0gJ0Fycm93UmlnaHQnO1xuICAgIGNvbnN0IGJhY2t3YXJkID0ga2V5ID09PSAnQXJyb3dVcCcgfHwga2V5ID09PSAnQXJyb3dMZWZ0JztcbiAgICBpZiAoIWZvcndhcmQgJiYgIWJhY2t3YXJkKSByZXR1cm47XG5cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMucmFkaW9TZXJ2aWNlLmdldEVuYWJsZWRJdGVtcygpO1xuICAgIGlmICghaXRlbXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICBsZXQgY3VycmVudCA9IHRhcmdldFxuICAgICAgPyBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLmhvc3RFbGVtZW50ID09PSB0YXJnZXQgfHwgaS5ob3N0RWxlbWVudC5jb250YWlucyh0YXJnZXQpKVxuICAgICAgOiAtMTtcbiAgICBpZiAoY3VycmVudCA8IDApIHtcbiAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uXG4gICAgICBjdXJyZW50ID0gaXRlbXMuZmluZEluZGV4KGkgPT4gaS52YWx1ZSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgbGV0IG5leHQ6IG51bWJlcjtcbiAgICBpZiAoY3VycmVudCA8IDApIHtcbiAgICAgIG5leHQgPSBmb3J3YXJkID8gMCA6IGl0ZW1zLmxlbmd0aCAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQgPSBmb3J3YXJkXG4gICAgICAgID8gKGN1cnJlbnQgKyAxKSAlIGl0ZW1zLmxlbmd0aFxuICAgICAgICA6IChjdXJyZW50IC0gMSArIGl0ZW1zLmxlbmd0aCkgJSBpdGVtcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0SXRlbSA9IGl0ZW1zW25leHRdO1xuICAgIHRoaXMucmFkaW9TZXJ2aWNlLnNlbGVjdCh0YXJnZXRJdGVtLnZhbHVlKTtcbiAgICB0YXJnZXRJdGVtLmZvY3VzSXRlbSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNuID0gY247XG59XG4iXX0=
|
|
@@ -97,15 +97,11 @@ export class RadioItemComponent {
|
|
|
97
97
|
<ng-content></ng-content>
|
|
98
98
|
</label>
|
|
99
99
|
</div>
|
|
100
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
100
|
+
`, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
101
101
|
}
|
|
102
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RadioItemComponent, decorators: [{
|
|
103
103
|
type: Component,
|
|
104
|
-
args: [{
|
|
105
|
-
selector: 'tolle-radio-item',
|
|
106
|
-
standalone: true,
|
|
107
|
-
imports: [CommonModule],
|
|
108
|
-
template: `
|
|
104
|
+
args: [{ selector: 'tolle-radio-item', standalone: true, imports: [CommonModule], template: `
|
|
109
105
|
<div
|
|
110
106
|
(click)="!isEffectiveDisabled && select()"
|
|
111
107
|
[class]="cn(
|
|
@@ -138,8 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
138
134
|
<ng-content></ng-content>
|
|
139
135
|
</label>
|
|
140
136
|
</div>
|
|
141
|
-
|
|
142
|
-
}]
|
|
137
|
+
`, styles: [":host{display:block}\n"] }]
|
|
143
138
|
}], ctorParameters: () => [{ type: i1.RadioService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { value: [{
|
|
144
139
|
type: Input
|
|
145
140
|
}], disabled: [{
|
|
@@ -147,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
147
142
|
}], class: [{
|
|
148
143
|
type: Input
|
|
149
144
|
}] } });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8taXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL3JhZGlvLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFvRCxNQUFNLGVBQWUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBMENwQyxNQUFNLE9BQU8sa0JBQWtCO0lBa0JuQjtJQUNBO0lBQ0E7SUFuQkQsS0FBSyxDQUFNO0lBQ1gsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRXBCLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDbkIsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUN0QixxRUFBcUU7SUFDckUsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVYLEdBQUcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWpDLElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFFRCxtRUFBbUU7SUFDbkUsWUFDVSxZQUEwQixFQUMxQixHQUFzQixFQUN0QixFQUEyQjtRQUYzQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUF5QjtJQUNsQyxDQUFDO0lBRUosZ0ZBQWdGO0lBQ2hGLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBdUIsQ0FBQztRQUM1RixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVE7UUFDTiwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxxQkFBcUI7UUFDaEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FDVixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQjtRQUNoRCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMscUJBQXFCO1FBQ2hELENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7SUFDbkQsQ0FBQztJQUVTLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBMUVQLGtCQUFrQjs0RkFBbEIsa0JBQWtCLDhJQW5DbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDVCwrRkFsQ1MsWUFBWTs7NEZBb0NYLGtCQUFrQjtrQkF4QzlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBRWhCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ1Q7MElBR1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcbmltcG9ydCB7IFJhZGlvU2VydmljZSwgUm92aW5nUmFkaW9JdGVtIH0gZnJvbSAnLi9yYWRpby1zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1yYWRpby1pdGVtJyxcbiAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgKGNsaWNrKT1cIiFpc0VmZmVjdGl2ZURpc2FibGVkICYmIHNlbGVjdCgpXCJcbiAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBncm91cCBweS0xJyxcbiAgICAgICAgaXNFZmZlY3RpdmVEaXNhYmxlZCA/ICdjdXJzb3Itbm90LWFsbG93ZWQgb3BhY2l0eS01MCcgOiAnY3Vyc29yLXBvaW50ZXInXG4gICAgICApXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIHJvbGU9XCJyYWRpb1wiXG4gICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJpc1NlbGVjdGVkXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0VmZmVjdGl2ZURpc2FibGVkIHx8IG51bGxcIlxuICAgICAgICBbYXR0ci5kYXRhLXN0YXRlXT1cImlzU2VsZWN0ZWQgPyAnY2hlY2tlZCcgOiAndW5jaGVja2VkJ1wiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cImlzRWZmZWN0aXZlRGlzYWJsZWQgPyAtMSA6IChpc1RhYmJhYmxlID8gMCA6IC0xKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cImlzRWZmZWN0aXZlRGlzYWJsZWQgPyBudWxsIDogc2VsZWN0KClcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJpc0VmZmVjdGl2ZURpc2FibGVkID8gbnVsbCA6IHNlbGVjdCgpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgJ2FzcGVjdC1zcXVhcmUgaC00IHctNCByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1wcmltYXJ5IHRleHQtcHJpbWFyeSB0cmFuc2l0aW9uLWFsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcicsXG4gICAgICAgICdvdXRsaW5lLW5vbmUgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTInLFxuICAgICAgICAhaXNFZmZlY3RpdmVEaXNhYmxlZCAmJiAnZ3JvdXAtaG92ZXI6Ym9yZGVyLXByaW1hcnkvNzAnLFxuICAgICAgICBpc1NlbGVjdGVkID8gJ2JnLWJhY2tncm91bmQnIDogJ2JnLXRyYW5zcGFyZW50JyxcbiAgICAgICAgY2xhc3NcbiAgICAgIClcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiaXNTZWxlY3RlZFwiXG4gICAgICAgICAgY2xhc3M9XCJoLTIuNSB3LTIuNSByb3VuZGVkLWZ1bGwgYmctcHJpbWFyeSBhbmltYXRlLWluIHpvb20taW4tNTAgZHVyYXRpb24tMjAwXCJcbiAgICAgICAgPjwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW0gbGVhZGluZy1ub25lIHNlbGVjdC1ub25lXCIgW2NsYXNzLmN1cnNvci1wb2ludGVyXT1cIiFpc0VmZmVjdGl2ZURpc2FibGVkXCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9JdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIFJvdmluZ1JhZGlvSXRlbSB7XG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNsYXNzID0gJyc7XG5cbiAgaXNTZWxlY3RlZCA9IGZhbHNlO1xuICBncm91cERpc2FibGVkID0gZmFsc2U7XG4gIC8qKiBXaGV0aGVyIHRoaXMgaXRlbSBpcyB0aGUgc2luZ2xlIHJvdmluZyB0YWIgc3RvcCBmb3IgdGhlIGdyb3VwLiAqL1xuICBpc1RhYmJhYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgZ2V0IGlzRWZmZWN0aXZlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5ncm91cERpc2FibGVkO1xuICB9XG5cbiAgLy8gSW5qZWN0IENoYW5nZURldGVjdG9yUmVmIHRvIGVuc3VyZSBVSSB1cGRhdGVzIHdoZW4gc2VydmljZSBlbWl0c1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJhZGlvU2VydmljZTogUmFkaW9TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHt9XG5cbiAgLy8gLS0tIFJvdmluZ1JhZGlvSXRlbSBjb250cmFjdCAodXNlZCBieSB0aGUgZ3JvdXAvc2VydmljZSBmb3Iga2V5Ym9hcmQgbmF2KSAtLS1cbiAgZ2V0IGhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgaXNJdGVtRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNFZmZlY3RpdmVEaXNhYmxlZDtcbiAgfVxuXG4gIGZvY3VzSXRlbSgpOiB2b2lkIHtcbiAgICBjb25zdCByYWRpb0VsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwicmFkaW9cIl0nKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgcmFkaW9FbD8uZm9jdXMoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIExpc3RlbiBmb3Igc2VsZWN0aW9uIGNoYW5nZXNcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLnJhZGlvU2VydmljZS5zZWxlY3RlZFZhbHVlJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkID0gKHZhbCA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpOyAvLyBUcmlnZ2VyIFVJIHJlZnJlc2hcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIExpc3RlbiBmb3IgZ3JvdXAtbGV2ZWwgZGlzYWJsZWQgc3RhdGVcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLnJhZGlvU2VydmljZS5kaXNhYmxlZCQuc3Vic2NyaWJlKGRpcyA9PiB7XG4gICAgICAgIHRoaXMuZ3JvdXBEaXNhYmxlZCA9IGRpcztcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7IC8vIFRyaWdnZXIgVUkgcmVmcmVzaFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gTGlzdGVuIGZvciByb3ZpbmcgdGFiaW5kZXggY2hhbmdlcyAod2hpY2ggc2luZ2xlIGl0ZW0gaXMgdGFiLXJlYWNoYWJsZSlcbiAgICB0aGlzLnN1Yi5hZGQoXG4gICAgICB0aGlzLnJhZGlvU2VydmljZS50YWJiYWJsZVZhbHVlJC5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgdGhpcy5pc1RhYmJhYmxlID0gKHZhbCA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpOyAvLyBUcmlnZ2VyIFVJIHJlZnJlc2hcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMucmFkaW9TZXJ2aWNlLnJlZ2lzdGVyKHRoaXMpO1xuICB9XG5cbiAgc2VsZWN0KCkge1xuICAgIHRoaXMucmFkaW9TZXJ2aWNlLnNlbGVjdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmFkaW9TZXJ2aWNlLnVucmVnaXN0ZXIodGhpcyk7XG4gICAgdGhpcy5zdWIudW5zdWJzY3JpYmUoKTsgLy8gQ2xlYW4gdXAgc3Vic2NyaXB0aW9uc1xuICB9XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG59XG4iXX0=
|