@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
@@ -3,6 +3,7 @@ import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
3
3
  import { ComponentPortal } from '@angular/cdk/portal';
4
4
  import { AlertDialogRef } from './alert-dialog.types';
5
5
  import { AlertDialogDynamicComponent } from './alert-dialog-dynamic.component';
6
+ import { CLOSE_FALLBACK_MS } from './alert-dialog.component';
6
7
  import * as i0 from "@angular/core";
7
8
  export class AlertDialogService {
8
9
  overlay = inject(Overlay);
@@ -12,7 +13,15 @@ export class AlertDialogService {
12
13
  const previouslyFocused = document.activeElement;
13
14
  const overlayConfig = new OverlayConfig({
14
15
  hasBackdrop: true,
15
- backdropClass: ['cdk-overlay-backdrop', 'bg-black/80', 'backdrop-blur-sm'],
16
+ backdropClass: [
17
+ 'cdk-overlay-backdrop',
18
+ 'bg-black/80',
19
+ 'backdrop-blur-sm',
20
+ 'data-[state=open]:animate-in',
21
+ 'data-[state=open]:fade-in-0',
22
+ 'data-[state=closed]:animate-out',
23
+ 'data-[state=closed]:fade-out-0',
24
+ ],
16
25
  positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
17
26
  scrollStrategy: this.overlay.scrollStrategies.block()
18
27
  });
@@ -20,13 +29,36 @@ export class AlertDialogService {
20
29
  const dialogRef = new AlertDialogRef();
21
30
  const portal = new ComponentPortal(AlertDialogDynamicComponent, null, this.injector);
22
31
  const componentRef = overlayRef.attach(portal);
32
+ // The backdrop element only exists once attached — setting this any
33
+ // earlier would silently no-op.
34
+ overlayRef.backdropElement?.setAttribute('data-state', 'open');
23
35
  componentRef.instance.config = config;
24
36
  componentRef.instance.dialogRef = dialogRef;
37
+ // The result (`afterClosed$`) is ready immediately, but disposing the
38
+ // overlay waits for the content panel's exit animation to finish (or
39
+ // a fallback timeout), so `data-[state=closed]:animate-out` gets a
40
+ // chance to play instead of being torn down mid-frame.
25
41
  dialogRef.afterClosed$.subscribe(() => {
26
- overlayRef.detach();
27
- overlayRef.dispose();
28
- // Restore focus to the trigger.
29
- previouslyFocused?.focus?.();
42
+ overlayRef.backdropElement?.setAttribute('data-state', 'closed');
43
+ componentRef.instance.closing = true;
44
+ let finished = false;
45
+ const finish = () => {
46
+ if (finished)
47
+ return;
48
+ finished = true;
49
+ overlayRef.detach();
50
+ overlayRef.dispose();
51
+ // Restore focus to the trigger.
52
+ previouslyFocused?.focus?.();
53
+ };
54
+ const panel = overlayRef.overlayElement.querySelector('[data-state]');
55
+ if (panel) {
56
+ panel.addEventListener('animationend', finish, { once: true });
57
+ setTimeout(finish, CLOSE_FALLBACK_MS);
58
+ }
59
+ else {
60
+ finish();
61
+ }
30
62
  });
31
63
  // Alert-dialog semantics: backdrop clicks must NOT dismiss.
32
64
  // Escape still closes the dialog.
@@ -47,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
47
79
  providedIn: 'root'
48
80
  }]
49
81
  }] });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2FsZXJ0LWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFvQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFLL0UsTUFBTSxPQUFPLGtCQUFrQjtJQUNuQixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsSUFBSSxDQUFDLE1BQXlCO1FBQzFCLDBEQUEwRDtRQUMxRCxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxhQUFtQyxDQUFDO1FBRXZFLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDO1lBQ3BDLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxDQUFDLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQztZQUMxRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUYsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO1NBQ3hELENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sU0FBUyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFFdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRixNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN0QyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFNUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsZ0NBQWdDO1lBQ2hDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCw0REFBNEQ7UUFDNUQsa0NBQWtDO1FBQ2xDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFvQixFQUFFLEVBQUU7WUFDMUQsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzt3R0F6Q1Esa0JBQWtCOzRHQUFsQixrQkFBa0IsY0FGZixNQUFNOzs0RkFFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBWaWV3Q29udGFpbmVyUmVmLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQWxlcnREaWFsb2dDb25maWcsIEFsZXJ0RGlhbG9nUmVmIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cudHlwZXMnO1xuaW1wb3J0IHsgQWxlcnREaWFsb2dEeW5hbWljQ29tcG9uZW50IH0gZnJvbSAnLi9hbGVydC1kaWFsb2ctZHluYW1pYy5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0RGlhbG9nU2VydmljZSB7XG4gICAgcHJpdmF0ZSBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gICAgb3Blbihjb25maWc6IEFsZXJ0RGlhbG9nQ29uZmlnKTogQWxlcnREaWFsb2dSZWYge1xuICAgICAgICAvLyBSZW1lbWJlciB0aGUgdHJpZ2dlciBzbyBmb2N1cyBjYW4gYmUgcmVzdG9yZWQgb24gY2xvc2UuXG4gICAgICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgICAgYmFja2Ryb3BDbGFzczogWydjZGstb3ZlcmxheS1iYWNrZHJvcCcsICdiZy1ibGFjay84MCcsICdiYWNrZHJvcC1ibHVyLXNtJ10sXG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKS5jZW50ZXJIb3Jpem9udGFsbHkoKS5jZW50ZXJWZXJ0aWNhbGx5KCksXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBvdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gbmV3IEFsZXJ0RGlhbG9nUmVmKCk7XG5cbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChBbGVydERpYWxvZ0R5bmFtaWNDb21wb25lbnQsIG51bGwsIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb25maWcgPSBjb25maWc7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kaWFsb2dSZWYgPSBkaWFsb2dSZWY7XG5cbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgb3ZlcmxheVJlZi5kZXRhY2goKTtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgLy8gUmVzdG9yZSBmb2N1cyB0byB0aGUgdHJpZ2dlci5cbiAgICAgICAgICAgIHByZXZpb3VzbHlGb2N1c2VkPy5mb2N1cz8uKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFsZXJ0LWRpYWxvZyBzZW1hbnRpY3M6IGJhY2tkcm9wIGNsaWNrcyBtdXN0IE5PVCBkaXNtaXNzLlxuICAgICAgICAvLyBFc2NhcGUgc3RpbGwgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZGlhbG9nUmVmO1xuICAgIH1cbn1cbiJdfQ==
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2FsZXJ0LWRpYWxvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQXFCLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUs3RCxNQUFNLE9BQU8sa0JBQWtCO0lBQ25CLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVwQyxJQUFJLENBQUMsTUFBeUI7UUFDMUIsMERBQTBEO1FBQzFELE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLGFBQW1DLENBQUM7UUFFdkUsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDcEMsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFO2dCQUNYLHNCQUFzQjtnQkFDdEIsYUFBYTtnQkFDYixrQkFBa0I7Z0JBQ2xCLDhCQUE4QjtnQkFDOUIsNkJBQTZCO2dCQUM3QixpQ0FBaUM7Z0JBQ2pDLGdDQUFnQzthQUNuQztZQUNELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxRixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7U0FDeEQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUV2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQywyQkFBMkIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0Msb0VBQW9FO1FBQ3BFLGdDQUFnQztRQUNoQyxVQUFVLENBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFL0QsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3RDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUU1QyxzRUFBc0U7UUFDdEUscUVBQXFFO1FBQ3JFLG1FQUFtRTtRQUNuRSx1REFBdUQ7UUFDdkQsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqRSxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFckMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRTtnQkFDaEIsSUFBSSxRQUFRO29CQUFFLE9BQU87Z0JBQ3JCLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEIsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixnQ0FBZ0M7Z0JBQ2hDLGlCQUFpQixFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakMsQ0FBQyxDQUFDO1lBRUYsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQWMsY0FBYyxDQUFDLENBQUM7WUFDbkYsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxVQUFVLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7WUFDMUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE1BQU0sRUFBRSxDQUFDO1lBQ2IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsNERBQTREO1FBQzVELGtDQUFrQztRQUNsQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQzFELElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7d0dBekVRLGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmYsTUFBTTs7NEZBRVQsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFsZXJ0RGlhbG9nQ29uZmlnLCBBbGVydERpYWxvZ1JlZiB9IGZyb20gJy4vYWxlcnQtZGlhbG9nLnR5cGVzJztcbmltcG9ydCB7IEFsZXJ0RGlhbG9nRHluYW1pY0NvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQtZGlhbG9nLWR5bmFtaWMuY29tcG9uZW50JztcbmltcG9ydCB7IENMT1NFX0ZBTExCQUNLX01TIH0gZnJvbSAnLi9hbGVydC1kaWFsb2cuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGVydERpYWxvZ1NlcnZpY2Uge1xuICAgIHByaXZhdGUgb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIG9wZW4oY29uZmlnOiBBbGVydERpYWxvZ0NvbmZpZyk6IEFsZXJ0RGlhbG9nUmVmIHtcbiAgICAgICAgLy8gUmVtZW1iZXIgdGhlIHRyaWdnZXIgc28gZm9jdXMgY2FuIGJlIHJlc3RvcmVkIG9uIGNsb3NlLlxuICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6IFtcbiAgICAgICAgICAgICAgICAnY2RrLW92ZXJsYXktYmFja2Ryb3AnLFxuICAgICAgICAgICAgICAgICdiZy1ibGFjay84MCcsXG4gICAgICAgICAgICAgICAgJ2JhY2tkcm9wLWJsdXItc20nLFxuICAgICAgICAgICAgICAgICdkYXRhLVtzdGF0ZT1vcGVuXTphbmltYXRlLWluJyxcbiAgICAgICAgICAgICAgICAnZGF0YS1bc3RhdGU9b3Blbl06ZmFkZS1pbi0wJyxcbiAgICAgICAgICAgICAgICAnZGF0YS1bc3RhdGU9Y2xvc2VkXTphbmltYXRlLW91dCcsXG4gICAgICAgICAgICAgICAgJ2RhdGEtW3N0YXRlPWNsb3NlZF06ZmFkZS1vdXQtMCcsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5LnBvc2l0aW9uKCkuZ2xvYmFsKCkuY2VudGVySG9yaXpvbnRhbGx5KCkuY2VudGVyVmVydGljYWxseSgpLFxuICAgICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IG5ldyBBbGVydERpYWxvZ1JlZigpO1xuXG4gICAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoQWxlcnREaWFsb2dEeW5hbWljQ29tcG9uZW50LCBudWxsLCB0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgICAgICAvLyBUaGUgYmFja2Ryb3AgZWxlbWVudCBvbmx5IGV4aXN0cyBvbmNlIGF0dGFjaGVkIOKAlCBzZXR0aW5nIHRoaXMgYW55XG4gICAgICAgIC8vIGVhcmxpZXIgd291bGQgc2lsZW50bHkgbm8tb3AuXG4gICAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnb3BlbicpO1xuXG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jb25maWcgPSBjb25maWc7XG4gICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kaWFsb2dSZWYgPSBkaWFsb2dSZWY7XG5cbiAgICAgICAgLy8gVGhlIHJlc3VsdCAoYGFmdGVyQ2xvc2VkJGApIGlzIHJlYWR5IGltbWVkaWF0ZWx5LCBidXQgZGlzcG9zaW5nIHRoZVxuICAgICAgICAvLyBvdmVybGF5IHdhaXRzIGZvciB0aGUgY29udGVudCBwYW5lbCdzIGV4aXQgYW5pbWF0aW9uIHRvIGZpbmlzaCAob3JcbiAgICAgICAgLy8gYSBmYWxsYmFjayB0aW1lb3V0KSwgc28gYGRhdGEtW3N0YXRlPWNsb3NlZF06YW5pbWF0ZS1vdXRgIGdldHMgYVxuICAgICAgICAvLyBjaGFuY2UgdG8gcGxheSBpbnN0ZWFkIG9mIGJlaW5nIHRvcm4gZG93biBtaWQtZnJhbWUuXG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIG92ZXJsYXlSZWYuYmFja2Ryb3BFbGVtZW50Py5zZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnLCAnY2xvc2VkJyk7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2luZyA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgZmluaXNoID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBvdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIG92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgZm9jdXMgdG8gdGhlIHRyaWdnZXIuXG4gICAgICAgICAgICAgICAgcHJldmlvdXNseUZvY3VzZWQ/LmZvY3VzPy4oKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHBhbmVsID0gb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PignW2RhdGEtc3RhdGVdJyk7XG4gICAgICAgICAgICBpZiAocGFuZWwpIHtcbiAgICAgICAgICAgICAgICBwYW5lbC5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCBmaW5pc2gsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgQ0xPU0VfRkFMTEJBQ0tfTVMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaW5pc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWxlcnQtZGlhbG9nIHNlbWFudGljczogYmFja2Ryb3AgY2xpY2tzIG11c3QgTk9UIGRpc21pc3MuXG4gICAgICAgIC8vIEVzY2FwZSBzdGlsbCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgICAgb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGRpYWxvZ1JlZi5jbG9zZShmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBkaWFsb2dSZWY7XG4gICAgfVxufVxuIl19
@@ -61,7 +61,7 @@ export class AlertComponent {
61
61
  </div>
62
62
  </div>
63
63
  </div>
64
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
64
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
65
65
  trigger('fade', [
66
66
  transition(':leave', [
67
67
  style({ opacity: 1, transform: 'scale(1)' }),
@@ -72,19 +72,14 @@ export class AlertComponent {
72
72
  }
73
73
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlertComponent, decorators: [{
74
74
  type: Component,
75
- args: [{
76
- selector: 'tolle-alert',
77
- standalone: true,
78
- imports: [CommonModule],
79
- animations: [
75
+ args: [{ selector: 'tolle-alert', standalone: true, imports: [CommonModule], animations: [
80
76
  trigger('fade', [
81
77
  transition(':leave', [
82
78
  style({ opacity: 1, transform: 'scale(1)' }),
83
79
  animate('300ms ease-in-out', style({ opacity: 0, transform: 'scale(0.95)', height: 0, margin: 0, padding: 0 }))
84
80
  ])
85
81
  ])
86
- ],
87
- template: `
82
+ ], template: `
88
83
  <div
89
84
  *ngIf="!dismissed"
90
85
  @fade
@@ -112,8 +107,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
112
107
  </div>
113
108
  </div>
114
109
  </div>
115
- `
116
- }]
110
+ `, styles: [":host{display:block}\n"] }]
117
111
  }], propDecorators: { variant: [{
118
112
  type: Input
119
113
  }], title: [{
@@ -125,4 +119,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
125
119
  }], onClose: [{
126
120
  type: Output
127
121
  }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxHQUFHLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRWhDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FDdkIsaUpBQWlKLEVBQ2pKO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLCtCQUErQjtZQUN4QyxXQUFXLEVBQUUsK0RBQStEO1lBQzVFLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsT0FBTyxFQUFFLG1EQUFtRDtZQUM1RCxJQUFJLEVBQUUsMENBQTBDO1NBQ2pEO0tBQ0Y7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQ0YsQ0FBQztBQThDRixNQUFNLE9BQU8sY0FBYztJQUNoQixPQUFPLEdBQTZCLFNBQVMsQ0FBQztJQUM5QyxLQUFLLENBQVU7SUFDZixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFN0MsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNSLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDOUIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUVsQixPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQWZVLGNBQWM7NEZBQWQsY0FBYyxvTUE5QmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQsMkRBckNTLFlBQVkscUhBQ1Y7WUFDVixPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNkLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO29CQUM1QyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDaEgsQ0FBQzthQUNILENBQUM7U0FDSDs7NEZBK0JVLGNBQWM7a0JBMUMxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixVQUFVLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLE1BQU0sRUFBRTs0QkFDZCxVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQztnQ0FDNUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQ2hILENBQUM7eUJBQ0gsQ0FBQztxQkFDSDtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7aUJBQ0Y7OEJBRVUsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5jb25zdCBhbGVydFZhcmlhbnRzID0gY3ZhKFxuICBcInJlbGF0aXZlIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBwLTQgWyY+aStkaXZdOnRyYW5zbGF0ZS15LVstM3B4XSBbJj5pXTphYnNvbHV0ZSBbJj5pXTpsZWZ0LTQgWyY+aV06dG9wLTQgWyY+aV06dGV4dC1mb3JlZ3JvdW5kIFsmPml+ZGl2XTpwbC03XCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcImJnLWJhY2tncm91bmQgdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOiBcImJvcmRlci1kZXN0cnVjdGl2ZS81MCB0ZXh0LWRlc3RydWN0aXZlIFsmPmldOnRleHQtZGVzdHJ1Y3RpdmVcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItc3VjY2Vzcy81MCB0ZXh0LXN1Y2Nlc3MgWyY+aV06dGV4dC1zdWNjZXNzXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiYm9yZGVyLXdhcm5pbmcvNTAgdGV4dC13YXJuaW5nIFsmPmldOnRleHQtd2FybmluZ1wiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1pbmZvLzUwIHRleHQtaW5mbyBbJj5pXTp0ZXh0LWluZm9cIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH1cbik7XG5cbnR5cGUgQWxlcnRWYXJpYW50cyA9IFZhcmlhbnRQcm9wczx0eXBlb2YgYWxlcnRWYXJpYW50cz47XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlKDAuOTUpJywgaGVpZ2h0OiAwLCBtYXJnaW46IDAsIHBhZGRpbmc6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhZGlzbWlzc2VkXCJcbiAgICAgIEBmYWRlXG4gICAgICBbY2xhc3NdPVwiY24oYWxlcnRWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzKVwiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpY29uXVwiPjwvbmctY29udGVudD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImRpc21pc3NpYmxlXCJcbiAgICAgICAgKGNsaWNrKT1cImRpc21pc3MoKVwiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMiB0b3AtMiByb3VuZGVkLW1kIHAtMSBvcGFjaXR5LTcwIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQtbGdcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNSAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJtYi0xIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDwvaDU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIFsmX3BdOmxlYWRpbmctcmVsYXhlZCBvcGFjaXR5LTkwXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFyaWFudDogQWxlcnRWYXJpYW50c1sndmFyaWFudCddID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNtaXNzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGRpc21pc3NlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgYWxlcnRWYXJpYW50cyA9IGFsZXJ0VmFyaWFudHM7XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xuXG4gIGRpc21pc3MoKSB7XG4gICAgdGhpcy5kaXNtaXNzZWQgPSB0cnVlO1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9hbGVydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxHQUFHLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRWhDLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FDdkIsaUpBQWlKLEVBQ2pKO0lBQ0UsUUFBUSxFQUFFO1FBQ1IsT0FBTyxFQUFFO1lBQ1AsT0FBTyxFQUFFLCtCQUErQjtZQUN4QyxXQUFXLEVBQUUsK0RBQStEO1lBQzVFLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsT0FBTyxFQUFFLG1EQUFtRDtZQUM1RCxJQUFJLEVBQUUsMENBQTBDO1NBQ2pEO0tBQ0Y7SUFDRCxlQUFlLEVBQUU7UUFDZixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQ0YsQ0FBQztBQStDRixNQUFNLE9BQU8sY0FBYztJQUNoQixPQUFPLEdBQTZCLFNBQVMsQ0FBQztJQUM5QyxLQUFLLENBQVU7SUFDZixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBWSxLQUFLLENBQUM7SUFFNUIsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFN0MsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUNSLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDOUIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUVsQixPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO3dHQWZVLGNBQWM7NEZBQWQsY0FBYyxvTUE5QmY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQsK0ZBckNTLFlBQVkscUhBQ1Y7WUFDVixPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUNkLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO29CQUM1QyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDaEgsQ0FBQzthQUNILENBQUM7U0FDSDs7NEZBK0JVLGNBQWM7a0JBM0MxQixTQUFTOytCQUNFLGFBQWEsY0FFWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsY0FDWDt3QkFDVixPQUFPLENBQUMsTUFBTSxFQUFFOzRCQUNkLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO2dDQUM1QyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs2QkFDaEgsQ0FBQzt5QkFDSCxDQUFDO3FCQUNILFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0QlQ7OEJBR1EsT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgY3ZhLCB0eXBlIFZhcmlhbnRQcm9wcyB9IGZyb20gJ2NsYXNzLXZhcmlhbmNlLWF1dGhvcml0eSc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuXG5jb25zdCBhbGVydFZhcmlhbnRzID0gY3ZhKFxuICBcInJlbGF0aXZlIHctZnVsbCByb3VuZGVkLWxnIGJvcmRlciBwLTQgWyY+aStkaXZdOnRyYW5zbGF0ZS15LVstM3B4XSBbJj5pXTphYnNvbHV0ZSBbJj5pXTpsZWZ0LTQgWyY+aV06dG9wLTQgWyY+aV06dGV4dC1mb3JlZ3JvdW5kIFsmPml+ZGl2XTpwbC03XCIsXG4gIHtcbiAgICB2YXJpYW50czoge1xuICAgICAgdmFyaWFudDoge1xuICAgICAgICBkZWZhdWx0OiBcImJnLWJhY2tncm91bmQgdGV4dC1mb3JlZ3JvdW5kXCIsXG4gICAgICAgIGRlc3RydWN0aXZlOiBcImJvcmRlci1kZXN0cnVjdGl2ZS81MCB0ZXh0LWRlc3RydWN0aXZlIFsmPmldOnRleHQtZGVzdHJ1Y3RpdmVcIixcbiAgICAgICAgc3VjY2VzczogXCJib3JkZXItc3VjY2Vzcy81MCB0ZXh0LXN1Y2Nlc3MgWyY+aV06dGV4dC1zdWNjZXNzXCIsXG4gICAgICAgIHdhcm5pbmc6IFwiYm9yZGVyLXdhcm5pbmcvNTAgdGV4dC13YXJuaW5nIFsmPmldOnRleHQtd2FybmluZ1wiLFxuICAgICAgICBpbmZvOiBcImJvcmRlci1pbmZvLzUwIHRleHQtaW5mbyBbJj5pXTp0ZXh0LWluZm9cIixcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZhdWx0VmFyaWFudHM6IHtcbiAgICAgIHZhcmlhbnQ6IFwiZGVmYXVsdFwiLFxuICAgIH0sXG4gIH1cbik7XG5cbnR5cGUgQWxlcnRWYXJpYW50cyA9IFZhcmlhbnRQcm9wczx0eXBlb2YgYWxlcnRWYXJpYW50cz47XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWFsZXJ0JyxcbiAgc3R5bGVzOiBbJzpob3N0IHsgZGlzcGxheTogYmxvY2s7IH0nXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdmYWRlJywgW1xuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3NjYWxlKDEpJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbi1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlKDAuOTUpJywgaGVpZ2h0OiAwLCBtYXJnaW46IDAsIHBhZGRpbmc6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhZGlzbWlzc2VkXCJcbiAgICAgIEBmYWRlXG4gICAgICBbY2xhc3NdPVwiY24oYWxlcnRWYXJpYW50cyh7IHZhcmlhbnQgfSksIGNsYXNzKVwiXG4gICAgICByb2xlPVwiYWxlcnRcIlxuICAgID5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpY29uXVwiPjwvbmctY29udGVudD5cblxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cImRpc21pc3NpYmxlXCJcbiAgICAgICAgKGNsaWNrKT1cImRpc21pc3MoKVwiXG4gICAgICAgIGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMiB0b3AtMiByb3VuZGVkLW1kIHAtMSBvcGFjaXR5LTcwIHJpbmctb2Zmc2V0LWJhY2tncm91bmQgdHJhbnNpdGlvbi1vcGFjaXR5IGhvdmVyOm9wYWNpdHktMTAwIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpyaW5nLTIgZm9jdXM6cmluZy1yaW5nIGZvY3VzOnJpbmctb2Zmc2V0LTJcIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJyaS1jbG9zZS1saW5lIHRleHQtbGdcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxoNSAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJtYi0xIGZvbnQtbWVkaXVtIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgIDwvaDU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIFsmX3BdOmxlYWRpbmctcmVsYXhlZCBvcGFjaXR5LTkwXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIEFsZXJ0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgdmFyaWFudDogQWxlcnRWYXJpYW50c1sndmFyaWFudCddID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNtaXNzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBvbkNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGRpc21pc3NlZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgYWxlcnRWYXJpYW50cyA9IGFsZXJ0VmFyaWFudHM7XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xuXG4gIGRpc21pc3MoKSB7XG4gICAgdGhpcy5kaXNtaXNzZWQgPSB0cnVlO1xuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,119 @@
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { cn } from './utils/cn';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class AspectRatioComponent {
7
+ cdr;
8
+ ratio = '16 / 9';
9
+ class = '';
10
+ container;
11
+ isLoading = true;
12
+ hasError = false;
13
+ cleanupListeners = [];
14
+ constructor(cdr) {
15
+ this.cdr = cdr;
16
+ }
17
+ ngAfterViewInit() {
18
+ const el = this.container.nativeElement;
19
+ // Use capture phase because load/error do not bubble
20
+ const onLoad = (event) => {
21
+ // Check if the event target is inside our container
22
+ if (el.contains(event.target)) {
23
+ this.onLoad();
24
+ }
25
+ };
26
+ const onError = (event) => {
27
+ if (el.contains(event.target)) {
28
+ this.onError();
29
+ }
30
+ };
31
+ el.addEventListener('load', onLoad, true);
32
+ el.addEventListener('error', onError, true);
33
+ this.cleanupListeners.push(() => {
34
+ el.removeEventListener('load', onLoad, true);
35
+ el.removeEventListener('error', onError, true);
36
+ });
37
+ // Check if there are even any media elements. If not, don't show loader.
38
+ // Or if images were already cached/loaded before AfterViewInit
39
+ setTimeout(() => {
40
+ const media = el.querySelectorAll('img, video, iframe');
41
+ if (media.length === 0) {
42
+ this.onLoad();
43
+ }
44
+ else {
45
+ // Double check if all images are already complete (cached)
46
+ const allComplete = Array.from(media).every(m => {
47
+ if (m instanceof HTMLImageElement)
48
+ return m.complete;
49
+ return false; // For video/iframe we wait for event
50
+ });
51
+ if (allComplete) {
52
+ this.onLoad();
53
+ }
54
+ }
55
+ }, 50);
56
+ }
57
+ onLoad() {
58
+ this.isLoading = false;
59
+ this.hasError = false;
60
+ this.cdr.detectChanges();
61
+ }
62
+ onError() {
63
+ this.isLoading = false;
64
+ this.hasError = true;
65
+ this.cdr.detectChanges();
66
+ }
67
+ ngOnDestroy() {
68
+ this.cleanupListeners.forEach(cleanup => cleanup());
69
+ }
70
+ cn = cn;
71
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AspectRatioComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
72
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: AspectRatioComponent, isStandalone: true, selector: "tolle-aspect-ratio", inputs: { ratio: "ratio", class: "class" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
73
+ <div
74
+ #container
75
+ [class]="cn('relative w-full overflow-hidden bg-muted/20', class)"
76
+ [style.aspect-ratio]="ratio"
77
+ >
78
+ <div *ngIf="isLoading && !hasError" class="absolute inset-0 z-10 animate-pulse bg-muted flex items-center justify-center">
79
+ <i class="ri-image-line text-muted-foreground/40 text-3xl"></i>
80
+ </div>
81
+
82
+ <div *ngIf="hasError" class="absolute inset-0 z-20 bg-secondary flex flex-col items-center justify-center gap-2">
83
+ <i class="ri-image-warning-line text-destructive text-2xl"></i>
84
+ <span class="text-[10px] font-medium uppercase tracking-wider text-muted-foreground">Failed to load</span>
85
+ </div>
86
+
87
+ <ng-content></ng-content>
88
+ </div>
89
+ `, isInline: true, styles: [":host{display:block;width:100%}:host ::ng-deep img,:host ::ng-deep video,:host ::ng-deep iframe{position:absolute;height:100%;width:100%;inset:0;object-fit:cover;transition:opacity .3s ease-in-out}:host ::ng-deep .aspect-ratio-content{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AspectRatioComponent, decorators: [{
92
+ type: Component,
93
+ args: [{ selector: 'tolle-aspect-ratio', standalone: true, imports: [CommonModule], template: `
94
+ <div
95
+ #container
96
+ [class]="cn('relative w-full overflow-hidden bg-muted/20', class)"
97
+ [style.aspect-ratio]="ratio"
98
+ >
99
+ <div *ngIf="isLoading && !hasError" class="absolute inset-0 z-10 animate-pulse bg-muted flex items-center justify-center">
100
+ <i class="ri-image-line text-muted-foreground/40 text-3xl"></i>
101
+ </div>
102
+
103
+ <div *ngIf="hasError" class="absolute inset-0 z-20 bg-secondary flex flex-col items-center justify-center gap-2">
104
+ <i class="ri-image-warning-line text-destructive text-2xl"></i>
105
+ <span class="text-[10px] font-medium uppercase tracking-wider text-muted-foreground">Failed to load</span>
106
+ </div>
107
+
108
+ <ng-content></ng-content>
109
+ </div>
110
+ `, styles: [":host{display:block;width:100%}:host ::ng-deep img,:host ::ng-deep video,:host ::ng-deep iframe{position:absolute;height:100%;width:100%;inset:0;object-fit:cover;transition:opacity .3s ease-in-out}:host ::ng-deep .aspect-ratio-content{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}\n"] }]
111
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { ratio: [{
112
+ type: Input
113
+ }], class: [{
114
+ type: Input
115
+ }], container: [{
116
+ type: ViewChild,
117
+ args: ['container']
118
+ }] } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNwZWN0LXJhdGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvbGxlL3NyYy9saWIvYXNwZWN0LXJhdGlvLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQTJELE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7QUFvRGhDLE1BQU0sT0FBTyxvQkFBb0I7SUFXWDtJQVZYLEtBQUssR0FBb0IsUUFBUSxDQUFDO0lBQ2xDLEtBQUssR0FBVyxFQUFFLENBQUM7SUFFSixTQUFTLENBQTJCO0lBRTVELFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVULGdCQUFnQixHQUFtQixFQUFFLENBQUM7SUFFOUMsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7SUFBSSxDQUFDO0lBRS9DLGVBQWU7UUFDYixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUV4QyxxREFBcUQ7UUFDckQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUM5QixvREFBb0Q7WUFDcEQsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFjLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFjLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzlCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgseUVBQXlFO1FBQ3pFLCtEQUErRDtRQUMvRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDeEQsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLDJEQUEyRDtnQkFDM0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzlDLElBQUksQ0FBQyxZQUFZLGdCQUFnQjt3QkFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUM7b0JBQ3JELE9BQU8sS0FBSyxDQUFDLENBQUMscUNBQXFDO2dCQUNyRCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFUyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQXpFUCxvQkFBb0I7NEZBQXBCLG9CQUFvQixrT0E5Q3JCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVCx1WUFsQlMsWUFBWTs7NEZBK0NYLG9CQUFvQjtrQkFsRGhDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCVDtzRkE4QlEsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFa0IsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtYXNwZWN0LXJhdGlvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgI2NvbnRhaW5lclxuICAgICAgW2NsYXNzXT1cImNuKCdyZWxhdGl2ZSB3LWZ1bGwgb3ZlcmZsb3ctaGlkZGVuIGJnLW11dGVkLzIwJywgY2xhc3MpXCJcbiAgICAgIFtzdHlsZS5hc3BlY3QtcmF0aW9dPVwicmF0aW9cIlxuICAgID5cbiAgICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmcgJiYgIWhhc0Vycm9yXCIgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIHotMTAgYW5pbWF0ZS1wdWxzZSBiZy1tdXRlZCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8aSBjbGFzcz1cInJpLWltYWdlLWxpbmUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kLzQwIHRleHQtM3hsXCI+PC9pPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJoYXNFcnJvclwiIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCB6LTIwIGJnLXNlY29uZGFyeSBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8aSBjbGFzcz1cInJpLWltYWdlLXdhcm5pbmctbGluZSB0ZXh0LWRlc3RydWN0aXZlIHRleHQtMnhsXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtWzEwcHhdIGZvbnQtbWVkaXVtIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5GYWlsZWQgdG8gbG9hZDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC8qIFRhcmdldCBlbGVtZW50cyBwcm9qZWN0ZWQgaW50byB0aGUgbmctY29udGVudCAqL1xuICAgIDpob3N0IDo6bmctZGVlcCBpbWcsXG4gICAgOmhvc3QgOjpuZy1kZWVwIHZpZGVvLFxuICAgIDpob3N0IDo6bmctZGVlcCBpZnJhbWUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBpbnNldDogMDtcbiAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0O1xuICAgIH1cblxuICAgIC8qIFRhcmdldCBkaXJlY3QgZGl2IHdyYXBwZXJzIGlmIG5lZWRlZCAqL1xuICAgIDpob3N0IDo6bmctZGVlcCAuYXNwZWN0LXJhdGlvLWNvbnRlbnQge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgaW5zZXQ6IDA7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgQXNwZWN0UmF0aW9Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSByYXRpbzogc3RyaW5nIHwgbnVtYmVyID0gJzE2IC8gOSc7XG4gIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSAnJztcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBpc0xvYWRpbmcgPSB0cnVlO1xuICBoYXNFcnJvciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY2xlYW51cExpc3RlbmVyczogKCgpID0+IHZvaWQpW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBVc2UgY2FwdHVyZSBwaGFzZSBiZWNhdXNlIGxvYWQvZXJyb3IgZG8gbm90IGJ1YmJsZVxuICAgIGNvbnN0IG9uTG9hZCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBldmVudCB0YXJnZXQgaXMgaW5zaWRlIG91ciBjb250YWluZXJcbiAgICAgIGlmIChlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgdGhpcy5vbkxvYWQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25FcnJvciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmIChlbC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcbiAgICAgICAgdGhpcy5vbkVycm9yKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWQsIHRydWUpO1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvciwgdHJ1ZSk7XG5cbiAgICB0aGlzLmNsZWFudXBMaXN0ZW5lcnMucHVzaCgoKSA9PiB7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgb25Mb2FkLCB0cnVlKTtcbiAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvciwgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgZXZlbiBhbnkgbWVkaWEgZWxlbWVudHMuIElmIG5vdCwgZG9uJ3Qgc2hvdyBsb2FkZXIuXG4gICAgLy8gT3IgaWYgaW1hZ2VzIHdlcmUgYWxyZWFkeSBjYWNoZWQvbG9hZGVkIGJlZm9yZSBBZnRlclZpZXdJbml0XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBtZWRpYSA9IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZywgdmlkZW8sIGlmcmFtZScpO1xuICAgICAgaWYgKG1lZGlhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLm9uTG9hZCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRG91YmxlIGNoZWNrIGlmIGFsbCBpbWFnZXMgYXJlIGFscmVhZHkgY29tcGxldGUgKGNhY2hlZClcbiAgICAgICAgY29uc3QgYWxsQ29tcGxldGUgPSBBcnJheS5mcm9tKG1lZGlhKS5ldmVyeShtID0+IHtcbiAgICAgICAgICBpZiAobSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpIHJldHVybiBtLmNvbXBsZXRlO1xuICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRm9yIHZpZGVvL2lmcmFtZSB3ZSB3YWl0IGZvciBldmVudFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGFsbENvbXBsZXRlKSB7XG4gICAgICAgICAgdGhpcy5vbkxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDUwKTtcbiAgfVxuXG4gIG9uTG9hZCgpIHtcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaGFzRXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBvbkVycm9yKCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5oYXNFcnJvciA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbGVhbnVwTGlzdGVuZXJzLmZvckVhY2goY2xlYW51cCA9PiBjbGVhbnVwKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG59XG4iXX0=