monkey-front-core 0.0.500 → 0.0.501

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 (384) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/alerts/alerts.component.mjs +45 -45
  3. package/esm2020/lib/components/alerts/alerts.module.mjs +21 -21
  4. package/esm2020/lib/components/alerts/index.mjs +3 -3
  5. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.component.mjs +29 -29
  6. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.module.mjs +43 -43
  7. package/esm2020/lib/components/closed-to-maintenance/index.mjs +3 -3
  8. package/esm2020/lib/components/currency-config/currency-config.component.mjs +39 -39
  9. package/esm2020/lib/components/currency-config/currency-config.module.mjs +39 -39
  10. package/esm2020/lib/components/currency-config/index.mjs +3 -3
  11. package/esm2020/lib/components/index.mjs +6 -6
  12. package/esm2020/lib/components/progress-bar/index.mjs +4 -4
  13. package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +23 -23
  14. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +18 -18
  15. package/esm2020/lib/components/progress-bar/progress-bar.service.mjs +50 -50
  16. package/esm2020/lib/components/version-changed/index.mjs +3 -3
  17. package/esm2020/lib/components/version-changed/version-changed.component.mjs +24 -24
  18. package/esm2020/lib/components/version-changed/version-changed.module.mjs +39 -39
  19. package/esm2020/lib/core/decorators/index.mjs +5 -5
  20. package/esm2020/lib/core/decorators/monkeyecx-charts-decorators.mjs +40 -40
  21. package/esm2020/lib/core/decorators/monkeyecx-decorators.mjs +111 -111
  22. package/esm2020/lib/core/decorators/monkeyecx-download-decorators.mjs +26 -26
  23. package/esm2020/lib/core/decorators/monkeyecx-upload-decorators.mjs +26 -26
  24. package/esm2020/lib/core/directives/index.mjs +13 -13
  25. package/esm2020/lib/core/directives/monkeyecx-directives-module.mjs +73 -73
  26. package/esm2020/lib/core/directives/monkeyecx-drag-drop.mjs +57 -57
  27. package/esm2020/lib/core/directives/monkeyecx-feature-by-program-directive.mjs +54 -54
  28. package/esm2020/lib/core/directives/monkeyecx-feature-directive.mjs +68 -68
  29. package/esm2020/lib/core/directives/monkeyecx-format-currency.mjs +44 -44
  30. package/esm2020/lib/core/directives/monkeyecx-format-upper.mjs +67 -67
  31. package/esm2020/lib/core/directives/monkeyecx-only-alpha-numeric-directive.mjs +28 -28
  32. package/esm2020/lib/core/directives/monkeyecx-only-number-directive.mjs +28 -28
  33. package/esm2020/lib/core/directives/monkeyecx-popover-options.directive.mjs +39 -39
  34. package/esm2020/lib/core/directives/monkeyecx-popover.directive.mjs +212 -212
  35. package/esm2020/lib/core/directives/monkeyecx-security-directive.mjs +75 -75
  36. package/esm2020/lib/core/directives/monkeyecx-tooltip-directive.mjs +123 -123
  37. package/esm2020/lib/core/index.mjs +10 -10
  38. package/esm2020/lib/core/injectors/index.mjs +4 -4
  39. package/esm2020/lib/core/interceptors/index.mjs +6 -6
  40. package/esm2020/lib/core/interceptors/monkeyecx-http-config-error.interceptor.mjs +49 -49
  41. package/esm2020/lib/core/interceptors/monkeyecx-http-config-header.interceptor.mjs +59 -59
  42. package/esm2020/lib/core/interceptors/monkeyecx-http-config-interceptor.module.mjs +47 -47
  43. package/esm2020/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.mjs +43 -43
  44. package/esm2020/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.mjs +37 -37
  45. package/esm2020/lib/core/interfaces/index.mjs +35 -35
  46. package/esm2020/lib/core/interfaces/monkeyecx-auth-credentials.mjs +2 -2
  47. package/esm2020/lib/core/interfaces/monkeyecx-company-pendencies.mjs +2 -2
  48. package/esm2020/lib/core/interfaces/monkeyecx-company.mjs +2 -2
  49. package/esm2020/lib/core/interfaces/monkeyecx-config-bootstrap.mjs +1 -1
  50. package/esm2020/lib/core/interfaces/monkeyecx-config.mjs +2 -2
  51. package/esm2020/lib/core/interfaces/monkeyecx-country-security.mjs +2 -2
  52. package/esm2020/lib/core/interfaces/monkeyecx-error-response.mjs +2 -2
  53. package/esm2020/lib/core/interfaces/monkeyecx-filter.mjs +2 -2
  54. package/esm2020/lib/core/interfaces/monkeyecx-handled-error-response.mjs +2 -2
  55. package/esm2020/lib/core/interfaces/monkeyecx-header-credentials.mjs +2 -2
  56. package/esm2020/lib/core/interfaces/monkeyecx-intercom-options.mjs +2 -2
  57. package/esm2020/lib/core/interfaces/monkeyecx-interface.mjs +1 -1
  58. package/esm2020/lib/core/interfaces/monkeyecx-me-credentials.mjs +2 -2
  59. package/esm2020/lib/core/interfaces/monkeyecx-navigation.mjs +2 -2
  60. package/esm2020/lib/core/interfaces/monkeyecx-pagination.mjs +2 -2
  61. package/esm2020/lib/core/interfaces/monkeyecx-program.mjs +2 -2
  62. package/esm2020/lib/core/interfaces/monkeyecx-releases.mjs +2 -2
  63. package/esm2020/lib/core/interfaces/monkeyecx-request-in-progress.mjs +2 -2
  64. package/esm2020/lib/core/interfaces/monkeyecx-request-paged.mjs +2 -2
  65. package/esm2020/lib/core/interfaces/monkeyecx-resolver.mjs +2 -2
  66. package/esm2020/lib/core/interfaces/monkeyecx-response-links.mjs +2 -2
  67. package/esm2020/lib/core/interfaces/monkeyecx-response-paged.mjs +2 -2
  68. package/esm2020/lib/core/interfaces/monkeyecx-saved-state.mjs +2 -2
  69. package/esm2020/lib/core/interfaces/monkeyecx-scroll-options.mjs +2 -2
  70. package/esm2020/lib/core/interfaces/monkeyecx-service-credentials.mjs +2 -2
  71. package/esm2020/lib/core/interfaces/monkeyecx-storage.mjs +2 -2
  72. package/esm2020/lib/core/interfaces/monkeyecx-store.mjs +2 -2
  73. package/esm2020/lib/core/interfaces/monkeyecx-support-options.mjs +2 -2
  74. package/esm2020/lib/core/interfaces/monkeyecx-token-credentials.mjs +1 -1
  75. package/esm2020/lib/core/interfaces/monkeyecx-translate-options.mjs +2 -2
  76. package/esm2020/lib/core/interfaces/request-download/index.mjs +4 -4
  77. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-download.mjs +2 -2
  78. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-downloaded.mjs +2 -2
  79. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-item-download.mjs +2 -2
  80. package/esm2020/lib/core/interfaces/request-queue/index.mjs +4 -4
  81. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.mjs +2 -2
  82. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.mjs +2 -2
  83. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-queue.mjs +2 -2
  84. package/esm2020/lib/core/interfaces/request-upload/index.mjs +3 -3
  85. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.mjs +2 -2
  86. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-upload.mjs +2 -2
  87. package/esm2020/lib/core/interfaces/schedules/index.mjs +2 -2
  88. package/esm2020/lib/core/interfaces/schedules/monkeyecx-request-schedule.mjs +2 -2
  89. package/esm2020/lib/core/model/index.mjs +3 -3
  90. package/esm2020/lib/core/model/monkeyecx-links.model.mjs +8 -8
  91. package/esm2020/lib/core/model/monkeyecx-model.mjs +26 -26
  92. package/esm2020/lib/core/pipes/index.mjs +22 -22
  93. package/esm2020/lib/core/pipes/monkeyecx-blob-secure.mjs +26 -26
  94. package/esm2020/lib/core/pipes/monkeyecx-display-first-name.mjs +19 -19
  95. package/esm2020/lib/core/pipes/monkeyecx-display-initials.mjs +21 -21
  96. package/esm2020/lib/core/pipes/monkeyecx-display-support-phone.mjs +33 -33
  97. package/esm2020/lib/core/pipes/monkeyecx-format-address.mjs +20 -20
  98. package/esm2020/lib/core/pipes/monkeyecx-format-beautify-json.mjs +38 -38
  99. package/esm2020/lib/core/pipes/monkeyecx-format-currency.mjs +42 -42
  100. package/esm2020/lib/core/pipes/monkeyecx-format-date-group.mjs +45 -45
  101. package/esm2020/lib/core/pipes/monkeyecx-format-date-timelapse.mjs +32 -32
  102. package/esm2020/lib/core/pipes/monkeyecx-format-date-unix-timelapse.mjs +36 -36
  103. package/esm2020/lib/core/pipes/monkeyecx-format-date.mjs +29 -29
  104. package/esm2020/lib/core/pipes/monkeyecx-format-document.mjs +20 -20
  105. package/esm2020/lib/core/pipes/monkeyecx-format-number.mjs +20 -20
  106. package/esm2020/lib/core/pipes/monkeyecx-format-phone.mjs +42 -42
  107. package/esm2020/lib/core/pipes/monkeyecx-format-size.mjs +20 -20
  108. package/esm2020/lib/core/pipes/monkeyecx-format-tax.mjs +23 -23
  109. package/esm2020/lib/core/pipes/monkeyecx-format-type-document.mjs +19 -19
  110. package/esm2020/lib/core/pipes/monkeyecx-format-value.mjs +19 -19
  111. package/esm2020/lib/core/pipes/monkeyecx-format-zipcode.mjs +19 -19
  112. package/esm2020/lib/core/pipes/monkeyecx-pipes.module.mjs +121 -121
  113. package/esm2020/lib/core/pipes/monkeyecx-text-truncate.mjs +23 -23
  114. package/esm2020/lib/core/pipes/monkeyecx-truncate-qtd.mjs +16 -16
  115. package/esm2020/lib/core/services/alerts/index.mjs +2 -2
  116. package/esm2020/lib/core/services/alerts/monkeyecx-alerts.service.mjs +42 -42
  117. package/esm2020/lib/core/services/auth/index.mjs +6 -6
  118. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-company.service.mjs +28 -28
  119. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-login.service.mjs +27 -27
  120. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-role.service.mjs +79 -79
  121. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard.service.mjs +26 -26
  122. package/esm2020/lib/core/services/auth/monkeyecx-authentication.service.mjs +78 -78
  123. package/esm2020/lib/core/services/commons/index.mjs +3 -3
  124. package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve-base.service.mjs +108 -108
  125. package/esm2020/lib/core/services/commons/monkeyecx-commons-resolve.service.mjs +126 -126
  126. package/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +362 -362
  127. package/esm2020/lib/core/services/config/monkeyecx-alerts-config.service.mjs +42 -42
  128. package/esm2020/lib/core/services/config/monkeyecx-config.module.mjs +28 -28
  129. package/esm2020/lib/core/services/config/monkeyecx-config.service.mjs +106 -106
  130. package/esm2020/lib/core/services/config/monkeyecx-currency-config.service.mjs +84 -84
  131. package/esm2020/lib/core/services/config/monkeyecx-error-config.service.mjs +85 -85
  132. package/esm2020/lib/core/services/config/monkeyecx-feature-toggle.service.mjs +76 -76
  133. package/esm2020/lib/core/services/config/monkeyecx-gtm-config.service.mjs +50 -50
  134. package/esm2020/lib/core/services/config/monkeyecx-i18n-config.service.mjs +138 -138
  135. package/esm2020/lib/core/services/config/monkeyecx-logs-config.service.mjs +34 -34
  136. package/esm2020/lib/core/services/config/monkeyecx-maintenance-config.service.mjs +37 -37
  137. package/esm2020/lib/core/services/config/monkeyecx-security-console-config.service.mjs +47 -47
  138. package/esm2020/lib/core/services/config/monkeyecx-service-worker-config.service.mjs +53 -53
  139. package/esm2020/lib/core/services/error/index.mjs +5 -5
  140. package/esm2020/lib/core/services/error/monkeyecx-error-handling.module.mjs +27 -27
  141. package/esm2020/lib/core/services/error/monkeyecx-error-handling.service.mjs +37 -37
  142. package/esm2020/lib/core/services/error/monkeyecx-http-error-handling.service.mjs +138 -138
  143. package/esm2020/lib/core/services/error/monkeyecx-others-errors-handling.service.mjs +29 -29
  144. package/esm2020/lib/core/services/index.mjs +26 -26
  145. package/esm2020/lib/core/services/logged/index.mjs +2 -2
  146. package/esm2020/lib/core/services/logged/monkeyecx-logged-handling.service.mjs +40 -40
  147. package/esm2020/lib/core/services/monkeyecx-handling.service.mjs +50 -50
  148. package/esm2020/lib/core/services/monkeyecx-service.service.mjs +104 -104
  149. package/esm2020/lib/core/services/pagination/index.mjs +2 -2
  150. package/esm2020/lib/core/services/pagination/monkeyecx-pagination.service.mjs +29 -29
  151. package/esm2020/lib/core/services/request-download/index.mjs +3 -3
  152. package/esm2020/lib/core/services/request-download/monkeyecx-request-download-handling.service.mjs +93 -93
  153. package/esm2020/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.mjs +61 -61
  154. package/esm2020/lib/core/services/request-paged/index.mjs +2 -2
  155. package/esm2020/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.mjs +42 -42
  156. package/esm2020/lib/core/services/request-queue/index.mjs +3 -3
  157. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.mjs +114 -114
  158. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.mjs +119 -119
  159. package/esm2020/lib/core/services/routes/index.mjs +2 -2
  160. package/esm2020/lib/core/services/routes/monkeyecx-dicovery-params.service.mjs +54 -54
  161. package/esm2020/lib/core/services/schedules/index.mjs +2 -2
  162. package/esm2020/lib/core/services/schedules/monkeyecx-request-schedule.service.mjs +188 -188
  163. package/esm2020/lib/core/services/storage/index.mjs +3 -3
  164. package/esm2020/lib/core/services/storage/monkeyecx-cookie-storage.service.mjs +32 -32
  165. package/esm2020/lib/core/services/storage/monkeyecx-token-storage.service.mjs +236 -236
  166. package/esm2020/lib/core/services/store/index.mjs +4 -4
  167. package/esm2020/lib/core/services/store/monkeyecx-store-base.service.mjs +170 -170
  168. package/esm2020/lib/core/services/store/monkeyecx-store.actions.mjs +25 -25
  169. package/esm2020/lib/core/services/store/monkeyecx-store.selector.mjs +80 -80
  170. package/esm2020/lib/core/services/store/monkeyecx-store.service.mjs +189 -189
  171. package/esm2020/lib/core/specification-search/index.mjs +2 -2
  172. package/esm2020/lib/core/specification-search/monkeyecx-specification-search.mjs +108 -108
  173. package/esm2020/lib/core/utils/decorators-utils.mjs +40 -40
  174. package/esm2020/lib/core/utils/index.mjs +8 -8
  175. package/esm2020/lib/core/utils/statics.mjs +45 -45
  176. package/esm2020/lib/core/utils/utils.mjs +267 -267
  177. package/esm2020/lib/core/utils/validate-utils.mjs +205 -205
  178. package/esm2020/lib/core/utils/validators.mjs +268 -268
  179. package/esm2020/lib/monkey-front-core.module.mjs +71 -71
  180. package/esm2020/lib/store/actions/index.mjs +2 -2
  181. package/esm2020/lib/store/actions/monkeyecx-storage.actions.mjs +8 -8
  182. package/esm2020/lib/store/index.mjs +4 -4
  183. package/esm2020/lib/store/reducers/index.mjs +3 -3
  184. package/esm2020/lib/store/reducers/monkeyecx-seeder.reducer.mjs +53 -53
  185. package/esm2020/lib/store/reducers/monkeyecx-storage.reducer.mjs +40 -40
  186. package/esm2020/lib/store/selectors/index.mjs +2 -2
  187. package/esm2020/lib/store/selectors/monkeyecx-storage.selector.mjs +17 -17
  188. package/esm2020/monkey-front-core.mjs +4 -4
  189. package/esm2020/public-api.mjs +8 -8
  190. package/fesm2015/monkey-front-core.mjs +6296 -6296
  191. package/fesm2015/monkey-front-core.mjs.map +1 -1
  192. package/fesm2020/monkey-front-core.mjs +6324 -6324
  193. package/fesm2020/monkey-front-core.mjs.map +1 -1
  194. package/lib/components/alerts/alerts.component.d.ts +22 -22
  195. package/lib/components/alerts/alerts.module.d.ts +10 -10
  196. package/lib/components/alerts/index.d.ts +2 -2
  197. package/lib/components/closed-to-maintenance/closed-to-maintenance.component.d.ts +13 -13
  198. package/lib/components/closed-to-maintenance/closed-to-maintenance.module.d.ts +11 -11
  199. package/lib/components/closed-to-maintenance/index.d.ts +2 -2
  200. package/lib/components/currency-config/currency-config.component.d.ts +17 -17
  201. package/lib/components/currency-config/currency-config.module.d.ts +10 -10
  202. package/lib/components/currency-config/index.d.ts +2 -2
  203. package/lib/components/index.d.ts +5 -5
  204. package/lib/components/progress-bar/index.d.ts +3 -3
  205. package/lib/components/progress-bar/progress-bar.component.d.ts +11 -11
  206. package/lib/components/progress-bar/progress-bar.module.d.ts +8 -8
  207. package/lib/components/progress-bar/progress-bar.service.d.ts +14 -14
  208. package/lib/components/version-changed/index.d.ts +2 -2
  209. package/lib/components/version-changed/version-changed.component.d.ts +9 -9
  210. package/lib/components/version-changed/version-changed.module.d.ts +10 -10
  211. package/lib/core/decorators/index.d.ts +4 -4
  212. package/lib/core/decorators/monkeyecx-charts-decorators.d.ts +1 -1
  213. package/lib/core/decorators/monkeyecx-decorators.d.ts +7 -7
  214. package/lib/core/decorators/monkeyecx-download-decorators.d.ts +2 -2
  215. package/lib/core/decorators/monkeyecx-upload-decorators.d.ts +2 -2
  216. package/lib/core/directives/index.d.ts +12 -12
  217. package/lib/core/directives/monkeyecx-directives-module.d.ts +19 -19
  218. package/lib/core/directives/monkeyecx-drag-drop.d.ts +12 -12
  219. package/lib/core/directives/monkeyecx-feature-by-program-directive.d.ts +16 -16
  220. package/lib/core/directives/monkeyecx-feature-directive.d.ts +17 -17
  221. package/lib/core/directives/monkeyecx-format-currency.d.ts +16 -16
  222. package/lib/core/directives/monkeyecx-format-upper.d.ts +18 -18
  223. package/lib/core/directives/monkeyecx-only-alpha-numeric-directive.d.ts +9 -9
  224. package/lib/core/directives/monkeyecx-only-number-directive.d.ts +9 -9
  225. package/lib/core/directives/monkeyecx-popover-options.directive.d.ts +19 -19
  226. package/lib/core/directives/monkeyecx-popover.directive.d.ts +43 -43
  227. package/lib/core/directives/monkeyecx-security-directive.d.ts +18 -18
  228. package/lib/core/directives/monkeyecx-tooltip-directive.d.ts +23 -23
  229. package/lib/core/index.d.ts +10 -10
  230. package/lib/core/injectors/index.d.ts +4 -4
  231. package/lib/core/interceptors/index.d.ts +5 -5
  232. package/lib/core/interceptors/monkeyecx-http-config-error.interceptor.d.ts +18 -18
  233. package/lib/core/interceptors/monkeyecx-http-config-header.interceptor.d.ts +16 -16
  234. package/lib/core/interceptors/monkeyecx-http-config-interceptor.module.d.ts +9 -9
  235. package/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.d.ts +12 -12
  236. package/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.d.ts +14 -14
  237. package/lib/core/interfaces/index.d.ts +34 -34
  238. package/lib/core/interfaces/monkeyecx-auth-credentials.d.ts +15 -15
  239. package/lib/core/interfaces/monkeyecx-company-pendencies.d.ts +14 -14
  240. package/lib/core/interfaces/monkeyecx-company.d.ts +10 -10
  241. package/lib/core/interfaces/monkeyecx-config-bootstrap.d.ts +14 -14
  242. package/lib/core/interfaces/monkeyecx-config.d.ts +132 -132
  243. package/lib/core/interfaces/monkeyecx-country-security.d.ts +4 -4
  244. package/lib/core/interfaces/monkeyecx-error-response.d.ts +5 -5
  245. package/lib/core/interfaces/monkeyecx-filter.d.ts +42 -42
  246. package/lib/core/interfaces/monkeyecx-handled-error-response.d.ts +10 -10
  247. package/lib/core/interfaces/monkeyecx-header-credentials.d.ts +4 -4
  248. package/lib/core/interfaces/monkeyecx-intercom-options.d.ts +4 -4
  249. package/lib/core/interfaces/monkeyecx-interface.d.ts +11 -11
  250. package/lib/core/interfaces/monkeyecx-me-credentials.d.ts +22 -22
  251. package/lib/core/interfaces/monkeyecx-navigation.d.ts +27 -27
  252. package/lib/core/interfaces/monkeyecx-pagination.d.ts +26 -26
  253. package/lib/core/interfaces/monkeyecx-program.d.ts +10 -10
  254. package/lib/core/interfaces/monkeyecx-releases.d.ts +9 -9
  255. package/lib/core/interfaces/monkeyecx-request-in-progress.d.ts +3 -3
  256. package/lib/core/interfaces/monkeyecx-request-paged.d.ts +23 -23
  257. package/lib/core/interfaces/monkeyecx-resolver.d.ts +39 -39
  258. package/lib/core/interfaces/monkeyecx-response-links.d.ts +11 -11
  259. package/lib/core/interfaces/monkeyecx-response-paged.d.ts +6 -6
  260. package/lib/core/interfaces/monkeyecx-saved-state.d.ts +5 -5
  261. package/lib/core/interfaces/monkeyecx-scroll-options.d.ts +5 -5
  262. package/lib/core/interfaces/monkeyecx-service-credentials.d.ts +12 -12
  263. package/lib/core/interfaces/monkeyecx-storage.d.ts +38 -38
  264. package/lib/core/interfaces/monkeyecx-store.d.ts +35 -35
  265. package/lib/core/interfaces/monkeyecx-support-options.d.ts +4 -4
  266. package/lib/core/interfaces/monkeyecx-token-credentials.d.ts +21 -21
  267. package/lib/core/interfaces/monkeyecx-translate-options.d.ts +4 -4
  268. package/lib/core/interfaces/request-download/index.d.ts +3 -3
  269. package/lib/core/interfaces/request-download/monkeyecx-request-download.d.ts +10 -10
  270. package/lib/core/interfaces/request-download/monkeyecx-request-downloaded.d.ts +7 -7
  271. package/lib/core/interfaces/request-download/monkeyecx-request-item-download.d.ts +7 -7
  272. package/lib/core/interfaces/request-queue/index.d.ts +3 -3
  273. package/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.d.ts +7 -7
  274. package/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.d.ts +6 -6
  275. package/lib/core/interfaces/request-queue/monkeyecx-request-queue.d.ts +8 -8
  276. package/lib/core/interfaces/request-upload/index.d.ts +2 -2
  277. package/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.d.ts +5 -5
  278. package/lib/core/interfaces/request-upload/monkeyecx-request-upload.d.ts +10 -10
  279. package/lib/core/interfaces/schedules/index.d.ts +1 -1
  280. package/lib/core/interfaces/schedules/monkeyecx-request-schedule.d.ts +13 -13
  281. package/lib/core/model/index.d.ts +2 -2
  282. package/lib/core/model/monkeyecx-links.model.d.ts +4 -4
  283. package/lib/core/model/monkeyecx-model.d.ts +14 -14
  284. package/lib/core/pipes/index.d.ts +22 -22
  285. package/lib/core/pipes/monkeyecx-blob-secure.d.ts +13 -13
  286. package/lib/core/pipes/monkeyecx-display-first-name.d.ts +7 -7
  287. package/lib/core/pipes/monkeyecx-display-initials.d.ts +7 -7
  288. package/lib/core/pipes/monkeyecx-display-support-phone.d.ts +18 -18
  289. package/lib/core/pipes/monkeyecx-format-address.d.ts +14 -14
  290. package/lib/core/pipes/monkeyecx-format-beautify-json.d.ts +8 -8
  291. package/lib/core/pipes/monkeyecx-format-currency.d.ts +12 -12
  292. package/lib/core/pipes/monkeyecx-format-date-group.d.ts +11 -11
  293. package/lib/core/pipes/monkeyecx-format-date-timelapse.d.ts +7 -7
  294. package/lib/core/pipes/monkeyecx-format-date-unix-timelapse.d.ts +7 -7
  295. package/lib/core/pipes/monkeyecx-format-date.d.ts +12 -12
  296. package/lib/core/pipes/monkeyecx-format-document.d.ts +7 -7
  297. package/lib/core/pipes/monkeyecx-format-number.d.ts +7 -7
  298. package/lib/core/pipes/monkeyecx-format-phone.d.ts +7 -7
  299. package/lib/core/pipes/monkeyecx-format-size.d.ts +7 -7
  300. package/lib/core/pipes/monkeyecx-format-tax.d.ts +7 -7
  301. package/lib/core/pipes/monkeyecx-format-type-document.d.ts +7 -7
  302. package/lib/core/pipes/monkeyecx-format-value.d.ts +7 -7
  303. package/lib/core/pipes/monkeyecx-format-zipcode.d.ts +7 -7
  304. package/lib/core/pipes/monkeyecx-pipes.module.d.ts +27 -27
  305. package/lib/core/pipes/monkeyecx-text-truncate.d.ts +7 -7
  306. package/lib/core/pipes/monkeyecx-truncate-qtd.d.ts +7 -7
  307. package/lib/core/services/alerts/index.d.ts +1 -1
  308. package/lib/core/services/alerts/monkeyecx-alerts.service.d.ts +21 -21
  309. package/lib/core/services/auth/index.d.ts +5 -5
  310. package/lib/core/services/auth/monkeyecx-auth-guard-company.service.d.ts +10 -10
  311. package/lib/core/services/auth/monkeyecx-auth-guard-login.service.d.ts +10 -10
  312. package/lib/core/services/auth/monkeyecx-auth-guard-role.service.d.ts +16 -16
  313. package/lib/core/services/auth/monkeyecx-auth-guard.service.d.ts +10 -10
  314. package/lib/core/services/auth/monkeyecx-authentication.service.d.ts +35 -35
  315. package/lib/core/services/commons/index.d.ts +3 -3
  316. package/lib/core/services/commons/monkeyecx-commons-resolve-base.service.d.ts +46 -46
  317. package/lib/core/services/commons/monkeyecx-commons-resolve.service.d.ts +60 -60
  318. package/lib/core/services/commons/monkeyecx-commons.service.d.ts +120 -120
  319. package/lib/core/services/config/monkeyecx-alerts-config.service.d.ts +11 -11
  320. package/lib/core/services/config/monkeyecx-config.module.d.ts +9 -9
  321. package/lib/core/services/config/monkeyecx-config.service.d.ts +36 -36
  322. package/lib/core/services/config/monkeyecx-currency-config.service.d.ts +15 -15
  323. package/lib/core/services/config/monkeyecx-error-config.service.d.ts +8 -8
  324. package/lib/core/services/config/monkeyecx-feature-toggle.service.d.ts +16 -16
  325. package/lib/core/services/config/monkeyecx-gtm-config.service.d.ts +8 -8
  326. package/lib/core/services/config/monkeyecx-i18n-config.service.d.ts +21 -21
  327. package/lib/core/services/config/monkeyecx-logs-config.service.d.ts +7 -7
  328. package/lib/core/services/config/monkeyecx-maintenance-config.service.d.ts +13 -13
  329. package/lib/core/services/config/monkeyecx-security-console-config.service.d.ts +12 -12
  330. package/lib/core/services/config/monkeyecx-service-worker-config.service.d.ts +16 -16
  331. package/lib/core/services/error/index.d.ts +4 -4
  332. package/lib/core/services/error/monkeyecx-error-handling.module.d.ts +9 -9
  333. package/lib/core/services/error/monkeyecx-error-handling.service.d.ts +9 -9
  334. package/lib/core/services/error/monkeyecx-http-error-handling.service.d.ts +26 -26
  335. package/lib/core/services/error/monkeyecx-others-errors-handling.service.d.ts +9 -9
  336. package/lib/core/services/index.d.ts +25 -25
  337. package/lib/core/services/logged/index.d.ts +1 -1
  338. package/lib/core/services/logged/monkeyecx-logged-handling.service.d.ts +14 -14
  339. package/lib/core/services/monkeyecx-handling.service.d.ts +22 -22
  340. package/lib/core/services/monkeyecx-service.service.d.ts +18 -18
  341. package/lib/core/services/pagination/index.d.ts +1 -1
  342. package/lib/core/services/pagination/monkeyecx-pagination.service.d.ts +9 -9
  343. package/lib/core/services/request-download/index.d.ts +2 -2
  344. package/lib/core/services/request-download/monkeyecx-request-download-handling.service.d.ts +18 -18
  345. package/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.d.ts +16 -16
  346. package/lib/core/services/request-paged/index.d.ts +1 -1
  347. package/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.d.ts +11 -11
  348. package/lib/core/services/request-queue/index.d.ts +2 -2
  349. package/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.d.ts +21 -21
  350. package/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.d.ts +23 -23
  351. package/lib/core/services/routes/index.d.ts +1 -1
  352. package/lib/core/services/routes/monkeyecx-dicovery-params.service.d.ts +13 -13
  353. package/lib/core/services/schedules/index.d.ts +1 -1
  354. package/lib/core/services/schedules/monkeyecx-request-schedule.service.d.ts +47 -47
  355. package/lib/core/services/storage/index.d.ts +2 -2
  356. package/lib/core/services/storage/monkeyecx-cookie-storage.service.d.ts +11 -11
  357. package/lib/core/services/storage/monkeyecx-token-storage.service.d.ts +30 -30
  358. package/lib/core/services/store/index.d.ts +4 -4
  359. package/lib/core/services/store/monkeyecx-store-base.service.d.ts +47 -47
  360. package/lib/core/services/store/monkeyecx-store.actions.d.ts +56 -56
  361. package/lib/core/services/store/monkeyecx-store.selector.d.ts +31 -31
  362. package/lib/core/services/store/monkeyecx-store.service.d.ts +50 -50
  363. package/lib/core/specification-search/index.d.ts +1 -1
  364. package/lib/core/specification-search/monkeyecx-specification-search.d.ts +20 -20
  365. package/lib/core/utils/decorators-utils.d.ts +5 -5
  366. package/lib/core/utils/index.d.ts +6 -6
  367. package/lib/core/utils/statics.d.ts +34 -34
  368. package/lib/core/utils/utils.d.ts +26 -26
  369. package/lib/core/utils/validate-utils.d.ts +66 -66
  370. package/lib/core/utils/validators.d.ts +36 -36
  371. package/lib/monkey-front-core.module.d.ts +19 -19
  372. package/lib/store/actions/index.d.ts +1 -1
  373. package/lib/store/actions/monkeyecx-storage.actions.d.ts +23 -23
  374. package/lib/store/index.d.ts +3 -3
  375. package/lib/store/reducers/index.d.ts +2 -2
  376. package/lib/store/reducers/monkeyecx-seeder.reducer.d.ts +2 -2
  377. package/lib/store/reducers/monkeyecx-storage.reducer.d.ts +13 -13
  378. package/lib/store/selectors/index.d.ts +1 -1
  379. package/lib/store/selectors/monkeyecx-storage.selector.d.ts +8 -8
  380. package/monkey-front-core-0.0.501.tgz +0 -0
  381. package/monkey-front-core.d.ts +5 -5
  382. package/package.json +3 -3
  383. package/public-api.d.ts +4 -4
  384. package/monkey-front-core-0.0.500.tgz +0 -0
