@coolon/angular-ui-powerups 0.0.126 → 0.0.129

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 (350) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +3745 -3019
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.d.ts +17 -18
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +16 -17
  8. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  9. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  10. package/esm2015/index.js +1 -1
  11. package/esm2015/index.js.map +1 -1
  12. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  13. package/esm2015/lib/interaction/abstract-interaction-context.js +104 -0
  14. package/esm2015/lib/interaction/abstract-interaction-context.js.map +1 -0
  15. package/esm2015/lib/interaction/abstract-interaction-context.metadata.json +1 -0
  16. package/esm2015/lib/interaction/activity-ref.js +123 -0
  17. package/esm2015/lib/interaction/activity-ref.js.map +1 -0
  18. package/esm2015/lib/interaction/activity-ref.metadata.json +1 -0
  19. package/esm2015/lib/interaction/activity.js +21 -1
  20. package/esm2015/lib/interaction/activity.js.map +1 -1
  21. package/esm2015/lib/interaction/activity.metadata.json +1 -1
  22. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +199 -230
  23. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  24. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  25. package/esm2015/lib/interaction/components/{activity-outlet → activity-container/activity-outlet}/activity-outlet.component.js +24 -31
  26. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -0
  27. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -0
  28. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.ngfactory.js.map +1 -0
  29. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.scss.shim.ngstyle.js.map +1 -0
  30. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -3
  31. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js.map +1 -1
  32. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.metadata.json +1 -1
  33. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +4 -11
  34. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js.map +1 -1
  35. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.metadata.json +1 -1
  36. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -3
  37. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -1
  38. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.metadata.json +1 -1
  39. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +113 -0
  40. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -0
  41. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.metadata.json +1 -0
  42. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.ngfactory.js.map +1 -0
  43. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.scss.shim.ngstyle.js.map +1 -0
  44. package/esm2015/lib/interaction/index.js +7 -6
  45. package/esm2015/lib/interaction/index.js.map +1 -1
  46. package/esm2015/lib/interaction/index.metadata.json +1 -1
  47. package/esm2015/lib/interaction/interaction-context.js +12 -67
  48. package/esm2015/lib/interaction/interaction-context.js.map +1 -1
  49. package/esm2015/lib/interaction/interaction-context.metadata.json +1 -1
  50. package/esm2015/lib/interaction/interaction.module.js +4 -4
  51. package/esm2015/lib/interaction/interaction.module.js.map +1 -1
  52. package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
  53. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  54. package/esm2015/lib/interaction/route-synchronisation-adapter.js +17 -0
  55. package/esm2015/lib/interaction/route-synchronisation-adapter.js.map +1 -0
  56. package/esm2015/lib/interaction/route-synchronisation-adapter.metadata.json +1 -0
  57. package/esm2015/lib/interaction/services/interaction-service-routing-adapter.js +72 -0
  58. package/esm2015/lib/interaction/services/interaction-service-routing-adapter.js.map +1 -0
  59. package/esm2015/lib/interaction/services/interaction-service-routing-adapter.metadata.json +1 -0
  60. package/esm2015/lib/interaction/services/interaction.service.js +174 -104
  61. package/esm2015/lib/interaction/services/interaction.service.js.map +1 -1
  62. package/esm2015/lib/interaction/services/interaction.service.metadata.json +1 -1
  63. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js +4 -2
  64. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js.map +1 -1
  65. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.metadata.json +1 -1
  66. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js +79 -87
  67. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js.map +1 -1
  68. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.metadata.json +1 -1
  69. package/esm2015/lib/interaction/services/modal-interaction-context.factory.js +3 -1
  70. package/esm2015/lib/interaction/services/modal-interaction-context.factory.js.map +1 -1
  71. package/esm2015/lib/place/components/abstract-place-navigation.component.js +27 -6
  72. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  73. package/esm2015/lib/place/components/abstract-place-navigation.component.metadata.json +1 -1
  74. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +9 -3
  75. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  76. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  77. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +98 -110
  78. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  79. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  80. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +9 -3
  81. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js.map +1 -1
  82. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  83. package/esm2015/lib/place/guards/place.guard.js +14 -13
  84. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  85. package/esm2015/lib/place/guards/place.guard.metadata.json +1 -1
  86. package/esm2015/lib/place/index.js +15 -2
  87. package/esm2015/lib/place/index.js.map +1 -1
  88. package/esm2015/lib/place/index.metadata.json +1 -1
  89. package/esm2015/lib/place/{guards → navigation}/place-component-deactivation-handler.js +28 -22
  90. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js.map +1 -0
  91. package/esm2015/lib/place/navigation/place-component-deactivation-handler.metadata.json +1 -0
  92. package/esm2015/lib/place/navigation/session/abstract-pop-state-navigation.js +37 -0
  93. package/esm2015/lib/place/navigation/session/abstract-pop-state-navigation.js.map +1 -0
  94. package/esm2015/lib/place/navigation/session/abstract-pop-state-navigation.metadata.json +1 -0
  95. package/esm2015/lib/place/navigation/session/event-cleanup/event-clean-up-session.js +19 -0
  96. package/esm2015/lib/place/navigation/session/event-cleanup/event-clean-up-session.js.map +1 -0
  97. package/esm2015/lib/place/navigation/session/event-cleanup/event-clean-up-session.metadata.json +1 -0
  98. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js +95 -0
  99. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js.map +1 -0
  100. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.metadata.json +1 -0
  101. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-interaction-cancelation-finishes.js +132 -0
  102. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-interaction-cancelation-finishes.js.map +1 -0
  103. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-interaction-cancelation-finishes.metadata.json +1 -0
  104. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js +123 -0
  105. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js.map +1 -0
  106. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.metadata.json +1 -0
  107. package/esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.js +62 -0
  108. package/esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.js.map +1 -0
  109. package/esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.metadata.json +1 -0
  110. package/esm2015/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js +48 -0
  111. package/esm2015/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js.map +1 -0
  112. package/esm2015/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.metadata.json +1 -0
  113. package/esm2015/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js +104 -0
  114. package/esm2015/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js.map +1 -0
  115. package/esm2015/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.metadata.json +1 -0
  116. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js +141 -0
  117. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js.map +1 -0
  118. package/esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.metadata.json +1 -0
  119. package/esm2015/lib/place/navigation/session/navigating.js +54 -0
  120. package/esm2015/lib/place/navigation/session/navigating.js.map +1 -0
  121. package/esm2015/lib/place/navigation/session/navigating.metadata.json +1 -0
  122. package/esm2015/lib/place/navigation/session/navigation-context.js +38 -0
  123. package/esm2015/lib/place/navigation/session/navigation-context.js.map +1 -0
  124. package/esm2015/lib/place/navigation/session/navigation-context.metadata.json +1 -0
  125. package/esm2015/lib/place/navigation/session/navigation-session.js +326 -0
  126. package/esm2015/lib/place/navigation/session/navigation-session.js.map +1 -0
  127. package/esm2015/lib/place/navigation/session/navigation-session.metadata.json +1 -0
  128. package/esm2015/lib/place/navigation/session/pop-state-navigation.js +31 -0
  129. package/esm2015/lib/place/navigation/session/pop-state-navigation.js.map +1 -0
  130. package/esm2015/lib/place/navigation/session/pop-state-navigation.metadata.json +1 -0
  131. package/esm2015/lib/place/place-component.js +46 -15
  132. package/esm2015/lib/place/place-component.js.map +1 -1
  133. package/esm2015/lib/place/place-component.metadata.json +1 -1
  134. package/esm2015/lib/place/place-router.js +307 -309
  135. package/esm2015/lib/place/place-router.js.map +1 -1
  136. package/esm2015/lib/place/place-router.metadata.json +1 -1
  137. package/esm2015/lib/place/place.module.js.map +1 -1
  138. package/esm2015/lib/place/place.module.metadata.json +1 -1
  139. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  140. package/esm2015/lib/place/route/parameter-decorators.js +1 -0
  141. package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
  142. package/esm2015/lib/place/route/parameter-decorators.metadata.json +1 -1
  143. package/esm2015/lib/place/url-service.js +126 -0
  144. package/esm2015/lib/place/url-service.js.map +1 -0
  145. package/esm2015/lib/place/url-service.metadata.json +1 -0
  146. package/esm2015/lib/place/url-service.ngfactory.js.map +1 -0
  147. package/esm2015/lib/place/url-snapshot.js +15 -1
  148. package/esm2015/lib/place/url-snapshot.js.map +1 -1
  149. package/esm2015/lib/place/url-snapshot.metadata.json +1 -1
  150. package/esm2015/lib/place/visit.js +10 -0
  151. package/esm2015/lib/place/visit.js.map +1 -1
  152. package/esm2015/lib/place/visit.metadata.json +1 -1
  153. package/esm2015/public_api.js +2 -2
  154. package/esm2015/public_api.js.map +1 -1
  155. package/esm5/coolon-angular-ui-powerups.js +16 -17
  156. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  157. package/esm5/index.js +1 -1
  158. package/esm5/index.js.map +1 -1
  159. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  160. package/esm5/lib/interaction/abstract-interaction-context.js +146 -0
  161. package/esm5/lib/interaction/abstract-interaction-context.js.map +1 -0
  162. package/esm5/lib/interaction/activity-ref.js +153 -0
  163. package/esm5/lib/interaction/activity-ref.js.map +1 -0
  164. package/esm5/lib/interaction/activity.js +29 -1
  165. package/esm5/lib/interaction/activity.js.map +1 -1
  166. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +273 -265
  167. package/esm5/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  168. package/esm5/lib/interaction/components/{activity-outlet → activity-container/activity-outlet}/activity-outlet.component.js +25 -32
  169. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -0
  170. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.ngfactory.js.map +1 -0
  171. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.scss.shim.ngstyle.js.map +1 -0
  172. package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +2 -3
  173. package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js.map +1 -1
  174. package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +4 -10
  175. package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js.map +1 -1
  176. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +2 -3
  177. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -1
  178. package/esm5/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +158 -0
  179. package/esm5/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js.map +1 -0
  180. package/esm5/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.ngfactory.js.map +1 -0
  181. package/esm5/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.scss.shim.ngstyle.js.map +1 -0
  182. package/esm5/lib/interaction/index.js +7 -6
  183. package/esm5/lib/interaction/index.js.map +1 -1
  184. package/esm5/lib/interaction/interaction-context.js +12 -106
  185. package/esm5/lib/interaction/interaction-context.js.map +1 -1
  186. package/esm5/lib/interaction/interaction.module.js +4 -4
  187. package/esm5/lib/interaction/interaction.module.js.map +1 -1
  188. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  189. package/esm5/lib/interaction/route-synchronisation-adapter.js +17 -0
  190. package/esm5/lib/interaction/route-synchronisation-adapter.js.map +1 -0
  191. package/esm5/lib/interaction/services/interaction-service-routing-adapter.js +98 -0
  192. package/esm5/lib/interaction/services/interaction-service-routing-adapter.js.map +1 -0
  193. package/esm5/lib/interaction/services/interaction.service.js +243 -117
  194. package/esm5/lib/interaction/services/interaction.service.js.map +1 -1
  195. package/esm5/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js +6 -2
  196. package/esm5/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js.map +1 -1
  197. package/esm5/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js +96 -107
  198. package/esm5/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js.map +1 -1
  199. package/esm5/lib/interaction/services/modal-interaction-context.factory.js +3 -1
  200. package/esm5/lib/interaction/services/modal-interaction-context.factory.js.map +1 -1
  201. package/esm5/lib/place/components/abstract-place-navigation.component.js +24 -6
  202. package/esm5/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  203. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +6 -3
  204. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  205. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +130 -129
  206. package/esm5/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  207. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +6 -3
  208. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js.map +1 -1
  209. package/esm5/lib/place/guards/place.guard.js +17 -13
  210. package/esm5/lib/place/guards/place.guard.js.map +1 -1
  211. package/esm5/lib/place/index.js +15 -2
  212. package/esm5/lib/place/index.js.map +1 -1
  213. package/esm5/lib/place/{guards → navigation}/place-component-deactivation-handler.js +45 -21
  214. package/esm5/lib/place/navigation/place-component-deactivation-handler.js.map +1 -0
  215. package/esm5/lib/place/navigation/session/abstract-pop-state-navigation.js +49 -0
  216. package/esm5/lib/place/navigation/session/abstract-pop-state-navigation.js.map +1 -0
  217. package/esm5/lib/place/navigation/session/event-cleanup/event-clean-up-session.js +36 -0
  218. package/esm5/lib/place/navigation/session/event-cleanup/event-clean-up-session.js.map +1 -0
  219. package/esm5/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js +151 -0
  220. package/esm5/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js.map +1 -0
  221. package/esm5/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-interaction-cancelation-finishes.js +221 -0
  222. package/esm5/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-interaction-cancelation-finishes.js.map +1 -0
  223. package/esm5/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js +186 -0
  224. package/esm5/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js.map +1 -0
  225. package/esm5/lib/place/navigation/session/interactions/navigating-during-interaction.js +107 -0
  226. package/esm5/lib/place/navigation/session/interactions/navigating-during-interaction.js.map +1 -0
  227. package/esm5/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js +77 -0
  228. package/esm5/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js.map +1 -0
  229. package/esm5/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js +167 -0
  230. package/esm5/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js.map +1 -0
  231. package/esm5/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js +185 -0
  232. package/esm5/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js.map +1 -0
  233. package/esm5/lib/place/navigation/session/navigating.js +75 -0
  234. package/esm5/lib/place/navigation/session/navigating.js.map +1 -0
  235. package/esm5/lib/place/navigation/session/navigation-context.js +32 -0
  236. package/esm5/lib/place/navigation/session/navigation-context.js.map +1 -0
  237. package/esm5/lib/place/navigation/session/navigation-session.js +450 -0
  238. package/esm5/lib/place/navigation/session/navigation-session.js.map +1 -0
  239. package/esm5/lib/place/navigation/session/pop-state-navigation.js +50 -0
  240. package/esm5/lib/place/navigation/session/pop-state-navigation.js.map +1 -0
  241. package/esm5/lib/place/place-component.js +61 -17
  242. package/esm5/lib/place/place-component.js.map +1 -1
  243. package/esm5/lib/place/place-router.js +407 -401
  244. package/esm5/lib/place/place-router.js.map +1 -1
  245. package/esm5/lib/place/place.module.js.map +1 -1
  246. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  247. package/esm5/lib/place/route/parameter-decorators.js +1 -0
  248. package/esm5/lib/place/route/parameter-decorators.js.map +1 -1
  249. package/esm5/lib/place/url-service.js +176 -0
  250. package/esm5/lib/place/url-service.js.map +1 -0
  251. package/esm5/lib/place/url-service.ngfactory.js.map +1 -0
  252. package/esm5/lib/place/url-snapshot.js +22 -1
  253. package/esm5/lib/place/url-snapshot.js.map +1 -1
  254. package/esm5/lib/place/visit.js +14 -0
  255. package/esm5/lib/place/visit.js.map +1 -1
  256. package/esm5/public_api.js +2 -2
  257. package/esm5/public_api.js.map +1 -1
  258. package/fesm2015/coolon-angular-ui-powerups.js +2637 -2266
  259. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  260. package/fesm5/coolon-angular-ui-powerups.js +3694 -2980
  261. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  262. package/lib/interaction/abstract-interaction-context.d.ts +24 -0
  263. package/lib/interaction/activity-ref.d.ts +19 -0
  264. package/lib/interaction/activity.d.ts +5 -1
  265. package/lib/interaction/components/activity-container/activity-container.component.d.ts +42 -43
  266. package/lib/interaction/components/{activity-outlet → activity-container/activity-outlet}/activity-outlet.component.d.ts +7 -10
  267. package/lib/interaction/components/alert-dialog/alert-dialog.component.d.ts +2 -2
  268. package/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.d.ts +2 -5
  269. package/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.d.ts +2 -2
  270. package/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.d.ts +24 -0
  271. package/lib/interaction/index.d.ts +6 -5
  272. package/lib/interaction/interaction-context.d.ts +8 -29
  273. package/lib/interaction/route-synchronisation-adapter.d.ts +5 -0
  274. package/lib/interaction/services/interaction-service-routing-adapter.d.ts +15 -0
  275. package/lib/interaction/services/interaction.service.d.ts +52 -24
  276. package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.d.ts +2 -1
  277. package/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.d.ts +15 -12
  278. package/lib/interaction/services/modal-interaction-context.factory.d.ts +2 -1
  279. package/lib/place/components/abstract-place-navigation.component.d.ts +5 -3
  280. package/lib/place/components/list-place-nav/list-place-nav.component.d.ts +2 -1
  281. package/lib/place/components/place-outlet/place-outlet.component.d.ts +9 -10
  282. package/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.d.ts +2 -1
  283. package/lib/place/guards/place.guard.d.ts +4 -3
  284. package/lib/place/index.d.ts +15 -2
  285. package/lib/place/navigation/place-component-deactivation-handler.d.ts +22 -0
  286. package/lib/place/navigation/session/abstract-pop-state-navigation.d.ts +9 -0
  287. package/lib/place/navigation/session/event-cleanup/event-clean-up-session.d.ts +4 -0
  288. package/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.d.ts +27 -0
  289. package/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-interaction-cancelation-finishes.d.ts +43 -0
  290. package/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.d.ts +33 -0
  291. package/lib/place/navigation/session/interactions/navigating-during-interaction.d.ts +15 -0
  292. package/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.d.ts +17 -0
  293. package/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.d.ts +24 -0
  294. package/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.d.ts +15 -0
  295. package/lib/place/navigation/session/navigating.d.ts +11 -0
  296. package/lib/place/navigation/session/navigation-context.d.ts +28 -0
  297. package/lib/place/navigation/session/navigation-session.d.ts +51 -0
  298. package/lib/place/navigation/session/pop-state-navigation.d.ts +7 -0
  299. package/lib/place/place-component.d.ts +6 -3
  300. package/lib/place/place-router.d.ts +39 -35
  301. package/lib/place/url-service.d.ts +30 -0
  302. package/lib/place/url-snapshot.d.ts +3 -1
  303. package/lib/place/visit.d.ts +1 -0
  304. package/package.json +1 -1
  305. package/schematics/place-routes/templates/place-routes.ts.template +4 -3
  306. package/esm2015/lib/interaction/abstract-activity.js +0 -13
  307. package/esm2015/lib/interaction/abstract-activity.js.map +0 -1
  308. package/esm2015/lib/interaction/abstract-activity.metadata.json +0 -1
  309. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js +0 -21
  310. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.js.map +0 -1
  311. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet-context.metadata.json +0 -1
  312. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js.map +0 -1
  313. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.metadata.json +0 -1
  314. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.ngfactory.js.map +0 -1
  315. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.scss.shim.ngstyle.js.map +0 -1
  316. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +0 -102
  317. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js.map +0 -1
  318. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.metadata.json +0 -1
  319. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.ngfactory.js.map +0 -1
  320. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.scss.shim.ngstyle.js.map +0 -1
  321. package/esm2015/lib/interaction/interaction-context-base.js +0 -171
  322. package/esm2015/lib/interaction/interaction-context-base.js.map +0 -1
  323. package/esm2015/lib/interaction/interaction-context-base.metadata.json +0 -1
  324. package/esm2015/lib/place/guards/navigation-state.js +0 -1118
  325. package/esm2015/lib/place/guards/navigation-state.js.map +0 -1
  326. package/esm2015/lib/place/guards/navigation-state.metadata.json +0 -1
  327. package/esm2015/lib/place/guards/place-component-deactivation-handler.js.map +0 -1
  328. package/esm2015/lib/place/guards/place-component-deactivation-handler.metadata.json +0 -1
  329. package/esm5/lib/interaction/abstract-activity.js +0 -30
  330. package/esm5/lib/interaction/abstract-activity.js.map +0 -1
  331. package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js +0 -21
  332. package/esm5/lib/interaction/components/activity-outlet/activity-outlet-context.js.map +0 -1
  333. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js.map +0 -1
  334. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.ngfactory.js.map +0 -1
  335. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.scss.shim.ngstyle.js.map +0 -1
  336. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +0 -119
  337. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js.map +0 -1
  338. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.ngfactory.js.map +0 -1
  339. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.scss.shim.ngstyle.js.map +0 -1
  340. package/esm5/lib/interaction/interaction-context-base.js +0 -228
  341. package/esm5/lib/interaction/interaction-context-base.js.map +0 -1
  342. package/esm5/lib/place/guards/navigation-state.js +0 -1491
  343. package/esm5/lib/place/guards/navigation-state.js.map +0 -1
  344. package/esm5/lib/place/guards/place-component-deactivation-handler.js.map +0 -1
  345. package/lib/interaction/abstract-activity.d.ts +0 -6
  346. package/lib/interaction/components/activity-outlet/activity-outlet-context.d.ts +0 -7
  347. package/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.d.ts +0 -17
  348. package/lib/interaction/interaction-context-base.d.ts +0 -29
  349. package/lib/place/guards/navigation-state.d.ts +0 -228
  350. package/lib/place/guards/place-component-deactivation-handler.d.ts +0 -15
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.service.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/interaction.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n BooleanValueModelChain,\n Disposable,\n Dsl,\n GarbageCollector,\n lang,\n ListModelChain,\n MutableListModel,\n MutableValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { InteractionContext } from '../interaction-context';\n\nimport { ModalInteractionContextFactory } from './modal-interaction-context.factory';\n\nlet inplaceMonitorCount = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService {\n\n private readonly garbage = new GarbageCollector();\n readonly active: BooleanValueModelChain;\n private readonly exclusiveContext = new MutableValueModel<InteractionContext>();\n\n private readonly _activeModalInteractionContextModel = new MutableValueModel<InteractionService.Monitor>();\n private readonly _activeInlineInteractionContextModel = new MutableValueModel<InteractionService.Monitor>();\n private readonly _activeInteractionContext: ValueModelChain<InteractionContext>;\n\n readonly activeInteractionContextIds: ListModelChain<string>;\n readonly modelInteractionActive: BooleanValueModelChain;\n readonly inlineInteractionActive: BooleanValueModelChain;\n\n constructor(readonly modelInteractionContextFactory: ModalInteractionContextFactory) {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this.garbage);\n\n this._activeInteractionContext = chain(this._activeModalInteractionContextModel)\n .otherwise(this._activeInlineInteractionContextModel)\n .pluck('interactionContext');\n\n this.active = chain(this._activeInteractionContext).isNotNil();\n this.modelInteractionActive = chain(this._activeModalInteractionContextModel).isNotNil();\n this.inlineInteractionActive = chain(this._activeInlineInteractionContextModel).isNotNil();\n\n // TODO: chain.concat(listOrValueModels) would be nice.\n this.activeInteractionContextIds = chain(new MutableListModel<InteractionService.Monitor>())\n .append(this._activeInlineInteractionContextModel)\n .append(this._activeModalInteractionContextModel)\n .rejectNil()\n .pluck('id');\n\n }\n\n isActive(): boolean {\n return this.active.value;\n }\n\n isModalActive(): boolean {\n return this.modelInteractionActive.value;\n }\n\n /**\n * @deprecated use #createModalInteractionContextDisposedWith instead.\n * @param disposable\n */\n createModalInteractionContextFor(disposable: Disposable.Collector): InteractionContext {\n return this.createModalInteractionContextDisposedWith(disposable);\n }\n\n /**\n * Creates a new model interaction context that will be disposed along with the component.\n * @param disposable\n */\n createModalInteractionContextDisposedWith(disposable: Disposable.Collector): InteractionContext {\n const context = this.modelInteractionContextFactory.createInteractionContext();\n disposable.registerDisposable(new InteractionService.Monitor('modal', context, this._activeModalInteractionContextModel, this.exclusiveContext));\n return context;\n }\n\n _registerInplaceInteractionContext(interactionContext: InteractionContext) {\n interactionContext.registerDisposable(new InteractionService.Monitor(`ip${++inplaceMonitorCount}`, interactionContext, this._activeInlineInteractionContextModel, this.exclusiveContext));\n }\n\n // @Trace()\n getActiveContext(): InteractionContext {\n assert.isTruthy(this.isActive());\n return this._activeInteractionContext.value;\n }\n\n /**\n * Creates an interaction context that will prevent any other contexts from starting an\n * activity until it is disposed. This is intended for use by the router for passing\n * to PlaceComponent.canDeactivate(interactionContext). This ensures components don't\n * try and interact in a way that we can't track and synchronise with the browser back\n * button.\n */\n _createExclusiveModalInteractionContext(): InteractionContext {\n this.exclusiveContext.value = this.modelInteractionContextFactory.createInteractionContext();\n const self = this;\n this.exclusiveContext.value.registerDisposable({\n dispose(): void {\n self.exclusiveContext.value = null;\n }\n });\n return this.exclusiveContext.value;\n }\n}\n\nexport namespace InteractionService {\n\n export interface Callback {\n onStarted(monitor: Monitor);\n\n onFinished(monitor: Monitor);\n }\n\n export class Monitor extends GarbageCollector {\n constructor(readonly id: string,\n readonly interactionContext: InteractionContext,\n readonly currentActiveMonitor: MutableValueModel<Monitor>,\n readonly exclusiveContext: ValueModel<InteractionContext>) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n when.valueOf(interactionContext.active).becomesTruthy(() => this.onStarted());\n when.valueOf(interactionContext.active).becomesFalsey(() => this.onFinished());\n interactionContext.registerDisposable(this);\n }\n\n protected onStarted() {\n this.assertCanStart();\n this.currentActiveMonitor.value = this;\n }\n\n private assertCanStart() {\n assert.isFalsey(this.currentActiveMonitor.value);\n if (this.exclusiveContext.value && this.interactionContext !== this.exclusiveContext.value) {\n lang.illegalState('Interaction started while exclusive lock active. This is usually because you using a different context during place.canDeactivate(interactionContext)');\n }\n }\n\n protected onFinished() {\n this.assertCurrentlyActive();\n this.currentActiveMonitor.value = null;\n }\n\n private assertCurrentlyActive() {\n assert.isTruthy(this.currentActiveMonitor.value === this);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"interaction.service.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/interaction.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\nimport {\n BooleanValueModelChain,\n DelegatingValueModel,\n Disposable,\n Dsl,\n GarbageCollector, ListModel,\n ListModelChain,\n MutableListModel,\n MutableValueModel, Trace,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { PlaceRouter } from '../../place/place-router';\nimport { InPlaceInteractionContextComponent } from '../components/inplace-interaction-context/in-place-interaction-context.component';\nimport { InteractionContext } from '../interaction-context';\nimport { InteractionServiceRoutingAdapter } from './interaction-service-routing-adapter';\n\nimport { ModalInteractionContextFactory } from './modal-interaction-context.factory';\n\nlet inplaceMonitorCount = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService {\n\n private readonly garbage = new GarbageCollector();\n readonly active: BooleanValueModelChain;\n\n // private readonly _activeModalContext = new MutableValueModel<InteractionContext>();\n // private readonly _activeInlineContext = new MutableValueModel<InteractionContext>();\n // private readonly _activeContext: ValueModelChain<InteractionContext>;\n private readonly _navigationInProgress = new DelegatingValueModel<boolean>().withDefault(false);\n\n private placeRouter: PlaceRouter;\n private exclusiveInteractionRegistry: InteractionService.ContextRegistry;\n private modalInteractionRegistry: InteractionService.ContextRegistry;\n private inPlaceInteractionRegistry: InteractionService.ContextRegistry;\n private activeModalContext: ValueModelChain<InteractionContext>;\n\n readonly activeInteractionContextIds: ListModelChain<string>;\n readonly inModalInteraction: BooleanValueModelChain;\n\n constructor(readonly modelInteractionContextFactory: ModalInteractionContextFactory) {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this.garbage);\n\n this.exclusiveInteractionRegistry = new InteractionService.ContextRegistry();\n this.modalInteractionRegistry = new InteractionService.ContextRegistry();\n this.inPlaceInteractionRegistry = new InteractionService.ContextRegistry();\n\n this.modalInteractionRegistry.disableWhen(valueOf.any(\n this.exclusiveInteractionRegistry.active,\n this.modalInteractionRegistry.active\n ).areTruthy());\n\n this.inPlaceInteractionRegistry.disableWhen(valueOf.any(\n this.exclusiveInteractionRegistry.active,\n this.modalInteractionRegistry.active,\n this.inPlaceInteractionRegistry.active\n ).areTruthy());\n\n this.active = valueOf.any(\n this.inPlaceInteractionRegistry.active,\n this.modalInteractionRegistry.active\n ).areTruthy();\n\n\n // TODO: chain.concat(listOrValueModels) would be nice.\n this.activeInteractionContextIds = chain(this.inPlaceInteractionRegistry.interactionContextIds)\n .concat(this.modalInteractionRegistry.interactionContextIds);\n\n this.activeModalContext = chain(this.modalInteractionRegistry.interactionContexts).first();\n this.inModalInteraction = chain(this.activeModalContext).isNotNil();\n\n }\n\n isActive(): boolean {\n return this.active.value;\n }\n\n /**\n * @deprecated use #createModalInteractionContextDisposedWith instead.\n * @param disposable\n */\n createModalInteractionContextFor(disposable: Disposable.Collector): InteractionContext {\n return this.createModalInteractionContextDisposedWith(disposable);\n }\n\n /**\n * Creates a new model interaction context that will be disposed along with the component.\n * @param disposable\n */\n createModalInteractionContextDisposedWith(disposable: Disposable.Collector): InteractionContext {\n // TODO: look at making the registry the factory..\n return this.modelInteractionContextFactory.createInteractionContext('modal', new InteractionService.ApiAdapter(this.placeRouter, this.modalInteractionRegistry));\n }\n\n registerInplaceInteractionContext(interactionContext: InPlaceInteractionContextComponent<any, any, any>) {\n // TODO: look at making the registry the factory..\n // Todo: check for double registration.\n // Todo: allow multiple inplace interactions..\n interactionContext.initialise(`ip${++inplaceMonitorCount}`, new InteractionService.ApiAdapter(this.placeRouter, this.inPlaceInteractionRegistry));\n }\n\n\n // private assertModalCanStart() {\n // assert.isFalsey(this.inExclusiveInteraction.value);\n // assert.isFalsey(this.modalActive.value);\n // }\n //\n // private assertInPlaceCanStart() {\n // assert.isFalsey(this.inExclusiveInteraction.value);\n // assert.isFalsey(this.modalActive.value);\n // assert.isFalsey(this._activeInlineContext.value);\n // }\n\n\n // // @Trace()\n // getActiveContext(): InteractionContext {\n // assert.isTruthy(this.isActive());\n // return this._activeContext.value;\n // }\n\n /**\n * Creates an interaction context that will prevent any other contexts from starting an\n * activity until it is disposed. This is intended for use by the router for passing\n * to PlaceComponent.canDeactivate(interactionContext). This ensures components don't\n * try and interact in a way that we can't track and synchronise with the browser back\n * button.\n */\n registerPlaceRouter(router: PlaceRouter): InteractionServiceRoutingAdapter {\n assert.isFalsey(this.placeRouter);\n this.placeRouter = router;\n this._navigationInProgress.setDelegate(this.placeRouter.navigationInProgress);\n const self = this;\n return new InteractionServiceRoutingAdapter(\n this.activeInteractionContextIds,\n this.activeModalContext,\n () => {\n return self.modelInteractionContextFactory.createInteractionContext('exclusive', new InteractionService.ApiAdapter(this.placeRouter, this.exclusiveInteractionRegistry));\n });\n }\n\n}\n\nexport namespace InteractionService {\n\n export interface Api {\n\n /**\n * Notifies the interaction service that a particular interactionContext has become active. The interaction\n * services will then push changes to the router to track state. If the router is idle, the promise will\n * resolve when the routing has finished updating. Otherwise it will return immediately.\n * @param interactionContext\n */\n notifyActive(interactionContext: InteractionContext): Promise<unknown>;\n\n /**\n * Notifies the interaction service that a particular interactionContext has become idle. The interaction\n * services will then push changes to the router to track state. If the router is idle, the promise will\n * resolve when the routing has finished updating. Otherwise it will return immediately.\n * @param interactionContext\n */\n notifyFinished(interactionContext: InteractionContext): Promise<unknown>;\n }\n\n /**\n * Provides a mechanism for the service to keep track of what the API adapters are doing to\n * ensure the rules are followed, i.e. modal or in-place interaction aren't started while\n * an exclusive routing interaction is active.\n */\n export class ContextRegistry extends GarbageCollector {\n\n private _interactions = new MutableListModel<InteractionContext>();\n private _disabledDelegate = new DelegatingValueModel<boolean>().withDefault(false);\n readonly active: BooleanValueModelChain;\n readonly interactionContextIds: ListModelChain<string>;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.active = chain(this._interactions).isNotEmpty();\n this.interactionContextIds = chain(this._interactions).pluck(\"identifier\");\n }\n\n get interactionContexts():ListModel<InteractionContext> {\n return this._interactions.readonly;\n }\n\n start(context: InteractionContext) {\n this._interactions.push(context);\n }\n\n finish(context: InteractionContext) {\n this._interactions.remove(context);\n }\n\n isActive() {\n return this.active.value;\n }\n\n disableWhen(disabled: ValueModel<boolean>) {\n this._disabledDelegate.setDelegate(disabled);\n }\n }\n\n export class ApiAdapter implements Api {\n\n constructor(private readonly placeRouter: PlaceRouter, private readonly contextRegistry: ContextRegistry) {\n }\n\n // @Trace()\n notifyActive(context: InteractionContext): Promise<any> {\n assert.isTruthy(context.identifier);\n this.contextRegistry.start(context);\n return this.isNavigationInProgress() ? Promise.resolve() : this.placeRouter.syncInteractionContextIdsWithRouter();\n }\n\n // @Trace()\n private isNavigationInProgress() {\n return this.placeRouter.navigationInProgress.value;\n }\n\n // @Trace()\n notifyFinished(context: InteractionContext): Promise<any> {\n this.contextRegistry.finish(context);\n // :: Important ::\n // This method will be traversed by both the place router (during can canDeactivate guards) and user land code\n // (both when routing is idle and while it is active in PlaceComponent.canDeactivate()).\n // The result of pushInteractionIdsToRoute will not start until after the current route finishes, and the\n // current route won't finish until after this promise returns... Deadlock.\n // So in order to keep this logic out of the activities we perform the check here and ensure that\n // any interactions with the context while routing is active returns immediately.\n return this.isNavigationInProgress() ? Promise.resolve() : this.placeRouter.syncInteractionContextIdsWithRouter();\n }\n }\n\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"InteractionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":20,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./modal-interaction-context.factory","name":"ModalInteractionContextFactory","line":37,"character":55}]}],"isActive":[{"__symbolic":"method"}],"isModalActive":[{"__symbolic":"method"}],"createModalInteractionContextFor":[{"__symbolic":"method"}],"createModalInteractionContextDisposedWith":[{"__symbolic":"method"}],"_registerInplaceInteractionContext":[{"__symbolic":"method"}],"getActiveContext":[{"__symbolic":"method"}],"_createExclusiveModalInteractionContext":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"InteractionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./modal-interaction-context.factory","name":"ModalInteractionContextFactory","line":45,"character":55}]}],"isActive":[{"__symbolic":"method"}],"createModalInteractionContextFor":[{"__symbolic":"method"}],"createModalInteractionContextDisposedWith":[{"__symbolic":"method"}],"registerInplaceInteractionContext":[{"__symbolic":"method"}],"registerPlaceRouter":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}}}]
@@ -26,12 +26,14 @@ export class DialogInteractionContextFactory extends ModalInteractionContextFact
26
26
  assert.notNil(dialogService);
27
27
  }
