@sumaris-net/ngx-components 18.12.0 → 18.12.2

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 (1383) hide show
  1. package/doc/changelog.md +3 -0
  2. package/esm2022/public_api.mjs +380 -0
  3. package/esm2022/src/app/admin/admin-routing.module.mjs +34 -0
  4. package/esm2022/src/app/admin/admin.module.mjs +32 -0
  5. package/esm2022/src/app/admin/services/filter/person.filter.mjs +76 -0
  6. package/esm2022/src/app/admin/services/person.service.mjs +184 -0
  7. package/esm2022/src/app/admin/services/validator/person.validator.mjs +72 -0
  8. package/esm2022/src/app/admin/users/users.mjs +379 -0
  9. package/esm2022/src/app/admin/users/users.module.mjs +56 -0
  10. package/esm2022/src/app/core/about/about.modal.mjs +86 -0
  11. package/esm2022/src/app/core/about/about.module.mjs +22 -0
  12. package/esm2022/src/app/core/account/account.module.mjs +75 -0
  13. package/esm2022/src/app/core/account/account.page.mjs +364 -0
  14. package/esm2022/src/app/core/account/new-token.form.mjs +106 -0
  15. package/esm2022/src/app/core/account/new-token.modal.mjs +66 -0
  16. package/esm2022/src/app/core/account/password/change-password.form.mjs +63 -0
  17. package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
  18. package/esm2022/src/app/core/account/password/change-password.page.mjs +150 -0
  19. package/esm2022/src/app/core/account/token.table.mjs +157 -0
  20. package/esm2022/src/app/core/auth/auth.form.mjs +159 -0
  21. package/esm2022/src/app/core/auth/auth.modal.mjs +76 -0
  22. package/esm2022/src/app/core/auth/auth.module.mjs +56 -0
  23. package/esm2022/src/app/core/auth/reset-password.modal.mjs +89 -0
  24. package/esm2022/src/app/core/core.module.mjs +151 -0
  25. package/esm2022/src/app/core/core.testing.module.mjs +107 -0
  26. package/esm2022/src/app/core/form/array/form-array.mjs +328 -0
  27. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
  28. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +94 -0
  29. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +108 -0
  30. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +31 -0
  31. package/esm2022/src/app/core/form/entity/editor.class.mjs +268 -0
  32. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +420 -0
  33. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +741 -0
  34. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +24 -0
  35. package/esm2022/src/app/core/form/entity/entity.module.mjs +32 -0
  36. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +190 -0
  37. package/esm2022/src/app/core/form/form-container.class.mjs +340 -0
  38. package/esm2022/src/app/core/form/form.class.mjs +337 -0
  39. package/esm2022/src/app/core/form/form.module.mjs +70 -0
  40. package/esm2022/src/app/core/form/form.utils.mjs +205 -0
  41. package/esm2022/src/app/core/form/list/list.form.mjs +235 -0
  42. package/esm2022/src/app/core/form/list/list.module.mjs +31 -0
  43. package/esm2022/src/app/core/form/properties/properties.form.mjs +317 -0
  44. package/esm2022/src/app/core/form/properties/properties.module.mjs +37 -0
  45. package/esm2022/src/app/core/form/properties/properties.table.mjs +264 -0
  46. package/esm2022/src/app/core/form/properties/properties.utils.mjs +304 -0
  47. package/esm2022/src/app/core/form/properties/property.validator.mjs +70 -0
  48. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +104 -0
  49. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +23 -0
  50. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +73 -0
  51. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +30 -0
  52. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +161 -0
  53. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +31 -0
  54. package/esm2022/src/app/core/form/username/username.form.mjs +55 -0
  55. package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
  56. package/esm2022/src/app/core/graphql/graphql.module.mjs +14 -0
  57. package/esm2022/src/app/core/graphql/graphql.service.mjs +781 -0
  58. package/esm2022/src/app/core/graphql/graphql.utils.mjs +119 -0
  59. package/esm2022/src/app/core/home/home.mjs +382 -0
  60. package/esm2022/src/app/core/home/home.module.mjs +46 -0
  61. package/esm2022/src/app/core/icon/icon.component.mjs +40 -0
  62. package/esm2022/src/app/core/icon/icon.module.mjs +20 -0
  63. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +394 -0
  64. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +31 -0
  65. package/esm2022/src/app/core/menu/menu.component.mjs +258 -0
  66. package/esm2022/src/app/core/menu/menu.model.mjs +272 -0
  67. package/esm2022/src/app/core/menu/menu.module.mjs +47 -0
  68. package/esm2022/src/app/core/menu/menu.service.mjs +666 -0
  69. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +109 -0
  70. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +50 -0
  71. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +158 -0
  72. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +60 -0
  73. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +28 -0
  74. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +31 -0
  75. package/esm2022/src/app/core/peer/select-peer.modal.mjs +344 -0
  76. package/esm2022/src/app/core/peer/select-peer.module.mjs +36 -0
  77. package/esm2022/src/app/core/register/register-confirm.page.mjs +90 -0
  78. package/esm2022/src/app/core/register/register.form.mjs +194 -0
  79. package/esm2022/src/app/core/register/register.modal.mjs +55 -0
  80. package/esm2022/src/app/core/register/register.module.mjs +23 -0
  81. package/esm2022/src/app/core/services/account.service.mjs +1358 -0
  82. package/esm2022/src/app/core/services/auth-guard.service.mjs +74 -0
  83. package/esm2022/src/app/core/services/base-entity-service.class.mjs +485 -0
  84. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +230 -0
  85. package/esm2022/src/app/core/services/base58.mjs +83 -0
  86. package/esm2022/src/app/core/services/config/core.config.mjs +258 -0
  87. package/esm2022/src/app/core/services/config.service.mjs +384 -0
  88. package/esm2022/src/app/core/services/crypto.service.mjs +107 -0
  89. package/esm2022/src/app/core/services/errors.mjs +54 -0
  90. package/esm2022/src/app/core/services/local-settings.service.mjs +516 -0
  91. package/esm2022/src/app/core/services/model/account.model.mjs +178 -0
  92. package/esm2022/src/app/core/services/model/config.model.mjs +107 -0
  93. package/esm2022/src/app/core/services/model/department.model.mjs +35 -0
  94. package/esm2022/src/app/core/services/model/entity.decorators.mjs +97 -0
  95. package/esm2022/src/app/core/services/model/entity.model.mjs +338 -0
  96. package/esm2022/src/app/core/services/model/filter.model.mjs +93 -0
  97. package/esm2022/src/app/core/services/model/history.model.mjs +2 -0
  98. package/esm2022/src/app/core/services/model/model.enum.mjs +11 -0
  99. package/esm2022/src/app/core/services/model/node-feature.model.mjs +31 -0
  100. package/esm2022/src/app/core/services/model/peer.model.mjs +113 -0
  101. package/esm2022/src/app/core/services/model/person.model.mjs +114 -0
  102. package/esm2022/src/app/core/services/model/referential.model.mjs +205 -0
  103. package/esm2022/src/app/core/services/model/settings.model.mjs +6 -0
  104. package/esm2022/src/app/core/services/model/token.model.mjs +57 -0
  105. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +195 -0
  106. package/esm2022/src/app/core/services/network.service.mjs +638 -0
  107. package/esm2022/src/app/core/services/network.types.mjs +2 -0
  108. package/esm2022/src/app/core/services/network.utils.mjs +35 -0
  109. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +38 -0
  110. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +23 -0
  111. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +23 -0
  112. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +54 -0
  113. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +21 -0
  114. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +37 -0
  115. package/esm2022/src/app/core/services/platform.service.mjs +627 -0
  116. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +427 -0
  117. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +450 -0
  118. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +25 -0
  119. package/esm2022/src/app/core/services/testing/referential.validator.mjs +46 -0
  120. package/esm2022/src/app/core/services/validator/account.validator.mjs +45 -0
  121. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +49 -0
  122. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +57 -0
  123. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +27 -0
  124. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +55 -0
  125. package/esm2022/src/app/core/settings/settings.module.mjs +23 -0
  126. package/esm2022/src/app/core/settings/settings.page.mjs +403 -0
  127. package/esm2022/src/app/core/table/async-table.class.mjs +1811 -0
  128. package/esm2022/src/app/core/table/column/actions-column.component.mjs +130 -0
  129. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +117 -0
  130. package/esm2022/src/app/core/table/column/row-field.component.mjs +116 -0
  131. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +404 -0
  132. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +405 -0
  133. package/esm2022/src/app/core/table/memory-table.class.mjs +57 -0
  134. package/esm2022/src/app/core/table/table-select-columns.component.mjs +46 -0
  135. package/esm2022/src/app/core/table/table.class.mjs +1867 -0
  136. package/esm2022/src/app/core/table/table.model.mjs +21 -0
  137. package/esm2022/src/app/core/table/table.module.mjs +51 -0
  138. package/esm2022/src/app/core/table/table.pipes.mjs +77 -0
  139. package/esm2022/src/app/core/table/table.utils.mjs +34 -0
  140. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +32 -0
  141. package/esm2022/src/app/core/table/testing/table.testing.mjs +329 -0
  142. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +25 -0
  143. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +25 -0
  144. package/esm2022/src/app/core/table/testing/table2.testing.mjs +273 -0
  145. package/esm2022/src/app/shared/alerts.mjs +243 -0
  146. package/esm2022/src/app/shared/audio/audio.mjs +255 -0
  147. package/esm2022/src/app/shared/audio/audio.testing.mjs +32 -0
  148. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +30 -0
  149. package/esm2022/src/app/shared/capacitor/keyboard.mjs +42 -0
  150. package/esm2022/src/app/shared/capacitor/plugins.mjs +9 -0
  151. package/esm2022/src/app/shared/constants.mjs +16 -0
  152. package/esm2022/src/app/shared/dates.mjs +180 -0
  153. package/esm2022/src/app/shared/debug/debug-service.class.mjs +3 -0
  154. package/esm2022/src/app/shared/debug/debug.component.mjs +44 -0
  155. package/esm2022/src/app/shared/debug/debug.module.mjs +23 -0
  156. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +91 -0
  157. package/esm2022/src/app/shared/directives/autoresize.directive.mjs +75 -0
  158. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +30 -0
  159. package/esm2022/src/app/shared/directives/directives.module.mjs +24 -0
  160. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +52 -0
  161. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +33 -0
  162. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +62 -0
  163. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +45 -0
  164. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +17 -0
  165. package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +43 -0
  166. package/esm2022/src/app/shared/events.mjs +64 -0
  167. package/esm2022/src/app/shared/file/csv.utils.mjs +97 -0
  168. package/esm2022/src/app/shared/file/file.service.mjs +118 -0
  169. package/esm2022/src/app/shared/file/file.utils.mjs +117 -0
  170. package/esm2022/src/app/shared/file/images.utils.mjs +186 -0
  171. package/esm2022/src/app/shared/file/json.utils.mjs +58 -0
  172. package/esm2022/src/app/shared/file/uri.utils.mjs +29 -0
  173. package/esm2022/src/app/shared/file/url.utils.mjs +164 -0
  174. package/esm2022/src/app/shared/focusable.mjs +6 -0
  175. package/esm2022/src/app/shared/form/field.component.mjs +393 -0
  176. package/esm2022/src/app/shared/form/field.model.mjs +82 -0
  177. package/esm2022/src/app/shared/form/loading-spinner.mjs +35 -0
  178. package/esm2022/src/app/shared/forms.mjs +510 -0
  179. package/esm2022/src/app/shared/functions.mjs +672 -0
  180. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +86 -0
  181. package/esm2022/src/app/shared/gesture/gesture-config.mjs +46 -0
  182. package/esm2022/src/app/shared/gesture/hammer.utils.mjs +2 -0
  183. package/esm2022/src/app/shared/graph/colors.utils.mjs +60 -0
  184. package/esm2022/src/app/shared/graph/graph-colors.mjs +214 -0
  185. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +65 -0
  186. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
  187. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +147 -0
  188. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +24 -0
  189. package/esm2022/src/app/shared/http/http.utils.mjs +56 -0
  190. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +443 -0
  191. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +62 -0
  192. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +26 -0
  193. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +87 -0
  194. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +37 -0
  195. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +59 -0
  196. package/esm2022/src/app/shared/image/image.model.mjs +2 -0
  197. package/esm2022/src/app/shared/image/image.module.mjs +24 -0
  198. package/esm2022/src/app/shared/image/image.service.mjs +109 -0
  199. package/esm2022/src/app/shared/inputs.mjs +279 -0
  200. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +27 -0
  201. package/esm2022/src/app/shared/logging/log-level.model.mjs +48 -0
  202. package/esm2022/src/app/shared/logging/logger.model.mjs +47 -0
  203. package/esm2022/src/app/shared/logging/logging-service.class.mjs +125 -0
  204. package/esm2022/src/app/shared/logging/logging-service.config.mjs +2 -0
  205. package/esm2022/src/app/shared/logging/logging-service.module.mjs +30 -0
  206. package/esm2022/src/app/shared/markdown/markdown.component.mjs +321 -0
  207. package/esm2022/src/app/shared/markdown/markdown.directive.mjs +34 -0
  208. package/esm2022/src/app/shared/markdown/markdown.modal.mjs +99 -0
  209. package/esm2022/src/app/shared/markdown/markdown.module.mjs +87 -0
  210. package/esm2022/src/app/shared/markdown/markdown.service.mjs +204 -0
  211. package/esm2022/src/app/shared/markdown/markdown.utils.mjs +87 -0
  212. package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +55 -0
  213. package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +30 -0
  214. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +46 -0
  215. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1313 -0
  216. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +79 -0
  217. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +18 -0
  218. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +242 -0
  219. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +251 -0
  220. package/esm2022/src/app/shared/material/badge/badge.module.mjs +20 -0
  221. package/esm2022/src/app/shared/material/badge/badge.test.mjs +42 -0
  222. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +67 -0
  223. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +371 -0
  224. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +72 -0
  225. package/esm2022/src/app/shared/material/chips/chips.module.mjs +71 -0
  226. package/esm2022/src/app/shared/material/chips/material.chips.mjs +836 -0
  227. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +151 -0
  228. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +76 -0
  229. package/esm2022/src/app/shared/material/datetime/material.date.mjs +471 -0
  230. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +457 -0
  231. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +693 -0
  232. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +136 -0
  233. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +127 -0
  234. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +118 -0
  235. package/esm2022/src/app/shared/material/duration/duration.module.mjs +61 -0
  236. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +16 -0
  237. package/esm2022/src/app/shared/material/duration/material.duration.mjs +283 -0
  238. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +85 -0
  239. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +319 -0
  240. package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +432 -0
  241. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +231 -0
  242. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +68 -0
  243. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +137 -0
  244. package/esm2022/src/app/shared/material/material.animations.mjs +200 -0
  245. package/esm2022/src/app/shared/material/material.config.mjs +3 -0
  246. package/esm2022/src/app/shared/material/material.module.mjs +229 -0
  247. package/esm2022/src/app/shared/material/material.testing.module.mjs +245 -0
  248. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +51 -0
  249. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +23 -0
  250. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +379 -0
  251. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +52 -0
  252. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +67 -0
  253. package/esm2022/src/app/shared/material/test/test-component.mjs +264 -0
  254. package/esm2022/src/app/shared/material/testing/common.test.mjs +111 -0
  255. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +42 -0
  256. package/esm2022/src/app/shared/material/text/text-form.component.mjs +205 -0
  257. package/esm2022/src/app/shared/material/text/text-form.module.mjs +63 -0
  258. package/esm2022/src/app/shared/modules.mjs +12 -0
  259. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +303 -0
  260. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +49 -0
  261. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +24 -0
  262. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +69 -0
  263. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +74 -0
  264. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +28 -0
  265. package/esm2022/src/app/shared/observables.mjs +100 -0
  266. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +217 -0
  267. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +24 -0
  268. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +29 -0
  269. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +50 -0
  270. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +72 -0
  271. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +28 -0
  272. package/esm2022/src/app/shared/pipes/dates.pipe.mjs +18 -0
  273. package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +23 -0
  274. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +34 -0
  275. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +53 -0
  276. package/esm2022/src/app/shared/pipes/form.pipes.mjs +219 -0
  277. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +50 -0
  278. package/esm2022/src/app/shared/pipes/html.pipes.mjs +69 -0
  279. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +42 -0
  280. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +65 -0
  281. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +67 -0
  282. package/esm2022/src/app/shared/pipes/math.pipes.mjs +77 -0
  283. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +19 -0
  284. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +17 -0
  285. package/esm2022/src/app/shared/pipes/observable.pipes.mjs +63 -0
  286. package/esm2022/src/app/shared/pipes/pipes.module.mjs +285 -0
  287. package/esm2022/src/app/shared/pipes/property.pipes.mjs +135 -0
  288. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +179 -0
  289. package/esm2022/src/app/shared/pipes/string.pipes.mjs +183 -0
  290. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +44 -0
  291. package/esm2022/src/app/shared/pipes/types.pipes.mjs +74 -0
  292. package/esm2022/src/app/shared/pipes/url.pipes.mjs +43 -0
  293. package/esm2022/src/app/shared/platforms.mjs +81 -0
  294. package/esm2022/src/app/shared/print/print.service.mjs +305 -0
  295. package/esm2022/src/app/shared/regexps.mjs +96 -0
  296. package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +217 -0
  297. package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +19 -0
  298. package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +2 -0
  299. package/esm2022/src/app/shared/services/entity-service.class.mjs +10 -0
  300. package/esm2022/src/app/shared/services/job.utils.mjs +92 -0
  301. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +353 -0
  302. package/esm2022/src/app/shared/services/progress-bar.service.mjs +31 -0
  303. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +118 -0
  304. package/esm2022/src/app/shared/services/startable-service.class.mjs +107 -0
  305. package/esm2022/src/app/shared/services/translate-context.service.mjs +107 -0
  306. package/esm2022/src/app/shared/services/validator-service.class.mjs +2 -0
  307. package/esm2022/src/app/shared/services.mjs +85 -0
  308. package/esm2022/src/app/shared/shared-routing.module.mjs +72 -0
  309. package/esm2022/src/app/shared/shared.module.mjs +229 -0
  310. package/esm2022/src/app/shared/shared.testing.module.mjs +108 -0
  311. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +279 -0
  312. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +42 -0
  313. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +27 -0
  314. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +25 -0
  315. package/esm2022/src/app/shared/storage/storage.service.mjs +134 -0
  316. package/esm2022/src/app/shared/storage/storage.utils.mjs +13 -0
  317. package/esm2022/src/app/shared/testing/maskito.test.mjs +41 -0
  318. package/esm2022/src/app/shared/testing/observable.test.mjs +94 -0
  319. package/esm2022/src/app/shared/testing/tests.page.mjs +37 -0
  320. package/esm2022/src/app/shared/toast/toast.testing.mjs +54 -0
  321. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +31 -0
  322. package/esm2022/src/app/shared/toast/toasts.mjs +134 -0
  323. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +62 -0
  324. package/esm2022/src/app/shared/toolbar/toolbar.mjs +267 -0
  325. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +26 -0
  326. package/esm2022/src/app/shared/types.mjs +2 -0
  327. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +59 -0
  328. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +30 -0
  329. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +109 -0
  330. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +216 -0
  331. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +26 -0
  332. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +114 -0
  333. package/esm2022/src/app/shared/validator/validators.mjs +621 -0
  334. package/esm2022/src/app/shared/version/versions.mjs +81 -0
  335. package/esm2022/src/app/social/job/job.module.mjs +23 -0
  336. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +35 -0
  337. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +235 -0
  338. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +47 -0
  339. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +29 -0
  340. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +91 -0
  341. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +38 -0
  342. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +34 -0
  343. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +22 -0
  344. package/esm2022/src/app/social/message/message.form.mjs +141 -0
  345. package/esm2022/src/app/social/message/message.modal.mjs +110 -0
  346. package/esm2022/src/app/social/message/message.model.mjs +75 -0
  347. package/esm2022/src/app/social/message/message.module.mjs +22 -0
  348. package/esm2022/src/app/social/message/message.service.mjs +110 -0
  349. package/esm2022/src/app/social/social.errors.mjs +10 -0
  350. package/esm2022/src/app/social/social.module.mjs +22 -0
  351. package/esm2022/src/app/social/social.testing.module.mjs +40 -0
  352. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +127 -0
  353. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +260 -0
  354. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +257 -0
  355. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +129 -0
  356. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +22 -0
  357. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +128 -0
  358. package/esm2022/src/app/social/user-event/user-event.model.mjs +2 -0
  359. package/esm2022/src/app/social/user-event/user-event.module.mjs +23 -0
  360. package/esm2022/src/app/social/user-event/user-event.service.mjs +512 -0
  361. package/esm2022/src/environments/environment.class.mjs +65 -0
  362. package/esm2022/src/environments/environment.loader.mjs +77 -0
  363. package/esm2022/src/environments/environment.mjs +109 -0
  364. package/esm2022/sumaris-net.ngx-components.mjs +5 -0
  365. package/fesm2022/sumaris-net.ngx-components.mjs +48744 -0
  366. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -0
  367. package/index.d.ts +5 -0
  368. package/package.json +19 -132
  369. package/public_api.d.ts +344 -0
  370. package/src/app/admin/admin-routing.module.d.ts +9 -0
  371. package/src/app/admin/admin.module.d.ts +10 -0
  372. package/src/app/admin/services/filter/person.filter.d.ts +22 -0
  373. package/src/app/admin/services/person.service.d.ts +37 -0
  374. package/src/app/admin/services/validator/person.validator.d.ts +23 -0
  375. package/src/app/admin/users/users.d.ts +61 -0
  376. package/src/app/admin/users/users.module.d.ts +14 -0
  377. package/src/app/core/about/about.modal.d.ts +32 -0
  378. package/src/app/core/about/about.module.d.ts +11 -0
  379. package/src/app/core/account/account.module.d.ts +18 -0
  380. package/src/app/core/account/account.page.d.ts +83 -0
  381. package/src/app/core/account/new-token.form.d.ts +29 -0
  382. package/src/app/core/account/new-token.modal.d.ts +29 -0
  383. package/src/app/core/account/password/change-password.form.d.ts +19 -0
  384. package/src/app/core/account/password/change-password.module.d.ts +11 -0
  385. package/src/app/core/account/password/change-password.page.d.ts +36 -0
  386. package/src/app/core/account/token.table.d.ts +27 -0
  387. package/src/app/core/auth/auth.form.d.ts +38 -0
  388. package/src/app/core/auth/auth.modal.d.ts +24 -0
  389. package/src/app/core/auth/auth.module.d.ts +13 -0
  390. package/src/app/core/auth/reset-password.modal.d.ts +29 -0
  391. package/src/app/core/core.module.d.ts +28 -0
  392. package/src/app/core/core.testing.module.d.ts +15 -0
  393. package/src/app/core/form/array/form-array.d.ts +137 -0
  394. package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
  395. package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
  396. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +37 -0
  397. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +9 -0
  398. package/src/app/core/form/entity/editor.class.d.ts +84 -0
  399. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +126 -0
  400. package/src/app/core/form/entity/entity-editor.class.d.ts +204 -0
  401. package/src/app/core/form/entity/entity-metadata.component.d.ts +13 -0
  402. package/src/app/core/form/entity/entity.module.d.ts +10 -0
  403. package/src/app/core/form/entity/tab-editor.class.d.ts +66 -0
  404. package/src/app/core/form/form-container.class.d.ts +127 -0
  405. package/src/app/core/form/form.class.d.ts +144 -0
  406. package/src/app/core/form/form.module.d.ts +14 -0
  407. package/src/app/core/form/form.utils.d.ts +260 -0
  408. package/src/app/core/form/list/list.form.d.ts +81 -0
  409. package/src/app/core/form/list/list.module.d.ts +9 -0
  410. package/src/app/core/form/properties/properties.form.d.ts +92 -0
  411. package/src/app/core/form/properties/properties.module.d.ts +11 -0
  412. package/src/app/core/form/properties/properties.table.d.ts +72 -0
  413. package/src/app/core/form/properties/properties.utils.d.ts +59 -0
  414. package/src/app/core/form/properties/property.validator.d.ts +27 -0
  415. package/src/app/core/form/properties/testing/properties-form.test.d.ts +22 -0
  416. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +12 -0
  417. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +16 -0
  418. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +11 -0
  419. package/src/app/core/form/text-popover/text-popover.component.d.ts +80 -0
  420. package/src/app/core/form/text-popover/text-popover.module.d.ts +9 -0
  421. package/src/app/core/form/username/username.form.d.ts +19 -0
  422. package/src/app/core/form/username/username.module.d.ts +9 -0
  423. package/src/app/core/graphql/graphql.module.d.ts +7 -0
  424. package/src/app/core/graphql/graphql.service.d.ts +142 -0
  425. package/src/app/core/graphql/graphql.utils.d.ts +47 -0
  426. package/src/app/core/home/home.d.ts +109 -0
  427. package/src/app/core/home/home.module.d.ts +14 -0
  428. package/src/app/core/icon/icon.component.d.ts +13 -0
  429. package/src/app/core/icon/icon.module.d.ts +9 -0
  430. package/src/app/core/install/install-upgrade-card.component.d.ts +63 -0
  431. package/src/app/core/install/install-upgrade-card.module.d.ts +9 -0
  432. package/src/app/core/menu/menu.component.d.ts +66 -0
  433. package/src/app/core/menu/menu.model.d.ts +144 -0
  434. package/src/app/core/menu/menu.module.d.ts +12 -0
  435. package/src/app/core/menu/menu.service.d.ts +93 -0
  436. package/src/app/core/menu/sub-menu-tab.directive.d.ts +29 -0
  437. package/src/app/core/menu/testing/menu-other.testing.d.ts +15 -0
  438. package/src/app/core/menu/testing/menu.testing.d.ts +51 -0
  439. package/src/app/core/menu/testing/menu.testing.module.d.ts +12 -0
  440. package/src/app/core/offline/update-offline-mode-card.component.d.ts +11 -0
  441. package/src/app/core/offline/update-offline-mode-card.module.d.ts +9 -0
  442. package/src/app/core/peer/select-peer.modal.d.ts +101 -0
  443. package/src/app/core/peer/select-peer.module.d.ts +12 -0
  444. package/src/app/core/register/register-confirm.page.d.ts +24 -0
  445. package/src/app/core/register/register.form.d.ts +49 -0
  446. package/src/app/core/register/register.modal.d.ts +14 -0
  447. package/src/app/core/register/register.module.d.ts +12 -0
  448. package/src/app/core/services/account.service.d.ts +207 -0
  449. package/src/app/core/services/auth-guard.service.d.ts +17 -0
  450. package/src/app/core/services/base-entity-service.class.d.ts +135 -0
  451. package/src/app/core/services/base-graphql-service.class.d.ts +77 -0
  452. package/src/app/core/services/base58.d.ts +7 -0
  453. package/src/app/core/services/config/core.config.d.ts +46 -0
  454. package/src/app/core/services/config.service.d.ts +63 -0
  455. package/src/app/core/services/crypto.service.d.ts +44 -0
  456. package/src/app/core/services/errors.d.ts +65 -0
  457. package/src/app/core/services/local-settings.service.d.ts +99 -0
  458. package/src/app/core/services/model/account.model.d.ts +56 -0
  459. package/src/app/core/services/model/config.model.d.ts +36 -0
  460. package/src/app/core/services/model/department.model.d.ts +11 -0
  461. package/src/app/core/services/model/entity.decorators.d.ts +17 -0
  462. package/src/app/core/services/model/entity.model.d.ts +133 -0
  463. package/src/app/core/services/model/filter.model.d.ts +37 -0
  464. package/src/app/core/services/model/history.model.d.ts +20 -0
  465. package/src/app/core/services/model/model.enum.d.ts +7 -0
  466. package/src/app/core/services/model/node-feature.model.d.ts +14 -0
  467. package/src/app/core/services/model/peer.model.d.ts +35 -0
  468. package/src/app/core/services/model/person.model.d.ts +37 -0
  469. package/src/app/core/services/model/referential.model.d.ts +84 -0
  470. package/src/app/core/services/model/settings.model.d.ts +29 -0
  471. package/src/app/core/services/model/token.model.d.ts +22 -0
  472. package/src/app/core/services/model/tree-item-entity.model.d.ts +53 -0
  473. package/src/app/core/services/network.service.d.ts +159 -0
  474. package/src/app/core/services/network.types.d.ts +4 -0
  475. package/src/app/core/services/network.utils.d.ts +38 -0
  476. package/src/app/core/services/pipes/account.pipes.d.ts +15 -0
  477. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +9 -0
  478. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +11 -0
  479. package/src/app/core/services/pipes/pipes.module.d.ts +11 -0
  480. package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +13 -0
  481. package/src/app/core/services/pipes/usage-mode.pipes.d.ts +15 -0
  482. package/src/app/core/services/platform.service.d.ts +110 -0
  483. package/src/app/core/services/storage/entities-storage.service.d.ts +108 -0
  484. package/src/app/core/services/storage/entity-store.class.d.ts +113 -0
  485. package/src/app/core/services/testing/referential-filter.model.d.ts +9 -0
  486. package/src/app/core/services/testing/referential.validator.d.ts +22 -0
  487. package/src/app/core/services/validator/account.validator.d.ts +24 -0
  488. package/src/app/core/services/validator/base.validator.class.d.ts +21 -0
  489. package/src/app/core/services/validator/local-settings.validator.d.ts +18 -0
  490. package/src/app/core/services/validator/user-settings.validator.d.ts +10 -0
  491. package/src/app/core/services/validator/user-token.validator.d.ts +13 -0
  492. package/src/app/core/settings/settings.module.d.ts +12 -0
  493. package/src/app/core/settings/settings.page.d.ts +88 -0
  494. package/src/app/core/table/async-table.class.d.ts +395 -0
  495. package/src/app/core/table/column/actions-column.component.d.ts +62 -0
  496. package/src/app/core/table/column/nav-actions-column.component.d.ts +46 -0
  497. package/src/app/core/table/column/row-field.component.d.ts +40 -0
  498. package/src/app/core/table/entities-async-table-datasource.class.d.ts +100 -0
  499. package/src/app/core/table/entities-table-datasource.class.d.ts +103 -0
  500. package/src/app/core/table/memory-table.class.d.ts +25 -0
  501. package/src/app/core/table/table-select-columns.component.d.ts +22 -0
  502. package/src/app/core/table/table.class.d.ts +400 -0
  503. package/src/app/core/table/table.model.d.ts +31 -0
  504. package/src/app/core/table/table.module.d.ts +14 -0
  505. package/src/app/core/table/table.pipes.d.ts +29 -0
  506. package/src/app/core/table/table.utils.d.ts +13 -0
  507. package/src/app/core/table/testing/table-validator.service.d.ts +17 -0
  508. package/src/app/core/table/testing/table.testing.d.ts +54 -0
  509. package/src/app/core/table/testing/table.testing.module.d.ts +14 -0
  510. package/src/app/core/table/testing/table2-validator.service.d.ts +15 -0
  511. package/src/app/core/table/testing/table2.testing.d.ts +48 -0
  512. package/src/app/shared/alerts.d.ts +55 -0
  513. package/src/app/shared/audio/audio.d.ts +45 -0
  514. package/src/app/shared/audio/audio.testing.d.ts +13 -0
  515. package/src/app/shared/audio/audio.testing.module.d.ts +11 -0
  516. package/src/app/shared/capacitor/keyboard.d.ts +16 -0
  517. package/src/app/shared/capacitor/plugins.d.ts +7 -0
  518. package/src/app/shared/constants.d.ts +13 -0
  519. package/src/app/shared/dates.d.ts +61 -0
  520. package/src/app/shared/debug/debug-service.class.d.ts +5 -0
  521. package/src/app/shared/debug/debug.component.d.ts +14 -0
  522. package/src/app/shared/debug/debug.module.d.ts +12 -0
  523. package/src/app/shared/directives/autofocus.directive.d.ts +18 -0
  524. package/src/app/shared/directives/autoresize.directive.d.ts +20 -0
  525. package/src/app/shared/directives/autotitle.directive.d.ts +11 -0
  526. package/src/app/shared/directives/directives.module.d.ts +14 -0
  527. package/src/app/shared/directives/drag-and-drop.directive.d.ts +17 -0
  528. package/src/app/shared/directives/ng-var.directive.d.ts +12 -0
  529. package/src/app/shared/directives/resizable/resizable.component.d.ts +21 -0
  530. package/src/app/shared/directives/resizable/resizable.directive.d.ts +12 -0
  531. package/src/app/shared/directives/resizable/resizable.module.d.ts +8 -0
  532. package/src/app/shared/directives/throttled-click.directive.d.ts +16 -0
  533. package/src/app/shared/events.d.ts +29 -0
  534. package/src/app/shared/file/csv.utils.d.ts +30 -0
  535. package/src/app/shared/file/file.service.d.ts +23 -0
  536. package/src/app/shared/file/file.utils.d.ts +20 -0
  537. package/src/app/shared/file/images.utils.d.ts +36 -0
  538. package/src/app/shared/file/json.utils.d.ts +19 -0
  539. package/src/app/shared/file/uri.utils.d.ts +8 -0
  540. package/src/app/shared/file/url.utils.d.ts +77 -0
  541. package/src/app/shared/focusable.d.ts +4 -0
  542. package/src/app/shared/form/field.component.d.ts +85 -0
  543. package/src/app/shared/form/field.model.d.ts +82 -0
  544. package/src/app/shared/form/loading-spinner.d.ts +8 -0
  545. package/src/app/shared/forms.d.ts +135 -0
  546. package/src/app/shared/functions.d.ts +206 -0
  547. package/src/app/shared/geolocation/geolocation.utils.d.ts +19 -0
  548. package/src/app/shared/gesture/gesture-config.d.ts +15 -0
  549. package/src/app/shared/gesture/hammer.utils.d.ts +16 -0
  550. package/src/app/shared/graph/colors.utils.d.ts +17 -0
  551. package/src/app/shared/graph/graph-colors.d.ts +63 -0
  552. package/src/app/shared/guard/component-dirty.guard.d.ts +14 -0
  553. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +8 -0
  554. package/src/app/shared/hotkeys/hotkeys.service.d.ts +48 -0
  555. package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +11 -0
  556. package/src/app/shared/http/http.utils.d.ts +28 -0
  557. package/src/app/shared/image/gallery/image-gallery.component.d.ts +137 -0
  558. package/src/app/shared/image/gallery/image-gallery.module.d.ts +15 -0
  559. package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +12 -0
  560. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +33 -0
  561. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +16 -0
  562. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +13 -0
  563. package/src/app/shared/image/image.model.d.ts +7 -0
  564. package/src/app/shared/image/image.module.d.ts +8 -0
  565. package/src/app/shared/image/image.service.d.ts +36 -0
  566. package/src/app/shared/inputs.d.ts +36 -0
  567. package/src/app/shared/interceptors/progess.interceptor.d.ts +8 -0
  568. package/src/app/shared/logging/log-level.model.d.ts +38 -0
  569. package/src/app/shared/logging/logger.model.d.ts +68 -0
  570. package/src/app/shared/logging/logging-service.class.d.ts +39 -0
  571. package/src/app/shared/logging/logging-service.config.d.ts +25 -0
  572. package/src/app/shared/logging/logging-service.module.d.ts +9 -0
  573. package/src/app/shared/markdown/markdown.component.d.ts +86 -0
  574. package/src/app/shared/markdown/markdown.directive.d.ts +13 -0
  575. package/src/app/shared/markdown/markdown.modal.d.ts +49 -0
  576. package/src/app/shared/markdown/markdown.module.d.ts +17 -0
  577. package/src/app/shared/markdown/markdown.service.d.ts +37 -0
  578. package/src/app/shared/markdown/markdown.utils.d.ts +26 -0
  579. package/src/app/shared/markdown/testing/markdown.test.d.ts +18 -0
  580. package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +12 -0
  581. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +74 -0
  582. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +211 -0
  583. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +22 -0
  584. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +5 -0
  585. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +48 -0
  586. package/src/app/shared/material/badge/badge.directive.d.ts +43 -0
  587. package/src/app/shared/material/badge/badge.module.d.ts +10 -0
  588. package/src/app/shared/material/badge/badge.test.d.ts +21 -0
  589. package/src/app/shared/material/boolean/boolean.module.d.ts +20 -0
  590. package/src/app/shared/material/boolean/material.boolean.d.ts +93 -0
  591. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +26 -0
  592. package/src/app/shared/material/chips/chips.module.d.ts +21 -0
  593. package/src/app/shared/material/chips/material.chips.d.ts +164 -0
  594. package/src/app/shared/material/chips/testing/chips.test.d.ts +32 -0
  595. package/src/app/shared/material/datetime/datetime.module.d.ts +24 -0
  596. package/src/app/shared/material/datetime/material.date.d.ts +90 -0
  597. package/src/app/shared/material/datetime/material.dateshort.d.ts +89 -0
  598. package/src/app/shared/material/datetime/material.datetime.d.ts +116 -0
  599. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +37 -0
  600. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +32 -0
  601. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +31 -0
  602. package/src/app/shared/material/duration/duration.module.d.ts +18 -0
  603. package/src/app/shared/material/duration/duration.utils.d.ts +2 -0
  604. package/src/app/shared/material/duration/material.duration.d.ts +64 -0
  605. package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +23 -0
  606. package/src/app/shared/material/latlong/latlong.utils.d.ts +59 -0
  607. package/src/app/shared/material/latlong/material.latlong-input.d.ts +85 -0
  608. package/src/app/shared/material/latlong/material.latlong.d.ts +90 -0
  609. package/src/app/shared/material/latlong/material.latlong.module.d.ts +21 -0
  610. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +28 -0
  611. package/src/app/shared/material/material.animations.d.ts +8 -0
  612. package/src/app/shared/material/material.config.d.ts +3 -0
  613. package/src/app/shared/material/material.module.d.ts +45 -0
  614. package/src/app/shared/material/material.testing.module.d.ts +32 -0
  615. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +12 -0
  616. package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +10 -0
  617. package/src/app/shared/material/swipe/material.swipe.d.ts +89 -0
  618. package/src/app/shared/material/swipe/swipe.module.d.ts +16 -0
  619. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +22 -0
  620. package/src/app/shared/material/test/test-component.d.ts +75 -0
  621. package/src/app/shared/material/testing/common.test.d.ts +25 -0
  622. package/src/app/shared/material/text/testing/text-form.testing.d.ts +19 -0
  623. package/src/app/shared/material/text/text-form.component.d.ts +66 -0
  624. package/src/app/shared/material/text/text-form.module.d.ts +16 -0
  625. package/src/app/shared/modules.d.ts +9 -0
  626. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +62 -0
  627. package/src/app/shared/named-filter/named-filter.model.d.ts +32 -0
  628. package/src/app/shared/named-filter/named-filter.module.d.ts +13 -0
  629. package/src/app/shared/named-filter/named-filter.service.d.ts +32 -0
  630. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +34 -0
  631. package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +10 -0
  632. package/src/app/shared/observables.d.ts +30 -0
  633. package/src/app/shared/pipes/arrays.pipe.d.ts +82 -0
  634. package/src/app/shared/pipes/badge.pipes.d.ts +7 -0
  635. package/src/app/shared/pipes/colors.pipe.d.ts +9 -0
  636. package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +25 -0
  637. package/src/app/shared/pipes/date-format.pipe.d.ts +35 -0
  638. package/src/app/shared/pipes/date-from-now.pipe.d.ts +12 -0
  639. package/src/app/shared/pipes/dates.pipe.d.ts +10 -0
  640. package/src/app/shared/pipes/display-with.pipe.d.ts +8 -0
  641. package/src/app/shared/pipes/duration.pipe.d.ts +23 -0
  642. package/src/app/shared/pipes/file-size.pipe.d.ts +30 -0
  643. package/src/app/shared/pipes/form.pipes.d.ts +69 -0
  644. package/src/app/shared/pipes/highlight.pipe.d.ts +11 -0
  645. package/src/app/shared/pipes/html.pipes.d.ts +22 -0
  646. package/src/app/shared/pipes/latlong-format.pipe.d.ts +20 -0
  647. package/src/app/shared/pipes/maps.pipe.d.ts +23 -0
  648. package/src/app/shared/pipes/maskito.pipe.d.ts +14 -0
  649. package/src/app/shared/pipes/math.pipes.d.ts +26 -0
  650. package/src/app/shared/pipes/ng-init.pipe.d.ts +8 -0
  651. package/src/app/shared/pipes/number-format.pipe.d.ts +9 -0
  652. package/src/app/shared/pipes/observable.pipes.d.ts +25 -0
  653. package/src/app/shared/pipes/pipes.module.d.ts +35 -0
  654. package/src/app/shared/pipes/property.pipes.d.ts +41 -0
  655. package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
  656. package/src/app/shared/pipes/string.pipes.d.ts +68 -0
  657. package/src/app/shared/pipes/translate-context.pipe.d.ts +17 -0
  658. package/src/app/shared/pipes/types.pipes.d.ts +30 -0
  659. package/src/app/shared/pipes/url.pipes.d.ts +27 -0
  660. package/src/app/shared/platforms.d.ts +16 -0
  661. package/src/app/shared/print/print.service.d.ts +94 -0
  662. package/src/app/shared/regexps.d.ts +32 -0
  663. package/src/app/shared/rx-state/rx-state.decorators.d.ts +43 -0
  664. package/src/app/shared/rx-state/rx-state.module.d.ts +10 -0
  665. package/src/app/shared/rx-state/rx-state.types.d.ts +4 -0
  666. package/src/app/shared/services/entity-service.class.d.ts +75 -0
  667. package/src/app/shared/services/job.utils.d.ts +20 -0
  668. package/src/app/shared/services/memory-entity-service.class.d.ts +79 -0
  669. package/src/app/shared/services/progress-bar.service.d.ts +20 -0
  670. package/src/app/shared/services/startable-observable-service.class.d.ts +36 -0
  671. package/src/app/shared/services/startable-service.class.d.ts +37 -0
  672. package/src/app/shared/services/translate-context.service.d.ts +29 -0
  673. package/src/app/shared/services/validator-service.class.d.ts +11 -0
  674. package/src/app/shared/services.d.ts +17 -0
  675. package/src/app/shared/shared-routing.module.d.ts +23 -0
  676. package/src/app/shared/shared.module.d.ts +33 -0
  677. package/src/app/shared/shared.testing.module.d.ts +20 -0
  678. package/src/app/shared/storage/storage-explorer.component.d.ts +59 -0
  679. package/src/app/shared/storage/storage-explorer.module.d.ts +13 -0
  680. package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +9 -0
  681. package/src/app/shared/storage/storage-explorer.testing.module.d.ts +10 -0
  682. package/src/app/shared/storage/storage.service.d.ts +22 -0
  683. package/src/app/shared/storage/storage.utils.d.ts +19 -0
  684. package/src/app/shared/testing/maskito.test.d.ts +10 -0
  685. package/src/app/shared/testing/observable.test.d.ts +25 -0
  686. package/src/app/shared/testing/tests.page.d.ts +20 -0
  687. package/src/app/shared/toast/toast.testing.d.ts +15 -0
  688. package/src/app/shared/toast/toast.testing.module.d.ts +12 -0
  689. package/src/app/shared/toast/toasts.d.ts +16 -0
  690. package/src/app/shared/toolbar/modal-toolbar.d.ts +21 -0
  691. package/src/app/shared/toolbar/toolbar.d.ts +70 -0
  692. package/src/app/shared/toolbar/toolbar.module.d.ts +16 -0
  693. package/src/app/shared/types.d.ts +36 -0
  694. package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +21 -0
  695. package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +11 -0
  696. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +41 -0
  697. package/src/app/shared/upload-file/upload-file.component.d.ts +50 -0
  698. package/src/app/shared/upload-file/upload-file.model.d.ts +30 -0
  699. package/src/app/shared/validator/form-error-adapter.class.d.ts +33 -0
  700. package/src/app/shared/validator/validators.d.ts +139 -0
  701. package/src/app/shared/version/versions.d.ts +26 -0
  702. package/src/app/social/job/job.module.d.ts +12 -0
  703. package/src/app/social/job/progression/job-progression.component.d.ts +23 -0
  704. package/src/app/social/job/progression/job-progression.icon.d.ts +62 -0
  705. package/src/app/social/job/progression/job-progression.list.d.ts +19 -0
  706. package/src/app/social/job/progression/job-progression.model.d.ts +10 -0
  707. package/src/app/social/job/progression/job-progression.service.d.ts +33 -0
  708. package/src/app/social/job/testing/job-progression.testing.d.ts +13 -0
  709. package/src/app/social/job/testing/job-progression.testing.service.d.ts +9 -0
  710. package/src/app/social/job/testing/job.testing.module.d.ts +11 -0
  711. package/src/app/social/message/message.form.d.ts +36 -0
  712. package/src/app/social/message/message.modal.d.ts +43 -0
  713. package/src/app/social/message/message.model.d.ts +33 -0
  714. package/src/app/social/message/message.module.d.ts +12 -0
  715. package/src/app/social/message/message.service.d.ts +32 -0
  716. package/src/app/social/social.errors.d.ts +9 -0
  717. package/src/app/social/social.module.d.ts +20 -0
  718. package/src/app/social/social.testing.module.d.ts +13 -0
  719. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +32 -0
  720. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +71 -0
  721. package/src/app/social/user-event/testing/user-event.testing.d.ts +35 -0
  722. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +42 -0
  723. package/src/app/social/user-event/testing/user-event.testing.module.d.ts +11 -0
  724. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +42 -0
  725. package/src/app/social/user-event/user-event.model.d.ts +44 -0
  726. package/src/app/social/user-event/user-event.module.d.ts +13 -0
  727. package/src/app/social/user-event/user-event.service.d.ts +124 -0
  728. package/src/assets/manifest.json +1 -1
  729. package/src/environments/environment.class.d.ts +75 -0
  730. package/src/environments/environment.d.ts +2 -0
  731. package/src/environments/environment.loader.d.ts +24 -0
  732. package/.editorconfig +0 -24
  733. package/.eslintrc.json +0 -95
  734. package/.gitattribute +0 -1
  735. package/.github/CONTRIBUTING.md +0 -10
  736. package/.github/ISSUE_TEMPLATE.md +0 -6
  737. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  738. package/.github/github_disclaimer.md +0 -14
  739. package/.gitlab-ci.yml +0 -46
  740. package/.graphqlconfig +0 -15
  741. package/.prettierignore +0 -9
  742. package/.prettierrc.json +0 -17
  743. package/angular.json +0 -236
  744. package/capacitor.config.ts +0 -49
  745. package/graphql.config.yml +0 -13
  746. package/ionic.config.json +0 -7
  747. package/karma.conf.js +0 -38
  748. package/ng-package.json +0 -21
  749. package/ngcc.config.js +0 -9
  750. package/public_api.ts +0 -426
  751. package/resources/README.md +0 -7
  752. package/resources/icon/TODO.md +0 -11
  753. package/resources/icon.png +0 -0
  754. package/resources/icon.png.md5 +0 -1
  755. package/resources/icon.xcf +0 -0
  756. package/resources/ios/icon/icon-1024.png +0 -0
  757. package/resources/ios/icon/icon-108@2x.png +0 -0
  758. package/resources/ios/icon/icon-20.png +0 -0
  759. package/resources/ios/icon/icon-20@2x.png +0 -0
  760. package/resources/ios/icon/icon-20@3x.png +0 -0
  761. package/resources/ios/icon/icon-24@2x.png +0 -0
  762. package/resources/ios/icon/icon-27.5@2x.png +0 -0
  763. package/resources/ios/icon/icon-29.png +0 -0
  764. package/resources/ios/icon/icon-29@2x.png +0 -0
  765. package/resources/ios/icon/icon-29@3x.png +0 -0
  766. package/resources/ios/icon/icon-40.png +0 -0
  767. package/resources/ios/icon/icon-40@2x.png +0 -0
  768. package/resources/ios/icon/icon-40@3x.png +0 -0
  769. package/resources/ios/icon/icon-44@2x.png +0 -0
  770. package/resources/ios/icon/icon-50.png +0 -0
  771. package/resources/ios/icon/icon-50@2x.png +0 -0
  772. package/resources/ios/icon/icon-60.png +0 -0
  773. package/resources/ios/icon/icon-60@2x.png +0 -0
  774. package/resources/ios/icon/icon-60@3x.png +0 -0
  775. package/resources/ios/icon/icon-72.png +0 -0
  776. package/resources/ios/icon/icon-72@2x.png +0 -0
  777. package/resources/ios/icon/icon-76.png +0 -0
  778. package/resources/ios/icon/icon-76@2x.png +0 -0
  779. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  780. package/resources/ios/icon/icon-86@2x.png +0 -0
  781. package/resources/ios/icon/icon-98@2x.png +0 -0
  782. package/resources/ios/icon/icon-small.png +0 -0
  783. package/resources/ios/icon/icon-small@2x.png +0 -0
  784. package/resources/ios/icon/icon-small@3x.png +0 -0
  785. package/resources/ios/icon/icon.png +0 -0
  786. package/resources/ios/icon/icon@2x.png +0 -0
  787. package/resources/ios/splash/Default-1792h~iphone.png +0 -0
  788. package/resources/ios/splash/Default-2436h.png +0 -0
  789. package/resources/ios/splash/Default-2688h~iphone.png +0 -0
  790. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  791. package/resources/ios/splash/Default-667h.png +0 -0
  792. package/resources/ios/splash/Default-736h.png +0 -0
  793. package/resources/ios/splash/Default-Landscape-1792h~iphone.png +0 -0
  794. package/resources/ios/splash/Default-Landscape-2436h.png +0 -0
  795. package/resources/ios/splash/Default-Landscape-2688h~iphone.png +0 -0
  796. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  797. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  798. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  799. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  800. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  801. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  802. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  803. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  804. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  805. package/resources/ios/splash/Default~iphone.png +0 -0
  806. package/resources/splash.png +0 -0
  807. package/resources/splash.png.md5 +0 -1
  808. package/scripts/build-android.sh +0 -18
  809. package/scripts/docker-start.sh +0 -6
  810. package/scripts/emulate-android.sh +0 -17
  811. package/scripts/env-android.sh +0 -83
  812. package/scripts/env-clean.sh +0 -23
  813. package/scripts/env-global.sh +0 -154
  814. package/scripts/install-android-sdk-tools.sh +0 -73
  815. package/scripts/ionic-update.sh +0 -24
  816. package/scripts/node/build-i18n.js +0 -37
  817. package/scripts/node/playground.ts +0 -9
  818. package/scripts/node/resources.js +0 -108
  819. package/scripts/release.sh +0 -162
  820. package/scripts/run-android.sh +0 -59
  821. package/scripts/test.sh +0 -19
  822. package/src/app/admin/admin-routing.module.ts +0 -26
  823. package/src/app/admin/admin.module.ts +0 -20
  824. package/src/app/admin/services/filter/person.filter.ts +0 -86
  825. package/src/app/admin/services/person.service.ts +0 -244
  826. package/src/app/admin/services/validator/person.validator.ts +0 -86
  827. package/src/app/admin/users/users.html +0 -613
  828. package/src/app/admin/users/users.module.ts +0 -32
  829. package/src/app/admin/users/users.scss +0 -80
  830. package/src/app/admin/users/users.ts +0 -387
  831. package/src/app/app-routing.module.ts +0 -165
  832. package/src/app/app.component.html +0 -14
  833. package/src/app/app.component.scss +0 -4
  834. package/src/app/app.component.ts +0 -252
  835. package/src/app/app.module.ts +0 -355
  836. package/src/app/core/about/about.modal.html +0 -145
  837. package/src/app/core/about/about.modal.scss +0 -22
  838. package/src/app/core/about/about.modal.ts +0 -69
  839. package/src/app/core/about/about.module.ts +0 -14
  840. package/src/app/core/account/account.module.ts +0 -43
  841. package/src/app/core/account/account.page.html +0 -329
  842. package/src/app/core/account/account.page.scss +0 -20
  843. package/src/app/core/account/account.page.ts +0 -389
  844. package/src/app/core/account/new-token.form.html +0 -90
  845. package/src/app/core/account/new-token.form.ts +0 -99
  846. package/src/app/core/account/new-token.modal.html +0 -52
  847. package/src/app/core/account/new-token.modal.ts +0 -68
  848. package/src/app/core/account/password/change-password.form.html +0 -62
  849. package/src/app/core/account/password/change-password.form.scss +0 -0
  850. package/src/app/core/account/password/change-password.form.ts +0 -58
  851. package/src/app/core/account/password/change-password.module.ts +0 -14
  852. package/src/app/core/account/password/change-password.page.html +0 -41
  853. package/src/app/core/account/password/change-password.page.scss +0 -49
  854. package/src/app/core/account/password/change-password.page.ts +0 -158
  855. package/src/app/core/account/token.table.html +0 -160
  856. package/src/app/core/account/token.table.scss +0 -7
  857. package/src/app/core/account/token.table.ts +0 -160
  858. package/src/app/core/auth/auth.form.html +0 -108
  859. package/src/app/core/auth/auth.form.scss +0 -0
  860. package/src/app/core/auth/auth.form.ts +0 -165
  861. package/src/app/core/auth/auth.modal.html +0 -50
  862. package/src/app/core/auth/auth.modal.scss +0 -0
  863. package/src/app/core/auth/auth.modal.ts +0 -78
  864. package/src/app/core/auth/auth.module.ts +0 -35
  865. package/src/app/core/auth/reset-password.modal.html +0 -59
  866. package/src/app/core/auth/reset-password.modal.ts +0 -83
  867. package/src/app/core/core.module.ts +0 -72
  868. package/src/app/core/core.testing.module.ts +0 -80
  869. package/src/app/core/form/array/form-array.ts +0 -409
  870. package/src/app/core/form/array/testing/form-array-test.module.ts +0 -15
  871. package/src/app/core/form/array/testing/form-array.test.html +0 -196
  872. package/src/app/core/form/array/testing/form-array.test.ts +0 -119
  873. package/src/app/core/form/buttons/form-buttons-bar.component.html +0 -82
  874. package/src/app/core/form/buttons/form-buttons-bar.component.scss +0 -19
  875. package/src/app/core/form/buttons/form-buttons-bar.component.ts +0 -89
  876. package/src/app/core/form/buttons/form-buttons-bar.module.ts +0 -20
  877. package/src/app/core/form/entity/editor.class.ts +0 -295
  878. package/src/app/core/form/entity/entity-editor-modal.class.ts +0 -494
  879. package/src/app/core/form/entity/entity-editor.class.ts +0 -894
  880. package/src/app/core/form/entity/entity-metadata.component.html +0 -57
  881. package/src/app/core/form/entity/entity-metadata.component.scss +0 -40
  882. package/src/app/core/form/entity/entity-metadata.component.ts +0 -18
  883. package/src/app/core/form/entity/entity.module.ts +0 -20
  884. package/src/app/core/form/entity/tab-editor.class.ts +0 -224
  885. package/src/app/core/form/form-container.class.ts +0 -380
  886. package/src/app/core/form/form.class.ts +0 -377
  887. package/src/app/core/form/form.module.ts +0 -38
  888. package/src/app/core/form/form.utils.ts +0 -305
  889. package/src/app/core/form/list/list.form.html +0 -68
  890. package/src/app/core/form/list/list.form.scss +0 -40
  891. package/src/app/core/form/list/list.form.ts +0 -266
  892. package/src/app/core/form/list/list.module.ts +0 -20
  893. package/src/app/core/form/properties/properties.form.html +0 -160
  894. package/src/app/core/form/properties/properties.form.scss +0 -21
  895. package/src/app/core/form/properties/properties.form.ts +0 -331
  896. package/src/app/core/form/properties/properties.module.ts +0 -24
  897. package/src/app/core/form/properties/properties.table.html +0 -228
  898. package/src/app/core/form/properties/properties.table.scss +0 -0
  899. package/src/app/core/form/properties/properties.table.ts +0 -275
  900. package/src/app/core/form/properties/properties.utils.ts +0 -391
  901. package/src/app/core/form/properties/property.validator.ts +0 -82
  902. package/src/app/core/form/properties/testing/properties-form.test.html +0 -23
  903. package/src/app/core/form/properties/testing/properties-form.test.ts +0 -109
  904. package/src/app/core/form/properties/testing/properties-form.testing.module.ts +0 -14
  905. package/src/app/core/form/text-popover/testing/text-popover.testing.html +0 -50
  906. package/src/app/core/form/text-popover/testing/text-popover.testing.module.ts +0 -21
  907. package/src/app/core/form/text-popover/testing/text-popover.testing.ts +0 -76
  908. package/src/app/core/form/text-popover/text-popover.component.html +0 -89
  909. package/src/app/core/form/text-popover/text-popover.component.scss +0 -7
  910. package/src/app/core/form/text-popover/text-popover.component.ts +0 -176
  911. package/src/app/core/form/text-popover/text-popover.module.ts +0 -19
  912. package/src/app/core/form/username/username.form.html +0 -27
  913. package/src/app/core/form/username/username.form.ts +0 -44
  914. package/src/app/core/form/username/username.module.ts +0 -12
  915. package/src/app/core/graphql/graphql.module.ts +0 -7
  916. package/src/app/core/graphql/graphql.service.ts +0 -962
  917. package/src/app/core/graphql/graphql.utils.ts +0 -166
  918. package/src/app/core/home/home.html +0 -295
  919. package/src/app/core/home/home.module.ts +0 -27
  920. package/src/app/core/home/home.scss +0 -279
  921. package/src/app/core/home/home.ts +0 -422
  922. package/src/app/core/icon/icon.component.html +0 -19
  923. package/src/app/core/icon/icon.component.ts +0 -22
  924. package/src/app/core/icon/icon.module.ts +0 -13
  925. package/src/app/core/install/install-upgrade-card.component.html +0 -144
  926. package/src/app/core/install/install-upgrade-card.component.scss +0 -3
  927. package/src/app/core/install/install-upgrade-card.component.ts +0 -445
  928. package/src/app/core/install/install-upgrade-card.module.ts +0 -18
  929. package/src/app/core/menu/menu.component.html +0 -219
  930. package/src/app/core/menu/menu.component.scss +0 -304
  931. package/src/app/core/menu/menu.component.ts +0 -251
  932. package/src/app/core/menu/menu.filter.ts +0 -28
  933. package/src/app/core/menu/menu.model.ts +0 -356
  934. package/src/app/core/menu/menu.module.ts +0 -27
  935. package/src/app/core/menu/menu.service.ts +0 -727
  936. package/src/app/core/menu/sub-menu-tab.directive.ts +0 -99
  937. package/src/app/core/menu/testing/menu-other.testing.ts +0 -57
  938. package/src/app/core/menu/testing/menu.testing.html +0 -143
  939. package/src/app/core/menu/testing/menu.testing.module.ts +0 -52
  940. package/src/app/core/menu/testing/menu.testing.scss +0 -5
  941. package/src/app/core/menu/testing/menu.testing.ts +0 -175
  942. package/src/app/core/offline/update-offline-mode-card.component.html +0 -39
  943. package/src/app/core/offline/update-offline-mode-card.component.scss +0 -3
  944. package/src/app/core/offline/update-offline-mode-card.component.ts +0 -23
  945. package/src/app/core/offline/update-offline-mode-card.module.ts +0 -20
  946. package/src/app/core/peer/select-peer.modal.html +0 -317
  947. package/src/app/core/peer/select-peer.modal.scss +0 -41
  948. package/src/app/core/peer/select-peer.modal.ts +0 -366
  949. package/src/app/core/peer/select-peer.module.ts +0 -23
  950. package/src/app/core/register/register-confirm.page.html +0 -51
  951. package/src/app/core/register/register-confirm.page.scss +0 -56
  952. package/src/app/core/register/register-confirm.page.ts +0 -90
  953. package/src/app/core/register/register.form.html +0 -143
  954. package/src/app/core/register/register.form.scss +0 -10
  955. package/src/app/core/register/register.form.ts +0 -218
  956. package/src/app/core/register/register.modal.html +0 -66
  957. package/src/app/core/register/register.modal.ts +0 -50
  958. package/src/app/core/register/register.module.ts +0 -15
  959. package/src/app/core/services/account.service.ts +0 -1567
  960. package/src/app/core/services/auth-guard.service.ts +0 -70
  961. package/src/app/core/services/base-entity-service.class.ts +0 -659
  962. package/src/app/core/services/base-graphql-service.class.ts +0 -319
  963. package/src/app/core/services/base58.ts +0 -90
  964. package/src/app/core/services/config/core.config.ts +0 -263
  965. package/src/app/core/services/config.service.ts +0 -425
  966. package/src/app/core/services/crypto.service.ts +0 -126
  967. package/src/app/core/services/errors.ts +0 -80
  968. package/src/app/core/services/local-settings.service.spec.ts +0 -39
  969. package/src/app/core/services/local-settings.service.ts +0 -605
  970. package/src/app/core/services/model/account.model.ts +0 -188
  971. package/src/app/core/services/model/config.model.ts +0 -116
  972. package/src/app/core/services/model/department.model.ts +0 -34
  973. package/src/app/core/services/model/entity.decorators.ts +0 -110
  974. package/src/app/core/services/model/entity.model.ts +0 -409
  975. package/src/app/core/services/model/filter.model.ts +0 -127
  976. package/src/app/core/services/model/history.model.ts +0 -25
  977. package/src/app/core/services/model/model.enum.ts +0 -10
  978. package/src/app/core/services/model/node-feature.model.ts +0 -31
  979. package/src/app/core/services/model/peer.model.ts +0 -119
  980. package/src/app/core/services/model/person.model.ts +0 -122
  981. package/src/app/core/services/model/referential.model.ts +0 -253
  982. package/src/app/core/services/model/settings.model.ts +0 -37
  983. package/src/app/core/services/model/token.model.ts +0 -60
  984. package/src/app/core/services/model/tree-item-entity.model.ts +0 -230
  985. package/src/app/core/services/network.service.spec.ts +0 -47
  986. package/src/app/core/services/network.service.ts +0 -761
  987. package/src/app/core/services/network.types.ts +0 -7
  988. package/src/app/core/services/network.utils.ts +0 -83
  989. package/src/app/core/services/pipes/account.pipes.ts +0 -22
  990. package/src/app/core/services/pipes/department-to-string.pipe.ts +0 -13
  991. package/src/app/core/services/pipes/person-to-string.pipe.ts +0 -13
  992. package/src/app/core/services/pipes/pipes.module.ts +0 -30
  993. package/src/app/core/services/pipes/referential-to-string.pipe.ts +0 -18
  994. package/src/app/core/services/pipes/usage-mode.pipes.ts +0 -23
  995. package/src/app/core/services/platform.service.spec.ts +0 -50
  996. package/src/app/core/services/platform.service.ts +0 -694
  997. package/src/app/core/services/storage/entities-storage.service.ts +0 -557
  998. package/src/app/core/services/storage/entity-store.class.ts +0 -589
  999. package/src/app/core/services/testing/local-settings.config.ts +0 -35
  1000. package/src/app/core/services/testing/referential-filter.model.ts +0 -28
  1001. package/src/app/core/services/testing/referential.validator.ts +0 -58
  1002. package/src/app/core/services/testing/user-settings.config.ts +0 -77
  1003. package/src/app/core/services/validator/account.validator.ts +0 -50
  1004. package/src/app/core/services/validator/base.validator.class.ts +0 -51
  1005. package/src/app/core/services/validator/local-settings.validator.ts +0 -59
  1006. package/src/app/core/services/validator/user-settings.validator.ts +0 -22
  1007. package/src/app/core/services/validator/user-token.validator.ts +0 -54
  1008. package/src/app/core/settings/settings.module.ts +0 -15
  1009. package/src/app/core/settings/settings.page.html +0 -300
  1010. package/src/app/core/settings/settings.page.ts +0 -455
  1011. package/src/app/core/table/async-table.class.ts +0 -2019
  1012. package/src/app/core/table/column/actions-column.component.html +0 -219
  1013. package/src/app/core/table/column/actions-column.component.scss +0 -17
  1014. package/src/app/core/table/column/actions-column.component.ts +0 -83
  1015. package/src/app/core/table/column/nav-actions-column.component.html +0 -119
  1016. package/src/app/core/table/column/nav-actions-column.component.ts +0 -108
  1017. package/src/app/core/table/column/row-field.component.html +0 -43
  1018. package/src/app/core/table/column/row-field.component.scss +0 -0
  1019. package/src/app/core/table/column/row-field.component.ts +0 -63
  1020. package/src/app/core/table/entities-async-table-datasource.class.ts +0 -501
  1021. package/src/app/core/table/entities-table-datasource.class.ts +0 -499
  1022. package/src/app/core/table/memory-table.class.ts +0 -56
  1023. package/src/app/core/table/table-select-columns.component.html +0 -56
  1024. package/src/app/core/table/table-select-columns.component.ts +0 -49
  1025. package/src/app/core/table/table.class.ts +0 -2080
  1026. package/src/app/core/table/table.model.ts +0 -39
  1027. package/src/app/core/table/table.module.ts +0 -28
  1028. package/src/app/core/table/table.pipes.ts +0 -87
  1029. package/src/app/core/table/table.utils.ts +0 -42
  1030. package/src/app/core/table/testing/multi-table.testing.html +0 -456
  1031. package/src/app/core/table/testing/multi-table.testing.ts +0 -263
  1032. package/src/app/core/table/testing/table-validator.service.ts +0 -29
  1033. package/src/app/core/table/testing/table.testing.html +0 -556
  1034. package/src/app/core/table/testing/table.testing.module.ts +0 -16
  1035. package/src/app/core/table/testing/table.testing.scss +0 -32
  1036. package/src/app/core/table/testing/table.testing.ts +0 -329
  1037. package/src/app/core/table/testing/table2-validator.service.ts +0 -19
  1038. package/src/app/core/table/testing/table2.testing.html +0 -470
  1039. package/src/app/core/table/testing/table2.testing.scss +0 -25
  1040. package/src/app/core/table/testing/table2.testing.ts +0 -274
  1041. package/src/app/shared/alerts.ts +0 -296
  1042. package/src/app/shared/audio/audio.testing.html +0 -29
  1043. package/src/app/shared/audio/audio.testing.module.ts +0 -21
  1044. package/src/app/shared/audio/audio.testing.ts +0 -27
  1045. package/src/app/shared/audio/audio.ts +0 -273
  1046. package/src/app/shared/base64.utils.ts +0 -66
  1047. package/src/app/shared/capacitor/keyboard.ts +0 -38
  1048. package/src/app/shared/capacitor/plugins.ts +0 -12
  1049. package/src/app/shared/constants.ts +0 -19
  1050. package/src/app/shared/dates.ts +0 -206
  1051. package/src/app/shared/debug/debug-service.class.ts +0 -7
  1052. package/src/app/shared/debug/debug.component.html +0 -13
  1053. package/src/app/shared/debug/debug.component.scss +0 -21
  1054. package/src/app/shared/debug/debug.component.spec.ts +0 -24
  1055. package/src/app/shared/debug/debug.component.ts +0 -25
  1056. package/src/app/shared/debug/debug.module.ts +0 -14
  1057. package/src/app/shared/directives/autofocus.directive.ts +0 -93
  1058. package/src/app/shared/directives/autoresize.directive.ts +0 -67
  1059. package/src/app/shared/directives/autotitle.directive.ts +0 -17
  1060. package/src/app/shared/directives/directives.module.ts +0 -16
  1061. package/src/app/shared/directives/drag-and-drop.directive.ts +0 -46
  1062. package/src/app/shared/directives/ng-var.directive.ts +0 -31
  1063. package/src/app/shared/directives/resizable/resizable.component.ts +0 -48
  1064. package/src/app/shared/directives/resizable/resizable.directive.ts +0 -43
  1065. package/src/app/shared/directives/resizable/resizable.module.ts +0 -9
  1066. package/src/app/shared/directives/resizable/resizable.style.scss +0 -37
  1067. package/src/app/shared/directives/resizable/resizable.template.html +0 -6
  1068. package/src/app/shared/directives/throttled-click.directive.ts +0 -36
  1069. package/src/app/shared/events.ts +0 -93
  1070. package/src/app/shared/file/csv.utils.ts +0 -123
  1071. package/src/app/shared/file/file.service.ts +0 -129
  1072. package/src/app/shared/file/file.utils.ts +0 -142
  1073. package/src/app/shared/file/images.utils.ts +0 -214
  1074. package/src/app/shared/file/json.utils.ts +0 -82
  1075. package/src/app/shared/file/uri.utils.ts +0 -31
  1076. package/src/app/shared/file/url.utils.ts +0 -163
  1077. package/src/app/shared/focusable.ts +0 -8
  1078. package/src/app/shared/form/field.component.html +0 -380
  1079. package/src/app/shared/form/field.component.scss +0 -7
  1080. package/src/app/shared/form/field.component.ts +0 -344
  1081. package/src/app/shared/form/field.model.ts +0 -158
  1082. package/src/app/shared/form/loading-spinner.ts +0 -16
  1083. package/src/app/shared/forms.ts +0 -577
  1084. package/src/app/shared/functions.spec.ts +0 -197
  1085. package/src/app/shared/functions.ts +0 -694
  1086. package/src/app/shared/geolocation/geolocation.utils.ts +0 -105
  1087. package/src/app/shared/gesture/gesture-config.ts +0 -43
  1088. package/src/app/shared/gesture/hammer.utils.ts +0 -14
  1089. package/src/app/shared/graph/colors.utils.ts +0 -69
  1090. package/src/app/shared/graph/graph-colors.ts +0 -270
  1091. package/src/app/shared/guard/component-dirty.guard.ts +0 -67
  1092. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.html +0 -11
  1093. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.scss +0 -37
  1094. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.ts +0 -14
  1095. package/src/app/shared/hotkeys/hotkeys.service.ts +0 -165
  1096. package/src/app/shared/hotkeys/shared-hotkeys.module.ts +0 -15
  1097. package/src/app/shared/http/http.utils.ts +0 -95
  1098. package/src/app/shared/image/gallery/image-gallery.component.html +0 -282
  1099. package/src/app/shared/image/gallery/image-gallery.component.scss +0 -218
  1100. package/src/app/shared/image/gallery/image-gallery.component.ts +0 -434
  1101. package/src/app/shared/image/gallery/image-gallery.module.ts +0 -35
  1102. package/src/app/shared/image/gallery/testing/gallegry.model.testing.ts +0 -23
  1103. package/src/app/shared/image/gallery/testing/gallery.service.testing.ts +0 -99
  1104. package/src/app/shared/image/gallery/testing/gallery.testing.html +0 -27
  1105. package/src/app/shared/image/gallery/testing/gallery.testing.module.ts +0 -39
  1106. package/src/app/shared/image/gallery/testing/gallery.testing.ts +0 -34
  1107. package/src/app/shared/image/image.model.ts +0 -8
  1108. package/src/app/shared/image/image.module.ts +0 -12
  1109. package/src/app/shared/image/image.service.ts +0 -111
  1110. package/src/app/shared/image/image.testing.module.ts +0 -16
  1111. package/src/app/shared/inputs.ts +0 -330
  1112. package/src/app/shared/interceptors/progess.interceptor.ts +0 -24
  1113. package/src/app/shared/logging/log-level.model.ts +0 -53
  1114. package/src/app/shared/logging/logger.model.ts +0 -117
  1115. package/src/app/shared/logging/logging-service.class.ts +0 -131
  1116. package/src/app/shared/logging/logging-service.config.ts +0 -29
  1117. package/src/app/shared/logging/logging-service.module.ts +0 -19
  1118. package/src/app/shared/markdown/markdown.component.html +0 -55
  1119. package/src/app/shared/markdown/markdown.component.scss +0 -75
  1120. package/src/app/shared/markdown/markdown.component.ts +0 -350
  1121. package/src/app/shared/markdown/markdown.directive.ts +0 -28
  1122. package/src/app/shared/markdown/markdown.modal.html +0 -42
  1123. package/src/app/shared/markdown/markdown.modal.ts +0 -91
  1124. package/src/app/shared/markdown/markdown.module.ts +0 -65
  1125. package/src/app/shared/markdown/markdown.service.ts +0 -234
  1126. package/src/app/shared/markdown/markdown.utils.ts +0 -90
  1127. package/src/app/shared/markdown/testing/markdown.test.html +0 -50
  1128. package/src/app/shared/markdown/testing/markdown.test.ts +0 -49
  1129. package/src/app/shared/markdown/testing/markdown.testing.module.ts +0 -22
  1130. package/src/app/shared/material/autocomplete/material.autocomplete.config.ts +0 -127
  1131. package/src/app/shared/material/autocomplete/material.autocomplete.html +0 -400
  1132. package/src/app/shared/material/autocomplete/material.autocomplete.module.ts +0 -41
  1133. package/src/app/shared/material/autocomplete/material.autocomplete.scss +0 -54
  1134. package/src/app/shared/material/autocomplete/material.autocomplete.ts +0 -1375
  1135. package/src/app/shared/material/autocomplete/material.autocomplete.utils.ts +0 -21
  1136. package/src/app/shared/material/autocomplete/testing/autocomplete.test.html +0 -1164
  1137. package/src/app/shared/material/autocomplete/testing/autocomplete.test.spec.ts +0 -33
  1138. package/src/app/shared/material/autocomplete/testing/autocomplete.test.ts +0 -272
  1139. package/src/app/shared/material/badge/badge.directive.ts +0 -217
  1140. package/src/app/shared/material/badge/badge.module.ts +0 -12
  1141. package/src/app/shared/material/badge/badge.test.html +0 -275
  1142. package/src/app/shared/material/badge/badge.test.ts +0 -34
  1143. package/src/app/shared/material/boolean/boolean.module.ts +0 -36
  1144. package/src/app/shared/material/boolean/material.boolean.html +0 -271
  1145. package/src/app/shared/material/boolean/material.boolean.scss +0 -27
  1146. package/src/app/shared/material/boolean/material.boolean.ts +0 -343
  1147. package/src/app/shared/material/boolean/testing/boolean.test.page.html +0 -469
  1148. package/src/app/shared/material/boolean/testing/boolean.test.page.ts +0 -66
  1149. package/src/app/shared/material/chips/chips.module.ts +0 -38
  1150. package/src/app/shared/material/chips/material.chips.html +0 -233
  1151. package/src/app/shared/material/chips/material.chips.scss +0 -67
  1152. package/src/app/shared/material/chips/material.chips.ts +0 -834
  1153. package/src/app/shared/material/chips/testing/chips.test.html +0 -207
  1154. package/src/app/shared/material/chips/testing/chips.test.ts +0 -169
  1155. package/src/app/shared/material/datetime/datetime.module.ts +0 -42
  1156. package/src/app/shared/material/datetime/material.date.html +0 -186
  1157. package/src/app/shared/material/datetime/material.date.scss +0 -17
  1158. package/src/app/shared/material/datetime/material.date.ts +0 -512
  1159. package/src/app/shared/material/datetime/material.dateshort.html +0 -194
  1160. package/src/app/shared/material/datetime/material.dateshort.scss +0 -23
  1161. package/src/app/shared/material/datetime/material.dateshort.ts +0 -497
  1162. package/src/app/shared/material/datetime/material.datetime.html +0 -325
  1163. package/src/app/shared/material/datetime/material.datetime.scss +0 -87
  1164. package/src/app/shared/material/datetime/material.datetime.ts +0 -758
  1165. package/src/app/shared/material/datetime/testing/mat-date-time.test.html +0 -794
  1166. package/src/app/shared/material/datetime/testing/mat-date-time.test.ts +0 -155
  1167. package/src/app/shared/material/datetime/testing/mat-date.test.html +0 -564
  1168. package/src/app/shared/material/datetime/testing/mat-date.test.ts +0 -145
  1169. package/src/app/shared/material/datetime/testing/mat-dateshort.test.html +0 -530
  1170. package/src/app/shared/material/datetime/testing/mat-dateshort.test.ts +0 -133
  1171. package/src/app/shared/material/duration/duration.module.ts +0 -33
  1172. package/src/app/shared/material/duration/duration.utils.ts +0 -18
  1173. package/src/app/shared/material/duration/material.duration.html +0 -116
  1174. package/src/app/shared/material/duration/material.duration.scss +0 -28
  1175. package/src/app/shared/material/duration/material.duration.ts +0 -308
  1176. package/src/app/shared/material/duration/testing/mat-duration.test.html +0 -170
  1177. package/src/app/shared/material/duration/testing/mat-duration.test.ts +0 -88
  1178. package/src/app/shared/material/latlong/latlong.utils.ts +0 -376
  1179. package/src/app/shared/material/latlong/material.latlong-input.html +0 -95
  1180. package/src/app/shared/material/latlong/material.latlong-input.scss +0 -66
  1181. package/src/app/shared/material/latlong/material.latlong-input.ts +0 -445
  1182. package/src/app/shared/material/latlong/material.latlong.html +0 -90
  1183. package/src/app/shared/material/latlong/material.latlong.module.ts +0 -37
  1184. package/src/app/shared/material/latlong/material.latlong.scss +0 -0
  1185. package/src/app/shared/material/latlong/material.latlong.ts +0 -203
  1186. package/src/app/shared/material/latlong/testing/latlong.test.html +0 -1008
  1187. package/src/app/shared/material/latlong/testing/latlong.test.ts +0 -144
  1188. package/src/app/shared/material/material.animations.ts +0 -269
  1189. package/src/app/shared/material/material.config.ts +0 -5
  1190. package/src/app/shared/material/material.module.ts +0 -94
  1191. package/src/app/shared/material/material.testing.module.ts +0 -192
  1192. package/src/app/shared/material/memory/memory.utils.ts +0 -57
  1193. package/src/app/shared/material/numpad/numpad.animation.ts +0 -1
  1194. package/src/app/shared/material/numpad/numpad.append-to-input.directive.ts +0 -110
  1195. package/src/app/shared/material/numpad/numpad.component.ts +0 -73
  1196. package/src/app/shared/material/numpad/numpad.container.html +0 -37
  1197. package/src/app/shared/material/numpad/numpad.container.scss +0 -55
  1198. package/src/app/shared/material/numpad/numpad.container.ts +0 -152
  1199. package/src/app/shared/material/numpad/numpad.content.html +0 -13
  1200. package/src/app/shared/material/numpad/numpad.content.ts +0 -10
  1201. package/src/app/shared/material/numpad/numpad.directive.ts +0 -159
  1202. package/src/app/shared/material/numpad/numpad.dom-service.ts +0 -35
  1203. package/src/app/shared/material/numpad/numpad.model.ts +0 -53
  1204. package/src/app/shared/material/numpad/numpad.module.ts +0 -18
  1205. package/src/app/shared/material/numpad/testing/numpad.test.html +0 -146
  1206. package/src/app/shared/material/numpad/testing/numpad.test.ts +0 -44
  1207. package/src/app/shared/material/paginator/material.paginator-i18n.ts +0 -47
  1208. package/src/app/shared/material/stepper/material.stepper-i18n.ts +0 -17
  1209. package/src/app/shared/material/swipe/material.swipe.html +0 -85
  1210. package/src/app/shared/material/swipe/material.swipe.scss +0 -55
  1211. package/src/app/shared/material/swipe/material.swipe.ts +0 -366
  1212. package/src/app/shared/material/swipe/swipe.module.ts +0 -29
  1213. package/src/app/shared/material/swipe/testing/swipe.test.html +0 -112
  1214. package/src/app/shared/material/swipe/testing/swipe.test.ts +0 -74
  1215. package/src/app/shared/material/test/test-component.css +0 -22
  1216. package/src/app/shared/material/test/test-component.html +0 -40
  1217. package/src/app/shared/material/test/test-component.ts +0 -295
  1218. package/src/app/shared/material/testing/common.test.html +0 -227
  1219. package/src/app/shared/material/testing/common.test.ts +0 -126
  1220. package/src/app/shared/material/text/testing/text-form.testing.html +0 -213
  1221. package/src/app/shared/material/text/testing/text-form.testing.ts +0 -30
  1222. package/src/app/shared/material/text/text-form.component.html +0 -63
  1223. package/src/app/shared/material/text/text-form.component.scss +0 -8
  1224. package/src/app/shared/material/text/text-form.component.ts +0 -177
  1225. package/src/app/shared/material/text/text-form.module.ts +0 -36
  1226. package/src/app/shared/modules.ts +0 -12
  1227. package/src/app/shared/named-filter/named-filter-selector.component.html +0 -77
  1228. package/src/app/shared/named-filter/named-filter-selector.component.scss +0 -3
  1229. package/src/app/shared/named-filter/named-filter-selector.component.ts +0 -287
  1230. package/src/app/shared/named-filter/named-filter.model.ts +0 -64
  1231. package/src/app/shared/named-filter/named-filter.module.ts +0 -15
  1232. package/src/app/shared/named-filter/named-filter.service.ts +0 -100
  1233. package/src/app/shared/named-filter/testing/named-filter-selector.testing.html +0 -61
  1234. package/src/app/shared/named-filter/testing/named-filter-selector.testing.ts +0 -80
  1235. package/src/app/shared/named-filter/testing/named-filter.testing.module.ts +0 -20
  1236. package/src/app/shared/named-filter/testing/named-filter.testing.service.ts +0 -83
  1237. package/src/app/shared/observables.ts +0 -139
  1238. package/src/app/shared/pipes/arrays.pipe.ts +0 -153
  1239. package/src/app/shared/pipes/badge.pipes.ts +0 -17
  1240. package/src/app/shared/pipes/colors.pipe.ts +0 -24
  1241. package/src/app/shared/pipes/date-diff-duration.pipe.ts +0 -53
  1242. package/src/app/shared/pipes/date-format.pipe.ts +0 -73
  1243. package/src/app/shared/pipes/date-from-now.pipe.ts +0 -17
  1244. package/src/app/shared/pipes/dates.pipe.ts +0 -13
  1245. package/src/app/shared/pipes/display-with.pipe.ts +0 -13
  1246. package/src/app/shared/pipes/duration.pipe.spec.ts +0 -41
  1247. package/src/app/shared/pipes/duration.pipe.ts +0 -28
  1248. package/src/app/shared/pipes/file-size.pipe.ts +0 -50
  1249. package/src/app/shared/pipes/form.pipes.ts +0 -209
  1250. package/src/app/shared/pipes/highlight.pipe.ts +0 -41
  1251. package/src/app/shared/pipes/html.pipes.ts +0 -49
  1252. package/src/app/shared/pipes/latlong-format.pipe.ts +0 -28
  1253. package/src/app/shared/pipes/maps.pipe.ts +0 -41
  1254. package/src/app/shared/pipes/maskito.pipe.ts +0 -68
  1255. package/src/app/shared/pipes/math.pipes.ts +0 -46
  1256. package/src/app/shared/pipes/ng-init.pipe.ts +0 -13
  1257. package/src/app/shared/pipes/number-format.pipe.ts +0 -11
  1258. package/src/app/shared/pipes/observable.pipes.ts +0 -45
  1259. package/src/app/shared/pipes/pipes.module.ts +0 -162
  1260. package/src/app/shared/pipes/property.pipes.ts +0 -115
  1261. package/src/app/shared/pipes/selection.pipes.ts +0 -165
  1262. package/src/app/shared/pipes/string.pipes.ts +0 -128
  1263. package/src/app/shared/pipes/translate-context.pipe.ts +0 -27
  1264. package/src/app/shared/pipes/types.pipes.ts +0 -52
  1265. package/src/app/shared/pipes/url.pipes.ts +0 -36
  1266. package/src/app/shared/platforms.ts +0 -99
  1267. package/src/app/shared/print/print.service.ts +0 -337
  1268. package/src/app/shared/regexps.ts +0 -112
  1269. package/src/app/shared/rx-state/rx-state.decorators.ts +0 -281
  1270. package/src/app/shared/rx-state/rx-state.module.ts +0 -11
  1271. package/src/app/shared/rx-state/rx-state.types.ts +0 -5
  1272. package/src/app/shared/services/entity-service.class.ts +0 -120
  1273. package/src/app/shared/services/job.utils.ts +0 -124
  1274. package/src/app/shared/services/memory-entity-service.class.ts +0 -435
  1275. package/src/app/shared/services/progress-bar.service.ts +0 -40
  1276. package/src/app/shared/services/startable-observable-service.class.ts +0 -129
  1277. package/src/app/shared/services/startable-service.class.ts +0 -120
  1278. package/src/app/shared/services/storage.utils.ts +0 -53
  1279. package/src/app/shared/services/translate-context.service.ts +0 -112
  1280. package/src/app/shared/services/validator-service.class.ts +0 -13
  1281. package/src/app/shared/services.ts +0 -134
  1282. package/src/app/shared/shared-routing.module.ts +0 -69
  1283. package/src/app/shared/shared.module.spec.ts +0 -13
  1284. package/src/app/shared/shared.module.ts +0 -168
  1285. package/src/app/shared/shared.testing.module.ts +0 -61
  1286. package/src/app/shared/storage/storage-explorer.component.html +0 -160
  1287. package/src/app/shared/storage/storage-explorer.component.scss +0 -37
  1288. package/src/app/shared/storage/storage-explorer.component.spec.ts +0 -24
  1289. package/src/app/shared/storage/storage-explorer.component.ts +0 -268
  1290. package/src/app/shared/storage/storage-explorer.module.ts +0 -24
  1291. package/src/app/shared/storage/storage-explorer.testing-routing.module.ts +0 -19
  1292. package/src/app/shared/storage/storage-explorer.testing.module.ts +0 -19
  1293. package/src/app/shared/storage/storage.service.ts +0 -131
  1294. package/src/app/shared/storage/storage.utils.ts +0 -25
  1295. package/src/app/shared/testing/maskito.test.html +0 -40
  1296. package/src/app/shared/testing/maskito.test.ts +0 -33
  1297. package/src/app/shared/testing/observable.test.html +0 -53
  1298. package/src/app/shared/testing/observable.test.scss +0 -3
  1299. package/src/app/shared/testing/observable.test.ts +0 -101
  1300. package/src/app/shared/testing/tests.page.html +0 -22
  1301. package/src/app/shared/testing/tests.page.ts +0 -32
  1302. package/src/app/shared/toast/toast.testing.html +0 -50
  1303. package/src/app/shared/toast/toast.testing.module.ts +0 -22
  1304. package/src/app/shared/toast/toast.testing.ts +0 -52
  1305. package/src/app/shared/toast/toasts.ts +0 -161
  1306. package/src/app/shared/toolbar/modal-toolbar.html +0 -30
  1307. package/src/app/shared/toolbar/modal-toolbar.scss +0 -0
  1308. package/src/app/shared/toolbar/modal-toolbar.ts +0 -64
  1309. package/src/app/shared/toolbar/toolbar.html +0 -68
  1310. package/src/app/shared/toolbar/toolbar.module.ts +0 -18
  1311. package/src/app/shared/toolbar/toolbar.scss +0 -0
  1312. package/src/app/shared/toolbar/toolbar.ts +0 -262
  1313. package/src/app/shared/types.ts +0 -44
  1314. package/src/app/shared/upload-file/testing/upload-file.testing.html +0 -30
  1315. package/src/app/shared/upload-file/testing/upload-file.testing.module.ts +0 -21
  1316. package/src/app/shared/upload-file/testing/upload-file.testing.ts +0 -65
  1317. package/src/app/shared/upload-file/upload-file-popover.component.html +0 -46
  1318. package/src/app/shared/upload-file/upload-file-popover.component.scss +0 -6
  1319. package/src/app/shared/upload-file/upload-file-popover.component.ts +0 -115
  1320. package/src/app/shared/upload-file/upload-file.component.html +0 -57
  1321. package/src/app/shared/upload-file/upload-file.component.scss +0 -60
  1322. package/src/app/shared/upload-file/upload-file.component.ts +0 -222
  1323. package/src/app/shared/upload-file/upload-file.model.ts +0 -40
  1324. package/src/app/shared/validator/form-error-adapter.class.ts +0 -136
  1325. package/src/app/shared/validator/validators.ts +0 -725
  1326. package/src/app/shared/version/versions.ts +0 -89
  1327. package/src/app/social/job/job.module.ts +0 -14
  1328. package/src/app/social/job/progression/job-progression.component.html +0 -19
  1329. package/src/app/social/job/progression/job-progression.component.scss +0 -15
  1330. package/src/app/social/job/progression/job-progression.component.ts +0 -39
  1331. package/src/app/social/job/progression/job-progression.icon.html +0 -30
  1332. package/src/app/social/job/progression/job-progression.icon.scss +0 -7
  1333. package/src/app/social/job/progression/job-progression.icon.ts +0 -276
  1334. package/src/app/social/job/progression/job-progression.list.html +0 -25
  1335. package/src/app/social/job/progression/job-progression.list.scss +0 -17
  1336. package/src/app/social/job/progression/job-progression.list.ts +0 -40
  1337. package/src/app/social/job/progression/job-progression.model.ts +0 -26
  1338. package/src/app/social/job/progression/job-progression.service.ts +0 -97
  1339. package/src/app/social/job/testing/job-progression.testing.html +0 -11
  1340. package/src/app/social/job/testing/job-progression.testing.service.ts +0 -33
  1341. package/src/app/social/job/testing/job-progression.testing.ts +0 -28
  1342. package/src/app/social/job/testing/job.testing.module.ts +0 -13
  1343. package/src/app/social/message/message.form.html +0 -71
  1344. package/src/app/social/message/message.form.scss +0 -6
  1345. package/src/app/social/message/message.form.ts +0 -128
  1346. package/src/app/social/message/message.modal.html +0 -68
  1347. package/src/app/social/message/message.modal.ts +0 -117
  1348. package/src/app/social/message/message.model.ts +0 -78
  1349. package/src/app/social/message/message.module.ts +0 -14
  1350. package/src/app/social/message/message.service.ts +0 -104
  1351. package/src/app/social/social.errors.ts +0 -10
  1352. package/src/app/social/social.module.ts +0 -23
  1353. package/src/app/social/social.testing.module.ts +0 -33
  1354. package/src/app/social/user-event/notification/user-event-notification.icon.html +0 -17
  1355. package/src/app/social/user-event/notification/user-event-notification.icon.ts +0 -112
  1356. package/src/app/social/user-event/notification/user-event-notification.list.html +0 -142
  1357. package/src/app/social/user-event/notification/user-event-notification.list.scss +0 -73
  1358. package/src/app/social/user-event/notification/user-event-notification.list.ts +0 -270
  1359. package/src/app/social/user-event/testing/user-event.testing.html +0 -26
  1360. package/src/app/social/user-event/testing/user-event.testing.model.ts +0 -142
  1361. package/src/app/social/user-event/testing/user-event.testing.module.ts +0 -13
  1362. package/src/app/social/user-event/testing/user-event.testing.service.ts +0 -161
  1363. package/src/app/social/user-event/testing/user-event.testing.ts +0 -282
  1364. package/src/app/social/user-event/user-event.model.ts +0 -55
  1365. package/src/app/social/user-event/user-event.module.ts +0 -15
  1366. package/src/app/social/user-event/user-event.service.ts +0 -686
  1367. package/src/browserslist +0 -9
  1368. package/src/environments/environment.class.ts +0 -106
  1369. package/src/environments/environment.loader.ts +0 -90
  1370. package/src/environments/environment.prod.ts +0 -49
  1371. package/src/environments/environment.test.ts +0 -92
  1372. package/src/environments/environment.ts +0 -126
  1373. package/src/favicon.ico +0 -0
  1374. package/src/global.scss +0 -13
  1375. package/src/index.html +0 -76
  1376. package/src/main.ts +0 -18
  1377. package/src/polyfills.ts +0 -34
  1378. package/src/schema.graphql +0 -4381
  1379. package/src/service-worker.js +0 -31
  1380. package/src/test.ts +0 -30
  1381. package/tsconfig.app.json +0 -15
  1382. package/tsconfig.json +0 -47
  1383. package/tsconfig.spec.json +0 -18
