@sumaris-net/ngx-components 2.18.0-beta9 → 2.21.0-rc1

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 (715) hide show
  1. package/README.md +3 -0
  2. package/doc/build.md +14 -14
  3. package/doc/changelog.md +1386 -88
  4. package/doc/feed/feed-en.json +26 -0
  5. package/doc/feed/feed-fr.json +28 -0
  6. package/fesm2022/sumaris-net.ngx-components.mjs +32423 -22727
  7. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  8. package/package.json +42 -39
  9. package/src/assets/environments/environment-test.json +2 -2
  10. package/src/assets/i18n/en-US.json +143 -45
  11. package/src/assets/i18n/en.json +142 -43
  12. package/src/assets/i18n/fr.json +147 -47
  13. package/src/assets/manifest.json +1 -1
  14. package/src/theme/_icons.scss +8 -12
  15. package/src/theme/_ionic.globals.scss +8 -1
  16. package/src/theme/_markdown.scss +1 -1
  17. package/src/theme/_material.globals.scss +4 -1
  18. package/src/theme/_material.scss +60 -17
  19. package/src/theme/_mixins.scss +39 -4
  20. package/src/theme/_ngx-components.forms.scss +115 -89
  21. package/src/theme/_ngx-components.globals.scss +4 -1
  22. package/src/theme/_ngx-components.scss +162 -110
  23. package/src/theme/_ngx-components.table.scss +105 -44
  24. package/src/theme/_ngx-components.tabs.scss +46 -14
  25. package/src/theme/_responsive.scss +15 -0
  26. package/src/theme/_roboto.scss +3 -0
  27. package/src/theme/_theme.scss +11 -14
  28. package/src/theme/_theme.variables.scss +7 -3
  29. package/src/theme/ionic/ionic.functions.color.scss +13 -5
  30. package/src/theme/ionic/ionic.globals.scss +4 -4
  31. package/src/theme/ionic/ionic.theme.default.scss +2 -0
  32. package/types/sumaris-net.ngx-components.d.ts +14132 -0
  33. package/esm2022/public_api.mjs +0 -358
  34. package/esm2022/src/app/admin/admin-routing.module.mjs +0 -34
  35. package/esm2022/src/app/admin/admin.module.mjs +0 -32
  36. package/esm2022/src/app/admin/services/filter/person.filter.mjs +0 -69
  37. package/esm2022/src/app/admin/services/person.service.mjs +0 -174
  38. package/esm2022/src/app/admin/services/validator/person.validator.mjs +0 -72
  39. package/esm2022/src/app/admin/users/users.mjs +0 -267
  40. package/esm2022/src/app/admin/users/users.module.mjs +0 -56
  41. package/esm2022/src/app/core/about/about.modal.mjs +0 -84
  42. package/esm2022/src/app/core/about/about.module.mjs +0 -21
  43. package/esm2022/src/app/core/account/account.module.mjs +0 -68
  44. package/esm2022/src/app/core/account/account.page.mjs +0 -351
  45. package/esm2022/src/app/core/account/new-token.modal.mjs +0 -132
  46. package/esm2022/src/app/core/account/password/change-password.form.mjs +0 -60
  47. package/esm2022/src/app/core/account/password/change-password.module.mjs +0 -22
  48. package/esm2022/src/app/core/account/password/change-password.page.mjs +0 -144
  49. package/esm2022/src/app/core/account/token.table.mjs +0 -152
  50. package/esm2022/src/app/core/auth/auth.form.mjs +0 -159
  51. package/esm2022/src/app/core/auth/auth.modal.mjs +0 -76
  52. package/esm2022/src/app/core/auth/auth.module.mjs +0 -56
  53. package/esm2022/src/app/core/auth/reset-password.modal.mjs +0 -77
  54. package/esm2022/src/app/core/core.module.mjs +0 -151
  55. package/esm2022/src/app/core/core.testing.module.mjs +0 -107
  56. package/esm2022/src/app/core/form/array/form-array.mjs +0 -325
  57. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +0 -23
  58. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +0 -94
  59. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -108
  60. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +0 -31
  61. package/esm2022/src/app/core/form/entity/editor.class.mjs +0 -265
  62. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -420
  63. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +0 -731
  64. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +0 -24
  65. package/esm2022/src/app/core/form/entity/entity.module.mjs +0 -32
  66. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +0 -194
  67. package/esm2022/src/app/core/form/form-container.class.mjs +0 -327
  68. package/esm2022/src/app/core/form/form.class.mjs +0 -336
  69. package/esm2022/src/app/core/form/form.module.mjs +0 -70
  70. package/esm2022/src/app/core/form/form.utils.mjs +0 -197
  71. package/esm2022/src/app/core/form/list/list.form.mjs +0 -235
  72. package/esm2022/src/app/core/form/list/list.module.mjs +0 -31
  73. package/esm2022/src/app/core/form/properties/properties.form.mjs +0 -225
  74. package/esm2022/src/app/core/form/properties/properties.module.mjs +0 -37
  75. package/esm2022/src/app/core/form/properties/properties.table.mjs +0 -268
  76. package/esm2022/src/app/core/form/properties/properties.utils.mjs +0 -60
  77. package/esm2022/src/app/core/form/properties/property.validator.mjs +0 -38
  78. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +0 -95
  79. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +0 -23
  80. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -73
  81. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +0 -30
  82. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +0 -152
  83. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +0 -31
  84. package/esm2022/src/app/core/form/username/username.form.mjs +0 -52
  85. package/esm2022/src/app/core/form/username/username.module.mjs +0 -20
  86. package/esm2022/src/app/core/graphql/graphql.module.mjs +0 -14
  87. package/esm2022/src/app/core/graphql/graphql.service.mjs +0 -783
  88. package/esm2022/src/app/core/graphql/graphql.utils.mjs +0 -119
  89. package/esm2022/src/app/core/home/home.mjs +0 -311
  90. package/esm2022/src/app/core/home/home.module.mjs +0 -42
  91. package/esm2022/src/app/core/icon/icon.component.mjs +0 -40
  92. package/esm2022/src/app/core/icon/icon.module.mjs +0 -20
  93. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +0 -354
  94. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +0 -31
  95. package/esm2022/src/app/core/menu/menu.component.mjs +0 -263
  96. package/esm2022/src/app/core/menu/menu.model.mjs +0 -272
  97. package/esm2022/src/app/core/menu/menu.module.mjs +0 -47
  98. package/esm2022/src/app/core/menu/menu.service.mjs +0 -655
  99. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +0 -109
  100. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +0 -49
  101. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +0 -157
  102. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +0 -60
  103. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +0 -28
  104. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +0 -31
  105. package/esm2022/src/app/core/peer/select-peer.modal.mjs +0 -203
  106. package/esm2022/src/app/core/peer/select-peer.module.mjs +0 -30
  107. package/esm2022/src/app/core/register/register-confirm.page.mjs +0 -90
  108. package/esm2022/src/app/core/register/register.form.mjs +0 -194
  109. package/esm2022/src/app/core/register/register.modal.mjs +0 -55
  110. package/esm2022/src/app/core/register/register.module.mjs +0 -23
  111. package/esm2022/src/app/core/services/account.service.mjs +0 -1346
  112. package/esm2022/src/app/core/services/auth-guard.service.mjs +0 -74
  113. package/esm2022/src/app/core/services/base-entity-service.class.mjs +0 -473
  114. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +0 -230
  115. package/esm2022/src/app/core/services/base58.mjs +0 -83
  116. package/esm2022/src/app/core/services/config/core.config.mjs +0 -233
  117. package/esm2022/src/app/core/services/config.service.mjs +0 -384
  118. package/esm2022/src/app/core/services/crypto.service.mjs +0 -107
  119. package/esm2022/src/app/core/services/errors.mjs +0 -52
  120. package/esm2022/src/app/core/services/local-settings.service.mjs +0 -482
  121. package/esm2022/src/app/core/services/model/account.model.mjs +0 -150
  122. package/esm2022/src/app/core/services/model/config.model.mjs +0 -107
  123. package/esm2022/src/app/core/services/model/department.model.mjs +0 -35
  124. package/esm2022/src/app/core/services/model/entity.decorators.mjs +0 -97
  125. package/esm2022/src/app/core/services/model/entity.model.mjs +0 -224
  126. package/esm2022/src/app/core/services/model/filter.model.mjs +0 -93
  127. package/esm2022/src/app/core/services/model/history.model.mjs +0 -2
  128. package/esm2022/src/app/core/services/model/model.enum.mjs +0 -11
  129. package/esm2022/src/app/core/services/model/peer.model.mjs +0 -93
  130. package/esm2022/src/app/core/services/model/person.model.mjs +0 -114
  131. package/esm2022/src/app/core/services/model/referential.model.mjs +0 -202
  132. package/esm2022/src/app/core/services/model/settings.model.mjs +0 -4
  133. package/esm2022/src/app/core/services/model/token.model.mjs +0 -56
  134. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +0 -195
  135. package/esm2022/src/app/core/services/network.service.mjs +0 -631
  136. package/esm2022/src/app/core/services/network.types.mjs +0 -20
  137. package/esm2022/src/app/core/services/network.utils.mjs +0 -15
  138. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +0 -38
  139. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +0 -23
  140. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +0 -23
  141. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +0 -54
  142. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +0 -21
  143. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +0 -37
  144. package/esm2022/src/app/core/services/platform.service.mjs +0 -583
  145. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +0 -427
  146. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +0 -449
  147. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +0 -25
  148. package/esm2022/src/app/core/services/testing/referential.validator.mjs +0 -46
  149. package/esm2022/src/app/core/services/validator/account.validator.mjs +0 -45
  150. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +0 -49
  151. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +0 -81
  152. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +0 -27
  153. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +0 -55
  154. package/esm2022/src/app/core/settings/settings.module.mjs +0 -22
  155. package/esm2022/src/app/core/settings/settings.page.mjs +0 -341
  156. package/esm2022/src/app/core/table/async-table.class.mjs +0 -1753
  157. package/esm2022/src/app/core/table/column/actions-column.component.mjs +0 -127
  158. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +0 -117
  159. package/esm2022/src/app/core/table/column/row-field.component.mjs +0 -116
  160. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +0 -384
  161. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +0 -401
  162. package/esm2022/src/app/core/table/memory-table.class.mjs +0 -57
  163. package/esm2022/src/app/core/table/table-select-columns.component.mjs +0 -46
  164. package/esm2022/src/app/core/table/table.class.mjs +0 -1816
  165. package/esm2022/src/app/core/table/table.model.mjs +0 -16
  166. package/esm2022/src/app/core/table/table.module.mjs +0 -51
  167. package/esm2022/src/app/core/table/table.pipes.mjs +0 -77
  168. package/esm2022/src/app/core/table/table.utils.mjs +0 -31
  169. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +0 -32
  170. package/esm2022/src/app/core/table/testing/table.testing.mjs +0 -329
  171. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +0 -25
  172. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +0 -25
  173. package/esm2022/src/app/core/table/testing/table2.testing.mjs +0 -273
  174. package/esm2022/src/app/shared/alerts.mjs +0 -243
  175. package/esm2022/src/app/shared/audio/audio.mjs +0 -249
  176. package/esm2022/src/app/shared/audio/audio.testing.mjs +0 -32
  177. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +0 -30
  178. package/esm2022/src/app/shared/capacitor/keyboard.mjs +0 -42
  179. package/esm2022/src/app/shared/capacitor/plugins.mjs +0 -9
  180. package/esm2022/src/app/shared/constants.mjs +0 -16
  181. package/esm2022/src/app/shared/dates.mjs +0 -151
  182. package/esm2022/src/app/shared/debug/debug-service.class.mjs +0 -3
  183. package/esm2022/src/app/shared/debug/debug.component.mjs +0 -40
  184. package/esm2022/src/app/shared/debug/debug.module.mjs +0 -23
  185. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +0 -91
  186. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +0 -32
  187. package/esm2022/src/app/shared/directives/directives.module.mjs +0 -22
  188. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +0 -52
  189. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +0 -33
  190. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +0 -62
  191. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +0 -45
  192. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +0 -17
  193. package/esm2022/src/app/shared/events.mjs +0 -63
  194. package/esm2022/src/app/shared/file/csv.utils.mjs +0 -92
  195. package/esm2022/src/app/shared/file/file.service.mjs +0 -118
  196. package/esm2022/src/app/shared/file/file.utils.mjs +0 -115
  197. package/esm2022/src/app/shared/file/images.utils.mjs +0 -186
  198. package/esm2022/src/app/shared/file/json.utils.mjs +0 -58
  199. package/esm2022/src/app/shared/file/uri.utils.mjs +0 -24
  200. package/esm2022/src/app/shared/focusable.mjs +0 -6
  201. package/esm2022/src/app/shared/form/field.component.mjs +0 -379
  202. package/esm2022/src/app/shared/form/field.model.mjs +0 -25
  203. package/esm2022/src/app/shared/form/loading-spinner.mjs +0 -35
  204. package/esm2022/src/app/shared/forms.mjs +0 -480
  205. package/esm2022/src/app/shared/functions.mjs +0 -551
  206. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +0 -82
  207. package/esm2022/src/app/shared/gesture/gesture-config.mjs +0 -46
  208. package/esm2022/src/app/shared/gesture/hammer.utils.mjs +0 -2
  209. package/esm2022/src/app/shared/graph/colors.utils.mjs +0 -60
  210. package/esm2022/src/app/shared/graph/graph-colors.mjs +0 -213
  211. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +0 -59
  212. package/esm2022/src/app/shared/help/help.modal.mjs +0 -63
  213. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
  214. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +0 -112
  215. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +0 -24
  216. package/esm2022/src/app/shared/http/http.utils.mjs +0 -56
  217. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +0 -388
  218. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +0 -62
  219. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -26
  220. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -87
  221. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -37
  222. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +0 -59
  223. package/esm2022/src/app/shared/image/image.model.mjs +0 -2
  224. package/esm2022/src/app/shared/image/image.module.mjs +0 -24
  225. package/esm2022/src/app/shared/image/image.service.mjs +0 -106
  226. package/esm2022/src/app/shared/inputs.mjs +0 -263
  227. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
  228. package/esm2022/src/app/shared/logging/log-level.model.mjs +0 -48
  229. package/esm2022/src/app/shared/logging/logger.model.mjs +0 -47
  230. package/esm2022/src/app/shared/logging/logging-service.class.mjs +0 -125
  231. package/esm2022/src/app/shared/logging/logging-service.config.mjs +0 -2
  232. package/esm2022/src/app/shared/logging/logging-service.module.mjs +0 -30
  233. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -46
  234. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -1071
  235. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -79
  236. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -18
  237. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -231
  238. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +0 -251
  239. package/esm2022/src/app/shared/material/badge/badge.module.mjs +0 -20
  240. package/esm2022/src/app/shared/material/badge/badge.test.mjs +0 -42
  241. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +0 -71
  242. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +0 -376
  243. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +0 -61
  244. package/esm2022/src/app/shared/material/chips/chips.module.mjs +0 -75
  245. package/esm2022/src/app/shared/material/chips/material.chips.mjs +0 -779
  246. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +0 -147
  247. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +0 -76
  248. package/esm2022/src/app/shared/material/datetime/material.date.mjs +0 -471
  249. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +0 -457
  250. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +0 -681
  251. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -136
  252. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -127
  253. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -118
  254. package/esm2022/src/app/shared/material/duration/duration.module.mjs +0 -65
  255. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +0 -33
  256. package/esm2022/src/app/shared/material/duration/material.duration.mjs +0 -274
  257. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +0 -80
  258. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +0 -313
  259. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +0 -381
  260. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +0 -67
  261. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -118
  262. package/esm2022/src/app/shared/material/material.animations.mjs +0 -143
  263. package/esm2022/src/app/shared/material/material.config.mjs +0 -3
  264. package/esm2022/src/app/shared/material/material.module.mjs +0 -229
  265. package/esm2022/src/app/shared/material/material.testing.module.mjs +0 -234
  266. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -51
  267. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -23
  268. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +0 -375
  269. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +0 -52
  270. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -67
  271. package/esm2022/src/app/shared/material/testing/common.test.mjs +0 -111
  272. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +0 -42
  273. package/esm2022/src/app/shared/material/text/text-form.component.mjs +0 -204
  274. package/esm2022/src/app/shared/material/text/text-form.module.mjs +0 -63
  275. package/esm2022/src/app/shared/modules.mjs +0 -12
  276. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -303
  277. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +0 -49
  278. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +0 -24
  279. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +0 -69
  280. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +0 -74
  281. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +0 -28
  282. package/esm2022/src/app/shared/observables.mjs +0 -100
  283. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +0 -156
  284. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +0 -24
  285. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +0 -29
  286. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -49
  287. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +0 -72
  288. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +0 -28
  289. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +0 -36
  290. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +0 -53
  291. package/esm2022/src/app/shared/pipes/form.pipes.mjs +0 -219
  292. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +0 -48
  293. package/esm2022/src/app/shared/pipes/html.pipes.mjs +0 -52
  294. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +0 -42
  295. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +0 -63
  296. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +0 -67
  297. package/esm2022/src/app/shared/pipes/math.pipes.mjs +0 -59
  298. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +0 -19
  299. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +0 -30
  300. package/esm2022/src/app/shared/pipes/pipes.module.mjs +0 -236
  301. package/esm2022/src/app/shared/pipes/property.pipes.mjs +0 -136
  302. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +0 -180
  303. package/esm2022/src/app/shared/pipes/string.pipes.mjs +0 -136
  304. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +0 -44
  305. package/esm2022/src/app/shared/pipes/types.pipes.mjs +0 -74
  306. package/esm2022/src/app/shared/platforms.mjs +0 -45
  307. package/esm2022/src/app/shared/rx-state.module.mjs +0 -19
  308. package/esm2022/src/app/shared/services/entity-service.class.mjs +0 -7
  309. package/esm2022/src/app/shared/services/job.utils.mjs +0 -92
  310. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +0 -349
  311. package/esm2022/src/app/shared/services/progress-bar.service.mjs +0 -31
  312. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +0 -118
  313. package/esm2022/src/app/shared/services/startable-service.class.mjs +0 -107
  314. package/esm2022/src/app/shared/services/translate-context.service.mjs +0 -107
  315. package/esm2022/src/app/shared/services/validator-service.class.mjs +0 -2
  316. package/esm2022/src/app/shared/services.mjs +0 -62
  317. package/esm2022/src/app/shared/shared-routing.module.mjs +0 -72
  318. package/esm2022/src/app/shared/shared.module.mjs +0 -234
  319. package/esm2022/src/app/shared/shared.testing.module.mjs +0 -100
  320. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +0 -279
  321. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +0 -42
  322. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +0 -27
  323. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +0 -25
  324. package/esm2022/src/app/shared/storage/storage.service.mjs +0 -134
  325. package/esm2022/src/app/shared/storage/storage.utils.mjs +0 -13
  326. package/esm2022/src/app/shared/testing/maskito.test.mjs +0 -41
  327. package/esm2022/src/app/shared/testing/observable.test.mjs +0 -94
  328. package/esm2022/src/app/shared/testing/tests.page.mjs +0 -37
  329. package/esm2022/src/app/shared/toast/toast.testing.mjs +0 -52
  330. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +0 -30
  331. package/esm2022/src/app/shared/toast/toasts.mjs +0 -144
  332. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +0 -62
  333. package/esm2022/src/app/shared/toolbar/toolbar.mjs +0 -263
  334. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +0 -26
  335. package/esm2022/src/app/shared/types.mjs +0 -2
  336. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -59
  337. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +0 -30
  338. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -106
  339. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +0 -213
  340. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +0 -26
  341. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +0 -114
  342. package/esm2022/src/app/shared/validator/validators.mjs +0 -601
  343. package/esm2022/src/app/shared/version/versions.mjs +0 -81
  344. package/esm2022/src/app/social/job/job.module.mjs +0 -23
  345. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +0 -35
  346. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +0 -235
  347. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +0 -47
  348. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +0 -29
  349. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +0 -91
  350. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +0 -38
  351. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +0 -34
  352. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +0 -22
  353. package/esm2022/src/app/social/message/message.form.mjs +0 -140
  354. package/esm2022/src/app/social/message/message.modal.mjs +0 -110
  355. package/esm2022/src/app/social/message/message.model.mjs +0 -75
  356. package/esm2022/src/app/social/message/message.module.mjs +0 -22
  357. package/esm2022/src/app/social/message/message.service.mjs +0 -110
  358. package/esm2022/src/app/social/social.errors.mjs +0 -10
  359. package/esm2022/src/app/social/social.module.mjs +0 -22
  360. package/esm2022/src/app/social/social.testing.module.mjs +0 -40
  361. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -127
  362. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -260
  363. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +0 -257
  364. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -129
  365. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +0 -22
  366. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -128
  367. package/esm2022/src/app/social/user-event/user-event.model.mjs +0 -2
  368. package/esm2022/src/app/social/user-event/user-event.module.mjs +0 -23
  369. package/esm2022/src/app/social/user-event/user-event.service.mjs +0 -509
  370. package/esm2022/src/environments/environment.class.mjs +0 -57
  371. package/esm2022/src/environments/environment.loader.mjs +0 -77
  372. package/esm2022/src/environments/environment.mjs +0 -105
  373. package/esm2022/sumaris-net.ngx-components.mjs +0 -5
  374. package/index.d.ts +0 -5
  375. package/public_api.d.ts +0 -322
  376. package/src/app/admin/admin-routing.module.d.ts +0 -9
  377. package/src/app/admin/admin.module.d.ts +0 -10
  378. package/src/app/admin/services/filter/person.filter.d.ts +0 -21
  379. package/src/app/admin/services/person.service.d.ts +0 -49
  380. package/src/app/admin/services/validator/person.validator.d.ts +0 -23
  381. package/src/app/admin/users/users.d.ts +0 -45
  382. package/src/app/admin/users/users.module.d.ts +0 -14
  383. package/src/app/core/about/about.modal.d.ts +0 -32
  384. package/src/app/core/about/about.module.d.ts +0 -10
  385. package/src/app/core/account/account.module.d.ts +0 -16
  386. package/src/app/core/account/account.page.d.ts +0 -80
  387. package/src/app/core/account/new-token.modal.d.ts +0 -41
  388. package/src/app/core/account/password/change-password.form.d.ts +0 -19
  389. package/src/app/core/account/password/change-password.module.d.ts +0 -11
  390. package/src/app/core/account/password/change-password.page.d.ts +0 -36
  391. package/src/app/core/account/token.table.d.ts +0 -27
  392. package/src/app/core/auth/auth.form.d.ts +0 -38
  393. package/src/app/core/auth/auth.modal.d.ts +0 -24
  394. package/src/app/core/auth/auth.module.d.ts +0 -13
  395. package/src/app/core/auth/reset-password.modal.d.ts +0 -26
  396. package/src/app/core/core.module.d.ts +0 -28
  397. package/src/app/core/core.testing.module.d.ts +0 -15
  398. package/src/app/core/form/array/form-array.d.ts +0 -136
  399. package/src/app/core/form/array/testing/form-array-test.module.d.ts +0 -12
  400. package/src/app/core/form/array/testing/form-array.test.d.ts +0 -26
  401. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +0 -37
  402. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +0 -9
  403. package/src/app/core/form/entity/editor.class.d.ts +0 -83
  404. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +0 -126
  405. package/src/app/core/form/entity/entity-editor.class.d.ts +0 -204
  406. package/src/app/core/form/entity/entity-metadata.component.d.ts +0 -13
  407. package/src/app/core/form/entity/entity.module.d.ts +0 -10
  408. package/src/app/core/form/entity/tab-editor.class.d.ts +0 -70
  409. package/src/app/core/form/form-container.class.d.ts +0 -126
  410. package/src/app/core/form/form.class.d.ts +0 -144
  411. package/src/app/core/form/form.module.d.ts +0 -14
  412. package/src/app/core/form/form.utils.d.ts +0 -251
  413. package/src/app/core/form/list/list.form.d.ts +0 -81
  414. package/src/app/core/form/list/list.module.d.ts +0 -9
  415. package/src/app/core/form/properties/properties.form.d.ts +0 -66
  416. package/src/app/core/form/properties/properties.module.d.ts +0 -11
  417. package/src/app/core/form/properties/properties.table.d.ts +0 -78
  418. package/src/app/core/form/properties/properties.utils.d.ts +0 -27
  419. package/src/app/core/form/properties/property.validator.d.ts +0 -19
  420. package/src/app/core/form/properties/testing/properties-form.test.d.ts +0 -19
  421. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +0 -12
  422. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +0 -16
  423. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +0 -11
  424. package/src/app/core/form/text-popover/text-popover.component.d.ts +0 -71
  425. package/src/app/core/form/text-popover/text-popover.module.d.ts +0 -9
  426. package/src/app/core/form/username/username.form.d.ts +0 -19
  427. package/src/app/core/form/username/username.module.d.ts +0 -9
  428. package/src/app/core/graphql/graphql.module.d.ts +0 -7
  429. package/src/app/core/graphql/graphql.service.d.ts +0 -147
  430. package/src/app/core/graphql/graphql.utils.d.ts +0 -42
  431. package/src/app/core/home/home.d.ts +0 -94
  432. package/src/app/core/home/home.module.d.ts +0 -13
  433. package/src/app/core/icon/icon.component.d.ts +0 -13
  434. package/src/app/core/icon/icon.module.d.ts +0 -9
  435. package/src/app/core/install/install-upgrade-card.component.d.ts +0 -64
  436. package/src/app/core/install/install-upgrade-card.module.d.ts +0 -9
  437. package/src/app/core/menu/menu.component.d.ts +0 -69
  438. package/src/app/core/menu/menu.model.d.ts +0 -144
  439. package/src/app/core/menu/menu.module.d.ts +0 -12
  440. package/src/app/core/menu/menu.service.d.ts +0 -94
  441. package/src/app/core/menu/sub-menu-tab.directive.d.ts +0 -29
  442. package/src/app/core/menu/testing/menu-other.testing.d.ts +0 -15
  443. package/src/app/core/menu/testing/menu.testing.d.ts +0 -51
  444. package/src/app/core/menu/testing/menu.testing.module.d.ts +0 -12
  445. package/src/app/core/offline/update-offline-mode-card.component.d.ts +0 -11
  446. package/src/app/core/offline/update-offline-mode-card.module.d.ts +0 -9
  447. package/src/app/core/peer/select-peer.modal.d.ts +0 -60
  448. package/src/app/core/peer/select-peer.module.d.ts +0 -10
  449. package/src/app/core/register/register-confirm.page.d.ts +0 -24
  450. package/src/app/core/register/register.form.d.ts +0 -49
  451. package/src/app/core/register/register.modal.d.ts +0 -14
  452. package/src/app/core/register/register.module.d.ts +0 -12
  453. package/src/app/core/services/account.service.d.ts +0 -205
  454. package/src/app/core/services/auth-guard.service.d.ts +0 -17
  455. package/src/app/core/services/base-entity-service.class.d.ts +0 -123
  456. package/src/app/core/services/base-graphql-service.class.d.ts +0 -77
  457. package/src/app/core/services/base58.d.ts +0 -7
  458. package/src/app/core/services/config/core.config.d.ts +0 -41
  459. package/src/app/core/services/config.service.d.ts +0 -63
  460. package/src/app/core/services/crypto.service.d.ts +0 -44
  461. package/src/app/core/services/errors.d.ts +0 -63
  462. package/src/app/core/services/local-settings.service.d.ts +0 -95
  463. package/src/app/core/services/model/account.model.d.ts +0 -41
  464. package/src/app/core/services/model/config.model.d.ts +0 -36
  465. package/src/app/core/services/model/department.model.d.ts +0 -11
  466. package/src/app/core/services/model/entity.decorators.d.ts +0 -17
  467. package/src/app/core/services/model/entity.model.d.ts +0 -87
  468. package/src/app/core/services/model/filter.model.d.ts +0 -37
  469. package/src/app/core/services/model/history.model.d.ts +0 -20
  470. package/src/app/core/services/model/model.enum.d.ts +0 -7
  471. package/src/app/core/services/model/peer.model.d.ts +0 -30
  472. package/src/app/core/services/model/person.model.d.ts +0 -37
  473. package/src/app/core/services/model/referential.model.d.ts +0 -83
  474. package/src/app/core/services/model/settings.model.d.ts +0 -28
  475. package/src/app/core/services/model/token.model.d.ts +0 -22
  476. package/src/app/core/services/model/tree-item-entity.model.d.ts +0 -53
  477. package/src/app/core/services/network.service.d.ts +0 -151
  478. package/src/app/core/services/network.types.d.ts +0 -5
  479. package/src/app/core/services/network.utils.d.ts +0 -31
  480. package/src/app/core/services/pipes/account.pipes.d.ts +0 -15
  481. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +0 -9
  482. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +0 -11
  483. package/src/app/core/services/pipes/pipes.module.d.ts +0 -11
  484. package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +0 -13
  485. package/src/app/core/services/pipes/usage-mode.pipes.d.ts +0 -15
  486. package/src/app/core/services/platform.service.d.ts +0 -100
  487. package/src/app/core/services/storage/entities-storage.service.d.ts +0 -108
  488. package/src/app/core/services/storage/entity-store.class.d.ts +0 -113
  489. package/src/app/core/services/testing/referential-filter.model.d.ts +0 -9
  490. package/src/app/core/services/testing/referential.validator.d.ts +0 -22
  491. package/src/app/core/services/validator/account.validator.d.ts +0 -24
  492. package/src/app/core/services/validator/base.validator.class.d.ts +0 -21
  493. package/src/app/core/services/validator/local-settings.validator.d.ts +0 -22
  494. package/src/app/core/services/validator/user-settings.validator.d.ts +0 -10
  495. package/src/app/core/services/validator/user-token.validator.d.ts +0 -13
  496. package/src/app/core/settings/settings.module.d.ts +0 -11
  497. package/src/app/core/settings/settings.page.d.ts +0 -81
  498. package/src/app/core/table/async-table.class.d.ts +0 -389
  499. package/src/app/core/table/column/actions-column.component.d.ts +0 -59
  500. package/src/app/core/table/column/nav-actions-column.component.d.ts +0 -46
  501. package/src/app/core/table/column/row-field.component.d.ts +0 -40
  502. package/src/app/core/table/entities-async-table-datasource.class.d.ts +0 -81
  503. package/src/app/core/table/entities-table-datasource.class.d.ts +0 -95
  504. package/src/app/core/table/memory-table.class.d.ts +0 -25
  505. package/src/app/core/table/table-select-columns.component.d.ts +0 -22
  506. package/src/app/core/table/table.class.d.ts +0 -394
  507. package/src/app/core/table/table.model.d.ts +0 -26
  508. package/src/app/core/table/table.module.d.ts +0 -14
  509. package/src/app/core/table/table.pipes.d.ts +0 -28
  510. package/src/app/core/table/table.utils.d.ts +0 -11
  511. package/src/app/core/table/testing/table-validator.service.d.ts +0 -17
  512. package/src/app/core/table/testing/table.testing.d.ts +0 -54
  513. package/src/app/core/table/testing/table.testing.module.d.ts +0 -14
  514. package/src/app/core/table/testing/table2-validator.service.d.ts +0 -15
  515. package/src/app/core/table/testing/table2.testing.d.ts +0 -48
  516. package/src/app/shared/alerts.d.ts +0 -55
  517. package/src/app/shared/audio/audio.d.ts +0 -44
  518. package/src/app/shared/audio/audio.testing.d.ts +0 -13
  519. package/src/app/shared/audio/audio.testing.module.d.ts +0 -11
  520. package/src/app/shared/capacitor/keyboard.d.ts +0 -16
  521. package/src/app/shared/capacitor/plugins.d.ts +0 -7
  522. package/src/app/shared/constants.d.ts +0 -13
  523. package/src/app/shared/dates.d.ts +0 -48
  524. package/src/app/shared/debug/debug-service.class.d.ts +0 -5
  525. package/src/app/shared/debug/debug.component.d.ts +0 -13
  526. package/src/app/shared/debug/debug.module.d.ts +0 -12
  527. package/src/app/shared/directives/autofocus.directive.d.ts +0 -18
  528. package/src/app/shared/directives/autotitle.directive.d.ts +0 -10
  529. package/src/app/shared/directives/directives.module.d.ts +0 -12
  530. package/src/app/shared/directives/drag-and-drop.directive.d.ts +0 -17
  531. package/src/app/shared/directives/ng-var.directive.d.ts +0 -12
  532. package/src/app/shared/directives/resizable/resizable.component.d.ts +0 -21
  533. package/src/app/shared/directives/resizable/resizable.directive.d.ts +0 -12
  534. package/src/app/shared/directives/resizable/resizable.module.d.ts +0 -8
  535. package/src/app/shared/events.d.ts +0 -28
  536. package/src/app/shared/file/csv.utils.d.ts +0 -24
  537. package/src/app/shared/file/file.service.d.ts +0 -23
  538. package/src/app/shared/file/file.utils.d.ts +0 -20
  539. package/src/app/shared/file/images.utils.d.ts +0 -36
  540. package/src/app/shared/file/json.utils.d.ts +0 -19
  541. package/src/app/shared/file/uri.utils.d.ts +0 -8
  542. package/src/app/shared/focusable.d.ts +0 -4
  543. package/src/app/shared/form/field.component.d.ts +0 -74
  544. package/src/app/shared/form/field.model.d.ts +0 -39
  545. package/src/app/shared/form/loading-spinner.d.ts +0 -8
  546. package/src/app/shared/forms.d.ts +0 -118
  547. package/src/app/shared/functions.d.ts +0 -152
  548. package/src/app/shared/geolocation/geolocation.utils.d.ts +0 -19
  549. package/src/app/shared/gesture/gesture-config.d.ts +0 -15
  550. package/src/app/shared/gesture/hammer.utils.d.ts +0 -16
  551. package/src/app/shared/graph/colors.utils.d.ts +0 -17
  552. package/src/app/shared/graph/graph-colors.d.ts +0 -63
  553. package/src/app/shared/guard/component-dirty.guard.d.ts +0 -14
  554. package/src/app/shared/help/help.modal.d.ts +0 -33
  555. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +0 -8
  556. package/src/app/shared/hotkeys/hotkeys.service.d.ts +0 -42
  557. package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +0 -11
  558. package/src/app/shared/http/http.utils.d.ts +0 -28
  559. package/src/app/shared/image/gallery/image-gallery.component.d.ts +0 -98
  560. package/src/app/shared/image/gallery/image-gallery.module.d.ts +0 -15
  561. package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +0 -12
  562. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +0 -33
  563. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +0 -16
  564. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +0 -13
  565. package/src/app/shared/image/image.model.d.ts +0 -5
  566. package/src/app/shared/image/image.module.d.ts +0 -8
  567. package/src/app/shared/image/image.service.d.ts +0 -32
  568. package/src/app/shared/inputs.d.ts +0 -34
  569. package/src/app/shared/interceptors/progess.interceptor.d.ts +0 -8
  570. package/src/app/shared/logging/log-level.model.d.ts +0 -38
  571. package/src/app/shared/logging/logger.model.d.ts +0 -68
  572. package/src/app/shared/logging/logging-service.class.d.ts +0 -39
  573. package/src/app/shared/logging/logging-service.config.d.ts +0 -25
  574. package/src/app/shared/logging/logging-service.module.d.ts +0 -9
  575. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +0 -55
  576. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +0 -180
  577. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +0 -22
  578. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +0 -5
  579. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +0 -46
  580. package/src/app/shared/material/badge/badge.directive.d.ts +0 -43
  581. package/src/app/shared/material/badge/badge.module.d.ts +0 -10
  582. package/src/app/shared/material/badge/badge.test.d.ts +0 -21
  583. package/src/app/shared/material/boolean/boolean.module.d.ts +0 -21
  584. package/src/app/shared/material/boolean/material.boolean.d.ts +0 -93
  585. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +0 -22
  586. package/src/app/shared/material/chips/chips.module.d.ts +0 -22
  587. package/src/app/shared/material/chips/material.chips.d.ts +0 -150
  588. package/src/app/shared/material/chips/testing/chips.test.d.ts +0 -32
  589. package/src/app/shared/material/datetime/datetime.module.d.ts +0 -24
  590. package/src/app/shared/material/datetime/material.date.d.ts +0 -90
  591. package/src/app/shared/material/datetime/material.dateshort.d.ts +0 -89
  592. package/src/app/shared/material/datetime/material.datetime.d.ts +0 -121
  593. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +0 -37
  594. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +0 -32
  595. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +0 -31
  596. package/src/app/shared/material/duration/duration.module.d.ts +0 -19
  597. package/src/app/shared/material/duration/duration.utils.d.ts +0 -3
  598. package/src/app/shared/material/duration/material.duration.d.ts +0 -58
  599. package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +0 -22
  600. package/src/app/shared/material/latlong/latlong.utils.d.ts +0 -21
  601. package/src/app/shared/material/latlong/material.latlong.d.ts +0 -70
  602. package/src/app/shared/material/latlong/material.latlong.module.d.ts +0 -20
  603. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +0 -27
  604. package/src/app/shared/material/material.animations.d.ts +0 -6
  605. package/src/app/shared/material/material.config.d.ts +0 -3
  606. package/src/app/shared/material/material.module.d.ts +0 -45
  607. package/src/app/shared/material/material.testing.module.d.ts +0 -31
  608. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -12
  609. package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +0 -10
  610. package/src/app/shared/material/swipe/material.swipe.d.ts +0 -90
  611. package/src/app/shared/material/swipe/swipe.module.d.ts +0 -16
  612. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +0 -22
  613. package/src/app/shared/material/testing/common.test.d.ts +0 -25
  614. package/src/app/shared/material/text/testing/text-form.testing.d.ts +0 -19
  615. package/src/app/shared/material/text/text-form.component.d.ts +0 -66
  616. package/src/app/shared/material/text/text-form.module.d.ts +0 -16
  617. package/src/app/shared/modules.d.ts +0 -9
  618. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +0 -60
  619. package/src/app/shared/named-filter/named-filter.model.d.ts +0 -32
  620. package/src/app/shared/named-filter/named-filter.module.d.ts +0 -13
  621. package/src/app/shared/named-filter/named-filter.service.d.ts +0 -32
  622. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +0 -34
  623. package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +0 -10
  624. package/src/app/shared/observables.d.ts +0 -30
  625. package/src/app/shared/pipes/arrays.pipe.d.ts +0 -59
  626. package/src/app/shared/pipes/badge.pipes.d.ts +0 -7
  627. package/src/app/shared/pipes/colors.pipe.d.ts +0 -9
  628. package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +0 -23
  629. package/src/app/shared/pipes/date-format.pipe.d.ts +0 -35
  630. package/src/app/shared/pipes/date-from-now.pipe.d.ts +0 -12
  631. package/src/app/shared/pipes/duration.pipe.d.ts +0 -13
  632. package/src/app/shared/pipes/file-size.pipe.d.ts +0 -30
  633. package/src/app/shared/pipes/form.pipes.d.ts +0 -69
  634. package/src/app/shared/pipes/highlight.pipe.d.ts +0 -11
  635. package/src/app/shared/pipes/html.pipes.d.ts +0 -15
  636. package/src/app/shared/pipes/latlong-format.pipe.d.ts +0 -20
  637. package/src/app/shared/pipes/maps.pipe.d.ts +0 -22
  638. package/src/app/shared/pipes/maskito.pipe.d.ts +0 -14
  639. package/src/app/shared/pipes/math.pipes.d.ts +0 -20
  640. package/src/app/shared/pipes/ng-init.pipe.d.ts +0 -8
  641. package/src/app/shared/pipes/number-format.pipe.d.ts +0 -10
  642. package/src/app/shared/pipes/pipes.module.d.ts +0 -31
  643. package/src/app/shared/pipes/property.pipes.d.ts +0 -47
  644. package/src/app/shared/pipes/selection.pipes.d.ts +0 -62
  645. package/src/app/shared/pipes/string.pipes.d.ts +0 -53
  646. package/src/app/shared/pipes/translate-context.pipe.d.ts +0 -17
  647. package/src/app/shared/pipes/types.pipes.d.ts +0 -30
  648. package/src/app/shared/platforms.d.ts +0 -8
  649. package/src/app/shared/rx-state.module.d.ts +0 -10
  650. package/src/app/shared/services/entity-service.class.d.ts +0 -71
  651. package/src/app/shared/services/job.utils.d.ts +0 -20
  652. package/src/app/shared/services/memory-entity-service.class.d.ts +0 -78
  653. package/src/app/shared/services/progress-bar.service.d.ts +0 -20
  654. package/src/app/shared/services/startable-observable-service.class.d.ts +0 -36
  655. package/src/app/shared/services/startable-service.class.d.ts +0 -37
  656. package/src/app/shared/services/translate-context.service.d.ts +0 -29
  657. package/src/app/shared/services/validator-service.class.d.ts +0 -11
  658. package/src/app/shared/services.d.ts +0 -10
  659. package/src/app/shared/shared-routing.module.d.ts +0 -23
  660. package/src/app/shared/shared.module.d.ts +0 -34
  661. package/src/app/shared/shared.testing.module.d.ts +0 -19
  662. package/src/app/shared/storage/storage-explorer.component.d.ts +0 -59
  663. package/src/app/shared/storage/storage-explorer.module.d.ts +0 -13
  664. package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +0 -9
  665. package/src/app/shared/storage/storage-explorer.testing.module.d.ts +0 -10
  666. package/src/app/shared/storage/storage.service.d.ts +0 -22
  667. package/src/app/shared/storage/storage.utils.d.ts +0 -19
  668. package/src/app/shared/testing/maskito.test.d.ts +0 -10
  669. package/src/app/shared/testing/observable.test.d.ts +0 -25
  670. package/src/app/shared/testing/tests.page.d.ts +0 -20
  671. package/src/app/shared/toast/toast.testing.d.ts +0 -15
  672. package/src/app/shared/toast/toast.testing.module.d.ts +0 -11
  673. package/src/app/shared/toast/toasts.d.ts +0 -17
  674. package/src/app/shared/toolbar/modal-toolbar.d.ts +0 -21
  675. package/src/app/shared/toolbar/toolbar.d.ts +0 -68
  676. package/src/app/shared/toolbar/toolbar.module.d.ts +0 -16
  677. package/src/app/shared/types.d.ts +0 -31
  678. package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +0 -21
  679. package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +0 -11
  680. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +0 -39
  681. package/src/app/shared/upload-file/upload-file.component.d.ts +0 -49
  682. package/src/app/shared/upload-file/upload-file.model.d.ts +0 -30
  683. package/src/app/shared/validator/form-error-adapter.class.d.ts +0 -33
  684. package/src/app/shared/validator/validators.d.ts +0 -130
  685. package/src/app/shared/version/versions.d.ts +0 -26
  686. package/src/app/social/job/job.module.d.ts +0 -12
  687. package/src/app/social/job/progression/job-progression.component.d.ts +0 -23
  688. package/src/app/social/job/progression/job-progression.icon.d.ts +0 -62
  689. package/src/app/social/job/progression/job-progression.list.d.ts +0 -19
  690. package/src/app/social/job/progression/job-progression.model.d.ts +0 -10
  691. package/src/app/social/job/progression/job-progression.service.d.ts +0 -33
  692. package/src/app/social/job/testing/job-progression.testing.d.ts +0 -13
  693. package/src/app/social/job/testing/job-progression.testing.service.d.ts +0 -9
  694. package/src/app/social/job/testing/job.testing.module.d.ts +0 -11
  695. package/src/app/social/message/message.form.d.ts +0 -36
  696. package/src/app/social/message/message.modal.d.ts +0 -43
  697. package/src/app/social/message/message.model.d.ts +0 -33
  698. package/src/app/social/message/message.module.d.ts +0 -12
  699. package/src/app/social/message/message.service.d.ts +0 -32
  700. package/src/app/social/social.errors.d.ts +0 -9
  701. package/src/app/social/social.module.d.ts +0 -20
  702. package/src/app/social/social.testing.module.d.ts +0 -13
  703. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +0 -32
  704. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +0 -71
  705. package/src/app/social/user-event/testing/user-event.testing.d.ts +0 -35
  706. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -42
  707. package/src/app/social/user-event/testing/user-event.testing.module.d.ts +0 -11
  708. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +0 -42
  709. package/src/app/social/user-event/user-event.model.d.ts +0 -44
  710. package/src/app/social/user-event/user-event.module.d.ts +0 -13
  711. package/src/app/social/user-event/user-event.service.d.ts +0 -129
  712. package/src/environments/environment.class.d.ts +0 -68
  713. package/src/environments/environment.d.ts +0 -2
  714. package/src/environments/environment.loader.d.ts +0 -24
  715. package/src/theme/_globals.scss +0 -5