28
28
  /**
29
+ * @param {?} identifier
30
+ * @param {?} api
29
31
  * @return {?}
30
32
  */
31
- createInteractionContext() {
33
+ createInteractionContext(identifier, api) {
32
34
  /** @type {?} */
33
35
  const config = Object.assign({ autoFocus: false, hasBackdrop: true, closeOnNavigation: false }, this.matDialogDefaultConfig, this.dialogServiceDefaults);
34
- return new DialogInteractionContext(this.dialogService, config);
36
+ return new DialogInteractionContext(identifier, api, this.dialogService, config);
35
37
  }
36
38
  }
37
39
  DialogInteractionContextFactory.decorators = [
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-interaction-context-factory.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;;;;AAExE,MAAM,OAAO,mCAAmC,GAAG,IAAI,cAAc,CAAuB,qCAAqC,CAAC;AAKlI,MAAM,OAAO,+BAAgC,SAAQ,8BAA8B;;;;;;IAIjF,YAA6B,aAAwB,EACyB,qBAA2C,EACpD,sBAA4C;QAE/G,KAAK,EAAE,CAAC;QAJmB,kBAAa,GAAb,aAAa,CAAW;QACyB,0BAAqB,GAArB,qBAAqB,CAAsB;QACpD,2BAAsB,GAAtB,sBAAsB,CAAsB;QAG/G,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;;;;IAED,wBAAwB;;cAChB,MAAM,mBACV,SAAS,EAAE,KAAK,EAChB,WAAW,EAAE,IAAI,EACjB,iBAAiB,EAAE,KAAK,IACrB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,qBAAqB,CAC9B;QAED,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC;;;YAzBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;YAZQ,SAAS;YACmB,eAAe,uBAiBrC,QAAQ,YAAI,MAAM,SAAC,mCAAmC;YAjBhC,eAAe,uBAkBrC,QAAQ,YAAI,MAAM,SAAC,0BAA0B;;;;;IAJ1D,iDAAwC;;;;;IAE5B,wDAAyC;;IACzC,gEAA6G;;IAC7G,iEAAqG","sourcesContent":["import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { MatDialog } from '@angular/material';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { BooleanValueModelChain } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { InteractionContext } from '../../interaction-context';\nimport { ModalInteractionContextFactory } from '../modal-interaction-context.factory';\nimport { DialogInteractionContext } from './dialog-interaction-context';\n\nexport const DIALOG_INTERACTION_SERVICE_DEFAULTS = new InjectionToken<MatDialogConfig<any>>('DIALOG_INTERACTION_SERVICE_DEFAULTS');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionContextFactory extends ModalInteractionContextFactory {\n\n readonly active: BooleanValueModelChain;\n\n constructor(private readonly dialogService: MatDialog,\n @Optional() @Inject(DIALOG_INTERACTION_SERVICE_DEFAULTS) readonly dialogServiceDefaults: MatDialogConfig<any>,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) readonly matDialogDefaultConfig: MatDialogConfig<any>\n ) {\n super();\n assert.notNil(dialogService);\n }\n\n createInteractionContext(): InteractionContext {\n const config: MatDialogConfig = {\n autoFocus: false,\n hasBackdrop: true,\n closeOnNavigation: false,\n ...this.matDialogDefaultConfig,\n ...this.dialogServiceDefaults\n };\n\n return new DialogInteractionContext(this.dialogService, config);\n }\n}\n"]}
1
+ {"version":3,"file":"dialog-interaction-context-factory.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEvF,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAItD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;;;;AAExE,MAAM,OAAO,mCAAmC,GAAG,IAAI,cAAc,CAAuB,qCAAqC,CAAC;AAKlI,MAAM,OAAO,+BAAgC,SAAQ,8BAA8B;;;;;;IAIjF,YAA6B,aAAwB,EACyB,qBAA2C,EACpD,sBAA4C;QAE/G,KAAK,EAAE,CAAC;QAJmB,kBAAa,GAAb,aAAa,CAAW;QACyB,0BAAqB,GAArB,qBAAqB,CAAsB;QACpD,2BAAsB,GAAtB,sBAAsB,CAAsB;QAG/G,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;;;;;;IAED,wBAAwB,CAAC,UAAkB,EAAE,GAA2B;;cAChE,MAAM,mBACV,SAAS,EAAE,KAAK,EAChB,WAAW,EAAE,IAAI,EACjB,iBAAiB,EAAE,KAAK,IACrB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,qBAAqB,CAC9B;QAED,OAAO,IAAI,wBAAwB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;;;YAzBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;YAdQ,SAAS;YACmB,eAAe,uBAmBrC,QAAQ,YAAI,MAAM,SAAC,mCAAmC;YAnBhC,eAAe,uBAoBrC,QAAQ,YAAI,MAAM,SAAC,0BAA0B;;;;;IAJ1D,iDAAwC;;;;;IAE5B,wDAAyC;;IACzC,gEAA6G;;IAC7G,iEAAqG","sourcesContent":["import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { MatDialog } from '@angular/material';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { BooleanValueModelChain } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\n\nimport { InteractionContext } from '../../interaction-context';\nimport { InteractionService } from '../interaction.service';\nimport { ModalInteractionContextFactory } from '../modal-interaction-context.factory';\nimport { DialogInteractionContext } from './dialog-interaction-context';\n\nexport const DIALOG_INTERACTION_SERVICE_DEFAULTS = new InjectionToken<MatDialogConfig<any>>('DIALOG_INTERACTION_SERVICE_DEFAULTS');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionContextFactory extends ModalInteractionContextFactory {\n\n readonly active: BooleanValueModelChain;\n\n constructor(private readonly dialogService: MatDialog,\n @Optional() @Inject(DIALOG_INTERACTION_SERVICE_DEFAULTS) readonly dialogServiceDefaults: MatDialogConfig<any>,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) readonly matDialogDefaultConfig: MatDialogConfig<any>\n ) {\n super();\n assert.notNil(dialogService);\n }\n\n createInteractionContext(identifier: string, api: InteractionService.Api): InteractionContext {\n const config: MatDialogConfig = {\n autoFocus: false,\n hasBackdrop: true,\n closeOnNavigation: false,\n ...this.matDialogDefaultConfig,\n ...this.dialogServiceDefaults\n };\n\n return new DialogInteractionContext(identifier, api, this.dialogService, config);\n }\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"DIALOG_INTERACTION_SERVICE_DEFAULTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":55},"arguments":["DIALOG_INTERACTION_SERVICE_DEFAULTS"]},"DialogInteractionContextFactory":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../modal-interaction-context.factory","name":"ModalInteractionContextFactory","line":14,"character":53},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":19,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":19,"character":27},"arguments":[{"__symbolic":"reference","name":"DIALOG_INTERACTION_SERVICE_DEFAULTS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":20,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DEFAULT_OPTIONS","line":20,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/material","name":"MatDialog","line":18,"character":46},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogConfig","line":19,"character":103,"arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogConfig","line":19,"character":103,"arguments":[{"__symbolic":"reference","name":"any"}]}]}],"createInteractionContext":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"DIALOG_INTERACTION_SERVICE_DEFAULTS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":11,"character":55},"arguments":["DIALOG_INTERACTION_SERVICE_DEFAULTS"]},"DialogInteractionContextFactory":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../modal-interaction-context.factory","name":"ModalInteractionContextFactory","line":16,"character":53},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":21,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":21,"character":27},"arguments":[{"__symbolic":"reference","name":"DIALOG_INTERACTION_SERVICE_DEFAULTS"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":22,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":22,"character":27},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DEFAULT_OPTIONS","line":22,"character":34}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/material","name":"MatDialog","line":20,"character":46},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogConfig","line":21,"character":103,"arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogConfig","line":21,"character":103,"arguments":[{"__symbolic":"reference","name":"any"}]}]}],"createInteractionContext":[{"__symbolic":"method"}]},"statics":{"ngInjectableDef":{}}}}}]
@@ -2,56 +2,67 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { lang, MutableValueModel } from '@coolon/pectin';
5
+ import { GarbageCollector, lang } from '@coolon/pectin';
6
6
  import { assert } from '@coolon/typescript-utilities';
