@testgorilla/tgo-ui 11.22.3 → 12.0.1

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 (225) hide show
  1. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs +335 -229
  2. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs.map +1 -1
  3. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs +547 -465
  4. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs.map +1 -1
  5. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs +160 -75
  6. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs.map +1 -1
  7. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs +678 -278
  8. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs.map +1 -1
  9. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +337 -274
  10. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
  11. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs +351 -192
  12. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs.map +1 -1
  13. package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs +1950 -960
  14. package/fesm2022/testgorilla-tgo-ui-components-autocomplete-v2.mjs.map +1 -1
  15. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +1206 -1044
  16. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -1
  17. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +328 -182
  18. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -1
  19. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs +383 -203
  20. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs.map +1 -1
  21. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +553 -261
  22. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
  23. package/fesm2022/testgorilla-tgo-ui-components-button.mjs +709 -739
  24. package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
  25. package/fesm2022/testgorilla-tgo-ui-components-card.mjs +219 -184
  26. package/fesm2022/testgorilla-tgo-ui-components-card.mjs.map +1 -1
  27. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs +515 -458
  28. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs.map +1 -1
  29. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs +423 -162
  30. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs.map +1 -1
  31. package/fesm2022/testgorilla-tgo-ui-components-core.mjs +10784 -10996
  32. package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +1 -1
  33. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs +810 -533
  34. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs.map +1 -1
  35. package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs +473 -116
  36. package/fesm2022/testgorilla-tgo-ui-components-device-control.mjs.map +1 -1
  37. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +1149 -540
  38. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
  39. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs +148 -84
  40. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs.map +1 -1
  41. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs +239 -142
  42. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs.map +1 -1
  43. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +599 -467
  44. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -1
  45. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs +126 -70
  46. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs.map +1 -1
  47. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +324 -329
  48. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -1
  49. package/fesm2022/testgorilla-tgo-ui-components-field.mjs +969 -648
  50. package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
  51. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs +553 -419
  52. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs.map +1 -1
  53. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +847 -452
  54. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
  55. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs +398 -302
  56. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs.map +1 -1
  57. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs +162 -95
  58. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs.map +1 -1
  59. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs +1825 -1795
  60. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs.map +1 -1
  61. package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs +1018 -672
  62. package/fesm2022/testgorilla-tgo-ui-components-infinite-scroll-table.mjs.map +1 -1
  63. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +758 -368
  64. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
  65. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs +204 -212
  66. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs.map +1 -1
  67. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs +183 -48
  68. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs.map +1 -1
  69. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs +243 -79
  70. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs.map +1 -1
  71. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs +751 -361
  72. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs.map +1 -1
  73. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs +1122 -385
  74. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs.map +1 -1
  75. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +689 -413
  76. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
  77. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs +227 -92
  78. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs.map +1 -1
  79. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs +174 -113
  80. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs.map +1 -1
  81. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs +367 -165
  82. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs.map +1 -1
  83. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs +253 -118
  84. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs.map +1 -1
  85. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs +730 -444
  86. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs.map +1 -1
  87. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs +533 -221
  88. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs.map +1 -1
  89. package/fesm2022/testgorilla-tgo-ui-components-popup-tip.mjs +274 -76
  90. package/fesm2022/testgorilla-tgo-ui-components-popup-tip.mjs.map +1 -1
  91. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs +184 -124
  92. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs.map +1 -1
  93. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +1223 -574
  94. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
  95. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +249 -160
  96. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
  97. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +447 -439
  98. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +1 -1
  99. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs +226 -150
  100. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs.map +1 -1
  101. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs +255 -67
  102. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs.map +1 -1
  103. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +205 -162
  104. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +1 -1
  105. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs +245 -153
  106. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs.map +1 -1
  107. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs +274 -140
  108. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs.map +1 -1
  109. package/fesm2022/testgorilla-tgo-ui-components-segmented-toggle.mjs +319 -147
  110. package/fesm2022/testgorilla-tgo-ui-components-segmented-toggle.mjs.map +1 -1
  111. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs +286 -84
  112. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs.map +1 -1
  113. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs +660 -208
  114. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs.map +1 -1
  115. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs +579 -320
  116. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs.map +1 -1
  117. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +419 -200
  118. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
  119. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs +132 -80
  120. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs.map +1 -1
  121. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +741 -390
  122. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -1
  123. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs +455 -329
  124. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs.map +1 -1
  125. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs +543 -514
  126. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs.map +1 -1
  127. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs +193 -104
  128. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs.map +1 -1
  129. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs +760 -524
  130. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs.map +1 -1
  131. package/fesm2022/testgorilla-tgo-ui-components-table.mjs +714 -415
  132. package/fesm2022/testgorilla-tgo-ui-components-table.mjs.map +1 -1
  133. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs +847 -438
  134. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs.map +1 -1
  135. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +535 -275
  136. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +1 -1
  137. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs +316 -246
  138. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs.map +1 -1
  139. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs +404 -284
  140. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs.map +1 -1
  141. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs +664 -383
  142. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs.map +1 -1
  143. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs +201 -112
  144. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs.map +1 -1
  145. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs +1014 -458
  146. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs.map +1 -1
  147. package/fesm2022/testgorilla-tgo-ui.mjs +147 -155
  148. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  149. package/mcp/catalog.json +1 -1
  150. package/package.json +16 -17
  151. package/projects/tgo-canopy-ui/theme/_palette.scss +23 -18
  152. package/types/testgorilla-tgo-ui-components-accordion.d.ts +214 -158
  153. package/types/testgorilla-tgo-ui-components-ai-audio-circle.d.ts +93 -69
  154. package/types/testgorilla-tgo-ui-components-ai-caveat.d.ts +37 -34
  155. package/types/testgorilla-tgo-ui-components-ai-feedback.d.ts +126 -86
  156. package/types/testgorilla-tgo-ui-components-alert-banner.d.ts +260 -185
  157. package/types/testgorilla-tgo-ui-components-audio-waveform.d.ts +96 -67
  158. package/types/testgorilla-tgo-ui-components-autocomplete-v2.d.ts +455 -256
  159. package/types/testgorilla-tgo-ui-components-autocomplete.d.ts +545 -390
  160. package/types/testgorilla-tgo-ui-components-avatar.d.ts +128 -102
  161. package/types/testgorilla-tgo-ui-components-badge.d.ts +191 -139
  162. package/types/testgorilla-tgo-ui-components-breadcrumb.d.ts +100 -62
  163. package/types/testgorilla-tgo-ui-components-button.d.ts +479 -340
  164. package/types/testgorilla-tgo-ui-components-card.d.ts +153 -114
  165. package/types/testgorilla-tgo-ui-components-checkbox.d.ts +299 -223
  166. package/types/testgorilla-tgo-ui-components-checklist.d.ts +149 -97
  167. package/types/testgorilla-tgo-ui-components-core.d.ts +307 -295
  168. package/types/testgorilla-tgo-ui-components-datepicker.d.ts +404 -299
  169. package/types/testgorilla-tgo-ui-components-device-control.d.ts +151 -81
  170. package/types/testgorilla-tgo-ui-components-dialog.d.ts +442 -329
  171. package/types/testgorilla-tgo-ui-components-divider.d.ts +64 -51
  172. package/types/testgorilla-tgo-ui-components-donut-chart.d.ts +41 -37
  173. package/types/testgorilla-tgo-ui-components-dropdown.d.ts +335 -241
  174. package/types/testgorilla-tgo-ui-components-elevation-shadow.d.ts +48 -43
  175. package/types/testgorilla-tgo-ui-components-empty-state.d.ts +317 -215
  176. package/types/testgorilla-tgo-ui-components-field.d.ts +559 -388
  177. package/types/testgorilla-tgo-ui-components-file-upload.d.ts +230 -168
  178. package/types/testgorilla-tgo-ui-components-filter-button.d.ts +263 -206
  179. package/types/testgorilla-tgo-ui-components-gaussian-chart.d.ts +107 -94
  180. package/types/testgorilla-tgo-ui-components-icon-label.d.ts +84 -61
  181. package/types/testgorilla-tgo-ui-components-icon.d.ts +137 -110
  182. package/types/testgorilla-tgo-ui-components-infinite-scroll-table.d.ts +429 -303
  183. package/types/testgorilla-tgo-ui-components-inline-field.d.ts +338 -254
  184. package/types/testgorilla-tgo-ui-components-logo.d.ts +119 -101
  185. package/types/testgorilla-tgo-ui-components-media-card.d.ts +51 -35
  186. package/types/testgorilla-tgo-ui-components-media-dialog.d.ts +40 -45
  187. package/types/testgorilla-tgo-ui-components-multi-input.d.ts +283 -194
  188. package/types/testgorilla-tgo-ui-components-navbar.d.ts +326 -208
  189. package/types/testgorilla-tgo-ui-components-overflow-menu.d.ts +276 -204
  190. package/types/testgorilla-tgo-ui-components-page-header.d.ts +67 -50
  191. package/types/testgorilla-tgo-ui-components-paginator.d.ts +103 -70
  192. package/types/testgorilla-tgo-ui-components-password-criteria.d.ts +67 -58
  193. package/types/testgorilla-tgo-ui-components-password-strength.d.ts +66 -57
  194. package/types/testgorilla-tgo-ui-components-phone-input.d.ts +217 -175
  195. package/types/testgorilla-tgo-ui-components-popover.d.ts +94 -53
  196. package/types/testgorilla-tgo-ui-components-popup-tip.d.ts +81 -44
  197. package/types/testgorilla-tgo-ui-components-progress-bar.d.ts +115 -84
  198. package/types/testgorilla-tgo-ui-components-prompt.d.ts +315 -219
  199. package/types/testgorilla-tgo-ui-components-radial-progress.d.ts +146 -107
  200. package/types/testgorilla-tgo-ui-components-radio-button.d.ts +296 -219
  201. package/types/testgorilla-tgo-ui-components-rating.d.ts +134 -95
  202. package/types/testgorilla-tgo-ui-components-scale-table.d.ts +67 -47
  203. package/types/testgorilla-tgo-ui-components-scale.d.ts +91 -66
  204. package/types/testgorilla-tgo-ui-components-segmented-bar.d.ts +118 -89
  205. package/types/testgorilla-tgo-ui-components-segmented-button.d.ts +107 -80
  206. package/types/testgorilla-tgo-ui-components-segmented-toggle.d.ts +138 -105
  207. package/types/testgorilla-tgo-ui-components-selectable-card.d.ts +90 -56
  208. package/types/testgorilla-tgo-ui-components-side-navigation.d.ts +183 -107
  209. package/types/testgorilla-tgo-ui-components-side-panel.d.ts +156 -145
  210. package/types/testgorilla-tgo-ui-components-side-sheet.d.ts +98 -89
  211. package/types/testgorilla-tgo-ui-components-skeleton.d.ts +50 -33
  212. package/types/testgorilla-tgo-ui-components-slider.d.ts +278 -198
  213. package/types/testgorilla-tgo-ui-components-snackbar.d.ts +211 -159
  214. package/types/testgorilla-tgo-ui-components-spider-chart.d.ts +140 -121
  215. package/types/testgorilla-tgo-ui-components-spinner.d.ts +93 -72
  216. package/types/testgorilla-tgo-ui-components-stepper.d.ts +480 -338
  217. package/types/testgorilla-tgo-ui-components-table.d.ts +280 -233
  218. package/types/testgorilla-tgo-ui-components-tabs.d.ts +282 -183
  219. package/types/testgorilla-tgo-ui-components-tag.d.ts +266 -193
  220. package/types/testgorilla-tgo-ui-components-toggle.d.ts +180 -132
  221. package/types/testgorilla-tgo-ui-components-tooltip.d.ts +142 -105
  222. package/types/testgorilla-tgo-ui-components-universal-skills.d.ts +165 -144
  223. package/types/testgorilla-tgo-ui-components-validation-error.d.ts +70 -51
  224. package/types/testgorilla-tgo-ui-components-write-with-ai.d.ts +210 -133
  225. package/types/testgorilla-tgo-ui.d.ts +52 -45
