@sumaris-net/ngx-components 2.6.4-alpha5 → 2.6.4-alpha6

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 (1179) hide show
  1. package/esm2020/public_api.mjs +313 -0
  2. package/esm2020/src/app/admin/admin-routing.module.mjs +41 -0
  3. package/esm2020/src/app/admin/admin.module.mjs +34 -0
  4. package/esm2020/src/app/admin/services/filter/person.filter.mjs +59 -0
  5. package/esm2020/src/app/admin/services/person.service.mjs +161 -0
  6. package/esm2020/src/app/admin/services/validator/person.validator.mjs +34 -0
  7. package/esm2020/src/app/admin/users/users.mjs +234 -0
  8. package/esm2020/src/app/admin/users/users.module.mjs +54 -0
  9. package/esm2020/src/app/core/about/about.modal.mjs +71 -0
  10. package/esm2020/src/app/core/about/about.module.mjs +34 -0
  11. package/esm2020/src/app/core/account/account.module.mjs +61 -0
  12. package/esm2020/src/app/core/account/account.page.mjs +316 -0
  13. package/esm2020/src/app/core/account/new-token.modal.mjs +115 -0
  14. package/esm2020/src/app/core/account/token.table.mjs +137 -0
  15. package/esm2020/src/app/core/auth/auth.form.mjs +131 -0
  16. package/esm2020/src/app/core/auth/auth.modal.mjs +72 -0
  17. package/esm2020/src/app/core/auth/auth.module.mjs +47 -0
  18. package/esm2020/src/app/core/core.module.mjs +184 -0
  19. package/esm2020/src/app/core/core.testing.module.mjs +86 -0
  20. package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +71 -0
  21. package/esm2020/src/app/core/form/buttons/form-buttons-bar.module.mjs +35 -0
  22. package/esm2020/src/app/core/form/entity/editor.class.mjs +679 -0
  23. package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +421 -0
  24. package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +687 -0
  25. package/esm2020/src/app/core/form/entity/entity-metadata.component.mjs +25 -0
  26. package/esm2020/src/app/core/form/entity/entity.module.mjs +38 -0
  27. package/esm2020/src/app/core/form/form.class.mjs +340 -0
  28. package/esm2020/src/app/core/form/form.module.mjs +66 -0
  29. package/esm2020/src/app/core/form/form.utils.mjs +473 -0
  30. package/esm2020/src/app/core/form/list/list.form.mjs +222 -0
  31. package/esm2020/src/app/core/form/list/list.module.mjs +35 -0
  32. package/esm2020/src/app/core/form/properties/properties.form.mjs +132 -0
  33. package/esm2020/src/app/core/form/properties/properties.module.mjs +43 -0
  34. package/esm2020/src/app/core/form/properties/properties.table.mjs +264 -0
  35. package/esm2020/src/app/core/form/properties/property.validator.mjs +23 -0
  36. package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +90 -0
  37. package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +39 -0
  38. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.mjs +70 -0
  39. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +45 -0
  40. package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +89 -0
  41. package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +146 -0
  42. package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +40 -0
  43. package/esm2020/src/app/core/graphql/graphql.module.mjs +22 -0
  44. package/esm2020/src/app/core/graphql/graphql.service.mjs +762 -0
  45. package/esm2020/src/app/core/graphql/graphql.utils.mjs +117 -0
  46. package/esm2020/src/app/core/home/home.mjs +257 -0
  47. package/esm2020/src/app/core/home/home.module.mjs +48 -0
  48. package/esm2020/src/app/core/icon/icon.component.mjs +41 -0
  49. package/esm2020/src/app/core/icon/icon.module.mjs +29 -0
  50. package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +343 -0
  51. package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +35 -0
  52. package/esm2020/src/app/core/menu/menu.component.mjs +329 -0
  53. package/esm2020/src/app/core/menu/menu.model.mjs +35 -0
  54. package/esm2020/src/app/core/menu/menu.module.mjs +44 -0
  55. package/esm2020/src/app/core/menu/menu.service.mjs +55 -0
  56. package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +27 -0
  57. package/esm2020/src/app/core/offline/update-offline-mode-card.module.mjs +35 -0
  58. package/esm2020/src/app/core/peer/select-peer.modal.mjs +182 -0
  59. package/esm2020/src/app/core/peer/select-peer.module.mjs +42 -0
  60. package/esm2020/src/app/core/register/register-confirm.page.mjs +81 -0
  61. package/esm2020/src/app/core/register/register.form.mjs +181 -0
  62. package/esm2020/src/app/core/register/register.modal.mjs +52 -0
  63. package/esm2020/src/app/core/register/register.module.mjs +44 -0
  64. package/esm2020/src/app/core/services/account.service.mjs +1212 -0
  65. package/esm2020/src/app/core/services/auth-guard.service.mjs +71 -0
  66. package/esm2020/src/app/core/services/base-entity-service.class.mjs +444 -0
  67. package/esm2020/src/app/core/services/base-graphql-service.class.mjs +219 -0
  68. package/esm2020/src/app/core/services/base58.mjs +78 -0
  69. package/esm2020/src/app/core/services/config/core.config.mjs +175 -0
  70. package/esm2020/src/app/core/services/config.service.mjs +354 -0
  71. package/esm2020/src/app/core/services/crypto.service.mjs +114 -0
  72. package/esm2020/src/app/core/services/errors.mjs +50 -0
  73. package/esm2020/src/app/core/services/local-settings.service.mjs +449 -0
  74. package/esm2020/src/app/core/services/model/account.model.mjs +122 -0
  75. package/esm2020/src/app/core/services/model/config.model.mjs +92 -0
  76. package/esm2020/src/app/core/services/model/department.model.mjs +30 -0
  77. package/esm2020/src/app/core/services/model/entity.decorators.mjs +97 -0
  78. package/esm2020/src/app/core/services/model/entity.model.mjs +240 -0
  79. package/esm2020/src/app/core/services/model/filter.model.mjs +94 -0
  80. package/esm2020/src/app/core/services/model/history.model.mjs +2 -0
  81. package/esm2020/src/app/core/services/model/model.enum.mjs +11 -0
  82. package/esm2020/src/app/core/services/model/peer.model.mjs +68 -0
  83. package/esm2020/src/app/core/services/model/person.model.mjs +83 -0
  84. package/esm2020/src/app/core/services/model/referential.model.mjs +164 -0
  85. package/esm2020/src/app/core/services/model/settings.model.mjs +3 -0
  86. package/esm2020/src/app/core/services/model/token.model.mjs +48 -0
  87. package/esm2020/src/app/core/services/network.service.mjs +589 -0
  88. package/esm2020/src/app/core/services/network.types.mjs +20 -0
  89. package/esm2020/src/app/core/services/network.utils.mjs +15 -0
  90. package/esm2020/src/app/core/services/pipes/account.pipes.mjs +38 -0
  91. package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +23 -0
  92. package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +23 -0
  93. package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +37 -0
  94. package/esm2020/src/app/core/services/platform.service.mjs +525 -0
  95. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +428 -0
  96. package/esm2020/src/app/core/services/storage/entity-store.class.mjs +449 -0
  97. package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +23 -0
  98. package/esm2020/src/app/core/services/testing/referential.validator.mjs +45 -0
  99. package/esm2020/src/app/core/services/validator/account.validator.mjs +56 -0
  100. package/esm2020/src/app/core/services/validator/base.validator.class.mjs +47 -0
  101. package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +66 -0
  102. package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +27 -0
  103. package/esm2020/src/app/core/services/validator/user-token.validator.mjs +52 -0
  104. package/esm2020/src/app/core/settings/settings.module.mjs +34 -0
  105. package/esm2020/src/app/core/settings/settings.page.mjs +312 -0
  106. package/esm2020/src/app/core/table/actions-column.component.mjs +102 -0
  107. package/esm2020/src/app/core/table/async-table.class.mjs +1697 -0
  108. package/esm2020/src/app/core/table/entities-async-table-datasource.class.mjs +384 -0
  109. package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +399 -0
  110. package/esm2020/src/app/core/table/memory-table.class.mjs +53 -0
  111. package/esm2020/src/app/core/table/table-select-columns.component.mjs +43 -0
  112. package/esm2020/src/app/core/table/table.class.mjs +1728 -0
  113. package/esm2020/src/app/core/table/table.model.mjs +12 -0
  114. package/esm2020/src/app/core/table/table.module.mjs +40 -0
  115. package/esm2020/src/app/core/table/table.utils.mjs +30 -0
  116. package/esm2020/src/app/core/table/testing/table-validator.service.mjs +27 -0
  117. package/esm2020/src/app/core/table/testing/table.testing.mjs +280 -0
  118. package/esm2020/src/app/core/table/testing/table.testing.module.mjs +38 -0
  119. package/esm2020/src/app/shared/alerts.mjs +239 -0
  120. package/esm2020/src/app/shared/audio/audio.mjs +248 -0
  121. package/esm2020/src/app/shared/audio/audio.testing.mjs +31 -0
  122. package/esm2020/src/app/shared/audio/audio.testing.module.mjs +45 -0
  123. package/esm2020/src/app/shared/capacitor/keyboard.mjs +40 -0
  124. package/esm2020/src/app/shared/capacitor/plugins.mjs +9 -0
  125. package/esm2020/src/app/shared/constants.mjs +10 -0
  126. package/esm2020/src/app/shared/dates.mjs +147 -0
  127. package/esm2020/src/app/shared/debug/debug-service.class.mjs +3 -0
  128. package/esm2020/src/app/shared/debug/debug.component.mjs +39 -0
  129. package/esm2020/src/app/shared/debug/debug.module.mjs +44 -0
  130. package/esm2020/src/app/shared/directives/autofocus.directive.mjs +92 -0
  131. package/esm2020/src/app/shared/directives/autotitle.directive.mjs +30 -0
  132. package/esm2020/src/app/shared/directives/directives.module.mjs +43 -0
  133. package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +53 -0
  134. package/esm2020/src/app/shared/directives/ng-var.directive.mjs +31 -0
  135. package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +59 -0
  136. package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +40 -0
  137. package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +17 -0
  138. package/esm2020/src/app/shared/events.mjs +64 -0
  139. package/esm2020/src/app/shared/file/csv.utils.mjs +74 -0
  140. package/esm2020/src/app/shared/file/file.service.mjs +117 -0
  141. package/esm2020/src/app/shared/file/file.utils.mjs +113 -0
  142. package/esm2020/src/app/shared/file/images.utils.mjs +161 -0
  143. package/esm2020/src/app/shared/file/json.utils.mjs +51 -0
  144. package/esm2020/src/app/shared/file/uri.utils.mjs +23 -0
  145. package/esm2020/src/app/shared/focusable.mjs +6 -0
  146. package/esm2020/src/app/shared/form/field.component.mjs +307 -0
  147. package/esm2020/src/app/shared/form/field.model.mjs +25 -0
  148. package/esm2020/src/app/shared/form/loading-spinner.mjs +36 -0
  149. package/esm2020/src/app/shared/forms.mjs +391 -0
  150. package/esm2020/src/app/shared/functions.mjs +477 -0
  151. package/esm2020/src/app/shared/geolocation/geolocation.utils.mjs +80 -0
  152. package/esm2020/src/app/shared/gesture/gesture-config.mjs +49 -0
  153. package/esm2020/src/app/shared/gesture/hammer.utils.mjs +2 -0
  154. package/esm2020/src/app/shared/graph/colors.utils.mjs +64 -0
  155. package/esm2020/src/app/shared/graph/graph-colors.mjs +212 -0
  156. package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +57 -0
  157. package/esm2020/src/app/shared/help/help.modal.mjs +53 -0
  158. package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
  159. package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +84 -0
  160. package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +42 -0
  161. package/esm2020/src/app/shared/http/http.utils.mjs +52 -0
  162. package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +365 -0
  163. package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +59 -0
  164. package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +27 -0
  165. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +90 -0
  166. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +39 -0
  167. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +56 -0
  168. package/esm2020/src/app/shared/image/image.model.mjs +2 -0
  169. package/esm2020/src/app/shared/image/image.module.mjs +29 -0
  170. package/esm2020/src/app/shared/image/image.service.mjs +98 -0
  171. package/esm2020/src/app/shared/inputs.mjs +231 -0
  172. package/esm2020/src/app/shared/interceptors/progess.interceptor.mjs +27 -0
  173. package/esm2020/src/app/shared/logging/log-level.model.mjs +48 -0
  174. package/esm2020/src/app/shared/logging/logger.model.mjs +47 -0
  175. package/esm2020/src/app/shared/logging/logging-service.class.mjs +121 -0
  176. package/esm2020/src/app/shared/logging/logging-service.config.mjs +2 -0
  177. package/esm2020/src/app/shared/logging/logging-service.module.mjs +30 -0
  178. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +47 -0
  179. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +916 -0
  180. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +78 -0
  181. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +19 -0
  182. package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +209 -0
  183. package/esm2020/src/app/shared/material/badge/badge.directive.mjs +194 -0
  184. package/esm2020/src/app/shared/material/badge/badge.module.mjs +32 -0
  185. package/esm2020/src/app/shared/material/badge/badge.test.mjs +41 -0
  186. package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +68 -0
  187. package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +253 -0
  188. package/esm2020/src/app/shared/material/chips/chips.module.mjs +76 -0
  189. package/esm2020/src/app/shared/material/chips/material.chips.mjs +697 -0
  190. package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +143 -0
  191. package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +91 -0
  192. package/esm2020/src/app/shared/material/datetime/material.date.mjs +376 -0
  193. package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +385 -0
  194. package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +499 -0
  195. package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +108 -0
  196. package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +110 -0
  197. package/esm2020/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +103 -0
  198. package/esm2020/src/app/shared/material/duration/duration.module.mjs +67 -0
  199. package/esm2020/src/app/shared/material/duration/duration.utils.mjs +36 -0
  200. package/esm2020/src/app/shared/material/duration/material.duration.mjs +257 -0
  201. package/esm2020/src/app/shared/material/latlong/latlong.utils.mjs +266 -0
  202. package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +381 -0
  203. package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +67 -0
  204. package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +102 -0
  205. package/esm2020/src/app/shared/material/material.animations.mjs +104 -0
  206. package/esm2020/src/app/shared/material/material.module.mjs +224 -0
  207. package/esm2020/src/app/shared/material/material.testing.module.mjs +168 -0
  208. package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +98 -0
  209. package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +80 -0
  210. package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +190 -0
  211. package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +17 -0
  212. package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +162 -0
  213. package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +37 -0
  214. package/esm2020/src/app/shared/material/numpad/numpad.model.mjs +15 -0
  215. package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +60 -0
  216. package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +46 -0
  217. package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +46 -0
  218. package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +22 -0
  219. package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +344 -0
  220. package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +52 -0
  221. package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +64 -0
  222. package/esm2020/src/app/shared/modules.mjs +11 -0
  223. package/esm2020/src/app/shared/observables.mjs +103 -0
  224. package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +141 -0
  225. package/esm2020/src/app/shared/pipes/colors.pipe.mjs +23 -0
  226. package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +48 -0
  227. package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +66 -0
  228. package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +27 -0
  229. package/esm2020/src/app/shared/pipes/duration.pipe.mjs +34 -0
  230. package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +62 -0
  231. package/esm2020/src/app/shared/pipes/form.pipes.mjs +187 -0
  232. package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +48 -0
  233. package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +46 -0
  234. package/esm2020/src/app/shared/pipes/maps.pipe.mjs +63 -0
  235. package/esm2020/src/app/shared/pipes/math.pipes.mjs +59 -0
  236. package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +21 -0
  237. package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +30 -0
  238. package/esm2020/src/app/shared/pipes/pipes.module.mjs +239 -0
  239. package/esm2020/src/app/shared/pipes/property.pipes.mjs +93 -0
  240. package/esm2020/src/app/shared/pipes/string.pipes.mjs +121 -0
  241. package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +43 -0
  242. package/esm2020/src/app/shared/pipes/types.pipes.mjs +45 -0
  243. package/esm2020/src/app/shared/platforms.mjs +43 -0
  244. package/esm2020/src/app/shared/services/entity-service.class.mjs +7 -0
  245. package/esm2020/src/app/shared/services/job.utils.mjs +92 -0
  246. package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +337 -0
  247. package/esm2020/src/app/shared/services/progress-bar.service.mjs +33 -0
  248. package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +119 -0
  249. package/esm2020/src/app/shared/services/startable-service.class.mjs +110 -0
  250. package/esm2020/src/app/shared/services/translate-context.service.mjs +105 -0
  251. package/esm2020/src/app/shared/services/validator-service.class.mjs +2 -0
  252. package/esm2020/src/app/shared/services.mjs +62 -0
  253. package/esm2020/src/app/shared/shared-routing.module.mjs +70 -0
  254. package/esm2020/src/app/shared/shared.module.mjs +208 -0
  255. package/esm2020/src/app/shared/shared.testing.module.mjs +84 -0
  256. package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +268 -0
  257. package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +60 -0
  258. package/esm2020/src/app/shared/storage/storage.service.mjs +132 -0
  259. package/esm2020/src/app/shared/storage/storage.utils.mjs +13 -0
  260. package/esm2020/src/app/shared/testing/observable.test.mjs +95 -0
  261. package/esm2020/src/app/shared/testing/tests.page.mjs +33 -0
  262. package/esm2020/src/app/shared/toast/toast.testing.mjs +51 -0
  263. package/esm2020/src/app/shared/toast/toast.testing.module.mjs +45 -0
  264. package/esm2020/src/app/shared/toast/toasts.mjs +144 -0
  265. package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +58 -0
  266. package/esm2020/src/app/shared/toolbar/toolbar.mjs +251 -0
  267. package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +53 -0
  268. package/esm2020/src/app/shared/types.mjs +2 -0
  269. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +57 -0
  270. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +45 -0
  271. package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +97 -0
  272. package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +204 -0
  273. package/esm2020/src/app/shared/upload-file/upload-file.model.mjs +20 -0
  274. package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +104 -0
  275. package/esm2020/src/app/shared/validator/validators.mjs +573 -0
  276. package/esm2020/src/app/shared/version/versions.mjs +81 -0
  277. package/esm2020/src/app/social/job/job.module.mjs +42 -0
  278. package/esm2020/src/app/social/job/progression/job-progression.component.mjs +20 -0
  279. package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +216 -0
  280. package/esm2020/src/app/social/job/progression/job-progression.list.mjs +43 -0
  281. package/esm2020/src/app/social/job/progression/job-progression.model.mjs +23 -0
  282. package/esm2020/src/app/social/job/progression/job-progression.service.mjs +71 -0
  283. package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +52 -0
  284. package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +55 -0
  285. package/esm2020/src/app/social/job/testing/job.testing.module.mjs +35 -0
  286. package/esm2020/src/app/social/message/message.form.mjs +81 -0
  287. package/esm2020/src/app/social/message/message.modal.mjs +93 -0
  288. package/esm2020/src/app/social/message/message.model.mjs +65 -0
  289. package/esm2020/src/app/social/message/message.module.mjs +35 -0
  290. package/esm2020/src/app/social/message/message.service.mjs +84 -0
  291. package/esm2020/src/app/social/social.errors.mjs +10 -0
  292. package/esm2020/src/app/social/social.module.mjs +47 -0
  293. package/esm2020/src/app/social/social.testing.module.mjs +51 -0
  294. package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +114 -0
  295. package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +246 -0
  296. package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +227 -0
  297. package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +112 -0
  298. package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +35 -0
  299. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +111 -0
  300. package/esm2020/src/app/social/user-event/user-event.model.mjs +2 -0
  301. package/esm2020/src/app/social/user-event/user-event.module.mjs +39 -0
  302. package/esm2020/src/app/social/user-event/user-event.service.mjs +487 -0
  303. package/esm2020/src/environments/environment.class.mjs +5 -0
  304. package/esm2020/src/environments/environment.mjs +94 -0
  305. package/esm2020/sumaris-net.ngx-components.mjs +5 -0
  306. package/fesm2015/sumaris-net.ngx-components.mjs +38842 -0
  307. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -0
  308. package/fesm2020/sumaris-net.ngx-components.mjs +37941 -0
  309. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -0
  310. package/index.d.ts +5 -0
  311. package/package.json +23 -137
  312. package/public_api.d.ts +286 -0
  313. package/src/app/admin/admin-routing.module.d.ts +9 -0
  314. package/src/app/admin/admin.module.d.ts +10 -0
  315. package/src/app/admin/services/filter/person.filter.d.ts +21 -0
  316. package/src/app/admin/services/person.service.d.ts +44 -0
  317. package/src/app/admin/services/validator/person.validator.d.ts +14 -0
  318. package/src/app/admin/users/users.d.ts +44 -0
  319. package/src/app/admin/users/users.module.d.ts +13 -0
  320. package/src/app/core/about/about.modal.d.ts +32 -0
  321. package/src/app/core/about/about.module.d.ts +10 -0
  322. package/src/app/core/account/account.module.d.ts +15 -0
  323. package/src/app/core/account/account.page.d.ts +68 -0
  324. package/src/app/core/account/new-token.modal.d.ts +41 -0
  325. package/src/app/core/account/token.table.d.ts +25 -0
  326. package/src/app/core/auth/auth.form.d.ts +36 -0
  327. package/src/app/core/auth/auth.modal.d.ts +24 -0
  328. package/src/app/core/auth/auth.module.d.ts +11 -0
  329. package/src/app/core/core.module.d.ts +31 -0
  330. package/src/app/core/core.testing.module.d.ts +14 -0
  331. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +26 -0
  332. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +9 -0
  333. package/src/app/core/form/entity/editor.class.d.ts +243 -0
  334. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +128 -0
  335. package/src/app/core/form/entity/entity-editor.class.d.ts +205 -0
  336. package/src/app/core/form/entity/entity-metadata.component.d.ts +13 -0
  337. package/src/app/core/form/entity/entity.module.d.ts +10 -0
  338. package/src/app/core/form/form.class.d.ts +155 -0
  339. package/src/app/core/form/form.module.d.ts +13 -0
  340. package/src/app/core/form/form.utils.d.ts +336 -0
  341. package/src/app/core/form/list/list.form.d.ts +81 -0
  342. package/src/app/core/form/list/list.module.d.ts +9 -0
  343. package/src/app/core/form/properties/properties.form.d.ts +44 -0
  344. package/src/app/core/form/properties/properties.module.d.ts +11 -0
  345. package/src/app/core/form/properties/properties.table.d.ts +78 -0
  346. package/src/app/core/form/properties/property.validator.d.ts +13 -0
  347. package/src/app/core/form/properties/testing/properties-form.test.d.ts +19 -0
  348. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +12 -0
  349. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +14 -0
  350. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +11 -0
  351. package/src/app/core/form/text-popover/text-form.component.d.ts +32 -0
  352. package/src/app/core/form/text-popover/text-popover.component.d.ts +70 -0
  353. package/src/app/core/form/text-popover/text-popover.module.d.ts +10 -0
  354. package/src/app/core/graphql/graphql.module.d.ts +8 -0
  355. package/src/app/core/graphql/graphql.service.d.ts +148 -0
  356. package/src/app/core/graphql/graphql.utils.d.ts +42 -0
  357. package/src/app/core/home/home.d.ts +74 -0
  358. package/src/app/core/home/home.module.d.ts +12 -0
  359. package/src/app/core/icon/icon.component.d.ts +13 -0
  360. package/src/app/core/icon/icon.module.d.ts +9 -0
  361. package/src/app/core/install/install-upgrade-card.component.d.ts +63 -0
  362. package/src/app/core/install/install-upgrade-card.module.d.ts +9 -0
  363. package/src/app/core/menu/menu.component.d.ts +62 -0
  364. package/src/app/core/menu/menu.model.d.ts +28 -0
  365. package/src/app/core/menu/menu.module.d.ts +10 -0
  366. package/src/app/core/menu/menu.service.d.ts +21 -0
  367. package/src/app/core/offline/update-offline-mode-card.component.d.ts +11 -0
  368. package/src/app/core/offline/update-offline-mode-card.module.d.ts +9 -0
  369. package/src/app/core/peer/select-peer.modal.d.ts +53 -0
  370. package/src/app/core/peer/select-peer.module.d.ts +11 -0
  371. package/src/app/core/register/register-confirm.page.d.ts +24 -0
  372. package/src/app/core/register/register.form.d.ts +48 -0
  373. package/src/app/core/register/register.modal.d.ts +14 -0
  374. package/src/app/core/register/register.module.d.ts +12 -0
  375. package/src/app/core/services/account.service.d.ts +191 -0
  376. package/src/app/core/services/auth-guard.service.d.ts +17 -0
  377. package/src/app/core/services/base-entity-service.class.d.ts +104 -0
  378. package/src/app/core/services/base-graphql-service.class.d.ts +77 -0
  379. package/src/app/core/services/base58.d.ts +7 -0
  380. package/src/app/core/services/config/core.config.d.ts +29 -0
  381. package/src/app/core/services/config.service.d.ts +60 -0
  382. package/src/app/core/services/crypto.service.d.ts +44 -0
  383. package/src/app/core/services/errors.d.ts +51 -0
  384. package/src/app/core/services/local-settings.service.d.ts +90 -0
  385. package/src/app/core/services/model/account.model.d.ts +35 -0
  386. package/src/app/core/services/model/config.model.d.ts +36 -0
  387. package/src/app/core/services/model/department.model.d.ts +11 -0
  388. package/src/app/core/services/model/entity.decorators.d.ts +17 -0
  389. package/src/app/core/services/model/entity.model.d.ts +89 -0
  390. package/src/app/core/services/model/filter.model.d.ts +43 -0
  391. package/src/app/core/services/model/history.model.d.ts +20 -0
  392. package/src/app/core/services/model/model.enum.d.ts +7 -0
  393. package/src/app/core/services/model/peer.model.d.ts +29 -0
  394. package/src/app/core/services/model/person.model.d.ts +31 -0
  395. package/src/app/core/services/model/referential.model.d.ts +77 -0
  396. package/src/app/core/services/model/settings.model.d.ts +26 -0
  397. package/src/app/core/services/model/token.model.d.ts +21 -0
  398. package/src/app/core/services/network.service.d.ts +149 -0
  399. package/src/app/core/services/network.types.d.ts +5 -0
  400. package/src/app/core/services/network.utils.d.ts +31 -0
  401. package/src/app/core/services/pipes/account.pipes.d.ts +15 -0
  402. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +9 -0
  403. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +9 -0
  404. package/src/app/core/services/pipes/usage-mode.pipes.d.ts +15 -0
  405. package/src/app/core/services/platform.service.d.ts +96 -0
  406. package/src/app/core/services/storage/entities-storage.service.d.ts +108 -0
  407. package/src/app/core/services/storage/entity-store.class.d.ts +113 -0
  408. package/src/app/core/services/testing/referential-filter.model.d.ts +9 -0
  409. package/src/app/core/services/testing/referential.validator.d.ts +22 -0
  410. package/src/app/core/services/validator/account.validator.d.ts +17 -0
  411. package/src/app/core/services/validator/base.validator.class.d.ts +21 -0
  412. package/src/app/core/services/validator/local-settings.validator.d.ts +18 -0
  413. package/src/app/core/services/validator/user-settings.validator.d.ts +10 -0
  414. package/src/app/core/services/validator/user-token.validator.d.ts +13 -0
  415. package/src/app/core/settings/settings.module.d.ts +10 -0
  416. package/src/app/core/settings/settings.page.d.ts +68 -0
  417. package/src/app/core/table/actions-column.component.d.ts +48 -0
  418. package/src/app/core/table/async-table.class.d.ts +383 -0
  419. package/src/app/core/table/entities-async-table-datasource.class.d.ts +80 -0
  420. package/src/app/core/table/entities-table-datasource.class.d.ts +94 -0
  421. package/src/app/core/table/memory-table.class.d.ts +25 -0
  422. package/src/app/core/table/table-select-columns.component.d.ts +22 -0
  423. package/src/app/core/table/table.class.d.ts +386 -0
  424. package/src/app/core/table/table.model.d.ts +26 -0
  425. package/src/app/core/table/table.module.d.ts +10 -0
  426. package/src/app/core/table/table.utils.d.ts +11 -0
  427. package/src/app/core/table/testing/table-validator.service.d.ts +17 -0
  428. package/src/app/core/table/testing/table.testing.d.ts +53 -0
  429. package/src/app/core/table/testing/table.testing.module.d.ts +11 -0
  430. package/src/app/shared/alerts.d.ts +53 -0
  431. package/src/app/shared/audio/audio.d.ts +44 -0
  432. package/src/app/shared/audio/audio.testing.d.ts +13 -0
  433. package/src/app/shared/audio/audio.testing.module.d.ts +11 -0
  434. package/src/app/shared/capacitor/keyboard.d.ts +16 -0
  435. package/src/app/shared/capacitor/plugins.d.ts +7 -0
  436. package/src/app/shared/constants.d.ts +7 -0
  437. package/src/app/shared/dates.d.ts +39 -0
  438. package/src/app/shared/debug/debug-service.class.d.ts +5 -0
  439. package/src/app/shared/debug/debug.component.d.ts +13 -0
  440. package/src/app/shared/debug/debug.module.d.ts +12 -0
  441. package/src/app/shared/directives/autofocus.directive.d.ts +19 -0
  442. package/src/app/shared/directives/autotitle.directive.d.ts +10 -0
  443. package/src/app/shared/directives/directives.module.d.ts +12 -0
  444. package/src/app/shared/directives/drag-and-drop.directive.d.ts +17 -0
  445. package/src/app/shared/directives/ng-var.directive.d.ts +12 -0
  446. package/src/app/shared/directives/resizable/resizable.component.d.ts +21 -0
  447. package/src/app/shared/directives/resizable/resizable.directive.d.ts +12 -0
  448. package/src/app/shared/directives/resizable/resizable.module.d.ts +8 -0
  449. package/src/app/shared/events.d.ts +27 -0
  450. package/src/app/shared/file/csv.utils.d.ts +19 -0
  451. package/src/app/shared/file/file.service.d.ts +23 -0
  452. package/src/app/shared/file/file.utils.d.ts +20 -0
  453. package/src/app/shared/file/images.utils.d.ts +19 -0
  454. package/src/app/shared/file/json.utils.d.ts +16 -0
  455. package/src/app/shared/file/uri.utils.d.ts +7 -0
  456. package/src/app/shared/focusable.d.ts +4 -0
  457. package/src/app/shared/form/field.component.d.ts +71 -0
  458. package/src/app/shared/form/field.model.d.ts +37 -0
  459. package/src/app/shared/form/loading-spinner.d.ts +8 -0
  460. package/src/app/shared/forms.d.ts +89 -0
  461. package/src/app/shared/functions.d.ts +132 -0
  462. package/src/app/shared/geolocation/geolocation.utils.d.ts +19 -0
  463. package/src/app/shared/gesture/gesture-config.d.ts +15 -0
  464. package/src/app/shared/gesture/hammer.utils.d.ts +16 -0
  465. package/src/app/shared/graph/colors.utils.d.ts +17 -0
  466. package/src/app/shared/graph/graph-colors.d.ts +63 -0
  467. package/src/app/shared/guard/component-dirty.guard.d.ts +19 -0
  468. package/src/app/shared/help/help.modal.d.ts +33 -0
  469. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +10 -0
  470. package/src/app/shared/hotkeys/hotkeys.service.d.ts +28 -0
  471. package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +11 -0
  472. package/src/app/shared/http/http.utils.d.ts +27 -0
  473. package/src/app/shared/image/gallery/image-gallery.component.d.ts +98 -0
  474. package/src/app/shared/image/gallery/image-gallery.module.d.ts +14 -0
  475. package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +12 -0
  476. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +33 -0
  477. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +16 -0
  478. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +12 -0
  479. package/src/app/shared/image/image.model.d.ts +5 -0
  480. package/src/app/shared/image/image.module.d.ts +8 -0
  481. package/src/app/shared/image/image.service.d.ts +32 -0
  482. package/src/app/shared/inputs.d.ts +32 -0
  483. package/src/app/shared/interceptors/progess.interceptor.d.ts +8 -0
  484. package/src/app/shared/logging/log-level.model.d.ts +38 -0
  485. package/src/app/shared/logging/logger.model.d.ts +68 -0
  486. package/src/app/shared/logging/logging-service.class.d.ts +39 -0
  487. package/src/app/shared/logging/logging-service.config.d.ts +25 -0
  488. package/src/app/shared/logging/logging-service.module.d.ts +9 -0
  489. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +36 -0
  490. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +138 -0
  491. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +21 -0
  492. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +4 -0
  493. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +45 -0
  494. package/src/app/shared/material/badge/badge.directive.d.ts +37 -0
  495. package/src/app/shared/material/badge/badge.module.d.ts +10 -0
  496. package/src/app/shared/material/badge/badge.test.d.ts +21 -0
  497. package/src/app/shared/material/boolean/boolean.module.d.ts +19 -0
  498. package/src/app/shared/material/boolean/material.boolean.d.ts +66 -0
  499. package/src/app/shared/material/chips/chips.module.d.ts +21 -0
  500. package/src/app/shared/material/chips/material.chips.d.ts +126 -0
  501. package/src/app/shared/material/chips/testing/chips.test.d.ts +31 -0
  502. package/src/app/shared/material/datetime/datetime.module.d.ts +24 -0
  503. package/src/app/shared/material/datetime/material.date.d.ts +74 -0
  504. package/src/app/shared/material/datetime/material.dateshort.d.ts +75 -0
  505. package/src/app/shared/material/datetime/material.datetime.d.ts +100 -0
  506. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +31 -0
  507. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +30 -0
  508. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +29 -0
  509. package/src/app/shared/material/duration/duration.module.d.ts +18 -0
  510. package/src/app/shared/material/duration/duration.utils.d.ts +3 -0
  511. package/src/app/shared/material/duration/material.duration.d.ts +57 -0
  512. package/src/app/shared/material/latlong/latlong.utils.d.ts +13 -0
  513. package/src/app/shared/material/latlong/material.latlong.d.ts +65 -0
  514. package/src/app/shared/material/latlong/material.latlong.module.d.ts +19 -0
  515. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +21 -0
  516. package/src/app/shared/material/material.animations.d.ts +4 -0
  517. package/src/app/shared/material/material.module.d.ts +45 -0
  518. package/src/app/shared/material/material.testing.module.d.ts +25 -0
  519. package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +22 -0
  520. package/src/app/shared/material/numpad/numpad.component.d.ts +26 -0
  521. package/src/app/shared/material/numpad/numpad.container.d.ts +40 -0
  522. package/src/app/shared/material/numpad/numpad.content.d.ts +7 -0
  523. package/src/app/shared/material/numpad/numpad.directive.d.ts +35 -0
  524. package/src/app/shared/material/numpad/numpad.dom-service.d.ts +16 -0
  525. package/src/app/shared/material/numpad/numpad.model.d.ts +30 -0
  526. package/src/app/shared/material/numpad/numpad.module.d.ts +16 -0
  527. package/src/app/shared/material/numpad/testing/numpad.test.d.ts +13 -0
  528. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +15 -0
  529. package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +10 -0
  530. package/src/app/shared/material/swipe/material.swipe.d.ts +89 -0
  531. package/src/app/shared/material/swipe/swipe.module.d.ts +15 -0
  532. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +22 -0
  533. package/src/app/shared/modules.d.ts +8 -0
  534. package/src/app/shared/observables.d.ts +29 -0
  535. package/src/app/shared/pipes/arrays.pipe.d.ts +54 -0
  536. package/src/app/shared/pipes/colors.pipe.d.ts +9 -0
  537. package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +23 -0
  538. package/src/app/shared/pipes/date-format.pipe.d.ts +34 -0
  539. package/src/app/shared/pipes/date-from-now.pipe.d.ts +12 -0
  540. package/src/app/shared/pipes/duration.pipe.d.ts +13 -0
  541. package/src/app/shared/pipes/file-size.pipe.d.ts +30 -0
  542. package/src/app/shared/pipes/form.pipes.d.ts +59 -0
  543. package/src/app/shared/pipes/highlight.pipe.d.ts +11 -0
  544. package/src/app/shared/pipes/latlong-format.pipe.d.ts +20 -0
  545. package/src/app/shared/pipes/maps.pipe.d.ts +22 -0
  546. package/src/app/shared/pipes/math.pipes.d.ts +20 -0
  547. package/src/app/shared/pipes/ng-init.pipe.d.ts +8 -0
  548. package/src/app/shared/pipes/number-format.pipe.d.ts +10 -0
  549. package/src/app/shared/pipes/pipes.module.d.ts +27 -0
  550. package/src/app/shared/pipes/property.pipes.d.ts +26 -0
  551. package/src/app/shared/pipes/string.pipes.d.ts +47 -0
  552. package/src/app/shared/pipes/translate-context.pipe.d.ts +17 -0
  553. package/src/app/shared/pipes/types.pipes.d.ts +18 -0
  554. package/src/app/shared/platforms.d.ts +8 -0
  555. package/src/app/shared/services/entity-service.class.d.ts +73 -0
  556. package/src/app/shared/services/job.utils.d.ts +20 -0
  557. package/src/app/shared/services/memory-entity-service.class.d.ts +71 -0
  558. package/src/app/shared/services/progress-bar.service.d.ts +20 -0
  559. package/src/app/shared/services/startable-observable-service.class.d.ts +33 -0
  560. package/src/app/shared/services/startable-service.class.d.ts +34 -0
  561. package/src/app/shared/services/translate-context.service.d.ts +29 -0
  562. package/src/app/shared/services/validator-service.class.d.ts +10 -0
  563. package/src/app/shared/services.d.ts +9 -0
  564. package/src/app/shared/shared-routing.module.d.ts +22 -0
  565. package/src/app/shared/shared.module.d.ts +31 -0
  566. package/src/app/shared/shared.testing.module.d.ts +17 -0
  567. package/src/app/shared/storage/storage-explorer.component.d.ts +58 -0
  568. package/src/app/shared/storage/storage-explorer.module.d.ts +16 -0
  569. package/src/app/shared/storage/storage.service.d.ts +23 -0
  570. package/src/app/shared/storage/storage.utils.d.ts +19 -0
  571. package/src/app/shared/testing/observable.test.d.ts +25 -0
  572. package/src/app/shared/testing/tests.page.d.ts +20 -0
  573. package/src/app/shared/toast/toast.testing.d.ts +15 -0
  574. package/src/app/shared/toast/toast.testing.module.d.ts +11 -0
  575. package/src/app/shared/toast/toasts.d.ts +17 -0
  576. package/src/app/shared/toolbar/modal-toolbar.d.ts +21 -0
  577. package/src/app/shared/toolbar/toolbar.d.ts +63 -0
  578. package/src/app/shared/toolbar/toolbar.module.d.ts +15 -0
  579. package/src/app/shared/types.d.ts +26 -0
  580. package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +20 -0
  581. package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +11 -0
  582. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +39 -0
  583. package/src/app/shared/upload-file/upload-file.component.d.ts +48 -0
  584. package/src/app/shared/upload-file/upload-file.model.d.ts +30 -0
  585. package/src/app/shared/validator/form-error-adapter.class.d.ts +27 -0
  586. package/src/app/shared/validator/validators.d.ts +115 -0
  587. package/src/app/shared/version/versions.d.ts +26 -0
  588. package/src/app/social/job/job.module.d.ts +12 -0
  589. package/src/app/social/job/progression/job-progression.component.d.ts +9 -0
  590. package/src/app/social/job/progression/job-progression.icon.d.ts +49 -0
  591. package/src/app/social/job/progression/job-progression.list.d.ts +21 -0
  592. package/src/app/social/job/progression/job-progression.model.d.ts +11 -0
  593. package/src/app/social/job/progression/job-progression.service.d.ts +34 -0
  594. package/src/app/social/job/testing/job-progression.testing.d.ts +17 -0
  595. package/src/app/social/job/testing/job-progression.testing.service.d.ts +17 -0
  596. package/src/app/social/job/testing/job.testing.module.d.ts +11 -0
  597. package/src/app/social/message/message.form.d.ts +30 -0
  598. package/src/app/social/message/message.modal.d.ts +39 -0
  599. package/src/app/social/message/message.model.d.ts +31 -0
  600. package/src/app/social/message/message.module.d.ts +11 -0
  601. package/src/app/social/message/message.service.d.ts +27 -0
  602. package/src/app/social/social.errors.d.ts +9 -0
  603. package/src/app/social/social.module.d.ts +20 -0
  604. package/src/app/social/social.testing.module.d.ts +13 -0
  605. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +31 -0
  606. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +71 -0
  607. package/src/app/social/user-event/testing/user-event.testing.d.ts +34 -0
  608. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +44 -0
  609. package/src/app/social/user-event/testing/user-event.testing.module.d.ts +11 -0
  610. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +41 -0
  611. package/src/app/social/user-event/user-event.model.d.ts +45 -0
  612. package/src/app/social/user-event/user-event.module.d.ts +12 -0
  613. package/src/app/social/user-event/user-event.service.d.ts +124 -0
  614. package/src/environments/environment.class.d.ts +57 -0
  615. package/src/environments/environment.d.ts +3 -0
  616. package/.editorconfig +0 -24
  617. package/.eslintrc.json +0 -74
  618. package/.gitattribute +0 -1
  619. package/.github/CONTRIBUTING.md +0 -10
  620. package/.github/ISSUE_TEMPLATE.md +0 -6
  621. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  622. package/.github/github_disclaimer.md +0 -14
  623. package/.gitlab-ci.yml +0 -46
  624. package/.graphqlconfig +0 -15
  625. package/angular.json +0 -230
  626. package/capacitor.config.json +0 -9
  627. package/ionic.config.json +0 -7
  628. package/karma.conf.js +0 -32
  629. package/ng-package.json +0 -19
  630. package/ngcc.config.js +0 -14
  631. package/public_api.ts +0 -343
  632. package/resources/android/build/tools/android-accept-licenses.sh +0 -14
  633. package/resources/android/icon/drawable-hdpi-icon.png +0 -0
  634. package/resources/android/icon/drawable-ldpi-icon.png +0 -0
  635. package/resources/android/icon/drawable-mdpi-icon.png +0 -0
  636. package/resources/android/icon/drawable-xhdpi-icon.png +0 -0
  637. package/resources/android/icon/drawable-xxhdpi-icon.png +0 -0
  638. package/resources/android/icon/drawable-xxxhdpi-icon.png +0 -0
  639. package/resources/android/splash/drawable-land-hdpi-screen.png +0 -0
  640. package/resources/android/splash/drawable-land-ldpi-screen.png +0 -0
  641. package/resources/android/splash/drawable-land-mdpi-screen.png +0 -0
  642. package/resources/android/splash/drawable-land-xhdpi-screen.png +0 -0
  643. package/resources/android/splash/drawable-land-xxhdpi-screen.png +0 -0
  644. package/resources/android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  645. package/resources/android/splash/drawable-port-hdpi-screen.png +0 -0
  646. package/resources/android/splash/drawable-port-ldpi-screen.png +0 -0
  647. package/resources/android/splash/drawable-port-mdpi-screen.png +0 -0
  648. package/resources/android/splash/drawable-port-xhdpi-screen.png +0 -0
  649. package/resources/android/splash/drawable-port-xxhdpi-screen.png +0 -0
  650. package/resources/android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  651. package/resources/android/splash/drawable-xxxhdpi-screen.png +0 -0
  652. package/resources/icon/TODO.md +0 -11
  653. package/resources/icon.png +0 -0
  654. package/resources/icon.png.md5 +0 -1
  655. package/resources/icon.xcf +0 -0
  656. package/resources/ios/icon/icon-1024.png +0 -0
  657. package/resources/ios/icon/icon-108@2x.png +0 -0
  658. package/resources/ios/icon/icon-20.png +0 -0
  659. package/resources/ios/icon/icon-20@2x.png +0 -0
  660. package/resources/ios/icon/icon-20@3x.png +0 -0
  661. package/resources/ios/icon/icon-24@2x.png +0 -0
  662. package/resources/ios/icon/icon-27.5@2x.png +0 -0
  663. package/resources/ios/icon/icon-29.png +0 -0
  664. package/resources/ios/icon/icon-29@2x.png +0 -0
  665. package/resources/ios/icon/icon-29@3x.png +0 -0
  666. package/resources/ios/icon/icon-40.png +0 -0
  667. package/resources/ios/icon/icon-40@2x.png +0 -0
  668. package/resources/ios/icon/icon-40@3x.png +0 -0
  669. package/resources/ios/icon/icon-44@2x.png +0 -0
  670. package/resources/ios/icon/icon-50.png +0 -0
  671. package/resources/ios/icon/icon-50@2x.png +0 -0
  672. package/resources/ios/icon/icon-60.png +0 -0
  673. package/resources/ios/icon/icon-60@2x.png +0 -0
  674. package/resources/ios/icon/icon-60@3x.png +0 -0
  675. package/resources/ios/icon/icon-72.png +0 -0
  676. package/resources/ios/icon/icon-72@2x.png +0 -0
  677. package/resources/ios/icon/icon-76.png +0 -0
  678. package/resources/ios/icon/icon-76@2x.png +0 -0
  679. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  680. package/resources/ios/icon/icon-86@2x.png +0 -0
  681. package/resources/ios/icon/icon-98@2x.png +0 -0
  682. package/resources/ios/icon/icon-small.png +0 -0
  683. package/resources/ios/icon/icon-small@2x.png +0 -0
  684. package/resources/ios/icon/icon-small@3x.png +0 -0
  685. package/resources/ios/icon/icon.png +0 -0
  686. package/resources/ios/icon/icon@2x.png +0 -0
  687. package/resources/ios/splash/Default-1792h~iphone.png +0 -0
  688. package/resources/ios/splash/Default-2436h.png +0 -0
  689. package/resources/ios/splash/Default-2688h~iphone.png +0 -0
  690. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  691. package/resources/ios/splash/Default-667h.png +0 -0
  692. package/resources/ios/splash/Default-736h.png +0 -0
  693. package/resources/ios/splash/Default-Landscape-1792h~iphone.png +0 -0
  694. package/resources/ios/splash/Default-Landscape-2436h.png +0 -0
  695. package/resources/ios/splash/Default-Landscape-2688h~iphone.png +0 -0
  696. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  697. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  698. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  699. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  700. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  701. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  702. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  703. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  704. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  705. package/resources/ios/splash/Default~iphone.png +0 -0
  706. package/resources/splash.png +0 -0
  707. package/resources/splash.png.md5 +0 -1
  708. package/scripts/build-android.sh +0 -18
  709. package/scripts/build-i18n.js +0 -24
  710. package/scripts/docker-start.sh +0 -6
  711. package/scripts/emulate-android.sh +0 -17
  712. package/scripts/env-android.sh +0 -83
  713. package/scripts/env-clean.sh +0 -23
  714. package/scripts/env-global.sh +0 -156
  715. package/scripts/install-android-sdk-tools.sh +0 -73
  716. package/scripts/ionic-update.sh +0 -24
  717. package/scripts/node/playground.ts +0 -9
  718. package/scripts/node/resources.js +0 -90
  719. package/scripts/release.sh +0 -149
  720. package/scripts/run-android.sh +0 -59
  721. package/scripts/test.sh +0 -19
  722. package/src/app/admin/admin-routing.module.ts +0 -30
  723. package/src/app/admin/admin.module.ts +0 -23
  724. package/src/app/admin/services/filter/person.filter.ts +0 -77
  725. package/src/app/admin/services/person.service.ts +0 -212
  726. package/src/app/admin/services/validator/person.validator.ts +0 -37
  727. package/src/app/admin/users/users.html +0 -427
  728. package/src/app/admin/users/users.module.ts +0 -34
  729. package/src/app/admin/users/users.scss +0 -59
  730. package/src/app/admin/users/users.ts +0 -257
  731. package/src/app/app-routing.module.ts +0 -126
  732. package/src/app/app.component.html +0 -12
  733. package/src/app/app.component.scss +0 -4
  734. package/src/app/app.component.ts +0 -205
  735. package/src/app/app.module.ts +0 -326
  736. package/src/app/core/about/about.modal.html +0 -140
  737. package/src/app/core/about/about.modal.scss +0 -23
  738. package/src/app/core/about/about.modal.ts +0 -71
  739. package/src/app/core/about/about.module.ts +0 -24
  740. package/src/app/core/account/account.module.ts +0 -38
  741. package/src/app/core/account/account.page.html +0 -241
  742. package/src/app/core/account/account.page.scss +0 -21
  743. package/src/app/core/account/account.page.ts +0 -366
  744. package/src/app/core/account/new-token.modal.html +0 -120
  745. package/src/app/core/account/new-token.modal.ts +0 -138
  746. package/src/app/core/account/token.table.html +0 -177
  747. package/src/app/core/account/token.table.scss +0 -7
  748. package/src/app/core/account/token.table.ts +0 -141
  749. package/src/app/core/auth/auth.form.html +0 -77
  750. package/src/app/core/auth/auth.form.scss +0 -1
  751. package/src/app/core/auth/auth.form.ts +0 -145
  752. package/src/app/core/auth/auth.modal.html +0 -57
  753. package/src/app/core/auth/auth.modal.scss +0 -1
  754. package/src/app/core/auth/auth.modal.ts +0 -80
  755. package/src/app/core/auth/auth.module.ts +0 -33
  756. package/src/app/core/core.module.ts +0 -100
  757. package/src/app/core/core.testing.module.ts +0 -64
  758. package/src/app/core/form/buttons/form-buttons-bar.component.html +0 -59
  759. package/src/app/core/form/buttons/form-buttons-bar.component.scss +0 -14
  760. package/src/app/core/form/buttons/form-buttons-bar.component.ts +0 -70
  761. package/src/app/core/form/buttons/form-buttons-bar.module.ts +0 -24
  762. package/src/app/core/form/entity/editor.class.ts +0 -803
  763. package/src/app/core/form/entity/entity-editor-modal.class.ts +0 -537
  764. package/src/app/core/form/entity/entity-editor.class.ts +0 -885
  765. package/src/app/core/form/entity/entity-metadata.component.html +0 -53
  766. package/src/app/core/form/entity/entity-metadata.component.scss +0 -28
  767. package/src/app/core/form/entity/entity-metadata.component.ts +0 -19
  768. package/src/app/core/form/entity/entity.module.ts +0 -25
  769. package/src/app/core/form/form.class.ts +0 -401
  770. package/src/app/core/form/form.module.ts +0 -37
  771. package/src/app/core/form/form.utils.ts +0 -639
  772. package/src/app/core/form/list/list.form.html +0 -67
  773. package/src/app/core/form/list/list.form.scss +0 -40
  774. package/src/app/core/form/list/list.form.ts +0 -278
  775. package/src/app/core/form/list/list.module.ts +0 -25
  776. package/src/app/core/form/properties/properties.form.html +0 -129
  777. package/src/app/core/form/properties/properties.form.ts +0 -147
  778. package/src/app/core/form/properties/properties.module.ts +0 -30
  779. package/src/app/core/form/properties/properties.table.html +0 -219
  780. package/src/app/core/form/properties/properties.table.scss +0 -0
  781. package/src/app/core/form/properties/properties.table.ts +0 -291
  782. package/src/app/core/form/properties/property.validator.ts +0 -22
  783. package/src/app/core/form/properties/testing/properties-form.test.html +0 -21
  784. package/src/app/core/form/properties/testing/properties-form.test.ts +0 -102
  785. package/src/app/core/form/properties/testing/properties-form.testing.module.ts +0 -25
  786. package/src/app/core/form/text-popover/testing/text-popover.testing.html +0 -45
  787. package/src/app/core/form/text-popover/testing/text-popover.testing.module.ts +0 -32
  788. package/src/app/core/form/text-popover/testing/text-popover.testing.ts +0 -77
  789. package/src/app/core/form/text-popover/text-form.component.html +0 -44
  790. package/src/app/core/form/text-popover/text-form.component.scss +0 -8
  791. package/src/app/core/form/text-popover/text-form.component.ts +0 -65
  792. package/src/app/core/form/text-popover/text-popover.component.html +0 -86
  793. package/src/app/core/form/text-popover/text-popover.component.scss +0 -7
  794. package/src/app/core/form/text-popover/text-popover.component.ts +0 -165
  795. package/src/app/core/form/text-popover/text-popover.module.ts +0 -27
  796. package/src/app/core/graphql/graphql.module.ts +0 -17
  797. package/src/app/core/graphql/graphql.service.ts +0 -969
  798. package/src/app/core/graphql/graphql.utils.ts +0 -167
  799. package/src/app/core/home/home.html +0 -211
  800. package/src/app/core/home/home.module.ts +0 -32
  801. package/src/app/core/home/home.scss +0 -242
  802. package/src/app/core/home/home.ts +0 -298
  803. package/src/app/core/icon/icon.component.html +0 -15
  804. package/src/app/core/icon/icon.component.ts +0 -23
  805. package/src/app/core/icon/icon.module.ts +0 -22
  806. package/src/app/core/install/install-upgrade-card.component.html +0 -144
  807. package/src/app/core/install/install-upgrade-card.component.scss +0 -4
  808. package/src/app/core/install/install-upgrade-card.component.ts +0 -412
  809. package/src/app/core/install/install-upgrade-card.module.ts +0 -23
  810. package/src/app/core/menu/menu.component.html +0 -135
  811. package/src/app/core/menu/menu.component.scss +0 -225
  812. package/src/app/core/menu/menu.component.ts +0 -352
  813. package/src/app/core/menu/menu.model.ts +0 -64
  814. package/src/app/core/menu/menu.module.ts +0 -27
  815. package/src/app/core/menu/menu.service.ts +0 -62
  816. package/src/app/core/offline/update-offline-mode-card.component.html +0 -45
  817. package/src/app/core/offline/update-offline-mode-card.component.scss +0 -4
  818. package/src/app/core/offline/update-offline-mode-card.component.ts +0 -28
  819. package/src/app/core/offline/update-offline-mode-card.module.ts +0 -24
  820. package/src/app/core/peer/select-peer.modal.html +0 -123
  821. package/src/app/core/peer/select-peer.modal.scss +0 -20
  822. package/src/app/core/peer/select-peer.modal.ts +0 -197
  823. package/src/app/core/peer/select-peer.module.ts +0 -28
  824. package/src/app/core/register/register-confirm.page.html +0 -55
  825. package/src/app/core/register/register-confirm.page.scss +0 -121
  826. package/src/app/core/register/register-confirm.page.ts +0 -94
  827. package/src/app/core/register/register.form.html +0 -125
  828. package/src/app/core/register/register.form.scss +0 -10
  829. package/src/app/core/register/register.form.ts +0 -213
  830. package/src/app/core/register/register.modal.html +0 -70
  831. package/src/app/core/register/register.modal.ts +0 -52
  832. package/src/app/core/register/register.module.ts +0 -31
  833. package/src/app/core/services/account.service.ts +0 -1431
  834. package/src/app/core/services/auth-guard.service.ts +0 -70
  835. package/src/app/core/services/base-entity-service.class.ts +0 -598
  836. package/src/app/core/services/base-graphql-service.class.ts +0 -298
  837. package/src/app/core/services/base58.ts +0 -83
  838. package/src/app/core/services/config/account.config.ts +0 -35
  839. package/src/app/core/services/config/core.config.ts +0 -180
  840. package/src/app/core/services/config.service.ts +0 -414
  841. package/src/app/core/services/crypto.service.ts +0 -126
  842. package/src/app/core/services/errors.ts +0 -67
  843. package/src/app/core/services/local-settings.service.spec.ts +0 -32
  844. package/src/app/core/services/local-settings.service.ts +0 -548
  845. package/src/app/core/services/model/account.model.ts +0 -141
  846. package/src/app/core/services/model/config.model.ts +0 -122
  847. package/src/app/core/services/model/department.model.ts +0 -34
  848. package/src/app/core/services/model/entity.decorators.ts +0 -112
  849. package/src/app/core/services/model/entity.model.ts +0 -326
  850. package/src/app/core/services/model/filter.model.ts +0 -139
  851. package/src/app/core/services/model/history.model.ts +0 -25
  852. package/src/app/core/services/model/model.enum.ts +0 -11
  853. package/src/app/core/services/model/peer.model.ts +0 -86
  854. package/src/app/core/services/model/person.model.ts +0 -112
  855. package/src/app/core/services/model/referential.model.ts +0 -244
  856. package/src/app/core/services/model/settings.model.ts +0 -32
  857. package/src/app/core/services/model/token.model.ts +0 -54
  858. package/src/app/core/services/network.service.spec.ts +0 -49
  859. package/src/app/core/services/network.service.ts +0 -729
  860. package/src/app/core/services/network.types.ts +0 -26
  861. package/src/app/core/services/network.utils.ts +0 -57
  862. package/src/app/core/services/pipes/account.pipes.ts +0 -25
  863. package/src/app/core/services/pipes/department-to-string.pipe.ts +0 -15
  864. package/src/app/core/services/pipes/person-to-string.pipe.ts +0 -15
  865. package/src/app/core/services/pipes/usage-mode.pipes.ts +0 -26
  866. package/src/app/core/services/platform.service.spec.ts +0 -56
  867. package/src/app/core/services/platform.service.ts +0 -605
  868. package/src/app/core/services/storage/entities-storage.service.ts +0 -542
  869. package/src/app/core/services/storage/entity-store.class.ts +0 -598
  870. package/src/app/core/services/testing/referential-filter.model.ts +0 -28
  871. package/src/app/core/services/testing/referential.validator.ts +0 -57
  872. package/src/app/core/services/validator/account.validator.ts +0 -58
  873. package/src/app/core/services/validator/base.validator.class.ts +0 -54
  874. package/src/app/core/services/validator/local-settings.validator.ts +0 -72
  875. package/src/app/core/services/validator/user-settings.validator.ts +0 -25
  876. package/src/app/core/services/validator/user-token.validator.ts +0 -55
  877. package/src/app/core/settings/settings.module.ts +0 -24
  878. package/src/app/core/settings/settings.page.html +0 -264
  879. package/src/app/core/settings/settings.page.ts +0 -365
  880. package/src/app/core/table/actions-column.component.html +0 -91
  881. package/src/app/core/table/actions-column.component.ts +0 -70
  882. package/src/app/core/table/async-table.class.ts +0 -1934
  883. package/src/app/core/table/entities-async-table-datasource.class.ts +0 -482
  884. package/src/app/core/table/entities-table-datasource.class.ts +0 -496
  885. package/src/app/core/table/memory-table.class.ts +0 -65
  886. package/src/app/core/table/table-select-columns.component.html +0 -58
  887. package/src/app/core/table/table-select-columns.component.ts +0 -50
  888. package/src/app/core/table/table.class.ts +0 -1973
  889. package/src/app/core/table/table.model.ts +0 -35
  890. package/src/app/core/table/table.module.ts +0 -26
  891. package/src/app/core/table/table.utils.ts +0 -38
  892. package/src/app/core/table/testing/multi-table.testing.ts +0 -261
  893. package/src/app/core/table/testing/table-validator.service.ts +0 -25
  894. package/src/app/core/table/testing/table.testing.html +0 -396
  895. package/src/app/core/table/testing/table.testing.module.ts +0 -25
  896. package/src/app/core/table/testing/table.testing.scss +0 -23
  897. package/src/app/core/table/testing/table.testing.ts +0 -292
  898. package/src/app/shared/alerts.ts +0 -292
  899. package/src/app/shared/audio/audio.testing.html +0 -33
  900. package/src/app/shared/audio/audio.testing.module.ts +0 -32
  901. package/src/app/shared/audio/audio.testing.ts +0 -31
  902. package/src/app/shared/audio/audio.ts +0 -278
  903. package/src/app/shared/base64.utils.ts +0 -66
  904. package/src/app/shared/capacitor/keyboard.ts +0 -40
  905. package/src/app/shared/capacitor/plugins.ts +0 -12
  906. package/src/app/shared/constants.ts +0 -12
  907. package/src/app/shared/dates.ts +0 -163
  908. package/src/app/shared/debug/debug-service.class.ts +0 -8
  909. package/src/app/shared/debug/debug.component.html +0 -13
  910. package/src/app/shared/debug/debug.component.scss +0 -24
  911. package/src/app/shared/debug/debug.component.spec.ts +0 -25
  912. package/src/app/shared/debug/debug.component.ts +0 -27
  913. package/src/app/shared/debug/debug.module.ts +0 -28
  914. package/src/app/shared/directives/autofocus.directive.ts +0 -109
  915. package/src/app/shared/directives/autotitle.directive.ts +0 -24
  916. package/src/app/shared/directives/directives.module.ts +0 -29
  917. package/src/app/shared/directives/drag-and-drop.directive.ts +0 -47
  918. package/src/app/shared/directives/ng-var.directive.ts +0 -32
  919. package/src/app/shared/directives/resizable/resizable.component.ts +0 -47
  920. package/src/app/shared/directives/resizable/resizable.directive.ts +0 -43
  921. package/src/app/shared/directives/resizable/resizable.module.ts +0 -9
  922. package/src/app/shared/directives/resizable/resizable.style.scss +0 -44
  923. package/src/app/shared/directives/resizable/resizable.template.html +0 -6
  924. package/src/app/shared/events.ts +0 -96
  925. package/src/app/shared/file/csv.utils.ts +0 -94
  926. package/src/app/shared/file/file.service.ts +0 -132
  927. package/src/app/shared/file/file.utils.ts +0 -138
  928. package/src/app/shared/file/images.utils.ts +0 -198
  929. package/src/app/shared/file/json.utils.ts +0 -73
  930. package/src/app/shared/file/uri.utils.ts +0 -25
  931. package/src/app/shared/focusable.ts +0 -10
  932. package/src/app/shared/form/field.component.html +0 -261
  933. package/src/app/shared/form/field.component.scss +0 -7
  934. package/src/app/shared/form/field.component.ts +0 -318
  935. package/src/app/shared/form/field.model.ts +0 -64
  936. package/src/app/shared/form/loading-spinner.ts +0 -16
  937. package/src/app/shared/forms.ts +0 -458
  938. package/src/app/shared/functions.ts +0 -492
  939. package/src/app/shared/geolocation/geolocation.utils.ts +0 -101
  940. package/src/app/shared/gesture/gesture-config.ts +0 -45
  941. package/src/app/shared/gesture/hammer.utils.ts +0 -14
  942. package/src/app/shared/graph/colors.utils.ts +0 -74
  943. package/src/app/shared/graph/graph-colors.ts +0 -295
  944. package/src/app/shared/guard/component-dirty.guard.ts +0 -70
  945. package/src/app/shared/help/help.modal.html +0 -42
  946. package/src/app/shared/help/help.modal.ts +0 -61
  947. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.html +0 -11
  948. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.scss +0 -39
  949. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.ts +0 -16
  950. package/src/app/shared/hotkeys/hotkeys.service.ts +0 -89
  951. package/src/app/shared/hotkeys/shared-hotkeys.module.ts +0 -27
  952. package/src/app/shared/http/http.utils.ts +0 -89
  953. package/src/app/shared/image/gallery/image-gallery.component.html +0 -231
  954. package/src/app/shared/image/gallery/image-gallery.component.scss +0 -196
  955. package/src/app/shared/image/gallery/image-gallery.component.ts +0 -389
  956. package/src/app/shared/image/gallery/image-gallery.module.ts +0 -34
  957. package/src/app/shared/image/gallery/testing/gallegry.model.testing.ts +0 -27
  958. package/src/app/shared/image/gallery/testing/gallery.service.testing.ts +0 -102
  959. package/src/app/shared/image/gallery/testing/gallery.testing.html +0 -15
  960. package/src/app/shared/image/gallery/testing/gallery.testing.module.ts +0 -39
  961. package/src/app/shared/image/gallery/testing/gallery.testing.ts +0 -38
  962. package/src/app/shared/image/image.model.ts +0 -6
  963. package/src/app/shared/image/image.module.ts +0 -16
  964. package/src/app/shared/image/image.service.ts +0 -94
  965. package/src/app/shared/image/image.testing.module.ts +0 -23
  966. package/src/app/shared/inputs.ts +0 -282
  967. package/src/app/shared/interceptors/progess.interceptor.ts +0 -25
  968. package/src/app/shared/logging/log-level.model.ts +0 -53
  969. package/src/app/shared/logging/logger.model.ts +0 -120
  970. package/src/app/shared/logging/logging-service.class.ts +0 -134
  971. package/src/app/shared/logging/logging-service.config.ts +0 -29
  972. package/src/app/shared/logging/logging-service.module.ts +0 -22
  973. package/src/app/shared/material/autocomplete/material.autocomplete.config.ts +0 -83
  974. package/src/app/shared/material/autocomplete/material.autocomplete.html +0 -262
  975. package/src/app/shared/material/autocomplete/material.autocomplete.module.ts +0 -45
  976. package/src/app/shared/material/autocomplete/material.autocomplete.scss +0 -21
  977. package/src/app/shared/material/autocomplete/material.autocomplete.ts +0 -1022
  978. package/src/app/shared/material/autocomplete/material.autocomplete.utils.ts +0 -20
  979. package/src/app/shared/material/autocomplete/testing/autocomplete.test.html +0 -876
  980. package/src/app/shared/material/autocomplete/testing/autocomplete.test.spec.ts +0 -38
  981. package/src/app/shared/material/autocomplete/testing/autocomplete.test.ts +0 -247
  982. package/src/app/shared/material/badge/badge.directive.ts +0 -164
  983. package/src/app/shared/material/badge/badge.module.ts +0 -22
  984. package/src/app/shared/material/badge/badge.test.html +0 -261
  985. package/src/app/shared/material/badge/badge.test.ts +0 -36
  986. package/src/app/shared/material/boolean/boolean.module.ts +0 -40
  987. package/src/app/shared/material/boolean/material.boolean.html +0 -155
  988. package/src/app/shared/material/boolean/material.boolean.scss +0 -34
  989. package/src/app/shared/material/boolean/material.boolean.ts +0 -239
  990. package/src/app/shared/material/chips/chips.module.ts +0 -44
  991. package/src/app/shared/material/chips/material.chips.html +0 -146
  992. package/src/app/shared/material/chips/material.chips.scss +0 -65
  993. package/src/app/shared/material/chips/material.chips.ts +0 -768
  994. package/src/app/shared/material/chips/testing/chips.test.html +0 -137
  995. package/src/app/shared/material/chips/testing/chips.test.ts +0 -175
  996. package/src/app/shared/material/datetime/datetime.module.ts +0 -52
  997. package/src/app/shared/material/datetime/material.date.html +0 -132
  998. package/src/app/shared/material/datetime/material.date.scss +0 -17
  999. package/src/app/shared/material/datetime/material.date.ts +0 -408
  1000. package/src/app/shared/material/datetime/material.dateshort.html +0 -134
  1001. package/src/app/shared/material/datetime/material.dateshort.scss +0 -23
  1002. package/src/app/shared/material/datetime/material.dateshort.ts +0 -422
  1003. package/src/app/shared/material/datetime/material.datetime.html +0 -224
  1004. package/src/app/shared/material/datetime/material.datetime.scss +0 -90
  1005. package/src/app/shared/material/datetime/material.datetime.ts +0 -575
  1006. package/src/app/shared/material/datetime/testing/mat-date-time.test.html +0 -354
  1007. package/src/app/shared/material/datetime/testing/mat-date-time.test.ts +0 -134
  1008. package/src/app/shared/material/datetime/testing/mat-date.test.html +0 -418
  1009. package/src/app/shared/material/datetime/testing/mat-date.test.ts +0 -135
  1010. package/src/app/shared/material/datetime/testing/mat-dateshort.test.html +0 -370
  1011. package/src/app/shared/material/datetime/testing/mat-dateshort.test.ts +0 -127
  1012. package/src/app/shared/material/duration/duration.module.ts +0 -39
  1013. package/src/app/shared/material/duration/duration.utils.ts +0 -41
  1014. package/src/app/shared/material/duration/material.duration.html +0 -44
  1015. package/src/app/shared/material/duration/material.duration.scss +0 -28
  1016. package/src/app/shared/material/duration/material.duration.ts +0 -294
  1017. package/src/app/shared/material/latlong/latlong.utils.ts +0 -300
  1018. package/src/app/shared/material/latlong/material.latlong.html +0 -127
  1019. package/src/app/shared/material/latlong/material.latlong.module.ts +0 -40
  1020. package/src/app/shared/material/latlong/material.latlong.scss +0 -48
  1021. package/src/app/shared/material/latlong/material.latlong.ts +0 -421
  1022. package/src/app/shared/material/latlong/testing/latlong.test.html +0 -341
  1023. package/src/app/shared/material/latlong/testing/latlong.test.ts +0 -121
  1024. package/src/app/shared/material/material.animations.ts +0 -129
  1025. package/src/app/shared/material/material.module.ts +0 -94
  1026. package/src/app/shared/material/material.testing.module.ts +0 -135
  1027. package/src/app/shared/material/memory/memory.utils.ts +0 -54
  1028. package/src/app/shared/material/numpad/numpad.animation.ts +0 -1
  1029. package/src/app/shared/material/numpad/numpad.append-to-input.directive.ts +0 -109
  1030. package/src/app/shared/material/numpad/numpad.component.ts +0 -78
  1031. package/src/app/shared/material/numpad/numpad.container.html +0 -32
  1032. package/src/app/shared/material/numpad/numpad.container.scss +0 -50
  1033. package/src/app/shared/material/numpad/numpad.container.ts +0 -176
  1034. package/src/app/shared/material/numpad/numpad.content.html +0 -13
  1035. package/src/app/shared/material/numpad/numpad.content.ts +0 -10
  1036. package/src/app/shared/material/numpad/numpad.directive.ts +0 -173
  1037. package/src/app/shared/material/numpad/numpad.dom-service.ts +0 -46
  1038. package/src/app/shared/material/numpad/numpad.model.ts +0 -55
  1039. package/src/app/shared/material/numpad/numpad.module.ts +0 -38
  1040. package/src/app/shared/material/numpad/testing/numpad.test.html +0 -146
  1041. package/src/app/shared/material/numpad/testing/numpad.test.ts +0 -55
  1042. package/src/app/shared/material/paginator/material.paginator-i18n.ts +0 -49
  1043. package/src/app/shared/material/stepper/material.stepper-i18n.ts +0 -18
  1044. package/src/app/shared/material/swipe/material.swipe.html +0 -63
  1045. package/src/app/shared/material/swipe/material.swipe.scss +0 -39
  1046. package/src/app/shared/material/swipe/material.swipe.ts +0 -350
  1047. package/src/app/shared/material/swipe/swipe.module.ts +0 -33
  1048. package/src/app/shared/material/swipe/testing/swipe.test.html +0 -128
  1049. package/src/app/shared/material/swipe/testing/swipe.test.ts +0 -81
  1050. package/src/app/shared/modules.ts +0 -11
  1051. package/src/app/shared/observables.ts +0 -132
  1052. package/src/app/shared/pipes/arrays.pipe.ts +0 -111
  1053. package/src/app/shared/pipes/colors.pipe.ts +0 -19
  1054. package/src/app/shared/pipes/date-diff-duration.pipe.ts +0 -48
  1055. package/src/app/shared/pipes/date-format.pipe.ts +0 -78
  1056. package/src/app/shared/pipes/date-from-now.pipe.ts +0 -20
  1057. package/src/app/shared/pipes/duration.pipe.spec.ts +0 -51
  1058. package/src/app/shared/pipes/duration.pipe.ts +0 -34
  1059. package/src/app/shared/pipes/file-size.pipe.ts +0 -58
  1060. package/src/app/shared/pipes/form.pipes.ts +0 -204
  1061. package/src/app/shared/pipes/highlight.pipe.ts +0 -37
  1062. package/src/app/shared/pipes/latlong-format.pipe.ts +0 -30
  1063. package/src/app/shared/pipes/maps.pipe.ts +0 -39
  1064. package/src/app/shared/pipes/math.pipes.ts +0 -39
  1065. package/src/app/shared/pipes/ng-init.pipe.ts +0 -14
  1066. package/src/app/shared/pipes/number-format.pipe.ts +0 -21
  1067. package/src/app/shared/pipes/pipes.module.ts +0 -134
  1068. package/src/app/shared/pipes/property.pipes.ts +0 -87
  1069. package/src/app/shared/pipes/string.pipes.ts +0 -85
  1070. package/src/app/shared/pipes/translate-context.pipe.ts +0 -33
  1071. package/src/app/shared/pipes/types.pipes.ts +0 -31
  1072. package/src/app/shared/platforms.ts +0 -58
  1073. package/src/app/shared/services/entity-service.class.ts +0 -127
  1074. package/src/app/shared/services/job.utils.ts +0 -121
  1075. package/src/app/shared/services/memory-entity-service.class.ts +0 -447
  1076. package/src/app/shared/services/progress-bar.service.ts +0 -42
  1077. package/src/app/shared/services/startable-observable-service.class.ts +0 -137
  1078. package/src/app/shared/services/startable-service.class.ts +0 -131
  1079. package/src/app/shared/services/storage.utils.ts +0 -47
  1080. package/src/app/shared/services/translate-context.service.ts +0 -116
  1081. package/src/app/shared/services/validator-service.class.ts +0 -14
  1082. package/src/app/shared/services.ts +0 -91
  1083. package/src/app/shared/shared-routing.module.ts +0 -66
  1084. package/src/app/shared/shared.module.spec.ts +0 -13
  1085. package/src/app/shared/shared.module.ts +0 -146
  1086. package/src/app/shared/shared.testing.module.ts +0 -50
  1087. package/src/app/shared/storage/storage-explorer.component.html +0 -175
  1088. package/src/app/shared/storage/storage-explorer.component.scss +0 -39
  1089. package/src/app/shared/storage/storage-explorer.component.spec.ts +0 -24
  1090. package/src/app/shared/storage/storage-explorer.component.ts +0 -292
  1091. package/src/app/shared/storage/storage-explorer.module.ts +0 -44
  1092. package/src/app/shared/storage/storage.service.ts +0 -133
  1093. package/src/app/shared/storage/storage.utils.ts +0 -25
  1094. package/src/app/shared/testing/observable.test.html +0 -53
  1095. package/src/app/shared/testing/observable.test.scss +0 -3
  1096. package/src/app/shared/testing/observable.test.ts +0 -117
  1097. package/src/app/shared/testing/tests.page.html +0 -30
  1098. package/src/app/shared/testing/tests.page.ts +0 -34
  1099. package/src/app/shared/toast/toast.testing.html +0 -42
  1100. package/src/app/shared/toast/toast.testing.module.ts +0 -32
  1101. package/src/app/shared/toast/toast.testing.ts +0 -58
  1102. package/src/app/shared/toast/toasts.ts +0 -183
  1103. package/src/app/shared/toolbar/modal-toolbar.html +0 -32
  1104. package/src/app/shared/toolbar/modal-toolbar.scss +0 -0
  1105. package/src/app/shared/toolbar/modal-toolbar.ts +0 -63
  1106. package/src/app/shared/toolbar/toolbar.html +0 -71
  1107. package/src/app/shared/toolbar/toolbar.module.ts +0 -35
  1108. package/src/app/shared/toolbar/toolbar.scss +0 -0
  1109. package/src/app/shared/toolbar/toolbar.ts +0 -254
  1110. package/src/app/shared/types.ts +0 -31
  1111. package/src/app/shared/upload-file/testing/upload-file.testing.html +0 -25
  1112. package/src/app/shared/upload-file/testing/upload-file.testing.module.ts +0 -32
  1113. package/src/app/shared/upload-file/testing/upload-file.testing.ts +0 -68
  1114. package/src/app/shared/upload-file/upload-file-popover.component.html +0 -43
  1115. package/src/app/shared/upload-file/upload-file-popover.component.scss +0 -6
  1116. package/src/app/shared/upload-file/upload-file-popover.component.ts +0 -115
  1117. package/src/app/shared/upload-file/upload-file.component.html +0 -46
  1118. package/src/app/shared/upload-file/upload-file.component.scss +0 -130
  1119. package/src/app/shared/upload-file/upload-file.component.ts +0 -218
  1120. package/src/app/shared/upload-file/upload-file.model.ts +0 -41
  1121. package/src/app/shared/validator/form-error-adapter.class.ts +0 -123
  1122. package/src/app/shared/validator/validators.ts +0 -639
  1123. package/src/app/shared/version/versions.ts +0 -91
  1124. package/src/app/social/job/job.module.ts +0 -26
  1125. package/src/app/social/job/progression/job-progression.component.html +0 -22
  1126. package/src/app/social/job/progression/job-progression.component.scss +0 -15
  1127. package/src/app/social/job/progression/job-progression.component.ts +0 -17
  1128. package/src/app/social/job/progression/job-progression.icon.html +0 -28
  1129. package/src/app/social/job/progression/job-progression.icon.scss +0 -5
  1130. package/src/app/social/job/progression/job-progression.icon.ts +0 -238
  1131. package/src/app/social/job/progression/job-progression.list.html +0 -21
  1132. package/src/app/social/job/progression/job-progression.list.scss +0 -17
  1133. package/src/app/social/job/progression/job-progression.list.ts +0 -49
  1134. package/src/app/social/job/progression/job-progression.model.ts +0 -28
  1135. package/src/app/social/job/progression/job-progression.service.ts +0 -86
  1136. package/src/app/social/job/testing/job-progression.testing.html +0 -20
  1137. package/src/app/social/job/testing/job-progression.testing.service.ts +0 -60
  1138. package/src/app/social/job/testing/job-progression.testing.ts +0 -51
  1139. package/src/app/social/job/testing/job.testing.module.ts +0 -22
  1140. package/src/app/social/message/message.form.html +0 -60
  1141. package/src/app/social/message/message.form.scss +0 -6
  1142. package/src/app/social/message/message.form.ts +0 -79
  1143. package/src/app/social/message/message.modal.html +0 -65
  1144. package/src/app/social/message/message.modal.ts +0 -118
  1145. package/src/app/social/message/message.model.ts +0 -81
  1146. package/src/app/social/message/message.module.ts +0 -22
  1147. package/src/app/social/message/message.service.ts +0 -88
  1148. package/src/app/social/social.errors.ts +0 -11
  1149. package/src/app/social/social.module.ts +0 -36
  1150. package/src/app/social/social.testing.module.ts +0 -40
  1151. package/src/app/social/user-event/notification/user-event-notification.icon.html +0 -16
  1152. package/src/app/social/user-event/notification/user-event-notification.icon.ts +0 -108
  1153. package/src/app/social/user-event/notification/user-event-notification.list.html +0 -135
  1154. package/src/app/social/user-event/notification/user-event-notification.list.scss +0 -73
  1155. package/src/app/social/user-event/notification/user-event-notification.list.ts +0 -287
  1156. package/src/app/social/user-event/testing/user-event.testing.html +0 -27
  1157. package/src/app/social/user-event/testing/user-event.testing.model.ts +0 -146
  1158. package/src/app/social/user-event/testing/user-event.testing.module.ts +0 -22
  1159. package/src/app/social/user-event/testing/user-event.testing.service.ts +0 -141
  1160. package/src/app/social/user-event/testing/user-event.testing.ts +0 -253
  1161. package/src/app/social/user-event/user-event.model.ts +0 -73
  1162. package/src/app/social/user-event/user-event.module.ts +0 -25
  1163. package/src/app/social/user-event/user-event.service.ts +0 -679
  1164. package/src/browserslist +0 -9
  1165. package/src/environments/environment.class.ts +0 -83
  1166. package/src/environments/environment.prod.ts +0 -47
  1167. package/src/environments/environment.test.ts +0 -90
  1168. package/src/environments/environment.ts +0 -108
  1169. package/src/favicon.ico +0 -0
  1170. package/src/global.scss +0 -27
  1171. package/src/index.html +0 -80
  1172. package/src/main.ts +0 -17
  1173. package/src/polyfills.ts +0 -68
  1174. package/src/schema.graphql +0 -3112
  1175. package/src/service-worker.js +0 -31
  1176. package/src/zone-flags.ts +0 -31
  1177. package/tsconfig.app.json +0 -15
  1178. package/tsconfig.json +0 -47
  1179. package/tsconfig.spec.json +0 -19