7
+ import { AbstractInteractionContext } from '../../abstract-interaction-context';
7
8
  import { ActivityContainerComponent } from '../../components/activity-container/activity-container.component';
8
- import { InteractionContextBase } from '../../interaction-context-base';
9
- export class DialogInteractionContext extends InteractionContextBase {
9
+ export class DialogInteractionContext extends AbstractInteractionContext {
10
10
  /**
11
+ * @param {?} identifier
12
+ * @param {?} api
11
13
  * @param {?} dialogService
12
14
  * @param {?} config
13
15
  */
14
- constructor(dialogService, config) {
16
+ constructor(identifier, api, dialogService, config) {
15
17
  super();
18
+ this.identifier = identifier;
19
+ this.api = api;
16
20
  this.dialogService = dialogService;
17
21
  this.config = config;
18
- this._activeModel = new MutableValueModel(false);
22
+ this.garbage = new GarbageCollector();
19
23
  assert.notNil(dialogService);
20
- this.onDispose((/**
21
- * @return {?}
22
- */
23
- () => {
24
- if (this.isActive()) {
25
- lang.illegalState('Dispose called while active.');
26
- }
27
- }));
28
24
  }
29
25
  /**
30
26
  * @return {?}
31
27
  */
32
- get active() {
33
- return this._activeModel.readonly;
28
+ cancelActiveActivity() {
29
+ return this.activityContainer.cancelActiveActivity();
30
+ }
31
+ /**
32
+ * @return {?}
33
+ */
34
+ dispose() {
35
+ if (this.isActive()) {
36
+ lang.illegalState('Dispose called while active.');
37
+ }
38
+ this.garbage.dispose();
39
+ }
40
+ /**
41
+ * @template T
42
+ * @param {?} disposable
43
+ * @return {?}
44
+ */
45
+ registerDisposable(disposable) {
46
+ return this.garbage.registerDisposable(disposable);
47
+ }
48
+ /**
49
+ * @return {?}
50
+ */
51
+ isActive() {
52
+ return !!this.activityContainer && this.activityContainer.isActive();
34
53
  }
35
54
  /**
36
55
  * @protected
37
56
  * @template D, R, E
38
57
  * @param {?} activityType
39
58
  * @param {?} data
40
- * @param {?=} disableClose
59
+ * @param {?} disableClose
41
60
  * @return {?}
42
61
  */
43
- _startActivity(activityType, data, disableClose = true) {
44
- if (this.isActive()) {
45
- lang.illegalState(`Activity already in progress: ${this.activityList.value.map((/**
46
- * @param {?} a
47
- * @return {?}
48
- */
49
- a => a.constructor.name)).join(', ')}`);
50
- }
51
- this._activeModel.value = true;
62
+ createAndLaunchActivity(activityType, data, disableClose) {
63
+ assert.isNil(this._currentActivityRef);
52
64
  /** @type {?} */
53
65
  const config = Object.assign({}, this.config, {
54
- data,
55
66
  disableClose,
56
67
  panelClass: 'dialog-interaction-context'
57
68
  });
@@ -59,73 +70,37 @@ export class DialogInteractionContext extends InteractionContextBase {
59
70
  const self = this;
60
71
  /** @type {?} */
61
72
  const matDialogRef = (/** @type {?} */ (this.dialogService.open(ActivityContainerComponent, config)));
62
- return new Promise((/**
63
- * @param {?} resolve
64
- * @param {?} reject
73
+ /** @type {?} */
74
+ const activityContainer = this.activityContainer = matDialogRef.componentInstance;
75
+ this.activityContainer.initialise(this.identifier, this.api);
76
+ /** @type {?} */
77
+ const activityResult = this.activityContainer.startActivity(activityType, data);
78
+ activityResult.finally((/**
65
79
  * @return {?}
66
80
  */
67
- (resolve, reject) => {
68
- /** @type {?} */
69
- const activityContainer = matDialogRef.componentInstance;
70
- self.safelyUpdateActivityListDelegate(activityContainer.activityList);
71
- activityContainer.initialActivityOutletContext = {
72
- activityClass: activityType,
73
- activityData: data,
74
- /**
75
- * @param {?} result
76
- * @return {?}
77
- */
78
- onDone(result) {
79
- resolve(result);
80
- matDialogRef.close(true); // return true to let the after close listener know we've already handled it.
81
- },
82
- /**
83
- * @param {?} error
84
- * @return {?}
85
- */
86
- onCancel(error) {
87
- reject(error);
88
- matDialogRef.close(true); // return true to let the after close listener know we've already handled it.
89
- }
90
- };
91
- // we need to check if our onDone/onCancel methods above we called or if we were
92
- // closed by the user clicking the backdrop. If the later then we need to reject
93
- // our promise.
94
- matDialogRef.afterClosed().subscribe((/**
95
- * @param {?} promiseAlreadyFinished
96
- * @return {?}
97
- */
98
- promiseAlreadyFinished => {
99
- if (!promiseAlreadyFinished) {
100
- reject('auto-closed');
101
- }
102
- }));
103
- matDialogRef.updateSize();
104
- matDialogRef.afterOpened().subscribe((/**
105
- * @param {?} promiseAlreadyFinished
106
- * @return {?}
107
- */
108
- promiseAlreadyFinished => {
109
- matDialogRef.updateSize();
110
- }));
111
- })).finally((/**
81
+ () => matDialogRef.close()));
82
+ // we need to check if our onDone/onCancel methods above we called or if we were
83
+ // closed by the user clicking the backdrop. If the later then we need to cancel our
84
+ // activity.
85
+ matDialogRef.afterClosed().subscribe((/**
86
+ * @param {?} promiseAlreadyFinished
112
87
  * @return {?}
113
88
  */
114
- () => {
115
- self.safelyUpdateActivityListDelegate(null);
116
- this._activeModel.value = false;
89
+ promiseAlreadyFinished => {
90
+ if (activityContainer.isActive()) {
91
+ activityContainer.cancelActiveActivity();
92
+ }
93
+ this.activityContainer = null;
117
94
  }));
118
- }
119
- /**
120
- * Updates teh delegate on the next tick to avoid modifying state during the current change detection cycle.
121
- * @param {?} delegate
122
- * @return {?}
123
- */
124
- safelyUpdateActivityListDelegate(delegate) {
125
- setTimeout((/**
95
+ matDialogRef.updateSize();
96
+ matDialogRef.afterOpened().subscribe((/**
97
+ * @param {?} promiseAlreadyFinished
126
98
  * @return {?}
127
99
  */
128
- () => this.setActivityList(delegate)));
100
+ promiseAlreadyFinished => {
101
+ matDialogRef.updateSize();
102
+ }));
103
+ return activityResult;
129
104
  }
130
105
  }
131
106
  if (false) {
@@ -133,7 +108,24 @@ if (false) {
133
108
  * @type {?}
134
109
  * @private
135
110
  */
136
- DialogInteractionContext.prototype._activeModel;
111
+ DialogInteractionContext.prototype.garbage;
112
+ /**
113
+ * @type {?}
114
+ * @private
115
+ */
116
+ DialogInteractionContext.prototype._currentActivityRef;
117
+ /**
118
+ * @type {?}
119
+ * @private
120
+ */
121
+ DialogInteractionContext.prototype.activityContainer;
122
+ /** @type {?} */
123
+ DialogInteractionContext.prototype.identifier;
124
+ /**
125
+ * @type {?}
126
+ * @private
127
+ */
128
+ DialogInteractionContext.prototype.api;
137
129
  /**
138
130
  * @type {?}
139
131
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-interaction-context.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.ts"],"names":[],"mappings":"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","sourcesContent":["import { MatDialog, MatDialogRef } from '@angular/material';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { Constructable, lang, ListModel, MutableValueModel, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { Activity } from '../../activity';\nimport { ActivityContainerComponent } from '../../components/activity-container/activity-container.component';\nimport { InteractionContextBase } from '../../interaction-context-base';\n\nexport class DialogInteractionContext extends InteractionContextBase {\n\n private readonly _activeModel = new MutableValueModel<boolean>(false);\n\n constructor(private readonly dialogService: MatDialog, readonly config: MatDialogConfig<any>) {\n super();\n assert.notNil(dialogService);\n this.onDispose(() => {\n if (this.isActive()) {\n lang.illegalState('Dispose called while active.');\n }\n });\n }\n\n get active(): ValueModel<boolean> {\n return this._activeModel.readonly;\n }\n\n protected _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean = true) {\n if (this.isActive()) {\n lang.illegalState(`Activity already in progress: ${this.activityList.value.map(a => a.constructor.name).join(', ')}`);\n }\n this._activeModel.value = true;\n const config: MatDialogConfig = {\n ...this.config,\n ...{\n data,\n disableClose,\n panelClass: 'dialog-interaction-context'\n }\n };\n\n const self = this;\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent<D, R, E>>;\n return new Promise<R>((resolve, reject) => {\n const activityContainer = matDialogRef.componentInstance;\n self.safelyUpdateActivityListDelegate(activityContainer.activityList);\n\n activityContainer.initialActivityOutletContext = {\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n resolve(result);\n matDialogRef.close(true); // return true to let the after close listener know we've already handled it.\n },\n onCancel(error) {\n reject(error);\n matDialogRef.close(true); // return true to let the after close listener know we've already handled it.\n }\n };\n // we need to check if our onDone/onCancel methods above we called or if we were\n // closed by the user clicking the backdrop. If the later then we need to reject\n // our promise.\n matDialogRef.afterClosed().subscribe(promiseAlreadyFinished => {\n if (!promiseAlreadyFinished) {\n reject('auto-closed');\n }\n });\n matDialogRef.updateSize();\n matDialogRef.afterOpened().subscribe(promiseAlreadyFinished => {\n matDialogRef.updateSize();\n });\n }).finally(() => {\n self.safelyUpdateActivityListDelegate(null);\n this._activeModel.value = false;\n });\n }\n\n /**\n * Updates teh delegate on the next tick to avoid modifying state during the current change detection cycle.\n * @param delegate\n */\n safelyUpdateActivityListDelegate(delegate: ListModel<Activity<any, any>>) {\n setTimeout(() => this.setActivityList(delegate));\n }\n\n}\n"]}
1
+ {"version":3,"file":"dialog-interaction-context.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.ts"],"names":[],"mappings":"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","sourcesContent":["import { MatDialog } from '@angular/material';\nimport { MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\nimport { Constructable, DelegatingValueModel, Disposable, GarbageCollector, lang, Trace } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { AbstractInteractionContext } from '../../abstract-interaction-context';\nimport { Activity } from '../../activity';\nimport { ActivityRef } from '../../activity-ref';\nimport { ActivityContainerComponent } from '../../components/activity-container/activity-container.component';\nimport { InteractionService } from '../interaction.service';\n\nexport class DialogInteractionContext extends AbstractInteractionContext {\n\n private garbage = new GarbageCollector();\n private _currentActivityRef: ActivityRef<any, any, any>;\n private activityContainer: ActivityContainerComponent<any, any, any>;\n\n constructor(readonly identifier: string,\n private readonly api: InteractionService.Api,\n private readonly dialogService: MatDialog,\n readonly config: MatDialogConfig<any>) {\n super();\n assert.notNil(dialogService);\n }\n\n cancelActiveActivity(): Promise<boolean> {\n return this.activityContainer.cancelActiveActivity();\n }\n\n dispose(): void {\n if (this.isActive()) {\n lang.illegalState('Dispose called while active.');\n }\n this.garbage.dispose();\n }\n\n registerDisposable<T extends Disposable>(disposable: T): T {\n return this.garbage.registerDisposable(disposable);\n }\n\n isActive(): boolean {\n return !!this.activityContainer && this.activityContainer.isActive();\n }\n\n protected createAndLaunchActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean): Promise<R> {\n assert.isNil(this._currentActivityRef);\n\n const config: MatDialogConfig = {\n ...this.config,\n ...{\n disableClose,\n panelClass: 'dialog-interaction-context'\n }\n };\n const self = this;\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent<D, R, E>>;\n const activityContainer = this.activityContainer = matDialogRef.componentInstance;\n this.activityContainer.initialise(this.identifier, this.api);\n const activityResult = this.activityContainer.startActivity(activityType, data);\n\n activityResult.finally(() => matDialogRef.close());\n // we need to check if our onDone/onCancel methods above we called or if we were\n // closed by the user clicking the backdrop. If the later then we need to cancel our\n // activity.\n matDialogRef.afterClosed().subscribe(promiseAlreadyFinished => {\n if (activityContainer.isActive()) {\n activityContainer.cancelActiveActivity();\n }\n this.activityContainer = null;\n });\n matDialogRef.updateSize();\n matDialogRef.afterOpened().subscribe(promiseAlreadyFinished => {\n matDialogRef.updateSize();\n });\n\n return activityResult;\n }\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"DialogInteractionContext":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../interaction-context-base","name":"InteractionContextBase","line":8,"character":46},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material","name":"MatDialog","line":12,"character":46},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogConfig","line":12,"character":74,"arguments":[{"__symbolic":"reference","name":"any"}]}]}],"_startActivity":[{"__symbolic":"method"}],"safelyUpdateActivityListDelegate":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"DialogInteractionContext":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../abstract-interaction-context","name":"AbstractInteractionContext","line":10,"character":46},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"select","expression":{"__symbolic":"reference","module":"../interaction.service","name":"InteractionService","line":17,"character":36},"member":"Api"},{"__symbolic":"reference","module":"@angular/material","name":"MatDialog","line":18,"character":46},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogConfig","line":19,"character":31,"arguments":[{"__symbolic":"reference","name":"any"}]}]}],"cancelActiveActivity":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method"}],"registerDisposable":[{"__symbolic":"method"}],"isActive":[{"__symbolic":"method"}],"createAndLaunchActivity":[{"__symbolic":"method"}]}}}}]
@@ -10,8 +10,10 @@ export class ModalInteractionContextFactory {
10
10
  if (false) {
11
11
  /**
12
12
  * @abstract
13
+ * @param {?} identifier
14
+ * @param {?} api
13
15
  * @return {?}
14
16
  */
15
- ModalInteractionContextFactory.prototype.createInteractionContext = function () { };
17
+ ModalInteractionContextFactory.prototype.createInteractionContext = function (identifier, api) { };
16
18
  }
17
19
  //# sourceMappingURL=modal-interaction-context.factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-interaction-context.factory.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/modal-interaction-context.factory.ts"],"names":[],"mappings":";;;;;;;AAEA,MAAM,OAAgB,8BAA8B;CAGnD;;;;;;IADC,oFAAwD","sourcesContent":["import { InteractionContext } from '../interaction-context';\n\nexport abstract class ModalInteractionContextFactory {\n\n abstract createInteractionContext(): InteractionContext;\n}\n"]}
1
+ {"version":3,"file":"modal-interaction-context.factory.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/services/modal-interaction-context.factory.ts"],"names":[],"mappings":";;;;;;;AAGA,MAAM,OAAgB,8BAA8B;CAGnD;;;;;;;;IADC,mGAAuG","sourcesContent":["import { InteractionContext } from '../interaction-context';\nimport { InteractionService } from './interaction.service';\n\nexport abstract class ModalInteractionContextFactory {\n\n abstract createInteractionContext(identifier: string, api: InteractionService.Api): InteractionContext;\n}\n"]}
@@ -4,16 +4,21 @@
4
4
  */
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Component, Input } from '@angular/core';
7
- import { Command, Dsl, ListModel, StoreInListModel, StoreInValueModel, UseDelegate, ValueModel } from '@coolon/pectin';
7
+ import { Command, DelegatingValueModel, Dsl, ListModel, StoreInListModel, StoreInValueModel, UseDelegate, ValueModel } from '@coolon/pectin';
8
8
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
9
9
  import { DisposableComponent } from '../../components/disposable-component';