@@ -1,212 +1,212 @@
1
- import { TemplatePortal } from '@angular/cdk/portal';
2
- import { Directive, Inject, Input, Optional } from '@angular/core';
3
- import { Subscription } from 'rxjs';
4
- import { NavigationStart } from '@angular/router';
5
- import { filter } from 'rxjs/operators';
6
- import { POPOVER_OPTIONS } from './monkeyecx-popover-options.directive';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/cdk/overlay";
9
- import * as i2 from "@angular/router";
10
- export class MonkeyEcxPopoverDirective {
11
- constructor(tpl, vcr, el, zone, _viewContainerRef, _cd, overlay, overlayPositionBuilder, router, options) {
12
- this.tpl = tpl;
13
- this.vcr = vcr;
14
- this.el = el;
15
- this.zone = zone;
16
- this._viewContainerRef = _viewContainerRef;
17
- this._cd = _cd;
18
- this.overlay = overlay;
19
- this.overlayPositionBuilder = overlayPositionBuilder;
20
- this.router = router;
21
- this.options = options;
22
- this.minwidth = false;
23
- this.backdrop = true;
24
- this.watch = false;
25
- this.dir = 'ltr';
26
- this.contextmenu = false;
27
- this.subs = new Subscription();
28
- this.eventsSubs = new Subscription();
29
- this.eventsSubs = this.router.events
30
- .pipe(filter((event) => {
31
- return event instanceof NavigationStart;
32
- }))
33
- .subscribe(() => {
34
- this.onHandleClose();
35
- });
36
- }
37
- get popover() {
38
- return this._popover;
39
- }
40
- set popover(show) {
41
- this._popover = show;
42
- if (show) {
43
- this.createPopover();
44
- }
45
- else if (this.overlayRef) {
46
- this.overlayRef.dispose();
47
- }
48
- }
49
- get target() {
50
- return this._target;
51
- }
52
- set target(target) {
53
- this._target = target;
54
- }
55
- onHandleClose(e) {
56
- this.popover = false;
57
- this.subs.unsubscribe();
58
- this.resizeObserver?.disconnect();
59
- this.zone.run(() => {
60
- if (this.closed) {
61
- this.closed(e);
62
- }
63
- });
64
- }
65
- getDirPositions(dir) {
66
- const revert = {
67
- start: 'end', end: 'start', bottom: 'top', top: 'bottom', center: 'center'
68
- };
69
- const centerY = (pos) => {
70
- return {
71
- originX: 'center', originY: pos, overlayX: 'center', overlayY: revert[pos]
72
- };
73
- };
74
- const centerX = (pos) => {
75
- return {
76
- originX: revert[pos], originY: 'center', overlayX: pos, overlayY: 'center'
77
- };
78
- };
79
- const ltr = (axis) => {
80
- return {
81
- originX: 'start', originY: axis, overlayX: 'start', overlayY: revert[axis]
82
- };
83
- };
84
- const rtl = (axis) => {
85
- return {
86
- originX: 'end', originY: axis, overlayX: 'end', overlayY: revert[axis]
87
- };
88
- };
89
- const side = (axis, axis2) => {
90
- return {
91
- originX: axis, originY: axis2, overlayX: revert[axis], overlayY: axis2
92
- };
93
- };
94
- const cmp = dir || this.options?.dir || this.dir;
95
- if (cmp === 'ct') {
96
- return [centerY('top'), centerY('bottom'), centerX('start'), centerX('end')];
97
- }
98
- if (cmp === 'cr') {
99
- return [centerX('end'), centerX('start'), centerY('top'), centerY('bottom')];
100
- }
101
- if (cmp === 'cc') {
102
- return [centerX('center')];
103
- }
104
- if (cmp === 'ltr') {
105
- return [ltr('bottom'), ltr('top')];
106
- }
107
- if (cmp === 'rtl') {
108
- return [rtl('bottom'), rtl('top')];
109
- }
110
- if (cmp === 'tltr') {
111
- return [ltr('top'), ltr('bottom')];
112
- }
113
- if (cmp === 'trtl') {
114
- return [rtl('top'), rtl('bottom')];
115
- }
116
- if (cmp === 'rt') {
117
- return [side('end', 'top'), side('end', 'bottom'), ltr('top')];
118
- }
119
- if (cmp === 'rb') {
120
- return [side('end', 'bottom'), side('end', 'top'), ltr('bottom'), rtl('bottom')];
121
- }
122
- if (cmp === 'lt') {
123
- return [side('start', 'top'), side('start', 'bottom'), rtl('top')];
124
- }
125
- if (cmp === 'lb') {
126
- return [side('start', 'bottom'), side('start', 'top'), rtl('bottom')];
127
- }
128
- return [];
129
- }
130
- createPopover(origin, options) {
131
- this.templatePortal = new TemplatePortal(this.tpl, this._viewContainerRef);
132
- this.positionStrategy = this.overlayPositionBuilder
133
- .flexibleConnectedTo(origin || this.target)
134
- .withPush(true)
135
- .withGrowAfterOpen(true)
136
- .withPositions(this.getDirPositions(options?.dir));
137
- this.overlayRef = this.overlay.create({
138
- positionStrategy: this.positionStrategy,
139
- disposeOnNavigation: true,
140
- direction: 'ltr',
141
- hasBackdrop: this.backdrop,
142
- scrollStrategy: this.overlay.scrollStrategies.reposition({}),
143
- backdropClass: 'cdk-overlay-transparent-backdrop',
144
- width: (this.options?.minwidth || this.minwidth) ? (this.target.offsetWidth - 2) : undefined,
145
- maxHeight: '95%',
146
- height: this.height
147
- });
148
- this.subs = this.overlayRef.backdropClick().subscribe((e) => {
149
- this.onHandleClose(e);
150
- });
151
- const attached = this.overlayRef.attach(this.templatePortal);
152
- if (this.watch) {
153
- try {
154
- if ('ResizeObserver' in window) {
155
- this.resizeObserver = new ResizeObserver(([{ contentRect }]) => {
156
- this.overlayRef.updatePosition();
157
- })
158
- .observe(attached.rootNodes[0]);
159
- }
160
- }
161
- catch (e) {
162
- // not to do
163
- }
164
- }
165
- }
166
- ngOnDestroy() {
167
- this.popover = false;
168
- this.subs.unsubscribe();
169
- this.eventsSubs.unsubscribe();
170
- }
171
- }
172
- MonkeyEcxPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxPopoverDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i1.OverlayPositionBuilder }, { token: i2.Router }, { token: POPOVER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
173
- MonkeyEcxPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: MonkeyEcxPopoverDirective, selector: "[monkeyecxPopover]", inputs: { popover: ["monkeyecxPopover", "popover"], closed: ["monkeyecxPopoverClosed", "closed"], target: ["monkeyecxPopoverTarget", "target"], minwidth: ["monkeyecxPopoverMinwidth", "minwidth"], backdrop: ["monkeyecxPopoverBackdrop", "backdrop"], watch: ["monkeyecxPopoverWatch", "watch"], dir: ["monkeyecxPopoverDir", "dir"], contextmenu: ["monkeyecxPopoverContextmenu", "contextmenu"], height: ["monkeyecxPopoverHeight", "height"] }, ngImport: i0 });
174
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxPopoverDirective, decorators: [{
175
- type: Directive,
176
- args: [{
177
- selector: '[monkeyecxPopover]'
178
- }]
179
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i1.OverlayPositionBuilder }, { type: i2.Router }, { type: undefined, decorators: [{
180
- type: Inject,
181
- args: [POPOVER_OPTIONS]
182
- }, {
183
- type: Optional
184
- }] }]; }, propDecorators: { popover: [{
185
- type: Input,
186
- args: ['monkeyecxPopover']
187
- }], closed: [{
188
- type: Input,
189
- args: ['monkeyecxPopoverClosed']
190
- }], target: [{
191
- type: Input,
192
- args: ['monkeyecxPopoverTarget']
193
- }], minwidth: [{
194
- type: Input,
195
- args: ['monkeyecxPopoverMinwidth']
196
- }], backdrop: [{
197
- type: Input,
198
- args: ['monkeyecxPopoverBackdrop']
199
- }], watch: [{
200
- type: Input,
201
- args: ['monkeyecxPopoverWatch']
202
- }], dir: [{
203
- type: Input,
204
- args: ['monkeyecxPopoverDir']
205
- }], contextmenu: [{
206
- type: Input,
207
- args: ['monkeyecxPopoverContextmenu']
208
- }], height: [{
209
- type: Input,
210
- args: ['monkeyecxPopoverHeight']
211
- }] } });
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LXBvcG92ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvcmUvc3JjL2xpYi9jb3JlL2RpcmVjdGl2ZXMvbW9ua2V5ZWN4LXBvcG92ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRUwsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUFNeEUsTUFBTSxPQUFPLHlCQUF5QjtJQXNEcEMsWUFDVyxHQUFxQixFQUNyQixHQUFxQixFQUNyQixFQUFjLEVBQ2QsSUFBWSxFQUNaLGlCQUFtQyxFQUNuQyxHQUFzQixFQUN0QixPQUFnQixFQUNqQixzQkFBOEMsRUFDN0MsTUFBYyxFQUNzQixPQUFnQztRQVRwRSxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNqQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDc0IsWUFBTyxHQUFQ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QURWLEtBQUs7dUJBQUMsa0JBQWtCO2dCQVVRLE1BQU07c0JBQXRDLEtBQUs7dUJBQUMsd0JBQXdCO2dCQVMzQixNQUFNO3NCQURULEtBQUs7dUJBQUMsd0JBQXdCO2dCQUtJLFFBQVE7c0JBQTFDLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUVFLFFBQVE7c0JBQTFDLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUVELEtBQUs7c0JBQXBDLEtBQUs7dUJBQUMsdUJBQXVCO2dCQUVBLEdBQUc7c0JBQWhDLEtBQUs7dUJBQUMscUJBQXFCO2dCQUVVLFdBQVc7c0JBQWhELEtBQUs7dUJBQUMsNkJBQTZCO2dCQUVILE1BQU07c0JBQXRDLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb25uZWN0ZWRQb3NpdGlvbixcclxuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneU9yaWdpbixcclxuICBPdmVybGF5LFxyXG4gIE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXHJcbiAgT3ZlcmxheVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBEaXJlY3RpdmUsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBPcHRpb25hbCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q29udGFpbmVyUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUE9QT1ZFUl9PUFRJT05TIH0gZnJvbSAnLi9tb25rZXllY3gtcG9wb3Zlci1vcHRpb25zLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB0eXBlIHsgUG9wb3ZlckRpciwgTW9ua2V5RWN4UG9wb3Zlck9wdGlvbnMgfSBmcm9tICcuL21vbmtleWVjeC1wb3BvdmVyLW9wdGlvbnMuZGlyZWN0aXZlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW21vbmtleWVjeFBvcG92ZXJdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTW9ua2V5RWN4UG9wb3ZlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBfcG9wb3ZlciE6IGJvb2xlYW47XHJcblxyXG4gIGdldCBwb3BvdmVyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BvcG92ZXI7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXInKVxyXG4gIHNldCBwb3BvdmVyKHNob3c6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX3BvcG92ZXIgPSBzaG93O1xyXG4gICAgaWYgKHNob3cpIHtcclxuICAgICAgdGhpcy5jcmVhdGVQb3BvdmVyKCk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCdtb25rZXllY3hQb3BvdmVyQ2xvc2VkJykgY2xvc2VkITogKGU/OiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xyXG5cclxuICBwcml2YXRlIF90YXJnZXQhOiBIVE1MRWxlbWVudDtcclxuXHJcbiAgZ2V0IHRhcmdldCgpIHtcclxuICAgIHJldHVybiB0aGlzLl90YXJnZXQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXJUYXJnZXQnKVxyXG4gIHNldCB0YXJnZXQodGFyZ2V0OiBIVE1MRWxlbWVudCkge1xyXG4gICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCdtb25rZXllY3hQb3BvdmVyTWlud2lkdGgnKSBtaW53aWR0aCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXJCYWNrZHJvcCcpIGJhY2tkcm9wID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCdtb25rZXllY3hQb3BvdmVyV2F0Y2gnKSB3YXRjaCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXJEaXInKSBkaXI6IFBvcG92ZXJEaXIgPSAnbHRyJztcclxuXHJcbiAgQElucHV0KCdtb25rZXllY3hQb3BvdmVyQ29udGV4dG1lbnUnKSBjb250ZXh0bWVudSA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXJIZWlnaHQnKSBoZWlnaHQhOiBudW1iZXIgfCBzdHJpbmc7XHJcblxyXG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XHJcblxyXG4gIHByaXZhdGUgcG9zaXRpb25TdHJhdGVneSE6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneTtcclxuXHJcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVBvcnRhbCE6IFRlbXBsYXRlUG9ydGFsO1xyXG5cclxuICBwcml2YXRlIHN1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gIHByaXZhdGUgZXZlbnRzU3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgICBwcml2YXRlIHRwbDogVGVtcGxhdGVSZWY8YW55PixcclxuICAgICBwcml2YXRlIHZjcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcclxuICAgIHByaXZhdGUgb3ZlcmxheVBvc2l0aW9uQnVpbGRlcjogT3ZlcmxheVBvc2l0aW9uQnVpbGRlcixcclxuICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgQEluamVjdChQT1BPVkVSX09QVElPTlMpIEBPcHRpb25hbCgpIHByaXZhdGUgb3B0aW9uczogTW9ua2V5RWN4UG9wb3Zlck9wdGlvbnNcclxuICApIHtcclxuICAgIHRoaXMuZXZlbnRzU3VicyA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25IYW5kbGVDbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25IYW5kbGVDbG9zZShlPzogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5wb3BvdmVyID0gZmFsc2U7XHJcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcclxuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5jbG9zZWQpIHtcclxuICAgICAgICB0aGlzLmNsb3NlZChlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREaXJQb3NpdGlvbnMoZGlyPzogUG9wb3ZlckRpcik6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xyXG4gICAgY29uc3QgcmV2ZXJ0ID0ge1xyXG4gICAgICBzdGFydDogJ2VuZCcsIGVuZDogJ3N0YXJ0JywgYm90dG9tOiAndG9wJywgdG9wOiAnYm90dG9tJywgY2VudGVyOiAnY2VudGVyJ1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNlbnRlclkgPSAocG9zOiBhbnkpOiBDb25uZWN0ZWRQb3NpdGlvbiA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6IHBvcywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogcmV2ZXJ0W3Bvc11cclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgICBjb25zdCBjZW50ZXJYID0gKHBvczogYW55KTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG9yaWdpblg6IHJldmVydFtwb3NdLCBvcmlnaW5ZOiAnY2VudGVyJywgb3ZlcmxheVg6IHBvcywgb3ZlcmxheVk6ICdjZW50ZXInXHJcbiAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgY29uc3QgbHRyID0gKGF4aXM6IGFueSk6IENvbm5lY3RlZFBvc2l0aW9uID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiBheGlzLCBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6IHJldmVydFtheGlzXVxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHJ0bCA9IChheGlzOiBhbnkpOiBDb25uZWN0ZWRQb3NpdGlvbiA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6IGF4aXMsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6IHJldmVydFtheGlzXVxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuICAgIGNvbnN0IHNpZGUgPSAoYXhpczogYW55LCBheGlzMjogYW55KTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIG9yaWdpblg6IGF4aXMsIG9yaWdpblk6IGF4aXMyLCBvdmVybGF5WDogcmV2ZXJ0W2F4aXNdLCBvdmVybGF5WTogYXhpczJcclxuICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY21wID0gZGlyIHx8IHRoaXMub3B0aW9ucz8uZGlyIHx8IHRoaXMuZGlyO1xyXG4gICAgaWYgKGNtcCA9PT0gJ2N0Jykge1xyXG4gICAgICByZXR1cm4gW2NlbnRlclkoJ3RvcCcpLCBjZW50ZXJZKCdib3R0b20nKSwgY2VudGVyWCgnc3RhcnQnKSwgY2VudGVyWCgnZW5kJyldO1xyXG4gICAgfVxyXG4gICAgaWYgKGNtcCA9PT0gJ2NyJykge1xyXG4gICAgICByZXR1cm4gW2NlbnRlclgoJ2VuZCcpLCBjZW50ZXJYKCdzdGFydCcpLCBjZW50ZXJZKCd0b3AnKSwgY2VudGVyWSgnYm90dG9tJyldO1xyXG4gICAgfVxyXG4gICAgaWYgKGNtcCA9PT0gJ2NjJykge1xyXG4gICAgICByZXR1cm4gW2NlbnRlclgoJ2NlbnRlcicpXTtcclxuICAgIH1cclxuICAgIGlmIChjbXAgPT09ICdsdHInKSB7XHJcbiAgICAgIHJldHVybiBbbHRyKCdib3R0b20nKSwgbHRyKCd0b3AnKV07XHJcbiAgICB9XHJcbiAgICBpZiAoY21wID09PSAncnRsJykge1xyXG4gICAgICByZXR1cm4gW3J0bCgnYm90dG9tJyksIHJ0bCgndG9wJyldO1xyXG4gICAgfVxyXG4gICAgaWYgKGNtcCA9PT0gJ3RsdHInKSB7XHJcbiAgICAgIHJldHVybiBbbHRyKCd0b3AnKSwgbHRyKCdib3R0b20nKV07XHJcbiAgICB9XHJcbiAgICBpZiAoY21wID09PSAndHJ0bCcpIHtcclxuICAgICAgcmV0dXJuIFtydGwoJ3RvcCcpLCBydGwoJ2JvdHRvbScpXTtcclxuICAgIH1cclxuICAgIGlmIChjbXAgPT09ICdydCcpIHtcclxuICAgICAgcmV0dXJuIFtzaWRlKCdlbmQnLCAndG9wJyksIHNpZGUoJ2VuZCcsICdib3R0b20nKSwgbHRyKCd0b3AnKV07XHJcbiAgICB9XHJcbiAgICBpZiAoY21wID09PSAncmInKSB7XHJcbiAgICAgIHJldHVybiBbc2lkZSgnZW5kJywgJ2JvdHRvbScpLCBzaWRlKCdlbmQnLCAndG9wJyksIGx0cignYm90dG9tJyksIHJ0bCgnYm90dG9tJyldO1xyXG4gICAgfVxyXG4gICAgaWYgKGNtcCA9PT0gJ2x0Jykge1xyXG4gICAgICByZXR1cm4gW3NpZGUoJ3N0YXJ0JywgJ3RvcCcpLCBzaWRlKCdzdGFydCcsICdib3R0b20nKSwgcnRsKCd0b3AnKV07XHJcbiAgICB9XHJcbiAgICBpZiAoY21wID09PSAnbGInKSB7XHJcbiAgICAgIHJldHVybiBbc2lkZSgnc3RhcnQnLCAnYm90dG9tJyksIHNpZGUoJ3N0YXJ0JywgJ3RvcCcpLCBydGwoJ2JvdHRvbScpXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW107XHJcbiAgfVxyXG5cclxuICBjcmVhdGVQb3BvdmVyKFxyXG4gICAgb3JpZ2luPzogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxyXG4gICAgb3B0aW9ucz86IE1vbmtleUVjeFBvcG92ZXJPcHRpb25zXHJcbiAgKSB7XHJcbiAgICB0aGlzLnRlbXBsYXRlUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudHBsLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIHRoaXMucG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVBvc2l0aW9uQnVpbGRlclxyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4gfHwgdGhpcy50YXJnZXQpXHJcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxyXG4gICAgICAud2l0aEdyb3dBZnRlck9wZW4odHJ1ZSlcclxuICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXREaXJQb3NpdGlvbnMob3B0aW9ucz8uZGlyKSk7XHJcblxyXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMucG9zaXRpb25TdHJhdGVneSxcclxuICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcclxuICAgICAgZGlyZWN0aW9uOiAnbHRyJyxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRoaXMuYmFja2Ryb3AsXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHtcclxuICAgICAgfSksXHJcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXHJcbiAgICAgIHdpZHRoOiAodGhpcy5vcHRpb25zPy5taW53aWR0aCB8fCB0aGlzLm1pbndpZHRoKSA/ICh0aGlzLnRhcmdldC5vZmZzZXRXaWR0aCAtIDIpIDogdW5kZWZpbmVkLFxyXG4gICAgICBtYXhIZWlnaHQ6ICc5NSUnLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnN1YnMgPSB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoZSkgPT4ge1xyXG4gICAgICB0aGlzLm9uSGFuZGxlQ2xvc2UoZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBhdHRhY2hlZCA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy50ZW1wbGF0ZVBvcnRhbCk7XHJcblxyXG4gICAgaWYgKHRoaXMud2F0Y2gpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBpZiAoJ1Jlc2l6ZU9ic2VydmVyJyBpbiB3aW5kb3cpIHtcclxuICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFt7IGNvbnRlbnRSZWN0IH1dKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgICAgLm9ic2VydmUoYXR0YWNoZWQucm9vdE5vZGVzWzBdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBub3QgdG8gZG9cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnBvcG92ZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuc3Vicy51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5ldmVudHNTdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
1
+ import { TemplatePortal } from '@angular/cdk/portal';
2
+ import { Directive, Inject, Input, Optional } from '@angular/core';
3
+ import { Subscription } from 'rxjs';
4
+ import { NavigationStart } from '@angular/router';
5
+ import { filter } from 'rxjs/operators';
6
+ import { POPOVER_OPTIONS } from './monkeyecx-popover-options.directive';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
9
+ import * as i2 from "@angular/router";
10
+ export class MonkeyEcxPopoverDirective {
11
+ constructor(tpl, vcr, el, zone, _viewContainerRef, _cd, overlay, overlayPositionBuilder, router, options) {
12
+ this.tpl = tpl;
13
+ this.vcr = vcr;
14
+ this.el = el;
15
+ this.zone = zone;
16
+ this._viewContainerRef = _viewContainerRef;
17
+ this._cd = _cd;
18
+ this.overlay = overlay;
19
+ this.overlayPositionBuilder = overlayPositionBuilder;
20
+ this.router = router;
21
+ this.options = options;
22
+ this.minwidth = false;
23
+ this.backdrop = true;
24
+ this.watch = false;
25
+ this.dir = 'ltr';
26
+ this.contextmenu = false;
27
+ this.subs = new Subscription();
28
+ this.eventsSubs = new Subscription();
29
+ this.eventsSubs = this.router.events
30
+ .pipe(filter((event) => {
31
+ return event instanceof NavigationStart;
32
+ }))
33
+ .subscribe(() => {
34
+ this.onHandleClose();
35
+ });
36
+ }
37
+ get popover() {
38
+ return this._popover;
39
+ }
40
+ set popover(show) {
41
+ this._popover = show;
42
+ if (show) {
43
+ this.createPopover();
44
+ }
45
+ else if (this.overlayRef) {
46
+ this.overlayRef.dispose();
47
+ }
48
+ }
49
+ get target() {
50
+ return this._target;
51
+ }
52
+ set target(target) {
53
+ this._target = target;
54
+ }
55
+ onHandleClose(e) {
56
+ this.popover = false;
57
+ this.subs.unsubscribe();
58
+ this.resizeObserver?.disconnect();
59
+ this.zone.run(() => {
60
+ if (this.closed) {
61
+ this.closed(e);
62
+ }
63
+ });
64
+ }
65
+ getDirPositions(dir) {
66
+ const revert = {
67
+ start: 'end', end: 'start', bottom: 'top', top: 'bottom', center: 'center'
68
+ };
69
+ const centerY = (pos) => {
70
+ return {
71
+ originX: 'center', originY: pos, overlayX: 'center', overlayY: revert[pos]
72
+ };
73
+ };
74
+ const centerX = (pos) => {
75
+ return {
76
+ originX: revert[pos], originY: 'center', overlayX: pos, overlayY: 'center'
77
+ };
78
+ };
79
+ const ltr = (axis) => {
80
+ return {
81
+ originX: 'start', originY: axis, overlayX: 'start', overlayY: revert[axis]
82
+ };
83
+ };
84
+ const rtl = (axis) => {
85
+ return {
86
+ originX: 'end', originY: axis, overlayX: 'end', overlayY: revert[axis]
87
+ };
88
+ };
89
+ const side = (axis, axis2) => {
90
+ return {
91
+ originX: axis, originY: axis2, overlayX: revert[axis], overlayY: axis2
92
+ };
93
+ };
94
+ const cmp = dir || this.options?.dir || this.dir;
95
+ if (cmp === 'ct') {
96
+ return [centerY('top'), centerY('bottom'), centerX('start'), centerX('end')];
97
+ }
98
+ if (cmp === 'cr') {
99
+ return [centerX('end'), centerX('start'), centerY('top'), centerY('bottom')];
100
+ }
101
+ if (cmp === 'cc') {
102
+ return [centerX('center')];
103
+ }
104
+ if (cmp === 'ltr') {
105
+ return [ltr('bottom'), ltr('top')];
106
+ }
107
+ if (cmp === 'rtl') {
108
+ return [rtl('bottom'), rtl('top')];
109
+ }
110
+ if (cmp === 'tltr') {
111
+ return [ltr('top'), ltr('bottom')];
112
+ }
113
+ if (cmp === 'trtl') {
114
+ return [rtl('top'), rtl('bottom')];
115
+ }
116
+ if (cmp === 'rt') {
117
+ return [side('end', 'top'), side('end', 'bottom'), ltr('top')];
118
+ }
119
+ if (cmp === 'rb') {
120
+ return [side('end', 'bottom'), side('end', 'top'), ltr('bottom'), rtl('bottom')];
121
+ }
122
+ if (cmp === 'lt') {
123
+ return [side('start', 'top'), side('start', 'bottom'), rtl('top')];
124
+ }
125
+ if (cmp === 'lb') {
126
+ return [side('start', 'bottom'), side('start', 'top'), rtl('bottom')];
127
+ }
128
+ return [];
129
+ }
130
+ createPopover(origin, options) {
131
+ this.templatePortal = new TemplatePortal(this.tpl, this._viewContainerRef);
132
+ this.positionStrategy = this.overlayPositionBuilder
133
+ .flexibleConnectedTo(origin || this.target)
134
+ .withPush(true)
135
+ .withGrowAfterOpen(true)
136
+ .withPositions(this.getDirPositions(options?.dir));
137
+ this.overlayRef = this.overlay.create({
138
+ positionStrategy: this.positionStrategy,
139
+ disposeOnNavigation: true,
140
+ direction: 'ltr',
141
+ hasBackdrop: this.backdrop,
142
+ scrollStrategy: this.overlay.scrollStrategies.reposition({}),
143
+ backdropClass: 'cdk-overlay-transparent-backdrop',
144
+ width: (this.options?.minwidth || this.minwidth) ? (this.target.offsetWidth - 2) : undefined,
145
+ maxHeight: '95%',
146
+ height: this.height
147
+ });
148
+ this.subs = this.overlayRef.backdropClick().subscribe((e) => {
149
+ this.onHandleClose(e);
150
+ });
151
+ const attached = this.overlayRef.attach(this.templatePortal);
152
+ if (this.watch) {
153
+ try {
154
+ if ('ResizeObserver' in window) {
155
+ this.resizeObserver = new ResizeObserver(([{ contentRect }]) => {
156
+ this.overlayRef.updatePosition();
157
+ })
158
+ .observe(attached.rootNodes[0]);
159
+ }
160
+ }
161
+ catch (e) {
162
+ // not to do
163
+ }
164
+ }
165
+ }
166
+ ngOnDestroy() {
167
+ this.popover = false;
168
+ this.subs.unsubscribe();
169
+ this.eventsSubs.unsubscribe();
170
+ }
171
+ }
172
+ MonkeyEcxPopoverDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxPopoverDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: i1.Overlay }, { token: i1.OverlayPositionBuilder }, { token: i2.Router }, { token: POPOVER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
173
+ MonkeyEcxPopoverDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: MonkeyEcxPopoverDirective, selector: "[monkeyecxPopover]", inputs: { popover: ["monkeyecxPopover", "popover"], closed: ["monkeyecxPopoverClosed", "closed"], target: ["monkeyecxPopoverTarget", "target"], minwidth: ["monkeyecxPopoverMinwidth", "minwidth"], backdrop: ["monkeyecxPopoverBackdrop", "backdrop"], watch: ["monkeyecxPopoverWatch", "watch"], dir: ["monkeyecxPopoverDir", "dir"], contextmenu: ["monkeyecxPopoverContextmenu", "contextmenu"], height: ["monkeyecxPopoverHeight", "height"] }, ngImport: i0 });
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MonkeyEcxPopoverDirective, decorators: [{
175
+ type: Directive,
176
+ args: [{
177
+ selector: '[monkeyecxPopover]'
178
+ }]
179
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i1.Overlay }, { type: i1.OverlayPositionBuilder }, { type: i2.Router }, { type: undefined, decorators: [{
180
+ type: Inject,
181
+ args: [POPOVER_OPTIONS]
182
+ }, {
183
+ type: Optional
184
+ }] }]; }, propDecorators: { popover: [{
185
+ type: Input,
186
+ args: ['monkeyecxPopover']
187
+ }], closed: [{
188
+ type: Input,
189
+ args: ['monkeyecxPopoverClosed']
190
+ }], target: [{
191
+ type: Input,
192
+ args: ['monkeyecxPopoverTarget']
193
+ }], minwidth: [{
194
+ type: Input,
195
+ args: ['monkeyecxPopoverMinwidth']
196
+ }], backdrop: [{
197
+ type: Input,
198
+ args: ['monkeyecxPopoverBackdrop']
199
+ }], watch: [{
200
+ type: Input,
201
+ args: ['monkeyecxPopoverWatch']
202
+ }], dir: [{
203
+ type: Input,
204
+ args: ['monkeyecxPopoverDir']
205
+ }], contextmenu: [{
206
+ type: Input,
207
+ args: ['monkeyecxPopoverContextmenu']
208
+ }], height: [{
209
+ type: Input,
210
+ args: ['monkeyecxPopoverHeight']
211
+ }] } });
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ua2V5ZWN4LXBvcG92ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LWZyb250LWNvcmUvc3JjL2xpYi9jb3JlL2RpcmVjdGl2ZXMvbW9ua2V5ZWN4LXBvcG92ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRUwsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBR0wsUUFBUSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUFNeEUsTUFBTSxPQUFPLHlCQUF5QjtJQXNEcEMsWUFDVyxHQUFxQixFQUNyQixHQUFxQixFQUNyQixFQUFjLEVBQ2QsSUFBWSxFQUNaLGlCQUFtQyxFQUNuQyxHQUFzQixFQUN0QixPQUFnQixFQUNqQixzQkFBOEMsRUFDN0MsTUFBYyxFQUNzQixPQUFnQztRQVRwRSxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQUNyQixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNqQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDc0IsWUFBTyxHQUFQ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QURWLEtBQUs7dUJBQUMsa0JBQWtCO2dCQVVRLE1BQU07c0JBQXRDLEtBQUs7dUJBQUMsd0JBQXdCO2dCQVMzQixNQUFNO3NCQURULEtBQUs7dUJBQUMsd0JBQXdCO2dCQUtJLFFBQVE7c0JBQTFDLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUVFLFFBQVE7c0JBQTFDLEtBQUs7dUJBQUMsMEJBQTBCO2dCQUVELEtBQUs7c0JBQXBDLEtBQUs7dUJBQUMsdUJBQXVCO2dCQUVBLEdBQUc7c0JBQWhDLEtBQUs7dUJBQUMscUJBQXFCO2dCQUVVLFdBQVc7c0JBQWhELEtBQUs7dUJBQUMsNkJBQTZCO2dCQUVILE1BQU07c0JBQXRDLEtBQUs7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29ubmVjdGVkUG9zaXRpb24sXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSwgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICBPdmVybGF5LFxuICBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxuICBPdmVybGF5UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQT1BPVkVSX09QVElPTlMgfSBmcm9tICcuL21vbmtleWVjeC1wb3BvdmVyLW9wdGlvbnMuZGlyZWN0aXZlJztcbmltcG9ydCB0eXBlIHsgUG9wb3ZlckRpciwgTW9ua2V5RWN4UG9wb3Zlck9wdGlvbnMgfSBmcm9tICcuL21vbmtleWVjeC1wb3BvdmVyLW9wdGlvbnMuZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW21vbmtleWVjeFBvcG92ZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBNb25rZXlFY3hQb3BvdmVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcG9wb3ZlciE6IGJvb2xlYW47XG5cbiAgZ2V0IHBvcG92ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BvcG92ZXI7XG4gIH1cblxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXInKVxuICBzZXQgcG9wb3ZlcihzaG93OiBib29sZWFuKSB7XG4gICAgdGhpcy5fcG9wb3ZlciA9IHNob3c7XG4gICAgaWYgKHNob3cpIHtcbiAgICAgIHRoaXMuY3JlYXRlUG9wb3ZlcigpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnbW9ua2V5ZWN4UG9wb3ZlckNsb3NlZCcpIGNsb3NlZCE6IChlPzogTW91c2VFdmVudCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF90YXJnZXQhOiBIVE1MRWxlbWVudDtcblxuICBnZXQgdGFyZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXQ7XG4gIH1cblxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXJUYXJnZXQnKVxuICBzZXQgdGFyZ2V0KHRhcmdldDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7XG4gIH1cblxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXJNaW53aWR0aCcpIG1pbndpZHRoID0gZmFsc2U7XG5cbiAgQElucHV0KCdtb25rZXllY3hQb3BvdmVyQmFja2Ryb3AnKSBiYWNrZHJvcCA9IHRydWU7XG5cbiAgQElucHV0KCdtb25rZXllY3hQb3BvdmVyV2F0Y2gnKSB3YXRjaCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnbW9ua2V5ZWN4UG9wb3ZlckRpcicpIGRpcjogUG9wb3ZlckRpciA9ICdsdHInO1xuXG4gIEBJbnB1dCgnbW9ua2V5ZWN4UG9wb3ZlckNvbnRleHRtZW51JykgY29udGV4dG1lbnUgPSBmYWxzZTtcblxuICBASW5wdXQoJ21vbmtleWVjeFBvcG92ZXJIZWlnaHQnKSBoZWlnaHQhOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBvdmVybGF5UmVmITogT3ZlcmxheVJlZjtcblxuICBwcml2YXRlIHBvc2l0aW9uU3RyYXRlZ3khOiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3k7XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZVBvcnRhbCE6IFRlbXBsYXRlUG9ydGFsO1xuXG4gIHByaXZhdGUgc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIGV2ZW50c1N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSByZXNpemVPYnNlcnZlcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgICBwcml2YXRlIHRwbDogVGVtcGxhdGVSZWY8YW55PixcbiAgICAgcHJpdmF0ZSB2Y3I6IFZpZXdDb250YWluZXJSZWYsXG4gICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYsXG4gICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIG92ZXJsYXlQb3NpdGlvbkJ1aWxkZXI6IE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIsXG4gICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChQT1BPVkVSX09QVElPTlMpIEBPcHRpb25hbCgpIHByaXZhdGUgb3B0aW9uczogTW9ua2V5RWN4UG9wb3Zlck9wdGlvbnNcbiAgKSB7XG4gICAgdGhpcy5ldmVudHNTdWJzID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0O1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMub25IYW5kbGVDbG9zZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uSGFuZGxlQ2xvc2UoZT86IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLnBvcG92ZXIgPSBmYWxzZTtcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jbG9zZWQpIHtcbiAgICAgICAgdGhpcy5jbG9zZWQoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXREaXJQb3NpdGlvbnMoZGlyPzogUG9wb3ZlckRpcik6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICAgIGNvbnN0IHJldmVydCA9IHtcbiAgICAgIHN0YXJ0OiAnZW5kJywgZW5kOiAnc3RhcnQnLCBib3R0b206ICd0b3AnLCB0b3A6ICdib3R0b20nLCBjZW50ZXI6ICdjZW50ZXInXG4gICAgfTtcbiAgICBjb25zdCBjZW50ZXJZID0gKHBvczogYW55KTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsIG9yaWdpblk6IHBvcywgb3ZlcmxheVg6ICdjZW50ZXInLCBvdmVybGF5WTogcmV2ZXJ0W3Bvc11cbiAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBjZW50ZXJYID0gKHBvczogYW55KTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogcmV2ZXJ0W3Bvc10sIG9yaWdpblk6ICdjZW50ZXInLCBvdmVybGF5WDogcG9zLCBvdmVybGF5WTogJ2NlbnRlcidcbiAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBsdHIgPSAoYXhpczogYW55KTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogYXhpcywgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiByZXZlcnRbYXhpc11cbiAgICAgIH07XG4gICAgfTtcbiAgICBjb25zdCBydGwgPSAoYXhpczogYW55KTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6IGF4aXMsIG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6IHJldmVydFtheGlzXVxuICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IHNpZGUgPSAoYXhpczogYW55LCBheGlzMjogYW55KTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogYXhpcywgb3JpZ2luWTogYXhpczIsIG92ZXJsYXlYOiByZXZlcnRbYXhpc10sIG92ZXJsYXlZOiBheGlzMlxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgY21wID0gZGlyIHx8IHRoaXMub3B0aW9ucz8uZGlyIHx8IHRoaXMuZGlyO1xuICAgIGlmIChjbXAgPT09ICdjdCcpIHtcbiAgICAgIHJldHVybiBbY2VudGVyWSgndG9wJyksIGNlbnRlclkoJ2JvdHRvbScpLCBjZW50ZXJYKCdzdGFydCcpLCBjZW50ZXJYKCdlbmQnKV07XG4gICAgfVxuICAgIGlmIChjbXAgPT09ICdjcicpIHtcbiAgICAgIHJldHVybiBbY2VudGVyWCgnZW5kJyksIGNlbnRlclgoJ3N0YXJ0JyksIGNlbnRlclkoJ3RvcCcpLCBjZW50ZXJZKCdib3R0b20nKV07XG4gICAgfVxuICAgIGlmIChjbXAgPT09ICdjYycpIHtcbiAgICAgIHJldHVybiBbY2VudGVyWCgnY2VudGVyJyldO1xuICAgIH1cbiAgICBpZiAoY21wID09PSAnbHRyJykge1xuICAgICAgcmV0dXJuIFtsdHIoJ2JvdHRvbScpLCBsdHIoJ3RvcCcpXTtcbiAgICB9XG4gICAgaWYgKGNtcCA9PT0gJ3J0bCcpIHtcbiAgICAgIHJldHVybiBbcnRsKCdib3R0b20nKSwgcnRsKCd0b3AnKV07XG4gICAgfVxuICAgIGlmIChjbXAgPT09ICd0bHRyJykge1xuICAgICAgcmV0dXJuIFtsdHIoJ3RvcCcpLCBsdHIoJ2JvdHRvbScpXTtcbiAgICB9XG4gICAgaWYgKGNtcCA9PT0gJ3RydGwnKSB7XG4gICAgICByZXR1cm4gW3J0bCgndG9wJyksIHJ0bCgnYm90dG9tJyldO1xuICAgIH1cbiAgICBpZiAoY21wID09PSAncnQnKSB7XG4gICAgICByZXR1cm4gW3NpZGUoJ2VuZCcsICd0b3AnKSwgc2lkZSgnZW5kJywgJ2JvdHRvbScpLCBsdHIoJ3RvcCcpXTtcbiAgICB9XG4gICAgaWYgKGNtcCA9PT0gJ3JiJykge1xuICAgICAgcmV0dXJuIFtzaWRlKCdlbmQnLCAnYm90dG9tJyksIHNpZGUoJ2VuZCcsICd0b3AnKSwgbHRyKCdib3R0b20nKSwgcnRsKCdib3R0b20nKV07XG4gICAgfVxuICAgIGlmIChjbXAgPT09ICdsdCcpIHtcbiAgICAgIHJldHVybiBbc2lkZSgnc3RhcnQnLCAndG9wJyksIHNpZGUoJ3N0YXJ0JywgJ2JvdHRvbScpLCBydGwoJ3RvcCcpXTtcbiAgICB9XG4gICAgaWYgKGNtcCA9PT0gJ2xiJykge1xuICAgICAgcmV0dXJuIFtzaWRlKCdzdGFydCcsICdib3R0b20nKSwgc2lkZSgnc3RhcnQnLCAndG9wJyksIHJ0bCgnYm90dG9tJyldO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNyZWF0ZVBvcG92ZXIoXG4gICAgb3JpZ2luPzogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICAgIG9wdGlvbnM/OiBNb25rZXlFY3hQb3BvdmVyT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLnRlbXBsYXRlUG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudHBsLCB0aGlzLl92aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLnBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlQb3NpdGlvbkJ1aWxkZXJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbiB8fCB0aGlzLnRhcmdldClcbiAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKHRydWUpXG4gICAgICAud2l0aFBvc2l0aW9ucyh0aGlzLmdldERpclBvc2l0aW9ucyhvcHRpb25zPy5kaXIpKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5wb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgZGlzcG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgICBoYXNCYWNrZHJvcDogdGhpcy5iYWNrZHJvcCxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKHtcbiAgICAgIH0pLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHdpZHRoOiAodGhpcy5vcHRpb25zPy5taW53aWR0aCB8fCB0aGlzLm1pbndpZHRoKSA/ICh0aGlzLnRhcmdldC5vZmZzZXRXaWR0aCAtIDIpIDogdW5kZWZpbmVkLFxuICAgICAgbWF4SGVpZ2h0OiAnOTUlJyxcbiAgICAgIGhlaWdodDogdGhpcy5oZWlnaHRcbiAgICB9KTtcblxuICAgIHRoaXMuc3VicyA9IHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLm9uSGFuZGxlQ2xvc2UoZSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBhdHRhY2hlZCA9IHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy50ZW1wbGF0ZVBvcnRhbCk7XG5cbiAgICBpZiAodGhpcy53YXRjaCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93KSB7XG4gICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoW3sgY29udGVudFJlY3QgfV0pID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgICAub2JzZXJ2ZShhdHRhY2hlZC5yb290Tm9kZXNbMF0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIG5vdCB0byBkb1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucG9wb3ZlciA9IGZhbHNlO1xuICAgIHRoaXMuc3Vicy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuZXZlbnRzU3Vicy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=