@@ -1 +1 @@
1
- {"version":3,"file":"testgorilla-tgo-ui-components-side-panel.mjs","sources":["../../../components/side-panel/side-panel.model.ts","../../../components/side-panel/side-panel.animations.ts","../../../components/side-panel/side-panel-data-injection-token.ts","../../../components/side-panel/side-panel.service.ts","../../../components/side-panel/side-panel.component.ts","../../../components/side-panel/side-panel.component.html","../../../components/side-panel/side-panel-footer.directive.ts","../../../components/side-panel/side-panel-view.component.ts","../../../components/side-panel/side-panel-view.component.html","../../../components/side-panel/testgorilla-tgo-ui-components-side-panel.ts"],"sourcesContent":["import { InjectionToken, OutputEmitterRef, Signal, TemplateRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type SidePanelPosition = 'left' | 'right';\n\nexport enum SidePanelAnimationState {\n Open = 'open',\n Closed = 'closed',\n ClosedRight = 'closedRight',\n ClosedLeft = 'closedLeft',\n}\n\nexport type SidePanelSize = 'small' | 'large' | 'x-large';\n\n/**\n * What a `ui-side-panel-view` registers with the surrounding `SidePanelComponent`. The panel\n * types its registration against this rather than importing the view component, which keeps\n * the two files free of a runtime import cycle. `undefined` means \"falls back to the config\".\n */\nexport interface SidePanelViewRef {\n readonly title: Signal<string | undefined>;\n readonly showBackButton: Signal<boolean | undefined>;\n readonly footerTemplate: Signal<TemplateRef<unknown> | null>;\n readonly footerDivider: Signal<boolean>;\n readonly fillHeight: Signal<boolean>;\n readonly back: OutputEmitterRef<void>;\n}\n\nexport class SidePanelConfig {\n title: string;\n position: SidePanelPosition;\n showBackButton: boolean;\n data?: unknown;\n showCloseButton?: boolean;\n showHeader?: boolean;\n panelClass?: string;\n size?: SidePanelSize;\n testId?: string;\n}\n\nexport const defaultSidePanelConfig: SidePanelConfig = {\n position: 'right',\n showBackButton: false,\n title: '',\n data: undefined,\n showHeader: true,\n showCloseButton: true,\n size: 'small',\n};\n\nexport const SIDE_PANEL_CONFIG = new InjectionToken<SidePanelConfig>('SIDE_PANEL_CONFIG', {\n providedIn: 'root',\n factory: () => defaultSidePanelConfig,\n});\n\n/**\n * Reference to a side panel opened via the SidePanelService.\n * Similar to MatDialogRef from Angular Material.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialogRef<T, R = any>: untyped-by-default result/component types for consumer ergonomics; the ref is invariant in T/R so `unknown` defaults would break internal ref storage in SidePanelService\nexport class SidePanelRef<T = any, R = any> {\n private readonly _afterClosed = new Subject<T | undefined>();\n\n /**\n * Instance of the component loaded into the side panel.\n * Will be undefined if a TemplateRef was used instead of a component.\n */\n componentInstance?: R;\n\n /**\n * Observable that emits when the side panel is closed.\n * Emits the result passed to the close method, or undefined if no result was provided.\n */\n afterClosed(): Observable<T | undefined> {\n return this._afterClosed.asObservable();\n }\n\n /**\n * Closes the side panel with an optional result.\n * @param result Optional data to be emitted via afterClosed()\n */\n close(_result?: T): void {\n // This will be overridden by the service\n }\n\n /** @internal */\n _emitClose(result?: T): void {\n this._afterClosed.next(result);\n this._afterClosed.complete();\n }\n}\n","/* eslint-disable @typescript-eslint/no-deprecated -- the @angular/animations trigger/state/style/animate/transition DSL is deprecated in 20.2 in favor of template-level animate.enter/animate.leave; migrating every Material/component animation is out of scope for this lint pass */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { SidePanelAnimationState } from './side-panel.model';\n\nexport const sidePanelAnimationDuration = 150;\n\nexport const sidePanelAnimation = [\n trigger('slideInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ transform: 'translateX(0)' })),\n state(`${SidePanelAnimationState.ClosedRight}`, style({ transform: 'translateX(100%)' })),\n state(`${SidePanelAnimationState.ClosedLeft}`, style({ transform: 'translateX(-100%)' })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedRight}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedLeft}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n\nexport const backdropAnimation = [\n trigger('fadeInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ opacity: 0.25 })),\n state(`${SidePanelAnimationState.Closed}`, style({ opacity: 0 })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.Closed}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDE_PANEL_DATA = new InjectionToken<unknown>('SIDE_PANEL_DATA');\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { SIDE_PANEL_DATA } from './side-panel-data-injection-token';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SIDE_PANEL_CONFIG, SidePanelConfig, SidePanelPosition, SidePanelRef } from './side-panel.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidePanelService {\n private SidePanelComponentRef?: ComponentRef<SidePanelComponent>;\n private contentComponentRef?: ComponentRef<unknown>;\n private embeddedViewRef?: EmbeddedViewRef<unknown>;\n private currentSidePanelRef?: SidePanelRef;\n private readonly defaultSidePanelConfig: SidePanelConfig = inject(SIDE_PANEL_CONFIG);\n private readonly injector = inject(EnvironmentInjector);\n private readonly appRef = inject(ApplicationRef);\n\n constructor() {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, R = any>: the returned ref's data/component types are untyped-by-default for consumer ergonomics\n open<T = any, R = any>(\n content: Type<R> | TemplateRef<unknown>,\n config: Partial<SidePanelConfig>,\n parentInjector?: Injector\n ): SidePanelRef<T, R> {\n const panelConfig: SidePanelConfig = { ...this.defaultSidePanelConfig, ...config };\n\n const sidePanelRef = new SidePanelRef<T, R>();\n this.currentSidePanelRef = sidePanelRef;\n\n sidePanelRef.close = (result?: T) => {\n this.close(result);\n };\n\n if (!this.SidePanelComponentRef) {\n const injector = this.createSidePanelInjector(panelConfig, parentInjector);\n const SidePanelComponentRef = this.createSidePanelComponent(panelConfig.position, injector);\n this.SidePanelComponentRef = SidePanelComponentRef;\n }\n\n if (content instanceof TemplateRef) {\n this.loadTemplate(content);\n } else {\n this.loadComponent(content, sidePanelRef);\n }\n\n this.SidePanelComponentRef.instance.open();\n\n return sidePanelRef;\n }\n\n close(result?: unknown): void {\n if (this.SidePanelComponentRef) {\n this.SidePanelComponentRef.instance.close(result);\n }\n }\n\n destroyComponent(result?: unknown): void {\n if (this.currentSidePanelRef) {\n // eslint-disable-next-line no-underscore-dangle -- _emitClose is SidePanelRef's @internal API (mirrors MatDialogRef internals)\n this.currentSidePanelRef._emitClose(result);\n this.currentSidePanelRef = undefined;\n }\n\n if (this.SidePanelComponentRef) {\n this.appRef.detachView(this.SidePanelComponentRef.hostView);\n this.SidePanelComponentRef.destroy();\n this.SidePanelComponentRef = undefined;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.destroy();\n this.contentComponentRef = undefined;\n }\n }\n\n private createSidePanelInjector(config: SidePanelConfig, parentInjector?: Injector): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: SidePanelConfig, useValue: config },\n { provide: SIDE_PANEL_DATA, useValue: config.data },\n ],\n });\n }\n\n private createSidePanelComponent(position: SidePanelPosition, injector: Injector): ComponentRef<SidePanelComponent> {\n const sidePanelComponentRef = createComponent(SidePanelComponent, {\n environmentInjector: this.injector,\n elementInjector: injector,\n });\n\n this.appRef.attachView(sidePanelComponentRef.hostView);\n\n const sidePanelEl = (sidePanelComponentRef.hostView as EmbeddedViewRef<unknown>).rootNodes[0] as HTMLElement;\n sidePanelEl.querySelector('.side-panel')?.classList.add(position);\n\n document.body.appendChild(sidePanelEl);\n\n return sidePanelComponentRef;\n }\n\n private loadComponent<T, R>(component: Type<R>, sidePanelRef: SidePanelRef<T, R>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.contentComponentRef = viewContainerRef().createComponent(component);\n // Set the component instance on the SidePanelRef\n sidePanelRef.componentInstance = this.contentComponentRef.instance as R;\n }\n }\n\n private loadTemplate(template: TemplateRef<unknown>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.embeddedViewRef = viewContainerRef().createEmbeddedView(template);\n }\n }\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe, LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\n\nimport { backdropAnimation, sidePanelAnimation, sidePanelAnimationDuration } from './side-panel.animations';\nimport {\n SidePanelAnimationState,\n SidePanelConfig,\n SidePanelPosition,\n SidePanelSize,\n SidePanelViewRef,\n} from './side-panel.model';\nimport { SidePanelService } from './side-panel.service';\n\n@Component({\n selector: 'ui-side-panel',\n templateUrl: './side-panel.component.html',\n styleUrls: ['./side-panel.component.scss'],\n animations: [sidePanelAnimation, backdropAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass, NgTemplateOutlet],\n})\nexport class SidePanelComponent {\n private readonly sidePanelService = inject(SidePanelService);\n public sidePanelConfig = inject(SidePanelConfig);\n\n sidePanelPosition = signal<SidePanelPosition>('right');\n\n sidePanelContainer = viewChild.required('sidePanelContainer', { read: ViewContainerRef });\n sidePanel = viewChild.required<ElementRef<HTMLDivElement>>('sidePanel');\n backdrop = viewChild.required<ElementRef<HTMLDivElement>>('sidePanelBackdrop');\n language = LanguageService.defaultLanguage;\n isOpen = signal<boolean>(false);\n size = signal<SidePanelSize | undefined>(undefined);\n isSmall = computed(() => this.size() === 'small');\n isLarge = computed(() => this.size() === 'large');\n isXLarge = computed(() => this.size() === 'x-large');\n\n private readonly activeView = signal<SidePanelViewRef | null>(null);\n\n // The active view owns the header and the footer while it is registered, falling back to the config.\n protected readonly headerTitle = computed(() => this.activeView()?.title() ?? this.sidePanelConfig.title);\n\n protected readonly showBackButton = computed(\n () => this.activeView()?.showBackButton() ?? this.sidePanelConfig.showBackButton\n );\n\n protected readonly footerTemplate = computed(() => this.activeView()?.footerTemplate() ?? null);\n\n /** A view owns the back button only when it asked for one; otherwise the config did. */\n private readonly viewOwnsBackButton = computed(() => this.activeView()?.showBackButton() !== undefined);\n\n protected readonly footerDivider = computed(() => this.activeView()?.footerDivider() ?? false);\n\n protected readonly fillHeight = computed(() => this.activeView()?.fillHeight() ?? false);\n\n animation = computed(() => {\n if (this.isOpen()) {\n return SidePanelAnimationState.Open;\n }\n\n return this.sidePanelPosition() === 'left'\n ? SidePanelAnimationState.ClosedLeft\n : SidePanelAnimationState.ClosedRight;\n });\n\n // The config is injected once per panel and never mutated, so plain readonly fields suffice.\n protected readonly closeButtonTestId = this.sidePanelConfig.testId ? `${this.sidePanelConfig.testId}-close` : null;\n protected readonly backButtonTestId = this.sidePanelConfig.testId ? `${this.sidePanelConfig.testId}-back` : null;\n\n constructor() {\n const { position, size } = this.sidePanelConfig;\n this.sidePanelPosition.set(position);\n this.size.set(size);\n }\n\n /** The last view to register wins, so a control-flow swap in either order ends up correct. */\n registerView(view: SidePanelViewRef): void {\n this.activeView.set(view);\n }\n\n /** Guarded by identity so a view destroyed after its successor was created cannot unseat it. */\n unregisterView(view: SidePanelViewRef): void {\n if (this.activeView() === view) {\n this.activeView.set(null);\n }\n }\n\n /**\n * The action follows whoever asked for the button, so that a consumer who leaves the flag in the\n * config and adopts a view for its footer gets the old close behaviour rather than a dead button.\n */\n protected onBack(): void {\n const view = this.activeView();\n if (view && this.viewOwnsBackButton()) {\n view.back.emit();\n\n return;\n }\n\n this.close();\n }\n\n open(): void {\n setTimeout(() => {\n this.isOpen.set(true);\n });\n }\n\n close(result?: unknown): void {\n this.isOpen.set(false);\n setTimeout(() => {\n this.sidePanelService.destroyComponent(result);\n }, sidePanelAnimationDuration);\n }\n}\n","<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n [class.side-panel-x-large]=\"isXLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n [attr.data-testid]=\"sidePanelConfig.testId ?? null\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (showBackButton()) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"onBack()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [testId]=\"backButtonTestId\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ headerTitle() }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n [testId]=\"closeButtonTestId\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\" [class.side-panel-content-fill]=\"fillHeight()\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n\n @if (footerTemplate(); as footer) {\n <div class=\"side-panel-footer\" [class.side-panel-footer-divided]=\"footerDivider()\">\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n }\n</div>\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/** Marks the `ng-template` inside a `ui-side-panel-view` that holds the view's footer. */\n@Directive({\n selector: 'ng-template[uiSidePanelFooter]',\n standalone: true,\n})\nexport class SidePanelFooterDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n inject,\n input,\n output,\n} from '@angular/core';\n\nimport { SidePanelFooterDirective } from './side-panel-footer.directive';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SidePanelViewRef } from './side-panel.model';\n\n// `undefined` has to survive so the panel can tell \"not set by this view\" apart from an\n// explicit `false` and fall back to `SidePanelConfig`.\nfunction optionalBooleanAttribute(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\n/**\n * One view inside a side panel: its body, its header title and its footer. Render a different\n * one per step to switch views without reopening the panel.\n */\n@Component({\n selector: 'ui-side-panel-view',\n templateUrl: './side-panel-view.component.html',\n styleUrls: ['./side-panel-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n '[class.side-panel-view-fill]': 'fillHeight()',\n // `title` is a global HTML attribute and Angular keeps a statically set one on the host, so\n // `<ui-side-panel-view title=\"...\">` would hang a native tooltip over the whole view body.\n '[attr.title]': 'null',\n },\n})\nexport class SidePanelViewComponent implements SidePanelViewRef {\n /** Left unset, the panel keeps the title from `SidePanelConfig`. */\n readonly title = input<string>();\n\n /** Left unset, the panel falls back to `SidePanelConfig.showBackButton`. */\n readonly showBackButton = input(undefined, { transform: optionalBooleanAttribute });\n\n /** Draws a rule above the footer, separating it from content that scrolls underneath. */\n readonly footerDivider = input(false, { transform: booleanAttribute });\n\n /**\n * Makes the view fill the panel body instead of growing with its content, and stops the panel\n * scrolling. Content then owns its own overflow — give the element that should scroll\n * `flex: 1; min-height: 0; overflow: auto`, or `height: 100%`.\n */\n readonly fillHeight = input(false, { transform: booleanAttribute });\n\n /** The panel does not close itself — move to the previous view, or close it yourself. */\n readonly back = output<void>();\n\n private readonly footer = contentChild(SidePanelFooterDirective);\n\n readonly footerTemplate = computed(() => this.footer()?.templateRef ?? null);\n\n private readonly panel = inject(SidePanelComponent, { optional: true });\n\n constructor() {\n this.panel?.registerView(this);\n inject(DestroyRef).onDestroy(() => this.panel?.unregisterView(this));\n }\n}\n","<ng-content></ng-content>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testgorilla-tgo-ui-components-side-panel.mjs","names":[],"sources":["../../../components/side-panel/side-panel.model.ts","../../../components/side-panel/side-panel.animations.ts","../../../components/side-panel/side-panel-data-injection-token.ts","../../../components/side-panel/side-panel.service.ts","../../../components/side-panel/side-panel.component.ts","../../../components/side-panel/side-panel.component.html","../../../components/side-panel/side-panel-footer.directive.ts","../../../components/side-panel/side-panel-view.component.ts","../../../components/side-panel/side-panel-view.component.html"],"sourcesContent":["import { InjectionToken, OutputEmitterRef, Signal, TemplateRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport type SidePanelPosition = 'left' | 'right';\n\nexport enum SidePanelAnimationState {\n Open = 'open',\n Closed = 'closed',\n ClosedRight = 'closedRight',\n ClosedLeft = 'closedLeft',\n}\n\nexport type SidePanelSize = 'small' | 'large' | 'x-large';\n\n/**\n * What a `ui-side-panel-view` registers with the surrounding `SidePanelComponent`. The panel\n * types its registration against this rather than importing the view component, which keeps\n * the two files free of a runtime import cycle. `undefined` means \"falls back to the config\".\n */\nexport interface SidePanelViewRef {\n readonly title: Signal<string | undefined>;\n readonly showBackButton: Signal<boolean | undefined>;\n readonly footerTemplate: Signal<TemplateRef<unknown> | null>;\n readonly footerDivider: Signal<boolean>;\n readonly fillHeight: Signal<boolean>;\n readonly back: OutputEmitterRef<void>;\n}\n\nexport class SidePanelConfig {\n title: string;\n position: SidePanelPosition;\n showBackButton: boolean;\n data?: unknown;\n showCloseButton?: boolean;\n showHeader?: boolean;\n panelClass?: string;\n size?: SidePanelSize;\n testId?: string;\n}\n\nexport const defaultSidePanelConfig: SidePanelConfig = {\n position: 'right',\n showBackButton: false,\n title: '',\n data: undefined,\n showHeader: true,\n showCloseButton: true,\n size: 'small',\n};\n\nexport const SIDE_PANEL_CONFIG = new InjectionToken<SidePanelConfig>('SIDE_PANEL_CONFIG', {\n providedIn: 'root',\n factory: () => defaultSidePanelConfig,\n});\n\n/**\n * Reference to a side panel opened via the SidePanelService.\n * Similar to MatDialogRef from Angular Material.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialogRef<T, R = any>: untyped-by-default result/component types for consumer ergonomics; the ref is invariant in T/R so `unknown` defaults would break internal ref storage in SidePanelService\nexport class SidePanelRef<T = any, R = any> {\n private readonly _afterClosed = new Subject<T | undefined>();\n\n /**\n * Instance of the component loaded into the side panel.\n * Will be undefined if a TemplateRef was used instead of a component.\n */\n componentInstance?: R;\n\n /**\n * Observable that emits when the side panel is closed.\n * Emits the result passed to the close method, or undefined if no result was provided.\n */\n afterClosed(): Observable<T | undefined> {\n return this._afterClosed.asObservable();\n }\n\n /**\n * Closes the side panel with an optional result.\n * @param result Optional data to be emitted via afterClosed()\n */\n close(_result?: T): void {\n // This will be overridden by the service\n }\n\n /** @internal */\n _emitClose(result?: T): void {\n this._afterClosed.next(result);\n this._afterClosed.complete();\n }\n}\n","/* eslint-disable @typescript-eslint/no-deprecated -- the @angular/animations trigger/state/style/animate/transition DSL is deprecated in 20.2 in favor of template-level animate.enter/animate.leave; migrating every Material/component animation is out of scope for this lint pass */\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nimport { SidePanelAnimationState } from './side-panel.model';\n\nexport const sidePanelAnimationDuration = 150;\n\nexport const sidePanelAnimation = [\n trigger('slideInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ transform: 'translateX(0)' })),\n state(`${SidePanelAnimationState.ClosedRight}`, style({ transform: 'translateX(100%)' })),\n state(`${SidePanelAnimationState.ClosedLeft}`, style({ transform: 'translateX(-100%)' })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedRight}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.ClosedLeft}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n\nexport const backdropAnimation = [\n trigger('fadeInOut', [\n state(`${SidePanelAnimationState.Open}`, style({ opacity: 0.25 })),\n state(`${SidePanelAnimationState.Closed}`, style({ opacity: 0 })),\n transition(`${SidePanelAnimationState.Open} <=> ${SidePanelAnimationState.Closed}`, [\n animate(`${sidePanelAnimationDuration}ms ease-in-out`),\n ]),\n ]),\n];\n","import { InjectionToken } from '@angular/core';\n\nexport const SIDE_PANEL_DATA = new InjectionToken<unknown>('SIDE_PANEL_DATA');\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EmbeddedViewRef,\n EnvironmentInjector,\n inject,\n Injectable,\n Injector,\n TemplateRef,\n Type,\n} from '@angular/core';\n\nimport { SIDE_PANEL_DATA } from './side-panel-data-injection-token';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SIDE_PANEL_CONFIG, SidePanelConfig, SidePanelPosition, SidePanelRef } from './side-panel.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SidePanelService {\n private SidePanelComponentRef?: ComponentRef<SidePanelComponent>;\n private contentComponentRef?: ComponentRef<unknown>;\n private embeddedViewRef?: EmbeddedViewRef<unknown>;\n private currentSidePanelRef?: SidePanelRef;\n private readonly defaultSidePanelConfig: SidePanelConfig = inject(SIDE_PANEL_CONFIG);\n private readonly injector = inject(EnvironmentInjector);\n private readonly appRef = inject(ApplicationRef);\n\n constructor() {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mirrors MatDialog.open<T, R = any>: the returned ref's data/component types are untyped-by-default for consumer ergonomics\n open<T = any, R = any>(\n content: Type<R> | TemplateRef<unknown>,\n config: Partial<SidePanelConfig>,\n parentInjector?: Injector\n ): SidePanelRef<T, R> {\n const panelConfig: SidePanelConfig = { ...this.defaultSidePanelConfig, ...config };\n\n const sidePanelRef = new SidePanelRef<T, R>();\n this.currentSidePanelRef = sidePanelRef;\n\n sidePanelRef.close = (result?: T) => {\n this.close(result);\n };\n\n if (!this.SidePanelComponentRef) {\n const injector = this.createSidePanelInjector(panelConfig, parentInjector);\n const SidePanelComponentRef = this.createSidePanelComponent(panelConfig.position, injector);\n this.SidePanelComponentRef = SidePanelComponentRef;\n }\n\n if (content instanceof TemplateRef) {\n this.loadTemplate(content);\n } else {\n this.loadComponent(content, sidePanelRef);\n }\n\n this.SidePanelComponentRef.instance.open();\n\n return sidePanelRef;\n }\n\n close(result?: unknown): void {\n if (this.SidePanelComponentRef) {\n this.SidePanelComponentRef.instance.close(result);\n }\n }\n\n destroyComponent(result?: unknown): void {\n if (this.currentSidePanelRef) {\n // eslint-disable-next-line no-underscore-dangle -- _emitClose is SidePanelRef's @internal API (mirrors MatDialogRef internals)\n this.currentSidePanelRef._emitClose(result);\n this.currentSidePanelRef = undefined;\n }\n\n if (this.SidePanelComponentRef) {\n this.appRef.detachView(this.SidePanelComponentRef.hostView);\n this.SidePanelComponentRef.destroy();\n this.SidePanelComponentRef = undefined;\n }\n\n if (this.contentComponentRef) {\n this.contentComponentRef.destroy();\n this.contentComponentRef = undefined;\n }\n }\n\n private createSidePanelInjector(config: SidePanelConfig, parentInjector?: Injector): Injector {\n return Injector.create({\n parent: parentInjector,\n providers: [\n { provide: SidePanelConfig, useValue: config },\n { provide: SIDE_PANEL_DATA, useValue: config.data },\n ],\n });\n }\n\n private createSidePanelComponent(position: SidePanelPosition, injector: Injector): ComponentRef<SidePanelComponent> {\n const sidePanelComponentRef = createComponent(SidePanelComponent, {\n environmentInjector: this.injector,\n elementInjector: injector,\n });\n\n this.appRef.attachView(sidePanelComponentRef.hostView);\n\n const sidePanelEl = (sidePanelComponentRef.hostView as EmbeddedViewRef<unknown>).rootNodes[0] as HTMLElement;\n sidePanelEl.querySelector('.side-panel')?.classList.add(position);\n\n document.body.appendChild(sidePanelEl);\n\n return sidePanelComponentRef;\n }\n\n private loadComponent<T, R>(component: Type<R>, sidePanelRef: SidePanelRef<T, R>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.contentComponentRef = viewContainerRef().createComponent(component);\n // Set the component instance on the SidePanelRef\n sidePanelRef.componentInstance = this.contentComponentRef.instance as R;\n }\n }\n\n private loadTemplate(template: TemplateRef<unknown>): void {\n const viewContainerRef = this.SidePanelComponentRef?.instance.sidePanelContainer;\n if (viewContainerRef) {\n viewContainerRef().clear();\n this.embeddedViewRef = viewContainerRef().createEmbeddedView(template);\n }\n }\n}\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n signal,\n viewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { UiTranslatePipe, LanguageService } from '@testgorilla/tgo-ui/components/core';\nimport { TooltipComponentModule } from '@testgorilla/tgo-ui/components/tooltip';\n\nimport { backdropAnimation, sidePanelAnimation, sidePanelAnimationDuration } from './side-panel.animations';\nimport {\n SidePanelAnimationState,\n SidePanelConfig,\n SidePanelPosition,\n SidePanelSize,\n SidePanelViewRef,\n} from './side-panel.model';\nimport { SidePanelService } from './side-panel.service';\n\n@Component({\n selector: 'ui-side-panel',\n templateUrl: './side-panel.component.html',\n styleUrls: ['./side-panel.component.scss'],\n // eslint-disable-next-line @typescript-eslint/no-deprecated -- the @angular/animations DSL is deprecated in 20.2 in favor of template-level animate.enter/animate.leave; migrating every component animation is out of scope for the Angular 22 upgrade\n animations: [sidePanelAnimation, backdropAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TooltipComponentModule, ButtonComponentModule, UiTranslatePipe, AsyncPipe, NgClass, NgTemplateOutlet],\n})\nexport class SidePanelComponent {\n private readonly sidePanelService = inject(SidePanelService);\n public sidePanelConfig = inject(SidePanelConfig);\n\n sidePanelPosition = signal<SidePanelPosition>('right');\n\n sidePanelContainer = viewChild.required('sidePanelContainer', { read: ViewContainerRef });\n sidePanel = viewChild.required<ElementRef<HTMLDivElement>>('sidePanel');\n backdrop = viewChild.required<ElementRef<HTMLDivElement>>('sidePanelBackdrop');\n language = LanguageService.defaultLanguage;\n isOpen = signal<boolean>(false);\n size = signal<SidePanelSize | undefined>(undefined);\n isSmall = computed(() => this.size() === 'small');\n isLarge = computed(() => this.size() === 'large');\n isXLarge = computed(() => this.size() === 'x-large');\n\n private readonly activeView = signal<SidePanelViewRef | null>(null);\n\n // The active view owns the header and the footer while it is registered, falling back to the config.\n protected readonly headerTitle = computed(() => this.activeView()?.title() ?? this.sidePanelConfig.title);\n\n protected readonly showBackButton = computed(\n () => this.activeView()?.showBackButton() ?? this.sidePanelConfig.showBackButton\n );\n\n protected readonly footerTemplate = computed(() => this.activeView()?.footerTemplate() ?? null);\n\n /** A view owns the back button only when it asked for one; otherwise the config did. */\n private readonly viewOwnsBackButton = computed(() => this.activeView()?.showBackButton() !== undefined);\n\n protected readonly footerDivider = computed(() => this.activeView()?.footerDivider() ?? false);\n\n protected readonly fillHeight = computed(() => this.activeView()?.fillHeight() ?? false);\n\n animation = computed(() => {\n if (this.isOpen()) {\n return SidePanelAnimationState.Open;\n }\n\n return this.sidePanelPosition() === 'left'\n ? SidePanelAnimationState.ClosedLeft\n : SidePanelAnimationState.ClosedRight;\n });\n\n // The config is injected once per panel and never mutated, so plain readonly fields suffice.\n protected readonly closeButtonTestId = this.sidePanelConfig.testId ? `${this.sidePanelConfig.testId}-close` : null;\n protected readonly backButtonTestId = this.sidePanelConfig.testId ? `${this.sidePanelConfig.testId}-back` : null;\n\n constructor() {\n const { position, size } = this.sidePanelConfig;\n this.sidePanelPosition.set(position);\n this.size.set(size);\n }\n\n /** The last view to register wins, so a control-flow swap in either order ends up correct. */\n registerView(view: SidePanelViewRef): void {\n this.activeView.set(view);\n }\n\n /** Guarded by identity so a view destroyed after its successor was created cannot unseat it. */\n unregisterView(view: SidePanelViewRef): void {\n if (this.activeView() === view) {\n this.activeView.set(null);\n }\n }\n\n /**\n * The action follows whoever asked for the button, so that a consumer who leaves the flag in the\n * config and adopts a view for its footer gets the old close behaviour rather than a dead button.\n */\n protected onBack(): void {\n const view = this.activeView();\n if (view && this.viewOwnsBackButton()) {\n view.back.emit();\n\n return;\n }\n\n this.close();\n }\n\n open(): void {\n setTimeout(() => {\n this.isOpen.set(true);\n });\n }\n\n close(result?: unknown): void {\n this.isOpen.set(false);\n setTimeout(() => {\n this.sidePanelService.destroyComponent(result);\n }, sidePanelAnimationDuration);\n }\n}\n","<div\n class=\"side-panel-backdrop\"\n #sidePanelBackdrop\n tabindex=\"0\"\n (click)=\"close()\"\n (keydown.enter)=\"close()\"\n [@fadeInOut]=\"isOpen() ? 'open' : 'closed'\"\n></div>\n<div\n class=\"side-panel\"\n [class]=\"sidePanelConfig.panelClass\"\n [class.side-panel-small]=\"isSmall()\"\n [class.side-panel-large]=\"isLarge()\"\n [class.side-panel-x-large]=\"isXLarge()\"\n #sidePanel\n [@slideInOut]=\"animation()\"\n [attr.data-testid]=\"sidePanelConfig.testId ?? null\"\n>\n @if (sidePanelConfig.showHeader) {\n <div class=\"side-panel-header\">\n <div class=\"side-panel-title-container\">\n @if (showBackButton()) {\n <ui-button\n class=\"side-panel-action\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Arrow-chevron-left-filled'\"\n (click)=\"onBack()\"\n [tooltip]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.BACK' | uiTranslate | async)!\"\n [testId]=\"backButtonTestId\"\n size=\"medium\"\n ></ui-button>\n }\n <span class=\"side-panel-title h3 bold\">{{ headerTitle() }}</span>\n </div>\n @if (sidePanelConfig.showCloseButton) {\n <ui-button\n class=\"side-panel-action side-panel-action-close\"\n [variant]=\"'icon-button'\"\n [iconName]=\"'Close'\"\n [tooltip]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n [ariaLabel]=\"('COMMON.CLOSE' | uiTranslate | async)!\"\n [testId]=\"closeButtonTestId\"\n (click)=\"close()\"\n size=\"medium\"\n ></ui-button>\n }\n </div>\n }\n\n <div class=\"side-panel-content\" [class.side-panel-content-fill]=\"fillHeight()\">\n <ng-container #sidePanelContainer></ng-container>\n </div>\n\n @if (footerTemplate(); as footer) {\n <div class=\"side-panel-footer\" [class.side-panel-footer-divided]=\"footerDivider()\">\n <ng-container [ngTemplateOutlet]=\"footer\"></ng-container>\n </div>\n }\n</div>\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/** Marks the `ng-template` inside a `ui-side-panel-view` that holds the view's footer. */\n@Directive({\n selector: 'ng-template[uiSidePanelFooter]',\n standalone: true,\n})\nexport class SidePanelFooterDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n inject,\n input,\n output,\n} from '@angular/core';\n\nimport { SidePanelFooterDirective } from './side-panel-footer.directive';\nimport { SidePanelComponent } from './side-panel.component';\nimport { SidePanelViewRef } from './side-panel.model';\n\n// `undefined` has to survive so the panel can tell \"not set by this view\" apart from an\n// explicit `false` and fall back to `SidePanelConfig`.\nfunction optionalBooleanAttribute(value: unknown): boolean | undefined {\n return value === undefined ? undefined : booleanAttribute(value);\n}\n\n/**\n * One view inside a side panel: its body, its header title and its footer. Render a different\n * one per step to switch views without reopening the panel.\n */\n@Component({\n selector: 'ui-side-panel-view',\n templateUrl: './side-panel-view.component.html',\n styleUrls: ['./side-panel-view.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n '[class.side-panel-view-fill]': 'fillHeight()',\n // `title` is a global HTML attribute and Angular keeps a statically set one on the host, so\n // `<ui-side-panel-view title=\"...\">` would hang a native tooltip over the whole view body.\n '[attr.title]': 'null',\n },\n})\nexport class SidePanelViewComponent implements SidePanelViewRef {\n /** Left unset, the panel keeps the title from `SidePanelConfig`. */\n readonly title = input<string>();\n\n /** Left unset, the panel falls back to `SidePanelConfig.showBackButton`. */\n readonly showBackButton = input(undefined, { transform: optionalBooleanAttribute });\n\n /** Draws a rule above the footer, separating it from content that scrolls underneath. */\n readonly footerDivider = input(false, { transform: booleanAttribute });\n\n /**\n * Makes the view fill the panel body instead of growing with its content, and stops the panel\n * scrolling. Content then owns its own overflow — give the element that should scroll\n * `flex: 1; min-height: 0; overflow: auto`, or `height: 100%`.\n */\n readonly fillHeight = input(false, { transform: booleanAttribute });\n\n /** The panel does not close itself — move to the previous view, or close it yourself. */\n readonly back = output<void>();\n\n private readonly footer = contentChild(SidePanelFooterDirective);\n\n readonly footerTemplate = computed(() => this.footer()?.templateRef ?? null);\n\n private readonly panel = inject(SidePanelComponent, { optional: true });\n\n constructor() {\n this.panel?.registerView(this);\n inject(DestroyRef).onDestroy(() => this.panel?.unregisterView(this));\n }\n}\n","<ng-content></ng-content>\n"],"mappings":";;;;;;;;;AAKA,IAAY;CAAZ,SAAY,yBAAuB;CACjC,wBAAA,UAAA;CACA,wBAAA,YAAA;CACA,wBAAA,iBAAA;CACA,wBAAA,gBAAA;AACF,EAAA,CALY,4BAAA,0BAAuB,CAAA,EAAA;AAuBnC,IAAa,kBAAb,MAA4B,CAU3B;AAED,MAAa,yBAA0C;CACrD,UAAU;CACV,gBAAgB;CAChB,OAAO;CACP,MAAM;CACN,YAAY;CACZ,iBAAiB;CACjB,MAAM;AACP;AAED,MAAa,oBAAoB,IAAI,eAAgC,qBAAqB;CACxF,YAAY;CACZ,eAAe;AAChB,CAAA;AAOD,IAAa,eAAb,MAAyB;CAAzB,cAAA;EACmB,KAAA,eAAe,IAAI,QAAO;CA6B7C;CAjBE,cAAW;EACT,OAAO,KAAK,aAAa,aAAY;CACvC;CAMA,MAAM,SAAW,CAEjB;CAGA,WAAW,QAAU;EACnB,KAAK,aAAa,KAAK,MAAM;EAC7B,KAAK,aAAa,SAAQ;CAC5B;AACD;ACrFD,MAAa,6BAA6B;AAE1C,MAAa,qBAAqB,CAChC,QAAQ,cAAc;CACpB,MAAM,GAAG,wBAAwB,QAAQ,MAAM,EAAE,WAAW,gBAAe,CAAE,CAAC;CAC9E,MAAM,GAAG,wBAAwB,eAAe,MAAM,EAAE,WAAW,mBAAkB,CAAE,CAAC;CACxF,MAAM,GAAG,wBAAwB,cAAc,MAAM,EAAE,WAAW,oBAAmB,CAAE,CAAC;CACxF,WAAW,GAAG,wBAAwB,KAAI,OAAQ,wBAAwB,eAAe,CACvF,QAAQ,mBAA6C,CACtD,CAAA;CACD,WAAW,GAAG,wBAAwB,KAAI,OAAQ,wBAAwB,cAAc,CACtF,QAAQ,mBAA6C,CACtD,CAAA;AACF,CAAA,CACF;AAED,MAAa,oBAAoB,CAC/B,QAAQ,aAAa;CACnB,MAAM,GAAG,wBAAwB,QAAQ,MAAM,EAAE,SAAS,IAAI,CAAE,CAAC;CACjE,MAAM,GAAG,wBAAwB,UAAU,MAAM,EAAE,SAAS,EAAC,CAAE,CAAC;CAChE,WAAW,GAAG,wBAAwB,KAAI,OAAQ,wBAAwB,UAAU,CAClF,QAAQ,mBAA6C,CACtD,CAAA;AACF,CAAA,CACF;AC3BD,MAAa,kBAAkB,IAAI,eAAwB,iBAAiB;ACkB5E,IAAa,mBAAb,MAAa,iBAAgB;CAS3B,cAAA;EAJiB,KAAA,yBAA0C,OAAO,iBAAiB;EAClE,KAAA,WAAW,OAAO,mBAAmB;EACrC,KAAA,SAAS,OAAO,cAAc;CAEhC;CAGf,KACE,SACA,QACA,gBAAyB;EAEzB,MAAM,cAA+B;GAAE,GAAG,KAAK;GAAwB,GAAG;EAAM;EAEhF,MAAM,eAAe,IAAI,aAAY;EACrC,KAAK,sBAAsB;EAE3B,aAAa,SAAS,WAAc;GAClC,KAAK,MAAM,MAAM;EACnB;EAEA,IAAI,CAAC,KAAK,uBAAuB;GAC/B,MAAM,WAAW,KAAK,wBAAwB,aAAa,cAAc;GACzE,MAAM,wBAAwB,KAAK,yBAAyB,YAAY,UAAU,QAAQ;GAC1F,KAAK,wBAAwB;EAC/B;EAEA,IAAI,mBAAmB,aACrB,KAAK,aAAa,OAAO;OAEzB,KAAK,cAAc,SAAS,YAAY;EAG1C,KAAK,sBAAsB,SAAS,KAAI;EAExC,OAAO;CACT;CAEA,MAAM,QAAgB;EACpB,IAAI,KAAK,uBACP,KAAK,sBAAsB,SAAS,MAAM,MAAM;CAEpD;CAEA,iBAAiB,QAAgB;EAC/B,IAAI,KAAK,qBAAqB;GAE5B,KAAK,oBAAoB,WAAW,MAAM;GAC1C,KAAK,sBAAsB;EAC7B;EAEA,IAAI,KAAK,uBAAuB;GAC9B,KAAK,OAAO,WAAW,KAAK,sBAAsB,QAAQ;GAC1D,KAAK,sBAAsB,QAAO;GAClC,KAAK,wBAAwB;EAC/B;EAEA,IAAI,KAAK,qBAAqB;GAC5B,KAAK,oBAAoB,QAAO;GAChC,KAAK,sBAAsB;EAC7B;CACF;CAEQ,wBAAwB,QAAyB,gBAAyB;EAChF,OAAO,SAAS,OAAO;GACrB,QAAQ;GACR,WAAW,CACT;IAAE,SAAS;IAAiB,UAAU;GAAM,GAC5C;IAAE,SAAS;IAAiB,UAAU,OAAO;GAAI,CAClD;EACF,CAAA;CACH;CAEQ,yBAAyB,UAA6B,UAAkB;EAC9E,MAAM,wBAAwB,gBAAgB,oBAAoB;GAChE,qBAAqB,KAAK;GAC1B,iBAAiB;EAClB,CAAA;EAED,KAAK,OAAO,WAAW,sBAAsB,QAAQ;EAErD,MAAM,cAAe,sBAAsB,SAAsC,UAAU;EAC3F,YAAY,cAAc,aAAa,CAAC,EAAE,UAAU,IAAI,QAAQ;EAEhE,SAAS,KAAK,YAAY,WAAW;EAErC,OAAO;CACT;CAEQ,cAAoB,WAAoB,cAAgC;EAC9E,MAAM,mBAAmB,KAAK,uBAAuB,SAAS;EAC9D,IAAI,kBAAkB;GACpB,iBAAgB,CAAE,CAAC,MAAK;GACxB,KAAK,sBAAsB,iBAAgB,CAAE,CAAC,gBAAgB,SAAS;GAEvE,aAAa,oBAAoB,KAAK,oBAAoB;EAC5D;CACF;CAEQ,aAAa,UAA8B;EACjD,MAAM,mBAAmB,KAAK,uBAAuB,SAAS;EAC9D,IAAI,kBAAkB;GACpB,iBAAgB,CAAE,CAAC,MAAK;GACxB,KAAK,kBAAkB,iBAAgB,CAAE,CAAC,mBAAmB,QAAQ;EACvE;CACF;CA9GW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAgB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAhB;EAAA,KAAA,QAAA,GAAA,sBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAgB,YAFf;EAAM,CAAA;CAAA;;AAEP,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAH5B,MAAA;EAAW,MAAA,CAAA,EACV,YAAY,OACb,CAAA;;;;ACgBD,IAAa,qBAAb,MAAa,mBAAkB;CAgD7B,cAAA;EA/CiB,KAAA,mBAAmB,OAAO,gBAAgB;EACpD,KAAA,kBAAkB,OAAO,eAAe;EAE/C,KAAA,oBAAoB,OAA0B,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,oBAAA,CAAA,+BAAA,CAAA,CAAA;EAEtD,KAAA,qBAAqB,UAAU,SAAS,sBAAoB;GAAA,GAAA,YAAA,EAAA,WAAA,qBAAA,+BAAA,CAAA;GAAI,MAAM;EAAgB,CAAA;EACtF,KAAA,YAAY,UAAU,SAAqC,aAAY,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EACvE,KAAA,WAAW,UAAU,SAAqC,qBAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAC9E,KAAA,WAAW,gBAAgB;EAC3B,KAAA,SAAS,OAAgB,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAC/B,KAAA,OAAO,OAAkC,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;EACnD,KAAA,UAAU,eAAe,KAAK,KAAI,MAAO,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EACjD,KAAA,UAAU,eAAe,KAAK,KAAI,MAAO,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EACjD,KAAA,WAAW,eAAe,KAAK,KAAI,MAAO,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAEnC,KAAA,aAAa,OAAgC,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;EAGhD,KAAA,cAAc,eAAe,KAAK,WAAU,CAAE,EAAE,MAAK,KAAM,KAAK,gBAAgB,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;EAEtF,KAAA,iBAAiB,eAC5B,KAAK,WAAU,CAAE,EAAE,eAAc,KAAM,KAAK,gBAAgB,gBACnE,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;EAEkB,KAAA,iBAAiB,eAAe,KAAK,WAAU,CAAE,EAAE,eAAc,KAAM,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;EAG9E,KAAA,qBAAqB,eAAe,KAAK,WAAU,CAAE,EAAE,eAAc,MAAO,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,qBAAA,CAAA,+BAAA,CAAA,CAAA;EAEpF,KAAA,gBAAgB,eAAe,KAAK,WAAU,CAAE,EAAE,cAAa,KAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;EAE3E,KAAA,aAAa,eAAe,KAAK,WAAU,CAAE,EAAE,WAAU,KAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;EAExF,KAAA,YAAY,eAAc;GACxB,IAAI,KAAK,OAAM,GACb,OAAO,wBAAwB;GAGjC,OAAO,KAAK,kBAAiB,MAAO,SAChC,wBAAwB,aACxB,wBAAwB;EAC9B,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EAGiB,KAAA,oBAAoB,KAAK,gBAAgB,SAAS,GAAG,KAAK,gBAAgB,OAAM,UAAW;EAC3F,KAAA,mBAAmB,KAAK,gBAAgB,SAAS,GAAG,KAAK,gBAAgB,OAAM,SAAU;EAG1G,MAAM,EAAE,UAAU,SAAS,KAAK;EAChC,KAAK,kBAAkB,IAAI,QAAQ;EACnC,KAAK,KAAK,IAAI,IAAI;CACpB;CAGA,aAAa,MAAsB;EACjC,KAAK,WAAW,IAAI,IAAI;CAC1B;CAGA,eAAe,MAAsB;EACnC,IAAI,KAAK,WAAU,MAAO,MACxB,KAAK,WAAW,IAAI,IAAI;CAE5B;CAMU,SAAM;EACd,MAAM,OAAO,KAAK,WAAU;EAC5B,IAAI,QAAQ,KAAK,mBAAkB,GAAI;GACrC,KAAK,KAAK,KAAI;GAEd;EACF;EAEA,KAAK,MAAK;CACZ;CAEA,OAAI;EACF,iBAAgB;GACd,KAAK,OAAO,IAAI,IAAI;EACtB,CAAC;CACH;CAEA,MAAM,QAAgB;EACpB,KAAK,OAAO,IAAI,KAAK;EACrB,iBAAgB;GACd,KAAK,iBAAiB,iBAAiB,MAAM;EAC/C,GAAA,GAA6B;CAC/B;CA5FW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAkB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAlB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAkB,cAAA;GAAA,UAAA;GAAA,aAAA;IAAA;KAAA,cAAA;KAAA,OAAA;KAAA,WAAA,CAAA,oBAAA;KAAA,aAAA;KAAA,MAMyC;KAAgB,UAAA;IAAA;IAAA;KAAA,cAAA;KAAA,OAAA;KAAA,WAAA,CAAA,WAAA;KAAA,aAAA;KAAA,UAAA;IAAA;IAAA;KAAA,cAAA;KAAA,OAAA;KAAA,WAAA,CAAA,mBAAA;KAAA,aAAA;KAAA,UAAA;IAAA;GAAA;GAAA,UAAA;GAAA,UCzCxF;GA4DA,QAAA,CAAA,isHAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MD3BY;IAAsB;IAAA;KAAA,MAAA;KAAA,MAAE;IAAqB;IAAA;KAAA,MAAA;KAAA,MAAA,GAAA;KAAA,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,oBAAA,kBAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAuC;KAAgB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAArD;KAAe,MAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAS,MAAA;IAAA;GAAA;GAAA,YAFvE,CAAC,oBAAoB,iBAAiB;GAAC,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;AAIxC,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAkB,YAAA,CAAA;EAT9B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAe,YAIb,CAAC,oBAAoB,iBAAiB;GAAC,iBAClC,wBAAwB;GAAM,SACtC;IAAC;IAAwB;IAAuB;IAAiB;IAAW;IAAS;GAAgB;GAAC,UAAA;GAAA,QAAA,CAAA,isHAAA;EAAA,CAAA;CAQvE,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,oBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,sBAAoB;IAAI,MAAM;IAAkB,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAC7B,aAAW,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CACZ,qBAAmB,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA;AEpC/E,IAAa,2BAAb,MAAa,yBAAwB;CAJrC,cAAA;EAKW,KAAA,cAAc,OAA6B,WAAW;CAChE;CAFY;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAwB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAxB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAwB,cAAA;GAAA,UAAA;GAAA,UAAA;EAAA,CAAA;CAAA;;AAAxB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAwB,YAAA,CAAA;EAJpC,MAAA;EAAU,MAAA,CAAA;GACT,UAAU;GACV,YAAY;EACb,CAAA;;;ACYD,SAAS,yBAAyB,OAAc;CAC9C,OAAO,UAAU,SAAY,SAAY,iBAAiB,KAAK;AACjE;AAmBA,IAAa,yBAAb,MAAa,uBAAsB;CA0BjC,cAAA;EAxBS,KAAA,QAAQ,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAGvB,KAAA,iBAAiB,MAAM,QAAS;GAAA,GAAA,YAAA,EAAA,WAAA,iBAAA,+BAAA,CAAA;GAAI,WAAW;EAAwB,CAAA;EAGvE,KAAA,gBAAgB,MAAM,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,gBAAA,+BAAA,CAAA;GAAI,WAAW;EAAgB,CAAA;EAO1D,KAAA,aAAa,MAAM,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,aAAA,+BAAA,CAAA;GAAI,WAAW;EAAgB,CAAA;EAGvD,KAAA,OAAO,OAAM;EAEL,KAAA,SAAS,aAAa,0BAAyB,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAEvD,KAAA,iBAAiB,eAAe,KAAK,OAAM,CAAE,EAAE,eAAe,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;EAE3D,KAAA,QAAQ,OAAO,oBAAoB,EAAE,UAAU,KAAI,CAAE;EAGpE,KAAK,OAAO,aAAa,IAAI;EAC7B,OAAO,UAAU,CAAC,CAAC,gBAAgB,KAAK,OAAO,eAAe,IAAI,CAAC;CACrE;CA7BW;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAtB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAsB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,gBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,eAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,YAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA,EAAA,MAAA,OAAA;GAAA,MAAA,EAAA,YAAA;IAAA,8BAAA;IAAA,cAAA;GAAA,EAAA;GAAA,SAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAoBM;IAAwB,aAAA;IAAA,UAAA;GAAA,CAAA;GAAA,UAAA;GAAA,UC3DjE;GACA,QAAA,CAAA,kHAAA;GAAA,iBAAA,GAAA,wBAAA;EAAA,CAAA;CAAA;;ADsCa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EAblC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,iBAGb,wBAAwB;GAAM,YACnC;GAAI,MACV;IACJ,gCAAgC;IAGhC,gBAAgB;GACjB;GAAA,UAAA;GAAA,QAAA,CAAA,kHAAA;EAAA,CAAA;CAsBsC,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,MAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,MAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,GAAA,iBAAA,wBAAwB,GAAA,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA"}