@@ -1,243 +0,0 @@
1
- export class Alerts {
2
- /**
3
- * Ask the user to save before leaving. If return undefined: user has cancelled
4
- * <p>
5
- * from a routed page, prefer using ComponentDirtyGuard
6
- *
7
- * @param alertCtrl
8
- * @param translate
9
- * @param event
10
- */
11
- static async askSaveBeforeLeave(alertCtrl, translate, event) {
12
- let confirm = false;
13
- let cancel = false;
14
- const translations = translate.instant([
15
- 'COMMON.BTN_SAVE',
16
- 'COMMON.BTN_CANCEL',
17
- 'COMMON.BTN_ABORT_CHANGES',
18
- 'CONFIRM.SAVE',
19
- 'CONFIRM.ALERT_HEADER',
20
- ]);
21
- const alert = await alertCtrl.create({
22
- header: translations['CONFIRM.ALERT_HEADER'],
23
- message: translations['CONFIRM.SAVE'],
24
- buttons: [
25
- {
26
- text: translations['COMMON.BTN_CANCEL'],
27
- role: 'cancel',
28
- cssClass: 'secondary',
29
- handler: () => {
30
- cancel = true;
31
- },
32
- },
33
- {
34
- text: translations['COMMON.BTN_ABORT_CHANGES'],
35
- cssClass: 'secondary',
36
- handler: () => { },
37
- },
38
- {
39
- text: translations['COMMON.BTN_SAVE'],
40
- handler: () => {
41
- confirm = true; // update upper value
42
- },
43
- },
44
- ],
45
- });
46
- await alert.present();
47
- await alert.onDidDismiss();
48
- if (confirm)
49
- return true; // = Do save and leave
50
- if (cancel) {
51
- // Stop the event
52
- if (event)
53
- event.preventDefault();
54
- return undefined; // User cancelled
55
- }
56
- return false; // Leave without saving
57
- }
58
- /**
59
- * Ask the user to conform an action. If return undefined: user has cancelled
60
- *
61
- * @param alertCtrl
62
- * @param translate
63
- * @param immediate is action has an immediate effect ?
64
- * @param event
65
- * @param interpolateParams
66
- */
67
- static async askActionConfirmation(alertCtrl, translate, immediate, event, interpolateParams) {
68
- const messageKey = immediate === true ? 'CONFIRM.ACTION_IMMEDIATE' : 'CONFIRM.ACTION';
69
- return Alerts.askConfirmation(messageKey, alertCtrl, translate, event, interpolateParams);
70
- }
71
- /**
72
- * Ask the user to confirm. If return undefined: user has cancelled
73
- *
74
- * @pram messageKey i18n message key
75
- * @param messageKey
76
- * @param alertCtrl
77
- * @param translate
78
- * @param event
79
- * @param interpolateParams
80
- */
81
- static async askConfirmation(messageKey, alertCtrl, translate, event, interpolateParams) {
82
- if (!alertCtrl || !translate)
83
- throw new Error("Missing required argument 'alertCtrl' or 'translate'");
84
- let confirm = false;
85
- let cancel = false;
86
- const translations = translate.instant(['COMMON.BTN_YES_CONTINUE', 'COMMON.BTN_CANCEL', messageKey, 'CONFIRM.ALERT_HEADER'], interpolateParams);
87
- const alert = await alertCtrl.create({
88
- header: translations['CONFIRM.ALERT_HEADER'],
89
- message: translations[messageKey],
90
- buttons: [
91
- {
92
- text: translations['COMMON.BTN_CANCEL'],
93
- role: 'cancel',
94
- cssClass: 'secondary',
95
- handler: () => {
96
- cancel = true;
97
- },
98
- },
99
- {
100
- text: translations['COMMON.BTN_YES_CONTINUE'],
101
- handler: () => {
102
- confirm = true; // update upper value
103
- },
104
- },
105
- ],
106
- });
107
- await alert.present();
108
- await alert.onDidDismiss();
109
- if (confirm)
110
- return true; // = Do save and leave
111
- if (cancel) {
112
- // Stop the event
113
- if (event)
114
- event.preventDefault();
115
- return undefined; // User cancelled
116
- }
117
- return false; // Leave without saving
118
- }
119
- /**
120
- * Ask the user to save before leaving. If return undefined: user has cancelled
121
- *
122
- * @param alertCtrl
123
- * @param translate
124
- * @param event
125
- * @param interpolateParams
126
- */
127
- static async askDeleteConfirmation(alertCtrl, translate, event, interpolateParams) {
128
- let confirm = false;
129
- let cancel = false;
130
- const translations = translate.instant(['COMMON.BTN_YES_DELETE', 'COMMON.BTN_CANCEL', 'CONFIRM.DELETE', 'CONFIRM.ALERT_HEADER'], interpolateParams);
131
- const alert = await alertCtrl.create({
132
- header: translations['CONFIRM.ALERT_HEADER'],
133
- message: translations['CONFIRM.DELETE'],
134
- buttons: [
135
- {
136
- text: translations['COMMON.BTN_CANCEL'],
137
- role: 'cancel',
138
- cssClass: 'secondary',
139
- handler: () => {
140
- cancel = true;
141
- },
142
- },
143
- {
144
- text: translations['COMMON.BTN_YES_DELETE'],
145
- handler: () => {
146
- confirm = true; // update upper value
147
- },
148
- },
149
- ],
150
- });
151
- await alert.present();
152
- await alert.onDidDismiss();
153
- if (confirm)
154
- return true; // = Do save and leave
155
- if (cancel) {
156
- // Stop the event
157
- if (event)
158
- event.preventDefault();
159
- return undefined; // User cancelled
160
- }
161
- return false; // Leave without saving
162
- }
163
- static async askSaveBeforeAction(alertCtrl, translate, opts, interpolateParams) {
164
- let save = false;
165
- let confirmed = false;
166
- let alert;
167
- const validMessageI18n = opts?.validMessageI18n || 'CONFIRM.SAVE_BEFORE_CONTINUE';
168
- const invalidMessageI18n = opts?.invalidMessageI18n || 'CONFIRM.CANCEL_CHANGES';
169
- // Ask user before save
170
- if (opts?.valid) {
171
- const translations = translate.instant(['COMMON.BTN_CANCEL', 'COMMON.BTN_SAVE', 'COMMON.BTN_ABORT_CHANGES', 'CONFIRM.ALERT_HEADER', validMessageI18n], interpolateParams);
172
- alert = await alertCtrl.create({
173
- header: translations['CONFIRM.ALERT_HEADER'],
174
- message: translations[validMessageI18n],
175
- buttons: [
176
- {
177
- text: translations['COMMON.BTN_CANCEL'],
178
- role: 'cancel',
179
- cssClass: 'secondary',
180
- handler: () => { },
181
- },
182
- {
183
- text: translations['COMMON.BTN_ABORT_CHANGES'],
184
- cssClass: 'secondary',
185
- handler: () => {
186
- confirmed = true;
187
- },
188
- },
189
- {
190
- text: translations['COMMON.BTN_SAVE'],
191
- handler: () => {
192
- save = true;
193
- confirmed = true;
194
- },
195
- },
196
- ],
197
- });
198
- }
199
- else {
200
- const translations = translate.instant(['COMMON.BTN_ABORT_CHANGES', 'COMMON.BTN_CANCEL', 'CONFIRM.ALERT_HEADER', invalidMessageI18n], interpolateParams);
201
- alert = await alertCtrl.create({
202
- header: translations['CONFIRM.ALERT_HEADER'],
203
- message: translations[invalidMessageI18n],
204
- buttons: [
205
- {
206
- text: translations['COMMON.BTN_ABORT_CHANGES'],
207
- cssClass: 'secondary',
208
- handler: () => {
209
- confirmed = true;
210
- },
211
- },
212
- {
213
- text: translations['COMMON.BTN_CANCEL'],
214
- role: 'cancel',
215
- handler: () => { },
216
- },
217
- ],
218
- });
219
- }
220
- await alert.present();
221
- await alert.onDidDismiss();
222
- return { confirmed, save };
223
- }
224
- static async showError(messageKey, alertCtrl, translate, opts, interpolateParams) {
225
- if (!messageKey || !alertCtrl || !translate)
226
- throw new Error("Missing a required argument ('messageKey', 'alertCtrl' or 'translate')");
227
- const titleKey = (opts && opts.titleKey) || 'ERROR.ALERT_HEADER';
228
- const translations = translate.instant(['COMMON.BTN_OK', messageKey, titleKey], interpolateParams);
229
- const alert = await alertCtrl.create({
230
- header: translations[titleKey],
231
- message: translations[messageKey],
232
- buttons: [
233
- {
234
- text: translations['COMMON.BTN_OK'],
235
- role: 'cancel',
236
- },
237
- ],
238
- });
239
- await alert.present();
240
- await alert.onDidDismiss();
241
- }
242
- }
243
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvYWxlcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxNQUFNO0lBQ2pCOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUEwQixFQUFFLFNBQTJCLEVBQUUsS0FBYTtRQUNwRyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUM7WUFDckMsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQiwwQkFBMEI7WUFDMUIsY0FBYztZQUNkLHNCQUFzQjtTQUN2QixDQUFDLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDbkMsTUFBTSxFQUFFLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQztZQUM1QyxPQUFPLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQztZQUNyQyxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQztvQkFDdkMsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUU7d0JBQ1osTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDaEIsQ0FBQztpQkFDRjtnQkFDRDtvQkFDRSxJQUFJLEVBQUUsWUFBWSxDQUFDLDBCQUEwQixDQUFDO29CQUM5QyxRQUFRLEVBQUUsV0FBVztvQkFDckIsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFFLENBQUM7aUJBQ2xCO2dCQUNEO29CQUNFLElBQUksRUFBRSxZQUFZLENBQUMsaUJBQWlCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUU7d0JBQ1osT0FBTyxHQUFHLElB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U0FBMkIsRUFDM0IsSUFFQyxFQUNELGlCQUF1QjtRQUV2QixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztRQUN2SSxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksb0JBQW9CLENBQUM7UUFDakUsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUNuRyxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDbkMsTUFBTSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDOUIsT0FBTyxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDakMsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxZQUFZLENBQUMsZUFBZSxDQUFDO29CQUNuQyxJQUFJLEVBQUUsUUFBUTtpQkFDZjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWxlcnRDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQWxlcnRzIHtcbiAgLyoqXG4gICAqIEFzayB0aGUgdXNlciB0byBzYXZlIGJlZm9yZSBsZWF2aW5nLiBJZiByZXR1cm4gdW5kZWZpbmVkOiB1c2VyIGhhcyBjYW5jZWxsZWRcbiAgICogPHA+XG4gICAqICAgZnJvbSBhIHJvdXRlZCBwYWdlLCBwcmVmZXIgdXNpbmcgQ29tcG9uZW50RGlydHlHdWFyZFxuICAgKlxuICAgKiBAcGFyYW0gYWxlcnRDdHJsXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqL1xuICBzdGF0aWMgYXN5bmMgYXNrU2F2ZUJlZm9yZUxlYXZlKGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGV2ZW50PzogRXZlbnQpOiBQcm9taXNlPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgY29uZmlybSA9IGZhbHNlO1xuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGUuaW5zdGFudChbXG4gICAgICAnQ09NTU9OLkJUTl9TQVZFJyxcbiAgICAgICdDT01NT04uQlROX0NBTkNFTCcsXG4gICAgICAnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJyxcbiAgICAgICdDT05GSVJNLlNBVkUnLFxuICAgICAgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJyxcbiAgICBdKTtcbiAgICBjb25zdCBhbGVydCA9IGF3YWl0IGFsZXJ0Q3RybC5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbJ0NPTkZJUk0uU0FWRSddLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fQUJPUlRfQ0hBTkdFUyddLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7fSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9TQVZFJ10sXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgY29uZmlybSA9IHRydWU7IC8vIHVwZGF0ZSB1cHBlciB2YWx1ZVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICBhd2FpdCBhbGVydC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChjb25maXJtKSByZXR1cm4gdHJ1ZTsgLy8gPSBEbyBzYXZlIGFuZCBsZWF2ZVxuXG4gICAgaWYgKGNhbmNlbCkge1xuICAgICAgLy8gU3RvcCB0aGUgZXZlbnRcbiAgICAgIGlmIChldmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gVXNlciBjYW5jZWxsZWRcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7IC8vIExlYXZlIHdpdGhvdXQgc2F2aW5nXG4gIH1cblxuICAvKipcbiAgICogQXNrIHRoZSB1c2VyIHRvIGNvbmZvcm0gYW4gYWN0aW9uLiBJZiByZXR1cm4gdW5kZWZpbmVkOiB1c2VyIGhhcyBjYW5jZWxsZWRcbiAgICpcbiAgICogQHBhcmFtIGFsZXJ0Q3RybFxuICAgKiBAcGFyYW0gdHJhbnNsYXRlXG4gICAqIEBwYXJhbSBpbW1lZGlhdGUgaXMgYWN0aW9uIGhhcyBhbiBpbW1lZGlhdGUgZWZmZWN0ID9cbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0ZVBhcmFtc1xuICAgKi9cbiAgc3RhdGljIGFzeW5jIGFza0FjdGlvbkNvbmZpcm1hdGlvbihcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgaW1tZWRpYXRlPzogYm9vbGVhbixcbiAgICBldmVudD86IEV2ZW50LFxuICAgIGludGVycG9sYXRlUGFyYW1zPzogYW55XG4gICk6IFByb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IG1lc3NhZ2VLZXkgPSBpbW1lZGlhdGUgPT09IHRydWUgPyAnQ09ORklSTS5BQ1RJT05fSU1NRURJQVRFJyA6ICdDT05GSVJNLkFDVElPTic7XG4gICAgcmV0dXJuIEFsZXJ0cy5hc2tDb25maXJtYXRpb24obWVzc2FnZUtleSwgYWxlcnRDdHJsLCB0cmFuc2xhdGUsIGV2ZW50LCBpbnRlcnBvbGF0ZVBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQXNrIHRoZSB1c2VyIHRvIGNvbmZpcm0uIElmIHJldHVybiB1bmRlZmluZWQ6IHVzZXIgaGFzIGNhbmNlbGxlZFxuICAgKlxuICAgKiBAcHJhbSBtZXNzYWdlS2V5IGkxOG4gbWVzc2FnZSBrZXlcbiAgICogQHBhcmFtIG1lc3NhZ2VLZXlcbiAgICogQHBhcmFtIGFsZXJ0Q3RybFxuICAgKiBAcGFyYW0gdHJhbnNsYXRlXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gaW50ZXJwb2xhdGVQYXJhbXNcbiAgICovXG4gIHN0YXRpYyBhc3luYyBhc2tDb25maXJtYXRpb24oXG4gICAgbWVzc2FnZUtleTogc3RyaW5nLFxuICAgIGFsZXJ0Q3RybDogQWxlcnRDb250cm9sbGVyLFxuICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBldmVudD86IEV2ZW50LFxuICAgIGludGVycG9sYXRlUGFyYW1zPzogYW55XG4gICk6IFByb21pc2U8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghYWxlcnRDdHJsIHx8ICF0cmFuc2xhdGUpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQgJ2FsZXJ0Q3RybCcgb3IgJ3RyYW5zbGF0ZSdcIik7XG4gICAgbGV0IGNvbmZpcm0gPSBmYWxzZTtcbiAgICBsZXQgY2FuY2VsID0gZmFsc2U7XG4gICAgY29uc3QgdHJhbnNsYXRpb25zID0gdHJhbnNsYXRlLmluc3RhbnQoWydDT01NT04uQlROX1lFU19DT05USU5VRScsICdDT01NT04uQlROX0NBTkNFTCcsIG1lc3NhZ2VLZXksICdDT05GSVJNLkFMRVJUX0hFQURFUiddLCBpbnRlcnBvbGF0ZVBhcmFtcyk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCBhbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zW21lc3NhZ2VLZXldLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fWUVTX0NPTlRJTlVFJ10sXG4gICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgY29uZmlybSA9IHRydWU7IC8vIHVwZGF0ZSB1cHBlciB2YWx1ZVxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgICBhd2FpdCBhbGVydC5vbkRpZERpc21pc3MoKTtcblxuICAgIGlmIChjb25maXJtKSByZXR1cm4gdHJ1ZTsgLy8gPSBEbyBzYXZlIGFuZCBsZWF2ZVxuXG4gICAgaWYgKGNhbmNlbCkge1xuICAgICAgLy8gU3RvcCB0aGUgZXZlbnRcbiAgICAgIGlmIChldmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDsgLy8gVXNlciBjYW5jZWxsZWRcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7IC8vIExlYXZlIHdpdGhvdXQgc2F2aW5nXG4gIH1cblxuICAvKipcbiAgICogQXNrIHRoZSB1c2VyIHRvIHNhdmUgYmVmb3JlIGxlYXZpbmcuIElmIHJldHVybiB1bmRlZmluZWQ6IHVzZXIgaGFzIGNhbmNlbGxlZFxuICAgKlxuICAgKiBAcGFyYW0gYWxlcnRDdHJsXG4gICAqIEBwYXJhbSB0cmFuc2xhdGVcbiAgICogQHBhcmFtIGV2ZW50XG4gICAqIEBwYXJhbSBpbnRlcnBvbGF0ZVBhcmFtc1xuICAgKi9cbiAgc3RhdGljIGFzeW5jIGFza0RlbGV0ZUNvbmZpcm1hdGlvbihcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgZXZlbnQ/OiBFdmVudCxcbiAgICBpbnRlcnBvbGF0ZVBhcmFtcz86IGFueVxuICApOiBQcm9taXNlPGJvb2xlYW4gfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgY29uZmlybSA9IGZhbHNlO1xuICAgIGxldCBjYW5jZWwgPSBmYWxzZTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGUuaW5zdGFudChcbiAgICAgIFsnQ09NTU9OLkJUTl9ZRVNfREVMRVRFJywgJ0NPTU1PTi5CVE5fQ0FOQ0VMJywgJ0NPTkZJUk0uREVMRVRFJywgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJ10sXG4gICAgICBpbnRlcnBvbGF0ZVBhcmFtc1xuICAgICk7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCBhbGVydEN0cmwuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zWydDT05GSVJNLkRFTEVURSddLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgIHJvbGU6ICdjYW5jZWwnLFxuICAgICAgICAgIGNzc0NsYXNzOiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fWUVTX0RFTEVURSddLFxuICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbmZpcm0gPSB0cnVlOyAvLyB1cGRhdGUgdXBwZXIgdmFsdWVcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgICBhd2FpdCBhbGVydC5wcmVzZW50KCk7XG4gICAgYXdhaXQgYWxlcnQub25EaWREaXNtaXNzKCk7XG5cbiAgICBpZiAoY29uZmlybSkgcmV0dXJuIHRydWU7IC8vID0gRG8gc2F2ZSBhbmQgbGVhdmVcblxuICAgIGlmIChjYW5jZWwpIHtcbiAgICAgIC8vIFN0b3AgdGhlIGV2ZW50XG4gICAgICBpZiAoZXZlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIFVzZXIgY2FuY2VsbGVkXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBMZWF2ZSB3aXRob3V0IHNhdmluZ1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGFza1NhdmVCZWZvcmVBY3Rpb24oXG4gICAgYWxlcnRDdHJsOiBBbGVydENvbnRyb2xsZXIsXG4gICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIG9wdHM/OiB7IHZhbGlkPzogYm9vbGVhbjsgdmFsaWRNZXNzYWdlSTE4bj86IHN0cmluZzsgaW52YWxpZE1lc3NhZ2VJMThuPzogc3RyaW5nIH0sXG4gICAgaW50ZXJwb2xhdGVQYXJhbXM/OiBhbnlcbiAgKTogUHJvbWlzZTx7IGNvbmZpcm1lZDogYm9vbGVhbjsgc2F2ZTogYm9vbGVhbiB9IHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IHNhdmUgPSBmYWxzZTtcbiAgICBsZXQgY29uZmlybWVkID0gZmFsc2U7XG4gICAgbGV0IGFsZXJ0OiBIVE1MSW9uQWxlcnRFbGVtZW50O1xuICAgIGNvbnN0IHZhbGlkTWVzc2FnZUkxOG4gPSBvcHRzPy52YWxpZE1lc3NhZ2VJMThuIHx8ICdDT05GSVJNLlNBVkVfQkVGT1JFX0NPTlRJTlVFJztcbiAgICBjb25zdCBpbnZhbGlkTWVzc2FnZUkxOG4gPSBvcHRzPy5pbnZhbGlkTWVzc2FnZUkxOG4gfHwgJ0NPTkZJUk0uQ0FOQ0VMX0NIQU5HRVMnO1xuXG4gICAgLy8gQXNrIHVzZXIgYmVmb3JlIHNhdmVcbiAgICBpZiAob3B0cz8udmFsaWQpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICBbJ0NPTU1PTi5CVE5fQ0FOQ0VMJywgJ0NPTU1PTi5CVE5fU0FWRScsICdDT01NT04uQlROX0FCT1JUX0NIQU5HRVMnLCAnQ09ORklSTS5BTEVSVF9IRUFERVInLCB2YWxpZE1lc3NhZ2VJMThuXSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNcbiAgICAgICk7XG4gICAgICBhbGVydCA9IGF3YWl0IGFsZXJ0Q3RybC5jcmVhdGUoe1xuICAgICAgICBoZWFkZXI6IHRyYW5zbGF0aW9uc1snQ09ORklSTS5BTEVSVF9IRUFERVInXSxcbiAgICAgICAgbWVzc2FnZTogdHJhbnNsYXRpb25zW3ZhbGlkTWVzc2FnZUkxOG5dLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJ10sXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX1NBVkUnXSxcbiAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgc2F2ZSA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHJhbnNsYXRpb25zID0gdHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgIFsnQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJywgJ0NPTU1PTi5CVE5fQ0FOQ0VMJywgJ0NPTkZJUk0uQUxFUlRfSEVBREVSJywgaW52YWxpZE1lc3NhZ2VJMThuXSxcbiAgICAgICAgaW50ZXJwb2xhdGVQYXJhbXNcbiAgICAgICk7XG5cbiAgICAgIGFsZXJ0ID0gYXdhaXQgYWxlcnRDdHJsLmNyZWF0ZSh7XG4gICAgICAgIGhlYWRlcjogdHJhbnNsYXRpb25zWydDT05GSVJNLkFMRVJUX0hFQURFUiddLFxuICAgICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbaW52YWxpZE1lc3NhZ2VJMThuXSxcbiAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6IHRyYW5zbGF0aW9uc1snQ09NTU9OLkJUTl9BQk9SVF9DSEFOR0VTJ10sXG4gICAgICAgICAgICBjc3NDbGFzczogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpcm1lZCA9IHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogdHJhbnNsYXRpb25zWydDT01NT04uQlROX0NBTkNFTCddLFxuICAgICAgICAgICAgcm9sZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7fSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuXG4gICAgcmV0dXJuIHsgY29uZmlybWVkLCBzYXZlIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgc2hvd0Vycm9yKFxuICAgIG1lc3NhZ2VLZXk6IHN0cmluZyxcbiAgICBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgb3B0cz86IHtcbiAgICAgIHRpdGxlS2V5Pzogc3RyaW5nO1xuICAgIH0sXG4gICAgaW50ZXJwb2xhdGVQYXJhbXM/OiBhbnlcbiAgKSB7XG4gICAgaWYgKCFtZXNzYWdlS2V5IHx8ICFhbGVydEN0cmwgfHwgIXRyYW5zbGF0ZSkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBhIHJlcXVpcmVkIGFyZ3VtZW50ICgnbWVzc2FnZUtleScsICdhbGVydEN0cmwnIG9yICd0cmFuc2xhdGUnKVwiKTtcbiAgICBjb25zdCB0aXRsZUtleSA9IChvcHRzICYmIG9wdHMudGl0bGVLZXkpIHx8ICdFUlJPUi5BTEVSVF9IRUFERVInO1xuICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0ZS5pbnN0YW50KFsnQ09NTU9OLkJUTl9PSycsIG1lc3NhZ2VLZXksIHRpdGxlS2V5XSwgaW50ZXJwb2xhdGVQYXJhbXMpO1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgYWxlcnRDdHJsLmNyZWF0ZSh7XG4gICAgICBoZWFkZXI6IHRyYW5zbGF0aW9uc1t0aXRsZUtleV0sXG4gICAgICBtZXNzYWdlOiB0cmFuc2xhdGlvbnNbbWVzc2FnZUtleV0sXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiB0cmFuc2xhdGlvbnNbJ0NPTU1PTi5CVE5fT0snXSxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgYXdhaXQgYWxlcnQucHJlc2VudCgpO1xuICAgIGF3YWl0IGFsZXJ0Lm9uRGlkRGlzbWlzcygpO1xuICB9XG59XG4iXX0=
@@ -1,249 +0,0 @@
1
- import { Injectable, Optional } from '@angular/core';
2
- import { AudioManagement } from '@ionic-native/audio-management/ngx';
3
- import { isNil, sleep, toBoolean } from '../functions';
4
- import { StartableService } from '../services/startable-service.class';
5
- import { Haptics } from '@capacitor/haptics';
6
- import { NativeAudio } from '@capacitor-community/native-audio';
7
- import { Capacitor } from '@capacitor/core';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@ionic/angular";
10
- import * as i2 from "@ionic-native/audio-management/ngx";
11
- const SYSTEM_SOUNDS = [
12
- { assetId: 'startup', assetPath: 'assets/audio/unfa-ping.mp3', vibration: [300, 250, 750] },
13
- { assetId: 'beep-confirm', assetPath: 'assets/audio/beep-confirm.mp3', vibration: 250 },
14
- { assetId: 'beep-error', assetPath: 'assets/audio/beep-error.mp3', vibration: 1000 },
15
- { assetId: 'beep-notification', assetPath: 'assets/audio/beep-notification.mp3', vibration: [450, 150, 450] },
16
- ];
17
- const DEFAULT_AUDIO_MODE_RETURN = {
18
- audioMode: AudioManagement.AudioMode.NORMAL,
19
- label: 'Normal',
20
- };
21
- function audioModeToString(mode) {
22
- switch (mode) {
23
- case AudioManagement.AudioMode.SILENT:
24
- return 'Silent';
25
- case AudioManagement.AudioMode.NORMAL:
26
- return 'Normal';
27
- case AudioManagement.AudioMode.VIBRATE:
28
- return 'Vibrate';
29
- }
30
- }
31
- export class AudioProvider extends StartableService {
32
- platform;
33
- audioManagement;
34
- _audioType;
35
- _audioMode = AudioManagement.AudioMode.NORMAL;
36
- _assetPathPrefix = '';
37
- _preloadedSounds = {};
38
- _htmlAudioCache = {};
39
- constructor(platform, audioManagement) {
40
- super(platform);
41
- this.platform = platform;
42
- this.audioManagement = audioManagement;
43
- console.info(`[audio] Create audio provider`);
44
- }
45
- async ngOnStart() {
46
- const cordova = this.platform.is('cordova');
47
- this._assetPathPrefix = cordova ? 'public/' : '';
48
- this._audioType = cordova && Capacitor.isPluginAvailable('NativeAudio') ? 'native' : 'html5';
49
- console.info(`[audio] Starting audio provider {${this._audioType}}...`);
50
- // Listen audio mode changed
51
- if (cordova && this.audioManagement) {
52
- await this.readAudioMode();
53
- }
54
- // Pre-loading system sounds
55
- console.debug('[audio] Preloading audio sounds...');
56
- let errorCount = 0;
57
- await Promise.all(SYSTEM_SOUNDS.map((s) => {
58
- // Disable vibration in HTML 5 mode
59
- if (this._audioType === 'html5')
60
- s.vibration = undefined;
61
- return this.preload(s).catch((_) => errorCount++);
62
- }));
63
- if (errorCount > 0) {
64
- console.warn('[audio] Preloading audio sounds [OK] with ${errorCount} errors during preload.');
65
- }
66
- else {
67
- console.debug('[audio] Preloading audio sounds [OK]');
68
- }
69
- }
70
- playBeepConfirm() {
71
- return this.play('beep-confirm', {
72
- // Vibrate only if in vibration mode
73
- vibrate: this._audioMode === AudioManagement.AudioMode.VIBRATE,
74
- });
75
- }
76
- playBeepError() {
77
- return this.play('beep-error', {
78
- // Always vibrate (will skip vibration if silent mode)
79
- vibrate: true,
80
- });
81
- }
82
- async playBeepNotification() {
83
- await this.play('beep-notification', {
84
- vibrate: this._audioMode === AudioManagement.AudioMode.VIBRATE,
85
- });
86
- }
87
- async playStartupSound() {
88
- return this.play('startup');
89
- }
90
- async preload(sound) {
91
- if (!sound?.assetId)
92
- return; // Skip
93
- if (this._preloadedSounds[sound.assetId])
94
- return; // Already preloaded
95
- if (isNil(this._audioType))
96
- await this.ready();
97
- const assetPath = (this._assetPathPrefix || '') + sound.assetPath;
98
- console.info(`[audio] Preloading sound '${sound.assetId}', from file '${assetPath}'...`);
99
- try {
100
- if (this._audioType === 'native') {
101
- this._preloadedSounds[sound.assetId] = sound;
102
- await NativeAudio.preload({
103
- audioChannelNum: 1,
104
- isUrl: false,
105
- ...sound,
106
- assetPath,
107
- });
108
- }
109
- else {
110
- this._htmlAudioCache[sound.assetId] = new Audio(assetPath);
111
- this._preloadedSounds[sound.assetId] = sound;
112
- }
113
- // Add to map
114
- console.info(`[audio] Preloading sound '${sound.assetId}' [OK]`);
115
- }
116
- catch (err) {
117
- const errorMsg = err?.message || err;
118
- if (errorMsg === 'Audio Asset already exists') {
119
- console.info(`[audio] Preloading sound '${sound.assetId}': Skipped (${errorMsg})`);
120
- }
121
- else {
122
- this._preloadedSounds[sound.assetId] = null;
123
- console.error(`[audio] Unable to preload sound '${sound.assetId}', from file '${assetPath}': ${errorMsg}\n${err?.originalStack || ''}`);
124
- throw err;
125
- }
126
- }
127
- }
128
- async play(assetId, opts) {
129
- // Make sure provider is ready
130
- if (!this.started)
131
- await this.ready();
132
- const sound = this._preloadedSounds[assetId];
133
- if (!sound) {
134
- throw Error(`Unable to find sound '${assetId}'. Please call preload() before playing a sound.`);
135
- }
136
- // If silent: skip
137
- if (this._audioMode === AudioManagement.AudioMode.SILENT)
138
- return;
139
- const promises = [];
140
- // Normal mode = can play the sound
141
- if (this._audioMode === AudioManagement.AudioMode.NORMAL) {
142
- // Use native audio
143
- if (this._audioType === 'native') {
144
- promises.push(NativeAudio.play({
145
- assetId: sound.assetId,
146
- time: sound.time || 0,
147
- }));
148
- }
149
- // Or HTML 5 audio
150
- else {
151
- const audio = this._htmlAudioCache[assetId] || new Audio(sound.assetPath);
152
- promises.push(audio.play());
153
- }
154
- }
155
- // Vibrate mode: by default make vibration is enable
156
- else if (isNil(sound.vibration) && isNil(opts && opts.vibrate)) {
157
- opts = opts || {};
158
- opts.vibrate = true;
159
- }
160
- // Do vibration (if sound as default vibration, or if user ask for it)
161
- if (toBoolean(opts?.vibrate, !!sound.vibration)) {
162
- promises.push(this.vibrate((opts && opts.vibration) || sound.vibration));
163
- }
164
- return (promises.length === 1 ? promises[0] : Promise.all(promises)).catch((err) => {
165
- console.error(`[audio] Error while playing audio sound '${assetId}': ${(err && err.message) || err}`, err);
166
- });
167
- }
168
- async unload(assetId) {
169
- if (isNil(this._audioType))
170
- await this.ready();
171
- // Remove from map
172
- this._preloadedSounds[assetId] = undefined;
173
- // Native unload
174
- if (this._audioType === 'native') {
175
- try {
176
- await NativeAudio.unload({ assetId });
177
- }
178
- catch (err) {
179
- console.error(`[audio] Unable to unload audio '${assetId}': ${(err && err.message) || err}`, err);
180
- }
181
- }
182
- // HTML5 audio unload
183
- else {
184
- this._htmlAudioCache[assetId].remove();
185
- this._htmlAudioCache[assetId] = undefined;
186
- }
187
- }
188
- /**
189
- *
190
- * @param duration Duration of the vibration in milliseconds.
191
- */
192
- async vibrate(duration) {
193
- if (!this.started)
194
- await this.ready();
195
- if (Array.isArray(duration)) {
196
- if (this._debug)
197
- console.debug('[audio] Vibrate: ' + JSON.stringify(duration));
198
- for (let i = 0; i < duration.length; i++) {
199
- const time = duration[i];
200
- const silent = i % 2 !== 0;
201
- if (silent) {
202
- if (this._debug)
203
- console.debug('[audio] silent during ' + time);
204
- await sleep(time);
205
- }
206
- else {
207
- if (this._debug)
208
- console.debug('[audio] vibrate during ' + time);
209
- await Promise.all([Haptics.vibrate({ duration: time }), sleep(time)]);
210
- }
211
- }
212
- }
213
- else {
214
- if (this._debug)
215
- console.debug('[audio] vibrate during ' + duration);
216
- await Haptics.vibrate({ duration });
217
- }
218
- }
219
- async setAudioMode(mode) {
220
- try {
221
- console.info(`[audio] Changing audio mode to {${audioModeToString(mode)}}`);
222
- await this.audioManagement.setAudioMode(mode);
223
- this._audioMode = mode;
224
- }
225
- catch (err) {
226
- console.error(`[audio] Error while changing audio mode to {${audioModeToString(mode)}}: ${err?.message || err}`, err);
227
- // Continue
228
- }
229
- }
230
- /* -- protected methods -- */
231
- async readAudioMode() {
232
- let value = await this.audioManagement.getAudioMode();
233
- value = {
234
- ...DEFAULT_AUDIO_MODE_RETURN,
235
- ...value,
236
- };
237
- console.debug(`[audio] Detected audio mode {label: '${value.label}', audioMode: ${value.audioMode}}`);
238
- this._audioMode = value.audioMode;
239
- }
240
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AudioProvider, deps: [{ token: i1.Platform }, { token: i2.AudioManagement, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
241
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AudioProvider, providedIn: 'root' });
242
- }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AudioProvider, decorators: [{
244
- type: Injectable,
245
- args: [{ providedIn: 'root' }]
246
- }], ctorParameters: () => [{ type: i1.Platform }, { type: i2.AudioManagement, decorators: [{
247
- type: Optional
248
- }] }] });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9hdWRpby9hdWRpby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBYTVDLE1BQU0sYUFBYSxHQUFZO0lBQzdCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsNEJBQTRCLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtJQUMzRixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLCtCQUErQixFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDdkYsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSw2QkFBNkIsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3BGLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxvQ0FBb0MsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO0NBQzlHLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFvQztJQUNqRSxTQUFTLEVBQUUsZUFBZSxDQUFDLFNB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QUFDO1FBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyx3Q0FBd0MsS0FBSyxDQUFDLEtBQUssaUJBQWlCLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNwQyxDQUFDO3VHQTVOVSxhQUFhOzJHQUFiLGFBQWEsY0FEQSxNQUFNOzsyRkFDbkIsYUFBYTtrQkFEekIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQVc3QixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgQXVkaW9NYW5hZ2VtZW50IH0gZnJvbSAnQGlvbmljLW5hdGl2ZS9hdWRpby1tYW5hZ2VtZW50L25neCc7XG5pbXBvcnQgeyBpc05pbCwgc2xlZXAsIHRvQm9vbGVhbiB9IGZyb20gJy4uL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBTdGFydGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgSGFwdGljcyB9IGZyb20gJ0BjYXBhY2l0b3IvaGFwdGljcyc7XG5pbXBvcnQgeyBOYXRpdmVBdWRpbyB9IGZyb20gJ0BjYXBhY2l0b3ItY29tbXVuaXR5L25hdGl2ZS1hdWRpbyc7XG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBBdWRpb1R5cGUgPSAnaHRtbDUnIHwgJ25hdGl2ZSc7XG5leHBvcnQgaW50ZXJmYWNlIFNvdW5kIHtcbiAgYXNzZXRJZDogc3RyaW5nOyAvLyB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZmlsZVxuICBhc3NldFBhdGg6IHN0cmluZzsgLy8gIHJlbGF0aXZlIHBhdGggb2YgdGhlIGZpbGUgb3IgYWJzb2x1dGUgdXJsIChmaWxlOi8vKVxuICB2b2x1bWU/OiBudW1iZXI7IC8vIFNvdW5kIHZvbHVtZVxuICBpc1VybD86IGJvb2xlYW47IC8vIHBhc3MgdHJ1ZSBpZiBhc3NldFBhdGggaXMgYSBgZmlsZTovL2AgdXJsXG4gIHRpbWU/OiBudW1iZXI7IC8vIHNvdW5kIHNlZWsgdGltZVxuICBhdWRpb0NoYW5uZWxOdW0/OiBudW1iZXI7IC8vIG51bWJlciBvZiBhdWRpbyBjaGFubmVsc1xuICB2aWJyYXRpb24/OiBudW1iZXIgfCBudW1iZXJbXTsgLy8gU2hvdWxkIHZpYnJhdGUgPyBzZXQgZHVyYXRpb25cbn1cblxuY29uc3QgU1lTVEVNX1NPVU5EUzogU291bmRbXSA9IFtcbiAgeyBhc3NldElkOiAnc3RhcnR1cCcsIGFzc2V0UGF0aDogJ2Fzc2V0cy9hdWRpby91bmZhLXBpbmcubXAzJywgdmlicmF0aW9uOiBbMzAwLCAyNTAsIDc1MF0gfSxcbiAgeyBhc3NldElkOiAnYmVlcC1jb25maXJtJywgYXNzZXRQYXRoOiAnYXNzZXRzL2F1ZGlvL2JlZXAtY29uZmlybS5tcDMnLCB2aWJyYXRpb246IDI1MCB9LFxuICB7IGFzc2V0SWQ6ICdiZWVwLWVycm9yJywgYXNzZXRQYXRoOiAnYXNzZXRzL2F1ZGlvL2JlZXAtZXJyb3IubXAzJywgdmlicmF0aW9uOiAxMDAwIH0sXG4gIHsgYXNzZXRJZDogJ2JlZXAtbm90aWZpY2F0aW9uJywgYXNzZXRQYXRoOiAnYXNzZXRzL2F1ZGlvL2JlZXAtbm90aWZpY2F0aW9uLm1wMycsIHZpYnJhdGlvbjogWzQ1MCwgMTUwLCA0NTBdIH0sXG5dO1xuXG5jb25zdCBERUZBVUxUX0FVRElPX01PREVfUkVUVVJOOiBBdWRpb01hbmFnZW1lbnQuQXVkaW9Nb2RlUmV0dXJuID0ge1xuICBhdWRpb01vZGU6IEF1ZGlvTWFuYWdlbWVudC5BdWRpb01vZGUuTk9STUFMLFxuICBsYWJlbDogJ05vcm1hbCcsXG59O1xuXG5mdW5jdGlvbiBhdWRpb01vZGVUb1N0cmluZyhtb2RlOiBBdWRpb01hbmFnZW1lbnQuQXVkaW9Nb2RlKSB7XG4gIHN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgQXVkaW9NYW5hZ2VtZW50LkF1ZGlvTW9kZS5TSUxFTlQ6XG4gICAgICByZXR1cm4gJ1NpbGVudCc7XG4gICAgY2FzZSBBdWRpb01hbmFnZW1lbnQuQXVkaW9Nb2RlLk5PUk1BTDpcbiAgICAgIHJldHVybiAnTm9ybWFsJztcbiAgICBjYXNlIEF1ZGlvTWFuYWdlbWVudC5BdWRpb01vZGUuVklCUkFURTpcbiAgICAgIHJldHVybiAnVmlicmF0ZSc7XG4gIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdWRpb1Byb3ZpZGVyIGV4dGVuZHMgU3RhcnRhYmxlU2VydmljZTx2b2lkPiB7XG4gIHByaXZhdGUgX2F1ZGlvVHlwZTogQXVkaW9UeXBlO1xuICBwcml2YXRlIF9hdWRpb01vZGU6IEF1ZGlvTWFuYWdlbWVudC5BdWRpb01vZGUgPSBBdWRpb01hbmFnZW1lbnQuQXVkaW9Nb2RlLk5PUk1BTDtcbiAgcHJpdmF0ZSBfYXNzZXRQYXRoUHJlZml4ID0gJyc7XG5cbiAgcHJpdmF0ZSBfcHJlbG9hZGVkU291bmRzOiB7IFtpZDogc3RyaW5nXTogU291bmQgfSA9IHt9O1xuICBwcml2YXRlIF9odG1sQXVkaW9DYWNoZTogeyBbaWQ6IHN0cmluZ106IEhUTUxBdWRpb0VsZW1lbnQgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBhdWRpb01hbmFnZW1lbnQ6IEF1ZGlvTWFuYWdlbWVudFxuICApIHtcbiAgICBzdXBlcihwbGF0Zm9ybSk7XG4gICAgY29uc29sZS5pbmZvKGBbYXVkaW9dIENyZWF0ZSBhdWRpbyBwcm92aWRlcmApO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjb3Jkb3ZhID0gdGhpcy5wbGF0Zm9ybS5pcygnY29yZG92YScpO1xuICAgIHRoaXMuX2Fzc2V0UGF0aFByZWZpeCA9IGNvcmRvdmEgPyAncHVibGljLycgOiAnJztcbiAgICB0aGlzLl9hdWRpb1R5cGUgPSBjb3Jkb3ZhICYmIENhcGFjaXRvci5pc1BsdWdpbkF2YWlsYWJsZSgnTmF0aXZlQXVkaW8nKSA/ICduYXRpdmUnIDogJ2h0bWw1JztcbiAgICBjb25zb2xlLmluZm8oYFthdWRpb10gU3RhcnRpbmcgYXVkaW8gcHJvdmlkZXIgeyR7dGhpcy5fYXVkaW9UeXBlfX0uLi5gKTtcblxuICAgIC8vIExpc3RlbiBhdWRpbyBtb2RlIGNoYW5nZWRcbiAgICBpZiAoY29yZG92YSAmJiB0aGlzLmF1ZGlvTWFuYWdlbWVudCkge1xuICAgICAgYXdhaXQgdGhpcy5yZWFkQXVkaW9Nb2RlKCk7XG4gICAgfVxuXG4gICAgLy8gUHJlLWxvYWRpbmcgc3lzdGVtIHNvdW5kc1xuICAgIGNvbnNvbGUuZGVidWcoJ1thdWRpb10gUHJlbG9hZGluZyBhdWRpbyBzb3VuZHMuLi4nKTtcbiAgICBsZXQgZXJyb3JDb3VudCA9IDA7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBTWVNURU1fU09VTkRTLm1hcCgocykgPT4ge1xuICAgICAgICAvLyBEaXNhYmxlIHZpYnJhdGlvbiBpbiBIVE1MIDUgbW9kZVxuICAgICAgICBpZiAodGhpcy5fYXVkaW9UeXBlID09PSAnaHRtbDUnKSBzLnZpYnJhdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJlbG9hZChzKS5jYXRjaCgoXykgPT4gZXJyb3JDb3VudCsrKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmIChlcnJvckNvdW50ID4gMCkge1xuICAgICAgY29uc29sZS53YXJuKCdbYXVkaW9dIFByZWxvYWRpbmcgYXVkaW8gc291bmRzIFtPS10gd2l0aCAke2Vycm9yQ291bnR9IGVycm9ycyBkdXJpbmcgcHJlbG9hZC4nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2F1ZGlvXSBQcmVsb2FkaW5nIGF1ZGlvIHNvdW5kcyBbT0tdJyk7XG4gICAgfVxuICB9XG5cbiAgcGxheUJlZXBDb25maXJtKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGxheSgnYmVlcC1jb25maXJtJywge1xuICAgICAgLy8gVmlicmF0ZSBvbmx5IGlmIGluIHZpYnJhdGlvbiBtb2RlXG4gICAgICB2aWJyYXRlOiB0aGlzLl9hdWRpb01vZGUgPT09IEF1ZGlvTWFuYWdlbWVudC5BdWRpb01vZGUuVklCUkFURSxcbiAgICB9KTtcbiAgfVxuXG4gIHBsYXlCZWVwRXJyb3IoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wbGF5KCdiZWVwLWVycm9yJywge1xuICAgICAgLy8gQWx3YXlzIHZpYnJhdGUgKHdpbGwgc2tpcCB2aWJyYXRpb24gaWYgc2lsZW50IG1vZGUpXG4gICAgICB2aWJyYXRlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcGxheUJlZXBOb3RpZmljYXRpb24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICBhd2FpdCB0aGlzLnBsYXkoJ2JlZXAtbm90aWZpY2F0aW9uJywge1xuICAgICAgdmlicmF0ZTogdGhpcy5fYXVkaW9Nb2RlID09PSBBdWRpb01hbmFnZW1lbnQuQXVkaW9Nb2RlLlZJQlJBVEUsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBwbGF5U3RhcnR1cFNvdW5kKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucGxheSgnc3RhcnR1cCcpO1xuICB9XG5cbiAgYXN5bmMgcHJlbG9hZChzb3VuZDogU291bmQpIHtcbiAgICBpZiAoIXNvdW5kPy5hc3NldElkKSByZXR1cm47IC8vIFNraXBcbiAgICBpZiAodGhpcy5fcHJlbG9hZGVkU291bmRzW3NvdW5kLmFzc2V0SWRdKSByZXR1cm47IC8vIEFscmVhZHkgcHJlbG9hZGVkXG4gICAgaWYgKGlzTmlsKHRoaXMuX2F1ZGlvVHlwZSkpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGNvbnN0IGFzc2V0UGF0aCA9ICh0aGlzLl9hc3NldFBhdGhQcmVmaXggfHwgJycpICsgc291bmQuYXNzZXRQYXRoO1xuICAgIGNvbnNvbGUuaW5mbyhgW2F1ZGlvXSBQcmVsb2FkaW5nIHNvdW5kICcke3NvdW5kLmFzc2V0SWR9JywgZnJvbSBmaWxlICcke2Fzc2V0UGF0aH0nLi4uYCk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMuX2F1ZGlvVHlwZSA9PT0gJ25hdGl2ZScpIHtcbiAgICAgICAgdGhpcy5fcHJlbG9hZGVkU291bmRzW3NvdW5kLmFzc2V0SWRdID0gc291bmQ7XG4gICAgICAgIGF3YWl0IE5hdGl2ZUF1ZGlvLnByZWxvYWQoe1xuICAgICAgICAgIGF1ZGlvQ2hhbm5lbE51bTogMSxcbiAgICAgICAgICBpc1VybDogZmFsc2UsXG4gICAgICAgICAgLi4uc291bmQsXG4gICAgICAgICAgYXNzZXRQYXRoLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2h0bWxBdWRpb0NhY2hlW3NvdW5kLmFzc2V0SWRdID0gbmV3IEF1ZGlvKGFzc2V0UGF0aCk7XG4gICAgICAgIHRoaXMuX3ByZWxvYWRlZFNvdW5kc1tzb3VuZC5hc3NldElkXSA9IHNvdW5kO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgdG8gbWFwXG4gICAgICBjb25zb2xlLmluZm8oYFthdWRpb10gUHJlbG9hZGluZyBzb3VuZCAnJHtzb3VuZC5hc3NldElkfScgW09LXWApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc3QgZXJyb3JNc2cgPSBlcnI/Lm1lc3NhZ2UgfHwgZXJyO1xuICAgICAgaWYgKGVycm9yTXNnID09PSAnQXVkaW8gQXNzZXQgYWxyZWFkeSBleGlzdHMnKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhgW2F1ZGlvXSBQcmVsb2FkaW5nIHNvdW5kICcke3NvdW5kLmFzc2V0SWR9JzogU2tpcHBlZCAoJHtlcnJvck1zZ30pYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wcmVsb2FkZWRTb3VuZHNbc291bmQuYXNzZXRJZF0gPSBudWxsO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBbYXVkaW9dIFVuYWJsZSB0byBwcmVsb2FkIHNvdW5kICcke3NvdW5kLmFzc2V0SWR9JywgZnJvbSBmaWxlICcke2Fzc2V0UGF0aH0nOiAke2Vycm9yTXNnfVxcbiR7ZXJyPy5vcmlnaW5hbFN0YWNrIHx8ICcnfWApO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcGxheShhc3NldElkOiBzdHJpbmcsIG9wdHM/OiB7IHZpYnJhdGU/OiBib29sZWFuOyB2aWJyYXRpb24/OiBudW1iZXIgfCBudW1iZXJbXSB9KSB7XG4gICAgLy8gTWFrZSBzdXJlIHByb3ZpZGVyIGlzIHJlYWR5XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcblxuICAgIGNvbnN0IHNvdW5kID0gdGhpcy5fcHJlbG9hZGVkU291bmRzW2Fzc2V0SWRdO1xuICAgIGlmICghc291bmQpIHtcbiAgICAgIHRocm93IEVycm9yKGBVbmFibGUgdG8gZmluZCBzb3VuZCAnJHthc3NldElkfScuIFBsZWFzZSBjYWxsIHByZWxvYWQoKSBiZWZvcmUgcGxheWluZyBhIHNvdW5kLmApO1xuICAgIH1cblxuICAgIC8vIElmIHNpbGVudDogc2tpcFxuICAgIGlmICh0aGlzLl9hdWRpb01vZGUgPT09IEF1ZGlvTWFuYWdlbWVudC5BdWRpb01vZGUuU0lMRU5UKSByZXR1cm47XG5cbiAgICBjb25zdCBwcm9taXNlczogUHJvbWlzZTxhbnk+W10gPSBbXTtcblxuICAgIC8vIE5vcm1hbCBtb2RlID0gY2FuIHBsYXkgdGhlIHNvdW5kXG4gICAgaWYgKHRoaXMuX2F1ZGlvTW9kZSA9PT0gQXVkaW9NYW5hZ2VtZW50LkF1ZGlvTW9kZS5OT1JNQUwpIHtcbiAgICAgIC8vIFVzZSBuYXRpdmUgYXVkaW9cbiAgICAgIGlmICh0aGlzLl9hdWRpb1R5cGUgPT09ICduYXRpdmUnKSB7XG4gICAgICAgIHByb21pc2VzLnB1c2goXG4gICAgICAgICAgTmF0aXZlQXVkaW8ucGxheSh7XG4gICAgICAgICAgICBhc3NldElkOiBzb3VuZC5hc3NldElkLFxuICAgICAgICAgICAgdGltZTogc291bmQudGltZSB8fCAwLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICAvLyBPciBIVE1MIDUgYXVkaW9cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBhdWRpbyA9IHRoaXMuX2h0bWxBdWRpb0NhY2hlW2Fzc2V0SWRdIHx8IG5ldyBBdWRpbyhzb3VuZC5hc3NldFBhdGgpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGF1ZGlvLnBsYXkoKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVmlicmF0ZSBtb2RlOiBieSBkZWZhdWx0IG1ha2UgdmlicmF0aW9uIGlzIGVuYWJsZVxuICAgIGVsc2UgaWYgKGlzTmlsKHNvdW5kLnZpYnJhdGlvbikgJiYgaXNOaWwob3B0cyAmJiBvcHRzLnZpYnJhdGUpKSB7XG4gICAgICBvcHRzID0gb3B0cyB8fCB7fTtcbiAgICAgIG9wdHMudmlicmF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gRG8gdmlicmF0aW9uIChpZiBzb3VuZCBhcyBkZWZhdWx0IHZpYnJhdGlvbiwgb3IgaWYgdXNlciBhc2sgZm9yIGl0KVxuICAgIGlmICh0b0Jvb2xlYW4ob3B0cz8udmlicmF0ZSwgISFzb3VuZC52aWJyYXRpb24pKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKHRoaXMudmlicmF0ZSgob3B0cyAmJiBvcHRzLnZpYnJhdGlvbikgfHwgc291bmQudmlicmF0aW9uKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChwcm9taXNlcy5sZW5ndGggPT09IDEgPyBwcm9taXNlc1swXSA6IFByb21pc2UuYWxsKHByb21pc2VzKSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihgW2F1ZGlvXSBFcnJvciB3aGlsZSBwbGF5aW5nIGF1ZGlvIHNvdW5kICcke2Fzc2V0SWR9JzogJHsoZXJyICYmIGVyci5tZXNzYWdlKSB8fCBlcnJ9YCwgZXJyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVubG9hZChhc3NldElkOiBzdHJpbmcpIHtcbiAgICBpZiAoaXNOaWwodGhpcy5fYXVkaW9UeXBlKSkgYXdhaXQgdGhpcy5yZWFkeSgpO1xuXG4gICAgLy8gUmVtb3ZlIGZyb20gbWFwXG4gICAgdGhpcy5fcHJlbG9hZGVkU291bmRzW2Fzc2V0SWRdID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gTmF0aXZlIHVubG9hZFxuICAgIGlmICh0aGlzLl9hdWRpb1R5cGUgPT09ICduYXRpdmUnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBOYXRpdmVBdWRpby51bmxvYWQoeyBhc3NldElkIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFthdWRpb10gVW5hYmxlIHRvIHVubG9hZCBhdWRpbyAnJHthc3NldElkfSc6ICR7KGVyciAmJiBlcnIubWVzc2FnZSkgfHwgZXJyfWAsIGVycik7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhUTUw1IGF1ZGlvIHVubG9hZFxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5faHRtbEF1ZGlvQ2FjaGVbYXNzZXRJZF0ucmVtb3ZlKCk7XG4gICAgICB0aGlzLl9odG1sQXVkaW9DYWNoZVthc3NldElkXSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGR1cmF0aW9uIER1cmF0aW9uIG9mIHRoZSB2aWJyYXRpb24gaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgYXN5bmMgdmlicmF0ZShkdXJhdGlvbj86IG51bWJlciB8IG51bWJlcltdKSB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0ZWQpIGF3YWl0IHRoaXMucmVhZHkoKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkdXJhdGlvbikpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2F1ZGlvXSBWaWJyYXRlOiAnICsgSlNPTi5zdHJpbmdpZnkoZHVyYXRpb24pKTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZHVyYXRpb24ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgdGltZSA9IGR1cmF0aW9uW2ldO1xuICAgICAgICBjb25zdCBzaWxlbnQgPSBpICUgMiAhPT0gMDtcbiAgICAgICAgaWYgKHNpbGVudCkge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2F1ZGlvXSBzaWxlbnQgZHVyaW5nICcgKyB0aW1lKTtcbiAgICAgICAgICBhd2FpdCBzbGVlcCh0aW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdWRpb10gdmlicmF0ZSBkdXJpbmcgJyArIHRpbWUpO1xuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtIYXB0aWNzLnZpYnJhdGUoeyBkdXJhdGlvbjogdGltZSB9KSwgc2xlZXAodGltZSldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdWRpb10gdmlicmF0ZSBkdXJpbmcgJyArIGR1cmF0aW9uKTtcbiAgICAgIGF3YWl0IEhhcHRpY3MudmlicmF0ZSh7IGR1cmF0aW9uIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldEF1ZGlvTW9kZShtb2RlOiBBdWRpb01hbmFnZW1lbnQuQXVkaW9Nb2RlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUuaW5mbyhgW2F1ZGlvXSBDaGFuZ2luZyBhdWRpbyBtb2RlIHRvIHske2F1ZGlvTW9kZVRvU3RyaW5nKG1vZGUpfX1gKTtcbiAgICAgIGF3YWl0IHRoaXMuYXVkaW9NYW5hZ2VtZW50LnNldEF1ZGlvTW9kZShtb2RlKTtcbiAgICAgIHRoaXMuX2F1ZGlvTW9kZSA9IG1vZGU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBbYXVkaW9dIEVycm9yIHdoaWxlIGNoYW5naW5nIGF1ZGlvIG1vZGUgdG8geyR7YXVkaW9Nb2RlVG9TdHJpbmcobW9kZSl9fTogJHtlcnI/Lm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAvLyBDb250aW51ZVxuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzICAtLSAqL1xuXG4gIHByb3RlY3RlZCBhc3luYyByZWFkQXVkaW9Nb2RlKCkge1xuICAgIGxldCB2YWx1ZSA9IGF3YWl0IHRoaXMuYXVkaW9NYW5hZ2VtZW50LmdldEF1ZGlvTW9kZSgpO1xuICAgIHZhbHVlID0ge1xuICAgICAgLi4uREVGQVVMVF9BVURJT19NT0RFX1JFVFVSTixcbiAgICAgIC4uLnZhbHVlLFxuICAgIH07XG4gICAgY29uc29sZS5kZWJ1ZyhgW2F1ZGlvXSBEZXRlY3RlZCBhdWRpbyBtb2RlIHtsYWJlbDogJyR7dmFsdWUubGFiZWx9JywgYXVkaW9Nb2RlOiAke3ZhbHVlLmF1ZGlvTW9kZX19YCk7XG4gICAgdGhpcy5fYXVkaW9Nb2RlID0gdmFsdWUuYXVkaW9Nb2RlO1xuICB9XG59XG4iXX0=
@@ -1,32 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./audio";
4
- import * as i2 from "@ionic/angular";
5
- export class AudioTestingPage {
6
- audio;
7
- constructor(audio) {
8
- this.audio = audio;
9
- }
10
- playBeepConfirm() {
11
- return this.audio.playBeepConfirm();
12
- }
13
- playBeepError() {
14
- return this.audio.playBeepError();
15
- }
16
- playStartupSound() {
17
- return this.audio.playStartupSound();
18
- }
19
- playBeepNotification() {
20
- return this.audio.playBeepNotification();
21
- }
22
- vibrate(duration) {
23
- return this.audio.vibrate(duration || [1000, 500, 1000, 500, 1000]);
24
- }
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AudioTestingPage, deps: [{ token: i1.AudioProvider }], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: AudioTestingPage, selector: "audio-testing", ngImport: i0, template: "<ion-toolbar color=\"primary\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"playStartupSound()\" color=\"dark\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Startup\n </ion-button>\n\n <ion-button (click)=\"playBeepConfirm()\" color=\"success\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Confirmation\n </ion-button>\n\n <ion-button (click)=\"playBeepNotification()\" color=\"tertiary\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Notification\n </ion-button>\n\n <ion-button (click)=\"playBeepError()\" color=\"accent\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Error\n </ion-button>\n\n <ion-button (click)=\"vibrate()\" color=\"accent\">Vibrate (many time)</ion-button>\n</ion-content>\n", dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }] });
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: AudioTestingPage, decorators: [{
29
- type: Component,
30
- args: [{ selector: 'audio-testing', template: "<ion-toolbar color=\"primary\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"playStartupSound()\" color=\"dark\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Startup\n </ion-button>\n\n <ion-button (click)=\"playBeepConfirm()\" color=\"success\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Confirmation\n </ion-button>\n\n <ion-button (click)=\"playBeepNotification()\" color=\"tertiary\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Notification\n </ion-button>\n\n <ion-button (click)=\"playBeepError()\" color=\"accent\">\n <ion-icon name=\"play\" slot=\"start\"></ion-icon>\n Error\n </ion-button>\n\n <ion-button (click)=\"vibrate()\" color=\"accent\">Vibrate (many time)</ion-button>\n</ion-content>\n" }]
31
- }], ctorParameters: () => [{ type: i1.AudioProvider }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8udGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2F1ZGlvL2F1ZGlvLnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9hdWRpby9hdWRpby50ZXN0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU8xQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1A7SUFBcEIsWUFBb0IsS0FBb0I7UUFBcEIsVUFBSyxHQUFMLEtBQUssQ0FBZTtJQUFHLENBQUM7SUFFNUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQTRCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQzt1R0FsQlUsZ0JBQWdCOzJGQUFoQixnQkFBZ0IscURDUDdCLHUyQkE2QkE7OzJGRHRCYSxnQkFBZ0I7a0JBSjVCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXVkaW9Qcm92aWRlciB9IGZyb20gJy4vYXVkaW8nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWRpby10ZXN0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICdhdWRpby50ZXN0aW5nLmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBdWRpb1Rlc3RpbmdQYWdlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhdWRpbzogQXVkaW9Qcm92aWRlcikge31cblxuICBwbGF5QmVlcENvbmZpcm0oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXVkaW8ucGxheUJlZXBDb25maXJtKCk7XG4gIH1cbiAgcGxheUJlZXBFcnJvcigpIHtcbiAgICByZXR1cm4gdGhpcy5hdWRpby5wbGF5QmVlcEVycm9yKCk7XG4gIH1cbiAgcGxheVN0YXJ0dXBTb3VuZCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdWRpby5wbGF5U3RhcnR1cFNvdW5kKCk7XG4gIH1cbiAgcGxheUJlZXBOb3RpZmljYXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYXVkaW8ucGxheUJlZXBOb3RpZmljYXRpb24oKTtcbiAgfVxuXG4gIHZpYnJhdGUoZHVyYXRpb24/OiBudW1iZXIgfCBudW1iZXJbXSkge1xuICAgIHJldHVybiB0aGlzLmF1ZGlvLnZpYnJhdGUoZHVyYXRpb24gfHwgWzEwMDAsIDUwMCwgMTAwMCwgNTAwLCAxMDAwXSk7XG4gIH1cbn1cbiIsIjxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgPGlvbi10aXRsZT5Ub2FzdHM8L2lvbi10aXRsZT5cbjwvaW9uLXRvb2xiYXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gIDxwPlRvYXN0IGV4YW1wbGVzOjwvcD5cblxuICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicGxheVN0YXJ0dXBTb3VuZCgpXCIgY29sb3I9XCJkYXJrXCI+XG4gICAgPGlvbi1pY29uIG5hbWU9XCJwbGF5XCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICBTdGFydHVwXG4gIDwvaW9uLWJ1dHRvbj5cblxuICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwicGxheUJlZXBDb25maXJtKClcIiBjb2xvcj1cInN1Y2Nlc3NcIj5cbiAgICA8aW9uLWljb24gbmFtZT1cInBsYXlcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgIENvbmZpcm1hdGlvblxuICA8L2lvbi1idXR0b24+XG5cbiAgPGlvbi1idXR0b24gKGNsaWNrKT1cInBsYXlCZWVwTm90aWZpY2F0aW9uKClcIiBjb2xvcj1cInRlcnRpYXJ5XCI+XG4gICAgPGlvbi1pY29uIG5hbWU9XCJwbGF5XCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICBOb3RpZmljYXRpb25cbiAgPC9pb24tYnV0dG9uPlxuXG4gIDxpb24tYnV0dG9uIChjbGljayk9XCJwbGF5QmVlcEVycm9yKClcIiBjb2xvcj1cImFjY2VudFwiPlxuICAgIDxpb24taWNvbiBuYW1lPVwicGxheVwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XG4gICAgRXJyb3JcbiAgPC9pb24tYnV0dG9uPlxuXG4gIDxpb24tYnV0dG9uIChjbGljayk9XCJ2aWJyYXRlKClcIiBjb2xvcj1cImFjY2VudFwiPlZpYnJhdGUgKG1hbnkgdGltZSk8L2lvbi1idXR0b24+XG48L2lvbi1jb250ZW50PlxuIl19