@ionic/angular 8.8.19-dev.11787076261.138d5922 → 8.8.19-dev.11787084784.17cf25cf

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 (600) hide show
  1. package/README.md +7 -9
  2. package/{dist/common → common}/directives/control-value-accessors/value-accessor.d.ts +1 -1
  3. package/{dist/common → common}/directives/navigation/back-button.d.ts +1 -1
  4. package/{dist/common → common}/directives/navigation/nav.d.ts +1 -1
  5. package/{dist/common → common}/directives/navigation/router-link-delegate.d.ts +2 -2
  6. package/{dist/common → common}/directives/navigation/router-outlet.d.ts +1 -1
  7. package/{dist/common → common}/directives/navigation/tabs.d.ts +1 -9
  8. package/{dist/common → common}/index.d.ts +1 -1
  9. package/{dist/common → common}/overlays/modal.d.ts +1 -1
  10. package/{dist/common → common}/overlays/popover.d.ts +1 -1
  11. package/{dist/common → common}/providers/angular-delegate.d.ts +2 -2
  12. package/{dist/lazy/directives → directives}/control-value-accessors/boolean-value-accessor.d.ts +1 -1
  13. package/{dist/lazy/directives → directives}/control-value-accessors/numeric-value-accessor.d.ts +1 -1
  14. package/{dist/lazy/directives → directives}/control-value-accessors/select-value-accessor.d.ts +1 -1
  15. package/{dist/lazy/directives → directives}/control-value-accessors/text-value-accessor.d.ts +1 -1
  16. package/{dist/lazy/directives → directives}/proxies-list.d.ts +1 -1
  17. package/{dist/lazy/directives → directives}/proxies.d.ts +191 -290
  18. package/esm2022/app-initialize.mjs +29 -0
  19. package/esm2022/common/directives/control-value-accessors/index.mjs +2 -0
  20. package/esm2022/common/directives/control-value-accessors/value-accessor.mjs +153 -0
  21. package/esm2022/common/directives/navigation/back-button.mjs +61 -0
  22. package/esm2022/common/directives/navigation/nav-params.mjs +47 -0
  23. package/esm2022/common/directives/navigation/nav.mjs +49 -0
  24. package/esm2022/common/directives/navigation/router-link-delegate.mjs +190 -0
  25. package/esm2022/common/directives/navigation/router-outlet.mjs +480 -0
  26. package/esm2022/common/directives/navigation/stack-controller.mjs +283 -0
  27. package/esm2022/common/directives/navigation/stack-utils.mjs +73 -0
  28. package/esm2022/common/directives/navigation/tabs.mjs +279 -0
  29. package/esm2022/common/index.mjs +20 -0
  30. package/esm2022/common/ionic-angular-common.mjs +5 -0
  31. package/esm2022/common/overlays/modal.mjs +103 -0
  32. package/esm2022/common/overlays/popover.mjs +91 -0
  33. package/esm2022/common/providers/angular-delegate.mjs +210 -0
  34. package/esm2022/common/providers/config.mjs +45 -0
  35. package/esm2022/common/providers/dom-controller.mjs +45 -0
  36. package/esm2022/common/providers/menu-controller.mjs +114 -0
  37. package/esm2022/common/providers/nav-controller.mjs +235 -0
  38. package/esm2022/common/providers/platform.mjs +258 -0
  39. package/esm2022/common/types/interfaces.mjs +2 -0
  40. package/esm2022/common/types/ionic-lifecycle-hooks.mjs +5 -0
  41. package/esm2022/common/types/overlay-options.mjs +2 -0
  42. package/esm2022/common/utils/overlay.mjs +26 -0
  43. package/esm2022/common/utils/proxy.mjs +47 -0
  44. package/esm2022/common/utils/routing.mjs +55 -0
  45. package/esm2022/common/utils/util.mjs +10 -0
  46. package/esm2022/directives/angular-component-lib/utils.mjs +59 -0
  47. package/esm2022/directives/control-value-accessors/boolean-value-accessor.mjs +42 -0
  48. package/esm2022/directives/control-value-accessors/index.mjs +5 -0
  49. package/esm2022/directives/control-value-accessors/numeric-value-accessor.mjs +50 -0
  50. package/esm2022/directives/control-value-accessors/select-value-accessor.mjs +39 -0
  51. package/esm2022/directives/control-value-accessors/text-value-accessor.mjs +38 -0
  52. package/esm2022/directives/navigation/ion-back-button.mjs +24 -0
  53. package/esm2022/directives/navigation/ion-nav.mjs +21 -0
  54. package/esm2022/directives/navigation/ion-router-outlet.mjs +52 -0
  55. package/esm2022/directives/navigation/ion-tabs.mjs +59 -0
  56. package/esm2022/directives/navigation/router-link-delegate.mjs +32 -0
  57. package/esm2022/directives/overlays/modal.mjs +22 -0
  58. package/esm2022/directives/overlays/popover.mjs +18 -0
  59. package/esm2022/directives/proxies-list.mjs +90 -0
  60. package/esm2022/directives/proxies.mjs +2373 -0
  61. package/esm2022/directives/validators/index.mjs +3 -0
  62. package/esm2022/directives/validators/max-validator.mjs +27 -0
  63. package/esm2022/directives/validators/min-validator.mjs +27 -0
  64. package/esm2022/index.mjs +32 -0
  65. package/esm2022/ionic-angular.mjs +5 -0
  66. package/esm2022/ionic-module.mjs +111 -0
  67. package/esm2022/providers/action-sheet-controller.mjs +19 -0
  68. package/esm2022/providers/alert-controller.mjs +19 -0
  69. package/esm2022/providers/animation-controller.mjs +38 -0
  70. package/esm2022/providers/gesture-controller.mjs +33 -0
  71. package/esm2022/providers/loading-controller.mjs +19 -0
  72. package/esm2022/providers/menu-controller.mjs +19 -0
  73. package/esm2022/providers/modal-controller.mjs +26 -0
  74. package/esm2022/providers/picker-controller.mjs +22 -0
  75. package/esm2022/providers/popover-controller.mjs +19 -0
  76. package/esm2022/providers/toast-controller.mjs +19 -0
  77. package/esm2022/standalone/directives/angular-component-lib/utils.mjs +59 -0
  78. package/esm2022/standalone/directives/checkbox.mjs +76 -0
  79. package/esm2022/standalone/directives/datetime.mjs +95 -0
  80. package/esm2022/standalone/directives/icon.mjs +35 -0
  81. package/esm2022/standalone/directives/index.mjs +13 -0
  82. package/esm2022/standalone/directives/input-otp.mjs +90 -0
  83. package/esm2022/standalone/directives/input.mjs +113 -0
  84. package/esm2022/standalone/directives/proxies.mjs +2260 -0
  85. package/esm2022/standalone/directives/radio-group.mjs +60 -0
  86. package/esm2022/standalone/directives/range.mjs +78 -0
  87. package/esm2022/standalone/directives/searchbar.mjs +82 -0
  88. package/esm2022/standalone/directives/segment.mjs +60 -0
  89. package/esm2022/standalone/directives/select.mjs +84 -0
  90. package/esm2022/standalone/directives/textarea.mjs +91 -0
  91. package/esm2022/standalone/directives/toggle.mjs +76 -0
  92. package/esm2022/standalone/index.mjs +25 -0
  93. package/esm2022/standalone/ionic-angular-standalone.mjs +5 -0
  94. package/esm2022/standalone/navigation/back-button.mjs +32 -0
  95. package/esm2022/standalone/navigation/nav.mjs +28 -0
  96. package/esm2022/standalone/navigation/router-link-delegate.mjs +28 -0
  97. package/esm2022/standalone/navigation/router-outlet.mjs +60 -0
  98. package/esm2022/standalone/navigation/tabs.mjs +58 -0
  99. package/esm2022/standalone/overlays/modal.mjs +32 -0
  100. package/esm2022/standalone/overlays/popover.mjs +28 -0
  101. package/esm2022/standalone/providers/action-sheet-controller.mjs +21 -0
  102. package/esm2022/standalone/providers/alert-controller.mjs +21 -0
  103. package/esm2022/standalone/providers/animation-controller.mjs +38 -0
  104. package/esm2022/standalone/providers/gesture-controller.mjs +33 -0
  105. package/esm2022/standalone/providers/ionic-angular.mjs +38 -0
  106. package/esm2022/standalone/providers/loading-controller.mjs +21 -0
  107. package/esm2022/standalone/providers/menu-controller.mjs +19 -0
  108. package/esm2022/standalone/providers/modal-controller.mjs +28 -0
  109. package/esm2022/standalone/providers/picker-controller.mjs +24 -0
  110. package/esm2022/standalone/providers/popover-controller.mjs +21 -0
  111. package/esm2022/standalone/providers/toast-controller.mjs +21 -0
  112. package/fesm2022/ionic-angular-common.mjs +2791 -0
  113. package/fesm2022/ionic-angular-common.mjs.map +1 -0
  114. package/fesm2022/ionic-angular-standalone.mjs +3562 -0
  115. package/fesm2022/ionic-angular-standalone.mjs.map +1 -0
  116. package/fesm2022/ionic-angular.mjs +3139 -0
  117. package/fesm2022/ionic-angular.mjs.map +1 -0
  118. package/{dist/lazy/index.d.ts → index.d.ts} +2 -1
  119. package/ionic-module.d.ts +28 -0
  120. package/package.json +30 -172
  121. package/providers/picker-controller.d.ts +11 -0
  122. package/{dist/schematics → schematics}/add/index.js +6 -6
  123. package/schematics/utils/ast.js +32 -0
  124. package/{dist/schematics → schematics}/utils/config.js +11 -10
  125. package/{dist/schematics → schematics}/utils/package.js +4 -6
  126. package/standalone/directives/proxies.d.ts +1035 -0
  127. package/{dist/standalone → standalone}/index.d.ts +2 -1
  128. package/standalone/providers/picker-controller.d.ts +11 -0
  129. package/dist/common/directives/control-value-accessors/index.js +0 -2
  130. package/dist/common/directives/control-value-accessors/index.js.map +0 -1
  131. package/dist/common/directives/control-value-accessors/value-accessor.js +0 -152
  132. package/dist/common/directives/control-value-accessors/value-accessor.js.map +0 -1
  133. package/dist/common/directives/navigation/back-button.js +0 -61
  134. package/dist/common/directives/navigation/back-button.js.map +0 -1
  135. package/dist/common/directives/navigation/nav-params.js +0 -47
  136. package/dist/common/directives/navigation/nav-params.js.map +0 -1
  137. package/dist/common/directives/navigation/nav.js +0 -49
  138. package/dist/common/directives/navigation/nav.js.map +0 -1
  139. package/dist/common/directives/navigation/router-link-delegate.js +0 -188
  140. package/dist/common/directives/navigation/router-link-delegate.js.map +0 -1
  141. package/dist/common/directives/navigation/router-outlet.js +0 -476
  142. package/dist/common/directives/navigation/router-outlet.js.map +0 -1
  143. package/dist/common/directives/navigation/stack-controller.js +0 -282
  144. package/dist/common/directives/navigation/stack-controller.js.map +0 -1
  145. package/dist/common/directives/navigation/stack-utils.js +0 -73
  146. package/dist/common/directives/navigation/stack-utils.js.map +0 -1
  147. package/dist/common/directives/navigation/tabs.js +0 -290
  148. package/dist/common/directives/navigation/tabs.js.map +0 -1
  149. package/dist/common/index.js +0 -20
  150. package/dist/common/index.js.map +0 -1
  151. package/dist/common/overlays/modal.js +0 -96
  152. package/dist/common/overlays/modal.js.map +0 -1
  153. package/dist/common/overlays/popover.js +0 -84
  154. package/dist/common/overlays/popover.js.map +0 -1
  155. package/dist/common/providers/angular-delegate.js +0 -229
  156. package/dist/common/providers/angular-delegate.js.map +0 -1
  157. package/dist/common/providers/config.js +0 -44
  158. package/dist/common/providers/config.js.map +0 -1
  159. package/dist/common/providers/dom-controller.js +0 -44
  160. package/dist/common/providers/dom-controller.js.map +0 -1
  161. package/dist/common/providers/menu-controller.js +0 -114
  162. package/dist/common/providers/menu-controller.js.map +0 -1
  163. package/dist/common/providers/nav-controller.js +0 -232
  164. package/dist/common/providers/nav-controller.js.map +0 -1
  165. package/dist/common/providers/platform.js +0 -256
  166. package/dist/common/providers/platform.js.map +0 -1
  167. package/dist/common/types/interfaces.js +0 -2
  168. package/dist/common/types/interfaces.js.map +0 -1
  169. package/dist/common/types/ionic-lifecycle-hooks.js +0 -5
  170. package/dist/common/types/ionic-lifecycle-hooks.js.map +0 -1
  171. package/dist/common/types/overlay-options.js +0 -2
  172. package/dist/common/types/overlay-options.js.map +0 -1
  173. package/dist/common/utils/overlay.js +0 -26
  174. package/dist/common/utils/overlay.js.map +0 -1
  175. package/dist/common/utils/proxy.js +0 -47
  176. package/dist/common/utils/proxy.js.map +0 -1
  177. package/dist/common/utils/routing.js +0 -55
  178. package/dist/common/utils/routing.js.map +0 -1
  179. package/dist/common/utils/util.js +0 -10
  180. package/dist/common/utils/util.js.map +0 -1
  181. package/dist/lazy/app-initialize.js +0 -29
  182. package/dist/lazy/app-initialize.js.map +0 -1
  183. package/dist/lazy/directives/angular-component-lib/utils.js +0 -59
  184. package/dist/lazy/directives/angular-component-lib/utils.js.map +0 -1
  185. package/dist/lazy/directives/control-value-accessors/boolean-value-accessor.js +0 -47
  186. package/dist/lazy/directives/control-value-accessors/boolean-value-accessor.js.map +0 -1
  187. package/dist/lazy/directives/control-value-accessors/index.js +0 -5
  188. package/dist/lazy/directives/control-value-accessors/index.js.map +0 -1
  189. package/dist/lazy/directives/control-value-accessors/numeric-value-accessor.js +0 -55
  190. package/dist/lazy/directives/control-value-accessors/numeric-value-accessor.js.map +0 -1
  191. package/dist/lazy/directives/control-value-accessors/select-value-accessor.js +0 -44
  192. package/dist/lazy/directives/control-value-accessors/select-value-accessor.js.map +0 -1
  193. package/dist/lazy/directives/control-value-accessors/text-value-accessor.js +0 -43
  194. package/dist/lazy/directives/control-value-accessors/text-value-accessor.js.map +0 -1
  195. package/dist/lazy/directives/navigation/ion-back-button.js +0 -24
  196. package/dist/lazy/directives/navigation/ion-back-button.js.map +0 -1
  197. package/dist/lazy/directives/navigation/ion-nav.js +0 -21
  198. package/dist/lazy/directives/navigation/ion-nav.js.map +0 -1
  199. package/dist/lazy/directives/navigation/ion-router-outlet.js +0 -52
  200. package/dist/lazy/directives/navigation/ion-router-outlet.js.map +0 -1
  201. package/dist/lazy/directives/navigation/ion-tabs.js +0 -58
  202. package/dist/lazy/directives/navigation/ion-tabs.js.map +0 -1
  203. package/dist/lazy/directives/navigation/router-link-delegate.js +0 -32
  204. package/dist/lazy/directives/navigation/router-link-delegate.js.map +0 -1
  205. package/dist/lazy/directives/overlays/modal.js +0 -22
  206. package/dist/lazy/directives/overlays/modal.js.map +0 -1
  207. package/dist/lazy/directives/overlays/popover.js +0 -18
  208. package/dist/lazy/directives/overlays/popover.js.map +0 -1
  209. package/dist/lazy/directives/proxies-list.js +0 -89
  210. package/dist/lazy/directives/proxies-list.js.map +0 -1
  211. package/dist/lazy/directives/proxies.js +0 -2759
  212. package/dist/lazy/directives/proxies.js.map +0 -1
  213. package/dist/lazy/directives/validators/index.js +0 -3
  214. package/dist/lazy/directives/validators/index.js.map +0 -1
  215. package/dist/lazy/directives/validators/max-validator.js +0 -26
  216. package/dist/lazy/directives/validators/max-validator.js.map +0 -1
  217. package/dist/lazy/directives/validators/min-validator.js +0 -26
  218. package/dist/lazy/directives/validators/min-validator.js.map +0 -1
  219. package/dist/lazy/index.js +0 -34
  220. package/dist/lazy/index.js.map +0 -1
  221. package/dist/lazy/ionic-module.d.ts +0 -38
  222. package/dist/lazy/ionic-module.js +0 -121
  223. package/dist/lazy/ionic-module.js.map +0 -1
  224. package/dist/lazy/providers/action-sheet-controller.js +0 -18
  225. package/dist/lazy/providers/action-sheet-controller.js.map +0 -1
  226. package/dist/lazy/providers/alert-controller.js +0 -18
  227. package/dist/lazy/providers/alert-controller.js.map +0 -1
  228. package/dist/lazy/providers/animation-controller.js +0 -37
  229. package/dist/lazy/providers/animation-controller.js.map +0 -1
  230. package/dist/lazy/providers/gesture-controller.js +0 -32
  231. package/dist/lazy/providers/gesture-controller.js.map +0 -1
  232. package/dist/lazy/providers/loading-controller.js +0 -18
  233. package/dist/lazy/providers/loading-controller.js.map +0 -1
  234. package/dist/lazy/providers/menu-controller.js +0 -18
  235. package/dist/lazy/providers/menu-controller.js.map +0 -1
  236. package/dist/lazy/providers/modal-controller.js +0 -25
  237. package/dist/lazy/providers/modal-controller.js.map +0 -1
  238. package/dist/lazy/providers/popover-controller.js +0 -19
  239. package/dist/lazy/providers/popover-controller.js.map +0 -1
  240. package/dist/lazy/providers/toast-controller.js +0 -18
  241. package/dist/lazy/providers/toast-controller.js.map +0 -1
  242. package/dist/schematics/utils/ast.js +0 -64
  243. package/dist/standalone/directives/angular-component-lib/utils.js +0 -59
  244. package/dist/standalone/directives/angular-component-lib/utils.js.map +0 -1
  245. package/dist/standalone/directives/checkbox.js +0 -75
  246. package/dist/standalone/directives/checkbox.js.map +0 -1
  247. package/dist/standalone/directives/datetime.js +0 -93
  248. package/dist/standalone/directives/datetime.js.map +0 -1
  249. package/dist/standalone/directives/icon.js +0 -35
  250. package/dist/standalone/directives/icon.js.map +0 -1
  251. package/dist/standalone/directives/index.js +0 -13
  252. package/dist/standalone/directives/index.js.map +0 -1
  253. package/dist/standalone/directives/input-otp.js +0 -89
  254. package/dist/standalone/directives/input-otp.js.map +0 -1
  255. package/dist/standalone/directives/input.js +0 -112
  256. package/dist/standalone/directives/input.js.map +0 -1
  257. package/dist/standalone/directives/ion-accordion-group.d.ts +0 -21
  258. package/dist/standalone/directives/ion-accordion-group.js +0 -40
  259. package/dist/standalone/directives/ion-accordion-group.js.map +0 -1
  260. package/dist/standalone/directives/ion-accordion.d.ts +0 -12
  261. package/dist/standalone/directives/ion-accordion.js +0 -36
  262. package/dist/standalone/directives/ion-accordion.js.map +0 -1
  263. package/dist/standalone/directives/ion-action-sheet.d.ts +0 -58
  264. package/dist/standalone/directives/ion-action-sheet.js +0 -62
  265. package/dist/standalone/directives/ion-action-sheet.js.map +0 -1
  266. package/dist/standalone/directives/ion-alert.d.ts +0 -58
  267. package/dist/standalone/directives/ion-alert.js +0 -62
  268. package/dist/standalone/directives/ion-alert.js.map +0 -1
  269. package/dist/standalone/directives/ion-app.d.ts +0 -12
  270. package/dist/standalone/directives/ion-app.js +0 -36
  271. package/dist/standalone/directives/ion-app.js.map +0 -1
  272. package/dist/standalone/directives/ion-avatar.d.ts +0 -12
  273. package/dist/standalone/directives/ion-avatar.js +0 -35
  274. package/dist/standalone/directives/ion-avatar.js.map +0 -1
  275. package/dist/standalone/directives/ion-backdrop.d.ts +0 -18
  276. package/dist/standalone/directives/ion-backdrop.js +0 -40
  277. package/dist/standalone/directives/ion-backdrop.js.map +0 -1
  278. package/dist/standalone/directives/ion-badge.d.ts +0 -12
  279. package/dist/standalone/directives/ion-badge.js +0 -36
  280. package/dist/standalone/directives/ion-badge.js.map +0 -1
  281. package/dist/standalone/directives/ion-breadcrumb.d.ts +0 -23
  282. package/dist/standalone/directives/ion-breadcrumb.js +0 -43
  283. package/dist/standalone/directives/ion-breadcrumb.js.map +0 -1
  284. package/dist/standalone/directives/ion-breadcrumbs.d.ts +0 -19
  285. package/dist/standalone/directives/ion-breadcrumbs.js +0 -40
  286. package/dist/standalone/directives/ion-breadcrumbs.js.map +0 -1
  287. package/dist/standalone/directives/ion-button.d.ts +0 -23
  288. package/dist/standalone/directives/ion-button.js +0 -43
  289. package/dist/standalone/directives/ion-button.js.map +0 -1
  290. package/dist/standalone/directives/ion-buttons.d.ts +0 -12
  291. package/dist/standalone/directives/ion-buttons.js +0 -36
  292. package/dist/standalone/directives/ion-buttons.js.map +0 -1
  293. package/dist/standalone/directives/ion-card-content.d.ts +0 -12
  294. package/dist/standalone/directives/ion-card-content.js +0 -36
  295. package/dist/standalone/directives/ion-card-content.js.map +0 -1
  296. package/dist/standalone/directives/ion-card-header.d.ts +0 -12
  297. package/dist/standalone/directives/ion-card-header.js +0 -36
  298. package/dist/standalone/directives/ion-card-header.js.map +0 -1
  299. package/dist/standalone/directives/ion-card-subtitle.d.ts +0 -12
  300. package/dist/standalone/directives/ion-card-subtitle.js +0 -36
  301. package/dist/standalone/directives/ion-card-subtitle.js.map +0 -1
  302. package/dist/standalone/directives/ion-card-title.d.ts +0 -12
  303. package/dist/standalone/directives/ion-card-title.js +0 -36
  304. package/dist/standalone/directives/ion-card-title.js.map +0 -1
  305. package/dist/standalone/directives/ion-card.d.ts +0 -12
  306. package/dist/standalone/directives/ion-card.js +0 -36
  307. package/dist/standalone/directives/ion-card.js.map +0 -1
  308. package/dist/standalone/directives/ion-chip.d.ts +0 -12
  309. package/dist/standalone/directives/ion-chip.js +0 -36
  310. package/dist/standalone/directives/ion-chip.js.map +0 -1
  311. package/dist/standalone/directives/ion-col.d.ts +0 -12
  312. package/dist/standalone/directives/ion-col.js +0 -36
  313. package/dist/standalone/directives/ion-col.js.map +0 -1
  314. package/dist/standalone/directives/ion-content.d.ts +0 -33
  315. package/dist/standalone/directives/ion-content.js +0 -47
  316. package/dist/standalone/directives/ion-content.js.map +0 -1
  317. package/dist/standalone/directives/ion-datetime-button.d.ts +0 -12
  318. package/dist/standalone/directives/ion-datetime-button.js +0 -36
  319. package/dist/standalone/directives/ion-datetime-button.js.map +0 -1
  320. package/dist/standalone/directives/ion-fab-button.d.ts +0 -23
  321. package/dist/standalone/directives/ion-fab-button.js +0 -43
  322. package/dist/standalone/directives/ion-fab-button.js.map +0 -1
  323. package/dist/standalone/directives/ion-fab-list.d.ts +0 -12
  324. package/dist/standalone/directives/ion-fab-list.js +0 -36
  325. package/dist/standalone/directives/ion-fab-list.js.map +0 -1
  326. package/dist/standalone/directives/ion-fab.d.ts +0 -12
  327. package/dist/standalone/directives/ion-fab.js +0 -37
  328. package/dist/standalone/directives/ion-fab.js.map +0 -1
  329. package/dist/standalone/directives/ion-footer.d.ts +0 -12
  330. package/dist/standalone/directives/ion-footer.js +0 -36
  331. package/dist/standalone/directives/ion-footer.js.map +0 -1
  332. package/dist/standalone/directives/ion-grid.d.ts +0 -12
  333. package/dist/standalone/directives/ion-grid.js +0 -36
  334. package/dist/standalone/directives/ion-grid.js.map +0 -1
  335. package/dist/standalone/directives/ion-header.d.ts +0 -12
  336. package/dist/standalone/directives/ion-header.js +0 -36
  337. package/dist/standalone/directives/ion-header.js.map +0 -1
  338. package/dist/standalone/directives/ion-img.d.ts +0 -28
  339. package/dist/standalone/directives/ion-img.js +0 -46
  340. package/dist/standalone/directives/ion-img.js.map +0 -1
  341. package/dist/standalone/directives/ion-infinite-scroll-content.d.ts +0 -12
  342. package/dist/standalone/directives/ion-infinite-scroll-content.js +0 -36
  343. package/dist/standalone/directives/ion-infinite-scroll-content.js.map +0 -1
  344. package/dist/standalone/directives/ion-infinite-scroll.d.ts +0 -21
  345. package/dist/standalone/directives/ion-infinite-scroll.js +0 -41
  346. package/dist/standalone/directives/ion-infinite-scroll.js.map +0 -1
  347. package/dist/standalone/directives/ion-input-password-toggle.d.ts +0 -12
  348. package/dist/standalone/directives/ion-input-password-toggle.js +0 -36
  349. package/dist/standalone/directives/ion-input-password-toggle.js.map +0 -1
  350. package/dist/standalone/directives/ion-item-divider.d.ts +0 -12
  351. package/dist/standalone/directives/ion-item-divider.js +0 -36
  352. package/dist/standalone/directives/ion-item-divider.js.map +0 -1
  353. package/dist/standalone/directives/ion-item-group.d.ts +0 -12
  354. package/dist/standalone/directives/ion-item-group.js +0 -35
  355. package/dist/standalone/directives/ion-item-group.js.map +0 -1
  356. package/dist/standalone/directives/ion-item-option.d.ts +0 -12
  357. package/dist/standalone/directives/ion-item-option.js +0 -36
  358. package/dist/standalone/directives/ion-item-option.js.map +0 -1
  359. package/dist/standalone/directives/ion-item-options.d.ts +0 -18
  360. package/dist/standalone/directives/ion-item-options.js +0 -40
  361. package/dist/standalone/directives/ion-item-options.js.map +0 -1
  362. package/dist/standalone/directives/ion-item-sliding.d.ts +0 -18
  363. package/dist/standalone/directives/ion-item-sliding.js +0 -41
  364. package/dist/standalone/directives/ion-item-sliding.js.map +0 -1
  365. package/dist/standalone/directives/ion-item.d.ts +0 -12
  366. package/dist/standalone/directives/ion-item.js +0 -36
  367. package/dist/standalone/directives/ion-item.js.map +0 -1
  368. package/dist/standalone/directives/ion-label.d.ts +0 -12
  369. package/dist/standalone/directives/ion-label.js +0 -36
  370. package/dist/standalone/directives/ion-label.js.map +0 -1
  371. package/dist/standalone/directives/ion-list-header.d.ts +0 -12
  372. package/dist/standalone/directives/ion-list-header.js +0 -36
  373. package/dist/standalone/directives/ion-list-header.js.map +0 -1
  374. package/dist/standalone/directives/ion-list.d.ts +0 -12
  375. package/dist/standalone/directives/ion-list.js +0 -37
  376. package/dist/standalone/directives/ion-list.js.map +0 -1
  377. package/dist/standalone/directives/ion-loading.d.ts +0 -58
  378. package/dist/standalone/directives/ion-loading.js +0 -62
  379. package/dist/standalone/directives/ion-loading.js.map +0 -1
  380. package/dist/standalone/directives/ion-menu-button.d.ts +0 -12
  381. package/dist/standalone/directives/ion-menu-button.js +0 -36
  382. package/dist/standalone/directives/ion-menu-button.js.map +0 -1
  383. package/dist/standalone/directives/ion-menu-toggle.d.ts +0 -12
  384. package/dist/standalone/directives/ion-menu-toggle.js +0 -36
  385. package/dist/standalone/directives/ion-menu-toggle.js.map +0 -1
  386. package/dist/standalone/directives/ion-menu.d.ts +0 -34
  387. package/dist/standalone/directives/ion-menu.js +0 -50
  388. package/dist/standalone/directives/ion-menu.js.map +0 -1
  389. package/dist/standalone/directives/ion-nav-link.d.ts +0 -12
  390. package/dist/standalone/directives/ion-nav-link.js +0 -36
  391. package/dist/standalone/directives/ion-nav-link.js.map +0 -1
  392. package/dist/standalone/directives/ion-note.d.ts +0 -12
  393. package/dist/standalone/directives/ion-note.js +0 -36
  394. package/dist/standalone/directives/ion-note.js.map +0 -1
  395. package/dist/standalone/directives/ion-picker-column-option.d.ts +0 -12
  396. package/dist/standalone/directives/ion-picker-column-option.js +0 -36
  397. package/dist/standalone/directives/ion-picker-column-option.js.map +0 -1
  398. package/dist/standalone/directives/ion-picker-column.d.ts +0 -21
  399. package/dist/standalone/directives/ion-picker-column.js +0 -41
  400. package/dist/standalone/directives/ion-picker-column.js.map +0 -1
  401. package/dist/standalone/directives/ion-picker.d.ts +0 -12
  402. package/dist/standalone/directives/ion-picker.js +0 -36
  403. package/dist/standalone/directives/ion-picker.js.map +0 -1
  404. package/dist/standalone/directives/ion-progress-bar.d.ts +0 -12
  405. package/dist/standalone/directives/ion-progress-bar.js +0 -36
  406. package/dist/standalone/directives/ion-progress-bar.js.map +0 -1
  407. package/dist/standalone/directives/ion-radio.d.ts +0 -23
  408. package/dist/standalone/directives/ion-radio.js +0 -43
  409. package/dist/standalone/directives/ion-radio.js.map +0 -1
  410. package/dist/standalone/directives/ion-refresher-content.d.ts +0 -12
  411. package/dist/standalone/directives/ion-refresher-content.js +0 -36
  412. package/dist/standalone/directives/ion-refresher-content.js.map +0 -1
  413. package/dist/standalone/directives/ion-refresher.d.ts +0 -45
  414. package/dist/standalone/directives/ion-refresher.js +0 -53
  415. package/dist/standalone/directives/ion-refresher.js.map +0 -1
  416. package/dist/standalone/directives/ion-reorder-group.d.ts +0 -44
  417. package/dist/standalone/directives/ion-reorder-group.js +0 -50
  418. package/dist/standalone/directives/ion-reorder-group.js.map +0 -1
  419. package/dist/standalone/directives/ion-reorder.d.ts +0 -12
  420. package/dist/standalone/directives/ion-reorder.js +0 -35
  421. package/dist/standalone/directives/ion-reorder.js.map +0 -1
  422. package/dist/standalone/directives/ion-ripple-effect.d.ts +0 -12
  423. package/dist/standalone/directives/ion-ripple-effect.js +0 -37
  424. package/dist/standalone/directives/ion-ripple-effect.js.map +0 -1
  425. package/dist/standalone/directives/ion-row.d.ts +0 -12
  426. package/dist/standalone/directives/ion-row.js +0 -35
  427. package/dist/standalone/directives/ion-row.js.map +0 -1
  428. package/dist/standalone/directives/ion-segment-button.d.ts +0 -12
  429. package/dist/standalone/directives/ion-segment-button.js +0 -36
  430. package/dist/standalone/directives/ion-segment-button.js.map +0 -1
  431. package/dist/standalone/directives/ion-segment-content.d.ts +0 -12
  432. package/dist/standalone/directives/ion-segment-content.js +0 -35
  433. package/dist/standalone/directives/ion-segment-content.js.map +0 -1
  434. package/dist/standalone/directives/ion-segment-view.d.ts +0 -19
  435. package/dist/standalone/directives/ion-segment-view.js +0 -40
  436. package/dist/standalone/directives/ion-segment-view.js.map +0 -1
  437. package/dist/standalone/directives/ion-select-modal.d.ts +0 -12
  438. package/dist/standalone/directives/ion-select-modal.js +0 -36
  439. package/dist/standalone/directives/ion-select-modal.js.map +0 -1
  440. package/dist/standalone/directives/ion-select-option.d.ts +0 -12
  441. package/dist/standalone/directives/ion-select-option.js +0 -36
  442. package/dist/standalone/directives/ion-select-option.js.map +0 -1
  443. package/dist/standalone/directives/ion-skeleton-text.d.ts +0 -12
  444. package/dist/standalone/directives/ion-skeleton-text.js +0 -36
  445. package/dist/standalone/directives/ion-skeleton-text.js.map +0 -1
  446. package/dist/standalone/directives/ion-spinner.d.ts +0 -12
  447. package/dist/standalone/directives/ion-spinner.js +0 -36
  448. package/dist/standalone/directives/ion-spinner.js.map +0 -1
  449. package/dist/standalone/directives/ion-split-pane.d.ts +0 -22
  450. package/dist/standalone/directives/ion-split-pane.js +0 -40
  451. package/dist/standalone/directives/ion-split-pane.js.map +0 -1
  452. package/dist/standalone/directives/ion-tab-bar.d.ts +0 -12
  453. package/dist/standalone/directives/ion-tab-bar.js +0 -36
  454. package/dist/standalone/directives/ion-tab-bar.js.map +0 -1
  455. package/dist/standalone/directives/ion-tab-button.d.ts +0 -12
  456. package/dist/standalone/directives/ion-tab-button.js +0 -36
  457. package/dist/standalone/directives/ion-tab-button.js.map +0 -1
  458. package/dist/standalone/directives/ion-tab.d.ts +0 -12
  459. package/dist/standalone/directives/ion-tab.js +0 -37
  460. package/dist/standalone/directives/ion-tab.js.map +0 -1
  461. package/dist/standalone/directives/ion-text.d.ts +0 -12
  462. package/dist/standalone/directives/ion-text.js +0 -36
  463. package/dist/standalone/directives/ion-text.js.map +0 -1
  464. package/dist/standalone/directives/ion-thumbnail.d.ts +0 -12
  465. package/dist/standalone/directives/ion-thumbnail.js +0 -35
  466. package/dist/standalone/directives/ion-thumbnail.js.map +0 -1
  467. package/dist/standalone/directives/ion-title.d.ts +0 -12
  468. package/dist/standalone/directives/ion-title.js +0 -36
  469. package/dist/standalone/directives/ion-title.js.map +0 -1
  470. package/dist/standalone/directives/ion-toast.d.ts +0 -58
  471. package/dist/standalone/directives/ion-toast.js +0 -62
  472. package/dist/standalone/directives/ion-toast.js.map +0 -1
  473. package/dist/standalone/directives/ion-toolbar.d.ts +0 -12
  474. package/dist/standalone/directives/ion-toolbar.js +0 -36
  475. package/dist/standalone/directives/ion-toolbar.js.map +0 -1
  476. package/dist/standalone/directives/proxies.d.ts +0 -77
  477. package/dist/standalone/directives/proxies.js +0 -79
  478. package/dist/standalone/directives/proxies.js.map +0 -1
  479. package/dist/standalone/directives/radio-group.js +0 -59
  480. package/dist/standalone/directives/radio-group.js.map +0 -1
  481. package/dist/standalone/directives/range.js +0 -77
  482. package/dist/standalone/directives/range.js.map +0 -1
  483. package/dist/standalone/directives/searchbar.js +0 -81
  484. package/dist/standalone/directives/searchbar.js.map +0 -1
  485. package/dist/standalone/directives/segment.js +0 -59
  486. package/dist/standalone/directives/segment.js.map +0 -1
  487. package/dist/standalone/directives/select.js +0 -83
  488. package/dist/standalone/directives/select.js.map +0 -1
  489. package/dist/standalone/directives/textarea.js +0 -90
  490. package/dist/standalone/directives/textarea.js.map +0 -1
  491. package/dist/standalone/directives/toggle.js +0 -75
  492. package/dist/standalone/directives/toggle.js.map +0 -1
  493. package/dist/standalone/index.js +0 -24
  494. package/dist/standalone/index.js.map +0 -1
  495. package/dist/standalone/navigation/back-button.js +0 -32
  496. package/dist/standalone/navigation/back-button.js.map +0 -1
  497. package/dist/standalone/navigation/nav.js +0 -28
  498. package/dist/standalone/navigation/nav.js.map +0 -1
  499. package/dist/standalone/navigation/router-link-delegate.js +0 -26
  500. package/dist/standalone/navigation/router-link-delegate.js.map +0 -1
  501. package/dist/standalone/navigation/router-outlet.js +0 -60
  502. package/dist/standalone/navigation/router-outlet.js.map +0 -1
  503. package/dist/standalone/navigation/tabs.js +0 -57
  504. package/dist/standalone/navigation/tabs.js.map +0 -1
  505. package/dist/standalone/overlays/modal.js +0 -32
  506. package/dist/standalone/overlays/modal.js.map +0 -1
  507. package/dist/standalone/overlays/popover.js +0 -28
  508. package/dist/standalone/overlays/popover.js.map +0 -1
  509. package/dist/standalone/providers/action-sheet-controller.js +0 -20
  510. package/dist/standalone/providers/action-sheet-controller.js.map +0 -1
  511. package/dist/standalone/providers/alert-controller.js +0 -20
  512. package/dist/standalone/providers/alert-controller.js.map +0 -1
  513. package/dist/standalone/providers/animation-controller.js +0 -37
  514. package/dist/standalone/providers/animation-controller.js.map +0 -1
  515. package/dist/standalone/providers/gesture-controller.js +0 -32
  516. package/dist/standalone/providers/gesture-controller.js.map +0 -1
  517. package/dist/standalone/providers/ionic-angular.js +0 -38
  518. package/dist/standalone/providers/ionic-angular.js.map +0 -1
  519. package/dist/standalone/providers/loading-controller.js +0 -20
  520. package/dist/standalone/providers/loading-controller.js.map +0 -1
  521. package/dist/standalone/providers/menu-controller.js +0 -18
  522. package/dist/standalone/providers/menu-controller.js.map +0 -1
  523. package/dist/standalone/providers/modal-controller.js +0 -27
  524. package/dist/standalone/providers/modal-controller.js.map +0 -1
  525. package/dist/standalone/providers/popover-controller.js +0 -21
  526. package/dist/standalone/providers/popover-controller.js.map +0 -1
  527. package/dist/standalone/providers/toast-controller.js +0 -20
  528. package/dist/standalone/providers/toast-controller.js.map +0 -1
  529. /package/{dist/lazy/app-initialize.d.ts → app-initialize.d.ts} +0 -0
  530. /package/{dist/common → common}/directives/control-value-accessors/index.d.ts +0 -0
  531. /package/{dist/common → common}/directives/navigation/nav-params.d.ts +0 -0
  532. /package/{dist/common → common}/directives/navigation/stack-controller.d.ts +0 -0
  533. /package/{dist/common → common}/directives/navigation/stack-utils.d.ts +0 -0
  534. /package/{dist/common → common}/providers/config.d.ts +0 -0
  535. /package/{dist/common → common}/providers/dom-controller.d.ts +0 -0
  536. /package/{dist/common → common}/providers/menu-controller.d.ts +0 -0
  537. /package/{dist/common → common}/providers/nav-controller.d.ts +0 -0
  538. /package/{dist/common → common}/providers/platform.d.ts +0 -0
  539. /package/{dist/common → common}/types/interfaces.d.ts +0 -0
  540. /package/{dist/common → common}/types/ionic-lifecycle-hooks.d.ts +0 -0
  541. /package/{dist/common → common}/types/overlay-options.d.ts +0 -0
  542. /package/{dist/common → common}/utils/overlay.d.ts +0 -0
  543. /package/{dist/common → common}/utils/proxy.d.ts +0 -0
  544. /package/{dist/common → common}/utils/routing.d.ts +0 -0
  545. /package/{dist/common → common}/utils/util.d.ts +0 -0
  546. /package/{dist/lazy/directives → directives}/angular-component-lib/utils.d.ts +0 -0
  547. /package/{dist/lazy/directives → directives}/control-value-accessors/index.d.ts +0 -0
  548. /package/{dist/lazy/directives → directives}/navigation/ion-back-button.d.ts +0 -0
  549. /package/{dist/lazy/directives → directives}/navigation/ion-nav.d.ts +0 -0
  550. /package/{dist/lazy/directives → directives}/navigation/ion-router-outlet.d.ts +0 -0
  551. /package/{dist/lazy/directives → directives}/navigation/ion-tabs.d.ts +0 -0
  552. /package/{dist/lazy/directives → directives}/navigation/router-link-delegate.d.ts +0 -0
  553. /package/{dist/lazy/directives → directives}/overlays/modal.d.ts +0 -0
  554. /package/{dist/lazy/directives → directives}/overlays/popover.d.ts +0 -0
  555. /package/{dist/lazy/directives → directives}/validators/index.d.ts +0 -0
  556. /package/{dist/lazy/directives → directives}/validators/max-validator.d.ts +0 -0
  557. /package/{dist/lazy/directives → directives}/validators/min-validator.d.ts +0 -0
  558. /package/{dist/lazy/providers → providers}/action-sheet-controller.d.ts +0 -0
  559. /package/{dist/lazy/providers → providers}/alert-controller.d.ts +0 -0
  560. /package/{dist/lazy/providers → providers}/animation-controller.d.ts +0 -0
  561. /package/{dist/lazy/providers → providers}/gesture-controller.d.ts +0 -0
  562. /package/{dist/lazy/providers → providers}/loading-controller.d.ts +0 -0
  563. /package/{dist/lazy/providers → providers}/menu-controller.d.ts +0 -0
  564. /package/{dist/lazy/providers → providers}/modal-controller.d.ts +0 -0
  565. /package/{dist/lazy/providers → providers}/popover-controller.d.ts +0 -0
  566. /package/{dist/lazy/providers → providers}/toast-controller.d.ts +0 -0
  567. /package/{dist/schematics → schematics}/add/files/root/theme/variables.css +0 -0
  568. /package/{dist/schematics → schematics}/add/schema.json +0 -0
  569. /package/{dist/schematics → schematics}/collection.json +0 -0
  570. /package/{dist/standalone → standalone}/directives/angular-component-lib/utils.d.ts +0 -0
  571. /package/{dist/standalone → standalone}/directives/checkbox.d.ts +0 -0
  572. /package/{dist/standalone → standalone}/directives/datetime.d.ts +0 -0
  573. /package/{dist/standalone → standalone}/directives/icon.d.ts +0 -0
  574. /package/{dist/standalone → standalone}/directives/index.d.ts +0 -0
  575. /package/{dist/standalone → standalone}/directives/input-otp.d.ts +0 -0
  576. /package/{dist/standalone → standalone}/directives/input.d.ts +0 -0
  577. /package/{dist/standalone → standalone}/directives/radio-group.d.ts +0 -0
  578. /package/{dist/standalone → standalone}/directives/range.d.ts +0 -0
  579. /package/{dist/standalone → standalone}/directives/searchbar.d.ts +0 -0
  580. /package/{dist/standalone → standalone}/directives/segment.d.ts +0 -0
  581. /package/{dist/standalone → standalone}/directives/select.d.ts +0 -0
  582. /package/{dist/standalone → standalone}/directives/textarea.d.ts +0 -0
  583. /package/{dist/standalone → standalone}/directives/toggle.d.ts +0 -0
  584. /package/{dist/standalone → standalone}/navigation/back-button.d.ts +0 -0
  585. /package/{dist/standalone → standalone}/navigation/nav.d.ts +0 -0
  586. /package/{dist/standalone → standalone}/navigation/router-link-delegate.d.ts +0 -0
  587. /package/{dist/standalone → standalone}/navigation/router-outlet.d.ts +0 -0
  588. /package/{dist/standalone → standalone}/navigation/tabs.d.ts +0 -0
  589. /package/{dist/standalone → standalone}/overlays/modal.d.ts +0 -0
  590. /package/{dist/standalone → standalone}/overlays/popover.d.ts +0 -0
  591. /package/{dist/standalone → standalone}/providers/action-sheet-controller.d.ts +0 -0
  592. /package/{dist/standalone → standalone}/providers/alert-controller.d.ts +0 -0
  593. /package/{dist/standalone → standalone}/providers/animation-controller.d.ts +0 -0
  594. /package/{dist/standalone → standalone}/providers/gesture-controller.d.ts +0 -0
  595. /package/{dist/standalone → standalone}/providers/ionic-angular.d.ts +0 -0
  596. /package/{dist/standalone → standalone}/providers/loading-controller.d.ts +0 -0
  597. /package/{dist/standalone → standalone}/providers/menu-controller.d.ts +0 -0
  598. /package/{dist/standalone → standalone}/providers/modal-controller.d.ts +0 -0
  599. /package/{dist/standalone → standalone}/providers/popover-controller.d.ts +0 -0
  600. /package/{dist/standalone → standalone}/providers/toast-controller.d.ts +0 -0
