@sumaris-net/ngx-components 18.23.62 → 21.0.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 (799) hide show
  1. package/README.md +2 -0
  2. package/doc/build.md +3 -5
  3. package/fesm2022/sumaris-net.ngx-components.mjs +2383 -2150
  4. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
  5. package/package.json +15 -15
  6. package/src/assets/environments/environment-test.json +2 -2
  7. package/src/assets/i18n/en-US.json +4 -1
  8. package/src/assets/i18n/en.json +4 -1
  9. package/src/assets/i18n/fr.json +10 -6
  10. package/src/assets/manifest.json +1 -1
  11. package/src/theme/_icons.scss +8 -12
  12. package/src/theme/_ionic.globals.scss +8 -1
  13. package/src/theme/_material.globals.scss +4 -1
  14. package/src/theme/_material.scss +16 -13
  15. package/src/theme/_mixins.scss +7 -1
  16. package/src/theme/_ngx-components.forms.scss +87 -84
  17. package/src/theme/_ngx-components.globals.scss +2 -0
  18. package/src/theme/_ngx-components.scss +19 -4
  19. package/src/theme/_ngx-components.table.scss +31 -26
  20. package/src/theme/_ngx-components.tabs.scss +16 -14
  21. package/src/theme/_responsive.scss +2 -0
  22. package/src/theme/_roboto.scss +3 -0
  23. package/src/theme/_theme.scss +11 -14
  24. package/src/theme/_theme.variables.scss +6 -1
  25. package/src/theme/ionic/ionic.functions.color.scss +13 -5
  26. package/src/theme/ionic/ionic.globals.scss +4 -4
  27. package/src/theme/ionic/ionic.theme.default.scss +2 -0
  28. package/types/sumaris-net.ngx-components.d.ts +14132 -0
  29. package/esm2022/public_api.mjs +0 -403
  30. package/esm2022/src/app/admin/admin-routing.module.mjs +0 -34
  31. package/esm2022/src/app/admin/admin.module.mjs +0 -32
  32. package/esm2022/src/app/admin/users/person.filter.mjs +0 -157
  33. package/esm2022/src/app/admin/users/person.service.mjs +0 -226
  34. package/esm2022/src/app/admin/users/person.validator.mjs +0 -78
  35. package/esm2022/src/app/admin/users/users-select.modal.mjs +0 -167
  36. package/esm2022/src/app/admin/users/users.mjs +0 -502
  37. package/esm2022/src/app/admin/users/users.module.mjs +0 -59
  38. package/esm2022/src/app/admin/users/users.utils.mjs +0 -29
  39. package/esm2022/src/app/core/about/about.modal.mjs +0 -119
  40. package/esm2022/src/app/core/about/about.module.mjs +0 -22
  41. package/esm2022/src/app/core/account/account.module.mjs +0 -75
  42. package/esm2022/src/app/core/account/account.page.mjs +0 -426
  43. package/esm2022/src/app/core/account/new-token.form.mjs +0 -109
  44. package/esm2022/src/app/core/account/new-token.modal.mjs +0 -66
  45. package/esm2022/src/app/core/account/password/change-password.form.mjs +0 -63
  46. package/esm2022/src/app/core/account/password/change-password.module.mjs +0 -22
  47. package/esm2022/src/app/core/account/password/change-password.page.mjs +0 -150
  48. package/esm2022/src/app/core/account/token.table.mjs +0 -160
  49. package/esm2022/src/app/core/auth/auth.form.mjs +0 -159
  50. package/esm2022/src/app/core/auth/auth.modal.mjs +0 -76
  51. package/esm2022/src/app/core/auth/auth.module.mjs +0 -56
  52. package/esm2022/src/app/core/auth/reset-password.modal.mjs +0 -89
  53. package/esm2022/src/app/core/core.module.mjs +0 -157
  54. package/esm2022/src/app/core/core.testing.module.mjs +0 -128
  55. package/esm2022/src/app/core/form/array/form-array.mjs +0 -328
  56. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +0 -23
  57. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +0 -97
  58. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -111
  59. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +0 -31
  60. package/esm2022/src/app/core/form/entity/editor.class.mjs +0 -268
  61. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -420
  62. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +0 -748
  63. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +0 -25
  64. package/esm2022/src/app/core/form/entity/entity.module.mjs +0 -33
  65. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +0 -190
  66. package/esm2022/src/app/core/form/form-container.class.mjs +0 -347
  67. package/esm2022/src/app/core/form/form.class.mjs +0 -342
  68. package/esm2022/src/app/core/form/form.module.mjs +0 -77
  69. package/esm2022/src/app/core/form/form.utils.mjs +0 -238
  70. package/esm2022/src/app/core/form/list/list.form.mjs +0 -243
  71. package/esm2022/src/app/core/form/list/list.module.mjs +0 -31
  72. package/esm2022/src/app/core/form/properties/properties-file.service.mjs +0 -133
  73. package/esm2022/src/app/core/form/properties/properties.form.mjs +0 -397
  74. package/esm2022/src/app/core/form/properties/properties.module.mjs +0 -85
  75. package/esm2022/src/app/core/form/properties/properties.table.mjs +0 -267
  76. package/esm2022/src/app/core/form/properties/properties.utils.mjs +0 -304
  77. package/esm2022/src/app/core/form/properties/property.validator.mjs +0 -70
  78. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +0 -103
  79. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +0 -23
  80. package/esm2022/src/app/core/form/text/testing/text-form.testing.mjs +0 -42
  81. package/esm2022/src/app/core/form/text/testing/text-form.testing.module.mjs +0 -25
  82. package/esm2022/src/app/core/form/text/text-form.component.mjs +0 -205
  83. package/esm2022/src/app/core/form/text/text-form.module.mjs +0 -31
  84. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -73
  85. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +0 -22
  86. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +0 -164
  87. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +0 -32
  88. package/esm2022/src/app/core/form/username/username.form.mjs +0 -55
  89. package/esm2022/src/app/core/form/username/username.module.mjs +0 -20
  90. package/esm2022/src/app/core/graphql/graphql.module.mjs +0 -14
  91. package/esm2022/src/app/core/graphql/graphql.service.mjs +0 -781
  92. package/esm2022/src/app/core/graphql/graphql.utils.mjs +0 -119
  93. package/esm2022/src/app/core/home/home.mjs +0 -472
  94. package/esm2022/src/app/core/home/home.module.mjs +0 -54
  95. package/esm2022/src/app/core/icon/icon.component.mjs +0 -40
  96. package/esm2022/src/app/core/icon/icon.module.mjs +0 -20
  97. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +0 -394
  98. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +0 -31
  99. package/esm2022/src/app/core/menu/menu.component.mjs +0 -273
  100. package/esm2022/src/app/core/menu/menu.model.mjs +0 -327
  101. package/esm2022/src/app/core/menu/menu.module.mjs +0 -47
  102. package/esm2022/src/app/core/menu/menu.service.mjs +0 -666
  103. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +0 -113
  104. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +0 -51
  105. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +0 -165
  106. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +0 -60
  107. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +0 -28
  108. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +0 -31
  109. package/esm2022/src/app/core/peer/select-peer.modal.mjs +0 -350
  110. package/esm2022/src/app/core/peer/select-peer.module.mjs +0 -36
  111. package/esm2022/src/app/core/register/register-confirm.page.mjs +0 -90
  112. package/esm2022/src/app/core/register/register.form.mjs +0 -197
  113. package/esm2022/src/app/core/register/register.modal.mjs +0 -55
  114. package/esm2022/src/app/core/register/register.module.mjs +0 -23
  115. package/esm2022/src/app/core/services/account.service.mjs +0 -1403
  116. package/esm2022/src/app/core/services/auth-guard.service.mjs +0 -74
  117. package/esm2022/src/app/core/services/base-entity-service.class.mjs +0 -499
  118. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +0 -224
  119. package/esm2022/src/app/core/services/base58.mjs +0 -83
  120. package/esm2022/src/app/core/services/config/core.config.mjs +0 -293
  121. package/esm2022/src/app/core/services/config.service.mjs +0 -384
  122. package/esm2022/src/app/core/services/crypto.service.mjs +0 -107
  123. package/esm2022/src/app/core/services/errors.mjs +0 -54
  124. package/esm2022/src/app/core/services/local-settings.service.mjs +0 -540
  125. package/esm2022/src/app/core/services/model/account.model.mjs +0 -192
  126. package/esm2022/src/app/core/services/model/config.model.mjs +0 -111
  127. package/esm2022/src/app/core/services/model/department.model.mjs +0 -35
  128. package/esm2022/src/app/core/services/model/entity.decorators.mjs +0 -97
  129. package/esm2022/src/app/core/services/model/entity.model.mjs +0 -347
  130. package/esm2022/src/app/core/services/model/filter.model.mjs +0 -169
  131. package/esm2022/src/app/core/services/model/history.model.mjs +0 -2
  132. package/esm2022/src/app/core/services/model/model.enum.mjs +0 -11
  133. package/esm2022/src/app/core/services/model/node-feature.model.mjs +0 -31
  134. package/esm2022/src/app/core/services/model/peer.model.mjs +0 -114
  135. package/esm2022/src/app/core/services/model/person.model.mjs +0 -118
  136. package/esm2022/src/app/core/services/model/referential.model.mjs +0 -207
  137. package/esm2022/src/app/core/services/model/settings.model.mjs +0 -6
  138. package/esm2022/src/app/core/services/model/token.model.mjs +0 -57
  139. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +0 -234
  140. package/esm2022/src/app/core/services/network.service.mjs +0 -759
  141. package/esm2022/src/app/core/services/network.types.mjs +0 -2
  142. package/esm2022/src/app/core/services/network.utils.mjs +0 -35
  143. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +0 -38
  144. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +0 -23
  145. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +0 -23
  146. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +0 -58
  147. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +0 -36
  148. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +0 -37
  149. package/esm2022/src/app/core/services/platform.service.mjs +0 -780
  150. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +0 -427
  151. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +0 -450
  152. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +0 -25
  153. package/esm2022/src/app/core/services/testing/referential.validator.mjs +0 -46
  154. package/esm2022/src/app/core/services/validator/account.validator.mjs +0 -46
  155. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +0 -49
  156. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +0 -57
  157. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +0 -27
  158. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +0 -55
  159. package/esm2022/src/app/core/settings/settings.module.mjs +0 -23
  160. package/esm2022/src/app/core/settings/settings.page.mjs +0 -406
  161. package/esm2022/src/app/core/table/async-table.class.mjs +0 -1882
  162. package/esm2022/src/app/core/table/column/actions-column.component.mjs +0 -137
  163. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +0 -120
  164. package/esm2022/src/app/core/table/column/row-field.component.mjs +0 -116
  165. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +0 -415
  166. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +0 -407
  167. package/esm2022/src/app/core/table/memory-table.class.mjs +0 -57
  168. package/esm2022/src/app/core/table/table-select-columns.component.mjs +0 -46
  169. package/esm2022/src/app/core/table/table.class.mjs +0 -1918
  170. package/esm2022/src/app/core/table/table.model.mjs +0 -21
  171. package/esm2022/src/app/core/table/table.module.mjs +0 -51
  172. package/esm2022/src/app/core/table/table.pipes.mjs +0 -76
  173. package/esm2022/src/app/core/table/table.utils.mjs +0 -34
  174. package/esm2022/src/app/core/table/testing/nested-table.testing.mjs +0 -326
  175. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +0 -32
  176. package/esm2022/src/app/core/table/testing/table.testing.mjs +0 -342
  177. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +0 -47
  178. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +0 -25
  179. package/esm2022/src/app/core/table/testing/table2.testing.mjs +0 -322
  180. package/esm2022/src/app/shared/alerts.mjs +0 -243
  181. package/esm2022/src/app/shared/audio/audio.mjs +0 -255
  182. package/esm2022/src/app/shared/audio/audio.testing.mjs +0 -32
  183. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +0 -30
  184. package/esm2022/src/app/shared/base64.utils.mjs +0 -59
  185. package/esm2022/src/app/shared/capacitor/keyboard.mjs +0 -42
  186. package/esm2022/src/app/shared/capacitor/plugins.mjs +0 -10
  187. package/esm2022/src/app/shared/constants.mjs +0 -18
  188. package/esm2022/src/app/shared/dates.mjs +0 -212
  189. package/esm2022/src/app/shared/debug/debug-service.class.mjs +0 -3
  190. package/esm2022/src/app/shared/debug/debug.component.mjs +0 -44
  191. package/esm2022/src/app/shared/debug/debug.module.mjs +0 -23
  192. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +0 -91
  193. package/esm2022/src/app/shared/directives/autoresize.directive.mjs +0 -75
  194. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +0 -30
  195. package/esm2022/src/app/shared/directives/autotooltip.directive.mjs +0 -35
  196. package/esm2022/src/app/shared/directives/cell-selection/cell-identifier.directive.mjs +0 -55
  197. package/esm2022/src/app/shared/directives/cell-selection/cell-selection.directive.mjs +0 -206
  198. package/esm2022/src/app/shared/directives/cell-selection/cell-selection.service.mjs +0 -204
  199. package/esm2022/src/app/shared/directives/directives.module.mjs +0 -53
  200. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +0 -52
  201. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +0 -33
  202. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +0 -62
  203. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +0 -96
  204. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +0 -17
  205. package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +0 -43
  206. package/esm2022/src/app/shared/events.mjs +0 -64
  207. package/esm2022/src/app/shared/file/csv.utils.mjs +0 -97
  208. package/esm2022/src/app/shared/file/file.service.mjs +0 -118
  209. package/esm2022/src/app/shared/file/file.utils.mjs +0 -117
  210. package/esm2022/src/app/shared/file/images.utils.mjs +0 -186
  211. package/esm2022/src/app/shared/file/json.utils.mjs +0 -58
  212. package/esm2022/src/app/shared/file/uri.utils.mjs +0 -29
  213. package/esm2022/src/app/shared/file/url.utils.mjs +0 -213
  214. package/esm2022/src/app/shared/focusable.mjs +0 -6
  215. package/esm2022/src/app/shared/form/field.component.mjs +0 -388
  216. package/esm2022/src/app/shared/form/field.model.mjs +0 -100
  217. package/esm2022/src/app/shared/form/loading-spinner.mjs +0 -35
  218. package/esm2022/src/app/shared/forms.mjs +0 -593
  219. package/esm2022/src/app/shared/functions.mjs +0 -825
  220. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +0 -94
  221. package/esm2022/src/app/shared/gesture/gesture-config.mjs +0 -46
  222. package/esm2022/src/app/shared/gesture/hammer.utils.mjs +0 -2
  223. package/esm2022/src/app/shared/graph/colors.utils.mjs +0 -85
  224. package/esm2022/src/app/shared/graph/graph-colors.mjs +0 -214
  225. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +0 -68
  226. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
  227. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +0 -147
  228. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +0 -24
  229. package/esm2022/src/app/shared/html.utils.mjs +0 -35
  230. package/esm2022/src/app/shared/http/http.utils.mjs +0 -56
  231. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +0 -452
  232. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +0 -62
  233. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -26
  234. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -92
  235. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -37
  236. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +0 -59
  237. package/esm2022/src/app/shared/image/image.model.mjs +0 -2
  238. package/esm2022/src/app/shared/image/image.module.mjs +0 -24
  239. package/esm2022/src/app/shared/image/image.service.mjs +0 -117
  240. package/esm2022/src/app/shared/inputs.mjs +0 -281
  241. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
  242. package/esm2022/src/app/shared/logging/log-level.model.mjs +0 -48
  243. package/esm2022/src/app/shared/logging/logger.model.mjs +0 -47
  244. package/esm2022/src/app/shared/logging/logging-service.class.mjs +0 -125
  245. package/esm2022/src/app/shared/logging/logging-service.config.mjs +0 -2
  246. package/esm2022/src/app/shared/logging/logging-service.module.mjs +0 -30
  247. package/esm2022/src/app/shared/markdown/markdown.component.mjs +0 -321
  248. package/esm2022/src/app/shared/markdown/markdown.directive.mjs +0 -34
  249. package/esm2022/src/app/shared/markdown/markdown.modal.mjs +0 -99
  250. package/esm2022/src/app/shared/markdown/markdown.module.mjs +0 -87
  251. package/esm2022/src/app/shared/markdown/markdown.service.mjs +0 -204
  252. package/esm2022/src/app/shared/markdown/markdown.utils.mjs +0 -87
  253. package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +0 -55
  254. package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +0 -30
  255. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -46
  256. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -1356
  257. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -81
  258. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -18
  259. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -242
  260. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +0 -251
  261. package/esm2022/src/app/shared/material/badge/badge.module.mjs +0 -20
  262. package/esm2022/src/app/shared/material/badge/badge.test.mjs +0 -42
  263. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +0 -70
  264. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +0 -374
  265. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +0 -83
  266. package/esm2022/src/app/shared/material/chips/chips.module.mjs +0 -74
  267. package/esm2022/src/app/shared/material/chips/material.chips.mjs +0 -843
  268. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +0 -151
  269. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +0 -79
  270. package/esm2022/src/app/shared/material/datetime/material.date.mjs +0 -473
  271. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +0 -457
  272. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +0 -850
  273. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -140
  274. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -127
  275. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -118
  276. package/esm2022/src/app/shared/material/duration/duration.module.mjs +0 -61
  277. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +0 -16
  278. package/esm2022/src/app/shared/material/duration/material.duration.mjs +0 -283
  279. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +0 -85
  280. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +0 -319
  281. package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +0 -471
  282. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +0 -231
  283. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +0 -68
  284. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -138
  285. package/esm2022/src/app/shared/material/material.animations.mjs +0 -200
  286. package/esm2022/src/app/shared/material/material.config.mjs +0 -3
  287. package/esm2022/src/app/shared/material/material.module.mjs +0 -224
  288. package/esm2022/src/app/shared/material/material.testing.module.mjs +0 -234
  289. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -51
  290. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -23
  291. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +0 -379
  292. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +0 -52
  293. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -67
  294. package/esm2022/src/app/shared/material/test/test-component.mjs +0 -264
  295. package/esm2022/src/app/shared/material/testing/common.test.mjs +0 -111
  296. package/esm2022/src/app/shared/modules.mjs +0 -12
  297. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +0 -306
  298. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +0 -49
  299. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +0 -24
  300. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +0 -69
  301. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +0 -74
  302. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +0 -28
  303. package/esm2022/src/app/shared/observables.mjs +0 -104
  304. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +0 -251
  305. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +0 -25
  306. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +0 -29
  307. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -50
  308. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +0 -72
  309. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +0 -28
  310. package/esm2022/src/app/shared/pipes/date-from.pipe.mjs +0 -29
  311. package/esm2022/src/app/shared/pipes/dates.pipe.mjs +0 -18
  312. package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +0 -23
  313. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +0 -34
  314. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +0 -53
  315. package/esm2022/src/app/shared/pipes/form.pipes.mjs +0 -219
  316. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +0 -50
  317. package/esm2022/src/app/shared/pipes/html.pipes.mjs +0 -102
  318. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +0 -42
  319. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +0 -65
  320. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +0 -67
  321. package/esm2022/src/app/shared/pipes/math.pipes.mjs +0 -77
  322. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +0 -19
  323. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +0 -17
  324. package/esm2022/src/app/shared/pipes/observable.pipes.mjs +0 -63
  325. package/esm2022/src/app/shared/pipes/pipes.module.mjs +0 -304
  326. package/esm2022/src/app/shared/pipes/property.pipes.mjs +0 -148
  327. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +0 -177
  328. package/esm2022/src/app/shared/pipes/string.pipes.mjs +0 -183
  329. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +0 -44
  330. package/esm2022/src/app/shared/pipes/types.pipes.mjs +0 -74
  331. package/esm2022/src/app/shared/pipes/url.pipes.mjs +0 -35
  332. package/esm2022/src/app/shared/platforms.mjs +0 -81
  333. package/esm2022/src/app/shared/print/print.service.mjs +0 -305
  334. package/esm2022/src/app/shared/regexps.mjs +0 -103
  335. package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +0 -193
  336. package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +0 -19
  337. package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +0 -2
  338. package/esm2022/src/app/shared/services/entity-service.class.mjs +0 -44
  339. package/esm2022/src/app/shared/services/job.utils.mjs +0 -92
  340. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +0 -362
  341. package/esm2022/src/app/shared/services/progress-bar.service.mjs +0 -31
  342. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +0 -144
  343. package/esm2022/src/app/shared/services/startable-service.class.mjs +0 -118
  344. package/esm2022/src/app/shared/services/translate-context.service.mjs +0 -107
  345. package/esm2022/src/app/shared/services/validator-service.class.mjs +0 -2
  346. package/esm2022/src/app/shared/services.mjs +0 -85
  347. package/esm2022/src/app/shared/shared-routing.module.mjs +0 -72
  348. package/esm2022/src/app/shared/shared.module.mjs +0 -229
  349. package/esm2022/src/app/shared/shared.testing.module.mjs +0 -108
  350. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +0 -281
  351. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +0 -42
  352. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +0 -27
  353. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +0 -25
  354. package/esm2022/src/app/shared/storage/storage.service.mjs +0 -134
  355. package/esm2022/src/app/shared/storage/storage.utils.mjs +0 -13
  356. package/esm2022/src/app/shared/testing/maskito.test.mjs +0 -41
  357. package/esm2022/src/app/shared/testing/observable.test.mjs +0 -94
  358. package/esm2022/src/app/shared/testing/tests.page.mjs +0 -37
  359. package/esm2022/src/app/shared/toast/toast.testing.mjs +0 -54
  360. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +0 -31
  361. package/esm2022/src/app/shared/toast/toasts.mjs +0 -134
  362. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +0 -62
  363. package/esm2022/src/app/shared/toolbar/toolbar.mjs +0 -272
  364. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +0 -26
  365. package/esm2022/src/app/shared/types.mjs +0 -2
  366. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -59
  367. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +0 -30
  368. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -108
  369. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +0 -216
  370. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +0 -26
  371. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +0 -122
  372. package/esm2022/src/app/shared/validator/validators.mjs +0 -658
  373. package/esm2022/src/app/shared/version/versions.mjs +0 -81
  374. package/esm2022/src/app/social/config/social.config.mjs +0 -9
  375. package/esm2022/src/app/social/feed/feed.component.mjs +0 -317
  376. package/esm2022/src/app/social/feed/feed.directive.mjs +0 -151
  377. package/esm2022/src/app/social/feed/feed.model.mjs +0 -60
  378. package/esm2022/src/app/social/feed/feed.module.mjs +0 -24
  379. package/esm2022/src/app/social/feed/feed.page.mjs +0 -67
  380. package/esm2022/src/app/social/feed/feed.service.mjs +0 -222
  381. package/esm2022/src/app/social/feed/testing/feed.testing.mjs +0 -66
  382. package/esm2022/src/app/social/feed/testing/feed.testing.module.mjs +0 -23
  383. package/esm2022/src/app/social/job/job.module.mjs +0 -23
  384. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +0 -38
  385. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +0 -241
  386. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +0 -50
  387. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +0 -29
  388. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +0 -91
  389. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +0 -38
  390. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +0 -34
  391. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +0 -22
  392. package/esm2022/src/app/social/message/message.form.mjs +0 -149
  393. package/esm2022/src/app/social/message/message.modal.mjs +0 -116
  394. package/esm2022/src/app/social/message/message.model.mjs +0 -86
  395. package/esm2022/src/app/social/message/message.module.mjs +0 -25
  396. package/esm2022/src/app/social/message/message.service.mjs +0 -198
  397. package/esm2022/src/app/social/social.errors.mjs +0 -11
  398. package/esm2022/src/app/social/social.module.mjs +0 -22
  399. package/esm2022/src/app/social/social.testing.module.mjs +0 -72
  400. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -191
  401. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -280
  402. package/esm2022/src/app/social/user-event/notification/user-event-notification.modal.mjs +0 -84
  403. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +0 -273
  404. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -129
  405. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +0 -22
  406. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -128
  407. package/esm2022/src/app/social/user-event/user-event.model.mjs +0 -2
  408. package/esm2022/src/app/social/user-event/user-event.module.mjs +0 -24
  409. package/esm2022/src/app/social/user-event/user-event.service.mjs +0 -512
  410. package/esm2022/src/environments/environment.class.mjs +0 -69
  411. package/esm2022/src/environments/environment.loader.mjs +0 -77
  412. package/esm2022/src/environments/environment.mjs +0 -133
  413. package/esm2022/sumaris-net.ngx-components.mjs +0 -5
  414. package/index.d.ts +0 -5
  415. package/public_api.d.ts +0 -364
  416. package/src/app/admin/admin-routing.module.d.ts +0 -9
  417. package/src/app/admin/admin.module.d.ts +0 -10
  418. package/src/app/admin/users/person.filter.d.ts +0 -37
  419. package/src/app/admin/users/person.service.d.ts +0 -61
  420. package/src/app/admin/users/person.validator.d.ts +0 -23
  421. package/src/app/admin/users/users-select.modal.d.ts +0 -73
  422. package/src/app/admin/users/users.d.ts +0 -89
  423. package/src/app/admin/users/users.module.d.ts +0 -15
  424. package/src/app/admin/users/users.utils.d.ts +0 -6
  425. package/src/app/core/about/about.modal.d.ts +0 -44
  426. package/src/app/core/about/about.module.d.ts +0 -11
  427. package/src/app/core/account/account.module.d.ts +0 -18
  428. package/src/app/core/account/account.page.d.ts +0 -93
  429. package/src/app/core/account/new-token.form.d.ts +0 -30
  430. package/src/app/core/account/new-token.modal.d.ts +0 -29
  431. package/src/app/core/account/password/change-password.form.d.ts +0 -19
  432. package/src/app/core/account/password/change-password.module.d.ts +0 -11
  433. package/src/app/core/account/password/change-password.page.d.ts +0 -36
  434. package/src/app/core/account/token.table.d.ts +0 -28
  435. package/src/app/core/auth/auth.form.d.ts +0 -38
  436. package/src/app/core/auth/auth.modal.d.ts +0 -24
  437. package/src/app/core/auth/auth.module.d.ts +0 -13
  438. package/src/app/core/auth/reset-password.modal.d.ts +0 -29
  439. package/src/app/core/core.module.d.ts +0 -28
  440. package/src/app/core/core.testing.module.d.ts +0 -16
  441. package/src/app/core/form/array/form-array.d.ts +0 -147
  442. package/src/app/core/form/array/testing/form-array-test.module.d.ts +0 -12
  443. package/src/app/core/form/array/testing/form-array.test.d.ts +0 -27
  444. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +0 -38
  445. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +0 -9
  446. package/src/app/core/form/entity/editor.class.d.ts +0 -85
  447. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +0 -126
  448. package/src/app/core/form/entity/entity-editor.class.d.ts +0 -211
  449. package/src/app/core/form/entity/entity-metadata.component.d.ts +0 -13
  450. package/src/app/core/form/entity/entity.module.d.ts +0 -11
  451. package/src/app/core/form/entity/tab-editor.class.d.ts +0 -66
  452. package/src/app/core/form/form-container.class.d.ts +0 -131
  453. package/src/app/core/form/form.class.d.ts +0 -148
  454. package/src/app/core/form/form.module.d.ts +0 -15
  455. package/src/app/core/form/form.utils.d.ts +0 -301
  456. package/src/app/core/form/list/list.form.d.ts +0 -83
  457. package/src/app/core/form/list/list.module.d.ts +0 -9
  458. package/src/app/core/form/properties/properties-file.service.d.ts +0 -26
  459. package/src/app/core/form/properties/properties.form.d.ts +0 -109
  460. package/src/app/core/form/properties/properties.module.d.ts +0 -18
  461. package/src/app/core/form/properties/properties.table.d.ts +0 -73
  462. package/src/app/core/form/properties/properties.utils.d.ts +0 -59
  463. package/src/app/core/form/properties/property.validator.d.ts +0 -27
  464. package/src/app/core/form/properties/testing/properties-form.test.d.ts +0 -22
  465. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +0 -12
  466. package/src/app/core/form/text/testing/text-form.testing.d.ts +0 -19
  467. package/src/app/core/form/text/testing/text-form.testing.module.d.ts +0 -14
  468. package/src/app/core/form/text/text-form.component.d.ts +0 -66
  469. package/src/app/core/form/text/text-form.module.d.ts +0 -9
  470. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +0 -16
  471. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +0 -11
  472. package/src/app/core/form/text-popover/text-popover.component.d.ts +0 -81
  473. package/src/app/core/form/text-popover/text-popover.module.d.ts +0 -10
  474. package/src/app/core/form/username/username.form.d.ts +0 -19
  475. package/src/app/core/form/username/username.module.d.ts +0 -9
  476. package/src/app/core/graphql/graphql.module.d.ts +0 -7
  477. package/src/app/core/graphql/graphql.service.d.ts +0 -138
  478. package/src/app/core/graphql/graphql.utils.d.ts +0 -47
  479. package/src/app/core/home/home.d.ts +0 -135
  480. package/src/app/core/home/home.module.d.ts +0 -16
  481. package/src/app/core/icon/icon.component.d.ts +0 -13
  482. package/src/app/core/icon/icon.module.d.ts +0 -9
  483. package/src/app/core/install/install-upgrade-card.component.d.ts +0 -63
  484. package/src/app/core/install/install-upgrade-card.module.d.ts +0 -9
  485. package/src/app/core/menu/menu.component.d.ts +0 -69
  486. package/src/app/core/menu/menu.model.d.ts +0 -161
  487. package/src/app/core/menu/menu.module.d.ts +0 -12
  488. package/src/app/core/menu/menu.service.d.ts +0 -93
  489. package/src/app/core/menu/sub-menu-tab.directive.d.ts +0 -29
  490. package/src/app/core/menu/testing/menu-other.testing.d.ts +0 -15
  491. package/src/app/core/menu/testing/menu.testing.d.ts +0 -53
  492. package/src/app/core/menu/testing/menu.testing.module.d.ts +0 -12
  493. package/src/app/core/offline/update-offline-mode-card.component.d.ts +0 -11
  494. package/src/app/core/offline/update-offline-mode-card.module.d.ts +0 -9
  495. package/src/app/core/peer/select-peer.modal.d.ts +0 -108
  496. package/src/app/core/peer/select-peer.module.d.ts +0 -12
  497. package/src/app/core/register/register-confirm.page.d.ts +0 -24
  498. package/src/app/core/register/register.form.d.ts +0 -49
  499. package/src/app/core/register/register.modal.d.ts +0 -14
  500. package/src/app/core/register/register.module.d.ts +0 -12
  501. package/src/app/core/services/account.service.d.ts +0 -236
  502. package/src/app/core/services/auth-guard.service.d.ts +0 -17
  503. package/src/app/core/services/base-entity-service.class.d.ts +0 -134
  504. package/src/app/core/services/base-graphql-service.class.d.ts +0 -77
  505. package/src/app/core/services/base58.d.ts +0 -7
  506. package/src/app/core/services/config/core.config.d.ts +0 -52
  507. package/src/app/core/services/config.service.d.ts +0 -63
  508. package/src/app/core/services/crypto.service.d.ts +0 -44
  509. package/src/app/core/services/errors.d.ts +0 -65
  510. package/src/app/core/services/local-settings.service.d.ts +0 -130
  511. package/src/app/core/services/model/account.model.d.ts +0 -66
  512. package/src/app/core/services/model/config.model.d.ts +0 -37
  513. package/src/app/core/services/model/department.model.d.ts +0 -11
  514. package/src/app/core/services/model/entity.decorators.d.ts +0 -17
  515. package/src/app/core/services/model/entity.model.d.ts +0 -133
  516. package/src/app/core/services/model/filter.model.d.ts +0 -37
  517. package/src/app/core/services/model/history.model.d.ts +0 -20
  518. package/src/app/core/services/model/model.enum.d.ts +0 -7
  519. package/src/app/core/services/model/node-feature.model.d.ts +0 -14
  520. package/src/app/core/services/model/peer.model.d.ts +0 -35
  521. package/src/app/core/services/model/person.model.d.ts +0 -39
  522. package/src/app/core/services/model/referential.model.d.ts +0 -85
  523. package/src/app/core/services/model/settings.model.d.ts +0 -29
  524. package/src/app/core/services/model/token.model.d.ts +0 -22
  525. package/src/app/core/services/model/tree-item-entity.model.d.ts +0 -62
  526. package/src/app/core/services/network.service.d.ts +0 -184
  527. package/src/app/core/services/network.types.d.ts +0 -4
  528. package/src/app/core/services/network.utils.d.ts +0 -39
  529. package/src/app/core/services/pipes/account.pipes.d.ts +0 -15
  530. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +0 -9
  531. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +0 -11
  532. package/src/app/core/services/pipes/pipes.module.d.ts +0 -11
  533. package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +0 -23
  534. package/src/app/core/services/pipes/usage-mode.pipes.d.ts +0 -15
  535. package/src/app/core/services/platform.service.d.ts +0 -126
  536. package/src/app/core/services/storage/entities-storage.service.d.ts +0 -108
  537. package/src/app/core/services/storage/entity-store.class.d.ts +0 -113
  538. package/src/app/core/services/testing/referential-filter.model.d.ts +0 -9
  539. package/src/app/core/services/testing/referential.validator.d.ts +0 -22
  540. package/src/app/core/services/validator/account.validator.d.ts +0 -24
  541. package/src/app/core/services/validator/base.validator.class.d.ts +0 -21
  542. package/src/app/core/services/validator/local-settings.validator.d.ts +0 -18
  543. package/src/app/core/services/validator/user-settings.validator.d.ts +0 -10
  544. package/src/app/core/services/validator/user-token.validator.d.ts +0 -13
  545. package/src/app/core/settings/settings.module.d.ts +0 -12
  546. package/src/app/core/settings/settings.page.d.ts +0 -89
  547. package/src/app/core/table/async-table.class.d.ts +0 -443
  548. package/src/app/core/table/column/actions-column.component.d.ts +0 -65
  549. package/src/app/core/table/column/nav-actions-column.component.d.ts +0 -47
  550. package/src/app/core/table/column/row-field.component.d.ts +0 -41
  551. package/src/app/core/table/entities-async-table-datasource.class.d.ts +0 -103
  552. package/src/app/core/table/entities-table-datasource.class.d.ts +0 -102
  553. package/src/app/core/table/memory-table.class.d.ts +0 -25
  554. package/src/app/core/table/table-select-columns.component.d.ts +0 -22
  555. package/src/app/core/table/table.class.d.ts +0 -427
  556. package/src/app/core/table/table.model.d.ts +0 -31
  557. package/src/app/core/table/table.module.d.ts +0 -14
  558. package/src/app/core/table/table.pipes.d.ts +0 -30
  559. package/src/app/core/table/table.utils.d.ts +0 -13
  560. package/src/app/core/table/testing/nested-table.testing.d.ts +0 -54
  561. package/src/app/core/table/testing/table-validator.service.d.ts +0 -17
  562. package/src/app/core/table/testing/table.testing.d.ts +0 -55
  563. package/src/app/core/table/testing/table.testing.module.d.ts +0 -17
  564. package/src/app/core/table/testing/table2-validator.service.d.ts +0 -15
  565. package/src/app/core/table/testing/table2.testing.d.ts +0 -53
  566. package/src/app/shared/alerts.d.ts +0 -55
  567. package/src/app/shared/audio/audio.d.ts +0 -45
  568. package/src/app/shared/audio/audio.testing.d.ts +0 -13
  569. package/src/app/shared/audio/audio.testing.module.d.ts +0 -11
  570. package/src/app/shared/base64.utils.d.ts +0 -7
  571. package/src/app/shared/capacitor/keyboard.d.ts +0 -16
  572. package/src/app/shared/capacitor/plugins.d.ts +0 -8
  573. package/src/app/shared/constants.d.ts +0 -15
  574. package/src/app/shared/dates.d.ts +0 -85
  575. package/src/app/shared/debug/debug-service.class.d.ts +0 -5
  576. package/src/app/shared/debug/debug.component.d.ts +0 -14
  577. package/src/app/shared/debug/debug.module.d.ts +0 -12
  578. package/src/app/shared/directives/autofocus.directive.d.ts +0 -18
  579. package/src/app/shared/directives/autoresize.directive.d.ts +0 -20
  580. package/src/app/shared/directives/autotitle.directive.d.ts +0 -11
  581. package/src/app/shared/directives/autotooltip.directive.d.ts +0 -14
  582. package/src/app/shared/directives/cell-selection/cell-identifier.directive.d.ts +0 -17
  583. package/src/app/shared/directives/cell-selection/cell-selection.directive.d.ts +0 -29
  584. package/src/app/shared/directives/cell-selection/cell-selection.service.d.ts +0 -67
  585. package/src/app/shared/directives/directives.module.d.ts +0 -15
  586. package/src/app/shared/directives/drag-and-drop.directive.d.ts +0 -17
  587. package/src/app/shared/directives/ng-var.directive.d.ts +0 -12
  588. package/src/app/shared/directives/resizable/resizable.component.d.ts +0 -21
  589. package/src/app/shared/directives/resizable/resizable.directive.d.ts +0 -24
  590. package/src/app/shared/directives/resizable/resizable.module.d.ts +0 -8
  591. package/src/app/shared/directives/throttled-click.directive.d.ts +0 -16
  592. package/src/app/shared/events.d.ts +0 -29
  593. package/src/app/shared/file/csv.utils.d.ts +0 -30
  594. package/src/app/shared/file/file.service.d.ts +0 -23
  595. package/src/app/shared/file/file.utils.d.ts +0 -20
  596. package/src/app/shared/file/images.utils.d.ts +0 -36
  597. package/src/app/shared/file/json.utils.d.ts +0 -19
  598. package/src/app/shared/file/uri.utils.d.ts +0 -8
  599. package/src/app/shared/file/url.utils.d.ts +0 -108
  600. package/src/app/shared/focusable.d.ts +0 -4
  601. package/src/app/shared/form/field.component.d.ts +0 -83
  602. package/src/app/shared/form/field.model.d.ts +0 -88
  603. package/src/app/shared/form/loading-spinner.d.ts +0 -8
  604. package/src/app/shared/forms.d.ts +0 -170
  605. package/src/app/shared/functions.d.ts +0 -296
  606. package/src/app/shared/geolocation/geolocation.utils.d.ts +0 -25
  607. package/src/app/shared/gesture/gesture-config.d.ts +0 -15
  608. package/src/app/shared/gesture/hammer.utils.d.ts +0 -16
  609. package/src/app/shared/graph/colors.utils.d.ts +0 -34
  610. package/src/app/shared/graph/graph-colors.d.ts +0 -63
  611. package/src/app/shared/guard/component-dirty.guard.d.ts +0 -14
  612. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +0 -8
  613. package/src/app/shared/hotkeys/hotkeys.service.d.ts +0 -48
  614. package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +0 -11
  615. package/src/app/shared/html.utils.d.ts +0 -17
  616. package/src/app/shared/http/http.utils.d.ts +0 -28
  617. package/src/app/shared/image/gallery/image-gallery.component.d.ts +0 -139
  618. package/src/app/shared/image/gallery/image-gallery.module.d.ts +0 -15
  619. package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +0 -12
  620. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +0 -33
  621. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +0 -16
  622. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +0 -13
  623. package/src/app/shared/image/image.model.d.ts +0 -7
  624. package/src/app/shared/image/image.module.d.ts +0 -8
  625. package/src/app/shared/image/image.service.d.ts +0 -37
  626. package/src/app/shared/inputs.d.ts +0 -37
  627. package/src/app/shared/interceptors/progess.interceptor.d.ts +0 -8
  628. package/src/app/shared/logging/log-level.model.d.ts +0 -38
  629. package/src/app/shared/logging/logger.model.d.ts +0 -68
  630. package/src/app/shared/logging/logging-service.class.d.ts +0 -39
  631. package/src/app/shared/logging/logging-service.config.d.ts +0 -25
  632. package/src/app/shared/logging/logging-service.module.d.ts +0 -9
  633. package/src/app/shared/markdown/markdown.component.d.ts +0 -86
  634. package/src/app/shared/markdown/markdown.directive.d.ts +0 -13
  635. package/src/app/shared/markdown/markdown.modal.d.ts +0 -49
  636. package/src/app/shared/markdown/markdown.module.d.ts +0 -17
  637. package/src/app/shared/markdown/markdown.service.d.ts +0 -37
  638. package/src/app/shared/markdown/markdown.utils.d.ts +0 -26
  639. package/src/app/shared/markdown/testing/markdown.test.d.ts +0 -18
  640. package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +0 -12
  641. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +0 -74
  642. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +0 -224
  643. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +0 -23
  644. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +0 -5
  645. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +0 -48
  646. package/src/app/shared/material/badge/badge.directive.d.ts +0 -43
  647. package/src/app/shared/material/badge/badge.module.d.ts +0 -10
  648. package/src/app/shared/material/badge/badge.test.d.ts +0 -21
  649. package/src/app/shared/material/boolean/boolean.module.d.ts +0 -21
  650. package/src/app/shared/material/boolean/material.boolean.d.ts +0 -94
  651. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +0 -31
  652. package/src/app/shared/material/chips/chips.module.d.ts +0 -22
  653. package/src/app/shared/material/chips/material.chips.d.ts +0 -167
  654. package/src/app/shared/material/chips/testing/chips.test.d.ts +0 -32
  655. package/src/app/shared/material/datetime/datetime.module.d.ts +0 -25
  656. package/src/app/shared/material/datetime/material.date.d.ts +0 -90
  657. package/src/app/shared/material/datetime/material.dateshort.d.ts +0 -89
  658. package/src/app/shared/material/datetime/material.datetime.d.ts +0 -136
  659. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +0 -38
  660. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +0 -32
  661. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +0 -31
  662. package/src/app/shared/material/duration/duration.module.d.ts +0 -18
  663. package/src/app/shared/material/duration/duration.utils.d.ts +0 -2
  664. package/src/app/shared/material/duration/material.duration.d.ts +0 -64
  665. package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +0 -23
  666. package/src/app/shared/material/latlong/latlong.utils.d.ts +0 -59
  667. package/src/app/shared/material/latlong/material.latlong-input.d.ts +0 -93
  668. package/src/app/shared/material/latlong/material.latlong.d.ts +0 -90
  669. package/src/app/shared/material/latlong/material.latlong.module.d.ts +0 -21
  670. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +0 -30
  671. package/src/app/shared/material/material.animations.d.ts +0 -8
  672. package/src/app/shared/material/material.config.d.ts +0 -3
  673. package/src/app/shared/material/material.module.d.ts +0 -44
  674. package/src/app/shared/material/material.testing.module.d.ts +0 -31
  675. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -12
  676. package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +0 -10
  677. package/src/app/shared/material/swipe/material.swipe.d.ts +0 -89
  678. package/src/app/shared/material/swipe/swipe.module.d.ts +0 -16
  679. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +0 -22
  680. package/src/app/shared/material/test/test-component.d.ts +0 -75
  681. package/src/app/shared/material/testing/common.test.d.ts +0 -25
  682. package/src/app/shared/modules.d.ts +0 -9
  683. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +0 -63
  684. package/src/app/shared/named-filter/named-filter.model.d.ts +0 -32
  685. package/src/app/shared/named-filter/named-filter.module.d.ts +0 -13
  686. package/src/app/shared/named-filter/named-filter.service.d.ts +0 -32
  687. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +0 -34
  688. package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +0 -10
  689. package/src/app/shared/observables.d.ts +0 -32
  690. package/src/app/shared/pipes/arrays.pipe.d.ts +0 -93
  691. package/src/app/shared/pipes/badge.pipes.d.ts +0 -7
  692. package/src/app/shared/pipes/colors.pipe.d.ts +0 -9
  693. package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +0 -25
  694. package/src/app/shared/pipes/date-format.pipe.d.ts +0 -35
  695. package/src/app/shared/pipes/date-from-now.pipe.d.ts +0 -14
  696. package/src/app/shared/pipes/date-from.pipe.d.ts +0 -14
  697. package/src/app/shared/pipes/dates.pipe.d.ts +0 -10
  698. package/src/app/shared/pipes/display-with.pipe.d.ts +0 -8
  699. package/src/app/shared/pipes/duration.pipe.d.ts +0 -23
  700. package/src/app/shared/pipes/file-size.pipe.d.ts +0 -30
  701. package/src/app/shared/pipes/form.pipes.d.ts +0 -69
  702. package/src/app/shared/pipes/highlight.pipe.d.ts +0 -11
  703. package/src/app/shared/pipes/html.pipes.d.ts +0 -50
  704. package/src/app/shared/pipes/latlong-format.pipe.d.ts +0 -20
  705. package/src/app/shared/pipes/maps.pipe.d.ts +0 -23
  706. package/src/app/shared/pipes/maskito.pipe.d.ts +0 -14
  707. package/src/app/shared/pipes/math.pipes.d.ts +0 -26
  708. package/src/app/shared/pipes/ng-init.pipe.d.ts +0 -8
  709. package/src/app/shared/pipes/number-format.pipe.d.ts +0 -9
  710. package/src/app/shared/pipes/observable.pipes.d.ts +0 -25
  711. package/src/app/shared/pipes/pipes.module.d.ts +0 -36
  712. package/src/app/shared/pipes/property.pipes.d.ts +0 -46
  713. package/src/app/shared/pipes/selection.pipes.d.ts +0 -62
  714. package/src/app/shared/pipes/string.pipes.d.ts +0 -67
  715. package/src/app/shared/pipes/translate-context.pipe.d.ts +0 -17
  716. package/src/app/shared/pipes/types.pipes.d.ts +0 -30
  717. package/src/app/shared/pipes/url.pipes.d.ts +0 -27
  718. package/src/app/shared/platforms.d.ts +0 -16
  719. package/src/app/shared/print/print.service.d.ts +0 -94
  720. package/src/app/shared/regexps.d.ts +0 -32
  721. package/src/app/shared/rx-state/rx-state.decorators.d.ts +0 -33
  722. package/src/app/shared/rx-state/rx-state.module.d.ts +0 -10
  723. package/src/app/shared/rx-state/rx-state.types.d.ts +0 -5
  724. package/src/app/shared/services/entity-service.class.d.ts +0 -117
  725. package/src/app/shared/services/job.utils.d.ts +0 -20
  726. package/src/app/shared/services/memory-entity-service.class.d.ts +0 -87
  727. package/src/app/shared/services/progress-bar.service.d.ts +0 -20
  728. package/src/app/shared/services/startable-observable-service.class.d.ts +0 -51
  729. package/src/app/shared/services/startable-service.class.d.ts +0 -38
  730. package/src/app/shared/services/translate-context.service.d.ts +0 -29
  731. package/src/app/shared/services/validator-service.class.d.ts +0 -11
  732. package/src/app/shared/services.d.ts +0 -17
  733. package/src/app/shared/shared-routing.module.d.ts +0 -23
  734. package/src/app/shared/shared.module.d.ts +0 -33
  735. package/src/app/shared/shared.testing.module.d.ts +0 -20
  736. package/src/app/shared/storage/storage-explorer.component.d.ts +0 -60
  737. package/src/app/shared/storage/storage-explorer.module.d.ts +0 -13
  738. package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +0 -9
  739. package/src/app/shared/storage/storage-explorer.testing.module.d.ts +0 -10
  740. package/src/app/shared/storage/storage.service.d.ts +0 -22
  741. package/src/app/shared/storage/storage.utils.d.ts +0 -19
  742. package/src/app/shared/testing/maskito.test.d.ts +0 -10
  743. package/src/app/shared/testing/observable.test.d.ts +0 -25
  744. package/src/app/shared/testing/tests.page.d.ts +0 -20
  745. package/src/app/shared/toast/toast.testing.d.ts +0 -15
  746. package/src/app/shared/toast/toast.testing.module.d.ts +0 -12
  747. package/src/app/shared/toast/toasts.d.ts +0 -16
  748. package/src/app/shared/toolbar/modal-toolbar.d.ts +0 -21
  749. package/src/app/shared/toolbar/toolbar.d.ts +0 -70
  750. package/src/app/shared/toolbar/toolbar.module.d.ts +0 -16
  751. package/src/app/shared/types.d.ts +0 -45
  752. package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +0 -21
  753. package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +0 -11
  754. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +0 -41
  755. package/src/app/shared/upload-file/upload-file.component.d.ts +0 -50
  756. package/src/app/shared/upload-file/upload-file.model.d.ts +0 -30
  757. package/src/app/shared/validator/form-error-adapter.class.d.ts +0 -33
  758. package/src/app/shared/validator/validators.d.ts +0 -145
  759. package/src/app/shared/version/versions.d.ts +0 -26
  760. package/src/app/social/config/social.config.d.ts +0 -4
  761. package/src/app/social/feed/feed.component.d.ts +0 -91
  762. package/src/app/social/feed/feed.directive.d.ts +0 -32
  763. package/src/app/social/feed/feed.model.d.ts +0 -69
  764. package/src/app/social/feed/feed.module.d.ts +0 -13
  765. package/src/app/social/feed/feed.page.d.ts +0 -24
  766. package/src/app/social/feed/feed.service.d.ts +0 -85
  767. package/src/app/social/feed/testing/feed.testing.d.ts +0 -23
  768. package/src/app/social/feed/testing/feed.testing.module.d.ts +0 -12
  769. package/src/app/social/job/job.module.d.ts +0 -12
  770. package/src/app/social/job/progression/job-progression.component.d.ts +0 -24
  771. package/src/app/social/job/progression/job-progression.icon.d.ts +0 -63
  772. package/src/app/social/job/progression/job-progression.list.d.ts +0 -20
  773. package/src/app/social/job/progression/job-progression.model.d.ts +0 -10
  774. package/src/app/social/job/progression/job-progression.service.d.ts +0 -33
  775. package/src/app/social/job/testing/job-progression.testing.d.ts +0 -13
  776. package/src/app/social/job/testing/job-progression.testing.service.d.ts +0 -9
  777. package/src/app/social/job/testing/job.testing.module.d.ts +0 -11
  778. package/src/app/social/message/message.form.d.ts +0 -36
  779. package/src/app/social/message/message.modal.d.ts +0 -47
  780. package/src/app/social/message/message.model.d.ts +0 -36
  781. package/src/app/social/message/message.module.d.ts +0 -14
  782. package/src/app/social/message/message.service.d.ts +0 -44
  783. package/src/app/social/social.errors.d.ts +0 -10
  784. package/src/app/social/social.module.d.ts +0 -20
  785. package/src/app/social/social.testing.module.d.ts +0 -14
  786. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +0 -47
  787. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +0 -77
  788. package/src/app/social/user-event/notification/user-event-notification.modal.d.ts +0 -37
  789. package/src/app/social/user-event/testing/user-event.testing.d.ts +0 -44
  790. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -42
  791. package/src/app/social/user-event/testing/user-event.testing.module.d.ts +0 -11
  792. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +0 -41
  793. package/src/app/social/user-event/user-event.model.d.ts +0 -44
  794. package/src/app/social/user-event/user-event.module.d.ts +0 -14
  795. package/src/app/social/user-event/user-event.service.d.ts +0 -124
  796. package/src/environments/environment.class.d.ts +0 -86
  797. package/src/environments/environment.d.ts +0 -2
  798. package/src/environments/environment.loader.d.ts +0 -24
  799. package/src/theme/_globals.scss +0 -5