10
10
  import { PlaceComponent } from '../place-component';
11
11
  import { PlaceDefinition } from '../place-definition';
12
+ import { PlaceRouter } from '../place-router';
12
13
  import { Visit } from '../visit';
13
14
  import { PlaceOutletComponent } from './place-outlet/place-outlet.component';
14
15
  export class AbstractPlaceNavigationComponent extends DisposableComponent {
15
- constructor() {
16
+ /**
17
+ * @param {?} placeRouter
18
+ */
19
+ constructor(placeRouter) {
16
20
  super();
21
+ this._activePlaceComponent = new DelegatingValueModel();
17
22
  const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
18
23
  this.placeDefinitions = chain(this.placesModel).map((/**
19
24
  * @param {?} c
@@ -27,11 +32,20 @@ export class AbstractPlaceNavigationComponent extends DisposableComponent {
27
32
  (placeDefinition) => {
28
33
  this.placeOutlet.navigate(new Visit(placeDefinition));
29
34
  }));
30
- this.activePlaceDefinition = chain(this.placeOutletModel).pullValueModel((/**
31
- * @param {?} o
35
+ when.valueOf(this.placeOutletModel).changes((/**
36
+ * @param {?} outlet
32
37
  * @return {?}
33
38
  */
34
- o => o.activePlaceModel)).pluck("placeDefinition");
39
+ outlet => {
40
+ // NOTE: this updates during a change cycle and causes our isActiveMethod to return 2 different
41
+ // values in the one change detection cycle. So instead we delay the update to a different
42
+ // tick.
43
+ setTimeout((/**
44
+ * @return {?}
45
+ */
46
+ () => this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null)));
47
+ }));
48
+ this.activePlaceDefinition = chain(this._activePlaceComponent).pluck('placeDefinition');
35
49
  }
