@design-factory/design-factory 15.2.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 (428) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +47 -0
  3. package/assets/.gitkeep +0 -0
  4. package/assets/fonts/amadeus-bold/amadeus-bold.svg +5131 -0
  5. package/assets/fonts/amadeus-bold/amadeus-bold.ttf +0 -0
  6. package/assets/fonts/amadeus-bold/amadeus-bold.woff +0 -0
  7. package/assets/fonts/amadeus-bold/amadeus-bold.woff2 +0 -0
  8. package/assets/fonts/amadeus-full/amadeus-full-bold.woff +0 -0
  9. package/assets/fonts/amadeus-full/amadeus-full-bold.woff2 +0 -0
  10. package/assets/fonts/amadeus-full/amadeus-full-bolditalic.woff +0 -0
  11. package/assets/fonts/amadeus-full/amadeus-full-bolditalic.woff2 +0 -0
  12. package/assets/fonts/amadeus-full/amadeus-full-italic.woff +0 -0
  13. package/assets/fonts/amadeus-full/amadeus-full-italic.woff2 +0 -0
  14. package/assets/fonts/amadeus-full/amadeus-full-light.woff +0 -0
  15. package/assets/fonts/amadeus-full/amadeus-full-light.woff2 +0 -0
  16. package/assets/fonts/amadeus-full/amadeus-full-lightitalic.woff +0 -0
  17. package/assets/fonts/amadeus-full/amadeus-full-lightitalic.woff2 +0 -0
  18. package/assets/fonts/amadeus-full/amadeus-full-regular.woff +0 -0
  19. package/assets/fonts/amadeus-full/amadeus-full-regular.woff2 +0 -0
  20. package/assets/fonts/amadeus-full/amadeus-full-thin.woff +0 -0
  21. package/assets/fonts/amadeus-full/amadeus-full-thin.woff2 +0 -0
  22. package/assets/fonts/amadeus-full/amadeus-full-thinitalic.woff +0 -0
  23. package/assets/fonts/amadeus-full/amadeus-full-thinitalic.woff2 +0 -0
  24. package/assets/fonts/amadeus-light/amadeus-light.svg +8658 -0
  25. package/assets/fonts/amadeus-light/amadeus-light.ttf +0 -0
  26. package/assets/fonts/amadeus-light/amadeus-light.woff +0 -0
  27. package/assets/fonts/amadeus-light/amadeus-light.woff2 +0 -0
  28. package/assets/fonts/amadeus-regular/amadeus-regular.svg +5131 -0
  29. package/assets/fonts/amadeus-regular/amadeus-regular.ttf +0 -0
  30. package/assets/fonts/amadeus-regular/amadeus-regular.woff +0 -0
  31. package/assets/fonts/amadeus-regular/amadeus-regular.woff2 +0 -0
  32. package/assets/fonts/amadeus-thin/amadeus-thin.svg +5131 -0
  33. package/assets/fonts/amadeus-thin/amadeus-thin.ttf +0 -0
  34. package/assets/fonts/amadeus-thin/amadeus-thin.woff +0 -0
  35. package/assets/fonts/amadeus-thin/amadeus-thin.woff2 +0 -0
  36. package/assets/fonts/icon-font/light/df-light-300.svg +1709 -0
  37. package/assets/fonts/icon-font/light/df-light-300.ttf +0 -0
  38. package/assets/fonts/icon-font/light/df-light-300.woff +0 -0
  39. package/assets/fonts/icon-font/light/df-light-300.woff2 +0 -0
  40. package/assets/fonts/icon-font/solid/df-solid-900.svg +1709 -0
  41. package/assets/fonts/icon-font/solid/df-solid-900.ttf +0 -0
  42. package/assets/fonts/icon-font/solid/df-solid-900.woff +0 -0
  43. package/assets/fonts/icon-font/solid/df-solid-900.woff2 +0 -0
  44. package/assets/fonts/noto/notosans-bold.woff +0 -0
  45. package/assets/fonts/noto/notosans-bold.woff2 +0 -0
  46. package/assets/fonts/noto/notosans-bolditalic.woff +0 -0
  47. package/assets/fonts/noto/notosans-bolditalic.woff2 +0 -0
  48. package/assets/fonts/noto/notosans-italic.woff +0 -0
  49. package/assets/fonts/noto/notosans-italic.woff2 +0 -0
  50. package/assets/fonts/noto/notosans-light.woff +0 -0
  51. package/assets/fonts/noto/notosans-light.woff2 +0 -0
  52. package/assets/fonts/noto/notosans-lightitalic.woff +0 -0
  53. package/assets/fonts/noto/notosans-lightitalic.woff2 +0 -0
  54. package/assets/fonts/noto/notosans-regular.woff +0 -0
  55. package/assets/fonts/noto/notosans-regular.woff2 +0 -0
  56. package/assets/fonts/noto/notosans-thin.woff +0 -0
  57. package/assets/fonts/noto/notosans-thin.woff2 +0 -0
  58. package/assets/fonts/noto/notosans-thinitalic.woff +0 -0
  59. package/assets/fonts/noto/notosans-thinitalic.woff2 +0 -0
  60. package/assets/fonts/noto/notosansarabic-bold.woff +0 -0
  61. package/assets/fonts/noto/notosansarabic-bold.woff2 +0 -0
  62. package/assets/fonts/noto/notosansarabic-light.woff +0 -0
  63. package/assets/fonts/noto/notosansarabic-light.woff2 +0 -0
  64. package/assets/fonts/noto/notosansarabic-regular.woff +0 -0
  65. package/assets/fonts/noto/notosansarabic-regular.woff2 +0 -0
  66. package/assets/fonts/noto/notosansarabic-thin.woff +0 -0
  67. package/assets/fonts/noto/notosansarabic-thin.woff2 +0 -0
  68. package/assets/fonts/noto/notosansgeorgian-bold.woff +0 -0
  69. package/assets/fonts/noto/notosansgeorgian-bold.woff2 +0 -0
  70. package/assets/fonts/noto/notosansgeorgian-light.woff +0 -0
  71. package/assets/fonts/noto/notosansgeorgian-light.woff2 +0 -0
  72. package/assets/fonts/noto/notosansgeorgian-regular.woff +0 -0
  73. package/assets/fonts/noto/notosansgeorgian-regular.woff2 +0 -0
  74. package/assets/fonts/noto/notosansgeorgian-thin.woff +0 -0
  75. package/assets/fonts/noto/notosansgeorgian-thin.woff2 +0 -0
  76. package/assets/fonts/noto/notosanshebrew-bold.woff +0 -0
  77. package/assets/fonts/noto/notosanshebrew-bold.woff2 +0 -0
  78. package/assets/fonts/noto/notosanshebrew-light.woff +0 -0
  79. package/assets/fonts/noto/notosanshebrew-light.woff2 +0 -0
  80. package/assets/fonts/noto/notosanshebrew-regular.woff +0 -0
  81. package/assets/fonts/noto/notosanshebrew-regular.woff2 +0 -0
  82. package/assets/fonts/noto/notosanshebrew-thin.woff +0 -0
  83. package/assets/fonts/noto/notosanshebrew-thin.woff2 +0 -0
  84. package/assets/fonts/source-sans-pro-bold/source-sans-pro-bold.svg +19926 -0
  85. package/assets/fonts/source-sans-pro-bold/source-sans-pro-bold.ttf +0 -0
  86. package/assets/fonts/source-sans-pro-bold/source-sans-pro-bold.woff +0 -0
  87. package/assets/fonts/source-sans-pro-bold/source-sans-pro-bold.woff2 +0 -0
  88. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bold.woff +0 -0
  89. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bold.woff2 +0 -0
  90. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bolditalic.woff +0 -0
  91. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-bolditalic.woff2 +0 -0
  92. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-italic.woff +0 -0
  93. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-italic.woff2 +0 -0
  94. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-light.woff +0 -0
  95. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-light.woff2 +0 -0
  96. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-lightitalic.woff +0 -0
  97. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-lightitalic.woff2 +0 -0
  98. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-regular.woff +0 -0
  99. package/assets/fonts/source-sans-pro-full/sourcesanspro-full-regular.woff2 +0 -0
  100. package/assets/fonts/source-sans-pro-light/source-sans-pro-light.svg +19165 -0
  101. package/assets/fonts/source-sans-pro-light/source-sans-pro-light.ttf +0 -0
  102. package/assets/fonts/source-sans-pro-light/source-sans-pro-light.woff +0 -0
  103. package/assets/fonts/source-sans-pro-light/source-sans-pro-light.woff2 +0 -0
  104. package/assets/fonts/source-sans-pro-regular/source-sans-pro-regular.svg +20412 -0
  105. package/assets/fonts/source-sans-pro-regular/source-sans-pro-regular.ttf +0 -0
  106. package/assets/fonts/source-sans-pro-regular/source-sans-pro-regular.woff +0 -0
  107. package/assets/fonts/source-sans-pro-regular/source-sans-pro-regular.woff2 +0 -0
  108. package/assets/fonts/source-sans-pro-semibold/source-sans-pro-semibold.svg +20019 -0
  109. package/assets/fonts/source-sans-pro-semibold/source-sans-pro-semibold.ttf +0 -0
  110. package/assets/fonts/source-sans-pro-semibold/source-sans-pro-semibold.woff +0 -0
  111. package/assets/fonts/source-sans-pro-semibold/source-sans-pro-semibold.woff2 +0 -0
  112. package/assets/icon-amadeus.svg +1 -0
  113. package/assets/readme.png +0 -0
  114. package/design-factory-utilities.scss +5 -0
  115. package/design-factory.css +3 -0
  116. package/design-factory.scss +1 -0
  117. package/environment.d.ts +4 -0
  118. package/esm2022/design-factory.mjs +5 -0
  119. package/esm2022/environment.mjs +5 -0
  120. package/esm2022/index.mjs +5 -0
  121. package/esm2022/lib/angular/accessibility/accessibility.module.mjs +19 -0
  122. package/esm2022/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.mjs +32 -0
  123. package/esm2022/lib/angular/accessibility/directives/skip-link.directive.mjs +64 -0
  124. package/esm2022/lib/angular/alert/alert.module.mjs +17 -0
  125. package/esm2022/lib/angular/animation/ngbTransition.mjs +76 -0
  126. package/esm2022/lib/angular/animation/util.mjs +30 -0
  127. package/esm2022/lib/angular/card/card-advanced.module.mjs +17 -0
  128. package/esm2022/lib/angular/card/manage-card-selection.directive.mjs +47 -0
  129. package/esm2022/lib/angular/datepicker/closedatepicker.directive.mjs +38 -0
  130. package/esm2022/lib/angular/datepicker/datepicker-keyboard-nav.service.mjs +39 -0
  131. package/esm2022/lib/angular/datepicker/datepicker-range.directive.mjs +101 -0
  132. package/esm2022/lib/angular/datepicker/datepicker-range.service.mjs +97 -0
  133. package/esm2022/lib/angular/datepicker/datepicker.module.mjs +42 -0
  134. package/esm2022/lib/angular/footer/footer.module.mjs +17 -0
  135. package/esm2022/lib/angular/icon/amadeus-icon.mjs +79 -0
  136. package/esm2022/lib/angular/icon/icon.module.mjs +17 -0
  137. package/esm2022/lib/angular/icon/insert/insert-icon.directive.mjs +47 -0
  138. package/esm2022/lib/angular/icon/insert/insert-icon.module.mjs +17 -0
  139. package/esm2022/lib/angular/inputs/click/trigger-click.directive.mjs +28 -0
  140. package/esm2022/lib/angular/inputs/icon/inputicon.directive.mjs +95 -0
  141. package/esm2022/lib/angular/inputs/input-advanced.module.mjs +19 -0
  142. package/esm2022/lib/angular/mediaqueries/ifMedia.directive.mjs +52 -0
  143. package/esm2022/lib/angular/mediaqueries/media.module.mjs +17 -0
  144. package/esm2022/lib/angular/mediaqueries/media.service.mjs +46 -0
  145. package/esm2022/lib/angular/mediaqueries/mediaUtils.service.mjs +185 -0
  146. package/esm2022/lib/angular/modal/modal.service.mjs +36 -0
  147. package/esm2022/lib/angular/popover/config/popover.config.mjs +16 -0
  148. package/esm2022/lib/angular/popover/popover.module.mjs +17 -0
  149. package/esm2022/lib/angular/progressbar/progressbar.component.mjs +158 -0
  150. package/esm2022/lib/angular/progressbar/progressbar.module.mjs +18 -0
  151. package/esm2022/lib/angular/progressindicator/default/default-spinner.component.mjs +23 -0
  152. package/esm2022/lib/angular/progressindicator/progressindicator-backdrop.component.mjs +29 -0
  153. package/esm2022/lib/angular/progressindicator/progressindicator-config.mjs +25 -0
  154. package/esm2022/lib/angular/progressindicator/progressindicator-container.component.mjs +52 -0
  155. package/esm2022/lib/angular/progressindicator/progressindicator-ref.mjs +8 -0
  156. package/esm2022/lib/angular/progressindicator/progressindicator.directive.mjs +39 -0
  157. package/esm2022/lib/angular/progressindicator/progressindicator.module.mjs +45 -0
  158. package/esm2022/lib/angular/progressindicator/progressindicator.service.mjs +170 -0
  159. package/esm2022/lib/angular/right-to-left/directionDetection.service.mjs +32 -0
  160. package/esm2022/lib/angular/selects/events/manage-badge-events.directive.mjs +65 -0
  161. package/esm2022/lib/angular/selects/nav/manage-nav-select.directive.mjs +108 -0
  162. package/esm2022/lib/angular/selects/option-highlight.directive.mjs +59 -0
  163. package/esm2022/lib/angular/selects/select.model.mjs +2 -0
  164. package/esm2022/lib/angular/selects/select.module.mjs +22 -0
  165. package/esm2022/lib/angular/sidenav/dfSideNavAnimation.mjs +73 -0
  166. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.mjs +94 -0
  167. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.module.mjs +18 -0
  168. package/esm2022/lib/angular/sidenav/dfSideNavCollapse.service.mjs +37 -0
  169. package/esm2022/lib/angular/sidenav/dfSideNavCollapseConfig.mjs +27 -0
  170. package/esm2022/lib/angular/sidenav/excludeTrap.directive.mjs +55 -0
  171. package/esm2022/lib/angular/sidenav/manage-sidenav.directive.mjs +26 -0
  172. package/esm2022/lib/angular/sidenav/sidenav-config.mjs +25 -0
  173. package/esm2022/lib/angular/sidenav/sidenav.component.mjs +86 -0
  174. package/esm2022/lib/angular/sidenav/sidenav.module.mjs +52 -0
  175. package/esm2022/lib/angular/sidenav/sidenav.service.mjs +315 -0
  176. package/esm2022/lib/angular/sidenav/sidenavlist.component.mjs +50 -0
  177. package/esm2022/lib/angular/slider/direction/sliderdirection.directive.mjs +33 -0
  178. package/esm2022/lib/angular/slider/lib/change-context.mjs +3 -0
  179. package/esm2022/lib/angular/slider/lib/compatibility-helper.mjs +15 -0
  180. package/esm2022/lib/angular/slider/lib/event-listener-helper.mjs +77 -0
  181. package/esm2022/lib/angular/slider/lib/event-listener.mjs +3 -0
  182. package/esm2022/lib/angular/slider/lib/math-helper.mjs +15 -0
  183. package/esm2022/lib/angular/slider/lib/options.mjs +123 -0
  184. package/esm2022/lib/angular/slider/lib/pointer-type.mjs +9 -0
  185. package/esm2022/lib/angular/slider/lib/slider-element.directive.mjs +187 -0
  186. package/esm2022/lib/angular/slider/lib/slider-handle.directive.mjs +62 -0
  187. package/esm2022/lib/angular/slider/lib/slider-label.directive.mjs +38 -0
  188. package/esm2022/lib/angular/slider/lib/slider.component.mjs +2020 -0
  189. package/esm2022/lib/angular/slider/lib/tooltip-wrapper.component.mjs +20 -0
  190. package/esm2022/lib/angular/slider/lib/value-helper.mjs +50 -0
  191. package/esm2022/lib/angular/slider/slider.module.mjs +29 -0
  192. package/esm2022/lib/angular/toast/toast.module.mjs +17 -0
  193. package/esm2022/lib/angular/tooltip/tooltip.module.mjs +18 -0
  194. package/esm2022/lib/angular/tooltip/truncate/tooltipTruncate.directive.mjs +33 -0
  195. package/esm2022/lib/angular/utils/scrollbar.service.mjs +79 -0
  196. package/esm2022/lib/index.mjs +172 -0
  197. package/fesm2022/design-factory.mjs +5664 -0
  198. package/fesm2022/design-factory.mjs.map +1 -0
  199. package/index.d.ts +4 -0
  200. package/lib/angular/accessibility/accessibility.module.d.ts +10 -0
  201. package/lib/angular/accessibility/components/skip-links-container/skip-links-container.component.d.ts +13 -0
  202. package/lib/angular/accessibility/directives/skip-link.directive.d.ts +15 -0
  203. package/lib/angular/alert/alert.module.d.ts +8 -0
  204. package/lib/angular/animation/ngbTransition.d.ts +16 -0
  205. package/lib/angular/animation/util.d.ts +14 -0
  206. package/lib/angular/card/card-advanced.module.d.ts +8 -0
  207. package/lib/angular/card/manage-card-selection.directive.d.ts +13 -0
  208. package/lib/angular/datepicker/closedatepicker.directive.d.ts +10 -0
  209. package/lib/angular/datepicker/datepicker-keyboard-nav.service.d.ts +7 -0
  210. package/lib/angular/datepicker/datepicker-range.directive.d.ts +31 -0
  211. package/lib/angular/datepicker/datepicker-range.service.d.ts +32 -0
  212. package/lib/angular/datepicker/datepicker.module.d.ts +12 -0
  213. package/lib/angular/footer/footer.module.d.ts +8 -0
  214. package/lib/angular/icon/amadeus-icon.d.ts +5 -0
  215. package/lib/angular/icon/icon.module.d.ts +8 -0
  216. package/lib/angular/icon/insert/insert-icon.directive.d.ts +12 -0
  217. package/lib/angular/icon/insert/insert-icon.module.d.ts +8 -0
  218. package/lib/angular/inputs/click/trigger-click.directive.d.ts +9 -0
  219. package/lib/angular/inputs/icon/inputicon.directive.d.ts +28 -0
  220. package/lib/angular/inputs/input-advanced.module.d.ts +10 -0
  221. package/lib/angular/mediaqueries/ifMedia.directive.d.ts +26 -0
  222. package/lib/angular/mediaqueries/media.module.d.ts +8 -0
  223. package/lib/angular/mediaqueries/media.service.d.ts +24 -0
  224. package/lib/angular/mediaqueries/mediaUtils.service.d.ts +75 -0
  225. package/lib/angular/modal/modal.service.d.ts +13 -0
  226. package/lib/angular/popover/config/popover.config.d.ts +8 -0
  227. package/lib/angular/popover/popover.module.d.ts +7 -0
  228. package/lib/angular/progressbar/progressbar.component.d.ts +71 -0
  229. package/lib/angular/progressbar/progressbar.module.d.ts +9 -0
  230. package/lib/angular/progressindicator/default/default-spinner.component.d.ts +8 -0
  231. package/lib/angular/progressindicator/progressindicator-backdrop.component.d.ts +8 -0
  232. package/lib/angular/progressindicator/progressindicator-config.d.ts +54 -0
  233. package/lib/angular/progressindicator/progressindicator-container.component.d.ts +13 -0
  234. package/lib/angular/progressindicator/progressindicator-ref.d.ts +9 -0
  235. package/lib/angular/progressindicator/progressindicator.directive.d.ts +18 -0
  236. package/lib/angular/progressindicator/progressindicator.module.d.ts +15 -0
  237. package/lib/angular/progressindicator/progressindicator.service.d.ts +33 -0
  238. package/lib/angular/right-to-left/directionDetection.service.d.ts +12 -0
  239. package/lib/angular/selects/events/manage-badge-events.directive.d.ts +16 -0
  240. package/lib/angular/selects/nav/manage-nav-select.directive.d.ts +20 -0
  241. package/lib/angular/selects/option-highlight.directive.d.ts +19 -0
  242. package/lib/angular/selects/select.model.d.ts +1 -0
  243. package/lib/angular/selects/select.module.d.ts +13 -0
  244. package/lib/angular/sidenav/dfSideNavAnimation.d.ts +7 -0
  245. package/lib/angular/sidenav/dfSideNavCollapse.d.ts +48 -0
  246. package/lib/angular/sidenav/dfSideNavCollapse.module.d.ts +9 -0
  247. package/lib/angular/sidenav/dfSideNavCollapse.service.d.ts +24 -0
  248. package/lib/angular/sidenav/dfSideNavCollapseConfig.d.ts +17 -0
  249. package/lib/angular/sidenav/excludeTrap.directive.d.ts +30 -0
  250. package/lib/angular/sidenav/manage-sidenav.directive.d.ts +10 -0
  251. package/lib/angular/sidenav/sidenav-config.d.ts +17 -0
  252. package/lib/angular/sidenav/sidenav.component.d.ts +43 -0
  253. package/lib/angular/sidenav/sidenav.module.d.ts +14 -0
  254. package/lib/angular/sidenav/sidenav.service.d.ts +178 -0
  255. package/lib/angular/sidenav/sidenavlist.component.d.ts +25 -0
  256. package/lib/angular/slider/direction/sliderdirection.directive.d.ts +12 -0
  257. package/lib/angular/slider/lib/change-context.d.ts +6 -0
  258. package/lib/angular/slider/lib/compatibility-helper.d.ts +7 -0
  259. package/lib/angular/slider/lib/event-listener-helper.d.ts +13 -0
  260. package/lib/angular/slider/lib/event-listener.d.ts +7 -0
  261. package/lib/angular/slider/lib/math-helper.d.ts +6 -0
  262. package/lib/angular/slider/lib/options.d.ts +241 -0
  263. package/lib/angular/slider/lib/pointer-type.d.ts +7 -0
  264. package/lib/angular/slider/lib/slider-element.directive.d.ts +47 -0
  265. package/lib/angular/slider/lib/slider-handle.directive.d.ts +19 -0
  266. package/lib/angular/slider/lib/slider-label.directive.d.ts +11 -0
  267. package/lib/angular/slider/lib/slider.component.d.ts +190 -0
  268. package/lib/angular/slider/lib/tooltip-wrapper.component.d.ts +10 -0
  269. package/lib/angular/slider/lib/value-helper.d.ts +13 -0
  270. package/lib/angular/slider/slider.module.d.ts +12 -0
  271. package/lib/angular/toast/toast.module.d.ts +8 -0
  272. package/lib/angular/tooltip/tooltip.module.d.ts +9 -0
  273. package/lib/angular/tooltip/truncate/tooltipTruncate.directive.d.ts +17 -0
  274. package/lib/angular/utils/scrollbar.service.d.ts +46 -0
  275. package/lib/index.d.ts +82 -0
  276. package/package.json +44 -0
  277. package/schematics/collection.json +10 -0
  278. package/schematics/migrations/15_0_0/remove-ngx-slider/index.d.ts +2 -0
  279. package/schematics/migrations/15_0_0/remove-ngx-slider/index.js +113 -0
  280. package/schematics/migrations/15_0_0/remove-ngx-slider/index.js.map +1 -0
  281. package/schematics/migrations/helpers.d.ts +13 -0
  282. package/schematics/migrations/helpers.js +33 -0
  283. package/schematics/migrations/helpers.js.map +1 -0
  284. package/schematics/migrations/migration.json +10 -0
  285. package/schematics/migrations/utils/project_tsconfig_paths.d.ts +16 -0
  286. package/schematics/migrations/utils/project_tsconfig_paths.js +91 -0
  287. package/schematics/migrations/utils/project_tsconfig_paths.js.map +1 -0
  288. package/schematics/migrations/utils/typescript/compiler_host.d.ts +44 -0
  289. package/schematics/migrations/utils/typescript/compiler_host.js +86 -0
  290. package/schematics/migrations/utils/typescript/compiler_host.js.map +1 -0
  291. package/schematics/migrations/utils/typescript/parse_tsconfig.d.ts +9 -0
  292. package/schematics/migrations/utils/typescript/parse_tsconfig.js +30 -0
  293. package/schematics/migrations/utils/typescript/parse_tsconfig.js.map +1 -0
  294. package/schematics/ng-add/index.d.ts +3 -0
  295. package/schematics/ng-add/index.js +84 -0
  296. package/schematics/ng-add/index.js.map +1 -0
  297. package/schematics/ng-add/schema.d.ts +6 -0
  298. package/schematics/ng-add/schema.js +3 -0
  299. package/schematics/ng-add/schema.js.map +1 -0
  300. package/schematics/ng-add/schema.json +15 -0
  301. package/styles/scss/_common.mixins.scss +19 -0
  302. package/styles/scss/_common.scss +57 -0
  303. package/styles/scss/_common.variables.scss +62 -0
  304. package/styles/scss/_variables.scss +56 -0
  305. package/styles/scss/bootstrap/_maps.scss +50 -0
  306. package/styles/scss/bootstrap/_mixins-override.scss +69 -0
  307. package/styles/scss/bootstrap/_rtl-styles-override.scss +125 -0
  308. package/styles/scss/bootstrap/_utilities-override.scss +19 -0
  309. package/styles/scss/bootstrap/_variables.scss +1684 -0
  310. package/styles/scss/components/.gitkeep +0 -0
  311. package/styles/scss/components/accordion/_accordion.scss +87 -0
  312. package/styles/scss/components/accordion/_accordion.variables.scss +8 -0
  313. package/styles/scss/components/alert/_alert.scss +301 -0
  314. package/styles/scss/components/alert/_alert.variables.scss +70 -0
  315. package/styles/scss/components/badge/_badge.scss +160 -0
  316. package/styles/scss/components/badge/_badge.variables.scss +10 -0
  317. package/styles/scss/components/brand-color/_brand-color.mixins.scss +11 -0
  318. package/styles/scss/components/brand-color/_brand-color.scss +18 -0
  319. package/styles/scss/components/brand-color/_brand-color.variables.scss +158 -0
  320. package/styles/scss/components/breadcrumbs/_breadcrumbs.scss +91 -0
  321. package/styles/scss/components/breadcrumbs/_breadcrumbs.variables.scss +13 -0
  322. package/styles/scss/components/button/_button.scss +249 -0
  323. package/styles/scss/components/button/_button.utils.scss +16 -0
  324. package/styles/scss/components/button/_button.variables.scss +27 -0
  325. package/styles/scss/components/button/_button_container.scss +66 -0
  326. package/styles/scss/components/card/_card.scss +73 -0
  327. package/styles/scss/components/card/_card.variables.scss +22 -0
  328. package/styles/scss/components/carousel/_carousel.scss +52 -0
  329. package/styles/scss/components/carousel/_carousel.variables.scss +11 -0
  330. package/styles/scss/components/checkbox/_checkbox.scss +37 -0
  331. package/styles/scss/components/checkbox/_checkbox.variables.scss +6 -0
  332. package/styles/scss/components/collapse/_collapse.scss +35 -0
  333. package/styles/scss/components/collapse/_collapse.variables.scss +7 -0
  334. package/styles/scss/components/datepicker/_datepicker.scss +251 -0
  335. package/styles/scss/components/datepicker/_datepicker.variables.scss +52 -0
  336. package/styles/scss/components/dropdown/_dropdown.mixins.scss +26 -0
  337. package/styles/scss/components/dropdown/_dropdown.scss +81 -0
  338. package/styles/scss/components/dropdown/_dropdown.variables.scss +18 -0
  339. package/styles/scss/components/fieldset/_fieldset.scss +6 -0
  340. package/styles/scss/components/fieldset/_fieldset.variables.scss +2 -0
  341. package/styles/scss/components/fonts/_font-faces.mixins.scss +525 -0
  342. package/styles/scss/components/fonts/_fonts-family.scss +98 -0
  343. package/styles/scss/components/fonts/_fonts.scss +83 -0
  344. package/styles/scss/components/fonts/_fonts.variables.scss +31 -0
  345. package/styles/scss/components/fonts/_icon-font.scss +5107 -0
  346. package/styles/scss/components/fonts/_icon-font.variables.scss +14 -0
  347. package/styles/scss/components/fonts/_multi-lang.mixins.scss +8 -0
  348. package/styles/scss/components/fonts/multi-lang/_arabic.mixins.scss +8 -0
  349. package/styles/scss/components/fonts/multi-lang/_chinese.mixins.scss +12 -0
  350. package/styles/scss/components/fonts/multi-lang/_cyrillic-extended.mixins.scss +11 -0
  351. package/styles/scss/components/fonts/multi-lang/_cyrillic.mixins.scss +10 -0
  352. package/styles/scss/components/fonts/multi-lang/_georgian.mixins.scss +9 -0
  353. package/styles/scss/components/fonts/multi-lang/_hebrew.mixins.scss +9 -0
  354. package/styles/scss/components/fonts/multi-lang/_japanese.mixins.scss +23 -0
  355. package/styles/scss/components/fonts/multi-lang/_korean.mixins.scss +10 -0
  356. package/styles/scss/components/footer/_footer.scss +23 -0
  357. package/styles/scss/components/footer/_footer.variables.scss +13 -0
  358. package/styles/scss/components/form/_form.scss +104 -0
  359. package/styles/scss/components/form/_form.variables.scss +23 -0
  360. package/styles/scss/components/icon/_amadeus-icon.scss +39 -0
  361. package/styles/scss/components/icon/_amadeus-icon.variables.scss +3 -0
  362. package/styles/scss/components/inputs/_inputs.mixin.scss +51 -0
  363. package/styles/scss/components/inputs/_inputs.scss +290 -0
  364. package/styles/scss/components/inputs/_inputs.variables.scss +41 -0
  365. package/styles/scss/components/link/_link.mixins.scss +190 -0
  366. package/styles/scss/components/link/_link.scss +88 -0
  367. package/styles/scss/components/link/_link.variables.scss +55 -0
  368. package/styles/scss/components/list/_list.scss +15 -0
  369. package/styles/scss/components/list/_list.variables.scss +4 -0
  370. package/styles/scss/components/list-group/_list-group.scss +61 -0
  371. package/styles/scss/components/list-group/_list-group.variables.scss +14 -0
  372. package/styles/scss/components/media/_media.scss +42 -0
  373. package/styles/scss/components/media/_media.variables.scss +7 -0
  374. package/styles/scss/components/modal/_modal.scss +147 -0
  375. package/styles/scss/components/modal/_modal.variables.scss +23 -0
  376. package/styles/scss/components/navbar/_navbar.scss +253 -0
  377. package/styles/scss/components/navbar/_navbar.variables.scss +62 -0
  378. package/styles/scss/components/pagination/_pagination.scss +195 -0
  379. package/styles/scss/components/pagination/_pagination.variables.scss +27 -0
  380. package/styles/scss/components/pagination/_pagination_container.scss +14 -0
  381. package/styles/scss/components/popover/_popover.mixin.scss +57 -0
  382. package/styles/scss/components/popover/_popover.scss +25 -0
  383. package/styles/scss/components/popover/_popover.variables.scss +18 -0
  384. package/styles/scss/components/popover/_popover_container.scss +156 -0
  385. package/styles/scss/components/progressbar/_progressbar.scss +74 -0
  386. package/styles/scss/components/progressbar/_progressbar.variables.scss +13 -0
  387. package/styles/scss/components/radio/_radio.scss +25 -0
  388. package/styles/scss/components/radio/_radio.variables.scss +3 -0
  389. package/styles/scss/components/rating/_rating.scss +81 -0
  390. package/styles/scss/components/rating/_rating.variables.scss +20 -0
  391. package/styles/scss/components/scrollspy/_scrollspy.scss +34 -0
  392. package/styles/scss/components/scrollspy/_scrollspy.variables.scss +11 -0
  393. package/styles/scss/components/select/_select.scss +734 -0
  394. package/styles/scss/components/select/_select.variables.scss +85 -0
  395. package/styles/scss/components/separator/_separator.scss +8 -0
  396. package/styles/scss/components/separator/_separator.variables.scss +1 -0
  397. package/styles/scss/components/sidenav/_sidenav.scss +259 -0
  398. package/styles/scss/components/sidenav/_sidenav.variables.scss +87 -0
  399. package/styles/scss/components/skip-links/_skip-links.scss +24 -0
  400. package/styles/scss/components/skip-links/_skip-links.variables.scss +7 -0
  401. package/styles/scss/components/slider/_slider.scss +407 -0
  402. package/styles/scss/components/slider/_slider.variables.scss +58 -0
  403. package/styles/scss/components/speechbubble/_speechbubble.scss +127 -0
  404. package/styles/scss/components/speechbubble/_speechbubble.variables.scss +19 -0
  405. package/styles/scss/components/spinner/_spinner.scss +88 -0
  406. package/styles/scss/components/spinner/_spinner.variables.scss +21 -0
  407. package/styles/scss/components/spinner/_spinner_container.scss +43 -0
  408. package/styles/scss/components/stepper/_stepper.mixins.scss +193 -0
  409. package/styles/scss/components/stepper/_stepper.scss +130 -0
  410. package/styles/scss/components/stepper/_stepper.variables.scss +63 -0
  411. package/styles/scss/components/table/_advancedtables.scss +229 -0
  412. package/styles/scss/components/table/_table.scss +7 -0
  413. package/styles/scss/components/table/_table.variables.scss +24 -0
  414. package/styles/scss/components/tabs/_tabs.scss +123 -0
  415. package/styles/scss/components/tabs/_tabs.variables.scss +32 -0
  416. package/styles/scss/components/toast/_toast.scss +189 -0
  417. package/styles/scss/components/toast/_toast.variables.scss +13 -0
  418. package/styles/scss/components/toggle/_toggle.scss +93 -0
  419. package/styles/scss/components/toggle/_toggle.variables.scss +17 -0
  420. package/styles/scss/components/tooltip/_tooltip.scss +3 -0
  421. package/styles/scss/components/tooltip/_tooltip.variables.scss +5 -0
  422. package/styles/scss/components/tooltip/_tooltip_container.scss +112 -0
  423. package/styles/scss/components/typeahead/_typeahead.scss +45 -0
  424. package/styles/scss/components/typeahead/_typeahead.variables.scss +10 -0
  425. package/styles/scss/df-styles-namespace.scss +160 -0
  426. package/styles/scss/df-styles.scss +107 -0
  427. package/styles/scss/utilities/_common.utilities.scss +70 -0
  428. package/styles/scss/utilities/_form.mixins.scss +26 -0
