@dereekb/dbx-web 0.0.1 → 1.0.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 (470) hide show
  1. package/README.md +4 -5
  2. package/_index.scss +27 -0
  3. package/esm2020/index.mjs +1 -2
  4. package/esm2020/lib/action/action.confirm.directive.mjs +5 -5
  5. package/esm2020/lib/action/action.module.mjs +35 -35
  6. package/esm2020/lib/action/action.snackbar.component.mjs +10 -11
  7. package/esm2020/lib/action/key.trigger.directive.mjs +5 -5
  8. package/esm2020/lib/action/transition/action.transition.module.mjs +29 -29
  9. package/esm2020/lib/action/transition/transition.safety.dialog.component.mjs +18 -18
  10. package/esm2020/lib/action/transition/transition.safety.directive.mjs +20 -38
  11. package/esm2020/lib/button/button.component.mjs +19 -19
  12. package/esm2020/lib/button/button.module.mjs +21 -27
  13. package/esm2020/lib/button/button.spacer.component.mjs +6 -7
  14. package/esm2020/lib/dbx-web.module.mjs +28 -30
  15. package/esm2020/lib/error/error.action.directive.mjs +7 -7
  16. package/esm2020/lib/error/error.component.mjs +5 -5
  17. package/esm2020/lib/error/error.loading.directive.mjs +7 -7
  18. package/esm2020/lib/error/error.module.mjs +19 -19
  19. package/esm2020/lib/index.mjs +3 -2
  20. package/esm2020/lib/interaction/dialog/abstract.dialog.directive.mjs +18 -9
  21. package/esm2020/lib/interaction/dialog/dialog.content.component.mjs +25 -0
  22. package/esm2020/lib/interaction/dialog/dialog.module.mjs +33 -0
  23. package/esm2020/lib/interaction/dialog/index.mjs +3 -1
  24. package/esm2020/lib/interaction/filter/filter.module.mjs +62 -0
  25. package/esm2020/lib/interaction/filter/filter.popover.button.component.mjs +32 -0
  26. package/esm2020/lib/interaction/filter/filter.popover.button.directive.mjs +38 -0
  27. package/esm2020/lib/interaction/filter/filter.popover.component.mjs +90 -0
  28. package/esm2020/lib/interaction/filter/filter.wrapper.component.mjs +33 -0
  29. package/esm2020/lib/interaction/filter/index.mjs +6 -0
  30. package/esm2020/lib/interaction/index.mjs +3 -1
  31. package/esm2020/lib/interaction/interaction.module.mjs +33 -0
  32. package/esm2020/lib/interaction/popover/abstract.popover.directive.mjs +6 -6
  33. package/esm2020/lib/interaction/popover/index.mjs +3 -2
  34. package/esm2020/lib/interaction/popover/popover.action.button.directive.mjs +10 -10
  35. package/esm2020/lib/interaction/popover/popover.action.directive.mjs +5 -5
  36. package/esm2020/lib/interaction/popover/popover.component.mjs +24 -35
  37. package/esm2020/lib/interaction/popover/popover.content.component.mjs +13 -21
  38. package/esm2020/lib/interaction/popover/popover.controls.directive.mjs +28 -0
  39. package/esm2020/lib/interaction/popover/popover.coordinator.component.mjs +8 -8
  40. package/esm2020/lib/interaction/popover/popover.coordinator.service.mjs +5 -5
  41. package/esm2020/lib/interaction/popover/popover.header.component.mjs +10 -11
  42. package/esm2020/lib/interaction/popover/popover.mjs +2 -2
  43. package/esm2020/lib/interaction/popover/popover.module.mjs +71 -63
  44. package/esm2020/lib/interaction/popover/popover.scroll.content.component.mjs +12 -18
  45. package/esm2020/lib/interaction/popover/popover.service.mjs +7 -7
  46. package/esm2020/lib/interaction/popup/abstract.popup.directive.mjs +4 -4
  47. package/esm2020/lib/interaction/popup/index.mjs +2 -1
  48. package/esm2020/lib/interaction/popup/popup.component.mjs +27 -42
  49. package/esm2020/lib/interaction/popup/popup.content.component.mjs +13 -15
  50. package/esm2020/lib/interaction/popup/popup.controls.buttons.component.mjs +13 -15
  51. package/esm2020/lib/interaction/popup/popup.controls.component.mjs +9 -11
  52. package/esm2020/lib/interaction/popup/popup.coordinator.component.mjs +9 -10
  53. package/esm2020/lib/interaction/popup/popup.coordinator.service.mjs +5 -5
  54. package/esm2020/lib/interaction/popup/popup.mjs +8 -8
  55. package/esm2020/lib/interaction/popup/popup.module.mjs +54 -46
  56. package/esm2020/lib/interaction/popup/popup.position.strategy.mjs +8 -12
  57. package/esm2020/lib/interaction/popup/popup.service.mjs +9 -8
  58. package/esm2020/lib/interaction/prompt/prompt.box.component.mjs +10 -22
  59. package/esm2020/lib/interaction/prompt/prompt.button.confirm.directive.mjs +9 -9
  60. package/esm2020/lib/interaction/prompt/prompt.component.mjs +24 -9
  61. package/esm2020/lib/interaction/prompt/prompt.confirm.component.mjs +11 -11
  62. package/esm2020/lib/interaction/prompt/prompt.confirm.dialog.component.mjs +40 -15
  63. package/esm2020/lib/interaction/prompt/prompt.confirm.directive.mjs +11 -21
  64. package/esm2020/lib/interaction/prompt/prompt.confirm.mjs +6 -5
  65. package/esm2020/lib/interaction/prompt/prompt.module.mjs +61 -52
  66. package/esm2020/lib/interaction/prompt/prompt.page.component.mjs +20 -22
  67. package/esm2020/lib/keypress/keydown.listener.directive.mjs +5 -5
  68. package/esm2020/lib/keypress/keypress.module.mjs +9 -9
  69. package/esm2020/lib/layout/bar/bar.directive.mjs +24 -0
  70. package/esm2020/lib/layout/bar/bar.header.component.mjs +39 -0
  71. package/esm2020/lib/layout/bar/bar.layout.module.mjs +47 -0
  72. package/esm2020/lib/layout/bar/bar.mjs +2 -0
  73. package/esm2020/lib/layout/bar/index.mjs +5 -0
  74. package/esm2020/lib/layout/bar/pagebar.component.mjs +15 -0
  75. package/esm2020/lib/layout/block/block.layout.module.mjs +14 -14
  76. package/esm2020/lib/layout/block/two.block.component.mjs +5 -5
  77. package/esm2020/lib/layout/card/card.box.component.mjs +5 -5
  78. package/esm2020/lib/layout/card/card.box.container.component.mjs +5 -5
  79. package/esm2020/lib/layout/card/card.box.layout.module.mjs +15 -15
  80. package/esm2020/lib/layout/column/column.layout.module.mjs +12 -12
  81. package/esm2020/lib/layout/column/one/one.column.component.mjs +6 -6
  82. package/esm2020/lib/layout/column/one/one.column.module.mjs +13 -13
  83. package/esm2020/lib/layout/column/two/two.column.back.directive.mjs +6 -6
  84. package/esm2020/lib/layout/column/two/two.column.component.mjs +5 -5
  85. package/esm2020/lib/layout/column/two/two.column.full.left.directive.mjs +6 -6
  86. package/esm2020/lib/layout/column/two/two.column.head.component.mjs +5 -5
  87. package/esm2020/lib/layout/column/two/two.column.module.mjs +42 -42
  88. package/esm2020/lib/layout/column/two/two.column.right.component.mjs +6 -6
  89. package/esm2020/lib/layout/column/two/two.column.sref.directive.mjs +6 -6
  90. package/esm2020/lib/layout/compact/compact.directive.mjs +5 -5
  91. package/esm2020/lib/layout/compact/compact.layout.module.mjs +9 -9
  92. package/esm2020/lib/layout/content/content.border.directive.mjs +19 -0
  93. package/esm2020/lib/layout/content/content.box.directive.mjs +25 -0
  94. package/esm2020/lib/layout/content/content.container.directive.mjs +28 -0
  95. package/esm2020/lib/layout/content/content.directive.mjs +19 -0
  96. package/esm2020/lib/layout/content/content.elevate.directive.mjs +19 -0
  97. package/esm2020/lib/layout/content/content.layout.module.mjs +34 -24
  98. package/esm2020/lib/layout/content/content.page.directive.mjs +19 -0
  99. package/esm2020/lib/layout/content/index.mjs +7 -5
  100. package/esm2020/lib/layout/flag/flag.component.mjs +5 -5
  101. package/esm2020/lib/layout/flag/flag.layout.module.mjs +15 -15
  102. package/esm2020/lib/layout/flag/flag.prompt.component.mjs +6 -6
  103. package/esm2020/lib/layout/flex/flex.group.directive.mjs +53 -0
  104. package/esm2020/lib/layout/flex/flex.layout.module.mjs +31 -0
  105. package/esm2020/lib/layout/flex/flex.mjs +2 -0
  106. package/esm2020/lib/layout/flex/flex.size.directive.mjs +25 -0
  107. package/esm2020/lib/layout/flex/index.mjs +5 -0
  108. package/esm2020/lib/layout/index.mjs +5 -2
  109. package/esm2020/lib/layout/item/item.icon.component.mjs +5 -5
  110. package/esm2020/lib/layout/item/item.layout.module.mjs +10 -10
  111. package/esm2020/lib/layout/layout.module.mjs +60 -48
  112. package/esm2020/lib/layout/list/index.mjs +12 -2
  113. package/esm2020/lib/layout/list/list.component.mjs +232 -0
  114. package/esm2020/lib/layout/list/list.content.empty.component.mjs +26 -0
  115. package/esm2020/lib/layout/list/list.directive.mjs +78 -0
  116. package/esm2020/lib/layout/list/list.layout.module.mjs +56 -11
  117. package/esm2020/lib/layout/list/list.view.directive.mjs +50 -0
  118. package/esm2020/lib/layout/list/list.view.mjs +13 -0
  119. package/esm2020/lib/layout/list/list.view.selection.directive.mjs +32 -0
  120. package/esm2020/lib/layout/list/list.view.value.component.mjs +61 -0
  121. package/esm2020/lib/layout/list/list.view.value.directive.mjs +35 -0
  122. package/esm2020/lib/layout/list/list.view.value.item.directive.mjs +20 -0
  123. package/esm2020/lib/layout/list/list.view.value.mjs +30 -0
  124. package/esm2020/lib/layout/list/list.view.value.selection.component.mjs +88 -0
  125. package/esm2020/lib/layout/section/index.mjs +3 -4
  126. package/esm2020/lib/layout/section/section.component.mjs +21 -32
  127. package/esm2020/lib/layout/section/section.header.component.mjs +79 -0
  128. package/esm2020/lib/layout/section/section.intro.component.mjs +7 -8
  129. package/esm2020/lib/layout/section/section.layout.module.mjs +34 -44
  130. package/esm2020/lib/layout/section/section.mjs +2 -0
  131. package/esm2020/lib/layout/section/section.page.component.mjs +17 -30
  132. package/esm2020/lib/layout/section/subsection.component.mjs +16 -14
  133. package/esm2020/lib/layout/step/step.component.mjs +5 -5
  134. package/esm2020/lib/layout/step/step.layout.module.mjs +10 -10
  135. package/esm2020/lib/layout/style/index.mjs +7 -0
  136. package/esm2020/lib/layout/style/spacer.directive.mjs +16 -0
  137. package/esm2020/lib/layout/style/style.body.directive.mjs +35 -0
  138. package/esm2020/lib/layout/style/style.directive.mjs +32 -0
  139. package/esm2020/lib/layout/style/style.layout.module.mjs +41 -0
  140. package/esm2020/lib/layout/style/style.service.mjs +76 -0
  141. package/esm2020/lib/layout/style/style.set.directive.mjs +69 -0
  142. package/esm2020/lib/layout/text/hint.component.mjs +17 -0
  143. package/esm2020/lib/layout/text/index.mjs +11 -0
  144. package/esm2020/lib/layout/text/label.component.mjs +17 -0
  145. package/esm2020/lib/layout/text/linkify.component.mjs +47 -0
  146. package/esm2020/lib/layout/text/note.component.mjs +17 -0
  147. package/esm2020/lib/layout/text/notice.component.mjs +17 -0
  148. package/esm2020/lib/layout/text/ok.component.mjs +17 -0
  149. package/esm2020/lib/layout/text/success.component.mjs +17 -0
  150. package/esm2020/lib/layout/text/text.chips.component.mjs +31 -0
  151. package/esm2020/lib/layout/text/text.module.mjs +78 -0
  152. package/esm2020/lib/layout/text/warn.component.mjs +17 -0
  153. package/esm2020/lib/loading/basic-loading.component.mjs +6 -6
  154. package/esm2020/lib/loading/loading-progress.component.mjs +5 -5
  155. package/esm2020/lib/loading/loading.component.mjs +6 -6
  156. package/esm2020/lib/loading/loading.module.mjs +27 -27
  157. package/esm2020/lib/router/index.mjs +2 -2
  158. package/esm2020/lib/router/layout/anchor/anchor.component.mjs +50 -0
  159. package/esm2020/lib/router/layout/anchor/anchor.icon.component.mjs +30 -0
  160. package/esm2020/lib/router/layout/anchor/anchor.link.component.mjs +49 -0
  161. package/esm2020/lib/router/layout/anchor/anchor.module.mjs +48 -0
  162. package/esm2020/lib/router/layout/anchor/anchor.segue.directive.mjs +29 -0
  163. package/esm2020/lib/router/layout/anchor/index.mjs +6 -0
  164. package/esm2020/lib/router/layout/anchorlist/anchorlist.component.mjs +34 -0
  165. package/esm2020/lib/router/layout/anchorlist/anchorlist.module.mjs +50 -0
  166. package/esm2020/lib/router/layout/anchorlist/index.mjs +3 -0
  167. package/esm2020/lib/router/layout/index.mjs +6 -0
  168. package/esm2020/lib/router/layout/layout.module.mjs +29 -0
  169. package/esm2020/lib/router/layout/navbar/index.mjs +3 -0
  170. package/esm2020/lib/router/layout/navbar/navbar.component.mjs +75 -0
  171. package/esm2020/lib/router/layout/navbar/navbar.module.mjs +46 -0
  172. package/esm2020/lib/router/layout/sidenav/index.mjs +9 -0
  173. package/esm2020/lib/router/layout/sidenav/sidenav.button.component.mjs +39 -0
  174. package/esm2020/lib/router/layout/sidenav/sidenav.component.mjs +133 -0
  175. package/esm2020/lib/router/layout/sidenav/sidenav.module.mjs +89 -0
  176. package/esm2020/lib/router/layout/sidenav/sidenav.page.component.mjs +59 -0
  177. package/esm2020/lib/router/layout/sidenav/sidenav.pagebar.component.mjs +39 -0
  178. package/esm2020/lib/router/provider/ngrouter/anchor.component.mjs +7 -7
  179. package/esm2020/lib/router/provider/ngrouter/angular.router.module.mjs +17 -17
  180. package/esm2020/lib/router/provider/router.provider.config.mjs +2 -2
  181. package/esm2020/lib/router/provider/uirouter/anchor.component.mjs +7 -7
  182. package/esm2020/lib/router/provider/uirouter/uirouter.router.module.mjs +17 -17
  183. package/esm2020/lib/screen/index.mjs +4 -0
  184. package/esm2020/lib/screen/screen.mjs +22 -0
  185. package/esm2020/lib/screen/screen.module.mjs +24 -0
  186. package/esm2020/lib/screen/screen.service.mjs +94 -0
  187. package/fesm2015/dereekb-dbx-web.mjs +5513 -3687
  188. package/fesm2015/dereekb-dbx-web.mjs.map +1 -1
  189. package/fesm2020/dereekb-dbx-web.mjs +5491 -3666
  190. package/fesm2020/dereekb-dbx-web.mjs.map +1 -1
  191. package/index.d.ts +0 -1
  192. package/lib/action/_action.scss +40 -0
  193. package/lib/action/action.confirm.directive.d.ts +5 -5
  194. package/lib/action/action.module.d.ts +4 -4
  195. package/lib/action/action.snackbar.component.d.ts +7 -7
  196. package/lib/action/key.trigger.directive.d.ts +3 -3
  197. package/lib/action/transition/action.transition.module.d.ts +5 -5
  198. package/lib/action/transition/transition.safety.dialog.component.d.ts +7 -7
  199. package/lib/action/transition/transition.safety.directive.d.ts +14 -23
  200. package/lib/button/_button.scss +32 -0
  201. package/lib/button/button.component.d.ts +6 -6
  202. package/lib/button/button.module.d.ts +6 -8
  203. package/lib/button/button.spacer.component.d.ts +3 -3
  204. package/lib/dbx-web.module.d.ts +15 -10
  205. package/lib/error/_error.scss +26 -0
  206. package/lib/error/error.action.directive.d.ts +6 -6
  207. package/lib/error/error.component.d.ts +3 -3
  208. package/lib/error/error.loading.directive.d.ts +6 -6
  209. package/lib/error/error.module.d.ts +4 -4
  210. package/lib/index.d.ts +2 -1
  211. package/lib/interaction/_interaction.scss +33 -0
  212. package/lib/interaction/dialog/_dialog.scss +26 -0
  213. package/lib/interaction/dialog/abstract.dialog.directive.d.ts +7 -5
  214. package/lib/interaction/dialog/dialog.content.component.d.ts +10 -0
  215. package/lib/interaction/dialog/dialog.module.d.ts +12 -0
  216. package/lib/interaction/dialog/index.d.ts +2 -0
  217. package/lib/interaction/filter/_filter.scss +25 -0
  218. package/lib/interaction/filter/filter.module.d.ts +15 -0
  219. package/lib/interaction/filter/filter.popover.button.component.d.ts +9 -0
  220. package/lib/interaction/filter/filter.popover.button.directive.d.ts +17 -0
  221. package/lib/interaction/filter/filter.popover.component.d.ts +53 -0
  222. package/lib/interaction/filter/filter.wrapper.component.d.ts +14 -0
  223. package/lib/interaction/filter/index.d.ts +5 -0
  224. package/lib/interaction/index.d.ts +2 -0
  225. package/lib/interaction/interaction.module.d.ts +11 -0
  226. package/lib/interaction/popover/_popover.scss +110 -0
  227. package/lib/interaction/popover/abstract.popover.directive.d.ts +6 -6
  228. package/lib/interaction/popover/index.d.ts +2 -1
  229. package/lib/interaction/popover/popover.action.button.directive.d.ts +8 -8
  230. package/lib/interaction/popover/popover.action.directive.d.ts +8 -8
  231. package/lib/interaction/popover/popover.component.d.ts +15 -17
  232. package/lib/interaction/popover/popover.content.component.d.ts +3 -4
  233. package/lib/interaction/popover/popover.controls.directive.d.ts +10 -0
  234. package/lib/interaction/popover/popover.coordinator.component.d.ts +6 -6
  235. package/lib/interaction/popover/popover.coordinator.service.d.ts +8 -8
  236. package/lib/interaction/popover/popover.d.ts +3 -3
  237. package/lib/interaction/popover/popover.header.component.d.ts +5 -5
  238. package/lib/interaction/popover/popover.module.d.ts +11 -9
  239. package/lib/interaction/popover/popover.scroll.content.component.d.ts +6 -6
  240. package/lib/interaction/popover/popover.service.d.ts +6 -6
  241. package/lib/interaction/popup/_popup.scss +82 -0
  242. package/lib/interaction/popup/abstract.popup.directive.d.ts +4 -4
  243. package/lib/interaction/popup/index.d.ts +1 -0
  244. package/lib/interaction/popup/popup.component.d.ts +15 -18
  245. package/lib/interaction/popup/popup.content.component.d.ts +5 -5
  246. package/lib/interaction/popup/popup.controls.buttons.component.d.ts +5 -5
  247. package/lib/interaction/popup/popup.controls.component.d.ts +3 -3
  248. package/lib/interaction/popup/popup.coordinator.component.d.ts +6 -6
  249. package/lib/interaction/popup/popup.coordinator.service.d.ts +8 -8
  250. package/lib/interaction/popup/popup.d.ts +5 -5
  251. package/lib/interaction/popup/popup.module.d.ts +9 -7
  252. package/lib/interaction/popup/popup.position.strategy.d.ts +1 -5
  253. package/lib/interaction/popup/popup.service.d.ts +6 -6
  254. package/lib/interaction/prompt/_prompt.scss +46 -0
  255. package/lib/interaction/prompt/prompt.box.component.d.ts +3 -5
  256. package/lib/interaction/prompt/prompt.button.confirm.directive.d.ts +8 -8
  257. package/lib/interaction/prompt/prompt.component.d.ts +3 -4
  258. package/lib/interaction/prompt/prompt.confirm.component.d.ts +8 -8
  259. package/lib/interaction/prompt/prompt.confirm.d.ts +2 -2
  260. package/lib/interaction/prompt/prompt.confirm.dialog.component.d.ts +17 -6
  261. package/lib/interaction/prompt/prompt.confirm.directive.d.ts +11 -14
  262. package/lib/interaction/prompt/prompt.module.d.ts +9 -7
  263. package/lib/interaction/prompt/prompt.page.component.d.ts +3 -3
  264. package/lib/interaction/style/_style.scss +47 -0
  265. package/lib/keypress/keydown.listener.directive.d.ts +3 -3
  266. package/lib/keypress/keypress.module.d.ts +4 -4
  267. package/lib/layout/_layout.scss +61 -0
  268. package/lib/layout/bar/_bar.scss +81 -0
  269. package/lib/layout/bar/bar.d.ts +1 -0
  270. package/lib/layout/bar/bar.directive.d.ts +11 -0
  271. package/lib/layout/bar/bar.header.component.d.ts +13 -0
  272. package/lib/layout/bar/bar.layout.module.d.ts +15 -0
  273. package/lib/layout/bar/index.d.ts +4 -0
  274. package/lib/layout/bar/pagebar.component.d.ts +8 -0
  275. package/lib/layout/block/_block.scss +39 -0
  276. package/lib/layout/block/block.layout.module.d.ts +5 -5
  277. package/lib/layout/block/two.block.component.d.ts +3 -3
  278. package/lib/layout/card/_card.scss +26 -0
  279. package/lib/layout/card/card.box.component.d.ts +3 -3
  280. package/lib/layout/card/card.box.container.component.d.ts +3 -3
  281. package/lib/layout/card/card.box.layout.module.d.ts +4 -4
  282. package/lib/layout/column/_column.scss +26 -0
  283. package/lib/layout/column/column.layout.module.d.ts +4 -4
  284. package/lib/layout/column/one/one.column.component.d.ts +3 -3
  285. package/lib/layout/column/one/one.column.module.d.ts +4 -4
  286. package/lib/layout/column/two/two.column.back.directive.d.ts +4 -4
  287. package/lib/layout/column/two/two.column.component.d.ts +3 -3
  288. package/lib/layout/column/two/two.column.full.left.directive.d.ts +4 -4
  289. package/lib/layout/column/two/two.column.head.component.d.ts +3 -3
  290. package/lib/layout/column/two/two.column.module.d.ts +5 -5
  291. package/lib/layout/column/two/two.column.right.component.d.ts +3 -3
  292. package/lib/layout/column/two/two.column.sref.directive.d.ts +4 -4
  293. package/lib/layout/column/two.scss +114 -0
  294. package/lib/layout/compact/compact.directive.d.ts +3 -3
  295. package/lib/layout/compact/compact.layout.module.d.ts +4 -4
  296. package/lib/layout/content/_content.scss +136 -0
  297. package/lib/layout/content/content.border.directive.d.ts +8 -0
  298. package/lib/layout/content/content.box.directive.d.ts +9 -0
  299. package/lib/layout/content/content.container.directive.d.ts +12 -0
  300. package/lib/layout/content/content.directive.d.ts +8 -0
  301. package/lib/layout/content/content.elevate.directive.d.ts +8 -0
  302. package/lib/layout/content/content.layout.module.d.ts +11 -9
  303. package/lib/layout/content/content.page.directive.d.ts +8 -0
  304. package/lib/layout/content/index.d.ts +6 -4
  305. package/lib/layout/flag/_flag.scss +26 -0
  306. package/lib/layout/flag/flag.component.d.ts +3 -3
  307. package/lib/layout/flag/flag.layout.module.d.ts +4 -4
  308. package/lib/layout/flag/flag.prompt.component.d.ts +3 -3
  309. package/lib/layout/flex/_flex.scss +76 -0
  310. package/lib/layout/flex/flex.d.ts +4 -0
  311. package/lib/layout/flex/flex.group.directive.d.ts +24 -0
  312. package/lib/layout/flex/flex.layout.module.d.ts +9 -0
  313. package/lib/layout/flex/flex.size.directive.d.ts +10 -0
  314. package/lib/layout/flex/index.d.ts +4 -0
  315. package/lib/layout/index.d.ts +4 -1
  316. package/lib/layout/item/_item.scss +26 -0
  317. package/lib/layout/item/item.icon.component.d.ts +3 -3
  318. package/lib/layout/item/item.layout.module.d.ts +4 -4
  319. package/lib/layout/layout.module.d.ts +17 -14
  320. package/lib/layout/list/_list.scss +72 -0
  321. package/lib/layout/list/index.d.ts +11 -1
  322. package/lib/layout/list/list.component.d.ts +115 -0
  323. package/lib/layout/list/list.content.empty.component.d.ts +8 -0
  324. package/lib/layout/list/list.directive.d.ts +35 -0
  325. package/lib/layout/list/list.layout.module.d.ts +15 -6
  326. package/lib/layout/list/list.view.d.ts +45 -0
  327. package/lib/layout/list/list.view.directive.d.ts +26 -0
  328. package/lib/layout/list/list.view.selection.directive.d.ts +15 -0
  329. package/lib/layout/list/list.view.value.component.d.ts +15 -0
  330. package/lib/layout/list/list.view.value.d.ts +21 -0
  331. package/lib/layout/list/list.view.value.directive.d.ts +21 -0
  332. package/lib/layout/list/list.view.value.item.directive.d.ts +9 -0
  333. package/lib/layout/list/list.view.value.selection.component.d.ts +32 -0
  334. package/lib/layout/section/_section.scss +116 -0
  335. package/lib/layout/section/index.d.ts +2 -3
  336. package/lib/layout/section/section.component.d.ts +5 -7
  337. package/lib/layout/section/section.d.ts +1 -0
  338. package/lib/layout/section/section.header.component.d.ts +14 -0
  339. package/lib/layout/section/section.intro.component.d.ts +4 -4
  340. package/lib/layout/section/section.layout.module.d.ts +14 -16
  341. package/lib/layout/section/section.page.component.d.ts +4 -5
  342. package/lib/layout/section/subsection.component.d.ts +5 -5
  343. package/lib/layout/step/_step.scss +59 -0
  344. package/lib/layout/step/step.component.d.ts +3 -3
  345. package/lib/layout/step/step.layout.module.d.ts +4 -4
  346. package/lib/layout/style/_style.scss +101 -0
  347. package/lib/layout/style/index.d.ts +6 -0
  348. package/lib/layout/style/spacer.directive.d.ts +5 -0
  349. package/lib/layout/style/style.body.directive.d.ts +16 -0
  350. package/lib/layout/style/style.directive.d.ts +15 -0
  351. package/lib/layout/style/style.layout.module.d.ts +11 -0
  352. package/lib/layout/style/style.service.d.ts +37 -0
  353. package/lib/layout/style/style.set.directive.d.ts +31 -0
  354. package/lib/layout/text/_text.scss +97 -0
  355. package/lib/layout/text/hint.component.d.ts +5 -0
  356. package/lib/{text → layout/text}/index.d.ts +0 -2
  357. package/lib/layout/text/label.component.d.ts +5 -0
  358. package/lib/{text → layout/text}/linkify.component.d.ts +3 -3
  359. package/lib/layout/text/note.component.d.ts +5 -0
  360. package/lib/layout/text/notice.component.d.ts +5 -0
  361. package/lib/layout/text/ok.component.d.ts +5 -0
  362. package/lib/layout/text/success.component.d.ts +5 -0
  363. package/lib/layout/text/text.chips.component.d.ts +13 -0
  364. package/lib/layout/text/text.module.d.ts +19 -0
  365. package/lib/layout/text/warn.component.d.ts +5 -0
  366. package/lib/loading/basic-loading.component.d.ts +4 -4
  367. package/lib/loading/loading-progress.component.d.ts +3 -3
  368. package/lib/loading/loading.component.d.ts +5 -5
  369. package/lib/loading/loading.module.d.ts +5 -5
  370. package/lib/router/_router.scss +25 -0
  371. package/lib/router/index.d.ts +1 -1
  372. package/lib/router/layout/anchor/_anchor.scss +37 -0
  373. package/lib/router/{anchor → layout/anchor}/anchor.component.d.ts +7 -8
  374. package/lib/router/layout/anchor/anchor.icon.component.d.ts +11 -0
  375. package/lib/router/layout/anchor/anchor.link.component.d.ts +13 -0
  376. package/lib/router/layout/anchor/anchor.module.d.ts +13 -0
  377. package/lib/router/layout/anchor/anchor.segue.directive.d.ts +19 -0
  378. package/lib/router/{anchor → layout/anchor}/index.d.ts +1 -0
  379. package/lib/router/layout/anchorlist/_anchorlist.scss +95 -0
  380. package/lib/router/layout/anchorlist/anchorlist.component.d.ts +15 -0
  381. package/lib/router/layout/anchorlist/anchorlist.module.d.ts +14 -0
  382. package/lib/router/layout/anchorlist/index.d.ts +2 -0
  383. package/lib/router/layout/index.d.ts +5 -0
  384. package/lib/router/layout/layout.module.d.ts +10 -0
  385. package/lib/router/layout/navbar/_navbar.scss +27 -0
  386. package/lib/router/layout/navbar/index.d.ts +2 -0
  387. package/lib/router/layout/navbar/navbar.component.d.ts +37 -0
  388. package/lib/router/layout/navbar/navbar.module.d.ts +13 -0
  389. package/lib/router/layout/sidenav/_sidenav.scss +189 -0
  390. package/lib/router/layout/sidenav/index.d.ts +5 -0
  391. package/lib/router/layout/sidenav/sidenav.button.component.d.ts +14 -0
  392. package/lib/router/layout/sidenav/sidenav.component.d.ts +42 -0
  393. package/lib/router/layout/sidenav/sidenav.module.d.ts +23 -0
  394. package/lib/router/layout/sidenav/sidenav.page.component.d.ts +20 -0
  395. package/lib/router/layout/sidenav/sidenav.pagebar.component.d.ts +9 -0
  396. package/lib/router/provider/ngrouter/anchor.component.d.ts +4 -4
  397. package/lib/router/provider/ngrouter/angular.router.module.d.ts +5 -5
  398. package/lib/router/provider/router.provider.config.d.ts +3 -3
  399. package/lib/router/provider/uirouter/anchor.component.d.ts +4 -4
  400. package/lib/router/provider/uirouter/uirouter.router.module.d.ts +5 -5
  401. package/lib/screen/index.d.ts +3 -0
  402. package/lib/screen/screen.d.ts +36 -0
  403. package/lib/screen/screen.module.d.ts +9 -0
  404. package/lib/screen/screen.service.d.ts +60 -0
  405. package/lib/style/_all-core.scss +14 -0
  406. package/lib/style/_all-theme.scss +15 -0
  407. package/lib/style/_all-typography.scss +15 -0
  408. package/lib/style/_config.scss +122 -0
  409. package/lib/style/_core.scss +17 -0
  410. package/lib/style/_mixin.scss +99 -0
  411. package/lib/style/_root-variables.scss +35 -0
  412. package/lib/style/_theming.scss +19 -0
  413. package/lib/style/_variables.scss +45 -0
  414. package/package.json +35 -34
  415. package/esm2020/lib/interaction/popover/popover.controls.component.mjs +0 -35
  416. package/esm2020/lib/layout/content/content.bordered.component.mjs +0 -26
  417. package/esm2020/lib/layout/content/content.component.mjs +0 -32
  418. package/esm2020/lib/layout/content/content.container.component.mjs +0 -66
  419. package/esm2020/lib/layout/content/content.container.fullwidth.component.mjs +0 -26
  420. package/esm2020/lib/layout/dialog/dialog.content.component.mjs +0 -37
  421. package/esm2020/lib/layout/dialog/dialog.layout.module.mjs +0 -29
  422. package/esm2020/lib/layout/dialog/index.mjs +0 -3
  423. package/esm2020/lib/layout/list/list.empty.component.mjs +0 -26
  424. package/esm2020/lib/layout/section/section.box.anchor.component.mjs +0 -39
  425. package/esm2020/lib/layout/section/section.box.component.mjs +0 -32
  426. package/esm2020/lib/layout/section/section.elevated.component.mjs +0 -26
  427. package/esm2020/lib/router/anchor/anchor.component.mjs +0 -50
  428. package/esm2020/lib/router/anchor/anchor.icon.component.mjs +0 -30
  429. package/esm2020/lib/router/anchor/anchor.module.mjs +0 -43
  430. package/esm2020/lib/router/anchor/anchor.segue.directive.mjs +0 -32
  431. package/esm2020/lib/router/anchor/index.mjs +0 -5
  432. package/esm2020/lib/text/hint.component.mjs +0 -15
  433. package/esm2020/lib/text/index.mjs +0 -13
  434. package/esm2020/lib/text/label.bar.component.mjs +0 -32
  435. package/esm2020/lib/text/label.component.mjs +0 -18
  436. package/esm2020/lib/text/link.component.mjs +0 -36
  437. package/esm2020/lib/text/linkify.component.mjs +0 -48
  438. package/esm2020/lib/text/note.component.mjs +0 -15
  439. package/esm2020/lib/text/notice.component.mjs +0 -15
  440. package/esm2020/lib/text/ok.component.mjs +0 -15
  441. package/esm2020/lib/text/success.component.mjs +0 -15
  442. package/esm2020/lib/text/text.chips.component.mjs +0 -32
  443. package/esm2020/lib/text/text.module.mjs +0 -92
  444. package/esm2020/lib/text/warn.component.mjs +0 -15
  445. package/lib/interaction/popover/popover.controls.component.d.ts +0 -10
  446. package/lib/layout/content/content.bordered.component.d.ts +0 -8
  447. package/lib/layout/content/content.component.d.ts +0 -9
  448. package/lib/layout/content/content.container.component.d.ts +0 -34
  449. package/lib/layout/content/content.container.fullwidth.component.d.ts +0 -8
  450. package/lib/layout/dialog/dialog.content.component.d.ts +0 -13
  451. package/lib/layout/dialog/dialog.layout.module.d.ts +0 -11
  452. package/lib/layout/dialog/index.d.ts +0 -2
  453. package/lib/layout/list/list.empty.component.d.ts +0 -8
  454. package/lib/layout/section/section.box.anchor.component.d.ts +0 -11
  455. package/lib/layout/section/section.box.component.d.ts +0 -9
  456. package/lib/layout/section/section.elevated.component.d.ts +0 -8
  457. package/lib/router/anchor/anchor.icon.component.d.ts +0 -11
  458. package/lib/router/anchor/anchor.module.d.ts +0 -12
  459. package/lib/router/anchor/anchor.segue.directive.d.ts +0 -20
  460. package/lib/text/hint.component.d.ts +0 -5
  461. package/lib/text/label.bar.component.d.ts +0 -10
  462. package/lib/text/label.component.d.ts +0 -8
  463. package/lib/text/link.component.d.ts +0 -9
  464. package/lib/text/note.component.d.ts +0 -5
  465. package/lib/text/notice.component.d.ts +0 -5
  466. package/lib/text/ok.component.d.ts +0 -5
  467. package/lib/text/success.component.d.ts +0 -5
  468. package/lib/text/text.chips.component.d.ts +0 -13
  469. package/lib/text/text.module.d.ts +0 -22
  470. package/lib/text/warn.component.d.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"dereekb-dbx-web.mjs","sources":["../../../../packages/dbx-web/src/lib/interaction/dialog/abstract.dialog.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.position.strategy.ts","../../../../packages/dbx-web/src/lib/router/provider/router.provider.config.ts","../../../../packages/dbx-web/src/lib/router/anchor/anchor.component.ts","../../../../packages/dbx-web/src/lib/router/anchor/anchor.component.html","../../../../packages/dbx-web/src/lib/router/anchor/anchor.icon.component.ts","../../../../packages/dbx-web/src/lib/router/anchor/anchor.module.ts","../../../../packages/dbx-web/src/lib/router/anchor/anchor.segue.directive.ts","../../../../packages/dbx-web/src/lib/router/provider/ngrouter/anchor.component.ts","../../../../packages/dbx-web/src/lib/router/provider/ngrouter/anchor.component.html","../../../../packages/dbx-web/src/lib/router/provider/ngrouter/angular.router.module.ts","../../../../packages/dbx-web/src/lib/router/provider/uirouter/anchor.component.ts","../../../../packages/dbx-web/src/lib/router/provider/uirouter/anchor.component.html","../../../../packages/dbx-web/src/lib/router/provider/uirouter/uirouter.router.module.ts","../../../../packages/dbx-web/src/lib/layout/block/two.block.component.ts","../../../../packages/dbx-web/src/lib/layout/block/block.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/card/card.box.component.ts","../../../../packages/dbx-web/src/lib/layout/card/card.box.container.component.ts","../../../../packages/dbx-web/src/lib/layout/card/card.box.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.store.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.back.directive.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.component.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.component.html","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.full.left.directive.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.head.component.ts","../../../../packages/dbx-web/src/lib/layout/content/content.component.ts","../../../../packages/dbx-web/src/lib/layout/content/content.container.fullwidth.component.ts","../../../../packages/dbx-web/src/lib/layout/content/content.bordered.component.ts","../../../../packages/dbx-web/src/lib/layout/content/content.container.component.ts","../../../../packages/dbx-web/src/lib/layout/content/content.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.sref.directive.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.right.component.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.right.component.html","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.module.ts","../../../../packages/dbx-web/src/lib/layout/column/one/one.column.component.ts","../../../../packages/dbx-web/src/lib/layout/column/one/one.column.module.ts","../../../../packages/dbx-web/src/lib/layout/column/column.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.store.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.directive.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/dialog/dialog.content.component.ts","../../../../packages/dbx-web/src/lib/layout/dialog/dialog.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/flag/flag.component.ts","../../../../packages/dbx-web/src/lib/layout/flag/flag.prompt.component.ts","../../../../packages/dbx-web/src/lib/layout/flag/flag.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/item/item.icon.component.ts","../../../../packages/dbx-web/src/lib/layout/item/item.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/list/list.empty.component.ts","../../../../packages/dbx-web/src/lib/layout/list/list.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/section/section.box.anchor.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.box.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.elevated.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.intro.component.ts","../../../../packages/dbx-web/src/lib/layout/section/subsection.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.page.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/step/step.component.ts","../../../../packages/dbx-web/src/lib/layout/step/step.component.html","../../../../packages/dbx-web/src/lib/layout/step/step.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/layout.module.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.coordinator.service.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.coordinator.component.ts","../../../../packages/dbx-web/src/lib/keypress/keydown.listener.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/abstract.popover.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/abstract.popover.ref.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.action.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.action.button.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.content.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.controls.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.header.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.service.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.scroll.content.component.ts","../../../../packages/dbx-web/src/lib/keypress/keypress.module.ts","../../../../packages/dbx-web/src/lib/button/button.component.ts","../../../../packages/dbx-web/src/lib/button/button.spacer.component.ts","../../../../packages/dbx-web/src/lib/button/button.module.ts","../../../../packages/dbx-web/src/lib/action/key.trigger.directive.ts","../../../../packages/dbx-web/src/lib/action/action.snackbar.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.box.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.component.html","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.component.html","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.dialog.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.directive.ts","../../../../packages/dbx-web/src/lib/action/action.confirm.directive.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.page.component.ts","../../../../packages/dbx-web/src/lib/text/hint.component.ts","../../../../packages/dbx-web/src/lib/text/label.bar.component.ts","../../../../packages/dbx-web/src/lib/text/label.component.ts","../../../../packages/dbx-web/src/lib/text/link.component.ts","../../../../packages/dbx-web/src/lib/text/linkify.component.ts","../../../../packages/dbx-web/src/lib/text/note.component.ts","../../../../packages/dbx-web/src/lib/text/notice.component.ts","../../../../packages/dbx-web/src/lib/text/ok.component.ts","../../../../packages/dbx-web/src/lib/text/success.component.ts","../../../../packages/dbx-web/src/lib/text/text.chips.component.ts","../../../../packages/dbx-web/src/lib/text/warn.component.ts","../../../../packages/dbx-web/src/lib/text/text.module.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.button.confirm.directive.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.module.ts","../../../../packages/dbx-web/src/lib/action/action.module.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.module.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.position.strategy.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.coordinator.service.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.coordinator.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/abstract.popup.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.content.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.controls.buttons.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.controls.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.service.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.module.ts","../../../../packages/dbx-web/src/lib/error/error.component.ts","../../../../packages/dbx-web/src/lib/error/error.component.html","../../../../packages/dbx-web/src/lib/error/error.action.directive.ts","../../../../packages/dbx-web/src/lib/action/transition/transition.safety.dialog.component.ts","../../../../packages/dbx-web/src/lib/action/transition/transition.safety.directive.ts","../../../../packages/dbx-web/src/lib/error/error.api.ts","../../../../packages/dbx-web/src/lib/error/error.loading.directive.ts","../../../../packages/dbx-web/src/lib/error/error.module.ts","../../../../packages/dbx-web/src/lib/error/state.ts","../../../../packages/dbx-web/src/lib/action/transition/action.transition.module.ts","../../../../packages/dbx-web/src/lib/loading/loading-progress.component.ts","../../../../packages/dbx-web/src/lib/loading/basic-loading.component.ts","../../../../packages/dbx-web/src/lib/loading/basic-loading.component.html","../../../../packages/dbx-web/src/lib/loading/loading.component.ts","../../../../packages/dbx-web/src/lib/loading/loading.module.ts","../../../../packages/dbx-web/src/lib/dbx-web.module.ts","../../../../packages/dbx-web/src/dereekb-dbx-web.ts"],"sourcesContent":["import { Directive, Inject, NgZone } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { AbstractTransitionWatcherDirective, DbNgxRouterTransitionService } from '@dereekb/dbx-core';\n\n/**\n * Abstract dialog component that closes when a transition is successful.\n */\n@Directive()\nexport abstract class AbstractDialogDirective<T = any, R = any> extends AbstractTransitionWatcherDirective {\n\n constructor(\n @Inject(MatDialogRef) public readonly dialogRef: MatDialogRef<T, R>,\n dbNgxRouterTransitionService: DbNgxRouterTransitionService,\n ngZone: NgZone) {\n super(dbNgxRouterTransitionService, ngZone);\n }\n\n protected updateForSuccessfulTransition(): void {\n this.dialogRef.close();\n }\n\n}\n","import { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ElementRef } from '@angular/core';\nimport { NgOverlayContainerConfiguration } from 'ng-overlay-container';\n\nexport interface PopoverPositionStrategyConfig {\n overlay: Overlay;\n elementRef: ElementRef;\n config: NgOverlayContainerConfiguration;\n}\n\nexport class PopoverPositionStrategy {\n\n static make(overlay: Overlay, elementRef: ElementRef, config: NgOverlayContainerConfiguration): FlexibleConnectedPositionStrategy {\n\n const [originX, origin2ndX, origin3rdX]: HorizontalConnectionPos[] =\n config.originX === 'end' ? ['end', 'start', 'center'] :\n config.originX === 'start' ? ['start', 'end', 'center'] : ['center', 'start', 'end'];\n\n const overlayX = originX;\n const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n config.overlayY === 'bottom' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n const [originY, originFallbackY] = [overlayFallbackY, overlayY];\n const { offsetX = 0, offsetY = 0 } = config;\n\n return overlay\n .position()\n .flexibleConnectedTo(elementRef)\n .withLockedPosition(true)\n .withPositions([\n {\n originX,\n originY,\n overlayX,\n overlayY,\n offsetY,\n },\n {\n originX: origin2ndX,\n originY,\n overlayX: origin2ndX,\n overlayY,\n offsetY,\n },\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n {\n originX: origin2ndX,\n originY: originFallbackY,\n overlayX: origin2ndX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n {\n originX: origin3rdX,\n originY,\n overlayX: origin3rdX,\n overlayY,\n offsetY,\n },\n {\n originX: origin3rdX,\n originY: originFallbackY,\n overlayX: origin3rdX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n ])\n .withDefaultOffsetX(offsetX)\n .withDefaultOffsetY(offsetY);\n }\n\n}\n","import { DbNgxInjectedComponentConfig } from \"@dereekb/dbx-core\";\n\nexport abstract class DbNgxRouterWebProviderConfig {\n\n /**\n * Component used by the Anchor component to render a SegueRef link.\n */\n abstract anchorSegueRefComponent: DbNgxInjectedComponentConfig;\n\n}\n","import { skipFirstMaybe } from '@dereekb/rxjs';\nimport { Input, Component, TemplateRef, ViewChild } from '@angular/core';\nimport { AbstractDbNgxAnchorDirective, DbNgxInjectedComponentConfig } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\nimport { BehaviorSubject } from 'rxjs';\nimport { map, distinctUntilChanged, shareReplay } from 'rxjs/operators';\nimport { DbNgxRouterWebProviderConfig } from '../provider/router.provider.config';\n\n/**\n * Component that renders an anchor element depending on the input.\n */\n@Component({\n selector: 'dbx-anchor, [dbx-anchor]',\n templateUrl: './anchor.component.html',\n // TODO: styleUrls: ['./anchor.scss']\n})\nexport class DbNgxAnchorComponent extends AbstractDbNgxAnchorDirective {\n\n private _templateRef = new BehaviorSubject<Maybe<TemplateRef<any>>>(undefined);\n readonly templateRef$ = this._templateRef.pipe(skipFirstMaybe(), shareReplay(1));\n\n @Input()\n public block?: boolean;\n\n @ViewChild('content', { read: TemplateRef })\n get templateRef(): Maybe<TemplateRef<any>> {\n return this._templateRef.value;\n }\n\n set templateRef(templateRef: Maybe<TemplateRef<any>>) {\n this._templateRef.next(templateRef);\n }\n\n readonly url$ = this.anchor$.pipe(map(x => x?.url), distinctUntilChanged(), shareReplay(1));\n readonly target$ = this.anchor$.pipe(map(x => x?.target), distinctUntilChanged(), shareReplay(1));\n\n constructor(private readonly dbNgxRouterWebProviderConfig: DbNgxRouterWebProviderConfig) {\n super();\n }\n\n get srefAnchorConfig(): DbNgxInjectedComponentConfig {\n return this.dbNgxRouterWebProviderConfig.anchorSegueRefComponent;\n }\n\n get anchorBlockClass(): string {\n return this.block ? 'dbx-anchor-block' : '';\n }\n\n clickAnchor(event?: Maybe<MouseEvent>): void {\n this.anchor?.onClick?.(event);\n }\n\n}\n","<ng-container [ngSwitch]=\"type$ | async\">\n <!-- Click -->\n <a class=\"dbx-anchor dbx-anchor-click {{ anchorBlockClass }}\" (click)=\"clickAnchor()\" *ngSwitchCase=\"1\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <!-- Router -->\n <dbx-injected-content [config]=\"srefAnchorConfig\" *ngSwitchCase=\"2\">\n <!-- Injected in child. -->\n </dbx-injected-content>\n <!-- Href -->\n <a class=\"dbx-anchor dbx-anchor-href {{ anchorBlockClass }}\" [href]=\"url$ | async\" [attr.target]=\"target$ | async\"\n *ngSwitchCase=\"3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <!-- Disabled or None -->\n <a class=\"dbx-anchor dbx-anchor-disabled {{ anchorBlockClass }}\" *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n</ng-container>\n<!-- Template content -->\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { ClickableIconAnchorLink } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Component that displays an anchor and a mat-button.\n */\n@Component({\n selector: 'dbx-anchor-icon',\n template: `\n <dbx-anchor [anchor]=\"anchor\">\n <button mat-icon-button><mat-icon>{{ anchor?.icon }}</mat-icon></button>\n </dbx-anchor>\n`\n})\nexport class DbNgxAnchorIconComponent {\n\n @Input()\n anchor: Maybe<ClickableIconAnchorLink>;\n\n}\n","import { DbNgxInjectedComponentModule } from '@dereekb/dbx-core';\nimport { NgModule } from '@angular/core';\nimport { DbNgxAnchorComponent } from './anchor.component';\nimport { CommonModule } from '@angular/common';\nimport { DbNgxAnchorIconComponent } from './anchor.icon.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n DbNgxInjectedComponentModule\n ],\n declarations: [\n DbNgxAnchorComponent,\n DbNgxAnchorIconComponent\n ],\n exports: [\n DbNgxAnchorComponent,\n DbNgxAnchorIconComponent\n ]\n})\nexport class DbNgxAnchorModule { }\n","import { Directive } from \"@angular/core\";\nimport { DbNgxInjectedTemplateConfig } from \"@dereekb/dbx-core\";\nimport { Observable } from \"rxjs\";\nimport { distinctUntilChanged, shareReplay, map, share } from \"rxjs/operators\";\nimport { DbNgxAnchorComponent } from \"./anchor.component\";\n\n/**\n * Abstract implementation\n */\n@Directive()\nexport abstract class AbstractDbNgxSegueAnchorDirective {\n\n readonly target$ = this.parent.target$;\n\n readonly ref$ = this.parent.anchor$.pipe(map(x => x?.ref), distinctUntilChanged(), shareReplay(1));\n readonly refParams$ = this.parent.anchor$.pipe(map(x => x?.refParams), distinctUntilChanged(), shareReplay(1));\n readonly refOptions$ = this.parent.anchor$.pipe(map(x => x?.refOptions), distinctUntilChanged(), shareReplay(1));\n\n constructor(readonly parent: DbNgxAnchorComponent) { }\n\n readonly template$: Observable<DbNgxInjectedTemplateConfig> = this.parent.templateRef$.pipe(\n distinctUntilChanged(),\n map(templateRef => ({\n templateRef\n })),\n shareReplay(1)\n );\n\n get anchorBlockClass(): string {\n return this.parent.anchorBlockClass;\n }\n\n get anchor() {\n return this.parent.anchor;\n }\n\n}\n","import { Component } from '@angular/core';\nimport { AbstractDbNgxSegueAnchorDirective } from '../../anchor/anchor.segue.directive';\n\n/**\n * SegueAnchor implementation for Angular Router.\n */\n@Component({\n templateUrl: './anchor.component.html'\n})\nexport class DbNgxAngularRouterSegueAnchorComponent extends AbstractDbNgxSegueAnchorDirective { }\n","<a class=\"dbx-anchor dbx-anchor-sref {{ anchorBlockClass }}\" [attr.target]=\"target$ | async\" [uiSref]=\"ref$ | async\"\n [uiParams]=\"refParams$ | async\" [uiOptions]=\"refOptions$ | async\">\n <dbx-injected-content></dbx-injected-content>\n</a>\n","import { UIRouterModule } from '@uirouter/angular';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DbNgxAngularRouterSegueAnchorComponent } from './anchor.component';\nimport { DbNgxRouterWebProviderConfig } from '../router.provider.config';\nimport { DbNgxInjectedComponentModule } from '@dereekb/dbx-core';\n\n@NgModule({\n imports: [\n CommonModule,\n UIRouterModule,\n DbNgxInjectedComponentModule\n ],\n declarations: [DbNgxAngularRouterSegueAnchorComponent],\n exports: [DbNgxAngularRouterSegueAnchorComponent]\n})\nexport class DbNgxWebAngularRouterModule {\n\n static forRoot(): ModuleWithProviders<DbNgxWebAngularRouterModule> {\n return {\n ngModule: DbNgxWebAngularRouterModule,\n providers: [\n {\n provide: DbNgxRouterWebProviderConfig,\n useValue: {\n anchorSegueRefComponent: {\n componentClass: DbNgxAngularRouterSegueAnchorComponent\n }\n } as DbNgxRouterWebProviderConfig\n }\n ]\n };\n }\n\n}\n","import { Component } from '@angular/core';\nimport { AbstractDbNgxSegueAnchorDirective } from '../../anchor/anchor.segue.directive';\n\n/**\n * SegueAnchor implementation for UIRouter.\n */\n@Component({\n templateUrl: './anchor.component.html'\n})\nexport class DbNgxUIRouterSegueAnchorComponent extends AbstractDbNgxSegueAnchorDirective { }\n","<a class=\"dbx-anchor dbx-anchor-sref {{ anchorBlockClass }}\" [attr.target]=\"target$ | async\" [uiSref]=\"ref$ | async\"\n [uiParams]=\"refParams$ | async\" [uiOptions]=\"refOptions$ | async\">\n <dbx-injected-content [template]=\"template$ | async\"></dbx-injected-content>\n</a>\n","import { UIRouterModule } from '@uirouter/angular';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DbNgxUIRouterSegueAnchorComponent } from './anchor.component';\nimport { DbNgxRouterWebProviderConfig } from '../router.provider.config';\nimport { DbNgxInjectedComponentModule } from '@dereekb/dbx-core';\n\n@NgModule({\n imports: [\n CommonModule,\n UIRouterModule,\n DbNgxInjectedComponentModule\n ],\n declarations: [DbNgxUIRouterSegueAnchorComponent],\n exports: [DbNgxUIRouterSegueAnchorComponent]\n})\nexport class DbNgxWebUIRouterModule {\n\n static forRoot(): ModuleWithProviders<DbNgxWebUIRouterModule> {\n return {\n ngModule: DbNgxWebUIRouterModule,\n providers: [\n {\n provide: DbNgxRouterWebProviderConfig,\n useValue: {\n anchorSegueRefComponent: {\n componentClass: DbNgxUIRouterSegueAnchorComponent\n }\n } as DbNgxRouterWebProviderConfig\n }\n ]\n };\n }\n\n}\n","import { ElementRef, Component, ViewChild } from '@angular/core';\nimport { ResizedEvent } from 'angular-resize-event';\n\n/**\n * Wrapper of a block that is broken into two parts, with the bottom content's height\n * being set to 100% of the height minus the top's height.\n *\n * The block is made up of two divs, a top and a bottom. The top is assigned a static height, and the bottom is given the remainder.\n * The height is calculated from 100%.\n */\n@Component({\n selector: 'dbx-two-block',\n template: `\n <div #two class=\"dbx-two-block\">\n <div #top class=\"dbx-two-block-top\" (resized)=\"onResized($event)\">\n <ng-content select=\"[top]\"></ng-content>\n </div>\n <div #bottom class=\"dbx-two-block-bottom\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class DbNgxTwoBlocksComponent {\n\n @ViewChild('two', { read: ElementRef, static: true })\n twoElement!: ElementRef;\n\n /*\n @ViewChild('top', { read: ElementRef, static: true })\n topElement!: ElementRef;\n\n @ViewChild('bottom', { read: ElementRef, static: true })\n bottomElement!: ElementRef;\n */\n\n onResized(event: ResizedEvent): void {\n const height = event.newRect.height;\n const element: HTMLElement = this.twoElement!.nativeElement;\n element.style.setProperty('--two-block-top-height', `${height}px`);\n }\n\n}\n","import { DbNgxAnchorModule } from '../../router';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxTwoBlocksComponent } from './two.block.component';\nimport { AngularResizeEventModule } from 'angular-resize-event';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule,\n DbNgxAnchorModule,\n AngularResizeEventModule\n ],\n declarations: [\n DbNgxTwoBlocksComponent\n ],\n exports: [\n DbNgxTwoBlocksComponent\n ]\n})\nexport class DbNgxBlockLayoutModule { }\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that formats a card-box of content.\n */\n@Component({\n selector: 'dbx-card-box',\n template: `\n <div class=\"dbx-card-box\">\n <div class=\"dbx-section-header\">\n <div class=\"dbx-section-header-content\">\n <h4 class=\"dbx-section-header-content-title\"><mat-icon *ngIf=\"icon\">{{icon}}</mat-icon><span *ngIf=\"header\" class=\"title-text\">{{ header }}</span></h4>\n <span class=\"spacer\"></span>\n <ng-content select=\"[sectionHeader]\"></ng-content>\n </div>\n </div>\n <div class=\"dbx-card-box-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class DbNgxCardBoxComponent {\n\n @Input()\n header?: string;\n\n @Input()\n icon?: string;\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that wraps a card box and adds content padding.\n */\n@Component({\n selector: 'dbx-card-box-container',\n template: `\n <div class=\"dbx-card-box-container\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DbNgxCardBoxContainerComponent { }\n","import { MatIconModule } from '@angular/material/icon';\nimport { DbNgxCardBoxContainerComponent } from './card.box.container.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxCardBoxComponent } from './card.box.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n DbNgxCardBoxComponent,\n DbNgxCardBoxContainerComponent\n ],\n exports: [\n DbNgxCardBoxComponent,\n DbNgxCardBoxContainerComponent\n ]\n})\nexport class DbNgxCardBoxLayoutModule { }\n","import { Injectable, OnDestroy, Provider } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { Subject } from 'rxjs';\nimport { distinct, map } from 'rxjs/operators';\nimport { SegueRef } from '@dereekb/dbx-core';\n\nexport interface TwoColumnsState {\n showRight: boolean;\n /**\n * Whether or not to allow the left to fill up the screen when no right is shown.\n */\n fullLeft: boolean;\n /**\n * Optional ref to use with TwoColumns that use an sref for the back button.\n */\n backRef?: SegueRef;\n}\n\nconst INITIAL_STATE: TwoColumnsState = {\n showRight: false,\n fullLeft: false\n};\n\n@Injectable()\nexport class TwoColumnsContextStore extends ComponentStore<TwoColumnsState> implements OnDestroy {\n\n private readonly _back = new Subject<void>();\n\n constructor() {\n super({ ...INITIAL_STATE });\n }\n\n // MARK: Accessors\n /**\n * Pipes the current state of showRight.\n */\n readonly showRight$ = this.state$.pipe(map((x) => x.showRight));\n\n /**\n * Convenience function for the showRight compliment.\n */\n readonly hideRight$ = this.state$.pipe(map((x) => !x.showRight));\n\n /**\n * Pipes the current state of fullLeft.\n */\n readonly fullLeft$ = this.state$.pipe(map((x) => x.fullLeft));\n\n /**\n * Whether or not to show the full left.\n */\n readonly showFullLeft$ = this.state$.pipe(map((x) => !x.showRight && x.fullLeft));\n\n /**\n * Pipes the current backRef value.\n */\n readonly backRef$ = this.state$.pipe(map((x) => x.backRef), distinct());\n\n /**\n * Emits back events.\n */\n readonly back$ = this._back.asObservable();\n\n // MARK: State Changes\n /**\n * Completely resets the store.\n */\n readonly reset = this.updater((state) => ({ ...INITIAL_STATE }));\n\n /**\n * Changes the state to show right or not.\n */\n readonly setShowRight = this.updater((state, showRight: boolean) => ({ ...state, showRight }));\n\n /**\n * Sets the full left.\n */\n readonly setFullLeft = this.updater((state, fullLeft: boolean) => ({ ...state, fullLeft }));\n\n /**\n * Sets the new back ref.\n */\n readonly setBackRef = this.updater((state, backRef: SegueRef) => ({ ...state, backRef }));\n\n /**\n * Emits a back event.\n */\n back(): void {\n this._back.next();\n }\n\n // MARK: Internal\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._back.complete();\n }\n\n}\n\nexport function ProvideTwoColumnsContext(): Provider[] {\n return [{\n provide: TwoColumnsContextStore,\n useClass: TwoColumnsContextStore\n }];\n}\n","import { Directive, EventEmitter, Output, OnInit } from '@angular/core';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Used with an DbNgxTwoColumnsComponent to help respond to a \"back\" function.\n */\n@Directive({\n selector: '[dbxTwoColumnsBack]'\n})\nexport class DbNgxTwoColumnsBackDirective extends AbstractSubscriptionDirective implements OnInit {\n\n @Output('dbxTwoColumnsBack')\n public back = new EventEmitter();\n\n constructor(public readonly twoColumnsContextStore: TwoColumnsContextStore) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.twoColumnsContextStore.back$.subscribe(() => this.back.emit());\n }\n\n public backClicked(): void {\n this.twoColumnsContextStore.back();\n }\n\n}\n","import { Component, Inject, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Responsive component meant to split a left and right column.\n *\n * The left column is smaller than the right column, which contains the primary content.\n *\n * Requires a TwoColumnsContextStore to be provided.\n */\n@Component({\n selector: 'dbx-two-columns',\n templateUrl: './two.column.component.html',\n exportAs: 'columns'\n})\nexport class DbNgxTwoColumnsComponent {\n\n readonly showRight$: Observable<boolean> = this.twoColumnsContextStore.showRight$;\n readonly hideRight$: Observable<boolean> = this.twoColumnsContextStore.hideRight$;\n readonly showFullLeft$: Observable<boolean> = this.twoColumnsContextStore.showFullLeft$;\n\n constructor(@Inject(TwoColumnsContextStore) public readonly twoColumnsContextStore: TwoColumnsContextStore) { }\n\n @Input()\n reverseSizing: boolean = false;\n\n @Input()\n inSectionPage: boolean = false;\n\n}\n","<div class=\"two-column\" [ngClass]=\"{ 'two-column-reverse-sizing': reverseSizing, 'right-shown': showRight$ | async, 'full-left': (showFullLeft$ | async), 'dbx-section-page-two': inSectionPage }\">\n <div class=\"left-column\">\n <ng-content select=\"[left]\"></ng-content>\n </div>\n <div class=\"right-column\" *ngIf=\"showRight$ | async\">\n <!-- NOTE: This will only hide the content project. Be sure to use *ngIf separately on the right's content if needed. -->\n <!-- https://github.com/angular/angular/issues/17983 -->\n <ng-content select=\"[right]\"></ng-content>\n </div>\n</div>\n","import { OnInit } from '@angular/core';\nimport { Directive, Input, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Used with a DbNgxTwoColumnsComponent to set the full left to true.\n */\n@Directive({\n selector: '[dbxTwoColumnsFullLeft]'\n})\nexport class DbNgxTwoColumnsFullLeftDirective implements OnInit, OnDestroy {\n\n private _fullLeft = new BehaviorSubject<boolean>(true);\n\n @Input('dbxTwoColumnsFullLeft')\n get fullLeft(): boolean {\n return this._fullLeft.value;\n }\n\n set fullLeft(fullLeft: boolean) {\n if (fullLeft != null && (fullLeft as any) !== '') {\n this._fullLeft.next(fullLeft);\n }\n }\n\n constructor(private readonly _twoColumnsContextStore: TwoColumnsContextStore) { }\n\n ngOnInit(): void {\n this._twoColumnsContextStore.setFullLeft(this._fullLeft);\n }\n\n ngOnDestroy(): void {\n this._fullLeft.complete();\n }\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Two Columns related component that sits at the top of the content bodies and wraps content.\n */\n@Component({\n selector: 'dbx-two-columns-head',\n template: `\n <div class=\"dbx-two-columns-head\" [ngClass]=\"{ 'block': block, 'full': full }\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DbNgxTwoColumnsColumnHeadComponent {\n\n @Input()\n block?: boolean;\n\n @Input()\n full?: boolean;\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that sets the height of it's content to fill the page with respect to the top two navigation bars.\n */\n@Component({\n selector: 'dbx-content',\n template: `\n <div class=\"dbx-content\" [ngClass]=\"{ 'has-second-bar': hasSecondBar }\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxContentComponent {\n\n @Input()\n hasSecondBar = true;\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that extends the entire width and has padding.\n */\n@Component({\n selector: 'dbx-full-width-content-container',\n template: `\n <div class=\"dbx-full-width-content-container\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxFullWidthContentContainerComponent { }\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that is wrapped with a padded border.\n */\n@Component({\n selector: 'dbx-bordered-content',\n template: `\n <div class=\"dbx-bordered-content\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxBorderedContentComponent { }\n","import { Component, Input } from '@angular/core';\n\nexport enum DbNgxContentContainerPadding {\n NONE = 'none',\n MIN = 'min',\n SMALL = 'small',\n NORMAL = 'normal'\n}\n\nexport enum DbNgxContentContainerWidth {\n SMALL = 'small',\n MEDIUM = 'medium',\n WIDE = 'wide',\n FULL = 'full'\n}\n\nexport enum DbNgxContentContainerType {\n /**\n * Full/unrestricted height content.\n */\n NORMAL = 'normal',\n /**\n * Content that has a header above it and should take up the rest of the height of the page.\n */\n CONTENT = 'content'\n}\n\n/**\n * Component that limits the max-width of the content.\n */\n@Component({\n selector: 'dbx-content-container',\n template: `\n <div class=\"dbx-content-container\" [ngClass]=\"width + '-container ' + type + '-container-type container-padding-' + padding + ((scrollingContent) ? ' container-scrolling-content' : '')\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxContentContainerComponent {\n\n @Input()\n type = DbNgxContentContainerType.NORMAL;\n\n @Input()\n width = DbNgxContentContainerWidth.WIDE;\n\n @Input()\n padding = DbNgxContentContainerPadding.NORMAL;\n\n @Input()\n scrollingContent = false;\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxContentComponent } from './content.component';\nimport { DbNgxFullWidthContentContainerComponent } from './content.container.fullwidth.component';\nimport { DbNgxBorderedContentComponent } from './content.bordered.component';\nimport { DbNgxContentContainerComponent } from './content.container.component';\n\n/**\n * Module for container-type components.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbNgxContentComponent,\n DbNgxContentContainerComponent,\n DbNgxBorderedContentComponent,\n DbNgxFullWidthContentContainerComponent\n ],\n exports: [\n DbNgxContentComponent,\n DbNgxContentContainerComponent,\n DbNgxBorderedContentComponent,\n DbNgxFullWidthContentContainerComponent\n ]\n})\nexport class DbNgxContentLayoutModule { }\n","import { Directive, Input } from '@angular/core';\nimport { SegueRef } from '@dereekb/dbx-core';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Used with a DbNgxTwoColumnsComponent to set the backRef of the TwoColumnsContextStore.\n */\n@Directive({\n selector: '[dbxTwoColumnsSref]'\n})\nexport class DbNgxTwoColumnsSrefDirective {\n\n constructor(private readonly _twoColumnsContextStore: TwoColumnsContextStore) { }\n\n @Input('dbxTwoColumnsSref')\n public set refString(ref: string) {\n this.ref = {\n ref\n };\n }\n\n @Input()\n public set ref(ref: SegueRef) {\n this._twoColumnsContextStore.setBackRef(ref);\n }\n\n}\n","import { AfterViewInit, OnDestroy, Component, Inject, Input } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ClickableAnchor } from '@dereekb/dbx-core';\nimport { TwoColumnsContextStore } from './two.column.store';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Optional responsive component that wraps content on the right side and shows a navigation bar.\n */\n@Component({\n selector: 'dbx-two-columns-right',\n templateUrl: './two.column.right.component.html'\n})\nexport class DbNgxTwoColumnsRightComponent implements AfterViewInit, OnDestroy {\n\n private _showBack = new BehaviorSubject<boolean>(true);\n\n @Input()\n header?: string;\n\n readonly ref$: Observable<Maybe<ClickableAnchor>> = this.twoColumnsContextStore.backRef$;\n\n readonly showBack$: Observable<boolean> = combineLatest([\n this._showBack, this.ref$.pipe(map((x) => !Boolean(x))) // TODO: Is this correct? Show back if ref is not defined?\n ]).pipe(\n map(([a, b]: [boolean, boolean]) => a && b)\n );\n\n constructor(\n @Inject(TwoColumnsContextStore) private readonly twoColumnsContextStore: TwoColumnsContextStore\n ) { }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.twoColumnsContextStore.setShowRight(true);\n });\n }\n\n ngOnDestroy(): void {\n this.twoColumnsContextStore.setShowRight(false);\n }\n\n @Input()\n get showBack(): boolean {\n return this._showBack.value;\n }\n\n set showBack(showBack: boolean) {\n this._showBack.next(showBack);\n }\n\n public backClicked(): void {\n this.twoColumnsContextStore.back();\n }\n\n}\n","<div class=\"two-columns-right\">\n <dbx-two-columns-head>\n <!-- Back Buttons -->\n <ng-container *ngIf=\"showBack$ | async\">\n <button mat-icon-button class=\"back-button\" (click)=\"backClicked()\" aria-label=\"back button\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"ref$ | async\">\n <dbx-anchor [anchor]=\"ref$ | async\">\n <button mat-icon-button class=\"back-button\" aria-label=\"back button\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n </dbx-anchor>\n </ng-container>\n <span *ngIf=\"header\" class=\"right-nav-title\">{{ header }}</span>\n <span class=\"right-nav-spacer\"></span>\n <span class=\"spacer\"></span>\n <ng-content select=\"[nav]\"></ng-content>\n </dbx-two-columns-head>\n <div class=\"two-columns-right-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxAnchorModule } from '../../../router';\nimport { DbNgxContentLayoutModule } from '../../content';\nimport { DbNgxTwoColumnsSrefDirective } from './two.column.sref.directive';\nimport { DbNgxTwoColumnsComponent } from './two.column.component';\nimport { DbNgxTwoColumnsColumnHeadComponent } from './two.column.head.component';\nimport { DbNgxTwoColumnsRightComponent } from './two.column.right.component';\nimport { DbNgxTwoColumnsBackDirective } from './two.column.back.directive';\nimport { DbNgxTwoColumnsFullLeftDirective } from './two.column.full.left.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n DbNgxAnchorModule,\n DbNgxContentLayoutModule\n ],\n declarations: [\n DbNgxTwoColumnsComponent,\n DbNgxTwoColumnsRightComponent,\n DbNgxTwoColumnsColumnHeadComponent,\n DbNgxTwoColumnsSrefDirective,\n DbNgxTwoColumnsBackDirective,\n DbNgxTwoColumnsFullLeftDirective\n ],\n exports: [\n DbNgxTwoColumnsComponent,\n DbNgxTwoColumnsRightComponent,\n DbNgxTwoColumnsColumnHeadComponent,\n DbNgxTwoColumnsSrefDirective,\n DbNgxTwoColumnsBackDirective,\n DbNgxTwoColumnsFullLeftDirective\n ],\n})\nexport class DbNgxTwoColumnLayoutModule { }\n","import { Component, Inject, Input } from '@angular/core';\nimport { TwoColumnsContextStore } from '../two';\n\n/**\n * Pre-configured Two-columns view that only has a left view and shows full left.\n */\n@Component({\n selector: 'dbx-one-column',\n template: `\n <ng-container>\n <dbx-two-columns [inSectionPage]=\"inSectionPage\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content left></ng-content>\n </dbx-two-columns>\n </ng-container>\n `,\n exportAs: 'columns',\n providers: [TwoColumnsContextStore]\n})\nexport class DbNgxOneColumnComponent {\n\n constructor(@Inject(TwoColumnsContextStore) public readonly twoColumnsContextStore: TwoColumnsContextStore) {\n twoColumnsContextStore.setFullLeft(true);\n }\n\n @Input()\n inSectionPage = true;\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxTwoColumnLayoutModule } from '../two';\nimport { DbNgxOneColumnComponent } from './one.column.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DbNgxTwoColumnLayoutModule\n ],\n declarations: [\n DbNgxOneColumnComponent\n ],\n exports: [\n DbNgxOneColumnComponent\n ],\n})\nexport class DbNgxOneColumnLayoutModule { }\n","import { NgModule } from '@angular/core';\nimport { DbNgxTwoColumnLayoutModule } from './two';\nimport { DbNgxOneColumnLayoutModule } from './one';\n\n@NgModule({\n exports: [\n DbNgxOneColumnLayoutModule,\n DbNgxTwoColumnLayoutModule\n ]\n})\nexport class DbNgxColumnLayoutModule { }\n","import { Maybe } from '@dereekb/util';\nimport { isBoolean } from 'class-validator';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport enum CompactMode {\n FULL = 'full',\n COMPACT = 'compact'\n}\n\nexport interface CompactModeOptions<T> {\n full?: T;\n compact?: T;\n}\n\nexport interface CompactModeDefaultOptions<T> extends CompactModeOptions<T> {\n defaultMode?: Maybe<CompactMode>;\n}\n\nexport type CompactModeOption = CompactMode | boolean;\n\nexport function compactModeFromInput(input: CompactMode | boolean): CompactMode {\n if (isBoolean(input)) {\n input = (input) ? CompactMode.COMPACT : CompactMode.FULL;\n }\n\n return input === CompactMode.COMPACT ? CompactMode.COMPACT : CompactMode.FULL;\n}\n\nexport function mapCompactModeObs<T>(mode$: Maybe<Observable<CompactMode>>, config: CompactModeDefaultOptions<T>): Observable<Maybe<T>> {\n const modeObs = mode$ ?? of(config.defaultMode ?? CompactMode.FULL);\n return modeObs.pipe(\n map((inputMode) => {\n const isCompact = ((inputMode ?? config.defaultMode) === CompactMode.COMPACT);\n\n if (isCompact) {\n return config.compact;\n } else {\n return config.full;\n }\n })\n );\n}","import { Injectable } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { map } from 'rxjs/operators';\nimport { CompactMode, compactModeFromInput } from './compact';\n\nexport interface CompactContextState {\n mode: CompactMode;\n}\n\n@Injectable()\nexport class CompactContextStore extends ComponentStore<CompactContextState> {\n\n constructor() {\n super({ mode: CompactMode.FULL });\n }\n\n // MARK: Accessors\n readonly mode$ = this.state$.pipe(map(x => x.mode));\n\n readonly setMode = this.updater((state, mode: CompactMode | boolean) => ({ mode: compactModeFromInput(mode) }));\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { CompactMode } from './compact';\nimport { CompactContextStore } from './compact.store';\n\n\n/**\n * CompactContextStore provider.\n */\n@Directive({\n selector: '[dbxCompact]',\n providers: [CompactContextStore],\n exportAs: 'compact',\n})\nexport class DbNgxCompactDirective {\n\n mode$ = this.compactContextStore.mode$;\n\n constructor(readonly compactContextStore: CompactContextStore) { }\n\n @Input('dbxCompact')\n set mode(mode: CompactMode | boolean) {\n this.compactContextStore.setMode(mode);\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxCompactDirective } from './compact.directive';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbNgxCompactDirective\n ],\n exports: [\n DbNgxCompactDirective\n ]\n})\nexport class DbNgxCompactLayoutModule { }\n","import { Component, Input } from '@angular/core';\n\nexport enum DbNgxDialogContentContainerWidth {\n NORMAL = 'normal',\n WIDE = 'wide'\n}\n\n/**\n * Component used to style a dialog.\n */\n@Component({\n selector: 'dbx-dialog-content',\n template: `\n <div class=\"dbx-dialog-content\" [ngClass]=\"width + '-dialog-content'\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxDialogContentComponent {\n\n @Input()\n width = DbNgxDialogContentContainerWidth.NORMAL;\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxDialogContentComponent } from './dialog.content.component';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbNgxDialogContentComponent\n ],\n exports: [\n DbNgxDialogContentComponent\n ]\n})\nexport class DbNgxDialogLayoutModule { }\n","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\n/**\n * Toolbar-like component that wraps content. Generally sits at the top of a page.\n */\n@Component({\n selector: 'dbx-flag',\n template: `\n <div class=\"dbx-flag\">\n <mat-toolbar [color]=\"color\">\n <ng-content></ng-content>\n </mat-toolbar>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxFlagComponent {\n\n @Input()\n color: ThemePalette = 'accent';\n\n}\n","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\n/**\n * Pre-configured dbx-flag prompt to do something.\n */\n@Component({\n selector: 'dbx-flag-prompt',\n template: `\n <dbx-flag [color]=\"color\">\n <span class=\"dbx-flag-prompt\">{{ text }}</span>\n <span class=\"dbx-flag-spacer\"></span>\n <ng-content></ng-content>\n </dbx-flag>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxFlagPromptComponent {\n\n @Input()\n color: ThemePalette = 'accent';\n\n @Input()\n text?: string;\n\n}\n","import { MatToolbarModule } from '@angular/material/toolbar';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxFlagComponent } from './flag.component';\nimport { DbNgxFlagPromptComponent } from './flag.prompt.component';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule,\n MatToolbarModule\n ],\n declarations: [\n DbNgxFlagComponent,\n DbNgxFlagPromptComponent\n ],\n exports: [\n DbNgxFlagComponent,\n DbNgxFlagPromptComponent\n ]\n})\nexport class DbNgxFlagLayoutModule { }\n","import { Component, Input } from '@angular/core';\n\n/**\n * Section piece that puts an icon on the left, and arbitrary content on the right with a header.\n */\n@Component({\n selector: 'dbx-icon-item',\n template: `\n <div class=\"dbx-icon-item\">\n <div class=\"left\">\n <mat-icon>{{ icon }}</mat-icon>\n </div>\n <div class=\"right\">\n <h3 *ngIf=\"header\" class=\"dbx-icon-item-header\">{{ header }}</h3>\n <div class=\"right-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `\n})\nexport class DbNgxIconItemComponent {\n\n @Input()\n icon?: string;\n\n @Input()\n header?: string;\n\n}\n","import { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxIconItemComponent } from './item.icon.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n DbNgxIconItemComponent\n ],\n exports: [\n DbNgxIconItemComponent\n ]\n})\nexport class DbNgxItemLayoutModule { }\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that is centered for use within an empty list.\n */\n@Component({\n selector: 'dbx-list-empty-content',\n template: `\n <div class=\"dbx-list-empty-content\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxListEmptyContentComponent { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxListEmptyContentComponent } from './list.empty.component';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbNgxListEmptyContentComponent\n ],\n exports: [\n DbNgxListEmptyContentComponent\n ]\n})\nexport class DbNgxListLayoutModule { }\n","import { Component, Input } from '@angular/core';\nimport { ClickableAnchor } from '@dereekb/dbx-core';\n\n/**\n * Component used to wrap sectional content on an elevated box that is clickable.\n */\n@Component({\n selector: 'dbx-section-box-anchor',\n template: `\n <dbx-anchor [anchor]=\"anchor\" [disabled]=\"disabled\">\n <div matRipple [matRippleDisabled]=\"disabled\" class=\"dbx-section-box\">\n <ng-content></ng-content>\n </div>\n </dbx-anchor>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxSectionBoxAnchorComponent {\n\n @Input()\n anchor?: ClickableAnchor;\n\n @Input()\n disabled: boolean = false;\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component used to wrap sectional content on an elevated box.\n */\n@Component({\n selector: 'dbx-section-box',\n template: `\n <div class=\"dbx-section-box\" [ngClass]=\"(elevated) ? 'dbx-section-elevated' : ''\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxSectionBoxComponent {\n\n @Input()\n elevated = true;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Component used to format content on a page within a section.\n */\n@Component({\n selector: 'dbx-section',\n template: `\n <div class=\"dbx-section\">\n <div class=\"dbx-section-header\">\n <div class=\"dbx-section-header-content\">\n <h2 class=\"dbx-section-header-content-title\"><mat-icon *ngIf=\"icon\">{{icon}}</mat-icon><span class=\"title-text\">{{ header }}</span></h2>\n <span class=\"spacer\"></span>\n <ng-content select=\"[sectionHeader]\"></ng-content>\n </div>\n <p *ngIf=\"hint\" class=\"dbx-section-hint\">{{ hint }}</p>\n </div>\n <div class=\"dbx-section-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxSectionComponent {\n\n @Input()\n header?: Maybe<string>;\n\n @Input()\n icon?: Maybe<string>;\n\n @Input()\n hint?: Maybe<string>;\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component used to elevate content.\n */\n@Component({\n selector: 'dbx-section-elevated',\n template: `\n <div class=\"dbx-section-elevated\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxSectionElevatedComponent { }\n","import { OnDestroy } from '@angular/core';\nimport { Component, Input, EventEmitter, Output } from '@angular/core';\nimport { DbNgxSectionComponent } from './section.component';\n\n/**\n * Component used to format content that displays an intro until a button is pressed.\n */\n@Component({\n selector: 'dbx-intro-action-section',\n template: `\n <div class=\"dbx-intro-action-section\" [ngSwitch]=\"showIntro\">\n <div *ngSwitchCase=\"true\" class=\"dbx-intro-action-section-intro\">\n <p>{{ hint }}</p>\n <div>\n <ng-content select=\"[info]\"></ng-content>\n </div>\n <div>\n <button mat-raised-button color=\"accent\" (click)=\"actionClicked()\">{{ action }}</button>\n </div>\n </div>\n <ng-container *ngSwitchCase=\"false\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxIntroActionSectionComponent extends DbNgxSectionComponent implements OnDestroy {\n\n @Output()\n showAction = new EventEmitter<void>();\n\n @Input()\n showIntro?: boolean;\n\n @Input()\n action?: string;\n\n ngOnDestroy() {\n this.showAction.complete();\n }\n\n actionClicked() {\n this.showAction.next();\n }\n\n}","import { Component, Input } from '@angular/core';\nimport { DbNgxSectionComponent } from './section.component';\n\n/**\n * Component used to format content on a page within a section.\n */\n@Component({\n selector: 'dbx-subsection',\n template: `\n <div class=\"dbx-subsection\">\n <h3>{{ header }}</h3>\n <p class=\"dbx-section-hint\">{{ hint }}</p>\n <div class=\"dbx-section-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxSubSectionComponent extends DbNgxSectionComponent {}","import { Component, Input } from '@angular/core';\n\n/**\n * Component used to style a page that is made up of app sections.\n */\n@Component({\n selector: 'dbx-section-page',\n template: `\n <div class=\"dbx-section-page\">\n <div class=\"dbx-section-header\">\n <div class=\"dbx-section-header-content\">\n <h1 class=\"dbx-section-header-content-title\"><mat-icon *ngIf=\"icon\">{{icon}}</mat-icon><span class=\"title-text\">{{ header }}</span></h1>\n <span class=\"spacer\"></span>\n <ng-content select=\"[sectionHeader]\"></ng-content>\n </div>\n </div>\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbNgxSectionPageComponent {\n\n @Input()\n header?: string;\n\n @Input()\n icon?: string;\n\n}\n","import { DbNgxAnchorModule } from '../../router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxSectionComponent } from './section.component';\nimport { DbNgxSubSectionComponent } from './subsection.component';\nimport { DbNgxSectionBoxComponent } from './section.box.component';\nimport { DbNgxSectionPageComponent } from './section.page.component';\nimport { DbNgxSectionElevatedComponent } from './section.elevated.component';\nimport { DbNgxSectionBoxAnchorComponent } from './section.box.anchor.component';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DbNgxIntroActionSectionComponent } from './section.intro.component';\n\n/**\n * Module for container-type components.\n */\n@NgModule({\n imports: [\n CommonModule,\n DbNgxAnchorModule,\n MatButtonModule,\n MatRippleModule,\n MatIconModule\n ],\n declarations: [\n DbNgxSectionPageComponent,\n DbNgxSectionBoxComponent,\n DbNgxSectionBoxAnchorComponent,\n DbNgxSectionElevatedComponent,\n DbNgxSectionComponent,\n DbNgxSubSectionComponent,\n DbNgxIntroActionSectionComponent\n ],\n exports: [\n DbNgxSectionPageComponent,\n DbNgxSectionBoxComponent,\n DbNgxSectionBoxAnchorComponent,\n DbNgxSectionElevatedComponent,\n DbNgxSectionComponent,\n DbNgxSubSectionComponent,\n DbNgxIntroActionSectionComponent\n ]\n})\nexport class DbNgxSectionLayoutModule { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dbx-step',\n templateUrl: './step.component.html',\n // TODO: styleUrls: ['./step.scss']\n})\nexport class DbNgxStepComponent {\n\n @Input()\n done?: boolean;\n\n @Input()\n step?: number;\n\n @Input()\n text?: string;\n\n @Input()\n hint?: string;\n\n}\n","<div class=\"step-section\" [ngClass]=\"(done) ? 'done' : ''\">\n <div class=\"step-section-header\">\n <span class=\"step\">{{ step }}.</span>\n <mat-icon class=\"done-check\" *ngIf=\"done\">done</mat-icon>\n <span class=\"text\">{{ text }}</span>\n <p *ngIf=\"hint\" class=\"hint\">{{ hint }}</p>\n </div>\n <div class=\"step-section-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxStepComponent } from './step.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n DbNgxStepComponent\n ],\n exports: [\n DbNgxStepComponent\n ],\n})\nexport class DbNgxStepLayoutModule { }\n","import { NgModule } from '@angular/core';\nimport { DbNgxSectionLayoutModule } from './section/section.layout.module';\nimport { DbNgxListLayoutModule } from './list/list.layout.module';\nimport { DbNgxItemLayoutModule } from './item/item.layout.module';\nimport { DbNgxFlagLayoutModule } from './flag/flag.layout.module';\nimport { DbNgxDialogLayoutModule } from './dialog/dialog.layout.module';\nimport { DbNgxContentLayoutModule } from './content/content.layout.module';\nimport { DbNgxColumnLayoutModule } from './column/column.layout.module';\nimport { DbNgxCardBoxLayoutModule } from './card/card.box.layout.module';\nimport { DbNgxBlockLayoutModule } from './block/block.layout.module';\nimport { DbNgxCompactLayoutModule } from './compact/compact.layout.module';\nimport { DbNgxStepLayoutModule } from './step/step.layout.module';\n\n@NgModule({\n exports: [\n DbNgxBlockLayoutModule,\n DbNgxCardBoxLayoutModule,\n DbNgxColumnLayoutModule,\n DbNgxCompactLayoutModule,\n DbNgxContentLayoutModule,\n DbNgxDialogLayoutModule,\n DbNgxFlagLayoutModule,\n DbNgxItemLayoutModule,\n DbNgxListLayoutModule,\n DbNgxSectionLayoutModule,\n DbNgxStepLayoutModule\n ],\n})\nexport class DbNgxLayoutModule { }\n","import { Maybe } from \"@dereekb/util\";\nimport { Observable } from \"rxjs\";\n\nexport type DbNgxPopoverKey = string;\n\nexport abstract class DbNgxPopoverController<I = any, O = any> {\n abstract readonly key: DbNgxPopoverKey;\n abstract readonly data?: Maybe<I>;\n abstract readonly closing$: Observable<boolean>;\n /**\n * Signals for the popover to close.\n */\n abstract close(): void;\n /**\n * Closes the popover and returns the input value.\n */\n abstract return(value?: O): void;\n}\n","import { DbNgxPopoverKey, DbNgxPopoverController } from './popover';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Used for coordinating popovers and closing/replacing existing ones when a new popover of the same name appears.\n */\n@Injectable()\nexport class DbNgxPopoverCoordinatorService {\n\n private _popovers = new BehaviorSubject<Map<DbNgxPopoverKey, DbNgxPopoverController>>(new Map());\n readonly popovers$ = this._popovers.asObservable();\n\n get popovers(): Map<DbNgxPopoverKey, DbNgxPopoverController> {\n return this._popovers.value;\n }\n\n public addPopover(popover: DbNgxPopoverController): void {\n const key = popover.key;\n\n if (key) {\n this.removePopover(key);\n this._popovers.value.set(key, popover);\n this._popovers.next(this.popovers);\n }\n }\n\n public removePopover(key: DbNgxPopoverKey, popover?: DbNgxPopoverController): void {\n if (key) {\n const existing = this.popovers.get(key);\n\n // Remove if there is one existing, and if popover is provided it is the same popover.\n if (existing && (!popover || popover === existing)) {\n existing.close();\n this._popovers.value.delete(key);\n this._popovers.next(this.popovers);\n }\n }\n }\n\n}\n","import { DbNgxPopoverController } from './popover';\nimport { Component, OnInit, OnDestroy } from '@angular/core';\nimport { DbNgxPopoverCoordinatorService } from './popover.coordinator.service';\nimport { delay, map, shareReplay } from 'rxjs/operators';\n\n/**\n * Used for coordinating popovers and closing/replacing existing ones when a new popover of the same name appears.\n */\n@Component({\n selector: 'dbx-popover-coordinator',\n template: `\n <ng-container *ngIf=\"show$ | async\">\n <ng-content></ng-content>\n </ng-container>\n `,\n // TODO: styleUrls: ['./popover.scss']\n})\nexport class DbNgxPopoverCoordinatorComponent implements OnInit, OnDestroy {\n\n readonly isPopoverForKey$ = this.service.popovers$.pipe(map(x => x.get(this.popover.key) === this.popover), shareReplay(1));\n readonly show$ = this.isPopoverForKey$.pipe(delay(0));\n\n constructor(private readonly service: DbNgxPopoverCoordinatorService, private readonly popover: DbNgxPopoverController) { }\n\n ngOnInit(): void {\n this.service.addPopover(this.popover);\n }\n\n ngOnDestroy(): void {\n this.service.removePopover(this.popover.key, this.popover);\n }\n\n}\n","import { Input, OnDestroy, Output, EventEmitter, HostListener, Directive } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\n@Directive({\n selector: '[dbxWindowKeyDownListener]'\n})\nexport class DbNgxWindowKeyDownListenerDirective implements OnDestroy {\n\n private _keysFilter?: Maybe<Set<string>>;\n\n @Input()\n appWindowKeyDownEnabled: boolean = true;\n\n @Output('dbxWindowKeyDownListener')\n keyPressed = new EventEmitter<KeyboardEvent>();\n\n @Input('appWindowKeyDownFilter')\n set appWindowKeyDownFilter(filterOnKeys: string[]) {\n let filter: Maybe<Set<string>>;\n\n if (filterOnKeys) {\n filter = new Set(filterOnKeys);\n }\n\n this._keysFilter = filter;\n }\n\n ngOnDestroy(): void {\n this.keyPressed.complete();\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.appWindowKeyDownEnabled !== false) {\n if (!this._keysFilter || this._keysFilter.has(event.key)) {\n this.keyPressed.emit(event);\n }\n }\n }\n\n}\n","import { Component, ComponentFactoryResolver, NgZone, Type, ViewChild, ViewContainerRef, OnInit, OnDestroy, ComponentRef, ElementRef } from '@angular/core';\nimport { NgOverlayContainerConfiguration, NgPopoverRef } from 'ng-overlay-container';\nimport { AbstractTransitionWatcherDirective, DbNgxRouterTransitionService } from '@dereekb/dbx-core';\nimport { Subject } from 'rxjs';\nimport { PopoverPositionStrategy } from './popover.position.strategy';\nimport { filter, first, map, shareReplay, startWith } from 'rxjs/operators';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { LockSet } from '@dereekb/rxjs';\nimport { CompactContextStore, CompactMode } from '../../layout';\nimport { Maybe } from '@dereekb/util';\nimport { DbNgxPopoverController, DbNgxPopoverKey } from './popover';\n\nexport abstract class DbNgxPopoverComponentController<I, O> extends DbNgxPopoverController<I, O> {\n getClosingValueFn?: (value?: I) => Promise<O>;\n}\n\nexport interface DbNgxPopoverComponentConfig<I, O, T> {\n /**\n * Key used for uniquely identifying a limited instance.\n *\n * Only one popover should exist at a time given a certain key.\n */\n key: DbNgxPopoverKey;\n /**\n * Origin element to position on.\n */\n origin: ElementRef;\n /**\n * Whether or not to close if a transition occurs.\n */\n closeOnTransition?: boolean;\n /**\n * Whether or not to dismiss when the escape button is pressed.\n * \n * False by default.\n */\n closeOnEscape?: boolean;\n /**\n * Component to inject into the popover.\n */\n componentClass: Type<T>;\n /**\n * Data available to the popover.\n */\n data?: Maybe<I>;\n init?: (component: T, controller: DbNgxPopoverController<I, O>) => void;\n}\n\nexport interface FullDbNgxPopoverComponentConfig<I, O, T> extends DbNgxPopoverComponentConfig<I, O, T> {\n configuration: NgOverlayContainerConfiguration;\n}\n\n/**\n * Popover component.\n */\n@Component({\n template: `\n <dbx-popover-coordinator (dbxWindowKeyDownListener)=\"handleKeydown($event)\" [appWindowKeyDownFilter]=\"triggerCloseKeys\">\n <div class=\"dbx-popover-component\">\n <ng-template #content></ng-template>\n </div>\n </dbx-popover-coordinator>\n `,\n // TODO: styleUrls: ['./popover.scss'],\n providers: [{\n provide: DbNgxPopoverController,\n useExisting: DbNgxPopoverComponent\n }, {\n provide: CompactContextStore\n }]\n})\nexport class DbNgxPopoverComponent<I = any, O = any, T = any> extends AbstractTransitionWatcherDirective implements DbNgxPopoverController<I, O>, OnInit, OnDestroy {\n\n readonly lockSet = new LockSet();\n\n @ViewChild('content', { static: true, read: ViewContainerRef })\n private _content!: ViewContainerRef;\n private _componentRef?: ComponentRef<T>;\n\n private _startedClosing = false;\n private readonly _closing = new Subject<void>();\n\n private _triggerCloseKeys: string[] = [];\n\n readonly isClosing$ = this._closing.pipe(first(), map(x => true), startWith(false), shareReplay(1));\n readonly closing$ = this.isClosing$.pipe(filter(x => x));\n\n getClosingValueFn?: (value?: I) => Promise<O>;\n\n constructor(\n private popoverRef: NgPopoverRef<FullDbNgxPopoverComponentConfig<I, O, T>, O>,\n private compactContextState: CompactContextStore,\n private resolver: ComponentFactoryResolver,\n dbNgxRouterTransitionService: DbNgxRouterTransitionService,\n ngZone: NgZone) {\n super(dbNgxRouterTransitionService, ngZone);\n\n // Override Close to properly signal to listeners when a close is occuring.\n const originalClose = this.popoverRef.close;\n this.popoverRef.close = (x) => {\n if (!this._startedClosing) {\n this.lockSet.lockForSeconds(1);\n this._startedClosing = true;\n this.close();\n originalClose.call(this.popoverRef, x);\n }\n };\n\n const overlay = (popoverRef as any)._overlay as Overlay;\n const elementRef = this.config.origin;\n const configuration = this.config.configuration;\n\n this.compactContextState.setMode(CompactMode.COMPACT);\n const position = PopoverPositionStrategy.make(overlay, elementRef, configuration);\n this.popoverRef.overlay.updatePositionStrategy(position);\n }\n\n get config(): FullDbNgxPopoverComponentConfig<I, O, T> {\n return this.popoverRef.data;\n }\n\n get key(): DbNgxPopoverKey {\n return this.config.key;\n }\n\n get data(): Maybe<I> {\n return this.config.data;\n }\n\n get triggerCloseKeys(): string[] {\n return this._triggerCloseKeys;\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this._content.clear();\n const componentClass = this.config.componentClass;\n const factory = this.resolver.resolveComponentFactory(componentClass);\n this._componentRef = this._content.createComponent(factory);\n\n if (this.config.init) {\n this.config.init(this._componentRef.instance, this);\n }\n\n if (this.config.closeOnEscape) {\n this._triggerCloseKeys = ['Escape'];\n }\n }\n\n override ngOnDestroy(): void {\n this.lockSet.destroyOnNextUnlock(() => {\n super.ngOnDestroy();\n this._closing.complete();\n });\n }\n\n protected updateForSuccessfulTransition(): void {\n if (this.config.closeOnTransition !== false) {\n this.close();\n }\n }\n\n // Popover Controls\n public close(): void {\n if (!this._startedClosing && this.getClosingValueFn) {\n this.getClosingValueFn().then((x) => {\n this.return(x);\n }, () => {\n this.return();\n });\n } else {\n this.return();\n }\n }\n\n public return(value?: O): void {\n this._closing.next();\n this.popoverRef.close(value);\n }\n\n // Keypresses\n handleKeydown(key: KeyboardEvent) {\n this.close();\n }\n\n}\n","import { Directive } from '@angular/core';\nimport { DbNgxPopoverComponent } from './popover.component';\n\n/**\n * Abstract popover directive.\n */\n@Directive()\nexport abstract class AbstractPopoverDirective<I = any, O = any, T = any> {\n\n constructor(public readonly popover: DbNgxPopoverComponent<I, O, T>) { }\n\n closePopover(): void {\n this.popover.close();\n }\n\n returnAndClosePopover(value: O): void {\n this.popover.return(value);\n }\n\n}\n","import { OnDestroy } from '@angular/core';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { Directive, EventEmitter, Output } from '@angular/core';\nimport { NgPopoverCloseEvent, NgPopoverRef } from 'ng-overlay-container';\n\n/**\n * Abstract class for showing and handling a popover ref.\n */\n@Directive()\nexport abstract class AbstractPopoverRefDirective<T = any, R = any> extends AbstractSubscriptionDirective {\n\n private _popoverRef?: NgPopoverRef<T, R>;\n\n showPopover(): void {\n if (!this._popoverRef) {\n this._showPopoverRef();\n }\n }\n\n private _showPopoverRef(): void {\n this._popoverRef = this._makePopoverRef();\n this._afterOpened(this._popoverRef);\n this.sub = this._popoverRef.afterClosed$.subscribe((x) => {\n this._afterClosed(x);\n this._popoverRef = undefined;\n });\n }\n\n protected abstract _makePopoverRef(): NgPopoverRef<T, R>;\n\n protected _afterOpened(popoverRef: NgPopoverRef<T, R>): void {\n // Do nothing.\n }\n\n protected _afterClosed(value: NgPopoverCloseEvent<R>): void {\n // Do nothing.\n }\n\n}\n\n/**\n * {@link AbstractPopoverRefDirective} extension that includes open/closed events.\n */\n@Directive()\nexport abstract class AbstractPopoverRefWithEventsDirective<T = any, R = any> extends AbstractPopoverRefDirective<T, R> implements OnDestroy {\n\n @Output()\n readonly popoverOpened = new EventEmitter<NgPopoverRef<T, R>>();\n\n @Output()\n readonly popoverClosed = new EventEmitter<NgPopoverCloseEvent<R>>();\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.popoverClosed.complete();\n this.popoverOpened.complete();\n }\n\n protected override _afterOpened(popoverRef: NgPopoverRef<T, R>): void {\n this.popoverOpened.next(popoverRef);\n }\n\n protected override _afterClosed(event: NgPopoverCloseEvent<R>): void {\n this.popoverClosed.next(event);\n }\n\n}\n","import { BehaviorSubject, Observable, of } from 'rxjs';\nimport { Directive, OnInit, OnDestroy, Input, ElementRef } from '@angular/core';\nimport { NgPopoverCloseEvent, NgPopoverRef } from 'ng-overlay-container';\nimport { AbstractPopoverRefWithEventsDirective } from './abstract.popover.ref.directive';\nimport { ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\nimport { filterMaybe, SubscriptionObject } from '@dereekb/rxjs';\nimport { first, switchMap } from 'rxjs/operators';\nimport { Maybe } from '@dereekb/util';\n\nexport interface DbNgxPopoverActionFnParam {\n origin: ElementRef;\n}\n\nexport type DbNgxPopoverActionFn<T = object> = (params: DbNgxPopoverActionFnParam) => NgPopoverRef<any, T>;\nexport type DbNgxPopoverActionModifiedFn<T = any> = (value: T) => Observable<boolean>;\n\n/**\n * Action directive that is used to trigger/display a popover,\n * then watches that popover for a value.\n *\n * The value is passed to the isModified function (ifProvided), and if that returns true it will \n */\n@Directive({\n exportAs: 'popoverAction',\n selector: '[dbxPopoverAction]'\n})\nexport class DbNgxPopoverActionDirective<T = object> extends AbstractPopoverRefWithEventsDirective<any, T> implements OnInit, OnDestroy {\n\n @Input('dbxPopoverAction')\n fn?: DbNgxPopoverActionFn<T>;\n\n @Input()\n appPopoverActionModified?: DbNgxPopoverActionModifiedFn<T>;\n\n private _popoverValue = new BehaviorSubject<Maybe<T>>(undefined);\n\n private _triggeredSub = new SubscriptionObject();\n private _isModifiedSub = new SubscriptionObject();\n\n constructor(\n readonly elementRef: ElementRef,\n readonly source: ActionContextStoreSourceInstance<T, any>\n ) {\n super();\n }\n\n ngOnInit(): void {\n\n // Used for triggering isModified on the action.\n this._isModifiedSub.subscription = this._popoverValue.pipe(\n filterMaybe(),\n switchMap((value) => {\n let isModifiedObs: Observable<boolean>;\n\n if (this.appPopoverActionModified) {\n isModifiedObs = this.appPopoverActionModified(value).pipe(first());\n } else {\n isModifiedObs = of(true); // Considered modified\n }\n\n return isModifiedObs;\n })\n ).subscribe((isModified) => {\n this.source.setIsModified(isModified);\n });\n\n // Ready the value after the source is triggered.\n this._triggeredSub.subscription = this.source.triggered$.pipe(\n switchMap(() => {\n return this._popoverValue.pipe(\n filterMaybe(),\n first()\n );\n })\n ).subscribe((x) => {\n this.source.readyValue(x);\n });\n }\n\n override ngOnDestroy(): void {\n this.source.lockSet.onNextUnlock(() => {\n super.ngOnDestroy();\n this._triggeredSub.destroy();\n this._popoverValue.complete();\n });\n }\n\n protected _makePopoverRef(): NgPopoverRef<any, T> {\n const origin = this.elementRef;\n\n if (!this.fn) {\n throw new Error('popoverAction has no function provided to it yet.');\n }\n\n return this.fn({\n origin\n });\n }\n\n protected override _afterClosed(event: NgPopoverCloseEvent<T>): void {\n super._afterClosed(event);\n const { data } = event;\n\n if (data != null) {\n this._popoverValue.next(data);\n }\n }\n\n}\n","import { Directive, Host, NgZone } from '@angular/core';\nimport { DbNgxButtonDirective, DbNgxActionButtonDirective, ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\nimport { DbNgxPopoverActionDirective } from './popover.action.directive';\n\n/**\n * Action directive that is used to link an DbNgxButton to an DbNgxPopoverActionDirective.\n */\n@Directive({\n selector: '[dbxPopoverActionButton]'\n})\nexport class DbNgxPopoverActionButtonDirective extends DbNgxActionButtonDirective {\n\n constructor(\n @Host() button: DbNgxButtonDirective,\n source: ActionContextStoreSourceInstance,\n ngZone: NgZone,\n readonly appPopoverActionDirective: DbNgxPopoverActionDirective) {\n super(button, source, ngZone);\n }\n\n protected override _buttonClicked(): void {\n this.appPopoverActionDirective.showPopover();\n }\n\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { Component, Input } from '@angular/core';\nimport { ResizedEvent } from 'angular-resize-event';\nimport { throttleTime } from 'rxjs/operators';\n\n/**\n * Popover content wrapper component.\n */\n@Component({\n selector: 'dbx-popover-content',\n template: `\n <div class=\"dbx-popover-content\" (resized)=\"onResized($event)\" [style.--popoverh]=\"height$ | async\">\n <ng-content select=\"[controls]\"></ng-content>\n <div class=\"dbx-popover-content-container\" [ngClass]=\"{ 'dbx-popover-content-container-scrollable': scrollable }\">\n <ng-content></ng-content>\n </div>\n </div>\n`,\n // TODO: styleUrls: ['./popover.scss']\n})\nexport class DbNgxPopoverContentComponent implements OnDestroy {\n\n private readonly _height = new BehaviorSubject<string>('');\n readonly height$ = this._height.asObservable().pipe(throttleTime(100, undefined, { leading: true, trailing: true }));\n\n @Input()\n scrollable = false;\n\n @Input()\n hasControls = false;\n\n @Input()\n hasHeader = false;\n\n onResized(event: ResizedEvent): void {\n this._height.next(`${event.newRect.height}px`);\n }\n\n ngOnDestroy(): void {\n this._height.complete();\n }\n\n}\n","import { Component, Optional } from '@angular/core';\nimport { DbNgxPopoverContentComponent } from './popover.content.component';\n\n/**\n * Popover Controls\n */\n@Component({\n selector: 'dbx-popover-controls',\n template: `\n <div class=\"dbx-popover-controls\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./popover.scss']\n})\nexport class DbNgxPopoverControlsComponent {\n\n constructor(@Optional() appPopoverContentComponent: DbNgxPopoverContentComponent) {\n if (appPopoverContentComponent) {\n appPopoverContentComponent.hasControls = true;\n }\n }\n\n}\n","import { Component, Input, Optional } from '@angular/core';\nimport { DbNgxPopoverContentComponent } from './popover.content.component';\n\n/**\n * Component used to format a header for a popover.\n */\n@Component({\n selector: 'dbx-popover-header',\n template: `\n <div class=\"dbx-popover-header\">\n <div class=\"dbx-popover-header-content\">\n <h3><mat-icon *ngIf=\"icon\" class=\"dbx-icon-spacing\">{{ icon }}</mat-icon> {{ header }}</h3>\n <span class=\"spacer\"></span>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-divider></mat-divider>\n `,\n // TODO: styleUrls: ['./popover.scss']\n})\nexport class DbNgxPopoverHeaderComponent {\n\n @Input()\n header?: string;\n\n @Input()\n icon?: string;\n\n constructor(@Optional() appPopoverContentComponent: DbNgxPopoverContentComponent) {\n if (appPopoverContentComponent) {\n appPopoverContentComponent.hasHeader = true;\n }\n }\n\n}\n","import { DbNgxPopoverComponent, DbNgxPopoverComponentConfig, FullDbNgxPopoverComponentConfig } from './popover.component';\nimport { Injectable, Injector } from '@angular/core';\nimport { NgOverlayContainerConfiguration, NgOverlayContainerService, NgPopoverRef } from 'ng-overlay-container';\nimport { Overlay } from '@angular/cdk/overlay';\n\nexport interface DbNgxPopoverConfig<I, O, T> extends DbNgxPopoverComponentConfig<I, O, T> {\n injector?: Injector;\n height?: string;\n width?: string;\n}\n\n/**\n * Used for displaying a popover.\n */\n@Injectable()\nexport class DbNgxPopoverService {\n\n private _overlayContainerService: NgOverlayContainerService;\n\n constructor(private _overlay: Overlay, private _injector: Injector) {\n this._overlayContainerService = new NgOverlayContainerService(this._overlay, this._injector);\n }\n\n open<I, O, T>(config: DbNgxPopoverConfig<I, O, T>): NgPopoverRef<DbNgxPopoverComponentConfig<I, O, T>, O> {\n const service = (config.injector) ? new NgOverlayContainerService(this._overlay, config.injector) : this._overlayContainerService;\n\n const configuration: NgOverlayContainerConfiguration = {\n panelClass: 'dbx-popover-container',\n originX: 'start',\n originY: 'top',\n // TODO: Resize height/width.\n height: config.height ?? '500px',\n width: config.height ?? '400px',\n hasBackdrop: true,\n isDraggable: false,\n isResizable: false,\n disableBackdropClose: false\n };\n\n return service.open<FullDbNgxPopoverComponentConfig<I, O, T>, O>({\n content: DbNgxPopoverComponent,\n data: {\n ...config,\n configuration\n },\n configuration\n });\n }\n\n}\n","import { Component } from '@angular/core';\nimport { DbNgxPopoverContentComponent } from './popover.content.component';\n\n/**\n * Popover scrollable content wrapper component.\n */\n@Component({\n selector: 'dbx-popover-scroll-content',\n template: `\n <div class=\"dbx-popover-scroll-content\" [ngClass]=\"sizingClasses\">\n <ng-content></ng-content>\n </div>\n`,\n // TODO: styleUrls: ['./popover.scss']\n})\nexport class DbNgxPopoverScrollContentComponent {\n\n get sizingClasses(): string {\n const hasHeader = this.hasHeader;\n const hasControls = this.hasControls;\n\n const classes: string[] = [];\n\n if (hasHeader && hasControls) {\n classes.push('popover-has-controls-and-header');\n } else if (hasHeader) {\n classes.push('popover-has-header');\n } else if (hasControls) {\n classes.push('popover-has-controls');\n }\n\n return classes.join(' ');\n }\n\n get hasHeader(): boolean {\n return this.appPopoverContentComponent.hasHeader;\n }\n\n get hasControls(): boolean {\n return this.appPopoverContentComponent.hasControls;\n }\n\n constructor(readonly appPopoverContentComponent: DbNgxPopoverContentComponent) {}\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxWindowKeyDownListenerDirective } from './keydown.listener.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbNgxWindowKeyDownListenerDirective\n ],\n exports: [\n DbNgxWindowKeyDownListenerDirective\n ]\n})\nexport class DbNgxKeypressModule { }\n","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProvideDbNgxButton, AbstractDbNgxButtonDirective } from '@dereekb/dbx-core';\nimport { MatProgressButtonOptions } from 'mat-progress-buttons';\n\nexport enum DbNgxButtonDisplayType {\n RAISED,\n STROKED,\n FLAT\n}\n\n/**\n * Complex button that supports loading states.\n */\n@Component({\n selector: 'dbx-button',\n template: `\n <mat-spinner-button class=\"page-button\" (btnClick)=\"clickButton()\" [options]=\"btnOptions\"></mat-spinner-button>\n `,\n // TODO: styleUrls: ['./button.scss'],\n providers: ProvideDbNgxButton(DbNgxButtonComponent)\n})\nexport class DbNgxButtonComponent extends AbstractDbNgxButtonDirective {\n\n @Input()\n type?: DbNgxButtonDisplayType;\n\n @Input()\n get raised(): boolean {\n return this.type === DbNgxButtonDisplayType.RAISED;\n }\n\n set raised(raised: boolean) {\n if (raised) {\n this.type = DbNgxButtonDisplayType.RAISED;\n }\n }\n\n @Input()\n get stroked(): boolean {\n return this.type === DbNgxButtonDisplayType.STROKED;\n }\n\n set stroked(stroked: boolean) {\n if (stroked) {\n this.type = DbNgxButtonDisplayType.STROKED;\n }\n }\n\n @Input()\n get flat(): boolean {\n return this.type === DbNgxButtonDisplayType.FLAT;\n }\n\n set flat(flat: boolean) {\n if (flat) {\n this.type = DbNgxButtonDisplayType.FLAT;\n }\n }\n\n @Input()\n public color: ThemePalette = 'primary';\n\n public get btnOptions(): MatProgressButtonOptions {\n const buttonIcon = (this.icon) ? {\n fontIcon: this.icon\n } : undefined;\n\n return {\n fab: false,\n active: this.working,\n buttonIcon,\n customClass: 'dbx-button ' + ((buttonIcon && !this.text) ? 'dbx-button-no-text' : ''),\n // buttonIcon: icon,\n text: this.text ?? '',\n buttonColor: this.color,\n barColor: 'accent',\n raised: this.raised,\n stroked: this.stroked,\n flat: this.flat,\n mode: 'indeterminate',\n spinnerSize: 18,\n spinnerColor: 'accent', // TODO: Set spinner color to opposite of button color.\n // Only disabled if we're not working, in order to show the animation.\n disabled: !this.working && this.disabled\n };\n }\n\n}\n","import { Component } from '@angular/core';\n\n/**\n * Button spacer component.\n */\n@Component({\n selector: 'dbx-button-spacer',\n template: `<span class=\"button-spacer\"></span>`,\n // TODO: styleUrls: ['./button.scss']\n})\nexport class DbNgxButtonSpacerComponent { }\n","import { MatIconModule } from '@angular/material/icon';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressButtonsModule } from 'mat-progress-buttons';\nimport { DbNgxButtonComponent } from './button.component';\nimport { DbNgxButtonSpacerComponent } from './button.spacer.component';\nimport { BrowserModule } from '@angular/platform-browser';\n\n@NgModule({\n imports: [\n BrowserModule,\n MatIconModule,\n MatButtonModule,\n MatProgressButtonsModule\n ],\n declarations: [\n DbNgxButtonComponent,\n DbNgxButtonSpacerComponent\n ],\n exports: [\n DbNgxButtonComponent,\n DbNgxButtonSpacerComponent\n ],\n})\nexport class DbNgxButtonModule {}\n","import { Directive, Host, HostListener, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\n\nconst DEFAULT_ACTION_KEY_TRIGGER = 'enter';\n\n/**\n * Directive that triggers the action on a specific key up event.\n *\n * Events/Keys to respond to should be lowercase.\n */\n@Directive({\n selector: '[dbxActionKeyTrigger]',\n})\nexport class DbNgxActionKeyTriggerDirective<T = any, O = any> {\n\n @Input('dbxActionKeyTrigger')\n inputKey: Maybe<string>;\n\n constructor(@Host() public readonly source: ActionContextStoreSourceInstance<T, O>) { }\n\n get key(): string {\n return this.inputKey || DEFAULT_ACTION_KEY_TRIGGER;\n }\n\n @HostListener('document:keyup', ['$event'])\n onKeyupHandler(event: KeyboardEvent): void {\n if (event.key && event.key.toLowerCase() === this.key) {\n this.source.trigger();\n }\n }\n\n}\n","import { distinctUntilChanged, Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs';\nimport { Component, Inject } from '@angular/core';\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { Maybe } from '@dereekb/util';\nimport ms from 'ms';\nimport { map } from 'rxjs/operators';\nimport { ActionContextStoreSourceInstance, ActionState, DbNgxActionSnackbarComponentConfig } from '@dereekb/dbx-core';\n\n/**\n * Component for a snackbar that contains an action.\n */\n@Component({\n template: `\n <div class=\"dbx-action-snackbar\" [ngClass]=\"(snackbarStatusClass$ | async)!\">\n <ng-container [ngSwitch]=\"complete$ | async\">\n <ng-container *ngSwitchCase=\"true\">\n <div class=\"spacer\"></div>\n <dbx-button (buttonClick)=\"dismiss()\" color=\"accent\" icon=\"done\" text=\"Success\"></dbx-button>\n </ng-container>\n <ng-container *ngSwitchCase=\"false\">\n <span>{{ message }}</span>\n <div class=\"spacer\"></div>\n <dbx-action dbxActionValue [dbxActionSource]=\"actionSourceInstance\" [dbxActionSuccess]=\"dismissEarly\">\n <dbx-button dbxActionButton color=\"warn\" [text]=\"action\"></dbx-button>\n </dbx-action>\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-button (buttonClick)=\"dismiss()\" color=\"accent\" icon=\"close\"></dbx-button>\n </ng-container>\n </ng-container>\n </div>\n `,\n // TODO: styleUrls: ['./action.scss']\n})\nexport class DbNgxActionSnackbarComponent {\n\n constructor(\n readonly snackbar: MatSnackBarRef<DbNgxActionSnackbarComponent>,\n @Inject(MAT_SNACK_BAR_DATA) readonly data: DbNgxActionSnackbarComponentConfig\n ) {\n if (!data.actionSource) {\n throw new Error('No action was provided to ActionSnackbar.');\n }\n }\n\n readonly complete$ = this.actionSourceInstance.isSuccess$;\n readonly snackbarStatusClass$: Observable<string> = this.actionSourceInstance.actionState$.pipe(\n map((x) => {\n let classes = 'dbx-action-snackbar-';\n\n switch (x) {\n case ActionState.Rejected:\n classes += 'error';\n break;\n case ActionState.Success:\n classes += 'success';\n break;\n default:\n classes += 'idle';\n break;\n }\n\n return classes;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n get message(): Maybe<string> {\n return this.data.message;\n }\n\n get action(): string {\n return this.data.action;\n }\n\n get actionSourceInstance(): ActionContextStoreSourceInstance {\n return this.data.actionSource;\n }\n\n dismissEarly = (): void => {\n this.snackbar._dismissAfter(ms('3s'));\n }\n\n dismiss = (): void => {\n this.snackbar.dismiss();\n }\n\n}\n","import { Provider, Type } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { Observable } from 'rxjs';\n\nexport abstract class DbNgxPromptConfirm {\n abstract showDialog(): Observable<Maybe<boolean>>;\n}\n\nexport function ProvideDbNgxPromptConfirm<S>(sourceType: Type<S>): Provider[] {\n return [{\n provide: DbNgxPromptConfirm,\n useExisting: sourceType\n }];\n}\n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'dbx-prompt-box',\n template: `\n <div class=\"prompt-box\" [ngClass]=\"{ 'elevated': elevated, 'full-width': fullWidth, 'no-padding': noPadding }\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./prompt.scss']\n})\nexport class DbNgxPromptBoxComponent {\n\n @Input()\n elevated = true;\n\n @Input()\n fullWidth = false;\n\n @Input()\n noPadding = false;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { DbNgxPromptBoxComponent } from './prompt.box.component';\n\n/**\n * Pre-configured prompt.\n */\n@Component({\n selector: 'dbx-prompt',\n templateUrl: './prompt.component.html',\n // TODO: styleUrls: ['./prompt.scss']\n})\nexport class DbNgxPromptComponent extends DbNgxPromptBoxComponent {\n\n @Input()\n header?: Maybe<string>;\n\n @Input()\n prompt?: Maybe<string>;\n\n}\n","<dbx-prompt-box [elevated]=\"elevated\" [fullWidth]=\"fullWidth\" [noPadding]=\"noPadding\">\n <ng-content select=\"[hero]\"></ng-content>\n <dbx-subsection [header]=\"header\" [hint]=\"prompt\">\n <ng-content></ng-content>\n </dbx-subsection>\n</dbx-prompt-box>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\nexport enum DbNgxPromptConfirmTypes {\n /**\n * Dialog is for yes/no.\n */\n NORMAL = 'normal',\n /**\n * Dialog is for deleting something.\n */\n DELETE = 'delete'\n}\n\nexport interface DbNgxPromptConfirmConfig {\n type?: DbNgxPromptConfirmTypes;\n title?: string;\n prompt?: string;\n confirmText?: string;\n cancelText?: string;\n}\n\n/**\n * Displays a confirmation dialog.\n */\n@Component({\n selector: 'dbx-prompt-confirm',\n templateUrl: './prompt.confirm.component.html',\n // TODO: styleUrls: ['./prompt.scss']\n})\nexport class DbNgxPromptConfirmComponent {\n\n private _config: DbNgxPromptConfirmConfig = {};\n\n @Output()\n confirm = new EventEmitter<void>();\n\n @Output()\n cancel = new EventEmitter<void>();\n\n @Input()\n get config(): DbNgxPromptConfirmConfig {\n return this._config;\n }\n\n set config(config: Maybe<DbNgxPromptConfirmConfig>) {\n this._config = config ?? {};\n }\n\n onConfirm(): void {\n this.confirm.emit();\n }\n\n onCancel(): void {\n this.cancel.emit();\n }\n\n}\n","<dbx-prompt [header]=\"config.title\" [prompt]=\"config.prompt\" [elevated]=\"false\">\n <ng-content></ng-content>\n <button mat-stroked-button (click)=\"onConfirm()\">{{ config.confirmText || 'Confirm' }}</button>\n <dbx-button-spacer></dbx-button-spacer>\n <button mat-stroked-button color=\"warn\" (click)=\"onCancel()\">{{ config.cancelText || 'Cancel' }}</button>\n</dbx-prompt>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { AbstractDialogDirective } from '../../interaction/dialog/abstract.dialog.directive';\nimport { DbNgxPromptConfirmConfig } from './prompt.confirm.component';\n\n@Component({\n template: `\n <dbx-prompt-confirm [config]=\"config\" (confirm)=\"confirm()\" (cancel)=\"cancel()\"></dbx-prompt-confirm>\n `\n})\nexport class DbNgxPromptConfirmDialogComponent extends AbstractDialogDirective implements OnInit {\n\n @Input()\n config?: Maybe<DbNgxPromptConfirmConfig>;\n\n confirm(): void {\n this.dialogRef.close(true);\n }\n\n cancel(): void {\n this.dialogRef.close(false);\n }\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Maybe } from '@dereekb/util';\nimport { Observable, from } from 'rxjs';\nimport { DbNgxPromptConfirm, ProvideDbNgxPromptConfirm } from './prompt.confirm';\nimport { DbNgxPromptConfirmConfig, DbNgxPromptConfirmTypes } from './prompt.confirm.component';\nimport { DbNgxPromptConfirmDialogComponent } from './prompt.confirm.dialog.component';\n\n// MARK: Abstract\n/**\n * Directive that when triggered shows a dialog to accept or reject.\n */\n@Directive()\nexport abstract class AbstractPromptConfirmDirective implements DbNgxPromptConfirm {\n\n private static readonly DEFAULT_CONFIG = {\n title: 'Confirm?',\n type: DbNgxPromptConfirmTypes.NORMAL\n };\n\n config?: DbNgxPromptConfirmConfig;\n\n private _dialogRef?: MatDialogRef<DbNgxPromptConfirmDialogComponent, boolean>;\n private _dialogPromise?: Promise<boolean>;\n\n constructor(protected readonly dialog: MatDialog) { }\n\n showDialog(): Observable<boolean> {\n if (!this._dialogPromise) {\n this._dialogPromise = new Promise<boolean>((resolve) => {\n this._dialogRef = this._makeDialog();\n this._dialogRef.afterClosed().subscribe((result: Maybe<boolean>) => {\n this._dialogRef = undefined;\n this._dialogPromise = undefined;\n resolve(this._handleDialogResult(Boolean(result)));\n });\n });\n }\n\n return from(this._dialogPromise);\n }\n\n protected _makeDialog(): MatDialogRef<DbNgxPromptConfirmDialogComponent, boolean> {\n const dialogRef = this.dialog.open(DbNgxPromptConfirmDialogComponent);\n dialogRef.componentInstance.config = this.config ?? AbstractPromptConfirmDirective.DEFAULT_CONFIG;\n return dialogRef;\n }\n\n protected _handleDialogResult(result: boolean): boolean {\n return result;\n }\n\n}\n\n// MARK: Directive\n/**\n * Directive that shows a confirmation screen.\n */\n@Directive({\n selector: '[dbxPromptConfirm]',\n providers: ProvideDbNgxPromptConfirm(DbNgxPromptConfirmDirective)\n})\nexport class DbNgxPromptConfirmDirective<T, O> extends AbstractPromptConfirmDirective {\n\n @Input('dbxPromptConfirm')\n override config?: DbNgxPromptConfirmConfig;\n\n constructor(dialog: MatDialog) {\n super(dialog);\n }\n\n}\n","import { Directive, Host, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractPromptConfirmDirective } from '../interaction/prompt/prompt.confirm.directive';\nimport { DbNgxPromptConfirmConfig } from '../interaction/prompt/prompt.confirm.component';\nimport { SubscriptionObject } from '@dereekb/rxjs';\nimport { ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\n\n/**\n * Directive that when triggered shows a dialog to accept or reject.\n *\n * This only works to pass a ready value or reject through, not to work with a button.\n * For button usage, use an appPromptConfirmButton directive.\n */\n@Directive({\n selector: '[dbxActionConfirm]'\n})\nexport class DbNgxActionConfirmDirective<T, O> extends AbstractPromptConfirmDirective implements OnInit, OnDestroy {\n\n @Input('dbxActionConfirm')\n override config?: DbNgxPromptConfirmConfig;\n\n private _sourceSubscription = new SubscriptionObject();\n\n constructor(@Host() public readonly source: ActionContextStoreSourceInstance<T, O>, dialog: MatDialog) {\n super(dialog);\n }\n\n ngOnInit(): void {\n this._sourceSubscription.subscription = this.source.triggered$.subscribe(() => {\n this.showDialog();\n });\n }\n\n ngOnDestroy(): void {\n this._sourceSubscription.destroy();\n }\n\n protected override _handleDialogResult(result: boolean): boolean {\n if (result) {\n this.source.readyValue(null);\n } else {\n this.source.reject(undefined);\n }\n\n return result;\n }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-prompt-page',\n template: `\n <div class=\"prompt-page\">\n <dbx-full-width-content-container>\n <div class=\"prompt-page-content-wrap\">\n <ng-content></ng-content>\n </div>\n </dbx-full-width-content-container>\n </div>\n `,\n // TODO: styleUrls: ['./prompt.scss']\n})\nexport class DbNgxPromptPageComponent { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dbx-hint',\n template: `<p class=\"dbx-hint\"><ng-content></ng-content></p>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxHintComponent {}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Acts as a divider between content and centers a label within a background.\n */\n@Component({\n selector: 'dbx-label-bar',\n template: `\n <div class=\"dbx-label-bar dbx-hint mat-small dbx-text-center\">\n <mat-icon class=\"button-spacer\" *ngIf=\"icon\">{{ icon }}</mat-icon>\n <span *ngIf=\"text\">{{ text }}</span>\n </div>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxLabelBarComponent {\n\n @Input()\n text?: string;\n\n @Input()\n icon?: string;\n\n}\n","import { Component } from '@angular/core';\n\n/**\n * DbNgx field label.\n */\n@Component({\n selector: 'dbx-label',\n template: `<div class=\"dbx-label mat-small\"><ng-content></ng-content></div>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxLabelComponent {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ClickableAnchor } from '@dereekb/dbx-core';\n\n@Component({\n selector: 'dbx-link',\n template: `<span class=\"dbx-link\"><dbx-anchor [anchor]=\"anchor\"><ng-content></ng-content></dbx-anchor></span>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxLinkComponent {\n\n @Input()\n anchor?: ClickableAnchor;\n\n @Input()\n set ref(ref: string) {\n if (ref) {\n this.anchor = {\n ref\n };\n }\n }\n\n @Input()\n set href(href: string) {\n if (href) {\n this.anchor = {\n url: href\n };\n }\n }\n\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs/operators';\nimport * as linkifyStr from 'linkify-string';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Used to \"linkify\" the input text.\n */\n@Component({\n selector: 'dbx-linkify',\n template: `<span class=\"dbx-linkify\" [innerHTML]=\"linkifiedBody$ | async\"></span>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxLinkifyComponent implements OnDestroy {\n\n private _text = new BehaviorSubject<string>('');\n\n readonly linkifiedText$ = this._text.pipe(\n distinctUntilChanged(),\n map(x => linkifyStr(x, {\n defaultProtocol: 'https',\n target: {\n url: '_blank'\n }\n })),\n shareReplay(1)\n );\n\n readonly linkifiedBody$ = this.linkifiedText$.pipe(\n map(x => {\n return this.sanitizer.bypassSecurityTrustHtml(x);\n }),\n shareReplay(1)\n );\n\n constructor(private readonly sanitizer: DomSanitizer) { }\n\n ngOnDestroy(): void {\n this._text.complete();\n }\n\n @Input()\n get text(): string {\n return this._text.value;\n }\n\n set text(text: string) {\n this._text.next(text);\n }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-note',\n template: `<p class=\"dbx-note\"><ng-content></ng-content></p>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxNoteComponent { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-notice',\n template: `<p class=\"dbx-notice\"><ng-content></ng-content></p>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxNoticeComponent { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-ok',\n template: `<p class=\"dbx-ok\"><ng-content></ng-content></p>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxOkComponent { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dbx-success',\n template: `<p class=\"dbx-success\"><ng-content></ng-content></p>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxSuccessComponent { }\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\nexport interface TextChip<T = any> {\n text: string;\n tooltip?: string;\n color?: 'primary' | 'accent';\n data?: T;\n}\n\n@Component({\n selector: 'dbx-text-chips',\n template: `\n <mat-chip-list *ngIf=\"chips\" [multiple]=\"false\">\n <mat-chip *ngFor=\"let chip of chips\" selected [color]=\"chip.color\" [matTooltip]=\"chip.tooltip!\" matTooltipPosition=\"above\">\n {{chip.text}}\n </mat-chip>\n </mat-chip-list>\n `,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxTextChipsComponent<T = any> {\n\n @Input()\n chips?: Maybe<TextChip<T>[]>;\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dbx-warn',\n template: `<p class=\"dbx-warn\"><ng-content></ng-content></p>`,\n // TODO: styleUrls: ['./text.scss']\n})\nexport class DbNgxWarnComponent {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DbNgxAnchorModule } from '../router';\nimport { DbNgxHintComponent } from './hint.component';\nimport { DbNgxLabelBarComponent } from './label.bar.component';\nimport { DbNgxLabelComponent } from './label.component';\nimport { DbNgxLinkComponent } from './link.component';\nimport { DbNgxLinkifyComponent } from './linkify.component';\nimport { DbNgxNoteComponent } from './note.component';\nimport { DbNgxNoticeComponent } from './notice.component';\nimport { DbNgxOkComponent } from './ok.component';\nimport { DbNgxSuccessComponent } from './success.component';\nimport { DbNgxTextChipsComponent } from './text.chips.component';\nimport { DbNgxWarnComponent } from './warn.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatChipsModule,\n MatTooltipModule,\n MatIconModule,\n DbNgxAnchorModule\n ],\n declarations: [\n DbNgxNoteComponent,\n DbNgxNoticeComponent,\n DbNgxSuccessComponent,\n DbNgxWarnComponent,\n DbNgxHintComponent,\n DbNgxLinkComponent,\n DbNgxLabelComponent,\n DbNgxLinkifyComponent,\n DbNgxOkComponent,\n DbNgxTextChipsComponent,\n DbNgxLabelBarComponent\n ],\n exports: [\n DbNgxNoteComponent,\n DbNgxNoticeComponent,\n DbNgxSuccessComponent,\n DbNgxWarnComponent,\n DbNgxHintComponent,\n DbNgxLinkComponent,\n DbNgxLabelComponent,\n DbNgxLinkifyComponent,\n DbNgxOkComponent,\n DbNgxTextChipsComponent,\n DbNgxLabelBarComponent\n ],\n})\nexport class DbNgxTextModule { }\n","import { DbNgxButtonDirective, DbNgxButtonInterceptor } from '@dereekb/dbx-core';\nimport { Directive, Host, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DbNgxPromptConfirm } from './prompt.confirm';\nimport { map } from 'rxjs/operators';\n\n/**\n * Directive that binds together a confirm dialog with the button.\n */\n@Directive({\n selector: '[dbxPromptConfirmButton]',\n})\nexport class DbNgxPromptConfirmButtonDirective implements OnInit, DbNgxButtonInterceptor {\n\n readonly interceptButtonClick: () => Observable<boolean> = () => {\n return this.prompt.showDialog().pipe(map(x => Boolean(x)));\n }\n\n constructor(\n @Host() readonly appButton: DbNgxButtonDirective,\n @Host() readonly prompt: DbNgxPromptConfirm\n ) { }\n\n ngOnInit(): void {\n this.appButton.setButtonInterceptor(this);\n }\n\n}\n","import { DbNgxButtonModule } from './../../button/button.module';\nimport { DbNgxPromptComponent } from './prompt.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxPromptBoxComponent } from './prompt.box.component';\nimport { DbNgxPromptPageComponent } from './prompt.page.component';\nimport { DbNgxTextModule } from '../../text';\nimport { DbNgxContentLayoutModule, DbNgxSectionLayoutModule } from '../../layout';\nimport { DbNgxPromptConfirmComponent as DbNgxPromptConfirmComponent } from './prompt.confirm.component';\nimport { DbNgxPromptConfirmDialogComponent as DbNgxPromptConfirmDialogComponent } from './prompt.confirm.dialog.component';\nimport { DbNgxPromptConfirmDirective } from './prompt.confirm.directive';\nimport { DbNgxPromptConfirmButtonDirective } from './prompt.button.confirm.directive';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n DbNgxTextModule,\n DbNgxButtonModule,\n DbNgxSectionLayoutModule,\n DbNgxContentLayoutModule\n ],\n declarations: [\n DbNgxPromptComponent,\n DbNgxPromptBoxComponent,\n DbNgxPromptPageComponent,\n DbNgxPromptConfirmComponent,\n DbNgxPromptConfirmButtonDirective,\n DbNgxPromptConfirmDialogComponent,\n DbNgxPromptConfirmDirective,\n ],\n exports: [\n DbNgxPromptComponent,\n DbNgxPromptBoxComponent,\n DbNgxPromptPageComponent,\n DbNgxPromptConfirmComponent,\n DbNgxPromptConfirmButtonDirective,\n DbNgxPromptConfirmDirective,\n ],\n})\nexport class DbNgxPromptModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { DbNgxButtonModule } from '../button/button.module';\n// import { DbNgxErrorModule } from '../error/error.module';\nimport { DbNgxActionKeyTriggerDirective } from './key.trigger.directive';\nimport { DbNgxActionSnackbarComponent } from './action.snackbar.component';\nimport { DbNgxCoreActionModule } from '@dereekb/dbx-core';\nimport { DbNgxActionConfirmDirective } from './action.confirm.directive';\nimport { DbNgxPromptModule } from '../interaction/prompt/prompt.module';\n\n@NgModule({\n imports: [\n CommonModule,\n DbNgxCoreActionModule,\n DbNgxButtonModule,\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule,\n DbNgxPromptModule,\n ],\n declarations: [\n DbNgxActionKeyTriggerDirective,\n DbNgxActionSnackbarComponent,\n DbNgxActionConfirmDirective,\n ],\n exports: [\n DbNgxCoreActionModule,\n DbNgxActionKeyTriggerDirective,\n DbNgxActionSnackbarComponent,\n DbNgxActionConfirmDirective,\n ]\n})\nexport class DbNgxActionModule { }\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { AngularResizeEventModule } from 'angular-resize-event';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgOverlayContainerModule } from 'ng-overlay-container';\nimport { DbNgxPopoverCoordinatorComponent } from './popover.coordinator.component';\nimport { DbNgxPopoverService } from './popover.service';\nimport { DbNgxPopoverContentComponent } from './popover.content.component';\nimport { DbNgxPopoverComponent } from './popover.component';\nimport { DbNgxPopoverControlsComponent } from './popover.controls.component';\nimport { DbNgxPopoverCoordinatorService } from './popover.coordinator.service';\nimport { DbNgxPopoverHeaderComponent } from './popover.header.component';\nimport { DbNgxPopoverScrollContentComponent } from './popover.scroll.content.component';\nimport { DbNgxPopoverActionButtonDirective } from './popover.action.button.directive';\nimport { DbNgxPopoverActionDirective } from './popover.action.directive';\nimport { DbNgxKeypressModule } from '../../keypress';\nimport { DbNgxAnchorModule } from '../../router';\nimport { DbNgxActionModule } from '../../action/action.module';\nimport { DbNgxButtonModule } from '../../button/button.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDividerModule,\n DbNgxButtonModule,\n DbNgxAnchorModule,\n DbNgxActionModule,\n DbNgxKeypressModule,\n NgOverlayContainerModule,\n AngularResizeEventModule\n ],\n declarations: [\n DbNgxPopoverActionButtonDirective,\n DbNgxPopoverActionDirective,\n DbNgxPopoverComponent,\n DbNgxPopoverCoordinatorComponent,\n DbNgxPopoverContentComponent,\n DbNgxPopoverControlsComponent,\n DbNgxPopoverHeaderComponent,\n DbNgxPopoverScrollContentComponent\n ],\n exports: [\n DbNgxPopoverActionButtonDirective,\n DbNgxPopoverActionDirective,\n DbNgxPopoverContentComponent,\n DbNgxPopoverControlsComponent,\n DbNgxPopoverHeaderComponent,\n DbNgxPopoverScrollContentComponent\n ],\n providers: [\n DbNgxPopoverService\n ]\n})\nexport class DbNgxPopoverModule {\n\n static forRoot(): ModuleWithProviders<DbNgxPopoverModule> {\n return {\n ngModule: DbNgxPopoverModule,\n providers: [\n DbNgxPopoverCoordinatorService\n ]\n };\n }\n\n}\n","import { GlobalPositionStrategy } from '@angular/cdk/overlay';\n\nexport enum PopupPosition {\n CENTERED = 'centered',\n BOTTOM_LEFT = 'bottom_left',\n BOTTOM_RIGHT = 'bottom_right'\n}\n\nexport interface PopupPositionOffset {\n x?: string;\n y?: string;\n}\n\nexport class PopupGlobalPositionStrategy extends GlobalPositionStrategy {\n\n private _position: PopupPosition = PopupPosition.BOTTOM_RIGHT;\n private _offset: PopupPositionOffset = {};\n\n constructor(position = PopupPosition.BOTTOM_RIGHT, offset?: PopupPositionOffset) {\n super();\n this.setPopupPosition(position, offset);\n }\n\n setPopupOffset(offset?: PopupPositionOffset): void {\n this.setPopupPosition(this._position, offset ?? {});\n }\n\n setPopupPosition(position: PopupPosition, offset?: PopupPositionOffset): void {\n this._resetPositions();\n\n if (offset) {\n this._offset = offset;\n }\n\n const offsetX = this._offset.x ?? '0';\n const offsetY = this._offset.y ?? '0';\n\n switch (position) {\n case PopupPosition.CENTERED:\n break;\n case PopupPosition.BOTTOM_LEFT:\n this.bottom(offsetY);\n this.left(offsetX);\n break;\n case PopupPosition.BOTTOM_RIGHT:\n this.bottom(offsetY);\n this.right(offsetX);\n break;\n }\n }\n\n private _resetPositions(): void {\n this.top();\n this.bottom();\n this.left();\n this.right();\n }\n\n}\n","import { Maybe } from '@dereekb/util';\nimport { Observable } from 'rxjs';\n\nexport type DbNgxPopupKey = string;\n\nexport enum DbNgxPopupWindowState {\n NORMAL = 'normal',\n MINIMIZED = 'minimized',\n FULLSCREEN = 'fullscreen'\n}\n\nexport abstract class DbNgxPopupController<I = any, O = any> {\n abstract readonly key: DbNgxPopupKey;\n abstract readonly data?: Maybe<I>;\n abstract readonly windowState$: Observable<DbNgxPopupWindowState>;\n abstract readonly closing$: Observable<boolean>;\n /**\n * Signals for the popup to close.\n */\n abstract close(): void;\n /**\n * Closes the popup and returns the input value.\n */\n abstract return(value?: O): void;\n abstract minimize(): void;\n abstract normalscreen(): void;\n abstract fullscreen(): void;\n}\n","import { DbNgxPopupKey, DbNgxPopupController } from './popup';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Used for coordinating popups and closing/replacing existing ones when a new popup of the same name appears.\n */\n@Injectable()\nexport class DbNgxPopupCoordinatorService {\n\n private _popups = new BehaviorSubject<Map<DbNgxPopupKey, DbNgxPopupController>>(new Map());\n\n readonly popups$ = this._popups.asObservable();\n\n constructor() { }\n\n get popups(): Map<DbNgxPopupKey, DbNgxPopupController> {\n return this._popups.value;\n }\n\n public addPopup(popup: DbNgxPopupController): void {\n const key = popup.key;\n\n if (key) {\n this.removePopup(key);\n this._popups.value.set(key, popup);\n this._popups.next(this.popups);\n }\n }\n\n public removePopup(key: DbNgxPopupKey, popup?: DbNgxPopupController): void {\n if (key) {\n const existing = this.popups.get(key);\n\n // Remove if there is one existing, and if popup is provided it is the same popup.\n if (existing && (!popup || popup === existing)) {\n existing.close();\n this._popups.value.delete(key);\n this._popups.next(this.popups);\n }\n }\n }\n\n}\n","import { DbNgxPopupController } from './popup';\nimport { Component, OnInit, OnDestroy } from '@angular/core';\nimport { DbNgxPopupCoordinatorService } from './popup.coordinator.service';\nimport { delay, map, shareReplay } from 'rxjs/operators';\n\n/**\n * Used for coordinating popups and closing/replacing existing ones when a new popup of the same name appears.\n */\n@Component({\n selector: 'dbx-popup-coordinator',\n template: `\n <ng-container *ngIf=\"show$ | async\">\n <ng-content></ng-content>\n </ng-container>\n `,\n // TODO: styleUrls: ['./popup.scss']\n})\nexport class DbNgxPopupCoordinatorComponent implements OnInit, OnDestroy {\n\n readonly isPopupForKey$ = this.service.popups$.pipe(map(x => x.get(this.popup.key) === this.popup), shareReplay(1));\n readonly show$ = this.isPopupForKey$.pipe(delay(0));\n\n constructor(private readonly service: DbNgxPopupCoordinatorService, private readonly popup: DbNgxPopupController) { }\n\n ngOnInit(): void {\n this.service.addPopup(this.popup);\n }\n\n ngOnDestroy(): void {\n this.service.removePopup(this.popup.key, this.popup);\n }\n\n}\n","import { Component, ComponentFactoryResolver, NgZone, Type, ViewChild, ViewContainerRef, OnInit, OnDestroy, ComponentRef } from '@angular/core';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { Maybe } from '@dereekb/util';\nimport { CompactMode, CompactContextStore } from '../../layout';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { PopupGlobalPositionStrategy, PopupPosition, PopupPositionOffset } from './popup.position.strategy';\nimport { filter, first, map, shareReplay, startWith } from 'rxjs/operators';\nimport { AbstractTransitionWatcherDirective, DbNgxRouterTransitionService } from '@dereekb/dbx-core';\nimport { DbNgxPopupController, DbNgxPopupKey, DbNgxPopupWindowState } from './popup';\n\nexport const APP_POPUP_NORMAL_WIDTH = '700px';\nexport const APP_POPUP_MINIMIZED_WIDTH = '300px';\nexport const APP_POPUP_NORMAL_HEIGHT = 'auto';\n\nexport abstract class DbNgxPopupComponentController<I, O> extends DbNgxPopupController<I, O> {\n getClosingValueFn?: (value?: I) => Promise<O>;\n}\n\nexport interface DbNgxPopupComponentConfig<I, O, T> {\n /**\n * Key used for uniquely identifying a limited instance.\n *\n * Only one popup should exist at a time given a certain key.\n */\n key: DbNgxPopupKey;\n position?: PopupPosition;\n offset?: PopupPositionOffset;\n closeOnTransition?: boolean;\n componentClass: Type<T>;\n data?: I;\n isDraggable?: boolean;\n init?: (component: T, controller: DbNgxPopupController<I, O>) => void;\n}\n\n/**\n * Popup component.\n */\n@Component({\n template: `\n <dbx-popup-coordinator>\n <div class=\"dbx-popup-component\">\n <ng-template #content></ng-template>\n </div>\n </dbx-popup-coordinator>\n `,\n // TODO: styleUrls: ['./popup.scss'],\n providers: [{\n provide: DbNgxPopupController,\n useExisting: DbNgxPopupComponent\n }, {\n provide: CompactContextStore\n }]\n})\nexport class DbNgxPopupComponent<I = any, O = any, T = any> extends AbstractTransitionWatcherDirective implements DbNgxPopupController<I, O>, OnInit, OnDestroy {\n\n private _position: PopupGlobalPositionStrategy;\n\n @ViewChild('content', { static: true, read: ViewContainerRef })\n private _content!: ViewContainerRef;\n private _componentRef?: ComponentRef<T>;\n\n private readonly closing = new Subject<void>();\n readonly isClosing$ = this.closing.pipe(first(), map(x => true), startWith(false), shareReplay(1));\n readonly closing$ = this.isClosing$.pipe(filter(x => x));\n\n private readonly _windowState = new BehaviorSubject<DbNgxPopupWindowState>(DbNgxPopupWindowState.NORMAL);\n readonly windowState$ = this._windowState.asObservable();\n\n getClosingValueFn?: (value?: I) => Promise<O>;\n\n constructor(\n private popoverRef: NgPopoverRef<DbNgxPopupComponentConfig<I, O, T>, O>,\n private compactContextState: CompactContextStore,\n private resolver: ComponentFactoryResolver,\n dbNgxRouterTransitionService: DbNgxRouterTransitionService,\n ngZone: NgZone) {\n super(dbNgxRouterTransitionService, ngZone);\n\n this.compactContextState.setMode(CompactMode.COMPACT);\n this._position = new PopupGlobalPositionStrategy(this.config.position, this.config.offset);\n this.popoverRef.overlay.updatePositionStrategy(this._position);\n }\n\n get config(): DbNgxPopupComponentConfig<I, O, T> {\n return this.popoverRef.data;\n }\n\n get key(): DbNgxPopupKey {\n return this.config.key;\n }\n\n get data(): Maybe<I> {\n return this.config.data;\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this._content.clear();\n const componentClass = this.config.componentClass;\n const factory = this.resolver.resolveComponentFactory(componentClass);\n this._componentRef = this._content.createComponent(factory);\n\n if (this.config.init) {\n this.config.init(this._componentRef.instance, this);\n }\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.closing.complete();\n this._windowState.complete();\n }\n\n protected updateForSuccessfulTransition(): void {\n if (this.config.closeOnTransition !== false) {\n this.close();\n }\n }\n\n // Popup Controls\n public close(): void {\n this.closing.next();\n\n if (this.getClosingValueFn) {\n this.getClosingValueFn().then((x) => {\n this.return(x);\n }, () => {\n this.return();\n });\n } else {\n this.return();\n }\n }\n\n public return(value?: O): void {\n this.closing.next();\n this.popoverRef.close(value);\n }\n\n public minimize(): void {\n this.popoverRef.isDraggable = false;\n this.popoverRef.resize(APP_POPUP_MINIMIZED_WIDTH, APP_POPUP_NORMAL_HEIGHT);\n this.popoverRef.overlay.updatePosition();\n this._windowState.next(DbNgxPopupWindowState.MINIMIZED);\n }\n\n public normalscreen(): void {\n this.popoverRef.isDraggable = this.config.isDraggable;\n this.popoverRef.resize(APP_POPUP_NORMAL_WIDTH, APP_POPUP_NORMAL_HEIGHT);\n this.popoverRef.overlay.updatePosition();\n this._windowState.next(DbNgxPopupWindowState.NORMAL);\n }\n\n public fullscreen(): void {\n this.popoverRef.isDraggable = false;\n this.popoverRef.resize('100%', '100%');\n this.popoverRef.overlay.updatePosition();\n this._windowState.next(DbNgxPopupWindowState.FULLSCREEN);\n }\n\n}\n","import { Directive } from '@angular/core';\nimport { DbNgxPopupComponent } from './popup.component';\n\n/**\n * Abstract popup directive.\n */\n@Directive()\nexport abstract class AbstractPopupDirective<I = any, O = any, T = any> {\n\n constructor(public readonly popup: DbNgxPopupComponent<I, O, T>) { }\n\n closePopup(): void {\n this.popup.close();\n }\n\n}\n","import { Component } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { DbNgxPopupController, DbNgxPopupWindowState } from './popup';\n\n/**\n * Popup content wrapper component.\n */\n@Component({\n selector: 'dbx-popup-content',\n template: `\n <div class=\"dbx-popup-content\">\n <ng-content select=\"[controls]\"></ng-content>\n <div *ngIf=\"showContent$ | async\" class=\"dbx-popup-content-container\">\n <ng-content></ng-content>\n </div>\n </div>\n`,\n // TODO: styleUrls: ['./popup.scss']\n})\nexport class DbNgxPopupContentComponent {\n\n readonly showContent$ = this.appPopupController.windowState$.pipe(map(x => x !== DbNgxPopupWindowState.MINIMIZED));\n\n constructor(private appPopupController: DbNgxPopupController) { }\n\n}\n","import { Component } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { DbNgxPopupController, DbNgxPopupWindowState } from './popup';\n\n/**\n * Popup Control Buttons.\n */\n@Component({\n selector: 'dbx-popup-control-buttons',\n template: `\n <span class=\"dbx-popup-control-buttons\">\n <ng-container [ngSwitch]=\"isMinimized$ | async\">\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"false\" icon=\"minimize\" (buttonClick)=\"minimizeClicked()\"></dbx-button>\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"true\" icon=\"maximize\" (buttonClick)=\"maximizeClicked()\"></dbx-button>\n </ng-container>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-container [ngSwitch]=\"isFullscreen$ | async\">\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"false\" icon=\"open_in_full\" (buttonClick)=\"fullscreenClicked()\"></dbx-button>\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"true\" icon=\"close_fullscreen\" (buttonClick)=\"normalscreenClicked()\"></dbx-button>\n </ng-container>\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-button [flat]=\"true\" icon=\"close\" color=\"warn\" (buttonClick)=\"closeClicked()\"></dbx-button>\n </span>\n `,\n // TODO: styleUrls: ['./popup.scss']\n})\nexport class DbNgxPopupControlButtonsComponent {\n\n readonly isMinimized$ = this.appPopupController.windowState$.pipe(map(x => x === DbNgxPopupWindowState.MINIMIZED));\n readonly isFullscreen$ = this.appPopupController.windowState$.pipe(map(x => x === DbNgxPopupWindowState.FULLSCREEN));\n\n constructor(private appPopupController: DbNgxPopupController) { }\n\n minimizeClicked(): void {\n this.appPopupController.minimize();\n }\n\n maximizeClicked(): void {\n this.appPopupController.normalscreen();\n }\n\n fullscreenClicked(): void {\n this.appPopupController.fullscreen();\n }\n\n normalscreenClicked(): void {\n this.appPopupController.normalscreen();\n }\n\n closeClicked(): void {\n this.appPopupController.close();\n }\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Popup Controls\n */\n@Component({\n selector: 'dbx-popup-controls',\n template: `\n <div class=\"dbx-popup-controls\">\n <span class=\"dbx-popup-controls-header\">{{ header }}</span>\n <div class=\"spacer\"></div>\n <dbx-popup-control-buttons></dbx-popup-control-buttons>\n </div>\n `,\n // TODO: styleUrls: ['./popup.scss']\n})\nexport class DbNgxPopupControlsComponent {\n\n @Input()\n header?: string;\n\n}\n","import { DbNgxPopupComponent, DbNgxPopupComponentConfig, APP_POPUP_NORMAL_HEIGHT, APP_POPUP_NORMAL_WIDTH } from './popup.component';\nimport { Injectable, Injector } from '@angular/core';\nimport { NgOverlayContainerService, NgPopoverRef } from 'ng-overlay-container';\nimport { Overlay } from '@angular/cdk/overlay';\n\nexport interface DbNgxPopupConfig<I, O, T> extends DbNgxPopupComponentConfig<I, O, T> {\n injector?: Injector;\n}\n\n/**\n * Used for displaying a popup.\n */\n@Injectable()\nexport class DbNgxPopupService {\n\n private _overlayContainerService: NgOverlayContainerService;\n\n constructor(private _overlay: Overlay, private _injector: Injector) {\n this._overlayContainerService = new NgOverlayContainerService(this._overlay, this._injector);\n }\n\n open<I, O, T>(config: DbNgxPopupConfig<I, O, T>): NgPopoverRef<DbNgxPopupComponentConfig<I, O, T>, O> {\n const service = (config.injector) ? new NgOverlayContainerService(this._overlay, config.injector) : this._overlayContainerService;\n const isDraggable = config.isDraggable ?? false;\n\n return service.open<DbNgxPopupComponentConfig<I, O, T>, O>({\n content: DbNgxPopupComponent,\n data: {\n ...config,\n isDraggable,\n },\n configuration: {\n panelClass: 'dbx-popup-container',\n width: APP_POPUP_NORMAL_WIDTH,\n height: APP_POPUP_NORMAL_HEIGHT,\n useGlobalPositionStrategy: true,\n hasBackdrop: false,\n isResizable: false,\n isDraggable\n }\n });\n }\n\n}\n","import { DbNgxPopupCoordinatorComponent } from './popup.coordinator.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgOverlayContainerModule } from 'ng-overlay-container';\nimport { DbNgxPopupService } from './popup.service';\nimport { DbNgxPopupContentComponent } from './popup.content.component';\nimport { DbNgxPopupComponent } from './popup.component';\nimport { DbNgxAnchorModule } from '../../router';\nimport { DbNgxActionModule } from '../../action/action.module';\nimport { DbNgxPopupControlsComponent } from './popup.controls.component';\nimport { DbNgxPopupControlButtonsComponent } from './popup.controls.buttons.component';\nimport { DbNgxButtonModule } from '../../button/button.module';\nimport { DbNgxPopupCoordinatorService } from './popup.coordinator.service';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n DbNgxButtonModule,\n DbNgxAnchorModule,\n DbNgxActionModule,\n NgOverlayContainerModule\n ],\n declarations: [\n DbNgxPopupComponent,\n DbNgxPopupCoordinatorComponent,\n DbNgxPopupContentComponent,\n DbNgxPopupControlsComponent,\n DbNgxPopupControlButtonsComponent\n ],\n exports: [\n DbNgxPopupContentComponent,\n DbNgxPopupControlsComponent,\n DbNgxPopupControlButtonsComponent\n ],\n providers: [\n DbNgxPopupService\n ]\n})\nexport class DbNgxPopupModule {\n\n static forRoot(): ModuleWithProviders<DbNgxPopupModule> {\n return {\n ngModule: DbNgxPopupModule,\n providers: [\n DbNgxPopupCoordinatorService\n ]\n };\n }\n\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { ErrorInput, convertToReadableError, ReadableError } from '@dereekb/util';\n\n/**\n * Basic error component.\n */\n@Component({\n selector: 'dbx-error',\n templateUrl: './error.component.html',\n // TODO: styleUrls: ['./error.scss']\n})\nexport class DbNgxReadableErrorComponent {\n\n private _error?: ReadableError;\n\n get error(): Maybe<ReadableError> {\n return this._error;\n }\n\n @Input()\n set error(error: Maybe<ErrorInput | ReadableError>) {\n this._error = convertToReadableError(error as any) as ReadableError;\n }\n\n get message(): Maybe<string> {\n return this._error?.message;\n }\n\n}\n","<div *ngIf=\"error\" class=\"dbx-error\">\n <h4>An error occured.</h4>\n <!-- <p class=\"dbx-error-code\" *ngIf=\"errorData.code\">{{ errorData.code }}</p> -->\n <p class=\"dbx-error-message\" *ngIf=\"message\">{{ message }}</p>\n</div>\n","import { Directive, Host, OnInit, OnDestroy, Input, NgZone } from '@angular/core';\nimport { ActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbNgxReadableErrorComponent } from './error.component';\n\n/**\n * Context used for linking an ReadableErrorComponent to an ActionContext.\n */\n@Directive({\n selector: '[dbxActionError]'\n})\nexport class DbNgxActionErrorDirective extends AbstractSubscriptionDirective implements OnInit {\n\n constructor(@Host() public readonly error: DbNgxReadableErrorComponent, public readonly source: ActionContextStoreSourceInstance) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.source.error$.subscribe((error) => {\n this.error.error = error;\n });\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { DbNgxPromptConfirmConfig, DbNgxPromptConfirmTypes, AbstractDialogDirective } from '../../interaction';\n\nexport enum DbNgxActionTransitionSafetyDialogResult {\n SUCCESS,\n STAY,\n DISCARD,\n NONE\n}\n\n/**\n * Dialog that is shown/triggered as part of the DbNgxActionTransitionSafety\n */\n@Component({\n template: `\n <dbx-prompt-confirm [config]=\"config\" (confirm)=\"confirm()\" (cancel)=\"cancel()\">\n <ng-container>\n <dbx-error dbxActionError></dbx-error>\n <dbx-button text=\"Save Changes\" dbxActionButton></dbx-button>\n <dbx-button-spacer></dbx-button-spacer>\n </ng-container>\n </dbx-prompt-confirm>\n `\n})\nexport class DbNgxActionUIRouterTransitionSafetyDialogComponent extends AbstractDialogDirective implements OnInit {\n\n config: DbNgxPromptConfirmConfig = {\n type: DbNgxPromptConfirmTypes.NORMAL,\n title: 'Unsaved Changes',\n prompt: 'You have unsaved changes on this page.',\n confirmText: 'Stay',\n cancelText: 'Discard Changes'\n };\n\n confirm(): void {\n this.dialogRef.close(DbNgxActionTransitionSafetyDialogResult.STAY);\n }\n\n cancel(): void {\n this.dialogRef.close(DbNgxActionTransitionSafetyDialogResult.DISCARD);\n }\n\n}\n","import { Directive, OnInit, OnDestroy, Input, ViewContainerRef } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { HookResult, Transition, TransitionService } from '@uirouter/core';\nimport { Observable, of, race } from 'rxjs';\nimport { delay, first, map, mergeMap, tap } from 'rxjs/operators';\nimport { ActionContextStoreSourceInstance, canTriggerAction, isIdleActionState } from '@dereekb/dbx-core';\nimport { DbNgxActionTransitionSafetyDialogResult, DbNgxActionUIRouterTransitionSafetyDialogComponent } from './transition.safety.dialog.component';\n\nexport enum DbNgxActionTransitionSafetyType {\n /**\n * Nothing occurs.\n */\n NONE = 'none',\n\n /**\n * Always show a dialog and act based on the result.\n */\n DIALOG = 'dialog',\n\n /**\n * Try to auto-trigger if in a triggerable state.\n *\n * If it is modified but in a non-triggerable state show a dialog.\n *\n * Should be used in conjuction with the auto-saver.\n */\n AUTO_TRIGGER = 'auto'\n}\n\ntype DbNgxActionTransitionSafetyRaceResult = [boolean | undefined, HookResult | undefined];\n\n/**\n * Context used for preventing a transition from occuring if the action is not complete or is in a modified state.\n *\n * This can be configured to auto-trigger and wait, or show a dialog and wait for the user's feedback before doing anything.\n * \n * NOTE: This dialog only works for uirouter.\n */\n@Directive({\n selector: '[dbxActionTransitionSafety]',\n})\nexport class DbNgxActionTransitionSafetyDirective<T, O> implements OnInit, OnDestroy {\n\n @Input('dbxActionTransitionSafety')\n inputSafetyType?: DbNgxActionTransitionSafetyType;\n\n private _dialogRef?: MatDialogRef<DbNgxActionUIRouterTransitionSafetyDialogComponent, DbNgxActionTransitionSafetyDialogResult>;\n private stopWatchingTransition?: () => void;\n\n constructor(\n public readonly source: ActionContextStoreSourceInstance<T, O>,\n protected readonly transitionService: TransitionService,\n protected readonly viewContainerRef: ViewContainerRef,\n protected readonly dialog: MatDialog\n ) { }\n\n get safetyType(): DbNgxActionTransitionSafetyType {\n return this.inputSafetyType || DbNgxActionTransitionSafetyType.DIALOG;\n }\n\n private get _destroyed(): boolean {\n return !this.stopWatchingTransition;\n }\n\n ngOnInit(): void {\n this.stopWatchingTransition = this.transitionService.onStart({}, (transition: Transition) => {\n return this._handleOnBeforeTransition(transition);\n }) as any;\n }\n\n ngOnDestroy(): void {\n if (this.stopWatchingTransition) {\n this.stopWatchingTransition();\n delete this.stopWatchingTransition;\n }\n\n this._closeDialog();\n }\n\n protected _handleOnBeforeTransition(transition: Transition): HookResult {\n return this.source.isModified$.pipe(\n first(),\n mergeMap((isModified) => {\n if (isModified) {\n return race([\n // Watch for success to occur. At that point, close everything.\n this.source.success$.pipe(first(), map((x) => [true, undefined] as DbNgxActionTransitionSafetyRaceResult)),\n this._handleIsModifiedState(transition).pipe(first(), map((x) => [undefined, x] as DbNgxActionTransitionSafetyRaceResult))\n ]).pipe(\n map(([saveSuccess, handleResult]: DbNgxActionTransitionSafetyRaceResult) => {\n if (saveSuccess) {\n return true;\n } else {\n return handleResult;\n }\n }),\n tap(() => this._closeDialog()), // Close dialog if it is still open.\n delay(10) // Delay to allow dialog to close before transition.\n );\n } else {\n return of(true);\n }\n })\n ).toPromise().then(x => x); // Resolve/Flatten potential promise result.\n }\n\n protected _handleIsModifiedState(transition: Transition): Observable<HookResult> {\n const safetyType = this.safetyType;\n let obs: Observable<HookResult>;\n\n // console.log('Safety type: ', safetyType);\n\n switch (safetyType) {\n case DbNgxActionTransitionSafetyType.NONE:\n obs = of(true); // Do nothing.\n break;\n case DbNgxActionTransitionSafetyType.DIALOG:\n obs = this._showDialog(transition);\n break;\n case DbNgxActionTransitionSafetyType.AUTO_TRIGGER:\n obs = this._autoTrigger(transition);\n break;\n }\n\n return obs;\n }\n\n private _autoTrigger(transition: Transition): Observable<HookResult> {\n return this.source.pipeStore((store) => store.state$.pipe(\n delay(20), // Prevent racing with auto-trigger.\n first(),\n mergeMap((state) => {\n if (isIdleActionState(state.actionState)) {\n // If we're in an idle state, get ready to trigger it.\n if (canTriggerAction(state)) {\n store.trigger(); // Try and trigger it.\n }\n }\n\n // Watch for errors. If an error occurs, show the dialog.\n // Success will cause the race in _handleOnBeforeTransition() to trigger and close everything.\n return store.rejected$.pipe(\n first(),\n mergeMap(() => this._showDialog(transition))\n );\n })\n ));\n }\n\n private _showDialog(transition: Transition): Observable<HookResult> {\n if (this._destroyed) {\n return of(true);\n }\n\n if (!this._dialogRef) {\n this._dialogRef = this.dialog.open(DbNgxActionUIRouterTransitionSafetyDialogComponent, {\n viewContainerRef: this.viewContainerRef\n });\n }\n\n return this._dialogRef.afterClosed().pipe(\n first(),\n map((result: DbNgxActionTransitionSafetyDialogResult = DbNgxActionTransitionSafetyDialogResult.STAY) => {\n // Default to Stay if the user clicks outside.\n switch (result) {\n case DbNgxActionTransitionSafetyDialogResult.DISCARD:\n case DbNgxActionTransitionSafetyDialogResult.SUCCESS:\n case DbNgxActionTransitionSafetyDialogResult.NONE:\n return true;\n case DbNgxActionTransitionSafetyDialogResult.STAY:\n return false;\n }\n })\n );\n }\n\n private _closeDialog(): void {\n if (this._dialogRef) {\n this._dialogRef.close(DbNgxActionTransitionSafetyDialogResult.NONE);\n }\n\n this._dialogRef = undefined;\n }\n\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ServerError, ServerErrorResponse, ServerErrorResponseData, UnauthorizedServerErrorResponse } from '@dereekb/util';\n\n/**\n * Converts the error response to a POJO.\n */\nexport function convertToPOJOServerErrorResponse(httpError: HttpErrorResponse | any): ServerError {\n const result: ServerErrorResponse | undefined = convertToServerErrorResponse(httpError);\n const pojo: ServerErrorResponse = Object.assign({}, result);\n\n if (pojo.data) {\n try {\n const stringy = JSON.stringify(pojo.data);\n (pojo as any).data = JSON.parse(stringy);\n } catch (e) {\n console.warn('convertToPOJOServerErrorResponse(): Non-serializable Error Data Detected. It is being removed.: ', pojo.data);\n (pojo as any).data = undefined;\n }\n }\n\n return pojo;\n}\n\n/**\n * Converts an HTTP Error Response to a ServerErrorResponse type.\n * \n * @param error \n * @returns \n */\nexport function convertToServerErrorResponse(error: HttpErrorResponse | any): ServerErrorResponse | undefined {\n let result: ServerErrorResponse | undefined;\n\n if (error instanceof HttpErrorResponse) {\n const { status, error: data }: { status: number, error: ServerErrorResponseData } = error;\n\n const code = data.code;\n const message = data.message ?? error.statusText;\n\n switch (status) {\n case 401:\n result = new UnauthorizedServerErrorResponse({ message, data, code });\n break;\n default:\n result = new ServerErrorResponse({ code, status, data, message });\n break;\n }\n } else if (error) {\n result = new ServerErrorResponse({ message: error.message, status: 0 });\n }\n\n return result;\n}\n","import { Directive, Host, Input } from '@angular/core';\nimport { LoadingContext } from '@dereekb/rxjs';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbNgxReadableErrorComponent } from './error.component';\n\n/**\n * Context used for linking an ReadableErrorComponent to a LoadingContext.\n *\n * The error from the context is given to the app error when available.\n */\n@Directive({\n selector: '[dbxLoadingError]'\n})\nexport class DbNgxLoadingErrorDirective extends AbstractSubscriptionDirective {\n\n constructor(@Host() public readonly error: DbNgxReadableErrorComponent) {\n super();\n }\n\n /**\n * Sets a LoadingContext that is watched for the loading state.\n */\n @Input('dbxLoadingError')\n set context(context: LoadingContext) {\n let subscription;\n\n if (context) {\n subscription = context.stream$.subscribe((x) => {\n this.error.error = x.error;\n });\n }\n\n this.sub = subscription;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DbNgxReadableErrorComponent } from './error.component';\nimport { DbNgxLoadingErrorDirective } from './error.loading.directive';\nimport { DbNgxActionErrorDirective } from './error.action.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbNgxReadableErrorComponent,\n DbNgxLoadingErrorDirective,\n DbNgxActionErrorDirective\n ],\n exports: [\n DbNgxReadableErrorComponent,\n DbNgxLoadingErrorDirective,\n DbNgxActionErrorDirective\n ]\n})\nexport class DbNgxReadableErrorModule { }\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { convertToPOJOServerErrorResponse } from './error.api';\nimport { of, OperatorFunction } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ActionCreator, TypedAction } from '@ngrx/store/src/models';\nimport { ServerError } from '@dereekb/util';\n\nexport interface ServerErrorParams {\n error: ServerError;\n}\n\n/**\n * Converts the error response to ServerErrorParams.\n */\nexport function convertServerErrorParams(httpError: HttpErrorResponse | any): ServerErrorParams {\n const error: ServerError = convertToPOJOServerErrorResponse(httpError);\n return { error };\n}\n\n/**\n * Catches error server params and feeds them to an action that takes ServerErrorParams as a prop.\n */\nexport function catchErrorServerParams<E extends ServerErrorParams, T extends string>(\n action: ActionCreator<T, (props: E) => E & TypedAction<T>>,\n mapError: (error: ServerErrorParams) => E = (error) => error as E\n):\n OperatorFunction<HttpErrorResponse | any, E & TypedAction<T>> {\n return catchError((error: HttpErrorResponse) => of(action(mapError(convertServerErrorParams(error)))));\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbNgxActionUIRouterTransitionSafetyDialogComponent } from './transition.safety.dialog.component';\nimport { DbNgxActionTransitionSafetyDirective as DbNgxActionUIRouterTransitionSafetyDirective } from './transition.safety.directive';\nimport { DbNgxCoreActionModule } from '@dereekb/dbx-core';\nimport { DbNgxButtonModule } from '../../button';\nimport { DbNgxPromptModule } from './../../interaction';\nimport { DbNgxReadableErrorModule } from '../../error';\n\n/**\n * Provides the DbNgxActionUIRouterTransitionSafetyDirective.\n * \n * NOTE: Only works with UIRouter\n */\n@NgModule({\n imports: [\n CommonModule,\n DbNgxCoreActionModule,\n DbNgxPromptModule,\n DbNgxButtonModule,\n DbNgxReadableErrorModule\n ],\n declarations: [\n DbNgxActionUIRouterTransitionSafetyDirective,\n DbNgxActionUIRouterTransitionSafetyDialogComponent\n ],\n exports: [\n DbNgxActionUIRouterTransitionSafetyDirective\n ]\n})\nexport class DbNgxActionUIRouterTransitionModule { }\n","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProgressBarMode } from '@angular/material/progress-bar';\nimport { ProgressSpinnerMode } from '@angular/material/progress-spinner';\nimport { Maybe } from '@dereekb/util';\n\nexport const DEFAULT_LOADING_PROGRESS_DIAMETER = 96;\n\n/**\n * Basic loading progress component.\n */\n@Component({\n selector: 'dbx-loading-progress',\n template: `\n <div class=\"loading-progress-view\">\n <ng-container [ngSwitch]=\"linear\">\n <mat-progress-bar *ngSwitchCase=\"true\" [mode]=\"bmode\" [color]=\"color\" [bufferValue]=\"bufferValue\" [value]=\"value\" style=\"margin: auto;\"></mat-progress-bar>\n <mat-progress-spinner *ngSwitchDefault [diameter]=\"diameter || 96\" [mode]=\"smode\" [color]=\"color\" [value]=\"value\" style=\"margin: auto;\"></mat-progress-spinner>\n </ng-container>\n <div *ngIf=\"text\" class=\"hint\">{{ text }}</div>\n </div>\n `\n})\nexport class DbNgxLoadingProgressComponent {\n\n private _diameter: number = DEFAULT_LOADING_PROGRESS_DIAMETER;\n\n @Input()\n text?: Maybe<string>;\n\n @Input()\n linear?: Maybe<boolean>;\n\n @Input()\n mode: ProgressBarMode | ProgressSpinnerMode = 'indeterminate';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @Input()\n value?: number;\n\n @Input()\n bufferValue: number = undefined!;\n\n @Input()\n get diameter(): number {\n return this._diameter;\n }\n\n set diameter(diameter: Maybe<number>) {\n this._diameter = diameter ?? DEFAULT_LOADING_PROGRESS_DIAMETER;\n }\n\n get bmode(): ProgressBarMode {\n return this.mode;\n }\n\n get smode(): ProgressSpinnerMode {\n return this.mode as any;\n }\n\n}\n","import { startWith } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { distinctUntilChanged, shareReplay, combineLatest, map, BehaviorSubject } from 'rxjs';\nimport { Component, Input, ViewChild, ElementRef } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProgressBarMode } from '@angular/material/progress-bar';\nimport { ErrorInput, Maybe } from '@dereekb/util';\nimport { checkNgContentWrapperHasContent } from '@dereekb/dbx-core';\nimport { ProgressSpinnerMode } from '@angular/material/progress-spinner';\n\n/**\n * DbNgxBasicLoadingComponent loading state.\n */\nexport enum LoadingComponentState {\n NONE = -1,\n LOADING = 0,\n CONTENT = 1,\n ERROR = 2\n}\n\n/**\n * Basic loading component.\n */\n@Component({\n selector: 'dbx-basic-loading',\n templateUrl: './basic-loading.component.html'\n})\nexport class DbNgxBasicLoadingComponent implements OnDestroy {\n\n private _loading = new BehaviorSubject<Maybe<boolean>>(undefined);\n private _show = new BehaviorSubject<boolean>(true);\n private _error = new BehaviorSubject<Maybe<ErrorInput>>(undefined);\n\n private _customErrorContent = new BehaviorSubject<Maybe<ElementRef>>(undefined);\n private _customLoadingContent = new BehaviorSubject<Maybe<ElementRef>>(undefined);\n\n readonly state$ = combineLatest([this._loading, this._show, this._error]).pipe(\n map(([loading, show, error]) => {\n let state: LoadingComponentState;\n\n if (error) {\n state = LoadingComponentState.ERROR;\n } else if (loading == null) { // If loading has not yet been defined and no error has occured, we're waiting for some input on loading or error.\n state = LoadingComponentState.NONE;\n } else if (loading || !show) {\n state = LoadingComponentState.LOADING;\n } else {\n state = LoadingComponentState.CONTENT;\n }\n\n return state;\n }),\n distinctUntilChanged(),\n startWith(LoadingComponentState.NONE),\n shareReplay(1)\n );\n\n readonly error$ = this._error.asObservable();\n\n readonly hasNoCustomError$ = this._customErrorContent.pipe(map(x => !checkNgContentWrapperHasContent(x)));\n readonly hasNoCustomLoading$ = this._customLoadingContent.pipe(map(x => !checkNgContentWrapperHasContent(x)));\n\n @Input()\n diameter?: Maybe<number>;\n\n @Input()\n mode: ProgressBarMode | ProgressSpinnerMode = 'indeterminate';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @Input()\n text?: Maybe<string>;\n\n @Input()\n linear: Maybe<boolean> = false;\n\n ngOnDestroy() {\n this._error.complete();\n this._loading.complete();\n this._show.complete();\n this._customErrorContent.complete();\n this._customLoadingContent.complete();\n }\n\n @Input()\n get show(): boolean {\n return this._show.value;\n }\n\n set show(show: Maybe<boolean>) {\n this._show.next(show ?? true);\n }\n\n @Input()\n get loading(): Maybe<boolean> {\n return this._loading.value;\n }\n\n set loading(loading: Maybe<boolean>) {\n this._loading.next(loading);\n }\n\n @Input()\n get error(): Maybe<ErrorInput> {\n return this._error.value;\n }\n\n set error(error: Maybe<ErrorInput>) {\n this._error.next(error);\n }\n\n @ViewChild('customError')\n set customErrorContent(customErrorContent: Maybe<ElementRef>) {\n setTimeout(() => {\n this._customErrorContent.next(customErrorContent);\n }, 0);\n }\n\n @ViewChild('customLoading')\n set customLoadingContent(customLoadingContent: Maybe<ElementRef>) {\n setTimeout(() => {\n this._customLoadingContent.next(customLoadingContent);\n }, 0);\n }\n\n}\n","<ng-container [ngSwitch]=\"state$ | async\">\n <ng-container *ngSwitchCase=\"0\">\n <!-- Loading -->\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <!-- Content -->\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <!-- Error -->\n <ng-container *ngTemplateOutlet=\"errorTemplate\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #loadingTemplate>\n <dbx-loading-progress *ngIf=\"hasNoCustomLoading$ | async\" [mode]=\"mode\" [color]=\"color\" [text]=\"text\"\n [linear]=\"linear\" [diameter]=\"diameter\"></dbx-loading-progress>\n <div #customLoading>\n <ng-content select=\"[loading]\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #errorTemplate>\n <dbx-error *ngIf=\"hasNoCustomError$ | async\" [error]=\"error$ | async\"></dbx-error>\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-content select=\"[errorAction]\"></ng-content>\n</ng-template>\n","import { BehaviorSubject, shareReplay, Observable, distinctUntilChanged, map, switchMap, combineLatest, of } from 'rxjs';\nimport { OnDestroy, Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProgressBarMode } from '@angular/material/progress-bar';\nimport { LoadingContext } from '@dereekb/rxjs';\nimport { ErrorInput, Maybe } from '@dereekb/util';\n\nexport interface DbNgxLoadingComponentState {\n loading: boolean;\n error: Maybe<ErrorInput>;\n}\n\n/**\n * Loading View component that provides content sections for loading, error, and an error action.\n */\n@Component({\n selector: 'dbx-loading',\n template: `\n <dbx-basic-loading [show]=\"show\" [color]=\"color\" [text]=\"text\" [mode]=\"mode\" [linear]=\"linear\" [diameter]=\"diameter\" [error]=\"error$ | async\" [loading]=\"loading$ | async\">\n <ng-content loading select=\"[loading]\"></ng-content>\n <ng-content></ng-content>\n <ng-content error select=\"[error]\"></ng-content>\n <ng-content errorAction select=\"[errorAction]\"></ng-content>\n </dbx-basic-loading>\n `\n})\nexport class DbNgxLoadingComponent implements OnDestroy {\n\n private _context = new BehaviorSubject<Maybe<LoadingContext>>(undefined);\n\n private _inputLoading = new BehaviorSubject<Maybe<boolean>>(true);\n private _inputError = new BehaviorSubject<Maybe<ErrorInput>>(undefined);\n\n readonly state$: Observable<DbNgxLoadingComponentState> = combineLatest([this._inputLoading, this._inputError, this._context.pipe(\n switchMap(x => (x != null) ? x.stream$ : of(undefined))\n )]).pipe(\n map(([inputLoading, inputError, loadingState]) => {\n if (loadingState) {\n return loadingState as DbNgxLoadingComponentState;\n } else {\n return {\n loading: inputLoading ?? false,\n error: inputError\n };\n }\n }),\n distinctUntilChanged((a, b) => a.loading === b.loading && a.error === b.error),\n shareReplay(1)\n );\n\n readonly loading$ = this.state$.pipe(map(x => x.loading), distinctUntilChanged(), shareReplay(1));\n readonly error$ = this.state$.pipe(map(x => x.error), distinctUntilChanged(), shareReplay(1));\n\n @Input()\n show?: Maybe<boolean>;\n\n @Input()\n text?: Maybe<string>;\n\n @Input()\n mode: ProgressBarMode = 'indeterminate';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @Input()\n diameter?: Maybe<number>;\n\n @Input()\n linear?: Maybe<boolean>;\n\n ngOnDestroy() {\n this._context.complete();\n this._inputError.complete();\n this._inputLoading.complete();\n }\n\n @Input()\n get context(): Maybe<LoadingContext> {\n return this._context.value;\n }\n\n set context(context: Maybe<LoadingContext>) {\n this._context.next(context);\n }\n\n @Input()\n get loading(): Maybe<boolean> {\n return this._inputLoading.value;\n }\n\n set loading(loading: Maybe<boolean>) {\n this._inputLoading.next(loading ?? false);\n }\n\n @Input()\n get error(): Maybe<ErrorInput> {\n return this._inputError.value;\n }\n\n set error(error: Maybe<ErrorInput>) {\n this._inputError.next(error);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { DbNgxBasicLoadingComponent } from './basic-loading.component';\nimport { DbNgxLoadingProgressComponent } from './loading-progress.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DbNgxLoadingComponent } from './loading.component';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { DbNgxReadableErrorModule } from '../error';\n\n@NgModule({\n imports: [\n BrowserModule,\n DbNgxReadableErrorModule,\n MatProgressSpinnerModule,\n MatProgressBarModule\n ],\n declarations: [\n DbNgxLoadingComponent,\n DbNgxBasicLoadingComponent,\n DbNgxLoadingProgressComponent\n ],\n exports: [\n DbNgxLoadingComponent,\n DbNgxBasicLoadingComponent,\n DbNgxLoadingProgressComponent,\n MatProgressSpinnerModule,\n MatProgressBarModule\n ]\n})\nexport class DbNgxLoadingModule { }\n","import { DbNgxLoadingModule } from './loading/loading.module';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { MatProgressButtonsModule } from 'mat-progress-buttons';\nimport { NgModule } from '@angular/core';\nimport { DbNgxButtonModule } from './button';\nimport { DbNgxActionModule } from './action';\n\n@NgModule({\n exports: [\n DbNgxButtonModule,\n DbNgxActionModule,\n DbNgxLoadingModule\n ],\n})\nexport class DbNgxWebModule { }\n\n@NgModule({\n imports: [\n BrowserModule,\n DbNgxWebModule,\n MatProgressButtonsModule.forRoot()\n ],\n exports: [\n DbNgxWebModule\n ]\n})\nexport class DbNgxSharedWebModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["distinctUntilChanged","shareReplay","DbNgxActionUIRouterTransitionSafetyDirective","map","startWith","switchMap"],"mappings":"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"}
1
+ {"version":3,"file":"dereekb-dbx-web.mjs","sources":["../../../../packages/dbx-web/src/lib/interaction/dialog/abstract.dialog.directive.ts","../../../../packages/dbx-web/src/lib/interaction/dialog/dialog.content.component.ts","../../../../packages/dbx-web/src/lib/layout/style/style.service.ts","../../../../packages/dbx-web/src/lib/layout/style/style.set.directive.ts","../../../../packages/dbx-web/src/lib/layout/style/style.directive.ts","../../../../packages/dbx-web/src/lib/layout/style/spacer.directive.ts","../../../../packages/dbx-web/src/lib/layout/style/style.body.directive.ts","../../../../packages/dbx-web/src/lib/layout/style/style.layout.module.ts","../../../../packages/dbx-web/src/lib/interaction/dialog/dialog.module.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.position.strategy.ts","../../../../packages/dbx-web/src/lib/layout/bar/bar.directive.ts","../../../../packages/dbx-web/src/lib/layout/bar/bar.header.component.ts","../../../../packages/dbx-web/src/lib/layout/bar/pagebar.component.ts","../../../../packages/dbx-web/src/lib/layout/bar/pagebar.component.html","../../../../packages/dbx-web/src/lib/layout/bar/bar.layout.module.ts","../../../../packages/dbx-web/src/lib/router/provider/router.provider.config.ts","../../../../packages/dbx-web/src/lib/router/layout/anchor/anchor.component.ts","../../../../packages/dbx-web/src/lib/router/layout/anchor/anchor.component.html","../../../../packages/dbx-web/src/lib/router/layout/anchor/anchor.icon.component.ts","../../../../packages/dbx-web/src/lib/router/layout/anchor/anchor.link.component.ts","../../../../packages/dbx-web/src/lib/router/layout/anchor/anchor.module.ts","../../../../packages/dbx-web/src/lib/router/layout/anchor/anchor.segue.directive.ts","../../../../packages/dbx-web/src/lib/router/layout/anchorlist/anchorlist.component.ts","../../../../packages/dbx-web/src/lib/router/layout/anchorlist/anchorlist.component.html","../../../../packages/dbx-web/src/lib/router/layout/anchorlist/anchorlist.module.ts","../../../../packages/dbx-web/src/lib/screen/screen.ts","../../../../packages/dbx-web/src/lib/screen/screen.service.ts","../../../../packages/dbx-web/src/lib/router/layout/navbar/navbar.component.ts","../../../../packages/dbx-web/src/lib/router/layout/navbar/navbar.component.html","../../../../packages/dbx-web/src/lib/router/layout/navbar/navbar.module.ts","../../../../packages/dbx-web/src/lib/screen/screen.module.ts","../../../../packages/dbx-web/src/lib/router/layout/sidenav/sidenav.component.ts","../../../../packages/dbx-web/src/lib/router/layout/sidenav/sidenav.component.html","../../../../packages/dbx-web/src/lib/router/layout/sidenav/sidenav.button.component.ts","../../../../packages/dbx-web/src/lib/button/button.spacer.component.ts","../../../../packages/dbx-web/src/lib/router/layout/sidenav/sidenav.pagebar.component.ts","../../../../packages/dbx-web/src/lib/router/layout/sidenav/sidenav.page.component.ts","../../../../packages/dbx-web/src/lib/button/button.component.ts","../../../../packages/dbx-web/src/lib/button/button.module.ts","../../../../packages/dbx-web/src/lib/layout/content/content.elevate.directive.ts","../../../../packages/dbx-web/src/lib/layout/content/content.directive.ts","../../../../packages/dbx-web/src/lib/layout/content/content.border.directive.ts","../../../../packages/dbx-web/src/lib/layout/content/content.container.directive.ts","../../../../packages/dbx-web/src/lib/layout/content/content.box.directive.ts","../../../../packages/dbx-web/src/lib/layout/content/content.page.directive.ts","../../../../packages/dbx-web/src/lib/layout/content/content.layout.module.ts","../../../../packages/dbx-web/src/lib/router/layout/sidenav/sidenav.module.ts","../../../../packages/dbx-web/src/lib/router/layout/sidenav/index.ts","../../../../packages/dbx-web/src/lib/router/layout/layout.module.ts","../../../../packages/dbx-web/src/lib/router/provider/ngrouter/anchor.component.ts","../../../../packages/dbx-web/src/lib/router/provider/ngrouter/anchor.component.html","../../../../packages/dbx-web/src/lib/router/provider/ngrouter/angular.router.module.ts","../../../../packages/dbx-web/src/lib/router/provider/uirouter/anchor.component.ts","../../../../packages/dbx-web/src/lib/router/provider/uirouter/anchor.component.html","../../../../packages/dbx-web/src/lib/router/provider/uirouter/uirouter.router.module.ts","../../../../packages/dbx-web/src/lib/layout/block/two.block.component.ts","../../../../packages/dbx-web/src/lib/layout/block/block.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/card/card.box.component.ts","../../../../packages/dbx-web/src/lib/layout/card/card.box.container.component.ts","../../../../packages/dbx-web/src/lib/layout/card/card.box.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.store.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.back.directive.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.component.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.component.html","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.full.left.directive.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.head.component.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.sref.directive.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.right.component.ts","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.right.component.html","../../../../packages/dbx-web/src/lib/layout/column/two/two.column.module.ts","../../../../packages/dbx-web/src/lib/layout/column/one/one.column.component.ts","../../../../packages/dbx-web/src/lib/layout/column/one/one.column.module.ts","../../../../packages/dbx-web/src/lib/layout/column/column.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.store.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.directive.ts","../../../../packages/dbx-web/src/lib/layout/compact/compact.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/flag/flag.component.ts","../../../../packages/dbx-web/src/lib/layout/flag/flag.prompt.component.ts","../../../../packages/dbx-web/src/lib/layout/flag/flag.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/flex/flex.group.directive.ts","../../../../packages/dbx-web/src/lib/layout/flex/flex.size.directive.ts","../../../../packages/dbx-web/src/lib/layout/flex/flex.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/item/item.icon.component.ts","../../../../packages/dbx-web/src/lib/layout/item/item.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/list/list.content.empty.component.ts","../../../../packages/dbx-web/src/lib/loading/loading-progress.component.ts","../../../../packages/dbx-web/src/lib/error/error.component.ts","../../../../packages/dbx-web/src/lib/error/error.component.html","../../../../packages/dbx-web/src/lib/loading/basic-loading.component.ts","../../../../packages/dbx-web/src/lib/loading/basic-loading.component.html","../../../../packages/dbx-web/src/lib/loading/loading.component.ts","../../../../packages/dbx-web/src/lib/layout/list/list.component.ts","../../../../packages/dbx-web/src/lib/layout/list/list.component.html","../../../../packages/dbx-web/src/lib/layout/list/list.directive.ts","../../../../packages/dbx-web/src/lib/error/error.action.directive.ts","../../../../packages/dbx-web/src/lib/error/error.api.ts","../../../../packages/dbx-web/src/lib/error/error.loading.directive.ts","../../../../packages/dbx-web/src/lib/error/error.module.ts","../../../../packages/dbx-web/src/lib/error/state.ts","../../../../packages/dbx-web/src/lib/loading/loading.module.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.value.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.value.directive.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.value.selection.component.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.value.component.ts","../../../../packages/dbx-web/src/lib/layout/list/list.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.directive.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.selection.directive.ts","../../../../packages/dbx-web/src/lib/layout/list/list.view.value.item.directive.ts","../../../../packages/dbx-web/src/lib/layout/section/section.header.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.intro.component.ts","../../../../packages/dbx-web/src/lib/layout/section/subsection.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.page.component.ts","../../../../packages/dbx-web/src/lib/layout/section/section.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/step/step.component.ts","../../../../packages/dbx-web/src/lib/layout/step/step.component.html","../../../../packages/dbx-web/src/lib/layout/step/step.layout.module.ts","../../../../packages/dbx-web/src/lib/layout/text/hint.component.ts","../../../../packages/dbx-web/src/lib/layout/text/label.component.ts","../../../../packages/dbx-web/src/lib/layout/text/linkify.component.ts","../../../../packages/dbx-web/src/lib/layout/text/note.component.ts","../../../../packages/dbx-web/src/lib/layout/text/notice.component.ts","../../../../packages/dbx-web/src/lib/layout/text/ok.component.ts","../../../../packages/dbx-web/src/lib/layout/text/success.component.ts","../../../../packages/dbx-web/src/lib/layout/text/text.chips.component.ts","../../../../packages/dbx-web/src/lib/layout/text/warn.component.ts","../../../../packages/dbx-web/src/lib/layout/text/text.module.ts","../../../../packages/dbx-web/src/lib/layout/layout.module.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.coordinator.service.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.coordinator.component.ts","../../../../packages/dbx-web/src/lib/keypress/keydown.listener.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/abstract.popover.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.content.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.header.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.scroll.content.component.ts","../../../../packages/dbx-web/src/lib/interaction/filter/filter.popover.component.ts","../../../../packages/dbx-web/src/lib/interaction/filter/filter.popover.component.html","../../../../packages/dbx-web/src/lib/interaction/popover/popover.service.ts","../../../../packages/dbx-web/src/lib/interaction/filter/filter.popover.button.directive.ts","../../../../packages/dbx-web/src/lib/interaction/filter/filter.popover.button.component.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.controls.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/abstract.popover.ref.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.action.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.action.button.directive.ts","../../../../packages/dbx-web/src/lib/keypress/keypress.module.ts","../../../../packages/dbx-web/src/lib/action/key.trigger.directive.ts","../../../../packages/dbx-web/src/lib/action/action.snackbar.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.component.html","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.dialog.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.confirm.directive.ts","../../../../packages/dbx-web/src/lib/action/action.confirm.directive.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.box.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.page.component.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.button.confirm.directive.ts","../../../../packages/dbx-web/src/lib/interaction/prompt/prompt.module.ts","../../../../packages/dbx-web/src/lib/action/action.module.ts","../../../../packages/dbx-web/src/lib/interaction/popover/popover.module.ts","../../../../packages/dbx-web/src/lib/interaction/filter/filter.wrapper.component.ts","../../../../packages/dbx-web/src/lib/interaction/filter/filter.wrapper.component.html","../../../../packages/dbx-web/src/lib/interaction/filter/filter.module.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.position.strategy.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.coordinator.service.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.coordinator.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/abstract.popup.directive.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.content.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.controls.buttons.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.controls.component.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.service.ts","../../../../packages/dbx-web/src/lib/interaction/popup/popup.module.ts","../../../../packages/dbx-web/src/lib/interaction/interaction.module.ts","../../../../packages/dbx-web/src/lib/action/transition/transition.safety.dialog.component.ts","../../../../packages/dbx-web/src/lib/action/transition/transition.safety.directive.ts","../../../../packages/dbx-web/src/lib/action/transition/action.transition.module.ts","../../../../packages/dbx-web/src/lib/dbx-web.module.ts","../../../../packages/dbx-web/src/dereekb-dbx-web.ts"],"sourcesContent":["import { Directive, Inject, NgZone, Optional } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { AbstractTransitionWatcherDirective, DbxRouterTransitionService } from '@dereekb/dbx-core';\n\n/**\n * Abstract dialog component that closes when a transition is successful.\n */\n@Directive()\nexport abstract class AbstractDialogDirective<R = any, D = any, T = any> extends AbstractTransitionWatcherDirective {\n\n constructor(\n @Optional() @Inject(MAT_DIALOG_DATA) readonly data: D,\n @Inject(MatDialogRef) readonly dialogRef: MatDialogRef<T, R>,\n dbNgxRouterTransitionService: DbxRouterTransitionService,\n ngZone: NgZone) {\n super(dbNgxRouterTransitionService, ngZone);\n }\n\n protected updateForSuccessfulTransition(): void {\n this.close();\n }\n\n close(value?: R) {\n this.dialogRef.close(value);\n }\n\n}\n","import { Component, Directive, Input } from '@angular/core';\n\nexport type DbxDialogContentContainerWidth = 'normal' | 'wide';\n\n/**\n * Component used to style a dialog.\n */\n@Directive({\n selector: 'dbx-dialog-content,.dbx-dialog-content',\n host: {\n 'class': 'dbx-dialog-content',\n '[class]': `width + '-dialog-content'`\n }\n})\nexport class DbxDialogContentDirective {\n\n @Input()\n width = 'normal'\n\n}\n","import { Destroyable } from '@dereekb/util';\nimport { switchMapMaybeObs, filterMaybe } from '@dereekb/rxjs';\nimport { BehaviorSubject, Observable, combineLatest, distinctUntilChanged, map, switchMap, shareReplay } from 'rxjs';\nimport { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\nexport const DBX_STYLE_DEFAULT_CONFIG_TOKEN = new InjectionToken('DbxStyleServiceDefaultConfig');\n\nexport interface DbxStyleConfig {\n /**\n * Root style name.\n */\n style: string;\n /**\n * Suffixes available to this configuration.\n */\n suffixes?: Set<string>;\n}\n\n/**\n * Used for managing styles within an app.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DbxStyleService implements Destroyable {\n\n private _defaultConfig = new BehaviorSubject<Maybe<DbxStyleConfig>>(undefined);\n private _config = new BehaviorSubject<Maybe<Observable<DbxStyleConfig>>>(undefined);\n private _suffix = new BehaviorSubject<Maybe<string>>(undefined);\n\n readonly config$ = this._config.pipe(\n switchMap((x) => {\n if (x == null) {\n return this._defaultConfig;\n } else {\n return x;\n }\n }),\n filterMaybe(),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly suffix$ = this._suffix.pipe(distinctUntilChanged());\n readonly style$ = this.getStyleWithConfig(this.config$);\n\n constructor(@Optional() @Inject(DBX_STYLE_DEFAULT_CONFIG_TOKEN) defaultConfig?: DbxStyleConfig) {\n this._defaultConfig.next(defaultConfig);\n }\n\n get suffix(): Maybe<string> {\n return this._suffix.value;\n }\n\n set suffix(suffix: Maybe<string>) {\n this._suffix.next(suffix);\n }\n\n getStyleWithConfig(configObs: Observable<DbxStyleConfig>): Observable<string> {\n return combineLatest([configObs, this.suffix$]).pipe(\n map(([config, suffix]) => {\n let style = config.style;\n\n if (suffix != null && config.suffixes) {\n const sanitizedSuffix = ((suffix[0] === '-') ? suffix?.slice(1) : suffix);\n\n if (config.suffixes.has(sanitizedSuffix)) {\n style = `${style}-${sanitizedSuffix}`;\n }\n }\n\n return style!;\n }),\n distinctUntilChanged()\n );\n }\n\n toggleDarkSuffix(dark?: Maybe<boolean>) {\n let toggle: boolean = (dark != null) ? dark : this.suffix !== '-dark';\n\n if (toggle) {\n this.suffix = '-dark';\n } else {\n this.suffix = undefined;\n }\n }\n\n setDefaultConfig(defaultConfig: DbxStyleConfig) {\n this._defaultConfig.next(defaultConfig);\n }\n\n setConfig(config: Observable<DbxStyleConfig>) {\n this._config.next(config);\n }\n\n destroy(): void {\n this._config.complete();\n }\n\n}\n","import { splitCommaSeparatedStringToSet } from '@dereekb/util';\nimport { Observable, distinctUntilChanged, map, shareReplay } from 'rxjs';\nimport { filterMaybe } from '@dereekb/rxjs';\nimport { BehaviorSubject, delay, combineLatest } from 'rxjs';\nimport { Directive, Input, OnDestroy, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { DbxStyleConfig, DbxStyleService } from './style.service';\nimport { AbstractSubscriptionDirective, safeDetectChanges } from '@dereekb/dbx-core';\n\n/**\n * Used to denote which app style to use for all children below this.\n * \n * Will update the parent DbxStyleService.\n */\n@Directive({\n selector: '[dbxSetStyle]',\n host: {\n 'class': 'dbx-style-root',\n '[class]': 'outputStyle'\n }\n})\nexport class DbxSetStyleDirective extends AbstractSubscriptionDirective implements OnDestroy, OnInit {\n\n private _suffixes = new BehaviorSubject<Maybe<string>>(undefined);\n private _style = new BehaviorSubject<Maybe<string>>(undefined);\n\n readonly style$ = this._style.pipe(filterMaybe());\n readonly suffixes$ = this._suffixes.pipe(distinctUntilChanged(), map(splitCommaSeparatedStringToSet));\n\n readonly config$: Observable<DbxStyleConfig> = combineLatest([this.style$, this.suffixes$]).pipe(\n map(([style, suffixes]) => ({ style, suffixes })),\n shareReplay(1)\n );\n\n readonly outputStyle$ = this.styleService.getStyleWithConfig(this.config$);\n outputStyle: string = '';\n\n constructor(readonly styleService: DbxStyleService, readonly cdRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n this.styleService.setConfig(this.config$);\n this.sub = this.outputStyle$.pipe(delay(0)).subscribe((style) => {\n this.outputStyle = style;\n safeDetectChanges(this.cdRef);\n });\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._style.complete();\n }\n\n @Input('dbxSetStyle')\n get style(): string {\n return this._style.value ?? '';\n }\n\n set style(style: string) {\n this._style.next(style);\n }\n\n @Input()\n get suffixes(): Maybe<string> {\n return this._suffixes.value;\n }\n\n set suffixes(suffixes: Maybe<string>) {\n this._suffixes.next(suffixes);\n }\n\n\n\n}\n","import { Directive, ChangeDetectorRef } from '@angular/core';\nimport { DbxStyleService } from './style.service';\nimport { AbstractSubscriptionDirective, safeDetectChanges } from '@dereekb/dbx-core';\nimport { delay } from 'rxjs';\n\n/**\n * Used to retrieve the current app styling from the DbxStyleService.\n */\n@Directive({\n selector: 'dbx-style, [dbx-style], .dbx-style',\n host: {\n '[class]': 'style'\n }\n})\nexport class DbxStyleDirective extends AbstractSubscriptionDirective {\n\n style: string = '';\n\n constructor(readonly styleService: DbxStyleService, private cdRef: ChangeDetectorRef) {\n super(styleService.style$.pipe(delay(0)).subscribe((style) => {\n this.style = style;\n safeDetectChanges(this.cdRef);\n }));\n }\n\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'dbx-spacer, [dbx-spacer]',\n host: {\n 'class': 'dbx-spacer'\n }\n})\nexport class DbxSpacerDirective { }\n","import { Directive, ChangeDetectorRef, Renderer2 } from '@angular/core';\nimport { DbxStyleService } from './style.service';\nimport { AbstractSubscriptionDirective, safeDetectChanges } from '@dereekb/dbx-core';\nimport { delay } from 'rxjs';\n\n/**\n * Used to style the body document using the style provided by DbxStyleService.\n */\n@Directive({\n selector: '[dbxStyleBody]',\n host: {\n '[class]': 'style'\n }\n})\nexport class DbxStyleBodyDirective extends AbstractSubscriptionDirective {\n\n private _currentStyle: string = '';\n\n constructor(private renderer: Renderer2, readonly styleService: DbxStyleService, private cdRef: ChangeDetectorRef) {\n super(styleService.style$.pipe(delay(0)).subscribe((style) => {\n this._currentStyle && this.renderer.removeClass(document.body, this._currentStyle);\n style && this.renderer.addClass(document.body, style);\n this._currentStyle = style;\n safeDetectChanges(this.cdRef);\n }));\n }\n\n}\n","import { DbxSetStyleDirective } from './style.set.directive';\nimport { DbxStyleDirective } from './style.directive';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxSpacerDirective } from './spacer.directive';\nimport { DbxStyleBodyDirective } from './style.body.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbxSpacerDirective,\n DbxStyleDirective,\n DbxSetStyleDirective,\n DbxStyleBodyDirective\n ],\n exports: [\n DbxSpacerDirective,\n DbxStyleDirective,\n DbxSetStyleDirective,\n DbxStyleBodyDirective\n ]\n})\nexport class DbxStyleLayoutModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxDialogContentDirective } from './dialog.content.component';\nimport { DbxStyleLayoutModule } from '../../layout/style/style.layout.module';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule,\n DbxStyleLayoutModule\n ],\n declarations: [\n DbxDialogContentDirective,\n ],\n exports: [\n DbxDialogContentDirective\n ]\n})\nexport class DbxDialogInteractionModule { }\n","import { FlexibleConnectedPositionStrategy, HorizontalConnectionPos, Overlay, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ElementRef } from '@angular/core';\nimport { NgOverlayContainerConfiguration } from 'ng-overlay-container';\n\nexport interface PopoverPositionStrategyConfig {\n overlay: Overlay;\n elementRef: ElementRef;\n config: NgOverlayContainerConfiguration;\n}\n\nexport class PopoverPositionStrategy {\n\n static make(overlay: Overlay, elementRef: ElementRef, config: NgOverlayContainerConfiguration): FlexibleConnectedPositionStrategy {\n\n const [originX, origin2ndX, origin3rdX]: HorizontalConnectionPos[] =\n config.originX === 'end' ? ['end', 'start', 'center'] :\n config.originX === 'start' ? ['start', 'end', 'center'] : ['center', 'start', 'end'];\n\n const overlayX = originX;\n const [overlayY, overlayFallbackY]: VerticalConnectionPos[] =\n config.overlayY === 'bottom' ? ['bottom', 'top'] : ['top', 'bottom'];\n\n const [originY, originFallbackY] = [overlayFallbackY, overlayY];\n const { offsetX = 0, offsetY = 0 } = config;\n\n return overlay\n .position()\n .flexibleConnectedTo(elementRef)\n .withLockedPosition(true)\n .withPositions([\n {\n originX,\n originY,\n overlayX,\n overlayY,\n offsetY,\n },\n {\n originX: origin2ndX,\n originY,\n overlayX: origin2ndX,\n overlayY,\n offsetY,\n },\n {\n originX,\n originY: originFallbackY,\n overlayX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n {\n originX: origin2ndX,\n originY: originFallbackY,\n overlayX: origin2ndX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n {\n originX: origin3rdX,\n originY,\n overlayX: origin3rdX,\n overlayY,\n offsetY,\n },\n {\n originX: origin3rdX,\n originY: originFallbackY,\n overlayX: origin3rdX,\n overlayY: overlayFallbackY,\n offsetY: -offsetY,\n },\n ])\n .withDefaultOffsetX(offsetX)\n .withDefaultOffsetY(offsetY);\n }\n\n}\n","\nimport { Component, Input, Directive } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { DbxBarColor } from './bar';\n\n/**\n * Acts as a wrapper for content distributed along a bar.\n */\n@Directive({\n selector: 'dbx-bar',\n host: {\n 'class': 'dbx-bar',\n '[class.dbx-primary-bg]': 'color === \"primary\"',\n '[class.dbx-accent-bg]': 'color === \"accent\"',\n '[class.dbx-warn-bg]': 'color === \"warn\"'\n }\n})\nexport class DbxBarDirective {\n\n @Input()\n color?: Maybe<DbxBarColor>;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { DbxBarColor } from './bar';\n\n/**\n * Acts as a divider between content and centers a label within a background.\n */\n@Component({\n selector: 'dbx-bar-header',\n template: `\n <dbx-bar [color]=\"color\">\n <mat-icon class=\"button-spacer\" *ngIf=\"icon\">{{ icon }}</mat-icon>\n <span *ngIf=\"text\">{{ text }}</span>\n </dbx-bar>\n `,\n host: {\n 'class': 'dbx-bar-header dbx-hint'\n }\n})\nexport class DbxBarHeaderComponent {\n\n @Input()\n text?: Maybe<string>;\n\n @Input()\n icon?: Maybe<string>;\n\n @Input()\n color?: Maybe<DbxBarColor>;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { DbxBarColor } from './bar';\n\n@Component({\n selector: 'dbx-pagebar',\n templateUrl: './pagebar.component.html'\n})\nexport class DbxPagebarComponent {\n\n @Input()\n color?: Maybe<DbxBarColor>;\n\n}\n","<mat-toolbar class=\"dbx-pagebar\" [ngClass]=\"(color) ? ('dbx-bar-' + color) : ''\">\n <ng-content select=\"[left]\"></ng-content>\n <span class=\"spacer\"></span>\n <ng-content select=\"[right]\"></ng-content>\n</mat-toolbar>\n","import { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxBarDirective } from './bar.directive';\nimport { DbxBarHeaderComponent } from './bar.header.component';\nimport { DbxPagebarComponent } from './pagebar.component';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule,\n MatToolbarModule,\n MatIconModule\n ],\n declarations: [\n DbxBarDirective,\n DbxBarHeaderComponent,\n DbxPagebarComponent\n ],\n exports: [\n DbxBarDirective,\n DbxBarHeaderComponent,\n DbxPagebarComponent\n ]\n})\nexport class DbxBarLayoutModule { }\n","import { DbxInjectedComponentConfig } from \"@dereekb/dbx-core\";\n\nexport abstract class DbxRouterWebProviderConfig {\n\n /**\n * Component used by the Anchor component to render a SegueRef link.\n */\n abstract anchorSegueRefComponent: DbxInjectedComponentConfig;\n\n}\n","import { skipFirstMaybe } from '@dereekb/rxjs';\nimport { Input, Component, TemplateRef, ViewChild } from '@angular/core';\nimport { AbstractDbxAnchorDirective, DbxInjectedComponentConfig } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\nimport { BehaviorSubject } from 'rxjs';\nimport { map, distinctUntilChanged, shareReplay } from 'rxjs/operators';\nimport { DbxRouterWebProviderConfig } from '../../provider/router.provider.config';\n\n/**\n * Component that renders an anchor element depending on the input.\n */\n@Component({\n selector: 'dbx-anchor, [dbx-anchor]',\n templateUrl: './anchor.component.html',\n host: {\n class: 'd-inline dbx-anchor',\n 'dbx-anchor-block': 'block'\n }\n})\nexport class DbxAnchorComponent extends AbstractDbxAnchorDirective {\n\n private _templateRef = new BehaviorSubject<Maybe<TemplateRef<any>>>(undefined);\n readonly templateRef$ = this._templateRef.pipe(skipFirstMaybe(), shareReplay(1));\n\n @Input()\n public block?: boolean;\n\n @ViewChild('content', { read: TemplateRef })\n get templateRef(): Maybe<TemplateRef<any>> {\n return this._templateRef.value;\n }\n\n set templateRef(templateRef: Maybe<TemplateRef<any>>) {\n this._templateRef.next(templateRef);\n }\n\n readonly url$ = this.anchor$.pipe(map(x => x?.url), distinctUntilChanged(), shareReplay(1));\n readonly target$ = this.anchor$.pipe(map(x => x?.target), distinctUntilChanged(), shareReplay(1));\n\n constructor(private readonly dbNgxRouterWebProviderConfig: DbxRouterWebProviderConfig) {\n super();\n }\n\n get srefAnchorConfig(): DbxInjectedComponentConfig {\n return this.dbNgxRouterWebProviderConfig.anchorSegueRefComponent;\n }\n\n clickAnchor(event?: Maybe<MouseEvent>): void {\n this.anchor?.onClick?.(event);\n }\n\n}\n","<ng-container [ngSwitch]=\"(type$ | async)\">\n <!-- Plain -->\n <ng-container *ngSwitchCase=\"0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <!-- Click -->\n <a class=\"dbx-anchor-a dbx-anchor-click\" (click)=\"clickAnchor()\" *ngSwitchCase=\"1\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <!-- Router -->\n <dbx-injected-content [config]=\"srefAnchorConfig\" *ngSwitchCase=\"2\">\n <!-- Injected in child. -->\n </dbx-injected-content>\n <!-- Href -->\n <a class=\"dbx-anchor-a dbx-anchor-href\" [href]=\"url$ | async\" [attr.target]=\"target$ | async\"\n *ngSwitchCase=\"3\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <!-- Disabled or None -->\n <a class=\"dbx-anchor-a dbx-anchor-disabled\" *ngSwitchDefault>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n</ng-container>\n<!-- Template content -->\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { ClickableIconAnchorLink } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Component that displays an anchor and a mat-button.\n */\n@Component({\n selector: 'dbx-anchor-icon',\n template: `\n <dbx-anchor [anchor]=\"anchor\">\n <button mat-icon-button><mat-icon>{{ anchor?.icon }}</mat-icon></button>\n </dbx-anchor>\n`\n})\nexport class DbxAnchorIconComponent {\n\n @Input()\n anchor: Maybe<ClickableIconAnchorLink>;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { ClickableAnchor } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Pre-styled text that can link to either a website or a ref using a dbx-anchor.\n */\n@Component({\n selector: 'dbx-link',\n template: `\n <dbx-anchor [anchor]=\"anchor\">\n <ng-content></ng-content>\n </dbx-anchor>\n `,\n host: {\n 'class': 'd-inline dbx-link'\n }\n})\nexport class DbxAnchorLinkComponent {\n\n @Input()\n anchor?: ClickableAnchor;\n\n @Input()\n set ref(ref: Maybe<string>) {\n if (ref) {\n this.anchor = {\n ref\n };\n }\n }\n\n @Input()\n set href(href: Maybe<string>) {\n if (href) {\n this.anchor = {\n url: href\n };\n }\n }\n\n}\n","import { DbxInjectedComponentModule } from '@dereekb/dbx-core';\nimport { NgModule } from '@angular/core';\nimport { DbxAnchorComponent } from './anchor.component';\nimport { CommonModule } from '@angular/common';\nimport { DbxAnchorIconComponent } from './anchor.icon.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DbxAnchorLinkComponent } from './anchor.link.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n DbxInjectedComponentModule\n ],\n declarations: [\n DbxAnchorComponent,\n DbxAnchorIconComponent,\n DbxAnchorLinkComponent\n ],\n exports: [\n DbxAnchorComponent,\n DbxAnchorIconComponent,\n DbxAnchorLinkComponent\n ]\n})\nexport class DbxAnchorModule { }\n","import { Directive } from \"@angular/core\";\nimport { DbxInjectedTemplateConfig } from \"@dereekb/dbx-core\";\nimport { Observable } from \"rxjs\";\nimport { distinctUntilChanged, shareReplay, map, share } from \"rxjs/operators\";\nimport { DbxAnchorComponent } from \"./anchor.component\";\n\n/**\n * Abstract implementation\n */\n@Directive()\nexport abstract class AbstractDbxSegueAnchorDirective {\n\n readonly target$ = this.parent.target$;\n\n readonly ref$ = this.parent.anchor$.pipe(map(x => x?.ref), distinctUntilChanged(), shareReplay(1));\n readonly refParams$ = this.parent.anchor$.pipe(map(x => x?.refParams), distinctUntilChanged(), shareReplay(1));\n readonly refOptions$ = this.parent.anchor$.pipe(map(x => x?.refOptions), distinctUntilChanged(), shareReplay(1));\n\n constructor(readonly parent: DbxAnchorComponent) { }\n\n readonly template$: Observable<DbxInjectedTemplateConfig> = this.parent.templateRef$.pipe(\n distinctUntilChanged(),\n map(templateRef => ({\n templateRef\n })),\n shareReplay(1)\n );\n\n get anchor() {\n return this.parent.anchor;\n }\n\n}\n","import { OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { BehaviorSubject, map, shareReplay, distinctUntilChanged } from 'rxjs';\nimport { Input, Component } from '@angular/core';\nimport { ClickableAnchorLinkTree, expandClickableAnchorLinkTrees } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Component that displays a list of ClickableAnchorLink values within a MatNavList.\n */\n@Component({\n selector: 'dbx-anchor-list',\n templateUrl: './anchorlist.component.html'\n})\nexport class DbxAnchorListComponent implements OnDestroy {\n\n private _anchors = new BehaviorSubject<ClickableAnchorLinkTree[]>([]);\n\n readonly expandedAnchors$ = this._anchors.pipe(distinctUntilChanged(), map(x => expandClickableAnchorLinkTrees(x)), shareReplay(1));\n\n @Input()\n set anchors(anchors: Maybe<ClickableAnchorLinkTree[]>) {\n this._anchors.next(anchors ?? []);\n }\n\n ngOnDestroy(): void {\n this._anchors.complete();\n }\n\n}\n","<mat-nav-list class=\"dbx-anchor-list\">\n <ng-container *ngFor=\"let expanded of expandedAnchors$ | async; let last = last;\">\n <span dbx-anchor [anchor]=\"expanded.value\">\n <a mat-list-item [ngClass]=\"(expanded.depth) ? 'dbx-anchor-list-child' : 'dbx-anchor-list-root'\">\n <mat-icon mat-list-icon *ngIf=\"expanded.value.icon\">{{ expanded.value.icon }}</mat-icon>\n <!-- TODO: Add an icon from a letter if anchor.icon is unavailable. -->\n <div mat-line>{{ expanded.value.title }}</div>\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </a>\n </span>\n </ng-container>\n</mat-nav-list>\n","import { MatListModule } from '@angular/material/list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { DbxAnchorModule } from '../anchor/anchor.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { DbxAnchorListComponent } from './anchorlist.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatTabsModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n MatMenuModule,\n DbxAnchorModule,\n ],\n declarations: [\n DbxAnchorListComponent\n ],\n exports: [\n DbxAnchorListComponent\n ]\n})\nexport class DbxAnchorListModule { }\n","\n/**\n * Set of screen media width types. Their pixel sizes correspond with the DbxScreenMediaService's configuration.\n * \n * Values:\n * - micro: Screen is considered mobile.\n * - small: Screen is consider small, but larger than mobile.\n * - tablet: Screen is considered tablet size.\n * - large: Screen is considered large than a tablet, but not full size.\n * - full: Screen is greater than large.\n */\nexport type ScreenMediaWidthType = 'micro' | 'small' | 'tablet' | 'large' | 'full';\n\nexport const SCREEN_MEDIA_WIDTH_TYPE_SIZE_MAP = {\n 'micro': 0,\n 'small': 1,\n 'tablet': 2,\n 'large': 3,\n 'full': 4\n}\n\n/**\n * Describes the current screen's vertical space.\n * \n * Values: \n * - tiny: Screen height is tiny, potentially the size of the navigation alone.\n * - normal: Screen has a normal height.\n */\nexport type ScreenMediaHeightType = 'tiny' | 'normal';\n\n/**\n * Compares the breakpoint with the current width and determines if it is \"active\" or not.\n * \n * The current is considered active if it is bigger or equal to the breakpoint.\n * \n * @param current \n * @param breakpoint \n */\nexport function screenMediaWidthTypeIsActive(current: ScreenMediaWidthType, breakpoint: ScreenMediaWidthType) {\n return compareScreenMediaWidthTypes(current, breakpoint, (a, b) => a >= b);\n}\n\nexport function compareScreenMediaWidthTypes(a: ScreenMediaWidthType, b: ScreenMediaWidthType, compare: (a: number, b: number) => boolean) {\n return compare(SCREEN_MEDIA_WIDTH_TYPE_SIZE_MAP[a], SCREEN_MEDIA_WIDTH_TYPE_SIZE_MAP[b]);\n}\n","import { Destroyable } from '@dereekb/util';\nimport { MediaMatcher } from \"@angular/cdk/layout\";\nimport { ObservableGetter, asObservable, initialize, tapFirst } from '@dereekb/rxjs';\nimport { Subject, map, shareReplay, distinctUntilChanged, throttleTime, Observable, combineLatest } from \"rxjs\";\nimport { ScreenMediaWidthType, ScreenMediaHeightType, screenMediaWidthTypeIsActive } from \"./screen\";\nimport { Injectable } from '@angular/core';\n\n/**\n * ScreenMediaService configuration.\n */\nexport abstract class DbxScreenMediaServiceConfig {\n /**\n * The maximum size of a micro screen. Any size bigger than this is considered a small screen or larger.\n */\n abstract microScreenWidthMax: number;\n /**\n * The maximum size of a small screen. Any size bigger than this is considered a tablet screen or larger.\n */\n abstract smallScreenWidthMax: number;\n /**\n * The maximum size of a tablet screen. Any size bigger than this is considered a large screen or larger.\n */\n abstract tabletScreenWidthMax: number;\n /**\n * The maximum size of a large screen. Any size bigger than this is considered full.\n */\n abstract largeScreenWidthMax: number;\n /**\n * The maximum size of a tiny screen. Any size bigger than this is considered normal.\n */\n abstract tinyScreenHeightMax: number;\n}\n\nexport const DEFAULT_SCREEN_MEDIA_SERVICE_CONFIG: DbxScreenMediaServiceConfig = {\n microScreenWidthMax: 360,\n smallScreenWidthMax: 520,\n tabletScreenWidthMax: 786,\n largeScreenWidthMax: 1280,\n tinyScreenHeightMax: 280\n}\n\n/**\n * Service that emits the current view type based on the configuration.\n */\n@Injectable()\nexport class DbxScreenMediaService implements Destroyable {\n\n private _microQuery: MediaQueryList;\n private _smallQuery: MediaQueryList;\n private _tabletQuery: MediaQueryList;\n private _largeQuery: MediaQueryList;\n\n private _tinyHeightQuery: MediaQueryList;\n\n private _updateWidth = new Subject<void>();\n private _updateHeight = new Subject<void>();\n\n readonly widthType$: Observable<ScreenMediaWidthType> = this._updateWidth.pipe(\n initialize(() => this._updateWidth.next()),\n throttleTime(100, undefined, { leading: true, trailing: true }),\n map(() => this._readWidthType()),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly heightType$: Observable<ScreenMediaHeightType> = this._updateWidth.pipe(\n initialize(() => this._updateHeight.next()),\n throttleTime(100, undefined, { leading: true, trailing: true }),\n map(() => this._readHeightType()),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n constructor(private readonly _media: MediaMatcher, config: DbxScreenMediaServiceConfig) {\n const { microScreenWidthMax, smallScreenWidthMax, tabletScreenWidthMax, largeScreenWidthMax } = config;\n\n this._microQuery = this._media.matchMedia(`screen and (max-width:${microScreenWidthMax}px)`);\n this._smallQuery = this._media.matchMedia(`screen and (max-width:${smallScreenWidthMax}px)`);\n this._tabletQuery = this._media.matchMedia(`screen and (max-width:${tabletScreenWidthMax}px)`);\n this._largeQuery = this._media.matchMedia(`screen and (max-width:${largeScreenWidthMax}px)`);\n\n this._tinyHeightQuery = this._media.matchMedia(`screen and (max-width:${largeScreenWidthMax}px)`);\n\n const service = this;\n const widthHandler: (ev: MediaQueryListEvent) => void = () => service._updateWidth.next();\n const heightHandler: (ev: MediaQueryListEvent) => void = () => service._updateHeight.next();\n\n this._microQuery.onchange = widthHandler;\n this._smallQuery.onchange = widthHandler;\n this._tabletQuery.onchange = widthHandler;\n this._largeQuery.onchange = widthHandler;\n this._tinyHeightQuery.onchange = heightHandler;\n }\n\n destroy(): void {\n this._microQuery.onchange = null;\n this._smallQuery.onchange = null;\n this._tabletQuery.onchange = null;\n this._largeQuery.onchange = null;\n this._updateWidth.complete();\n }\n\n /**\n * Returns an observable that detects whether or no the current width is greater or equal to the given breakpoint.\n * \n * @param inputBreakpoint \n * @returns \n */\n isBreakpointActive(inputBreakpoint: ObservableGetter<ScreenMediaWidthType>): Observable<boolean> {\n return combineLatest([this.widthType$, asObservable(inputBreakpoint)]).pipe(\n map(([current, breakpoint]) => screenMediaWidthTypeIsActive(current, breakpoint)),\n distinctUntilChanged(),\n shareReplay(1)\n );\n }\n\n private _readWidthType(): ScreenMediaWidthType {\n let width: ScreenMediaWidthType;\n\n if (this._microQuery.matches) {\n width = 'micro';\n } else if (this._smallQuery.matches) {\n width = 'small';\n } else if (this._tabletQuery.matches) {\n width = 'tablet';\n } else if (this._largeQuery.matches) {\n width = 'large';\n } else {\n width = 'full';\n }\n\n return width;\n }\n\n private _readHeightType(): ScreenMediaHeightType {\n if (this._tinyHeightQuery) {\n return 'tiny';\n } else {\n return 'normal';\n }\n }\n\n}\n","import { Observable } from 'rxjs';\nimport { ScreenMediaWidthType, screenMediaWidthTypeIsActive } from './../../../screen/screen';\nimport { DbxScreenMediaService } from '../../../screen/screen.service';\nimport { applyBestFit, Maybe } from '@dereekb/util';\nimport { Input, Component, OnDestroy, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core';\nimport { ClickableAnchorLink, DbxRouterService, DbxRouterTransitionService, AbstractTransitionDirective, tapDetectChanges } from '@dereekb/dbx-core';\nimport { BehaviorSubject, combineLatest, map, shareReplay, distinctUntilChanged } from 'rxjs';\nimport { HorizontalConnectionPos } from '@angular/cdk/overlay';\n\ninterface NavAnchorLink {\n selected: boolean;\n anchor: ClickableAnchorLink;\n}\n\nexport type NavBarContentAlign = 'center' | 'left' | 'right';\nexport type NavbarMode = 'bar' | 'button';\n\n/**\n * Component that displays a navbar.\n */\n@Component({\n selector: 'dbx-navbar',\n templateUrl: './navbar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'dbx-navbar'\n }\n})\nexport class DbxNavbarComponent extends AbstractTransitionDirective implements OnDestroy {\n\n @Input()\n navAlign: HorizontalConnectionPos = 'center';\n\n private _inputMode = new BehaviorSubject<Maybe<NavbarMode>>(undefined);\n private _breakpoint = new BehaviorSubject<ScreenMediaWidthType>('large');\n private _anchors = new BehaviorSubject<ClickableAnchorLink[]>([]);\n\n readonly isBreakpointActive$ = this._dbxScreenMediaService.isBreakpointActive(this._breakpoint);\n\n readonly mode$ = combineLatest([this._inputMode, this.isBreakpointActive$]).pipe(\n map(([inputMode, breakpointActive]) => {\n return (breakpointActive) ? (inputMode ?? 'bar') : 'button';\n }),\n distinctUntilChanged(),\n tapDetectChanges(this.cdRef),\n shareReplay(1)\n );\n\n readonly anchors$: Observable<NavAnchorLink[]> = combineLatest([this._anchors, this.initAndUpdateOnTransitionSuccess$]).pipe(\n map(([anchors]) => {\n const results = anchors.map((anchor) => {\n let selected = this._dbxRouterService.isActive(anchor);\n\n return {\n selected,\n anchor\n };\n });\n\n return applyBestFit(results, (x) => x.selected, (a, b) => this._dbxRouterService.comparePrecision(a.anchor, b.anchor), (loser) => ({ ...loser, selected: false }));\n }),\n tapDetectChanges(this.cdRef),\n shareReplay(1)\n );\n\n constructor(\n dbxRouterTransitionService: DbxRouterTransitionService,\n private cdRef: ChangeDetectorRef,\n private readonly _dbxScreenMediaService: DbxScreenMediaService,\n private readonly _dbxRouterService: DbxRouterService\n ) {\n super(dbxRouterTransitionService);\n }\n\n ngOnDestroy(): void {\n this._inputMode.complete();\n this._breakpoint.complete();\n this._anchors.complete();\n }\n\n // MARK: Accessors\n @Input()\n public set anchors(anchors: Maybe<ClickableAnchorLink[]>) {\n this._anchors.next(anchors ?? []);\n }\n\n @Input()\n public set mode(mode: Maybe<NavbarMode>) {\n this._inputMode.next(mode);\n }\n\n @Input()\n public set breakpoint(breakpoint: ScreenMediaWidthType) {\n this._breakpoint.next(breakpoint);\n }\n\n}\n","<ng-container [ngSwitch]=\"mode$ | async\">\n <!-- Button -->\n <ng-container *ngSwitchCase=\"'button'\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" class=\"nav-menu-button\" aria-label=\"open navigation\">\n <mat-icon>menu</mat-icon>\n </button>\n <mat-menu #menu>\n <dbx-anchor *ngFor=\"let x of anchors$ | async\" [anchor]=\"x.anchor\">\n <button mat-menu-item [ngClass]=\"(x.selected) ? 'active' : ''\">{{ x.anchor.title }}</button>\n </dbx-anchor>\n </mat-menu>\n </ng-container>\n <!-- Bar -->\n <nav *ngSwitchDefault mat-tab-nav-bar [attr.mat-align-tabs]=\"navAlign\">\n <dbx-anchor *ngFor=\"let x of anchors$ | async\" [anchor]=\"x.anchor\">\n <a mat-tab-link [active]=\"x.selected\">{{ x.anchor.title }}</a>\n </dbx-anchor>\n </nav>\n</ng-container>\n","import { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { DbxAnchorModule } from '../anchor/anchor.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { DbxNavbarComponent } from './navbar.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatTabsModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n DbxAnchorModule,\n ],\n declarations: [\n DbxNavbarComponent\n ],\n exports: [\n DbxNavbarComponent\n ]\n})\nexport class DbxNavbarModule { }\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DbxScreenMediaService, DbxScreenMediaServiceConfig, DEFAULT_SCREEN_MEDIA_SERVICE_CONFIG } from './screen.service';\n\n@NgModule()\nexport class DbxScreenModule {\n\n static forRoot(config: DbxScreenMediaServiceConfig = DEFAULT_SCREEN_MEDIA_SERVICE_CONFIG): ModuleWithProviders<DbxScreenModule> {\n return {\n ngModule: DbxScreenModule,\n providers: [\n {\n provide: DbxScreenMediaServiceConfig,\n useValue: config\n },\n DbxScreenMediaService\n ]\n };\n }\n\n}\n","import { NgZone, OnDestroy, OnInit, Component, Input, ViewChild } from '@angular/core';\nimport { MatDrawerMode, MatSidenav } from '@angular/material/sidenav';\nimport { DbxScreenMediaService } from '../../../screen';\nimport { AbstractTransitionWatcherDirective, DbxRouterTransitionService, ClickableAnchorLinkTree } from '@dereekb/dbx-core';\nimport { SubscriptionObject } from '@dereekb/rxjs';\nimport { Maybe } from '@dereekb/util';\nimport { distinctUntilChanged, map, shareReplay, Observable, first } from 'rxjs';\n\nexport enum SideNavDisplayMode {\n NONE = 'none',\n MOBILE = 'mobile',\n ICON = 'icon',\n FULL = 'full'\n}\n\nexport interface DbxSidenavSidebarState {\n mode: SideNavDisplayMode;\n drawer: MatDrawerMode;\n open?: boolean;\n}\n\n/**\n * Navigation component that sits at the side of an app.\n */\n@Component({\n selector: 'dbx-sidenav',\n exportAs: 'sidenav',\n templateUrl: './sidenav.component.html'\n})\nexport class DbxSidenavComponent extends AbstractTransitionWatcherDirective implements OnInit, OnDestroy {\n\n @Input()\n anchors?: Maybe<ClickableAnchorLinkTree[]>;\n\n @ViewChild(MatSidenav, { static: true })\n readonly sidenav!: MatSidenav;\n\n readonly mode$: Observable<SideNavDisplayMode> = this._screenMediaService.widthType$.pipe(\n distinctUntilChanged(),\n map((width) => {\n let mode!: SideNavDisplayMode;\n\n switch (width) {\n case 'micro':\n case 'small':\n mode = SideNavDisplayMode.MOBILE;\n break;\n case 'tablet':\n mode = SideNavDisplayMode.ICON;\n break;\n case 'large':\n case 'full':\n mode = SideNavDisplayMode.FULL;\n break;\n }\n\n return mode;\n }),\n shareReplay(1)\n );\n\n readonly disableBackdrop$: Observable<boolean> = this.mode$.pipe(\n map(x => x !== SideNavDisplayMode.MOBILE),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly sizeClass$: Observable<string> = this.mode$.pipe(\n map((mode) => `dbx-sidenav-${mode}`),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly state$: Observable<DbxSidenavSidebarState> = this.mode$.pipe(\n map((mode) => {\n let drawer!: MatDrawerMode;\n let open!: boolean;\n\n switch (mode) {\n case SideNavDisplayMode.MOBILE:\n drawer = 'over';\n open = false;\n break;\n case SideNavDisplayMode.ICON:\n case SideNavDisplayMode.FULL:\n drawer = 'side';\n open = true;\n break;\n }\n\n return {\n mode,\n drawer,\n open\n };\n }),\n shareReplay(1)\n );\n\n readonly drawer$: Observable<MatDrawerMode> = this.state$.pipe(map(x => x.drawer), distinctUntilChanged(), shareReplay(1));\n\n private _watcherSub = new SubscriptionObject();\n private _stateSub = new SubscriptionObject();\n\n constructor(\n dbxRouterTransitionService: DbxRouterTransitionService,\n ngZone: NgZone,\n private _screenMediaService: DbxScreenMediaService) {\n super(dbxRouterTransitionService, ngZone);\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n this._stateSub.subscription = this.state$.subscribe((state) => {\n if (state.open != null) {\n this._toggleNav(state.open, true);\n }\n });\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._watcherSub.destroy();\n this._stateSub.destroy();\n }\n\n protected updateForSuccessfulTransition(): void {\n this.closeNav();\n }\n\n closeNav(): void {\n this.toggleNav(false);\n }\n\n toggleNav(open?: boolean): void {\n this._toggleNav(open);\n }\n\n private _toggleNav(toggleOpen = !this.sidenav.opened, forced = false): void {\n this.state$.pipe(first()).subscribe(({ mode }) => {\n this.ngZone.run(() => {\n let open: Maybe<boolean>;\n\n if (!forced) {\n switch (mode) {\n case SideNavDisplayMode.MOBILE:\n open = toggleOpen;\n break;\n case SideNavDisplayMode.ICON:\n case SideNavDisplayMode.FULL:\n // Do nothing. Should be always open.\n break;\n }\n } else {\n open = toggleOpen;\n }\n\n if (open != null) {\n if (open) {\n this.sidenav.open();\n } else {\n this.sidenav.close();\n }\n }\n });\n });\n }\n\n}\n","<mat-sidenav-container class=\"dbx-sidenav\" [ngClass]=\"(sizeClass$ | async) ?? ''\">\n <mat-sidenav class=\"dbx-sidenav-nav\" [disableClose]=\"disableBackdrop$ | async\" [mode]=\"(drawer$ | async)!\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-anchor-list class=\"dbx-sidenav-anchor-list\" [anchors]=\"anchors\"></dbx-anchor-list>\n <span class=\"spacer\"></span>\n <ng-content select=\"[bottom]\"></ng-content>\n <div class=\"dbx-sidenav-nav-end\"></div>\n </mat-sidenav>\n <mat-sidenav-content>\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n","import { Component } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { DbxSidenavComponent, SideNavDisplayMode } from './sidenav.component';\n\n/**\n * Button used to interface with a parent sidenav.\n */\n@Component({\n selector: 'dbx-sidenav-button',\n template: `\n <button class=\"dbx-sidenav-button\" mat-icon-button *ngIf=\"showMenuButton$ | async\" (click)=\"toggleNav()\" aria-label=\"open sidenav button\">\n <mat-icon>view_sidebar</mat-icon>\n </button>\n `\n})\nexport class DbxSidenavButtonComponent {\n\n readonly mode$ = this.parent.mode$;\n readonly showMenuButton$ = this.mode$.pipe(map(x => x === SideNavDisplayMode.MOBILE));\n\n constructor(readonly parent: DbxSidenavComponent) { }\n\n toggleNav() {\n this.parent.toggleNav();\n }\n\n}\n","import { Component } from '@angular/core';\n\n/**\n * Button spacer component.\n */\n@Component({\n selector: 'dbx-button-spacer',\n template: `<span class=\"dbx-button-spacer\"></span>`\n})\nexport class DbxButtonSpacerComponent { }\n","import { Component, Input } from '@angular/core';\nimport { DbxPagebarComponent } from '../../../layout/bar/pagebar.component';\n\n/**\n * Pre-configured pagebar used with DbxSidenavComponent.\n */\n@Component({\n selector: 'dbx-sidenav-pagebar',\n template: `\n <dbx-pagebar class=\"dbx-sidenav-pagebar\" [color]=\"color\">\n <span left>\n <dbx-sidenav-button></dbx-sidenav-button>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-content left></ng-content>\n </span>\n <ng-content right></ng-content>\n </dbx-pagebar>\n `\n})\nexport class DbxSidenavPagebarComponent extends DbxPagebarComponent { }\n","import { BehaviorSubject, switchMap, shareReplay, map, of } from 'rxjs';\nimport { Component, Input } from '@angular/core';\nimport { DbxSidenavComponent, SideNavDisplayMode } from './sidenav.component';\nimport { Maybe } from '@dereekb/util';\nimport { DbxBarColor } from '../../../layout/bar/bar';\n\n/**\n * Pre-configured page used with DbxSidenavComponent.\n * \n * Can optionally be configured to only show the pagebar while in mobile mode.\n */\n@Component({\n selector: 'dbx-sidenav-page',\n template: `\n <div>\n <dbx-sidenav-pagebar [color]=\"color\" [ngClass]=\"(hidePagebar$ | async) ? 'dbx-pagebar-hide' : ''\">\n <ng-content left select=\"[navLeft]\"></ng-content>\n <ng-content select=\"[navRight]\"></ng-content>\n </dbx-sidenav-pagebar>\n <div class=\"dbx-content-page dbx-sidenav-page-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class DbxSidenavPageComponent {\n\n @Input()\n color?: Maybe<DbxBarColor>;\n\n private _mobileOnly = new BehaviorSubject<boolean>(false);\n\n constructor(readonly parent: DbxSidenavComponent) { }\n\n readonly hidePagebar$ = this._mobileOnly.pipe(\n switchMap((mobileOnly) => (mobileOnly) ? this.parent.mode$.pipe(map(x => x !== SideNavDisplayMode.MOBILE)) : of(true)),\n shareReplay(1)\n );\n\n @Input()\n get mobileOnly(): boolean {\n return this._mobileOnly.value;\n }\n\n set mobileOnly(mobileOnly: boolean) {\n this._mobileOnly.next(mobileOnly);\n }\n\n}","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProvideDbxButton, AbstractDbxButtonDirective } from '@dereekb/dbx-core';\nimport { MatProgressButtonOptions } from 'mat-progress-buttons';\n\nexport enum DbxButtonDisplayType {\n RAISED,\n STROKED,\n FLAT\n}\n\n/**\n * Complex button that supports loading states.\n */\n@Component({\n selector: 'dbx-button',\n template: `\n <mat-spinner-button class=\"page-button\" (btnClick)=\"clickButton()\" [options]=\"btnOptions\"></mat-spinner-button>\n `,\n // TODO: styleUrls: ['./button.scss'],\n providers: ProvideDbxButton(DbxButtonComponent)\n})\nexport class DbxButtonComponent extends AbstractDbxButtonDirective {\n\n @Input()\n type?: DbxButtonDisplayType;\n\n @Input()\n get raised(): boolean {\n return this.type === DbxButtonDisplayType.RAISED;\n }\n\n set raised(raised: boolean) {\n if (raised) {\n this.type = DbxButtonDisplayType.RAISED;\n }\n }\n\n @Input()\n get stroked(): boolean {\n return this.type === DbxButtonDisplayType.STROKED;\n }\n\n set stroked(stroked: boolean) {\n if (stroked) {\n this.type = DbxButtonDisplayType.STROKED;\n }\n }\n\n @Input()\n get flat(): boolean {\n return this.type === DbxButtonDisplayType.FLAT;\n }\n\n set flat(flat: boolean) {\n if (flat) {\n this.type = DbxButtonDisplayType.FLAT;\n }\n }\n\n @Input()\n public color: ThemePalette = 'primary';\n\n public get btnOptions(): MatProgressButtonOptions {\n const buttonIcon = (this.icon) ? {\n fontIcon: this.icon\n } : undefined;\n\n return {\n fab: false,\n active: this.working,\n buttonIcon,\n customClass: 'dbx-button ' + ((buttonIcon && !this.text) ? 'dbx-button-no-text' : ''),\n // buttonIcon: icon,\n text: this.text ?? '',\n buttonColor: this.color,\n barColor: 'accent',\n raised: this.raised,\n stroked: this.stroked,\n flat: this.flat,\n mode: 'indeterminate',\n spinnerSize: 18,\n spinnerColor: 'accent', // TODO: Set spinner color to opposite of button color.\n // Only disabled if we're not working, in order to show the animation.\n disabled: !this.working && this.disabled\n };\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { MatProgressButtonsModule } from 'mat-progress-buttons';\nimport { DbxButtonComponent } from './button.component';\nimport { DbxButtonSpacerComponent } from './button.spacer.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [\n CommonModule,\n MatProgressButtonsModule\n ],\n declarations: [\n DbxButtonComponent,\n DbxButtonSpacerComponent\n ],\n exports: [\n MatProgressButtonsModule,\n DbxButtonComponent,\n DbxButtonSpacerComponent\n ],\n})\nexport class DbxButtonModule {}\n","import { Directive } from '@angular/core';\n\n/**\n * Section used to elevate content in a pre-configured manner.\n */\n@Directive({\n selector: 'dbx-content-elevate,[dbx-content-elevate]',\n host: {\n 'class': 'd-block dbx-content-elevate'\n }\n})\nexport class DbxContentElevateDirective { }\n","import { Directive } from '@angular/core';\n\n/**\n * Directive that sets the height of it's content to fill the page.\n */\n@Directive({\n selector: 'dbx-content,[dbx-content]',\n host: {\n 'class': 'd-block dbx-content'\n }\n})\nexport class DbxContentDirective { }\n","import { Directive } from '@angular/core';\n\n/**\n * Section used to wrap content in a border with internal padding.\n */\n@Directive({\n selector: 'dbx-content-border,[dbx-content-border]',\n host: {\n 'class': 'd-block dbx-content-border'\n }\n})\nexport class DbxContentBorderDirective { }\n","import { Component, Input, Directive } from '@angular/core';\n\nexport type DbxContentContainerPadding = 'none' | 'min' | 'small' | 'normal';\n\nexport type DbxContentContainerWidth = 'small' | 'medium' | 'wide' | 'full';\n\n/**\n * Component that limits the max-width of the content.\n */\n@Directive({\n selector: 'dbx-content-container,[dbx-content-container],.dbx-content-container',\n host: {\n 'class': 'd-block dbx-content-container',\n '[class]': `\"container-\" + grow + \" container-padding-\" + padding`\n }\n})\nexport class DbxContentContainerDirective {\n\n @Input()\n grow = 'wide';\n\n @Input()\n padding = 'normal';\n\n}\n","import { Directive, Input } from '@angular/core';\n\n/**\n * Component used to wrap content in a box with optionally elevation.\n */\n@Directive({\n selector: 'dbx-content-box, [dbx-content-box]',\n host: {\n 'class': 'd-block dbx-content-box',\n '[class.dbx-content-elevate]': 'elevated'\n }\n})\nexport class DbxContentBoxDirective {\n\n @Input()\n elevated = true;\n\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Directive that sets the height of it's content to fill the page.\n */\n@Directive({\n selector: 'dbx-content-page,[dbx-content-page]',\n host: {\n 'class': 'd-block dbx-content-page'\n }\n})\nexport class DbxContentPageDirective { }\n","import { DbxContentElevateDirective } from './content.elevate.directive';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxContentDirective } from './content.directive';\nimport { DbxContentBorderDirective } from './content.border.directive';\nimport { DbxContentContainerDirective } from './content.container.directive';\nimport { DbxContentBoxDirective } from './content.box.directive';\nimport { DbxContentPageDirective } from './content.page.directive';\n\n/**\n * Module for container-type components.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbxContentDirective,\n DbxContentContainerDirective,\n DbxContentBorderDirective,\n DbxContentElevateDirective,\n DbxContentBoxDirective,\n DbxContentPageDirective\n ],\n exports: [\n DbxContentDirective,\n DbxContentContainerDirective,\n DbxContentBorderDirective,\n DbxContentElevateDirective,\n DbxContentBoxDirective,\n DbxContentPageDirective\n ]\n})\nexport class DbxContentLayoutModule { }\n","import { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { UIRouterModule } from '@uirouter/angular';\nimport { DbxSidenavComponent } from './sidenav.component';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatListModule } from '@angular/material/list';\nimport { DbxAnchorModule } from '../anchor/anchor.module';\nimport { DbxAnchorListModule } from '../anchorlist/anchorlist.module';\nimport { DbxSidenavPagebarComponent } from './sidenav.pagebar.component';\nimport { DbxSidenavPageComponent } from './sidenav.page.component';\nimport { DbxBarLayoutModule } from '../../../layout/bar/bar.layout.module';\nimport { DbxButtonModule } from '../../../button/button.module';\nimport { DbxContentLayoutModule } from './../../../layout/content/content.layout.module';\nimport { DbxSidenavButtonComponent } from './sidenav.button.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DbxBarLayoutModule,\n DbxAnchorModule,\n DbxAnchorListModule,\n DbxButtonModule,\n DbxContentLayoutModule,\n MatToolbarModule,\n MatButtonModule,\n MatIconModule,\n MatSidenavModule,\n MatListModule,\n MatDividerModule,\n UIRouterModule\n ],\n declarations: [\n DbxSidenavComponent,\n DbxSidenavButtonComponent,\n DbxSidenavPagebarComponent,\n DbxSidenavPageComponent\n ],\n exports: [\n DbxSidenavComponent,\n DbxSidenavButtonComponent,\n DbxSidenavPagebarComponent,\n DbxSidenavPageComponent\n ]\n})\nexport class DbxSidenavModule { }\n","export * from './sidenav.component';\nexport * from './sidenav.module';\nexport * from './sidenav.button.component';\nexport * from './sidenav.pagebar.component';\nexport * from './sidenav.page.component';\n// export * from './side.item.component';\n// export * from './side.title.component';\n// export * from './side.title.content.component';\n","import { NgModule } from '@angular/core';\nimport { DbxAnchorModule } from './anchor/anchor.module';\nimport { DbxAnchorListModule } from './anchorlist/anchorlist.module';\nimport { DbxNavbarModule } from './navbar/navbar.module';\nimport { DbxSidenavModule } from './sidenav/sidenav.module';\n\n@NgModule({\n exports: [\n DbxAnchorModule,\n DbxAnchorListModule,\n DbxNavbarModule,\n DbxSidenavModule\n ]\n})\nexport class DbxRouterLayoutModule { }\n","import { Component } from '@angular/core';\nimport { AbstractDbxSegueAnchorDirective } from '../../layout/anchor/anchor.segue.directive';\n\n/**\n * SegueAnchor implementation for Angular Router.\n */\n@Component({\n templateUrl: './anchor.component.html'\n})\nexport class DbxAngularRouterSegueAnchorComponent extends AbstractDbxSegueAnchorDirective { }\n","<a class=\"dbx-anchor-a dbx-anchor-sref\" [attr.target]=\"target$ | async\" [uiSref]=\"ref$ | async\"\n [uiParams]=\"refParams$ | async\" [uiOptions]=\"refOptions$ | async\">\n <dbx-injected-content></dbx-injected-content>\n</a>\n","import { UIRouterModule } from '@uirouter/angular';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DbxAngularRouterSegueAnchorComponent } from './anchor.component';\nimport { DbxRouterWebProviderConfig } from '../router.provider.config';\nimport { DbxInjectedComponentModule } from '@dereekb/dbx-core';\n\n@NgModule({\n imports: [\n CommonModule,\n UIRouterModule,\n DbxInjectedComponentModule\n ],\n declarations: [DbxAngularRouterSegueAnchorComponent],\n exports: [DbxAngularRouterSegueAnchorComponent]\n})\nexport class DbxWebAngularRouterModule {\n\n static forRoot(): ModuleWithProviders<DbxWebAngularRouterModule> {\n return {\n ngModule: DbxWebAngularRouterModule,\n providers: [\n {\n provide: DbxRouterWebProviderConfig,\n useValue: {\n anchorSegueRefComponent: {\n componentClass: DbxAngularRouterSegueAnchorComponent\n }\n } as DbxRouterWebProviderConfig\n }\n ]\n };\n }\n\n}\n","import { Component } from '@angular/core';\nimport { AbstractDbxSegueAnchorDirective } from '../../layout/anchor/anchor.segue.directive';\n\n/**\n * SegueAnchor implementation for UIRouter.\n */\n@Component({\n templateUrl: './anchor.component.html'\n})\nexport class DbxUIRouterSegueAnchorComponent extends AbstractDbxSegueAnchorDirective { }\n","<a class=\"dbx-anchor-a dbx-anchor-sref\" [attr.target]=\"target$ | async\" [uiSref]=\"ref$ | async\"\n [uiParams]=\"refParams$ | async\" [uiOptions]=\"refOptions$ | async\" uiSrefActive=\"dbx-anchor-active\" uiSrefActiveEq=\"dbx-anchor-active-eq\">\n <dbx-injected-content [template]=\"template$ | async\"></dbx-injected-content>\n</a>\n","import { UIRouterModule } from '@uirouter/angular';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DbxUIRouterSegueAnchorComponent } from './anchor.component';\nimport { DbxRouterWebProviderConfig } from '../router.provider.config';\nimport { DbxInjectedComponentModule } from '@dereekb/dbx-core';\n\n@NgModule({\n imports: [\n CommonModule,\n UIRouterModule,\n DbxInjectedComponentModule\n ],\n declarations: [DbxUIRouterSegueAnchorComponent],\n exports: [DbxUIRouterSegueAnchorComponent]\n})\nexport class DbxWebUIRouterModule {\n\n static forRoot(): ModuleWithProviders<DbxWebUIRouterModule> {\n return {\n ngModule: DbxWebUIRouterModule,\n providers: [\n {\n provide: DbxRouterWebProviderConfig,\n useValue: {\n anchorSegueRefComponent: {\n componentClass: DbxUIRouterSegueAnchorComponent\n }\n } as DbxRouterWebProviderConfig\n }\n ]\n };\n }\n\n}\n","import { ElementRef, Component, ViewChild } from '@angular/core';\nimport { ResizedEvent } from 'angular-resize-event';\n\n/**\n * Wrapper of a block that is broken into two parts, with the bottom content's height\n * being set to 100% of the height minus the top's height.\n *\n * The block is made up of two divs, a top and a bottom. The top is assigned a static height, and the bottom is given the remainder.\n * The height is calculated from 100%.\n */\n@Component({\n selector: 'dbx-two-block',\n template: `\n <div #two class=\"dbx-two-block\">\n <div #top class=\"dbx-two-block-top\" (resized)=\"onResized($event)\">\n <ng-content select=\"[top]\"></ng-content>\n </div>\n <div #bottom class=\"dbx-two-block-bottom\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class DbxTwoBlocksComponent {\n\n @ViewChild('two', { read: ElementRef, static: true })\n twoElement!: ElementRef;\n\n /*\n @ViewChild('top', { read: ElementRef, static: true })\n topElement!: ElementRef;\n\n @ViewChild('bottom', { read: ElementRef, static: true })\n bottomElement!: ElementRef;\n */\n\n onResized(event: ResizedEvent): void {\n const height = event.newRect.height;\n const element: HTMLElement = this.twoElement!.nativeElement;\n element.style.setProperty('--two-block-top-height', `${height}px`);\n }\n\n}\n","import { DbxAnchorModule } from '../../router';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxTwoBlocksComponent } from './two.block.component';\nimport { AngularResizeEventModule } from 'angular-resize-event';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule,\n DbxAnchorModule,\n AngularResizeEventModule\n ],\n declarations: [\n DbxTwoBlocksComponent\n ],\n exports: [\n DbxTwoBlocksComponent\n ]\n})\nexport class DbxBlockLayoutModule { }\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that formats a card-box of content.\n */\n@Component({\n selector: 'dbx-card-box',\n template: `\n <div class=\"dbx-card-box\">\n <div class=\"dbx-section-header\">\n <div class=\"dbx-section-header-content\">\n <h4 class=\"dbx-section-header-content-title\"><mat-icon *ngIf=\"icon\">{{icon}}</mat-icon><span *ngIf=\"header\" class=\"title-text\">{{ header }}</span></h4>\n <span class=\"spacer\"></span>\n <ng-content select=\"[sectionHeader]\"></ng-content>\n </div>\n </div>\n <div class=\"dbx-card-box-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class DbxCardBoxComponent {\n\n @Input()\n header?: string;\n\n @Input()\n icon?: string;\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that wraps a card box and adds content padding.\n */\n@Component({\n selector: 'dbx-card-box-container',\n template: `\n <div class=\"dbx-card-box-container\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DbxCardBoxContainerComponent { }\n","import { MatIconModule } from '@angular/material/icon';\nimport { DbxCardBoxContainerComponent } from './card.box.container.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxCardBoxComponent } from './card.box.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n DbxCardBoxComponent,\n DbxCardBoxContainerComponent\n ],\n exports: [\n DbxCardBoxComponent,\n DbxCardBoxContainerComponent\n ]\n})\nexport class DbxCardBoxLayoutModule { }\n","import { Injectable, OnDestroy, Provider } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { Subject } from 'rxjs';\nimport { distinct, map } from 'rxjs/operators';\nimport { SegueRef } from '@dereekb/dbx-core';\n\nexport interface TwoColumnsState {\n showRight: boolean;\n /**\n * Whether or not to allow the left to fill up the screen when no right is shown.\n */\n fullLeft: boolean;\n /**\n * Optional ref to use with TwoColumns that use an sref for the back button.\n */\n backRef?: SegueRef;\n}\n\nconst INITIAL_STATE: TwoColumnsState = {\n showRight: false,\n fullLeft: false\n};\n\n@Injectable()\nexport class TwoColumnsContextStore extends ComponentStore<TwoColumnsState> implements OnDestroy {\n\n private readonly _back = new Subject<void>();\n\n constructor() {\n super({ ...INITIAL_STATE });\n }\n\n // MARK: Accessors\n /**\n * Pipes the current state of showRight.\n */\n readonly showRight$ = this.state$.pipe(map((x) => x.showRight));\n\n /**\n * Convenience function for the showRight compliment.\n */\n readonly hideRight$ = this.state$.pipe(map((x) => !x.showRight));\n\n /**\n * Pipes the current state of fullLeft.\n */\n readonly fullLeft$ = this.state$.pipe(map((x) => x.fullLeft));\n\n /**\n * Whether or not to show the full left.\n */\n readonly showFullLeft$ = this.state$.pipe(map((x) => !x.showRight && x.fullLeft));\n\n /**\n * Pipes the current backRef value.\n */\n readonly backRef$ = this.state$.pipe(map((x) => x.backRef), distinct());\n\n /**\n * Emits back events.\n */\n readonly back$ = this._back.asObservable();\n\n // MARK: State Changes\n /**\n * Completely resets the store.\n */\n readonly reset = this.updater((state) => ({ ...INITIAL_STATE }));\n\n /**\n * Changes the state to show right or not.\n */\n readonly setShowRight = this.updater((state, showRight: boolean) => ({ ...state, showRight }));\n\n /**\n * Sets the full left.\n */\n readonly setFullLeft = this.updater((state, fullLeft: boolean) => ({ ...state, fullLeft }));\n\n /**\n * Sets the new back ref.\n */\n readonly setBackRef = this.updater((state, backRef: SegueRef) => ({ ...state, backRef }));\n\n /**\n * Emits a back event.\n */\n back(): void {\n this._back.next();\n }\n\n // MARK: Internal\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this._back.complete();\n }\n\n}\n\nexport function ProvideTwoColumnsContext(): Provider[] {\n return [{\n provide: TwoColumnsContextStore,\n useClass: TwoColumnsContextStore\n }];\n}\n","import { Directive, EventEmitter, Output, OnInit } from '@angular/core';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Used with an DbxTwoColumnsComponent to help respond to a \"back\" function.\n */\n@Directive({\n selector: '[dbxTwoColumnsBack]'\n})\nexport class DbxTwoColumnsBackDirective extends AbstractSubscriptionDirective implements OnInit {\n\n @Output('dbxTwoColumnsBack')\n public back = new EventEmitter();\n\n constructor(public readonly twoColumnsContextStore: TwoColumnsContextStore) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.twoColumnsContextStore.back$.subscribe(() => this.back.emit());\n }\n\n public backClicked(): void {\n this.twoColumnsContextStore.back();\n }\n\n}\n","import { Component, Inject, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Responsive component meant to split a left and right column.\n *\n * The left column is smaller than the right column, which contains the primary content.\n *\n * Requires a TwoColumnsContextStore to be provided.\n */\n@Component({\n selector: 'dbx-two-columns',\n templateUrl: './two.column.component.html',\n exportAs: 'columns'\n})\nexport class DbxTwoColumnsComponent {\n\n readonly showRight$: Observable<boolean> = this.twoColumnsContextStore.showRight$;\n readonly hideRight$: Observable<boolean> = this.twoColumnsContextStore.hideRight$;\n readonly showFullLeft$: Observable<boolean> = this.twoColumnsContextStore.showFullLeft$;\n\n constructor(@Inject(TwoColumnsContextStore) public readonly twoColumnsContextStore: TwoColumnsContextStore) { }\n\n @Input()\n reverseSizing: boolean = false;\n\n @Input()\n inSectionPage: boolean = false;\n\n}\n","<div class=\"two-column\" [ngClass]=\"{ 'two-column-reverse-sizing': reverseSizing, 'right-shown': showRight$ | async, 'full-left': (showFullLeft$ | async), 'dbx-section-page-two': inSectionPage }\">\n <div class=\"left-column\">\n <ng-content select=\"[left]\"></ng-content>\n </div>\n <div class=\"right-column\" *ngIf=\"showRight$ | async\">\n <!-- NOTE: This will only hide the content project. Be sure to use *ngIf separately on the right's content if needed. -->\n <!-- https://github.com/angular/angular/issues/17983 -->\n <ng-content select=\"[right]\"></ng-content>\n </div>\n</div>\n","import { OnInit } from '@angular/core';\nimport { Directive, Input, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Used with a DbxTwoColumnsComponent to set the full left to true.\n */\n@Directive({\n selector: '[dbxTwoColumnsFullLeft]'\n})\nexport class DbxTwoColumnsFullLeftDirective implements OnInit, OnDestroy {\n\n private _fullLeft = new BehaviorSubject<boolean>(true);\n\n @Input('dbxTwoColumnsFullLeft')\n get fullLeft(): boolean {\n return this._fullLeft.value;\n }\n\n set fullLeft(fullLeft: boolean) {\n if (fullLeft != null && (fullLeft as any) !== '') {\n this._fullLeft.next(fullLeft);\n }\n }\n\n constructor(private readonly _twoColumnsContextStore: TwoColumnsContextStore) { }\n\n ngOnInit(): void {\n this._twoColumnsContextStore.setFullLeft(this._fullLeft);\n }\n\n ngOnDestroy(): void {\n this._fullLeft.complete();\n }\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Two Columns related component that sits at the top of the content bodies and wraps content.\n */\n@Component({\n selector: 'dbx-two-columns-head',\n template: `\n <div class=\"dbx-two-columns-head\" [ngClass]=\"{ 'block': block, 'full': full }\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DbxTwoColumnsColumnHeadComponent {\n\n @Input()\n block?: boolean;\n\n @Input()\n full?: boolean;\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { SegueRef } from '@dereekb/dbx-core';\nimport { TwoColumnsContextStore } from './two.column.store';\n\n/**\n * Used with a DbxTwoColumnsComponent to set the backRef of the TwoColumnsContextStore.\n */\n@Directive({\n selector: '[dbxTwoColumnsSref]'\n})\nexport class DbxTwoColumnsSrefDirective {\n\n constructor(private readonly _twoColumnsContextStore: TwoColumnsContextStore) { }\n\n @Input('dbxTwoColumnsSref')\n public set refString(ref: string) {\n this.ref = {\n ref\n };\n }\n\n @Input()\n public set ref(ref: SegueRef) {\n this._twoColumnsContextStore.setBackRef(ref);\n }\n\n}\n","import { AfterViewInit, OnDestroy, Component, Inject, Input } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ClickableAnchor } from '@dereekb/dbx-core';\nimport { TwoColumnsContextStore } from './two.column.store';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Optional responsive component that wraps content on the right side and shows a navigation bar.\n */\n@Component({\n selector: 'dbx-two-columns-right',\n templateUrl: './two.column.right.component.html'\n})\nexport class DbxTwoColumnsRightComponent implements AfterViewInit, OnDestroy {\n\n private _showBack = new BehaviorSubject<boolean>(true);\n\n @Input()\n header?: string;\n\n readonly ref$: Observable<Maybe<ClickableAnchor>> = this.twoColumnsContextStore.backRef$;\n\n readonly showBack$: Observable<boolean> = combineLatest([\n this._showBack, this.ref$.pipe(map((x) => !Boolean(x))) // TODO: Is this correct? Show back if ref is not defined?\n ]).pipe(\n map(([a, b]: [boolean, boolean]) => a && b)\n );\n\n constructor(\n @Inject(TwoColumnsContextStore) private readonly twoColumnsContextStore: TwoColumnsContextStore\n ) { }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n this.twoColumnsContextStore.setShowRight(true);\n });\n }\n\n ngOnDestroy(): void {\n this.twoColumnsContextStore.setShowRight(false);\n }\n\n @Input()\n get showBack(): boolean {\n return this._showBack.value;\n }\n\n set showBack(showBack: boolean) {\n this._showBack.next(showBack);\n }\n\n public backClicked(): void {\n this.twoColumnsContextStore.back();\n }\n\n}\n","<div class=\"two-columns-right\">\n <dbx-two-columns-head>\n <!-- Back Buttons -->\n <ng-container *ngIf=\"showBack$ | async\">\n <button mat-icon-button class=\"back-button\" (click)=\"backClicked()\" aria-label=\"back button\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n </ng-container>\n <ng-container *ngIf=\"ref$ | async\">\n <dbx-anchor [anchor]=\"ref$ | async\">\n <button mat-icon-button class=\"back-button\" aria-label=\"back button\">\n <mat-icon>navigate_before</mat-icon>\n </button>\n </dbx-anchor>\n </ng-container>\n <span *ngIf=\"header\" class=\"right-nav-title\">{{ header }}</span>\n <span class=\"right-nav-spacer\"></span>\n <span class=\"spacer\"></span>\n <ng-content select=\"[nav]\"></ng-content>\n </dbx-two-columns-head>\n <div class=\"two-columns-right-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxAnchorModule } from '../../../router';\nimport { DbxContentLayoutModule } from '../../content';\nimport { DbxTwoColumnsSrefDirective } from './two.column.sref.directive';\nimport { DbxTwoColumnsComponent } from './two.column.component';\nimport { DbxTwoColumnsColumnHeadComponent } from './two.column.head.component';\nimport { DbxTwoColumnsRightComponent } from './two.column.right.component';\nimport { DbxTwoColumnsBackDirective } from './two.column.back.directive';\nimport { DbxTwoColumnsFullLeftDirective } from './two.column.full.left.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n DbxAnchorModule,\n DbxContentLayoutModule\n ],\n declarations: [\n DbxTwoColumnsComponent,\n DbxTwoColumnsRightComponent,\n DbxTwoColumnsColumnHeadComponent,\n DbxTwoColumnsSrefDirective,\n DbxTwoColumnsBackDirective,\n DbxTwoColumnsFullLeftDirective\n ],\n exports: [\n DbxTwoColumnsComponent,\n DbxTwoColumnsRightComponent,\n DbxTwoColumnsColumnHeadComponent,\n DbxTwoColumnsSrefDirective,\n DbxTwoColumnsBackDirective,\n DbxTwoColumnsFullLeftDirective\n ],\n})\nexport class DbxTwoColumnLayoutModule { }\n","import { Component, Inject, Input } from '@angular/core';\nimport { TwoColumnsContextStore } from '../two';\n\n/**\n * Pre-configured Two-columns view that only has a left view and shows full left.\n */\n@Component({\n selector: 'dbx-one-column',\n template: `\n <ng-container>\n <dbx-two-columns [inSectionPage]=\"inSectionPage\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content left></ng-content>\n </dbx-two-columns>\n </ng-container>\n `,\n exportAs: 'columns',\n providers: [TwoColumnsContextStore]\n})\nexport class DbxOneColumnComponent {\n\n constructor(@Inject(TwoColumnsContextStore) public readonly twoColumnsContextStore: TwoColumnsContextStore) {\n twoColumnsContextStore.setFullLeft(true);\n }\n\n @Input()\n inSectionPage = true;\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxTwoColumnLayoutModule } from '../two';\nimport { DbxOneColumnComponent } from './one.column.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DbxTwoColumnLayoutModule\n ],\n declarations: [\n DbxOneColumnComponent\n ],\n exports: [\n DbxOneColumnComponent\n ],\n})\nexport class DbxOneColumnLayoutModule { }\n","import { NgModule } from '@angular/core';\nimport { DbxTwoColumnLayoutModule } from './two';\nimport { DbxOneColumnLayoutModule } from './one';\n\n@NgModule({\n exports: [\n DbxOneColumnLayoutModule,\n DbxTwoColumnLayoutModule\n ]\n})\nexport class DbxColumnLayoutModule { }\n","import { Maybe } from '@dereekb/util';\nimport { isBoolean } from 'class-validator';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport enum CompactMode {\n FULL = 'full',\n COMPACT = 'compact'\n}\n\nexport interface CompactModeOptions<T> {\n full?: T;\n compact?: T;\n}\n\nexport interface CompactModeDefaultOptions<T> extends CompactModeOptions<T> {\n defaultMode?: Maybe<CompactMode>;\n}\n\nexport type CompactModeOption = CompactMode | boolean;\n\nexport function compactModeFromInput(input: CompactMode | boolean): CompactMode {\n if (isBoolean(input)) {\n input = (input) ? CompactMode.COMPACT : CompactMode.FULL;\n }\n\n return input === CompactMode.COMPACT ? CompactMode.COMPACT : CompactMode.FULL;\n}\n\nexport function mapCompactModeObs<T>(mode$: Maybe<Observable<CompactMode>>, config: CompactModeDefaultOptions<T>): Observable<Maybe<T>> {\n const modeObs = mode$ ?? of(config.defaultMode ?? CompactMode.FULL);\n return modeObs.pipe(\n map((inputMode) => {\n const isCompact = ((inputMode ?? config.defaultMode) === CompactMode.COMPACT);\n\n if (isCompact) {\n return config.compact;\n } else {\n return config.full;\n }\n })\n );\n}","import { Injectable } from '@angular/core';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { map } from 'rxjs/operators';\nimport { CompactMode, compactModeFromInput } from './compact';\n\nexport interface CompactContextState {\n mode: CompactMode;\n}\n\n@Injectable()\nexport class CompactContextStore extends ComponentStore<CompactContextState> {\n\n constructor() {\n super({ mode: CompactMode.FULL });\n }\n\n // MARK: Accessors\n readonly mode$ = this.state$.pipe(map(x => x.mode));\n\n readonly setMode = this.updater((state, mode: CompactMode | boolean) => ({ mode: compactModeFromInput(mode) }));\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { CompactMode } from './compact';\nimport { CompactContextStore } from './compact.store';\n\n\n/**\n * CompactContextStore provider.\n */\n@Directive({\n selector: '[dbxCompact]',\n providers: [CompactContextStore],\n exportAs: 'compact',\n})\nexport class DbxCompactDirective {\n\n mode$ = this.compactContextStore.mode$;\n\n constructor(readonly compactContextStore: CompactContextStore) { }\n\n @Input('dbxCompact')\n set mode(mode: CompactMode | boolean) {\n this.compactContextStore.setMode(mode);\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxCompactDirective } from './compact.directive';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbxCompactDirective\n ],\n exports: [\n DbxCompactDirective\n ]\n})\nexport class DbxCompactLayoutModule { }\n","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\n/**\n * Toolbar-like component that wraps content. Generally sits at the top of a page.\n */\n@Component({\n selector: 'dbx-flag',\n template: `\n <div class=\"dbx-flag\">\n <mat-toolbar [color]=\"color\">\n <ng-content></ng-content>\n </mat-toolbar>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbxFlagComponent {\n\n @Input()\n color: ThemePalette = 'accent';\n\n}\n","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\n\n/**\n * Pre-configured dbx-flag prompt to do something.\n */\n@Component({\n selector: 'dbx-flag-prompt',\n template: `\n <dbx-flag [color]=\"color\">\n <span class=\"dbx-flag-prompt\">{{ text }}</span>\n <span class=\"dbx-flag-spacer\"></span>\n <ng-content></ng-content>\n </dbx-flag>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbxFlagPromptComponent {\n\n @Input()\n color: ThemePalette = 'accent';\n\n @Input()\n text?: string;\n\n}\n","import { MatToolbarModule } from '@angular/material/toolbar';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxFlagComponent } from './flag.component';\nimport { DbxFlagPromptComponent } from './flag.prompt.component';\n\n/**\n * Module for block components.\n */\n@NgModule({\n imports: [\n CommonModule,\n MatToolbarModule\n ],\n declarations: [\n DbxFlagComponent,\n DbxFlagPromptComponent\n ],\n exports: [\n DbxFlagComponent,\n DbxFlagPromptComponent\n ]\n})\nexport class DbxFlagLayoutModule { }\n","import { ScreenMediaWidthType } from '../../screen/screen';\nimport { DbxScreenMediaService } from '../../screen/screen.service';\nimport { Directive, ChangeDetectorRef, Input, OnInit } from '@angular/core';\nimport { BehaviorSubject, map, shareReplay, distinctUntilChanged, delay } from 'rxjs';\nimport { AbstractSubscriptionDirective, safeDetectChanges } from '@dereekb/dbx-core';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Used to declare a dbxFlexGroup.\n */\n@Directive({\n selector: '[dbxFlexGroup]',\n host: {\n '[class.dbx-flex-group]': 'content',\n '[class.dbx-flex-group-small]': 'small',\n '[class.dbx-flex-group-relative]': 'relative'\n }\n})\nexport class DbxFlexGroupDirective extends AbstractSubscriptionDirective implements OnInit {\n\n @Input()\n content = true;\n\n @Input()\n relative = false;\n\n private _small: boolean = false;\n\n private _breakpoint = new BehaviorSubject<ScreenMediaWidthType>('tablet');\n readonly isSmallScreen$ = this._dbxScreenMediaService.isBreakpointActive(this._breakpoint).pipe(map(x => !x), distinctUntilChanged(), shareReplay(1));\n\n get small(): boolean {\n return this._small;\n }\n\n constructor(private readonly _dbxScreenMediaService: DbxScreenMediaService, readonly cdRef: ChangeDetectorRef) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.isSmallScreen$.pipe(delay(0)).subscribe((small) => {\n this._small = small;\n safeDetectChanges(this.cdRef);\n });\n }\n\n @Input()\n set breakpoint(breakpoint: Maybe<ScreenMediaWidthType>) {\n this._breakpoint.next(breakpoint ?? 'tablet');\n }\n\n}\n","\nimport { Input, Directive } from '@angular/core';\nimport { DbxFlexSize } from './flex';\n\n/**\n * Applies the proper dbx-flex size class based on the input.\n */\n@Directive({\n selector: '[dbxFlexSize]',\n host: {\n '[class]': '\"dbx-flex-\" + size'\n }\n})\nexport class DbxFlexSizeDirective {\n\n @Input('dbxFlexSize')\n size: DbxFlexSize = 1;\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxFlexGroupDirective } from './flex.group.directive';\nimport { DbxFlexSizeDirective } from './flex.size.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbxFlexGroupDirective,\n DbxFlexSizeDirective\n ],\n exports: [\n DbxFlexGroupDirective,\n DbxFlexSizeDirective\n ]\n})\nexport class DbxFlexLayoutModule { }\n","import { Component, Input } from '@angular/core';\n\n/**\n * Section piece that puts an icon on the left, and arbitrary content on the right with a header.\n */\n@Component({\n selector: 'dbx-icon-item',\n template: `\n <div class=\"dbx-icon-item\">\n <div class=\"left\">\n <mat-icon>{{ icon }}</mat-icon>\n </div>\n <div class=\"right\">\n <h3 *ngIf=\"header\" class=\"dbx-icon-item-header\">{{ header }}</h3>\n <div class=\"right-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `\n})\nexport class DbxIconItemComponent {\n\n @Input()\n icon?: string;\n\n @Input()\n header?: string;\n\n}\n","import { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxIconItemComponent } from './item.icon.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n DbxIconItemComponent\n ],\n exports: [\n DbxIconItemComponent\n ]\n})\nexport class DbxItemLayoutModule { }\n","import { Component, Input } from '@angular/core';\n\n/**\n * Component that is centered for use within an empty list.\n */\n@Component({\n selector: 'dbx-list-empty-content',\n template: `\n <div class=\"dbx-list-empty-content\">\n <ng-content></ng-content>\n </div>\n `,\n // TODO: styleUrls: ['./container.scss']\n})\nexport class DbxListEmptyContentComponent { }\n","import { Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProgressBarMode } from '@angular/material/progress-bar';\nimport { ProgressSpinnerMode } from '@angular/material/progress-spinner';\nimport { Maybe } from '@dereekb/util';\n\nexport const DEFAULT_LOADING_PROGRESS_DIAMETER = 96;\n\n/**\n * Basic loading progress component.\n */\n@Component({\n selector: 'dbx-loading-progress',\n template: `\n <div class=\"loading-progress-view\">\n <ng-container [ngSwitch]=\"linear\">\n <mat-progress-bar *ngSwitchCase=\"true\" [mode]=\"bmode\" [color]=\"color\" [bufferValue]=\"bufferValue\" [value]=\"value\" style=\"margin: auto;\"></mat-progress-bar>\n <mat-progress-spinner *ngSwitchDefault [diameter]=\"diameter || 96\" [mode]=\"smode\" [color]=\"color\" [value]=\"value\" style=\"margin: auto;\"></mat-progress-spinner>\n </ng-container>\n <div *ngIf=\"text\" class=\"hint\">{{ text }}</div>\n </div>\n `\n})\nexport class DbxLoadingProgressComponent {\n\n private _diameter: number = DEFAULT_LOADING_PROGRESS_DIAMETER;\n\n @Input()\n text?: Maybe<string>;\n\n @Input()\n linear?: Maybe<boolean>;\n\n @Input()\n mode: ProgressBarMode | ProgressSpinnerMode = 'indeterminate';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @Input()\n value?: number;\n\n @Input()\n bufferValue: number = undefined!;\n\n @Input()\n get diameter(): number {\n return this._diameter;\n }\n\n set diameter(diameter: Maybe<number>) {\n this._diameter = diameter ?? DEFAULT_LOADING_PROGRESS_DIAMETER;\n }\n\n get bmode(): ProgressBarMode {\n return this.mode;\n }\n\n get smode(): ProgressSpinnerMode {\n return this.mode as any;\n }\n\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { ErrorInput, convertToReadableError, ReadableError } from '@dereekb/util';\n\n/**\n * Basic error component.\n */\n@Component({\n selector: 'dbx-error',\n templateUrl: './error.component.html'\n})\nexport class DbxReadableErrorComponent {\n\n private _error?: ReadableError;\n\n get error(): Maybe<ReadableError> {\n return this._error;\n }\n\n @Input()\n set error(error: Maybe<ErrorInput | ReadableError>) {\n this._error = convertToReadableError(error as any) as ReadableError;\n }\n\n get message(): Maybe<string> {\n return this._error?.message;\n }\n\n}\n","<div *ngIf=\"error\" class=\"dbx-error\">\n <h4>An error occured.</h4>\n <!-- <p class=\"dbx-error-code\" *ngIf=\"errorData.code\">{{ errorData.code }}</p> -->\n <p class=\"dbx-error-message\" *ngIf=\"message\">{{ message }}</p>\n</div>\n","import { startWith } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { distinctUntilChanged, shareReplay, combineLatest, map, BehaviorSubject } from 'rxjs';\nimport { Component, Input, ViewChild, ElementRef } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProgressBarMode } from '@angular/material/progress-bar';\nimport { ErrorInput, Maybe } from '@dereekb/util';\nimport { checkNgContentWrapperHasContent } from '@dereekb/dbx-core';\nimport { ProgressSpinnerMode } from '@angular/material/progress-spinner';\n\n/**\n * DbxBasicLoadingComponent loading state.\n */\nexport enum LoadingComponentState {\n NONE = -1,\n LOADING = 0,\n CONTENT = 1,\n ERROR = 2\n}\n\n/**\n * Basic loading component.\n */\n@Component({\n selector: 'dbx-basic-loading',\n templateUrl: './basic-loading.component.html'\n})\nexport class DbxBasicLoadingComponent implements OnDestroy {\n\n private _loading = new BehaviorSubject<Maybe<boolean>>(undefined);\n private _show = new BehaviorSubject<boolean>(true);\n private _error = new BehaviorSubject<Maybe<ErrorInput>>(undefined);\n\n private _customErrorContent = new BehaviorSubject<Maybe<ElementRef>>(undefined);\n private _customLoadingContent = new BehaviorSubject<Maybe<ElementRef>>(undefined);\n\n readonly state$ = combineLatest([this._loading, this._show, this._error]).pipe(\n map(([loading, show, error]) => {\n let state: LoadingComponentState;\n\n if (error) {\n state = LoadingComponentState.ERROR;\n } else if (loading == null) { // If loading has not yet been defined and no error has occured, we're waiting for some input on loading or error.\n state = LoadingComponentState.NONE;\n } else if (loading || !show) {\n state = LoadingComponentState.LOADING;\n } else {\n state = LoadingComponentState.CONTENT;\n }\n\n return state;\n }),\n distinctUntilChanged(),\n startWith(LoadingComponentState.NONE),\n shareReplay(1)\n );\n\n readonly error$ = this._error.asObservable();\n\n readonly hasNoCustomError$ = this._customErrorContent.pipe(map(x => !checkNgContentWrapperHasContent(x)));\n readonly hasNoCustomLoading$ = this._customLoadingContent.pipe(map(x => !checkNgContentWrapperHasContent(x)));\n\n @Input()\n diameter?: Maybe<number>;\n\n @Input()\n mode: ProgressBarMode | ProgressSpinnerMode = 'indeterminate';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @Input()\n text?: Maybe<string>;\n\n @Input()\n linear: Maybe<boolean> = false;\n\n ngOnDestroy() {\n this._error.complete();\n this._loading.complete();\n this._show.complete();\n this._customErrorContent.complete();\n this._customLoadingContent.complete();\n }\n\n @Input()\n get show(): boolean {\n return this._show.value;\n }\n\n set show(show: Maybe<boolean>) {\n this._show.next(show ?? true);\n }\n\n @Input()\n get loading(): Maybe<boolean> {\n return this._loading.value;\n }\n\n set loading(loading: Maybe<boolean>) {\n this._loading.next(loading);\n }\n\n @Input()\n get error(): Maybe<ErrorInput> {\n return this._error.value;\n }\n\n set error(error: Maybe<ErrorInput>) {\n this._error.next(error);\n }\n\n @ViewChild('customError')\n set customErrorContent(customErrorContent: Maybe<ElementRef>) {\n setTimeout(() => {\n this._customErrorContent.next(customErrorContent);\n }, 0);\n }\n\n @ViewChild('customLoading')\n set customLoadingContent(customLoadingContent: Maybe<ElementRef>) {\n setTimeout(() => {\n this._customLoadingContent.next(customLoadingContent);\n }, 0);\n }\n\n}\n","<ng-container [ngSwitch]=\"state$ | async\">\n <ng-container *ngSwitchCase=\"0\">\n <!-- Loading -->\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"1\">\n <!-- Content -->\n <ng-content></ng-content>\n </ng-container>\n <ng-container *ngSwitchCase=\"2\">\n <!-- Error -->\n <ng-container *ngTemplateOutlet=\"errorTemplate\"></ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #loadingTemplate>\n <dbx-loading-progress *ngIf=\"hasNoCustomLoading$ | async\" [mode]=\"mode\" [color]=\"color\" [text]=\"text\"\n [linear]=\"linear\" [diameter]=\"diameter\"></dbx-loading-progress>\n <div #customLoading>\n <ng-content select=\"[loading]\"></ng-content>\n </div>\n</ng-template>\n\n<ng-template #errorTemplate>\n <dbx-error *ngIf=\"hasNoCustomError$ | async\" [error]=\"error$ | async\"></dbx-error>\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n <ng-content select=\"[errorAction]\"></ng-content>\n</ng-template>\n","import { BehaviorSubject, shareReplay, Observable, distinctUntilChanged, map, switchMap, combineLatest, of } from 'rxjs';\nimport { OnDestroy, Component, Input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { ProgressBarMode } from '@angular/material/progress-bar';\nimport { LoadingContext } from '@dereekb/rxjs';\nimport { ErrorInput, Maybe } from '@dereekb/util';\n\nexport interface DbxLoadingComponentState {\n loading: boolean;\n error: Maybe<ErrorInput>;\n}\n\n/**\n * Loading View component that provides content sections for loading, error, and an error action.\n */\n@Component({\n selector: 'dbx-loading',\n template: `\n <dbx-basic-loading [show]=\"show\" [color]=\"color\" [text]=\"text\" [mode]=\"mode\" [linear]=\"linear\" [diameter]=\"diameter\" [error]=\"error$ | async\" [loading]=\"loading$ | async\">\n <ng-content loading select=\"[loading]\"></ng-content>\n <ng-content></ng-content>\n <ng-content error select=\"[error]\"></ng-content>\n <ng-content errorAction select=\"[errorAction]\"></ng-content>\n </dbx-basic-loading>\n `\n})\nexport class DbxLoadingComponent implements OnDestroy {\n\n private _context = new BehaviorSubject<Maybe<LoadingContext>>(undefined);\n\n private _inputLoading = new BehaviorSubject<Maybe<boolean>>(true);\n private _inputError = new BehaviorSubject<Maybe<ErrorInput>>(undefined);\n\n readonly state$: Observable<DbxLoadingComponentState> = combineLatest([this._inputLoading, this._inputError, this._context.pipe(\n switchMap(x => (x != null) ? x.stream$ : of(undefined))\n )]).pipe(\n map(([inputLoading, inputError, loadingState]) => {\n if (loadingState) {\n return loadingState as DbxLoadingComponentState;\n } else {\n return {\n loading: inputLoading ?? false,\n error: inputError\n };\n }\n }),\n distinctUntilChanged((a, b) => a.loading === b.loading && a.error === b.error),\n shareReplay(1)\n );\n\n readonly loading$ = this.state$.pipe(map(x => x.loading), distinctUntilChanged(), shareReplay(1));\n readonly error$ = this.state$.pipe(map(x => x.error), distinctUntilChanged(), shareReplay(1));\n\n @Input()\n show?: Maybe<boolean>;\n\n @Input()\n text?: Maybe<string>;\n\n @Input()\n mode: ProgressBarMode = 'indeterminate';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @Input()\n diameter?: Maybe<number>;\n\n @Input()\n linear?: Maybe<boolean>;\n\n ngOnDestroy() {\n this._context.complete();\n this._inputError.complete();\n this._inputLoading.complete();\n }\n\n @Input()\n get context(): Maybe<LoadingContext> {\n return this._context.value;\n }\n\n set context(context: Maybe<LoadingContext>) {\n this._context.next(context);\n }\n\n @Input()\n get loading(): Maybe<boolean> {\n return this._inputLoading.value;\n }\n\n set loading(loading: Maybe<boolean>) {\n this._inputLoading.next(loading ?? false);\n }\n\n @Input()\n get error(): Maybe<ErrorInput> {\n return this._inputError.value;\n }\n\n set error(error: Maybe<ErrorInput>) {\n this._inputError.next(error);\n }\n\n}\n","import { catchError, filter, exhaustMap, merge, map, Subject, switchMap, shareReplay, distinctUntilChanged, of, Observable, BehaviorSubject, first, startWith } from 'rxjs';\nimport { Component, Input, EventEmitter, Output, OnDestroy, ElementRef, HostListener, ChangeDetectorRef, Directive } from '@angular/core';\nimport { DbxInjectedComponentConfig, tapDetectChanges } from '@dereekb/dbx-core';\nimport { SubscriptionObject, ListLoadingStateContextInstance, ListLoadingState, filterMaybe, tapLog, loadingStateHasFinishedLoading, successResult, beginLoading } from '@dereekb/rxjs';\nimport { Maybe, Milliseconds } from '@dereekb/util';\nimport { DbxListView, ListSelectionState } from './list.view';\n\n/**\n * Direction the scroll was triggered moving.\n */\nexport type DbxListScrollDirectionTrigger = 'up' | 'down';\n\n/**\n * Used to trigger the loading of additional items.\n * \n * If an observable is returned it is used to throttle the loading of more items until it returns.\n */\nexport type DbxListLoadMoreHandler = () => Observable<void> | void;\n\n/**\n * DbxListComponent configuration.\n */\nexport interface DbxListConfig<T = any, V extends DbxListView<T> = DbxListView<T>> extends DbxInjectedComponentConfig<V> {\n\n /**\n * Whether or not to hide the list content when it is an empty list.\n */\n hideOnEmpty?: boolean;\n\n /**\n * Whether or not this list should scroll upward from the bottom, like a message list.\n */\n invertedList?: boolean;\n\n /**\n * Distance to scroll.\n */\n scrollDistance?: number;\n\n /**\n * Number of ms to throttle scrolling events.\n */\n throttle?: Milliseconds;\n\n /**\n * (Optional) onClick handler\n */\n onClick?: (value: T) => void;\n\n /**\n * (Optional) onSelection handler\n */\n onSelectionChange?: (selection: ListSelectionState<T>) => void;\n\n /**\n * (Optional) handler function to load more items.\n */\n loadMore?: DbxListLoadMoreHandler;\n\n}\n\n/**\n * Used to display a potentially infinitely scrollable list of content.\n * \n * This component is generally wrapped by another component that provides this one configuration.\n */\n@Component({\n selector: 'dbx-list',\n templateUrl: './list.component.html',\n host: {\n 'class': 'd-block dbx-list',\n '[class.dbx-list-padded]': 'padded'\n }\n})\nexport class DbxListComponent<T = any, V extends DbxListView<T> = DbxListView<T>, S extends ListLoadingState<T> = ListLoadingState<T>> implements OnDestroy {\n\n readonly DEFAULT_SCROLL_DISTANCE = 1.5;\n readonly DEFAULT_THROTTLE_SCROLL = 50;\n\n /**\n * Whether or not to add bottom padding to the list content.\n */\n @Input()\n padded: boolean = true;\n\n @Output()\n contentScrolled = new EventEmitter<number>();\n\n private _content!: DbxListInternalContentDirective;\n private _disabled = new BehaviorSubject<boolean>(false);\n\n private _loadMoreTrigger = new Subject<void>();\n private _scrollTrigger = new Subject<DbxListScrollDirectionTrigger>();\n private _config = new BehaviorSubject<Maybe<DbxListConfig<T, V>>>(undefined);\n\n private _loadMoreSub = new SubscriptionObject();\n private _onClickSub = new SubscriptionObject();\n private _disabledSub = new SubscriptionObject();\n private _onSelectionChangeSub = new SubscriptionObject();\n\n readonly context = new ListLoadingStateContextInstance<T, S>({ showLoadingOnNoValue: false });\n readonly isEmpty$ = this.context.isEmpty$;\n readonly disabled$ = this._disabled.asObservable();\n\n readonly hideOnEmpty$: Observable<boolean> = this._config.pipe(filterMaybe(), map(x => Boolean(x.hideOnEmpty)), distinctUntilChanged(), shareReplay(1));\n readonly invertedList$: Observable<boolean> = this._config.pipe(filterMaybe(), map(x => Boolean(x?.throttle)), distinctUntilChanged(), shareReplay(1));\n readonly throttleScroll$: Observable<number> = this._config.pipe(map(x => (x?.throttle) ?? this.DEFAULT_THROTTLE_SCROLL), distinctUntilChanged(), shareReplay(1));\n readonly scrollDistance$: Observable<number> = this._config.pipe(map(x => (x?.scrollDistance) ?? this.DEFAULT_SCROLL_DISTANCE), distinctUntilChanged(), shareReplay(1));\n\n readonly scrollLoadMoreTrigger$ = this._config.pipe(\n switchMap((config) => {\n const loadNextDirection = config?.invertedList ? 'up' : 'down';\n return this._scrollTrigger.pipe(filter(x => x === loadNextDirection));\n })\n );\n\n readonly loadMore$ = merge(this.scrollLoadMoreTrigger$, this._loadMoreTrigger);\n\n readonly injectedComponentConfig$: Observable<Maybe<DbxInjectedComponentConfig<V>>> = this._config.pipe(\n distinctUntilChanged(),\n map((config) => {\n let injectedComponentConfig: Maybe<DbxInjectedComponentConfig<V>>;\n\n if (config) {\n const { componentClass, init, onClick, onSelectionChange, loadMore } = config;\n\n injectedComponentConfig = {\n componentClass: config.componentClass,\n injector: config.injector,\n init: (instance: V) => {\n\n // Synchronize disabled\n this._disabledSub.subscription = this.disabled$.subscribe((disabled) => instance.setDisabled(disabled));\n\n if (init) {\n init(instance);\n }\n\n instance.setListContext(this.context);\n\n if (loadMore) {\n this._loadMoreSub.subscription = this.loadMore$.pipe(\n // Throttle additional loading calls using exhaustMap until observable returns, if one is returned.\n exhaustMap(() => {\n const result = loadMore();\n let obs: Observable<void>;\n\n if (result) {\n obs = result.pipe(catchError(() => of()));\n } else {\n obs = of();\n }\n\n return obs;\n })\n ).subscribe();\n }\n\n if (onClick) {\n if (instance.clickValue) {\n this._onClickSub.subscription = instance.clickValue.subscribe(onClick);\n } else {\n console.error(`onClick() was passed to listConfig, but target class ${componentClass} has no clicked event emitter.`);\n }\n }\n\n if (onSelectionChange) {\n if (instance.selectionChange) {\n this._onSelectionChangeSub.subscription = instance.selectionChange.subscribe(onSelectionChange);\n } else {\n console.error(`onSelectionChange() was passed to listConfig, but target class ${componentClass} has no selectionChange event emitter.`);\n }\n }\n }\n };\n }\n\n return injectedComponentConfig;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n readonly hideContent$: Observable<boolean> = this.context.stateChange$.pipe(\n switchMap(() => this.context.state$.pipe(\n filter((x) => loadingStateHasFinishedLoading(x)),\n first(),\n startWith(beginLoading())\n )),\n switchMap((state) => {\n if (state?.loading) {\n return of(true);\n } else {\n return this.hideOnEmpty$.pipe(\n switchMap((hide) => (hide === false) ? of(false) : this.isEmpty$),\n distinctUntilChanged(),\n tapDetectChanges(this.cdRef),\n shareReplay(1)\n );\n }\n })\n );\n\n constructor(readonly cdRef: ChangeDetectorRef) { }\n\n ngOnDestroy(): void {\n delete (this as any)._content; // remove parent-child relation.\n this._scrollTrigger.complete();\n this._loadMoreTrigger.complete();\n this._config.complete();\n this._disabled.complete();\n\n this._onClickSub.destroy();\n this._loadMoreSub.destroy();\n this._onSelectionChangeSub.destroy();\n this._disabledSub.destroy();\n\n this.context.destroy();\n }\n\n @Input()\n get state$(): Observable<S> {\n return this.context.state$;\n }\n\n set state$(state$: Maybe<Observable<S>>) {\n this.context.setStateObs(state$);\n }\n\n @Input()\n set config(config: Maybe<DbxListConfig<T, V>>) {\n this._config.next(config);\n }\n\n @Input()\n get disabled(): boolean {\n return this._disabled.value;\n }\n\n set disabled(disabled: Maybe<boolean>) {\n this._disabled.next(disabled ?? false);\n }\n\n getScrollPositionRelativeToBottom(): number {\n try {\n const element = this.nativeElement;\n\n // At max scroll, scrollHeight = scrollTop + clientHeight;\n const { scrollTop, scrollHeight, clientHeight } = element;\n return scrollHeight - (scrollTop + clientHeight);\n } catch (e) {\n return 0;\n }\n }\n\n jumpToBottom(): void {\n try {\n this.nativeElement.scrollTop = this.nativeElement.scrollHeight;\n } catch (err) { }\n }\n\n jumpToPositionRelativeToBottom(pos: number): void {\n try {\n const element = this.nativeElement;\n const { scrollHeight, clientHeight } = element;\n element.scrollTop = scrollHeight - (clientHeight + pos);\n } catch (err) { }\n }\n\n onScrollDown(): void {\n this._scrollTrigger.next('down');\n }\n\n onScrollUp(): void {\n this._scrollTrigger.next('up');\n }\n\n loadMore(): void {\n this._loadMoreTrigger.next();\n }\n\n // MARK: Internal\n get nativeElement() {\n return this._content.elementRef.nativeElement;\n }\n\n get __content(): DbxListInternalContentDirective {\n return this._content;\n }\n\n set __content(content: DbxListInternalContentDirective) {\n if (this._content == null) {\n this._content = content;\n } else {\n throw new Error('Attempted to set __content in list outside of initialization.');\n }\n }\n\n}\n\n/**\n * Used internally by DbxListComponent\n */\n@Directive({\n selector: '[dbx-list-internal-content]',\n host: {\n 'class': 'd-block dbx-list-content',\n '[class.dbx-list-content-hidden]': 'hide'\n }\n})\nexport class DbxListInternalContentDirective {\n\n @Input()\n hide: Maybe<Boolean> = false;\n\n constructor(private readonly parent: DbxListComponent, readonly elementRef: ElementRef) {\n this.parent.__content = this;\n }\n\n @HostListener('scroll', ['$event'])\n onScrollEvent($event: any): void {\n const position = $event.target.scrollTop;\n this.parent.contentScrolled.emit(position);\n }\n\n}\n","<dbx-loading [context]=\"context\" [linear]=\"true\"></dbx-loading>\n<div dbx-list-internal-content infinite-scroll [infiniteScrollDistance]=\"(scrollDistance$ | async) ?? DEFAULT_SCROLL_DISTANCE\"\n [infiniteScrollUpDistance]=\"(scrollDistance$ | async) ?? DEFAULT_SCROLL_DISTANCE\" [hide]=\"hideContent$ | async\"\n [infiniteScrollThrottle]=\"(throttleScroll$ | async) ?? DEFAULT_THROTTLE_SCROLL\" [scrollWindow]=\"false\"\n (scrolled)=\"onScrollDown()\" (scrolledUp)=\"onScrollUp()\">\n <ng-content select=\"[top]\"></ng-content>\n <dbx-injected-content [config]=\"injectedComponentConfig$ | async\"></dbx-injected-content>\n <ng-content select=\"[bottom]\"></ng-content>\n</div>\n<ng-content *ngIf=\"isEmpty$ | async\" select=\"[empty]\"></ng-content>\n","import { ListLoadingState, filterMaybe, ObservableGetter, getter } from '@dereekb/rxjs';\nimport { Observable, BehaviorSubject, map, shareReplay } from 'rxjs';\nimport { Output, EventEmitter, OnInit, OnDestroy, Directive, Input } from \"@angular/core\";\nimport { DbxListConfig } from \"./list.component\";\nimport { DbxListView, ListSelectionState } from \"./list.view\";\nimport { Maybe } from '@dereekb/util';\n\nexport const DEFAULT_STATIC_LIST_DIRECTIVE_TEMPLATE = `\n<dbx-list [config]=\"config\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n</dbx-list>\n`;\n\n// MARK: Wrapper\nexport const DEFAULT_LIST_WRAPPER_DIRECTIVE_TEMPLATE = `\n<dbx-list [state$]=\"state$\" [config]=\"config$ | async\" [disabled]=\"disabled\">\n <ng-content top select=\"[top]\"></ng-content>\n <ng-content bottom select=\"[bottom]\"></ng-content>\n <ng-content empty select=\"[empty]\"></ng-content>\n</dbx-list>\n`;\n\nexport interface DbxListWrapperConfig<T, V extends DbxListView<T> = DbxListView<T>> extends Omit<DbxListConfig<T, V>, 'onClick' | 'loadMore'> { }\n\n@Directive()\nexport abstract class AbstractDbxListWrapperDirective<T, V extends DbxListView<T> = DbxListView<T>, C extends DbxListWrapperConfig<T, V> = DbxListWrapperConfig<T, V>, S extends ListLoadingState<T> = ListLoadingState<T>> implements OnInit, OnDestroy {\n\n private readonly _init = new BehaviorSubject<Maybe<ObservableGetter<C>>>(undefined);\n readonly config$ = this._init.pipe(\n filterMaybe(),\n getter(),\n map((x: C) => this._buildListConfig(x)),\n shareReplay(1));\n\n @Input()\n disabled?: Maybe<boolean>;\n\n @Input()\n state$?: Maybe<Observable<S>>;\n\n @Output()\n clickItem = new EventEmitter<T>();\n\n @Output()\n loadMore = new EventEmitter<void>();\n\n constructor(readonly initConfig: ObservableGetter<C>) { }\n\n ngOnInit(): void {\n this._init.next(this.initConfig);\n }\n\n ngOnDestroy(): void {\n this._init.complete();\n this.clickItem.complete();\n this.loadMore.complete();\n }\n\n protected _buildListConfig(config: C): DbxListConfig<T, V> {\n return {\n ...config,\n onClick: (x) => this.clickItem.emit(x),\n loadMore: () => this.loadMore.emit()\n };\n }\n\n}\n\n// MARK: Selection Wrapper\nexport interface DbxSelectionListWrapperConfig<T, V extends DbxListView<T> = DbxListView<T>> extends Omit<DbxListWrapperConfig<T, V>, 'onSelectionChange'> { }\n\n@Directive()\nexport abstract class AbstractDbxSelectionListWrapperDirective<T, V extends DbxListView<T> = DbxListView<T>, C extends DbxSelectionListWrapperConfig<T, V> = DbxSelectionListWrapperConfig<T, V>, S extends ListLoadingState<T> = ListLoadingState<T>> extends AbstractDbxListWrapperDirective<T, V, C, S> {\n\n @Output()\n selectionChange = new EventEmitter<ListSelectionState<T>>();\n\n override ngOnDestroy(): void {\n this.selectionChange.complete();\n }\n\n protected override _buildListConfig(config: C): DbxListConfig<T, V> {\n const result = super._buildListConfig(config);\n result.onSelectionChange = (x) => this.selectionChange.next(x);\n return result;\n }\n\n}\n","import { Directive, Host, OnInit, OnDestroy, Input, NgZone } from '@angular/core';\nimport { ActionContextStoreSourceInstance, AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxReadableErrorComponent } from './error.component';\n\n/**\n * Context used for linking an ReadableErrorComponent to an ActionContext.\n */\n@Directive({\n selector: '[dbxActionError]'\n})\nexport class DbxActionErrorDirective extends AbstractSubscriptionDirective implements OnInit {\n\n constructor(@Host() public readonly error: DbxReadableErrorComponent, public readonly source: ActionContextStoreSourceInstance) {\n super();\n }\n\n ngOnInit(): void {\n this.sub = this.source.error$.subscribe((error) => {\n this.error.error = error;\n });\n }\n\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { ServerError, ServerErrorResponse, ServerErrorResponseData, UnauthorizedServerErrorResponse } from '@dereekb/util';\n\n/**\n * Converts the error response to a POJO.\n */\nexport function convertToPOJOServerErrorResponse(httpError: HttpErrorResponse | any): ServerError {\n const result: ServerErrorResponse | undefined = convertToServerErrorResponse(httpError);\n const pojo: ServerErrorResponse = Object.assign({}, result);\n\n if (pojo.data) {\n try {\n const stringy = JSON.stringify(pojo.data);\n (pojo as any).data = JSON.parse(stringy);\n } catch (e) {\n console.warn('convertToPOJOServerErrorResponse(): Non-serializable Error Data Detected. It is being removed.: ', pojo.data);\n (pojo as any).data = undefined;\n }\n }\n\n return pojo;\n}\n\n/**\n * Converts an HTTP Error Response to a ServerErrorResponse type.\n * \n * @param error \n * @returns \n */\nexport function convertToServerErrorResponse(error: HttpErrorResponse | any): ServerErrorResponse | undefined {\n let result: ServerErrorResponse | undefined;\n\n if (error instanceof HttpErrorResponse) {\n const { status, error: data }: { status: number, error: ServerErrorResponseData } = error;\n\n const code = data.code;\n const message = data.message ?? error.statusText;\n\n switch (status) {\n case 401:\n result = new UnauthorizedServerErrorResponse({ message, data, code });\n break;\n default:\n result = new ServerErrorResponse({ code, status, data, message });\n break;\n }\n } else if (error) {\n result = new ServerErrorResponse({ message: error.message, status: 0 });\n }\n\n return result;\n}\n","import { Directive, Host, Input } from '@angular/core';\nimport { LoadingContext } from '@dereekb/rxjs';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxReadableErrorComponent } from './error.component';\n\n/**\n * Context used for linking an ReadableErrorComponent to a LoadingContext.\n *\n * The error from the context is given to the app error when available.\n */\n@Directive({\n selector: '[dbxLoadingError]'\n})\nexport class DbxLoadingErrorDirective extends AbstractSubscriptionDirective {\n\n constructor(@Host() public readonly error: DbxReadableErrorComponent) {\n super();\n }\n\n /**\n * Sets a LoadingContext that is watched for the loading state.\n */\n @Input('dbxLoadingError')\n set context(context: LoadingContext) {\n let subscription;\n\n if (context) {\n subscription = context.stream$.subscribe((x) => {\n this.error.error = x.error;\n });\n }\n\n this.sub = subscription;\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DbxReadableErrorComponent } from './error.component';\nimport { DbxLoadingErrorDirective } from './error.loading.directive';\nimport { DbxActionErrorDirective } from './error.action.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbxReadableErrorComponent,\n DbxLoadingErrorDirective,\n DbxActionErrorDirective\n ],\n exports: [\n DbxReadableErrorComponent,\n DbxLoadingErrorDirective,\n DbxActionErrorDirective\n ]\n})\nexport class DbxReadableErrorModule { }\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { convertToPOJOServerErrorResponse } from './error.api';\nimport { of, OperatorFunction } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { ActionCreator, TypedAction } from '@ngrx/store/src/models';\nimport { ServerError } from '@dereekb/util';\n\nexport interface ServerErrorParams {\n error: ServerError;\n}\n\n/**\n * Converts the error response to ServerErrorParams.\n */\nexport function convertServerErrorParams(httpError: HttpErrorResponse | any): ServerErrorParams {\n const error: ServerError = convertToPOJOServerErrorResponse(httpError);\n return { error };\n}\n\n/**\n * Catches error server params and feeds them to an action that takes ServerErrorParams as a prop.\n */\nexport function catchErrorServerParams<E extends ServerErrorParams, T extends string>(\n action: ActionCreator<T, (props: E) => E & TypedAction<T>>,\n mapError: (error: ServerErrorParams) => E = (error) => error as E\n):\n OperatorFunction<HttpErrorResponse | any, E & TypedAction<T>> {\n return catchError((error: HttpErrorResponse) => of(action(mapError(convertServerErrorParams(error)))));\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxBasicLoadingComponent } from './basic-loading.component';\nimport { DbxLoadingProgressComponent } from './loading-progress.component';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DbxLoadingComponent } from './loading.component';\nimport { DbxReadableErrorModule } from '../error';\n\n@NgModule({\n imports: [\n CommonModule,\n DbxReadableErrorModule,\n MatProgressSpinnerModule,\n MatProgressBarModule\n ],\n declarations: [\n DbxLoadingComponent,\n DbxBasicLoadingComponent,\n DbxLoadingProgressComponent\n ],\n exports: [\n DbxLoadingComponent,\n DbxBasicLoadingComponent,\n DbxLoadingProgressComponent,\n MatProgressSpinnerModule,\n MatProgressBarModule\n ]\n})\nexport class DbxLoadingModule { }\n","import { ClickableAnchor } from '@dereekb/dbx-core';\nimport { InjectionToken, StaticProvider } from \"@angular/core\";\nimport { DbxInjectedComponentConfig } from \"@dereekb/dbx-core\";\nimport { map, Observable, of } from \"rxjs\";\n\nexport const DBX_VALUE_LIST_VIEW_ITEM = new InjectionToken<any>('DbxValueListViewItem');\n\nexport interface DbxValueListItem<T> {\n value: T; // todo: rename to data\n icon?: string;\n disabled?: boolean;\n selected?: boolean;\n anchor?: ClickableAnchor;\n}\n\nexport interface AbstractDbxValueListViewConfig<T, I extends DbxValueListItem<T> = DbxValueListItem<T>, V = any> extends DbxInjectedComponentConfig<V> {\n mapValuesToItemValues?(values: T[]): Observable<I[]>;\n}\n\nexport const DEFAULT_DBX_VALUE_LIST_CONFIG_MAP_VALUES = <T, I extends DbxValueListItem<T>>(values: T[]) => of(values.map(value => ({ value })) as I[]);\n\nexport interface DbxValueListItemConfig<T> extends DbxValueListItem<T> {\n config: DbxInjectedComponentConfig;\n}\n\nexport function mapValuesToValuesListItemConfigObs<T>(listViewConfig: AbstractDbxValueListViewConfig<T>, values: T[]): Observable<DbxValueListItemConfig<T>[]> {\n return (listViewConfig.mapValuesToItemValues ?? DEFAULT_DBX_VALUE_LIST_CONFIG_MAP_VALUES)(values).pipe(\n map((itemValues) => {\n const items: DbxValueListItemConfig<T>[] = mapItemValuesToValueListItemConfig(listViewConfig, itemValues);\n return items;\n })\n );\n}\n\nexport function mapItemValuesToValueListItemConfig<T>(listViewConfig: AbstractDbxValueListViewConfig<T>, itemValues: DbxValueListItem<T>[]): DbxValueListItemConfig<T>[] {\n return itemValues.map((itemValue) => {\n const anchor = itemValue.anchor;\n const disabled = itemValue.disabled || anchor?.disabled;\n\n return {\n value: itemValue.value,\n icon: itemValue.icon,\n selected: itemValue.selected,\n disabled,\n anchor: itemValue.anchor,\n config: Object.assign({\n providers: [{\n provide: DBX_VALUE_LIST_VIEW_ITEM,\n useValue: itemValue\n }] as StaticProvider[]\n }, listViewConfig)\n }\n });\n}\n\n","import { Observable } from 'rxjs';\nimport { ListLoadingState, ListLoadingStateContext } from \"@dereekb/rxjs\";\nimport { EventEmitter, forwardRef, Provider, Type } from \"@angular/core\";\n\nexport interface ListSelectionStateItem<T> {\n disabled?: boolean;\n selected?: boolean;\n value: T;\n}\n\nexport interface ListSelectionState<T> {\n items: ListSelectionStateItem<T>[];\n}\n\n/**\n * Interface for a view that renders the items of a DbxList.\n */\nexport abstract class DbxListView<T, S extends ListLoadingState<T> = ListLoadingState<T>> {\n /**\n * Current disabled state.\n */\n abstract readonly disabled$: Observable<boolean>;\n /**\n * Values of the list view.\n */\n abstract readonly values$: Observable<T[]>;\n /**\n * (Optional) clicked event emitter.\n * \n * If available, the DbxList will subscribe to it automatically.\n */\n abstract clickValue?: EventEmitter<T>;\n /**\n * (Optional) selection changed event emitter.\n * \n * If available, the DbxList will subscribe to it automatically.\n */\n abstract selectionChange?: EventEmitter<ListSelectionState<T>>;\n /**\n * Sets the models input loading state context for the view to render from.\n */\n abstract setListContext(state: ListLoadingStateContext<T, S>): void;\n /**\n * Sets the disabled state of the list view.\n */\n abstract setDisabled(disabled: boolean): void;\n}\n\nexport function ProvideDbxListView<V extends DbxListView<any>>(sourceType: Type<V>): Provider[] {\n return [{\n provide: DbxListView,\n useExisting: forwardRef(() => sourceType)\n }];\n}\n","import { OnDestroy, Input, Directive } from \"@angular/core\";\nimport { filterMaybe } from \"@dereekb/rxjs\";\nimport { Maybe } from \"@dereekb/util\";\nimport { BehaviorSubject, distinctUntilChanged, shareReplay, combineLatest, switchMap, Observable } from \"rxjs\";\nimport { DbxListView } from \"./list.view\";\nimport { AbstractDbxValueListViewConfig, DbxValueListItem, DbxValueListItemConfig, mapValuesToValuesListItemConfigObs } from \"./list.view.value\";\n\n/**\n * Abstract list directive that takes in items and a AbstractDbxValueItemListViewConfig configuration.\n */\n@Directive()\nexport abstract class AbstractDbxValueListViewDirective<T, I extends DbxValueListItem<T> = DbxValueListItem<T>, V = any, C extends AbstractDbxValueListViewConfig<T, I, V> = AbstractDbxValueListViewConfig<T, I, V>> implements OnDestroy {\n\n private _config = new BehaviorSubject<Maybe<C>>(undefined);\n readonly config$ = this._config.pipe(filterMaybe(), distinctUntilChanged());\n\n readonly items$ = combineLatest([this.config$, this.dbxListView.values$]).pipe(\n switchMap(([listViewConfig, values]) => mapValuesToValuesListItemConfigObs(listViewConfig, values)),\n shareReplay(1)\n );\n\n constructor(readonly dbxListView: DbxListView<T>) { }\n\n ngOnDestroy(): void {\n this._config.complete();\n }\n\n @Input()\n set config(config: Maybe<C>) {\n this._config.next(config);\n }\n\n onClickValue(value: T) {\n this.dbxListView.clickValue?.next(value);\n }\n\n}\n","import { map, shareReplay, distinctUntilChanged } from 'rxjs';\nimport { Component, Input } from '@angular/core';\nimport { MatSelectionListChange } from '@angular/material/list';\nimport { DbxListView, ListSelectionStateItem } from './list.view';\nimport { DbxValueListItem, AbstractDbxValueListViewConfig, DbxValueListItemConfig } from './list.view.value';\nimport { AbstractDbxValueListViewDirective } from './list.view.value.directive';\nimport { Maybe } from '@dereekb/util';\n\nexport interface DbxSelectionValueListViewConfig<T, I extends DbxValueListItem<T> = DbxValueListItem<T>, V = any> extends AbstractDbxValueListViewConfig<T, I, V> {\n multiple?: boolean;\n}\n\n/**\n * Abstract list view that has a pre-built-in selection change event for an Angular Material MatSelectionListChange.\n */\n@Component({\n selector: 'dbx-selection-list-view',\n template: `\n <dbx-selection-list-view-content [multiple]=\"multiple$ | async\" [items]=\"items$ | async\"></dbx-selection-list-view-content>\n `\n})\nexport class DbxSelectionValueListViewComponent<T, I extends DbxValueListItem<T> = DbxValueListItem<T>, V = any> extends AbstractDbxValueListViewDirective<T, I, V, DbxSelectionValueListViewConfig<T, I, V>> {\n\n readonly multiple$ = this.config$.pipe(map(x => x.multiple ?? true), distinctUntilChanged(), shareReplay(1));\n\n constructor(dbxListView: DbxListView<T>) {\n super(dbxListView);\n }\n\n}\n\n/**\n * Content view for a DbxSelectionValueListView. It can be used directly in cases where the items are already configured, or want to be configured in a non-standard fashion.\n */\n@Component({\n selector: 'dbx-selection-list-view-content',\n template: `\n <mat-selection-list [disabled]=\"disabled$ | async\" [multiple]=\"multiple\" (selectionChange)=\"matSelectionChanged($event)\">\n <mat-list-option class=\"dbx-list-view-item\" *ngFor=\"let item of items\" [selected]=\"item.selected\" [disabled]=\"item.disabled\" [value]=\"item.value\" (click)=\"onClickValue(item.value)\">\n <mat-icon matListIcon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <div dbx-injected-content [config]=\"item.config\"></div>\n </mat-list-option>\n </mat-selection-list>\n `,\n host: {\n 'class': 'dbx-list-view dbx-selection-list-view'\n }\n})\nexport class DbxSelectionValueListItemViewComponent<T> {\n\n @Input()\n multiple?: Maybe<boolean>;\n\n @Input()\n items?: Maybe<DbxValueListItemConfig<T>[]>;\n\n readonly disabled$ = this.dbxListView.disabled$;\n\n constructor(readonly dbxListView: DbxListView<T>) {\n if (!dbxListView.selectionChange) {\n throw new Error('Parent dbxListView to DbxSelectionValueListViewComponent has no selectionChange emitter.');\n }\n }\n\n onClickValue(value: T) {\n this.dbxListView.clickValue?.next(value);\n }\n\n matSelectionChanged(selection: MatSelectionListChange): void {\n const options = selection.source.selectedOptions.selected;\n const items: ListSelectionStateItem<T>[] = options.map(x => {\n const { value, selected, disabled } = x;\n return ({ value, selected, disabled });\n });\n\n this.dbxListView.selectionChange!.next({\n items\n });\n }\n\n}\n","import { Component } from '@angular/core';\nimport { shareReplay, map, first } from 'rxjs';\nimport { DbxValueListItem, AbstractDbxValueListViewConfig } from './list.view.value';\nimport { AbstractDbxValueListViewDirective } from './list.view.value.directive';\nimport { AnchorType, anchorTypeForAnchor } from '@dereekb/dbx-core';\n\nexport interface DbxValueListViewConfig<T, I extends DbxValueListItem<T> = DbxValueListItem<T>, V = any> extends AbstractDbxValueListViewConfig<T, I, V> {\n emitAllClicks?: boolean;\n}\n\n/**\n * Abstract list view that has a pre-built-in selection change event for an Angular Material MatSelectionListChange.\n */\n@Component({\n selector: 'dbx-list-view',\n template: `\n <mat-nav-list>\n <dbx-anchor *ngFor=\"let item of (items$ | async)\" [anchor]=\"item.anchor\" [disabled]=\"item.disabled\">\n <a mat-list-item class=\"dbx-list-view-item\" [disabled]=\"item.disabled\" (click)=\"onClickItem(item)\">\n <mat-icon matListIcon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <div dbx-injected-content [config]=\"item.config\"></div>\n </a>\n </dbx-anchor>\n </mat-nav-list>\n `,\n host: {\n 'class': 'dbx-list-view'\n }\n})\nexport class DbxValueListViewComponent<T, I extends DbxValueListItem<T> = DbxValueListItem<T>, V = any, C extends DbxValueListViewConfig<T, I, V> = DbxValueListViewConfig<T, I, V>> extends AbstractDbxValueListViewDirective<T, I, V, C> {\n\n readonly emitAllClicks$ = this.config$.pipe(map(x => x.emitAllClicks), shareReplay(1));\n\n onClickItem(item: DbxValueListItem<T>) {\n\n // do not emit clicks for disabled items.\n if (!item.disabled) {\n this.emitAllClicks$.pipe(first()).subscribe((emitAll) => {\n // only emit clicks for items with no anchor, or plain anchors.\n if (emitAll || !item.anchor || anchorTypeForAnchor(item.anchor) === AnchorType.PLAIN) {\n this.onClickValue(item.value);\n }\n });\n }\n }\n\n}\n","import { DbxAnchorModule } from '../../router/layout/anchor/anchor.module';\nimport { DbxLoadingModule } from '../../loading/loading.module';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxInjectedComponentModule } from '@dereekb/dbx-core';\nimport { DbxListComponent, DbxListInternalContentDirective } from './list.component';\nimport { DbxListEmptyContentComponent } from './list.content.empty.component';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { DbxSelectionValueListItemViewComponent, DbxSelectionValueListViewComponent } from './list.view.value.selection.component';\nimport { DbxValueListViewComponent } from './list.view.value.component';\n\n@NgModule({\n imports: [\n CommonModule,\n DbxLoadingModule,\n DbxAnchorModule,\n InfiniteScrollModule,\n DbxInjectedComponentModule,\n MatListModule,\n MatIconModule\n ],\n declarations: [\n DbxListComponent,\n DbxListInternalContentDirective,\n DbxListEmptyContentComponent,\n DbxValueListViewComponent,\n DbxSelectionValueListViewComponent,\n DbxSelectionValueListItemViewComponent\n ],\n exports: [\n DbxListComponent,\n DbxListEmptyContentComponent,\n DbxValueListViewComponent,\n DbxSelectionValueListViewComponent,\n DbxSelectionValueListItemViewComponent\n ]\n})\nexport class DbxListLayoutModule { }\n","import { ListLoadingStateContext, switchMapMaybeObs } from '@dereekb/rxjs';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { Directive, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { shareReplay } from 'rxjs/operators';\nimport { DbxListView } from './list.view';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Abstract DbxListView implementation.\n */\n@Directive()\nexport abstract class AbstractDbxListViewDirective<T> implements DbxListView<T>, OnDestroy {\n\n private readonly _disabled = new BehaviorSubject<boolean>(false);\n private readonly _values$ = new BehaviorSubject<Maybe<Observable<T[]>>>(undefined);\n\n readonly values$ = this._values$.pipe(switchMapMaybeObs(), shareReplay(1));\n readonly disabled$ = this._disabled.asObservable();\n\n @Output()\n clickValue = new EventEmitter<T>();\n\n constructor() { }\n\n @Input()\n set valueArray(values: Maybe<T[]>) {\n this.setValues(values ? of(values) : undefined);\n }\n\n @Input()\n set values(values: Maybe<Observable<T[]>>) {\n this.setValues(values);\n }\n\n ngOnDestroy(): void {\n this._values$.complete();\n }\n\n onClickValue(value: T) {\n this.clickValue.emit(value);\n }\n\n setListContext(state: ListLoadingStateContext<T>): void {\n this.setValues(state.list$);\n }\n\n setValues(valuesObs: Maybe<Observable<T[]>>): void {\n this._values$.next(valuesObs);\n }\n\n setDisabled(disabled: boolean): void {\n this._disabled.next(disabled);\n }\n\n}\n","import { Directive, EventEmitter, Output } from '@angular/core';\nimport { MatSelectionListChange } from '@angular/material/list';\nimport { ListSelectionState, ListSelectionStateItem } from './list.view';\nimport { AbstractDbxListViewDirective } from './list.view.directive';\n\n// MARK: List View\n/**\n * Abstract list view that has a pre-built-in selection change event for an Angular Material MatSelectionListChange.\n */\n@Directive()\nexport abstract class AbstractSelectionValueListViewDirective<T> extends AbstractDbxListViewDirective<T> {\n\n @Output()\n selectionChange = new EventEmitter<ListSelectionState<T>>();\n\n selectionChanged(selection: ListSelectionState<T>): void {\n this.selectionChange.emit(selection);\n }\n\n matSelectionChanged(selection: MatSelectionListChange): void {\n const options = selection.source.selectedOptions.selected;\n const items: ListSelectionStateItem<T>[] = options.map(x => {\n const { value, selected, disabled } = x;\n return ({ value, selected, disabled });\n });\n\n this.selectionChanged({ items });\n }\n\n}\n","import { Directive, Inject } from \"@angular/core\";\nimport { DbxValueListItem, DBX_VALUE_LIST_VIEW_ITEM } from \"./list.view.value\";\n\n@Directive()\nexport abstract class AbstractDbxSelectionValueListViewItemComponent<T, I extends DbxValueListItem<T> = DbxValueListItem<T>> {\n\n get value() {\n return this.item.value;\n }\n\n constructor(@Inject(DBX_VALUE_LIST_VIEW_ITEM) readonly item: I) { }\n\n}\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { DbxSectionHeaderHType } from './section';\n\n/**\n * Component used to style a section's header.\n */\n@Component({\n selector: '.dbx-section-header',\n template: `\n <div class=\"dbx-section-header-content\">\n <ng-container [ngSwitch]=\"h ?? 1\">\n <h1 *ngSwitchCase=\"1\" class=\"dbx-section-header-content-title\">\n <ng-container *ngTemplateOutlet=\"headerContentTitleTemplate\"></ng-container>\n </h1>\n <h2 *ngSwitchCase=\"2\" class=\"dbx-section-header-content-title\">\n <ng-container *ngTemplateOutlet=\"headerContentTitleTemplate\"></ng-container>\n </h2>\n <h3 *ngSwitchCase=\"3\" class=\"dbx-section-header-content-title\">\n <ng-container *ngTemplateOutlet=\"headerContentTitleTemplate\"></ng-container>\n </h3>\n <h4 *ngSwitchCase=\"4\" class=\"dbx-section-header-content-title\">\n <ng-container *ngTemplateOutlet=\"headerContentTitleTemplate\"></ng-container>\n </h4>\n <h5 *ngSwitchCase=\"5\" class=\"dbx-section-header-content-title\">\n <ng-container *ngTemplateOutlet=\"headerContentTitleTemplate\"></ng-container>\n </h5>\n </ng-container>\n <span class=\"spacer\"></span>\n <ng-content></ng-content>\n </div>\n <p *ngIf=\"hint\" class=\"dbx-section-hint dbx-hint\">{{ hint }}</p>\n <ng-template #headerContentTitleTemplate>\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon><span class=\"title-text\">{{ header }}</span>\n </ng-template>\n `\n})\nexport class DbxSectionHeaderComponent {\n\n @Input()\n h?: Maybe<DbxSectionHeaderHType>;\n\n @Input()\n header?: Maybe<string>;\n\n @Input()\n icon?: Maybe<string>;\n\n @Input()\n hint?: Maybe<string>;\n\n}\n","import { Component, Input } from '@angular/core';\nimport { DbxSectionHeaderComponent } from './section.header.component';\n\n/**\n * Component used to format content on a page within a section.\n */\n@Component({\n selector: 'dbx-section',\n template: `\n <div class=\"dbx-section-header\" [h]=\"3\" [header]=\"header\" [icon]=\"icon\" [hint]=\"hint\">\n <ng-content select=\"[sectionHeader]\"></ng-content>\n </div>\n <div class=\"dbx-section-content\">\n <ng-content></ng-content>\n </div>\n `,\n host: {\n 'class': 'd-block, dbx-section',\n '[class]': `(elevated) ? 'dbx-section-elevated' : ''`\n }\n})\nexport class DbxSectionComponent extends DbxSectionHeaderComponent {\n\n @Input()\n elevated = false;\n\n}\n","import { OnDestroy } from '@angular/core';\nimport { Component, Input, EventEmitter, Output } from '@angular/core';\nimport { DbxSectionComponent } from './section.component';\n\n/**\n * Component used to format content that displays an intro until a button is pressed.\n */\n@Component({\n selector: 'dbx-intro-action-section',\n template: `\n <div class=\"dbx-intro-action-section\" [ngSwitch]=\"showIntro\">\n <div *ngSwitchCase=\"true\" class=\"dbx-intro-action-section-intro\">\n <p>{{ hint }}</p>\n <div>\n <ng-content select=\"[info]\"></ng-content>\n </div>\n <div>\n <button mat-raised-button color=\"accent\" (click)=\"actionClicked()\">{{ action }}</button>\n </div>\n </div>\n <ng-container *ngSwitchCase=\"false\">\n <ng-content></ng-content>\n </ng-container>\n </div>\n `\n})\nexport class DbxIntroActionSectionComponent extends DbxSectionComponent implements OnDestroy {\n\n @Output()\n showAction = new EventEmitter<void>();\n\n @Input()\n showIntro?: boolean;\n\n @Input()\n action?: string;\n\n ngOnDestroy() {\n this.showAction.complete();\n }\n\n actionClicked() {\n this.showAction.next();\n }\n\n}","import { Component, Input } from '@angular/core';\nimport { DbxSectionComponent } from './section.component';\n\n/**\n * A subsection.\n */\n@Component({\n selector: 'dbx-subsection',\n template: `\n <div class=\"dbx-subsection\">\n <div class=\"dbx-section-header\" [h]=\"h ?? 4\" [header]=\"header\" [icon]=\"icon\" [hint]=\"hint\">\n <ng-content select=\"[sectionHeader]\"></ng-content>\n </div>\n <div class=\"dbx-section-content\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class DbxSubSectionComponent extends DbxSectionComponent { }\n","import { Component, Input } from '@angular/core';\nimport { DbxSectionHeaderComponent } from './section.header.component';\n\n/**\n * Component used to style a page that is made up of app sections.\n */\n@Component({\n selector: 'dbx-section-page',\n template: `\n <div class=\"dbx-content-page dbx-section-page\">\n <div class=\"dbx-section-header\" [h]=\"h ?? 2\" [header]=\"header\" [icon]=\"icon\" [hint]=\"hint\">\n <ng-content select=\"[sectionHeader]\"></ng-content>\n </div>\n <ng-content></ng-content>\n </div>\n `\n})\nexport class DbxSectionPageComponent extends DbxSectionHeaderComponent { }\n","import { DbxAnchorModule } from '../../router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatRippleModule } from '@angular/material/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DbxSectionComponent } from './section.component';\nimport { DbxSubSectionComponent } from './subsection.component';\nimport { DbxSectionPageComponent } from './section.page.component';\nimport { DbxIntroActionSectionComponent } from './section.intro.component';\nimport { DbxSectionHeaderComponent } from './section.header.component';\n\n/**\n * Module for container-type components.\n */\n@NgModule({\n imports: [\n CommonModule,\n DbxAnchorModule,\n MatButtonModule,\n MatRippleModule,\n MatIconModule\n ],\n declarations: [\n DbxSectionHeaderComponent,\n DbxSectionPageComponent,\n DbxSectionComponent,\n DbxSubSectionComponent,\n DbxIntroActionSectionComponent\n ],\n exports: [\n DbxSectionHeaderComponent,\n DbxSectionPageComponent,\n DbxSectionComponent,\n DbxSubSectionComponent,\n DbxIntroActionSectionComponent\n ]\n})\nexport class DbxSectionLayoutModule { }\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dbx-step',\n templateUrl: './step.component.html',\n // TODO: styleUrls: ['./step.scss']\n})\nexport class DbxStepComponent {\n\n @Input()\n done?: boolean;\n\n @Input()\n step?: number;\n\n @Input()\n text?: string;\n\n @Input()\n hint?: string;\n\n}\n","<div class=\"step-section\" [ngClass]=\"(done) ? 'done' : ''\">\n <div class=\"step-section-header\">\n <span class=\"step\">{{ step }}.</span>\n <mat-icon class=\"done-check\" *ngIf=\"done\">done</mat-icon>\n <span class=\"text\">{{ text }}</span>\n <p *ngIf=\"hint\" class=\"hint\">{{ hint }}</p>\n </div>\n <div class=\"step-section-content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxStepComponent } from './step.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [\n DbxStepComponent\n ],\n exports: [\n DbxStepComponent\n ],\n})\nexport class DbxStepLayoutModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-hint',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'dbx-hint'\n }\n})\nexport class DbxHintComponent { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-label',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'dbx-label'\n }\n})\nexport class DbxLabelComponent { }\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs/operators';\nimport linkifyStr from 'linkify-string';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Used to \"linkify\" the input text.\n */\n@Component({\n selector: 'dbx-linkify',\n template: `<span class=\"dbx-linkify\" [innerHTML]=\"linkifiedBody$ | async\"></span>`\n})\nexport class DbxLinkifyComponent implements OnDestroy {\n\n private _text = new BehaviorSubject<string>('');\n\n readonly linkifiedText$ = this._text.pipe(\n distinctUntilChanged(),\n map(x => linkifyStr(x, {\n defaultProtocol: 'https',\n target: {\n url: '_blank'\n }\n })),\n shareReplay(1)\n );\n\n readonly linkifiedBody$ = this.linkifiedText$.pipe(\n map(x => {\n return this.sanitizer.bypassSecurityTrustHtml(x);\n }),\n shareReplay(1)\n );\n\n constructor(private readonly sanitizer: DomSanitizer) { }\n\n ngOnDestroy(): void {\n this._text.complete();\n }\n\n @Input()\n get text(): string {\n return this._text.value;\n }\n\n set text(text: string) {\n this._text.next(text);\n }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-note',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'dbx-note'\n }\n})\nexport class DbxNoteComponent { }\n","import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'dbx-notice',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'dbx-notice'\n }\n})\nexport class DbxNoticeComponent { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-ok',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'dbx-ok'\n }\n})\nexport class DbxOkComponent { }\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-success',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'dbx-success'\n }\n})\nexport class DbxSuccessComponent { }\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\nexport interface TextChip<T = any> {\n text: string;\n tooltip?: string;\n color?: 'primary' | 'accent';\n data?: T;\n}\n\n@Component({\n selector: 'dbx-text-chips',\n template: `\n <mat-chip-list *ngIf=\"chips\" [multiple]=\"false\">\n <mat-chip *ngFor=\"let chip of chips\" selected [color]=\"chip.color\" [matTooltip]=\"chip.tooltip!\" matTooltipPosition=\"above\">\n {{chip.text}}\n </mat-chip>\n </mat-chip-list>\n `\n})\nexport class DbxTextChipsComponent<T = any> {\n\n @Input()\n chips?: Maybe<TextChip<T>[]>;\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dbx-warn',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'dbx-warn'\n }\n})\nexport class DbxWarnComponent {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DbxHintComponent } from './hint.component';\nimport { DbxLabelComponent } from './label.component';\nimport { DbxLinkifyComponent } from './linkify.component';\nimport { DbxNoteComponent } from './note.component';\nimport { DbxNoticeComponent } from './notice.component';\nimport { DbxOkComponent } from './ok.component';\nimport { DbxSuccessComponent } from './success.component';\nimport { DbxTextChipsComponent } from './text.chips.component';\nimport { DbxWarnComponent } from './warn.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatChipsModule,\n MatTooltipModule,\n MatIconModule\n ],\n declarations: [\n DbxNoteComponent,\n DbxNoticeComponent,\n DbxSuccessComponent,\n DbxWarnComponent,\n DbxHintComponent,\n DbxLabelComponent,\n DbxLinkifyComponent,\n DbxOkComponent,\n DbxTextChipsComponent\n ],\n exports: [\n DbxNoteComponent,\n DbxNoticeComponent,\n DbxSuccessComponent,\n DbxWarnComponent,\n DbxHintComponent,\n DbxLabelComponent,\n DbxLinkifyComponent,\n DbxOkComponent,\n DbxTextChipsComponent\n ],\n})\nexport class DbxTextModule { }\n","import { NgModule } from '@angular/core';\nimport { DbxSectionLayoutModule } from './section/section.layout.module';\nimport { DbxListLayoutModule } from './list/list.layout.module';\nimport { DbxItemLayoutModule } from './item/item.layout.module';\nimport { DbxFlagLayoutModule } from './flag/flag.layout.module';\nimport { DbxContentLayoutModule } from './content/content.layout.module';\nimport { DbxColumnLayoutModule } from './column/column.layout.module';\nimport { DbxCardBoxLayoutModule } from './card/card.box.layout.module';\nimport { DbxBlockLayoutModule } from './block/block.layout.module';\nimport { DbxCompactLayoutModule } from './compact/compact.layout.module';\nimport { DbxStepLayoutModule } from './step/step.layout.module';\nimport { DbxBarLayoutModule } from './bar/bar.layout.module';\nimport { DbxTextModule } from './text/text.module';\nimport { DbxStyleLayoutModule } from './style/style.layout.module';\nimport { DbxFlexLayoutModule } from './flex/flex.layout.module';\n\n@NgModule({\n exports: [\n DbxBarLayoutModule,\n DbxBlockLayoutModule,\n DbxCardBoxLayoutModule,\n DbxColumnLayoutModule,\n DbxCompactLayoutModule,\n DbxContentLayoutModule,\n DbxFlagLayoutModule,\n DbxFlexLayoutModule,\n DbxItemLayoutModule,\n DbxListLayoutModule,\n DbxSectionLayoutModule,\n DbxStepLayoutModule,\n DbxStyleLayoutModule,\n DbxTextModule\n ],\n})\nexport class DbxLayoutModule { }\n","import { Maybe } from \"@dereekb/util\";\nimport { Observable } from \"rxjs\";\n\nexport type DbxPopoverKey = string;\n\nexport abstract class DbxPopoverController<O = any, I = any> {\n abstract readonly key: DbxPopoverKey;\n abstract readonly data?: Maybe<I>;\n abstract readonly closing$: Observable<boolean>;\n /**\n * Signals for the popover to close.\n */\n abstract close(): void;\n /**\n * Closes the popover and returns the input value.\n */\n abstract return(value?: O): void;\n}\n","import { DbxPopoverKey, DbxPopoverController } from './popover';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Used for coordinating popovers and closing/replacing existing ones when a new popover of the same name appears.\n */\n@Injectable()\nexport class DbxPopoverCoordinatorService {\n\n private _popovers = new BehaviorSubject<Map<DbxPopoverKey, DbxPopoverController>>(new Map());\n readonly popovers$ = this._popovers.asObservable();\n\n get popovers(): Map<DbxPopoverKey, DbxPopoverController> {\n return this._popovers.value;\n }\n\n public addPopover(popover: DbxPopoverController): void {\n const key = popover.key;\n\n if (key) {\n this.removePopover(key);\n this._popovers.value.set(key, popover);\n this._popovers.next(this.popovers);\n }\n }\n\n public removePopover(key: DbxPopoverKey, popover?: DbxPopoverController): void {\n if (key) {\n const existing = this.popovers.get(key);\n\n // Remove if there is one existing, and if popover is provided it is the same popover.\n if (existing && (!popover || popover === existing)) {\n existing.close();\n this._popovers.value.delete(key);\n this._popovers.next(this.popovers);\n }\n }\n }\n\n}\n","import { DbxPopoverController } from './popover';\nimport { Component, OnInit, OnDestroy } from '@angular/core';\nimport { DbxPopoverCoordinatorService } from './popover.coordinator.service';\nimport { delay, map, shareReplay } from 'rxjs/operators';\n\n/**\n * Used for coordinating popovers and closing/replacing existing ones when a new popover of the same name appears.\n */\n@Component({\n selector: 'dbx-popover-coordinator',\n template: `\n <ng-container *ngIf=\"show$ | async\">\n <ng-content></ng-content>\n </ng-container>\n `,\n // TODO: styleUrls: ['./popover.scss']\n})\nexport class DbxPopoverCoordinatorComponent implements OnInit, OnDestroy {\n\n readonly isPopoverForKey$ = this.service.popovers$.pipe(map(x => x.get(this.popover.key) === this.popover), shareReplay(1));\n readonly show$ = this.isPopoverForKey$.pipe(delay(0));\n\n constructor(private readonly service: DbxPopoverCoordinatorService, private readonly popover: DbxPopoverController) { }\n\n ngOnInit(): void {\n this.service.addPopover(this.popover);\n }\n\n ngOnDestroy(): void {\n this.service.removePopover(this.popover.key, this.popover);\n }\n\n}\n","import { Input, OnDestroy, Output, EventEmitter, HostListener, Directive } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\n@Directive({\n selector: '[dbxWindowKeyDownListener]'\n})\nexport class DbxWindowKeyDownListenerDirective implements OnDestroy {\n\n private _keysFilter?: Maybe<Set<string>>;\n\n @Input()\n appWindowKeyDownEnabled: boolean = true;\n\n @Output('dbxWindowKeyDownListener')\n keyPressed = new EventEmitter<KeyboardEvent>();\n\n @Input('appWindowKeyDownFilter')\n set appWindowKeyDownFilter(filterOnKeys: string[]) {\n let filter: Maybe<Set<string>>;\n\n if (filterOnKeys) {\n filter = new Set(filterOnKeys);\n }\n\n this._keysFilter = filter;\n }\n\n ngOnDestroy(): void {\n this.keyPressed.complete();\n }\n\n @HostListener('window:keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.appWindowKeyDownEnabled !== false) {\n if (!this._keysFilter || this._keysFilter.has(event.key)) {\n this.keyPressed.emit(event);\n }\n }\n }\n\n}\n","import { Component, NgZone, Type, OnInit, OnDestroy, ElementRef } from '@angular/core';\nimport { NgOverlayContainerConfiguration, NgPopoverRef } from 'ng-overlay-container';\nimport { AbstractTransitionWatcherDirective, DbxRouterTransitionService, DbxInjectedComponentConfig } from '@dereekb/dbx-core';\nimport { Subject } from 'rxjs';\nimport { PopoverPositionStrategy } from './popover.position.strategy';\nimport { filter, first, map, shareReplay, startWith } from 'rxjs/operators';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { LockSet } from '@dereekb/rxjs';\nimport { CompactContextStore, CompactMode } from '../../layout';\nimport { Maybe } from '@dereekb/util';\nimport { DbxPopoverController, DbxPopoverKey } from './popover';\n\nexport abstract class DbxPopoverComponentController<O, I> extends DbxPopoverController<O, I> {\n getClosingValueFn?: (value?: I) => Promise<O>;\n}\n\nexport interface DbxPopoverComponentConfig<O, I, T> {\n /**\n * Key used for uniquely identifying a limited instance.\n *\n * Only one popover should exist at a time given a certain key.\n */\n key: DbxPopoverKey;\n /**\n * Origin element to position on.\n */\n origin: ElementRef;\n /**\n * Whether or not to close if a transition occurs.\n */\n closeOnTransition?: boolean;\n /**\n * Whether or not to dismiss when the escape button is pressed.\n * \n * False by default.\n */\n closeOnEscape?: boolean;\n /**\n * Component to inject into the popover.\n */\n componentClass: Type<T>;\n /**\n * Data available to the popover.\n */\n data?: Maybe<I>;\n init?: (component: T, controller: DbxPopoverController<O, I>) => void;\n}\n\nexport interface FullDbxPopoverComponentConfig<O, I, T> extends DbxPopoverComponentConfig<O, I, T> {\n configuration: NgOverlayContainerConfiguration;\n}\n\n/**\n * Popover component.\n */\n@Component({\n template: `\n <dbx-popover-coordinator (dbxWindowKeyDownListener)=\"handleKeydown($event)\" [appWindowKeyDownFilter]=\"triggerCloseKeys\">\n <div dbx-style class=\"dbx-popover-component\" dbx-injected-content [config]=\"contentConfig\"></div>\n </dbx-popover-coordinator>\n `,\n providers: [{\n provide: DbxPopoverController,\n useExisting: DbxPopoverComponent\n }, {\n provide: CompactContextStore\n }]\n})\nexport class DbxPopoverComponent<O = any, I = any, T = any> extends AbstractTransitionWatcherDirective implements DbxPopoverController<O, I>, OnInit, OnDestroy {\n\n readonly lockSet = new LockSet();\n\n readonly contentConfig: DbxInjectedComponentConfig = {\n componentClass: this.config.componentClass,\n init: this.config.init ? ((instance) => this.config.init!(instance, this)) : undefined\n };\n\n private _startedClosing = false;\n private readonly _closing = new Subject<void>();\n\n private _triggerCloseKeys: string[] = [];\n\n readonly isClosing$ = this._closing.pipe(first(), map(x => true), startWith(false), shareReplay(1));\n readonly closing$ = this.isClosing$.pipe(filter(x => x));\n\n getClosingValueFn?: (value?: I) => Promise<O>;\n\n constructor(\n private popoverRef: NgPopoverRef<FullDbxPopoverComponentConfig<O, I, T>, O>,\n private compactContextState: CompactContextStore,\n dbNgxRouterTransitionService: DbxRouterTransitionService,\n ngZone: NgZone) {\n super(dbNgxRouterTransitionService, ngZone);\n\n // Override Close to properly signal to listeners when a close is occuring.\n const originalClose = this.popoverRef.close;\n this.popoverRef.close = (x) => {\n if (!this._startedClosing) {\n this.lockSet.lockForSeconds(1);\n this._startedClosing = true;\n this.close();\n originalClose.call(this.popoverRef, x);\n }\n };\n\n const overlay = (popoverRef as any)._overlay as Overlay;\n const elementRef = this.config.origin;\n const configuration = this.config.configuration;\n\n this.compactContextState.setMode(CompactMode.COMPACT);\n const position = PopoverPositionStrategy.make(overlay, elementRef, configuration);\n this.popoverRef.overlay.updatePositionStrategy(position);\n }\n\n get config(): FullDbxPopoverComponentConfig<O, I, T> {\n return this.popoverRef.data;\n }\n\n get key(): DbxPopoverKey {\n return this.config.key;\n }\n\n get data(): Maybe<I> {\n return this.config.data;\n }\n\n get triggerCloseKeys(): string[] {\n return this._triggerCloseKeys;\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n\n if (this.config.closeOnEscape) {\n this._triggerCloseKeys = ['Escape'];\n }\n }\n\n override ngOnDestroy(): void {\n this.lockSet.destroyOnNextUnlock(() => {\n super.ngOnDestroy();\n this._closing.complete();\n });\n }\n\n protected updateForSuccessfulTransition(): void {\n if (this.config.closeOnTransition !== false) {\n this.close();\n }\n }\n\n // Popover Controls\n public close(): void {\n if (!this._startedClosing && this.getClosingValueFn) {\n this.getClosingValueFn().then((x) => {\n this.return(x);\n }, () => {\n this.return();\n });\n } else {\n this.return();\n }\n }\n\n public return(value?: O): void {\n this._closing.next();\n this.popoverRef.close(value);\n }\n\n // Keypresses\n handleKeydown(key: KeyboardEvent) {\n this.close();\n }\n\n}\n","import { Directive } from '@angular/core';\nimport { DbxPopoverComponent } from './popover.component';\n\n/**\n * Abstract popover directive.\n */\n@Directive()\nexport abstract class AbstractPopoverDirective<O = any, I = any, T = any> {\n\n constructor(public readonly popover: DbxPopoverComponent<O, I, T>) { }\n\n close(): void {\n this.popover.close();\n }\n\n returnAndClose(value: O): void {\n this.popover.return(value);\n }\n\n}\n","import { BehaviorSubject } from 'rxjs';\nimport { OnDestroy } from '@angular/core';\nimport { Component, Input } from '@angular/core';\nimport { ResizedEvent } from 'angular-resize-event';\nimport { throttleTime } from 'rxjs/operators';\n\n/**\n * Popover content wrapper component.\n */\n@Component({\n selector: 'dbx-popover-content',\n template: `\n <div class=\"d-block dbx-popover-content\" (resized)=\"onResized($event)\" [style.--popoverh]=\"height$ | async\">\n <ng-content select=\"[controls]\"></ng-content>\n <div class=\"dbx-popover-content-container\">\n <ng-content></ng-content>\n </div>\n </div>\n`\n})\nexport class DbxPopoverContentComponent implements OnDestroy {\n\n private readonly _height = new BehaviorSubject<string>('');\n readonly height$ = this._height.asObservable().pipe(throttleTime(100, undefined, { leading: true, trailing: true }));\n\n hasControls = false;\n hasHeader = false;\n\n onResized(event: ResizedEvent): void {\n this._height.next(`${event.newRect.height}px`);\n }\n\n ngOnDestroy(): void {\n this._height.complete();\n }\n\n}\n","import { Component, Input, Optional } from '@angular/core';\nimport { DbxPopoverContentComponent } from './popover.content.component';\n\n/**\n * Component used to format a header for a popover.\n */\n@Component({\n selector: 'dbx-popover-header',\n template: `\n <div class=\"dbx-popover-header\">\n <div class=\"dbx-popover-header-content\">\n <h3><mat-icon *ngIf=\"icon\" class=\"dbx-icon-spacer\">{{ icon }}</mat-icon> {{ header }}</h3>\n <span class=\"spacer\"></span>\n <ng-content></ng-content>\n </div>\n </div>\n <mat-divider></mat-divider>\n `\n})\nexport class DbxPopoverHeaderComponent {\n\n @Input()\n header?: string;\n\n @Input()\n icon?: string;\n\n constructor(@Optional() appPopoverContentComponent: DbxPopoverContentComponent) {\n if (appPopoverContentComponent) {\n appPopoverContentComponent.hasHeader = true;\n }\n }\n\n}\n","import { Component } from '@angular/core';\nimport { DbxPopoverContentComponent } from './popover.content.component';\n\n/**\n * Popover scrollable content wrapper component.\n */\n@Component({\n selector: 'dbx-popover-scroll-content',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'd-block dbx-popover-scroll-content',\n '[class]': 'sizingClasses'\n }\n})\nexport class DbxPopoverScrollContentComponent {\n\n get sizingClasses(): string {\n const hasHeader = this.hasHeader;\n const hasControls = this.hasControls;\n\n const classes: string[] = [];\n\n if (hasHeader && hasControls) {\n classes.push('popover-has-controls-and-header');\n } else if (hasHeader) {\n classes.push('popover-has-header');\n } else if (hasControls) {\n classes.push('popover-has-controls');\n }\n\n return classes.join(' ');\n }\n\n get hasHeader(): boolean {\n return this.appPopoverContentComponent.hasHeader;\n }\n\n get hasControls(): boolean {\n return this.appPopoverContentComponent.hasControls;\n }\n\n constructor(readonly appPopoverContentComponent: DbxPopoverContentComponent) { }\n\n}\n","import { DbxInjectedComponentConfig } from '@dereekb/dbx-core';\nimport { Component, ElementRef, Type, OnInit } from '@angular/core';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { Observable, BehaviorSubject, map } from 'rxjs';\nimport { AbstractPopoverDirective } from '../popover/abstract.popover.directive';\nimport { DbxPopoverComponent } from '../popover/popover.component';\nimport { DbxPopoverService } from '../popover/popover.service';\nimport { FilterSource, FilterSourceConnector, PresetFilterSource } from '@dereekb/rxjs';\nimport { DbxPopoverKey } from '../popover/popover';\n\nexport interface DbxFilterComponentParams<F = any> {\n /**\n * Custom filter component to initialize.\n */\n customFilterComponentClass?: Type<FilterSource<F>>;\n /**\n * Preset filter component to initialize.\n */\n presetFilterComponentClass?: Type<PresetFilterSource<F>>;\n /**\n * The connector to use.\n */\n connector: FilterSourceConnector<F>;\n /**\n * (Optional) Inital filter to pass to the filter source.\n */\n initialFilterObs?: Observable<F>;\n}\n\nexport interface DbxFilterPopoverComponentParams<F = any> extends DbxFilterComponentParams<F> {\n /**\n * Origin to add the popover to.\n */\n origin: ElementRef;\n}\n\nexport const DEFAULT_FILTER_POPOVER_KEY = 'filter';\n\n@Component({\n templateUrl: './filter.popover.component.html'\n})\nexport class DbxFilterPopoverComponent<F> extends AbstractPopoverDirective implements OnInit {\n\n /**\n * Whether or not to display buttons to toggle between custom and preset filters.\n */\n readonly showSwitchButtons = Boolean(this.config.customFilterComponentClass && this.config.presetFilterComponentClass);\n\n private _showPreset = new BehaviorSubject<boolean>(false);\n readonly showPreset$ = this._showPreset.asObservable();\n\n readonly config$: Observable<DbxInjectedComponentConfig> = this._showPreset.pipe(\n map((showPreset) => {\n const { connector, initialFilterObs, customFilterComponentClass, presetFilterComponentClass } = this.config;\n let componentClass: Type<FilterSource<F>>;\n\n if (showPreset) {\n componentClass = presetFilterComponentClass!;\n } else {\n componentClass = customFilterComponentClass!;\n }\n\n const config: DbxInjectedComponentConfig<FilterSource<F>> = {\n componentClass,\n init: (filterSource) => {\n connector.connectWithSource(filterSource);\n\n if (initialFilterObs && filterSource.initWithFilter) {\n filterSource.initWithFilter(initialFilterObs);\n }\n }\n }\n\n return config;\n })\n );\n\n static openPopover<F>(popupService: DbxPopoverService, { origin, initialFilterObs: inputSource, connector, customFilterComponentClass, presetFilterComponentClass }: DbxFilterPopoverComponentParams<F>, popoverKey?: DbxPopoverKey): NgPopoverRef {\n return popupService.open({\n key: popoverKey ?? DEFAULT_FILTER_POPOVER_KEY,\n origin,\n componentClass: DbxFilterPopoverComponent,\n data: {\n initialFilterObs: inputSource,\n connector,\n customFilterComponentClass,\n presetFilterComponentClass\n } as DbxFilterComponentParams<F>\n });\n }\n\n constructor(popover: DbxPopoverComponent) {\n super(popover);\n }\n\n get config(): DbxFilterComponentParams<F> {\n return this.popover.data;\n }\n\n ngOnInit(): void {\n let showPreset: boolean = false;\n const { customFilterComponentClass, presetFilterComponentClass } = this.config;\n\n if (customFilterComponentClass) {\n showPreset = false;\n }\n\n if (presetFilterComponentClass) {\n showPreset = true;\n }\n\n if (!customFilterComponentClass && !presetFilterComponentClass) {\n throw new Error('Requires a preset or custom class provided for DbxFilterPopover.');\n }\n\n this._showPreset.next(showPreset);\n }\n\n ngOnDestroy(): void {\n this._showPreset.complete();\n }\n\n showPresets() {\n this._showPreset.next(true);\n }\n\n showCustom() {\n this._showPreset.next(false);\n }\n\n}\n","<dbx-popover-content>\n <!-- Header -->\n <dbx-popover-header icon=\"filter\" header=\"Filter\">\n <ng-container *ngIf=\"showSwitchButtons\" [ngSwitch]=\"showPreset$ | async\">\n <button *ngSwitchCase=\"true\" mat-flat-button color=\"accent\" (click)=\"showCustom()\">Custom</button>\n <button *ngSwitchCase=\"false\" mat-flat-button color=\"accent\" (click)=\"showPresets()\">Presets</button>\n </ng-container>\n </dbx-popover-header>\n <!-- Content -->\n <dbx-popover-scroll-content>\n <dbx-injected-content [config]=\"config$ | async\"></dbx-injected-content>\n </dbx-popover-scroll-content>\n</dbx-popover-content>\n","import { DbxPopoverComponent, DbxPopoverComponentConfig, FullDbxPopoverComponentConfig } from './popover.component';\nimport { Injectable, Injector } from '@angular/core';\nimport { NgOverlayContainerConfiguration, NgOverlayContainerService, NgPopoverRef } from 'ng-overlay-container';\nimport { Overlay } from '@angular/cdk/overlay';\n\nexport interface DbxPopoverConfig<O, I, T> extends DbxPopoverComponentConfig<O, I, T> {\n injector?: Injector;\n height?: string;\n width?: string;\n}\n\n/**\n * Used for displaying a popover.\n */\n@Injectable()\nexport class DbxPopoverService {\n\n private _overlayContainerService: NgOverlayContainerService;\n\n constructor(private _overlay: Overlay, private _injector: Injector) {\n this._overlayContainerService = new NgOverlayContainerService(this._overlay, this._injector);\n }\n\n open<O, I, T>(config: DbxPopoverConfig<O, I, T>): NgPopoverRef<DbxPopoverComponentConfig<O, I, T>, O> {\n const service = (config.injector) ? new NgOverlayContainerService(this._overlay, config.injector) : this._overlayContainerService;\n\n const configuration: NgOverlayContainerConfiguration = {\n panelClass: 'dbx-popover-container',\n originX: 'start',\n originY: 'top',\n // TODO: Resize height/width.\n height: config.height ?? '500px',\n width: config.height ?? '400px',\n hasBackdrop: true,\n isDraggable: false,\n isResizable: false,\n disableBackdropClose: false\n };\n\n return service.open<FullDbxPopoverComponentConfig<O, I, T>, O>({\n content: DbxPopoverComponent,\n data: {\n ...config,\n configuration\n },\n configuration\n });\n }\n\n}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { DbxPopoverService } from '../popover/popover.service';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { DbxFilterPopoverComponent, DbxFilterComponentParams } from './filter.popover.component';\n\nexport interface DbxFilterButtonConfig<F> extends DbxFilterComponentParams<F> { }\n\n@Directive()\nexport abstract class AbstractFilterPopoverButtonDirective<F> extends AbstractSubscriptionDirective {\n\n @Input()\n config?: DbxFilterButtonConfig<F>;\n\n private _popoverRef?: NgPopoverRef<any, any>;\n\n constructor(private readonly popupService: DbxPopoverService) {\n super();\n }\n\n protected showFilterPopoverAtOrigin(origin: ElementRef): void {\n if (!this._popoverRef) {\n this._showFilterPopover(origin);\n }\n }\n\n private _showFilterPopover(origin: ElementRef): void {\n const config = this.config;\n\n if (!config) {\n throw new Error('Missing filterButtonConfig.');\n }\n\n this._popoverRef = DbxFilterPopoverComponent.openPopover(this.popupService, {\n origin,\n ...config\n });\n\n this.sub = this._popoverRef.afterClosed$.subscribe(() => {\n this._popoverRef = undefined;\n });\n }\n\n}\n","import { Component, ElementRef, ViewChild } from '@angular/core';\nimport { AbstractFilterPopoverButtonDirective } from './filter.popover.button.directive';\n\n@Component({\n selector: 'dbx-filter-popover-button',\n template: `\n <button #button mat-icon-button (click)=\"showFilterPopover()\" matTooltip=\"Filter\" matTooltipPosition=\"above\">\n <mat-icon>filter_list</mat-icon>\n </button>\n `\n})\nexport class DbxFilterPopoverButtonComponent<F = any> extends AbstractFilterPopoverButtonDirective<F> {\n\n @ViewChild('button', { read: ElementRef, static: false })\n buttonElement!: ElementRef;\n\n showFilterPopover(): void {\n const origin = this.buttonElement.nativeElement;\n this.showFilterPopoverAtOrigin(origin);\n }\n\n}\n","import { Directive, Optional } from '@angular/core';\nimport { DbxPopoverContentComponent } from './popover.content.component';\n\n/**\n * Popover Controls\n */\n@Directive({\n selector: 'dbx-popover-controls,[dbx-popover-controls],.dbx-popover-controls',\n host: {\n 'class': 'd-block dbx-popover-controls'\n }\n})\nexport class DbxPopoverControlsDirective {\n\n constructor(@Optional() appPopoverContentComponent: DbxPopoverContentComponent) {\n if (appPopoverContentComponent) {\n appPopoverContentComponent.hasControls = true;\n }\n }\n\n}\n","import { OnDestroy } from '@angular/core';\nimport { AbstractSubscriptionDirective } from '@dereekb/dbx-core';\nimport { Directive, EventEmitter, Output } from '@angular/core';\nimport { NgPopoverCloseEvent, NgPopoverRef } from 'ng-overlay-container';\n\n/**\n * Abstract class for showing and handling a popover ref.\n */\n@Directive()\nexport abstract class AbstractPopoverRefDirective<T = any, R = any> extends AbstractSubscriptionDirective {\n\n private _popoverRef?: NgPopoverRef<T, R>;\n\n showPopover(): void {\n if (!this._popoverRef) {\n this._showPopoverRef();\n }\n }\n\n private _showPopoverRef(): void {\n this._popoverRef = this._makePopoverRef();\n this._afterOpened(this._popoverRef);\n this.sub = this._popoverRef.afterClosed$.subscribe((x) => {\n this._afterClosed(x);\n this._popoverRef = undefined;\n });\n }\n\n protected abstract _makePopoverRef(): NgPopoverRef<T, R>;\n\n protected _afterOpened(popoverRef: NgPopoverRef<T, R>): void {\n // Do nothing.\n }\n\n protected _afterClosed(value: NgPopoverCloseEvent<R>): void {\n // Do nothing.\n }\n\n}\n\n/**\n * {@link AbstractPopoverRefDirective} extension that includes open/closed events.\n */\n@Directive()\nexport abstract class AbstractPopoverRefWithEventsDirective<T = any, R = any> extends AbstractPopoverRefDirective<T, R> implements OnDestroy {\n\n @Output()\n readonly popoverOpened = new EventEmitter<NgPopoverRef<T, R>>();\n\n @Output()\n readonly popoverClosed = new EventEmitter<NgPopoverCloseEvent<R>>();\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.popoverClosed.complete();\n this.popoverOpened.complete();\n }\n\n protected override _afterOpened(popoverRef: NgPopoverRef<T, R>): void {\n this.popoverOpened.next(popoverRef);\n }\n\n protected override _afterClosed(event: NgPopoverCloseEvent<R>): void {\n this.popoverClosed.next(event);\n }\n\n}\n","import { BehaviorSubject, Observable, of } from 'rxjs';\nimport { Directive, OnInit, OnDestroy, Input, ElementRef } from '@angular/core';\nimport { NgPopoverCloseEvent, NgPopoverRef } from 'ng-overlay-container';\nimport { AbstractPopoverRefWithEventsDirective } from './abstract.popover.ref.directive';\nimport { ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\nimport { filterMaybe, SubscriptionObject } from '@dereekb/rxjs';\nimport { first, switchMap } from 'rxjs/operators';\nimport { Maybe } from '@dereekb/util';\n\nexport interface DbxPopoverActionFnParam {\n origin: ElementRef;\n}\n\nexport type DbxPopoverActionFn<T = object> = (params: DbxPopoverActionFnParam) => NgPopoverRef<any, T>;\nexport type DbxPopoverActionModifiedFn<T = any> = (value: T) => Observable<boolean>;\n\n/**\n * Action directive that is used to trigger/display a popover,\n * then watches that popover for a value.\n *\n * The value is passed to the isModified function (ifProvided), and if that returns true it will \n */\n@Directive({\n exportAs: 'popoverAction',\n selector: '[dbxPopoverAction]'\n})\nexport class DbxPopoverActionDirective<T = object> extends AbstractPopoverRefWithEventsDirective<any, T> implements OnInit, OnDestroy {\n\n @Input('dbxPopoverAction')\n fn?: DbxPopoverActionFn<T>;\n\n @Input()\n appPopoverActionModified?: DbxPopoverActionModifiedFn<T>;\n\n private _popoverValue = new BehaviorSubject<Maybe<T>>(undefined);\n\n private _triggeredSub = new SubscriptionObject();\n private _isModifiedSub = new SubscriptionObject();\n\n constructor(\n readonly elementRef: ElementRef,\n readonly source: ActionContextStoreSourceInstance<T, any>\n ) {\n super();\n }\n\n ngOnInit(): void {\n\n // Used for triggering isModified on the action.\n this._isModifiedSub.subscription = this._popoverValue.pipe(\n filterMaybe(),\n switchMap((value) => {\n let isModifiedObs: Observable<boolean>;\n\n if (this.appPopoverActionModified) {\n isModifiedObs = this.appPopoverActionModified(value).pipe(first());\n } else {\n isModifiedObs = of(true); // Considered modified\n }\n\n return isModifiedObs;\n })\n ).subscribe((isModified) => {\n this.source.setIsModified(isModified);\n });\n\n // Ready the value after the source is triggered.\n this._triggeredSub.subscription = this.source.triggered$.pipe(\n switchMap(() => {\n return this._popoverValue.pipe(\n filterMaybe(),\n first()\n );\n })\n ).subscribe((x) => {\n this.source.readyValue(x);\n });\n }\n\n override ngOnDestroy(): void {\n this.source.lockSet.onNextUnlock(() => {\n super.ngOnDestroy();\n this._triggeredSub.destroy();\n this._popoverValue.complete();\n });\n }\n\n protected _makePopoverRef(): NgPopoverRef<any, T> {\n const origin = this.elementRef;\n\n if (!this.fn) {\n throw new Error('popoverAction has no function provided to it yet.');\n }\n\n return this.fn({\n origin\n });\n }\n\n protected override _afterClosed(event: NgPopoverCloseEvent<T>): void {\n super._afterClosed(event);\n const { data } = event;\n\n if (data != null) {\n this._popoverValue.next(data);\n }\n }\n\n}\n","import { Directive, Host, NgZone } from '@angular/core';\nimport { DbxButtonDirective, DbxActionButtonDirective, ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\nimport { DbxPopoverActionDirective } from './popover.action.directive';\n\n/**\n * Action directive that is used to link an DbxButton to an DbxPopoverActionDirective.\n */\n@Directive({\n selector: '[dbxPopoverActionButton]'\n})\nexport class DbxPopoverActionButtonDirective extends DbxActionButtonDirective {\n\n constructor(\n @Host() button: DbxButtonDirective,\n source: ActionContextStoreSourceInstance,\n ngZone: NgZone,\n readonly appPopoverActionDirective: DbxPopoverActionDirective) {\n super(button, source, ngZone);\n }\n\n protected override _buttonClicked(): void {\n this.appPopoverActionDirective.showPopover();\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxWindowKeyDownListenerDirective } from './keydown.listener.directive';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [\n DbxWindowKeyDownListenerDirective\n ],\n exports: [\n DbxWindowKeyDownListenerDirective\n ]\n})\nexport class DbxKeypressModule { }\n","import { Directive, Host, HostListener, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\n\nconst DEFAULT_ACTION_KEY_TRIGGER = 'enter';\n\n/**\n * Directive that triggers the action on a specific key up event.\n *\n * Events/Keys to respond to should be lowercase.\n */\n@Directive({\n selector: '[dbxActionKeyTrigger]',\n})\nexport class DbxActionKeyTriggerDirective<T = any, O = any> {\n\n @Input('dbxActionKeyTrigger')\n inputKey: Maybe<string>;\n\n constructor(@Host() public readonly source: ActionContextStoreSourceInstance<T, O>) { }\n\n get key(): string {\n return this.inputKey || DEFAULT_ACTION_KEY_TRIGGER;\n }\n\n @HostListener('document:keyup', ['$event'])\n onKeyupHandler(event: KeyboardEvent): void {\n if (event.key && event.key.toLowerCase() === this.key) {\n this.source.trigger();\n }\n }\n\n}\n","import { distinctUntilChanged, Observable, shareReplay } from 'rxjs';\nimport { Component, Inject } from '@angular/core';\nimport { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { Maybe } from '@dereekb/util';\nimport ms from 'ms';\nimport { map } from 'rxjs/operators';\nimport { ActionContextStoreSourceInstance, ActionState, DbxActionSnackbarComponentConfig } from '@dereekb/dbx-core';\n\n/**\n * Component for a snackbar that contains an action.\n */\n@Component({\n template: `\n <div class=\"dbx-action-snackbar\" [ngClass]=\"(snackbarStatusClass$ | async)!\">\n <ng-container [ngSwitch]=\"complete$ | async\">\n <ng-container *ngSwitchCase=\"true\">\n <div class=\"spacer\"></div>\n <dbx-button (buttonClick)=\"dismiss()\" color=\"accent\" icon=\"done\" text=\"Success\"></dbx-button>\n </ng-container>\n <ng-container *ngSwitchCase=\"false\">\n <span>{{ message }}</span>\n <div class=\"spacer\"></div>\n <dbx-action dbxActionValue [dbxActionSource]=\"actionSourceInstance\" [dbxActionSuccess]=\"dismissEarly\">\n <dbx-button dbxActionButton color=\"warn\" [text]=\"action\"></dbx-button>\n </dbx-action>\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-button (buttonClick)=\"dismiss()\" color=\"accent\" icon=\"close\"></dbx-button>\n </ng-container>\n </ng-container>\n </div>\n `,\n // TODO: styleUrls: ['./action.scss']\n})\nexport class DbxActionSnackbarComponent {\n\n constructor(\n readonly snackbar: MatSnackBarRef<DbxActionSnackbarComponent>,\n @Inject(MAT_SNACK_BAR_DATA) readonly data: DbxActionSnackbarComponentConfig\n ) {\n if (!data.actionSource) {\n throw new Error('No action was provided to ActionSnackbar.');\n }\n }\n\n readonly complete$ = this.actionSourceInstance.isSuccess$;\n readonly snackbarStatusClass$: Observable<string> = this.actionSourceInstance.actionState$.pipe(\n map((x) => {\n let classes = 'dbx-action-snackbar-';\n\n switch (x) {\n case ActionState.Rejected:\n classes += 'error';\n break;\n case ActionState.Success:\n classes += 'success';\n break;\n default:\n classes += 'idle';\n break;\n }\n\n return classes;\n }),\n distinctUntilChanged(),\n shareReplay(1)\n );\n\n get message(): Maybe<string> {\n return this.data.message;\n }\n\n get action(): string {\n return this.data.action;\n }\n\n get actionSourceInstance(): ActionContextStoreSourceInstance {\n return this.data.actionSource;\n }\n\n dismissEarly = (): void => {\n this.snackbar._dismissAfter(ms('3s'));\n }\n\n dismiss = (): void => {\n this.snackbar.dismiss();\n }\n\n}\n","import { forwardRef, Provider, Type } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\nimport { Observable } from 'rxjs';\n\nexport abstract class DbxPromptConfirm {\n abstract showDialog(): Observable<Maybe<boolean>>;\n}\n\nexport function ProvideDbxPromptConfirm<S>(sourceType: Type<S>): Provider[] {\n return [{\n provide: DbxPromptConfirm,\n useExisting: forwardRef(() => sourceType)\n }];\n}\n\n","import { Component, Input } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\n/**\n * Pre-configured prompt.\n */\n@Component({\n selector: 'dbx-prompt',\n template: `\n <div class=\"dbx-prompt\">\n <ng-content select=\"[hero]\"></ng-content>\n <dbx-subsection [header]=\"header\" [hint]=\"prompt\">\n <ng-content></ng-content>\n </dbx-subsection>\n </div>\n `\n})\nexport class DbxPromptComponent {\n\n @Input()\n header?: Maybe<string>;\n\n @Input()\n prompt?: Maybe<string>;\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Maybe } from '@dereekb/util';\n\nexport enum DbxPromptConfirmTypes {\n /**\n * Dialog is for yes/no.\n */\n NORMAL = 'normal',\n /**\n * Dialog is for deleting something.\n */\n DELETE = 'delete'\n}\n\nexport interface DbxPromptConfirmConfig {\n type?: DbxPromptConfirmTypes;\n title?: string;\n prompt?: string;\n confirmText?: string;\n cancelText?: string;\n}\n\n/**\n * Displays a confirmation dialog.\n */\n@Component({\n selector: 'dbx-prompt-confirm',\n templateUrl: './prompt.confirm.component.html'\n})\nexport class DbxPromptConfirmComponent {\n\n private _config: DbxPromptConfirmConfig = {};\n\n @Output()\n confirm = new EventEmitter<void>();\n\n @Output()\n cancel = new EventEmitter<void>();\n\n @Input()\n get config(): DbxPromptConfirmConfig {\n return this._config;\n }\n\n set config(config: Maybe<DbxPromptConfirmConfig>) {\n this._config = config ?? {};\n }\n\n onConfirm(): void {\n this.confirm.emit();\n }\n\n onCancel(): void {\n this.cancel.emit();\n }\n\n}\n","<dbx-prompt [header]=\"config.title\" [prompt]=\"config.prompt\">\n <ng-content></ng-content>\n <button mat-stroked-button (click)=\"onConfirm()\">{{ config.confirmText || 'Confirm' }}</button>\n <dbx-button-spacer></dbx-button-spacer>\n <button mat-stroked-button color=\"warn\" (click)=\"onCancel()\">{{ config.cancelText || 'Cancel' }}</button>\n</dbx-prompt>\n","import { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { DbxInjectedComponentConfig } from '@dereekb/dbx-core';\nimport { Component, OnInit } from '@angular/core';\nimport { AbstractDialogDirective } from '../dialog/abstract.dialog.directive';\nimport { DbxPromptConfirmConfig, DbxPromptConfirmTypes } from './prompt.confirm.component';\nimport { Maybe } from '@dereekb/util';\n\nexport const DEFAULT_DBX_PROMPT_CONFIRM_DIALOG_CONFIG = {\n title: 'Confirm?',\n type: DbxPromptConfirmTypes.NORMAL\n};\n\nexport interface DbxPromptConfirmDialogConfig extends DbxPromptConfirmConfig {\n component?: DbxInjectedComponentConfig;\n}\n\n@Component({\n template: `\n <dbx-dialog-content>\n <dbx-prompt-confirm [config]=\"config\" (confirm)=\"confirm()\" (cancel)=\"cancel()\">\n <dbx-injected-content [config]=\"injectedConfig\"></dbx-injected-content>\n </dbx-prompt-confirm>\n </dbx-dialog-content>\n `\n})\nexport class DbxPromptConfirmDialogComponent extends AbstractDialogDirective<boolean, DbxPromptConfirmDialogConfig> implements OnInit {\n\n get config(): DbxPromptConfirmDialogConfig {\n return this.data;\n }\n\n get injectedConfig(): Maybe<DbxInjectedComponentConfig> {\n return this.data.component;\n }\n\n static openDialog(matDialog: MatDialog, config: DbxPromptConfirmDialogConfig = DEFAULT_DBX_PROMPT_CONFIRM_DIALOG_CONFIG): MatDialogRef<DbxPromptConfirmDialogComponent, boolean> {\n const dialogRef = matDialog.open(DbxPromptConfirmDialogComponent, {\n data: config\n });\n return dialogRef;\n }\n\n confirm(): void {\n this.close(true);\n }\n\n cancel(): void {\n this.close(false);\n }\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Maybe } from '@dereekb/util';\nimport { Observable, from } from 'rxjs';\nimport { DbxPromptConfirm, ProvideDbxPromptConfirm } from './prompt.confirm';\nimport { DbxPromptConfirmConfig } from './prompt.confirm.component';\nimport { DbxPromptConfirmDialogComponent } from './prompt.confirm.dialog.component';\n\n// MARK: Abstract\n/**\n * Directive that when triggered shows a dialog to accept or reject.\n */\n@Directive()\nexport abstract class AbstractPromptConfirmDirective implements DbxPromptConfirm {\n\n config?: DbxPromptConfirmConfig;\n\n private _dialogRef?: MatDialogRef<DbxPromptConfirmDialogComponent, boolean>;\n private _dialogPromise?: Promise<boolean>;\n\n constructor(protected readonly matDialog: MatDialog) { }\n\n showDialog(): Observable<boolean> {\n if (!this._dialogPromise) {\n this._dialogPromise = new Promise<boolean>((resolve) => {\n this._dialogRef = DbxPromptConfirmDialogComponent.openDialog(this.matDialog);\n this._dialogRef.afterClosed().subscribe((result: Maybe<boolean>) => {\n this._dialogRef = undefined;\n this._dialogPromise = undefined;\n resolve(this._handleDialogResult(Boolean(result)));\n });\n });\n }\n\n return from(this._dialogPromise);\n }\n\n protected _handleDialogResult(result: boolean): boolean {\n return result;\n }\n\n}\n\n// MARK: Directive\n/**\n * Directive that shows a confirmation screen.\n */\n@Directive({\n selector: '[dbxPromptConfirm]',\n providers: ProvideDbxPromptConfirm(DbxPromptConfirmDirective)\n})\nexport class DbxPromptConfirmDirective<T, O> extends AbstractPromptConfirmDirective {\n\n @Input('dbxPromptConfirm')\n override config?: DbxPromptConfirmConfig;\n\n constructor(dialog: MatDialog) {\n super(dialog);\n }\n\n}\n","import { Directive, Host, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AbstractPromptConfirmDirective } from '../interaction/prompt/prompt.confirm.directive';\nimport { DbxPromptConfirmConfig } from '../interaction/prompt/prompt.confirm.component';\nimport { SubscriptionObject } from '@dereekb/rxjs';\nimport { ActionContextStoreSourceInstance } from '@dereekb/dbx-core';\n\n/**\n * Directive that when triggered shows a dialog to accept or reject.\n *\n * This only works to pass a ready value or reject through, not to work with a button.\n * For button usage, use an appPromptConfirmButton directive.\n */\n@Directive({\n selector: '[dbxActionConfirm]'\n})\nexport class DbxActionConfirmDirective<T, O> extends AbstractPromptConfirmDirective implements OnInit, OnDestroy {\n\n @Input('dbxActionConfirm')\n override config?: DbxPromptConfirmConfig;\n\n private _sourceSubscription = new SubscriptionObject();\n\n constructor(@Host() public readonly source: ActionContextStoreSourceInstance<T, O>, dialog: MatDialog) {\n super(dialog);\n }\n\n ngOnInit(): void {\n this._sourceSubscription.subscription = this.source.triggered$.subscribe(() => {\n this.showDialog();\n });\n }\n\n ngOnDestroy(): void {\n this._sourceSubscription.destroy();\n }\n\n protected override _handleDialogResult(result: boolean): boolean {\n if (result) {\n this.source.readyValue(null);\n } else {\n this.source.reject(undefined);\n }\n\n return result;\n }\n\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'dbx-prompt-box',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'd-block dbx-prompt-box',\n '[class.elevated]': 'elevated'\n }\n})\nexport class DbxPromptBoxComponent {\n\n @Input()\n elevated = true;\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'dbx-prompt-page',\n template: `\n <dbx-content-container width=\"full\">\n <div class=\"dbx-prompt-page-content-wrap\">\n <ng-content></ng-content>\n </div>\n </dbx-content-container>\n `,\n host: {\n 'class': 'd-block dbx-prompt-page'\n }\n})\nexport class DbxPromptPageComponent { }\n","import { DbxButtonDirective, DbxButtonInterceptor } from '@dereekb/dbx-core';\nimport { Directive, Host, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { DbxPromptConfirm } from './prompt.confirm';\nimport { map } from 'rxjs/operators';\n\n/**\n * Directive that binds together a confirm dialog with the button.\n */\n@Directive({\n selector: '[dbxPromptConfirmButton]',\n})\nexport class DbxPromptConfirmButtonDirective implements OnInit, DbxButtonInterceptor {\n\n readonly interceptButtonClick: () => Observable<boolean> = () => {\n return this.prompt.showDialog().pipe(map(x => Boolean(x)));\n }\n\n constructor(\n @Host() readonly appButton: DbxButtonDirective,\n @Host() readonly prompt: DbxPromptConfirm\n ) { }\n\n ngOnInit(): void {\n this.appButton.setButtonInterceptor(this);\n }\n\n}\n","import { DbxInjectedComponentModule } from '@dereekb/dbx-core';\nimport { DbxButtonModule } from './../../button/button.module';\nimport { DbxPromptComponent } from './prompt.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxPromptBoxComponent } from './prompt.box.component';\nimport { DbxPromptPageComponent } from './prompt.page.component';\nimport { DbxTextModule } from '../../layout/text';\nimport { DbxSectionLayoutModule } from '../../layout/section/section.layout.module';\nimport { DbxContentLayoutModule } from '../../layout/content/content.layout.module';\nimport { DbxPromptConfirmComponent as DbxPromptConfirmComponent } from './prompt.confirm.component';\nimport { DbxPromptConfirmDialogComponent as DbxPromptConfirmDialogComponent } from './prompt.confirm.dialog.component';\nimport { DbxPromptConfirmDirective } from './prompt.confirm.directive';\nimport { DbxPromptConfirmButtonDirective } from './prompt.button.confirm.directive';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DbxDialogInteractionModule } from '../dialog/dialog.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n DbxTextModule,\n DbxButtonModule,\n DbxInjectedComponentModule,\n DbxDialogInteractionModule,\n DbxSectionLayoutModule,\n DbxContentLayoutModule\n ],\n declarations: [\n DbxPromptComponent,\n DbxPromptBoxComponent,\n DbxPromptPageComponent,\n DbxPromptConfirmComponent,\n DbxPromptConfirmButtonDirective,\n DbxPromptConfirmDialogComponent,\n DbxPromptConfirmDirective,\n ],\n exports: [\n DbxPromptComponent,\n DbxPromptBoxComponent,\n DbxPromptPageComponent,\n DbxPromptConfirmComponent,\n DbxPromptConfirmButtonDirective,\n DbxPromptConfirmDirective,\n ],\n})\nexport class DbxPromptModule { }\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { DbxButtonModule } from '../button/button.module';\n// import { DbxErrorModule } from '../error/error.module';\nimport { DbxActionKeyTriggerDirective } from './key.trigger.directive';\nimport { DbxActionSnackbarComponent } from './action.snackbar.component';\nimport { DbxCoreActionModule } from '@dereekb/dbx-core';\nimport { DbxActionConfirmDirective } from './action.confirm.directive';\nimport { DbxPromptModule } from '../interaction/prompt/prompt.module';\n\n@NgModule({\n imports: [\n CommonModule,\n DbxCoreActionModule,\n DbxButtonModule,\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule,\n DbxPromptModule,\n ],\n declarations: [\n DbxActionKeyTriggerDirective,\n DbxActionSnackbarComponent,\n DbxActionConfirmDirective,\n ],\n exports: [\n DbxCoreActionModule,\n DbxActionKeyTriggerDirective,\n DbxActionSnackbarComponent,\n DbxActionConfirmDirective,\n ]\n})\nexport class DbxActionModule { }\n","import { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { AngularResizeEventModule } from 'angular-resize-event';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgOverlayContainerModule } from 'ng-overlay-container';\nimport { DbxPopoverCoordinatorComponent } from './popover.coordinator.component';\nimport { DbxPopoverService } from './popover.service';\nimport { DbxPopoverContentComponent } from './popover.content.component';\nimport { DbxPopoverComponent } from './popover.component';\nimport { DbxPopoverControlsDirective } from './popover.controls.directive';\nimport { DbxPopoverCoordinatorService } from './popover.coordinator.service';\nimport { DbxPopoverHeaderComponent } from './popover.header.component';\nimport { DbxPopoverScrollContentComponent } from './popover.scroll.content.component';\nimport { DbxPopoverActionButtonDirective } from './popover.action.button.directive';\nimport { DbxPopoverActionDirective } from './popover.action.directive';\nimport { DbxKeypressModule } from '../../keypress';\nimport { DbxAnchorModule } from '../../router';\nimport { DbxActionModule } from '../../action/action.module';\nimport { DbxButtonModule } from '../../button/button.module';\nimport { DbxInjectedComponentModule } from '@dereekb/dbx-core';\nimport { DbxStyleLayoutModule } from '../../layout/style/style.layout.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDividerModule,\n DbxButtonModule,\n DbxAnchorModule,\n DbxActionModule,\n DbxKeypressModule,\n DbxStyleLayoutModule,\n DbxInjectedComponentModule,\n NgOverlayContainerModule,\n AngularResizeEventModule\n ],\n declarations: [\n DbxPopoverActionButtonDirective,\n DbxPopoverActionDirective,\n DbxPopoverComponent,\n DbxPopoverCoordinatorComponent,\n DbxPopoverContentComponent,\n DbxPopoverControlsDirective,\n DbxPopoverHeaderComponent,\n DbxPopoverScrollContentComponent\n ],\n exports: [\n DbxPopoverActionButtonDirective,\n DbxPopoverActionDirective,\n DbxPopoverContentComponent,\n DbxPopoverControlsDirective,\n DbxPopoverHeaderComponent,\n DbxPopoverScrollContentComponent\n ],\n providers: [\n DbxPopoverService\n ]\n})\nexport class DbxPopoverInteractionModule {\n\n static forRoot(): ModuleWithProviders<DbxPopoverInteractionModule> {\n return {\n ngModule: DbxPopoverInteractionModule,\n providers: [\n DbxPopoverCoordinatorService\n ]\n };\n }\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Used for adding a reset and filter button to a form.\n */\n@Component({\n selector: 'dbx-filter-wrapper',\n templateUrl: './filter.wrapper.component.html'\n})\nexport class DbxFilterWrapperComponent {\n\n @Input()\n modified?: boolean;\n\n @Output()\n readonly applyFilter = new EventEmitter();\n\n @Output()\n readonly resetFilter = new EventEmitter();\n\n filterClicked(): void {\n this.applyFilter.emit();\n }\n\n resetClicked(): void {\n this.resetFilter.emit();\n }\n\n}\n","<div class=\"dbx-filter-wrapper\">\n <div class=\"dbx-filter-wrapper-content\">\n <ng-content></ng-content>\n </div>\n <div fxLayout=\"row\">\n <button mat-raised-button (click)=\"filterClicked()\">Apply Filter</button>\n <div class=\"spacer\"></div>\n <button mat-icon-button (click)=\"resetClicked()\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { DbxFilterPopoverButtonComponent } from './filter.popover.button.component';\nimport { DbxPopoverInteractionModule } from '../popover/popover.module';\nimport { DbxFilterPopoverComponent } from './filter.popover.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DbxFilterWrapperComponent } from './filter.wrapper.component';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { DbxCoreFilterModule, DbxInjectedComponentModule } from '@dereekb/dbx-core';\n\n@NgModule({\n imports: [\n CommonModule,\n DbxPopoverInteractionModule,\n DbxCoreFilterModule,\n DbxInjectedComponentModule,\n FlexLayoutModule,\n // Material\n MatIconModule,\n MatButtonModule\n ],\n declarations: [\n DbxFilterPopoverComponent,\n DbxFilterPopoverButtonComponent,\n DbxFilterWrapperComponent,\n ],\n exports: [\n DbxCoreFilterModule,\n DbxFilterPopoverButtonComponent,\n DbxFilterWrapperComponent,\n ]\n})\nexport class DbxFilterInteractionModule { }\n","import { GlobalPositionStrategy } from '@angular/cdk/overlay';\n\nexport type PopupPosition = 'center' | 'bottom_left' | 'bottom_right';\n\nexport interface PopupPositionOffset {\n x?: string;\n y?: string;\n}\n\nexport class PopupGlobalPositionStrategy extends GlobalPositionStrategy {\n\n private _position!: PopupPosition;\n private _offset: PopupPositionOffset = {};\n\n constructor(position: PopupPosition = 'bottom_right', offset?: PopupPositionOffset) {\n super();\n this.setPopupPosition(position, offset);\n }\n\n setPopupOffset(offset?: PopupPositionOffset): void {\n this.setPopupPosition(this._position, offset ?? {});\n }\n\n setPopupPosition(position: PopupPosition, offset?: PopupPositionOffset): void {\n this._resetPositions();\n this._position = position;\n\n if (offset) {\n this._offset = offset;\n }\n\n const offsetX = this._offset.x ?? '0';\n const offsetY = this._offset.y ?? '0';\n\n switch (position) {\n case 'center':\n this.centerHorizontally();\n this.centerVertically();\n break;\n case 'bottom_left':\n this.bottom(offsetY);\n this.left(offsetX);\n break;\n case 'bottom_right':\n this.bottom(offsetY);\n this.right(offsetX);\n break;\n }\n }\n\n private _resetPositions(): void {\n this.top();\n this.bottom();\n this.left();\n this.right();\n }\n\n}\n","import { Maybe } from '@dereekb/util';\nimport { Observable } from 'rxjs';\n\nexport type DbxPopupKey = string;\n\nexport enum DbxPopupWindowState {\n NORMAL = 'normal',\n MINIMIZED = 'minimized',\n FULLSCREEN = 'fullscreen'\n}\n\nexport abstract class DbxPopupController<O = any, I = any> {\n abstract readonly key: DbxPopupKey;\n abstract readonly data?: Maybe<I>;\n abstract readonly windowState$: Observable<DbxPopupWindowState>;\n abstract readonly closing$: Observable<boolean>;\n /**\n * Signals for the popup to close.\n */\n abstract close(): void;\n /**\n * Closes the popup and returns the input value.\n */\n abstract return(value?: O): void;\n abstract minimize(): void;\n abstract normalscreen(): void;\n abstract fullscreen(): void;\n}\n","import { DbxPopupKey, DbxPopupController } from './popup';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * Used for coordinating popups and closing/replacing existing ones when a new popup of the same name appears.\n */\n@Injectable()\nexport class DbxPopupCoordinatorService {\n\n private _popups = new BehaviorSubject<Map<DbxPopupKey, DbxPopupController>>(new Map());\n\n readonly popups$ = this._popups.asObservable();\n\n constructor() { }\n\n get popups(): Map<DbxPopupKey, DbxPopupController> {\n return this._popups.value;\n }\n\n public addPopup(popup: DbxPopupController): void {\n const key = popup.key;\n\n if (key) {\n this.removePopup(key);\n this._popups.value.set(key, popup);\n this._popups.next(this.popups);\n }\n }\n\n public removePopup(key: DbxPopupKey, popup?: DbxPopupController): void {\n if (key) {\n const existing = this.popups.get(key);\n\n // Remove if there is one existing, and if popup is provided it is the same popup.\n if (existing && (!popup || popup === existing)) {\n existing.close();\n this._popups.value.delete(key);\n this._popups.next(this.popups);\n }\n }\n }\n\n}\n","import { DbxPopupController } from './popup';\nimport { Component, OnInit, OnDestroy } from '@angular/core';\nimport { DbxPopupCoordinatorService } from './popup.coordinator.service';\nimport { delay, map, shareReplay } from 'rxjs/operators';\n\n/**\n * Used for coordinating popups and closing/replacing existing ones when a new popup of the same name appears.\n */\n@Component({\n selector: 'dbx-popup-coordinator',\n template: `\n <ng-container *ngIf=\"show$ | async\">\n <ng-content></ng-content>\n </ng-container>\n `\n})\nexport class DbxPopupCoordinatorComponent implements OnInit, OnDestroy {\n\n readonly isPopupForKey$ = this.service.popups$.pipe(map(x => x.get(this.popup.key) === this.popup), shareReplay(1));\n readonly show$ = this.isPopupForKey$.pipe(delay(0));\n\n constructor(private readonly service: DbxPopupCoordinatorService, private readonly popup: DbxPopupController) { }\n\n ngOnInit(): void {\n this.service.addPopup(this.popup);\n }\n\n ngOnDestroy(): void {\n this.service.removePopup(this.popup.key, this.popup);\n }\n\n}\n","import { Component, ComponentFactoryResolver, NgZone, Type, ViewChild, ViewContainerRef, OnInit, OnDestroy, ComponentRef } from '@angular/core';\nimport { NgPopoverRef } from 'ng-overlay-container';\nimport { Maybe } from '@dereekb/util';\nimport { CompactMode, CompactContextStore } from '../../layout';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { PopupGlobalPositionStrategy, PopupPosition, PopupPositionOffset } from './popup.position.strategy';\nimport { filter, first, map, shareReplay, startWith } from 'rxjs/operators';\nimport { AbstractTransitionWatcherDirective, DbxInjectedComponentConfig, DbxRouterTransitionService } from '@dereekb/dbx-core';\nimport { DbxPopupController, DbxPopupKey, DbxPopupWindowState } from './popup';\n\nexport const APP_POPUP_NORMAL_WIDTH = '700px';\nexport const APP_POPUP_MINIMIZED_WIDTH = '300px';\nexport const APP_POPUP_NORMAL_HEIGHT = 'auto';\n\nexport abstract class DbxPopupComponentController<O, I> extends DbxPopupController<O, I> {\n getClosingValueFn?: (value?: I) => Promise<O>;\n}\n\nexport interface DbxPopupComponentConfig<O, I, T> {\n /**\n * Key used for uniquely identifying a limited instance.\n *\n * Only one popup should exist at a time given a certain key.\n */\n key: DbxPopupKey;\n position?: PopupPosition;\n offset?: PopupPositionOffset;\n closeOnTransition?: boolean;\n componentClass: Type<T>;\n data?: I;\n isDraggable?: boolean;\n init?: (component: T, controller: DbxPopupController<O, I>) => void;\n}\n\n/**\n * Popup component.\n */\n@Component({\n template: `\n <dbx-popup-coordinator>\n <div class=\"dbx-popup-component\" dbx-injected-content [config]=\"contentConfig\"></div>\n </dbx-popup-coordinator>\n `,\n providers: [{\n provide: DbxPopupController,\n useExisting: DbxPopupComponent\n }, {\n provide: CompactContextStore\n }]\n})\nexport class DbxPopupComponent<O = any, I = any, T = any> extends AbstractTransitionWatcherDirective implements DbxPopupController<O, I>, OnDestroy {\n\n private _position: PopupGlobalPositionStrategy;\n\n readonly contentConfig: DbxInjectedComponentConfig = {\n componentClass: this.config.componentClass,\n init: this.config.init ? ((instance) => this.config.init!(instance, this)) : undefined\n };\n\n private readonly closing = new Subject<void>();\n readonly isClosing$ = this.closing.pipe(first(), map(x => true), startWith(false), shareReplay(1));\n readonly closing$ = this.isClosing$.pipe(filter(x => x));\n\n private readonly _windowState = new BehaviorSubject<DbxPopupWindowState>(DbxPopupWindowState.NORMAL);\n readonly windowState$ = this._windowState.asObservable();\n\n getClosingValueFn?: (value?: I) => Promise<O>;\n\n constructor(\n private popoverRef: NgPopoverRef<DbxPopupComponentConfig<O, I, T>, O>,\n private compactContextState: CompactContextStore,\n dbNgxRouterTransitionService: DbxRouterTransitionService,\n ngZone: NgZone) {\n super(dbNgxRouterTransitionService, ngZone);\n\n this.compactContextState.setMode(CompactMode.COMPACT);\n this._position = new PopupGlobalPositionStrategy(this.config.position, this.config.offset);\n this.popoverRef.overlay.updatePositionStrategy(this._position);\n }\n\n get config(): DbxPopupComponentConfig<O, I, T> {\n return this.popoverRef.data;\n }\n\n get key(): DbxPopupKey {\n return this.config.key;\n }\n\n get data(): Maybe<I> {\n return this.config.data;\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.closing.complete();\n this._windowState.complete();\n }\n\n protected updateForSuccessfulTransition(): void {\n if (this.config.closeOnTransition !== false) {\n this.close();\n }\n }\n\n // Popup Controls\n public close(): void {\n this.closing.next();\n\n if (this.getClosingValueFn) {\n this.getClosingValueFn().then((x) => {\n this.return(x);\n }, () => {\n this.return();\n });\n } else {\n this.return();\n }\n }\n\n public return(value?: O): void {\n this.closing.next();\n this.popoverRef.close(value);\n }\n\n public minimize(): void {\n this.popoverRef.isDraggable = false;\n this.popoverRef.resize(APP_POPUP_MINIMIZED_WIDTH, APP_POPUP_NORMAL_HEIGHT);\n this.popoverRef.overlay.updatePosition();\n this._windowState.next(DbxPopupWindowState.MINIMIZED);\n }\n\n public normalscreen(): void {\n this.popoverRef.isDraggable = this.config.isDraggable;\n this.popoverRef.resize(APP_POPUP_NORMAL_WIDTH, APP_POPUP_NORMAL_HEIGHT);\n this.popoverRef.overlay.updatePosition();\n this._windowState.next(DbxPopupWindowState.NORMAL);\n }\n\n public fullscreen(): void {\n this.popoverRef.isDraggable = false;\n this.popoverRef.resize('100%', '100%');\n this.popoverRef.overlay.updatePosition();\n this._windowState.next(DbxPopupWindowState.FULLSCREEN);\n }\n\n}\n","import { Directive } from '@angular/core';\nimport { DbxPopupComponent } from './popup.component';\n\n/**\n * Abstract popup directive.\n */\n@Directive()\nexport abstract class AbstractPopupDirective<O = any, I = any, T = any> {\n\n constructor(public readonly popup: DbxPopupComponent<O, I, T>) { }\n\n closePopup(): void {\n this.popup.close();\n }\n\n}\n","import { Component } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { DbxPopupController, DbxPopupWindowState } from './popup';\n\n/**\n * Popup content wrapper component.\n */\n@Component({\n selector: 'dbx-popup-content',\n template: `\n <ng-content select=\"[controls]\"></ng-content>\n <div *ngIf=\"showContent$ | async\" class=\"dbx-popup-content-container\">\n <ng-content></ng-content>\n </div>\n `,\n host: {\n 'class': 'dbx-popup-content'\n }\n})\nexport class DbxPopupContentComponent {\n\n readonly showContent$ = this.appPopupController.windowState$.pipe(map(x => x !== DbxPopupWindowState.MINIMIZED));\n\n constructor(private appPopupController: DbxPopupController) { }\n\n}\n","import { Component } from '@angular/core';\nimport { map } from 'rxjs/operators';\nimport { DbxPopupController, DbxPopupWindowState } from './popup';\n\n/**\n * Popup Control Buttons.\n */\n@Component({\n selector: 'dbx-popup-control-buttons',\n template: `\n <ng-container [ngSwitch]=\"isMinimized$ | async\">\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"false\" icon=\"minimize\" (buttonClick)=\"minimizeClicked()\"></dbx-button>\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"true\" icon=\"maximize\" (buttonClick)=\"maximizeClicked()\"></dbx-button>\n </ng-container>\n <dbx-button-spacer></dbx-button-spacer>\n <ng-container [ngSwitch]=\"isFullscreen$ | async\">\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"false\" icon=\"open_in_full\" (buttonClick)=\"fullscreenClicked()\"></dbx-button>\n <dbx-button [flat]=\"true\" *ngSwitchCase=\"true\" icon=\"close_fullscreen\" (buttonClick)=\"normalscreenClicked()\"></dbx-button>\n </ng-container>\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-button [flat]=\"true\" icon=\"close\" color=\"warn\" (buttonClick)=\"closeClicked()\"></dbx-button>\n `,\n host: {\n 'class': 'dbx-popup-control-buttons'\n }\n})\nexport class DbxPopupControlButtonsComponent {\n\n readonly isMinimized$ = this.appPopupController.windowState$.pipe(map(x => x === DbxPopupWindowState.MINIMIZED));\n readonly isFullscreen$ = this.appPopupController.windowState$.pipe(map(x => x === DbxPopupWindowState.FULLSCREEN));\n\n constructor(private appPopupController: DbxPopupController) { }\n\n minimizeClicked(): void {\n this.appPopupController.minimize();\n }\n\n maximizeClicked(): void {\n this.appPopupController.normalscreen();\n }\n\n fullscreenClicked(): void {\n this.appPopupController.fullscreen();\n }\n\n normalscreenClicked(): void {\n this.appPopupController.normalscreen();\n }\n\n closeClicked(): void {\n this.appPopupController.close();\n }\n\n}\n","import { Component, Input } from '@angular/core';\n\n/**\n * Popup Controls\n */\n@Component({\n selector: 'dbx-popup-controls',\n template: `\n <span class=\"dbx-popup-controls-header\">{{ header }}</span>\n <div class=\"spacer\"></div>\n <dbx-popup-control-buttons></dbx-popup-control-buttons>\n `,\n host: {\n 'class': 'dbx-popup-controls'\n }\n})\nexport class DbxPopupControlsComponent {\n\n @Input()\n header?: string;\n\n}\n","import { DbxPopupComponent, DbxPopupComponentConfig, APP_POPUP_NORMAL_HEIGHT, APP_POPUP_NORMAL_WIDTH } from './popup.component';\nimport { Injectable, Injector } from '@angular/core';\nimport { NgOverlayContainerService, NgPopoverRef } from 'ng-overlay-container';\nimport { Overlay } from '@angular/cdk/overlay';\n\nexport interface DbxPopupConfig<O, I, T> extends DbxPopupComponentConfig<O, I, T> {\n injector?: Injector;\n}\n\n/**\n * Used for displaying a popup.\n */\n@Injectable()\nexport class DbxPopupService {\n\n private _overlayContainerService: NgOverlayContainerService;\n\n constructor(private _overlay: Overlay, private _injector: Injector) {\n this._overlayContainerService = new NgOverlayContainerService(this._overlay, this._injector);\n }\n\n open<O, I, T>(config: DbxPopupConfig<O, I, T>): NgPopoverRef<DbxPopupComponentConfig<O, I, T>, O> {\n const service = (config.injector) ? new NgOverlayContainerService(this._overlay, config.injector) : this._overlayContainerService;\n const isDraggable = config.isDraggable ?? false;\n const position = config.position ?? 'bottom_right';\n\n return service.open<DbxPopupComponentConfig<O, I, T>, O>({\n content: DbxPopupComponent,\n data: {\n ...config,\n isDraggable,\n position\n },\n configuration: {\n width: APP_POPUP_NORMAL_WIDTH,\n height: APP_POPUP_NORMAL_HEIGHT,\n useGlobalPositionStrategy: true,\n hasBackdrop: false,\n isResizable: false,\n isDraggable\n }\n });\n }\n\n}\n","import { DbxInjectedComponentModule } from '@dereekb/dbx-core';\nimport { DbxPopupCoordinatorComponent } from './popup.coordinator.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NgOverlayContainerModule } from 'ng-overlay-container';\nimport { DbxPopupService } from './popup.service';\nimport { DbxPopupContentComponent } from './popup.content.component';\nimport { DbxPopupComponent } from './popup.component';\nimport { DbxAnchorModule } from '../../router';\nimport { DbxActionModule } from '../../action/action.module';\nimport { DbxPopupControlsComponent } from './popup.controls.component';\nimport { DbxPopupControlButtonsComponent } from './popup.controls.buttons.component';\nimport { DbxButtonModule } from '../../button/button.module';\nimport { DbxPopupCoordinatorService } from './popup.coordinator.service';\nimport { DbxStyleLayoutModule } from '../../layout/style/style.layout.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n DbxButtonModule,\n DbxAnchorModule,\n DbxActionModule,\n DbxStyleLayoutModule,\n DbxInjectedComponentModule,\n NgOverlayContainerModule,\n ],\n declarations: [\n DbxPopupComponent,\n DbxPopupCoordinatorComponent,\n DbxPopupContentComponent,\n DbxPopupControlsComponent,\n DbxPopupControlButtonsComponent\n ],\n exports: [\n DbxPopupContentComponent,\n DbxPopupControlsComponent,\n DbxPopupControlButtonsComponent\n ],\n providers: [\n DbxPopupService\n ]\n})\nexport class DbxPopupInteractionModule {\n\n static forRoot(): ModuleWithProviders<DbxPopupInteractionModule> {\n return {\n ngModule: DbxPopupInteractionModule,\n providers: [\n DbxPopupCoordinatorService\n ]\n };\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { DbxDialogInteractionModule } from './dialog/dialog.module';\nimport { DbxPromptModule } from './prompt/prompt.module';\nimport { DbxPopupInteractionModule } from './popup/popup.module';\nimport { DbxPopoverInteractionModule } from './popover/popover.module';\nimport { DbxFilterInteractionModule } from './filter/filter.module';\n\n@NgModule({\n exports: [\n DbxDialogInteractionModule,\n DbxFilterInteractionModule,\n DbxPromptModule,\n DbxPopoverInteractionModule,\n DbxPopupInteractionModule\n ],\n})\nexport class DbxInteractionModule { }\n","import { Component, OnInit } from '@angular/core';\nimport { DbxPromptConfirmConfig, DbxPromptConfirmTypes, AbstractDialogDirective } from '../../interaction';\n\nexport enum DbxActionTransitionSafetyDialogResult {\n SUCCESS,\n STAY,\n DISCARD,\n NONE\n}\n\n/**\n * Dialog that is shown/triggered as part of the DbxActionTransitionSafety\n */\n@Component({\n template: `\n <dbx-prompt-confirm [config]=\"config\" (confirm)=\"confirm()\" (cancel)=\"cancel()\">\n <ng-container>\n <dbx-error dbxActionError></dbx-error>\n <dbx-button text=\"Save Changes\" dbxActionButton></dbx-button>\n <dbx-button-spacer></dbx-button-spacer>\n </ng-container>\n </dbx-prompt-confirm>\n `\n})\nexport class DbxActionUIRouterTransitionSafetyDialogComponent extends AbstractDialogDirective implements OnInit {\n\n config: DbxPromptConfirmConfig = {\n type: DbxPromptConfirmTypes.NORMAL,\n title: 'Unsaved Changes',\n prompt: 'You have unsaved changes on this page.',\n confirmText: 'Stay',\n cancelText: 'Discard Changes'\n };\n\n confirm(): void {\n this.dialogRef.close(DbxActionTransitionSafetyDialogResult.STAY);\n }\n\n cancel(): void {\n this.dialogRef.close(DbxActionTransitionSafetyDialogResult.DISCARD);\n }\n\n}\n","import { Directive, OnInit, OnDestroy, Input, ViewContainerRef } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { HookResult, Transition, TransitionService } from '@uirouter/core';\nimport { Observable, of, race } from 'rxjs';\nimport { delay, first, map, mergeMap, tap } from 'rxjs/operators';\nimport { ActionContextStoreSourceInstance, canTriggerAction, isIdleActionState } from '@dereekb/dbx-core';\nimport { DbxActionTransitionSafetyDialogResult, DbxActionUIRouterTransitionSafetyDialogComponent } from './transition.safety.dialog.component';\n\n/**\n * How to handle transitions.\n * \n * Values:\n * - none: Nothing occurs.\n * - dialog: Always show a dialog and act based on the result.\n * - auto: Try to auto-trigger if in a triggerable state. If it is modified but in a non-triggerable state, show a dialog. Should be used in conjuction with the auto-saver.\n */\nexport type DbxActionTransitionSafetyType = 'none' | 'dialog' | 'auto';\n\ntype DbxActionTransitionSafetyRaceResult = [boolean | undefined, HookResult | undefined];\n\n/**\n * Context used for preventing a transition from occuring if the action is not complete or is in a modified state.\n *\n * This can be configured to auto-trigger and wait, or show a dialog and wait for the user's feedback before doing anything.\n * \n * NOTE: This dialog only works for uirouter.\n */\n@Directive({\n selector: '[dbxActionTransitionSafety]',\n})\nexport class DbxActionTransitionSafetyDirective<T, O> implements OnInit, OnDestroy {\n\n @Input('dbxActionTransitionSafety')\n inputSafetyType?: DbxActionTransitionSafetyType;\n\n private _dialogRef?: MatDialogRef<DbxActionUIRouterTransitionSafetyDialogComponent, DbxActionTransitionSafetyDialogResult>;\n private stopWatchingTransition?: () => void;\n\n constructor(\n public readonly source: ActionContextStoreSourceInstance<T, O>,\n protected readonly transitionService: TransitionService,\n protected readonly viewContainerRef: ViewContainerRef,\n protected readonly dialog: MatDialog\n ) { }\n\n get safetyType(): DbxActionTransitionSafetyType {\n return this.inputSafetyType ?? 'dialog';\n }\n\n private get _destroyed(): boolean {\n return !this.stopWatchingTransition;\n }\n\n ngOnInit(): void {\n this.stopWatchingTransition = this.transitionService.onStart({}, (transition: Transition) => {\n return this._handleOnBeforeTransition(transition);\n }) as any;\n }\n\n ngOnDestroy(): void {\n if (this.stopWatchingTransition) {\n this.stopWatchingTransition();\n delete this.stopWatchingTransition;\n }\n\n this._closeDialog();\n }\n\n protected _handleOnBeforeTransition(transition: Transition): HookResult {\n return this.source.isModified$.pipe(\n first(),\n mergeMap((isModified) => {\n if (isModified) {\n return race([\n // Watch for success to occur. At that point, close everything.\n this.source.success$.pipe(first(), map((x) => [true, undefined] as DbxActionTransitionSafetyRaceResult)),\n this._handleIsModifiedState(transition).pipe(first(), map((x) => [undefined, x] as DbxActionTransitionSafetyRaceResult))\n ]).pipe(\n map(([saveSuccess, handleResult]: DbxActionTransitionSafetyRaceResult) => {\n if (saveSuccess) {\n return true;\n } else {\n return handleResult;\n }\n }),\n tap(() => this._closeDialog()), // Close dialog if it is still open.\n delay(10) // Delay to allow dialog to close before transition.\n );\n } else {\n return of(true);\n }\n })\n ).toPromise().then(x => x); // Resolve/Flatten potential promise result.\n }\n\n protected _handleIsModifiedState(transition: Transition): Observable<HookResult> {\n const safetyType = this.safetyType;\n let obs: Observable<HookResult>;\n\n // console.log('Safety type: ', safetyType);\n\n switch (safetyType) {\n case 'none':\n obs = of(true); // Do nothing.\n break;\n case 'auto':\n obs = this._autoTrigger(transition);\n break;\n default:\n case 'dialog':\n obs = this._showDialog(transition);\n break;\n }\n\n return obs;\n }\n\n private _autoTrigger(transition: Transition): Observable<HookResult> {\n return this.source.pipeStore((store) => store.state$.pipe(\n delay(20), // Prevent racing with auto-trigger.\n first(),\n mergeMap((state) => {\n if (isIdleActionState(state.actionState)) {\n // If we're in an idle state, get ready to trigger it.\n if (canTriggerAction(state)) {\n store.trigger(); // Try and trigger it.\n }\n }\n\n // Watch for errors. If an error occurs, show the dialog.\n // Success will cause the race in _handleOnBeforeTransition() to trigger and close everything.\n return store.rejected$.pipe(\n first(),\n mergeMap(() => this._showDialog(transition))\n );\n })\n ));\n }\n\n private _showDialog(transition: Transition): Observable<HookResult> {\n if (this._destroyed) {\n return of(true);\n }\n\n if (!this._dialogRef) {\n this._dialogRef = this.dialog.open(DbxActionUIRouterTransitionSafetyDialogComponent, {\n viewContainerRef: this.viewContainerRef\n });\n }\n\n return this._dialogRef.afterClosed().pipe(\n first(),\n map((result: DbxActionTransitionSafetyDialogResult = DbxActionTransitionSafetyDialogResult.STAY) => {\n // Default to Stay if the user clicks outside.\n switch (result) {\n case DbxActionTransitionSafetyDialogResult.DISCARD:\n case DbxActionTransitionSafetyDialogResult.SUCCESS:\n case DbxActionTransitionSafetyDialogResult.NONE:\n return true;\n case DbxActionTransitionSafetyDialogResult.STAY:\n return false;\n }\n })\n );\n }\n\n private _closeDialog(): void {\n if (this._dialogRef) {\n this._dialogRef.close(DbxActionTransitionSafetyDialogResult.NONE);\n }\n\n this._dialogRef = undefined;\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { DbxActionUIRouterTransitionSafetyDialogComponent } from './transition.safety.dialog.component';\nimport { DbxActionTransitionSafetyDirective as DbxActionUIRouterTransitionSafetyDirective } from './transition.safety.directive';\nimport { DbxCoreActionModule } from '@dereekb/dbx-core';\nimport { DbxButtonModule } from '../../button';\nimport { DbxPromptModule } from './../../interaction';\nimport { DbxReadableErrorModule } from '../../error';\n\n/**\n * Provides the DbxActionUIRouterTransitionSafetyDirective.\n * \n * NOTE: Only works with UIRouter\n */\n@NgModule({\n imports: [\n CommonModule,\n DbxCoreActionModule,\n DbxPromptModule,\n DbxButtonModule,\n DbxReadableErrorModule\n ],\n declarations: [\n DbxActionUIRouterTransitionSafetyDirective,\n DbxActionUIRouterTransitionSafetyDialogComponent\n ],\n exports: [\n DbxActionUIRouterTransitionSafetyDirective\n ]\n})\nexport class DbxActionUIRouterTransitionModule { }\n","import { DbxLoadingModule } from './loading/loading.module';\nimport { MatProgressButtonsModule } from 'mat-progress-buttons';\nimport { NgModule } from '@angular/core';\nimport { DbxButtonModule } from './button';\nimport { DbxActionModule } from './action';\n\n@NgModule({\n exports: [\n DbxButtonModule,\n DbxActionModule,\n DbxLoadingModule\n ],\n})\nexport class DbxWebModule { }\n\n/**\n * Should only be imported once in the root app.\n * \n * Pre-configures the following modules:\n * - MatProgressButtonsModule\n */\n@NgModule({\n imports: [\n MatProgressButtonsModule.forRoot()\n ]\n})\nexport class DbxWebRootModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["shareReplay","map","distinctUntilChanged","catchError","delay","first","startWith","filter","throttleTime","switchMap","DbxActionUIRouterTransitionSafetyDirective"],"mappings":"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"}