36
50
  /**
37
51
  * @param {?} placeDef
@@ -74,7 +88,9 @@ AbstractPlaceNavigationComponent.decorators = [
74
88
  }] }
75
89
  ];
76
90
  /** @nocollapse */
77
- AbstractPlaceNavigationComponent.ctorParameters = () => [];
91
+ AbstractPlaceNavigationComponent.ctorParameters = () => [
92
+ { type: PlaceRouter }
93
+ ];
78
94
  AbstractPlaceNavigationComponent.propDecorators = {
79
95
  places: [{ type: Input }],
80
96
  placesModel: [{ type: Input }],
@@ -117,6 +133,11 @@ if (false) {
117
133
  /** @type {?} */
118
134
  AbstractPlaceNavigationComponent.prototype.commandFactory;
119
135
  /** @type {?} */
136
+ AbstractPlaceNavigationComponent.prototype._activePlaceComponent;
137
+ /**
138
+ * @type {?}
139
+ * @private
140
+ */
120
141
  AbstractPlaceNavigationComponent.prototype.activePlaceDefinition;
121
142
  }
122
143
  //# sourceMappingURL=abstract-place-navigation.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-place-navigation.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/abstract-place-navigation.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Command,\n Constructable,\n Dsl,\n ListModel,\n ListModelChain,\n StoreInListModel, StoreInValueModel,\n UseDelegate,\n ValueModel, ValueModelChain\n} from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { DisposableComponent } from '../../components/disposable-component';\nimport { NavItem } from '../nav-item';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { Visit } from '../visit';\nimport { PlaceOutletComponent } from './place-outlet/place-outlet.component';\n\n@Component({\n template: ''\n})\nexport class AbstractPlaceNavigationComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInListModel('placesModel')\n places: Constructable<PlaceComponent>[];\n\n @Input() @UseDelegate()\n placesModel: ListModel<Constructable<PlaceComponent>>;\n\n\n @Input() @StoreInValueModel('placeOutletModel')\n placeOutlet: PlaceOutletComponent;\n\n @Input() @UseDelegate()\n placeOutletModel: ValueModel<PlaceOutletComponent>;\n\n readonly placeDefinitions: ListModelChain<PlaceDefinition>;\n\n readonly commandFactory: Command.Factory<PlaceDefinition, void>;\n readonly activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.placeDefinitions = chain(this.placesModel).map(c => PlaceComponent.getDefinition(c));\n this.commandFactory = Command.createFactory((placeDefinition:PlaceDefinition) => {\n this.placeOutlet.navigate(new Visit(placeDefinition))\n });\n this.activePlaceDefinition = chain(this.placeOutletModel).pullValueModel(o => o.activePlaceModel).pluck(\"placeDefinition\")\n }\n\n @Memoize()\n getNav(placeDef: PlaceDefinition): NavItem {\n const navItem = placeDef.getPlaceData('nav') as NavItem;\n return {\n title: () => navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']),\n tooltip: () => navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null),\n icon: () => navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null)\n };\n }\n\n isActive(place:PlaceDefinition) {\n return this.activePlaceDefinition.query().equals(place);\n }\n\n ngOnInit() {\n }\n\n}\n"]}
1
+ {"version":3,"file":"abstract-place-navigation.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/abstract-place-navigation.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport {\n Command,\n Constructable,\n DelegatingValueModel,\n Dsl,\n ListModel,\n ListModelChain,\n StoreInListModel,\n StoreInValueModel,\n TransactionObserver,\n UseDelegate,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { DisposableComponent } from '../../components/disposable-component';\nimport { NavItem } from '../nav-item';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceRouter } from '../place-router';\nimport { Visit } from '../visit';\nimport { PlaceOutletComponent } from './place-outlet/place-outlet.component';\n\n@Component({\n template: ''\n})\nexport class AbstractPlaceNavigationComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInListModel('placesModel')\n places: Constructable<PlaceComponent>[];\n\n @Input() @UseDelegate()\n placesModel: ListModel<Constructable<PlaceComponent>>;\n\n\n @Input() @StoreInValueModel('placeOutletModel')\n placeOutlet: PlaceOutletComponent;\n\n @Input() @UseDelegate()\n placeOutletModel: ValueModel<PlaceOutletComponent>;\n\n readonly placeDefinitions: ListModelChain<PlaceDefinition>;\n\n readonly commandFactory: Command.Factory<PlaceDefinition, void>;\n readonly _activePlaceComponent = new DelegatingValueModel<PlaceComponent>();\n private activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n constructor(placeRouter: PlaceRouter) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.placeDefinitions = chain(this.placesModel).map(c => PlaceComponent.getDefinition(c));\n this.commandFactory = Command.createFactory((placeDefinition: PlaceDefinition) => {\n this.placeOutlet.navigate(new Visit(placeDefinition));\n });\n\n when.valueOf(this.placeOutletModel).changes(outlet => {\n // NOTE: this updates during a change cycle and causes our isActiveMethod to return 2 different\n // values in the one change detection cycle. So instead we delay the update to a different\n // tick.\n setTimeout(() => this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null));\n });\n this.activePlaceDefinition = chain(this._activePlaceComponent).pluck('placeDefinition');\n }\n\n\n @Memoize()\n getNav(placeDef: PlaceDefinition): NavItem {\n const navItem = placeDef.getPlaceData('nav') as NavItem;\n return {\n title: () => navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']),\n tooltip: () => navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null),\n icon: () => navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null)\n };\n }\n\n isActive(place: PlaceDefinition): boolean {\n return this.activePlaceDefinition.query().equals(place);\n }\n\n ngOnInit() {\n }\n\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"AbstractPlaceNavigationComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../components/disposable-component","name":"DisposableComponent","line":23,"character":54},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"template":""}]}],"members":{"places":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"StoreInListModel","line":25,"character":12},"arguments":["placesModel"]}]}],"placesModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"UseDelegate","line":28,"character":12}}]}],"placeOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"StoreInValueModel","line":32,"character":12},"arguments":["placeOutletModel"]}]}],"placeOutletModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"UseDelegate","line":35,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor"}],"getNav":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@typescript-plus/fast-memoize-decorator/dist/src","name":"Memoize","line":53,"character":3}}]}],"isActive":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"AbstractPlaceNavigationComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../components/disposable-component","name":"DisposableComponent","line":27,"character":54},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":24,"character":1},"arguments":[{"template":""}]}],"members":{"places":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"StoreInListModel","line":29,"character":12},"arguments":["placesModel"]}]}],"placesModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"UseDelegate","line":32,"character":12}}]}],"placeOutlet":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"StoreInValueModel","line":36,"character":12},"arguments":["placeOutletModel"]}]}],"placeOutletModel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"UseDelegate","line":39,"character":12}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"../place-router","name":"PlaceRouter","line":48,"character":27}]}],"getNav":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@typescript-plus/fast-memoize-decorator/dist/src","name":"Memoize","line":66,"character":3}}]}],"isActive":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}}}}]
@@ -3,10 +3,14 @@
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
5
  import { Component, HostBinding } from '@angular/core';