@@ -0,0 +1,25 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * A configuration service for the [DfSideNavService](#/components/sidenav/api#DfSideNavComponent) component.
5
+ *
6
+ * You can inject this service, typically in your root component, and customize its properties
7
+ * to provide default values for your sidenav used in the application.
8
+ */
9
+ export class DfSideNavConfig {
10
+ constructor() {
11
+ this.isMinmized = false;
12
+ this.isCollapsed = false;
13
+ this.isPresent = false;
14
+ this.isInMenuOverlay = true;
15
+ this.isAppOverlay = false;
16
+ this.isAppOverlayMode = true;
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavConfig, providedIn: 'root' }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavConfig, decorators: [{
22
+ type: Injectable,
23
+ args: [{ providedIn: 'root' }]
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvc2lkZW5hdi9zaWRlbmF2LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRUUsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLHFCQUFnQixHQUFHLElBQUksQ0FBQztLQUN6Qjs4R0FQWSxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBjb25maWd1cmF0aW9uIHNlcnZpY2UgZm9yIHRoZSBbRGZTaWRlTmF2U2VydmljZV0oIy9jb21wb25lbnRzL3NpZGVuYXYvYXBpI0RmU2lkZU5hdkNvbXBvbmVudCkgY29tcG9uZW50LlxuICpcbiAqIFlvdSBjYW4gaW5qZWN0IHRoaXMgc2VydmljZSwgdHlwaWNhbGx5IGluIHlvdXIgcm9vdCBjb21wb25lbnQsIGFuZCBjdXN0b21pemUgaXRzIHByb3BlcnRpZXNcbiAqIHRvIHByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHlvdXIgc2lkZW5hdiB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEZlNpZGVOYXZDb25maWcge1xuICBpc01pbm1pemVkID0gZmFsc2U7XG4gIGlzQ29sbGFwc2VkID0gZmFsc2U7XG4gIGlzUHJlc2VudCA9IGZhbHNlO1xuICBpc0luTWVudU92ZXJsYXkgPSB0cnVlO1xuICBpc0FwcE92ZXJsYXkgPSBmYWxzZTtcbiAgaXNBcHBPdmVybGF5TW9kZSA9IHRydWU7XG59XG4iXX0=
@@ -0,0 +1,86 @@
1
+ import { Component, ContentChild, Directive, HostBinding, inject } from '@angular/core';
2
+ import { Subscription } from 'rxjs';
3
+ import { DfSideNavService } from './sidenav.service';
4
+ import { CommonModule } from '@angular/common';
5
+ import { DfSideNavListComponent } from './sidenavlist.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ export class DfSideNavHeaderDirective {
9
+ constructor(templateRef) {
10
+ this.templateRef = templateRef;
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavHeaderDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavHeaderDirective, isStandalone: true, selector: "ng-template[dfSideNavHeader]", ngImport: i0 }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavHeaderDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{ selector: 'ng-template[dfSideNavHeader]', standalone: true }]
18
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
19
+ export class DfSideNavIconDirective {
20
+ constructor(templateRef) {
21
+ this.templateRef = templateRef;
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavIconDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavIconDirective, isStandalone: true, selector: "ng-template[dfSideNavIcon]", ngImport: i0 }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavIconDirective, decorators: [{
27
+ type: Directive,
28
+ args: [{ selector: 'ng-template[dfSideNavIcon]', standalone: true }]
29
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
30
+ export class DfSideNavItemDirective {
31
+ constructor(templateRef) {
32
+ this.templateRef = templateRef;
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
35
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavItemDirective, isStandalone: true, selector: "ng-template[dfSideNavItem]", ngImport: i0 }); }
36
+ }
37
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavItemDirective, decorators: [{
38
+ type: Directive,
39
+ args: [{ selector: 'ng-template[dfSideNavItem]', standalone: true }]
40
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });
41
+ /**
42
+ * SideNav is a component to provide navigation feature with a panel on the side of your page
43
+ *
44
+ * It supports several options as:
45
+ * - Being in an overlay menu or not
46
+ * - Being collapsed or not
47
+ * - Can be used with or without Angular Router
48
+ * - Can be used with media queries to adjust behavior to different breakpoints (see media section)
49
+ */
50
+ export class DfSideNavComponent {
51
+ constructor() {
52
+ this.elements = 'df-sidenav-light d-flex flex-column flex-shrink-0';
53
+ this.subscription = new Subscription();
54
+ this.sideNavService = inject(DfSideNavService);
55
+ this.subscription.add(this.sideNavService.isInMenuOverlay$.subscribe((value) => {
56
+ this.overlayClass = value;
57
+ }));
58
+ setTimeout(() => this.sideNavService.setSideNav());
59
+ }
60
+ ngOnDestroy() {
61
+ this.subscription.unsubscribe();
62
+ this.sideNavService.removeSideBar();
63
+ }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: DfSideNavComponent, isStandalone: true, selector: "df-sidenav", host: { properties: { "class.df-sidenav-menu-overlay": "this.overlayClass", "class": "this.elements" } }, queries: [{ propertyName: "tplHeader", first: true, predicate: DfSideNavHeaderDirective, descendants: true }, { propertyName: "tplIcon", first: true, predicate: DfSideNavIconDirective, descendants: true }, { propertyName: "tplItem", first: true, predicate: DfSideNavItemDirective, descendants: true }], ngImport: i0, template: "<ng-template *ngIf=\"tplHeader\" [ngTemplateOutlet]=\"tplHeader.templateRef\"></ng-template>\n<df-sidenavlist [items]=\"(sideNavService.sideNavItems$ | async) ?? []\" [tplIcon]=\"tplIcon\" [tplItem]=\"tplItem\"></df-sidenavlist>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: DfSideNavListComponent, selector: "df-sidenavlist", inputs: ["items", "tplIcon", "tplItem", "currentItem", "id"] }] }); }
66
+ }
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavComponent, decorators: [{
68
+ type: Component,
69
+ args: [{ selector: 'df-sidenav', standalone: true, imports: [CommonModule, DfSideNavListComponent], template: "<ng-template *ngIf=\"tplHeader\" [ngTemplateOutlet]=\"tplHeader.templateRef\"></ng-template>\n<df-sidenavlist [items]=\"(sideNavService.sideNavItems$ | async) ?? []\" [tplIcon]=\"tplIcon\" [tplItem]=\"tplItem\"></df-sidenavlist>\n" }]
70
+ }], ctorParameters: function () { return []; }, propDecorators: { tplHeader: [{
71
+ type: ContentChild,
72
+ args: [DfSideNavHeaderDirective, { static: false }]
73
+ }], tplIcon: [{
74
+ type: ContentChild,
75
+ args: [DfSideNavIconDirective, { static: false }]
76
+ }], tplItem: [{
77
+ type: ContentChild,
78
+ args: [DfSideNavItemDirective, { static: false }]
79
+ }], overlayClass: [{
80
+ type: HostBinding,
81
+ args: ['class.df-sidenav-menu-overlay']
82
+ }], elements: [{
83
+ type: HostBinding,
84
+ args: ['class']
85
+ }] } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1mYWN0b3J5L3NyYy9saWIvYW5ndWxhci9zaWRlbmF2L3NpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUN6SSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBR2pFLE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsWUFBbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBQUcsQ0FBQzs4R0FEekMsd0JBQXdCO2tHQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsOEJBQThCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs7QUFNekUsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFtQixXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFBRyxDQUFDOzhHQUR6QyxzQkFBc0I7a0dBQXRCLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOztBQU12RSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW1CLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUFHLENBQUM7OEdBRHpDLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQURsQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7O0FBS3ZFOzs7Ozs7OztHQVFHO0FBT0gsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QjtRQUpzQixhQUFRLEdBQUcsbURBQW1ELENBQUM7UUFDcEUsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG1CQUFjLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFHeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEMsQ0FBQzs4R0FyQlUsa0JBQWtCO2tHQUFsQixrQkFBa0IsdU5BQ2Ysd0JBQXdCLDBFQUN4QixzQkFBc0IsMEVBQ3RCLHNCQUFzQixnREN2Q3RDLHdPQUVBLDJDRGdDWSxZQUFZLCtWQUFFLHNCQUFzQjs7MkZBRW5DLGtCQUFrQjtrQkFOOUIsU0FBUzsrQkFDRSxZQUFZLGNBRVYsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDOzBFQUdZLFNBQVM7c0JBQW5FLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNBLE9BQU87c0JBQS9ELFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNFLE9BQU87c0JBQS9ELFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNULFlBQVk7c0JBQXpELFdBQVc7dUJBQUMsK0JBQStCO2dCQUN0QixRQUFRO3NCQUE3QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgT25EZXN0cm95LCBUZW1wbGF0ZVJlZiwgaW5qZWN0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZlNpZGVOYXZTZXJ2aWNlIH0gZnJvbSAnLi9zaWRlbmF2LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERmU2lkZU5hdkxpc3RDb21wb25lbnQgfSBmcm9tICcuL3NpZGVuYXZsaXN0LmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW2RmU2lkZU5hdkhlYWRlcl0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRGZTaWRlTmF2SGVhZGVyRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtkZlNpZGVOYXZJY29uXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBEZlNpZGVOYXZJY29uRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZy10ZW1wbGF0ZVtkZlNpZGVOYXZJdGVtXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBEZlNpZGVOYXZJdGVtRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG4vKipcbiAqIFNpZGVOYXYgaXMgYSBjb21wb25lbnQgdG8gcHJvdmlkZSBuYXZpZ2F0aW9uIGZlYXR1cmUgd2l0aCBhIHBhbmVsIG9uIHRoZSBzaWRlIG9mIHlvdXIgcGFnZVxuICpcbiAqIEl0IHN1cHBvcnRzIHNldmVyYWwgb3B0aW9ucyBhczpcbiAqICAtIEJlaW5nIGluIGFuIG92ZXJsYXkgbWVudSBvciBub3RcbiAqICAtIEJlaW5nIGNvbGxhcHNlZCBvciBub3RcbiAqICAtIENhbiBiZSB1c2VkIHdpdGggb3Igd2l0aG91dCBBbmd1bGFyIFJvdXRlclxuICogIC0gQ2FuIGJlIHVzZWQgd2l0aCBtZWRpYSBxdWVyaWVzIHRvIGFkanVzdCBiZWhhdmlvciB0byBkaWZmZXJlbnQgYnJlYWtwb2ludHMgKHNlZSBtZWRpYSBzZWN0aW9uKVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkZi1zaWRlbmF2JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGVuYXYuY29tcG9uZW50Lmh0bWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEZlNpZGVOYXZMaXN0Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEZlNpZGVOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAQ29udGVudENoaWxkKERmU2lkZU5hdkhlYWRlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pIHRwbEhlYWRlciE6IERmU2lkZU5hdkhlYWRlckRpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChEZlNpZGVOYXZJY29uRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgdHBsSWNvbiE6IERmU2lkZU5hdkljb25EaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoRGZTaWRlTmF2SXRlbURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pIHRwbEl0ZW0hOiBEZlNpZGVOYXZJdGVtRGlyZWN0aXZlO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRmLXNpZGVuYXYtbWVudS1vdmVybGF5Jykgb3ZlcmxheUNsYXNzPzogYm9vbGVhbjtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGVsZW1lbnRzID0gJ2RmLXNpZGVuYXYtbGlnaHQgZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtc2hyaW5rLTAnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgc2lkZU5hdlNlcnZpY2UgPSBpbmplY3QoRGZTaWRlTmF2U2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zaWRlTmF2U2VydmljZS5pc0luTWVudU92ZXJsYXkkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5vdmVybGF5Q2xhc3MgPSB2YWx1ZTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2lkZU5hdlNlcnZpY2Uuc2V0U2lkZU5hdigpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zaWRlTmF2U2VydmljZS5yZW1vdmVTaWRlQmFyKCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAqbmdJZj1cInRwbEhlYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRwbEhlYWRlci50ZW1wbGF0ZVJlZlwiPjwvbmctdGVtcGxhdGU+XG48ZGYtc2lkZW5hdmxpc3QgW2l0ZW1zXT1cIihzaWRlTmF2U2VydmljZS5zaWRlTmF2SXRlbXMkIHwgYXN5bmMpID8/IFtdXCIgW3RwbEljb25dPVwidHBsSWNvblwiIFt0cGxJdGVtXT1cInRwbEl0ZW1cIj48L2RmLXNpZGVuYXZsaXN0PlxuIl19
@@ -0,0 +1,52 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DfSideNavComponent, DfSideNavHeaderDirective, DfSideNavIconDirective, DfSideNavItemDirective } from './sidenav.component';
3
+ import { DfManageSideNavDirective } from './manage-sidenav.directive';
4
+ import { DfMediaModule } from '../mediaqueries/media.module';
5
+ import { DfSideNavCollapseModule } from './dfSideNavCollapse.module';
6
+ import { DfExcludeTrapDirective } from '../sidenav/excludeTrap.directive';
7
+ import * as i0 from "@angular/core";
8
+ export { DfSideNavComponent, DfSideNavHeaderDirective, DfSideNavIconDirective, DfSideNavItemDirective } from './sidenav.component';
9
+ export { DfManageSideNavDirective } from './manage-sidenav.directive';
10
+ export { DfExcludeTrapDirective } from '../sidenav/excludeTrap.directive';
11
+ export class DfSideNavModule {
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavModule, imports: [DfManageSideNavDirective,
14
+ DfSideNavComponent,
15
+ DfSideNavHeaderDirective,
16
+ DfExcludeTrapDirective,
17
+ DfSideNavIconDirective,
18
+ DfSideNavItemDirective], exports: [DfManageSideNavDirective,
19
+ DfSideNavComponent,
20
+ DfSideNavHeaderDirective,
21
+ DfExcludeTrapDirective,
22
+ DfSideNavIconDirective,
23
+ DfSideNavItemDirective,
24
+ DfSideNavCollapseModule,
25
+ DfMediaModule] }); }
26
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavModule, imports: [DfSideNavComponent, DfSideNavCollapseModule,
27
+ DfMediaModule] }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavModule, decorators: [{
30
+ type: NgModule,
31
+ args: [{
32
+ imports: [
33
+ DfManageSideNavDirective,
34
+ DfSideNavComponent,
35
+ DfSideNavHeaderDirective,
36
+ DfExcludeTrapDirective,
37
+ DfSideNavIconDirective,
38
+ DfSideNavItemDirective
39
+ ],
40
+ exports: [
41
+ DfManageSideNavDirective,
42
+ DfSideNavComponent,
43
+ DfSideNavHeaderDirective,
44
+ DfExcludeTrapDirective,
45
+ DfSideNavIconDirective,
46
+ DfSideNavItemDirective,
47
+ DfSideNavCollapseModule,
48
+ DfMediaModule
49
+ ]
50
+ }]
51
+ }] });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tZmFjdG9yeS9zcmMvbGliL2FuZ3VsYXIvc2lkZW5hdi9zaWRlbmF2Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRTFFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdkIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQXNCMUUsTUFBTSxPQUFPLGVBQWU7OEdBQWYsZUFBZTsrR0FBZixlQUFlLFlBbEJ4Qix3QkFBd0I7WUFDeEIsa0JBQWtCO1lBQ2xCLHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLHNCQUFzQixhQUd0Qix3QkFBd0I7WUFDeEIsa0JBQWtCO1lBQ2xCLHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsc0JBQXNCO1lBQ3RCLHNCQUFzQjtZQUN0Qix1QkFBdUI7WUFDdkIsYUFBYTsrR0FHSixlQUFlLFlBakJ4QixrQkFBa0IsRUFhbEIsdUJBQXVCO1lBQ3ZCLGFBQWE7OzJGQUdKLGVBQWU7a0JBcEIzQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCx3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4QixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsc0JBQXNCO3FCQUN2QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixzQkFBc0I7d0JBQ3RCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2QixhQUFhO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERmU2lkZU5hdkNvbXBvbmVudCxcbiAgRGZTaWRlTmF2SGVhZGVyRGlyZWN0aXZlLFxuICBEZlNpZGVOYXZJY29uRGlyZWN0aXZlLFxuICBEZlNpZGVOYXZJdGVtRGlyZWN0aXZlXG59IGZyb20gJy4vc2lkZW5hdi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGZNYW5hZ2VTaWRlTmF2RGlyZWN0aXZlIH0gZnJvbSAnLi9tYW5hZ2Utc2lkZW5hdi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGZNZWRpYU1vZHVsZSB9IGZyb20gJy4uL21lZGlhcXVlcmllcy9tZWRpYS5tb2R1bGUnO1xuaW1wb3J0IHsgRGZTaWRlTmF2Q29sbGFwc2VNb2R1bGUgfSBmcm9tICcuL2RmU2lkZU5hdkNvbGxhcHNlLm1vZHVsZSc7XG5pbXBvcnQgeyBEZkV4Y2x1ZGVUcmFwRGlyZWN0aXZlIH0gZnJvbSAnLi4vc2lkZW5hdi9leGNsdWRlVHJhcC5kaXJlY3RpdmUnO1xuXG5leHBvcnQge1xuICBEZlNpZGVOYXZDb21wb25lbnQsXG4gIERmU2lkZU5hdkhlYWRlckRpcmVjdGl2ZSxcbiAgRGZTaWRlTmF2SWNvbkRpcmVjdGl2ZSxcbiAgRGZTaWRlTmF2SXRlbURpcmVjdGl2ZVxufSBmcm9tICcuL3NpZGVuYXYuY29tcG9uZW50JztcbmV4cG9ydCB7IERmTWFuYWdlU2lkZU5hdkRpcmVjdGl2ZSB9IGZyb20gJy4vbWFuYWdlLXNpZGVuYXYuZGlyZWN0aXZlJztcbmV4cG9ydCB7IERmRXhjbHVkZVRyYXBEaXJlY3RpdmUgfSBmcm9tICcuLi9zaWRlbmF2L2V4Y2x1ZGVUcmFwLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBEZk1hbmFnZVNpZGVOYXZEaXJlY3RpdmUsXG4gICAgRGZTaWRlTmF2Q29tcG9uZW50LFxuICAgIERmU2lkZU5hdkhlYWRlckRpcmVjdGl2ZSxcbiAgICBEZkV4Y2x1ZGVUcmFwRGlyZWN0aXZlLFxuICAgIERmU2lkZU5hdkljb25EaXJlY3RpdmUsXG4gICAgRGZTaWRlTmF2SXRlbURpcmVjdGl2ZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGZNYW5hZ2VTaWRlTmF2RGlyZWN0aXZlLFxuICAgIERmU2lkZU5hdkNvbXBvbmVudCxcbiAgICBEZlNpZGVOYXZIZWFkZXJEaXJlY3RpdmUsXG4gICAgRGZFeGNsdWRlVHJhcERpcmVjdGl2ZSxcbiAgICBEZlNpZGVOYXZJY29uRGlyZWN0aXZlLFxuICAgIERmU2lkZU5hdkl0ZW1EaXJlY3RpdmUsXG4gICAgRGZTaWRlTmF2Q29sbGFwc2VNb2R1bGUsXG4gICAgRGZNZWRpYU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIERmU2lkZU5hdk1vZHVsZSB7fVxuIl19
@@ -0,0 +1,315 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, Subscription } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./sidenav-config";
5
+ export var DfNavItemType;
6
+ (function (DfNavItemType) {
7
+ DfNavItemType[DfNavItemType["subMenus"] = 0] = "subMenus";
8
+ DfNavItemType[DfNavItemType["actionButton"] = 1] = "actionButton";
9
+ DfNavItemType[DfNavItemType["routerLink"] = 2] = "routerLink";
10
+ DfNavItemType[DfNavItemType["link"] = 3] = "link";
11
+ DfNavItemType[DfNavItemType["externalLink"] = 4] = "externalLink";
12
+ DfNavItemType[DfNavItemType["separator"] = 5] = "separator";
13
+ DfNavItemType[DfNavItemType["template"] = 6] = "template";
14
+ DfNavItemType[DfNavItemType["title"] = 7] = "title";
15
+ })(DfNavItemType || (DfNavItemType = {}));
16
+ /**
17
+ * A service for managing the sidenav panel.
18
+ * This service is included at root level
19
+ *
20
+ * Creating a sidenav is straightforward: use [DfSideNavComponent](#/components/sidenav/api#DfSideNavComponent) component
21
+ */
22
+ export class DfSideNavService {
23
+ constructor(config) {
24
+ this.type = DfNavItemType;
25
+ this._items = [];
26
+ this.subscription = new Subscription();
27
+ this._sideNavItems$ = new BehaviorSubject([]);
28
+ this._isMinmized$ = new BehaviorSubject(config.isMinmized);
29
+ this._isCollapsed$ = new BehaviorSubject(config.isCollapsed);
30
+ this._isPresent$ = new BehaviorSubject(config.isPresent);
31
+ this._isInMenuOverlay$ = new BehaviorSubject(config.isInMenuOverlay);
32
+ this._isAppOverlay$ = new BehaviorSubject(config.isAppOverlay);
33
+ this._activeItem$ = new BehaviorSubject(null);
34
+ this._isAppOverlayMode = config.isAppOverlayMode;
35
+ this.subscription.add(this._isCollapsed$.subscribe(() => {
36
+ this.updateOverLay();
37
+ }));
38
+ }
39
+ ngOnDestroy() {
40
+ this.subscription.unsubscribe();
41
+ }
42
+ /**
43
+ * Use this to init the list of Elements from your sidenav
44
+ *
45
+ *
46
+ * Second option withRouter is to be set to false if you are not passing link string for the angular Router
47
+ * Here we are not deep copying the array --> the function will change it
48
+ */
49
+ initItems(items, withRouter = true) {
50
+ this._items = items;
51
+ this.addNavItemType(withRouter);
52
+ this.setActiveItem(this._items);
53
+ this.dispatchSideNavItems();
54
+ }
55
+ /**
56
+ * Use this to inactivate the list of Elements from your sidenav
57
+ * isActive properties of all items will be set to false recursively
58
+ *
59
+ */
60
+ inactiveItems(list) {
61
+ list.forEach(item => {
62
+ item.isActive = false;
63
+ if (item.subMenus) {
64
+ this.inactiveItems(item.subMenus);
65
+ }
66
+ });
67
+ this.dispatchSideNavItems();
68
+ }
69
+ /**
70
+ * Use this to active the item pass as input
71
+ * This function inactivate all the other items of the service
72
+ * It will then dispatch the list of items of the sideNav to activeItem$
73
+ *
74
+ */
75
+ activeItem(item) {
76
+ this.inactiveItems(this._items);
77
+ item.isActive = true;
78
+ this._activeItem$.next(item);
79
+ this.dispatchSideNavItems();
80
+ }
81
+ /**
82
+ * Getter to know when to put/remove the overlay.
83
+ * `True` in case of overlay needed
84
+ *
85
+ */
86
+ get isAppOverlay$() {
87
+ return this._isAppOverlay$.asObservable();
88
+ }
89
+ /**
90
+ * Getter to know if the sidenav is in an overlay panel or not
91
+ * `True` in case of overlay panel
92
+ *
93
+ */
94
+ get isInMenuOverlay$() {
95
+ return this._isInMenuOverlay$.asObservable();
96
+ }
97
+ /**
98
+ * Getter to know the current activeItem a user clicked on
99
+ *
100
+ */
101
+ get activeItem$() {
102
+ return this._activeItem$.asObservable();
103
+ }
104
+ /**
105
+ * Getter to know if the sideNav is present in the page
106
+ * SideNav may be collapsed here or not
107
+ *
108
+ */
109
+ get isPresent$() {
110
+ return this._isPresent$.asObservable();
111
+ }
112
+ /**
113
+ * Future Options
114
+ */
115
+ get isMinimized$() {
116
+ return this._isMinmized$.asObservable();
117
+ }
118
+ /**
119
+ * Getter to know if the SideNav is collapsed or not
120
+ * If `true` the SideNav is collapsed
121
+ *
122
+ */
123
+ get isCollapsed$() {
124
+ return this._isCollapsed$.asObservable();
125
+ }
126
+ /**
127
+ * Getter of the SideNav Items after they have beens changed
128
+ *
129
+ */
130
+ get sideNavItems$() {
131
+ return this._sideNavItems$.asObservable();
132
+ }
133
+ /**
134
+ * Getter to know the mode Apply for the SideNav
135
+ * If `true` the SideNav can be in overlay (but not necessary is).
136
+ *
137
+ */
138
+ get isAppOverlayMode() {
139
+ return this._isAppOverlayMode;
140
+ }
141
+ // initItems must be used to push new items to the service
142
+ get items() {
143
+ return this._items;
144
+ }
145
+ /**
146
+ * Use this to toggle a SideNav Item (either from expand to collapse or the other way around).
147
+ * isCollapsed attribute of the input item is changed.
148
+ * All items are push again to the stream of items.
149
+ * This is used internally by the SideNav in case of click and Enter on an Item with subMenus
150
+ */
151
+ toggle(itemInput) {
152
+ itemInput.isCollapsed = !itemInput.isCollapsed;
153
+ this.dispatchSideNavItems();
154
+ }
155
+ /**
156
+ *
157
+ * @param itemInput
158
+ */
159
+ collapseItem(itemInput) {
160
+ this.collapse(itemInput, this._items);
161
+ this.dispatchSideNavItems();
162
+ }
163
+ /**
164
+ * Use this to collapseAll items
165
+ */
166
+ collapseAllItems() {
167
+ this.collapseAll(this._items);
168
+ this.dispatchSideNavItems();
169
+ }
170
+ /**
171
+ * Use this to set/unset the SideNav in an Overlay Menu
172
+ * If input is `True` then the SideNav will be in an Overlay Menu
173
+ * (when not collapsed)
174
+ *
175
+ */
176
+ setInMenuSideNav(on) {
177
+ this._isInMenuOverlay$.next(on);
178
+ }
179
+ /**
180
+ * Use this to collapse the SideNav
181
+ *
182
+ */
183
+ hideSideNav() {
184
+ this._isCollapsed$.next(true);
185
+ }
186
+ /**
187
+ * Use this to make the SideNav visible (uncollapse)
188
+ *
189
+ */
190
+ showSideNav() {
191
+ this._isCollapsed$.next(false);
192
+ }
193
+ /**
194
+ * Use this to toggle the SideNav status collapse/visible
195
+ *
196
+ */
197
+ toggleSideNav() {
198
+ this._isCollapsed$.next(!this._isCollapsed$.value);
199
+ }
200
+ // internal usage from the SideNav. Call when component is destroy
201
+ removeSideBar() {
202
+ this._isCollapsed$.next(false);
203
+ this._isPresent$.next(false);
204
+ }
205
+ /**
206
+ * Use this to set the App Overlay Mode
207
+ * Input `True` if you want to set the AppOverlay
208
+ * An event is send to isAppOverlay$ depending on your status
209
+ * if Input = `True` and isCollapsed = `False` then isAppOverlay$
210
+ * will be `True`
211
+ *
212
+ */
213
+ setAppOverlayMode(on) {
214
+ this._isAppOverlayMode = on;
215
+ this.updateOverLay();
216
+ }
217
+ // Internal usage to the sidenav component
218
+ // Do not use
219
+ setSideNav() {
220
+ this._isPresent$.next(true);
221
+ }
222
+ /**
223
+ *
224
+ * @param itemInput
225
+ * @param itemsList
226
+ */
227
+ collapse(itemInput, itemsList) {
228
+ for (const item of itemsList) {
229
+ if (item === itemInput && item.subMenus) {
230
+ item.isCollapsed = true;
231
+ return true; // propagate the collapse up
232
+ }
233
+ else if (item === itemInput) {
234
+ return true;
235
+ }
236
+ else if (item.subMenus) {
237
+ const needcol = this.collapse(itemInput, item.subMenus);
238
+ if (needcol) {
239
+ item.isCollapsed = true; // collapse it
240
+ return true; // propagate the collapse up
241
+ }
242
+ }
243
+ }
244
+ return false;
245
+ }
246
+ /**
247
+ *
248
+ * @param itemsList
249
+ */
250
+ collapseAll(itemsList) {
251
+ itemsList.forEach(item => {
252
+ if (item.subMenus) {
253
+ item.isCollapsed = true;
254
+ this.collapseAll(item.subMenus);
255
+ }
256
+ });
257
+ }
258
+ // Only one item at the time must be active
259
+ // Active flag in item is only valid for action button and link
260
+ // Router link does not use this active flag to work
261
+ // It is up to you to inactivateItems when needed when you mix actionButton and router link
262
+ // To avoid more than one active state visible
263
+ setActiveItem(items, foundAnActive = false) {
264
+ let foundActive = foundAnActive;
265
+ items.forEach(item => {
266
+ if (item.isActive && foundAnActive) {
267
+ throw Error('DfSideNavService must be init with only one isActive item');
268
+ }
269
+ else if (item.isActive) {
270
+ this._activeItem$.next(item);
271
+ foundActive = true;
272
+ }
273
+ if (item.subMenus) {
274
+ foundActive = this.setActiveItem(item.subMenus, foundActive);
275
+ }
276
+ });
277
+ return foundActive;
278
+ }
279
+ addNavItemType(withRouter, items = this._items) {
280
+ items.forEach(item => {
281
+ if (!item.type) {
282
+ if (item.subMenus) {
283
+ item.type = DfNavItemType.subMenus;
284
+ }
285
+ else if (item.isExternal) {
286
+ item.type = DfNavItemType.externalLink;
287
+ }
288
+ else if (withRouter) {
289
+ item.type = DfNavItemType.routerLink;
290
+ }
291
+ else {
292
+ item.type = DfNavItemType.actionButton;
293
+ }
294
+ }
295
+ if (item.subMenus) {
296
+ this.addNavItemType(withRouter, item.subMenus);
297
+ }
298
+ });
299
+ }
300
+ dispatchSideNavItems() {
301
+ this._sideNavItems$.next(this._items);
302
+ }
303
+ updateOverLay() {
304
+ this._isAppOverlay$.next(this.isAppOverlayMode && this._isCollapsed$.value === false);
305
+ }
306
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavService, deps: [{ token: i1.DfSideNavConfig }], target: i0.ɵɵFactoryTarget.Injectable }); }
307
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavService, providedIn: 'root' }); }
308
+ }
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: DfSideNavService, decorators: [{
310
+ type: Injectable,
311
+ args: [{
312
+ providedIn: 'root'
313
+ }]
314
+ }], ctorParameters: function () { return [{ type: i1.DfSideNavConfig }]; } });
315
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZW5hdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWZhY3Rvcnkvc3JjL2xpYi9hbmd1bGFyL3NpZGVuYXYvc2lkZW5hdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFlakUsTUFBTSxDQUFOLElBQVksYUFTWDtBQVRELFdBQVksYUFBYTtJQUN2Qix5REFBUSxDQUFBO0lBQ1IsaUVBQVksQ0FBQTtJQUNaLDZEQUFVLENBQUE7SUFDVixpREFBSSxDQUFBO0lBQ0osaUVBQVksQ0FBQTtJQUNaLDJEQUFTLENBQUE7SUFDVCx5REFBUSxDQUFBO0lBQ1IsbURBQUssQ0FBQTtBQUNQLENBQUMsRUFUVyxhQUFhLEtBQWIsYUFBYSxRQVN4QjtBQUVEOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixZQUFZLE1BQXVCO1FBWjVCLFNBQUksR0FBRyxhQUFhLENBQUM7UUFTcEIsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFDcEIsaUJBQVksR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcvRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBZSxDQUFVLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsaUJBQWlC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QUU7b0JBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQztpQkFDeEM7cUJBQU0sSUFBSSxVQUFVLEVBQUU7b0JBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQztpQkFDdEM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO2lCQUN4QzthQUNGO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztJQUN4RixDQUFDOzhHQTdUVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGZTaWRlTmF2Q29uZmlnIH0gZnJvbSAnLi9zaWRlbmF2LWNvbmZpZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGZTaWRlTmF2SXRlbSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgaXNFeHRlcm5hbD86IGJvb2xlYW47XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbiAgaXNDb2xsYXBzZWQ/OiBib29sZWFuO1xuICBicmVha3BvaW50cz86IHN0cmluZ1tdO1xuICBzdWJNZW51cz86IERmU2lkZU5hdkl0ZW1bXTtcbiAgdHlwZT86IERmTmF2SXRlbVR5cGU7XG59XG5cbmV4cG9ydCBlbnVtIERmTmF2SXRlbVR5cGUge1xuICBzdWJNZW51cyxcbiAgYWN0aW9uQnV0dG9uLFxuICByb3V0ZXJMaW5rLFxuICBsaW5rLFxuICBleHRlcm5hbExpbmssXG4gIHNlcGFyYXRvcixcbiAgdGVtcGxhdGUsXG4gIHRpdGxlXG59XG5cbi8qKlxuICogQSBzZXJ2aWNlIGZvciBtYW5hZ2luZyB0aGUgc2lkZW5hdiBwYW5lbC5cbiAqIFRoaXMgc2VydmljZSBpcyBpbmNsdWRlZCBhdCByb290IGxldmVsXG4gKlxuICogQ3JlYXRpbmcgYSBzaWRlbmF2IGlzIHN0cmFpZ2h0Zm9yd2FyZDogdXNlIFtEZlNpZGVOYXZDb21wb25lbnRdKCMvY29tcG9uZW50cy9zaWRlbmF2L2FwaSNEZlNpZGVOYXZDb21wb25lbnQpIGNvbXBvbmVudFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEZlNpZGVOYXZTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHR5cGUgPSBEZk5hdkl0ZW1UeXBlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zaWRlTmF2SXRlbXMkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc01pbm1pemVkJDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNDb2xsYXBzZWQkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ByZXNlbnQkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVJdGVtJDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNJbk1lbnVPdmVybGF5JDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBcHBPdmVybGF5JDtcbiAgcHJpdmF0ZSBfaXNBcHBPdmVybGF5TW9kZTtcbiAgcHJpdmF0ZSBfaXRlbXM6IERmU2lkZU5hdkl0ZW1bXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogRGZTaWRlTmF2Q29uZmlnKSB7XG4gICAgdGhpcy5fc2lkZU5hdkl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGZTaWRlTmF2SXRlbVtdPihbXSk7XG4gICAgdGhpcy5faXNNaW5taXplZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5pc01pbm1pemVkKTtcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGNvbmZpZy5pc0NvbGxhcHNlZCk7XG4gICAgdGhpcy5faXNQcmVzZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oY29uZmlnLmlzUHJlc2VudCk7XG4gICAgdGhpcy5faXNJbk1lbnVPdmVybGF5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oY29uZmlnLmlzSW5NZW51T3ZlcmxheSk7XG4gICAgdGhpcy5faXNBcHBPdmVybGF5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oY29uZmlnLmlzQXBwT3ZlcmxheSk7XG4gICAgdGhpcy5fYWN0aXZlSXRlbSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERmU2lkZU5hdkl0ZW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLl9pc0FwcE92ZXJsYXlNb2RlID0gY29uZmlnLmlzQXBwT3ZlcmxheU1vZGU7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5faXNDb2xsYXBzZWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlT3ZlckxheSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbml0IHRoZSBsaXN0IG9mIEVsZW1lbnRzIGZyb20geW91ciBzaWRlbmF2XG4gICAqXG4gICAqXG4gICAqIFNlY29uZCBvcHRpb24gd2l0aFJvdXRlciBpcyB0byBiZSBzZXQgdG8gZmFsc2UgaWYgeW91IGFyZSBub3QgcGFzc2luZyBsaW5rIHN0cmluZyBmb3IgdGhlIGFuZ3VsYXIgUm91dGVyXG4gICAqIEhlcmUgd2UgYXJlIG5vdCBkZWVwIGNvcHlpbmcgdGhlIGFycmF5IC0tPiB0aGUgZnVuY3Rpb24gd2lsbCBjaGFuZ2UgaXRcbiAgICovXG4gIGluaXRJdGVtcyhpdGVtczogRGZTaWRlTmF2SXRlbVtdLCB3aXRoUm91dGVyID0gdHJ1ZSkge1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7XG4gICAgdGhpcy5hZGROYXZJdGVtVHlwZSh3aXRoUm91dGVyKTtcbiAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5faXRlbXMpO1xuICAgIHRoaXMuZGlzcGF0Y2hTaWRlTmF2SXRlbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBpbmFjdGl2YXRlIHRoZSBsaXN0IG9mIEVsZW1lbnRzIGZyb20geW91ciBzaWRlbmF2XG4gICAqIGlzQWN0aXZlIHByb3BlcnRpZXMgb2YgYWxsIGl0ZW1zIHdpbGwgYmUgc2V0IHRvIGZhbHNlIHJlY3Vyc2l2ZWx5XG4gICAqXG4gICAqL1xuICBpbmFjdGl2ZUl0ZW1zKGxpc3Q6IERmU2lkZU5hdkl0ZW1bXSkge1xuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGl0ZW0uaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIHRoaXMuaW5hY3RpdmVJdGVtcyhpdGVtLnN1Yk1lbnVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpc3BhdGNoU2lkZU5hdkl0ZW1zKCk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gYWN0aXZlIHRoZSBpdGVtIHBhc3MgYXMgaW5wdXRcbiAgICogVGhpcyBmdW5jdGlvbiBpbmFjdGl2YXRlIGFsbCB0aGUgb3RoZXIgaXRlbXMgb2YgdGhlIHNlcnZpY2VcbiAgICogSXQgd2lsbCB0aGVuIGRpc3BhdGNoIHRoZSBsaXN0IG9mIGl0ZW1zIG9mIHRoZSBzaWRlTmF2IHRvIGFjdGl2ZUl0ZW0kXG4gICAqXG4gICAqL1xuICBhY3RpdmVJdGVtKGl0ZW06IERmU2lkZU5hdkl0ZW0pIHtcbiAgICB0aGlzLmluYWN0aXZlSXRlbXModGhpcy5faXRlbXMpO1xuICAgIGl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuX2FjdGl2ZUl0ZW0kLm5leHQoaXRlbSk7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHdoZW4gdG8gcHV0L3JlbW92ZSB0aGUgb3ZlcmxheS5cbiAgICogYFRydWVgIGluIGNhc2Ugb2Ygb3ZlcmxheSBuZWVkZWRcbiAgICpcbiAgICovXG4gIGdldCBpc0FwcE92ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0FwcE92ZXJsYXkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IGlmIHRoZSBzaWRlbmF2IGlzIGluIGFuIG92ZXJsYXkgcGFuZWwgb3Igbm90XG4gICAqIGBUcnVlYCBpbiBjYXNlIG9mIG92ZXJsYXkgcGFuZWxcbiAgICpcbiAgICovXG4gIGdldCBpc0luTWVudU92ZXJsYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0luTWVudU92ZXJsYXkkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHRoZSBjdXJyZW50IGFjdGl2ZUl0ZW0gYSB1c2VyIGNsaWNrZWQgb25cbiAgICpcbiAgICovXG4gIGdldCBhY3RpdmVJdGVtJCgpOiBPYnNlcnZhYmxlPERmU2lkZU5hdkl0ZW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZUl0ZW0kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IGlmIHRoZSBzaWRlTmF2IGlzIHByZXNlbnQgaW4gdGhlIHBhZ2VcbiAgICogU2lkZU5hdiBtYXkgYmUgY29sbGFwc2VkIGhlcmUgb3Igbm90XG4gICAqXG4gICAqL1xuICBnZXQgaXNQcmVzZW50JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNQcmVzZW50JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdXR1cmUgT3B0aW9uc1xuICAgKi9cbiAgZ2V0IGlzTWluaW1pemVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faXNNaW5taXplZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIHRvIGtub3cgaWYgdGhlIFNpZGVOYXYgaXMgY29sbGFwc2VkIG9yIG5vdFxuICAgKiBJZiBgdHJ1ZWAgdGhlIFNpZGVOYXYgaXMgY29sbGFwc2VkXG4gICAqXG4gICAqL1xuICBnZXQgaXNDb2xsYXBzZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9pc0NvbGxhcHNlZCQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIG9mIHRoZSBTaWRlTmF2IEl0ZW1zIGFmdGVyIHRoZXkgaGF2ZSBiZWVucyBjaGFuZ2VkXG4gICAqXG4gICAqL1xuICBnZXQgc2lkZU5hdkl0ZW1zJCgpOiBPYnNlcnZhYmxlPERmU2lkZU5hdkl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLl9zaWRlTmF2SXRlbXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciB0byBrbm93IHRoZSBtb2RlIEFwcGx5IGZvciB0aGUgU2lkZU5hdlxuICAgKiBJZiBgdHJ1ZWAgdGhlIFNpZGVOYXYgY2FuIGJlIGluIG92ZXJsYXkgKGJ1dCBub3QgbmVjZXNzYXJ5IGlzKS5cbiAgICpcbiAgICovXG4gIGdldCBpc0FwcE92ZXJsYXlNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0FwcE92ZXJsYXlNb2RlO1xuICB9XG5cbiAgLy8gaW5pdEl0ZW1zIG11c3QgYmUgdXNlZCB0byBwdXNoIG5ldyBpdGVtcyB0byB0aGUgc2VydmljZVxuICBnZXQgaXRlbXMoKTogRGZTaWRlTmF2SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gdG9nZ2xlIGEgU2lkZU5hdiBJdGVtIChlaXRoZXIgZnJvbSBleHBhbmQgdG8gY29sbGFwc2Ugb3IgdGhlIG90aGVyIHdheSBhcm91bmQpLlxuICAgKiBpc0NvbGxhcHNlZCBhdHRyaWJ1dGUgb2YgdGhlIGlucHV0IGl0ZW0gaXMgY2hhbmdlZC5cbiAgICogQWxsIGl0ZW1zIGFyZSBwdXNoIGFnYWluIHRvIHRoZSBzdHJlYW0gb2YgaXRlbXMuXG4gICAqIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBTaWRlTmF2IGluIGNhc2Ugb2YgY2xpY2sgYW5kIEVudGVyIG9uIGFuIEl0ZW0gd2l0aCBzdWJNZW51c1xuICAgKi9cbiAgdG9nZ2xlKGl0ZW1JbnB1dDogRGZTaWRlTmF2SXRlbSkge1xuICAgIGl0ZW1JbnB1dC5pc0NvbGxhcHNlZCA9ICFpdGVtSW5wdXQuaXNDb2xsYXBzZWQ7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFxuICAgKiBAcGFyYW0gaXRlbUlucHV0IFxuICAgKi9cbiAgY29sbGFwc2VJdGVtKGl0ZW1JbnB1dDogRGZTaWRlTmF2SXRlbSkge1xuICAgIHRoaXMuY29sbGFwc2UoaXRlbUlucHV0LCB0aGlzLl9pdGVtcyk7XG4gICAgdGhpcy5kaXNwYXRjaFNpZGVOYXZJdGVtcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIGNvbGxhcHNlQWxsIGl0ZW1zXG4gICAqL1xuICBjb2xsYXBzZUFsbEl0ZW1zKCkge1xuICAgIHRoaXMuY29sbGFwc2VBbGwodGhpcy5faXRlbXMpO1xuICAgIHRoaXMuZGlzcGF0Y2hTaWRlTmF2SXRlbXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBzZXQvdW5zZXQgdGhlIFNpZGVOYXYgaW4gYW4gT3ZlcmxheSBNZW51XG4gICAqIElmIGlucHV0IGlzIGBUcnVlYCB0aGVuIHRoZSBTaWRlTmF2IHdpbGwgYmUgaW4gYW4gT3ZlcmxheSBNZW51XG4gICAqICh3aGVuIG5vdCBjb2xsYXBzZWQpXG4gICAqXG4gICAqL1xuICBzZXRJbk1lbnVTaWRlTmF2KG9uOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNJbk1lbnVPdmVybGF5JC5uZXh0KG9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgdGhpcyB0byBjb2xsYXBzZSB0aGUgU2lkZU5hdlxuICAgKlxuICAgKi9cbiAgaGlkZVNpZGVOYXYoKSB7XG4gICAgdGhpcy5faXNDb2xsYXBzZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlIHRoaXMgdG8gbWFrZSB0aGUgU2lkZU5hdiB2aXNpYmxlICh1bmNvbGxhcHNlKVxuICAgKlxuICAgKi9cbiAgc2hvd1NpZGVOYXYoKSB7XG4gICAgdGhpcy5faXNDb2xsYXBzZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHRvZ2dsZSB0aGUgU2lkZU5hdiBzdGF0dXMgY29sbGFwc2UvdmlzaWJsZVxuICAgKlxuICAgKi9cbiAgdG9nZ2xlU2lkZU5hdigpIHtcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCQubmV4dCghdGhpcy5faXNDb2xsYXBzZWQkLnZhbHVlKTtcbiAgfVxuXG4gIC8vIGludGVybmFsIHVzYWdlIGZyb20gdGhlIFNpZGVOYXYuIENhbGwgd2hlbiBjb21wb25lbnQgaXMgZGVzdHJveVxuICByZW1vdmVTaWRlQmFyKCkge1xuICAgIHRoaXMuX2lzQ29sbGFwc2VkJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLl9pc1ByZXNlbnQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHNldCB0aGUgQXBwIE92ZXJsYXkgTW9kZVxuICAgKiBJbnB1dCBgVHJ1ZWAgaWYgeW91IHdhbnQgdG8gc2V0IHRoZSBBcHBPdmVybGF5XG4gICAqIEFuIGV2ZW50IGlzIHNlbmQgdG8gaXNBcHBPdmVybGF5JCBkZXBlbmRpbmcgb24geW91ciBzdGF0dXNcbiAgICogaWYgSW5wdXQgPSBgVHJ1ZWAgYW5kIGlzQ29sbGFwc2VkID0gYEZhbHNlYCB0aGVuIGlzQXBwT3ZlcmxheSRcbiAgICogd2lsbCBiZSBgVHJ1ZWBcbiAgICpcbiAgICovXG4gIHNldEFwcE92ZXJsYXlNb2RlKG9uOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNBcHBPdmVybGF5TW9kZSA9IG9uO1xuICAgIHRoaXMudXBkYXRlT3ZlckxheSgpO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgdXNhZ2UgdG8gdGhlIHNpZGVuYXYgY29tcG9uZW50XG4gIC8vIERvIG5vdCB1c2VcbiAgc2V0U2lkZU5hdigpIHtcbiAgICB0aGlzLl9pc1ByZXNlbnQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogXG4gICAqIEBwYXJhbSBpdGVtSW5wdXQgXG4gICAqIEBwYXJhbSBpdGVtc0xpc3QgXG4gICAqL1xuICBwcml2YXRlIGNvbGxhcHNlKGl0ZW1JbnB1dDogRGZTaWRlTmF2SXRlbSwgaXRlbXNMaXN0OiBEZlNpZGVOYXZJdGVtW10pIDogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zTGlzdCkge1xuICAgICAgaWYgKGl0ZW0gPT09IGl0ZW1JbnB1dCAmJiBpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGFnYXRlIHRoZSBjb2xsYXBzZSB1cFxuICAgICAgfSBlbHNlIGlmIChpdGVtID09PSBpdGVtSW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uc3ViTWVudXMpIHtcbiAgICAgICAgY29uc3QgbmVlZGNvbCA9IHRoaXMuY29sbGFwc2UoaXRlbUlucHV0LCBpdGVtLnN1Yk1lbnVzKTtcbiAgICAgICAgaWYgKG5lZWRjb2wpIHtcbiAgICAgICAgICBpdGVtLmlzQ29sbGFwc2VkID0gdHJ1ZTsgLy8gY29sbGFwc2UgaXRcbiAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gcHJvcGFnYXRlIHRoZSBjb2xsYXBzZSB1cFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBcbiAgICogQHBhcmFtIGl0ZW1zTGlzdCBcbiAgICovXG4gIHByaXZhdGUgY29sbGFwc2VBbGwoaXRlbXNMaXN0OiBEZlNpZGVOYXZJdGVtW10pIHtcbiAgICBpdGVtc0xpc3QuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgIGl0ZW0uaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNvbGxhcHNlQWxsKGl0ZW0uc3ViTWVudXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gT25seSBvbmUgaXRlbSBhdCB0aGUgdGltZSBtdXN0IGJlIGFjdGl2ZVxuICAvLyBBY3RpdmUgZmxhZyBpbiBpdGVtIGlzIG9ubHkgdmFsaWQgZm9yIGFjdGlvbiBidXR0b24gYW5kIGxpbmtcbiAgLy8gUm91dGVyIGxpbmsgZG9lcyBub3QgdXNlIHRoaXMgYWN0aXZlIGZsYWcgdG8gd29ya1xuICAvLyBJdCBpcyB1cCB0byB5b3UgdG8gaW5hY3RpdmF0ZUl0ZW1zIHdoZW4gbmVlZGVkIHdoZW4geW91IG1peCBhY3Rpb25CdXR0b24gYW5kIHJvdXRlciBsaW5rXG4gIC8vIFRvIGF2b2lkIG1vcmUgdGhhbiBvbmUgYWN0aXZlIHN0YXRlIHZpc2libGVcbiAgcHJpdmF0ZSBzZXRBY3RpdmVJdGVtKGl0ZW1zIDogRGZTaWRlTmF2SXRlbVtdLCBmb3VuZEFuQWN0aXZlID0gZmFsc2UpIDogYm9vbGVhbiB7XG4gICAgbGV0IGZvdW5kQWN0aXZlID0gZm91bmRBbkFjdGl2ZTtcbiAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKGl0ZW0uaXNBY3RpdmUgJiYgZm91bmRBbkFjdGl2ZSkge1xuICAgICAgICAgIHRocm93IEVycm9yKCdEZlNpZGVOYXZTZXJ2aWNlIG11c3QgYmUgaW5pdCB3aXRoIG9ubHkgb25lIGlzQWN0aXZlIGl0ZW0nKTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0kLm5leHQoaXRlbSk7XG4gICAgICAgICAgZm91bmRBY3RpdmUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uc3ViTWVudXMpIHtcbiAgICAgICAgZm91bmRBY3RpdmUgPSB0aGlzLnNldEFjdGl2ZUl0ZW0oaXRlbS5zdWJNZW51cywgZm91bmRBY3RpdmUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmb3VuZEFjdGl2ZTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTmF2SXRlbVR5cGUod2l0aFJvdXRlcjogYm9vbGVhbiwgaXRlbXM6IERmU2lkZU5hdkl0ZW1bXSA9IHRoaXMuX2l0ZW1zKSB7XG4gICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgIGlmICghaXRlbS50eXBlKSB7XG4gICAgICAgIGlmIChpdGVtLnN1Yk1lbnVzKSB7XG4gICAgICAgICAgaXRlbS50eXBlID0gRGZOYXZJdGVtVHlwZS5zdWJNZW51cztcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmlzRXh0ZXJuYWwpIHtcbiAgICAgICAgICBpdGVtLnR5cGUgPSBEZk5hdkl0ZW1UeXBlLmV4dGVybmFsTGluaztcbiAgICAgICAgfSBlbHNlIGlmICh3aXRoUm91dGVyKSB7XG4gICAgICAgICAgaXRlbS50eXBlID0gRGZOYXZJdGVtVHlwZS5yb3V0ZXJMaW5rO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW0udHlwZSA9IERmTmF2SXRlbVR5cGUuYWN0aW9uQnV0dG9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5zdWJNZW51cykge1xuICAgICAgICB0aGlzLmFkZE5hdkl0ZW1UeXBlKHdpdGhSb3V0ZXIsIGl0ZW0uc3ViTWVudXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwYXRjaFNpZGVOYXZJdGVtcygpIHtcbiAgICB0aGlzLl9zaWRlTmF2SXRlbXMkLm5leHQodGhpcy5faXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVPdmVyTGF5KCkge1xuICAgIHRoaXMuX2lzQXBwT3ZlcmxheSQubmV4dCh0aGlzLmlzQXBwT3ZlcmxheU1vZGUgJiYgdGhpcy5faXNDb2xsYXBzZWQkLnZhbHVlID09PSBmYWxzZSk7XG4gIH1cbn1cbiJdfQ==