@tolle_/tolle-ui 18.2.29 → 18.3.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.
Files changed (294) hide show
  1. package/esm2022/lib/accordion-item.component.mjs +5 -11
  2. package/esm2022/lib/accordion.component.mjs +4 -9
  3. package/esm2022/lib/alert-dialog-dynamic.component.mjs +12 -12
  4. package/esm2022/lib/alert-dialog.component.mjs +82 -64
  5. package/esm2022/lib/alert-dialog.service.mjs +38 -6
  6. package/esm2022/lib/alert.component.mjs +5 -11
  7. package/esm2022/lib/aspect-ratio.component.mjs +119 -0
  8. package/esm2022/lib/attachment.component.mjs +334 -0
  9. package/esm2022/lib/avatar-fallback.component.mjs +3 -3
  10. package/esm2022/lib/avatar.component.mjs +4 -9
  11. package/esm2022/lib/badge.component.mjs +4 -9
  12. package/esm2022/lib/breadcrumb-item.component.mjs +3 -3
  13. package/esm2022/lib/breadcrumb-link.component.mjs +3 -3
  14. package/esm2022/lib/breadcrumb-separator.component.mjs +3 -3
  15. package/esm2022/lib/breadcrumb.component.mjs +3 -3
  16. package/esm2022/lib/bubble.component.mjs +301 -0
  17. package/esm2022/lib/button.component.mjs +5 -11
  18. package/esm2022/lib/calendar.component.mjs +5 -11
  19. package/esm2022/lib/card.component.mjs +14 -43
  20. package/esm2022/lib/carousel/carousel.component.mjs +5 -12
  21. package/esm2022/lib/chain-of-thought.component.mjs +380 -0
  22. package/esm2022/lib/chart-pie.component.mjs +386 -0
  23. package/esm2022/lib/chart.component.mjs +1146 -0
  24. package/esm2022/lib/chart.service.mjs +555 -0
  25. package/esm2022/lib/checkbox.component.mjs +5 -11
  26. package/esm2022/lib/checkpoint.component.mjs +134 -0
  27. package/esm2022/lib/collapsible.component.mjs +4 -11
  28. package/esm2022/lib/combobox.component.mjs +372 -0
  29. package/esm2022/lib/command-dialog.component.mjs +164 -0
  30. package/esm2022/lib/command.component.mjs +514 -0
  31. package/esm2022/lib/command.service.mjs +130 -0
  32. package/esm2022/lib/confirmation.component.mjs +219 -0
  33. package/esm2022/lib/context-menu-trigger.directive.mjs +36 -0
  34. package/esm2022/lib/context-menu.component.mjs +460 -0
  35. package/esm2022/lib/context-menu.service.mjs +125 -0
  36. package/esm2022/lib/context.component.mjs +377 -0
  37. package/esm2022/lib/conversation.component.mjs +442 -0
  38. package/esm2022/lib/country-selector.component.mjs +5 -11
  39. package/esm2022/lib/data-table.component.mjs +59 -12
  40. package/esm2022/lib/date-picker.component.mjs +251 -198
  41. package/esm2022/lib/date-range-picker.component.mjs +224 -116
  42. package/esm2022/lib/date-time-picker.component.mjs +506 -0
  43. package/esm2022/lib/direction.component.mjs +79 -0
  44. package/esm2022/lib/dropdown-item.component.mjs +3 -3
  45. package/esm2022/lib/dropdown-label.component.mjs +3 -3
  46. package/esm2022/lib/dropdown-menu.component.mjs +3 -3
  47. package/esm2022/lib/dropdown-separator.component.mjs +3 -3
  48. package/esm2022/lib/dropdown-trigger.directive.mjs +6 -4
  49. package/esm2022/lib/empty-state.component.mjs +4 -9
  50. package/esm2022/lib/field.component.mjs +394 -0
  51. package/esm2022/lib/hover-card.component.mjs +6 -16
  52. package/esm2022/lib/inline-citation.component.mjs +263 -0
  53. package/esm2022/lib/input-group.component.mjs +418 -0
  54. package/esm2022/lib/input.component.mjs +5 -11
  55. package/esm2022/lib/item.component.mjs +243 -0
  56. package/esm2022/lib/kbd.component.mjs +82 -0
  57. package/esm2022/lib/label.component.mjs +4 -9
  58. package/esm2022/lib/marker.component.mjs +135 -0
  59. package/esm2022/lib/masked-input.component.mjs +5 -11
  60. package/esm2022/lib/menubar.component.mjs +683 -0
  61. package/esm2022/lib/message-scroller.component.mjs +353 -0
  62. package/esm2022/lib/message-scroller.service.mjs +157 -0
  63. package/esm2022/lib/message.component.mjs +228 -0
  64. package/esm2022/lib/modal-ref.mjs +36 -7
  65. package/esm2022/lib/modal.component.mjs +42 -28
  66. package/esm2022/lib/modal.mjs +2 -29
  67. package/esm2022/lib/modal.service.mjs +26 -4
  68. package/esm2022/lib/model-selector.component.mjs +310 -0
  69. package/esm2022/lib/multi-select.component.mjs +155 -72
  70. package/esm2022/lib/native-select.component.mjs +201 -0
  71. package/esm2022/lib/navigation-menu.component.mjs +642 -0
  72. package/esm2022/lib/otp-group.component.mjs +3 -3
  73. package/esm2022/lib/otp-slot.component.mjs +4 -9
  74. package/esm2022/lib/otp.component.mjs +5 -11
  75. package/esm2022/lib/pagination.component.mjs +7 -10
  76. package/esm2022/lib/plan.component.mjs +335 -0
  77. package/esm2022/lib/popover-content.component.mjs +4 -9
  78. package/esm2022/lib/popover.component.mjs +15 -13
  79. package/esm2022/lib/progress.component.mjs +4 -9
  80. package/esm2022/lib/prompt-input.component.mjs +526 -0
  81. package/esm2022/lib/queue.component.mjs +280 -0
  82. package/esm2022/lib/radio-group.component.mjs +6 -13
  83. package/esm2022/lib/radio-item.component.mjs +4 -9
  84. package/esm2022/lib/range-calendar.component.mjs +5 -11
  85. package/esm2022/lib/reasoning.component.mjs +335 -0
  86. package/esm2022/lib/resizable-panel.component.mjs +5 -5
  87. package/esm2022/lib/resizable.component.mjs +219 -0
  88. package/esm2022/lib/segment.component.mjs +19 -9
  89. package/esm2022/lib/select-group.component.mjs +4 -8
  90. package/esm2022/lib/select-item.component.mjs +4 -9
  91. package/esm2022/lib/select-separator.component.mjs +4 -8
  92. package/esm2022/lib/select.component.mjs +133 -49
  93. package/esm2022/lib/separator.component.mjs +4 -9
  94. package/esm2022/lib/sheet.component.mjs +38 -56
  95. package/esm2022/lib/shimmer.component.mjs +84 -0
  96. package/esm2022/lib/sidebar.component.mjs +11 -1
  97. package/esm2022/lib/skeleton.component.mjs +4 -9
  98. package/esm2022/lib/sources.component.mjs +452 -0
  99. package/esm2022/lib/spinner.component.mjs +68 -0
  100. package/esm2022/lib/suggestion.component.mjs +207 -0
  101. package/esm2022/lib/switch.component.mjs +5 -11
  102. package/esm2022/lib/table.component.mjs +213 -0
  103. package/esm2022/lib/tabs.component.mjs +4 -11
  104. package/esm2022/lib/tag-input.component.mjs +5 -11
  105. package/esm2022/lib/task.component.mjs +359 -0
  106. package/esm2022/lib/textarea.component.mjs +5 -11
  107. package/esm2022/lib/theme.service.mjs +17 -6
  108. package/esm2022/lib/time-picker.component.mjs +923 -0
  109. package/esm2022/lib/toast.service.mjs +3 -2
  110. package/esm2022/lib/toaster.component.mjs +76 -39
  111. package/esm2022/lib/toggle-group.component.mjs +4 -9
  112. package/esm2022/lib/toggle.component.mjs +5 -11
  113. package/esm2022/lib/tool.component.mjs +462 -0
  114. package/esm2022/lib/typography.component.mjs +83 -0
  115. package/esm2022/lib/utils/color.mjs +140 -19
  116. package/esm2022/public-api.mjs +61 -1
  117. package/fesm2022/tolle-ui.mjs +16642 -1105
  118. package/fesm2022/tolle-ui.mjs.map +1 -1
  119. package/lib/alert-dialog-dynamic.component.d.ts +5 -0
  120. package/lib/alert-dialog.component.d.ts +23 -2
  121. package/lib/aspect-ratio.component.d.ts +20 -0
  122. package/lib/attachment.component.d.ts +101 -0
  123. package/lib/bubble.component.d.ts +112 -0
  124. package/lib/chain-of-thought.component.d.ts +166 -0
  125. package/lib/chart-pie.component.d.ts +108 -0
  126. package/lib/chart.component.d.ts +369 -0
  127. package/lib/chart.service.d.ts +222 -0
  128. package/lib/checkpoint.component.d.ts +51 -0
  129. package/lib/combobox.component.d.ts +90 -0
  130. package/lib/command-dialog.component.d.ts +53 -0
  131. package/lib/command.component.d.ts +189 -0
  132. package/lib/command.service.d.ts +67 -0
  133. package/lib/confirmation.component.d.ts +70 -0
  134. package/lib/context-menu-trigger.directive.d.ts +12 -0
  135. package/lib/context-menu.component.d.ts +41 -0
  136. package/lib/context-menu.service.d.ts +38 -0
  137. package/lib/context.component.d.ts +134 -0
  138. package/lib/conversation.component.d.ts +165 -0
  139. package/lib/data-table.component.d.ts +26 -1
  140. package/lib/date-picker.component.d.ts +72 -11
  141. package/lib/date-range-picker.component.d.ts +63 -6
  142. package/lib/date-time-picker.component.d.ts +119 -0
  143. package/lib/direction.component.d.ts +45 -0
  144. package/lib/field.component.d.ts +201 -0
  145. package/lib/inline-citation.component.d.ts +103 -0
  146. package/lib/input-group.component.d.ts +150 -0
  147. package/lib/item.component.d.ts +154 -0
  148. package/lib/kbd.component.d.ts +50 -0
  149. package/lib/marker.component.d.ts +58 -0
  150. package/lib/menubar.component.d.ts +247 -0
  151. package/lib/message-scroller.component.d.ts +159 -0
  152. package/lib/message-scroller.service.d.ts +73 -0
  153. package/lib/message.component.d.ts +128 -0
  154. package/lib/modal-ref.d.ts +6 -1
  155. package/lib/modal.component.d.ts +7 -4
  156. package/lib/modal.d.ts +9 -3
  157. package/lib/model-selector.component.d.ts +103 -0
  158. package/lib/multi-select.component.d.ts +66 -14
  159. package/lib/native-select.component.d.ts +57 -0
  160. package/lib/navigation-menu.component.d.ts +230 -0
  161. package/lib/plan.component.d.ts +120 -0
  162. package/lib/popover.component.d.ts +1 -0
  163. package/lib/prompt-input.component.d.ts +194 -0
  164. package/lib/queue.component.d.ts +106 -0
  165. package/lib/reasoning.component.d.ts +127 -0
  166. package/lib/resizable.component.d.ts +43 -0
  167. package/lib/segment.component.d.ts +13 -3
  168. package/lib/select.component.d.ts +37 -5
  169. package/lib/sheet.component.d.ts +3 -0
  170. package/lib/shimmer.component.d.ts +38 -0
  171. package/lib/sidebar.component.d.ts +2 -0
  172. package/lib/sources.component.d.ts +156 -0
  173. package/lib/spinner.component.d.ts +29 -0
  174. package/lib/suggestion.component.d.ts +96 -0
  175. package/lib/table.component.d.ts +106 -0
  176. package/lib/task.component.d.ts +151 -0
  177. package/lib/theme.service.d.ts +9 -0
  178. package/lib/time-picker.component.d.ts +243 -0
  179. package/lib/toast.service.d.ts +3 -1
  180. package/lib/toaster.component.d.ts +26 -9
  181. package/lib/tool.component.d.ts +158 -0
  182. package/lib/typography.component.d.ts +32 -0
  183. package/lib/utils/color.d.ts +19 -5
  184. package/package.json +3 -2
  185. package/preset.js +7 -1
  186. package/public-api.d.ts +50 -0
  187. package/registry/docs-content.json +8480 -1542
  188. package/registry/llms-full.txt +2679 -319
  189. package/registry/llms.txt +43 -4
  190. package/registry/manifest.json +9090 -1742
  191. package/registry/r/accordion-item.json +1 -1
  192. package/registry/r/accordion.json +1 -1
  193. package/registry/r/alert-dialog-dynamic.json +1 -1
  194. package/registry/r/alert-dialog.json +1 -1
  195. package/registry/r/alert.json +1 -1
  196. package/registry/r/attachment.json +23 -0
  197. package/registry/r/avatar-fallback.json +1 -1
  198. package/registry/r/avatar.json +1 -1
  199. package/registry/r/badge.json +1 -1
  200. package/registry/r/breadcrumb-item.json +1 -1
  201. package/registry/r/breadcrumb-link.json +1 -1
  202. package/registry/r/breadcrumb-separator.json +1 -1
  203. package/registry/r/breadcrumb.json +1 -1
  204. package/registry/r/bubble.json +23 -0
  205. package/registry/r/button.json +1 -1
  206. package/registry/r/calendar.json +1 -1
  207. package/registry/r/card.json +1 -1
  208. package/registry/r/carousel.json +1 -1
  209. package/registry/r/chain-of-thought.json +23 -0
  210. package/registry/r/chart-pie.json +30 -0
  211. package/registry/r/chart.json +28 -0
  212. package/registry/r/checkbox.json +1 -1
  213. package/registry/r/checkpoint.json +23 -0
  214. package/registry/r/collapsible.json +1 -1
  215. package/registry/r/combobox.json +31 -0
  216. package/registry/r/command-dialog.json +21 -0
  217. package/registry/r/command.json +26 -0
  218. package/registry/r/confirmation.json +23 -0
  219. package/registry/r/context-menu-trigger.json +1 -1
  220. package/registry/r/context-menu.json +1 -1
  221. package/registry/r/context.json +26 -0
  222. package/registry/r/conversation.json +23 -0
  223. package/registry/r/country-selector.json +1 -1
  224. package/registry/r/data-table.json +1 -1
  225. package/registry/r/date-picker.json +4 -4
  226. package/registry/r/date-range-picker.json +3 -3
  227. package/registry/r/date-time-picker.json +28 -0
  228. package/registry/r/direction.json +16 -0
  229. package/registry/r/dropdown-item.json +1 -1
  230. package/registry/r/dropdown-label.json +1 -1
  231. package/registry/r/dropdown-menu.json +1 -1
  232. package/registry/r/dropdown-separator.json +1 -1
  233. package/registry/r/dropdown-trigger.json +1 -1
  234. package/registry/r/empty-state.json +1 -1
  235. package/registry/r/field.json +23 -0
  236. package/registry/r/hover-card.json +1 -1
  237. package/registry/r/inline-citation.json +26 -0
  238. package/registry/r/input-group.json +23 -0
  239. package/registry/r/input.json +1 -1
  240. package/registry/r/item.json +23 -0
  241. package/registry/r/kbd.json +23 -0
  242. package/registry/r/label.json +1 -1
  243. package/registry/r/marker.json +23 -0
  244. package/registry/r/masked-input.json +1 -1
  245. package/registry/r/menubar.json +24 -0
  246. package/registry/r/message-scroller.json +26 -0
  247. package/registry/r/message.json +23 -0
  248. package/registry/r/modal.json +3 -3
  249. package/registry/r/model-selector.json +32 -0
  250. package/registry/r/multi-select.json +2 -2
  251. package/registry/r/native-select.json +23 -0
  252. package/registry/r/navigation-menu.json +24 -0
  253. package/registry/r/otp-group.json +1 -1
  254. package/registry/r/otp-slot.json +1 -1
  255. package/registry/r/otp.json +1 -1
  256. package/registry/r/pagination.json +3 -2
  257. package/registry/r/plan.json +23 -0
  258. package/registry/r/popover-content.json +1 -1
  259. package/registry/r/popover.json +1 -1
  260. package/registry/r/progress.json +1 -1
  261. package/registry/r/prompt-input.json +23 -0
  262. package/registry/r/queue.json +23 -0
  263. package/registry/r/radio-group.json +1 -1
  264. package/registry/r/radio-item.json +1 -1
  265. package/registry/r/range-calendar.json +1 -1
  266. package/registry/r/reasoning.json +23 -0
  267. package/registry/r/resizable-panel.json +1 -1
  268. package/registry/r/segment.json +1 -1
  269. package/registry/r/select-group.json +1 -1
  270. package/registry/r/select-item.json +1 -1
  271. package/registry/r/select-separator.json +1 -1
  272. package/registry/r/select.json +4 -3
  273. package/registry/r/separator.json +1 -1
  274. package/registry/r/sheet.json +1 -1
  275. package/registry/r/shimmer.json +23 -0
  276. package/registry/r/sidebar.json +1 -1
  277. package/registry/r/skeleton.json +1 -1
  278. package/registry/r/sources.json +23 -0
  279. package/registry/r/spinner.json +23 -0
  280. package/registry/r/suggestion.json +23 -0
  281. package/registry/r/switch.json +1 -1
  282. package/registry/r/table.json +21 -0
  283. package/registry/r/tabs.json +1 -1
  284. package/registry/r/tag-input.json +1 -1
  285. package/registry/r/task.json +23 -0
  286. package/registry/r/textarea.json +1 -1
  287. package/registry/r/time-picker.json +24 -0
  288. package/registry/r/toaster.json +2 -2
  289. package/registry/r/toggle-group.json +1 -1
  290. package/registry/r/toggle.json +1 -1
  291. package/registry/r/tool.json +23 -0
  292. package/registry/r/typography.json +23 -0
  293. package/registry/registry.json +915 -22
  294. package/theme.css +121 -8
