@coolon/angular-ui-powerups 0.0.125 → 0.0.128

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 +3743 -3012
  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 +47 -22
  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 +314 -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 +66 -25
  242. package/esm5/lib/place/place-component.js.map +1 -1
  243. package/esm5/lib/place/place-router.js +414 -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 +2641 -2268
  259. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  260. package/fesm5/coolon-angular-ui-powerups.js +3703 -2984
  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
@@ -2,269 +2,239 @@
2
2
  * @fileoverview added by tsickle
3
3
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
4
  */
5
- import { Component, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';
5
+ import * as tslib_1 from "tslib";
6
+ import { Component, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';
6
7
  import { MatTabGroup } from '@angular/material';
7
- import { assert, Dsl, MutableListModel, MutableStream, MutableValueModel } from '@coolon/pectin';
8
- import { InteractionContextBase } from '../../interaction-context-base';
9
- import { ActivityOutletComponent } from '../activity-outlet/activity-outlet.component';
8
+ import { assert, Dsl, GarbageCollector, Trace } from '@coolon/pectin';
9
+ import { lang } from '@coolon/typescript-utilities';
10
+ import _ from 'lodash';
11
+ import { AbstractInteractionContext } from '../../abstract-interaction-context';
12
+ import { ActivityRef } from '../../activity-ref';
13
+ import { ActivityOutletComponent } from './activity-outlet/activity-outlet.component';
10
14
  /**
11
- * Note: this class is mutable and is stored in a list model. This is normally a big no no but
12
- * we're manually deriving other models from the list after view state changes. I.e. we not
13
- * using pectin chains on any of the mutable fields.
14
15
  * @template D, R, E
15
16
  */
16
- class TabContext {
17
+ export class ActivityContainerComponent extends AbstractInteractionContext {
18
+ constructor() {
19
+ super();
20
+ this.dynamicHeight = false;
21
+ this.activityTabs = [];
22
+ this.garbage = new GarbageCollector();
23
+ }
17
24
  /**
18
- * @param {?} activityData
19
- * @param {?} activityClass
20
- * @param {?} interactionContext
21
- * @param {?} activityCallbacks
25
+ * @return {?}
22
26
  */
23
- constructor(activityData, activityClass, interactionContext, activityCallbacks) {
24
- this.activityData = activityData;
25
- this.activityClass = activityClass;
26
- this.interactionContext = interactionContext;
27
- this.activityCallbacks = activityCallbacks;
28
- this._complete = false;
27
+ ngOnInit() {
29
28
  }
30
29
  /**
31
30
  * @return {?}
32
31
  */
33
- isComponentRealised() {
34
- return !!this._component;
32
+ ngAfterViewInit() {
33
+ const { chain, observe } = Dsl.disposeWith(this);
34
+ observe.valuesFrom(this.tabs.animationDone).subscribe((/**
35
+ * @return {?}
36
+ */
37
+ () => this.onAnimationFinished()));
35
38
  }
36
39
  /**
40
+ * @param {?} identifier
41
+ * @param {?} api
37
42
  * @return {?}
38
43
  */
39
- isComplete() {
40
- return this._complete;
44
+ initialise(identifier, api) {
45
+ assert.isFalsey(this.isInitialised());
46
+ assert.notNil(identifier);
47
+ assert.notNil(api);
48
+ this._identifier = identifier;
49
+ this.interactionServiceApi = api;
41
50
  }
42
51
  /**
43
- * @param {?} component
44
52
  * @return {?}
45
53
  */
46
- componentReady(component) {
47
- assert.isNil(this._component);
48
- this._component = component;
54
+ get identifier() {
55
+ return this._identifier;
49
56
  }
50
57
  /**
51
58
  * @return {?}
52
59
  */
53
- get component() {
54
- return this._component;
60
+ isInitialised() {
61
+ return !!this.identifier;
55
62
  }
56
- // @Trace()
57
63
  /**
58
- * @param {?} result
64
+ * Returns true if an activity is currently running.
59
65
  * @return {?}
60
66
  */
61
- onDone(result) {
62
- this._complete = true;
63
- this.activityCallbacks.onDone(result);
67
+ isActive() {
68
+ return this.getActiveActivityCount() > 0;
64
69
  }
65
- // @Trace()
66
70
  /**
67
- * @param {?} error
71
+ * @template T
72
+ * @param {?} disposable
68
73
  * @return {?}
69
74
  */
70
- onCancel(error) {
71
- this._complete = true;
72
- this.activityCallbacks.onCancel(error);
75
+ registerDisposable(disposable) {
76
+ return this.garbage.registerDisposable(disposable);
73
77
  }
74
78
  /**
75
79
  * @return {?}
76
80
  */
77
81
  dispose() {
78
- this.component.dispose();
82
+ // TODO: think about auto cancelling any outstanding activity on dispose.
83
+ // See NavigationState.Navigating for a use-case.
84
+ assert.isFalsey(this.isActive());
85
+ this.garbage.dispose();
79
86
  }
80
- }
81
- if (false) {
82
- /**
83
- * @type {?}
84
- * @private
85
- */
86
- TabContext.prototype._complete;
87
87
  /**
88
- * @type {?}
89
- * @private
88
+ * @return {?}
90
89
  */
91
- TabContext.prototype._component;
92
- /** @type {?} */
93
- TabContext.prototype.activityData;
94
- /** @type {?} */
95
- TabContext.prototype.activityClass;
96
- /** @type {?} */
97
- TabContext.prototype.interactionContext;
98
- /** @type {?} */
99
- TabContext.prototype.activityCallbacks;
100
- }
101
- /**
102
- * @template D, R, E
103
- */
104
- export class ActivityContainerComponent extends InteractionContextBase {
105
- constructor() {
106
- super();
107
- this.throttledNestedActivityFinishEvents = new MutableStream();
108
- this._initialActivityOutletContext = new MutableValueModel();
109
- // tslint:disable-next-line:no-output-rename
110
- this.initialActivityOutletContextEvent = new EventEmitter();
111
- this.dynamicHeight = false;
112
- this.activityTabs = new MutableListModel();
113
- this._activityList = new MutableListModel();
114
- const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
115
- chain(this.throttledNestedActivityFinishEvents).throttle(50).subscribe((/**
90
+ getActiveActivityRef() {
91
+ if (!this.isActive()) {
92
+ lang.illegalState('no activity in progress');
93
+ }
94
+ return _.findLast(this.activityTabs, (/**
95
+ * @param {?} tab
116
96
  * @return {?}
117
97
  */
118
- () => this.onNestedActivityFinished()));
119
- this.setActivityList(this._activityList.readonly);
120
- this.active = chain(this._initialActivityOutletContext).isNotNil();
98
+ tab => !tab.isComplete()));
121
99
  }
122
100
  /**
123
- * @param {?} initialContext
101
+ * Cancels the current activity and returns true the context is no longer active, false if
102
+ * there is still another activity running.
124
103
  * @return {?}
125
104
  */
126
- set initialActivityOutletContext(initialContext) {
127
- assert.isNil(this._initialActivityOutletContext.value);
128
- // we clean up at the start as we leave the initial activity in place after it finishes
129
- // so that the activity remains visible during the inplace-interaction-context animations.
130
- this.activityTabs.value = [];
131
- this._activityList.value = [];
105
+ // @Trace()
106
+ cancelActiveActivity() {
107
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
108
+ /** @type {?} */
109
+ const activity = this.getActiveActivityRef();
110
+ activity.cancel();
111
+ if (this.isCleaningUp()) {
112
+ return this.waitForInteractionContextCleanupToFinish();
113
+ }
114
+ else {
115
+ return !this.isActive();
116
+ }
117
+ });
118
+ }
119
+ // TODO: this handling of multiple nested activities is only used by the activity component and is not a general case.
120
+ // @Trace()
121
+ /**
122
+ * @protected
123
+ * @template D1, R1, E1
124
+ * @param {?} activityType
125
+ * @param {?} data
126
+ * @param {?} disableClose
127
+ * @return {?}
128
+ */
129
+ createAndLaunchActivity(activityType, data, disableClose) {
130
+ assert.isTruthy(this.isInitialised()); // make sure we've been initialised
131
+ // make sure we've been initialised
132
132
  /** @type {?} */
133
- const self = this;
134
- if (initialContext) {
135
- this._initialActivityOutletContext.value = initialContext;
136
- this.activityTabs.push(new TabContext(initialContext.activityData, initialContext.activityClass, this, {
137
- onDone: (/**
138
- * @param {?} result
139
- * @return {?}
140
- */
141
- (result) => {
142
- self.finishInitialActivity();
143
- initialContext.onDone(result);
144
- }),
145
- onCancel: (/**
146
- * @param {?} error
147
- * @return {?}
148
- */
149
- (error) => {
150
- self.finishInitialActivity();
151
- initialContext.onCancel(error);
152
- })
153
- }));
133
+ const activityRef = new ActivityRef(activityType, data, (/**
134
+ * @return {?}
135
+ */
136
+ () => {
137
+ /** @type {?} */
138
+ const activeActivityCount = this.getActiveActivityCount() > 0;
139
+ if (activeActivityCount) {
140
+ this.triggerTabSynchronisation();
141
+ }
142
+ else {
143
+ this.finishAndStartCleanup();
144
+ }
145
+ }));
146
+ this.launchActivity(activityRef);
147
+ // if this is the first activity let the interaction service know.
148
+ if (this.activityTabs.length === 1) {
149
+ // console.log('Now active!!!');
150
+ this.interactionServiceApi.notifyActive(this);
154
151
  }
152
+ return activityRef.activityResult;
155
153
  }
156
154
  /**
155
+ * @private
157
156
  * @return {?}
158
157
  */
159
- get initialActivityOutletContext() {
160
- return this._initialActivityOutletContext.value;
158
+ getActiveActivityCount() {
159
+ return this.activityTabs.filter((/**
160
+ * @param {?} ref
161
+ * @return {?}
162
+ */
163
+ ref => !ref.isComplete())).length;
161
164
  }
162
165
  /**
166
+ * Checks if this interaction context has finished an is in the process of waiting
167
+ * for all the infrastructure (including route updates) to be completed.
163
168
  * @return {?}
164
169
  */
165
- ngOnInit() {
170
+ isCleaningUp() {
171
+ return !!this._deferredCleanUp;
166
172
  }
167
173
  /**
168
174
  * @return {?}
169
175
  */
170
- ngAfterViewInit() {
171
- const { chain, observe } = Dsl.disposeWith(this);
172
- observe.valuesFrom(this.outlets.changes).subscribe((/**
173
- * @return {?}
174
- */
175
- () => setTimeout((/**
176
- * @return {?}
177
- */
178
- () => this.updateActivityList()))));
179
- observe.valuesFrom(this.tabs.animationDone).subscribe((/**
180
- * @return {?}
181
- */
182
- () => this.onAnimationFinished()));
183
- this.updateActivityList();
176
+ waitForInteractionContextCleanupToFinish() {
177
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
178
+ return this._deferredCleanUp ?
179
+ this._deferredCleanUp :
180
+ true;
181
+ });
184
182
  }
183
+ // @Trace()
185
184
  /**
186
- * @template D1, R1, E1
187
- * @param {?} activityType
188
- * @param {?=} data
185
+ * @private
189
186
  * @return {?}
190
187
  */
191
- _startActivity(activityType, data) {
192
- this.cleanupStaleNestedActivities();
193
- /** @type {?} */
194
- const self = this;
195
- return new Promise((/**
196
- * @param {?} resolve
197
- * @param {?} reject
198
- * @return {?}
199
- */
200
- (resolve, reject) => {
188
+ finishAndStartCleanup() {
189
+ if (!this._deferredCleanUp) {
201
190
  /** @type {?} */
202
- const context = new TabContext(data, activityType, self, {
203
- onDone: (/**
204
- * @param {?} result
205
- * @return {?}
206
- */
207
- function (result) {
208
- resolve(result);
209
- self.throttledNestedActivityFinishEvents.publish({});
210
- }),
211
- onCancel: (/**
212
- * @param {?} error
213
- * @return {?}
214
- */
215
- function (error) {
216
- reject(error);
217
- self.throttledNestedActivityFinishEvents.publish({});
218
- })
219
- });
220
- self.activityTabs.push(context);
221
- self.tabs.selectedIndex = this.activityTabs.length;
222
- }));
191
+ const promise = this.interactionServiceApi.notifyFinished(this);
192
+ this._deferredCleanUp = promise
193
+ .finally((/**
194
+ * @return {?}
195
+ */
196
+ () => {
197
+ this._deferredCleanUp = null;
198
+ }));
199
+ }
223
200
  }
201
+ // @Trace()
224
202
  /**
225
- * @private
203
+ * @template D1, R1, E1
204
+ * @param {?} activityRef
226
205
  * @return {?}
227
206
  */
228
- finishInitialActivity() {
229
- this.updateActivityList();
230
- this._initialActivityOutletContext.value = null;
231
- this.initialActivityOutletContextEvent.emit(null);
207
+ launchActivity(activityRef) {
208
+ /** @type {?} */
209
+ const cleanedTabs = this.activityTabs.filter((/**
210
+ * @param {?} tab
211
+ * @return {?}
212
+ */
213
+ tab => !tab.isComplete()));
214
+ this.activityTabs = cleanedTabs.concat(activityRef);
215
+ this.tabs.selectedIndex = this.activityTabs.length;
232
216
  }
233
- // @Trace()
234
217
  /**
235
- * @private
218
+ * @param {?} index
219
+ * @param {?} activityRef
236
220
  * @return {?}
237
221
  */
238
- onNestedActivityFinished() {
239
- this.synchroniseSelectedTabIndex();
240
- this.updateActivityList();
222
+ activityIndex(index, activityRef) {
223
+ return index;
241
224
  }
225
+ ;
242
226
  // @Trace()
243
227
  /**
244
228
  * @private
245
229
  * @return {?}
246
230
  */
247
- cleanupStaleNestedActivities() {
248
- if (this.tabs.selectedIndex < this.activityTabs.length - 1) {
249
- /** @type {?} */
250
- const tabs = this.activityTabs.value;
251
- /** @type {?} */
252
- const remainingActivities = tabs.slice(0, 1 + this.tabs.selectedIndex);
253
- /** @type {?} */
254
- const finishedActivityTabs = tabs.slice(1 + this.tabs.selectedIndex);
255
- finishedActivityTabs.forEach((/**
256
- * @param {?} a
257
- * @return {?}
258
- */
259
- a => a.dispose()));
260
- this.activityTabs.runInTransaction((/**
261
- * @param {?} draft
262
- * @return {?}
263
- */
264
- draft => {
265
- draft.value = remainingActivities;
266
- }));
267
- }
231
+ onAnimationFinished() {
232
+ this.getSelectedOutlet().component.onActivityReady();
233
+ this.activityTabs = this.activityTabs.filter((/**
234
+ * @param {?} tab
235
+ * @return {?}
236
+ */
237
+ tab => !tab.isComplete()));
268
238
  }
269
239
  /**
270
240
  * Synchronises the selected tab index. Returns true if there was no change to the selected index.
@@ -276,90 +246,89 @@ export class ActivityContainerComponent extends InteractionContextBase {
276
246
  /** @type {?} */
277
247
  const previousIndex = this.tabs.selectedIndex;
278
248
  /** @type {?} */
279
- const newIndex = this.activityTabs.query().findIndex((/**
280
- * @param {?} t
281
- * @return {?}
282
- */
283
- t => t.isComplete())) - 1;
249
+ const newIndex = this.getActiveActivityCount() - 1;
284
250
  this.tabs.selectedIndex = newIndex;
285
251
  return previousIndex === newIndex;
286
252
  }
287
- // @Trace()
288
253
  /**
289
254
  * @private
290
255
  * @return {?}
291
256
  */
292
- onAnimationFinished() {
293
- this.getSelectedOutlet().component.onActivityReady();
294
- this.cleanupStaleNestedActivities();
295
- this.updateActivityList();
257
+ getSelectedOutlet() {
258
+ return this.activityOutlets.toArray()[this.tabs.selectedIndex];
296
259
  }
260
+ // @Trace()
297
261
  /**
298
262
  * @private
299
263
  * @return {?}
300
264
  */
301
- updateActivityList() {
302
- this._activityList.value = this.activityTabs.value.filter((/**
303
- * @param {?} t
304
- * @return {?}
305
- */
306
- t => !t.isComplete() && t.isComponentRealised())).map((/**
307
- * @param {?} t
265
+ triggerTabSynchronisation() {
266
+ if (this.syncSelectedTabTimeout) {
267
+ clearTimeout(this.syncSelectedTabTimeout);
268
+ }
269
+ this.syncSelectedTabTimeout = setTimeout((/**
308
270
  * @return {?}
309
271
  */
310
- t => t.component));
311
- }
312
- /**
313
- * @private
314
- * @return {?}
315
- */
316
- getSelectedOutlet() {
317
- return this.outlets.toArray()[this.tabs.selectedIndex];
272
+ () => {
273
+ this.syncSelectedTabTimeout = null;
274
+ this.synchroniseSelectedTabIndex();
275
+ }), 75);
318
276
  }
319
277
  }
320
278
  ActivityContainerComponent.decorators = [
321
279
  { type: Component, args: [{
322
280
  selector: 'aup-activity-container',
323
- template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"dynamicHeight\" [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let tab of activityTabs.value\">\n <aup-activity-outlet [interactionContext]=\"this\" [activityContext]=\"tab\"></aup-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
281
+ template: "<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"dynamicHeight\" [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let tab of activityTabs; trackBy: activityIndex\" >\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"tab\"></aup-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
324
282
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
325
283
  }] }
326
284
  ];
327
285
  /** @nocollapse */
328
286
  ActivityContainerComponent.ctorParameters = () => [];
329
287
  ActivityContainerComponent.propDecorators = {
330
- initialActivityOutletContext: [{ type: Input }],
331
- initialActivityOutletContextEvent: [{ type: Output, args: ['initialActivityOutletContext',] }],
332
288
  dynamicHeight: [{ type: Input }],
333
289
  tabs: [{ type: ViewChild, args: ['tabs', { static: true },] }],
334
- outlets: [{ type: ViewChildren, args: [ActivityOutletComponent,] }]
290
+ activityOutlets: [{ type: ViewChildren, args: [ActivityOutletComponent,] }]
335
291
  };
292
+ tslib_1.__decorate([
293
+ Trace(),
294
+ tslib_1.__metadata("design:type", Function),
295
+ tslib_1.__metadata("design:paramtypes", []),
296
+ tslib_1.__metadata("design:returntype", void 0)
297
+ ], ActivityContainerComponent.prototype, "dispose", null);
336
298
  if (false) {
299
+ /** @type {?} */
300
+ ActivityContainerComponent.prototype.dynamicHeight;
301
+ /** @type {?} */
302
+ ActivityContainerComponent.prototype.tabs;
303
+ /** @type {?} */
304
+ ActivityContainerComponent.prototype.activityOutlets;
305
+ /** @type {?} */
306
+ ActivityContainerComponent.prototype.activityTabs;
337
307
  /**
338
308
  * @type {?}
339
309
  * @private
340
310
  */
341
- ActivityContainerComponent.prototype.throttledNestedActivityFinishEvents;
311
+ ActivityContainerComponent.prototype._identifier;
342
312
  /**
343
313
  * @type {?}
344
314
  * @private
345
315
  */
346
- ActivityContainerComponent.prototype._initialActivityOutletContext;
347
- /** @type {?} */
348
- ActivityContainerComponent.prototype.initialActivityOutletContextEvent;
349
- /** @type {?} */
350
- ActivityContainerComponent.prototype.dynamicHeight;
351
- /** @type {?} */
352
- ActivityContainerComponent.prototype.tabs;
353
- /** @type {?} */
354
- ActivityContainerComponent.prototype.outlets;
355
- /** @type {?} */
356
- ActivityContainerComponent.prototype.activityTabs;
357
- /** @type {?} */
358
- ActivityContainerComponent.prototype.active;
316
+ ActivityContainerComponent.prototype._deferredCleanUp;
317
+ /**
318
+ * @type {?}
319
+ * @private
320
+ */
321
+ ActivityContainerComponent.prototype.interactionServiceApi;
322
+ /**
323
+ * @type {?}
324
+ * @private
325
+ */
326
+ ActivityContainerComponent.prototype.garbage;
359
327
  /**
360
328
  * @type {?}
361
329
  * @private
362
330
  */
363
- ActivityContainerComponent.prototype._activityList;
331
+ ActivityContainerComponent.prototype.syncSelectedTabTimeout;
332
+ /* Skipping unhandled member: ;*/
364
333
  }
365
334
  //# sourceMappingURL=activity-container.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activity-container.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/components/activity-container/activity-container.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { MatTabGroup } from '@angular/material';\nimport {\n assert,\n Constructable,\n Dsl,\n MutableListModel,\n MutableStream,\n MutableValueModel,\n ValueModel\n} from '@coolon/pectin';\n\nimport { Activity } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\nimport { InteractionContextBase } from '../../interaction-context-base';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\nimport { ActivityOutletComponent } from '../activity-outlet/activity-outlet.component';\n\n/**\n * Note: this class is mutable and is stored in a list model. This is normally a big no no but\n * we're manually deriving other models from the list after view state changes. I.e. we not\n * using pectin chains on any of the mutable fields.\n */\nclass TabContext<D, R, E> implements ActivityOutletContext<D, R, E> {\n\n private _complete = false;\n private _component: Activity<D, R, E>;\n\n constructor(readonly activityData: D,\n readonly activityClass: Constructable<Activity<D, R, E>>,\n readonly interactionContext: InteractionContext,\n readonly activityCallbacks: Activity.Callbacks<R, E>) {\n }\n\n isComponentRealised(): boolean {\n return !!this._component;\n }\n\n isComplete() {\n return this._complete;\n }\n\n componentReady(component: Activity<D, R, E>) {\n assert.isNil(this._component);\n this._component = component;\n }\n\n get component(): Activity<D, R, E> {\n return this._component;\n }\n\n // @Trace()\n onDone(result: R): void {\n this._complete = true;\n this.activityCallbacks.onDone(result);\n }\n\n // @Trace()\n onCancel(error: E): void {\n this._complete = true;\n this.activityCallbacks.onCancel(error);\n }\n\n dispose() {\n this.component.dispose();\n }\n\n}\n\n\n@Component({\n selector: 'aup-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent<D, R, E> extends InteractionContextBase implements OnInit, AfterViewInit {\n\n private readonly throttledNestedActivityFinishEvents = new MutableStream<any>();\n\n private readonly _initialActivityOutletContext = new MutableValueModel<ActivityOutletContext<D, R, E>>();\n\n @Input()\n set initialActivityOutletContext(initialContext: ActivityOutletContext<D, R, E>) {\n assert.isNil(this._initialActivityOutletContext.value);\n // we clean up at the start as we leave the initial activity in place after it finishes\n // so that the activity remains visible during the inplace-interaction-context animations.\n this.activityTabs.value = [];\n this._activityList.value = [];\n const self = this;\n if (initialContext) {\n this._initialActivityOutletContext.value = initialContext;\n this.activityTabs.push(new TabContext(initialContext.activityData, initialContext.activityClass, this, {\n onDone: (result: R) => {\n self.finishInitialActivity();\n initialContext.onDone(result);\n },\n onCancel: (error: E) => {\n self.finishInitialActivity();\n initialContext.onCancel(error);\n }\n }));\n }\n }\n\n get initialActivityOutletContext() {\n return this._initialActivityOutletContext.value;\n }\n\n // tslint:disable-next-line:no-output-rename\n @Output('initialActivityOutletContext')\n initialActivityOutletContextEvent = new EventEmitter<ActivityOutletContext<D, R, E>>();\n\n @Input()\n dynamicHeight = false;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n @ViewChildren(ActivityOutletComponent)\n outlets: QueryList<ActivityOutletComponent<any, any, any>>;\n\n readonly activityTabs = new MutableListModel<TabContext<any, any, any>>();\n\n readonly active:ValueModel<boolean>;\n\n private readonly _activityList = new MutableListModel<Activity<any, any>>();\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n chain(this.throttledNestedActivityFinishEvents).throttle(50).subscribe(() => this.onNestedActivityFinished());\n this.setActivityList(this._activityList.readonly);\n this.active = chain(this._initialActivityOutletContext).isNotNil();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { chain, observe } = Dsl.disposeWith(this);\n observe.valuesFrom(this.outlets.changes).subscribe(() => setTimeout(() => this.updateActivityList()));\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.onAnimationFinished());\n this.updateActivityList();\n }\n\n _startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n this.cleanupStaleNestedActivities();\n const self = this;\n return new Promise<R1>((resolve, reject) => {\n const context = new TabContext(data, activityType, self, {\n onDone: function(result: R1) {\n resolve(result);\n self.throttledNestedActivityFinishEvents.publish({});\n },\n onCancel: function(error: E1) {\n reject(error);\n self.throttledNestedActivityFinishEvents.publish({});\n }\n });\n self.activityTabs.push(context);\n self.tabs.selectedIndex = this.activityTabs.length;\n });\n }\n\n private finishInitialActivity() {\n this.updateActivityList();\n this._initialActivityOutletContext.value = null;\n this.initialActivityOutletContextEvent.emit(null);\n }\n\n // @Trace()\n private onNestedActivityFinished() {\n this.synchroniseSelectedTabIndex();\n this.updateActivityList();\n }\n\n // @Trace()\n private cleanupStaleNestedActivities() {\n if (this.tabs.selectedIndex < this.activityTabs.length - 1) {\n const tabs = this.activityTabs.value;\n const remainingActivities = tabs.slice(0, 1 + this.tabs.selectedIndex);\n const finishedActivityTabs = tabs.slice(1 + this.tabs.selectedIndex);\n finishedActivityTabs.forEach(a => a.dispose());\n this.activityTabs.runInTransaction(draft => {\n\n draft.value = remainingActivities;\n });\n }\n }\n\n /**\n * Synchronises the selected tab index. Returns true if there was no change to the selected index.\n */\n // @Trace()\n private synchroniseSelectedTabIndex(): boolean {\n const previousIndex = this.tabs.selectedIndex;\n const newIndex = this.activityTabs.query().findIndex(t => t.isComplete()) - 1;\n this.tabs.selectedIndex = newIndex;\n return previousIndex === newIndex;\n }\n\n // @Trace()\n private onAnimationFinished() {\n this.getSelectedOutlet().component.onActivityReady();\n this.cleanupStaleNestedActivities();\n this.updateActivityList();\n }\n\n private updateActivityList() {\n this._activityList.value = this.activityTabs.value.filter(t => !t.isComplete() && t.isComponentRealised()).map(t => t.component);\n }\n\n private getSelectedOutlet() {\n return this.outlets.toArray()[this.tabs.selectedIndex];\n }\n}\n"]}
1
+ {"version":3,"file":"activity-container.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/interaction/components/activity-container/activity-container.component.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,EAAiB,SAAS,EAAE,KAAK,EAAU,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5G,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAA6B,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAc,MAAM,gBAAgB,CAAC;AAC7G,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;;;;AAOtF,MAAM,OAAO,0BAAoC,SAAQ,0BAA0B;IAqBjF;QACE,KAAK,EAAE,CAAC;QAnBV,kBAAa,GAAG,KAAK,CAAC;QAQtB,iBAAY,GAAiC,EAAE,CAAC;QAOxC,YAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAKzC,CAAC;;;;IAED,QAAQ;IACR,CAAC;;;;IAED,eAAe;cACP,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;QAChD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS;;;QAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAC,CAAC;IAC1F,CAAC;;;;;;IAED,UAAU,CAAC,UAAkB,EAAE,GAA2B;QACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC;IACnC,CAAC;;;;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;;;;IAED,aAAa;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;;;;;IAKD,QAAQ;QACN,OAAO,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;;;;;;IAED,kBAAkB,CAAuB,UAAa;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;;;;IAGD,OAAO;QACL,yEAAyE;QACzE,uDAAuD;QACvD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;;;;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;SAC9C;QACD,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY;;;;QAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAC,CAAC;IACjE,CAAC;;;;;;;IAOK,oBAAoB;;;kBAClB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE;YAC5C,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACvB,OAAO,IAAI,CAAC,wCAAwC,EAAE,CAAC;aACxD;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;aACzB;QACH,CAAC;KAAA;;;;;;;;;;;IAIS,uBAAuB,CAAa,YAAiD,EAAE,IAAQ,EAAE,YAAqB;QAC9H,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,mCAAmC;;;cACpE,WAAW,GAAG,IAAI,WAAW,CAAa,YAAY,EAAE,IAAI;;;QAAE,GAAG,EAAE;;kBACjE,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC;YAC7D,IAAI,mBAAmB,EAAE;gBACvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;aAClC;iBAAM;gBACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;aAC9B;QACH,CAAC,EAAC;QACF,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjC,kEAAkE;QAClE,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,gCAAgC;YAChC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC/C;QACD,OAAO,WAAW,CAAC,cAAc,CAAC;IACpC,CAAC;;;;;IAEO,sBAAsB;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM;;;;QAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAC,CAAC,MAAM,CAAC;IACnE,CAAC;;;;;;IAMD,YAAY;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;;;;IAEK,wCAAwC;;YAC5C,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACvB,IAAI,CAAC;QACT,CAAC;KAAA;;;;;;IAGO,qBAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;;kBACpB,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,IAAI,CAAC;YAC/D,IAAI,CAAC,gBAAgB,GAAG,OAAO;iBAC5B,OAAO;;;YAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC,EAAC,CAAC;SACN;IACH,CAAC;;;;;;;IAGD,cAAc,CAAa,WAAoC;;cACvD,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;;;;QAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAC;QACtE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;IACrD,CAAC;;;;;;IAED,aAAa,CAAC,KAAa,EAAE,WAAuC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAAA,CAAC;;;;;;IAIM,mBAAmB;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM;;;;QAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAC,CAAC;IACzE,CAAC;;;;;;;IAMO,2BAA2B;;cAC3B,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;;cACvC,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE,GAAG,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;QACnC,OAAO,aAAa,KAAK,QAAQ,CAAC;IACpC,CAAC;;;;;IAEO,iBAAiB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;;;;;;IAGO,yBAAyB;QAC/B,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,sBAAsB,GAAG,UAAU;;;QAAC,GAAG,EAAE;YAC5C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC,GAAE,EAAE,CAAC,CAAC;IACT,CAAC;;;YA3LF,SAAS,SAAC;gBACT,QAAQ,EAAE,wBAAwB;gBAClC,mVAAkD;;aAEnD;;;;;4BAGE,KAAK;mBAGL,SAAS,SAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;8BAGlC,YAAY,SAAC,uBAAuB;;AAqDrC;IADC,KAAK,EAAE;;;;yDAMP;;;IAhED,mDACsB;;IAEtB,0CACkB;;IAElB,qDACmE;;IAEnE,kDAAgD;;;;;IAEhD,iDAA4B;;;;;IAC5B,sDAAuC;;;;;IAEvC,2DAAsD;;;;;IAEtD,6CAAyC;;;;;IACzC,4DAAoC","sourcesContent":["import { AfterViewInit, Component, Input, OnInit, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { MatTabGroup } from '@angular/material';\nimport { assert, Constructable, Disposable, Dsl, GarbageCollector, Trace, ValueModel } from '@coolon/pectin';\nimport { lang } from '@coolon/typescript-utilities';\nimport _ from 'lodash';\nimport { AbstractInteractionContext } from '../../abstract-interaction-context';\nimport { Activity } from '../../activity';\nimport { ActivityRef } from '../../activity-ref';\nimport { InteractionService } from '../../services/interaction.service';\nimport { ActivityOutletComponent } from './activity-outlet/activity-outlet.component';\n\n@Component({\n selector: 'aup-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent<D, R, E> extends AbstractInteractionContext implements OnInit, AfterViewInit {\n\n @Input()\n dynamicHeight = false;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n @ViewChildren(ActivityOutletComponent)\n activityOutlets: QueryList<ActivityOutletComponent<any, any, any>>;\n\n activityTabs: ActivityRef<any, any, any>[] = [];\n\n private _identifier: string;\n private _deferredCleanUp: Promise<any>;\n\n private interactionServiceApi: InteractionService.Api;\n\n private garbage = new GarbageCollector();\n private syncSelectedTabTimeout: any;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { chain, observe } = Dsl.disposeWith(this);\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.onAnimationFinished());\n }\n\n initialise(identifier: string, api: InteractionService.Api) {\n assert.isFalsey(this.isInitialised());\n assert.notNil(identifier);\n assert.notNil(api);\n this._identifier = identifier;\n this.interactionServiceApi = api;\n }\n\n get identifier() {\n return this._identifier;\n }\n\n isInitialised() {\n return !!this.identifier;\n }\n\n /**\n * Returns true if an activity is currently running.\n */\n isActive(): boolean {\n return this.getActiveActivityCount() > 0;\n }\n\n registerDisposable<T extends Disposable>(disposable: T): T {\n return this.garbage.registerDisposable(disposable);\n }\n\n @Trace()\n dispose(): void {\n // TODO: think about auto cancelling any outstanding activity on dispose.\n // See NavigationState.Navigating for a use-case.\n assert.isFalsey(this.isActive());\n this.garbage.dispose();\n }\n\n getActiveActivityRef(): ActivityRef<any, any, any> {\n if (!this.isActive()) {\n lang.illegalState('no activity in progress');\n }\n return _.findLast(this.activityTabs, tab => !tab.isComplete());\n }\n\n /**\n * Cancels the current activity and returns true the context is no longer active, false if\n * there is still another activity running.\n */\n // @Trace()\n async cancelActiveActivity(): Promise<boolean> {\n const activity = this.getActiveActivityRef();\n activity.cancel();\n if (this.isCleaningUp()) {\n return this.waitForInteractionContextCleanupToFinish();\n } else {\n return !this.isActive();\n }\n }\n\n // TODO: this handling of multiple nested activities is only used by the activity component and is not a general case.\n // @Trace()\n protected createAndLaunchActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data: D1, disableClose: boolean): Promise<R1> {\n assert.isTruthy(this.isInitialised()); // make sure we've been initialised\n const activityRef = new ActivityRef<D1, R1, E1>(activityType, data, () => {\n const activeActivityCount = this.getActiveActivityCount() > 0;\n if (activeActivityCount) {\n this.triggerTabSynchronisation();\n } else {\n this.finishAndStartCleanup();\n }\n });\n this.launchActivity(activityRef);\n // if this is the first activity let the interaction service know.\n if (this.activityTabs.length === 1) {\n // console.log('Now active!!!');\n this.interactionServiceApi.notifyActive(this);\n }\n return activityRef.activityResult;\n }\n\n private getActiveActivityCount(): number {\n return this.activityTabs.filter(ref => !ref.isComplete()).length;\n }\n\n /**\n * Checks if this interaction context has finished an is in the process of waiting\n * for all the infrastructure (including route updates) to be completed.\n */\n isCleaningUp(): boolean {\n return !!this._deferredCleanUp;\n }\n\n async waitForInteractionContextCleanupToFinish(): Promise<any> {\n return this._deferredCleanUp ?\n this._deferredCleanUp :\n true;\n }\n\n // @Trace()\n private finishAndStartCleanup(): void {\n if (!this._deferredCleanUp) {\n const promise = this.interactionServiceApi.notifyFinished(this);\n this._deferredCleanUp = promise\n .finally(() => {\n this._deferredCleanUp = null;\n });\n }\n }\n\n// @Trace()\n launchActivity<D1, R1, E1>(activityRef: ActivityRef<D1, R1, E1>) {\n const cleanedTabs = this.activityTabs.filter(tab => !tab.isComplete());\n this.activityTabs = cleanedTabs.concat(activityRef);\n this.tabs.selectedIndex = this.activityTabs.length;\n }\n\n activityIndex(index: number, activityRef: ActivityRef<any, any, any>) {\n return index;\n };\n\n\n // @Trace()\n private onAnimationFinished() {\n this.getSelectedOutlet().component.onActivityReady();\n this.activityTabs = this.activityTabs.filter(tab => !tab.isComplete());\n }\n\n /**\n * Synchronises the selected tab index. Returns true if there was no change to the selected index.\n */\n // @Trace()\n private synchroniseSelectedTabIndex(): boolean {\n const previousIndex = this.tabs.selectedIndex;\n const newIndex = this.getActiveActivityCount() - 1;\n this.tabs.selectedIndex = newIndex;\n return previousIndex === newIndex;\n }\n\n private getSelectedOutlet() {\n return this.activityOutlets.toArray()[this.tabs.selectedIndex];\n }\n\n // @Trace()\n private triggerTabSynchronisation() {\n if (this.syncSelectedTabTimeout) {\n clearTimeout(this.syncSelectedTabTimeout);\n }\n this.syncSelectedTabTimeout = setTimeout(() => {\n this.syncSelectedTabTimeout = null;\n this.synchroniseSelectedTabIndex();\n }, 75);\n }\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"ActivityContainerComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../interaction-context-base","name":"InteractionContextBase","line":85,"character":57},"arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":80,"character":1},"arguments":[{"selector":"aup-activity-container","template":"<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"dynamicHeight\" [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let tab of activityTabs.value\">\n <aup-activity-outlet [interactionContext]=\"this\" [activityContext]=\"tab\"></aup-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n","styles":[":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]}]}],"members":{"initialActivityOutletContext":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":91,"character":3}}]}],"initialActivityOutletContextEvent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":119,"character":3},"arguments":["initialActivityOutletContext"]}]}],"dynamicHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":122,"character":3}}]}],"tabs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":125,"character":3},"arguments":["tabs",{"static":true}]}]}],"outlets":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":128,"character":3},"arguments":[{"__symbolic":"reference","module":"../activity-outlet/activity-outlet.component","name":"ActivityOutletComponent","line":128,"character":16}]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"_startActivity":[{"__symbolic":"method"}],"finishInitialActivity":[{"__symbolic":"method"}],"onNestedActivityFinished":[{"__symbolic":"method"}],"cleanupStaleNestedActivities":[{"__symbolic":"method"}],"synchroniseSelectedTabIndex":[{"__symbolic":"method"}],"onAnimationFinished":[{"__symbolic":"method"}],"updateActivityList":[{"__symbolic":"method"}],"getSelectedOutlet":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"ActivityContainerComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../../abstract-interaction-context","name":"AbstractInteractionContext","line":16,"character":57},"arity":3,"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"aup-activity-container","template":"<mat-tab-group #tabs no-tab-header [dynamicHeight]=\"dynamicHeight\" [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let tab of activityTabs; trackBy: activityIndex\" >\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"tab\"></aup-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n","styles":[":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]}]}],"members":{"dynamicHeight":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"tabs":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":21,"character":3},"arguments":["tabs",{"static":true}]}]}],"activityOutlets":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChildren","line":24,"character":3},"arguments":[{"__symbolic":"reference","module":"./activity-outlet/activity-outlet.component","name":"ActivityOutletComponent","line":24,"character":16}]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"initialise":[{"__symbolic":"method"}],"isInitialised":[{"__symbolic":"method"}],"isActive":[{"__symbolic":"method"}],"registerDisposable":[{"__symbolic":"method"}],"dispose":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@coolon/pectin","name":"Trace","line":76,"character":3}}]}],"getActiveActivityRef":[{"__symbolic":"method"}],"cancelActiveActivity":[{"__symbolic":"method"}],"createAndLaunchActivity":[{"__symbolic":"method"}],"getActiveActivityCount":[{"__symbolic":"method"}],"isCleaningUp":[{"__symbolic":"method"}],"waitForInteractionContextCleanupToFinish":[{"__symbolic":"method"}],"finishAndStartCleanup":[{"__symbolic":"method"}],"launchActivity":[{"__symbolic":"method"}],"activityIndex":[{"__symbolic":"method"}],"onAnimationFinished":[{"__symbolic":"method"}],"synchroniseSelectedTabIndex":[{"__symbolic":"method"}],"getSelectedOutlet":[{"__symbolic":"method"}],"triggerTabSynchronisation":[{"__symbolic":"method"}]}}}}]