6
+ import { PlaceRouter } from '../../place-router';
6
7
  import { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';
7
8
  export class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {
8
- constructor() {
9
- super();
9
+ /**
10
+ * @param {?} placeRouter
11
+ */
12
+ constructor(placeRouter) {
13
+ super(placeRouter);
10
14
  this.expanded = true;
11
15
  }
12
16
  /**
@@ -36,7 +40,9 @@ ListPlaceNavComponent.decorators = [
36
40
  }] }
37
41
  ];
38
42
  /** @nocollapse */
39
- ListPlaceNavComponent.ctorParameters = () => [];
43
+ ListPlaceNavComponent.ctorParameters = () => [
44
+ { type: PlaceRouter }
45
+ ];
40
46
  ListPlaceNavComponent.propDecorators = {
41
47
  expanded: [{ type: HostBinding, args: ['class.expanded',] }]
42
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"list-place-nav.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/list-place-nav/list-place-nav.component.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAO1F,MAAM,OAAO,qBAAsB,SAAQ,gCAAgC;IAKzE;QACE,KAAK,EAAE,CAAC;QAHH,aAAQ,GAAG,IAAI,CAAC;IAIvB,CAAC;;;;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;;;;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;;;;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;;;YAxBF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,ufAA8C;;aAE/C;;;;;uBAGE,WAAW,SAAC,gBAAgB;;;;IAA7B,yCACuB","sourcesContent":["import { Component, HostBinding } from '@angular/core';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-list-place-nav',\n templateUrl: './list-place-nav.component.html',\n styleUrls: ['./list-place-nav.component.scss']\n})\nexport class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {\n\n @HostBinding('class.expanded')\n public expanded = true;\n\n constructor() {\n super();\n }\n\n expandMenu() {\n this.expanded = true;\n }\n\n collapseMenu() {\n this.expanded = false;\n }\n\n toggleMenu() {\n this.expanded = !this.expanded;\n }\n}\n"]}
1
+ {"version":3,"file":"list-place-nav.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/place/components/list-place-nav/list-place-nav.component.ts"],"names":[],"mappings":";;;;AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAO1F,MAAM,OAAO,qBAAsB,SAAQ,gCAAgC;;;;IAKzE,YAAY,WAAuB;QACjC,KAAK,CAAC,WAAW,CAAC,CAAC;QAHd,aAAQ,GAAG,IAAI,CAAC;IAIvB,CAAC;;;;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;;;;IAED,YAAY;QACV,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;;;;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;;;YAxBF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,ufAA8C;;aAE/C;;;;YAPQ,WAAW;;;uBAUjB,WAAW,SAAC,gBAAgB;;;;IAA7B,yCACuB","sourcesContent":["import { Component, HostBinding } from '@angular/core';\nimport { PlaceRouter } from '../../place-router';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-list-place-nav',\n templateUrl: './list-place-nav.component.html',\n styleUrls: ['./list-place-nav.component.scss']\n})\nexport class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {\n\n @HostBinding('class.expanded')\n public expanded = true;\n\n constructor(placeRouter:PlaceRouter) {\n super(placeRouter);\n }\n\n expandMenu() {\n this.expanded = true;\n }\n\n collapseMenu() {\n this.expanded = false;\n }\n\n toggleMenu() {\n this.expanded = !this.expanded;\n }\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"ListPlaceNavComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../abstract-place-navigation.component","name":"AbstractPlaceNavigationComponent","line":8,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"aup-list-place-nav","template":"<mat-nav-list class=\"app-menu\">\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n</mat-nav-list>\n","styles":[":host{display:flex;flex-direction:column;--expanded-width:235px;--nav-item-width:var(--nav-bar-height);width:var(--nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--expanded-width);max-width:var(--expanded-width)}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}.header{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;height:var(--nav-bar-height);border-bottom:var(--pinstripe-border);cursor:pointer}.header .menu{flex:1}.header button{color:inherit;width:var(--nav-item-width);height:var(--nav-bar-height)}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--nav-item-width);height:var(--nav-bar-height);color:rgba(0,0,0,.6)}.mat-list-item.active{background-color:rgba(0,0,0,.1);color:rgba(0,0,0,.9)}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item mat-icon{margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}a[ng-reflect-router-link=manage-instruments] mat-icon{transform:rotate(90deg)}.app-menu{padding-top:0}"]}]}],"members":{"expanded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":10,"character":3},"arguments":["class.expanded"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"expandMenu":[{"__symbolic":"method"}],"collapseMenu":[{"__symbolic":"method"}],"toggleMenu":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"ListPlaceNavComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../abstract-place-navigation.component","name":"AbstractPlaceNavigationComponent","line":9,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"aup-list-place-nav","template":"<mat-nav-list class=\"app-menu\">\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n</mat-nav-list>\n","styles":[":host{display:flex;flex-direction:column;--expanded-width:235px;--nav-item-width:var(--nav-bar-height);width:var(--nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--expanded-width);max-width:var(--expanded-width)}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}.header{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;height:var(--nav-bar-height);border-bottom:var(--pinstripe-border);cursor:pointer}.header .menu{flex:1}.header button{color:inherit;width:var(--nav-item-width);height:var(--nav-bar-height)}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--nav-item-width);height:var(--nav-bar-height);color:rgba(0,0,0,.6)}.mat-list-item.active{background-color:rgba(0,0,0,.1);color:rgba(0,0,0,.9)}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item mat-icon{margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}a[ng-reflect-router-link=manage-instruments] mat-icon{transform:rotate(90deg)}.app-menu{padding-top:0}"]}]}],"members":{"expanded":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":11,"character":3},"arguments":["class.expanded"]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"../../place-router","name":"PlaceRouter","line":14,"character":26}]}],"expandMenu":[{"__symbolic":"method"}],"collapseMenu":[{"__symbolic":"method"}],"toggleMenu":[{"__symbolic":"method"}]}}}}]