@@ -0,0 +1,118 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { Platform } from '@ionic/angular';
3
+ import { ImagesUtils } from './images.utils';
4
+ import { chainPromises, firstNotNilPromise } from '../observables';
5
+ import { HttpClient } from '@angular/common/http';
6
+ import { ENVIRONMENT } from '../../../environments/environment.class';
7
+ import { v4 as uuidv4 } from 'uuid';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@ionic/angular";
10
+ import * as i2 from "@angular/common/http";
11
+ export class FileService {
12
+ platform;
13
+ http;
14
+ environment;
15
+ _debug;
16
+ _started = false;
17
+ _imageDirectory;
18
+ get canUseFileSystem() {
19
+ return false;
20
+ // FIXME: seems not working well
21
+ //return !!this.file.dataDirectory;
22
+ }
23
+ constructor(platform,
24
+ //private transfer: FileTransfer,
25
+ //@Optional() private file: File,
26
+ http, environment) {
27
+ this.platform = platform;
28
+ this.http = http;
29
+ this.environment = environment;
30
+ this._debug = !environment.production;
31
+ platform.ready().then(() => this.start());
32
+ }
33
+ getImages(sources, opts) {
34
+ if (!this._started)
35
+ throw new Error('Platform must be started first!');
36
+ //const fileTransfer = this.canUseFileSystem ? this.transfer.create() : undefined;
37
+ //const jobsFactories = (sources || []).map(source => () => this.getImage(source, {...opts, fileTransfer}));
38
+ const jobsFactories = (sources || []).map((source) => () => this.getImage(source, { ...opts }));
39
+ return chainPromises(jobsFactories);
40
+ }
41
+ async getImage(fileUrl, opts) {
42
+ let outputType = (opts && opts.outputType) || (this.canUseFileSystem ? 'fileUrl' : 'dataUrl');
43
+ const debug = this._debug; /*&& (!opts || !opts.fileTransfer)*/
44
+ const now = debug && Date.now();
45
+ if (debug)
46
+ console.debug(`[file] Fetching image {${fileUrl}} into ${outputType}...`);
47
+ // Read the filename
48
+ const lastSlashIndex = fileUrl.lastIndexOf('/');
49
+ if (lastSlashIndex === -1)
50
+ throw new Error('Invalid URL: ' + fileUrl);
51
+ const fileName = (lastSlashIndex < fileUrl.length - 1 && fileUrl.substring(lastSlashIndex + 1)) || uuidv4();
52
+ // Download into the file system
53
+ if (outputType === 'fileUrl' && this.canUseFileSystem) {
54
+ console.warn(`WARN: [file] Downloading image {${fileUrl}} in local filesystem...`);
55
+ const targetFilePath = this._imageDirectory + fileName;
56
+ try {
57
+ const blob = await firstNotNilPromise(this.http.get(fileUrl, {
58
+ observe: 'body',
59
+ responseType: 'blob',
60
+ reportProgress: false,
61
+ }));
62
+ console.debug('[file] Getting blob :' + blob.type);
63
+ //await this.file.writeFile(this._imageDirectory, fileName, blob, {replace: true});
64
+ //const fileTransfer = (opts && opts.fileTransfer) || this.transfer.create();
65
+ //await fileTransfer.download(source, targetFilePath);
66
+ if (debug)
67
+ console.debug(`[file] Fetching image {${fileUrl}} into ${outputType} [OK] in ${Date.now() - now}ms`);
68
+ return targetFilePath;
69
+ }
70
+ catch (err) {
71
+ console.error(`[file] Error while download ${fileUrl}: ${(err && err.message) || err}`);
72
+ // Continue (fallback to data Url)
73
+ outputType = 'dataUrl';
74
+ }
75
+ }
76
+ if (outputType === 'dataUrl') {
77
+ // Get as data url (e.g. 'data:image/png:...')
78
+ const dataUrl = await ImagesUtils.readAndResizeFromUrl(fileUrl, opts);
79
+ if (debug)
80
+ console.debug(`[file] Fetching image {${fileUrl}} into ${outputType} [OK] in ${Date.now() - now}ms`);
81
+ return dataUrl;
82
+ }
83
+ // Keep original URL
84
+ return fileUrl;
85
+ }
86
+ /* -- protected methods -- */
87
+ start() {
88
+ // File system exists
89
+ if (this.canUseFileSystem) {
90
+ //console.info("[file] Application directory: ", this.file.applicationDirectory);
91
+ //console.info("[file] Application storage directory: ", this.file.applicationStorageDirectory);
92
+ //console.info("[file] Data directory: ", this.file.dataDirectory);
93
+ // this.file.createDir(this.file.dataDirectory, 'images', false)
94
+ // .then((dir) => {
95
+ // this._imageDirectory = this.file.dataDirectory + 'images/';
96
+ // console.info("[file] Images directory: ", dir.fullPath);
97
+ // })
98
+ // .catch(err => {
99
+ // console.error("[file] Cannot create the images directory: " + (this.file.dataDirectory + 'images/ : ' + (err && err.message || err)));
100
+ // this._imageDirectory = this.file.dataDirectory;
101
+ // });
102
+ }
103
+ this._started = true;
104
+ }
105
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileService, deps: [{ token: i1.Platform }, { token: i2.HttpClient }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
106
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileService, providedIn: 'root' });
107
+ }
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileService, decorators: [{
109
+ type: Injectable,
110
+ args: [{
111
+ providedIn: 'root',
112
+ deps: [Platform, HttpClient, ENVIRONMENT],
113
+ }]
114
+ }], ctorParameters: () => [{ type: i1.Platform }, { type: i2.HttpClient }, { type: undefined, decorators: [{
115
+ type: Inject,
116
+ args: [ENVIRONMENT]
117
+ }] }] });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS9maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNcEMsTUFBTSxPQUFPLFdBQVc7SUFhWjtJQUdBO0lBQ3VCO0lBaEJoQixNQUFNLENBQVU7SUFDekIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVqQixlQUFlLENBQVM7SUFFaEMsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDYixnQ0FBZ0M7UUFDaEMsbUNBQW1DO0lBQ3JDLENBQUM7SUFFRCxZQUNVLFFBQWtCO0lBQzFCLGlDQUFpQztJQUNqQyxpQ0FBaUM7SUFDekIsSUFBZ0IsRUFDTyxXQUFXO1FBSmxDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFHbEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNPLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBRTFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBRXRDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFB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QztZQUN6QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdCLDhDQUE4QztZQUM5QyxNQUFNLE9BQU8sR0FBRyxNQUFNLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEUsSUFBSSxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLE9BQU8sVUFBVSxVQUFVLFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDaEgsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELG9CQUFvQjtRQUNwQixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsNkJBQTZCO0lBRW5CLEtBQUs7UUFDYixxQkFBcUI7UUFDckIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixpRkFBaUY7WUFDakYsZ0dBQWdHO1lBQ2hHLG1FQUFtRTtZQUNuRSxnRUFBZ0U7WUFDaEUscUJBQXFCO1lBQ3JCLGtFQUFrRTtZQUNsRSwrREFBK0Q7WUFDL0QsT0FBTztZQUNQLG9CQUFvQjtZQUNwQiw2SUFBNkk7WUFDN0ksc0RBQXNEO1lBQ3RELFFBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQzt3R0FuSFUsV0FBVyxvRUFpQlosV0FBVzs0R0FqQlYsV0FBVyxjQUhWLE1BQU07OzRGQUdQLFdBQVc7a0JBSnZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07b0JBQ2xCLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDO2lCQUMxQzs7MEJBa0JJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJbWFnZXNVdGlscywgSW1hZ2VSZXNpemVPcHRpb25zIH0gZnJvbSAnLi9pbWFnZXMudXRpbHMnO1xuaW1wb3J0IHsgY2hhaW5Qcm9taXNlcywgZmlyc3ROb3ROaWxQcm9taXNlIH0gZnJvbSAnLi4vb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZGVwczogW1BsYXRmb3JtLCBIdHRwQ2xpZW50LCBFTlZJUk9OTUVOVF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVidWc6IGJvb2xlYW47XG4gIHByaXZhdGUgX3N0YXJ0ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pbWFnZURpcmVjdG9yeTogc3RyaW5nO1xuXG4gIGdldCBjYW5Vc2VGaWxlU3lzdGVtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBGSVhNRTogc2VlbXMgbm90IHdvcmtpbmcgd2VsbFxuICAgIC8vcmV0dXJuICEhdGhpcy5maWxlLmRhdGFEaXJlY3Rvcnk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAvL3ByaXZhdGUgdHJhbnNmZXI6IEZpbGVUcmFuc2ZlcixcbiAgICAvL0BPcHRpb25hbCgpIHByaXZhdGUgZmlsZTogRmlsZSxcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50XG4gICkge1xuICAgIHRoaXMuX2RlYnVnID0gIWVudmlyb25tZW50LnByb2R1Y3Rpb247XG5cbiAgICBwbGF0Zm9ybS5yZWFkeSgpLnRoZW4oKCkgPT4gdGhpcy5zdGFydCgpKTtcbiAgfVxuXG4gIGdldEltYWdlcyhcbiAgICBzb3VyY2VzOiBzdHJpbmdbXSxcbiAgICBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zICYge1xuICAgICAgb3V0cHV0VHlwZT86ICdmaWxlVXJsJyB8ICdkYXRhVXJsJztcbiAgICB9XG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAoIXRoaXMuX3N0YXJ0ZWQpIHRocm93IG5ldyBFcnJvcignUGxhdGZvcm0gbXVzdCBiZSBzdGFydGVkIGZpcnN0IScpO1xuXG4gICAgLy9jb25zdCBmaWxlVHJhbnNmZXIgPSB0aGlzLmNhblVzZUZpbGVTeXN0ZW0gPyB0aGlzLnRyYW5zZmVyLmNyZWF0ZSgpIDogdW5kZWZpbmVkO1xuICAgIC8vY29uc3Qgam9ic0ZhY3RvcmllcyA9IChzb3VyY2VzIHx8IFtdKS5tYXAoc291cmNlID0+ICgpID0+IHRoaXMuZ2V0SW1hZ2Uoc291cmNlLCB7Li4ub3B0cywgZmlsZVRyYW5zZmVyfSkpO1xuXG4gICAgY29uc3Qgam9ic0ZhY3RvcmllcyA9IChzb3VyY2VzIHx8IFtdKS5tYXAoKHNvdXJjZSkgPT4gKCkgPT4gdGhpcy5nZXRJbWFnZShzb3VyY2UsIHsgLi4ub3B0cyB9KSk7XG4gICAgcmV0dXJuIGNoYWluUHJvbWlzZXM8c3RyaW5nPihqb2JzRmFjdG9yaWVzKTtcbiAgfVxuXG4gIGFzeW5jIGdldEltYWdlKFxuICAgIGZpbGVVcmw6IHN0cmluZyxcbiAgICBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zICYge1xuICAgICAgb3V0cHV0VHlwZT86ICdmaWxlVXJsJyB8ICdkYXRhVXJsJztcbiAgICB9XG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IG91dHB1dFR5cGUgPSAob3B0cyAmJiBvcHRzLm91dHB1dFR5cGUpIHx8ICh0aGlzLmNhblVzZUZpbGVTeXN0ZW0gPyAnZmlsZVVybCcgOiAnZGF0YVVybCcpO1xuXG4gICAgY29uc3QgZGVidWcgPSB0aGlzLl9kZWJ1ZzsgLyomJiAoIW9wdHMgfHwgIW9wdHMuZmlsZVRyYW5zZmVyKSovXG4gICAgY29uc3Qgbm93ID0gZGVidWcgJiYgRGF0ZS5ub3coKTtcbiAgICBpZiAoZGVidWcpIGNvbnNvbGUuZGVidWcoYFtmaWxlXSBGZXRjaGluZyBpbWFnZSB7JHtmaWxlVXJsfX0gaW50byAke291dHB1dFR5cGV9Li4uYCk7XG5cbiAgICAvLyBSZWFkIHRoZSBmaWxlbmFtZVxuICAgIGNvbnN0IGxhc3RTbGFzaEluZGV4ID0gZmlsZVVybC5sYXN0SW5kZXhPZignLycpO1xuICAgIGlmIChsYXN0U2xhc2hJbmRleCA9PT0gLTEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBVUkw6ICcgKyBmaWxlVXJsKTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IChsYXN0U2xhc2hJbmRleCA8IGZpbGVVcmwubGVuZ3RoIC0gMSAmJiBmaWxlVXJsLnN1YnN0cmluZyhsYXN0U2xhc2hJbmRleCArIDEpKSB8fCB1dWlkdjQoKTtcblxuICAgIC8vIERvd25sb2FkIGludG8gdGhlIGZpbGUgc3lzdGVtXG4gICAgaWYgKG91dHB1dFR5cGUgPT09ICdmaWxlVXJsJyAmJiB0aGlzLmNhblVzZUZpbGVTeXN0ZW0pIHtcbiAgICAgIGNvbnNvbGUud2FybihgV0FSTjogW2ZpbGVdIERvd25sb2FkaW5nIGltYWdlIHske2ZpbGVVcmx9fSBpbiBsb2NhbCBmaWxlc3lzdGVtLi4uYCk7XG4gICAgICBjb25zdCB0YXJnZXRGaWxlUGF0aCA9IHRoaXMuX2ltYWdlRGlyZWN0b3J5ICsgZmlsZU5hbWU7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBibG9iOiBCbG9iID0gYXdhaXQgZmlyc3ROb3ROaWxQcm9taXNlKFxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQoZmlsZVVybCwge1xuICAgICAgICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICAgICAgICByZXBvcnRQcm9ncmVzczogZmFsc2UsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnW2ZpbGVdIEdldHRpbmcgYmxvYiA6JyArIGJsb2IudHlwZSk7XG5cbiAgICAgICAgLy9hd2FpdCB0aGlzLmZpbGUud3JpdGVGaWxlKHRoaXMuX2ltYWdlRGlyZWN0b3J5LCBmaWxlTmFtZSwgYmxvYiwge3JlcGxhY2U6IHRydWV9KTtcblxuICAgICAgICAvL2NvbnN0IGZpbGVUcmFuc2ZlciA9IChvcHRzICYmIG9wdHMuZmlsZVRyYW5zZmVyKSB8fCB0aGlzLnRyYW5zZmVyLmNyZWF0ZSgpO1xuICAgICAgICAvL2F3YWl0IGZpbGVUcmFuc2Zlci5kb3dubG9hZChzb3VyY2UsIHRhcmdldEZpbGVQYXRoKTtcbiAgICAgICAgaWYgKGRlYnVnKSBjb25zb2xlLmRlYnVnKGBbZmlsZV0gRmV0Y2hpbmcgaW1hZ2UgeyR7ZmlsZVVybH19IGludG8gJHtvdXRwdXRUeXBlfSBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgICByZXR1cm4gdGFyZ2V0RmlsZVBhdGg7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW2ZpbGVdIEVycm9yIHdoaWxlIGRvd25sb2FkICR7ZmlsZVVybH06ICR7KGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyfWApO1xuXG4gICAgICAgIC8vIENvbnRpbnVlIChmYWxsYmFjayB0byBkYXRhIFVybClcbiAgICAgICAgb3V0cHV0VHlwZSA9ICdkYXRhVXJsJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3V0cHV0VHlwZSA9PT0gJ2RhdGFVcmwnKSB7XG4gICAgICAvLyBHZXQgYXMgZGF0YSB1cmwgKGUuZy4gJ2RhdGE6aW1hZ2UvcG5nOi4uLicpXG4gICAgICBjb25zdCBkYXRhVXJsID0gYXdhaXQgSW1hZ2VzVXRpbHMucmVhZEFuZFJlc2l6ZUZyb21VcmwoZmlsZVVybCwgb3B0cyk7XG4gICAgICBpZiAoZGVidWcpIGNvbnNvbGUuZGVidWcoYFtmaWxlXSBGZXRjaGluZyBpbWFnZSB7JHtmaWxlVXJsfX0gaW50byAke291dHB1dFR5cGV9IFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICByZXR1cm4gZGF0YVVybDtcbiAgICB9XG5cbiAgICAvLyBLZWVwIG9yaWdpbmFsIFVSTFxuICAgIHJldHVybiBmaWxlVXJsO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZHMgLS0gKi9cblxuICBwcm90ZWN0ZWQgc3RhcnQoKSB7XG4gICAgLy8gRmlsZSBzeXN0ZW0gZXhpc3RzXG4gICAgaWYgKHRoaXMuY2FuVXNlRmlsZVN5c3RlbSkge1xuICAgICAgLy9jb25zb2xlLmluZm8oXCJbZmlsZV0gQXBwbGljYXRpb24gZGlyZWN0b3J5OiBcIiwgdGhpcy5maWxlLmFwcGxpY2F0aW9uRGlyZWN0b3J5KTtcbiAgICAgIC8vY29uc29sZS5pbmZvKFwiW2ZpbGVdIEFwcGxpY2F0aW9uIHN0b3JhZ2UgZGlyZWN0b3J5OiBcIiwgdGhpcy5maWxlLmFwcGxpY2F0aW9uU3RvcmFnZURpcmVjdG9yeSk7XG4gICAgICAvL2NvbnNvbGUuaW5mbyhcIltmaWxlXSBEYXRhIGRpcmVjdG9yeTogXCIsIHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5KTtcbiAgICAgIC8vIHRoaXMuZmlsZS5jcmVhdGVEaXIodGhpcy5maWxlLmRhdGFEaXJlY3RvcnksICdpbWFnZXMnLCBmYWxzZSlcbiAgICAgIC8vICAgLnRoZW4oKGRpcikgPT4ge1xuICAgICAgLy8gICAgIHRoaXMuX2ltYWdlRGlyZWN0b3J5ID0gdGhpcy5maWxlLmRhdGFEaXJlY3RvcnkgKyAnaW1hZ2VzLyc7XG4gICAgICAvLyAgICAgY29uc29sZS5pbmZvKFwiW2ZpbGVdIEltYWdlcyBkaXJlY3Rvcnk6IFwiLCBkaXIuZnVsbFBhdGgpO1xuICAgICAgLy8gICB9KVxuICAgICAgLy8gICAuY2F0Y2goZXJyID0+IHtcbiAgICAgIC8vICAgICBjb25zb2xlLmVycm9yKFwiW2ZpbGVdIENhbm5vdCBjcmVhdGUgdGhlIGltYWdlcyBkaXJlY3Rvcnk6IFwiICsgKHRoaXMuZmlsZS5kYXRhRGlyZWN0b3J5ICsgJ2ltYWdlcy8gOiAnICsgKGVyciAmJiBlcnIubWVzc2FnZSB8fCBlcnIpKSk7XG4gICAgICAvLyAgICAgdGhpcy5faW1hZ2VEaXJlY3RvcnkgPSB0aGlzLmZpbGUuZGF0YURpcmVjdG9yeTtcbiAgICAgIC8vICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhcnRlZCA9IHRydWU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,117 @@
1
+ import { FileResponse } from '../upload-file/upload-file.model';
2
+ import { UploadFilePopover } from '../upload-file/upload-file-popover.component';
3
+ import { Subject } from 'rxjs';
4
+ import { HttpEventType } from '@angular/common/http';
5
+ import { isNilOrBlank } from '../functions';
6
+ export const MimeTypes = Object.freeze({
7
+ ANDROID_APK: 'application/vnd.android.package-archive',
8
+ });
9
+ export class FilesUtils {
10
+ static UTF8_BOM_CHAR = new Uint8Array([0xef, 0xbb, 0xbf]); // UTF-8 BOM
11
+ static async showUploadPopover(popoverController, event, opts) {
12
+ const modal = await popoverController.create({
13
+ component: UploadFilePopover,
14
+ componentProps: opts,
15
+ backdropDismiss: false,
16
+ keyboardClose: false,
17
+ event,
18
+ translucent: true,
19
+ cssClass: 'popover-large',
20
+ });
21
+ await modal.present();
22
+ const { data, role } = await modal.onDidDismiss();
23
+ return {
24
+ role,
25
+ data: data ? data : undefined,
26
+ };
27
+ }
28
+ static readAsText(file, encoding) {
29
+ const $progress = new Subject();
30
+ const reader = new FileReader();
31
+ encoding = (encoding || 'UTF-8').toLowerCase();
32
+ // Listen progress
33
+ reader.onprogress = (e) => {
34
+ const total = e.total || 1;
35
+ const loaded = e.total || 0;
36
+ if (loaded < total)
37
+ $progress.next({ type: HttpEventType.UploadProgress, loaded, total });
38
+ };
39
+ // Listen end
40
+ reader.onloadend = (_) => {
41
+ const body = reader.result;
42
+ if (typeof body === 'string') {
43
+ $progress.next(new FileResponse({ body }));
44
+ $progress.complete();
45
+ }
46
+ else {
47
+ console.error(`Cannot read file '${file.name}' as text`);
48
+ $progress.error(`Cannot read file as text`);
49
+ }
50
+ };
51
+ // Listen error
52
+ reader.onerror = (event) => {
53
+ console.error('[files] Error while reading file:', event);
54
+ $progress.error(event);
55
+ };
56
+ // Start reading the file
57
+ reader.readAsText(file, encoding);
58
+ return $progress.asObservable();
59
+ }
60
+ static writeTextToFile(content, opts) {
61
+ if (isNilOrBlank(content))
62
+ return; // Skip if empty
63
+ const filename = opts?.filename || 'export.txt';
64
+ const charset = (opts?.encoding || 'utf-8').toLowerCase();
65
+ const type = opts?.type || 'text/plain';
66
+ const blob = new Blob(charset === 'utf-8'
67
+ ? // Add UTF-8 BOM character
68
+ [FilesUtils.UTF8_BOM_CHAR, content]
69
+ : // Non UTF-8 charset
70
+ [content], { type: `${type};charset=${charset};` });
71
+ blob['lastModifiedDate'] = new Date().toISOString();
72
+ blob['name'] = filename;
73
+ if (navigator.msSaveBlob) {
74
+ // IE 10+
75
+ navigator.msSaveBlob(blob, filename);
76
+ }
77
+ else {
78
+ const link = document.createElement('a');
79
+ if (link.download !== undefined) {
80
+ // Browsers that support HTML5 download attribute
81
+ const url = URL.createObjectURL(blob);
82
+ link.setAttribute('href', url);
83
+ link.setAttribute('download', filename);
84
+ link.style.visibility = 'hidden';
85
+ document.body.appendChild(link);
86
+ link.click();
87
+ document.body.removeChild(link);
88
+ }
89
+ }
90
+ }
91
+ static downloadUri(uri, filename) {
92
+ if (navigator.msLaunchUri) {
93
+ // IE 10+
94
+ navigator.msLaunchUri(uri);
95
+ }
96
+ else {
97
+ filename = filename || this.getFilenameFromUri(uri);
98
+ const link = document.createElement('a');
99
+ if (link.download !== undefined) {
100
+ // Browsers that support HTML5 download attribute
101
+ link.setAttribute('href', uri);
102
+ link.setAttribute('download', filename);
103
+ link.style.visibility = 'hidden';
104
+ document.body.appendChild(link);
105
+ link.click();
106
+ document.body.removeChild(link);
107
+ }
108
+ }
109
+ }
110
+ static getFilenameFromUri(uri) {
111
+ const lastSlashIndex = uri?.lastIndexOf('/');
112
+ if (lastSlashIndex === -1 || lastSlashIndex === uri.length - 1)
113
+ throw new Error('Invalid URI format. No slash found');
114
+ return uri.substring(lastSlashIndex + 1);
115
+ }
116
+ }
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ZpbGUvZmlsZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsWUFBWSxFQUFjLE1BQU0sa0NBQWtDLENBQUM7QUFDdkYsT0FBTyxFQUFFLGlCQUFpQixFQUE0QixNQUFNLDhDQUE4QyxDQUFDO0FBRzNHLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDckMsV0FBVyxFQUFFLHlDQUF5QztDQUN2RCxDQUFDLENBQUM7QUFFSCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWTtJQUV2RSxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUM1QixpQkFBb0MsRUFDcEMsS0FBWSxFQUNaLElBQWlDO1FBRWpDLE1BQU0sS0FBSyxHQUFHLE1BQU0saUJBQWlCLENBQUMsTUFBTSxDQUFDO1lBQzNDLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsY0FBYyxFQUFFLElBQUk7WUFDcEIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsYUFBYSxFQUFFLEtBQUs7WUFDcEIsS0FBSztZQUNMLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFFBQVEsRUFBRSxlQUFlO1NBQzFCLENBQUMsQ0FBQztRQUVILE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFF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R0FBRyxDQUFDLENBQUM7WUFDcEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLGlEQUFpRDtnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7Z0JBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQVc7UUFDbkMsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxjQUFjLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3RILE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGVFdmVudCwgRmlsZVJlc3BvbnNlLCBVcGxvYWRGaWxlIH0gZnJvbSAnLi4vdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUubW9kZWwnO1xuaW1wb3J0IHsgVXBsb2FkRmlsZVBvcG92ZXIsIFVwbG9hZEZpbGVQb3BvdmVyT3B0aW9ucyB9IGZyb20gJy4uL3VwbG9hZC1maWxlL3VwbG9hZC1maWxlLXBvcG92ZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIdHRwRXZlbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT3ZlcmxheUV2ZW50RGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWxPckJsYW5rIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcblxuZXhwb3J0IGNvbnN0IE1pbWVUeXBlcyA9IE9iamVjdC5mcmVlemUoe1xuICBBTkRST0lEX0FQSzogJ2FwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZScsXG59KTtcblxuZXhwb3J0IGNsYXNzIEZpbGVzVXRpbHMge1xuICBzdGF0aWMgVVRGOF9CT01fQ0hBUiA9IG5ldyBVaW50OEFycmF5KFsweGVmLCAweGJiLCAweGJmXSk7IC8vIFVURi04IEJPTVxuXG4gIHN0YXRpYyBhc3luYyBzaG93VXBsb2FkUG9wb3ZlcjxUPihcbiAgICBwb3BvdmVyQ29udHJvbGxlcjogUG9wb3ZlckNvbnRyb2xsZXIsXG4gICAgZXZlbnQ6IEV2ZW50LFxuICAgIG9wdHM6IFVwbG9hZEZpbGVQb3BvdmVyT3B0aW9uczxUPlxuICApOiBQcm9taXNlPE92ZXJsYXlFdmVudERldGFpbDxVcGxvYWRGaWxlPFQ+W10+PiB7XG4gICAgY29uc3QgbW9kYWwgPSBhd2FpdCBwb3BvdmVyQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBVcGxvYWRGaWxlUG9wb3ZlcixcbiAgICAgIGNvbXBvbmVudFByb3BzOiBvcHRzLFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSxcbiAgICAgIGtleWJvYXJkQ2xvc2U6IGZhbHNlLFxuICAgICAgZXZlbnQsXG4gICAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICAgIGNzc0NsYXNzOiAncG9wb3Zlci1sYXJnZScsXG4gICAgfSk7XG5cbiAgICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XG4gICAgY29uc3QgeyBkYXRhLCByb2xlIH0gPSBhd2FpdCBtb2RhbC5vbkRpZERpc21pc3MoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcm9sZSxcbiAgICAgIGRhdGE6IGRhdGEgPyAoZGF0YSBhcyBVcGxvYWRGaWxlPFQ+W10pIDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgcmVhZEFzVGV4dChmaWxlOiBGaWxlLCBlbmNvZGluZz86IHN0cmluZyk6IE9ic2VydmFibGU8RmlsZUV2ZW50PHN0cmluZz4+IHtcbiAgICBjb25zdCAkcHJvZ3Jlc3MgPSBuZXcgU3ViamVjdDxGaWxlRXZlbnQ8c3RyaW5nPj4oKTtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIGVuY29kaW5nID0gKGVuY29kaW5nIHx8ICdVVEYtOCcpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAvLyBMaXN0ZW4gcHJvZ3Jlc3NcbiAgICByZWFkZXIub25wcm9ncmVzcyA9IChlOiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0b3RhbCA9IGUudG90YWwgfHwgMTtcbiAgICAgIGNvbnN0IGxvYWRlZCA9IGUudG90YWwgfHwgMDtcbiAgICAgIGlmIChsb2FkZWQgPCB0b3RhbCkgJHByb2dyZXNzLm5leHQoeyB0eXBlOiBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzLCBsb2FkZWQsIHRvdGFsIH0pO1xuICAgIH07XG5cbiAgICAvLyBMaXN0ZW4gZW5kXG4gICAgcmVhZGVyLm9ubG9hZGVuZCA9IChfKSA9PiB7XG4gICAgICBjb25zdCBib2R5ID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgJHByb2dyZXNzLm5leHQobmV3IEZpbGVSZXNwb25zZSh7IGJvZHkgfSkpO1xuICAgICAgICAkcHJvZ3Jlc3MuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYENhbm5vdCByZWFkIGZpbGUgJyR7ZmlsZS5uYW1lfScgYXMgdGV4dGApO1xuICAgICAgICAkcHJvZ3Jlc3MuZXJyb3IoYENhbm5vdCByZWFkIGZpbGUgYXMgdGV4dGApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBMaXN0ZW4gZXJyb3JcbiAgICByZWFkZXIub25lcnJvciA9IChldmVudDogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignW2ZpbGVzXSBFcnJvciB3aGlsZSByZWFkaW5nIGZpbGU6JywgZXZlbnQpO1xuICAgICAgJHByb2dyZXNzLmVycm9yKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgLy8gU3RhcnQgcmVhZGluZyB0aGUgZmlsZVxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUsIGVuY29kaW5nKTtcblxuICAgIHJldHVybiAkcHJvZ3Jlc3MuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzdGF0aWMgd3JpdGVUZXh0VG9GaWxlKFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBvcHRzPzoge1xuICAgICAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gICAgICBlbmNvZGluZz86IHN0cmluZztcbiAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfVxuICApIHtcbiAgICBpZiAoaXNOaWxPckJsYW5rKGNvbnRlbnQpKSByZXR1cm47IC8vIFNraXAgaWYgZW1wdHlcblxuICAgIGNvbnN0IGZpbGVuYW1lID0gb3B0cz8uZmlsZW5hbWUgfHwgJ2V4cG9ydC50eHQnO1xuICAgIGNvbnN0IGNoYXJzZXQgPSAob3B0cz8uZW5jb2RpbmcgfHwgJ3V0Zi04JykudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCB0eXBlID0gb3B0cz8udHlwZSB8fCAndGV4dC9wbGFpbic7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFxuICAgICAgY2hhcnNldCA9PT0gJ3V0Zi04J1xuICAgICAgICA/IC8vIEFkZCBVVEYtOCBCT00gY2hhcmFjdGVyXG4gICAgICAgICAgW0ZpbGVzVXRpbHMuVVRGOF9CT01fQ0hBUiwgY29udGVudF1cbiAgICAgICAgOiAvLyBOb24gVVRGLTggY2hhcnNldFxuICAgICAgICAgIFtjb250ZW50XSxcbiAgICAgIHsgdHlwZTogYCR7dHlwZX07Y2hhcnNldD0ke2NoYXJzZXR9O2AgfVxuICAgICk7XG4gICAgYmxvYlsnbGFzdE1vZGlmaWVkRGF0ZSddID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIGJsb2JbJ25hbWUnXSA9IGZpbGVuYW1lO1xuXG4gICAgaWYgKChuYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVCbG9iKSB7XG4gICAgICAvLyBJRSAxMCtcbiAgICAgIChuYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVCbG9iKGJsb2IsIGZpbGVuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGlmIChsaW5rLmRvd25sb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gQnJvd3NlcnMgdGhhdCBzdXBwb3J0IEhUTUw1IGRvd25sb2FkIGF0dHJpYnV0ZVxuICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcbiAgICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZG93bmxvYWRVcmkodXJpOiBzdHJpbmcsIGZpbGVuYW1lPzogc3RyaW5nKSB7XG4gICAgaWYgKChuYXZpZ2F0b3IgYXMgYW55KS5tc0xhdW5jaFVyaSkge1xuICAgICAgLy8gSUUgMTArXG4gICAgICAobmF2aWdhdG9yIGFzIGFueSkubXNMYXVuY2hVcmkodXJpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZSB8fCB0aGlzLmdldEZpbGVuYW1lRnJvbVVyaSh1cmkpO1xuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGlmIChsaW5rLmRvd25sb2FkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gQnJvd3NlcnMgdGhhdCBzdXBwb3J0IEhUTUw1IGRvd25sb2FkIGF0dHJpYnV0ZVxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVyaSk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVuYW1lKTtcbiAgICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RmlsZW5hbWVGcm9tVXJpKHVyaTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHVyaT8ubGFzdEluZGV4T2YoJy8nKTtcbiAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xIHx8IGxhc3RTbGFzaEluZGV4ID09PSB1cmkubGVuZ3RoIC0gMSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFVSSSBmb3JtYXQuIE5vIHNsYXNoIGZvdW5kJyk7XG4gICAgcmV0dXJuIHVyaS5zdWJzdHJpbmcobGFzdFNsYXNoSW5kZXggKyAxKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,186 @@
1
+ import { isNilOrBlank } from '../functions';
2
+ import { Subject } from 'rxjs';
3
+ import { FileResponse } from '../upload-file/upload-file.model';
4
+ import { HttpEventType } from '@angular/common/http';
5
+ import { mergeMap } from 'rxjs/operators';
6
+ export const IMAGE_DEFAULTS = {
7
+ MAX_HEIGHT: 480,
8
+ MAX_WIDTH: 640,
9
+ THUMB_MAX_HEIGHT: 200,
10
+ THUMB_MAX_WIDTH: 200,
11
+ };
12
+ // @dynamic
13
+ export class ImagesUtils {
14
+ /**
15
+ * Parse a string like `<path>|<credit>` into an object `{image, credit}`
16
+ * @param file
17
+ **/
18
+ static getImageAndCredit(file) {
19
+ const parts = file?.split('|');
20
+ return parts
21
+ ? {
22
+ image: parts[0],
23
+ credits: parts[1],
24
+ }
25
+ : null;
26
+ }
27
+ /**
28
+ * @param files
29
+ * @deprecated Use getRandomImageWithCredit() instead
30
+ **/
31
+ static getRandomImage(files) {
32
+ const imgIndex = Math.floor(Math.random() * files.length);
33
+ return files[imgIndex];
34
+ }
35
+ static getRandomImageWithCredit(files) {
36
+ const imgIndex = Math.floor(Math.random() * files.length);
37
+ return ImagesUtils.getImageAndCredit(files[imgIndex]);
38
+ }
39
+ static readAsDataURL(file, opts) {
40
+ const $progress = new Subject();
41
+ const reader = new FileReader();
42
+ // Listen progress
43
+ reader.onprogress = (e) => {
44
+ const total = e.total || 1;
45
+ const loaded = e.total || 0;
46
+ if (loaded < total)
47
+ $progress.next({ type: HttpEventType.UploadProgress, loaded, total });
48
+ };
49
+ // Listen end
50
+ reader.onloadend = (_) => {
51
+ const body = reader.result;
52
+ if (typeof body === 'string') {
53
+ $progress.next(new FileResponse({ body }));
54
+ $progress.complete();
55
+ }
56
+ else {
57
+ console.error(`[image-utils] Cannot read file '${file.name}' as text`);
58
+ $progress.error(`Cannot read file as text`);
59
+ }
60
+ };
61
+ // Listen error
62
+ reader.onerror = (event) => {
63
+ console.error('[image-utils] Error while reading file:', event);
64
+ $progress.error(event);
65
+ };
66
+ // Start reading the file
67
+ reader.readAsDataURL(file);
68
+ // Resize image, if need
69
+ if (opts) {
70
+ return $progress.pipe(mergeMap(async (event) => {
71
+ if (event instanceof FileResponse) {
72
+ const body = await ImagesUtils.resizeBase64(event.body, opts);
73
+ return new FileResponse({ body });
74
+ }
75
+ return event;
76
+ }));
77
+ }
78
+ return $progress.asObservable();
79
+ }
80
+ static async readAndResizeFromUrl(fileUrl, opts) {
81
+ if (isNilOrBlank(fileUrl))
82
+ throw new Error('Illegal argument: missing fileUrl');
83
+ // Create the temporary image element
84
+ const img = document.createElement('img');
85
+ // Need to avoid CORS error
86
+ // (see https://stackoverflow.com/questions/22710627/tainted-canvases-may-not-be-exported)
87
+ img.crossOrigin = 'anonymous';
88
+ try {
89
+ return await new Promise((resolve, reject) => {
90
+ img.addEventListener('load', ImagesUtils.createImageOnLoadResizeFn(resolve, reject, opts), false);
91
+ img.addEventListener('error', reject);
92
+ img.src = fileUrl;
93
+ });
94
+ }
95
+ catch (err) {
96
+ throw new Error(`Failed to load and resize image {${fileUrl}}`);
97
+ }
98
+ finally {
99
+ img.remove();
100
+ }
101
+ }
102
+ static async resizeBase64(dataUrl, opts) {
103
+ // Create the temporary image element
104
+ const img = document.createElement('img');
105
+ // Need to avoid CORS error
106
+ // (see https://stackoverflow.com/questions/22710627/tainted-canvases-may-not-be-exported)
107
+ img.crossOrigin = 'anonymous';
108
+ try {
109
+ return await new Promise((resolve, reject) => {
110
+ img.addEventListener('load', ImagesUtils.createImageOnLoadResizeFn(resolve, reject, opts), false);
111
+ img.addEventListener('error', reject);
112
+ img.src = dataUrl;
113
+ });
114
+ }
115
+ finally {
116
+ img.remove();
117
+ }
118
+ }
119
+ static createImageOnLoadResizeFn(resolve, reject, opts) {
120
+ return function (event) {
121
+ const maxWidth = opts && opts.thumbnail ? IMAGE_DEFAULTS.THUMB_MAX_WIDTH : (opts && opts.maxWidth) || IMAGE_DEFAULTS.MAX_WIDTH;
122
+ const maxHeight = opts && opts.thumbnail ? IMAGE_DEFAULTS.THUMB_MAX_HEIGHT : (opts && opts.maxHeight) || IMAGE_DEFAULTS.MAX_HEIGHT;
123
+ let width = event.target.width;
124
+ let height = event.target.height;
125
+ const canvas = document.createElement('canvas');
126
+ let ctx;
127
+ try {
128
+ // Thumbnail: resize and crop (to the expected size)
129
+ if (opts && opts.thumbnail) {
130
+ // landscape
131
+ if (width > height) {
132
+ width *= maxHeight / height;
133
+ height = maxHeight;
134
+ }
135
+ // portrait
136
+ else {
137
+ height *= maxWidth / width;
138
+ width = maxWidth;
139
+ }
140
+ canvas.width = maxWidth;
141
+ canvas.height = maxHeight;
142
+ ctx = canvas.getContext('2d');
143
+ const xoffset = Math.trunc((maxWidth - width) / 2 + 0.5);
144
+ const yoffset = Math.trunc((maxHeight - height) / 2 + 0.5);
145
+ ctx.drawImage(event.target, xoffset, // x1
146
+ yoffset, // y1
147
+ maxWidth + -2 * xoffset, // x2
148
+ maxHeight + -2 * yoffset // y2
149
+ );
150
+ }
151
+ // Resize, but keep the full image
152
+ else {
153
+ // landscape
154
+ if (width > height) {
155
+ if (width > maxWidth) {
156
+ height *= maxWidth / width;
157
+ width = maxWidth;
158
+ }
159
+ }
160
+ // portrait
161
+ else {
162
+ if (height > maxHeight) {
163
+ width *= maxHeight / height;
164
+ height = maxHeight;
165
+ }
166
+ }
167
+ canvas.width = width;
168
+ canvas.height = height;
169
+ ctx = canvas.getContext('2d');
170
+ // Resize the whole image
171
+ ctx.drawImage(event.target, 0, 0, canvas.width, canvas.height);
172
+ }
173
+ // Get image content as data URL
174
+ const base64 = canvas.toDataURL();
175
+ resolve(base64);
176
+ }
177
+ catch (err) {
178
+ reject(err);
179
+ }
180
+ finally {
181
+ canvas.remove();
182
+ }
183
+ };
184
+ }
185
+ }
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS9pbWFnZXMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBYSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixVQUFVLEVBQUUsR0FBRztJQUNmLFNBQVMsRUFBRSxHQUFHO0lBQ2QsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixlQUFlLEVBQUUsR0FBRztDQUNyQixDQUFDO0FBUUYsV0FBVztBQUNYLE1BQU0sT0FBTyxXQUFXO0lBQ3RCOzs7UUFHSTtJQUNKLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFZO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTyxLQUFLO1lBQ1YsQ0FBQyxDQUFDO2dCQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNmLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2xCO1lBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7SUFFRDs7O1FBR0k7SUFDSixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWU7UUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFELE9BQU8s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QVc7eUJBQ04sQ0FBQzt3QkFDSixJQUFJLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQzs0QkFDdkIsS0FBSyxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUM7NEJBQzVCLE1BQU0sR0FBRyxTQUFTLENBQUM7d0JBQ3JCLENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDckIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7b0JBQ3ZCLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUU5Qix5QkFBeUI7b0JBQ3pCLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRSxDQUFDO2dCQUVELGdDQUFnQztnQkFDaEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNsQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEIsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsQ0FBQztvQkFBUyxDQUFDO2dCQUNULE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOaWxPckJsYW5rIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZpbGVFdmVudCwgRmlsZVJlc3BvbnNlIH0gZnJvbSAnLi4vdXBsb2FkLWZpbGUvdXBsb2FkLWZpbGUubW9kZWwnO1xuaW1wb3J0IHsgSHR0cEV2ZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY29uc3QgSU1BR0VfREVGQVVMVFMgPSB7XG4gIE1BWF9IRUlHSFQ6IDQ4MCxcbiAgTUFYX1dJRFRIOiA2NDAsXG4gIFRIVU1CX01BWF9IRUlHSFQ6IDIwMCxcbiAgVEhVTUJfTUFYX1dJRFRIOiAyMDAsXG59O1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgSW1hZ2VSZXNpemVPcHRpb25zIHtcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIG1heEhlaWdodD86IG51bWJlcjtcbiAgdGh1bWJuYWlsPzogYm9vbGVhbjtcbn1cblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBJbWFnZXNVdGlscyB7XG4gIC8qKlxuICAgKiBQYXJzZSBhIHN0cmluZyBsaWtlIGA8cGF0aD58PGNyZWRpdD5gIGludG8gYW4gb2JqZWN0IGB7aW1hZ2UsIGNyZWRpdH1gXG4gICAqIEBwYXJhbSBmaWxlXG4gICAqKi9cbiAgc3RhdGljIGdldEltYWdlQW5kQ3JlZGl0KGZpbGU6IHN0cmluZyk6IHsgaW1hZ2U6IHN0cmluZzsgY3JlZGl0czogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHBhcnRzID0gZmlsZT8uc3BsaXQoJ3wnKTtcbiAgICByZXR1cm4gcGFydHNcbiAgICAgID8ge1xuICAgICAgICAgIGltYWdlOiBwYXJ0c1swXSxcbiAgICAgICAgICBjcmVkaXRzOiBwYXJ0c1sxXSxcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBmaWxlc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgZ2V0UmFuZG9tSW1hZ2VXaXRoQ3JlZGl0KCkgaW5zdGVhZFxuICAgKiovXG4gIHN0YXRpYyBnZXRSYW5kb21JbWFnZShmaWxlczogc3RyaW5nW10pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGltZ0luZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZmlsZXMubGVuZ3RoKTtcbiAgICByZXR1cm4gZmlsZXNbaW1nSW5kZXhdO1xuICB9XG5cbiAgc3RhdGljIGdldFJhbmRvbUltYWdlV2l0aENyZWRpdChmaWxlczogc3RyaW5nW10pOiB7IGltYWdlOiBzdHJpbmc7IGNyZWRpdHM6IHN0cmluZyB9IHtcbiAgICBjb25zdCBpbWdJbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGZpbGVzLmxlbmd0aCk7XG4gICAgcmV0dXJuIEltYWdlc1V0aWxzLmdldEltYWdlQW5kQ3JlZGl0KGZpbGVzW2ltZ0luZGV4XSk7XG4gIH1cblxuICBzdGF0aWMgcmVhZEFzRGF0YVVSTChmaWxlOiBGaWxlLCBvcHRzPzogSW1hZ2VSZXNpemVPcHRpb25zKTogT2JzZXJ2YWJsZTxGaWxlRXZlbnQ8c3RyaW5nPj4ge1xuICAgIGNvbnN0ICRwcm9ncmVzcyA9IG5ldyBTdWJqZWN0PEZpbGVFdmVudDxzdHJpbmc+PigpO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAvLyBMaXN0ZW4gcHJvZ3Jlc3NcbiAgICByZWFkZXIub25wcm9ncmVzcyA9IChlOiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0b3RhbCA9IGUudG90YWwgfHwgMTtcbiAgICAgIGNvbnN0IGxvYWRlZCA9IGUudG90YWwgfHwgMDtcbiAgICAgIGlmIChsb2FkZWQgPCB0b3RhbCkgJHByb2dyZXNzLm5leHQoeyB0eXBlOiBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzLCBsb2FkZWQsIHRvdGFsIH0pO1xuICAgIH07XG5cbiAgICAvLyBMaXN0ZW4gZW5kXG4gICAgcmVhZGVyLm9ubG9hZGVuZCA9IChfOiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zdCBib2R5ID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgJHByb2dyZXNzLm5leHQobmV3IEZpbGVSZXNwb25zZSh7IGJvZHkgfSkpO1xuICAgICAgICAkcHJvZ3Jlc3MuY29tcGxldGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtpbWFnZS11dGlsc10gQ2Fubm90IHJlYWQgZmlsZSAnJHtmaWxlLm5hbWV9JyBhcyB0ZXh0YCk7XG4gICAgICAgICRwcm9ncmVzcy5lcnJvcihgQ2Fubm90IHJlYWQgZmlsZSBhcyB0ZXh0YCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIExpc3RlbiBlcnJvclxuICAgIHJlYWRlci5vbmVycm9yID0gKGV2ZW50OiBQcm9ncmVzc0V2ZW50KSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbaW1hZ2UtdXRpbHNdIEVycm9yIHdoaWxlIHJlYWRpbmcgZmlsZTonLCBldmVudCk7XG4gICAgICAkcHJvZ3Jlc3MuZXJyb3IoZXZlbnQpO1xuICAgIH07XG5cbiAgICAvLyBTdGFydCByZWFkaW5nIHRoZSBmaWxlXG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cbiAgICAvLyBSZXNpemUgaW1hZ2UsIGlmIG5lZWRcbiAgICBpZiAob3B0cykge1xuICAgICAgcmV0dXJuICRwcm9ncmVzcy5waXBlKFxuICAgICAgICBtZXJnZU1hcChhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBGaWxlUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBJbWFnZXNVdGlscy5yZXNpemVCYXNlNjQoZXZlbnQuYm9keSwgb3B0cyk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVSZXNwb25zZSh7IGJvZHkgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuICRwcm9ncmVzcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyByZWFkQW5kUmVzaXplRnJvbVVybChmaWxlVXJsOiBzdHJpbmcsIG9wdHM/OiBJbWFnZVJlc2l6ZU9wdGlvbnMpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmIChpc05pbE9yQmxhbmsoZmlsZVVybCkpIHRocm93IG5ldyBFcnJvcignSWxsZWdhbCBhcmd1bWVudDogbWlzc2luZyBmaWxlVXJsJyk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIHRlbXBvcmFyeSBpbWFnZSBlbGVtZW50XG4gICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICAvLyBOZWVkIHRvIGF2b2lkIENPUlMgZXJyb3JcbiAgICAvLyAoc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIyNzEwNjI3L3RhaW50ZWQtY2FudmFzZXMtbWF5LW5vdC1iZS1leHBvcnRlZClcbiAgICBpbWcuY3Jvc3NPcmlnaW4gPSAnYW5vbnltb3VzJztcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgSW1hZ2VzVXRpbHMuY3JlYXRlSW1hZ2VPbkxvYWRSZXNpemVGbihyZXNvbHZlLCByZWplY3QsIG9wdHMpLCBmYWxzZSk7XG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIGltZy5zcmMgPSBmaWxlVXJsO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBsb2FkIGFuZCByZXNpemUgaW1hZ2UgeyR7ZmlsZVVybH19YCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGltZy5yZW1vdmUoKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcmVzaXplQmFzZTY0KGRhdGFVcmw6IHN0cmluZywgb3B0cz86IEltYWdlUmVzaXplT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gQ3JlYXRlIHRoZSB0ZW1wb3JhcnkgaW1hZ2UgZWxlbWVudFxuICAgIGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgLy8gTmVlZCB0byBhdm9pZCBDT1JTIGVycm9yXG4gICAgLy8gKHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMjcxMDYyNy90YWludGVkLWNhbnZhc2VzLW1heS1ub3QtYmUtZXhwb3J0ZWQpXG4gICAgaW1nLmNyb3NzT3JpZ2luID0gJ2Fub255bW91cyc7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIEltYWdlc1V0aWxzLmNyZWF0ZUltYWdlT25Mb2FkUmVzaXplRm4ocmVzb2x2ZSwgcmVqZWN0LCBvcHRzKSwgZmFsc2UpO1xuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWplY3QpO1xuICAgICAgICBpbWcuc3JjID0gZGF0YVVybDtcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpbWcucmVtb3ZlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBjcmVhdGVJbWFnZU9uTG9hZFJlc2l6ZUZuKHJlc29sdmUsIHJlamVjdCwgb3B0cz86IEltYWdlUmVzaXplT3B0aW9ucykge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGNvbnN0IG1heFdpZHRoID0gb3B0cyAmJiBvcHRzLnRodW1ibmFpbCA/IElNQUdFX0RFRkFVTFRTLlRIVU1CX01BWF9XSURUSCA6IChvcHRzICYmIG9wdHMubWF4V2lkdGgpIHx8IElNQUdFX0RFRkFVTFRTLk1BWF9XSURUSDtcbiAgICAgIGNvbnN0IG1heEhlaWdodCA9IG9wdHMgJiYgb3B0cy50aHVtYm5haWwgPyBJTUFHRV9ERUZBVUxUUy5USFVNQl9NQVhfSEVJR0hUIDogKG9wdHMgJiYgb3B0cy5tYXhIZWlnaHQpIHx8IElNQUdFX0RFRkFVTFRTLk1BWF9IRUlHSFQ7XG4gICAgICBsZXQgd2lkdGggPSBldmVudC50YXJnZXQud2lkdGg7XG4gICAgICBsZXQgaGVpZ2h0ID0gZXZlbnQudGFyZ2V0LmhlaWdodDtcblxuICAgICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICBsZXQgY3R4O1xuXG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaHVtYm5haWw6IHJlc2l6ZSBhbmQgY3JvcCAodG8gdGhlIGV4cGVjdGVkIHNpemUpXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudGh1bWJuYWlsKSB7XG4gICAgICAgICAgLy8gbGFuZHNjYXBlXG4gICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICB3aWR0aCAqPSBtYXhIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICBoZWlnaHQgPSBtYXhIZWlnaHQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gcG9ydHJhaXRcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGhlaWdodCAqPSBtYXhXaWR0aCAvIHdpZHRoO1xuICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FudmFzLndpZHRoID0gbWF4V2lkdGg7XG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IG1heEhlaWdodDtcbiAgICAgICAgICBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICBjb25zdCB4b2Zmc2V0ID0gTWF0aC50cnVuYygobWF4V2lkdGggLSB3aWR0aCkgLyAyICsgMC41KTtcbiAgICAgICAgICBjb25zdCB5b2Zmc2V0ID0gTWF0aC50cnVuYygobWF4SGVpZ2h0IC0gaGVpZ2h0KSAvIDIgKyAwLjUpO1xuICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoXG4gICAgICAgICAgICBldmVudC50YXJnZXQsXG4gICAgICAgICAgICB4b2Zmc2V0LCAvLyB4MVxuICAgICAgICAgICAgeW9mZnNldCwgLy8geTFcbiAgICAgICAgICAgIG1heFdpZHRoICsgLTIgKiB4b2Zmc2V0LCAvLyB4MlxuICAgICAgICAgICAgbWF4SGVpZ2h0ICsgLTIgKiB5b2Zmc2V0IC8vIHkyXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc2l6ZSwgYnV0IGtlZXAgdGhlIGZ1bGwgaW1hZ2VcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgLy8gbGFuZHNjYXBlXG4gICAgICAgICAgaWYgKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgICBpZiAod2lkdGggPiBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICBoZWlnaHQgKj0gbWF4V2lkdGggLyB3aWR0aDtcbiAgICAgICAgICAgICAgd2lkdGggPSBtYXhXaWR0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBwb3J0cmFpdFxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGhlaWdodCA+IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICB3aWR0aCAqPSBtYXhIZWlnaHQgLyBoZWlnaHQ7XG4gICAgICAgICAgICAgIGhlaWdodCA9IG1heEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICAgIGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gICAgICAgICAgLy8gUmVzaXplIHRoZSB3aG9sZSBpbWFnZVxuICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoZXZlbnQudGFyZ2V0LCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2V0IGltYWdlIGNvbnRlbnQgYXMgZGF0YSBVUkxcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gY2FudmFzLnRvRGF0YVVSTCgpO1xuICAgICAgICByZXNvbHZlKGJhc2U2NCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjYW52YXMucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,58 @@
1
+ import { FilesUtils } from './file.utils';
2
+ import { FileResponse } from '../upload-file/upload-file.model';
3
+ import { filter, map } from 'rxjs/operators';
4
+ import { HttpEventType } from '@angular/common/http';
5
+ import { isNil, isNotNil } from '../functions';
6
+ import { stringToU8a } from '@polkadot/util';
7
+ //@dynamic
8
+ export class JsonUtils {
9
+ static DEFAULT_ENCODING = 'UTF-8';
10
+ static exportToFile(content, opts) {
11
+ if (isNil(content))
12
+ return; // Skip if empty
13
+ // Create text content
14
+ const textContent = content === 'string' ? content : JSON.stringify(content);
15
+ // Write to file
16
+ FilesUtils.writeTextToFile(textContent, {
17
+ type: 'application/json',
18
+ filename: 'export.json',
19
+ ...opts,
20
+ });
21
+ }
22
+ static writeToFile(content, opts) {
23
+ if (!content || typeof content !== 'object')
24
+ return; // Skip if empty
25
+ opts = {
26
+ type: 'application/json',
27
+ filename: 'export.json',
28
+ ...opts,
29
+ };
30
+ // Create text content
31
+ const arrayUt8 = stringToU8a(JSON.stringify(content));
32
+ const blob = new Blob([arrayUt8], { type: opts.type });
33
+ blob['lastModifiedDate'] = new Date().toISOString();
34
+ blob['name'] = opts.filename;
35
+ return blob;
36
+ }
37
+ static parseFile(file, opts) {
38
+ return FilesUtils.readAsText(file, opts?.encoding).pipe(map((e) => {
39
+ if (e.type === HttpEventType.UploadProgress) {
40
+ const loaded = Math.round(e.loaded * 0.8);
41
+ return { ...e, loaded };
42
+ }
43
+ else if (e instanceof FileResponse) {
44
+ const body = e.body;
45
+ const data = JSON.parse(body);
46
+ return new FileResponse({ body: data });
47
+ }
48
+ }), filter(isNotNil));
49
+ }
50
+ static getLocalizedEncoding(translate, defaultEncoding = JsonUtils.DEFAULT_ENCODING) {
51
+ const key = 'FILE.JSON.ENCODING';
52
+ const encoding = translate?.instant(key);
53
+ if (encoding && encoding !== key)
54
+ return encoding;
55
+ return defaultEncoding;
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2ZpbGUvanNvbi51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFDLE9BQU8sRUFBYSxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0MsVUFBVTtBQUNWLE1BQU0sT0FBTyxTQUFTO0lBQ3BCLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUM7SUFFbEMsTUFBTSxDQUFDLFlBQVksQ0FDakIsT0FBWSxFQUNaLElBSUM7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLENBQUMsZ0JBQWdCO1FBRTVDLHNCQUFzQjtRQUN0QixNQUFNLFdBQVcsR0FBRyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0UsZ0JBQWdCO1FBQ2hCLFVBQVUsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFO1lBQ3RDLElBQUksRUFBRSxrQkFBa0I7WUFDeEIsUUFBUSxFQUFFLGFBQWE7WUFDdkIsR0FBRyxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQ2hCLE9BQVksRUFDWixJQUdDO1FBRUQsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRO1lBQUUsT0FBTyxDQUFDLGdCQUFnQjtRQUVyRSxJQUFJLEdBQUc7WUFDTCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLEdBQUcsSUFBSTtTQUNSLENBQUM7UUFFRixzQkFBc0I7UUFDdEIsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUV0RCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFFN0IsT0FBYSxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQVUsSUFBVSxFQUFFLElBQTRCO1FBQ2hFLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDckQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQzFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMxQixDQUFDO2lCQUFNLElBQUksQ0FBQyxZQUFZLFlBQVksRUFBRSxDQUFDO2dCQUNyQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBTSxDQUFDO2dCQUNuQyxPQUFPLElBQUksWUFBWSxDQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsb0JBQW9CLENBQUMsU0FBMkIsRUFBRSxlQUFlLEdBQUcsU0FBUyxDQUFDLGdCQUFnQjtRQUNuRyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksUUFBUSxJQUFJLFFBQVEsS0FBSyxHQUFHO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFDbEQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGVzVXRpbHMgfSBmcm9tICcuL2ZpbGUudXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsZUV2ZW50LCBGaWxlUmVzcG9uc2UgfSBmcm9tICcuLi91cGxvYWQtZmlsZS91cGxvYWQtZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFdmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpc05pbCwgaXNOb3ROaWwgfSBmcm9tICcuLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgc3RyaW5nVG9VOGEgfSBmcm9tICdAcG9sa2Fkb3QvdXRpbCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbi8vQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBKc29uVXRpbHMge1xuICBzdGF0aWMgREVGQVVMVF9FTkNPRElORyA9ICdVVEYtOCc7XG5cbiAgc3RhdGljIGV4cG9ydFRvRmlsZShcbiAgICBjb250ZW50OiBhbnksXG4gICAgb3B0cz86IHtcbiAgICAgIGZpbGVuYW1lPzogc3RyaW5nO1xuICAgICAgZW5jb2Rpbmc/OiBzdHJpbmc7XG4gICAgICB0eXBlPzogc3RyaW5nO1xuICAgIH1cbiAgKSB7XG4gICAgaWYgKGlzTmlsKGNvbnRlbnQpKSByZXR1cm47IC8vIFNraXAgaWYgZW1wdHlcblxuICAgIC8vIENyZWF0ZSB0ZXh0IGNvbnRlbnRcbiAgICBjb25zdCB0ZXh0Q29udGVudCA9IGNvbnRlbnQgPT09ICdzdHJpbmcnID8gY29udGVudCA6IEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpO1xuXG4gICAgLy8gV3JpdGUgdG8gZmlsZVxuICAgIEZpbGVzVXRpbHMud3JpdGVUZXh0VG9GaWxlKHRleHRDb250ZW50LCB7XG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBmaWxlbmFtZTogJ2V4cG9ydC5qc29uJyxcbiAgICAgIC4uLm9wdHMsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgd3JpdGVUb0ZpbGUoXG4gICAgY29udGVudDogYW55LFxuICAgIG9wdHM/OiB7XG4gICAgICBmaWxlbmFtZT86IHN0cmluZztcbiAgICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgfVxuICApIHtcbiAgICBpZiAoIWNvbnRlbnQgfHwgdHlwZW9mIGNvbnRlbnQgIT09ICdvYmplY3QnKSByZXR1cm47IC8vIFNraXAgaWYgZW1wdHlcblxuICAgIG9wdHMgPSB7XG4gICAgICB0eXBlOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICBmaWxlbmFtZTogJ2V4cG9ydC5qc29uJyxcbiAgICAgIC4uLm9wdHMsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSB0ZXh0IGNvbnRlbnRcbiAgICBjb25zdCBhcnJheVV0OCA9IHN0cmluZ1RvVThhKEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpKTtcblxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYXJyYXlVdDhdLCB7IHR5cGU6IG9wdHMudHlwZSB9KTtcbiAgICBibG9iWydsYXN0TW9kaWZpZWREYXRlJ10gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgYmxvYlsnbmFtZSddID0gb3B0cy5maWxlbmFtZTtcblxuICAgIHJldHVybiA8RmlsZT5ibG9iO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlRmlsZTxUID0gYW55PihmaWxlOiBGaWxlLCBvcHRzPzogeyBlbmNvZGluZz86IHN0cmluZyB9KTogT2JzZXJ2YWJsZTxGaWxlRXZlbnQ8VD4+IHtcbiAgICByZXR1cm4gRmlsZXNVdGlscy5yZWFkQXNUZXh0KGZpbGUsIG9wdHM/LmVuY29kaW5nKS5waXBlKFxuICAgICAgbWFwKChlKSA9PiB7XG4gICAgICAgIGlmIChlLnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICBjb25zdCBsb2FkZWQgPSBNYXRoLnJvdW5kKGUubG9hZGVkICogMC44KTtcbiAgICAgICAgICByZXR1cm4geyAuLi5lLCBsb2FkZWQgfTtcbiAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgRmlsZVJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgYm9keSA9IGUuYm9keTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShib2R5KSBhcyBUO1xuICAgICAgICAgIHJldHVybiBuZXcgRmlsZVJlc3BvbnNlPFQ+KHsgYm9keTogZGF0YSB9KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaWx0ZXIoaXNOb3ROaWwpXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2NhbGl6ZWRFbmNvZGluZyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGRlZmF1bHRFbmNvZGluZyA9IEpzb25VdGlscy5ERUZBVUxUX0VOQ09ESU5HKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXkgPSAnRklMRS5KU09OLkVOQ09ESU5HJztcbiAgICBjb25zdCBlbmNvZGluZyA9IHRyYW5zbGF0ZT8uaW5zdGFudChrZXkpO1xuICAgIGlmIChlbmNvZGluZyAmJiBlbmNvZGluZyAhPT0ga2V5KSByZXR1cm4gZW5jb2Rpbmc7XG4gICAgcmV0dXJuIGRlZmF1bHRFbmNvZGluZztcbiAgfVxufVxuIl19
@@ -0,0 +1,29 @@
1
+ export class UriUtils {
2
+ /**
3
+ * Extract the filename, from an uri (using the last slash)
4
+ *
5
+ * @param uri
6
+ */
7
+ static getFilename(uri) {
8
+ if (!uri)
9
+ return uri;
10
+ let filename = uri.trim();
11
+ // Get last part (or all string, if no '/')
12
+ const lastSlashIndex = filename.lastIndexOf('/');
13
+ if (lastSlashIndex !== -1 && lastSlashIndex !== uri.length - 1) {
14
+ filename = filename.substring(lastSlashIndex + 1);
15
+ }
16
+ // Remove query params
17
+ const queryParamIndex = filename.indexOf('?');
18
+ if (queryParamIndex !== -1) {
19
+ filename = filename.substring(0, queryParamIndex);
20
+ }
21
+ // Remove fragment
22
+ const fragmentParamIndex = filename.indexOf('#');
23
+ if (fragmentParamIndex !== -1) {
24
+ filename = filename.substring(0, fragmentParamIndex);
25
+ }
26
+ return filename;
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZmlsZS91cmkudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFFBQVE7SUFDbkI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBVztRQUM1QixJQUFJLENBQUMsR0FBRztZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3JCLElBQUksUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUxQiwyQ0FBMkM7UUFDM0MsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsSUFBSSxjQUFjLEtBQUssR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksZUFBZSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDM0IsUUFBUSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFFRCxrQkFBa0I7UUFDbEIsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksa0JBQWtCLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5QixRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFVyaVV0aWxzIHtcbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIGZpbGVuYW1lLCBmcm9tIGFuIHVyaSAodXNpbmcgdGhlIGxhc3Qgc2xhc2gpXG4gICAqXG4gICAqIEBwYXJhbSB1cmlcbiAgICovXG4gIHN0YXRpYyBnZXRGaWxlbmFtZSh1cmk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF1cmkpIHJldHVybiB1cmk7XG4gICAgbGV0IGZpbGVuYW1lID0gdXJpLnRyaW0oKTtcblxuICAgIC8vIEdldCBsYXN0IHBhcnQgKG9yIGFsbCBzdHJpbmcsIGlmIG5vICcvJylcbiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IGZpbGVuYW1lLmxhc3RJbmRleE9mKCcvJyk7XG4gICAgaWYgKGxhc3RTbGFzaEluZGV4ICE9PSAtMSAmJiBsYXN0U2xhc2hJbmRleCAhPT0gdXJpLmxlbmd0aCAtIDEpIHtcbiAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKGxhc3RTbGFzaEluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHF1ZXJ5IHBhcmFtc1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1JbmRleCA9IGZpbGVuYW1lLmluZGV4T2YoJz8nKTtcbiAgICBpZiAocXVlcnlQYXJhbUluZGV4ICE9PSAtMSkge1xuICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgcXVlcnlQYXJhbUluZGV4KTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgZnJhZ21lbnRcbiAgICBjb25zdCBmcmFnbWVudFBhcmFtSW5kZXggPSBmaWxlbmFtZS5pbmRleE9mKCcjJyk7XG4gICAgaWYgKGZyYWdtZW50UGFyYW1JbmRleCAhPT0gLTEpIHtcbiAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIGZyYWdtZW50UGFyYW1JbmRleCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGVuYW1lO1xuICB9XG59XG4iXX0=