@@ -0,0 +1,301 @@
1
+ import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, inject } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from './utils/cn';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ const bubbleVariants = cva('group/bubble relative w-fit max-w-full whitespace-pre-wrap break-words rounded-lg px-3 py-2 text-sm leading-relaxed transition-colors', {
8
+ variants: {
9
+ variant: {
10
+ default: 'border border-border bg-card text-card-foreground',
11
+ primary: 'border border-transparent bg-primary text-primary-foreground',
12
+ muted: 'border border-transparent bg-muted text-foreground',
13
+ outline: 'border border-border bg-transparent text-foreground',
14
+ },
15
+ align: {
16
+ // The corner nearest the sender is squared off to read as a tail.
17
+ start: 'rounded-bl-sm',
18
+ end: 'rounded-br-sm',
19
+ },
20
+ size: {
21
+ sm: 'px-2.5 py-1.5 text-xs',
22
+ default: 'px-3 py-2 text-sm',
23
+ lg: 'px-4 py-3 text-base',
24
+ },
25
+ },
26
+ defaultVariants: { variant: 'default', align: 'start', size: 'default' },
27
+ });
28
+ /**
29
+ * The visible surface of a chat message — the rounded panel the text sits in.
30
+ * Place it inside `tolle-message-content` and match its `align` to the message.
31
+ * @new
32
+ */
33
+ export class BubbleComponent {
34
+ cdr = inject(ChangeDetectorRef);
35
+ /**
36
+ * Angular writes a bound `class` input through its styling path, which does
37
+ * not mark an OnPush component dirty — without this hook the component keeps
38
+ * rendering the class it was born with.
39
+ */
40
+ ngOnChanges() {
41
+ this.cdr.markForCheck();
42
+ }
43
+ /** Visual style of the surface. @default 'default' */
44
+ variant = 'default';
45
+ /** Which edge the bubble hangs off; squares the matching bottom corner. @default 'start' */
46
+ align = 'start';
47
+ /** Padding and text scale of the surface. @default 'default' */
48
+ size = 'default';
49
+ /** Shows a show-more / show-less toggle for long content. @default false */
50
+ collapsible = false;
51
+ /** Whether the content is currently clamped. Only has an effect with `collapsible`. @default true */
52
+ collapsed = true;
53
+ /** Max height of the clamped content, as a CSS length. @default '6rem' */
54
+ collapsedHeight = '6rem';
55
+ /** Label of the toggle while the content is clamped. @default 'Show more' */
56
+ expandLabel = 'Show more';
57
+ /** Label of the toggle while the content is expanded. @default 'Show less' */
58
+ collapseLabel = 'Show less';
59
+ /** Makes the whole surface a keyboard-focusable trigger that emits `bubbleClick`. @default false */
60
+ interactive = false;
61
+ /** Extra Tailwind classes merged onto the surface via `cn()` (last-wins). */
62
+ class = '';
63
+ /** Emitted with the new collapsed state when the show-more toggle is pressed. */
64
+ collapsedChange = new EventEmitter();
65
+ /** Emitted when an interactive bubble is activated by click, Enter, or Space. */
66
+ bubbleClick = new EventEmitter();
67
+ get computedClass() {
68
+ return cn(bubbleVariants({ variant: this.variant, align: this.align, size: this.size }), this.interactive &&
69
+ 'cursor-pointer outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2', this.class);
70
+ }
71
+ /** Classes for the content wrapper — clamped only while collapsible and collapsed. */
72
+ get contentClass() {
73
+ return cn(this.isClamped && 'overflow-hidden');
74
+ }
75
+ /** Inline max-height applied while the content is clamped. */
76
+ get contentStyle() {
77
+ return this.isClamped ? this.collapsedHeight : null;
78
+ }
79
+ /** Whether the projected content is currently clamped. */
80
+ get isClamped() {
81
+ return this.collapsible && this.collapsed;
82
+ }
83
+ toggle(event) {
84
+ // The toggle lives inside the trigger surface; don't fire both.
85
+ event.stopPropagation();
86
+ this.collapsed = !this.collapsed;
87
+ this.collapsedChange.emit(this.collapsed);
88
+ }
89
+ onTrigger(event) {
90
+ if (!this.interactive)
91
+ return;
92
+ if (event.type === 'keydown')
93
+ event.preventDefault();
94
+ this.bubbleClick.emit(event);
95
+ }
96
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BubbleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
97
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BubbleComponent, isStandalone: true, selector: "tolle-bubble", inputs: { variant: "variant", align: "align", size: "size", collapsible: "collapsible", collapsed: "collapsed", collapsedHeight: "collapsedHeight", expandLabel: "expandLabel", collapseLabel: "collapseLabel", interactive: "interactive", class: "class" }, outputs: { collapsedChange: "collapsedChange", bubbleClick: "bubbleClick" }, usesOnChanges: true, ngImport: i0, template: `
98
+ <div
99
+ [class]="computedClass"
100
+ [attr.role]="interactive ? 'button' : null"
101
+ [attr.tabindex]="interactive ? 0 : null"
102
+ (click)="onTrigger($event)"
103
+ (keydown.enter)="onTrigger($event)"
104
+ (keydown.space)="onTrigger($event)">
105
+ <!-- Single content slot: collapsing only swaps the wrapper's classes so the
106
+ projected nodes are never re-created (and never render empty). -->
107
+ <div [class]="contentClass" [style.max-height]="contentStyle">
108
+ <ng-content></ng-content>
109
+ </div>
110
+
111
+ <button
112
+ *ngIf="collapsible"
113
+ type="button"
114
+ [attr.aria-expanded]="!collapsed"
115
+ (click)="toggle($event)"
116
+ class="mt-1 inline-flex items-center gap-1 rounded-sm text-xs font-medium underline underline-offset-2 opacity-80 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">
117
+ {{ collapsed ? expandLabel : collapseLabel }}
118
+ <i [class]="collapsed ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'" aria-hidden="true"></i>
119
+ </button>
120
+
121
+ <ng-content select="[bubbleFooter]"></ng-content>
122
+ </div>
123
+ `, 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 });
124
+ }
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BubbleComponent, decorators: [{
126
+ type: Component,
127
+ args: [{ selector: 'tolle-bubble', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
128
+ <div
129
+ [class]="computedClass"
130
+ [attr.role]="interactive ? 'button' : null"
131
+ [attr.tabindex]="interactive ? 0 : null"
132
+ (click)="onTrigger($event)"
133
+ (keydown.enter)="onTrigger($event)"
134
+ (keydown.space)="onTrigger($event)">
135
+ <!-- Single content slot: collapsing only swaps the wrapper's classes so the
136
+ projected nodes are never re-created (and never render empty). -->
137
+ <div [class]="contentClass" [style.max-height]="contentStyle">
138
+ <ng-content></ng-content>
139
+ </div>
140
+
141
+ <button
142
+ *ngIf="collapsible"
143
+ type="button"
144
+ [attr.aria-expanded]="!collapsed"
145
+ (click)="toggle($event)"
146
+ class="mt-1 inline-flex items-center gap-1 rounded-sm text-xs font-medium underline underline-offset-2 opacity-80 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring">
147
+ {{ collapsed ? expandLabel : collapseLabel }}
148
+ <i [class]="collapsed ? 'ri-arrow-down-s-line' : 'ri-arrow-up-s-line'" aria-hidden="true"></i>
149
+ </button>
150
+
151
+ <ng-content select="[bubbleFooter]"></ng-content>
152
+ </div>
153
+ `, styles: [":host{display:block}\n"] }]
154
+ }], propDecorators: { variant: [{
155
+ type: Input
156
+ }], align: [{
157
+ type: Input
158
+ }], size: [{
159
+ type: Input
160
+ }], collapsible: [{
161
+ type: Input
162
+ }], collapsed: [{
163
+ type: Input
164
+ }], collapsedHeight: [{
165
+ type: Input
166
+ }], expandLabel: [{
167
+ type: Input
168
+ }], collapseLabel: [{
169
+ type: Input
170
+ }], interactive: [{
171
+ type: Input
172
+ }], class: [{
173
+ type: Input
174
+ }], collapsedChange: [{
175
+ type: Output
176
+ }], bubbleClick: [{
177
+ type: Output
178
+ }] } });
179
+ /**
180
+ * Hover-revealed row of actions for a bubble — copy, retry, react. Clicks are
181
+ * kept inside the row so an interactive bubble does not also fire.
182
+ */
183
+ export class BubbleActionsComponent {
184
+ cdr = inject(ChangeDetectorRef);
185
+ /**
186
+ * Angular writes a bound `class` input through its styling path, which does
187
+ * not mark an OnPush component dirty — without this hook the component keeps
188
+ * rendering the class it was born with.
189
+ */
190
+ ngOnChanges() {
191
+ this.cdr.markForCheck();
192
+ }
193
+ /** Keeps the row permanently visible instead of revealing it on hover or focus. @default false */
194
+ alwaysVisible = false;
195
+ /** Extra Tailwind classes merged onto the row via `cn()` (last-wins). */
196
+ class = '';
197
+ get computedClass() {
198
+ return cn('mt-1 flex items-center gap-1 transition-opacity', this.alwaysVisible
199
+ ? 'opacity-100'
200
+ : 'opacity-0 focus-within:opacity-100 group-hover/bubble:opacity-100', this.class);
201
+ }
202
+ onClick(event) {
203
+ // Actions stay independently clickable even when the bubble is a trigger.
204
+ event.stopPropagation();
205
+ }
206
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BubbleActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
207
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BubbleActionsComponent, isStandalone: true, selector: "tolle-bubble-actions", inputs: { alwaysVisible: "alwaysVisible", class: "class" }, usesOnChanges: true, ngImport: i0, template: `
208
+ <div [class]="computedClass" (click)="onClick($event)">
209
+ <ng-content></ng-content>
210
+ </div>
211
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
212
+ }
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BubbleActionsComponent, decorators: [{
214
+ type: Component,
215
+ args: [{ selector: 'tolle-bubble-actions', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
216
+ <div [class]="computedClass" (click)="onClick($event)">
217
+ <ng-content></ng-content>
218
+ </div>
219
+ `, styles: [":host{display:block}\n"] }]
220
+ }], propDecorators: { alwaysVisible: [{
221
+ type: Input
222
+ }], class: [{
223
+ type: Input
224
+ }] } });
225
+ /** Row of emoji reaction chips attached to a bubble. */
226
+ export class BubbleReactionsComponent {
227
+ cdr = inject(ChangeDetectorRef);
228
+ /**
229
+ * Angular writes a bound `class` input through its styling path, which does
230
+ * not mark an OnPush component dirty — without this hook the component keeps
231
+ * rendering the class it was born with.
232
+ */
233
+ ngOnChanges() {
234
+ this.cdr.markForCheck();
235
+ }
236
+ /** Reaction chips to render, in display order. @default [] */
237
+ reactions = [];
238
+ /** Extra Tailwind classes merged onto the row via `cn()` (last-wins). */
239
+ class = '';
240
+ /** Emitted with the reaction whose chip was clicked. */
241
+ react = new EventEmitter();
242
+ get computedClass() {
243
+ return cn('mt-1 flex flex-wrap items-center gap-1', this.class);
244
+ }
245
+ chipClass(reaction) {
246
+ return cn('inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs leading-none transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring', reaction.reacted
247
+ ? 'border-primary bg-primary/10 text-primary'
248
+ : 'border-border bg-muted text-muted-foreground hover:bg-accent');
249
+ }
250
+ trackByEmoji(_index, reaction) {
251
+ return reaction.emoji;
252
+ }
253
+ onReact(reaction, event) {
254
+ event.stopPropagation();
255
+ this.react.emit(reaction);
256
+ }
257
+ stop(event) {
258
+ event.stopPropagation();
259
+ }
260
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BubbleReactionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
261
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BubbleReactionsComponent, isStandalone: true, selector: "tolle-bubble-reactions", inputs: { reactions: "reactions", class: "class" }, outputs: { react: "react" }, usesOnChanges: true, ngImport: i0, template: `
262
+ <div [class]="computedClass" (click)="stop($event)">
263
+ <button
264
+ *ngFor="let reaction of reactions; trackBy: trackByEmoji"
265
+ type="button"
266
+ [attr.aria-pressed]="!!reaction.reacted"
267
+ [class]="chipClass(reaction)"
268
+ (click)="onReact(reaction, $event)">
269
+ <span aria-hidden="true">{{ reaction.emoji }}</span>
270
+ <span *ngIf="reaction.count" class="tabular-nums">{{ reaction.count }}</span>
271
+ </button>
272
+
273
+ <ng-content></ng-content>
274
+ </div>
275
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
276
+ }
277
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BubbleReactionsComponent, decorators: [{
278
+ type: Component,
279
+ args: [{ selector: 'tolle-bubble-reactions', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
280
+ <div [class]="computedClass" (click)="stop($event)">
281
+ <button
282
+ *ngFor="let reaction of reactions; trackBy: trackByEmoji"
283
+ type="button"
284
+ [attr.aria-pressed]="!!reaction.reacted"
285
+ [class]="chipClass(reaction)"
286
+ (click)="onReact(reaction, $event)">
287
+ <span aria-hidden="true">{{ reaction.emoji }}</span>
288
+ <span *ngIf="reaction.count" class="tabular-nums">{{ reaction.count }}</span>
289
+ </button>
290
+
291
+ <ng-content></ng-content>
292
+ </div>
293
+ `, styles: [":host{display:block}\n"] }]
294
+ }], propDecorators: { reactions: [{
295
+ type: Input
296
+ }], class: [{
297
+ type: Input
298
+ }], react: [{
299
+ type: Output
300
+ }] } });
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYnViYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFFaEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUN4Qix1SUFBdUksRUFDdkk7SUFDRSxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsbURBQW1EO1lBQzVELE9BQU8sRUFBRSw4REFBOEQ7WUFDdkUsS0FBSyxFQUFFLG9EQUFvRDtZQUMzRCxPQUFPLEVBQUUscURBQXFEO1NBQy9EO1FBQ0QsS0FBSyxFQUFFO1lBQ0wsa0VBQWtFO1lBQ2xFLEtBQUssRUFBRSxlQUFlO1lBQ3RCLEdBQUcsRUFBRSxlQUFlO1NBQ3JCO1FBQ0QsSUFBSSxFQUFFO1lBQ0osRUFBRSxFQUFFLHVCQUF1QjtZQUMzQixPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLEVBQUUsRUFBRSxxQkFBcUI7U0FDMUI7S0FDRjtJQUNELGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0NBQ3pFLENBQ0YsQ0FBQztBQWNGOzs7O0dBSUc7QUFtQ0gsTUFBTSxPQUFPLGVBQWU7SUFDVCxHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFakQ7Ozs7T0FJRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxzREFBc0Q7SUFDN0MsT0FBTyxHQUEyQixTQUFTLENBQUM7SUFDckQsNEZBQTRGO0lBQ25GLEtBQUssR0FBeUIsT0FBTyxDQUFDO0lBQy9DLGdFQUFnRTtJQUN2RCxJQUFJLEdBQXdCLFNBQVMsQ0FBQztJQUMvQyw0RUFBNEU7SUFDbkUsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3QixxR0FBcUc7SUFDNUYsU0FBUyxHQUFHLElBQUksQ0FBQztJQUMxQiwwRUFBMEU7SUFDakUsZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNsQyw2RUFBNkU7SUFDcEUsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUNuQyw4RUFBOEU7SUFDckUsYUFBYSxHQUFHLFdBQVcsQ0FBQztJQUNyQyxvR0FBb0c7SUFDM0YsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM3Qiw2RUFBNkU7SUFDcEUsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUVwQixpRkFBaUY7SUFDdkUsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFDeEQsaUZBQWlGO0lBQ3ZFLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0lBRWxELElBQUksYUFBYTtRQUNmLE9BQU8sRUFBRSxDQUNQLGNBQWMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFDN0UsSUFBSSxDQUFDLFdBQVc7WUFDZCxzR0FBc0csRUFDeEcsSUFBSSxDQUFDLEtBQUssQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVELHNGQUFzRjtJQUN0RixJQUFJLFlBQVk7UUFDZCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLGlCQUFpQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RCxDQUFDO0lBRUQsMERBQTBEO0lBQzFELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzVDLENBQUM7SUFFUyxNQUFNLENBQUMsS0FBWTtRQUMzQixnRUFBZ0U7UUFDaEUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQVk7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztZQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO3dHQXpFVSxlQUFlOzRGQUFmLGVBQWUsd2FBNUJoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQlQsK0ZBNUJTLFlBQVk7OzRGQThCWCxlQUFlO2tCQWxDM0IsU0FBUzsrQkFDRSxjQUFjLGNBRVosSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJUOzhCQWVRLE9BQU87c0JBQWYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFHSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07O0FBd0NUOzs7R0FHRztBQWFILE1BQU0sT0FBTyxzQkFBc0I7SUFDaEIsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWpEOzs7O09BSUc7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0dBQWtHO0lBQ3pGLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IseUVBQXlFO0lBQ2hFLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFcEIsSUFBSSxhQUFhO1FBQ2YsT0FBTyxFQUFFLENBQ1AsaURBQWlELEVBQ2pELElBQUksQ0FBQyxhQUFhO1lBQ2hCLENBQUMsQ0FBQyxhQUFhO1lBQ2YsQ0FBQyxDQUFDLG1FQUFtRSxFQUN2RSxJQUFJLENBQUMsS0FBSyxDQUNYLENBQUM7SUFDSixDQUFDO0lBRVMsT0FBTyxDQUFDLEtBQVk7UUFDNUIsMEVBQTBFO1FBQzFFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO3dHQTlCVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixpS0FOdkI7Ozs7R0FJVCwrRkFOUyxZQUFZOzs0RkFRWCxzQkFBc0I7a0JBWmxDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBRXBCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxtQkFDTix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDOzs7O0dBSVQ7OEJBZVEsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7O0FBa0JSLHdEQUF3RDtBQXVCeEQsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixHQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFakQ7Ozs7T0FJRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCw4REFBOEQ7SUFDckQsU0FBUyxHQUFxQixFQUFFLENBQUM7SUFDMUMseUVBQXlFO0lBQ2hFLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFcEIsd0RBQXdEO0lBQzlDLEtBQUssR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztJQUVyRCxJQUFJLGFBQWE7UUFDZixPQUFPLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVTLFNBQVMsQ0FBQyxRQUF3QjtRQUMxQyxPQUFPLEVBQUUsQ0FDUCwrS0FBK0ssRUFDL0ssUUFBUSxDQUFDLE9BQU87WUFDZCxDQUFDLENBQUMsMkNBQTJDO1lBQzdDLENBQUMsQ0FBQyw4REFBOEQsQ0FDbkUsQ0FBQztJQUNKLENBQUM7SUFFUyxZQUFZLENBQUMsTUFBYyxFQUFFLFFBQXdCO1FBQzdELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRVMsT0FBTyxDQUFDLFFBQXdCLEVBQUUsS0FBWTtRQUN0RCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVTLElBQUksQ0FBQyxLQUFZO1FBQ3pCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMxQixDQUFDO3dHQTVDVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qix3TEFoQnpCOzs7Ozs7Ozs7Ozs7OztHQWNULCtGQWhCUyxZQUFZOzs0RkFrQlgsd0JBQXdCO2tCQXRCcEMsU0FBUzsrQkFDRSx3QkFBd0IsY0FFdEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0sWUFDckM7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7OEJBZVEsU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25DaGFuZ2VzLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBjdmEsIHR5cGUgVmFyaWFudFByb3BzIH0gZnJvbSAnY2xhc3MtdmFyaWFuY2UtYXV0aG9yaXR5JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5cbmNvbnN0IGJ1YmJsZVZhcmlhbnRzID0gY3ZhKFxuICAnZ3JvdXAvYnViYmxlIHJlbGF0aXZlIHctZml0IG1heC13LWZ1bGwgd2hpdGVzcGFjZS1wcmUtd3JhcCBicmVhay13b3JkcyByb3VuZGVkLWxnIHB4LTMgcHktMiB0ZXh0LXNtIGxlYWRpbmctcmVsYXhlZCB0cmFuc2l0aW9uLWNvbG9ycycsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiAnYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctY2FyZCB0ZXh0LWNhcmQtZm9yZWdyb3VuZCcsXG4gICAgICAgIHByaW1hcnk6ICdib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQnLFxuICAgICAgICBtdXRlZDogJ2JvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgYmctbXV0ZWQgdGV4dC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgb3V0bGluZTogJ2JvcmRlciBib3JkZXItYm9yZGVyIGJnLXRyYW5zcGFyZW50IHRleHQtZm9yZWdyb3VuZCcsXG4gICAgICB9LFxuICAgICAgYWxpZ246IHtcbiAgICAgICAgLy8gVGhlIGNvcm5lciBuZWFyZXN0IHRoZSBzZW5kZXIgaXMgc3F1YXJlZCBvZmYgdG8gcmVhZCBhcyBhIHRhaWwuXG4gICAgICAgIHN0YXJ0OiAncm91bmRlZC1ibC1zbScsXG4gICAgICAgIGVuZDogJ3JvdW5kZWQtYnItc20nLFxuICAgICAgfSxcbiAgICAgIHNpemU6IHtcbiAgICAgICAgc206ICdweC0yLjUgcHktMS41IHRleHQteHMnLFxuICAgICAgICBkZWZhdWx0OiAncHgtMyBweS0yIHRleHQtc20nLFxuICAgICAgICBsZzogJ3B4LTQgcHktMyB0ZXh0LWJhc2UnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmF1bHRWYXJpYW50czogeyB2YXJpYW50OiAnZGVmYXVsdCcsIGFsaWduOiAnc3RhcnQnLCBzaXplOiAnZGVmYXVsdCcgfSxcbiAgfVxuKTtcblxuZXhwb3J0IHR5cGUgQnViYmxlUHJvcHMgPSBWYXJpYW50UHJvcHM8dHlwZW9mIGJ1YmJsZVZhcmlhbnRzPjtcblxuLyoqIEEgc2luZ2xlIGVtb2ppIHJlYWN0aW9uIGNoaXAgYW5kIGl0cyB0YWxseS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnViYmxlUmVhY3Rpb24ge1xuICAvKiogVGhlIGVtb2ppIGNoYXJhY3RlciB0byBkaXNwbGF5LCBlLmcuIGEgdGh1bWJzLXVwLiAqL1xuICBlbW9qaTogc3RyaW5nO1xuICAvKiogSG93IG1hbnkgcGVvcGxlIHJlYWN0ZWQgd2l0aCBpdC4gKi9cbiAgY291bnQ/OiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHVzZXIgaXMgb25lIG9mIHRoZW0uICovXG4gIHJlYWN0ZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSB2aXNpYmxlIHN1cmZhY2Ugb2YgYSBjaGF0IG1lc3NhZ2Ug4oCUIHRoZSByb3VuZGVkIHBhbmVsIHRoZSB0ZXh0IHNpdHMgaW4uXG4gKiBQbGFjZSBpdCBpbnNpZGUgYHRvbGxlLW1lc3NhZ2UtY29udGVudGAgYW5kIG1hdGNoIGl0cyBgYWxpZ25gIHRvIHRoZSBtZXNzYWdlLlxuICogQG5ld1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1idWJibGUnLFxuICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3NcIlxuICAgICAgW2F0dHIucm9sZV09XCJpbnRlcmFjdGl2ZSA/ICdidXR0b24nIDogbnVsbFwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJpbnRlcmFjdGl2ZSA/IDAgOiBudWxsXCJcbiAgICAgIChjbGljayk9XCJvblRyaWdnZXIoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5lbnRlcik9XCJvblRyaWdnZXIoJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bi5zcGFjZSk9XCJvblRyaWdnZXIoJGV2ZW50KVwiPlxuICAgICAgPCEtLSBTaW5nbGUgY29udGVudCBzbG90OiBjb2xsYXBzaW5nIG9ubHkgc3dhcHMgdGhlIHdyYXBwZXIncyBjbGFzc2VzIHNvIHRoZVxuICAgICAgICAgICBwcm9qZWN0ZWQgbm9kZXMgYXJlIG5ldmVyIHJlLWNyZWF0ZWQgKGFuZCBuZXZlciByZW5kZXIgZW1wdHkpLiAtLT5cbiAgICAgIDxkaXYgW2NsYXNzXT1cImNvbnRlbnRDbGFzc1wiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cImNvbnRlbnRTdHlsZVwiPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImNvbGxhcHNpYmxlXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWNvbGxhcHNlZFwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGUoJGV2ZW50KVwiXG4gICAgICAgIGNsYXNzPVwibXQtMSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgcm91bmRlZC1zbSB0ZXh0LXhzIGZvbnQtbWVkaXVtIHVuZGVybGluZSB1bmRlcmxpbmUtb2Zmc2V0LTIgb3BhY2l0eS04MCB0cmFuc2l0aW9uLW9wYWNpdHkgaG92ZXI6b3BhY2l0eS0xMDAgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmdcIj5cbiAgICAgICAge3sgY29sbGFwc2VkID8gZXhwYW5kTGFiZWwgOiBjb2xsYXBzZUxhYmVsIH19XG4gICAgICAgIDxpIFtjbGFzc109XCJjb2xsYXBzZWQgPyAncmktYXJyb3ctZG93bi1zLWxpbmUnIDogJ3JpLWFycm93LXVwLXMtbGluZSdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2J1YmJsZUZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEJ1YmJsZUNvbXBvbmVudCAgaW1wbGVtZW50cyBPbkNoYW5nZXN7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAvKipcbiAgICogQW5ndWxhciB3cml0ZXMgYSBib3VuZCBgY2xhc3NgIGlucHV0IHRocm91Z2ggaXRzIHN0eWxpbmcgcGF0aCwgd2hpY2ggZG9lc1xuICAgKiBub3QgbWFyayBhbiBPblB1c2ggY29tcG9uZW50IGRpcnR5IOKAlCB3aXRob3V0IHRoaXMgaG9vayB0aGUgY29tcG9uZW50IGtlZXBzXG4gICAqIHJlbmRlcmluZyB0aGUgY2xhc3MgaXQgd2FzIGJvcm4gd2l0aC5cbiAgICovXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIFZpc3VhbCBzdHlsZSBvZiB0aGUgc3VyZmFjZS4gQGRlZmF1bHQgJ2RlZmF1bHQnICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEJ1YmJsZVByb3BzWyd2YXJpYW50J10gPSAnZGVmYXVsdCc7XG4gIC8qKiBXaGljaCBlZGdlIHRoZSBidWJibGUgaGFuZ3Mgb2ZmOyBzcXVhcmVzIHRoZSBtYXRjaGluZyBib3R0b20gY29ybmVyLiBAZGVmYXVsdCAnc3RhcnQnICovXG4gIEBJbnB1dCgpIGFsaWduOiBCdWJibGVQcm9wc1snYWxpZ24nXSA9ICdzdGFydCc7XG4gIC8qKiBQYWRkaW5nIGFuZCB0ZXh0IHNjYWxlIG9mIHRoZSBzdXJmYWNlLiBAZGVmYXVsdCAnZGVmYXVsdCcgKi9cbiAgQElucHV0KCkgc2l6ZTogQnViYmxlUHJvcHNbJ3NpemUnXSA9ICdkZWZhdWx0JztcbiAgLyoqIFNob3dzIGEgc2hvdy1tb3JlIC8gc2hvdy1sZXNzIHRvZ2dsZSBmb3IgbG9uZyBjb250ZW50LiBAZGVmYXVsdCBmYWxzZSAqL1xuICBASW5wdXQoKSBjb2xsYXBzaWJsZSA9IGZhbHNlO1xuICAvKiogV2hldGhlciB0aGUgY29udGVudCBpcyBjdXJyZW50bHkgY2xhbXBlZC4gT25seSBoYXMgYW4gZWZmZWN0IHdpdGggYGNvbGxhcHNpYmxlYC4gQGRlZmF1bHQgdHJ1ZSAqL1xuICBASW5wdXQoKSBjb2xsYXBzZWQgPSB0cnVlO1xuICAvKiogTWF4IGhlaWdodCBvZiB0aGUgY2xhbXBlZCBjb250ZW50LCBhcyBhIENTUyBsZW5ndGguIEBkZWZhdWx0ICc2cmVtJyAqL1xuICBASW5wdXQoKSBjb2xsYXBzZWRIZWlnaHQgPSAnNnJlbSc7XG4gIC8qKiBMYWJlbCBvZiB0aGUgdG9nZ2xlIHdoaWxlIHRoZSBjb250ZW50IGlzIGNsYW1wZWQuIEBkZWZhdWx0ICdTaG93IG1vcmUnICovXG4gIEBJbnB1dCgpIGV4cGFuZExhYmVsID0gJ1Nob3cgbW9yZSc7XG4gIC8qKiBMYWJlbCBvZiB0aGUgdG9nZ2xlIHdoaWxlIHRoZSBjb250ZW50IGlzIGV4cGFuZGVkLiBAZGVmYXVsdCAnU2hvdyBsZXNzJyAqL1xuICBASW5wdXQoKSBjb2xsYXBzZUxhYmVsID0gJ1Nob3cgbGVzcyc7XG4gIC8qKiBNYWtlcyB0aGUgd2hvbGUgc3VyZmFjZSBhIGtleWJvYXJkLWZvY3VzYWJsZSB0cmlnZ2VyIHRoYXQgZW1pdHMgYGJ1YmJsZUNsaWNrYC4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgQElucHV0KCkgaW50ZXJhY3RpdmUgPSBmYWxzZTtcbiAgLyoqIEV4dHJhIFRhaWx3aW5kIGNsYXNzZXMgbWVyZ2VkIG9udG8gdGhlIHN1cmZhY2UgdmlhIGBjbigpYCAobGFzdC13aW5zKS4gKi9cbiAgQElucHV0KCkgY2xhc3MgPSAnJztcblxuICAvKiogRW1pdHRlZCB3aXRoIHRoZSBuZXcgY29sbGFwc2VkIHN0YXRlIHdoZW4gdGhlIHNob3ctbW9yZSB0b2dnbGUgaXMgcHJlc3NlZC4gKi9cbiAgQE91dHB1dCgpIGNvbGxhcHNlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgLyoqIEVtaXR0ZWQgd2hlbiBhbiBpbnRlcmFjdGl2ZSBidWJibGUgaXMgYWN0aXZhdGVkIGJ5IGNsaWNrLCBFbnRlciwgb3IgU3BhY2UuICovXG4gIEBPdXRwdXQoKSBidWJibGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgZ2V0IGNvbXB1dGVkQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY24oXG4gICAgICBidWJibGVWYXJpYW50cyh7IHZhcmlhbnQ6IHRoaXMudmFyaWFudCwgYWxpZ246IHRoaXMuYWxpZ24sIHNpemU6IHRoaXMuc2l6ZSB9KSxcbiAgICAgIHRoaXMuaW50ZXJhY3RpdmUgJiZcbiAgICAgICAgJ2N1cnNvci1wb2ludGVyIG91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZyBmb2N1cy12aXNpYmxlOnJpbmctb2Zmc2V0LTInLFxuICAgICAgdGhpcy5jbGFzc1xuICAgICk7XG4gIH1cblxuICAvKiogQ2xhc3NlcyBmb3IgdGhlIGNvbnRlbnQgd3JhcHBlciDigJQgY2xhbXBlZCBvbmx5IHdoaWxlIGNvbGxhcHNpYmxlIGFuZCBjb2xsYXBzZWQuICovXG4gIGdldCBjb250ZW50Q2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY24odGhpcy5pc0NsYW1wZWQgJiYgJ292ZXJmbG93LWhpZGRlbicpO1xuICB9XG5cbiAgLyoqIElubGluZSBtYXgtaGVpZ2h0IGFwcGxpZWQgd2hpbGUgdGhlIGNvbnRlbnQgaXMgY2xhbXBlZC4gKi9cbiAgZ2V0IGNvbnRlbnRTdHlsZSgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pc0NsYW1wZWQgPyB0aGlzLmNvbGxhcHNlZEhlaWdodCA6IG51bGw7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgcHJvamVjdGVkIGNvbnRlbnQgaXMgY3VycmVudGx5IGNsYW1wZWQuICovXG4gIGdldCBpc0NsYW1wZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29sbGFwc2libGUgJiYgdGhpcy5jb2xsYXBzZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIC8vIFRoZSB0b2dnbGUgbGl2ZXMgaW5zaWRlIHRoZSB0cmlnZ2VyIHN1cmZhY2U7IGRvbid0IGZpcmUgYm90aC5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNlZDtcbiAgICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KHRoaXMuY29sbGFwc2VkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRyaWdnZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmludGVyYWN0aXZlKSByZXR1cm47XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmJ1YmJsZUNsaWNrLmVtaXQoZXZlbnQpO1xuICB9XG59XG5cbi8qKlxuICogSG92ZXItcmV2ZWFsZWQgcm93IG9mIGFjdGlvbnMgZm9yIGEgYnViYmxlIOKAlCBjb3B5LCByZXRyeSwgcmVhY3QuIENsaWNrcyBhcmVcbiAqIGtlcHQgaW5zaWRlIHRoZSByb3cgc28gYW4gaW50ZXJhY3RpdmUgYnViYmxlIGRvZXMgbm90IGFsc28gZmlyZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtYnViYmxlLWFjdGlvbnMnLFxuICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzc1wiIChjbGljayk9XCJvbkNsaWNrKCRldmVudClcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgQnViYmxlQWN0aW9uc0NvbXBvbmVudCAgaW1wbGVtZW50cyBPbkNoYW5nZXN7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAvKipcbiAgICogQW5ndWxhciB3cml0ZXMgYSBib3VuZCBgY2xhc3NgIGlucHV0IHRocm91Z2ggaXRzIHN0eWxpbmcgcGF0aCwgd2hpY2ggZG9lc1xuICAgKiBub3QgbWFyayBhbiBPblB1c2ggY29tcG9uZW50IGRpcnR5IOKAlCB3aXRob3V0IHRoaXMgaG9vayB0aGUgY29tcG9uZW50IGtlZXBzXG4gICAqIHJlbmRlcmluZyB0aGUgY2xhc3MgaXQgd2FzIGJvcm4gd2l0aC5cbiAgICovXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIEtlZXBzIHRoZSByb3cgcGVybWFuZW50bHkgdmlzaWJsZSBpbnN0ZWFkIG9mIHJldmVhbGluZyBpdCBvbiBob3ZlciBvciBmb2N1cy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgQElucHV0KCkgYWx3YXlzVmlzaWJsZSA9IGZhbHNlO1xuICAvKiogRXh0cmEgVGFpbHdpbmQgY2xhc3NlcyBtZXJnZWQgb250byB0aGUgcm93IHZpYSBgY24oKWAgKGxhc3Qtd2lucykuICovXG4gIEBJbnB1dCgpIGNsYXNzID0gJyc7XG5cbiAgZ2V0IGNvbXB1dGVkQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY24oXG4gICAgICAnbXQtMSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSB0cmFuc2l0aW9uLW9wYWNpdHknLFxuICAgICAgdGhpcy5hbHdheXNWaXNpYmxlXG4gICAgICAgID8gJ29wYWNpdHktMTAwJ1xuICAgICAgICA6ICdvcGFjaXR5LTAgZm9jdXMtd2l0aGluOm9wYWNpdHktMTAwIGdyb3VwLWhvdmVyL2J1YmJsZTpvcGFjaXR5LTEwMCcsXG4gICAgICB0aGlzLmNsYXNzXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIC8vIEFjdGlvbnMgc3RheSBpbmRlcGVuZGVudGx5IGNsaWNrYWJsZSBldmVuIHdoZW4gdGhlIGJ1YmJsZSBpcyBhIHRyaWdnZXIuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cblxuLyoqIFJvdyBvZiBlbW9qaSByZWFjdGlvbiBjaGlwcyBhdHRhY2hlZCB0byBhIGJ1YmJsZS4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWJ1YmJsZS1yZWFjdGlvbnMnLFxuICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBbY2xhc3NdPVwiY29tcHV0ZWRDbGFzc1wiIChjbGljayk9XCJzdG9wKCRldmVudClcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nRm9yPVwibGV0IHJlYWN0aW9uIG9mIHJlYWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeUVtb2ppXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCIhIXJlYWN0aW9uLnJlYWN0ZWRcIlxuICAgICAgICBbY2xhc3NdPVwiY2hpcENsYXNzKHJlYWN0aW9uKVwiXG4gICAgICAgIChjbGljayk9XCJvblJlYWN0KHJlYWN0aW9uLCAkZXZlbnQpXCI+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnt7IHJlYWN0aW9uLmVtb2ppIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cInJlYWN0aW9uLmNvdW50XCIgY2xhc3M9XCJ0YWJ1bGFyLW51bXNcIj57eyByZWFjdGlvbi5jb3VudCB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEJ1YmJsZVJlYWN0aW9uc0NvbXBvbmVudCAgaW1wbGVtZW50cyBPbkNoYW5nZXN7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAvKipcbiAgICogQW5ndWxhciB3cml0ZXMgYSBib3VuZCBgY2xhc3NgIGlucHV0IHRocm91Z2ggaXRzIHN0eWxpbmcgcGF0aCwgd2hpY2ggZG9lc1xuICAgKiBub3QgbWFyayBhbiBPblB1c2ggY29tcG9uZW50IGRpcnR5IOKAlCB3aXRob3V0IHRoaXMgaG9vayB0aGUgY29tcG9uZW50IGtlZXBzXG4gICAqIHJlbmRlcmluZyB0aGUgY2xhc3MgaXQgd2FzIGJvcm4gd2l0aC5cbiAgICovXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqIFJlYWN0aW9uIGNoaXBzIHRvIHJlbmRlciwgaW4gZGlzcGxheSBvcmRlci4gQGRlZmF1bHQgW10gKi9cbiAgQElucHV0KCkgcmVhY3Rpb25zOiBCdWJibGVSZWFjdGlvbltdID0gW107XG4gIC8qKiBFeHRyYSBUYWlsd2luZCBjbGFzc2VzIG1lcmdlZCBvbnRvIHRoZSByb3cgdmlhIGBjbigpYCAobGFzdC13aW5zKS4gKi9cbiAgQElucHV0KCkgY2xhc3MgPSAnJztcblxuICAvKiogRW1pdHRlZCB3aXRoIHRoZSByZWFjdGlvbiB3aG9zZSBjaGlwIHdhcyBjbGlja2VkLiAqL1xuICBAT3V0cHV0KCkgcmVhY3QgPSBuZXcgRXZlbnRFbWl0dGVyPEJ1YmJsZVJlYWN0aW9uPigpO1xuXG4gIGdldCBjb21wdXRlZENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNuKCdtdC0xIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMScsIHRoaXMuY2xhc3MpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNoaXBDbGFzcyhyZWFjdGlvbjogQnViYmxlUmVhY3Rpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBjbihcbiAgICAgICdpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgcm91bmRlZC1mdWxsIGJvcmRlciBweC0yIHB5LTAuNSB0ZXh0LXhzIGxlYWRpbmctbm9uZSB0cmFuc2l0aW9uLWNvbG9ycyBmb2N1cy12aXNpYmxlOm91dGxpbmUtbm9uZSBmb2N1cy12aXNpYmxlOnJpbmctMiBmb2N1cy12aXNpYmxlOnJpbmctcmluZycsXG4gICAgICByZWFjdGlvbi5yZWFjdGVkXG4gICAgICAgID8gJ2JvcmRlci1wcmltYXJ5IGJnLXByaW1hcnkvMTAgdGV4dC1wcmltYXJ5J1xuICAgICAgICA6ICdib3JkZXItYm9yZGVyIGJnLW11dGVkIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3ZlcjpiZy1hY2NlbnQnXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0cmFja0J5RW1vamkoX2luZGV4OiBudW1iZXIsIHJlYWN0aW9uOiBCdWJibGVSZWFjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlYWN0aW9uLmVtb2ppO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uUmVhY3QocmVhY3Rpb246IEJ1YmJsZVJlYWN0aW9uLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnJlYWN0LmVtaXQocmVhY3Rpb24pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0b3AoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -70,15 +70,11 @@ export class ButtonComponent {
70
70
  <ng-content></ng-content>
71
71
  </span>
72
72
  </button>
73
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
73
+ `, isInline: true, styles: [":host{display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
74
74
  }
75
75
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, decorators: [{
76
76
  type: Component,
77
- args: [{
78
- selector: 'tolle-button',
79
- standalone: true,
80
- imports: [CommonModule],
81
- template: `
77
+ args: [{ selector: 'tolle-button', standalone: true, imports: [CommonModule], template: `
82
78
  <button
83
79
  [type]="type"
84
80
  [class]="computedClass"
@@ -96,11 +92,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
96
92
  <ng-content></ng-content>
97
93
  </span>
98
94
  </button>
99
- `,
100
- host: {
95
+ `, host: {
101
96
  'class': 'tolle-button-wrapper inline-block align-middle'
102
- }
103
- }]
97
+ }, styles: [":host{display:inline-flex}\n"] }]
104
98
  }], propDecorators: { class: [{
105
99
  type: Input
106
100
  }], variant: [{
@@ -114,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
114
108
  }], busy: [{
115
109
  type: Input
116
110
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFFaEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUN4Qix5U0FBeVMsRUFDelM7SUFDRSxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsd0RBQXdEO1lBQ2pFLFdBQVcsRUFBRSxvRUFBb0U7WUFDakYsT0FBTyxFQUFFLGlHQUFpRztZQUMxRyxTQUFTLEVBQUUsOERBQThEO1lBQ3pFLEtBQUssRUFBRSw4Q0FBOEM7WUFDckQsSUFBSSxFQUFFLGlEQUFpRDtTQUN4RDtRQUNELElBQUksRUFBRTtZQUNKLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsRUFBRSxFQUFFLHVCQUF1QjtZQUMzQixFQUFFLEVBQUUscUJBQXFCO1lBQ3pCLEVBQUUsRUFBRSxzQkFBc0I7WUFDMUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFLFdBQVc7WUFDakIsU0FBUyxFQUFFLFdBQVc7U0FDdkI7UUFDRCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsK0RBQStELEVBQUU7S0FDaEY7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztRQUNsQixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQ0YsQ0FBQztBQStCRixNQUFNLE9BQU8sZUFBZTtJQUMxQiw0RUFBNEU7SUFDbkUsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUM1QixxREFBcUQ7SUFDNUMsT0FBTyxHQUEyQixTQUFTLENBQUM7SUFDckQsd0VBQXdFO0lBQy9ELElBQUksR0FBd0IsU0FBUyxDQUFDO0lBQy9DLDBHQUEwRztJQUNqRyxJQUFJLEdBQWtDLFFBQVEsQ0FBQztJQUN4RCxvRUFBb0U7SUFDM0QsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUNuQyxvR0FBb0c7SUFDM0YsSUFBSSxHQUFZLEtBQUssQ0FBQztJQUUvQixJQUFJLGFBQWE7UUFDZixPQUFPLEVBQUUsQ0FDUCxjQUFjLENBQUM7WUFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsRUFDRixJQUFJLENBQUMsS0FBSyxDQUNYLENBQUM7SUFDSixDQUFDO3dHQXZCVSxlQUFlOzRGQUFmLGVBQWUsb1FBdkJoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULDJEQW5CUyxZQUFZOzs0RkF3QlgsZUFBZTtrQkEzQjNCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JUO29CQUNELElBQUksRUFBRTt3QkFDSixPQUFPLEVBQUUsZ0RBQWdEO3FCQUMxRDtpQkFDRjs4QkFHVSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJ0b2xsZS1idXR0b24tYmFzZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBhY3RpdmU6c2NhbGUtWzAuOThdXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJiZy1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgaG92ZXI6YmctZGVzdHJ1Y3RpdmUvOTBcIixcbiAgICAgICAgb3V0bGluZTogXCJib3JkZXIgYm9yZGVyLWlucHV0IGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIHRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwiYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwidGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwiaC0xMCBweC00IHB5LTJcIixcbiAgICAgICAgeHM6IFwiaC04IHB4LTIgcHktMSB0ZXh0LXhzXCIsXG4gICAgICAgIHNtOiBcImgtOSByb3VuZGVkLW1kIHB4LTNcIixcbiAgICAgICAgbGc6IFwiaC0xMSByb3VuZGVkLW1kIHB4LThcIixcbiAgICAgICAgXCJpY29uLXhzXCI6IFwiaC04IHctOFwiLFxuICAgICAgICBcImljb24tc21cIjogXCJoLTkgdy05XCIsXG4gICAgICAgIGljb246IFwiaC0xMCB3LTEwXCIsXG4gICAgICAgIFwiaWNvbi1sZ1wiOiBcImgtMTEgdy0xMVwiLFxuICAgICAgfSxcbiAgICAgIGJ1c3k6IHsgdHJ1ZTogXCJ0b2xsZS1idXR0b24tLWJ1c3kgcmVsYXRpdmUgIWN1cnNvci13YWl0ICFwb2ludGVyLWV2ZW50cy1ub25lXCIgfVxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICAgIHNpemU6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH1cbik7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz47XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWJ1dHRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3NcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGJ1c3lcIlxuICAgICAgW2F0dHIuYXJpYS1idXN5XT1cImJ1c3lcIlxuICAgID5cbiAgICAgIDxkaXYgKm5nSWY9XCJidXN5XCIgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxzdmcgY2xhc3M9XCJhbmltYXRlLXNwaW4gaC01IHctNSB0ZXh0LWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPGNpcmNsZSBjbGFzcz1cIm9wYWNpdHktMjVcIiBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjRcIj48L2NpcmNsZT5cbiAgICAgICAgICA8cGF0aCBjbGFzcz1cIm9wYWNpdHktNzVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk00IDEyYTggOCAwIDAxOC04VjBDNS4zNzMgMCAwIDUuMzczIDAgMTJoNHptMiA1LjI5MUE3Ljk2MiA3Ljk2MiAwIDAxNCAxMkgwYzAgMy4wNDIgMS4xMzUgNS44MjQgMyA3LjkzOGwzLTIuNjQ3elwiPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgaC1mdWxsIHBvaW50ZXItZXZlbnRzLW5vbmVcIiBbY2xhc3MuaW52aXNpYmxlXT1cImJ1c3lcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ3RvbGxlLWJ1dHRvbi13cmFwcGVyIGlubGluZS1ibG9jayBhbGlnbi1taWRkbGUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcbiAgLyoqIEV4dHJhIFRhaWx3aW5kIGNsYXNzZXMgbWVyZ2VkIG9udG8gdGhlIGJ1dHRvbiB2aWEgYGNuKClgIChsYXN0LXdpbnMpLiAqL1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIC8qKiBWaXN1YWwgc3R5bGUgb2YgdGhlIGJ1dHRvbi4gQGRlZmF1bHQgJ2RlZmF1bHQnICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEJ1dHRvblByb3BzWyd2YXJpYW50J10gPSAnZGVmYXVsdCc7XG4gIC8qKiBTaXplIG9mIHRoZSBidXR0b24sIGluY2x1ZGluZyBpY29uLW9ubHkgc2l6ZXMuIEBkZWZhdWx0ICdkZWZhdWx0JyAqL1xuICBASW5wdXQoKSBzaXplOiBCdXR0b25Qcm9wc1snc2l6ZSddID0gJ2RlZmF1bHQnO1xuICAvKiogTmF0aXZlIGJ1dHRvbiB0eXBlLiBEZWZhdWx0cyB0byAnYnV0dG9uJyBzbyBpdCBuZXZlciBzdWJtaXRzIGEgZm9ybSB1bmV4cGVjdGVkbHkuIEBkZWZhdWx0ICdidXR0b24nICovXG4gIEBJbnB1dCgpIHR5cGU6ICdidXR0b24nIHwgJ3N1Ym1pdCcgfCAncmVzZXQnID0gJ2J1dHRvbic7XG4gIC8qKiBEaXNhYmxlcyB0aGUgYnV0dG9uIGFuZCBibG9ja3MgcG9pbnRlciBldmVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBTaG93cyBhIHNwaW5uZXIsIHNldHMgYGFyaWEtYnVzeWAsIGFuZCBwcmV2ZW50cyBpbnRlcmFjdGlvbiB3aGlsZSBhIHRhc2sgcnVucy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgQElucHV0KCkgYnVzeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCBjb21wdXRlZENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIGJ1dHRvblZhcmlhbnRzKHtcbiAgICAgICAgdmFyaWFudDogdGhpcy52YXJpYW50LFxuICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgIGJ1c3k6IHRoaXMuYnVzeVxuICAgICAgfSksXG4gICAgICB0aGlzLmNsYXNzXG4gICAgKTtcbiAgfVxufVxuIl19
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFFaEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUN4Qix5U0FBeVMsRUFDelM7SUFDRSxRQUFRLEVBQUU7UUFDUixPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsd0RBQXdEO1lBQ2pFLFdBQVcsRUFBRSxvRUFBb0U7WUFDakYsT0FBTyxFQUFFLGlHQUFpRztZQUMxRyxTQUFTLEVBQUUsOERBQThEO1lBQ3pFLEtBQUssRUFBRSw4Q0FBOEM7WUFDckQsSUFBSSxFQUFFLGlEQUFpRDtTQUN4RDtRQUNELElBQUksRUFBRTtZQUNKLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsRUFBRSxFQUFFLHVCQUF1QjtZQUMzQixFQUFFLEVBQUUscUJBQXFCO1lBQ3pCLEVBQUUsRUFBRSxzQkFBc0I7WUFDMUIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsU0FBUyxFQUFFLFNBQVM7WUFDcEIsSUFBSSxFQUFFLFdBQVc7WUFDakIsU0FBUyxFQUFFLFdBQVc7U0FDdkI7UUFDRCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsK0RBQStELEVBQUU7S0FDaEY7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztRQUNsQixJQUFJLEVBQUUsU0FBUztLQUNoQjtDQUNGLENBQ0YsQ0FBQztBQWdDRixNQUFNLE9BQU8sZUFBZTtJQUMxQiw0RUFBNEU7SUFDbkUsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUM1QixxREFBcUQ7SUFDNUMsT0FBTyxHQUEyQixTQUFTLENBQUM7SUFDckQsd0VBQXdFO0lBQy9ELElBQUksR0FBd0IsU0FBUyxDQUFDO0lBQy9DLDBHQUEwRztJQUNqRyxJQUFJLEdBQWtDLFFBQVEsQ0FBQztJQUN4RCxvRUFBb0U7SUFDM0QsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUNuQyxvR0FBb0c7SUFDM0YsSUFBSSxHQUFZLEtBQUssQ0FBQztJQUUvQixJQUFJLGFBQWE7UUFDZixPQUFPLEVBQUUsQ0FDUCxjQUFjLENBQUM7WUFDYixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsRUFDRixJQUFJLENBQUMsS0FBSyxDQUNYLENBQUM7SUFDSixDQUFDO3dHQXZCVSxlQUFlOzRGQUFmLGVBQWUsb1FBdkJoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JULHFHQW5CUyxZQUFZOzs0RkF3QlgsZUFBZTtrQkE1QjNCLFNBQVM7K0JBQ0UsY0FBYyxjQUVaLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQsUUFDSzt3QkFDSixPQUFPLEVBQUUsZ0RBQWdEO3FCQUMxRDs4QkFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5jb25zdCBidXR0b25WYXJpYW50cyA9IGN2YShcbiAgXCJ0b2xsZS1idXR0b24tYmFzZSBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1tZCB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tYWxsIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nIGZvY3VzLXZpc2libGU6cmluZy1vZmZzZXQtMiBkaXNhYmxlZDpvcGFjaXR5LTUwIGRpc2FibGVkOnBvaW50ZXItZXZlbnRzLW5vbmUgcmluZy1vZmZzZXQtYmFja2dyb3VuZCBhY3RpdmU6c2NhbGUtWzAuOThdXCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcImJnLXByaW1hcnkgdGV4dC1wcmltYXJ5LWZvcmVncm91bmQgaG92ZXI6YmctcHJpbWFyeS85MFwiLFxuICAgICAgICBkZXN0cnVjdGl2ZTogXCJiZy1kZXN0cnVjdGl2ZSB0ZXh0LWRlc3RydWN0aXZlLWZvcmVncm91bmQgaG92ZXI6YmctZGVzdHJ1Y3RpdmUvOTBcIixcbiAgICAgICAgb3V0bGluZTogXCJib3JkZXIgYm9yZGVyLWlucHV0IGJnLXRyYW5zcGFyZW50IGhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kIHRleHQtZm9yZWdyb3VuZFwiLFxuICAgICAgICBzZWNvbmRhcnk6IFwiYmctc2Vjb25kYXJ5IHRleHQtc2Vjb25kYXJ5LWZvcmVncm91bmQgaG92ZXI6Ymctc2Vjb25kYXJ5LzgwXCIsXG4gICAgICAgIGdob3N0OiBcImhvdmVyOmJnLWFjY2VudCBob3Zlcjp0ZXh0LWFjY2VudC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGxpbms6IFwidGV4dC1wcmltYXJ5IHVuZGVybGluZS1vZmZzZXQtNCBob3Zlcjp1bmRlcmxpbmVcIixcbiAgICAgIH0sXG4gICAgICBzaXplOiB7XG4gICAgICAgIGRlZmF1bHQ6IFwiaC0xMCBweC00IHB5LTJcIixcbiAgICAgICAgeHM6IFwiaC04IHB4LTIgcHktMSB0ZXh0LXhzXCIsXG4gICAgICAgIHNtOiBcImgtOSByb3VuZGVkLW1kIHB4LTNcIixcbiAgICAgICAgbGc6IFwiaC0xMSByb3VuZGVkLW1kIHB4LThcIixcbiAgICAgICAgXCJpY29uLXhzXCI6IFwiaC04IHctOFwiLFxuICAgICAgICBcImljb24tc21cIjogXCJoLTkgdy05XCIsXG4gICAgICAgIGljb246IFwiaC0xMCB3LTEwXCIsXG4gICAgICAgIFwiaWNvbi1sZ1wiOiBcImgtMTEgdy0xMVwiLFxuICAgICAgfSxcbiAgICAgIGJ1c3k6IHsgdHJ1ZTogXCJ0b2xsZS1idXR0b24tLWJ1c3kgcmVsYXRpdmUgIWN1cnNvci13YWl0ICFwb2ludGVyLWV2ZW50cy1ub25lXCIgfVxuICAgIH0sXG4gICAgZGVmYXVsdFZhcmlhbnRzOiB7XG4gICAgICB2YXJpYW50OiBcImRlZmF1bHRcIixcbiAgICAgIHNpemU6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH1cbik7XG5cbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gVmFyaWFudFByb3BzPHR5cGVvZiBidXR0b25WYXJpYW50cz47XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWJ1dHRvbicsXG4gIHN0eWxlczogWyc6aG9zdCB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9J10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgW2NsYXNzXT1cImNvbXB1dGVkQ2xhc3NcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IGJ1c3lcIlxuICAgICAgW2F0dHIuYXJpYS1idXN5XT1cImJ1c3lcIlxuICAgID5cbiAgICAgIDxkaXYgKm5nSWY9XCJidXN5XCIgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgIDxzdmcgY2xhc3M9XCJhbmltYXRlLXNwaW4gaC01IHctNSB0ZXh0LWN1cnJlbnRcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgPGNpcmNsZSBjbGFzcz1cIm9wYWNpdHktMjVcIiBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjRcIj48L2NpcmNsZT5cbiAgICAgICAgICA8cGF0aCBjbGFzcz1cIm9wYWNpdHktNzVcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgZD1cIk00IDEyYTggOCAwIDAxOC04VjBDNS4zNzMgMCAwIDUuMzczIDAgMTJoNHptMiA1LjI5MUE3Ljk2MiA3Ljk2MiAwIDAxNCAxMkgwYzAgMy4wNDIgMS4xMzUgNS44MjQgMyA3LjkzOGwzLTIuNjQ3elwiPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB3LWZ1bGwgaC1mdWxsIHBvaW50ZXItZXZlbnRzLW5vbmVcIiBbY2xhc3MuaW52aXNpYmxlXT1cImJ1c3lcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICBgLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ3RvbGxlLWJ1dHRvbi13cmFwcGVyIGlubGluZS1ibG9jayBhbGlnbi1taWRkbGUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IHtcbiAgLyoqIEV4dHJhIFRhaWx3aW5kIGNsYXNzZXMgbWVyZ2VkIG9udG8gdGhlIGJ1dHRvbiB2aWEgYGNuKClgIChsYXN0LXdpbnMpLiAqL1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJyc7XG4gIC8qKiBWaXN1YWwgc3R5bGUgb2YgdGhlIGJ1dHRvbi4gQGRlZmF1bHQgJ2RlZmF1bHQnICovXG4gIEBJbnB1dCgpIHZhcmlhbnQ6IEJ1dHRvblByb3BzWyd2YXJpYW50J10gPSAnZGVmYXVsdCc7XG4gIC8qKiBTaXplIG9mIHRoZSBidXR0b24sIGluY2x1ZGluZyBpY29uLW9ubHkgc2l6ZXMuIEBkZWZhdWx0ICdkZWZhdWx0JyAqL1xuICBASW5wdXQoKSBzaXplOiBCdXR0b25Qcm9wc1snc2l6ZSddID0gJ2RlZmF1bHQnO1xuICAvKiogTmF0aXZlIGJ1dHRvbiB0eXBlLiBEZWZhdWx0cyB0byAnYnV0dG9uJyBzbyBpdCBuZXZlciBzdWJtaXRzIGEgZm9ybSB1bmV4cGVjdGVkbHkuIEBkZWZhdWx0ICdidXR0b24nICovXG4gIEBJbnB1dCgpIHR5cGU6ICdidXR0b24nIHwgJ3N1Ym1pdCcgfCAncmVzZXQnID0gJ2J1dHRvbic7XG4gIC8qKiBEaXNhYmxlcyB0aGUgYnV0dG9uIGFuZCBibG9ja3MgcG9pbnRlciBldmVudHMuIEBkZWZhdWx0IGZhbHNlICovXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKiBTaG93cyBhIHNwaW5uZXIsIHNldHMgYGFyaWEtYnVzeWAsIGFuZCBwcmV2ZW50cyBpbnRlcmFjdGlvbiB3aGlsZSBhIHRhc2sgcnVucy4gQGRlZmF1bHQgZmFsc2UgKi9cbiAgQElucHV0KCkgYnVzeTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGdldCBjb21wdXRlZENsYXNzKCkge1xuICAgIHJldHVybiBjbihcbiAgICAgIGJ1dHRvblZhcmlhbnRzKHtcbiAgICAgICAgdmFyaWFudDogdGhpcy52YXJpYW50LFxuICAgICAgICBzaXplOiB0aGlzLnNpemUsXG4gICAgICAgIGJ1c3k6IHRoaXMuYnVzeVxuICAgICAgfSksXG4gICAgICB0aGlzLmNsYXNzXG4gICAgKTtcbiAgfVxufVxuIl19