@@ -0,0 +1,399 @@
1
+ import { TableDataSource } from '@e-is/ngx-material-table';
2
+ import { BehaviorSubject, Subject } from 'rxjs';
3
+ import { ErrorCodes } from '../services/errors';
4
+ import { catchError, debounceTime, map, takeUntil } from 'rxjs/operators';
5
+ import { Directive } from '@angular/core';
6
+ import { firstFalsePromise } from '../../shared/observables';
7
+ import { isEmptyArray, isNotEmptyArray, removeEnd, sleep } from '../../shared/functions';
8
+ import { AppTableUtils } from './table.utils';
9
+ import { environment } from '../../../environments/environment';
10
+ import * as i0 from "@angular/core";
11
+ // @dynamic
12
+ // eslint-disable-next-line @angular-eslint/directive-class-suffix
13
+ export class EntitiesTableDataSource extends TableDataSource {
14
+ /**
15
+ * Creates a new TableDataSource instance, that can be used as datasource of `@angular/cdk` data-table.
16
+ *
17
+ * @param dataService A service to load and save data
18
+ * @param dataType Type of data contained by the Table. If not specified, then `data` with at least one element must be specified.
19
+ * @param environment
20
+ * @param validatorService Service that create instances of the FormGroup used to validate row fields.
21
+ * @param config Additional configuration for table.
22
+ */
23
+ constructor(dataType, dataService, validatorService, options) {
24
+ super([], dataType, validatorService, {
25
+ keepOriginalDataAfterConfirm: false,
26
+ readOnly: false,
27
+ saveOnlyDirtyRows: false,
28
+ saveBeforeDelete: false,
29
+ ...options
30
+ });
31
+ this.dataService = dataService;
32
+ this._debug = false;
33
+ this._creating = false;
34
+ this._saving = false;
35
+ this._fetchMoreFn = null;
36
+ this._stopWatchSubject = new Subject();
37
+ this.loadingSubject = new BehaviorSubject(undefined);
38
+ this._entityName = removeEnd((new dataType()).__typename || 'UnknownVO', 'VO');
39
+ this._debug = options?.suppressErrors === false && !environment.production;
40
+ }
41
+ /**
42
+ * @deprecated Use watchAllOptions or saveAllOptions
43
+ */
44
+ get serviceOptions() {
45
+ return this.config.dataServiceOptions
46
+ || { ...this.watchAllOptions, ...this.saveAllOptions };
47
+ }
48
+ /**
49
+ * @deprecated Use watchAllOptions or saveAllOptions
50
+ */
51
+ set serviceOptions(value) {
52
+ console.warn('dataSource.serviceOptions is deprecated! Please use \'watchAllOptions\' or \'saveAllOptions\' instead');
53
+ this.config.dataServiceOptions = value;
54
+ }
55
+ get watchAllOptions() {
56
+ return this.config.watchAllOptions;
57
+ }
58
+ set watchAllOptions(value) {
59
+ this.config.watchAllOptions = value;
60
+ }
61
+ get saveAllOptions() {
62
+ return this.config.saveAllOptions;
63
+ }
64
+ set saveAllOptions(value) {
65
+ this.config.saveAllOptions = value;
66
+ }
67
+ get loaded() {
68
+ return this.loadingSubject.value === false; // Should be false when undefined (initial state)
69
+ }
70
+ get loading() {
71
+ return this.loadingSubject.value !== false; // Should be true when undefined (initial state)
72
+ }
73
+ /**
74
+ * @deprecated use disconnect
75
+ */
76
+ ngOnDestroy() {
77
+ this.close();
78
+ }
79
+ /**
80
+ * @deprecated use disconnect
81
+ */
82
+ close() {
83
+ if (!this._stopWatchSubject.closed) {
84
+ if (this._debug)
85
+ console.debug('[entities-table-datasource] Closing...');
86
+ this._stopWatchSubject.next();
87
+ this._stopWatchSubject.complete();
88
+ this._stopWatchSubject.unsubscribe();
89
+ this.loadingSubject.complete();
90
+ this.loadingSubject.unsubscribe();
91
+ }
92
+ }
93
+ watchAll(offset, size, sortBy, sortDirection, filter) {
94
+ this._stopWatchSubject.next();
95
+ this._fetchMoreFn = null;
96
+ this.markAsLoading();
97
+ return this.dataService.watchAll(offset, size, sortBy, sortDirection, filter, this.serviceOptions)
98
+ .pipe(catchError(err => this.handleError(err, 'ERROR.LOAD_DATA_ERROR')), map((res) => {
99
+ if (this._saving) {
100
+ console.info(`[entities-table-datasource] Received ${this._entityName} data (from service), but still saving: skip`);
101
+ }
102
+ else if (this.hasSomeEditingRow()) {
103
+ console.warn(`[entities-table-datasource] Received ${this._entityName} data, while some row still editing: skip; Please check save() implementation in the table!`);
104
+ }
105
+ else {
106
+ this.updateDatasource((res.data || []));
107
+ this._fetchMoreFn = res.fetchMore;
108
+ }
109
+ return res;
110
+ }),
111
+ // Stop this pipe next time we call watchAll()
112
+ takeUntil(this._stopWatchSubject)
113
+ // ⚠ Notice: Don't put any operator after takeUntil to avoid potential subscription leaks
114
+ );
115
+ }
116
+ updateDatasourceFromRows(rows) {
117
+ // Avoid to update dataSourceSubject, when not need
118
+ if (this.datasourceSubject.observers?.length) {
119
+ if (!this.config.suppressErrors)
120
+ console.warn('[entities-table-datasource] Update datasource subject. Please prefer using \'rowsSubject\' instead of \'datasourceSubject\'');
121
+ super.updateDatasourceFromRows(rows);
122
+ }
123
+ else {
124
+ console.debug('[entities-table-datasource] Skipping datasourceSubject update (not used yet).');
125
+ }
126
+ }
127
+ async save() {
128
+ if (this.config.readOnly) {
129
+ console.error('[entities-table-datasource] Enable to save, because config.readOnly=true');
130
+ return false;
131
+ }
132
+ // Saving twice (should never occur)
133
+ if (this._saving) {
134
+ console.warn(`[entities-table-datasource] Trying to save ${this._entityName} rows twice. Skip`);
135
+ return false;
136
+ }
137
+ this._saving = true;
138
+ this.markAsLoading();
139
+ const onlyDirtyRows = this.config.saveOnlyDirtyRows;
140
+ try {
141
+ if (this._debug)
142
+ console.debug(`[entities-table-datasource] Saving ${this._entityName} rows... {onlyDirtyRows: ${onlyDirtyRows}}`);
143
+ // Get all rows
144
+ const rows = this.getRows();
145
+ // Finish editing all rows
146
+ const invalidRows = rows.filter(row => row.editing && !row.confirmEditCreate());
147
+ // Cannot finish some rows: error
148
+ if (invalidRows.length) {
149
+ // log errors
150
+ if (this._debug)
151
+ invalidRows.forEach(row => AppTableUtils.logRowErrors(row, `[entities-table-datasource] ${this._entityName} row #${row.id}`));
152
+ // Stop with an error
153
+ throw { code: ErrorCodes.TABLE_INVALID_ROW_ERROR, message: 'ERROR.TABLE_INVALID_ROW_ERROR' };
154
+ }
155
+ let data;
156
+ let dataToSave;
157
+ if (this.validatorService) {
158
+ dataToSave = [];
159
+ data = rows.map(row => {
160
+ const currentData = new this.dataConstructor();
161
+ currentData.fromObject(row.currentData);
162
+ // Filter to keep only dirty row
163
+ if (onlyDirtyRows && row.validator.dirty)
164
+ dataToSave.push(currentData);
165
+ return currentData;
166
+ });
167
+ if (!onlyDirtyRows)
168
+ dataToSave = data;
169
+ }
170
+ // Or use the current data without conversion (when no validator service used)
171
+ else {
172
+ data = rows.map(row => row.currentData);
173
+ // save all data, as we don't have any dirty marker
174
+ dataToSave = data;
175
+ }
176
+ // If no data to save: exit
177
+ if (onlyDirtyRows && !dataToSave.length) {
178
+ if (this._debug)
179
+ console.debug(`[entities-table-datasource] No ${this._entityName} data to save. Skip`);
180
+ return false;
181
+ }
182
+ if (this._debug)
183
+ console.debug(`[entities-table-datasource] Asking service to save this ${this._entityName} data:`, dataToSave);
184
+ await this.dataService.saveAll(dataToSave, this.serviceOptions);
185
+ if (this._debug)
186
+ console.debug(`[entities-table-datasource] Saving ${this._entityName} data [OK]`);
187
+ // LP 23/03/2021: update datasource is necessary but can be changed to a refetch() on QueryRef (must be created and registered in GraphqlService.watchQuery)
188
+ this.updateDatasource(data, { emitEvent: false });
189
+ return true;
190
+ }
191
+ catch (error) {
192
+ if (this._debug)
193
+ console.error('[entities-table-datasource] Error while saving: ' + error && error.message || error);
194
+ throw error;
195
+ }
196
+ finally {
197
+ this._saving = false;
198
+ this.markAsLoaded();
199
+ }
200
+ }
201
+ updateDatasource(data, opts) {
202
+ if (this._debug)
203
+ console.debug(`[entities-table-datasource] Updating datasource with data:`, data);
204
+ super.updateDatasource(data, opts);
205
+ if (!opts || opts.emitEvent !== false) {
206
+ this.markAsLoaded();
207
+ }
208
+ }
209
+ connect(collectionViewer) {
210
+ // DEBUG
211
+ //console.debug("[entities-datasource] connect");
212
+ return super.connect(collectionViewer);
213
+ }
214
+ disconnect(collectionViewer) {
215
+ if (this._debug)
216
+ console.debug('[entities-table-datasource] Disconnecting...');
217
+ super.disconnect(collectionViewer);
218
+ this.close();
219
+ }
220
+ waitIdle(debounceTimeMs) {
221
+ return firstFalsePromise(this.loadingSubject
222
+ .asObservable()
223
+ .pipe(debounceTime(debounceTimeMs || 100) // if not started yet, wait
224
+ ));
225
+ }
226
+ confirmCreate(row) {
227
+ const confirmed = super.confirmCreate(row);
228
+ if (!confirmed)
229
+ return false;
230
+ if (row.editing && row.validator) {
231
+ console.warn('[entities-table-datasource] Row still has {editing: true} after confirmCreate()! Force editing to false');
232
+ row.validator.disable({ onlySelf: true, emitEvent: false });
233
+ }
234
+ return true;
235
+ }
236
+ confirmEdit(row) {
237
+ const confirmed = super.confirmEdit(row);
238
+ if (!confirmed)
239
+ return false;
240
+ if (row.editing && row.validator) {
241
+ console.warn('[entities-table-datasource] Row still has {editing: true} after confirmEdit()! Force editing to false');
242
+ row.validator.disable({ onlySelf: true, emitEvent: false });
243
+ }
244
+ return true;
245
+ }
246
+ startEdit(row) {
247
+ const editing = super.startEdit(row);
248
+ if (!editing)
249
+ return false;
250
+ if (!row.editing && row.validator) {
251
+ console.warn('[entities-table-datasource] Row still has {editing: false} after startEdit()! Force editing');
252
+ row.validator.enable({ onlySelf: true, emitEvent: false });
253
+ }
254
+ return true;
255
+ }
256
+ handleError(error, message) {
257
+ const errorMsg = error && error.message || error;
258
+ console.error(`[entities-table-datasource] Service ${this._entityName} sent error: ${errorMsg}`, error);
259
+ this.markAsLoaded();
260
+ throw new Error(message || errorMsg);
261
+ }
262
+ handleServiceError(error) {
263
+ const errorMsg = error && error.message || error;
264
+ console.error(`[entities-table-datasource] Service ${this._entityName} sent error: ${errorMsg}`, error);
265
+ this.markAsLoaded();
266
+ throw error;
267
+ }
268
+ delete(id) {
269
+ // If new row: not need to propagate to the dataService
270
+ if (id === -1) {
271
+ return super.delete(id);
272
+ }
273
+ const row = this.getRow(id);
274
+ if (!row) {
275
+ console.error(`[entities-table-datasource] Row to delete with id=${id} not found`);
276
+ return;
277
+ }
278
+ this.markAsLoading();
279
+ const superDelete = super.delete;
280
+ const self = this;
281
+ this.dataService.deleteAll([row.currentData], this.serviceOptions)
282
+ .catch(err => this.handleServiceError(err))
283
+ .then(() => {
284
+ setTimeout(() => {
285
+ // make sure row has been deleted (because GrapQHl cache remove can failed)
286
+ const present = this.getRow(id) === row;
287
+ if (present)
288
+ superDelete.call(self, id);
289
+ this.markAsLoaded();
290
+ }, 300);
291
+ });
292
+ }
293
+ async deleteAll(rows) {
294
+ this.markAsLoading();
295
+ const data = this.getDataFromRows(rows);
296
+ try {
297
+ // Call service deletion
298
+ await this.dataService.deleteAll(data, this.serviceOptions);
299
+ await sleep(300); // Wait propagation (e.g. update cache, then received update from dataService.watchAll())
300
+ // Workaround, to be sure all rows have been deleted
301
+ // Sometime, the service miss deletion, or GraphQl cache remove failed.
302
+ // In this case, apply missing deletion using the super.delete() function
303
+ const rowNotDeleted = this.getRows().filter(row => rows.includes(row));
304
+ if (isNotEmptyArray(rowNotDeleted)) {
305
+ const superDelete = super.delete;
306
+ const self = this;
307
+ console.warn(`[entities-table-datasource] Force deletion of ${rowNotDeleted.length} rows! Please check that data service update the cache, after deletion`);
308
+ rowNotDeleted
309
+ // Start at the end
310
+ .sort((a, b) => a.id > b.id ? -1 : 1)
311
+ .forEach(r => superDelete.call(self, r.id));
312
+ }
313
+ }
314
+ catch (err) {
315
+ // Handle service error
316
+ this.handleServiceError(err);
317
+ }
318
+ finally {
319
+ this.markAsLoaded();
320
+ }
321
+ }
322
+ getRow(id) {
323
+ return super.getRow(id);
324
+ }
325
+ getRows() {
326
+ return this.rowsSubject.getValue();
327
+ }
328
+ hasSomeEditingRow() {
329
+ return (this.rowsSubject.value || []).some(row => row.editing);
330
+ }
331
+ async createNew(insertAt, opts = { editing: true }) {
332
+ // Avoid multiple call (only one editing row is allowed)
333
+ if (this._creating && opts.editing)
334
+ return;
335
+ this._creating = true;
336
+ try {
337
+ const row = await super.createNew(insertAt, opts);
338
+ if (!row)
339
+ return undefined; // Stop here
340
+ // Call observers
341
+ if (this.config?.onRowCreated) {
342
+ try {
343
+ await this.config.onRowCreated(row);
344
+ }
345
+ catch (err) {
346
+ // Log, then continue
347
+ console.error(err && err.message || err, err);
348
+ }
349
+ }
350
+ return row;
351
+ }
352
+ finally {
353
+ this._creating = false;
354
+ }
355
+ }
356
+ getData() {
357
+ const rows = this.getRows();
358
+ return this.getDataFromRows(rows);
359
+ }
360
+ async fetchMore(opts) {
361
+ if (!this._fetchMoreFn)
362
+ return false; // Avoid multiple call
363
+ if (this.hasSomeEditingRow()) {
364
+ console.warn(`Cannot fetch more ${this._entityName} because some row) still editing`);
365
+ return;
366
+ }
367
+ console.debug(`Will fetching more row(s) still...`);
368
+ // Forget the fetchMore function, to avoid multiple call
369
+ const fetchMoreFn = this._fetchMoreFn;
370
+ this._fetchMoreFn = null;
371
+ // Fetch next page
372
+ const res = await fetchMoreFn();
373
+ // Skip if empty (no more data)
374
+ if (isEmptyArray(res?.data))
375
+ return false;
376
+ // Update the data source
377
+ super.updateDatasource((this.currentData || []).concat(...res.data), opts);
378
+ // Remember fetchMore
379
+ this._fetchMoreFn = res.fetchMore;
380
+ return true;
381
+ }
382
+ /* -- protected method -- */
383
+ markAsLoading() {
384
+ if (this.loadingSubject.value !== true) {
385
+ this.loadingSubject.next(true);
386
+ }
387
+ }
388
+ markAsLoaded() {
389
+ if (this.loadingSubject.value !== false) {
390
+ this.loadingSubject.next(false);
391
+ }
392
+ }
393
+ }
394
+ EntitiesTableDataSource.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EntitiesTableDataSource, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
395
+ EntitiesTableDataSource.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: EntitiesTableDataSource, usesInheritance: true, ngImport: i0 });
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: EntitiesTableDataSource, decorators: [{
397
+ type: Directive
398
+ }], ctorParameters: function () { return [{ type: undefined }, { type: undefined }, { type: undefined }, { type: undefined }]; } });
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS9lbnRpdGllcy10YWJsZS1kYXRhc291cmNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXlELE1BQU0sMEJBQTBCLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBSXJELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7QUEyQmhFLFdBQVc7QUFFWCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLHVCQVVULFNBQVEsZUFBMkI7SUFxRHJDOzs7Ozs7OztPQVFHO0lBQ0gsWUFBWSxRQUFvQixFQUNKLFdBQXVDLEVBQ3ZELGdCQUFvQixFQUNwQixPQUFXO1FBQ3JCLEtBQUssQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BDLDRCQUE0QixFQUFFLEtBQUs7WUFDbkMsUUFBUSxFQUFFLEtBQUs7WUFDZixpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGdCQUFnQixFQUFFLEtBQUs7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QUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUzRSxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDRCQUE0QjtJQUU1QixhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQzs7b0hBcGNVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRm5DLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UsIFRhYmxlRGF0YVNvdXJjZUNvbmZpZywgVGFibGVFbGVtZW50LCBWYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnQGUtaXMvbmd4LW1hdGVyaWFsLXRhYmxlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50aXR5LCBJRW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuLi9zZXJ2aWNlcy9lcnJvcnMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucywgRmV0Y2hNb3JlRm4sIElFbnRpdGllc1NlcnZpY2UsIExvYWRSZXN1bHQgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgZmlyc3RGYWxzZVByb21pc2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXksIHJlbW92ZUVuZCwgc2xlZXAgfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFwcFRhYmxlVXRpbHMgfSBmcm9tICcuL3RhYmxlLnV0aWxzJztcbmltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElFbnRpdGllc1RhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vdGFibGUubW9kZWwnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8XG4gIFQgZXh0ZW5kcyBFbnRpdHk8VCwgSUQ+LFxuICBJRCA9IG51bWJlcixcbiAgV08gZXh0ZW5kcyBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMgPSBFbnRpdGllc1NlcnZpY2VXYXRjaE9wdGlvbnMsXG4gIFNPID0gYW55XG4gID4gZXh0ZW5kcyBUYWJsZURhdGFTb3VyY2VDb25maWcge1xuXG4gIG9uUm93Q3JlYXRlZD86IChyb3c6IFRhYmxlRWxlbWVudDxUPikgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gIHNhdmVPbmx5RGlydHlSb3dzPzogYm9vbGVhbjtcbiAgc2F2ZUJlZm9yZURlbGV0ZT86IGJvb2xlYW47IC8vIEZhbHNlIGJ5IGRlZmF1bHRcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgZGF0YVNlcnZpY2VPcHRpb25zPzogV08gJiBTTzsgLy8gT3B0aW9ucyBwYXNzZWQgdG8gdGhlIGRhdGFTZXJ2aWNlLndhdGNoQWxsKCkgYW5kIGRhdGFTZXJ2aWNlLnNhdmVBbGwoKVxuXG4gIHdhdGNoQWxsT3B0aW9ucz86IFdPOyAvLyBPcHRpb25zIHBhc3NlZCB0byB0aGUgZGF0YVNlcnZpY2Uuc2F2ZUFsbCgpXG4gIHNhdmVBbGxPcHRpb25zPzogU087IC8vIE9wdGlvbnMgcGFzc2VkIHRvIHRoZSBkYXRhU2VydmljZS5zYXZlQWxsKClcblxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbi8vIEBkeW5hbWljXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEVudGl0aWVzVGFibGVEYXRhU291cmNlPFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sXG4gIEYgPSBhbnksXG4gIElEID0gbnVtYmVyLFxuICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgU08gPSBhbnksXG4gIFYgZXh0ZW5kcyBWYWxpZGF0b3JTZXJ2aWNlID0gVmFsaWRhdG9yU2VydmljZSxcbiAgQyBleHRlbmRzIEVudGl0aWVzVGFibGVEYXRhU291cmNlQ29uZmlnPFQsIElELCBXTywgU08+ID0gRW50aXRpZXNUYWJsZURhdGFTb3VyY2VDb25maWc8VCwgSUQsIFdPLCBTTz4sXG4gIFIgZXh0ZW5kcyBUYWJsZUVsZW1lbnQ8VD4gPSBUYWJsZUVsZW1lbnQ8VD5cbiAgPlxuICAgIGV4dGVuZHMgVGFibGVEYXRhU291cmNlPFQsIFYsIEMsIFI+XG4gICAgaW1wbGVtZW50cyBJRW50aXRpZXNUYWJsZURhdGFTb3VyY2U8Uj4sIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZW50aXR5TmFtZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCBfZGVidWcgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9jcmVhdGluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3NhdmluZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2ZldGNoTW9yZUZuOiBGZXRjaE1vcmVGbjxMb2FkUmVzdWx0PFQ+PiA9IG51bGw7XG4gIHByb3RlY3RlZCBfc3RvcFdhdGNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIGdldCBzZXJ2aWNlT3B0aW9ucygpOiBXTyAmIFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZGF0YVNlcnZpY2VPcHRpb25zXG4gICAgICB8fCB7Li4udGhpcy53YXRjaEFsbE9wdGlvbnMsIC4uLnRoaXMuc2F2ZUFsbE9wdGlvbnN9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSB3YXRjaEFsbE9wdGlvbnMgb3Igc2F2ZUFsbE9wdGlvbnNcbiAgICovXG4gIHNldCBzZXJ2aWNlT3B0aW9ucyh2YWx1ZTogV08gJiBTTykgIHtcbiAgICBjb25zb2xlLndhcm4oJ2RhdGFTb3VyY2Uuc2VydmljZU9wdGlvbnMgaXMgZGVwcmVjYXRlZCEgUGxlYXNlIHVzZSBcXCd3YXRjaEFsbE9wdGlvbnNcXCcgb3IgXFwnc2F2ZUFsbE9wdGlvbnNcXCcgaW5zdGVhZCcpO1xuICAgIHRoaXMuY29uZmlnLmRhdGFTZXJ2aWNlT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHdhdGNoQWxsT3B0aW9ucygpOiBXTyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucztcbiAgfVxuXG4gIHNldCB3YXRjaEFsbE9wdGlvbnModmFsdWU6IFdPKSAge1xuICAgIHRoaXMuY29uZmlnLndhdGNoQWxsT3B0aW9ucyA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHNhdmVBbGxPcHRpb25zKCk6IFNPIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc2F2ZUFsbE9wdGlvbnM7XG4gIH1cblxuICBzZXQgc2F2ZUFsbE9wdGlvbnModmFsdWU6IFNPKSAge1xuICAgIHRoaXMuY29uZmlnLnNhdmVBbGxPcHRpb25zID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlID09PSBmYWxzZTsgLy8gU2hvdWxkIGJlIGZhbHNlIHdoZW4gdW5kZWZpbmVkIChpbml0aWFsIHN0YXRlKVxuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGluZ1N1YmplY3QudmFsdWUgIT09IGZhbHNlOyAvLyBTaG91bGQgYmUgdHJ1ZSB3aGVuIHVuZGVmaW5lZCAoaW5pdGlhbCBzdGF0ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFRhYmxlRGF0YVNvdXJjZSBpbnN0YW5jZSwgdGhhdCBjYW4gYmUgdXNlZCBhcyBkYXRhc291cmNlIG9mIGBAYW5ndWxhci9jZGtgIGRhdGEtdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhU2VydmljZSBBIHNlcnZpY2UgdG8gbG9hZCBhbmQgc2F2ZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhVHlwZSBUeXBlIG9mIGRhdGEgY29udGFpbmVkIGJ5IHRoZSBUYWJsZS4gSWYgbm90IHNwZWNpZmllZCwgdGhlbiBgZGF0YWAgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogQHBhcmFtIGVudmlyb25tZW50XG4gICAqIEBwYXJhbSB2YWxpZGF0b3JTZXJ2aWNlIFNlcnZpY2UgdGhhdCBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoZSBGb3JtR3JvdXAgdXNlZCB0byB2YWxpZGF0ZSByb3cgZmllbGRzLlxuICAgKiBAcGFyYW0gY29uZmlnIEFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGFibGUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkYXRhVHlwZTogbmV3KCkgPT4gVCxcbiAgICAgICAgICAgICAgcHVibGljIHJlYWRvbmx5IGRhdGFTZXJ2aWNlOiBJRW50aXRpZXNTZXJ2aWNlPFQsIEYsIFdPPixcbiAgICAgICAgICAgICAgdmFsaWRhdG9yU2VydmljZT86IFYsXG4gICAgICAgICAgICAgIG9wdGlvbnM/OiBDKSB7XG4gICAgc3VwZXIoW10sIGRhdGFUeXBlLCB2YWxpZGF0b3JTZXJ2aWNlLCB7XG4gICAgICBrZWVwT3JpZ2luYWxEYXRhQWZ0ZXJDb25maXJtOiBmYWxzZSxcbiAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgIHNhdmVPbmx5RGlydHlSb3dzOiBmYWxzZSxcbiAgICAgIHNhdmVCZWZvcmVEZWxldGU6IGZhbHNlLCAvLyBGb3IgdjEgY29tcGF0aWJpbGl0eVxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuXG4gICAgdGhpcy5fZW50aXR5TmFtZSA9IHJlbW92ZUVuZCgobmV3IGRhdGFUeXBlKCkpLl9fdHlwZW5hbWUgfHwgJ1Vua25vd25WTycsICdWTycpO1xuICAgIHRoaXMuX2RlYnVnID0gb3B0aW9ucz8uc3VwcHJlc3NFcnJvcnMgPT09IGZhbHNlICYmICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIHVzZSBkaXNjb25uZWN0XG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGRpc2Nvbm5lY3RcbiAgICovXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jbG9zZWQpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIENsb3NpbmcuLi4nKTtcbiAgICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fc3RvcFdhdGNoU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHdhdGNoQWxsKG9mZnNldDogbnVtYmVyLFxuICAgICAgICAgICBzaXplOiBudW1iZXIsXG4gICAgICAgICAgIHNvcnRCeT86IHN0cmluZyxcbiAgICAgICAgICAgc29ydERpcmVjdGlvbj86IFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgIGZpbHRlcj86IFBhcnRpYWw8Rj4pOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcblxuICAgIHRoaXMuX3N0b3BXYXRjaFN1YmplY3QubmV4dCgpO1xuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gbnVsbDtcbiAgICB0aGlzLm1hcmtBc0xvYWRpbmcoKTtcblxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLndhdGNoQWxsKG9mZnNldCwgc2l6ZSwgc29ydEJ5LCBzb3J0RGlyZWN0aW9uLCBmaWx0ZXIsIHRoaXMuc2VydmljZU9wdGlvbnMgYXMgV08pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIsICdFUlJPUi5MT0FEX0RBVEFfRVJST1InKSksXG4gICAgICAgIG1hcCgocmVzOiBMb2FkUmVzdWx0PFQ+KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuX3NhdmluZykge1xuICAgICAgICAgICAgY29uc29sZS5pbmZvKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gUmVjZWl2ZWQgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIChmcm9tIHNlcnZpY2UpLCBidXQgc3RpbGwgc2F2aW5nOiBza2lwYCk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmhhc1NvbWVFZGl0aW5nUm93KCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJlY2VpdmVkICR7dGhpcy5fZW50aXR5TmFtZX0gZGF0YSwgd2hpbGUgc29tZSByb3cgc3RpbGwgZWRpdGluZzogc2tpcDsgUGxlYXNlIGNoZWNrIHNhdmUoKSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgdGFibGUhYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRGF0YXNvdXJjZSgocmVzLmRhdGEgfHwgW10pIGFzIFRbXSk7XG4gICAgICAgICAgICB0aGlzLl9mZXRjaE1vcmVGbiA9IHJlcy5mZXRjaE1vcmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0pLFxuICAgICAgICAvLyBTdG9wIHRoaXMgcGlwZSBuZXh0IHRpbWUgd2UgY2FsbCB3YXRjaEFsbCgpXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9zdG9wV2F0Y2hTdWJqZWN0KVxuICAgICAgICAvLyDimqAgTm90aWNlOiBEb24ndCBwdXQgYW55IG9wZXJhdG9yIGFmdGVyIHRha2VVbnRpbCB0byBhdm9pZCBwb3RlbnRpYWwgc3Vic2NyaXB0aW9uIGxlYWtzXG4gICAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZURhdGFzb3VyY2VGcm9tUm93cyhyb3dzOiBSW10pIHtcbiAgICAvLyBBdm9pZCB0byB1cGRhdGUgZGF0YVNvdXJjZVN1YmplY3QsIHdoZW4gbm90IG5lZWRcbiAgICBpZiAodGhpcy5kYXRhc291cmNlU3ViamVjdC5vYnNlcnZlcnM/Lmxlbmd0aCkge1xuICAgICAgaWYgKCF0aGlzLmNvbmZpZy5zdXBwcmVzc0Vycm9ycykgY29uc29sZS53YXJuKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gVXBkYXRlIGRhdGFzb3VyY2Ugc3ViamVjdC4gUGxlYXNlIHByZWZlciB1c2luZyBcXCdyb3dzU3ViamVjdFxcJyBpbnN0ZWFkIG9mIFxcJ2RhdGFzb3VyY2VTdWJqZWN0XFwnJyk7XG4gICAgICBzdXBlci51cGRhdGVEYXRhc291cmNlRnJvbVJvd3Mocm93cyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFNraXBwaW5nIGRhdGFzb3VyY2VTdWJqZWN0IHVwZGF0ZSAobm90IHVzZWQgeWV0KS4nKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzYXZlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5yZWFkT25seSkge1xuICAgICAgY29uc29sZS5lcnJvcignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEVuYWJsZSB0byBzYXZlLCBiZWNhdXNlIGNvbmZpZy5yZWFkT25seT10cnVlJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIFNhdmluZyB0d2ljZSAoc2hvdWxkIG5ldmVyIG9jY3VyKVxuICAgIGlmICh0aGlzLl9zYXZpbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFRyeWluZyB0byBzYXZlICR7dGhpcy5fZW50aXR5TmFtZX0gcm93cyB0d2ljZS4gU2tpcGApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuX3NhdmluZyA9IHRydWU7XG4gICAgdGhpcy5tYXJrQXNMb2FkaW5nKCk7XG5cbiAgICBjb25zdCBvbmx5RGlydHlSb3dzID0gdGhpcy5jb25maWcuc2F2ZU9ubHlEaXJ0eVJvd3M7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gU2F2aW5nICR7dGhpcy5fZW50aXR5TmFtZX0gcm93cy4uLiB7b25seURpcnR5Um93czogJHtvbmx5RGlydHlSb3dzfX1gKTtcblxuICAgICAgLy8gR2V0IGFsbCByb3dzXG4gICAgICBjb25zdCByb3dzID0gdGhpcy5nZXRSb3dzKCk7XG5cbiAgICAgIC8vIEZpbmlzaCBlZGl0aW5nIGFsbCByb3dzXG4gICAgICBjb25zdCBpbnZhbGlkUm93cyA9IHJvd3MuZmlsdGVyKHJvdyA9PiByb3cuZWRpdGluZyAmJiAhcm93LmNvbmZpcm1FZGl0Q3JlYXRlKCkpO1xuXG4gICAgICAvLyBDYW5ub3QgZmluaXNoIHNvbWUgcm93czogZXJyb3JcbiAgICAgIGlmIChpbnZhbGlkUm93cy5sZW5ndGgpIHtcbiAgICAgICAgLy8gbG9nIGVycm9yc1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGludmFsaWRSb3dzLmZvckVhY2gocm93ID0+IEFwcFRhYmxlVXRpbHMubG9nUm93RXJyb3JzKHJvdywgYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSAke3RoaXMuX2VudGl0eU5hbWV9IHJvdyAjJHtyb3cuaWR9YCkpO1xuICAgICAgICAvLyBTdG9wIHdpdGggYW4gZXJyb3JcbiAgICAgICAgdGhyb3cge2NvZGU6IEVycm9yQ29kZXMuVEFCTEVfSU5WQUxJRF9ST1dfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5UQUJMRV9JTlZBTElEX1JPV19FUlJPUid9O1xuICAgICAgfVxuXG4gICAgICBsZXQgZGF0YTogVFtdO1xuICAgICAgbGV0IGRhdGFUb1NhdmU6IFRbXTtcblxuICAgICAgaWYgKHRoaXMudmFsaWRhdG9yU2VydmljZSkge1xuICAgICAgICBkYXRhVG9TYXZlID0gW107XG4gICAgICAgIGRhdGEgPSByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gbmV3IHRoaXMuZGF0YUNvbnN0cnVjdG9yKCkgYXMgVDtcbiAgICAgICAgICBjdXJyZW50RGF0YS5mcm9tT2JqZWN0KHJvdy5jdXJyZW50RGF0YSk7XG4gICAgICAgICAgLy8gRmlsdGVyIHRvIGtlZXAgb25seSBkaXJ0eSByb3dcbiAgICAgICAgICBpZiAob25seURpcnR5Um93cyAmJiByb3cudmFsaWRhdG9yLmRpcnR5KSBkYXRhVG9TYXZlLnB1c2goY3VycmVudERhdGEpO1xuICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0YTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghb25seURpcnR5Um93cykgZGF0YVRvU2F2ZSA9IGRhdGE7XG4gICAgICB9XG4gICAgICAvLyBPciB1c2UgdGhlIGN1cnJlbnQgZGF0YSB3aXRob3V0IGNvbnZlcnNpb24gKHdoZW4gbm8gdmFsaWRhdG9yIHNlcnZpY2UgdXNlZClcbiAgICAgIGVsc2Uge1xuICAgICAgICBkYXRhID0gcm93cy5tYXAocm93ID0+IHJvdy5jdXJyZW50RGF0YSk7XG4gICAgICAgIC8vIHNhdmUgYWxsIGRhdGEsIGFzIHdlIGRvbid0IGhhdmUgYW55IGRpcnR5IG1hcmtlclxuICAgICAgICBkYXRhVG9TYXZlID0gZGF0YTtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgbm8gZGF0YSB0byBzYXZlOiBleGl0XG4gICAgICBpZiAob25seURpcnR5Um93cyAmJiAhZGF0YVRvU2F2ZS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gTm8gJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIHRvIHNhdmUuIFNraXBgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBBc2tpbmcgc2VydmljZSB0byBzYXZlIHRoaXMgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhOmAsIGRhdGFUb1NhdmUpO1xuICAgICAgYXdhaXQgdGhpcy5kYXRhU2VydmljZS5zYXZlQWxsKGRhdGFUb1NhdmUsIHRoaXMuc2VydmljZU9wdGlvbnMpO1xuXG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTYXZpbmcgJHt0aGlzLl9lbnRpdHlOYW1lfSBkYXRhIFtPS11gKTtcblxuICAgICAgLy8gTFAgMjMvMDMvMjAyMTogdXBkYXRlIGRhdGFzb3VyY2UgaXMgbmVjZXNzYXJ5IGJ1dCBjYW4gYmUgY2hhbmdlZCB0byBhIHJlZmV0Y2goKSBvbiBRdWVyeVJlZiAobXVzdCBiZSBjcmVhdGVkIGFuZCByZWdpc3RlcmVkIGluIEdyYXBocWxTZXJ2aWNlLndhdGNoUXVlcnkpXG4gICAgICB0aGlzLnVwZGF0ZURhdGFzb3VyY2UoZGF0YSwge2VtaXRFdmVudDogZmFsc2V9KTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5lcnJvcignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIEVycm9yIHdoaWxlIHNhdmluZzogJyArIGVycm9yICYmIGVycm9yLm1lc3NhZ2UgfHwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3NhdmluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVEYXRhc291cmNlKGRhdGE6IFRbXSwgb3B0cz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBVcGRhdGluZyBkYXRhc291cmNlIHdpdGggZGF0YTpgLCBkYXRhKTtcblxuICAgIHN1cGVyLnVwZGF0ZURhdGFzb3VyY2UoZGF0YSwgb3B0cyk7XG5cbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8UltdIHwgUmVhZG9ubHlBcnJheTxSPj4ge1xuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKFwiW2VudGl0aWVzLWRhdGFzb3VyY2VdIGNvbm5lY3RcIik7XG4gICAgcmV0dXJuIHN1cGVyLmNvbm5lY3QoY29sbGVjdGlvblZpZXdlcik7XG4gIH1cblxuICBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI/OiBDb2xsZWN0aW9uVmlld2VyKSB7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gRGlzY29ubmVjdGluZy4uLicpXG4gICAgc3VwZXIuZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICB3YWl0SWRsZShkZWJvdW5jZVRpbWVNcz86IG51bWJlcik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGZpcnN0RmFsc2VQcm9taXNlKHRoaXMubG9hZGluZ1N1YmplY3RcbiAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZShkZWJvdW5jZVRpbWVNcyB8fCAxMDApIC8vIGlmIG5vdCBzdGFydGVkIHlldCwgd2FpdFxuICAgICAgKSk7XG4gIH1cblxuICBjb25maXJtQ3JlYXRlKHJvdzogUik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpcm1lZCA9IHN1cGVyLmNvbmZpcm1DcmVhdGUocm93KTtcbiAgICBpZiAoIWNvbmZpcm1lZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChyb3cuZWRpdGluZyAmJiByb3cudmFsaWRhdG9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBSb3cgc3RpbGwgaGFzIHtlZGl0aW5nOiB0cnVlfSBhZnRlciBjb25maXJtQ3JlYXRlKCkhIEZvcmNlIGVkaXRpbmcgdG8gZmFsc2UnKTtcbiAgICAgIHJvdy52YWxpZGF0b3IuZGlzYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25maXJtRWRpdChyb3c6IFIpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maXJtZWQgPSBzdXBlci5jb25maXJtRWRpdChyb3cpO1xuICAgIGlmICghY29uZmlybWVkKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHJvdy5lZGl0aW5nICYmIHJvdy52YWxpZGF0b3IpIHtcbiAgICAgIGNvbnNvbGUud2FybignW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyBzdGlsbCBoYXMge2VkaXRpbmc6IHRydWV9IGFmdGVyIGNvbmZpcm1FZGl0KCkhIEZvcmNlIGVkaXRpbmcgdG8gZmFsc2UnKTtcbiAgICAgIHJvdy52YWxpZGF0b3IuZGlzYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzdGFydEVkaXQocm93OiBSKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZWRpdGluZyA9IHN1cGVyLnN0YXJ0RWRpdChyb3cpO1xuICAgIGlmICghZWRpdGluZykgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghcm93LmVkaXRpbmcgJiYgcm93LnZhbGlkYXRvcikge1xuICAgICAgY29uc29sZS53YXJuKCdbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gUm93IHN0aWxsIGhhcyB7ZWRpdGluZzogZmFsc2V9IGFmdGVyIHN0YXJ0RWRpdCgpISBGb3JjZSBlZGl0aW5nJyk7XG4gICAgICByb3cudmFsaWRhdG9yLmVuYWJsZSh7b25seVNlbGY6IHRydWUsIGVtaXRFdmVudDogZmFsc2V9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBoYW5kbGVFcnJvcihlcnJvcjogYW55LCBtZXNzYWdlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPExvYWRSZXN1bHQ8VD4+IHtcbiAgICBjb25zdCBlcnJvck1zZyA9IGVycm9yICYmIGVycm9yLm1lc3NhZ2UgfHwgZXJyb3I7XG4gICAgY29uc29sZS5lcnJvcihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFNlcnZpY2UgJHt0aGlzLl9lbnRpdHlOYW1lfSBzZW50IGVycm9yOiAke2Vycm9yTXNnfWAsIGVycm9yKTtcbiAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlIHx8IGVycm9yTXNnKTtcbiAgfVxuXG4gIGhhbmRsZVNlcnZpY2VFcnJvcihlcnJvcjogYW55KSB7XG4gICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvciAmJiBlcnJvci5tZXNzYWdlIHx8IGVycm9yO1xuICAgIGNvbnNvbGUuZXJyb3IoYFtlbnRpdGllcy10YWJsZS1kYXRhc291cmNlXSBTZXJ2aWNlICR7dGhpcy5fZW50aXR5TmFtZX0gc2VudCBlcnJvcjogJHtlcnJvck1zZ31gLCBlcnJvcik7XG4gICAgdGhpcy5tYXJrQXNMb2FkZWQoKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIGRlbGV0ZShpZDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgLy8gSWYgbmV3IHJvdzogbm90IG5lZWQgdG8gcHJvcGFnYXRlIHRvIHRoZSBkYXRhU2VydmljZVxuICAgIGlmIChpZCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBzdXBlci5kZWxldGUoaWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdyA9IHRoaXMuZ2V0Um93KGlkKTtcbiAgICBpZiAoIXJvdykge1xuICAgICAgY29uc29sZS5lcnJvcihgW2VudGl0aWVzLXRhYmxlLWRhdGFzb3VyY2VdIFJvdyB0byBkZWxldGUgd2l0aCBpZD0ke2lkfSBub3QgZm91bmRgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cblxuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgY29uc3Qgc3VwZXJEZWxldGUgPSBzdXBlci5kZWxldGU7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5kYXRhU2VydmljZS5kZWxldGVBbGwoW3Jvdy5jdXJyZW50RGF0YV0sIHRoaXMuc2VydmljZU9wdGlvbnMpXG4gICAgICAuY2F0Y2goZXJyID0+IHRoaXMuaGFuZGxlU2VydmljZUVycm9yKGVycikpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIC8vIG1ha2Ugc3VyZSByb3cgaGFzIGJlZW4gZGVsZXRlZCAoYmVjYXVzZSBHcmFwUUhsIGNhY2hlIHJlbW92ZSBjYW4gZmFpbGVkKVxuICAgICAgICAgIGNvbnN0IHByZXNlbnQgPSB0aGlzLmdldFJvdyhpZCkgPT09IHJvdztcbiAgICAgICAgICBpZiAocHJlc2VudCkgc3VwZXJEZWxldGUuY2FsbChzZWxmLCBpZCk7XG5cbiAgICAgICAgICB0aGlzLm1hcmtBc0xvYWRlZCgpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVBbGwocm93czogUltdKTogUHJvbWlzZTxhbnk+IHtcblxuICAgIHRoaXMubWFya0FzTG9hZGluZygpO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuZ2V0RGF0YUZyb21Sb3dzKHJvd3MpO1xuXG4gICAgdHJ5IHtcblxuICAgICAgLy8gQ2FsbCBzZXJ2aWNlIGRlbGV0aW9uXG4gICAgICBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmRlbGV0ZUFsbChkYXRhLCB0aGlzLnNlcnZpY2VPcHRpb25zKTtcblxuICAgICAgYXdhaXQgc2xlZXAoMzAwKTsgLy8gV2FpdCBwcm9wYWdhdGlvbiAoZS5nLiB1cGRhdGUgY2FjaGUsIHRoZW4gcmVjZWl2ZWQgdXBkYXRlIGZyb20gZGF0YVNlcnZpY2Uud2F0Y2hBbGwoKSlcblxuICAgICAgLy8gV29ya2Fyb3VuZCwgdG8gYmUgc3VyZSBhbGwgcm93cyBoYXZlIGJlZW4gZGVsZXRlZFxuICAgICAgLy8gU29tZXRpbWUsIHRoZSBzZXJ2aWNlIG1pc3MgZGVsZXRpb24sIG9yIEdyYXBoUWwgY2FjaGUgcmVtb3ZlIGZhaWxlZC5cbiAgICAgIC8vIEluIHRoaXMgY2FzZSwgYXBwbHkgbWlzc2luZyBkZWxldGlvbiB1c2luZyB0aGUgc3VwZXIuZGVsZXRlKCkgZnVuY3Rpb25cbiAgICAgIGNvbnN0IHJvd05vdERlbGV0ZWQgPSB0aGlzLmdldFJvd3MoKS5maWx0ZXIocm93ID0+IHJvd3MuaW5jbHVkZXMocm93KSk7XG4gICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KHJvd05vdERlbGV0ZWQpKSB7XG4gICAgICAgIGNvbnN0IHN1cGVyRGVsZXRlID0gc3VwZXIuZGVsZXRlO1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc29sZS53YXJuKGBbZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZV0gRm9yY2UgZGVsZXRpb24gb2YgJHtyb3dOb3REZWxldGVkLmxlbmd0aH0gcm93cyEgUGxlYXNlIGNoZWNrIHRoYXQgZGF0YSBzZXJ2aWNlIHVwZGF0ZSB0aGUgY2FjaGUsIGFmdGVyIGRlbGV0aW9uYCk7XG4gICAgICAgIHJvd05vdERlbGV0ZWRcbiAgICAgICAgICAvLyBTdGFydCBhdCB0aGUgZW5kXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaWQgPiBiLmlkID8gLTEgOiAxKVxuICAgICAgICAgIC5mb3JFYWNoKHIgPT4gc3VwZXJEZWxldGUuY2FsbChzZWxmLCByLmlkKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIEhhbmRsZSBzZXJ2aWNlIGVycm9yXG4gICAgICB0aGlzLmhhbmRsZVNlcnZpY2VFcnJvcihlcnIpO1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMubWFya0FzTG9hZGVkKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Um93KGlkOiBudW1iZXIpOiBSIHtcbiAgICByZXR1cm4gc3VwZXIuZ2V0Um93KGlkKTtcbiAgfVxuXG4gIGdldFJvd3MoKTogUltdIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzU3ViamVjdC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgaGFzU29tZUVkaXRpbmdSb3coKSB7XG4gICAgcmV0dXJuICh0aGlzLnJvd3NTdWJqZWN0LnZhbHVlIHx8IFtdKS5zb21lKHJvdyA9PiByb3cuZWRpdGluZyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVOZXcoaW5zZXJ0QXQ/OiBudW1iZXIsIG9wdHMgPSB7ZWRpdGluZzogdHJ1ZX0pOiBQcm9taXNlPFJ8dW5kZWZpbmVkPiB7XG4gICAgLy8gQXZvaWQgbXVsdGlwbGUgY2FsbCAob25seSBvbmUgZWRpdGluZyByb3cgaXMgYWxsb3dlZClcbiAgICBpZiAodGhpcy5fY3JlYXRpbmcgJiYgb3B0cy5lZGl0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl9jcmVhdGluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgcm93ID0gYXdhaXQgc3VwZXIuY3JlYXRlTmV3KGluc2VydEF0LCBvcHRzKTtcblxuICAgICAgaWYgKCFyb3cpIHJldHVybiB1bmRlZmluZWQ7IC8vIFN0b3AgaGVyZVxuXG4gICAgICAvLyBDYWxsIG9ic2VydmVyc1xuICAgICAgaWYgKHRoaXMuY29uZmlnPy5vblJvd0NyZWF0ZWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmNvbmZpZy5vblJvd0NyZWF0ZWQocm93KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSAge1xuICAgICAgICAgIC8vIExvZywgdGhlbiBjb250aW51ZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcm93O1xuICAgIH1cbiAgICBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX2NyZWF0aW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGF0YSgpOiBUW10ge1xuICAgIGNvbnN0IHJvd3MgPSB0aGlzLmdldFJvd3MoKTtcbiAgICByZXR1cm4gdGhpcy5nZXREYXRhRnJvbVJvd3Mocm93cyk7XG4gIH1cblxuICBhc3luYyBmZXRjaE1vcmUob3B0cz86IHsgZW1pdEV2ZW50OiBib29sZWFuIH0pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIXRoaXMuX2ZldGNoTW9yZUZuKSByZXR1cm4gZmFsc2U7IC8vIEF2b2lkIG11bHRpcGxlIGNhbGxcbiAgICBpZiAodGhpcy5oYXNTb21lRWRpdGluZ1JvdygpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbm5vdCBmZXRjaCBtb3JlICR7dGhpcy5fZW50aXR5TmFtZX0gYmVjYXVzZSBzb21lIHJvdykgc3RpbGwgZWRpdGluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKGBXaWxsIGZldGNoaW5nIG1vcmUgcm93KHMpIHN0aWxsLi4uYCk7XG5cbiAgICAvLyBGb3JnZXQgdGhlIGZldGNoTW9yZSBmdW5jdGlvbiwgdG8gYXZvaWQgbXVsdGlwbGUgY2FsbFxuICAgIGNvbnN0IGZldGNoTW9yZUZuID0gdGhpcy5fZmV0Y2hNb3JlRm47XG4gICAgdGhpcy5fZmV0Y2hNb3JlRm4gPSBudWxsO1xuXG4gICAgLy8gRmV0Y2ggbmV4dCBwYWdlXG4gICAgY29uc3QgcmVzOiBMb2FkUmVzdWx0PFQ+ID0gYXdhaXQgZmV0Y2hNb3JlRm4oKTtcblxuICAgIC8vIFNraXAgaWYgZW1wdHkgKG5vIG1vcmUgZGF0YSlcbiAgICBpZiAoaXNFbXB0eUFycmF5KHJlcz8uZGF0YSkpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2VcbiAgICBzdXBlci51cGRhdGVEYXRhc291cmNlKCh0aGlzLmN1cnJlbnREYXRhIHx8IFtdKS5jb25jYXQoLi4ucmVzLmRhdGEpLCBvcHRzKTtcblxuICAgIC8vIFJlbWVtYmVyIGZldGNoTW9yZVxuICAgIHRoaXMuX2ZldGNoTW9yZUZuID0gcmVzLmZldGNoTW9yZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBtYXJrQXNMb2FkaW5nKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgbWFya0FzTG9hZGVkKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTdWJqZWN0LnZhbHVlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { EntitiesTableDataSource } from './entities-table-datasource.class';
3
+ import { AppTable } from './table.class';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../shared/services/memory-entity-service.class";
6
+ import * as i2 from "@e-is/ngx-material-table";
7
+ // @dynamic
8
+ // eslint-disable-next-line @angular-eslint/directive-class-suffix
9
+ export class AppInMemoryTable extends AppTable {
10
+ constructor(injector, columns, dataType, memoryDataService, validatorService, options, filter) {
11
+ super(injector, columns, new EntitiesTableDataSource(dataType, memoryDataService, validatorService, options), filter);
12
+ this.columns = columns;
13
+ this.dataType = dataType;
14
+ this.memoryDataService = memoryDataService;
15
+ this.validatorService = validatorService;
16
+ this.canEdit = false;
17
+ this.canDelete = false;
18
+ this.autoLoad = false; // waiting value to be set
19
+ }
20
+ set value(data) {
21
+ this.setValue(data);
22
+ }
23
+ get value() {
24
+ return this.memoryDataService.value;
25
+ }
26
+ ngOnInit() {
27
+ super.ngOnInit();
28
+ }
29
+ setValue(value, opts) {
30
+ // Reset previous error
31
+ if (this.error) {
32
+ this.setError(null);
33
+ this.markForCheck();
34
+ }
35
+ this.memoryDataService.value = value;
36
+ if (!opts || opts.emitEvent !== false) {
37
+ this.onRefresh.emit();
38
+ }
39
+ }
40
+ equals(t1, t2) {
41
+ return this.memoryDataService.equals(t1, t2);
42
+ }
43
+ }
44
+ AppInMemoryTable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppInMemoryTable, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
45
+ AppInMemoryTable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: AppInMemoryTable, inputs: { canEdit: "canEdit", canDelete: "canDelete" }, usesInheritance: true, ngImport: i0 });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AppInMemoryTable, decorators: [{
47
+ type: Directive
48
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: undefined }, { type: undefined }, { type: i1.InMemoryEntitiesService }, { type: i2.ValidatorService }, { type: undefined }, { type: undefined }]; }, propDecorators: { canEdit: [{
49
+ type: Input
50
+ }], canDelete: [{
51
+ type: Input
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LXRhYmxlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL21lbW9yeS10YWJsZS5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFZLEtBQUssRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQWdDLHVCQUF1QixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekcsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7OztBQUl2QyxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsZ0JBSWxCLFNBQVEsUUFBa0I7SUFhNUIsWUFDRSxRQUFrQixFQUNSLE9BQWlCLEVBQ2pCLFFBQXFCLEVBQ3JCLGlCQUFvRCxFQUNwRCxnQkFBa0MsRUFDNUMsT0FBOEMsRUFDOUMsTUFBVTtRQUVWLEtBQUssQ0FBQyxRQUFRLEVBQ1osT0FBTyxFQUNQLElBQUksdUJBQXVCLENBQVcsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUM3RixNQUFNLENBQUMsQ0FBQztRQVZBLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1DO1FBQ3BELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFoQnJDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQXdCekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQywwQkFBMEI7SUFDbkQsQ0FBQztJQXZCRCxJQUFJLEtBQUssQ0FBQyxJQUFTO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBbUJELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVLEVBQUUsSUFBOEI7UUFDakQsdUJBQXVCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssRUFBRTtZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVTLE1BQU0sQ0FBQyxFQUFLLEVBQUUsRUFBSztRQUMzQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OzZHQXBEbUIsZ0JBQWdCO2lHQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFGckMsU0FBUzt3UEFRQyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbmplY3RvciwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0b3JTZXJ2aWNlfSBmcm9tICdAZS1pcy9uZ3gtbWF0ZXJpYWwtdGFibGUnO1xuaW1wb3J0IHtFbnRpdGllc1RhYmxlRGF0YVNvdXJjZUNvbmZpZywgRW50aXRpZXNUYWJsZURhdGFTb3VyY2V9IGZyb20gJy4vZW50aXRpZXMtdGFibGUtZGF0YXNvdXJjZS5jbGFzcyc7XG5pbXBvcnQge0FwcFRhYmxlfSBmcm9tICcuL3RhYmxlLmNsYXNzJztcbmltcG9ydCB7SUVudGl0eX0gZnJvbSAnLi4vc2VydmljZXMvbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7SW5NZW1vcnlFbnRpdGllc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9tZW1vcnktZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBcHBJbk1lbW9yeVRhYmxlPFxuICBUIGV4dGVuZHMgSUVudGl0eTxULCBJRD4sXG4gIEYgPSBhbnksXG4gIElEID0gbnVtYmVyXG4gID4gZXh0ZW5kcyBBcHBUYWJsZTxULCBGLCBJRD4ge1xuXG4gIEBJbnB1dCgpIGNhbkVkaXQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGVsZXRlID0gZmFsc2U7XG5cbiAgc2V0IHZhbHVlKGRhdGE6IFRbXSkge1xuICAgIHRoaXMuc2V0VmFsdWUoZGF0YSk7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVFtdIHtcbiAgICByZXR1cm4gdGhpcy5tZW1vcnlEYXRhU2VydmljZS52YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGNvbHVtbnM6IHN0cmluZ1tdLFxuICAgIHByb3RlY3RlZCBkYXRhVHlwZTogbmV3ICgpID0+IFQsXG4gICAgcHJvdGVjdGVkIG1lbW9yeURhdGFTZXJ2aWNlOiBJbk1lbW9yeUVudGl0aWVzU2VydmljZTxULCBGLCBJRD4sXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRvclNlcnZpY2U6IFZhbGlkYXRvclNlcnZpY2UsXG4gICAgb3B0aW9ucz86IEVudGl0aWVzVGFibGVEYXRhU291cmNlQ29uZmlnPFQsIElEPixcbiAgICBmaWx0ZXI/OiBGXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLFxuICAgICAgY29sdW1ucyxcbiAgICAgIG5ldyBFbnRpdGllc1RhYmxlRGF0YVNvdXJjZTxULCBGLCBJRD4oZGF0YVR5cGUsIG1lbW9yeURhdGFTZXJ2aWNlLCB2YWxpZGF0b3JTZXJ2aWNlLCBvcHRpb25zKSxcbiAgICAgIGZpbHRlcik7XG5cbiAgICB0aGlzLmF1dG9Mb2FkID0gZmFsc2U7IC8vIHdhaXRpbmcgdmFsdWUgdG8gYmUgc2V0XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFRbXSwgb3B0cz86IHsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gICAgLy8gUmVzZXQgcHJldmlvdXMgZXJyb3JcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5zZXRFcnJvcihudWxsKTtcbiAgICAgIHRoaXMubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICAgIHRoaXMubWVtb3J5RGF0YVNlcnZpY2UudmFsdWUgPSB2YWx1ZTtcbiAgICBpZiAoIW9wdHMgfHwgb3B0cy5lbWl0RXZlbnQgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLm9uUmVmcmVzaC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGVxdWFscyh0MTogVCwgdDI6IFQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tZW1vcnlEYXRhU2VydmljZS5lcXVhbHModDEsIHQyKTtcbiAgfVxufVxuXG4iXX0=
@@ -0,0 +1,43 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { toBoolean } from '../../shared/functions';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ionic/angular";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@ngx-translate/core";
7
+ export class TableSelectColumnsComponent {
8
+ constructor(navParams, viewCtrl) {
9
+ this.navParams = navParams;
10
+ this.viewCtrl = viewCtrl;
11
+ this.canHideColumns = true;
12
+ }
13
+ ngOnInit() {
14
+ this.columns = this.columns || this.navParams.data && this.navParams.data.columns || [];
15
+ this.columns.forEach(c => {
16
+ // If cannot hide columns, make sure all columns are set to visible
17
+ c.visible = (this.canHideColumns === false && true /*always visible*/) || c.visible;
18
+ c.canHide = toBoolean(c.canHide, this.canHideColumns);
19
+ });
20
+ }
21
+ onRenderItems(event) {
22
+ const element = this.columns.splice(event.detail.from, 1)[0];
23
+ this.columns.splice(event.detail.to, 0, element);
24
+ event.detail.complete();
25
+ }
26
+ close() {
27
+ this.viewCtrl.dismiss(this.columns);
28
+ }
29
+ cancel() {
30
+ this.viewCtrl.dismiss();
31
+ }
32
+ }
33
+ TableSelectColumnsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableSelectColumnsComponent, deps: [{ token: i1.NavParams }, { token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component });
34
+ TableSelectColumnsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TableSelectColumnsComponent, selector: "table-select-columns", inputs: { columns: "columns", canHideColumns: "canHideColumns" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonReorder, selector: "ion-reorder" }, { kind: "component", type: i1.IonReorderGroup, selector: "ion-reorder-group", inputs: ["disabled"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToggle, selector: "ion-toggle", inputs: ["alignment", "checked", "color", "disabled", "enableOnOffLabels", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i3.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TableSelectColumnsComponent, decorators: [{
36
+ type: Component,
37
+ args: [{ selector: 'table-select-columns', template: "<ion-header>\n <ion-toolbar color=\"light\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'COMMON.DISPLAYED_COLUMNS'|translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"close()\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content>\n <ion-list>\n <!-- See doc: https://beta.ionicframework.com/docs/api/reorder/ -->\n\n <ion-reorder-group disabled=\"false\" (ionItemReorder)=\"onRenderItems($event)\">\n <ion-item *ngFor=\"let column of columns\">\n <ion-label>{{column.label|translate}}</ion-label>\n <ion-toggle slot=\"end\"\n *ngIf=\"column.canHide\"\n [checked]=\"column.visible\" (ionChange)=\"column.visible=!column.visible\"></ion-toggle>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n </ion-reorder-group>\n </ion-list>\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n <ion-toolbar>\n <ion-row>\n <ion-col></ion-col>\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel()\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button fill=\"solid\" (click)=\"close()\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_APPLY</ion-label>\n </ion-button>\n\n </ion-col>\n </ion-row>\n\n </ion-toolbar>\n</ion-footer>\n" }]
38
+ }], ctorParameters: function () { return [{ type: i1.NavParams }, { type: i1.ModalController }]; }, propDecorators: { columns: [{
39
+ type: Input
40
+ }], canHideColumns: [{
41
+ type: Input
42
+ }] } });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2VsZWN0LWNvbHVtbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3RhYmxlL3RhYmxlLXNlbGVjdC1jb2x1bW5zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS90YWJsZS90YWJsZS1zZWxlY3QtY29sdW1ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBYWpELE1BQU0sT0FBTywyQkFBMkI7SUFNdEMsWUFDVSxTQUFvQixFQUNwQixRQUF5QjtRQUR6QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBSjFCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO0lBSy9CLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFeEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsbUVBQW1FO1lBQ25FLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUEsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ25GLENBQUMsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFLO1FBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDOzt3SEFqQ1UsMkJBQTJCOzRHQUEzQiwyQkFBMkIsOEhDZnhDLDR3REEwREE7MkZEM0NhLDJCQUEyQjtrQkFKdkMsU0FBUzsrQkFDRSxzQkFBc0I7OEhBS3ZCLE9BQU87c0JBQWYsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNb2RhbENvbnRyb2xsZXIsIE5hdlBhcmFtc30gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHt0b0Jvb2xlYW59IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgQ29sdW1uSXRlbSB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIGNhbkhpZGU/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1zZWxlY3QtY29sdW1ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1zZWxlY3QtY29sdW1ucy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVTZWxlY3RDb2x1bW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBjb2x1bW5zOiBDb2x1bW5JdGVtW107XG5cbiAgQElucHV0KCkgY2FuSGlkZUNvbHVtbnMgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmF2UGFyYW1zOiBOYXZQYXJhbXMsXG4gICAgcHJpdmF0ZSB2aWV3Q3RybDogTW9kYWxDb250cm9sbGVyKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnMgfHwgdGhpcy5uYXZQYXJhbXMuZGF0YSAmJiB0aGlzLm5hdlBhcmFtcy5kYXRhLmNvbHVtbnMgfHwgW107XG5cbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjID0+IHtcbiAgICAgIC8vIElmIGNhbm5vdCBoaWRlIGNvbHVtbnMsIG1ha2Ugc3VyZSBhbGwgY29sdW1ucyBhcmUgc2V0IHRvIHZpc2libGVcbiAgICAgIGMudmlzaWJsZSA9ICh0aGlzLmNhbkhpZGVDb2x1bW5zID09PSBmYWxzZSAmJiB0cnVlLyphbHdheXMgdmlzaWJsZSovKSB8fCBjLnZpc2libGU7XG4gICAgICBjLmNhbkhpZGUgPSB0b0Jvb2xlYW4oYy5jYW5IaWRlLCB0aGlzLmNhbkhpZGVDb2x1bW5zKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVuZGVySXRlbXMoZXZlbnQpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5jb2x1bW5zLnNwbGljZShldmVudC5kZXRhaWwuZnJvbSwgMSlbMF07XG4gICAgdGhpcy5jb2x1bW5zLnNwbGljZShldmVudC5kZXRhaWwudG8sIDAsIGVsZW1lbnQpO1xuICAgIGV2ZW50LmRldGFpbC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy52aWV3Q3RybC5kaXNtaXNzKHRoaXMuY29sdW1ucyk7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy52aWV3Q3RybC5kaXNtaXNzKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJsaWdodFwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICB2aXNpYmxlLXhzIHZpc2libGUtc20gdmlzaWJsZS1tb2JpbGU+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImFycm93LWJhY2tcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG5cbiAgICA8aW9uLXRpdGxlPlxuICAgICAge3snQ09NTU9OLkRJU1BMQVlFRF9DT0xVTU5TJ3x0cmFuc2xhdGV9fVxuICAgIDwvaW9uLXRpdGxlPlxuXG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgIHZpc2libGUteHMgdmlzaWJsZS1zbSB2aXNpYmxlLW1vYmlsZT5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiY2hlY2ttYXJrXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG5cbjxpb24tY29udGVudD5cbiAgPGlvbi1saXN0PlxuICAgIDwhLS0gU2VlIGRvYzogaHR0cHM6Ly9iZXRhLmlvbmljZnJhbWV3b3JrLmNvbS9kb2NzL2FwaS9yZW9yZGVyLyAtLT5cblxuICAgIDxpb24tcmVvcmRlci1ncm91cCBkaXNhYmxlZD1cImZhbHNlXCIgKGlvbkl0ZW1SZW9yZGVyKT1cIm9uUmVuZGVySXRlbXMoJGV2ZW50KVwiPlxuICAgICAgPGlvbi1pdGVtICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiPlxuICAgICAgICA8aW9uLWxhYmVsPnt7Y29sdW1uLmxhYmVsfHRyYW5zbGF0ZX19PC9pb24tbGFiZWw+XG4gICAgICAgIDxpb24tdG9nZ2xlIHNsb3Q9XCJlbmRcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtbi5jYW5IaWRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY29sdW1uLnZpc2libGVcIiAoaW9uQ2hhbmdlKT1cImNvbHVtbi52aXNpYmxlPSFjb2x1bW4udmlzaWJsZVwiPjwvaW9uLXRvZ2dsZT5cbiAgICAgICAgPGlvbi1yZW9yZGVyIHNsb3Q9XCJlbmRcIj48L2lvbi1yZW9yZGVyPlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1yZW9yZGVyLWdyb3VwPlxuICA8L2lvbi1saXN0PlxuPC9pb24tY29udGVudD5cblxuXG48aW9uLWZvb3RlciBoaWRkZW4teHMgaGlkZGVuLXNtIGhpZGRlbi1tb2JpbGU+XG4gIDxpb24tdG9vbGJhcj5cbiAgICA8aW9uLXJvdz5cbiAgICAgIDxpb24tY29sPjwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIHNpemU9XCJhdXRvXCI+XG4gICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICAgIDxpb24tbGFiZWwgdHJhbnNsYXRlPkNPTU1PTi5CVE5fQ0FOQ0VMPC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwic29saWRcIiAoY2xpY2spPVwiY2xvc2UoKVwiIGNvbG9yPVwidGVydGlhcnlcIj5cbiAgICAgICAgICA8aW9uLWxhYmVsIHRyYW5zbGF0ZT5DT01NT04uQlROX0FQUExZPC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cblxuICA8L2lvbi10b29sYmFyPlxuPC9pb24tZm9vdGVyPlxuIl19