@design-factory/angular 21.1.0-next.1 → 22.0.0-next.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 (331) hide show
  1. package/.ai/docs/components/accordion/accessibility.md +45 -0
  2. package/.ai/docs/components/accordion/api.md +279 -0
  3. package/.ai/docs/components/accordion/developer.md +43 -0
  4. package/.ai/docs/components/accordion/guidelines.md +99 -0
  5. package/.ai/docs/components/accordion/overview.md +17 -0
  6. package/.ai/docs/components/alert/accessibility.md +24 -0
  7. package/.ai/docs/components/alert/api.md +65 -0
  8. package/.ai/docs/components/alert/developer.md +63 -0
  9. package/.ai/docs/components/alert/guidelines.md +62 -0
  10. package/.ai/docs/components/alert/overview.md +12 -0
  11. package/.ai/docs/components/button/accessibility.md +25 -0
  12. package/.ai/docs/components/button/api.md +71 -0
  13. package/.ai/docs/components/button/developer.md +52 -0
  14. package/.ai/docs/components/button/guidelines.md +75 -0
  15. package/.ai/docs/components/button/overview.md +15 -0
  16. package/.ai/docs/components/buttongroup/api.md +16 -0
  17. package/.ai/docs/components/buttongroup/developer.md +32 -0
  18. package/.ai/docs/components/drawer/accessibility.md +15 -0
  19. package/.ai/docs/components/drawer/api.md +56 -0
  20. package/.ai/docs/components/drawer/developer.md +36 -0
  21. package/.ai/docs/components/drawer/examples.md +9 -0
  22. package/.ai/docs/components/drawer/guidelines.md +58 -0
  23. package/.ai/docs/components/drawer/overview.md +19 -0
  24. package/.ai/docs/components/dropdown/accessibility.md +27 -0
  25. package/.ai/docs/components/dropdown/api.md +85 -0
  26. package/.ai/docs/components/dropdown/developer.md +59 -0
  27. package/.ai/docs/components/dropdown/guidelines.md +80 -0
  28. package/.ai/docs/components/dropdown/overview.md +16 -0
  29. package/.ai/docs/components/sidenav/accessibility.md +48 -0
  30. package/.ai/docs/components/sidenav/api.md +110 -0
  31. package/.ai/docs/components/sidenav/developer.md +14 -0
  32. package/.ai/docs/components/sidenav/guidelines.md +83 -0
  33. package/.ai/docs/components/sidenav/overview.md +16 -0
  34. package/.ai/docs/components/tooltip/accessibility.md +11 -0
  35. package/.ai/docs/components/tooltip/api.md +39 -0
  36. package/.ai/docs/components/tooltip/developer.md +16 -0
  37. package/.ai/docs/components/tooltip/guidelines.md +84 -0
  38. package/.ai/docs/components/tooltip/overview.md +23 -0
  39. package/.ai/docs/components/topnav/accessibility.md +51 -0
  40. package/.ai/docs/components/topnav/api.md +190 -0
  41. package/.ai/docs/components/topnav/developer.md +43 -0
  42. package/.ai/docs/components/topnav/guidelines.md +121 -0
  43. package/.ai/docs/components/topnav/overview.md +17 -0
  44. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
  45. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
  46. package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
  47. package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
  48. package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
  49. package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
  50. package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
  51. package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
  52. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
  53. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
  54. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
  55. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
  56. package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
  57. package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
  58. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
  59. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
  60. package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
  61. package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
  62. package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
  63. package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
  64. package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
  65. package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
  66. package/.ai/docs/demos/alert/card/alert-card.html +15 -0
  67. package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
  68. package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
  69. package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
  70. package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
  71. package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
  72. package/.ai/docs/demos/button/basic/button-basic.html +4 -0
  73. package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
  74. package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
  75. package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
  76. package/.ai/docs/demos/button/icons/button-icons.html +17 -0
  77. package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
  78. package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
  79. package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
  80. package/.ai/docs/demos/button/variants/button-variants.html +49 -0
  81. package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
  82. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
  83. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
  84. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
  85. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
  86. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
  87. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
  88. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
  89. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
  90. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
  91. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
  92. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
  93. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
  94. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
  95. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
  96. package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
  97. package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
  98. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
  99. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
  100. package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
  101. package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
  102. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
  103. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
  104. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
  105. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
  106. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
  107. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
  108. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
  109. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
  110. package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
  111. package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
  112. package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
  113. package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
  114. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
  115. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
  116. package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
  117. package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
  118. package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
  119. package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
  120. package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
  121. package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
  122. package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
  123. package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
  124. package/.ai/index.md +26 -0
  125. package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
  126. package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
  127. package/fesm2022/design-factory-angular-alert.mjs +312 -0
  128. package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
  129. package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
  130. package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
  131. package/fesm2022/design-factory-angular-button.mjs +240 -0
  132. package/fesm2022/design-factory-angular-button.mjs.map +1 -0
  133. package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
  134. package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
  135. package/fesm2022/design-factory-angular-drawer.mjs +76 -81
  136. package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
  137. package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
  138. package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
  139. package/fesm2022/design-factory-angular-form-field.mjs +287 -0
  140. package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
  141. package/fesm2022/design-factory-angular-icon.mjs +24 -0
  142. package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
  143. package/fesm2022/design-factory-angular-input.mjs +34 -0
  144. package/fesm2022/design-factory-angular-input.mjs.map +1 -0
  145. package/fesm2022/design-factory-angular-internals.mjs +119 -39
  146. package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
  147. package/fesm2022/design-factory-angular-separator.mjs +43 -0
  148. package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
  149. package/fesm2022/design-factory-angular-sidenav.mjs +766 -438
  150. package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
  151. package/fesm2022/design-factory-angular-slider.mjs +451 -0
  152. package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
  153. package/fesm2022/design-factory-angular-theme.mjs +30 -20
  154. package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
  155. package/fesm2022/design-factory-angular-toggle.mjs +172 -0
  156. package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
  157. package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
  158. package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
  159. package/fesm2022/design-factory-angular-topnav.mjs +635 -558
  160. package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
  161. package/package.json +61 -8
  162. package/schematics/collection.json +35 -0
  163. package/schematics/component-migration/accordion/constants.d.ts +10 -0
  164. package/schematics/component-migration/accordion/constants.js +46 -0
  165. package/schematics/component-migration/accordion/guide.md +257 -0
  166. package/schematics/component-migration/accordion/index.d.ts +2 -0
  167. package/schematics/component-migration/accordion/index.js +5 -0
  168. package/schematics/component-migration/accordion/migration.d.ts +2 -0
  169. package/schematics/component-migration/accordion/migration.js +13 -0
  170. package/schematics/component-migration/accordion/schema.json +25 -0
  171. package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
  172. package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
  173. package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
  174. package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
  175. package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
  176. package/schematics/component-migration/accordion/steps/title-content.js +75 -0
  177. package/schematics/component-migration/ai/prompt.md +83 -0
  178. package/schematics/component-migration/alert/guide.md +246 -0
  179. package/schematics/component-migration/alert/index.d.ts +2 -0
  180. package/schematics/component-migration/alert/index.js +5 -0
  181. package/schematics/component-migration/alert/migration.d.ts +2 -0
  182. package/schematics/component-migration/alert/migration.js +50 -0
  183. package/schematics/component-migration/alert/schema.json +25 -0
  184. package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
  185. package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
  186. package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
  187. package/schematics/component-migration/alert/steps/animation-input.js +17 -0
  188. package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
  189. package/schematics/component-migration/alert/steps/close-output.js +17 -0
  190. package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
  191. package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
  192. package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
  193. package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
  194. package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
  195. package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
  196. package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
  197. package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
  198. package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
  199. package/schematics/component-migration/alert/steps/selector.js +18 -0
  200. package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
  201. package/schematics/component-migration/alert/steps/static-classes.js +97 -0
  202. package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
  203. package/schematics/component-migration/alert/steps/static-type.js +28 -0
  204. package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
  205. package/schematics/component-migration/alert/steps/template-reference.js +15 -0
  206. package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
  207. package/schematics/component-migration/alert/steps/template-todos.js +78 -0
  208. package/schematics/component-migration/button/guide.md +278 -0
  209. package/schematics/component-migration/button/index.d.ts +2 -0
  210. package/schematics/component-migration/button/index.js +5 -0
  211. package/schematics/component-migration/button/migration.d.ts +2 -0
  212. package/schematics/component-migration/button/migration.js +180 -0
  213. package/schematics/component-migration/button/schema.json +25 -0
  214. package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
  215. package/schematics/component-migration/button/steps/static-classes.js +128 -0
  216. package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
  217. package/schematics/component-migration/button/steps/template-todos.js +120 -0
  218. package/schematics/component-migration/button/types.d.ts +7 -0
  219. package/schematics/component-migration/button/types.js +2 -0
  220. package/schematics/component-migration/dropdown/guide.md +252 -0
  221. package/schematics/component-migration/dropdown/index.d.ts +2 -0
  222. package/schematics/component-migration/dropdown/index.js +5 -0
  223. package/schematics/component-migration/dropdown/migration.d.ts +2 -0
  224. package/schematics/component-migration/dropdown/migration.js +41 -0
  225. package/schematics/component-migration/dropdown/schema.json +25 -0
  226. package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
  227. package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
  228. package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
  229. package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
  230. package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
  231. package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
  232. package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
  233. package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
  234. package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
  235. package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
  236. package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
  237. package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
  238. package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
  239. package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
  240. package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
  241. package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
  242. package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
  243. package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
  244. package/schematics/component-migration/index.d.ts +3 -0
  245. package/schematics/component-migration/index.js +26 -0
  246. package/schematics/component-migration/next-steps/index.d.ts +13 -0
  247. package/schematics/component-migration/next-steps/index.js +34 -0
  248. package/schematics/component-migration/registry.d.ts +1 -0
  249. package/schematics/component-migration/registry.js +15 -0
  250. package/schematics/component-migration/schema.json +20 -0
  251. package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
  252. package/schematics/component-migration/shared/ai-handoff.js +28 -0
  253. package/schematics/component-migration/shared/angular-component.d.ts +10 -0
  254. package/schematics/component-migration/shared/angular-component.js +125 -0
  255. package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
  256. package/schematics/component-migration/shared/button-visual-classes.js +111 -0
  257. package/schematics/component-migration/shared/component-context.d.ts +7 -0
  258. package/schematics/component-migration/shared/component-context.js +24 -0
  259. package/schematics/component-migration/shared/component-imports.d.ts +45 -0
  260. package/schematics/component-migration/shared/component-imports.js +380 -0
  261. package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
  262. package/schematics/component-migration/shared/create-component-schematic.js +55 -0
  263. package/schematics/component-migration/shared/import-edits.d.ts +11 -0
  264. package/schematics/component-migration/shared/import-edits.js +157 -0
  265. package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
  266. package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
  267. package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
  268. package/schematics/component-migration/shared/migrate-project.js +151 -0
  269. package/schematics/component-migration/shared/project-templates.d.ts +15 -0
  270. package/schematics/component-migration/shared/project-templates.js +43 -0
  271. package/schematics/component-migration/shared/scan-project.d.ts +3 -0
  272. package/schematics/component-migration/shared/scan-project.js +24 -0
  273. package/schematics/component-migration/shared/static-placement.d.ts +1 -0
  274. package/schematics/component-migration/shared/static-placement.js +45 -0
  275. package/schematics/component-migration/shared/template-edits.d.ts +28 -0
  276. package/schematics/component-migration/shared/template-edits.js +153 -0
  277. package/schematics/component-migration/shared/template-result.d.ts +3 -0
  278. package/schematics/component-migration/shared/template-result.js +11 -0
  279. package/schematics/component-migration/shared/testing.d.ts +13 -0
  280. package/schematics/component-migration/shared/testing.js +59 -0
  281. package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
  282. package/schematics/component-migration/shared/todo-comments.js +81 -0
  283. package/schematics/component-migration/shared/types.d.ts +41 -0
  284. package/schematics/component-migration/shared/types.js +2 -0
  285. package/schematics/component-migration/tooltip/guide.md +196 -0
  286. package/schematics/component-migration/tooltip/index.d.ts +2 -0
  287. package/schematics/component-migration/tooltip/index.js +5 -0
  288. package/schematics/component-migration/tooltip/migration.d.ts +2 -0
  289. package/schematics/component-migration/tooltip/migration.js +50 -0
  290. package/schematics/component-migration/tooltip/schema.json +25 -0
  291. package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
  292. package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
  293. package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
  294. package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
  295. package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
  296. package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
  297. package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
  298. package/schematics/component-migration/utils/component-resource-collector.js +107 -0
  299. package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
  300. package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
  301. package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
  302. package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
  303. package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
  304. package/schematics/component-migration/utils/typescript/decorators.js +41 -0
  305. package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
  306. package/schematics/component-migration/utils/typescript/functions.js +20 -0
  307. package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
  308. package/schematics/component-migration/utils/typescript/imports.js +110 -0
  309. package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
  310. package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
  311. package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
  312. package/schematics/component-migration/utils/typescript/property-name.js +22 -0
  313. package/schematics/package.json +3 -0
  314. package/types/design-factory-angular-accordion.d.ts +553 -0
  315. package/types/design-factory-angular-alert.d.ts +166 -0
  316. package/types/design-factory-angular-breakpoints.d.ts +13 -0
  317. package/types/design-factory-angular-button.d.ts +166 -0
  318. package/types/design-factory-angular-buttongroup.d.ts +45 -0
  319. package/types/design-factory-angular-drawer.d.ts +19 -26
  320. package/types/design-factory-angular-dropdown.d.ts +148 -0
  321. package/types/design-factory-angular-form-field.d.ts +122 -0
  322. package/types/design-factory-angular-icon.d.ts +11 -0
  323. package/types/design-factory-angular-input.d.ts +16 -0
  324. package/types/design-factory-angular-internals.d.ts +78 -19
  325. package/types/design-factory-angular-separator.d.ts +29 -0
  326. package/types/design-factory-angular-sidenav.d.ts +114 -17
  327. package/types/design-factory-angular-slider.d.ts +239 -0
  328. package/types/design-factory-angular-toggle.d.ts +93 -0
  329. package/types/design-factory-angular-tooltip.d.ts +113 -0
  330. package/types/design-factory-angular-topnav.d.ts +47 -52
  331. package/drawer/README.md +0 -54