@@ -1,91 +0,0 @@
1
- // Import the core angular services.
2
- import { Directive } from '@angular/core';
3
- import { timer } from 'rxjs';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../capacitor/keyboard";
6
- // ----------------------------------------------------------------------------------- //
7
- // ----------------------------------------------------------------------------------- //
8
- const BASE_TIMER_DELAY = 100;
9
- export class AutofocusDirective {
10
- _elementRef;
11
- keyboard;
12
- shouldFocusElement;
13
- timerDelay;
14
- _timer = null;
15
- // I initialize the autofocus directive.
16
- constructor(_elementRef, keyboard) {
17
- this._elementRef = _elementRef;
18
- this.keyboard = keyboard;
19
- this.shouldFocusElement = '';
20
- this._timer = null;
21
- this.timerDelay = BASE_TIMER_DELAY;
22
- }
23
- // I get called once after the contents have been fully initialized.
24
- ngAfterContentInit() {
25
- // Because this directive can act on the stand-only "autofocus" attribute or
26
- // the more specialized "appAutofocus" property, we need to check to see if the
27
- // "shouldFocusElement" input property is the empty string. This will signify
28
- // that the focus it not being data-driven and should be performed automatically.
29
- if (this.shouldFocusElement === '') {
30
- this._startFocus();
31
- }
32
- }
33
- // I get called every time the input bindings are updated.
34
- ngOnChanges(changes) {
35
- // If the timer delay is being passed-in as a string (ie, someone is using
36
- // attribute-input syntax, not property-input syntax), let's coalesce the
37
- // attribute to a numeric value so that our type-annotations are consistent.
38
- if ((changes.autofocusDelay || changes.timerDelay) && typeof this.timerDelay !== 'number') {
39
- // If the coalesce fails, just fall-back to a sane value.
40
- if (isNaN((this.timerDelay = +this.timerDelay))) {
41
- this.timerDelay = BASE_TIMER_DELAY;
42
- }
43
- }
44
- // If the focus input is being data-driven, then we either need to start the
45
- // focus workflow if focus is required; or, clear any existing workflow if focus
46
- // is no longer required (so that we don't steal focus from another element).
47
- if (changes.appAutofocus || changes.shouldFocusElement) {
48
- if (this.shouldFocusElement)
49
- this._startFocus();
50
- else
51
- this._stop();
52
- }
53
- }
54
- // I get called once when the directive is being unmounted.
55
- ngOnDestroy() {
56
- this._stop();
57
- }
58
- /* --- private functions -- */
59
- // I start the timer-based workflow that will focus the current element.
60
- _startFocus() {
61
- // Skip focus when keyboard is visible
62
- if (this.keyboard.visible)
63
- return;
64
- // If there is already a timer running for this element, just let it play out -
65
- // resetting it at this point will only push-out the time at which the focus is
66
- // applied to the element.
67
- if (this._timer)
68
- return;
69
- this._timer = timer(this.timerDelay).subscribe(() => {
70
- if (this._timer) {
71
- this._stop();
72
- this._elementRef.nativeElement.focus();
73
- }
74
- });
75
- }
76
- // I stop the timer-based workflow, preventing focus from taking place.
77
- _stop() {
78
- this._timer?.unsubscribe();
79
- this._timer = null;
80
- }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutofocusDirective, deps: [{ token: i0.ElementRef }, { token: i1.KeyboardService }], target: i0.ɵɵFactoryTarget.Directive });
82
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: AutofocusDirective, selector: "[autofocus], input[appAutofocus]", inputs: { shouldFocusElement: ["appAutofocus", "shouldFocusElement"], timerDelay: ["autofocusDelay", "timerDelay"] }, usesOnChanges: true, ngImport: i0 });
83
- }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutofocusDirective, decorators: [{
85
- type: Directive,
86
- args: [{
87
- selector: '[autofocus], input[appAutofocus]',
88
- inputs: ['shouldFocusElement: appAutofocus', 'timerDelay: autofocusDelay'],
89
- }]
90
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.KeyboardService }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZvY3VzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvYXV0b2ZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7QUFDcEMsT0FBTyxFQUFvQixTQUFTLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFHM0MseUZBQXlGO0FBQ3pGLHlGQUF5RjtBQUV6RixNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQU03QixNQUFNLE9BQU8sa0JBQWtCO0lBUVY7SUFDQTtJQVJaLGtCQUFrQixDQUFNO0lBQ3hCLFVBQVUsQ0FBUztJQUVsQixNQUFNLEdBQWlCLElBQUksQ0FBQztJQUVwQyx3Q0FBd0M7SUFDeEMsWUFDbUIsV0FBdUIsRUFDdkIsUUFBeUI7UUFEekIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFFMUMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsa0JBQWtCO1FBQ2hCLDRFQUE0RTtRQUM1RSwrRUFBK0U7UUFDL0UsNkVBQTZFO1FBQzdFLGlGQUFpRjtRQUNqRixJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLDBFQUEwRTtRQUMxRSx5RUFBeUU7UUFDekUsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDMUYseURBQXlEO1lBQ3pELElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7UUFFRCw0RUFBNEU7UUFDNUUsZ0ZBQWdGO1FBQ2hGLDZFQUE2RTtRQUM3RSxJQUFJLE9BQU8sQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdkQsSUFBSSxJQUFJLENBQUMsa0JBQWtCO2dCQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzs7Z0JBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELDhCQUE4QjtJQUU5Qix3RUFBd0U7SUFDaEUsV0FBVztRQUNqQixzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRWxDLCtFQUErRTtRQUMvRSwrRUFBK0U7UUFDL0UsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXhCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHVFQUF1RTtJQUMvRCxLQUFLO1FBQ1gsSUFBSSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO3dHQTdFVSxrQkFBa0I7NEZBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0NBQWtDO29CQUM1QyxNQUFNLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSw0QkFBNEIsQ0FBQztpQkFDM0UiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnQgdGhlIGNvcmUgYW5ndWxhciBzZXJ2aWNlcy5cbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEtleWJvYXJkU2VydmljZSB9IGZyb20gJy4uL2NhcGFjaXRvci9rZXlib2FyZCc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG5jb25zdCBCQVNFX1RJTUVSX0RFTEFZID0gMTAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXV0b2ZvY3VzXSwgaW5wdXRbYXBwQXV0b2ZvY3VzXScsXG4gIGlucHV0czogWydzaG91bGRGb2N1c0VsZW1lbnQ6IGFwcEF1dG9mb2N1cycsICd0aW1lckRlbGF5OiBhdXRvZm9jdXNEZWxheSddLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvZm9jdXNEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBzaG91bGRGb2N1c0VsZW1lbnQ6IGFueTtcbiAgcHVibGljIHRpbWVyRGVsYXk6IG51bWJlcjtcblxuICBwcml2YXRlIF90aW1lcjogU3Vic2NyaXB0aW9uID0gbnVsbDtcblxuICAvLyBJIGluaXRpYWxpemUgdGhlIGF1dG9mb2N1cyBkaXJlY3RpdmUuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlib2FyZDogS2V5Ym9hcmRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc2hvdWxkRm9jdXNFbGVtZW50ID0gJyc7XG4gICAgdGhpcy5fdGltZXIgPSBudWxsO1xuICAgIHRoaXMudGltZXJEZWxheSA9IEJBU0VfVElNRVJfREVMQVk7XG4gIH1cblxuICAvLyBJIGdldCBjYWxsZWQgb25jZSBhZnRlciB0aGUgY29udGVudHMgaGF2ZSBiZWVuIGZ1bGx5IGluaXRpYWxpemVkLlxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLy8gQmVjYXVzZSB0aGlzIGRpcmVjdGl2ZSBjYW4gYWN0IG9uIHRoZSBzdGFuZC1vbmx5IFwiYXV0b2ZvY3VzXCIgYXR0cmlidXRlIG9yXG4gICAgLy8gdGhlIG1vcmUgc3BlY2lhbGl6ZWQgXCJhcHBBdXRvZm9jdXNcIiBwcm9wZXJ0eSwgd2UgbmVlZCB0byBjaGVjayB0byBzZWUgaWYgdGhlXG4gICAgLy8gXCJzaG91bGRGb2N1c0VsZW1lbnRcIiBpbnB1dCBwcm9wZXJ0eSBpcyB0aGUgZW1wdHkgc3RyaW5nLiBUaGlzIHdpbGwgc2lnbmlmeVxuICAgIC8vIHRoYXQgdGhlIGZvY3VzIGl0IG5vdCBiZWluZyBkYXRhLWRyaXZlbiBhbmQgc2hvdWxkIGJlIHBlcmZvcm1lZCBhdXRvbWF0aWNhbGx5LlxuICAgIGlmICh0aGlzLnNob3VsZEZvY3VzRWxlbWVudCA9PT0gJycpIHtcbiAgICAgIHRoaXMuX3N0YXJ0Rm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvLyBJIGdldCBjYWxsZWQgZXZlcnkgdGltZSB0aGUgaW5wdXQgYmluZGluZ3MgYXJlIHVwZGF0ZWQuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBJZiB0aGUgdGltZXIgZGVsYXkgaXMgYmVpbmcgcGFzc2VkLWluIGFzIGEgc3RyaW5nIChpZSwgc29tZW9uZSBpcyB1c2luZ1xuICAgIC8vIGF0dHJpYnV0ZS1pbnB1dCBzeW50YXgsIG5vdCBwcm9wZXJ0eS1pbnB1dCBzeW50YXgpLCBsZXQncyBjb2FsZXNjZSB0aGVcbiAgICAvLyBhdHRyaWJ1dGUgdG8gYSBudW1lcmljIHZhbHVlIHNvIHRoYXQgb3VyIHR5cGUtYW5ub3RhdGlvbnMgYXJlIGNvbnNpc3RlbnQuXG4gICAgaWYgKChjaGFuZ2VzLmF1dG9mb2N1c0RlbGF5IHx8IGNoYW5nZXMudGltZXJEZWxheSkgJiYgdHlwZW9mIHRoaXMudGltZXJEZWxheSAhPT0gJ251bWJlcicpIHtcbiAgICAgIC8vIElmIHRoZSBjb2FsZXNjZSBmYWlscywganVzdCBmYWxsLWJhY2sgdG8gYSBzYW5lIHZhbHVlLlxuICAgICAgaWYgKGlzTmFOKCh0aGlzLnRpbWVyRGVsYXkgPSArdGhpcy50aW1lckRlbGF5KSkpIHtcbiAgICAgICAgdGhpcy50aW1lckRlbGF5ID0gQkFTRV9USU1FUl9ERUxBWTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZm9jdXMgaW5wdXQgaXMgYmVpbmcgZGF0YS1kcml2ZW4sIHRoZW4gd2UgZWl0aGVyIG5lZWQgdG8gc3RhcnQgdGhlXG4gICAgLy8gZm9jdXMgd29ya2Zsb3cgaWYgZm9jdXMgaXMgcmVxdWlyZWQ7IG9yLCBjbGVhciBhbnkgZXhpc3Rpbmcgd29ya2Zsb3cgaWYgZm9jdXNcbiAgICAvLyBpcyBubyBsb25nZXIgcmVxdWlyZWQgKHNvIHRoYXQgd2UgZG9uJ3Qgc3RlYWwgZm9jdXMgZnJvbSBhbm90aGVyIGVsZW1lbnQpLlxuICAgIGlmIChjaGFuZ2VzLmFwcEF1dG9mb2N1cyB8fCBjaGFuZ2VzLnNob3VsZEZvY3VzRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkRm9jdXNFbGVtZW50KSB0aGlzLl9zdGFydEZvY3VzKCk7XG4gICAgICBlbHNlIHRoaXMuX3N0b3AoKTtcbiAgICB9XG4gIH1cblxuICAvLyBJIGdldCBjYWxsZWQgb25jZSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgYmVpbmcgdW5tb3VudGVkLlxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdG9wKCk7XG4gIH1cblxuICAvKiAtLS0gcHJpdmF0ZSBmdW5jdGlvbnMgLS0gKi9cblxuICAvLyBJIHN0YXJ0IHRoZSB0aW1lci1iYXNlZCB3b3JrZmxvdyB0aGF0IHdpbGwgZm9jdXMgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAgcHJpdmF0ZSBfc3RhcnRGb2N1cygpIHtcbiAgICAvLyBTa2lwIGZvY3VzIHdoZW4ga2V5Ym9hcmQgaXMgdmlzaWJsZVxuICAgIGlmICh0aGlzLmtleWJvYXJkLnZpc2libGUpIHJldHVybjtcblxuICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSB0aW1lciBydW5uaW5nIGZvciB0aGlzIGVsZW1lbnQsIGp1c3QgbGV0IGl0IHBsYXkgb3V0IC1cbiAgICAvLyByZXNldHRpbmcgaXQgYXQgdGhpcyBwb2ludCB3aWxsIG9ubHkgcHVzaC1vdXQgdGhlIHRpbWUgYXQgd2hpY2ggdGhlIGZvY3VzIGlzXG4gICAgLy8gYXBwbGllZCB0byB0aGUgZWxlbWVudC5cbiAgICBpZiAodGhpcy5fdGltZXIpIHJldHVybjtcblxuICAgIHRoaXMuX3RpbWVyID0gdGltZXIodGhpcy50aW1lckRlbGF5KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3RpbWVyKSB7XG4gICAgICAgIHRoaXMuX3N0b3AoKTtcbiAgICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBJIHN0b3AgdGhlIHRpbWVyLWJhc2VkIHdvcmtmbG93LCBwcmV2ZW50aW5nIGZvY3VzIGZyb20gdGFraW5nIHBsYWNlLlxuICBwcml2YXRlIF9zdG9wKCkge1xuICAgIHRoaXMuX3RpbWVyPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3RpbWVyID0gbnVsbDtcbiAgfVxufVxuIl19
@@ -1,75 +0,0 @@
1
- import { Directive, HostListener, Input, numberAttribute } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/cdk/text-field";
4
- /**
5
- * Workaround to avoid CDK directive to scroll to top, when resizing
6
- */
7
- export class AutoResizeDirective {
8
- element;
9
- cdkDirective;
10
- get _cachedLineHeight() {
11
- return this.cdkDirective?.['_cachedLineHeight'] || 10;
12
- }
13
- get _previousValue() {
14
- return this.cdkDirective?.['_previousValue'] || '';
15
- }
16
- set _previousValue(value) {
17
- if (this.cdkDirective) {
18
- this.cdkDirective['_previousValue'] = value;
19
- }
20
- }
21
- maxRows;
22
- minRows;
23
- constructor(element, cdkDirective) {
24
- this.element = element;
25
- this.cdkDirective = cdkDirective;
26
- }
27
- ngAfterViewInit() { }
28
- onInput() {
29
- if (this._previousValue !== this.element.nativeElement.value) {
30
- // This will avoid CDK directive to trigger
31
- this._previousValue = this.element.nativeElement.value;
32
- // Resize
33
- this.doResize();
34
- }
35
- }
36
- doResize() {
37
- const textarea = this.element.nativeElement;
38
- // Force to recompute the needed height
39
- textarea.style.height = 'auto';
40
- const minHeight = this.minRows ? this.minRows * this._cachedLineHeight : 0;
41
- const maxHeight = this.maxRows ? this.maxRows * this._cachedLineHeight : Infinity;
42
- const newHeight = Math.min(Math.max(textarea.scrollHeight, minHeight), maxHeight);
43
- // DEBUG
44
- //console.debug(`[autoResizeTextarea] Resizing textarea to ${newHeight}px`);
45
- textarea.style.height = `${newHeight}px`;
46
- textarea.style.overflowY = textarea.scrollHeight > maxHeight ? 'auto' : 'hidden';
47
- }
48
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutoResizeDirective, deps: [{ token: i0.ElementRef }, { token: i1.CdkTextareaAutosize }], target: i0.ɵɵFactoryTarget.Directive });
49
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.14", type: AutoResizeDirective, selector: "textarea[cdkTextareaAutosize]", inputs: { maxRows: ["cdkAutosizeMaxRows", "maxRows", numberAttribute], minRows: ["cdkAutosizeMinRows", "minRows", numberAttribute] }, host: { listeners: { "input": "onInput()", "paste": "onInput()", "cut": "onInput()", "delete": "onInput()" } }, ngImport: i0 });
50
- }
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutoResizeDirective, decorators: [{
52
- type: Directive,
53
- args: [{
54
- selector: 'textarea[cdkTextareaAutosize]',
55
- }]
56
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.CdkTextareaAutosize }], propDecorators: { maxRows: [{
57
- type: Input,
58
- args: [{ alias: 'cdkAutosizeMaxRows', transform: numberAttribute }]
59
- }], minRows: [{
60
- type: Input,
61
- args: [{ alias: 'cdkAutosizeMinRows', transform: numberAttribute }]
62
- }], onInput: [{
63
- type: HostListener,
64
- args: ['input']
65
- }, {
66
- type: HostListener,
67
- args: ['paste']
68
- }, {
69
- type: HostListener,
70
- args: ['cut']
71
- }, {
72
- type: HostListener,
73
- args: ['delete']
74
- }] } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3Jlc2l6ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9kaXJlY3RpdmVzL2F1dG9yZXNpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0c7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBcUJuQjtJQUNBO0lBckJYLElBQVksaUJBQWlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckQsQ0FBQztJQUNELElBQVksY0FBYyxDQUFDLEtBQWE7UUFDdEMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUdELE9BQU8sQ0FBUztJQUdoQixPQUFPLENBQVM7SUFFaEIsWUFDVyxPQUF3QyxFQUN4QyxZQUFpQztRQURqQyxZQUFPLEdBQVAsT0FBTyxDQUFpQztRQUN4QyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7SUFDekMsQ0FBQztJQUVKLGVBQWUsS0FBSSxDQUFDO0lBTXBCLE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0QsMkNBQTJDO1lBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3ZELFNBQVM7WUFDVCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7SUFFTyxRQUFRO1FBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFNUMsdUNBQXVDO1FBQ3ZDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUUvQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFbEYsUUFBUTtRQUNSLDRFQUE0RTtRQUU1RSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLFNBQVMsSUFBSSxDQUFDO1FBRXpDLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNuRixDQUFDO3dHQXhEVSxtQkFBbUI7NEZBQW5CLG1CQUFtQixrR0FjbUIsZUFBZSw4Q0FHZixlQUFlOzs0RkFqQnJELG1CQUFtQjtrQkFOL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsK0JBQStCO2lCQUMxQztpSEFtQkMsT0FBTztzQkFETixLQUFLO3VCQUFDLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBSWxFLE9BQU87c0JBRE4sS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQWNsRSxPQUFPO3NCQUpOLFlBQVk7dUJBQUMsT0FBTzs7c0JBQ3BCLFlBQVk7dUJBQUMsT0FBTzs7c0JBQ3BCLFlBQVk7dUJBQUMsS0FBSzs7c0JBQ2xCLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgbnVtYmVyQXR0cmlidXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDZGtUZXh0YXJlYUF1dG9zaXplIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RleHQtZmllbGQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICd0ZXh0YXJlYVtjZGtUZXh0YXJlYUF1dG9zaXplXScsXG59KVxuLyoqXG4gKiBXb3JrYXJvdW5kIHRvIGF2b2lkIENESyBkaXJlY3RpdmUgdG8gc2Nyb2xsIHRvIHRvcCwgd2hlbiByZXNpemluZ1xuICovXG5leHBvcnQgY2xhc3MgQXV0b1Jlc2l6ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIGdldCBfY2FjaGVkTGluZUhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5jZGtEaXJlY3RpdmU/LlsnX2NhY2hlZExpbmVIZWlnaHQnXSB8fCAxMDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9wcmV2aW91c1ZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmNka0RpcmVjdGl2ZT8uWydfcHJldmlvdXNWYWx1ZSddIHx8ICcnO1xuICB9XG4gIHByaXZhdGUgc2V0IF9wcmV2aW91c1ZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jZGtEaXJlY3RpdmUpIHtcbiAgICAgIHRoaXMuY2RrRGlyZWN0aXZlWydfcHJldmlvdXNWYWx1ZSddID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KHsgYWxpYXM6ICdjZGtBdXRvc2l6ZU1heFJvd3MnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBtYXhSb3dzOiBudW1iZXI7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdjZGtBdXRvc2l6ZU1pblJvd3MnLCB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KVxuICBtaW5Sb3dzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MVGV4dEFyZWFFbGVtZW50PixcbiAgICByZWFkb25seSBjZGtEaXJlY3RpdmU6IENka1RleHRhcmVhQXV0b3NpemVcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XG5cbiAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScpXG4gIEBIb3N0TGlzdGVuZXIoJ2N1dCcpXG4gIEBIb3N0TGlzdGVuZXIoJ2RlbGV0ZScpXG4gIG9uSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMuX3ByZXZpb3VzVmFsdWUgIT09IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgYXZvaWQgQ0RLIGRpcmVjdGl2ZSB0byB0cmlnZ2VyXG4gICAgICB0aGlzLl9wcmV2aW91c1ZhbHVlID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAvLyBSZXNpemVcbiAgICAgIHRoaXMuZG9SZXNpemUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRvUmVzaXplKCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAvLyBGb3JjZSB0byByZWNvbXB1dGUgdGhlIG5lZWRlZCBoZWlnaHRcbiAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG5cbiAgICBjb25zdCBtaW5IZWlnaHQgPSB0aGlzLm1pblJvd3MgPyB0aGlzLm1pblJvd3MgKiB0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0IDogMDtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSB0aGlzLm1heFJvd3MgPyB0aGlzLm1heFJvd3MgKiB0aGlzLl9jYWNoZWRMaW5lSGVpZ2h0IDogSW5maW5pdHk7XG4gICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5taW4oTWF0aC5tYXgodGV4dGFyZWEuc2Nyb2xsSGVpZ2h0LCBtaW5IZWlnaHQpLCBtYXhIZWlnaHQpO1xuXG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoYFthdXRvUmVzaXplVGV4dGFyZWFdIFJlc2l6aW5nIHRleHRhcmVhIHRvICR7bmV3SGVpZ2h0fXB4YCk7XG5cbiAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSBgJHtuZXdIZWlnaHR9cHhgO1xuXG4gICAgdGV4dGFyZWEuc3R5bGUub3ZlcmZsb3dZID0gdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0ID4gbWF4SGVpZ2h0ID8gJ2F1dG8nIDogJ2hpZGRlbic7XG4gIH1cbn1cbiJdfQ==
@@ -1,30 +0,0 @@
1
- import { booleanAttribute, Directive, ElementRef, Inject, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class AutoTitleDirective {
4
- elementRef;
5
- appAutoTitle = true;
6
- constructor(elementRef) {
7
- this.elementRef = elementRef;
8
- }
9
- ngAfterContentChecked() {
10
- // Update title if different
11
- if (this.elementRef.nativeElement && this.elementRef.nativeElement.title !== this.elementRef.nativeElement.textContent) {
12
- this.elementRef.nativeElement.title = this.elementRef.nativeElement.textContent;
13
- }
14
- }
15
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutoTitleDirective, deps: [{ token: ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
16
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.14", type: AutoTitleDirective, selector: "ion-label[appAutoTitle], mat-label[appAutoTitle]", inputs: { appAutoTitle: ["appAutoTitle", "appAutoTitle", booleanAttribute] }, ngImport: i0 });
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutoTitleDirective, decorators: [{
19
- type: Directive,
20
- args: [{
21
- selector: 'ion-label[appAutoTitle], mat-label[appAutoTitle]',
22
- }]
23
- }], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
24
- type: Inject,
25
- args: [ElementRef]
26
- }] }], propDecorators: { appAutoTitle: [{
27
- type: Input,
28
- args: [{ transform: booleanAttribute }]
29
- }] } });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3RpdGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvYXV0b3RpdGxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLNUcsTUFBTSxPQUFPLGtCQUFrQjtJQUdvQjtJQUZULFlBQVksR0FBRyxJQUFJLENBQUM7SUFFNUQsWUFBaUQsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFBRyxDQUFDO0lBRXhGLHFCQUFxQjtRQUNuQiw0QkFBNEI7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUNsRixDQUFDO0lBQ0gsQ0FBQzt3R0FWVSxrQkFBa0Isa0JBR1QsVUFBVTs0RkFIbkIsa0JBQWtCLHlIQUNULGdCQUFnQjs7NEZBRHpCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0RBQWtEO2lCQUM3RDs7MEJBSWMsTUFBTTsyQkFBQyxVQUFVO3lDQUZVLFlBQVk7c0JBQW5ELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRDaGVja2VkLCBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnaW9uLWxhYmVsW2FwcEF1dG9UaXRsZV0sIG1hdC1sYWJlbFthcHBBdXRvVGl0bGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0b1RpdGxlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50Q2hlY2tlZCB7XG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhcHBBdXRvVGl0bGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgLy8gVXBkYXRlIHRpdGxlIGlmIGRpZmZlcmVudFxuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCAmJiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50aXRsZSAhPT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQpIHtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnRpdGxlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,35 +0,0 @@
1
- import { booleanAttribute, Directive, ElementRef, Inject, Input } from '@angular/core';
2
- import { MatTooltip } from '@angular/material/tooltip';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/tooltip";
5
- export class AutoTooltipDirective {
6
- elementRef;
7
- matTooltip;
8
- appAutoTooltip = true;
9
- constructor(elementRef, matTooltip) {
10
- this.elementRef = elementRef;
11
- this.matTooltip = matTooltip;
12
- }
13
- ngAfterContentChecked() {
14
- // Update Material Tooltip if different
15
- if (this.elementRef.nativeElement && this.matTooltip && this.matTooltip.message !== this.elementRef.nativeElement.textContent) {
16
- this.matTooltip.message = this.elementRef.nativeElement.textContent;
17
- }
18
- }
19
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutoTooltipDirective, deps: [{ token: ElementRef }, { token: i1.MatTooltip }], target: i0.ɵɵFactoryTarget.Directive });
20
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.14", type: AutoTooltipDirective, selector: "ion-label[appAutoTooltip], mat-label[appAutoTooltip]", inputs: { appAutoTooltip: ["appAutoTooltip", "appAutoTooltip", booleanAttribute] }, hostDirectives: [{ directive: i1.MatTooltip }], ngImport: i0 });
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AutoTooltipDirective, decorators: [{
23
- type: Directive,
24
- args: [{
25
- selector: 'ion-label[appAutoTooltip], mat-label[appAutoTooltip]',
26
- hostDirectives: [MatTooltip],
27
- }]
28
- }], ctorParameters: () => [{ type: i0.ElementRef, decorators: [{
29
- type: Inject,
30
- args: [ElementRef]
31
- }] }, { type: i1.MatTooltip }], propDecorators: { appAutoTooltip: [{
32
- type: Input,
33
- args: [{ transform: booleanAttribute }]
34
- }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3Rvb2x0aXAuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZGlyZWN0aXZlcy9hdXRvdG9vbHRpcC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFNdkQsTUFBTSxPQUFPLG9CQUFvQjtJQUlRO0lBQ3BCO0lBSnFCLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFFOUQsWUFDdUMsVUFBbUMsRUFDdkQsVUFBc0I7UUFERixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUN2RCxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3RDLENBQUM7SUFFSixxQkFBcUI7UUFDbkIsdUNBQXVDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5SCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7d0dBYlUsb0JBQW9CLGtCQUlyQixVQUFVOzRGQUpULG9CQUFvQixtSUFDWCxnQkFBZ0I7OzRGQUR6QixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNEQUFzRDtvQkFDaEUsY0FBYyxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUM3Qjs7MEJBS0ksTUFBTTsyQkFBQyxVQUFVO2tFQUhvQixjQUFjO3NCQUFyRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgYm9vbGVhbkF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lvbi1sYWJlbFthcHBBdXRvVG9vbHRpcF0sIG1hdC1sYWJlbFthcHBBdXRvVG9vbHRpcF0nLFxuICBob3N0RGlyZWN0aXZlczogW01hdFRvb2x0aXBdLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudENoZWNrZWQge1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXBwQXV0b1Rvb2x0aXAgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdFRvb2x0aXA6IE1hdFRvb2x0aXBcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAvLyBVcGRhdGUgTWF0ZXJpYWwgVG9vbHRpcCBpZiBkaWZmZXJlbnRcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5tYXRUb29sdGlwICYmIHRoaXMubWF0VG9vbHRpcC5tZXNzYWdlICE9PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCkge1xuICAgICAgdGhpcy5tYXRUb29sdGlwLm1lc3NhZ2UgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,55 +0,0 @@
1
- import { DestroyRef, Directive, inject, input, signal } from '@angular/core';
2
- import { APP_CELL_SELECTION_SERVICE_TOKEN } from './cell-selection.service';
3
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { filter } from 'rxjs/operators';
5
- import { arraySize } from '../../functions';
6
- import * as i0 from "@angular/core";
7
- export class CellIdentifierDirective {
8
- cellId = input.required({ alias: 'appCellId' });
9
- isInitialized = false;
10
- isCellSelected = signal(false);
11
- isMultipleCellsSelected = signal(false);
12
- isDragging = signal(false);
13
- // Optional service dependency
14
- service = inject(APP_CELL_SELECTION_SERVICE_TOKEN, { optional: true });
15
- destroyRef = inject(DestroyRef);
16
- ngOnInit() {
17
- // Listen to service selection changes and emit
18
- this.service?.selectionChangeSubject
19
- .pipe(filter(() => this.isInitialized), takeUntilDestroyed(this.destroyRef))
20
- .subscribe(() => {
21
- this.isCellSelected.set(this.service.isCellSelected(this.cellId()));
22
- this.isMultipleCellsSelected.set(arraySize(this.service.selectedCells) > 1);
23
- });
24
- this.isInitialized = true;
25
- }
26
- async handleMouseDown(event) {
27
- if (!this.isInitialized)
28
- return;
29
- await this.service?.handleCellMouseDown(event, this.cellId());
30
- }
31
- async handleMouseEnter(event) {
32
- if (!this.isInitialized)
33
- return;
34
- await this.service?.handleCellMouseEnter(event, this.cellId());
35
- }
36
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellIdentifierDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
37
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: CellIdentifierDirective, isStandalone: true, selector: "[appCellId]", inputs: { cellId: { classPropertyName: "cellId", publicName: "appCellId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mousedown": "handleMouseDown($event)", "mouseenter": "handleMouseEnter($event)" }, properties: { "class.cell-selected": "isCellSelected()", "class.cell-multiple-selected": "isMultipleCellsSelected()", "class.cell-dragging": "isDragging()", "attr.data-row-id": "cellId().rowId", "attr.data-column-name": "cellId().columnName" } }, ngImport: i0 });
38
- }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellIdentifierDirective, decorators: [{
40
- type: Directive,
41
- args: [{
42
- selector: '[appCellId]',
43
- standalone: true,
44
- host: {
45
- '(mousedown)': 'handleMouseDown($event)',
46
- '(mouseenter)': 'handleMouseEnter($event)',
47
- '[class.cell-selected]': 'isCellSelected()',
48
- '[class.cell-multiple-selected]': 'isMultipleCellsSelected()',
49
- '[class.cell-dragging]': 'isDragging()',
50
- '[attr.data-row-id]': 'cellId().rowId',
51
- '[attr.data-column-name]': 'cellId().columnName',
52
- },
53
- }]
54
- }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1pZGVudGlmaWVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL2RpcmVjdGl2ZXMvY2VsbC1zZWxlY3Rpb24vY2VsbC1pZGVudGlmaWVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsZ0NBQWdDLEVBQVcsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQWU1QyxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFM0MsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUNwQixjQUFjLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJDLDhCQUE4QjtJQUNiLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0NBQWdDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRWpELFFBQVE7UUFDTiwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxzQkFBc0I7YUFDakMsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQ2hDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDcEM7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVTLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBaUI7UUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUNoQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFUyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBaUI7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTztRQUNoQyxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7d0dBbENVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQWJuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLGFBQWEsRUFBRSx5QkFBeUI7d0JBQ3hDLGNBQWMsRUFBRSwwQkFBMEI7d0JBQzFDLHVCQUF1QixFQUFFLGtCQUFrQjt3QkFDM0MsZ0NBQWdDLEVBQUUsMkJBQTJCO3dCQUM3RCx1QkFBdUIsRUFBRSxjQUFjO3dCQUN2QyxvQkFBb0IsRUFBRSxnQkFBZ0I7d0JBQ3RDLHlCQUF5QixFQUFFLHFCQUFxQjtxQkFDakQ7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBUFBfQ0VMTF9TRUxFQ1RJT05fU0VSVklDRV9UT0tFTiwgSUNlbGxJZCB9IGZyb20gJy4vY2VsbC1zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBhcnJheVNpemUgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYXBwQ2VsbElkXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICAnKG1vdXNlZG93biknOiAnaGFuZGxlTW91c2VEb3duKCRldmVudCknLFxuICAgICcobW91c2VlbnRlciknOiAnaGFuZGxlTW91c2VFbnRlcigkZXZlbnQpJyxcbiAgICAnW2NsYXNzLmNlbGwtc2VsZWN0ZWRdJzogJ2lzQ2VsbFNlbGVjdGVkKCknLFxuICAgICdbY2xhc3MuY2VsbC1tdWx0aXBsZS1zZWxlY3RlZF0nOiAnaXNNdWx0aXBsZUNlbGxzU2VsZWN0ZWQoKScsXG4gICAgJ1tjbGFzcy5jZWxsLWRyYWdnaW5nXSc6ICdpc0RyYWdnaW5nKCknLFxuICAgICdbYXR0ci5kYXRhLXJvdy1pZF0nOiAnY2VsbElkKCkucm93SWQnLFxuICAgICdbYXR0ci5kYXRhLWNvbHVtbi1uYW1lXSc6ICdjZWxsSWQoKS5jb2x1bW5OYW1lJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2VsbElkZW50aWZpZXJEaXJlY3RpdmU8QyBleHRlbmRzIElDZWxsSWQgPSBJQ2VsbElkPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNlbGxJZCA9IGlucHV0LnJlcXVpcmVkPEM+KHsgYWxpYXM6ICdhcHBDZWxsSWQnIH0pO1xuXG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgaXNDZWxsU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNNdWx0aXBsZUNlbGxzU2VsZWN0ZWQgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNEcmFnZ2luZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLy8gT3B0aW9uYWwgc2VydmljZSBkZXBlbmRlbmN5XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZSA9IGluamVjdChBUFBfQ0VMTF9TRUxFQ1RJT05fU0VSVklDRV9UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIExpc3RlbiB0byBzZXJ2aWNlIHNlbGVjdGlvbiBjaGFuZ2VzIGFuZCBlbWl0XG4gICAgdGhpcy5zZXJ2aWNlPy5zZWxlY3Rpb25DaGFuZ2VTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNJbml0aWFsaXplZCksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0NlbGxTZWxlY3RlZC5zZXQodGhpcy5zZXJ2aWNlLmlzQ2VsbFNlbGVjdGVkKHRoaXMuY2VsbElkKCkpKTtcbiAgICAgICAgdGhpcy5pc011bHRpcGxlQ2VsbHNTZWxlY3RlZC5zZXQoYXJyYXlTaXplKHRoaXMuc2VydmljZS5zZWxlY3RlZENlbGxzKSA+IDEpO1xuICAgICAgfSk7XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCkgcmV0dXJuO1xuICAgIGF3YWl0IHRoaXMuc2VydmljZT8uaGFuZGxlQ2VsbE1vdXNlRG93bihldmVudCwgdGhpcy5jZWxsSWQoKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICghdGhpcy5pc0luaXRpYWxpemVkKSByZXR1cm47XG4gICAgYXdhaXQgdGhpcy5zZXJ2aWNlPy5oYW5kbGVDZWxsTW91c2VFbnRlcihldmVudCwgdGhpcy5jZWxsSWQoKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,206 +0,0 @@
1
- import { DestroyRef, Directive, effect, ElementRef, inject, input, output, Renderer2 } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { fromEvent } from 'rxjs';
4
- import { APP_CELL_SELECTION_SERVICE_TOKEN } from './cell-selection.service';
5
- import { isEmptyArray, isNotEmptyArray } from '../../functions';
6
- import * as i0 from "@angular/core";
7
- export class CellSelectionDirective {
8
- // Inputs
9
- // eslint-disable-next-line @angular-eslint/no-input-rename
10
- selectableColumns = input([], { alias: 'appSelectableColumns' });
11
- disabled = input(false, { alias: 'appCellSelectionDisabled' });
12
- // Outputs
13
- // eslint-disable-next-line @angular-eslint/no-output-rename
14
- selectionChange = output({ alias: 'appCellSelectionChange' });
15
- // eslint-disable-next-line @angular-eslint/no-output-rename
16
- rightClick = output({ alias: 'appCellRightClick' });
17
- // Inject service by token
18
- service = inject(APP_CELL_SELECTION_SERVICE_TOKEN);
19
- elementRef = inject(ElementRef);
20
- renderer = inject(Renderer2);
21
- destroyRef = inject(DestroyRef);
22
- overlayElements = [];
23
- constructor() {
24
- effect(() => {
25
- this.service.disabled = this.disabled();
26
- });
27
- }
28
- ngOnInit() {
29
- // Initialize service with selectable columns
30
- this.setupServiceConfiguration();
31
- // Setup global mouseup listener
32
- this.setupGlobalMouseEvents();
33
- // Setup keyboard listener for copy (for test)
34
- // this.setupCopyListener();
35
- }
36
- setupServiceConfiguration() {
37
- // Pass selectable columns to service
38
- this.service.selectableColumns = this.selectableColumns();
39
- // Listen to service selection changes and emit
40
- this.service.selectionChangeSubject
41
- .pipe(takeUntilDestroyed(this.destroyRef))
42
- .subscribe((event) => this.selectionChange.emit(event));
43
- // Listen to right-click event
44
- this.service.selectionRightClickSubject.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => this.rightClick.emit(event));
45
- }
46
- setupGlobalMouseEvents() {
47
- fromEvent(document, 'mouseup')
48
- .pipe(takeUntilDestroyed(this.destroyRef))
49
- .subscribe(() => this.service.endMouseMove());
50
- }
51
- // For test purpose only (type CTRL+C)
52
- setupCopyListener() {
53
- fromEvent(document, 'keydown')
54
- .pipe(takeUntilDestroyed(this.destroyRef))
55
- .subscribe((event) => {
56
- if ((event.ctrlKey || event.metaKey) && event.key === 'c') {
57
- const cells = this.service.selectedCells;
58
- if (isNotEmptyArray(cells)) {
59
- // Show overlay
60
- this.addCellsOverlay(cells);
61
- event.preventDefault();
62
- // Hide overlay after animation completes (1 second)
63
- setTimeout(() => {
64
- this.removeCellsOverlay();
65
- }, 1000);
66
- }
67
- }
68
- });
69
- }
70
- addCellsOverlay(cells) {
71
- // Remove existing overlays
72
- this.removeCellsOverlay();
73
- // Group cells into contiguous regions
74
- const cellGroups = this.groupContiguousCells(cells);
75
- // Create and render overlay for each contiguous region
76
- cellGroups.forEach((group) => {
77
- const bounds = this.calculateSelectionBounds(group);
78
- if (bounds) {
79
- const overlay = this.createOverlayElement(bounds);
80
- this.renderer.appendChild(this.elementRef.nativeElement, overlay);
81
- this.overlayElements.push(overlay);
82
- }
83
- });
84
- }
85
- removeCellsOverlay() {
86
- this.overlayElements.forEach((overlay) => {
87
- this.renderer.removeChild(this.elementRef.nativeElement, overlay);
88
- });
89
- this.overlayElements = [];
90
- }
91
- groupContiguousCells(cells) {
92
- // Create a map for quick lookup
93
- const cellMap = new Map();
94
- cells.forEach((cell) => {
95
- cellMap.set(this.getCellKey(cell), cell);
96
- });
97
- const visited = new Set();
98
- const groups = [];
99
- // Process each cell
100
- cells.forEach((cell) => {
101
- const key = this.getCellKey(cell);
102
- if (visited.has(key)) {
103
- return;
104
- }
105
- // Start a new contiguous group with flood-fill
106
- const group = [];
107
- const queue = [cell];
108
- visited.add(key);
109
- while (queue.length > 0) {
110
- const current = queue.shift();
111
- group.push(current);
112
- // Check all 4 adjacent cells (up, down, left, right)
113
- const neighbors = this.getAdjacentCells(current);
114
- neighbors.forEach((neighbor) => {
115
- const neighborKey = this.getCellKey(neighbor);
116
- if (cellMap.has(neighborKey) && !visited.has(neighborKey)) {
117
- visited.add(neighborKey);
118
- queue.push(neighbor);
119
- }
120
- });
121
- }
122
- groups.push(group);
123
- });
124
- return groups;
125
- }
126
- getAdjacentCells(cell) {
127
- // Returns cells adjacent to the current cell (up, down, left, right)
128
- // Note: We need to get column order from the actual table structure
129
- // For now, we'll use a simple approach based on rowId adjacency
130
- return [
131
- { rowId: cell.rowId - 1, columnName: cell.columnName }, // up
132
- { rowId: cell.rowId + 1, columnName: cell.columnName }, // down
133
- { rowId: cell.rowId, columnName: this.getNextColumnName(cell.columnName, -1) }, // left
134
- { rowId: cell.rowId, columnName: this.getNextColumnName(cell.columnName, 1) }, // right
135
- ].filter((c) => c.columnName !== null);
136
- }
137
- getNextColumnName(currentColumnName, offset) {
138
- const columns = this.service.selectableColumns;
139
- const currentIndex = columns.indexOf(currentColumnName);
140
- if (currentIndex === -1) {
141
- return null;
142
- }
143
- const newIndex = currentIndex + offset;
144
- if (newIndex < 0 || newIndex >= columns.length) {
145
- return null;
146
- }
147
- return columns[newIndex];
148
- }
149
- getCellKey(cell) {
150
- return `${cell.rowId}-${cell.columnName}`;
151
- }
152
- calculateSelectionBounds(cells) {
153
- const container = this.elementRef.nativeElement;
154
- // Find all selected cell elements
155
- const cellElements = [];
156
- cells.forEach((cell) => {
157
- const cellElement = container.querySelector(`[data-row-id="${cell.rowId}"][data-column-name="${cell.columnName}"]`);
158
- if (cellElement) {
159
- cellElements.push(cellElement);
160
- }
161
- });
162
- if (isEmptyArray(cellElements)) {
163
- return null;
164
- }
165
- // Get container position
166
- const containerRect = container.getBoundingClientRect();
167
- // Calculate bounding box
168
- let minTop = Infinity;
169
- let minLeft = Infinity;
170
- let maxBottom = -Infinity;
171
- let maxRight = -Infinity;
172
- cellElements.forEach((element) => {
173
- const rect = element.getBoundingClientRect();
174
- minTop = Math.min(minTop, rect.top - containerRect.top);
175
- minLeft = Math.min(minLeft, rect.left - containerRect.left);
176
- maxBottom = Math.max(maxBottom, rect.bottom - containerRect.top);
177
- maxRight = Math.max(maxRight, rect.right - containerRect.left);
178
- });
179
- return {
180
- top: minTop,
181
- left: minLeft,
182
- width: maxRight - minLeft,
183
- height: maxBottom - minTop,
184
- };
185
- }
186
- createOverlayElement(bounds) {
187
- const overlay = this.renderer.createElement('div');
188
- this.renderer.addClass(overlay, 'cell-selection-overlay');
189
- // Set position and size
190
- this.renderer.setStyle(overlay, 'top', `${bounds.top}px`);
191
- this.renderer.setStyle(overlay, 'left', `${bounds.left}px`);
192
- this.renderer.setStyle(overlay, 'width', `${bounds.width}px`);
193
- this.renderer.setStyle(overlay, 'height', `${bounds.height}px`);
194
- return overlay;
195
- }
196
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellSelectionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
197
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.14", type: CellSelectionDirective, isStandalone: true, selector: "[appCellSelection]", inputs: { selectableColumns: { classPropertyName: "selectableColumns", publicName: "appSelectableColumns", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "appCellSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "appCellSelectionChange", rightClick: "appCellRightClick" }, ngImport: i0 });
198
- }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CellSelectionDirective, decorators: [{
200
- type: Directive,
201
- args: [{
202
- selector: '[appCellSelection]',
203
- standalone: true,
204
- }]
205
- }], ctorParameters: () => [] });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zZWxlY3Rpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvZGlyZWN0aXZlcy9jZWxsLXNlbGVjdGlvbi9jZWxsLXNlbGVjdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQStCLE1BQU0sMEJBQTBCLENBQUM7QUFDekcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFhaEUsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxTQUFTO0lBQ1QsMkRBQTJEO0lBQzNELGlCQUFpQixHQUFHLEtBQUssQ0FBVyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLDBCQUEwQixFQUFFLENBQUMsQ0FBQztJQUUvRCxVQUFVO0lBQ1YsNERBQTREO0lBQzVELGVBQWUsR0FBRyxNQUFNLENBQXdCLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztJQUNyRiw0REFBNEQ7SUFDNUQsVUFBVSxHQUFHLE1BQU0sQ0FBYSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFFaEUsMEJBQTBCO0lBQ2hCLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0NBQWdDLENBQUMsQ0FB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QUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBRWhFLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7d0dBcE9VLHNCQUFzQjs0RkFBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgZWZmZWN0LCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFQUF9DRUxMX1NFTEVDVElPTl9TRVJWSUNFX1RPS0VOLCBDZWxsU2VsZWN0aW9uRXZlbnQsIElDZWxsSWQgfSBmcm9tICcuL2NlbGwtc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgaXNFbXB0eUFycmF5LCBpc05vdEVtcHR5QXJyYXkgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuXG5pbnRlcmZhY2UgU2VsZWN0aW9uQm91bmRzIHtcbiAgdG9wOiBudW1iZXI7XG4gIGxlZnQ6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBDZWxsU2VsZWN0aW9uXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIENlbGxTZWxlY3Rpb25EaXJlY3RpdmU8QyBleHRlbmRzIElDZWxsSWQgPSBJQ2VsbElkPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIElucHV0c1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBzZWxlY3RhYmxlQ29sdW1ucyA9IGlucHV0PHN0cmluZ1tdPihbXSwgeyBhbGlhczogJ2FwcFNlbGVjdGFibGVDb2x1bW5zJyB9KTtcbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSwgeyBhbGlhczogJ2FwcENlbGxTZWxlY3Rpb25EaXNhYmxlZCcgfSk7XG5cbiAgLy8gT3V0cHV0c1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWVcbiAgc2VsZWN0aW9uQ2hhbmdlID0gb3V0cHV0PENlbGxTZWxlY3Rpb25FdmVudDxDPj4oeyBhbGlhczogJ2FwcENlbGxTZWxlY3Rpb25DaGFuZ2UnIH0pO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1yZW5hbWVcbiAgcmlnaHRDbGljayA9IG91dHB1dDxNb3VzZUV2ZW50Pih7IGFsaWFzOiAnYXBwQ2VsbFJpZ2h0Q2xpY2snIH0pO1xuXG4gIC8vIEluamVjdCBzZXJ2aWNlIGJ5IHRva2VuXG4gIHByb3RlY3RlZCBzZXJ2aWNlID0gaW5qZWN0KEFQUF9DRUxMX1NFTEVDVElPTl9TRVJWSUNFX1RPS0VOKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIG92ZXJsYXlFbGVtZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLnNlcnZpY2UuZGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXplIHNlcnZpY2Ugd2l0aCBzZWxlY3RhYmxlIGNvbHVtbnNcbiAgICB0aGlzLnNldHVwU2VydmljZUNvbmZpZ3VyYXRpb24oKTtcbiAgICAvLyBTZXR1cCBnbG9iYWwgbW91c2V1cCBsaXN0ZW5lclxuICAgIHRoaXMuc2V0dXBHbG9iYWxNb3VzZUV2ZW50cygpO1xuICAgIC8vIFNldHVwIGtleWJvYXJkIGxpc3RlbmVyIGZvciBjb3B5IChmb3IgdGVzdClcbiAgICAvLyB0aGlzLnNldHVwQ29weUxpc3RlbmVyKCk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwU2VydmljZUNvbmZpZ3VyYXRpb24oKSB7XG4gICAgLy8gUGFzcyBzZWxlY3RhYmxlIGNvbHVtbnMgdG8gc2VydmljZVxuICAgIHRoaXMuc2VydmljZS5zZWxlY3RhYmxlQ29sdW1ucyA9IHRoaXMuc2VsZWN0YWJsZUNvbHVtbnMoKTtcblxuICAgIC8vIExpc3RlbiB0byBzZXJ2aWNlIHNlbGVjdGlvbiBjaGFuZ2VzIGFuZCBlbWl0XG4gICAgdGhpcy5zZXJ2aWNlLnNlbGVjdGlvbkNoYW5nZVN1YmplY3RcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoZXZlbnQgYXMgQ2VsbFNlbGVjdGlvbkV2ZW50PEM+KSk7XG5cbiAgICAvLyBMaXN0ZW4gdG8gcmlnaHQtY2xpY2sgZXZlbnRcbiAgICB0aGlzLnNlcnZpY2Uuc2VsZWN0aW9uUmlnaHRDbGlja1N1YmplY3QucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChldmVudCkgPT4gdGhpcy5yaWdodENsaWNrLmVtaXQoZXZlbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBHbG9iYWxNb3VzZUV2ZW50cygpIHtcbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNlcnZpY2UuZW5kTW91c2VNb3ZlKCkpO1xuICB9XG5cbiAgLy8gRm9yIHRlc3QgcHVycG9zZSBvbmx5ICh0eXBlIENUUkwrQylcbiAgcHJpdmF0ZSBzZXR1cENvcHlMaXN0ZW5lcigpIHtcbiAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIGV2ZW50LmtleSA9PT0gJ2MnKSB7XG4gICAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnNlcnZpY2Uuc2VsZWN0ZWRDZWxscyBhcyBDW107XG4gICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShjZWxscykpIHtcbiAgICAgICAgICAgIC8vIFNob3cgb3ZlcmxheVxuICAgICAgICAgICAgdGhpcy5hZGRDZWxsc092ZXJsYXkoY2VsbHMpO1xuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAvLyBIaWRlIG92ZXJsYXkgYWZ0ZXIgYW5pbWF0aW9uIGNvbXBsZXRlcyAoMSBzZWNvbmQpXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDZWxsc092ZXJsYXkoKTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBhZGRDZWxsc092ZXJsYXkoY2VsbHM6IENbXSkge1xuICAgIC8vIFJlbW92ZSBleGlzdGluZyBvdmVybGF5c1xuICAgIHRoaXMucmVtb3ZlQ2VsbHNPdmVybGF5KCk7XG5cbiAgICAvLyBHcm91cCBjZWxscyBpbnRvIGNvbnRpZ3VvdXMgcmVnaW9uc1xuICAgIGNvbnN0IGNlbGxHcm91cHMgPSB0aGlzLmdyb3VwQ29udGlndW91c0NlbGxzKGNlbGxzKTtcblxuICAgIC8vIENyZWF0ZSBhbmQgcmVuZGVyIG92ZXJsYXkgZm9yIGVhY2ggY29udGlndW91cyByZWdpb25cbiAgICBjZWxsR3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICBjb25zdCBib3VuZHMgPSB0aGlzLmNhbGN1bGF0ZVNlbGVjdGlvbkJvdW5kcyhncm91cCk7XG4gICAgICBpZiAoYm91bmRzKSB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXkgPSB0aGlzLmNyZWF0ZU92ZXJsYXlFbGVtZW50KGJvdW5kcyk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG92ZXJsYXkpO1xuICAgICAgICB0aGlzLm92ZXJsYXlFbGVtZW50cy5wdXNoKG92ZXJsYXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlQ2VsbHNPdmVybGF5KCkge1xuICAgIHRoaXMub3ZlcmxheUVsZW1lbnRzLmZvckVhY2goKG92ZXJsYXkpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIG92ZXJsYXkpO1xuICAgIH0pO1xuICAgIHRoaXMub3ZlcmxheUVsZW1lbnRzID0gW107XG4gIH1cblxuICBwcml2YXRlIGdyb3VwQ29udGlndW91c0NlbGxzKGNlbGxzOiBDW10pOiBDW11bXSB7XG4gICAgLy8gQ3JlYXRlIGEgbWFwIGZvciBxdWljayBsb29rdXBcbiAgICBjb25zdCBjZWxsTWFwID0gbmV3IE1hcDxzdHJpbmcsIEM+KCk7XG4gICAgY2VsbHMuZm9yRWFjaCgoY2VsbCkgPT4ge1xuICAgICAgY2VsbE1hcC5zZXQodGhpcy5nZXRDZWxsS2V5KGNlbGwpLCBjZWxsKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBncm91cHM6IENbXVtdID0gW107XG5cbiAgICAvLyBQcm9jZXNzIGVhY2ggY2VsbFxuICAgIGNlbGxzLmZvckVhY2goKGNlbGwpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Q2VsbEtleShjZWxsKTtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhrZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gU3RhcnQgYSBuZXcgY29udGlndW91cyBncm91cCB3aXRoIGZsb29kLWZpbGxcbiAgICAgIGNvbnN0IGdyb3VwOiBDW10gPSBbXTtcbiAgICAgIGNvbnN0IHF1ZXVlOiBDW10gPSBbY2VsbF07XG4gICAgICB2aXNpdGVkLmFkZChrZXkpO1xuXG4gICAgICB3aGlsZSAocXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcXVldWUuc2hpZnQoKSE7XG4gICAgICAgIGdyb3VwLnB1c2goY3VycmVudCk7XG5cbiAgICAgICAgLy8gQ2hlY2sgYWxsIDQgYWRqYWNlbnQgY2VsbHMgKHVwLCBkb3duLCBsZWZ0LCByaWdodClcbiAgICAgICAgY29uc3QgbmVpZ2hib3JzID0gdGhpcy5nZXRBZGphY2VudENlbGxzKGN1cnJlbnQpO1xuICAgICAgICBuZWlnaGJvcnMuZm9yRWFjaCgobmVpZ2hib3IpID0+IHtcbiAgICAgICAgICBjb25zdCBuZWlnaGJvcktleSA9IHRoaXMuZ2V0Q2VsbEtleShuZWlnaGJvcik7XG4gICAgICAgICAgaWYgKGNlbGxNYXAuaGFzKG5laWdoYm9yS2V5KSAmJiAhdmlzaXRlZC5oYXMobmVpZ2hib3JLZXkpKSB7XG4gICAgICAgICAgICB2aXNpdGVkLmFkZChuZWlnaGJvcktleSk7XG4gICAgICAgICAgICBxdWV1ZS5wdXNoKG5laWdoYm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBncm91cHMucHVzaChncm91cCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZ3JvdXBzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZGphY2VudENlbGxzKGNlbGw6IEMpOiBDW10ge1xuICAgIC8vIFJldHVybnMgY2VsbHMgYWRqYWNlbnQgdG8gdGhlIGN1cnJlbnQgY2VsbCAodXAsIGRvd24sIGxlZnQsIHJpZ2h0KVxuICAgIC8vIE5vdGU6IFdlIG5lZWQgdG8gZ2V0IGNvbHVtbiBvcmRlciBmcm9tIHRoZSBhY3R1YWwgdGFibGUgc3RydWN0dXJlXG4gICAgLy8gRm9yIG5vdywgd2UnbGwgdXNlIGEgc2ltcGxlIGFwcHJvYWNoIGJhc2VkIG9uIHJvd0lkIGFkamFjZW5jeVxuICAgIHJldHVybiBbXG4gICAgICB7IHJvd0lkOiBjZWxsLnJvd0lkIC0gMSwgY29sdW1uTmFtZTogY2VsbC5jb2x1bW5OYW1lIH0sIC8vIHVwXG4gICAgICB7IHJvd0lkOiBjZWxsLnJvd0lkICsgMSwgY29sdW1uTmFtZTogY2VsbC5jb2x1bW5OYW1lIH0sIC8vIGRvd25cbiAgICAgIHsgcm93SWQ6IGNlbGwucm93SWQsIGNvbHVtbk5hbWU6IHRoaXMuZ2V0TmV4dENvbHVtbk5hbWUoY2VsbC5jb2x1bW5OYW1lLCAtMSkgfSwgLy8gbGVmdFxuICAgICAgeyByb3dJZDogY2VsbC5yb3dJZCwgY29sdW1uTmFtZTogdGhpcy5nZXROZXh0Q29sdW1uTmFtZShjZWxsLmNvbHVtbk5hbWUsIDEpIH0sIC8vIHJpZ2h0XG4gICAgXS5maWx0ZXIoKGMpID0+IGMuY29sdW1uTmFtZSAhPT0gbnVsbCkgYXMgQ1tdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXh0Q29sdW1uTmFtZShjdXJyZW50Q29sdW1uTmFtZTogc3RyaW5nLCBvZmZzZXQ6IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLnNlcnZpY2Uuc2VsZWN0YWJsZUNvbHVtbnM7XG5cbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjb2x1bW5zLmluZGV4T2YoY3VycmVudENvbHVtbk5hbWUpO1xuICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdJbmRleCA9IGN1cnJlbnRJbmRleCArIG9mZnNldDtcbiAgICBpZiAobmV3SW5kZXggPCAwIHx8IG5ld0luZGV4ID49IGNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29sdW1uc1tuZXdJbmRleF07XG4gIH1cblxuICBwcml2YXRlIGdldENlbGxLZXkoY2VsbDogQyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2NlbGwucm93SWR9LSR7Y2VsbC5jb2x1bW5OYW1lfWA7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVNlbGVjdGlvbkJvdW5kcyhjZWxsczogQ1tdKTogU2VsZWN0aW9uQm91bmRzIHwgbnVsbCB7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAvLyBGaW5kIGFsbCBzZWxlY3RlZCBjZWxsIGVsZW1lbnRzXG4gICAgY29uc3QgY2VsbEVsZW1lbnRzOiBIVE1MRWxlbWVudFtdID0gW107XG4gICAgY2VsbHMuZm9yRWFjaCgoY2VsbCkgPT4ge1xuICAgICAgY29uc3QgY2VsbEVsZW1lbnQgPSBjb250YWluZXIucXVlcnlTZWxlY3RvcihgW2RhdGEtcm93LWlkPVwiJHtjZWxsLnJvd0lkfVwiXVtkYXRhLWNvbHVtbi1uYW1lPVwiJHtjZWxsLmNvbHVtbk5hbWV9XCJdYCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAoY2VsbEVsZW1lbnQpIHtcbiAgICAgICAgY2VsbEVsZW1lbnRzLnB1c2goY2VsbEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGlzRW1wdHlBcnJheShjZWxsRWxlbWVudHMpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBHZXQgY29udGFpbmVyIHBvc2l0aW9uXG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIC8vIENhbGN1bGF0ZSBib3VuZGluZyBib3hcbiAgICBsZXQgbWluVG9wID0gSW5maW5pdHk7XG4gICAgbGV0IG1pbkxlZnQgPSBJbmZpbml0eTtcbiAgICBsZXQgbWF4Qm90dG9tID0gLUluZmluaXR5O1xuICAgIGxldCBtYXhSaWdodCA9IC1JbmZpbml0eTtcblxuICAgIGNlbGxFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIG1pblRvcCA9IE1hdGgubWluKG1pblRvcCwgcmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCk7XG4gICAgICBtaW5MZWZ0ID0gTWF0aC5taW4obWluTGVmdCwgcmVjdC5sZWZ0IC0gY29udGFpbmVyUmVjdC5sZWZ0KTtcbiAgICAgIG1heEJvdHRvbSA9IE1hdGgubWF4KG1heEJvdHRvbSwgcmVjdC5ib3R0b20gLSBjb250YWluZXJSZWN0LnRvcCk7XG4gICAgICBtYXhSaWdodCA9IE1hdGgubWF4KG1heFJpZ2h0LCByZWN0LnJpZ2h0IC0gY29udGFpbmVyUmVjdC5sZWZ0KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB0b3A6IG1pblRvcCxcbiAgICAgIGxlZnQ6IG1pbkxlZnQsXG4gICAgICB3aWR0aDogbWF4UmlnaHQgLSBtaW5MZWZ0LFxuICAgICAgaGVpZ2h0OiBtYXhCb3R0b20gLSBtaW5Ub3AsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheUVsZW1lbnQoYm91bmRzOiBTZWxlY3Rpb25Cb3VuZHMpOiBIVE1MRWxlbWVudCB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhvdmVybGF5LCAnY2VsbC1zZWxlY3Rpb24tb3ZlcmxheScpO1xuXG4gICAgLy8gU2V0IHBvc2l0aW9uIGFuZCBzaXplXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShvdmVybGF5LCAndG9wJywgYCR7Ym91bmRzLnRvcH1weGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUob3ZlcmxheSwgJ2xlZnQnLCBgJHtib3VuZHMubGVmdH1weGApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUob3ZlcmxheSwgJ3dpZHRoJywgYCR7Ym91bmRzLndpZHRofXB4YCk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShvdmVybGF5LCAnaGVpZ2h0JywgYCR7Ym91bmRzLmhlaWdodH1weGApO1xuXG4gICAgcmV0dXJuIG92ZXJsYXk7XG4gIH1cbn1cbiJdfQ==