@@ -0,0 +1,283 @@
1
+ import { bindLifecycleEvents } from '../../providers/angular-delegate';
2
+ import { computeStackId, destroyView, getUrl, insertView, isTabSwitch, toSegments, } from './stack-utils';
3
+ // TODO(FW-2827): types
4
+ export class StackController {
5
+ containerEl;
6
+ router;
7
+ navCtrl;
8
+ zone;
9
+ location;
10
+ views = [];
11
+ runningTask;
12
+ skipTransition = false;
13
+ tabsPrefix;
14
+ activeView;
15
+ nextId = 0;
16
+ constructor(tabsPrefix, containerEl, router, navCtrl, zone, location) {
17
+ this.containerEl = containerEl;
18
+ this.router = router;
19
+ this.navCtrl = navCtrl;
20
+ this.zone = zone;
21
+ this.location = location;
22
+ this.tabsPrefix = tabsPrefix !== undefined ? toSegments(tabsPrefix) : undefined;
23
+ }
24
+ createView(ref, activatedRoute) {
25
+ const url = getUrl(this.router, activatedRoute);
26
+ const element = ref?.location?.nativeElement;
27
+ const unlistenEvents = bindLifecycleEvents(this.zone, ref.instance, element);
28
+ return {
29
+ id: this.nextId++,
30
+ stackId: computeStackId(this.tabsPrefix, url),
31
+ unlistenEvents,
32
+ element,
33
+ ref,
34
+ url,
35
+ };
36
+ }
37
+ getExistingView(activatedRoute) {
38
+ const activatedUrlKey = getUrl(this.router, activatedRoute);
39
+ const view = this.views.find((vw) => vw.url === activatedUrlKey);
40
+ if (view) {
41
+ view.ref.changeDetectorRef.reattach();
42
+ }
43
+ return view;
44
+ }
45
+ setActive(enteringView) {
46
+ const consumeResult = this.navCtrl.consumeTransition();
47
+ let { direction, animation, animationBuilder } = consumeResult;
48
+ const leavingView = this.activeView;
49
+ const tabSwitch = isTabSwitch(enteringView, leavingView);
50
+ if (tabSwitch) {
51
+ direction = 'back';
52
+ animation = undefined;
53
+ }
54
+ const viewsSnapshot = this.views.slice();
55
+ let currentNavigation;
56
+ const router = this.router;
57
+ // Angular >= 7.2.0
58
+ if (router.getCurrentNavigation) {
59
+ currentNavigation = router.getCurrentNavigation();
60
+ // Angular < 7.2.0
61
+ }
62
+ else if (router.navigations?.value) {
63
+ currentNavigation = router.navigations.value;
64
+ }
65
+ /**
66
+ * If the navigation action
67
+ * sets `replaceUrl: true`
68
+ * then we need to make sure
69
+ * we remove the last item
70
+ * from our views stack
71
+ */
72
+ if (currentNavigation?.extras?.replaceUrl) {
73
+ if (this.views.length > 0) {
74
+ this.views.splice(-1, 1);
75
+ }
76
+ }
77
+ const reused = this.views.includes(enteringView);
78
+ const views = this.insertView(enteringView, direction);
79
+ // Trigger change detection before transition starts
80
+ // This will call ngOnInit() the first time too, just after the view
81
+ // was attached to the dom, but BEFORE the transition starts
82
+ if (!reused) {
83
+ enteringView.ref.changeDetectorRef.detectChanges();
84
+ }
85
+ /**
86
+ * If we are going back from a page that
87
+ * was presented using a custom animation
88
+ * we should default to using that
89
+ * unless the developer explicitly
90
+ * provided another animation.
91
+ */
92
+ const customAnimation = enteringView.animationBuilder;
93
+ if (animationBuilder === undefined && direction === 'back' && !tabSwitch && customAnimation !== undefined) {
94
+ animationBuilder = customAnimation;
95
+ }
96
+ /**
97
+ * Save any custom animation so that navigating
98
+ * back will use this custom animation by default.
99
+ */
100
+ if (leavingView) {
101
+ leavingView.animationBuilder = animationBuilder;
102
+ }
103
+ // Wait until previous transitions finish
104
+ return this.zone.runOutsideAngular(() => {
105
+ return this.wait(() => {
106
+ // disconnect leaving page from change detection to
107
+ // reduce jank during the page transition
108
+ if (leavingView) {
109
+ leavingView.ref.changeDetectorRef.detach();
110
+ }
111
+ // In case the enteringView is the same as the leavingPage we need to reattach()
112
+ enteringView.ref.changeDetectorRef.reattach();
113
+ return this.transition(enteringView, leavingView, animation, this.canGoBack(1), false, animationBuilder)
114
+ .then(() => cleanupAsync(enteringView, views, viewsSnapshot, this.location, this.zone))
115
+ .then(() => ({
116
+ enteringView,
117
+ direction,
118
+ animation,
119
+ tabSwitch,
120
+ }));
121
+ });
122
+ });
123
+ }
124
+ canGoBack(deep, stackId = this.getActiveStackId()) {
125
+ return this.getStack(stackId).length > deep;
126
+ }
127
+ pop(deep, stackId = this.getActiveStackId()) {
128
+ return this.zone.run(() => {
129
+ const views = this.getStack(stackId);
130
+ if (views.length <= deep) {
131
+ return Promise.resolve(false);
132
+ }
133
+ const view = views[views.length - deep - 1];
134
+ let url = view.url;
135
+ const viewSavedData = view.savedData;
136
+ if (viewSavedData) {
137
+ const primaryOutlet = viewSavedData.get('primary');
138
+ if (primaryOutlet?.route?._routerState?.snapshot.url) {
139
+ url = primaryOutlet.route._routerState.snapshot.url;
140
+ }
141
+ }
142
+ const { animationBuilder } = this.navCtrl.consumeTransition();
143
+ return this.navCtrl.navigateBack(url, { ...view.savedExtras, animation: animationBuilder }).then(() => true);
144
+ });
145
+ }
146
+ startBackTransition() {
147
+ const leavingView = this.activeView;
148
+ if (leavingView) {
149
+ const views = this.getStack(leavingView.stackId);
150
+ const enteringView = views[views.length - 2];
151
+ const customAnimation = enteringView.animationBuilder;
152
+ return this.wait(() => {
153
+ return this.transition(enteringView, // entering view
154
+ leavingView, // leaving view
155
+ 'back', this.canGoBack(2), true, customAnimation);
156
+ });
157
+ }
158
+ return Promise.resolve();
159
+ }
160
+ endBackTransition(shouldComplete) {
161
+ if (shouldComplete) {
162
+ this.skipTransition = true;
163
+ this.pop(1);
164
+ }
165
+ else if (this.activeView) {
166
+ cleanup(this.activeView, this.views, this.views, this.location, this.zone);
167
+ }
168
+ }
169
+ getLastUrl(stackId) {
170
+ const views = this.getStack(stackId);
171
+ return views.length > 0 ? views[views.length - 1] : undefined;
172
+ }
173
+ /**
174
+ * @internal
175
+ */
176
+ getRootUrl(stackId) {
177
+ const views = this.getStack(stackId);
178
+ return views.length > 0 ? views[0] : undefined;
179
+ }
180
+ getActiveStackId() {
181
+ return this.activeView ? this.activeView.stackId : undefined;
182
+ }
183
+ /**
184
+ * @internal
185
+ */
186
+ getActiveView() {
187
+ return this.activeView;
188
+ }
189
+ hasRunningTask() {
190
+ return this.runningTask !== undefined;
191
+ }
192
+ destroy() {
193
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
194
+ this.containerEl = undefined;
195
+ this.views.forEach(destroyView);
196
+ this.activeView = undefined;
197
+ this.views = [];
198
+ }
199
+ getStack(stackId) {
200
+ return this.views.filter((v) => v.stackId === stackId);
201
+ }
202
+ insertView(enteringView, direction) {
203
+ this.activeView = enteringView;
204
+ this.views = insertView(this.views, enteringView, direction);
205
+ return this.views.slice();
206
+ }
207
+ transition(enteringView, leavingView, direction, showGoBack, progressAnimation, animationBuilder) {
208
+ if (this.skipTransition) {
209
+ this.skipTransition = false;
210
+ return Promise.resolve(false);
211
+ }
212
+ if (leavingView === enteringView) {
213
+ return Promise.resolve(false);
214
+ }
215
+ const enteringEl = enteringView ? enteringView.element : undefined;
216
+ const leavingEl = leavingView ? leavingView.element : undefined;
217
+ const containerEl = this.containerEl;
218
+ if (enteringEl && enteringEl !== leavingEl) {
219
+ enteringEl.classList.add('ion-page');
220
+ enteringEl.classList.add('ion-page-invisible');
221
+ // containerEl is set to undefined when the stack controller is destroyed,
222
+ // so a transition that resolves after its outlet was destroyed must not
223
+ // dereference it (see destroy()).
224
+ if (containerEl?.commit) {
225
+ return containerEl.commit(enteringEl, leavingEl, {
226
+ duration: direction === undefined ? 0 : undefined,
227
+ direction,
228
+ showGoBack,
229
+ progressAnimation,
230
+ animationBuilder,
231
+ });
232
+ }
233
+ }
234
+ return Promise.resolve(false);
235
+ }
236
+ async wait(task) {
237
+ if (this.runningTask !== undefined) {
238
+ await this.runningTask;
239
+ this.runningTask = undefined;
240
+ }
241
+ const promise = (this.runningTask = task());
242
+ promise.finally(() => (this.runningTask = undefined));
243
+ return promise;
244
+ }
245
+ }
246
+ const cleanupAsync = (activeRoute, views, viewsSnapshot, location, zone) => {
247
+ if (typeof requestAnimationFrame === 'function') {
248
+ return new Promise((resolve) => {
249
+ requestAnimationFrame(() => {
250
+ cleanup(activeRoute, views, viewsSnapshot, location, zone);
251
+ resolve();
252
+ });
253
+ });
254
+ }
255
+ return Promise.resolve();
256
+ };
257
+ const cleanup = (activeRoute, views, viewsSnapshot, location, zone) => {
258
+ /**
259
+ * Re-enter the Angular zone when destroying page components. This will allow
260
+ * lifecycle events (`ngOnDestroy`) to be run inside the Angular zone.
261
+ */
262
+ zone.run(() => viewsSnapshot.filter((view) => !views.includes(view)).forEach(destroyView));
263
+ views.forEach((view) => {
264
+ /**
265
+ * In the event that a user navigated multiple
266
+ * times in rapid succession, we want to make sure
267
+ * we don't pre-emptively detach a view while
268
+ * it is in mid-transition.
269
+ *
270
+ * In this instance we also do not care about query
271
+ * params or fragments as it will be the same view regardless
272
+ */
273
+ const locationWithoutParams = location.path().split('?')[0];
274
+ const locationWithoutFragment = locationWithoutParams.split('#')[0];
275
+ if (view !== activeRoute && view.url !== locationWithoutFragment) {
276
+ const element = view.element;
277
+ element.setAttribute('aria-hidden', 'true');
278
+ element.classList.add('ion-page-hidden');
279
+ view.ref.changeDetectorRef.detach();
280
+ }
281
+ });
282
+ };
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbW1vbi9zcmMvZGlyZWN0aXZlcy9uYXZpZ2F0aW9uL3N0YWNrLWNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHdkUsT0FBTyxFQUdMLGNBQWMsRUFDZCxXQUFXLEVBQ1gsTUFBTSxFQUNOLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBRXZCLHVCQUF1QjtBQUV2QixNQUFNLE9BQU8sZUFBZTtJQVVoQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBYkYsS0FBSyxHQUFnQixFQUFFLENBQUM7SUFDeEIsV0FBVyxDQUFnQjtJQUMzQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLFVBQVUsQ0FBdUI7SUFDakMsVUFBVSxDQUF3QjtJQUNsQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRW5CLFlBQ0UsVUFBOEIsRUFDdEIsV0FBdUMsRUFDdkMsTUFBYyxFQUNkLE9BQXNCLEVBQ3RCLElBQVksRUFDWixRQUFrQjtRQUpsQixnQkFBVyxHQUFYLFdBQVcsQ0FBNEI7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNsRixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQXNCLEVBQUUsY0FBOEI7UUFDL0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7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bXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnRSZWYsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgdHlwZSB7IEFuaW1hdGlvbkJ1aWxkZXIsIFJvdXRlckRpcmVjdGlvbiB9IGZyb20gJ0Bpb25pYy9jb3JlL2NvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBiaW5kTGlmZWN5Y2xlRXZlbnRzIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2FuZ3VsYXItZGVsZWdhdGUnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9uYXYtY29udHJvbGxlcic7XG5cbmltcG9ydCB7XG4gIFJvdXRlVmlldyxcbiAgU3RhY2tEaWRDaGFuZ2VFdmVudCxcbiAgY29tcHV0ZVN0YWNrSWQsXG4gIGRlc3Ryb3lWaWV3LFxuICBnZXRVcmwsXG4gIGluc2VydFZpZXcsXG4gIGlzVGFiU3dpdGNoLFxuICB0b1NlZ21lbnRzLFxufSBmcm9tICcuL3N0YWNrLXV0aWxzJztcblxuLy8gVE9ETyhGVy0yODI3KTogdHlwZXNcblxuZXhwb3J0IGNsYXNzIFN0YWNrQ29udHJvbGxlciB7XG4gIHByaXZhdGUgdmlld3M6IFJvdXRlVmlld1tdID0gW107XG4gIHByaXZhdGUgcnVubmluZ1Rhc2s/OiBQcm9taXNlPGFueT47XG4gIHByaXZhdGUgc2tpcFRyYW5zaXRpb24gPSBmYWxzZTtcbiAgcHJpdmF0ZSB0YWJzUHJlZml4OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhY3RpdmVWaWV3OiBSb3V0ZVZpZXcgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgbmV4dElkID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0YWJzUHJlZml4OiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgcHJpdmF0ZSBjb250YWluZXJFbDogSFRNTElvblJvdXRlck91dGxldEVsZW1lbnQsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25cbiAgKSB7XG4gICAgdGhpcy50YWJzUHJlZml4ID0gdGFic1ByZWZpeCAhPT0gdW5kZWZpbmVkID8gdG9TZWdtZW50cyh0YWJzUHJlZml4KSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNyZWF0ZVZpZXcocmVmOiBDb21wb25lbnRSZWY8YW55PiwgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKTogUm91dGVWaWV3IHtcbiAgICBjb25zdCB1cmwgPSBnZXRVcmwodGhpcy5yb3V0ZXIsIGFjdGl2YXRlZFJvdXRlKTtcbiAgICBjb25zdCBlbGVtZW50ID0gcmVmPy5sb2NhdGlvbj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBjb25zdCB1bmxpc3RlbkV2ZW50cyA9IGJpbmRMaWZlY3ljbGVFdmVudHModGhpcy56b25lLCByZWYuaW5zdGFuY2UsIGVsZW1lbnQpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5uZXh0SWQrKyxcbiAgICAgIHN0YWNrSWQ6IGNvbXB1dGVTdGFja0lkKHRoaXMudGFic1ByZWZpeCwgdXJsKSxcbiAgICAgIHVubGlzdGVuRXZlbnRzLFxuICAgICAgZWxlbWVudCxcbiAgICAgIHJlZixcbiAgICAgIHVybCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0RXhpc3RpbmdWaWV3KGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IFJvdXRlVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYWN0aXZhdGVkVXJsS2V5ID0gZ2V0VXJsKHRoaXMucm91dGVyLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgY29uc3QgdmlldyA9IHRoaXMudmlld3MuZmluZCgodncpID0+IHZ3LnVybCA9PT0gYWN0aXZhdGVkVXJsS2V5KTtcbiAgICBpZiAodmlldykge1xuICAgICAgdmlldy5yZWYuY2hhbmdlRGV0ZWN0b3JSZWYucmVhdHRhY2goKTtcbiAgICB9XG4gICAgcmV0dXJuIHZpZXc7XG4gIH1cblxuICBzZXRBY3RpdmUoZW50ZXJpbmdWaWV3OiBSb3V0ZVZpZXcpOiBQcm9taXNlPFN0YWNrRGlkQ2hhbmdlRXZlbnQ+IHtcbiAgICBjb25zdCBjb25zdW1lUmVzdWx0ID0gdGhpcy5uYXZDdHJsLmNvbnN1bWVUcmFuc2l0aW9uKCk7XG4gICAgbGV0IHsgZGlyZWN0aW9uLCBhbmltYXRpb24sIGFuaW1hdGlvbkJ1aWxkZXIgfSA9IGNvbnN1bWVSZXN1bHQ7XG4gICAgY29uc3QgbGVhdmluZ1ZpZXcgPSB0aGlzLmFjdGl2ZVZpZXc7XG4gICAgY29uc3QgdGFiU3dpdGNoID0gaXNUYWJTd2l0Y2goZW50ZXJpbmdWaWV3LCBsZWF2aW5nVmlldyk7XG4gICAgaWYgKHRhYlN3aXRjaCkge1xuICAgICAgZGlyZWN0aW9uID0gJ2JhY2snO1xuICAgICAgYW5pbWF0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHZpZXdzU25hcHNob3QgPSB0aGlzLnZpZXdzLnNsaWNlKCk7XG5cbiAgICBsZXQgY3VycmVudE5hdmlnYXRpb247XG5cbiAgICBjb25zdCByb3V0ZXIgPSB0aGlzLnJvdXRlciBhcyBhbnk7XG5cbiAgICAvLyBBbmd1bGFyID49IDcuMi4wXG4gICAgaWYgKHJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbikge1xuICAgICAgY3VycmVudE5hdmlnYXRpb24gPSByb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcblxuICAgICAgLy8gQW5ndWxhciA8IDcuMi4wXG4gICAgfSBlbHNlIGlmIChyb3V0ZXIubmF2aWdhdGlvbnM/LnZhbHVlKSB7XG4gICAgICBjdXJyZW50TmF2aWdhdGlvbiA9IHJvdXRlci5uYXZpZ2F0aW9ucy52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgbmF2aWdhdGlvbiBhY3Rpb25cbiAgICAgKiBzZXRzIGByZXBsYWNlVXJsOiB0cnVlYFxuICAgICAqIHRoZW4gd2UgbmVlZCB0byBtYWtlIHN1cmVcbiAgICAgKiB3ZSByZW1vdmUgdGhlIGxhc3QgaXRlbVxuICAgICAqIGZyb20gb3VyIHZpZXdzIHN0YWNrXG4gICAgICovXG4gICAgaWYgKGN1cnJlbnROYXZpZ2F0aW9uPy5leHRyYXM/LnJlcGxhY2VVcmwpIHtcbiAgICAgIGlmICh0aGlzLnZpZXdzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy52aWV3cy5zcGxpY2UoLTEsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHJldXNlZCA9IHRoaXMudmlld3MuaW5jbHVkZXMoZW50ZXJpbmdWaWV3KTtcbiAgICBjb25zdCB2aWV3cyA9IHRoaXMuaW5zZXJ0VmlldyhlbnRlcmluZ1ZpZXcsIGRpcmVjdGlvbik7XG5cbiAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gYmVmb3JlIHRyYW5zaXRpb24gc3RhcnRzXG4gICAgLy8gVGhpcyB3aWxsIGNhbGwgbmdPbkluaXQoKSB0aGUgZmlyc3QgdGltZSB0b28sIGp1c3QgYWZ0ZXIgdGhlIHZpZXdcbiAgICAvLyB3YXMgYXR0YWNoZWQgdG8gdGhlIGRvbSwgYnV0IEJFRk9SRSB0aGUgdHJhbnNpdGlvbiBzdGFydHNcbiAgICBpZiAoIXJldXNlZCkge1xuICAgICAgZW50ZXJpbmdWaWV3LnJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UgYXJlIGdvaW5nIGJhY2sgZnJvbSBhIHBhZ2UgdGhhdFxuICAgICAqIHdhcyBwcmVzZW50ZWQgdXNpbmcgYSBjdXN0b20gYW5pbWF0aW9uXG4gICAgICogd2Ugc2hvdWxkIGRlZmF1bHQgdG8gdXNpbmcgdGhhdFxuICAgICAqIHVubGVzcyB0aGUgZGV2ZWxvcGVyIGV4cGxpY2l0bHlcbiAgICAgKiBwcm92aWRlZCBhbm90aGVyIGFuaW1hdGlvbi5cbiAgICAgKi9cbiAgICBjb25zdCBjdXN0b21BbmltYXRpb24gPSBlbnRlcmluZ1ZpZXcuYW5pbWF0aW9uQnVpbGRlcjtcbiAgICBpZiAoYW5pbWF0aW9uQnVpbGRlciA9PT0gdW5kZWZpbmVkICYmIGRpcmVjdGlvbiA9PT0gJ2JhY2snICYmICF0YWJTd2l0Y2ggJiYgY3VzdG9tQW5pbWF0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFuaW1hdGlvbkJ1aWxkZXIgPSBjdXN0b21BbmltYXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2F2ZSBhbnkgY3VzdG9tIGFuaW1hdGlvbiBzbyB0aGF0IG5hdmlnYXRpbmdcbiAgICAgKiBiYWNrIHdpbGwgdXNlIHRoaXMgY3VzdG9tIGFuaW1hdGlvbiBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIGlmIChsZWF2aW5nVmlldykge1xuICAgICAgbGVhdmluZ1ZpZXcuYW5pbWF0aW9uQnVpbGRlciA9IGFuaW1hdGlvbkJ1aWxkZXI7XG4gICAgfVxuXG4gICAgLy8gV2FpdCB1bnRpbCBwcmV2aW91cyB0cmFuc2l0aW9ucyBmaW5pc2hcbiAgICByZXR1cm4gdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLndhaXQoKCkgPT4ge1xuICAgICAgICAvLyBkaXNjb25uZWN0IGxlYXZpbmcgcGFnZSBmcm9tIGNoYW5nZSBkZXRlY3Rpb24gdG9cbiAgICAgICAgLy8gcmVkdWNlIGphbmsgZHVyaW5nIHRoZSBwYWdlIHRyYW5zaXRpb25cbiAgICAgICAgaWYgKGxlYXZpbmdWaWV3KSB7XG4gICAgICAgICAgbGVhdmluZ1ZpZXcucmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGFjaCgpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIGVudGVyaW5nVmlldyBpcyB0aGUgc2FtZSBhcyB0aGUgbGVhdmluZ1BhZ2Ugd2UgbmVlZCB0byByZWF0dGFjaCgpXG4gICAgICAgIGVudGVyaW5nVmlldy5yZWYuY2hhbmdlRGV0ZWN0b3JSZWYucmVhdHRhY2goKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uKGVudGVyaW5nVmlldywgbGVhdmluZ1ZpZXcsIGFuaW1hdGlvbiwgdGhpcy5jYW5Hb0JhY2soMSksIGZhbHNlLCBhbmltYXRpb25CdWlsZGVyKVxuICAgICAgICAgIC50aGVuKCgpID0+IGNsZWFudXBBc3luYyhlbnRlcmluZ1ZpZXcsIHZpZXdzLCB2aWV3c1NuYXBzaG90LCB0aGlzLmxvY2F0aW9uLCB0aGlzLnpvbmUpKVxuICAgICAgICAgIC50aGVuKCgpID0+ICh7XG4gICAgICAgICAgICBlbnRlcmluZ1ZpZXcsXG4gICAgICAgICAgICBkaXJlY3Rpb24sXG4gICAgICAgICAgICBhbmltYXRpb24sXG4gICAgICAgICAgICB0YWJTd2l0Y2gsXG4gICAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBjYW5Hb0JhY2soZGVlcDogbnVtYmVyLCBzdGFja0lkID0gdGhpcy5nZXRBY3RpdmVTdGFja0lkKCkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhzdGFja0lkKS5sZW5ndGggPiBkZWVwO1xuICB9XG5cbiAgcG9wKGRlZXA6IG51bWJlciwgc3RhY2tJZCA9IHRoaXMuZ2V0QWN0aXZlU3RhY2tJZCgpKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3Qgdmlld3MgPSB0aGlzLmdldFN0YWNrKHN0YWNrSWQpO1xuICAgICAgaWYgKHZpZXdzLmxlbmd0aCA8PSBkZWVwKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgICAgfVxuICAgICAgY29uc3QgdmlldyA9IHZpZXdzW3ZpZXdzLmxlbmd0aCAtIGRlZXAgLSAxXTtcbiAgICAgIGxldCB1cmwgPSB2aWV3LnVybDtcblxuICAgICAgY29uc3Qgdmlld1NhdmVkRGF0YSA9IHZpZXcuc2F2ZWREYXRhO1xuICAgICAgaWYgKHZpZXdTYXZlZERhdGEpIHtcbiAgICAgICAgY29uc3QgcHJpbWFyeU91dGxldCA9IHZpZXdTYXZlZERhdGEuZ2V0KCdwcmltYXJ5Jyk7XG4gICAgICAgIGlmIChwcmltYXJ5T3V0bGV0Py5yb3V0ZT8uX3JvdXRlclN0YXRlPy5zbmFwc2hvdC51cmwpIHtcbiAgICAgICAgICB1cmwgPSBwcmltYXJ5T3V0bGV0LnJvdXRlLl9yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYW5pbWF0aW9uQnVpbGRlciB9ID0gdGhpcy5uYXZDdHJsLmNvbnN1bWVUcmFuc2l0aW9uKCk7XG4gICAgICByZXR1cm4gdGhpcy5uYXZDdHJsLm5hdmlnYXRlQmFjayh1cmwsIHsgLi4udmlldy5zYXZlZEV4dHJhcywgYW5pbWF0aW9uOiBhbmltYXRpb25CdWlsZGVyIH0pLnRoZW4oKCkgPT4gdHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGFydEJhY2tUcmFuc2l0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4gfCBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsZWF2aW5nVmlldyA9IHRoaXMuYWN0aXZlVmlldztcbiAgICBpZiAobGVhdmluZ1ZpZXcpIHtcbiAgICAgIGNvbnN0IHZpZXdzID0gdGhpcy5nZXRTdGFjayhsZWF2aW5nVmlldy5zdGFja0lkKTtcbiAgICAgIGNvbnN0IGVudGVyaW5nVmlldyA9IHZpZXdzW3ZpZXdzLmxlbmd0aCAtIDJdO1xuICAgICAgY29uc3QgY3VzdG9tQW5pbWF0aW9uID0gZW50ZXJpbmdWaWV3LmFuaW1hdGlvbkJ1aWxkZXI7XG5cbiAgICAgIHJldHVybiB0aGlzLndhaXQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2l0aW9uKFxuICAgICAgICAgIGVudGVyaW5nVmlldywgLy8gZW50ZXJpbmcgdmlld1xuICAgICAgICAgIGxlYXZpbmdWaWV3LCAvLyBsZWF2aW5nIHZpZXdcbiAgICAgICAgICAnYmFjaycsXG4gICAgICAgICAgdGhpcy5jYW5Hb0JhY2soMiksXG4gICAgICAgICAgdHJ1ZSxcbiAgICAgICAgICBjdXN0b21BbmltYXRpb25cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICBlbmRCYWNrVHJhbnNpdGlvbihzaG91bGRDb21wbGV0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzaG91bGRDb21wbGV0ZSkge1xuICAgICAgdGhpcy5za2lwVHJhbnNpdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLnBvcCgxKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVmlldykge1xuICAgICAgY2xlYW51cCh0aGlzLmFjdGl2ZVZpZXcsIHRoaXMudmlld3MsIHRoaXMudmlld3MsIHRoaXMubG9jYXRpb24sIHRoaXMuem9uZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGFzdFVybChzdGFja0lkPzogc3RyaW5nKTogUm91dGVWaWV3IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2aWV3cyA9IHRoaXMuZ2V0U3RhY2soc3RhY2tJZCk7XG4gICAgcmV0dXJuIHZpZXdzLmxlbmd0aCA+IDAgPyB2aWV3c1t2aWV3cy5sZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFJvb3RVcmwoc3RhY2tJZD86IHN0cmluZyk6IFJvdXRlVmlldyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgdmlld3MgPSB0aGlzLmdldFN0YWNrKHN0YWNrSWQpO1xuICAgIHJldHVybiB2aWV3cy5sZW5ndGggPiAwID8gdmlld3NbMF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRBY3RpdmVTdGFja0lkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA/IHRoaXMuYWN0aXZlVmlldy5zdGFja0lkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0QWN0aXZlVmlldygpOiBSb3V0ZVZpZXcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXc7XG4gIH1cblxuICBoYXNSdW5uaW5nVGFzaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ydW5uaW5nVGFzayAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgIHRoaXMuY29udGFpbmVyRWwgPSB1bmRlZmluZWQhO1xuICAgIHRoaXMudmlld3MuZm9yRWFjaChkZXN0cm95Vmlldyk7XG4gICAgdGhpcy5hY3RpdmVWaWV3ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudmlld3MgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RhY2soc3RhY2tJZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMudmlld3MuZmlsdGVyKCh2KSA9PiB2LnN0YWNrSWQgPT09IHN0YWNrSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnNlcnRWaWV3KGVudGVyaW5nVmlldzogUm91dGVWaWV3LCBkaXJlY3Rpb246IFJvdXRlckRpcmVjdGlvbikge1xuICAgIHRoaXMuYWN0aXZlVmlldyA9IGVudGVyaW5nVmlldztcbiAgICB0aGlzLnZpZXdzID0gaW5zZXJ0Vmlldyh0aGlzLnZpZXdzLCBlbnRlcmluZ1ZpZXcsIGRpcmVjdGlvbik7XG4gICAgcmV0dXJuIHRoaXMudmlld3Muc2xpY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNpdGlvbihcbiAgICBlbnRlcmluZ1ZpZXc6IFJvdXRlVmlldyB8IHVuZGVmaW5lZCxcbiAgICBsZWF2aW5nVmlldzogUm91dGVWaWV3IHwgdW5kZWZpbmVkLFxuICAgIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2snIHwgdW5kZWZpbmVkLFxuICAgIHNob3dHb0JhY2s6IGJvb2xlYW4sXG4gICAgcHJvZ3Jlc3NBbmltYXRpb246IGJvb2xlYW4sXG4gICAgYW5pbWF0aW9uQnVpbGRlcj86IEFuaW1hdGlvbkJ1aWxkZXJcbiAgKSB7XG4gICAgaWYgKHRoaXMuc2tpcFRyYW5zaXRpb24pIHtcbiAgICAgIHRoaXMuc2tpcFRyYW5zaXRpb24gPSBmYWxzZTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAobGVhdmluZ1ZpZXcgPT09IGVudGVyaW5nVmlldykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSk7XG4gICAgfVxuICAgIGNvbnN0IGVudGVyaW5nRWwgPSBlbnRlcmluZ1ZpZXcgPyBlbnRlcmluZ1ZpZXcuZWxlbWVudCA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsZWF2aW5nRWwgPSBsZWF2aW5nVmlldyA/IGxlYXZpbmdWaWV3LmVsZW1lbnQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLmNvbnRhaW5lckVsO1xuICAgIGlmIChlbnRlcmluZ0VsICYmIGVudGVyaW5nRWwgIT09IGxlYXZpbmdFbCkge1xuICAgICAgZW50ZXJpbmdFbC5jbGFzc0xpc3QuYWRkKCdpb24tcGFnZScpO1xuICAgICAgZW50ZXJpbmdFbC5jbGFzc0xpc3QuYWRkKCdpb24tcGFnZS1pbnZpc2libGUnKTtcblxuICAgICAgLy8gY29udGFpbmVyRWwgaXMgc2V0IHRvIHVuZGVmaW5lZCB3aGVuIHRoZSBzdGFjayBjb250cm9sbGVyIGlzIGRlc3Ryb3llZCxcbiAgICAgIC8vIHNvIGEgdHJhbnNpdGlvbiB0aGF0IHJlc29sdmVzIGFmdGVyIGl0cyBvdXRsZXQgd2FzIGRlc3Ryb3llZCBtdXN0IG5vdFxuICAgICAgLy8gZGVyZWZlcmVuY2UgaXQgKHNlZSBkZXN0cm95KCkpLlxuICAgICAgaWYgKChjb250YWluZXJFbCBhcyBhbnkpPy5jb21taXQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lckVsLmNvbW1pdChlbnRlcmluZ0VsLCBsZWF2aW5nRWwsIHtcbiAgICAgICAgICBkdXJhdGlvbjogZGlyZWN0aW9uID09PSB1bmRlZmluZWQgPyAwIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGRpcmVjdGlvbixcbiAgICAgICAgICBzaG93R29CYWNrLFxuICAgICAgICAgIHByb2dyZXNzQW5pbWF0aW9uLFxuICAgICAgICAgIGFuaW1hdGlvbkJ1aWxkZXIsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgd2FpdDxUPih0YXNrOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKHRoaXMucnVubmluZ1Rhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5ydW5uaW5nVGFzaztcbiAgICAgIHRoaXMucnVubmluZ1Rhc2sgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHByb21pc2UgPSAodGhpcy5ydW5uaW5nVGFzayA9IHRhc2soKSk7XG4gICAgcHJvbWlzZS5maW5hbGx5KCgpID0+ICh0aGlzLnJ1bm5pbmdUYXNrID0gdW5kZWZpbmVkKSk7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cbn1cblxuY29uc3QgY2xlYW51cEFzeW5jID0gKFxuICBhY3RpdmVSb3V0ZTogUm91dGVWaWV3LFxuICB2aWV3czogUm91dGVWaWV3W10sXG4gIHZpZXdzU25hcHNob3Q6IFJvdXRlVmlld1tdLFxuICBsb2NhdGlvbjogTG9jYXRpb24sXG4gIHpvbmU6IE5nWm9uZVxuKSA9PiB7XG4gIGlmICh0eXBlb2YgKHJlcXVlc3RBbmltYXRpb25GcmFtZSBhcyBhbnkpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBjbGVhbnVwKGFjdGl2ZVJvdXRlLCB2aWV3cywgdmlld3NTbmFwc2hvdCwgbG9jYXRpb24sIHpvbmUpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59O1xuXG5jb25zdCBjbGVhbnVwID0gKFxuICBhY3RpdmVSb3V0ZTogUm91dGVWaWV3LFxuICB2aWV3czogUm91dGVWaWV3W10sXG4gIHZpZXdzU25hcHNob3Q6IFJvdXRlVmlld1tdLFxuICBsb2NhdGlvbjogTG9jYXRpb24sXG4gIHpvbmU6IE5nWm9uZVxuKSA9PiB7XG4gIC8qKlxuICAgKiBSZS1lbnRlciB0aGUgQW5ndWxhciB6b25lIHdoZW4gZGVzdHJveWluZyBwYWdlIGNvbXBvbmVudHMuIFRoaXMgd2lsbCBhbGxvd1xuICAgKiBsaWZlY3ljbGUgZXZlbnRzIChgbmdPbkRlc3Ryb3lgKSB0byBiZSBydW4gaW5zaWRlIHRoZSBBbmd1bGFyIHpvbmUuXG4gICAqL1xuICB6b25lLnJ1bigoKSA9PiB2aWV3c1NuYXBzaG90LmZpbHRlcigodmlldykgPT4gIXZpZXdzLmluY2x1ZGVzKHZpZXcpKS5mb3JFYWNoKGRlc3Ryb3lWaWV3KSk7XG5cbiAgdmlld3MuZm9yRWFjaCgodmlldykgPT4ge1xuICAgIC8qKlxuICAgICAqIEluIHRoZSBldmVudCB0aGF0IGEgdXNlciBuYXZpZ2F0ZWQgbXVsdGlwbGVcbiAgICAgKiB0aW1lcyBpbiByYXBpZCBzdWNjZXNzaW9uLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZVxuICAgICAqIHdlIGRvbid0IHByZS1lbXB0aXZlbHkgZGV0YWNoIGEgdmlldyB3aGlsZVxuICAgICAqIGl0IGlzIGluIG1pZC10cmFuc2l0aW9uLlxuICAgICAqXG4gICAgICogSW4gdGhpcyBpbnN0YW5jZSB3ZSBhbHNvIGRvIG5vdCBjYXJlIGFib3V0IHF1ZXJ5XG4gICAgICogcGFyYW1zIG9yIGZyYWdtZW50cyBhcyBpdCB3aWxsIGJlIHRoZSBzYW1lIHZpZXcgcmVnYXJkbGVzc1xuICAgICAqL1xuICAgIGNvbnN0IGxvY2F0aW9uV2l0aG91dFBhcmFtcyA9IGxvY2F0aW9uLnBhdGgoKS5zcGxpdCgnPycpWzBdO1xuICAgIGNvbnN0IGxvY2F0aW9uV2l0aG91dEZyYWdtZW50ID0gbG9jYXRpb25XaXRob3V0UGFyYW1zLnNwbGl0KCcjJylbMF07XG5cbiAgICBpZiAodmlldyAhPT0gYWN0aXZlUm91dGUgJiYgdmlldy51cmwgIT09IGxvY2F0aW9uV2l0aG91dEZyYWdtZW50KSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdmlldy5lbGVtZW50O1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnaW9uLXBhZ2UtaGlkZGVuJyk7XG4gICAgICB2aWV3LnJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRhY2goKTtcbiAgICB9XG4gIH0pO1xufTtcbiJdfQ==
@@ -0,0 +1,73 @@
1
+ export const insertView = (views, view, direction) => {
2
+ if (direction === 'root') {
3
+ return setRoot(views, view);
4
+ }
5
+ else if (direction === 'forward') {
6
+ return setForward(views, view);
7
+ }
8
+ else {
9
+ return setBack(views, view);
10
+ }
11
+ };
12
+ const setRoot = (views, view) => {
13
+ views = views.filter((v) => v.stackId !== view.stackId);
14
+ views.push(view);
15
+ return views;
16
+ };
17
+ const setForward = (views, view) => {
18
+ const index = views.indexOf(view);
19
+ if (index >= 0) {
20
+ views = views.filter((v) => v.stackId !== view.stackId || v.id <= view.id);
21
+ }
22
+ else {
23
+ views.push(view);
24
+ }
25
+ return views;
26
+ };
27
+ const setBack = (views, view) => {
28
+ const index = views.indexOf(view);
29
+ if (index >= 0) {
30
+ return views.filter((v) => v.stackId !== view.stackId || v.id <= view.id);
31
+ }
32
+ else {
33
+ return setRoot(views, view);
34
+ }
35
+ };
36
+ export const getUrl = (router, activatedRoute) => {
37
+ const urlTree = router.createUrlTree(['.'], { relativeTo: activatedRoute });
38
+ return router.serializeUrl(urlTree);
39
+ };
40
+ export const isTabSwitch = (enteringView, leavingView) => {
41
+ if (!leavingView) {
42
+ return true;
43
+ }
44
+ return enteringView.stackId !== leavingView.stackId;
45
+ };
46
+ export const computeStackId = (prefixUrl, url) => {
47
+ if (!prefixUrl) {
48
+ return undefined;
49
+ }
50
+ const segments = toSegments(url);
51
+ for (let i = 0; i < segments.length; i++) {
52
+ if (i >= prefixUrl.length) {
53
+ return segments[i];
54
+ }
55
+ if (segments[i] !== prefixUrl[i]) {
56
+ return undefined;
57
+ }
58
+ }
59
+ return undefined;
60
+ };
61
+ export const toSegments = (path) => {
62
+ return path
63
+ .split('/')
64
+ .map((s) => s.trim())
65
+ .filter((s) => s !== '');
66
+ };
67
+ export const destroyView = (view) => {
68
+ if (view) {
69
+ view.ref.destroy();
70
+ view.unlistenEvents();
71
+ }
72
+ };
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9jb21tb24vc3JjL2RpcmVjdGl2ZXMvbmF2aWdhdGlvbi9zdGFjay11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFrQixFQUFFLElBQWUsRUFBRSxTQUEwQixFQUFlLEVBQUU7SUFDekcsSUFBSSxTQUFTLEtBQUssTUFBTSxFQUFFO1FBQ3hCLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM3QjtTQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtRQUNsQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDaEM7U0FBTTtRQUNMLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztLQUM3QjtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBa0IsRUFBRSxJQUFlLEVBQUUsRUFBRTtJQUN0RCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBa0IsRUFBRSxJQUFlLEVBQUUsRUFBRTtJQUN6RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtRQUNkLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENB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b3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkV4dHJhcywgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB0eXBlIHsgQW5pbWF0aW9uQnVpbGRlciwgTmF2RGlyZWN0aW9uLCBSb3V0ZXJEaXJlY3Rpb24gfSBmcm9tICdAaW9uaWMvY29yZS9jb21wb25lbnRzJztcblxuZXhwb3J0IGNvbnN0IGluc2VydFZpZXcgPSAodmlld3M6IFJvdXRlVmlld1tdLCB2aWV3OiBSb3V0ZVZpZXcsIGRpcmVjdGlvbjogUm91dGVyRGlyZWN0aW9uKTogUm91dGVWaWV3W10gPT4ge1xuICBpZiAoZGlyZWN0aW9uID09PSAncm9vdCcpIHtcbiAgICByZXR1cm4gc2V0Um9vdCh2aWV3cywgdmlldyk7XG4gIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnZm9yd2FyZCcpIHtcbiAgICByZXR1cm4gc2V0Rm9yd2FyZCh2aWV3cywgdmlldyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNldEJhY2sodmlld3MsIHZpZXcpO1xuICB9XG59O1xuXG5jb25zdCBzZXRSb290ID0gKHZpZXdzOiBSb3V0ZVZpZXdbXSwgdmlldzogUm91dGVWaWV3KSA9PiB7XG4gIHZpZXdzID0gdmlld3MuZmlsdGVyKCh2KSA9PiB2LnN0YWNrSWQgIT09IHZpZXcuc3RhY2tJZCk7XG4gIHZpZXdzLnB1c2godmlldyk7XG4gIHJldHVybiB2aWV3cztcbn07XG5cbmNvbnN0IHNldEZvcndhcmQgPSAodmlld3M6IFJvdXRlVmlld1tdLCB2aWV3OiBSb3V0ZVZpZXcpID0+IHtcbiAgY29uc3QgaW5kZXggPSB2aWV3cy5pbmRleE9mKHZpZXcpO1xuICBpZiAoaW5kZXggPj0gMCkge1xuICAgIHZpZXdzID0gdmlld3MuZmlsdGVyKCh2KSA9PiB2LnN0YWNrSWQgIT09IHZpZXcuc3RhY2tJZCB8fCB2LmlkIDw9IHZpZXcuaWQpO1xuICB9IGVsc2Uge1xuICAgIHZpZXdzLnB1c2godmlldyk7XG4gIH1cbiAgcmV0dXJuIHZpZXdzO1xufTtcblxuY29uc3Qgc2V0QmFjayA9ICh2aWV3czogUm91dGVWaWV3W10sIHZpZXc6IFJvdXRlVmlldykgPT4ge1xuICBjb25zdCBpbmRleCA9IHZpZXdzLmluZGV4T2Yodmlldyk7XG4gIGlmIChpbmRleCA+PSAwKSB7XG4gICAgcmV0dXJuIHZpZXdzLmZpbHRlcigodikgPT4gdi5zdGFja0lkICE9PSB2aWV3LnN0YWNrSWQgfHwgdi5pZCA8PSB2aWV3LmlkKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc2V0Um9vdCh2aWV3cywgdmlldyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVcmwgPSAocm91dGVyOiBSb3V0ZXIsIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHVybFRyZWUgPSByb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy4nXSwgeyByZWxhdGl2ZVRvOiBhY3RpdmF0ZWRSb3V0ZSB9KTtcbiAgcmV0dXJuIHJvdXRlci5zZXJpYWxpemVVcmwodXJsVHJlZSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUYWJTd2l0Y2ggPSAoZW50ZXJpbmdWaWV3OiBSb3V0ZVZpZXcsIGxlYXZpbmdWaWV3OiBSb3V0ZVZpZXcgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgaWYgKCFsZWF2aW5nVmlldykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBlbnRlcmluZ1ZpZXcuc3RhY2tJZCAhPT0gbGVhdmluZ1ZpZXcuc3RhY2tJZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21wdXRlU3RhY2tJZCA9IChwcmVmaXhVcmw6IHN0cmluZ1tdIHwgdW5kZWZpbmVkLCB1cmw6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghcHJlZml4VXJsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBzZWdtZW50cyA9IHRvU2VnbWVudHModXJsKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpID49IHByZWZpeFVybC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBzZWdtZW50c1tpXTtcbiAgICB9XG4gICAgaWYgKHNlZ21lbnRzW2ldICE9PSBwcmVmaXhVcmxbaV0pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TZWdtZW50cyA9IChwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gIHJldHVybiBwYXRoXG4gICAgLnNwbGl0KCcvJylcbiAgICAubWFwKChzKSA9PiBzLnRyaW0oKSlcbiAgICAuZmlsdGVyKChzKSA9PiBzICE9PSAnJyk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVzdHJveVZpZXcgPSAodmlldzogUm91dGVWaWV3IHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG4gIGlmICh2aWV3KSB7XG4gICAgdmlldy5yZWYuZGVzdHJveSgpO1xuICAgIHZpZXcudW5saXN0ZW5FdmVudHMoKTtcbiAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja1dpbGxDaGFuZ2VFdmVudCB7XG4gIGVudGVyaW5nVmlldzogUm91dGVWaWV3O1xuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSBldmVudCBpcyB0cmlnZ2VkIGFzIGEgcmVzdWx0IG9mIGEgc3dpdGNoXG4gICAqIGJldHdlZW4gdGFiIG5hdmlnYXRpb24gc3RhY2tzLlxuICAgKi9cbiAgdGFiU3dpdGNoOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrRGlkQ2hhbmdlRXZlbnQge1xuICBlbnRlcmluZ1ZpZXc6IFJvdXRlVmlldztcbiAgZGlyZWN0aW9uOiBSb3V0ZXJEaXJlY3Rpb247XG4gIGFuaW1hdGlvbjogTmF2RGlyZWN0aW9uIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSBldmVudCBpcyB0cmlnZ2VkIGFzIGEgcmVzdWx0IG9mIGEgc3dpdGNoXG4gICAqIGJldHdlZW4gdGFiIG5hdmlnYXRpb24gc3RhY2tzLlxuICAgKi9cbiAgdGFiU3dpdGNoOiBib29sZWFuO1xufVxuXG4vLyBUT0RPKEZXLTI4MjcpOiB0eXBlc1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVZpZXcge1xuICBpZDogbnVtYmVyO1xuICB1cmw6IHN0cmluZztcbiAgc3RhY2tJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgcmVmOiBDb21wb25lbnRSZWY8YW55PjtcbiAgc2F2ZWREYXRhPzogYW55O1xuICBzYXZlZEV4dHJhcz86IE5hdmlnYXRpb25FeHRyYXM7XG4gIHVubGlzdGVuRXZlbnRzOiAoKSA9PiB2b2lkO1xuICBhbmltYXRpb25CdWlsZGVyPzogQW5pbWF0aW9uQnVpbGRlcjtcbn1cbiJdfQ==