@@ -1 +1 @@
1
- {"version":3,"file":"design-factory-angular-sidenav.mjs","sources":["../../sidenav/sidenav-item/sidenav-item-base.component.ts","../../sidenav/sidenav-item/sidenav-item-desktop.component.ts","../../sidenav/sidenav-item/sidenav-item-mobile.component.ts","../../sidenav/sidenav-link/sidenav-link-base.component.ts","../../sidenav/sidenav-link/sidenav-link-desktop.component.ts","../../sidenav/sidenav-link/sidenav-link-mobile.component.ts","../../sidenav/sidenav-icon.directive.ts","../../sidenav/sidenav-link/sidenav-link.component.ts","../../sidenav/sidenav-item/sidenav-item.component.ts","../../sidenav/sidenav.ts","../../sidenav/design-factory-angular-sidenav.ts"],"sourcesContent":["import { computed, contentChild, Directive, inject, input, model, Signal } from '@angular/core';\nimport { DfSidenavLinkBaseComponent } from '../sidenav-link/sidenav-link-base.component';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavItemComponent } from './sidenav-item.component';\n\n/**\n * Base item class that is extended by desktop and mobile item components\n * The item represents a container which can hold other items or links\n * Handles collapsed state\n * @internal\n */\n@Directive()\nexport abstract class DfSidenavItemBaseComponent {\n /**\n * The label of the item\n */\n readonly label = input.required();\n /**\n * Collapsed state of the item\n * Only used for the desktop version\n * @default false\n */\n readonly collapsed = model(false);\n /**\n * The icon class name or inline content (e.g., font awesome class)\n * @default ''\n */\n readonly icon = input('');\n /**\n * Whether the wrapper component has icon content (internally used)\n * @default false\n */\n readonly wrapperHasIconContent = input(false);\n\n protected readonly sidenav = inject(DfSidenavComponent);\n protected readonly wrapperInstance = inject(DfSidenavItemComponent);\n\n // check for the parent item to determine nesting level\n protected readonly parentItem = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n protected readonly isFirstLevel = this.parentItem?.['parentWrapper'] === null;\n\n protected readonly iconContent = contentChild('dfSidenavIcon');\n\n protected abstract childLinks: Signal<readonly (DfSidenavLinkBaseComponent | undefined)[]>;\n protected abstract childItems: Signal<readonly (DfSidenavItemBaseComponent | undefined)[]>;\n\n protected readonly hasActiveLinks = computed(() => this.childLinks().some((link) => link?.isActiveLink()));\n protected readonly hasActiveItems = computed(() => this.childItems().some((item) => item?.hasActiveLinks()));\n protected readonly hasActiveChildren = computed(() => this.hasActiveLinks() || this.hasActiveItems());\n\n /**\n * Computed signal indicating if the item has visible children\n */\n protected readonly hasVisibleChildren = computed(() => this.childLinks().some((link) => link?.['isVisible']()));\n\n /**\n * Method to toggle the collapsed state of the item\n * If the sidenav is minimized, it will expand it and uncollapse the item\n */\n toggleCollapse() {\n if (this.sidenav.isMinimized()) {\n this.sidenav.toggleMinimize(false);\n this.collapsed.set(false);\n } else {\n this.collapsed.set(!this.collapsed());\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect } from '@angular/core';\nimport { DfSidenavItemBaseComponent } from './sidenav-item-base.component';\n\n/**\n * Component representing an item in the sidenav for desktop devices\n * The item represents a container which can hold other items or links\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-sidenav-item-desktop',\n template: `\n <button\n class=\"btn df-sidenav-button d-flex gap-3\"\n [class.df-sidenav-active-level]=\"sidenav.isMinimized() && hasActiveChildren() && isFirstLevel\"\n [class.df-sidenav-active]=\"hasActiveChildren()\"\n [class.w-100]=\"!sidenav.isMinimized()\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [class.justify-content-start]=\"!sidenav.isMinimized()\"\n [attr.aria-label]=\"label()\"\n >\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <span class=\"{{ icon() }}\"></span>\n }\n @if (!sidenav.isMinimized()) {\n <span class=\"sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n <span\n [class.expanded]=\"!collapsed()\"\n class=\"fa-light df-sidenav-collapse-toggle fa-chevron-down ms-auto\"\n ></span>\n }\n </button>\n\n <div [class.df-sidenav-item-hidden]=\"collapsed()\" [attr.aria-hidden]=\"collapsed()\" role=\"list\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n host: {\n '[class.d-none]': '!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'\n },\n imports: [NgTemplateOutlet]\n})\nexport class DfSidenavItemDesktopComponent extends DfSidenavItemBaseComponent {\n protected override readonly childLinks = computed(() =>\n this.wrapperInstance['childrenLinks']().map((link) => link['desktopInstance']())\n );\n protected override readonly childItems = computed(() =>\n this.wrapperInstance['childrenItems']().map((item) => item['desktopInstance']())\n );\n\n protected readonly isVisible = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return true;\n }\n return this.childLinks().some((link) => link?.['isVisible']());\n });\n\n constructor() {\n super();\n // Automatically collapse when minimized\n effect(() => {\n if (this.sidenav.isMinimized()) {\n this.collapsed.set(true);\n }\n });\n\n // Auto-expand when searching and has visible children\n effect(() => {\n if (this.sidenav['searchTerm']().trim() && this.hasVisibleChildren()) {\n this.collapsed.set(false);\n }\n });\n\n // Auto-expand when the child is active and sidenav is not minimized\n effect(() => {\n if (this.hasActiveChildren() && !this.sidenav.isMinimized()) {\n this.collapsed.set(false);\n }\n });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { DfSidenavItemBaseComponent } from './sidenav-item-base.component';\n\n/**\n * Component representing an item in the sidenav for mobile devices\n * The item represents a container which can hold other items or links\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-sidenav-item-mobile',\n template: `\n @if (shouldShowMobileHeader()) {\n <div class=\"df-sidenav-mobile-header mobile mb-2\" role=\"listitem\">\n <button\n class=\"btn w-100 d-flex gap-0 align-items-center justify-content-start df-sidenav-button\"\n (click)=\"handleBackClick()\"\n [class.df-sidenav-active]=\"hasActiveChildren()\"\n >\n <span class=\"fa-light df-sidenav-mobile-header-back-arrow fa-arrow-left me-4\"></span>\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <span class=\"{{ icon() }}\"></span>\n }\n <span class=\"ms-3 sidenav-label\">{{ label() }}</span>\n </button>\n </div>\n }\n\n <!-- Regular item button (hidden when it's the active mobile panel) -->\n @if (isVisibleInList()) {\n <!-- Mobile search: Show as breadcrumb/path (non-clickable) -->\n @if (isSearching()) {\n <div class=\"btn w-100 d-flex gap-3 justify-content-start text-muted disabled pe-none\">\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <span class=\"{{ icon() }}\"></span>\n }\n <span class=\"sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n <span class=\"fa-light df-sidenav-collapse-toggle fa-chevron-right ms-auto\"></span>\n </div>\n } @else {\n <!-- Regular clickable button -->\n <button\n class=\"btn w-100 d-flex gap-3 justify-content-start df-sidenav-button\"\n (click)=\"handleItemClick()\"\n [class.df-sidenav-active]=\"hasActiveChildren()\"\n >\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <span class=\"{{ icon() }}\"></span>\n }\n <span class=\"sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n <!-- Mobile: Show forward arrow for items with children -->\n <span class=\"fa-light df-sidenav-collapse-toggle fa-chevron-right ms-auto\"></span>\n </button>\n }\n }\n\n <!-- Children container - rendered separately from the button -->\n @if (shouldShowChildren()) {\n <div role=\"list\" class=\"mobile\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n }\n\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n host: {\n class: 'mobile',\n '[class.d-none]': 'shouldHideComponent() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'\n },\n imports: [NgTemplateOutlet]\n})\nexport class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {\n protected override readonly childLinks = computed(() =>\n this.wrapperInstance['childrenLinks']().map((link) => link['mobileInstance']())\n );\n protected override readonly childItems = computed(() =>\n this.wrapperInstance['childrenItems']().map((item) => item['mobileInstance']())\n );\n protected readonly isSearching = computed(() => !!this.sidenav['searchTerm']().trim());\n\n // Check if this item is in the navigation path (is an ancestor of current panel)\n private readonly isInNavigationPath = computed(() =>\n this.sidenav['mobileNavigationStack']().includes(this.wrapperInstance)\n );\n\n // Check if this item should show as mobile header\n protected readonly shouldShowMobileHeader = computed(() => {\n // Don't show header when searching\n if (this.isSearching()) {\n return false;\n }\n return this.sidenav['currentMobilePanel']() === this.wrapperInstance;\n });\n\n // Determine if this item's children should be visible\n protected readonly shouldShowChildren = computed(() => {\n // Mobile with search: show children to display matching links\n if (this.isSearching()) {\n return this.hasMatchingChildren();\n }\n // Mobile without search: show if this item is in the navigation path\n return this.isInNavigationPath();\n });\n\n // Determine if this item should be visible in the list\n protected readonly isVisibleInList = computed(() => {\n // Mobile with search: don't show items, only links (items just provide structure)\n if (this.isSearching()) {\n return false;\n }\n\n // Mobile without search: use navigation levels\n const currentPanel = this.sidenav['currentMobilePanel']();\n\n if (currentPanel === null) {\n // Root level: show only first-level items\n return this.isFirstLevel && this.isVisible();\n } else if (currentPanel === this.parentItem) {\n // This is the active panel, don't show it in the list (it's in the header)\n return false;\n } else {\n // Show items whose parent matches the current panel\n const parentMobile = this.parentItem?.['parentWrapper'];\n return parentMobile === currentPanel && this.isVisible();\n }\n });\n\n // Determine if the entire component should be hidden\n protected readonly shouldHideComponent = computed(() => {\n // Don't hide if this is the current mobile panel showing its children\n if (this.shouldShowMobileHeader()) {\n return false;\n }\n // Otherwise, use the regular visibility logic\n return !this.isVisibleInList() && !this.shouldShowChildren();\n });\n\n private readonly isVisible = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return true;\n }\n\n // Check if this item's label matches\n return String(this.label()).toLowerCase().includes(search);\n });\n\n // Check if this item has any matching children (for showing the container)\n private readonly hasMatchingChildren = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return false;\n }\n return this.childLinks().some((link) => link?.['isVisible']());\n });\n\n /**\n * Handle click event on the item\n */\n protected handleItemClick() {\n this.sidenav.navigateToChildren(this.wrapperInstance);\n }\n\n /**\n * Handle click event on the header back button\n */\n protected handleBackClick() {\n this.sidenav.navigateBack();\n }\n}\n","import { computed, contentChild, Directive, inject, input, signal } from '@angular/core';\nimport { IsActiveMatchOptions } from '@angular/router';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavItemComponent } from '../sidenav-item/sidenav-item.component';\n\n/**\n * Base link class that is extended by desktop and mobile link components\n * @internal\n */\n@Directive()\nexport abstract class DfSidenavLinkBaseComponent {\n /**\n * The router link path for to the link\n */\n readonly linkPath = input.required<string>();\n /**\n * The label of the link\n */\n readonly label = input.required<string>();\n /**\n * The icon class name or inline content (e.g., font awesome class)\n */\n readonly icon = input('');\n /**\n * Whether the wrapper component has icon content (internally used)\n */\n readonly wrapperHasIconContent = input(false);\n /**\n * Indicates if the link is currently active based on the Router state\n */\n readonly isActiveLink = signal(false);\n /**\n * Options to determine when the router link is considered active\n */\n readonly routerLinkActiveOptions = input<IsActiveMatchOptions | { exact: boolean }>({ exact: false });\n\n protected readonly sidenav = inject(DfSidenavComponent);\n protected readonly parentItem = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n protected readonly isFirstLevel = this.parentItem === null;\n protected readonly iconContent = contentChild('dfSidenavIcon');\n\n /**\n * Computed signal indicating if the link is visible based on search term\n */\n protected readonly isVisible = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return true;\n }\n return this.label().toLowerCase().includes(search);\n });\n\n protected toggleSidenavOnSmallScreen() {\n if (this.sidenav['isSmallScreen']()) {\n this.sidenav.toggleMinimize();\n }\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, viewChild } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { DfSidenavLinkBaseComponent } from './sidenav-link-base.component';\n\n/**\n * Component representing a leaf in the sidenav for desktop devices\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-sidenav-link-desktop',\n template: `\n <a\n class=\"btn df-sidenav-button d-flex gap-3\"\n [class.w-100]=\"!sidenav.isMinimized()\"\n routerLinkActive=\"df-sidenav-active-level\"\n ariaCurrentWhenActive=\"page\"\n (isActiveChange)=\"isActiveLink.set($event)\"\n [routerLink]=\"linkPath()\"\n [class.justify-content-start]=\"!sidenav.isMinimized()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n [attr.aria-label]=\"label()\"\n (click)=\"toggleSidenavOnSmallScreen()\"\n #anchor\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n <ng-template #content>\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <span class=\"{{ icon() }}\"></span>\n }\n @if (!sidenav.isMinimized()) {\n <span class=\"sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n }\n </ng-template>\n `,\n host: {\n '[class.d-none]': '!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))',\n class: 'd-flex'\n },\n imports: [RouterLink, RouterLinkActive, NgTemplateOutlet]\n})\nexport class DfSidenavLinkDesktopComponent extends DfSidenavLinkBaseComponent {\n protected readonly anchor = viewChild.required<ElementRef<HTMLAnchorElement>>('anchor');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { DfSidenavLinkBaseComponent } from './sidenav-link-base.component';\nimport { DfSidenavLinkComponent } from './sidenav-link.component';\n\n/**\n * Component representing a leaf in the sidenav for mobile devices\n * @internal\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-sidenav-link-mobile',\n template: `\n <a\n class=\"btn df-sidenav-button d-flex gap-3 justify-content-start w-100 df-sidenav-breadcrumb-button\"\n routerLinkActive=\"df-sidenav-active-level\"\n ariaCurrentWhenActive=\"page\"\n (isActiveChange)=\"isActiveLink.set($event)\"\n [routerLink]=\"linkPath()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n (click)=\"toggleSidenavOnSmallScreen()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n <ng-template #content>\n <div class=\"d-flex gap-3 w-100\">\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <span class=\"{{ icon() }}\"></span>\n }\n <div class=\"d-flex flex-column align-items-start\">\n <span class=\"sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n @if (isSearching() && breadcrumbPath().length > 0) {\n <small class=\"d-flex align-items-center gap-1\" [class.text-muted]=\"!isActiveLink()\">\n @for (item of breadcrumbPath(); track $index) {\n <span>{{ item }}</span>\n @if (!$last) {\n <span class=\"fa-arrow-right\"></span>\n }\n }\n </small>\n }\n </div>\n </div>\n </ng-template>\n `,\n host: {\n '[class.d-none]': '!isVisibleInList() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))',\n class: 'd-flex'\n },\n imports: [RouterLink, RouterLinkActive, NgTemplateOutlet]\n})\nexport class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {\n // Inject link wrapper to get parent wrapper reference\n private readonly linkWrapper = inject(DfSidenavLinkComponent);\n\n private readonly currentMobilePanel = computed(() => this.sidenav['currentMobilePanel']() ?? null);\n protected readonly isSearching = computed(() => !!this.sidenav['searchTerm']().trim());\n\n protected readonly isVisibleInList = computed(() => {\n const currentPanel = this.currentMobilePanel();\n const parentWrapper = this.linkWrapper['parentWrapper'];\n // Mobile with search: show all matching links regardless of level\n if (this.isSearching()) {\n return this.isVisible();\n }\n\n // Mobile without search: use navigation levels\n if (currentPanel === null) {\n // Root level: show only first-level links\n return this.isFirstLevel && this.isVisible();\n } else {\n // Show links whose parent item wrapper matches the current panel\n return parentWrapper === currentPanel && this.isVisible();\n }\n });\n\n // Build breadcrumb path for mobile search view\n protected readonly breadcrumbPath = computed(() => {\n const path: string[] = [];\n let currentItem = this.parentItem;\n // Walk up the parent chain\n while (currentItem?.label()) {\n path.unshift(String(currentItem.label()));\n const grandParent = currentItem?.['parentWrapper'];\n currentItem = grandParent || null;\n }\n return path;\n });\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Utility directive for marking icon content in sidenav items and links.\n * Needed for identification of the projected icon content.\n * Use in case if there is no icon provided with font-awesome.\n * @since 21.0.0\n */\n@Directive({\n selector: '[dfSidenavIcon]'\n})\nexport class DfSidenavIconDirective {}\n","import { ChangeDetectionStrategy, Component, computed, contentChild, inject, input, viewChild } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavItemComponent } from '../sidenav-item/sidenav-item.component';\nimport { DfSidenavLinkDesktopComponent } from './sidenav-link-desktop.component';\nimport { DfSidenavLinkMobileComponent } from './sidenav-link-mobile.component';\nimport { DfSidenavIconDirective } from '../sidenav-icon.directive';\nimport { IsActiveMatchOptions } from '@angular/router';\n\n/**\n * Sidenav link that can be used inside <df-sidenav-item> or directly inside the <df-sidenav>\n * @since 21.0.0\n */\n@Component({\n selector: 'df-sidenav-link',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-template #iconSlot>\n <ng-content select=\"[dfSidenavIcon]\" />\n </ng-template>\n <ng-template #defaultContent>\n <ng-content />\n </ng-template>\n\n @if (sidenav['isMobileDevice']()) {\n <df-sidenav-link-mobile\n [linkPath]=\"linkPath()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"defaultContent\" />\n </df-sidenav-link-mobile>\n } @else {\n <df-sidenav-link-desktop\n [linkPath]=\"linkPath()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"defaultContent\" />\n </df-sidenav-link-desktop>\n }\n `,\n imports: [DfSidenavLinkDesktopComponent, DfSidenavLinkMobileComponent, NgTemplateOutlet],\n host: {\n role: 'listitem',\n class: 'd-block',\n '[class.mobile]': \"sidenav['isMobileDevice']()\"\n }\n})\nexport class DfSidenavLinkComponent {\n /**\n * The router link path for to the link\n */\n readonly linkPath = input.required<string>();\n /**\n * The label of the link\n */\n readonly label = input.required<string>();\n /**\n * The icon class name or inline content (e.g., font awesome class)\n */\n readonly icon = input('');\n /**\n * Options to determine when the router link is considered active\n */\n readonly routerLinkActiveOptions = input<IsActiveMatchOptions | { exact: boolean }>({ exact: false });\n /**\n * The parent wrapper item component (if any)\n */\n protected readonly parentWrapper = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n /**\n * Reference to the desktop link component instance\n */\n protected readonly desktopInstance = viewChild(DfSidenavLinkDesktopComponent);\n /**\n * Reference to the mobile link component instance\n */\n protected readonly mobileInstance = viewChild(DfSidenavLinkMobileComponent);\n\n private readonly iconContentQuery = contentChild(DfSidenavIconDirective);\n protected readonly wrapperHasIconContent = computed(\n () => this.icon() !== '' || this.iconContentQuery() !== undefined\n );\n protected readonly sidenav = inject(DfSidenavComponent);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n inject,\n input,\n model,\n viewChild\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DfSidenavItemDesktopComponent } from './sidenav-item-desktop.component';\nimport { DfSidenavItemMobileComponent } from './sidenav-item-mobile.component';\nimport { DfSidenavLinkComponent } from '../sidenav-link/sidenav-link.component';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavIconDirective } from '../sidenav-icon.directive';\n\n/**\n * Sidenav element that should be nested inside <df-sidenav> or <df-sidenav-item>\n * @since 21.0.0\n */\n@Component({\n selector: 'df-sidenav-item',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <ng-template #iconSlot>\n <ng-content select=\"[dfSidenavIcon]\" />\n </ng-template>\n <ng-template #content>\n <ng-content />\n </ng-template>\n\n @if (sidenav['isMobileDevice']()) {\n <df-sidenav-item-mobile\n [label]=\"label()\"\n [(collapsed)]=\"collapsed\"\n [icon]=\"icon()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"content\" />\n </df-sidenav-item-mobile>\n } @else {\n <df-sidenav-item-desktop\n [label]=\"label()\"\n [(collapsed)]=\"collapsed\"\n [icon]=\"icon()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"content\" />\n </df-sidenav-item-desktop>\n }\n `,\n imports: [DfSidenavItemDesktopComponent, DfSidenavItemMobileComponent, NgTemplateOutlet],\n host: {\n role: 'listitem',\n class: 'd-block',\n '[class.mobile]': \"sidenav['isMobileDevice']()\"\n }\n})\nexport class DfSidenavItemComponent {\n /**\n * Label of the sidenav item\n */\n readonly label = input.required();\n /**\n * Flag whether the sidenav item is collapsed\n * @default false\n */\n readonly collapsed = model(false);\n /**\n * Optional icon class for the sidenav item\n */\n readonly icon = input('');\n /**\n * Reference to the parent element containing this item\n */\n protected readonly parentWrapper = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n /**\n * Child sidenav items nested inside this item\n */\n protected readonly childrenItems = contentChildren(DfSidenavItemComponent, { descendants: true });\n /**\n * Child sidenav links nested inside this item\n */\n protected readonly childrenLinks = contentChildren(DfSidenavLinkComponent, { descendants: true });\n /**\n * Reference to the desktop instance of the sidenav item\n */\n protected readonly desktopInstance = viewChild(DfSidenavItemDesktopComponent);\n /**\n * Reference to the mobile instance of the sidenav item\n */\n protected readonly mobileInstance = viewChild(DfSidenavItemMobileComponent);\n private readonly iconContentQuery = contentChild(DfSidenavIconDirective);\n protected readonly wrapperHasIconContent = computed(\n () => this.icon() !== '' || this.iconContentQuery() !== undefined\n );\n protected readonly sidenav = inject(DfSidenavComponent);\n}\n","import { createNavManager } from '@design-factory/core/services/navManager';\nimport type { NavManagerItemConfig } from '@design-factory/core/services/navManager';\nimport { toAngularSignal, useDirectiveForHost } from '@design-factory/angular/internals';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n linkedSignal,\n PLATFORM_ID,\n Signal,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DfDrawer } from '@design-factory/angular/drawer';\nimport { DfSidenavItemComponent } from './sidenav-item/sidenav-item.component';\nimport { DfSidenavLinkComponent } from './sidenav-link/sidenav-link.component';\nimport { lg$, md$ } from '@design-factory/angular/internals';\n\n/**\n * Utility method to check if the user agent is a mobile device\n *\n * @param userAgent - The user agent string to check\n * @returns `true` if the user agent corresponds to a mobile device, `false` otherwise\n */\nfunction isMobileUserAgent(userAgent: string): boolean {\n return /mobile|android|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent);\n}\n\n/**\n * SideNav is a component to provide navigation feature with a panel on the side of your page\n * @since 21.0.0\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'df-sidenav',\n template: `\n <df-drawer\n #drawer\n position=\"inline-start\"\n [className]=\"isSmallScreen() ? 'df-sidenav-mobile-drawer' : ''\"\n [visible]=\"!_isMinimized()\"\n (visibleChange)=\"visibleChangeHandler($event)\"\n (minimizedChange)=\"_isMinimized.set($event)\"\n (resizingChange)=\"resizingChangeHandler($event)\"\n [bodyScroll]=\"true\"\n [backdrop]=\"backdrop()\"\n [keepInDom]=\"true\"\n [(size)]=\"width\"\n [container]=\"isSmallScreen() ? null : hostRef.nativeElement\"\n [resizable]=\"resizable() && !isSmallScreen()\"\n [focusOnInit]=\"false\"\n [configuration]=\"isLargeUpScreen() ? 'inline' : 'overlay'\"\n >\n <div class=\"h-100 w-100\">\n <nav class=\"d-flex flex-column w-100 h-100 p-5 pb-3\">\n <div class=\"df-sidenav-header flex-shrink-0\" [class.df-sidenav-header-minimized]=\"_isMinimized()\">\n @if (searchable()) {\n @if (_isMinimized()) {\n <button\n class=\"btn btn-outline-neutral df-btn-icononly mb-3 w-100 fa-search\"\n [class.df-sidenav-search-minimized]=\"!contentHasIcons()\"\n type=\"button\"\n (click)=\"focusSearch()\"\n i18n-aria-label=\"@@df.sidenav.search.ariaLabel\"\n aria-label=\"Search\"\n ></button>\n } @else {\n <div class=\"input-group mb-3\">\n <div class=\"input-group-prepend\">\n <span class=\"input-group-text fa-light fa-search\"></span>\n </div>\n <input\n type=\"search\"\n class=\"form-control df-input-withicon\"\n i18n-placeholder=\"@@df.sidenav.search.placeholder\"\n placeholder=\"Search\"\n i18n-aria-label=\"@@df.sidenav.search.ariaLabel\"\n aria-label=\"Search\"\n [(ngModel)]=\"searchTerm\"\n #textInput\n />\n <div class=\"input-group-append\">\n <button\n class=\"input-group-text fa-light fa-times\"\n [class.df-sidenav-search-empty]=\"searchTerm() === ''\"\n (click)=\"searchTerm.set(''); textInput.focus()\"\n >\n <span class=\"visually-hidden\" i18n=\"@@df.sidenav.search.clearText\">Clear text</span>\n </button>\n </div>\n </div>\n }\n }\n </div>\n\n <div role=\"list\" class=\"sidenav-body flex-grow-1 overflow-y-auto\" #scrollableContainer>\n <ng-content />\n </div>\n @if (collapsible() && !isSmallScreen()) {\n <div class=\"d-flex sidenav-footer flex-shrink-0 py-3\">\n <button\n class=\"btn btn-outline-primary df-btn-icononly df-sidenav-toggle-minimized\"\n (click)=\"toggleMinimize()\"\n i18n-aria-label=\"@@df.sidenav.toggleMinimize.ariaLabel\"\n aria-label=\"Toggle minimized sidenav\"\n >\n @if (isMinimized()) {\n <span class=\"fa-arrow-right-to-line\"></span>\n } @else {\n <span class=\"fa-arrow-left-to-line\"></span>\n }\n </button>\n </div>\n }\n </nav>\n </div>\n </df-drawer>\n `,\n imports: [FormsModule, DfDrawer],\n styles: \"@use '@design-factory/components-styles/sidenav';\",\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'df-sidenav',\n '[class.df-sidenav-lg]': 'isLargeUpScreen()',\n '[class.df-sidenav-withicon]': 'contentHasIcons()',\n '[class.d-none]': 'isSmallScreen() && _isMinimized()',\n '[class.df-sidenav-drawer]': 'isMediumScreen() && !_isMinimized()'\n }\n})\nexport class DfSidenavComponent implements AfterContentInit {\n /**\n * Flag whether the sidenav includes a search input\n * @default true\n */\n readonly searchable = input(true, { transform: booleanAttribute });\n /**\n * Flag whether the sidenav should be resizable\n * @default true\n */\n readonly resizable = input(true, { transform: booleanAttribute });\n /**\n * Flag whether the sidenav should have the collapse button\n * @default true\n */\n readonly collapsible = input(true, { transform: booleanAttribute });\n /**\n * Flag to enable the mobile sidenav display of the items.\n * @default true\n */\n readonly enableMobile = input(true, { transform: booleanAttribute });\n /**\n * @since 21.1.0\n *\n * Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized.\n */\n readonly disableInitialDesktopAutoScroll = input(false, { transform: booleanAttribute });\n\n protected readonly _isMinimized = linkedSignal(() => {\n // in mobile devices, the default value is true (hiding the drawer) and does not track changes to the screen size\n if (this.isMobileDevice()) {\n return true;\n }\n // in desktop, we track the large screen signal in order to reset the minimized state\n // it allows resizing the window and have a more user-friendly behavior\n return !this.isLargeUpScreen();\n });\n\n /**\n * Flag to indicate if the sidenav is minimized\n */\n readonly isMinimized = computed(() => this._isMinimized());\n\n protected readonly hostRef = inject(ElementRef<HTMLElement>);\n\n private readonly scrollableContainer = viewChild.required<ElementRef<HTMLElement>>('scrollableContainer');\n\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n protected readonly isMobileDevice = computed(() => {\n if (this.isBrowser) {\n return this.enableMobile() && isMobileUserAgent(navigator.userAgent);\n } else {\n // SSR: try to get request if available\n try {\n const request = inject(Request, { optional: true });\n if (request && 'headers' in request) {\n const userAgent = request.headers.get('user-agent') || '';\n return this.enableMobile() && isMobileUserAgent(userAgent);\n }\n } catch {\n // Request token not available or not in SSR context\n }\n return false;\n }\n });\n\n protected readonly searchInput = viewChild<ElementRef>('textInput');\n // Query all links to find active ones\n private readonly allLinks = contentChildren(DfSidenavLinkComponent, { descendants: true });\n private readonly allItems = contentChildren(DfSidenavItemComponent, { descendants: true });\n\n protected readonly width = signal(null as number | null);\n private savedWidth: number | null = null;\n\n protected readonly searchTerm = signal('');\n\n // Mobile navigation stack - tracks which item's children are currently displayed\n // Using component references instead of labels for uniqueness\n protected readonly mobileNavigationStack = signal<(DfSidenavItemComponent | null | undefined)[]>([]);\n protected readonly currentMobilePanel: Signal<DfSidenavItemComponent | null | undefined> = computed(() => {\n const stack = this.mobileNavigationStack();\n return stack.length > 0 ? stack[stack.length - 1] : null;\n });\n\n private readonly isMd = toAngularSignal(md$);\n private readonly isLg = toAngularSignal(lg$);\n protected readonly isSmallScreen = computed(() => !this.isMd());\n protected readonly isMediumScreen = computed(() => this.isMd() && !this.isLg());\n protected readonly isLargeUpScreen = computed(() => this.isLg());\n\n protected readonly isMobileOrSmallScreen = computed(() => this.isSmallScreen() || this.isMediumScreen());\n\n protected readonly backdrop = computed(() => this.isMediumScreen());\n\n protected readonly navManager = createNavManager();\n\n protected readonly navManagerConfig: NavManagerItemConfig = {\n selector: (node) => node.querySelectorAll<HTMLElement>('input, button, a'),\n keys: {\n Home: this.navManager.focusFirst,\n End: this.navManager.focusLast\n }\n };\n\n private readonly injector = inject(Injector);\n\n constructor() {\n useDirectiveForHost(this.navManager.directive, this.navManagerConfig);\n afterRenderEffect(() => {\n if (this.isBrowser) {\n if (this.isMobileDevice() && !this._isMinimized()) {\n // Delay to ensure DOM and contentChildren queries are ready\n this.navigateToActiveItem();\n }\n\n // Keep track of the screen size changes to reset width\n if (this.isMediumScreen() || this.isSmallScreen() || this.isLargeUpScreen()) {\n this.width.set(null);\n }\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.disableInitialDesktopAutoScroll() && !this.isMobileDevice() && this.isBrowser && this.isLargeUpScreen()) {\n void this.initializeDesktopNavigation();\n }\n }\n\n /**\n * This method allows to center and show the active link, when the sidenav is used in desktop and a large screen.\n *\n * It collapses all items and expands only the parents of the active link and scrolls to the active link to make it visible.\n */\n private initializeDesktopNavigation() {\n const effectRef = effect(\n () => {\n // Find the first active link\n const activeLink = this.allLinks()\n .find((link) => link['desktopInstance']()?.isActiveLink())\n ?.['desktopInstance']?.();\n if (activeLink) {\n untracked(() => {\n this.allItems().forEach((item) => {\n item.collapsed.set(true);\n });\n let currentParent = activeLink['parentItem'];\n while (currentParent) {\n currentParent.collapsed.set(false);\n currentParent = currentParent['parentWrapper'];\n }\n\n // We need a render to make sure the getBoundingClientRect calls will be correct AFTER the collapse of the items.\n afterNextRender(\n {\n read: () => {\n const anchorElement = activeLink['anchor']().nativeElement;\n const containerElement = this.scrollableContainer().nativeElement;\n const heightPx =\n anchorElement.getBoundingClientRect().top +\n anchorElement.clientHeight / 2 -\n containerElement.getBoundingClientRect().top -\n containerElement.clientHeight / 3;\n containerElement.scrollTo({ top: heightPx, behavior: 'instant' });\n effectRef.destroy();\n }\n },\n { injector: this.injector }\n );\n });\n }\n },\n { injector: this.injector }\n );\n }\n\n /**\n * Toggles the minimized state of the sidenav\n *\n * @param minimized - Optional parameter to explicitly set the minimized state\n *\n */\n toggleMinimize(minimized = !this._isMinimized()) {\n if (minimized) {\n this.savedWidth = this.width();\n this.width.set(0);\n } else {\n this.width.set(this.savedWidth);\n }\n this._isMinimized.set(minimized);\n }\n\n /**\n * Handles visibility changes of the sidenav component to handle the component state accordingly.\n *\n * @param isVisible - Boolean indicating whether the sidenav is currently visible\n */\n visibleChangeHandler(isVisible: boolean) {\n if (!isVisible) {\n this.width.set(0);\n }\n this._isMinimized.set(!isVisible);\n }\n\n /**\n * Handles changes when the sidenav is resized, to handle the state accordingly.\n *\n * @param isResizing - Whether the sidenav is currently being resized\n */\n resizingChangeHandler(isResizing: boolean) {\n if (isResizing) {\n this._isMinimized.set(false);\n } else {\n if (this._isMinimized()) {\n this.width.set(0);\n } else {\n this.savedWidth = this.width();\n }\n }\n }\n\n // utility to transfer focus from the button when minimized to the search input when uncollapsed\n protected focusSearch() {\n this.toggleMinimize(false);\n setTimeout(() => {\n this.searchInput()?.nativeElement.focus();\n });\n }\n\n /**\n * Method to add the given item to the mobile navigation stack\n * @param itemRef item to be added to the navigation stack\n */\n navigateToChildren(itemRef: DfSidenavItemComponent | null | undefined) {\n const stack = this.mobileNavigationStack();\n this.mobileNavigationStack.set([...stack, itemRef]);\n }\n\n /**\n * Method to navigate back in the mobile navigation stack\n */\n navigateBack() {\n const stack = this.mobileNavigationStack();\n if (stack.length > 0) {\n this.mobileNavigationStack.set(stack.slice(0, -1));\n }\n }\n\n /**\n * Navigates to the active item in the sidenav\n * Expands parent items (desktop) and sets up mobile navigation stack\n */\n private navigateToActiveItem() {\n if (!this.isBrowser) {\n return;\n }\n\n // Find the first active link\n const activeLink = this.allLinks()\n .find((link) => link['mobileInstance']()?.isActiveLink())\n ?.['mobileInstance']();\n if (activeLink && activeLink['parentItem']) {\n // Build the path from root to the active link's parent (inclusive)\n const navigationPath: DfSidenavItemComponent[] = [];\n let current: DfSidenavItemComponent | null = activeLink['parentItem'];\n while (current) {\n navigationPath.unshift(current); // Add to beginning to build path from root\n current = current['parentWrapper'];\n }\n this.mobileNavigationStack.set(navigationPath);\n } else if (activeLink && !activeLink['parentItem']) {\n // Clear navigation stack to show root level\n this.mobileNavigationStack.set([]);\n }\n }\n\n protected readonly contentHasIcons = computed(\n () =>\n this.allItems().some((item) => item['wrapperHasIconContent']()) ||\n this.allLinks().some((link) => link['wrapperHasIconContent']())\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAKA;;;;;AAKG;MAEmB,0BAA0B,CAAA;AADhD,IAAA,WAAA,GAAA;AAEE;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAE;AACjC;;;;AAIG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACjC;;;AAGG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE,gDAAC;AACzB;;;AAGG;AACM,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,KAAK,iEAAC;AAE1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,sBAAsB,CAAC;;AAGhD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;QACiB,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,KAAK,IAAI;AAE1D,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,eAAe,uDAAC;QAK3C,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QACvF,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,cAAc,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACzF,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,6DAAC;AAErG;;AAEG;QACgB,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAchH,IAAA;AAZC;;;AAGG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B;aAAO;YACL,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC;IACF;8GAzDoB,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAD/C;ygBAiC+C,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACxC/D;;;;AAIG;AAwCG,MAAO,6BAA8B,SAAQ,0BAA0B,CAAA;AAgB3E,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE;AAhBmB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjF;AAC2B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACjF;AAEkB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE;YACtE,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC;AAChE,QAAA,CAAC,qDAAC;;QAKA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;AAC9B,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAC1B;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AACpE,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE;AAC3D,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B;AACF,QAAA,CAAC,CAAC;IACJ;8GAtCW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,wFAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAIS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEf,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAvCzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,gBAAgB;AAC3B,iBAAA;;;AC3CD;;;;AAIG;AAqEG,MAAO,4BAA6B,SAAQ,0BAA0B,CAAA;AApE5E,IAAA,WAAA,GAAA;;AAqE8B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChF;AAC2B,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAChF;AACkB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,uDAAC;;QAGrE,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAC7C,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CACvE;;AAGkB,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;;AAExD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,OAAO,KAAK;YACd;YACA,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,IAAI,CAAC,eAAe;AACtE,QAAA,CAAC,kEAAC;;AAGiB,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;;AAEpD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC,mBAAmB,EAAE;YACnC;;AAEA,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;AAClC,QAAA,CAAC,8DAAC;;AAGiB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;;AAEjD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,OAAO,KAAK;YACd;;YAGA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;AAEzD,YAAA,IAAI,YAAY,KAAK,IAAI,EAAE;;gBAEzB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9C;AAAO,iBAAA,IAAI,YAAY,KAAK,IAAI,CAAC,UAAU,EAAE;;AAE3C,gBAAA,OAAO,KAAK;YACd;iBAAO;;gBAEL,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;gBACvD,OAAO,YAAY,KAAK,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YAC1D;AACF,QAAA,CAAC,2DAAC;;AAGiB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;;AAErD,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;AACjC,gBAAA,OAAO,KAAK;YACd;;YAEA,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC9D,QAAA,CAAC,+DAAC;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE;YACtE,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,IAAI;YACb;;AAGA,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5D,QAAA,CAAC,qDAAC;;AAGe,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;AACnD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE;YACtE,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC;AAChE,QAAA,CAAC,+DAAC;AAeH,IAAA;AAbC;;AAEG;IACO,eAAe,GAAA;QACvB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC;IACvD;AAEA;;AAEG;IACO,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;IAC7B;8GAjGW,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,iGAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjE7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAKS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEf,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBApExC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,QAAQ;AACf,wBAAA,gBAAgB,EAAE;AACnB,qBAAA;oBACD,OAAO,EAAE,CAAC,gBAAgB;AAC3B,iBAAA;;;ACvED;;;AAGG;MAEmB,0BAA0B,CAAA;AADhD,IAAA,WAAA,GAAA;AAEE;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAU;AAC5C;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AACzC;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE,gDAAC;AACzB;;AAEG;AACM,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,KAAK,iEAAC;AAC7C;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK,wDAAC;AACrC;;AAEG;QACM,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAA4C,EAAE,KAAK,EAAE,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAElF,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,sBAAsB,EAAE;AAC7D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;AACiB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI;AACvC,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,eAAe,uDAAC;AAE9D;;AAEG;AACgB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE;YACtE,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACpD,QAAA,CAAC,qDAAC;AAQH,IAAA;IANW,0BAA0B,GAAA;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;QAC/B;AACA,QAAA,OAAO,IAAI;IACb;8GAlDoB,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAD/C;olBAiC+C,eAAe,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACrC/D;;;AAGG;AAoCG,MAAO,6BAA8B,SAAQ,0BAA0B,CAAA;AAnC7E,IAAA,WAAA,GAAA;;AAoCqB,QAAA,IAAA,CAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAgC,QAAQ,CAAC;AACxF,IAAA;8GAFY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,wFAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhC9B;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAKS,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE7C,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAnCzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE,wFAAwF;AAC1G,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,gBAAgB;AACzD,iBAAA;oEAE+E,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACvCxF;;;AAGG;AA4CG,MAAO,4BAA6B,SAAQ,0BAA0B,CAAA;AA3C5E,IAAA,WAAA,GAAA;;;AA6CmB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE5C,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,IAAI,IAAI,8DAAC;AAC/E,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,uDAAC;AAEnE,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE;YAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;;AAEvD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC,SAAS,EAAE;YACzB;;AAGA,YAAA,IAAI,YAAY,KAAK,IAAI,EAAE;;gBAEzB,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YAC9C;iBAAO;;gBAEL,OAAO,aAAa,KAAK,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3D;AACF,QAAA,CAAC,2DAAC;;AAGiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;YAChD,MAAM,IAAI,GAAa,EAAE;AACzB,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU;;AAEjC,YAAA,OAAO,WAAW,EAAE,KAAK,EAAE,EAAE;gBAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;AACzC,gBAAA,MAAM,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;AAClD,gBAAA,WAAW,GAAG,WAAW,IAAI,IAAI;YACnC;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,0DAAC;AACH,IAAA;8GArCY,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,8FAAA,EAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAKS,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,uBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE7C,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA3CxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,gBAAgB,EAAE,8FAA8F;AAChH,wBAAA,KAAK,EAAE;AACR,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,gBAAgB;AACzD,iBAAA;;;AClDD;;;;;AAKG;MAIU,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;ACDD;;;AAGG;MA2CU,sBAAsB,CAAA;AA1CnC,IAAA,WAAA,GAAA;AA2CE;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAU;AAC5C;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AACzC;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE,gDAAC;AACzB;;AAEG;QACM,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAA4C,EAAE,KAAK,EAAE,KAAK,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,yBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AACrG;;AAEG;AACgB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,EAAE;AAChE,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;AACF;;AAEG;AACgB,QAAA,IAAA,CAAA,eAAe,GAAG,SAAS,CAAC,6BAA6B,2DAAC;AAC7E;;AAEG;AACgB,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAAC,4BAA4B,0DAAC;AAE1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,sBAAsB,4DAAC;QACrD,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,SAAS,iEAClE;AACkB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxD,IAAA;8GAtCY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,uyBAiCgB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EANxB,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAI9B,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAO5E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA1ClC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BT,EAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,4BAA4B,EAAE,gBAAgB,CAAC;AACxF,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,gBAAgB,EAAE;AACnB;AACF,iBAAA;+eA4BgD,6BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAI9B,4BAA4B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEzB,sBAAsB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACtEzE;;;AAGG;MAyCU,sBAAsB,CAAA;AAxCnC,IAAA,WAAA,GAAA;AAyCE;;AAEG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAE;AACjC;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,qDAAC;AACjC;;AAEG;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE,gDAAC;AACzB;;AAEG;AACgB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,sBAAsB,EAAE;AAChE,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;AACF;;AAEG;QACgB,IAAA,CAAA,aAAa,GAAG,eAAe,CAAC,sBAAsB,0DAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AACjG;;AAEG;QACgB,IAAA,CAAA,aAAa,GAAG,eAAe,CAAC,sBAAsB,0DAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AACjG;;AAEG;AACgB,QAAA,IAAA,CAAA,eAAe,GAAG,SAAS,CAAC,6BAA6B,2DAAC;AAC7E;;AAEG;AACgB,QAAA,IAAA,CAAA,cAAc,GAAG,SAAS,CAAC,4BAA4B,0DAAC;AAC1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,sBAAsB,4DAAC;QACrD,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CACjD,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,SAAS,iEAClE;AACkB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACxD,IAAA;8GA1CY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,EAAA,cAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAwBkB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAItB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EASxB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EALxB,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAI9B,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACS,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAO5E,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAxClC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,6BAA6B,EAAE,4BAA4B,EAAE,gBAAgB,CAAC;AACxF,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,gBAAgB,EAAE;AACnB;AACF,iBAAA;AAyBoD,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,sBAAsB,QAAE,EAAE,WAAW,EAAE,IAAI,EAAE,+FAI7C,sBAAsB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAIjD,6BAA6B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAI9B,4BAA4B,kGACzB,sBAAsB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACnEzE;;;;;AAKG;AACH,SAAS,iBAAiB,CAAC,SAAiB,EAAA;AAC1C,IAAA,OAAO,iEAAiE,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1F;AAEA;;;AAGG;MAkGU,kBAAkB,CAAA;AA2G7B,IAAA,WAAA,GAAA;AA1GA;;;AAGG;QACM,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,IAAI,uDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAClE;;;AAGG;QACM,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,IAAI,sDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACjE;;;AAGG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,IAAI,wDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACnE;;;AAGG;QACM,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,yDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACpE;;;;AAIG;QACM,IAAA,CAAA,+BAA+B,GAAG,KAAK,CAAC,KAAK,4EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAErE,QAAA,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,MAAK;;AAElD,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,gBAAA,OAAO,IAAI;YACb;;;AAGA,YAAA,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE;AAChC,QAAA,CAAC,wDAAC;AAEF;;AAEG;QACM,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEvC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,UAAuB,EAAC;AAE3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,SAAS,CAAC,QAAQ,CAA0B,qBAAqB,CAAC;QAExF,IAAA,CAAA,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEhD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC;YACtE;iBAAO;;AAEL,gBAAA,IAAI;AACF,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnD,oBAAA,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,EAAE;AACnC,wBAAA,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;wBACzD,OAAO,IAAI,CAAC,YAAY,EAAE,IAAI,iBAAiB,CAAC,SAAS,CAAC;oBAC5D;gBACF;AAAE,gBAAA,MAAM;;gBAER;AACA,gBAAA,OAAO,KAAK;YACd;AACF,QAAA,CAAC,0DAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAAa,WAAW,uDAAC;;QAElD,IAAA,CAAA,QAAQ,GAAG,eAAe,CAAC,sBAAsB,qDAAI,WAAW,EAAE,IAAI,EAAA,CAAG;QACzE,IAAA,CAAA,QAAQ,GAAG,eAAe,CAAC,sBAAsB,qDAAI,WAAW,EAAE,IAAI,EAAA,CAAG;AAEvE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,IAAqB,iDAAC;QAChD,IAAA,CAAA,UAAU,GAAkB,IAAI;AAErB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,EAAE,sDAAC;;;AAIvB,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAgD,EAAE,iEAAC;AACjF,QAAA,IAAA,CAAA,kBAAkB,GAAsD,QAAQ,CAAC,MAAK;AACvG,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;YAC1C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI;AAC1D,QAAA,CAAC,8DAAC;AAEe,QAAA,IAAA,CAAA,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;AAC3B,QAAA,IAAA,CAAA,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC;AACzB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAC5C,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,0DAAC;QAC5D,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE7C,QAAA,IAAA,CAAA,qBAAqB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,iEAAC;QAErF,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;QAEhD,IAAA,CAAA,UAAU,GAAG,gBAAgB,EAAE;AAE/B,QAAA,IAAA,CAAA,gBAAgB,GAAyB;YAC1D,QAAQ,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAc,kBAAkB,CAAC;AAC1E,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU;AAChC,gBAAA,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;AACtB;SACF;AAEgB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QA4KzB,IAAA,CAAA,eAAe,GAAG,QAAQ,CAC3C,MACE,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;AAC/D,YAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,2DAClE;QA7KC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;QACrE,iBAAiB,CAAC,MAAK;AACrB,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;;oBAEjD,IAAI,CAAC,oBAAoB,EAAE;gBAC7B;;AAGA,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC3E,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtB;YACF;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACjH,YAAA,KAAK,IAAI,CAAC,2BAA2B,EAAE;QACzC;IACF;AAEA;;;;AAIG;IACK,2BAA2B,GAAA;AACjC,QAAA,MAAM,SAAS,GAAG,MAAM,CACtB,MAAK;;AAEH,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;iBAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,YAAY,EAAE,CACzD,GAAG,iBAAiB,CAAC,IAAI;YAC3B,IAAI,UAAU,EAAE;gBACd,SAAS,CAAC,MAAK;oBACb,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC/B,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,oBAAA,CAAC,CAAC;AACF,oBAAA,IAAI,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC;oBAC5C,OAAO,aAAa,EAAE;AACpB,wBAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,wBAAA,aAAa,GAAG,aAAa,CAAC,eAAe,CAAC;oBAChD;;AAGA,oBAAA,eAAe,CACb;wBACE,IAAI,EAAE,MAAK;4BACT,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa;4BAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,aAAa;AACjE,4BAAA,MAAM,QAAQ,GACZ,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;gCACzC,aAAa,CAAC,YAAY,GAAG,CAAC;AAC9B,gCAAA,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,GAAG;AAC5C,gCAAA,gBAAgB,CAAC,YAAY,GAAG,CAAC;AACnC,4BAAA,gBAAgB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;4BACjE,SAAS,CAAC,OAAO,EAAE;wBACrB;qBACD,EACD,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAC5B;AACH,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,sDACC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAC1B;IACH;AAEA;;;;;AAKG;AACH,IAAA,cAAc,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAA;QAC7C,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnB;aAAO;YACL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACjC;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;IAClC;AAEA;;;;AAIG;AACH,IAAA,oBAAoB,CAAC,SAAkB,EAAA;QACrC,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnB;QACA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACnC;AAEA;;;;AAIG;AACH,IAAA,qBAAqB,CAAC,UAAmB,EAAA;QACvC,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAC9B;aAAO;AACL,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACnB;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE;YAChC;QACF;IACF;;IAGU,WAAW,GAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC1B,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;AAC3C,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,kBAAkB,CAAC,OAAkD,EAAA;AACnE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC1C,QAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;IACrD;AAEA;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE;AAC1C,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD;IACF;AAEA;;;AAGG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB;QACF;;AAGA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;aAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,YAAY,EAAE,CACxD,GAAG,gBAAgB,CAAC,EAAE;AACxB,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE;;YAE1C,MAAM,cAAc,GAA6B,EAAE;AACnD,YAAA,IAAI,OAAO,GAAkC,UAAU,CAAC,YAAY,CAAC;YACrE,OAAO,OAAO,EAAE;AACd,gBAAA,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAChC,gBAAA,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;YACpC;AACA,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC;QAChD;aAAO,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;;AAElD,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC;IACF;8GAnRW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,+BAAA,EAAA,EAAA,iBAAA,EAAA,iCAAA,EAAA,UAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,qCAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAqEe,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EACtB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApKxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ugKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACS,WAAW,+mBAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAWpB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjG9B,SAAS;AACS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,YAAY,EAAA,QAAA,EACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkFT,EAAA,OAAA,EACQ,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAA,aAAA,EAEjB,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,uBAAuB,EAAE,mBAAmB;AAC5C,wBAAA,6BAA6B,EAAE,mBAAmB;AAClD,wBAAA,gBAAgB,EAAE,mCAAmC;AACrD,wBAAA,2BAA2B,EAAE;AAC9B,qBAAA,EAAA,MAAA,EAAA,CAAA,ugKAAA,CAAA,EAAA;AA+CkF,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,qBAAqB,qEAsBjD,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEtB,sBAAsB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,0FAC7C,sBAAsB,CAAA,EAAA,EAAA,GAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACrN3F;;AAEG;;;;"}
1
+ {"version":3,"file":"design-factory-angular-sidenav.mjs","sources":["../../sidenav/sidenav-item/sidenav-item-base.component.ts","../../sidenav/sidenav-item/sidenav-item-desktop.component.ts","../../sidenav/sidenav-item/sidenav-item-mobile.component.ts","../../sidenav/sidenav-link/sidenav-link-base.component.ts","../../sidenav/sidenav-link/sidenav-link-desktop.component.ts","../../sidenav/sidenav-link/sidenav-link-mobile.component.ts","../../sidenav/sidenav-icon.directive.ts","../../sidenav/sidenav-link/sidenav-link.component.ts","../../sidenav/sidenav-item/sidenav-item.component.ts","../../sidenav/sidenav.ts","../../sidenav/sidenav-input.ts","../../sidenav/design-factory-angular-sidenav.ts"],"sourcesContent":["import { computed, contentChild, Directive, inject, input, model, Signal } from '@angular/core';\nimport { DfSidenavLinkBaseComponent } from '../sidenav-link/sidenav-link-base.component';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavItemComponent } from './sidenav-item.component';\n\n/**\n * Base item class that is extended by desktop and mobile item components\n * The item represents a container which can hold other items or links\n * Handles collapsed state\n * @internal\n */\n@Directive()\nexport abstract class DfSidenavItemBaseComponent {\n /**\n * The label of the item\n */\n readonly label = input.required();\n /**\n * Collapsed state of the item\n * Only used for the desktop version\n * @defaultValue `false`\n */\n readonly collapsed = model(false);\n /**\n * The icon class name or inline content (e.g., font awesome class)\n * @defaultValue `''`\n */\n readonly icon = input('');\n /**\n * Whether the wrapper component has icon content (internally used)\n * @defaultValue `false`\n */\n readonly wrapperHasIconContent = input(false);\n\n protected readonly sidenav = inject(DfSidenavComponent);\n protected readonly wrapperInstance = inject(DfSidenavItemComponent);\n\n // check for the parent item to determine nesting level\n protected readonly parentItem = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n protected readonly isFirstLevel = this.parentItem?.['parentWrapper'] === null;\n\n protected readonly iconContent = contentChild('dfSidenavIcon');\n\n protected abstract childLinks: Signal<readonly (DfSidenavLinkBaseComponent | undefined)[]>;\n protected abstract childItems: Signal<readonly (DfSidenavItemBaseComponent | undefined)[]>;\n\n protected readonly hasActiveLinks = computed(() => this.childLinks().some((link) => link?.isActiveLink()));\n protected readonly hasActiveItems = computed(() => this.childItems().some((item) => item?.hasActiveLinks()));\n protected readonly hasActiveChildren = computed(() => this.hasActiveLinks() || this.hasActiveItems());\n\n /**\n * Computed signal indicating if the item has visible children\n */\n protected readonly hasVisibleChildren = computed(() => this.childLinks().some((link) => link?.['isVisible']()));\n\n /**\n * Method to toggle the collapsed state of the item\n * If the sidenav is minimized, it will expand it and uncollapse the item\n */\n toggleCollapse() {\n if (this.sidenav.isMinimized()) {\n this.sidenav.toggleMinimize(false);\n this.collapsed.set(false);\n } else {\n this.collapsed.set(!this.collapsed());\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, effect } from '@angular/core';\nimport { DfIcon } from '@design-factory/angular/icon';\nimport { DfSidenavItemBaseComponent } from './sidenav-item-base.component';\n\n/**\n * Component representing an item in the sidenav for desktop devices\n * The item represents a container which can hold other items or links\n * @internal\n */\n@Component({\n selector: 'df-sidenav-item-desktop',\n template: `\n <button\n class=\"df-sidenav-button\"\n [class.df-sidenav-active-level]=\"sidenav.isMinimized() && hasActiveChildren() && isFirstLevel\"\n [class.df-sidenav-active]=\"hasActiveChildren()\"\n (click)=\"toggleCollapse()\"\n [attr.aria-expanded]=\"!collapsed()\"\n [attr.aria-label]=\"label()\"\n >\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <df-icon class=\"{{ icon() }}\" />\n }\n @if (!sidenav.isMinimized()) {\n <span class=\"df-sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n <df-icon [class.expanded]=\"!collapsed()\" class=\"fa-light df-sidenav-collapse-toggle fa-chevron-down\" />\n }\n </button>\n\n <div [class.df-sidenav-item-hidden]=\"collapsed()\" [attr.aria-hidden]=\"collapsed()\" role=\"list\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n host: {\n '[class.df-hidden]': '!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'\n },\n imports: [NgTemplateOutlet, DfIcon]\n})\nexport class DfSidenavItemDesktopComponent extends DfSidenavItemBaseComponent {\n protected override readonly childLinks = computed(() =>\n this.wrapperInstance['childrenLinks']().map((link) => link['desktopInstance']())\n );\n protected override readonly childItems = computed(() =>\n this.wrapperInstance['childrenItems']().map((item) => item['desktopInstance']())\n );\n\n protected readonly isVisible = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return true;\n }\n return this.childLinks().some((link) => link?.['isVisible']());\n });\n\n constructor() {\n super();\n // Automatically collapse when minimized\n effect(() => {\n if (this.sidenav.isMinimized()) {\n this.collapsed.set(true);\n }\n });\n\n // Auto-expand when searching and has visible children\n effect(() => {\n if (this.sidenav['searchTerm']().trim() && this.hasVisibleChildren()) {\n this.collapsed.set(false);\n }\n });\n\n // Auto-expand when the child is active and sidenav is not minimized\n effect(() => {\n if (this.hasActiveChildren() && !this.sidenav.isMinimized()) {\n this.collapsed.set(false);\n }\n });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed } from '@angular/core';\nimport { DfIcon } from '@design-factory/angular/icon';\nimport { DfSidenavItemBaseComponent } from './sidenav-item-base.component';\n\n/**\n * Component representing an item in the sidenav for mobile devices\n * The item represents a container which can hold other items or links\n * @internal\n */\n@Component({\n selector: 'df-sidenav-item-mobile',\n template: `\n @if (shouldShowMobileHeader()) {\n <div class=\"df-sidenav-mobile-header df-sidenav-mobile\" role=\"listitem\">\n <button class=\"df-sidenav-button\" (click)=\"handleBackClick()\" [class.df-sidenav-active]=\"hasActiveChildren()\">\n <df-icon class=\"fa-light df-sidenav-mobile-header-back-arrow fa-arrow-left\" />\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <df-icon class=\"{{ icon() }}\" />\n }\n <span class=\"df-sidenav-label\">{{ label() }}</span>\n </button>\n </div>\n }\n\n <!-- Regular item button (hidden when it's the active mobile panel) -->\n @if (isVisibleInList()) {\n <button class=\"df-sidenav-button\" (click)=\"handleItemClick()\" [class.df-sidenav-active]=\"hasActiveChildren()\">\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <df-icon class=\"{{ icon() }}\" />\n }\n @if (!sidenav.isMinimized()) {\n <span class=\"df-sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n <!-- Mobile: Show forward arrow for items with children -->\n <df-icon class=\"fa-light df-sidenav-collapse-toggle fa-chevron-right\" />\n }\n </button>\n }\n\n <!-- Children container - rendered separately from the button -->\n @if (shouldShowChildren()) {\n <div role=\"list\" class=\"df-sidenav-mobile\">\n <ng-container [ngTemplateOutlet]=\"content\" />\n </div>\n }\n\n <ng-template #content>\n <ng-content />\n </ng-template>\n `,\n host: {\n class: 'df-sidenav-mobile',\n '[class.df-hidden]':\n 'shouldHideComponent() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'\n },\n imports: [NgTemplateOutlet, DfIcon]\n})\nexport class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {\n protected override readonly childLinks = computed(() =>\n this.wrapperInstance['childrenLinks']().map((link) => link['mobileInstance']())\n );\n protected override readonly childItems = computed(() =>\n this.wrapperInstance['childrenItems']().map((item) => item['mobileInstance']())\n );\n protected readonly isSearching = computed(() => !!this.sidenav['searchTerm']().trim());\n\n // Check if this item is in the navigation path (is an ancestor of current panel)\n private readonly isInNavigationPath = computed(() =>\n this.sidenav['mobileNavigationStack']().includes(this.wrapperInstance)\n );\n\n // Check if this item should show as mobile header\n protected readonly shouldShowMobileHeader = computed(() => {\n // Don't show header when searching\n if (this.isSearching()) {\n return false;\n }\n return this.sidenav['currentMobilePanel']() === this.wrapperInstance;\n });\n\n // Determine if this item's children should be visible\n protected readonly shouldShowChildren = computed(() => {\n // Mobile with search: show children to display matching links\n if (this.isSearching()) {\n return this.hasMatchingChildren();\n }\n // Mobile without search: show if this item is in the navigation path\n return this.isInNavigationPath();\n });\n\n // Determine if this item should be visible in the list\n protected readonly isVisibleInList = computed(() => {\n // Mobile with search: don't show items, only links (items just provide structure)\n if (this.isSearching()) {\n return false;\n }\n\n // Mobile without search: use navigation levels\n const currentPanel = this.sidenav['currentMobilePanel']();\n\n if (currentPanel === null) {\n // Root level: show only first-level items\n return this.isFirstLevel && this.isVisible();\n } else if (currentPanel === this.parentItem) {\n // This is the active panel, don't show it in the list (it's in the header)\n return false;\n } else {\n // Show items whose parent matches the current panel\n const parentMobile = this.parentItem?.['parentWrapper'];\n return parentMobile === currentPanel && this.isVisible();\n }\n });\n\n // Determine if the entire component should be hidden\n protected readonly shouldHideComponent = computed(() => {\n // Don't hide if this is the current mobile panel showing its children\n if (this.shouldShowMobileHeader()) {\n return false;\n }\n // Otherwise, use the regular visibility logic\n return !this.isVisibleInList() && !this.shouldShowChildren();\n });\n\n private readonly isVisible = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return true;\n }\n\n // Check if this item's label matches\n return String(this.label()).toLowerCase().includes(search);\n });\n\n // Check if this item has any matching children (for showing the container)\n private readonly hasMatchingChildren = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return false;\n }\n return this.childLinks().some((link) => link?.['isVisible']());\n });\n\n /**\n * Handle click event on the item\n */\n protected handleItemClick() {\n this.sidenav.navigateToChildren(this.wrapperInstance);\n }\n\n /**\n * Handle click event on the header back button\n */\n protected handleBackClick() {\n this.sidenav.navigateBack();\n }\n}\n","import { computed, contentChild, Directive, inject, input, linkedSignal } from '@angular/core';\nimport { IsActiveMatchOptions } from '@angular/router';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavItemComponent } from '../sidenav-item/sidenav-item.component';\n\n/**\n * Base link class that is extended by desktop and mobile link components\n * @internal\n */\n@Directive()\nexport abstract class DfSidenavLinkBaseComponent {\n /**\n * The router link path for to the link\n */\n readonly linkPath = input.required<string>();\n /**\n * The label of the link\n */\n readonly label = input.required<string>();\n /**\n * The icon class name or inline content (e.g., font awesome class)\n */\n readonly icon = input('');\n /**\n * Whether the wrapper component has icon content (internally used)\n */\n readonly wrapperHasIconContent = input(false);\n /**\n * Explicitly sets the active state of the link. When provided, the link behaves\n * as an external link (plain `<a href>`) and the Angular Router is not used.\n * When `undefined` (default), the active state is determined by the Angular Router.\n */\n readonly active = input<boolean>();\n /**\n * Reflects the current active state of the link.\n * Driven by the `active` input when provided, otherwise updated by the router via `(isActiveChange)`.\n */\n readonly isActiveLink = linkedSignal(() => this.active() ?? false);\n /**\n * Options to determine when the router link is considered active\n */\n readonly routerLinkActiveOptions = input<IsActiveMatchOptions | { exact: boolean }>({ exact: false });\n\n protected readonly sidenav = inject(DfSidenavComponent);\n protected readonly parentItem = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n protected readonly isFirstLevel = this.parentItem === null;\n protected readonly iconContent = contentChild('dfSidenavIcon');\n\n /**\n * Computed signal indicating if the link is visible based on search term\n */\n protected readonly isVisible = computed(() => {\n const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';\n if (!search) {\n return true;\n }\n return this.label().toLowerCase().includes(search);\n });\n\n protected toggleSidenavOnSmallScreen() {\n if (this.sidenav['isSmallScreen']()) {\n this.sidenav.toggleMinimize();\n }\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, ElementRef, viewChild } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { DfIcon } from '@design-factory/angular/icon';\nimport { DfSidenavLinkBaseComponent } from './sidenav-link-base.component';\n\n/**\n * Component representing a leaf in the sidenav for desktop devices\n * @internal\n */\n@Component({\n selector: 'df-sidenav-link-desktop',\n template: `\n @if (active() !== undefined) {\n <a\n class=\"df-sidenav-button\"\n [class.df-sidenav-active-level]=\"active()\"\n [href]=\"linkPath()\"\n target=\"_blank\"\n [attr.aria-label]=\"label()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n (click)=\"toggleSidenavOnSmallScreen()\"\n #anchor\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n } @else {\n <a\n class=\"df-sidenav-button\"\n routerLinkActive=\"df-sidenav-active-level\"\n ariaCurrentWhenActive=\"page\"\n (isActiveChange)=\"isActiveLink.set($event)\"\n [routerLink]=\"linkPath()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n [attr.aria-label]=\"label()\"\n (click)=\"toggleSidenavOnSmallScreen()\"\n #anchor\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n }\n <ng-template #content>\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <df-icon class=\"{{ icon() }}\" />\n }\n @if (!sidenav.isMinimized()) {\n <span class=\"df-sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n }\n </ng-template>\n `,\n host: {\n '[class.df-hidden]': '!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'\n },\n imports: [RouterLink, RouterLinkActive, NgTemplateOutlet, DfIcon]\n})\nexport class DfSidenavLinkDesktopComponent extends DfSidenavLinkBaseComponent {\n protected readonly anchor = viewChild.required<ElementRef<HTMLAnchorElement>>('anchor');\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, inject } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\nimport { DfIcon } from '@design-factory/angular/icon';\nimport { DfSidenavLinkBaseComponent } from './sidenav-link-base.component';\nimport { DfSidenavLinkComponent } from './sidenav-link.component';\n\n/**\n * Component representing a leaf in the sidenav for mobile devices\n * @internal\n */\n@Component({\n selector: 'df-sidenav-link-mobile',\n template: `\n @if (active() !== undefined) {\n <a\n class=\"df-sidenav-button df-sidenav-breadcrumb-button\"\n [class.df-sidenav-active-level]=\"active()\"\n [href]=\"linkPath()\"\n target=\"_blank\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n (click)=\"toggleSidenavOnSmallScreen()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n } @else {\n <a\n class=\"df-sidenav-button df-sidenav-breadcrumb-button\"\n routerLinkActive=\"df-sidenav-active-level\"\n ariaCurrentWhenActive=\"page\"\n (isActiveChange)=\"isActiveLink.set($event)\"\n [routerLink]=\"linkPath()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n (click)=\"toggleSidenavOnSmallScreen()\"\n >\n <ng-container [ngTemplateOutlet]=\"content\" />\n </a>\n }\n <ng-template #content>\n <ng-content select=\"[dfSidenavIcon]\" />\n @if (icon()) {\n <df-icon class=\"{{ icon() }}\" />\n }\n @if (!sidenav.isMinimized()) {\n <div class=\"df-sidenav-link-content-mobile\">\n <span class=\"df-sidenav-label\" [title]=\"label()\">{{ label() }}</span>\n @if (isSearching() && breadcrumbPath().length > 0) {\n <small class=\"df-sidenav-breadcrumb\">\n @for (item of breadcrumbPath(); track $index) {\n <span>{{ item }}</span>\n @if (!$last) {\n <df-icon class=\"fa-arrow-right\" />\n }\n }\n </small>\n }\n </div>\n }\n </ng-template>\n `,\n host: {\n '[class.df-hidden]': '!isVisibleInList() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))',\n style: 'display: flex;'\n },\n imports: [RouterLink, RouterLinkActive, NgTemplateOutlet, DfIcon]\n})\nexport class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {\n // Inject link wrapper to get parent wrapper reference\n private readonly linkWrapper = inject(DfSidenavLinkComponent);\n\n private readonly currentMobilePanel = computed(() => this.sidenav['currentMobilePanel']() ?? null);\n protected readonly isSearching = computed(() => !!this.sidenav['searchTerm']().trim());\n\n protected readonly isVisibleInList = computed(() => {\n const currentPanel = this.currentMobilePanel();\n const parentWrapper = this.linkWrapper['parentWrapper'];\n // Mobile with search: show all matching links regardless of level\n if (this.isSearching()) {\n return this.isVisible();\n }\n\n // Mobile without search: use navigation levels\n if (currentPanel === null) {\n // Root level: show only first-level links\n return this.isFirstLevel && this.isVisible();\n } else {\n // Show links whose parent item wrapper matches the current panel\n return parentWrapper === currentPanel && this.isVisible();\n }\n });\n\n // Build breadcrumb path for mobile search view\n protected readonly breadcrumbPath = computed(() => {\n const path: string[] = [];\n let currentItem = this.parentItem;\n // Walk up the parent chain\n while (currentItem?.label()) {\n path.unshift(String(currentItem.label()));\n const grandParent = currentItem?.['parentWrapper'];\n currentItem = grandParent || null;\n }\n return path;\n });\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Utility directive for marking icon content in sidenav items and links.\n * Needed for identification of the projected icon content.\n * Use in case if there is no icon provided with font-awesome.\n * @since 21.0.0\n */\n@Directive({\n selector: '[dfSidenavIcon]'\n})\nexport class DfSidenavIconDirective {}\n","import { Component, computed, contentChild, inject, input, viewChild } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavItemComponent } from '../sidenav-item/sidenav-item.component';\nimport { DfSidenavLinkDesktopComponent } from './sidenav-link-desktop.component';\nimport { DfSidenavLinkMobileComponent } from './sidenav-link-mobile.component';\nimport { DfSidenavIconDirective } from '../sidenav-icon.directive';\nimport { IsActiveMatchOptions } from '@angular/router';\n\n/**\n * Sidenav link that can be used inside <df-sidenav-item> or directly inside the <df-sidenav>\n * @since 21.0.0\n */\n@Component({\n selector: 'df-sidenav-link',\n template: `\n <ng-template #iconSlot>\n <ng-content select=\"[dfSidenavIcon]\" />\n </ng-template>\n <ng-template #defaultContent>\n <ng-content />\n </ng-template>\n\n @if (sidenav['isMobileDevice']()) {\n <df-sidenav-link-mobile\n [linkPath]=\"linkPath()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [active]=\"active()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"defaultContent\" />\n </df-sidenav-link-mobile>\n } @else {\n <df-sidenav-link-desktop\n [linkPath]=\"linkPath()\"\n [label]=\"label()\"\n [icon]=\"icon()\"\n [active]=\"active()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"defaultContent\" />\n </df-sidenav-link-desktop>\n }\n `,\n imports: [DfSidenavLinkDesktopComponent, DfSidenavLinkMobileComponent, NgTemplateOutlet],\n host: {\n role: 'listitem',\n style: 'display: block;',\n '[class.df-sidenav-mobile]': \"sidenav['isMobileDevice']()\"\n }\n})\nexport class DfSidenavLinkComponent {\n /**\n * The router link path for to the link\n */\n readonly linkPath = input.required<string>();\n /**\n * The label of the link\n */\n readonly label = input.required<string>();\n /**\n * The icon class name or inline content (e.g., font awesome class)\n */\n readonly icon = input('');\n /**\n * Options to determine when the router link is considered active\n */\n readonly routerLinkActiveOptions = input<IsActiveMatchOptions | { exact: boolean }>({ exact: false });\n /**\n * Explicitly sets the active state of the link. When provided, the link renders as\n * a plain `<a href>` (no Angular Router). When `undefined` (default), the Angular Router determines\n * the active state.\n */\n readonly active = input<boolean>();\n /**\n * The parent wrapper item component (if any)\n */\n protected readonly parentWrapper = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n /**\n * Reference to the desktop link component instance\n */\n protected readonly desktopInstance = viewChild(DfSidenavLinkDesktopComponent);\n /**\n * Reference to the mobile link component instance\n */\n protected readonly mobileInstance = viewChild(DfSidenavLinkMobileComponent);\n\n private readonly iconContentQuery = contentChild(DfSidenavIconDirective);\n protected readonly wrapperHasIconContent = computed(\n () => this.icon() !== '' || this.iconContentQuery() !== undefined\n );\n protected readonly sidenav = inject(DfSidenavComponent);\n}\n","import { Component, computed, contentChild, contentChildren, inject, input, model, viewChild } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DfSidenavItemDesktopComponent } from './sidenav-item-desktop.component';\nimport { DfSidenavItemMobileComponent } from './sidenav-item-mobile.component';\nimport { DfSidenavLinkComponent } from '../sidenav-link/sidenav-link.component';\nimport { DfSidenavComponent } from '../sidenav';\nimport { DfSidenavIconDirective } from '../sidenav-icon.directive';\n\n/**\n * Sidenav element that should be nested inside <df-sidenav> or <df-sidenav-item>\n * @since 21.0.0\n */\n@Component({\n selector: 'df-sidenav-item',\n template: `\n <ng-template #iconSlot>\n <ng-content select=\"[dfSidenavIcon]\" />\n </ng-template>\n <ng-template #content>\n <ng-content />\n </ng-template>\n\n @if (sidenav['isMobileDevice']()) {\n <df-sidenav-item-mobile\n [label]=\"label()\"\n [(collapsed)]=\"collapsed\"\n [icon]=\"icon()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"content\" />\n </df-sidenav-item-mobile>\n } @else {\n <df-sidenav-item-desktop\n [label]=\"label()\"\n [(collapsed)]=\"collapsed\"\n [icon]=\"icon()\"\n [wrapperHasIconContent]=\"wrapperHasIconContent()\"\n >\n <ng-container [ngTemplateOutlet]=\"iconSlot\" ngProjectAs=\"[dfSidenavIcon]\" />\n <ng-container [ngTemplateOutlet]=\"content\" />\n </df-sidenav-item-desktop>\n }\n `,\n imports: [DfSidenavItemDesktopComponent, DfSidenavItemMobileComponent, NgTemplateOutlet],\n host: {\n role: 'listitem',\n style: 'display: block;',\n '[class.df-sidenav-mobile]': \"sidenav['isMobileDevice']()\"\n }\n})\nexport class DfSidenavItemComponent {\n /**\n * Label of the sidenav item\n */\n readonly label = input.required();\n /**\n * Flag whether the sidenav item is collapsed\n * @defaultValue `false`\n */\n readonly collapsed = model(false);\n /**\n * Optional icon class for the sidenav item\n */\n readonly icon = input('');\n /**\n * Reference to the parent element containing this item\n */\n protected readonly parentWrapper = inject(DfSidenavItemComponent, {\n optional: true,\n skipSelf: true\n });\n /**\n * Child sidenav items nested inside this item\n */\n protected readonly childrenItems = contentChildren(DfSidenavItemComponent, { descendants: true });\n /**\n * Child sidenav links nested inside this item\n */\n protected readonly childrenLinks = contentChildren(DfSidenavLinkComponent, { descendants: true });\n /**\n * Reference to the desktop instance of the sidenav item\n */\n protected readonly desktopInstance = viewChild(DfSidenavItemDesktopComponent);\n /**\n * Reference to the mobile instance of the sidenav item\n */\n protected readonly mobileInstance = viewChild(DfSidenavItemMobileComponent);\n private readonly iconContentQuery = contentChild(DfSidenavIconDirective);\n protected readonly wrapperHasIconContent = computed(\n () => this.icon() !== '' || this.iconContentQuery() !== undefined\n );\n protected readonly sidenav = inject(DfSidenavComponent);\n}\n","import { createNavManager } from '@design-factory/core/services/navManager';\nimport type { NavManagerItemConfig } from '@design-factory/core/services/navManager';\nimport { useDirectiveForHost } from '@design-factory/angular/internals';\nimport { trackWindow } from '@design-factory/angular/breakpoints';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n Component,\n computed,\n contentChildren,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n linkedSignal,\n PLATFORM_ID,\n Signal,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { FormField, form } from '@angular/forms/signals';\nimport { DfDrawer } from '@design-factory/angular/drawer';\nimport { DfIcon } from '@design-factory/angular/icon';\nimport { DfSidenavItemComponent } from './sidenav-item/sidenav-item.component';\nimport { DfSidenavLinkComponent } from './sidenav-link/sidenav-link.component';\nimport { DfIconButton } from '@design-factory/angular/button';\n\n/**\n * Utility method to check if the user agent is a mobile device\n *\n * @param userAgent - The user agent string to check\n * @returns `true` if the user agent corresponds to a mobile device, `false` otherwise\n */\nfunction isMobileUserAgent(userAgent: string): boolean {\n return /mobile|android|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(userAgent);\n}\n\n/**\n * SideNav is a component to provide navigation feature with a panel on the side of your page\n * @since 21.0.0\n */\n@Component({\n selector: 'df-sidenav',\n template: `\n <df-drawer\n #drawer\n position=\"inline-start\"\n [className]=\"isSmallScreen() ? 'df-sidenav-mobile-drawer' : ''\"\n [visible]=\"!_isMinimized()\"\n (visibleChange)=\"visibleChangeHandler($event)\"\n (minimizedChange)=\"onMinimizedChange($event)\"\n (resizingChange)=\"resizingChangeHandler($event)\"\n [bodyScroll]=\"true\"\n [backdrop]=\"backdrop()\"\n [keepInDom]=\"true\"\n [(size)]=\"width\"\n [container]=\"isSmallScreen() ? null : hostRef.nativeElement\"\n [resizable]=\"resizable() && !isSmallScreen()\"\n [focusOnInit]=\"false\"\n [configuration]=\"isLargeUpScreen() || (isMediumScreen() && !collapsible()) ? 'inline' : 'overlay'\"\n >\n <nav class=\"df-sidenav-container\">\n @if (searchable()) {\n <div class=\"df-sidenav-header\" [class.df-sidenav-header-minimized]=\"_isMinimized()\">\n @if (_isMinimized()) {\n <button\n dfIconButton\n appearance=\"outline\"\n variant=\"neutral\"\n class=\"df-sidenav-search-minimized fa-light fa-search\"\n [class.df-sidenav-search-minimized-no-icons]=\"!contentHasIcons()\"\n (click)=\"focusSearch()\"\n i18n-aria-label=\"@@df.sidenav.search.ariaLabel\"\n aria-label=\"Search\"\n ></button>\n } @else {\n <div class=\"input-group\">\n <div class=\"input-group-prepend\">\n <df-icon class=\"input-group-text fa-light fa-search\" />\n </div>\n <input\n type=\"search\"\n class=\"form-control df-input-withicon\"\n i18n-placeholder=\"@@df.sidenav.search.placeholder\"\n placeholder=\"Search\"\n i18n-aria-label=\"@@df.sidenav.search.ariaLabel\"\n aria-label=\"Search\"\n [formField]=\"searchTermFormField\"\n #textInput\n />\n <div class=\"input-group-append\">\n <button\n class=\"input-group-text fa-light fa-times\"\n [class.df-sidenav-search-empty]=\"searchTerm() === ''\"\n (click)=\"searchTerm.set(''); textInput.focus(); $event.preventDefault()\"\n >\n <span class=\"visually-hidden\" i18n=\"@@df.sidenav.search.clearText\">Clear text</span>\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n <div role=\"list\" class=\"df-sidenav-body\" #scrollableContainer>\n <ng-content />\n </div>\n @if (collapsible() && !isSmallScreen()) {\n <div class=\"df-sidenav-footer\">\n <button\n dfIconButton\n class=\"df-sidenav-toggle-minimized\"\n [class.fa-arrow-right-to-line]=\"isMinimized()\"\n [class.fa-arrow-left-to-line]=\"!isMinimized()\"\n appearance=\"outline\"\n (click)=\"toggleMinimize()\"\n i18n-aria-label=\"@@df.sidenav.toggleMinimize.ariaLabel\"\n aria-label=\"Toggle minimized sidenav\"\n ></button>\n </div>\n }\n </nav>\n </df-drawer>\n `,\n imports: [FormField, DfDrawer, DfIcon, DfIconButton],\n styles: \"@use '@design-factory/components-styles/sidenav';\",\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'df-sidenav',\n '[class.df-sidenav-lg]': 'isLargeUpScreen()',\n '[class.df-sidenav-withicon]': 'contentHasIcons()',\n '[class.df-hidden]': '!isLargeUpScreen() && _isMinimized()',\n '[class.df-sidenav-drawer]': 'isMediumScreen() && !_isMinimized()',\n '[class.df-sidenav-minimized]': 'isMinimized()'\n }\n})\nexport class DfSidenavComponent implements AfterContentInit {\n /**\n * Flag whether the sidenav includes a search input\n * @defaultValue `true`\n */\n readonly searchable = input(true, { transform: booleanAttribute });\n /**\n * Flag whether the sidenav should be resizable\n * @defaultValue `true`\n */\n readonly resizable = input(true, { transform: booleanAttribute });\n /**\n * Flag whether the sidenav should have the collapse button\n * @defaultValue `true`\n */\n readonly collapsible = input(true, { transform: booleanAttribute });\n /**\n * Flag to enable the mobile sidenav display of the items.\n * @defaultValue `true`\n */\n readonly enableMobile = input(true, { transform: booleanAttribute });\n /**\n * Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized.\n *\n * @since 21.1.0\n */\n readonly disableInitialDesktopAutoScroll = input(false, { transform: booleanAttribute });\n\n protected readonly _isMinimized = linkedSignal(() => {\n // in mobile devices, the default value is true (hiding the drawer) and does not track changes to the screen size\n if (this.isMobileDevice()) {\n return true;\n }\n // in desktop, we track the large screen signal in order to reset the minimized state\n // it allows resizing the window and have a more user-friendly behavior\n return !this.isLargeUpScreen() && this.collapsible();\n });\n\n /**\n * Flag to indicate if the sidenav is minimized\n */\n readonly isMinimized = computed(() => this._isMinimized());\n\n protected readonly hostRef = inject(ElementRef<HTMLElement>);\n\n private readonly scrollableContainer = viewChild.required<ElementRef<HTMLElement>>('scrollableContainer');\n\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n protected readonly isMobileDevice = computed(() => {\n if (this.isBrowser) {\n return this.enableMobile() && isMobileUserAgent(navigator.userAgent);\n } else {\n // SSR: try to get request if available\n try {\n const request = inject(Request, { optional: true });\n if (request && 'headers' in request) {\n const userAgent = request.headers.get('user-agent') || '';\n return this.enableMobile() && isMobileUserAgent(userAgent);\n }\n } catch {\n // Request token not available or not in SSR context\n }\n return false;\n }\n });\n\n protected readonly searchInput = viewChild<ElementRef>('textInput');\n // Query all links to find active ones\n private readonly allLinks = contentChildren(DfSidenavLinkComponent, { descendants: true });\n private readonly allItems = contentChildren(DfSidenavItemComponent, { descendants: true });\n\n protected readonly width = signal(null as number | null);\n private savedWidth: number | null = null;\n\n protected readonly searchTerm = signal('');\n protected readonly searchTermFormField = form(this.searchTerm);\n\n // Mobile navigation stack - tracks which item's children are currently displayed\n // Using component references instead of labels for uniqueness\n protected readonly mobileNavigationStack = signal<(DfSidenavItemComponent | null | undefined)[]>([]);\n protected readonly currentMobilePanel: Signal<DfSidenavItemComponent | null | undefined> = computed(() => {\n const stack = this.mobileNavigationStack();\n return stack.length > 0 ? stack[stack.length - 1] : null;\n });\n\n private readonly isSm = trackWindow('sm');\n private readonly isLg = trackWindow('lg');\n protected readonly isSmallScreen = computed(() => !this.isSm() && !this.isLg());\n protected readonly isMediumScreen = computed(() => this.isSm() && !this.isLg());\n protected readonly isLargeUpScreen = computed(() => this.isLg());\n\n protected readonly backdrop = computed(() => this.isMediumScreen());\n\n protected readonly navManager = createNavManager();\n\n protected readonly navManagerConfig: NavManagerItemConfig = {\n selector: (node) => node.querySelectorAll<HTMLElement>('input, button, a'),\n keys: {\n Home: this.navManager.focusFirst,\n End: this.navManager.focusLast\n }\n };\n\n private readonly injector = inject(Injector);\n\n // internal flag to allow mobile screen navigation to non-active item when minimized\n private readonly skipActiveItemNavigation = linkedSignal(() => {\n this.isMinimized();\n return false;\n });\n\n constructor() {\n useDirectiveForHost(this.navManager.directive, this.navManagerConfig);\n afterRenderEffect(() => {\n if (this.isBrowser) {\n if (this.isMobileDevice() && !this._isMinimized() && !this.skipActiveItemNavigation()) {\n // Delay to ensure DOM and contentChildren queries are ready\n this.navigateToActiveItem();\n }\n\n // Keep track of the screen size changes to reset width\n if (this.isMediumScreen() || this.isSmallScreen() || this.isLargeUpScreen()) {\n this.width.set(null);\n }\n }\n });\n }\n\n ngAfterContentInit() {\n if (!this.disableInitialDesktopAutoScroll() && !this.isMobileDevice() && this.isBrowser && this.isLargeUpScreen()) {\n void this.initializeDesktopNavigation();\n }\n }\n\n /**\n * This method allows to center and show the active link, when the sidenav is used in desktop and a large screen.\n *\n * It collapses all items and expands only the parents of the active link and scrolls to the active link to make it visible.\n */\n private initializeDesktopNavigation() {\n const effectRef = effect(\n () => {\n // Find the first active link\n const activeLink = this.allLinks()\n .find((link) => link['desktopInstance']()?.isActiveLink())\n ?.['desktopInstance']?.();\n if (activeLink) {\n untracked(() => {\n this.allItems().forEach((item) => {\n item.collapsed.set(true);\n });\n let currentParent = activeLink['parentItem'];\n while (currentParent) {\n currentParent.collapsed.set(false);\n currentParent = currentParent['parentWrapper'];\n }\n\n // We need a render to make sure the getBoundingClientRect calls will be correct AFTER the collapse of the items.\n afterNextRender(\n {\n read: () => {\n const anchorElement = activeLink['anchor']().nativeElement;\n const containerElement = this.scrollableContainer().nativeElement;\n const heightPx =\n anchorElement.getBoundingClientRect().top +\n anchorElement.clientHeight / 2 -\n containerElement.getBoundingClientRect().top -\n containerElement.clientHeight / 3;\n containerElement.scrollTo({ top: heightPx, behavior: 'instant' });\n effectRef.destroy();\n }\n },\n { injector: this.injector }\n );\n });\n }\n },\n { injector: this.injector }\n );\n }\n\n /**\n * Toggles the minimized state of the sidenav\n *\n * @param minimized - Optional parameter to explicitly set the minimized state\n *\n */\n toggleMinimize(minimized = !this._isMinimized()) {\n if (minimized) {\n this.savedWidth = this.width();\n this.width.set(0);\n // reset mobile navigation stack to show root level icons (if any)\n this.mobileNavigationStack.set([]);\n } else {\n this.width.set(this.savedWidth);\n }\n this._isMinimized.set(minimized);\n }\n\n /**\n * Handles visibility changes of the sidenav component to handle the component state accordingly.\n *\n * @param isVisible - Boolean indicating whether the sidenav is currently visible\n */\n visibleChangeHandler(isVisible: boolean) {\n if (!isVisible) {\n // reset mobile navigation stack to show root level icons (if any)\n this.mobileNavigationStack.set([]);\n this.width.set(0);\n }\n this._isMinimized.set(!isVisible);\n }\n\n /**\n * Handles changes when the sidenav is resized, to handle the state accordingly.\n *\n * @param isResizing - Whether the sidenav is currently being resized\n */\n resizingChangeHandler(isResizing: boolean) {\n if (isResizing) {\n this._isMinimized.set(false);\n } else {\n if (this._isMinimized()) {\n this.width.set(0);\n } else {\n this.savedWidth = this.width();\n }\n }\n }\n\n protected onMinimizedChange(isMinimized: boolean) {\n if (isMinimized) {\n this.mobileNavigationStack.set([]);\n }\n this._isMinimized.set(isMinimized);\n }\n\n // utility to transfer focus from the button when minimized to the search input when uncollapsed\n protected focusSearch() {\n this.toggleMinimize(false);\n setTimeout(() => {\n this.searchInput()?.nativeElement.focus();\n });\n }\n\n /**\n * Method to add the given item to the mobile navigation stack\n * @param itemRef item to be added to the navigation stack\n */\n navigateToChildren(itemRef: DfSidenavItemComponent | null | undefined) {\n if (this.isMinimized()) {\n this.toggleMinimize(false);\n this.skipActiveItemNavigation.set(true);\n }\n const stack = this.mobileNavigationStack();\n this.mobileNavigationStack.set([...stack, itemRef]);\n }\n\n /**\n * Method to navigate back in the mobile navigation stack\n */\n navigateBack() {\n const stack = this.mobileNavigationStack();\n if (stack.length > 0) {\n this.mobileNavigationStack.set(stack.slice(0, -1));\n }\n }\n\n /**\n * Navigates to the active item in the sidenav\n * Expands parent items (desktop) and sets up mobile navigation stack\n */\n private navigateToActiveItem() {\n if (!this.isBrowser) {\n return;\n }\n\n // Find the first active link\n const activeLink = this.allLinks()\n .find((link) => link['mobileInstance']()?.isActiveLink())\n ?.['mobileInstance']();\n if (activeLink && activeLink['parentItem']) {\n // Build the path from root to the active link's parent (inclusive)\n const navigationPath: DfSidenavItemComponent[] = [];\n let current: DfSidenavItemComponent | null = activeLink['parentItem'];\n while (current) {\n navigationPath.unshift(current); // Add to beginning to build path from root\n current = current['parentWrapper'];\n }\n this.mobileNavigationStack.set(navigationPath);\n } else if (activeLink && !activeLink['parentItem']) {\n // Clear navigation stack to show root level\n this.mobileNavigationStack.set([]);\n }\n }\n\n protected readonly contentHasIcons = computed(\n () =>\n this.allItems().some((item) => item['wrapperHasIconContent']()) ||\n this.allLinks().some((link) => link['wrapperHasIconContent']())\n );\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { IsActiveMatchOptions } from '@angular/router';\nimport { DfSidenavComponent } from './sidenav';\nimport { DfSidenavItemComponent } from './sidenav-item/sidenav-item.component';\nimport { DfSidenavLinkComponent } from './sidenav-link/sidenav-link.component';\n\n/**\n * Defines the structure of the navigation items used to build the sidenav menu.\n */\nexport type DfSideNavItem = {\n label: string;\n icon?: string;\n collapsed?: boolean;\n children: (DfSideNavItem | DfSideNavLink)[];\n};\n/**\n * Defines the structure of the navigation links used to build the sidenav menu.\n */\nexport type DfSideNavLink = {\n label: string;\n icon?: string;\n linkPath: string;\n active?: boolean;\n routerLinkActiveOptions?: IsActiveMatchOptions | { exact: boolean };\n};\n\n/**\n * Public input node accepted by {@link DfSidenavInput}.\n */\nexport type DfSideNavInputNode = DfSideNavItem | DfSideNavLink;\n\n// Warning: I am deeply sorry for the pyramid of doom that is the nested for loops in the template, but I could not find a better way to render the nested sidenav items and keep sidenav items contentChild queries working.\n\n/**\n * A wrapper of the {@link DfSidenavComponent} driven by a data array provided as an input.\n * All inputs are forwarded to the underlying {@link DfSidenavComponent}.\n *\n * @since 22.0\n */\n@Component({\n selector: 'df-sidenav-input',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [DfSidenavComponent, DfSidenavItemComponent, DfSidenavLinkComponent],\n template: `\n <df-sidenav\n [class]=\"className()\"\n [searchable]=\"searchable()\"\n [resizable]=\"resizable()\"\n [collapsible]=\"collapsible()\"\n [enableMobile]=\"enableMobile()\"\n [disableInitialDesktopAutoScroll]=\"disableInitialDesktopAutoScroll()\"\n >\n @for (element1 of items(); track element1.label) {\n @if (isSideItem(element1)) {\n <df-sidenav-item\n [label]=\"element1.label\"\n [icon]=\"element1.icon || ''\"\n [collapsed]=\"element1.collapsed ?? false\"\n (collapsedChange)=\"element1.collapsed = $event\"\n >\n @for (element2 of element1.children; track element2.label) {\n @if (isSideItem(element2)) {\n <df-sidenav-item\n [label]=\"element2.label\"\n [icon]=\"element2.icon || ''\"\n [collapsed]=\"element2.collapsed ?? false\"\n (collapsedChange)=\"element2.collapsed = $event\"\n >\n @for (element3 of element2.children; track element3.label) {\n @if (isSideItem(element3)) {\n <df-sidenav-item\n [label]=\"element3.label\"\n [icon]=\"element3.icon || ''\"\n [collapsed]=\"element3.collapsed ?? false\"\n (collapsedChange)=\"element3.collapsed = $event\"\n >\n @for (element4 of element3.children; track element4.label) {\n @if (!isSideItem(element4)) {\n <df-sidenav-link\n [label]=\"element4.label\"\n [icon]=\"element4.icon || ''\"\n [linkPath]=\"element4.linkPath\"\n [active]=\"element4.active\"\n [routerLinkActiveOptions]=\"element4.routerLinkActiveOptions || { exact: false }\"\n />\n }\n }\n </df-sidenav-item>\n } @else {\n <df-sidenav-link\n [label]=\"element3.label\"\n [icon]=\"element3.icon || ''\"\n [linkPath]=\"element3.linkPath\"\n [active]=\"element3.active\"\n [routerLinkActiveOptions]=\"element3.routerLinkActiveOptions || { exact: false }\"\n />\n }\n }\n </df-sidenav-item>\n } @else {\n <df-sidenav-link\n [label]=\"element2.label\"\n [icon]=\"element2.icon || ''\"\n [linkPath]=\"element2.linkPath\"\n [active]=\"element2.active\"\n [routerLinkActiveOptions]=\"element2.routerLinkActiveOptions || { exact: false }\"\n />\n }\n }\n </df-sidenav-item>\n } @else {\n <df-sidenav-link\n [label]=\"element1.label\"\n [icon]=\"element1.icon || ''\"\n [linkPath]=\"element1.linkPath\"\n [active]=\"element1.active\"\n [routerLinkActiveOptions]=\"element1.routerLinkActiveOptions || { exact: false }\"\n />\n }\n }\n </df-sidenav>\n `\n})\nexport class DfSidenavInput {\n /**\n * Navigation items to render in the sidenav.\n */\n readonly items = input<DfSideNavInputNode[]>([]);\n\n /**\n * Class name applied to the underlying {@link DfSidenavComponent} host element.\n * @default ''\n */\n readonly className = input('');\n\n /**\n * Flag whether the sidenav includes a search input.\n * @default false\n */\n readonly searchable = input(false, { transform: booleanAttribute });\n\n /**\n * Flag whether the sidenav should be resizable.\n * @default false\n */\n readonly resizable = input(false, { transform: booleanAttribute });\n\n /**\n * Flag whether the sidenav should have the collapse button.\n * @default true\n */\n readonly collapsible = input(true, { transform: booleanAttribute });\n\n /**\n * Flag to enable the mobile sidenav display of the items.\n * @default true\n */\n readonly enableMobile = input(true, { transform: booleanAttribute });\n\n /**\n * Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized.\n * @default false\n */\n readonly disableInitialDesktopAutoScroll = input(false, { transform: booleanAttribute });\n\n private readonly _sidenav = viewChild.required(DfSidenavComponent);\n\n /**\n * Whether the sidenav is currently minimized.\n */\n readonly isMinimized = computed(() => this._sidenav().isMinimized() ?? false);\n\n /**\n * Toggle or set the minimized state of the sidenav.\n */\n toggleMinimize(minimized?: boolean): void {\n this._sidenav().toggleMinimize(minimized);\n }\n\n protected isSideItem(item: DfSideNavItem | DfSideNavLink): item is DfSideNavItem {\n return 'children' in item;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}