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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1179) hide show
  1. package/.editorconfig +24 -0
  2. package/.eslintrc.json +74 -0
  3. package/.gitattribute +1 -0
  4. package/.github/CONTRIBUTING.md +10 -0
  5. package/.github/ISSUE_TEMPLATE.md +6 -0
  6. package/.github/PULL_REQUEST_TEMPLATE.md +10 -0
  7. package/.github/github_disclaimer.md +14 -0
  8. package/.gitlab-ci.yml +46 -0
  9. package/.graphqlconfig +15 -0
  10. package/angular.json +230 -0
  11. package/capacitor.config.json +9 -0
  12. package/ionic.config.json +7 -0
  13. package/karma.conf.js +32 -0
  14. package/ng-package.json +19 -0
  15. package/ngcc.config.js +14 -0
  16. package/package.json +137 -23
  17. package/public_api.ts +343 -0
  18. package/resources/android/build/tools/android-accept-licenses.sh +14 -0
  19. package/resources/android/icon/drawable-hdpi-icon.png +0 -0
  20. package/resources/android/icon/drawable-ldpi-icon.png +0 -0
  21. package/resources/android/icon/drawable-mdpi-icon.png +0 -0
  22. package/resources/android/icon/drawable-xhdpi-icon.png +0 -0
  23. package/resources/android/icon/drawable-xxhdpi-icon.png +0 -0
  24. package/resources/android/icon/drawable-xxxhdpi-icon.png +0 -0
  25. package/resources/android/splash/drawable-land-hdpi-screen.png +0 -0
  26. package/resources/android/splash/drawable-land-ldpi-screen.png +0 -0
  27. package/resources/android/splash/drawable-land-mdpi-screen.png +0 -0
  28. package/resources/android/splash/drawable-land-xhdpi-screen.png +0 -0
  29. package/resources/android/splash/drawable-land-xxhdpi-screen.png +0 -0
  30. package/resources/android/splash/drawable-land-xxxhdpi-screen.png +0 -0
  31. package/resources/android/splash/drawable-port-hdpi-screen.png +0 -0
  32. package/resources/android/splash/drawable-port-ldpi-screen.png +0 -0
  33. package/resources/android/splash/drawable-port-mdpi-screen.png +0 -0
  34. package/resources/android/splash/drawable-port-xhdpi-screen.png +0 -0
  35. package/resources/android/splash/drawable-port-xxhdpi-screen.png +0 -0
  36. package/resources/android/splash/drawable-port-xxxhdpi-screen.png +0 -0
  37. package/resources/android/splash/drawable-xxxhdpi-screen.png +0 -0
  38. package/resources/icon/TODO.md +11 -0
  39. package/resources/icon.png +0 -0
  40. package/resources/icon.png.md5 +1 -0
  41. package/resources/icon.xcf +0 -0
  42. package/resources/ios/icon/icon-1024.png +0 -0
  43. package/resources/ios/icon/icon-108@2x.png +0 -0
  44. package/resources/ios/icon/icon-20.png +0 -0
  45. package/resources/ios/icon/icon-20@2x.png +0 -0
  46. package/resources/ios/icon/icon-20@3x.png +0 -0
  47. package/resources/ios/icon/icon-24@2x.png +0 -0
  48. package/resources/ios/icon/icon-27.5@2x.png +0 -0
  49. package/resources/ios/icon/icon-29.png +0 -0
  50. package/resources/ios/icon/icon-29@2x.png +0 -0
  51. package/resources/ios/icon/icon-29@3x.png +0 -0
  52. package/resources/ios/icon/icon-40.png +0 -0
  53. package/resources/ios/icon/icon-40@2x.png +0 -0
  54. package/resources/ios/icon/icon-40@3x.png +0 -0
  55. package/resources/ios/icon/icon-44@2x.png +0 -0
  56. package/resources/ios/icon/icon-50.png +0 -0
  57. package/resources/ios/icon/icon-50@2x.png +0 -0
  58. package/resources/ios/icon/icon-60.png +0 -0
  59. package/resources/ios/icon/icon-60@2x.png +0 -0
  60. package/resources/ios/icon/icon-60@3x.png +0 -0
  61. package/resources/ios/icon/icon-72.png +0 -0
  62. package/resources/ios/icon/icon-72@2x.png +0 -0
  63. package/resources/ios/icon/icon-76.png +0 -0
  64. package/resources/ios/icon/icon-76@2x.png +0 -0
  65. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  66. package/resources/ios/icon/icon-86@2x.png +0 -0
  67. package/resources/ios/icon/icon-98@2x.png +0 -0
  68. package/resources/ios/icon/icon-small.png +0 -0
  69. package/resources/ios/icon/icon-small@2x.png +0 -0
  70. package/resources/ios/icon/icon-small@3x.png +0 -0
  71. package/resources/ios/icon/icon.png +0 -0
  72. package/resources/ios/icon/icon@2x.png +0 -0
  73. package/resources/ios/splash/Default-1792h~iphone.png +0 -0
  74. package/resources/ios/splash/Default-2436h.png +0 -0
  75. package/resources/ios/splash/Default-2688h~iphone.png +0 -0
  76. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  77. package/resources/ios/splash/Default-667h.png +0 -0
  78. package/resources/ios/splash/Default-736h.png +0 -0
  79. package/resources/ios/splash/Default-Landscape-1792h~iphone.png +0 -0
  80. package/resources/ios/splash/Default-Landscape-2436h.png +0 -0
  81. package/resources/ios/splash/Default-Landscape-2688h~iphone.png +0 -0
  82. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  83. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  84. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  85. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  86. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  87. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  88. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  89. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  90. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  91. package/resources/ios/splash/Default~iphone.png +0 -0
  92. package/resources/splash.png +0 -0
  93. package/resources/splash.png.md5 +1 -0
  94. package/scripts/build-android.sh +18 -0
  95. package/scripts/build-i18n.js +24 -0
  96. package/scripts/docker-start.sh +6 -0
  97. package/scripts/emulate-android.sh +17 -0
  98. package/scripts/env-android.sh +83 -0
  99. package/scripts/env-clean.sh +23 -0
  100. package/scripts/env-global.sh +156 -0
  101. package/scripts/install-android-sdk-tools.sh +73 -0
  102. package/scripts/ionic-update.sh +24 -0
  103. package/scripts/node/playground.ts +9 -0
  104. package/scripts/node/resources.js +90 -0
  105. package/scripts/release.sh +149 -0
  106. package/scripts/run-android.sh +59 -0
  107. package/scripts/test.sh +19 -0
  108. package/src/app/admin/admin-routing.module.ts +30 -0
  109. package/src/app/admin/admin.module.ts +23 -0
  110. package/src/app/admin/services/filter/person.filter.ts +77 -0
  111. package/src/app/admin/services/person.service.ts +212 -0
  112. package/src/app/admin/services/validator/person.validator.ts +37 -0
  113. package/src/app/admin/users/users.html +427 -0
  114. package/src/app/admin/users/users.module.ts +34 -0
  115. package/src/app/admin/users/users.scss +59 -0
  116. package/src/app/admin/users/users.ts +257 -0
  117. package/src/app/app-routing.module.ts +126 -0
  118. package/src/app/app.component.html +12 -0
  119. package/src/app/app.component.scss +4 -0
  120. package/src/app/app.component.ts +205 -0
  121. package/src/app/app.module.ts +326 -0
  122. package/src/app/core/about/about.modal.html +140 -0
  123. package/src/app/core/about/about.modal.scss +23 -0
  124. package/src/app/core/about/about.modal.ts +71 -0
  125. package/src/app/core/about/about.module.ts +24 -0
  126. package/src/app/core/account/account.module.ts +38 -0
  127. package/src/app/core/account/account.page.html +241 -0
  128. package/src/app/core/account/account.page.scss +21 -0
  129. package/src/app/core/account/account.page.ts +366 -0
  130. package/src/app/core/account/new-token.modal.html +120 -0
  131. package/src/app/core/account/new-token.modal.ts +138 -0
  132. package/src/app/core/account/token.table.html +177 -0
  133. package/src/app/core/account/token.table.scss +7 -0
  134. package/src/app/core/account/token.table.ts +141 -0
  135. package/src/app/core/auth/auth.form.html +77 -0
  136. package/src/app/core/auth/auth.form.scss +1 -0
  137. package/src/app/core/auth/auth.form.ts +145 -0
  138. package/src/app/core/auth/auth.modal.html +57 -0
  139. package/src/app/core/auth/auth.modal.scss +1 -0
  140. package/src/app/core/auth/auth.modal.ts +80 -0
  141. package/src/app/core/auth/auth.module.ts +33 -0
  142. package/src/app/core/core.module.ts +100 -0
  143. package/src/app/core/core.testing.module.ts +64 -0
  144. package/src/app/core/form/buttons/form-buttons-bar.component.html +59 -0
  145. package/src/app/core/form/buttons/form-buttons-bar.component.scss +14 -0
  146. package/src/app/core/form/buttons/form-buttons-bar.component.ts +70 -0
  147. package/src/app/core/form/buttons/form-buttons-bar.module.ts +24 -0
  148. package/src/app/core/form/entity/editor.class.ts +803 -0
  149. package/src/app/core/form/entity/entity-editor-modal.class.ts +537 -0
  150. package/src/app/core/form/entity/entity-editor.class.ts +885 -0
  151. package/src/app/core/form/entity/entity-metadata.component.html +53 -0
  152. package/src/app/core/form/entity/entity-metadata.component.scss +28 -0
  153. package/src/app/core/form/entity/entity-metadata.component.ts +19 -0
  154. package/src/app/core/form/entity/entity.module.ts +25 -0
  155. package/src/app/core/form/form.class.ts +401 -0
  156. package/src/app/core/form/form.module.ts +37 -0
  157. package/src/app/core/form/form.utils.ts +639 -0
  158. package/src/app/core/form/list/list.form.html +67 -0
  159. package/src/app/core/form/list/list.form.scss +40 -0
  160. package/src/app/core/form/list/list.form.ts +278 -0
  161. package/src/app/core/form/list/list.module.ts +25 -0
  162. package/src/app/core/form/properties/properties.form.html +129 -0
  163. package/src/app/core/form/properties/properties.form.ts +147 -0
  164. package/src/app/core/form/properties/properties.module.ts +30 -0
  165. package/src/app/core/form/properties/properties.table.html +219 -0
  166. package/src/app/core/form/properties/properties.table.scss +0 -0
  167. package/src/app/core/form/properties/properties.table.ts +291 -0
  168. package/src/app/core/form/properties/property.validator.ts +22 -0
  169. package/src/app/core/form/properties/testing/properties-form.test.html +21 -0
  170. package/src/app/core/form/properties/testing/properties-form.test.ts +102 -0
  171. package/src/app/core/form/properties/testing/properties-form.testing.module.ts +25 -0
  172. package/src/app/core/form/text-popover/testing/text-popover.testing.html +45 -0
  173. package/src/app/core/form/text-popover/testing/text-popover.testing.module.ts +32 -0
  174. package/src/app/core/form/text-popover/testing/text-popover.testing.ts +77 -0
  175. package/src/app/core/form/text-popover/text-form.component.html +44 -0
  176. package/src/app/core/form/text-popover/text-form.component.scss +8 -0
  177. package/src/app/core/form/text-popover/text-form.component.ts +65 -0
  178. package/src/app/core/form/text-popover/text-popover.component.html +86 -0
  179. package/src/app/core/form/text-popover/text-popover.component.scss +7 -0
  180. package/src/app/core/form/text-popover/text-popover.component.ts +165 -0
  181. package/src/app/core/form/text-popover/text-popover.module.ts +27 -0
  182. package/src/app/core/graphql/graphql.module.ts +17 -0
  183. package/src/app/core/graphql/graphql.service.ts +969 -0
  184. package/src/app/core/graphql/graphql.utils.ts +167 -0
  185. package/src/app/core/home/home.html +211 -0
  186. package/src/app/core/home/home.module.ts +32 -0
  187. package/src/app/core/home/home.scss +242 -0
  188. package/src/app/core/home/home.ts +298 -0
  189. package/src/app/core/icon/icon.component.html +15 -0
  190. package/src/app/core/icon/icon.component.ts +23 -0
  191. package/src/app/core/icon/icon.module.ts +22 -0
  192. package/src/app/core/install/install-upgrade-card.component.html +144 -0
  193. package/src/app/core/install/install-upgrade-card.component.scss +4 -0
  194. package/src/app/core/install/install-upgrade-card.component.ts +412 -0
  195. package/src/app/core/install/install-upgrade-card.module.ts +23 -0
  196. package/src/app/core/menu/menu.component.html +135 -0
  197. package/src/app/core/menu/menu.component.scss +225 -0
  198. package/src/app/core/menu/menu.component.ts +352 -0
  199. package/src/app/core/menu/menu.model.ts +64 -0
  200. package/src/app/core/menu/menu.module.ts +27 -0
  201. package/src/app/core/menu/menu.service.ts +62 -0
  202. package/src/app/core/offline/update-offline-mode-card.component.html +45 -0
  203. package/src/app/core/offline/update-offline-mode-card.component.scss +4 -0
  204. package/src/app/core/offline/update-offline-mode-card.component.ts +28 -0
  205. package/src/app/core/offline/update-offline-mode-card.module.ts +24 -0
  206. package/src/app/core/peer/select-peer.modal.html +123 -0
  207. package/src/app/core/peer/select-peer.modal.scss +20 -0
  208. package/src/app/core/peer/select-peer.modal.ts +197 -0
  209. package/src/app/core/peer/select-peer.module.ts +28 -0
  210. package/src/app/core/register/register-confirm.page.html +55 -0
  211. package/src/app/core/register/register-confirm.page.scss +121 -0
  212. package/src/app/core/register/register-confirm.page.ts +94 -0
  213. package/src/app/core/register/register.form.html +125 -0
  214. package/src/app/core/register/register.form.scss +10 -0
  215. package/src/app/core/register/register.form.ts +213 -0
  216. package/src/app/core/register/register.modal.html +70 -0
  217. package/src/app/core/register/register.modal.ts +52 -0
  218. package/src/app/core/register/register.module.ts +31 -0
  219. package/src/app/core/services/account.service.ts +1431 -0
  220. package/src/app/core/services/auth-guard.service.ts +70 -0
  221. package/src/app/core/services/base-entity-service.class.ts +598 -0
  222. package/src/app/core/services/base-graphql-service.class.ts +298 -0
  223. package/src/app/core/services/base58.ts +83 -0
  224. package/src/app/core/services/config/account.config.ts +35 -0
  225. package/src/app/core/services/config/core.config.ts +180 -0
  226. package/src/app/core/services/config.service.ts +414 -0
  227. package/src/app/core/services/crypto.service.ts +126 -0
  228. package/src/app/core/services/errors.ts +67 -0
  229. package/src/app/core/services/local-settings.service.spec.ts +32 -0
  230. package/src/app/core/services/local-settings.service.ts +548 -0
  231. package/src/app/core/services/model/account.model.ts +141 -0
  232. package/src/app/core/services/model/config.model.ts +122 -0
  233. package/src/app/core/services/model/department.model.ts +34 -0
  234. package/src/app/core/services/model/entity.decorators.ts +112 -0
  235. package/src/app/core/services/model/entity.model.ts +326 -0
  236. package/src/app/core/services/model/filter.model.ts +139 -0
  237. package/src/app/core/services/model/history.model.ts +25 -0
  238. package/src/app/core/services/model/model.enum.ts +11 -0
  239. package/src/app/core/services/model/peer.model.ts +86 -0
  240. package/src/app/core/services/model/person.model.ts +112 -0
  241. package/src/app/core/services/model/referential.model.ts +244 -0
  242. package/src/app/core/services/model/settings.model.ts +32 -0
  243. package/src/app/core/services/model/token.model.ts +54 -0
  244. package/src/app/core/services/network.service.spec.ts +49 -0
  245. package/src/app/core/services/network.service.ts +729 -0
  246. package/src/app/core/services/network.types.ts +26 -0
  247. package/src/app/core/services/network.utils.ts +57 -0
  248. package/src/app/core/services/pipes/account.pipes.ts +25 -0
  249. package/src/app/core/services/pipes/department-to-string.pipe.ts +15 -0
  250. package/src/app/core/services/pipes/person-to-string.pipe.ts +15 -0
  251. package/src/app/core/services/pipes/usage-mode.pipes.ts +26 -0
  252. package/src/app/core/services/platform.service.spec.ts +56 -0
  253. package/src/app/core/services/platform.service.ts +605 -0
  254. package/src/app/core/services/storage/entities-storage.service.ts +542 -0
  255. package/src/app/core/services/storage/entity-store.class.ts +598 -0
  256. package/src/app/core/services/testing/referential-filter.model.ts +28 -0
  257. package/src/app/core/services/testing/referential.validator.ts +57 -0
  258. package/src/app/core/services/validator/account.validator.ts +58 -0
  259. package/src/app/core/services/validator/base.validator.class.ts +54 -0
  260. package/src/app/core/services/validator/local-settings.validator.ts +72 -0
  261. package/src/app/core/services/validator/user-settings.validator.ts +25 -0
  262. package/src/app/core/services/validator/user-token.validator.ts +55 -0
  263. package/src/app/core/settings/settings.module.ts +24 -0
  264. package/src/app/core/settings/settings.page.html +264 -0
  265. package/src/app/core/settings/settings.page.ts +365 -0
  266. package/src/app/core/table/actions-column.component.html +91 -0
  267. package/src/app/core/table/actions-column.component.ts +70 -0
  268. package/src/app/core/table/async-table.class.ts +1934 -0
  269. package/src/app/core/table/entities-async-table-datasource.class.ts +482 -0
  270. package/src/app/core/table/entities-table-datasource.class.ts +496 -0
  271. package/src/app/core/table/memory-table.class.ts +65 -0
  272. package/src/app/core/table/table-select-columns.component.html +58 -0
  273. package/src/app/core/table/table-select-columns.component.ts +50 -0
  274. package/src/app/core/table/table.class.ts +1973 -0
  275. package/src/app/core/table/table.model.ts +35 -0
  276. package/src/app/core/table/table.module.ts +26 -0
  277. package/src/app/core/table/table.utils.ts +38 -0
  278. package/src/app/core/table/testing/multi-table.testing.ts +261 -0
  279. package/src/app/core/table/testing/table-validator.service.ts +25 -0
  280. package/src/app/core/table/testing/table.testing.html +396 -0
  281. package/src/app/core/table/testing/table.testing.module.ts +25 -0
  282. package/src/app/core/table/testing/table.testing.scss +23 -0
  283. package/src/app/core/table/testing/table.testing.ts +292 -0
  284. package/src/app/shared/alerts.ts +292 -0
  285. package/src/app/shared/audio/audio.testing.html +33 -0
  286. package/src/app/shared/audio/audio.testing.module.ts +32 -0
  287. package/src/app/shared/audio/audio.testing.ts +31 -0
  288. package/src/app/shared/audio/audio.ts +278 -0
  289. package/src/app/shared/base64.utils.ts +66 -0
  290. package/src/app/shared/capacitor/keyboard.ts +40 -0
  291. package/src/app/shared/capacitor/plugins.ts +12 -0
  292. package/src/app/shared/constants.ts +12 -0
  293. package/src/app/shared/dates.ts +163 -0
  294. package/src/app/shared/debug/debug-service.class.ts +8 -0
  295. package/src/app/shared/debug/debug.component.html +13 -0
  296. package/src/app/shared/debug/debug.component.scss +24 -0
  297. package/src/app/shared/debug/debug.component.spec.ts +25 -0
  298. package/src/app/shared/debug/debug.component.ts +27 -0
  299. package/src/app/shared/debug/debug.module.ts +28 -0
  300. package/src/app/shared/directives/autofocus.directive.ts +109 -0
  301. package/src/app/shared/directives/autotitle.directive.ts +24 -0
  302. package/src/app/shared/directives/directives.module.ts +29 -0
  303. package/src/app/shared/directives/drag-and-drop.directive.ts +47 -0
  304. package/src/app/shared/directives/ng-var.directive.ts +32 -0
  305. package/src/app/shared/directives/resizable/resizable.component.ts +47 -0
  306. package/src/app/shared/directives/resizable/resizable.directive.ts +43 -0
  307. package/src/app/shared/directives/resizable/resizable.module.ts +9 -0
  308. package/src/app/shared/directives/resizable/resizable.style.scss +44 -0
  309. package/src/app/shared/directives/resizable/resizable.template.html +6 -0
  310. package/src/app/shared/events.ts +96 -0
  311. package/src/app/shared/file/csv.utils.ts +94 -0
  312. package/src/app/shared/file/file.service.ts +132 -0
  313. package/src/app/shared/file/file.utils.ts +138 -0
  314. package/src/app/shared/file/images.utils.ts +198 -0
  315. package/src/app/shared/file/json.utils.ts +73 -0
  316. package/src/app/shared/file/uri.utils.ts +25 -0
  317. package/src/app/shared/focusable.ts +10 -0
  318. package/src/app/shared/form/field.component.html +261 -0
  319. package/src/app/shared/form/field.component.scss +7 -0
  320. package/src/app/shared/form/field.component.ts +318 -0
  321. package/src/app/shared/form/field.model.ts +64 -0
  322. package/src/app/shared/form/loading-spinner.ts +16 -0
  323. package/src/app/shared/forms.ts +458 -0
  324. package/src/app/shared/functions.ts +492 -0
  325. package/src/app/shared/geolocation/geolocation.utils.ts +101 -0
  326. package/src/app/shared/gesture/gesture-config.ts +45 -0
  327. package/src/app/shared/gesture/hammer.utils.ts +14 -0
  328. package/src/app/shared/graph/colors.utils.ts +74 -0
  329. package/src/app/shared/graph/graph-colors.ts +295 -0
  330. package/src/app/shared/guard/component-dirty.guard.ts +70 -0
  331. package/src/app/shared/help/help.modal.html +42 -0
  332. package/src/app/shared/help/help.modal.ts +61 -0
  333. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.html +11 -0
  334. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.scss +39 -0
  335. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.ts +16 -0
  336. package/src/app/shared/hotkeys/hotkeys.service.ts +89 -0
  337. package/src/app/shared/hotkeys/shared-hotkeys.module.ts +27 -0
  338. package/src/app/shared/http/http.utils.ts +89 -0
  339. package/src/app/shared/image/gallery/image-gallery.component.html +231 -0
  340. package/src/app/shared/image/gallery/image-gallery.component.scss +196 -0
  341. package/src/app/shared/image/gallery/image-gallery.component.ts +389 -0
  342. package/src/app/shared/image/gallery/image-gallery.module.ts +34 -0
  343. package/src/app/shared/image/gallery/testing/gallegry.model.testing.ts +27 -0
  344. package/src/app/shared/image/gallery/testing/gallery.service.testing.ts +102 -0
  345. package/src/app/shared/image/gallery/testing/gallery.testing.html +15 -0
  346. package/src/app/shared/image/gallery/testing/gallery.testing.module.ts +39 -0
  347. package/src/app/shared/image/gallery/testing/gallery.testing.ts +38 -0
  348. package/src/app/shared/image/image.model.ts +6 -0
  349. package/src/app/shared/image/image.module.ts +16 -0
  350. package/src/app/shared/image/image.service.ts +94 -0
  351. package/src/app/shared/image/image.testing.module.ts +23 -0
  352. package/src/app/shared/inputs.ts +282 -0
  353. package/src/app/shared/interceptors/progess.interceptor.ts +25 -0
  354. package/src/app/shared/logging/log-level.model.ts +53 -0
  355. package/src/app/shared/logging/logger.model.ts +120 -0
  356. package/src/app/shared/logging/logging-service.class.ts +134 -0
  357. package/src/app/shared/logging/logging-service.config.ts +29 -0
  358. package/src/app/shared/logging/logging-service.module.ts +22 -0
  359. package/src/app/shared/material/autocomplete/material.autocomplete.config.ts +83 -0
  360. package/src/app/shared/material/autocomplete/material.autocomplete.html +262 -0
  361. package/src/app/shared/material/autocomplete/material.autocomplete.module.ts +45 -0
  362. package/src/app/shared/material/autocomplete/material.autocomplete.scss +21 -0
  363. package/src/app/shared/material/autocomplete/material.autocomplete.ts +1022 -0
  364. package/src/app/shared/material/autocomplete/material.autocomplete.utils.ts +20 -0
  365. package/src/app/shared/material/autocomplete/testing/autocomplete.test.html +876 -0
  366. package/src/app/shared/material/autocomplete/testing/autocomplete.test.spec.ts +38 -0
  367. package/src/app/shared/material/autocomplete/testing/autocomplete.test.ts +247 -0
  368. package/src/app/shared/material/badge/badge.directive.ts +164 -0
  369. package/src/app/shared/material/badge/badge.module.ts +22 -0
  370. package/src/app/shared/material/badge/badge.test.html +261 -0
  371. package/src/app/shared/material/badge/badge.test.ts +36 -0
  372. package/src/app/shared/material/boolean/boolean.module.ts +40 -0
  373. package/src/app/shared/material/boolean/material.boolean.html +155 -0
  374. package/src/app/shared/material/boolean/material.boolean.scss +34 -0
  375. package/src/app/shared/material/boolean/material.boolean.ts +239 -0
  376. package/src/app/shared/material/chips/chips.module.ts +44 -0
  377. package/src/app/shared/material/chips/material.chips.html +146 -0
  378. package/src/app/shared/material/chips/material.chips.scss +65 -0
  379. package/src/app/shared/material/chips/material.chips.ts +768 -0
  380. package/src/app/shared/material/chips/testing/chips.test.html +137 -0
  381. package/src/app/shared/material/chips/testing/chips.test.ts +175 -0
  382. package/src/app/shared/material/datetime/datetime.module.ts +52 -0
  383. package/src/app/shared/material/datetime/material.date.html +132 -0
  384. package/src/app/shared/material/datetime/material.date.scss +17 -0
  385. package/src/app/shared/material/datetime/material.date.ts +408 -0
  386. package/src/app/shared/material/datetime/material.dateshort.html +134 -0
  387. package/src/app/shared/material/datetime/material.dateshort.scss +23 -0
  388. package/src/app/shared/material/datetime/material.dateshort.ts +422 -0
  389. package/src/app/shared/material/datetime/material.datetime.html +224 -0
  390. package/src/app/shared/material/datetime/material.datetime.scss +90 -0
  391. package/src/app/shared/material/datetime/material.datetime.ts +575 -0
  392. package/src/app/shared/material/datetime/testing/mat-date-time.test.html +354 -0
  393. package/src/app/shared/material/datetime/testing/mat-date-time.test.ts +134 -0
  394. package/src/app/shared/material/datetime/testing/mat-date.test.html +418 -0
  395. package/src/app/shared/material/datetime/testing/mat-date.test.ts +135 -0
  396. package/src/app/shared/material/datetime/testing/mat-dateshort.test.html +370 -0
  397. package/src/app/shared/material/datetime/testing/mat-dateshort.test.ts +127 -0
  398. package/src/app/shared/material/duration/duration.module.ts +39 -0
  399. package/src/app/shared/material/duration/duration.utils.ts +41 -0
  400. package/src/app/shared/material/duration/material.duration.html +44 -0
  401. package/src/app/shared/material/duration/material.duration.scss +28 -0
  402. package/src/app/shared/material/duration/material.duration.ts +294 -0
  403. package/src/app/shared/material/latlong/latlong.utils.ts +300 -0
  404. package/src/app/shared/material/latlong/material.latlong.html +127 -0
  405. package/src/app/shared/material/latlong/material.latlong.module.ts +40 -0
  406. package/src/app/shared/material/latlong/material.latlong.scss +48 -0
  407. package/src/app/shared/material/latlong/material.latlong.ts +421 -0
  408. package/src/app/shared/material/latlong/testing/latlong.test.html +341 -0
  409. package/src/app/shared/material/latlong/testing/latlong.test.ts +121 -0
  410. package/src/app/shared/material/material.animations.ts +129 -0
  411. package/src/app/shared/material/material.module.ts +94 -0
  412. package/src/app/shared/material/material.testing.module.ts +135 -0
  413. package/src/app/shared/material/memory/memory.utils.ts +54 -0
  414. package/src/app/shared/material/numpad/numpad.animation.ts +1 -0
  415. package/src/app/shared/material/numpad/numpad.append-to-input.directive.ts +109 -0
  416. package/src/app/shared/material/numpad/numpad.component.ts +78 -0
  417. package/src/app/shared/material/numpad/numpad.container.html +32 -0
  418. package/src/app/shared/material/numpad/numpad.container.scss +50 -0
  419. package/src/app/shared/material/numpad/numpad.container.ts +176 -0
  420. package/src/app/shared/material/numpad/numpad.content.html +13 -0
  421. package/src/app/shared/material/numpad/numpad.content.ts +10 -0
  422. package/src/app/shared/material/numpad/numpad.directive.ts +173 -0
  423. package/src/app/shared/material/numpad/numpad.dom-service.ts +46 -0
  424. package/src/app/shared/material/numpad/numpad.model.ts +55 -0
  425. package/src/app/shared/material/numpad/numpad.module.ts +38 -0
  426. package/src/app/shared/material/numpad/testing/numpad.test.html +146 -0
  427. package/src/app/shared/material/numpad/testing/numpad.test.ts +55 -0
  428. package/src/app/shared/material/paginator/material.paginator-i18n.ts +49 -0
  429. package/src/app/shared/material/stepper/material.stepper-i18n.ts +18 -0
  430. package/src/app/shared/material/swipe/material.swipe.html +63 -0
  431. package/src/app/shared/material/swipe/material.swipe.scss +39 -0
  432. package/src/app/shared/material/swipe/material.swipe.ts +350 -0
  433. package/src/app/shared/material/swipe/swipe.module.ts +33 -0
  434. package/src/app/shared/material/swipe/testing/swipe.test.html +128 -0
  435. package/src/app/shared/material/swipe/testing/swipe.test.ts +81 -0
  436. package/src/app/shared/modules.ts +11 -0
  437. package/src/app/shared/observables.ts +132 -0
  438. package/src/app/shared/pipes/arrays.pipe.ts +111 -0
  439. package/src/app/shared/pipes/colors.pipe.ts +19 -0
  440. package/src/app/shared/pipes/date-diff-duration.pipe.ts +48 -0
  441. package/src/app/shared/pipes/date-format.pipe.ts +78 -0
  442. package/src/app/shared/pipes/date-from-now.pipe.ts +20 -0
  443. package/src/app/shared/pipes/duration.pipe.spec.ts +51 -0
  444. package/src/app/shared/pipes/duration.pipe.ts +34 -0
  445. package/src/app/shared/pipes/file-size.pipe.ts +58 -0
  446. package/src/app/shared/pipes/form.pipes.ts +204 -0
  447. package/src/app/shared/pipes/highlight.pipe.ts +37 -0
  448. package/src/app/shared/pipes/latlong-format.pipe.ts +30 -0
  449. package/src/app/shared/pipes/maps.pipe.ts +39 -0
  450. package/src/app/shared/pipes/math.pipes.ts +39 -0
  451. package/src/app/shared/pipes/ng-init.pipe.ts +14 -0
  452. package/src/app/shared/pipes/number-format.pipe.ts +21 -0
  453. package/src/app/shared/pipes/pipes.module.ts +134 -0
  454. package/src/app/shared/pipes/property.pipes.ts +87 -0
  455. package/src/app/shared/pipes/string.pipes.ts +85 -0
  456. package/src/app/shared/pipes/translate-context.pipe.ts +33 -0
  457. package/src/app/shared/pipes/types.pipes.ts +31 -0
  458. package/src/app/shared/platforms.ts +58 -0
  459. package/src/app/shared/services/entity-service.class.ts +127 -0
  460. package/src/app/shared/services/job.utils.ts +121 -0
  461. package/src/app/shared/services/memory-entity-service.class.ts +447 -0
  462. package/src/app/shared/services/progress-bar.service.ts +42 -0
  463. package/src/app/shared/services/startable-observable-service.class.ts +137 -0
  464. package/src/app/shared/services/startable-service.class.ts +131 -0
  465. package/src/app/shared/services/storage.utils.ts +47 -0
  466. package/src/app/shared/services/translate-context.service.ts +116 -0
  467. package/src/app/shared/services/validator-service.class.ts +14 -0
  468. package/src/app/shared/services.ts +91 -0
  469. package/src/app/shared/shared-routing.module.ts +66 -0
  470. package/src/app/shared/shared.module.spec.ts +13 -0
  471. package/src/app/shared/shared.module.ts +146 -0
  472. package/src/app/shared/shared.testing.module.ts +50 -0
  473. package/src/app/shared/storage/storage-explorer.component.html +175 -0
  474. package/src/app/shared/storage/storage-explorer.component.scss +39 -0
  475. package/src/app/shared/storage/storage-explorer.component.spec.ts +24 -0
  476. package/src/app/shared/storage/storage-explorer.component.ts +292 -0
  477. package/src/app/shared/storage/storage-explorer.module.ts +44 -0
  478. package/src/app/shared/storage/storage.service.ts +133 -0
  479. package/src/app/shared/storage/storage.utils.ts +25 -0
  480. package/src/app/shared/testing/observable.test.html +53 -0
  481. package/src/app/shared/testing/observable.test.scss +3 -0
  482. package/src/app/shared/testing/observable.test.ts +117 -0
  483. package/src/app/shared/testing/tests.page.html +30 -0
  484. package/src/app/shared/testing/tests.page.ts +34 -0
  485. package/src/app/shared/toast/toast.testing.html +42 -0
  486. package/src/app/shared/toast/toast.testing.module.ts +32 -0
  487. package/src/app/shared/toast/toast.testing.ts +58 -0
  488. package/src/app/shared/toast/toasts.ts +183 -0
  489. package/src/app/shared/toolbar/modal-toolbar.html +32 -0
  490. package/src/app/shared/toolbar/modal-toolbar.scss +0 -0
  491. package/src/app/shared/toolbar/modal-toolbar.ts +63 -0
  492. package/src/app/shared/toolbar/toolbar.html +71 -0
  493. package/src/app/shared/toolbar/toolbar.module.ts +35 -0
  494. package/src/app/shared/toolbar/toolbar.scss +0 -0
  495. package/src/app/shared/toolbar/toolbar.ts +254 -0
  496. package/src/app/shared/types.ts +31 -0
  497. package/src/app/shared/upload-file/testing/upload-file.testing.html +25 -0
  498. package/src/app/shared/upload-file/testing/upload-file.testing.module.ts +32 -0
  499. package/src/app/shared/upload-file/testing/upload-file.testing.ts +68 -0
  500. package/src/app/shared/upload-file/upload-file-popover.component.html +43 -0
  501. package/src/app/shared/upload-file/upload-file-popover.component.scss +6 -0
  502. package/src/app/shared/upload-file/upload-file-popover.component.ts +115 -0
  503. package/src/app/shared/upload-file/upload-file.component.html +46 -0
  504. package/src/app/shared/upload-file/upload-file.component.scss +130 -0
  505. package/src/app/shared/upload-file/upload-file.component.ts +218 -0
  506. package/src/app/shared/upload-file/upload-file.model.ts +41 -0
  507. package/src/app/shared/validator/form-error-adapter.class.ts +123 -0
  508. package/src/app/shared/validator/validators.ts +639 -0
  509. package/src/app/shared/version/versions.ts +91 -0
  510. package/src/app/social/job/job.module.ts +26 -0
  511. package/src/app/social/job/progression/job-progression.component.html +22 -0
  512. package/src/app/social/job/progression/job-progression.component.scss +15 -0
  513. package/src/app/social/job/progression/job-progression.component.ts +17 -0
  514. package/src/app/social/job/progression/job-progression.icon.html +28 -0
  515. package/src/app/social/job/progression/job-progression.icon.scss +5 -0
  516. package/src/app/social/job/progression/job-progression.icon.ts +238 -0
  517. package/src/app/social/job/progression/job-progression.list.html +21 -0
  518. package/src/app/social/job/progression/job-progression.list.scss +17 -0
  519. package/src/app/social/job/progression/job-progression.list.ts +49 -0
  520. package/src/app/social/job/progression/job-progression.model.ts +28 -0
  521. package/src/app/social/job/progression/job-progression.service.ts +86 -0
  522. package/src/app/social/job/testing/job-progression.testing.html +20 -0
  523. package/src/app/social/job/testing/job-progression.testing.service.ts +60 -0
  524. package/src/app/social/job/testing/job-progression.testing.ts +51 -0
  525. package/src/app/social/job/testing/job.testing.module.ts +22 -0
  526. package/src/app/social/message/message.form.html +60 -0
  527. package/src/app/social/message/message.form.scss +6 -0
  528. package/src/app/social/message/message.form.ts +79 -0
  529. package/src/app/social/message/message.modal.html +65 -0
  530. package/src/app/social/message/message.modal.ts +118 -0
  531. package/src/app/social/message/message.model.ts +81 -0
  532. package/src/app/social/message/message.module.ts +22 -0
  533. package/src/app/social/message/message.service.ts +88 -0
  534. package/src/app/social/social.errors.ts +11 -0
  535. package/src/app/social/social.module.ts +36 -0
  536. package/src/app/social/social.testing.module.ts +40 -0
  537. package/src/app/social/user-event/notification/user-event-notification.icon.html +16 -0
  538. package/src/app/social/user-event/notification/user-event-notification.icon.ts +108 -0
  539. package/src/app/social/user-event/notification/user-event-notification.list.html +135 -0
  540. package/src/app/social/user-event/notification/user-event-notification.list.scss +73 -0
  541. package/src/app/social/user-event/notification/user-event-notification.list.ts +287 -0
  542. package/src/app/social/user-event/testing/user-event.testing.html +27 -0
  543. package/src/app/social/user-event/testing/user-event.testing.model.ts +146 -0
  544. package/src/app/social/user-event/testing/user-event.testing.module.ts +22 -0
  545. package/src/app/social/user-event/testing/user-event.testing.service.ts +141 -0
  546. package/src/app/social/user-event/testing/user-event.testing.ts +253 -0
  547. package/src/app/social/user-event/user-event.model.ts +73 -0
  548. package/src/app/social/user-event/user-event.module.ts +25 -0
  549. package/src/app/social/user-event/user-event.service.ts +679 -0
  550. package/src/browserslist +9 -0
  551. package/src/environments/environment.class.ts +83 -0
  552. package/src/environments/environment.prod.ts +47 -0
  553. package/src/environments/environment.test.ts +90 -0
  554. package/src/environments/environment.ts +108 -0
  555. package/src/favicon.ico +0 -0
  556. package/src/global.scss +27 -0
  557. package/src/index.html +80 -0
  558. package/src/main.ts +17 -0
  559. package/src/polyfills.ts +68 -0
  560. package/src/schema.graphql +3112 -0
  561. package/src/service-worker.js +31 -0
  562. package/src/zone-flags.ts +31 -0
  563. package/tsconfig.app.json +15 -0
  564. package/tsconfig.json +47 -0
  565. package/tsconfig.spec.json +19 -0
  566. package/esm2020/public_api.mjs +0 -313
  567. package/esm2020/src/app/admin/admin-routing.module.mjs +0 -41
  568. package/esm2020/src/app/admin/admin.module.mjs +0 -34
  569. package/esm2020/src/app/admin/services/filter/person.filter.mjs +0 -59
  570. package/esm2020/src/app/admin/services/person.service.mjs +0 -161
  571. package/esm2020/src/app/admin/services/validator/person.validator.mjs +0 -34
  572. package/esm2020/src/app/admin/users/users.mjs +0 -234
  573. package/esm2020/src/app/admin/users/users.module.mjs +0 -54
  574. package/esm2020/src/app/core/about/about.modal.mjs +0 -71
  575. package/esm2020/src/app/core/about/about.module.mjs +0 -34
  576. package/esm2020/src/app/core/account/account.module.mjs +0 -61
  577. package/esm2020/src/app/core/account/account.page.mjs +0 -316
  578. package/esm2020/src/app/core/account/new-token.modal.mjs +0 -115
  579. package/esm2020/src/app/core/account/token.table.mjs +0 -137
  580. package/esm2020/src/app/core/auth/auth.form.mjs +0 -131
  581. package/esm2020/src/app/core/auth/auth.modal.mjs +0 -72
  582. package/esm2020/src/app/core/auth/auth.module.mjs +0 -47
  583. package/esm2020/src/app/core/core.module.mjs +0 -184
  584. package/esm2020/src/app/core/core.testing.module.mjs +0 -86
  585. package/esm2020/src/app/core/form/buttons/form-buttons-bar.component.mjs +0 -71
  586. package/esm2020/src/app/core/form/buttons/form-buttons-bar.module.mjs +0 -35
  587. package/esm2020/src/app/core/form/entity/editor.class.mjs +0 -679
  588. package/esm2020/src/app/core/form/entity/entity-editor-modal.class.mjs +0 -421
  589. package/esm2020/src/app/core/form/entity/entity-editor.class.mjs +0 -687
  590. package/esm2020/src/app/core/form/entity/entity-metadata.component.mjs +0 -25
  591. package/esm2020/src/app/core/form/entity/entity.module.mjs +0 -38
  592. package/esm2020/src/app/core/form/form.class.mjs +0 -340
  593. package/esm2020/src/app/core/form/form.module.mjs +0 -66
  594. package/esm2020/src/app/core/form/form.utils.mjs +0 -473
  595. package/esm2020/src/app/core/form/list/list.form.mjs +0 -222
  596. package/esm2020/src/app/core/form/list/list.module.mjs +0 -35
  597. package/esm2020/src/app/core/form/properties/properties.form.mjs +0 -132
  598. package/esm2020/src/app/core/form/properties/properties.module.mjs +0 -43
  599. package/esm2020/src/app/core/form/properties/properties.table.mjs +0 -264
  600. package/esm2020/src/app/core/form/properties/property.validator.mjs +0 -23
  601. package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +0 -90
  602. package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +0 -39
  603. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.mjs +0 -70
  604. package/esm2020/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +0 -45
  605. package/esm2020/src/app/core/form/text-popover/text-form.component.mjs +0 -89
  606. package/esm2020/src/app/core/form/text-popover/text-popover.component.mjs +0 -146
  607. package/esm2020/src/app/core/form/text-popover/text-popover.module.mjs +0 -40
  608. package/esm2020/src/app/core/graphql/graphql.module.mjs +0 -22
  609. package/esm2020/src/app/core/graphql/graphql.service.mjs +0 -762
  610. package/esm2020/src/app/core/graphql/graphql.utils.mjs +0 -117
  611. package/esm2020/src/app/core/home/home.mjs +0 -257
  612. package/esm2020/src/app/core/home/home.module.mjs +0 -48
  613. package/esm2020/src/app/core/icon/icon.component.mjs +0 -41
  614. package/esm2020/src/app/core/icon/icon.module.mjs +0 -29
  615. package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +0 -343
  616. package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +0 -35
  617. package/esm2020/src/app/core/menu/menu.component.mjs +0 -329
  618. package/esm2020/src/app/core/menu/menu.model.mjs +0 -35
  619. package/esm2020/src/app/core/menu/menu.module.mjs +0 -44
  620. package/esm2020/src/app/core/menu/menu.service.mjs +0 -55
  621. package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +0 -27
  622. package/esm2020/src/app/core/offline/update-offline-mode-card.module.mjs +0 -35
  623. package/esm2020/src/app/core/peer/select-peer.modal.mjs +0 -182
  624. package/esm2020/src/app/core/peer/select-peer.module.mjs +0 -42
  625. package/esm2020/src/app/core/register/register-confirm.page.mjs +0 -81
  626. package/esm2020/src/app/core/register/register.form.mjs +0 -181
  627. package/esm2020/src/app/core/register/register.modal.mjs +0 -52
  628. package/esm2020/src/app/core/register/register.module.mjs +0 -44
  629. package/esm2020/src/app/core/services/account.service.mjs +0 -1212
  630. package/esm2020/src/app/core/services/auth-guard.service.mjs +0 -71
  631. package/esm2020/src/app/core/services/base-entity-service.class.mjs +0 -444
  632. package/esm2020/src/app/core/services/base-graphql-service.class.mjs +0 -219
  633. package/esm2020/src/app/core/services/base58.mjs +0 -78
  634. package/esm2020/src/app/core/services/config/core.config.mjs +0 -175
  635. package/esm2020/src/app/core/services/config.service.mjs +0 -354
  636. package/esm2020/src/app/core/services/crypto.service.mjs +0 -114
  637. package/esm2020/src/app/core/services/errors.mjs +0 -50
  638. package/esm2020/src/app/core/services/local-settings.service.mjs +0 -449
  639. package/esm2020/src/app/core/services/model/account.model.mjs +0 -122
  640. package/esm2020/src/app/core/services/model/config.model.mjs +0 -92
  641. package/esm2020/src/app/core/services/model/department.model.mjs +0 -30
  642. package/esm2020/src/app/core/services/model/entity.decorators.mjs +0 -97
  643. package/esm2020/src/app/core/services/model/entity.model.mjs +0 -240
  644. package/esm2020/src/app/core/services/model/filter.model.mjs +0 -94
  645. package/esm2020/src/app/core/services/model/history.model.mjs +0 -2
  646. package/esm2020/src/app/core/services/model/model.enum.mjs +0 -11
  647. package/esm2020/src/app/core/services/model/peer.model.mjs +0 -68
  648. package/esm2020/src/app/core/services/model/person.model.mjs +0 -83
  649. package/esm2020/src/app/core/services/model/referential.model.mjs +0 -164
  650. package/esm2020/src/app/core/services/model/settings.model.mjs +0 -3
  651. package/esm2020/src/app/core/services/model/token.model.mjs +0 -48
  652. package/esm2020/src/app/core/services/network.service.mjs +0 -589
  653. package/esm2020/src/app/core/services/network.types.mjs +0 -20
  654. package/esm2020/src/app/core/services/network.utils.mjs +0 -15
  655. package/esm2020/src/app/core/services/pipes/account.pipes.mjs +0 -38
  656. package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +0 -23
  657. package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +0 -23
  658. package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +0 -37
  659. package/esm2020/src/app/core/services/platform.service.mjs +0 -525
  660. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +0 -428
  661. package/esm2020/src/app/core/services/storage/entity-store.class.mjs +0 -449
  662. package/esm2020/src/app/core/services/testing/referential-filter.model.mjs +0 -23
  663. package/esm2020/src/app/core/services/testing/referential.validator.mjs +0 -45
  664. package/esm2020/src/app/core/services/validator/account.validator.mjs +0 -56
  665. package/esm2020/src/app/core/services/validator/base.validator.class.mjs +0 -47
  666. package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +0 -66
  667. package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +0 -27
  668. package/esm2020/src/app/core/services/validator/user-token.validator.mjs +0 -52
  669. package/esm2020/src/app/core/settings/settings.module.mjs +0 -34
  670. package/esm2020/src/app/core/settings/settings.page.mjs +0 -312
  671. package/esm2020/src/app/core/table/actions-column.component.mjs +0 -102
  672. package/esm2020/src/app/core/table/async-table.class.mjs +0 -1697
  673. package/esm2020/src/app/core/table/entities-async-table-datasource.class.mjs +0 -384
  674. package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +0 -399
  675. package/esm2020/src/app/core/table/memory-table.class.mjs +0 -53
  676. package/esm2020/src/app/core/table/table-select-columns.component.mjs +0 -43
  677. package/esm2020/src/app/core/table/table.class.mjs +0 -1728
  678. package/esm2020/src/app/core/table/table.model.mjs +0 -12
  679. package/esm2020/src/app/core/table/table.module.mjs +0 -40
  680. package/esm2020/src/app/core/table/table.utils.mjs +0 -30
  681. package/esm2020/src/app/core/table/testing/table-validator.service.mjs +0 -27
  682. package/esm2020/src/app/core/table/testing/table.testing.mjs +0 -280
  683. package/esm2020/src/app/core/table/testing/table.testing.module.mjs +0 -38
  684. package/esm2020/src/app/shared/alerts.mjs +0 -239
  685. package/esm2020/src/app/shared/audio/audio.mjs +0 -248
  686. package/esm2020/src/app/shared/audio/audio.testing.mjs +0 -31
  687. package/esm2020/src/app/shared/audio/audio.testing.module.mjs +0 -45
  688. package/esm2020/src/app/shared/capacitor/keyboard.mjs +0 -40
  689. package/esm2020/src/app/shared/capacitor/plugins.mjs +0 -9
  690. package/esm2020/src/app/shared/constants.mjs +0 -10
  691. package/esm2020/src/app/shared/dates.mjs +0 -148
  692. package/esm2020/src/app/shared/debug/debug-service.class.mjs +0 -3
  693. package/esm2020/src/app/shared/debug/debug.component.mjs +0 -39
  694. package/esm2020/src/app/shared/debug/debug.module.mjs +0 -44
  695. package/esm2020/src/app/shared/directives/autofocus.directive.mjs +0 -92
  696. package/esm2020/src/app/shared/directives/autotitle.directive.mjs +0 -30
  697. package/esm2020/src/app/shared/directives/directives.module.mjs +0 -43
  698. package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +0 -53
  699. package/esm2020/src/app/shared/directives/ng-var.directive.mjs +0 -31
  700. package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +0 -59
  701. package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +0 -40
  702. package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +0 -17
  703. package/esm2020/src/app/shared/events.mjs +0 -64
  704. package/esm2020/src/app/shared/file/csv.utils.mjs +0 -74
  705. package/esm2020/src/app/shared/file/file.service.mjs +0 -117
  706. package/esm2020/src/app/shared/file/file.utils.mjs +0 -113
  707. package/esm2020/src/app/shared/file/images.utils.mjs +0 -161
  708. package/esm2020/src/app/shared/file/json.utils.mjs +0 -51
  709. package/esm2020/src/app/shared/file/uri.utils.mjs +0 -23
  710. package/esm2020/src/app/shared/focusable.mjs +0 -6
  711. package/esm2020/src/app/shared/form/field.component.mjs +0 -307
  712. package/esm2020/src/app/shared/form/field.model.mjs +0 -25
  713. package/esm2020/src/app/shared/form/loading-spinner.mjs +0 -36
  714. package/esm2020/src/app/shared/forms.mjs +0 -391
  715. package/esm2020/src/app/shared/functions.mjs +0 -477
  716. package/esm2020/src/app/shared/geolocation/geolocation.utils.mjs +0 -80
  717. package/esm2020/src/app/shared/gesture/gesture-config.mjs +0 -49
  718. package/esm2020/src/app/shared/gesture/hammer.utils.mjs +0 -2
  719. package/esm2020/src/app/shared/graph/colors.utils.mjs +0 -64
  720. package/esm2020/src/app/shared/graph/graph-colors.mjs +0 -212
  721. package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +0 -57
  722. package/esm2020/src/app/shared/help/help.modal.mjs +0 -53
  723. package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +0 -23
  724. package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +0 -84
  725. package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +0 -42
  726. package/esm2020/src/app/shared/http/http.utils.mjs +0 -52
  727. package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +0 -365
  728. package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +0 -59
  729. package/esm2020/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +0 -27
  730. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +0 -90
  731. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +0 -39
  732. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +0 -56
  733. package/esm2020/src/app/shared/image/image.model.mjs +0 -2
  734. package/esm2020/src/app/shared/image/image.module.mjs +0 -29
  735. package/esm2020/src/app/shared/image/image.service.mjs +0 -98
  736. package/esm2020/src/app/shared/inputs.mjs +0 -231
  737. package/esm2020/src/app/shared/interceptors/progess.interceptor.mjs +0 -27
  738. package/esm2020/src/app/shared/logging/log-level.model.mjs +0 -48
  739. package/esm2020/src/app/shared/logging/logger.model.mjs +0 -47
  740. package/esm2020/src/app/shared/logging/logging-service.class.mjs +0 -121
  741. package/esm2020/src/app/shared/logging/logging-service.config.mjs +0 -2
  742. package/esm2020/src/app/shared/logging/logging-service.module.mjs +0 -30
  743. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +0 -47
  744. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +0 -916
  745. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +0 -78
  746. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +0 -19
  747. package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +0 -209
  748. package/esm2020/src/app/shared/material/badge/badge.directive.mjs +0 -194
  749. package/esm2020/src/app/shared/material/badge/badge.module.mjs +0 -32
  750. package/esm2020/src/app/shared/material/badge/badge.test.mjs +0 -41
  751. package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +0 -68
  752. package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +0 -253
  753. package/esm2020/src/app/shared/material/chips/chips.module.mjs +0 -76
  754. package/esm2020/src/app/shared/material/chips/material.chips.mjs +0 -697
  755. package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +0 -143
  756. package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +0 -91
  757. package/esm2020/src/app/shared/material/datetime/material.date.mjs +0 -376
  758. package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +0 -385
  759. package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +0 -499
  760. package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +0 -108
  761. package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +0 -110
  762. package/esm2020/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +0 -103
  763. package/esm2020/src/app/shared/material/duration/duration.module.mjs +0 -67
  764. package/esm2020/src/app/shared/material/duration/duration.utils.mjs +0 -36
  765. package/esm2020/src/app/shared/material/duration/material.duration.mjs +0 -257
  766. package/esm2020/src/app/shared/material/latlong/latlong.utils.mjs +0 -266
  767. package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +0 -381
  768. package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +0 -67
  769. package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +0 -102
  770. package/esm2020/src/app/shared/material/material.animations.mjs +0 -104
  771. package/esm2020/src/app/shared/material/material.module.mjs +0 -224
  772. package/esm2020/src/app/shared/material/material.testing.module.mjs +0 -168
  773. package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +0 -98
  774. package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +0 -80
  775. package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +0 -190
  776. package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +0 -17
  777. package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +0 -162
  778. package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +0 -37
  779. package/esm2020/src/app/shared/material/numpad/numpad.model.mjs +0 -15
  780. package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +0 -60
  781. package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +0 -46
  782. package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +0 -46
  783. package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +0 -22
  784. package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +0 -344
  785. package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +0 -52
  786. package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +0 -64
  787. package/esm2020/src/app/shared/modules.mjs +0 -11
  788. package/esm2020/src/app/shared/observables.mjs +0 -103
  789. package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +0 -141
  790. package/esm2020/src/app/shared/pipes/colors.pipe.mjs +0 -23
  791. package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +0 -48
  792. package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +0 -66
  793. package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +0 -27
  794. package/esm2020/src/app/shared/pipes/duration.pipe.mjs +0 -34
  795. package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +0 -62
  796. package/esm2020/src/app/shared/pipes/form.pipes.mjs +0 -187
  797. package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +0 -48
  798. package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +0 -46
  799. package/esm2020/src/app/shared/pipes/maps.pipe.mjs +0 -63
  800. package/esm2020/src/app/shared/pipes/math.pipes.mjs +0 -59
  801. package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +0 -21
  802. package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +0 -30
  803. package/esm2020/src/app/shared/pipes/pipes.module.mjs +0 -239
  804. package/esm2020/src/app/shared/pipes/property.pipes.mjs +0 -93
  805. package/esm2020/src/app/shared/pipes/string.pipes.mjs +0 -121
  806. package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +0 -43
  807. package/esm2020/src/app/shared/pipes/types.pipes.mjs +0 -45
  808. package/esm2020/src/app/shared/platforms.mjs +0 -43
  809. package/esm2020/src/app/shared/services/entity-service.class.mjs +0 -7
  810. package/esm2020/src/app/shared/services/job.utils.mjs +0 -92
  811. package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +0 -337
  812. package/esm2020/src/app/shared/services/progress-bar.service.mjs +0 -33
  813. package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +0 -119
  814. package/esm2020/src/app/shared/services/startable-service.class.mjs +0 -110
  815. package/esm2020/src/app/shared/services/translate-context.service.mjs +0 -105
  816. package/esm2020/src/app/shared/services/validator-service.class.mjs +0 -2
  817. package/esm2020/src/app/shared/services.mjs +0 -62
  818. package/esm2020/src/app/shared/shared-routing.module.mjs +0 -70
  819. package/esm2020/src/app/shared/shared.module.mjs +0 -208
  820. package/esm2020/src/app/shared/shared.testing.module.mjs +0 -84
  821. package/esm2020/src/app/shared/storage/storage-explorer.component.mjs +0 -268
  822. package/esm2020/src/app/shared/storage/storage-explorer.module.mjs +0 -60
  823. package/esm2020/src/app/shared/storage/storage.service.mjs +0 -132
  824. package/esm2020/src/app/shared/storage/storage.utils.mjs +0 -13
  825. package/esm2020/src/app/shared/testing/observable.test.mjs +0 -95
  826. package/esm2020/src/app/shared/testing/tests.page.mjs +0 -33
  827. package/esm2020/src/app/shared/toast/toast.testing.mjs +0 -51
  828. package/esm2020/src/app/shared/toast/toast.testing.module.mjs +0 -45
  829. package/esm2020/src/app/shared/toast/toasts.mjs +0 -144
  830. package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +0 -58
  831. package/esm2020/src/app/shared/toolbar/toolbar.mjs +0 -251
  832. package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +0 -53
  833. package/esm2020/src/app/shared/types.mjs +0 -2
  834. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +0 -57
  835. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +0 -45
  836. package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +0 -97
  837. package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +0 -204
  838. package/esm2020/src/app/shared/upload-file/upload-file.model.mjs +0 -20
  839. package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +0 -104
  840. package/esm2020/src/app/shared/validator/validators.mjs +0 -573
  841. package/esm2020/src/app/shared/version/versions.mjs +0 -81
  842. package/esm2020/src/app/social/job/job.module.mjs +0 -42
  843. package/esm2020/src/app/social/job/progression/job-progression.component.mjs +0 -20
  844. package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +0 -216
  845. package/esm2020/src/app/social/job/progression/job-progression.list.mjs +0 -43
  846. package/esm2020/src/app/social/job/progression/job-progression.model.mjs +0 -23
  847. package/esm2020/src/app/social/job/progression/job-progression.service.mjs +0 -71
  848. package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +0 -52
  849. package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +0 -55
  850. package/esm2020/src/app/social/job/testing/job.testing.module.mjs +0 -35
  851. package/esm2020/src/app/social/message/message.form.mjs +0 -81
  852. package/esm2020/src/app/social/message/message.modal.mjs +0 -93
  853. package/esm2020/src/app/social/message/message.model.mjs +0 -65
  854. package/esm2020/src/app/social/message/message.module.mjs +0 -35
  855. package/esm2020/src/app/social/message/message.service.mjs +0 -84
  856. package/esm2020/src/app/social/social.errors.mjs +0 -10
  857. package/esm2020/src/app/social/social.module.mjs +0 -47
  858. package/esm2020/src/app/social/social.testing.module.mjs +0 -51
  859. package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +0 -114
  860. package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +0 -246
  861. package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +0 -227
  862. package/esm2020/src/app/social/user-event/testing/user-event.testing.model.mjs +0 -112
  863. package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +0 -35
  864. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +0 -111
  865. package/esm2020/src/app/social/user-event/user-event.model.mjs +0 -2
  866. package/esm2020/src/app/social/user-event/user-event.module.mjs +0 -39
  867. package/esm2020/src/app/social/user-event/user-event.service.mjs +0 -487
  868. package/esm2020/src/environments/environment.class.mjs +0 -5
  869. package/esm2020/src/environments/environment.mjs +0 -94
  870. package/esm2020/sumaris-net.ngx-components.mjs +0 -5
  871. package/fesm2015/sumaris-net.ngx-components.mjs +0 -38843
  872. package/fesm2015/sumaris-net.ngx-components.mjs.map +0 -1
  873. package/fesm2020/sumaris-net.ngx-components.mjs +0 -37942
  874. package/fesm2020/sumaris-net.ngx-components.mjs.map +0 -1
  875. package/index.d.ts +0 -5
  876. package/public_api.d.ts +0 -286
  877. package/src/app/admin/admin-routing.module.d.ts +0 -9
  878. package/src/app/admin/admin.module.d.ts +0 -10
  879. package/src/app/admin/services/filter/person.filter.d.ts +0 -21
  880. package/src/app/admin/services/person.service.d.ts +0 -44
  881. package/src/app/admin/services/validator/person.validator.d.ts +0 -14
  882. package/src/app/admin/users/users.d.ts +0 -44
  883. package/src/app/admin/users/users.module.d.ts +0 -13
  884. package/src/app/core/about/about.modal.d.ts +0 -32
  885. package/src/app/core/about/about.module.d.ts +0 -10
  886. package/src/app/core/account/account.module.d.ts +0 -15
  887. package/src/app/core/account/account.page.d.ts +0 -68
  888. package/src/app/core/account/new-token.modal.d.ts +0 -41
  889. package/src/app/core/account/token.table.d.ts +0 -25
  890. package/src/app/core/auth/auth.form.d.ts +0 -36
  891. package/src/app/core/auth/auth.modal.d.ts +0 -24
  892. package/src/app/core/auth/auth.module.d.ts +0 -11
  893. package/src/app/core/core.module.d.ts +0 -31
  894. package/src/app/core/core.testing.module.d.ts +0 -14
  895. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +0 -26
  896. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +0 -9
  897. package/src/app/core/form/entity/editor.class.d.ts +0 -243
  898. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +0 -128
  899. package/src/app/core/form/entity/entity-editor.class.d.ts +0 -205
  900. package/src/app/core/form/entity/entity-metadata.component.d.ts +0 -13
  901. package/src/app/core/form/entity/entity.module.d.ts +0 -10
  902. package/src/app/core/form/form.class.d.ts +0 -155
  903. package/src/app/core/form/form.module.d.ts +0 -13
  904. package/src/app/core/form/form.utils.d.ts +0 -336
  905. package/src/app/core/form/list/list.form.d.ts +0 -81
  906. package/src/app/core/form/list/list.module.d.ts +0 -9
  907. package/src/app/core/form/properties/properties.form.d.ts +0 -44
  908. package/src/app/core/form/properties/properties.module.d.ts +0 -11
  909. package/src/app/core/form/properties/properties.table.d.ts +0 -78
  910. package/src/app/core/form/properties/property.validator.d.ts +0 -13
  911. package/src/app/core/form/properties/testing/properties-form.test.d.ts +0 -19
  912. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +0 -12
  913. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +0 -14
  914. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +0 -11
  915. package/src/app/core/form/text-popover/text-form.component.d.ts +0 -32
  916. package/src/app/core/form/text-popover/text-popover.component.d.ts +0 -70
  917. package/src/app/core/form/text-popover/text-popover.module.d.ts +0 -10
  918. package/src/app/core/graphql/graphql.module.d.ts +0 -8
  919. package/src/app/core/graphql/graphql.service.d.ts +0 -148
  920. package/src/app/core/graphql/graphql.utils.d.ts +0 -42
  921. package/src/app/core/home/home.d.ts +0 -74
  922. package/src/app/core/home/home.module.d.ts +0 -12
  923. package/src/app/core/icon/icon.component.d.ts +0 -13
  924. package/src/app/core/icon/icon.module.d.ts +0 -9
  925. package/src/app/core/install/install-upgrade-card.component.d.ts +0 -63
  926. package/src/app/core/install/install-upgrade-card.module.d.ts +0 -9
  927. package/src/app/core/menu/menu.component.d.ts +0 -62
  928. package/src/app/core/menu/menu.model.d.ts +0 -28
  929. package/src/app/core/menu/menu.module.d.ts +0 -10
  930. package/src/app/core/menu/menu.service.d.ts +0 -21
  931. package/src/app/core/offline/update-offline-mode-card.component.d.ts +0 -11
  932. package/src/app/core/offline/update-offline-mode-card.module.d.ts +0 -9
  933. package/src/app/core/peer/select-peer.modal.d.ts +0 -53
  934. package/src/app/core/peer/select-peer.module.d.ts +0 -11
  935. package/src/app/core/register/register-confirm.page.d.ts +0 -24
  936. package/src/app/core/register/register.form.d.ts +0 -48
  937. package/src/app/core/register/register.modal.d.ts +0 -14
  938. package/src/app/core/register/register.module.d.ts +0 -12
  939. package/src/app/core/services/account.service.d.ts +0 -191
  940. package/src/app/core/services/auth-guard.service.d.ts +0 -17
  941. package/src/app/core/services/base-entity-service.class.d.ts +0 -104
  942. package/src/app/core/services/base-graphql-service.class.d.ts +0 -77
  943. package/src/app/core/services/base58.d.ts +0 -7
  944. package/src/app/core/services/config/core.config.d.ts +0 -29
  945. package/src/app/core/services/config.service.d.ts +0 -60
  946. package/src/app/core/services/crypto.service.d.ts +0 -44
  947. package/src/app/core/services/errors.d.ts +0 -51
  948. package/src/app/core/services/local-settings.service.d.ts +0 -90
  949. package/src/app/core/services/model/account.model.d.ts +0 -35
  950. package/src/app/core/services/model/config.model.d.ts +0 -36
  951. package/src/app/core/services/model/department.model.d.ts +0 -11
  952. package/src/app/core/services/model/entity.decorators.d.ts +0 -17
  953. package/src/app/core/services/model/entity.model.d.ts +0 -89
  954. package/src/app/core/services/model/filter.model.d.ts +0 -45
  955. package/src/app/core/services/model/history.model.d.ts +0 -20
  956. package/src/app/core/services/model/model.enum.d.ts +0 -7
  957. package/src/app/core/services/model/peer.model.d.ts +0 -29
  958. package/src/app/core/services/model/person.model.d.ts +0 -31
  959. package/src/app/core/services/model/referential.model.d.ts +0 -77
  960. package/src/app/core/services/model/settings.model.d.ts +0 -26
  961. package/src/app/core/services/model/token.model.d.ts +0 -21
  962. package/src/app/core/services/network.service.d.ts +0 -149
  963. package/src/app/core/services/network.types.d.ts +0 -5
  964. package/src/app/core/services/network.utils.d.ts +0 -31
  965. package/src/app/core/services/pipes/account.pipes.d.ts +0 -15
  966. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +0 -9
  967. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +0 -9
  968. package/src/app/core/services/pipes/usage-mode.pipes.d.ts +0 -15
  969. package/src/app/core/services/platform.service.d.ts +0 -96
  970. package/src/app/core/services/storage/entities-storage.service.d.ts +0 -108
  971. package/src/app/core/services/storage/entity-store.class.d.ts +0 -113
  972. package/src/app/core/services/testing/referential-filter.model.d.ts +0 -9
  973. package/src/app/core/services/testing/referential.validator.d.ts +0 -22
  974. package/src/app/core/services/validator/account.validator.d.ts +0 -17
  975. package/src/app/core/services/validator/base.validator.class.d.ts +0 -21
  976. package/src/app/core/services/validator/local-settings.validator.d.ts +0 -18
  977. package/src/app/core/services/validator/user-settings.validator.d.ts +0 -10
  978. package/src/app/core/services/validator/user-token.validator.d.ts +0 -13
  979. package/src/app/core/settings/settings.module.d.ts +0 -10
  980. package/src/app/core/settings/settings.page.d.ts +0 -68
  981. package/src/app/core/table/actions-column.component.d.ts +0 -48
  982. package/src/app/core/table/async-table.class.d.ts +0 -383
  983. package/src/app/core/table/entities-async-table-datasource.class.d.ts +0 -80
  984. package/src/app/core/table/entities-table-datasource.class.d.ts +0 -94
  985. package/src/app/core/table/memory-table.class.d.ts +0 -25
  986. package/src/app/core/table/table-select-columns.component.d.ts +0 -22
  987. package/src/app/core/table/table.class.d.ts +0 -386
  988. package/src/app/core/table/table.model.d.ts +0 -26
  989. package/src/app/core/table/table.module.d.ts +0 -10
  990. package/src/app/core/table/table.utils.d.ts +0 -11
  991. package/src/app/core/table/testing/table-validator.service.d.ts +0 -17
  992. package/src/app/core/table/testing/table.testing.d.ts +0 -53
  993. package/src/app/core/table/testing/table.testing.module.d.ts +0 -11
  994. package/src/app/shared/alerts.d.ts +0 -53
  995. package/src/app/shared/audio/audio.d.ts +0 -44
  996. package/src/app/shared/audio/audio.testing.d.ts +0 -13
  997. package/src/app/shared/audio/audio.testing.module.d.ts +0 -11
  998. package/src/app/shared/capacitor/keyboard.d.ts +0 -16
  999. package/src/app/shared/capacitor/plugins.d.ts +0 -7
  1000. package/src/app/shared/constants.d.ts +0 -7
  1001. package/src/app/shared/dates.d.ts +0 -39
  1002. package/src/app/shared/debug/debug-service.class.d.ts +0 -5
  1003. package/src/app/shared/debug/debug.component.d.ts +0 -13
  1004. package/src/app/shared/debug/debug.module.d.ts +0 -12
  1005. package/src/app/shared/directives/autofocus.directive.d.ts +0 -19
  1006. package/src/app/shared/directives/autotitle.directive.d.ts +0 -10
  1007. package/src/app/shared/directives/directives.module.d.ts +0 -12
  1008. package/src/app/shared/directives/drag-and-drop.directive.d.ts +0 -17
  1009. package/src/app/shared/directives/ng-var.directive.d.ts +0 -12
  1010. package/src/app/shared/directives/resizable/resizable.component.d.ts +0 -21
  1011. package/src/app/shared/directives/resizable/resizable.directive.d.ts +0 -12
  1012. package/src/app/shared/directives/resizable/resizable.module.d.ts +0 -8
  1013. package/src/app/shared/events.d.ts +0 -27
  1014. package/src/app/shared/file/csv.utils.d.ts +0 -19
  1015. package/src/app/shared/file/file.service.d.ts +0 -23
  1016. package/src/app/shared/file/file.utils.d.ts +0 -20
  1017. package/src/app/shared/file/images.utils.d.ts +0 -19
  1018. package/src/app/shared/file/json.utils.d.ts +0 -16
  1019. package/src/app/shared/file/uri.utils.d.ts +0 -7
  1020. package/src/app/shared/focusable.d.ts +0 -4
  1021. package/src/app/shared/form/field.component.d.ts +0 -71
  1022. package/src/app/shared/form/field.model.d.ts +0 -37
  1023. package/src/app/shared/form/loading-spinner.d.ts +0 -8
  1024. package/src/app/shared/forms.d.ts +0 -89
  1025. package/src/app/shared/functions.d.ts +0 -132
  1026. package/src/app/shared/geolocation/geolocation.utils.d.ts +0 -19
  1027. package/src/app/shared/gesture/gesture-config.d.ts +0 -15
  1028. package/src/app/shared/gesture/hammer.utils.d.ts +0 -16
  1029. package/src/app/shared/graph/colors.utils.d.ts +0 -17
  1030. package/src/app/shared/graph/graph-colors.d.ts +0 -63
  1031. package/src/app/shared/guard/component-dirty.guard.d.ts +0 -19
  1032. package/src/app/shared/help/help.modal.d.ts +0 -33
  1033. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +0 -10
  1034. package/src/app/shared/hotkeys/hotkeys.service.d.ts +0 -28
  1035. package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +0 -11
  1036. package/src/app/shared/http/http.utils.d.ts +0 -27
  1037. package/src/app/shared/image/gallery/image-gallery.component.d.ts +0 -98
  1038. package/src/app/shared/image/gallery/image-gallery.module.d.ts +0 -14
  1039. package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +0 -12
  1040. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +0 -33
  1041. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +0 -16
  1042. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +0 -12
  1043. package/src/app/shared/image/image.model.d.ts +0 -5
  1044. package/src/app/shared/image/image.module.d.ts +0 -8
  1045. package/src/app/shared/image/image.service.d.ts +0 -32
  1046. package/src/app/shared/inputs.d.ts +0 -32
  1047. package/src/app/shared/interceptors/progess.interceptor.d.ts +0 -8
  1048. package/src/app/shared/logging/log-level.model.d.ts +0 -38
  1049. package/src/app/shared/logging/logger.model.d.ts +0 -68
  1050. package/src/app/shared/logging/logging-service.class.d.ts +0 -39
  1051. package/src/app/shared/logging/logging-service.config.d.ts +0 -25
  1052. package/src/app/shared/logging/logging-service.module.d.ts +0 -9
  1053. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +0 -36
  1054. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +0 -138
  1055. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +0 -21
  1056. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +0 -4
  1057. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +0 -45
  1058. package/src/app/shared/material/badge/badge.directive.d.ts +0 -37
  1059. package/src/app/shared/material/badge/badge.module.d.ts +0 -10
  1060. package/src/app/shared/material/badge/badge.test.d.ts +0 -21
  1061. package/src/app/shared/material/boolean/boolean.module.d.ts +0 -19
  1062. package/src/app/shared/material/boolean/material.boolean.d.ts +0 -66
  1063. package/src/app/shared/material/chips/chips.module.d.ts +0 -21
  1064. package/src/app/shared/material/chips/material.chips.d.ts +0 -126
  1065. package/src/app/shared/material/chips/testing/chips.test.d.ts +0 -31
  1066. package/src/app/shared/material/datetime/datetime.module.d.ts +0 -24
  1067. package/src/app/shared/material/datetime/material.date.d.ts +0 -74
  1068. package/src/app/shared/material/datetime/material.dateshort.d.ts +0 -75
  1069. package/src/app/shared/material/datetime/material.datetime.d.ts +0 -100
  1070. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +0 -31
  1071. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +0 -30
  1072. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +0 -29
  1073. package/src/app/shared/material/duration/duration.module.d.ts +0 -18
  1074. package/src/app/shared/material/duration/duration.utils.d.ts +0 -3
  1075. package/src/app/shared/material/duration/material.duration.d.ts +0 -57
  1076. package/src/app/shared/material/latlong/latlong.utils.d.ts +0 -13
  1077. package/src/app/shared/material/latlong/material.latlong.d.ts +0 -65
  1078. package/src/app/shared/material/latlong/material.latlong.module.d.ts +0 -19
  1079. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +0 -21
  1080. package/src/app/shared/material/material.animations.d.ts +0 -4
  1081. package/src/app/shared/material/material.module.d.ts +0 -45
  1082. package/src/app/shared/material/material.testing.module.d.ts +0 -25
  1083. package/src/app/shared/material/numpad/numpad.append-to-input.directive.d.ts +0 -22
  1084. package/src/app/shared/material/numpad/numpad.component.d.ts +0 -26
  1085. package/src/app/shared/material/numpad/numpad.container.d.ts +0 -40
  1086. package/src/app/shared/material/numpad/numpad.content.d.ts +0 -7
  1087. package/src/app/shared/material/numpad/numpad.directive.d.ts +0 -35
  1088. package/src/app/shared/material/numpad/numpad.dom-service.d.ts +0 -16
  1089. package/src/app/shared/material/numpad/numpad.model.d.ts +0 -30
  1090. package/src/app/shared/material/numpad/numpad.module.d.ts +0 -16
  1091. package/src/app/shared/material/numpad/testing/numpad.test.d.ts +0 -13
  1092. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +0 -15
  1093. package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +0 -10
  1094. package/src/app/shared/material/swipe/material.swipe.d.ts +0 -89
  1095. package/src/app/shared/material/swipe/swipe.module.d.ts +0 -15
  1096. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +0 -22
  1097. package/src/app/shared/modules.d.ts +0 -8
  1098. package/src/app/shared/observables.d.ts +0 -29
  1099. package/src/app/shared/pipes/arrays.pipe.d.ts +0 -54
  1100. package/src/app/shared/pipes/colors.pipe.d.ts +0 -9
  1101. package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +0 -23
  1102. package/src/app/shared/pipes/date-format.pipe.d.ts +0 -34
  1103. package/src/app/shared/pipes/date-from-now.pipe.d.ts +0 -12
  1104. package/src/app/shared/pipes/duration.pipe.d.ts +0 -13
  1105. package/src/app/shared/pipes/file-size.pipe.d.ts +0 -30
  1106. package/src/app/shared/pipes/form.pipes.d.ts +0 -59
  1107. package/src/app/shared/pipes/highlight.pipe.d.ts +0 -11
  1108. package/src/app/shared/pipes/latlong-format.pipe.d.ts +0 -20
  1109. package/src/app/shared/pipes/maps.pipe.d.ts +0 -22
  1110. package/src/app/shared/pipes/math.pipes.d.ts +0 -20
  1111. package/src/app/shared/pipes/ng-init.pipe.d.ts +0 -8
  1112. package/src/app/shared/pipes/number-format.pipe.d.ts +0 -10
  1113. package/src/app/shared/pipes/pipes.module.d.ts +0 -27
  1114. package/src/app/shared/pipes/property.pipes.d.ts +0 -26
  1115. package/src/app/shared/pipes/string.pipes.d.ts +0 -47
  1116. package/src/app/shared/pipes/translate-context.pipe.d.ts +0 -17
  1117. package/src/app/shared/pipes/types.pipes.d.ts +0 -18
  1118. package/src/app/shared/platforms.d.ts +0 -8
  1119. package/src/app/shared/services/entity-service.class.d.ts +0 -73
  1120. package/src/app/shared/services/job.utils.d.ts +0 -20
  1121. package/src/app/shared/services/memory-entity-service.class.d.ts +0 -71
  1122. package/src/app/shared/services/progress-bar.service.d.ts +0 -20
  1123. package/src/app/shared/services/startable-observable-service.class.d.ts +0 -33
  1124. package/src/app/shared/services/startable-service.class.d.ts +0 -34
  1125. package/src/app/shared/services/translate-context.service.d.ts +0 -29
  1126. package/src/app/shared/services/validator-service.class.d.ts +0 -10
  1127. package/src/app/shared/services.d.ts +0 -9
  1128. package/src/app/shared/shared-routing.module.d.ts +0 -22
  1129. package/src/app/shared/shared.module.d.ts +0 -31
  1130. package/src/app/shared/shared.testing.module.d.ts +0 -17
  1131. package/src/app/shared/storage/storage-explorer.component.d.ts +0 -58
  1132. package/src/app/shared/storage/storage-explorer.module.d.ts +0 -16
  1133. package/src/app/shared/storage/storage.service.d.ts +0 -23
  1134. package/src/app/shared/storage/storage.utils.d.ts +0 -19
  1135. package/src/app/shared/testing/observable.test.d.ts +0 -25
  1136. package/src/app/shared/testing/tests.page.d.ts +0 -20
  1137. package/src/app/shared/toast/toast.testing.d.ts +0 -15
  1138. package/src/app/shared/toast/toast.testing.module.d.ts +0 -11
  1139. package/src/app/shared/toast/toasts.d.ts +0 -17
  1140. package/src/app/shared/toolbar/modal-toolbar.d.ts +0 -21
  1141. package/src/app/shared/toolbar/toolbar.d.ts +0 -63
  1142. package/src/app/shared/toolbar/toolbar.module.d.ts +0 -15
  1143. package/src/app/shared/types.d.ts +0 -26
  1144. package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +0 -20
  1145. package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +0 -11
  1146. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +0 -39
  1147. package/src/app/shared/upload-file/upload-file.component.d.ts +0 -48
  1148. package/src/app/shared/upload-file/upload-file.model.d.ts +0 -30
  1149. package/src/app/shared/validator/form-error-adapter.class.d.ts +0 -27
  1150. package/src/app/shared/validator/validators.d.ts +0 -115
  1151. package/src/app/shared/version/versions.d.ts +0 -26
  1152. package/src/app/social/job/job.module.d.ts +0 -12
  1153. package/src/app/social/job/progression/job-progression.component.d.ts +0 -9
  1154. package/src/app/social/job/progression/job-progression.icon.d.ts +0 -49
  1155. package/src/app/social/job/progression/job-progression.list.d.ts +0 -21
  1156. package/src/app/social/job/progression/job-progression.model.d.ts +0 -11
  1157. package/src/app/social/job/progression/job-progression.service.d.ts +0 -34
  1158. package/src/app/social/job/testing/job-progression.testing.d.ts +0 -17
  1159. package/src/app/social/job/testing/job-progression.testing.service.d.ts +0 -17
  1160. package/src/app/social/job/testing/job.testing.module.d.ts +0 -11
  1161. package/src/app/social/message/message.form.d.ts +0 -30
  1162. package/src/app/social/message/message.modal.d.ts +0 -39
  1163. package/src/app/social/message/message.model.d.ts +0 -31
  1164. package/src/app/social/message/message.module.d.ts +0 -11
  1165. package/src/app/social/message/message.service.d.ts +0 -27
  1166. package/src/app/social/social.errors.d.ts +0 -9
  1167. package/src/app/social/social.module.d.ts +0 -20
  1168. package/src/app/social/social.testing.module.d.ts +0 -13
  1169. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +0 -31
  1170. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +0 -71
  1171. package/src/app/social/user-event/testing/user-event.testing.d.ts +0 -34
  1172. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +0 -44
  1173. package/src/app/social/user-event/testing/user-event.testing.module.d.ts +0 -11
  1174. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +0 -41
  1175. package/src/app/social/user-event/user-event.model.d.ts +0 -45
  1176. package/src/app/social/user-event/user-event.module.d.ts +0 -12
  1177. package/src/app/social/user-event/user-event.service.d.ts +0 -124
  1178. package/src/environments/environment.class.d.ts +0 -57
  1179. package/src/environments/environment.d.ts +0 -3
@@ -1,391 +0,0 @@
1
- import { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
2
- import { isMoment } from 'moment';
3
- import { isNotEmptyArray, nullIfUndefined } from './functions';
4
- import { toDateISOString } from './dates';
5
- import { waitFor } from './observables';
6
- /**
7
- * Fill a form using a source entity
8
- *
9
- * @param target
10
- * @param entity
11
- * @param opts
12
- */
13
- export function copyEntity2Form(entity, target, opts) {
14
- const json = getFormValueFromEntity(entity, target);
15
- target.patchValue(json, opts);
16
- }
17
- export function getFormValueFromEntity(entity, form) {
18
- return adaptValueToControl(entity, form);
19
- }
20
- /**
21
- * Transform an entity into a simple object, compatible with the given form
22
- *
23
- * @param source an entity (or subentity)
24
- * @param control
25
- * @param path
26
- */
27
- export function adaptValueToControl(source, control, path) {
28
- const pathPrefix = path ? path + '.' : '';
29
- // Form group
30
- if (control instanceof UntypedFormGroup) {
31
- const result = {};
32
- // eslint-disable-next-line guard-for-in
33
- for (const key in control.controls) {
34
- result[key] = adaptValueToControl(source && source[key], control.controls[key], pathPrefix + key);
35
- }
36
- return result;
37
- }
38
- // Array
39
- if (control instanceof UntypedFormArray) {
40
- // Split, if many values in a string
41
- if (typeof source === 'string') {
42
- source = source.split('|');
43
- }
44
- // Skip if value is not an array
45
- if (!Array.isArray(source) || control.length === 0) {
46
- if (isNotEmptyArray(source))
47
- console.warn(`WARN: please resize the FormArray '${path}' to the same length of the input array`);
48
- return [];
49
- }
50
- // Use the first form group, as model
51
- const firstItemControl = control.at(0);
52
- let result = source.map((item, index) => adaptValueToControl(item, firstItemControl, pathPrefix + '#' + index));
53
- // Truncate if too many values
54
- if (result.length > control.length) {
55
- if (firstItemControl instanceof UntypedFormControl) {
56
- for (let i = control.length; i < result.length; i++) {
57
- control.push(new UntypedFormControl(null, firstItemControl.validator));
58
- }
59
- }
60
- else {
61
- console.warn(`WARN: please resize the FormArray '${path || ''}' to the same length of the input array`);
62
- result = result.slice(0, control.length);
63
- }
64
- }
65
- // Add values if not enought
66
- else if (result.length < control.length) {
67
- //console.warn(`WARN: Adding null value to array values`);
68
- for (let i = result.length; i < control.length; i++) {
69
- result.push(null);
70
- }
71
- }
72
- return result;
73
- }
74
- // Form control
75
- if (control instanceof UntypedFormControl) {
76
- // Date
77
- if (isMoment(source)) {
78
- return toDateISOString(source);
79
- }
80
- // Any other control: replace undefined by null value
81
- // because Undefined is not authorized as control value
82
- else {
83
- return nullIfUndefined(source);
84
- }
85
- }
86
- }
87
- export function logFormErrors(control, logPrefix, path) {
88
- if (!control || control.valid)
89
- return;
90
- logPrefix = logPrefix || '';
91
- // Form group
92
- if (control instanceof UntypedFormGroup) {
93
- if (!path)
94
- console.warn(`${logPrefix} Form errors:`);
95
- if (control.errors) {
96
- Object.keys(control.errors).forEach(error => console.warn(`${logPrefix} -> ${path || ''} (${error})`));
97
- }
98
- if (control.controls) {
99
- Object.keys(control.controls).forEach(child => logFormErrors(control.controls[child], logPrefix, (path ? `${path}.${child}` : child)) // Recursive call
100
- );
101
- }
102
- }
103
- // Form array
104
- else if (control instanceof UntypedFormArray) {
105
- if (control.errors) {
106
- Object.keys(control.errors).forEach(error => console.warn(`${logPrefix} -> ${path || ''} (${error})`));
107
- }
108
- control.controls.forEach((child, index) => {
109
- logFormErrors(child, logPrefix, (path ? `${path}.${index}` : `${index}`)); // Recursive call
110
- });
111
- }
112
- // Other control's errors
113
- else if (control.errors) {
114
- Object.keys(control.errors).forEach(error => console.warn(`${logPrefix} -> ${path || ''} (${error})`));
115
- }
116
- }
117
- export function getFormErrors(control, opts) {
118
- if (!control || control.valid)
119
- return undefined;
120
- opts = opts || {};
121
- opts.result = opts.result || {};
122
- // Form group
123
- if (control instanceof UntypedFormGroup) {
124
- // Copy errors
125
- if (control.errors) {
126
- if (opts.controlName) {
127
- opts.result[opts.controlName] = {
128
- ...control.errors
129
- };
130
- }
131
- else {
132
- opts.result = {
133
- ...opts.result,
134
- ...control.errors
135
- };
136
- }
137
- }
138
- if (!opts || opts.recursive !== false) {
139
- // Loop on children controls
140
- for (const key in control.controls) {
141
- const child = control.controls[key];
142
- if (child && child.enabled) {
143
- getFormErrors(child, {
144
- ...opts,
145
- controlName: opts.controlName ? [opts.controlName, key].join('.') : key,
146
- result: opts.result // Make sure to keep the same result object
147
- });
148
- }
149
- }
150
- }
151
- }
152
- // Form array
153
- else if (control instanceof UntypedFormArray) {
154
- control.controls.forEach((child, index) => {
155
- getFormErrors(child, {
156
- ...opts,
157
- controlName: (opts.controlName || '') + '.' + index,
158
- result: opts.result // Make sure to keep the same result object
159
- });
160
- });
161
- }
162
- // Other type of control (e.g simple control)
163
- else if (control.errors) {
164
- if (opts.controlName) {
165
- opts.result[opts.controlName] = {
166
- ...control.errors
167
- };
168
- }
169
- else {
170
- opts.result = {
171
- ...opts.result,
172
- ...control.errors
173
- };
174
- }
175
- }
176
- return opts.result;
177
- }
178
- export function getControlFromPath(form, path) {
179
- const i = path.indexOf('.');
180
- if (i === -1) {
181
- return form.controls[path];
182
- }
183
- const key = path.substring(0, i);
184
- if (form.controls[key] instanceof UntypedFormGroup) {
185
- return getControlFromPath(form.controls[key], path.substring(i + 1));
186
- }
187
- throw new Error(`Invalid form path: '${key}' should be a form group.`);
188
- }
189
- export function disableControls(form, paths, opts) {
190
- (paths || []).forEach(path => {
191
- const control = getControlFromPath(form, path);
192
- if (control)
193
- control.disable(opts);
194
- });
195
- }
196
- export function addValueInArray(arrayControl, createControl, equals, isEmpty, value, options) {
197
- const disabled = arrayControl.disabled;
198
- let hasChanged = false;
199
- let index = -1;
200
- // Search if value already exists
201
- if (!isEmpty(value)) {
202
- index = (arrayControl.value || []).findIndex(v => equals(value, v));
203
- }
204
- // If value not exists, but last value is empty: use it
205
- if (index === -1 && arrayControl.length && isEmpty(arrayControl.at(arrayControl.length - 1).value)) {
206
- index = arrayControl.length - 1;
207
- }
208
- // Replace the existing value
209
- if (index !== -1) {
210
- if (!isEmpty(value)) {
211
- arrayControl.at(index).patchValue(value, options);
212
- hasChanged = true;
213
- }
214
- }
215
- else {
216
- const control = createControl(value);
217
- // Apply parent disabled state, before to push it into the array
218
- // This is need to avoid parent form to be enabled
219
- if (disabled && control.enabled)
220
- control.disable({ emitEvent: false });
221
- else if (!disabled && control.disabled)
222
- control.enable({ emitEvent: false });
223
- arrayControl.push(control, options);
224
- hasChanged = true;
225
- }
226
- if (hasChanged) {
227
- if (!options || options.emitEvent !== false) {
228
- // Mark array control dirty
229
- if (!isEmpty(value)) {
230
- arrayControl.markAsDirty();
231
- }
232
- }
233
- }
234
- return hasChanged;
235
- }
236
- /**
237
- * Set an array using given default values. Each default value will be pass to the 'createControl()' function
238
- * @param arrayControl
239
- * @param createControl
240
- * @param values
241
- */
242
- export function initArrayControlsFromValues(arrayControl, createControl, defaultValues, options) {
243
- if (arrayControl.length === 0 && (!defaultValues || defaultValues.length === 0))
244
- return false; // No changes need
245
- const disabled = arrayControl.disabled;
246
- while (arrayControl.length > 0) {
247
- arrayControl.removeAt(arrayControl.length - 1, options);
248
- }
249
- (defaultValues || []).forEach(value => {
250
- const control = createControl(value);
251
- // Apply parent disabled state, before to push it into the array
252
- // This is need to avoid parent form to be enabled
253
- if (disabled && control.enabled)
254
- control.disable({ emitEvent: false });
255
- else if (!disabled && control.disabled)
256
- control.enable({ emitEvent: false });
257
- arrayControl.push(control, options);
258
- });
259
- return true; // Has some changes
260
- }
261
- export function resizeArray(arrayControl, createControl, length, options) {
262
- if (arrayControl.length === length)
263
- return false; // No changes need
264
- const disabled = arrayControl.disabled;
265
- // Reduce size
266
- while (arrayControl.length > length) {
267
- arrayControl.removeAt(arrayControl.length - 1, options);
268
- }
269
- // Increase size
270
- while (arrayControl.length < length) {
271
- const control = createControl();
272
- // Apply parent disabled state, before to push it into the array
273
- // This is need to avoid parent form to be enabled, after calling resizeArray()
274
- if (disabled && control.enabled)
275
- control.disable({ emitEvent: false });
276
- else if (!disabled && control.disabled)
277
- control.enable({ emitEvent: false });
278
- arrayControl.push(control, options);
279
- }
280
- return true; // Has some changes
281
- }
282
- export function removeValueInArray(arrayControl, isEmpty, index) {
283
- arrayControl.removeAt(index);
284
- arrayControl.markAsDirty();
285
- return true;
286
- }
287
- export function clearValueInArray(arrayControl, isEmpty, index) {
288
- const control = arrayControl.at(index);
289
- if (isEmpty(control.value))
290
- return false; // skip (not need to clear)
291
- if (control instanceof UntypedFormGroup) {
292
- copyEntity2Form({}, control);
293
- }
294
- else if (control instanceof UntypedFormArray) {
295
- control.setValue([]);
296
- }
297
- else {
298
- control.setValue(null);
299
- }
300
- arrayControl.markAsDirty();
301
- return true;
302
- }
303
- export function markAllAsTouched(control, opts) {
304
- if (!control)
305
- return;
306
- if (control instanceof UntypedFormGroup) {
307
- markFormGroupAsTouched(control, { ...opts, onlySelf: true }); // recursive call
308
- }
309
- else if (control instanceof UntypedFormArray) {
310
- control.markAsTouched({ onlySelf: true });
311
- (control.controls || []).forEach(c => markControlAsTouched(c, { ...opts, onlySelf: true })); // recursive call
312
- }
313
- else {
314
- control.markAsTouched({ onlySelf: true });
315
- control.updateValueAndValidity({ ...opts, onlySelf: true });
316
- }
317
- }
318
- export function markFormGroupAsTouched(form, opts) {
319
- if (!form)
320
- return;
321
- form.markAsTouched(opts);
322
- Object.keys(form.controls)
323
- .map(key => form.controls[key])
324
- .filter(control => control.enabled)
325
- .forEach(control => markControlAsTouched(control, opts));
326
- form.updateValueAndValidity({ ...opts, onlySelf: true });
327
- }
328
- export function markControlAsTouched(control, opts) {
329
- if (!control)
330
- return;
331
- if (control instanceof UntypedFormGroup) {
332
- markAllAsTouched(control, { ...opts, onlySelf: true }); // recursive call
333
- }
334
- else if (control instanceof UntypedFormArray) {
335
- (control.controls || []).forEach(c => markControlAsTouched(c, { ...opts, onlySelf: true })); // recursive call
336
- }
337
- else {
338
- control.markAsTouched({ onlySelf: true });
339
- control.updateValueAndValidity({ ...opts, onlySelf: true });
340
- }
341
- }
342
- export function updateValueAndValidity(form, opts) {
343
- if (!form)
344
- return;
345
- form.updateValueAndValidity(opts);
346
- Object.keys(form.controls)
347
- .map(key => form.controls[key])
348
- .filter(control => control.enabled)
349
- .forEach(control => {
350
- if (control instanceof UntypedFormGroup) {
351
- updateValueAndValidity(control, { ...opts, onlySelf: true }); // recursive call
352
- }
353
- else {
354
- control.updateValueAndValidity({ ...opts, onlySelf: true });
355
- }
356
- });
357
- }
358
- export function markAsUntouched(form, opts) {
359
- if (!form)
360
- return;
361
- form.markAsUntouched(opts);
362
- Object.getOwnPropertyNames(form.controls)
363
- .forEach(key => {
364
- const control = form.get(key);
365
- if (control instanceof UntypedFormGroup) {
366
- markAsUntouched(control, { onlySelf: true }); // recursive call
367
- }
368
- else {
369
- control.markAsUntouched({ onlySelf: true });
370
- control.setErrors(null);
371
- }
372
- });
373
- }
374
- /**
375
- * Wait end of async validation (not pending). This need to implement {pending: boolean}
376
- * return false
377
- */
378
- export function waitWhilePending(form, opts) {
379
- const predicate = () => form.pending !== true;
380
- return waitFor(predicate, opts);
381
- }
382
- /**
383
- * Wait form is idle (not loading). This need to implement {loading: boolean}
384
- * @param form
385
- * @param opts
386
- */
387
- export function waitIdle(form, opts) {
388
- const predicate = () => form.loading !== true;
389
- return waitFor(predicate, opts);
390
- }
391
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9mb3Jtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBQ3pILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFzQixlQUFlLEVBQVksZUFBZSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQzVGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDeEMsT0FBTyxFQUFDLE9BQU8sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFPdEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxNQUFXLEVBQUUsTUFBd0IsRUFBRSxJQUFrRDtJQUN2SCxNQUFNLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxNQUFxQixFQUFFLElBQXNCO0lBQ2xGLE9BQU8sbUJBQW1CLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBMkIsQ0FBQztBQUNyRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE1BQXFCLEVBQUUsT0FBd0IsRUFBRSxJQUFhO0lBQ2hHLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBRTFDLGFBQWE7SUFDYixJQUFJLE9BQU8sWUFBWSxnQkFBZ0IsRUFBRTtRQUN2QyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsd0NBQXdDO1FB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LENBQWlDLElBQU8sRUFBRSxJQUFxQjtJQUM3RixNQUFNLFNBQVMsR0FBb0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUM7SUFDL0QsT0FBTyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBaUMsSUFBTyxFQUFFLElBQXFCO0lBQ3JGLE1BQU0sU0FBUyxHQUFvQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQztJQUMvRCxPQUFPLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7aXNNb21lbnR9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge2lzTmlsLCBpc05pbE9yQmxhbmssIGlzTm90RW1wdHlBcnJheSwgaXNOb3ROaWwsIG51bGxJZlVuZGVmaW5lZH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHt0b0RhdGVJU09TdHJpbmd9IGZyb20gJy4vZGF0ZXMnO1xuaW1wb3J0IHt3YWl0Rm9yLCBXYWl0Rm9yT3B0aW9uc30gZnJvbSAnLi9vYnNlcnZhYmxlcyc7XG5pbXBvcnQge1ByZWRpY2F0ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUVycm9ycyB7XG4gIFtrZXk6IHN0cmluZ106IFZhbGlkYXRpb25FcnJvcnM7XG59XG5cbi8qKlxuICogRmlsbCBhIGZvcm0gdXNpbmcgYSBzb3VyY2UgZW50aXR5XG4gKlxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGVudGl0eVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlFbnRpdHkyRm9ybShlbnRpdHk6IGFueSwgdGFyZ2V0OiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuOyBvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBjb25zdCBqc29uID0gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHksIHRhcmdldCk7XG4gIHRhcmdldC5wYXRjaFZhbHVlKGpzb24sIG9wdHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybVZhbHVlRnJvbUVudGl0eShlbnRpdHk6IGFueXx1bmRlZmluZWQsIGZvcm06IFVudHlwZWRGb3JtR3JvdXApOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgcmV0dXJuIGFkYXB0VmFsdWVUb0NvbnRyb2woZW50aXR5LCBmb3JtKSBhcyB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFRyYW5zZm9ybSBhbiBlbnRpdHkgaW50byBhIHNpbXBsZSBvYmplY3QsIGNvbXBhdGlibGUgd2l0aCB0aGUgZ2l2ZW4gZm9ybVxuICpcbiAqIEBwYXJhbSBzb3VyY2UgYW4gZW50aXR5IChvciBzdWJlbnRpdHkpXG4gKiBAcGFyYW0gY29udHJvbFxuICogQHBhcmFtIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlOiBhbnl8dW5kZWZpbmVkLCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHBhdGg/OiBzdHJpbmcpOiBhbnkge1xuICBjb25zdCBwYXRoUHJlZml4ID0gcGF0aCA/IHBhdGggKyAnLicgOiAnJztcblxuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjb250cm9sLmNvbnRyb2xzKSB7XG4gICAgICByZXN1bHRba2V5XSA9IGFkYXB0VmFsdWVUb0NvbnRyb2woc291cmNlICYmIHNvdXJjZVtrZXldLCBjb250cm9sLmNvbnRyb2xzW2tleV0sIHBhdGhQcmVmaXggKyBrZXkpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gQXJyYXlcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG5cbiAgICAvLyBTcGxpdCwgaWYgbWFueSB2YWx1ZXMgaW4gYSBzdHJpbmdcbiAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNvdXJjZSA9IHNvdXJjZS5zcGxpdCgnfCcpO1xuICAgIH1cblxuICAgIC8vIFNraXAgaWYgdmFsdWUgaXMgbm90IGFuIGFycmF5XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHNvdXJjZSkgfHwgY29udHJvbC5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoc291cmNlKSkgY29uc29sZS53YXJuKGBXQVJOOiBwbGVhc2UgcmVzaXplIHRoZSBGb3JtQXJyYXkgJyR7cGF0aH0nIHRvIHRoZSBzYW1lIGxlbmd0aCBvZiB0aGUgaW5wdXQgYXJyYXlgKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvLyBVc2UgdGhlIGZpcnN0IGZvcm0gZ3JvdXAsIGFzIG1vZGVsXG4gICAgY29uc3QgZmlyc3RJdGVtQ29udHJvbCA9IGNvbnRyb2wuYXQoMCk7XG4gICAgbGV0IHJlc3VsdCA9IHNvdXJjZS5tYXAoKGl0ZW0sIGluZGV4KSA9PiBhZGFwdFZhbHVlVG9Db250cm9sKGl0ZW0sIGZpcnN0SXRlbUNvbnRyb2wsIHBhdGhQcmVmaXggKyAnIycgKyBpbmRleCkpIGFzIGFueVtdO1xuXG4gICAgLy8gVHJ1bmNhdGUgaWYgdG9vIG1hbnkgdmFsdWVzXG4gICAgaWYgKHJlc3VsdC5sZW5ndGggPiBjb250cm9sLmxlbmd0aCkge1xuICAgICAgaWYgKGZpcnN0SXRlbUNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRyb2wubGVuZ3RoOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29udHJvbC5wdXNoKG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wobnVsbCwgZmlyc3RJdGVtQ29udHJvbC52YWxpZGF0b3IpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgV0FSTjogcGxlYXNlIHJlc2l6ZSB0aGUgRm9ybUFycmF5ICcke3BhdGh8fCcnfScgdG8gdGhlIHNhbWUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBhcnJheWApO1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgY29udHJvbC5sZW5ndGgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCB2YWx1ZXMgaWYgbm90IGVub3VnaHRcbiAgICBlbHNlIGlmIChyZXN1bHQubGVuZ3RoIDwgY29udHJvbC5sZW5ndGgpIHtcbiAgICAgIC8vY29uc29sZS53YXJuKGBXQVJOOiBBZGRpbmcgbnVsbCB2YWx1ZSB0byBhcnJheSB2YWx1ZXNgKTtcbiAgICAgIGZvciAobGV0IGkgPSByZXN1bHQubGVuZ3RoOyBpIDwgY29udHJvbC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQucHVzaChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIEZvcm0gY29udHJvbFxuICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQ29udHJvbCkge1xuICAgIC8vIERhdGVcbiAgICBpZiAoaXNNb21lbnQoc291cmNlKSkge1xuICAgICAgcmV0dXJuIHRvRGF0ZUlTT1N0cmluZyhzb3VyY2UpO1xuICAgIH1cbiAgICAvLyBBbnkgb3RoZXIgY29udHJvbDogcmVwbGFjZSB1bmRlZmluZWQgYnkgbnVsbCB2YWx1ZVxuICAgIC8vIGJlY2F1c2UgVW5kZWZpbmVkIGlzIG5vdCBhdXRob3JpemVkIGFzIGNvbnRyb2wgdmFsdWVcbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsSWZVbmRlZmluZWQoc291cmNlKTtcbiAgICB9XG4gIH1cblxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9nRm9ybUVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGxvZ1ByZWZpeD86IHN0cmluZywgcGF0aD86IHN0cmluZykge1xuICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC52YWxpZCkgcmV0dXJuO1xuICBsb2dQcmVmaXggPSBsb2dQcmVmaXggfHwgJyc7XG4gIC8vIEZvcm0gZ3JvdXBcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgaWYgKCFwYXRoKSBjb25zb2xlLndhcm4oYCR7bG9nUHJlZml4fSBGb3JtIGVycm9yczpgKTtcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yID0+XG4gICAgICAgIGNvbnNvbGUud2FybihgJHtsb2dQcmVmaXh9IC0+ICR7cGF0aCB8fCAnJ30gKCR7ZXJyb3J9KWApXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY29udHJvbC5jb250cm9scykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5jb250cm9scykuZm9yRWFjaChjaGlsZCA9PlxuICAgICAgICBsb2dGb3JtRXJyb3JzKGNvbnRyb2wuY29udHJvbHNbY2hpbGRdLCBsb2dQcmVmaXgsIChwYXRoID8gYCR7cGF0aH0uJHtjaGlsZH1gIDogY2hpbGQpKSAvLyBSZWN1cnNpdmUgY2FsbFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgLy8gRm9ybSBhcnJheVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgIGlmIChjb250cm9sLmVycm9ycykge1xuICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3IgPT5cbiAgICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnRyb2wuY29udHJvbHMuZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICBsb2dGb3JtRXJyb3JzKGNoaWxkLCBsb2dQcmVmaXgsIChwYXRoID8gYCR7cGF0aH0uJHtpbmRleH1gIDogYCR7aW5kZXh9YCkpOyAvLyBSZWN1cnNpdmUgY2FsbFxuICAgIH0pO1xuICB9XG4gIC8vIE90aGVyIGNvbnRyb2wncyBlcnJvcnNcbiAgZWxzZSBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaChlcnJvciA9PlxuICAgICAgY29uc29sZS53YXJuKGAke2xvZ1ByZWZpeH0gLT4gJHtwYXRoIHx8ICcnfSAoJHtlcnJvcn0pYClcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtRXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtcbiAgY29udHJvbE5hbWU/OiBzdHJpbmc7XG4gIHJlc3VsdD86IEZvcm1FcnJvcnM7XG4gIHJlY3Vyc2l2ZT86IGJvb2xlYW47XG59KTogRm9ybUVycm9ycyB7XG4gIGlmICghY29udHJvbCB8fCBjb250cm9sLnZhbGlkKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIG9wdHMgPSBvcHRzIHx8wqB7fTtcbiAgb3B0cy5yZXN1bHQgPSBvcHRzLnJlc3VsdCB8fCB7fTtcblxuICAvLyBGb3JtIGdyb3VwXG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIC8vIENvcHkgZXJyb3JzXG4gICAgaWYgKGNvbnRyb2wuZXJyb3JzKSB7XG4gICAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgICBvcHRzLnJlc3VsdFtvcHRzLmNvbnRyb2xOYW1lXSA9IHtcbiAgICAgICAgICAuLi5jb250cm9sLmVycm9yc1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAgIC4uLm9wdHMucmVzdWx0LFxuICAgICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRzIHx8IG9wdHMucmVjdXJzaXZlICE9PSBmYWxzZSkge1xuICAgICAgLy8gTG9vcCBvbiBjaGlsZHJlbiBjb250cm9sc1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29udHJvbC5jb250cm9scykge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGNvbnRyb2wuY29udHJvbHNba2V5XTtcbiAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmVuYWJsZWQpIHtcbiAgICAgICAgICBnZXRGb3JtRXJyb3JzKGNoaWxkLCB7XG4gICAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgICAgY29udHJvbE5hbWU6IG9wdHMuY29udHJvbE5hbWUgPyBbb3B0cy5jb250cm9sTmFtZSwga2V5XS5qb2luKCcuJykgOiBrZXksXG4gICAgICAgICAgICByZXN1bHQ6IG9wdHMucmVzdWx0IC8vIE1ha2Ugc3VyZSB0byBrZWVwIHRoZSBzYW1lIHJlc3VsdCBvYmplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZvcm0gYXJyYXlcbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLmNvbnRyb2xzLmZvckVhY2goKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgICAgZ2V0Rm9ybUVycm9ycyhjaGlsZCwge1xuICAgICAgICAuLi5vcHRzLFxuICAgICAgICBjb250cm9sTmFtZTogKG9wdHMuY29udHJvbE5hbWUgfHwgJycpICsgJy4nICsgaW5kZXgsXG4gICAgICAgIHJlc3VsdDogb3B0cy5yZXN1bHQgLy8gTWFrZSBzdXJlIHRvIGtlZXAgdGhlIHNhbWUgcmVzdWx0IG9iamVjdFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBPdGhlciB0eXBlIG9mIGNvbnRyb2wgKGUuZyBzaW1wbGUgY29udHJvbClcbiAgZWxzZSBpZiAoY29udHJvbC5lcnJvcnMpIHtcbiAgICBpZiAob3B0cy5jb250cm9sTmFtZSkge1xuICAgICAgb3B0cy5yZXN1bHRbb3B0cy5jb250cm9sTmFtZV0gPSB7XG4gICAgICAgIC4uLmNvbnRyb2wuZXJyb3JzXG4gICAgICB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIG9wdHMucmVzdWx0ID0ge1xuICAgICAgICAuLi5vcHRzLnJlc3VsdCxcbiAgICAgICAgLi4uY29udHJvbC5lcnJvcnNcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRzLnJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRyb2xGcm9tUGF0aChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBwYXRoOiBzdHJpbmcpOiBBYnN0cmFjdENvbnRyb2wge1xuICBjb25zdCBpID0gcGF0aC5pbmRleE9mKCcuJyk7XG4gIGlmIChpID09PSAtMSkge1xuICAgIHJldHVybiBmb3JtLmNvbnRyb2xzW3BhdGhdO1xuICB9XG4gIGNvbnN0IGtleSA9IHBhdGguc3Vic3RyaW5nKDAsIGkpO1xuICBpZiAoZm9ybS5jb250cm9sc1trZXldIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIHJldHVybiBnZXRDb250cm9sRnJvbVBhdGgoKGZvcm0uY29udHJvbHNba2V5XSBhcyBVbnR5cGVkRm9ybUdyb3VwKSwgcGF0aC5zdWJzdHJpbmcoaSArIDEpKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZm9ybSBwYXRoOiAnJHtrZXl9JyBzaG91bGQgYmUgYSBmb3JtIGdyb3VwLmApO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNhYmxlQ29udHJvbHMoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgcGF0aHM6IHN0cmluZ1tdLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIChwYXRocyB8fCBbXSkuZm9yRWFjaChwYXRoID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZ2V0Q29udHJvbEZyb21QYXRoKGZvcm0sIHBhdGgpO1xuICAgIGlmIChjb250cm9sKSBjb250cm9sLmRpc2FibGUob3B0cyk7XG4gIH0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRWYWx1ZUluQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb250cm9sOiAodmFsdWU/OiBhbnkpID0+IEFic3RyYWN0Q29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXF1YWxzOiAodjE6IGFueSwgdjI6IGFueSkgPT4gYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiB7IGVtaXRFdmVudDogYm9vbGVhbiB9KTogYm9vbGVhbiB7XG4gIGNvbnN0IGRpc2FibGVkID0gYXJyYXlDb250cm9sLmRpc2FibGVkO1xuXG4gIGxldCBoYXNDaGFuZ2VkID0gZmFsc2U7XG4gIGxldCBpbmRleCA9IC0xO1xuXG4gIC8vIFNlYXJjaCBpZiB2YWx1ZSBhbHJlYWR5IGV4aXN0c1xuICBpZiAoIWlzRW1wdHkodmFsdWUpKSB7XG4gICAgaW5kZXggPSAoYXJyYXlDb250cm9sLnZhbHVlIHx8IFtdKS5maW5kSW5kZXgodiA9PiBlcXVhbHModmFsdWUsIHYpKTtcbiAgfVxuXG4gIC8vIElmIHZhbHVlIG5vdCBleGlzdHMsIGJ1dCBsYXN0IHZhbHVlIGlzIGVtcHR5OiB1c2UgaXRcbiAgaWYgKGluZGV4ID09PSAtMSAmJiBhcnJheUNvbnRyb2wubGVuZ3RoICYmIGlzRW1wdHkoYXJyYXlDb250cm9sLmF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxKS52YWx1ZSkpIHtcbiAgICBpbmRleCA9IGFycmF5Q29udHJvbC5sZW5ndGggLSAxO1xuICB9XG5cbiAgLy8gUmVwbGFjZSB0aGUgZXhpc3RpbmcgdmFsdWVcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGlmICghaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgIGFycmF5Q29udHJvbC5hdChpbmRleCkucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBoYXNDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29udHJvbCA9IGNyZWF0ZUNvbnRyb2wodmFsdWUpO1xuXG4gICAgLy8gQXBwbHkgcGFyZW50IGRpc2FibGVkIHN0YXRlLCBiZWZvcmUgdG8gcHVzaCBpdCBpbnRvIHRoZSBhcnJheVxuICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkXG4gICAgaWYgKGRpc2FibGVkICYmIGNvbnRyb2wuZW5hYmxlZCkgY29udHJvbC5kaXNhYmxlKHtlbWl0RXZlbnQ6IGZhbHNlfSlcbiAgICBlbHNlIGlmICghZGlzYWJsZWQgJiYgY29udHJvbC5kaXNhYmxlZCkgY29udHJvbC5lbmFibGUoe2VtaXRFdmVudDogZmFsc2V9KVxuXG4gICAgYXJyYXlDb250cm9sLnB1c2goY29udHJvbCwgb3B0aW9ucyk7XG4gICAgaGFzQ2hhbmdlZCA9IHRydWU7XG4gIH1cblxuICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgIGlmICghb3B0aW9ucyB8fCBvcHRpb25zLmVtaXRFdmVudCAhPT0gZmFsc2UpIHtcbiAgICAgIC8vIE1hcmsgYXJyYXkgY29udHJvbCBkaXJ0eVxuICAgICAgaWYgKCFpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICBhcnJheUNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gaGFzQ2hhbmdlZDtcbn1cblxuLyoqXG4gKiBTZXQgYW4gYXJyYXkgdXNpbmcgZ2l2ZW4gZGVmYXVsdCB2YWx1ZXMuIEVhY2ggZGVmYXVsdCB2YWx1ZSB3aWxsIGJlIHBhc3MgdG8gdGhlICdjcmVhdGVDb250cm9sKCknIGZ1bmN0aW9uXG4gKiBAcGFyYW0gYXJyYXlDb250cm9sXG4gKiBAcGFyYW0gY3JlYXRlQ29udHJvbFxuICogQHBhcmFtIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdEFycmF5Q29udHJvbHNGcm9tVmFsdWVzKGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQ29udHJvbDogKHZhbHVlPzogYW55KSA9PiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZXM6IGFueVtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzoge2VtaXRFdmVudD86IGJvb2xlYW59KTogYm9vbGVhbiB7XG4gIGlmIChhcnJheUNvbnRyb2wubGVuZ3RoID09PSAwICYmICghZGVmYXVsdFZhbHVlcyB8fCBkZWZhdWx0VmFsdWVzLmxlbmd0aCA9PT0gMCkpIHJldHVybiBmYWxzZTsgLy8gTm8gY2hhbmdlcyBuZWVkXG5cbiAgY29uc3QgZGlzYWJsZWQgPSBhcnJheUNvbnRyb2wuZGlzYWJsZWQ7XG5cbiAgd2hpbGUgKGFycmF5Q29udHJvbC5sZW5ndGggPiAwKSB7XG4gICAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxLCBvcHRpb25zKTtcbiAgfVxuXG4gIChkZWZhdWx0VmFsdWVzIHx8IFtdKS5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlQ29udHJvbCh2YWx1ZSk7XG5cbiAgICAvLyBBcHBseSBwYXJlbnQgZGlzYWJsZWQgc3RhdGUsIGJlZm9yZSB0byBwdXNoIGl0IGludG8gdGhlIGFycmF5XG4gICAgLy8gVGhpcyBpcyBuZWVkIHRvIGF2b2lkIHBhcmVudCBmb3JtIHRvIGJlIGVuYWJsZWRcbiAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KVxuICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pXG5cbiAgICBhcnJheUNvbnRyb2wucHVzaChjb250cm9sLCBvcHRpb25zKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRydWU7IC8vIEhhcyBzb21lIGNoYW5nZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc2l6ZUFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVDb250cm9sOiAoKSA9PiBBYnN0cmFjdENvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz86IHtlbWl0RXZlbnQ/OiBib29sZWFufSk6IGJvb2xlYW4ge1xuICBpZiAoYXJyYXlDb250cm9sLmxlbmd0aCA9PT0gbGVuZ3RoKSByZXR1cm4gZmFsc2U7IC8vIE5vIGNoYW5nZXMgbmVlZFxuXG4gIGNvbnN0IGRpc2FibGVkID0gYXJyYXlDb250cm9sLmRpc2FibGVkO1xuXG4gIC8vIFJlZHVjZSBzaXplXG4gIHdoaWxlIChhcnJheUNvbnRyb2wubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGFycmF5Q29udHJvbC5sZW5ndGggLSAxLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8vIEluY3JlYXNlIHNpemVcbiAgd2hpbGUgKGFycmF5Q29udHJvbC5sZW5ndGggPCBsZW5ndGgpIHtcbiAgICBjb25zdCBjb250cm9sID0gY3JlYXRlQ29udHJvbCgpO1xuXG4gICAgLy8gQXBwbHkgcGFyZW50IGRpc2FibGVkIHN0YXRlLCBiZWZvcmUgdG8gcHVzaCBpdCBpbnRvIHRoZSBhcnJheVxuICAgIC8vIFRoaXMgaXMgbmVlZCB0byBhdm9pZCBwYXJlbnQgZm9ybSB0byBiZSBlbmFibGVkLCBhZnRlciBjYWxsaW5nIHJlc2l6ZUFycmF5KClcbiAgICBpZiAoZGlzYWJsZWQgJiYgY29udHJvbC5lbmFibGVkKSBjb250cm9sLmRpc2FibGUoe2VtaXRFdmVudDogZmFsc2V9KVxuICAgIGVsc2UgaWYgKCFkaXNhYmxlZCAmJiBjb250cm9sLmRpc2FibGVkKSBjb250cm9sLmVuYWJsZSh7ZW1pdEV2ZW50OiBmYWxzZX0pO1xuXG4gICAgYXJyYXlDb250cm9sLnB1c2goY29udHJvbCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTsgLy8gSGFzIHNvbWUgY2hhbmdlc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVmFsdWVJbkFycmF5KGFycmF5Q29udHJvbDogVW50eXBlZEZvcm1BcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFbXB0eTogKHZhbHVlOiBhbnkpID0+IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgYXJyYXlDb250cm9sLnJlbW92ZUF0KGluZGV4KTtcbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJWYWx1ZUluQXJyYXkoYXJyYXlDb250cm9sOiBVbnR5cGVkRm9ybUFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRW1wdHk6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcblxuICBjb25zdCBjb250cm9sID0gYXJyYXlDb250cm9sLmF0KGluZGV4KTtcbiAgaWYgKGlzRW1wdHkoY29udHJvbC52YWx1ZSkpIHJldHVybiBmYWxzZTsgLy8gc2tpcCAobm90IG5lZWQgdG8gY2xlYXIpXG5cbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgY29weUVudGl0eTJGb3JtKHt9LCBjb250cm9sKTtcbiAgfVxuICBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUoW10pO1xuICB9XG4gIGVsc2Uge1xuICAgIGNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gIH1cbiAgYXJyYXlDb250cm9sLm1hcmtBc0RpcnR5KCk7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FsbEFzVG91Y2hlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIG9wdHM/OiB7b25seVNlbGY/OiBib29sZWFuOyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pIHtcbiAgaWYgKCFjb250cm9sKSByZXR1cm47XG4gIGlmIChjb250cm9sIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuICAgIG1hcmtGb3JtR3JvdXBBc1RvdWNoZWQoY29udHJvbCwgey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoe29ubHlTZWxmOiB0cnVlfSk7XG4gICAgKGNvbnRyb2wuY29udHJvbHMgfHwgW10pLmZvckVhY2goYyA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0Zvcm1Hcm91cEFzVG91Y2hlZChmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLm1hcmtBc1RvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiBtYXJrQ29udHJvbEFzVG91Y2hlZChjb250cm9sLCBvcHRzKSk7XG4gIGZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtDb250cm9sQXNUb3VjaGVkKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkge1xuICBpZiAoIWNvbnRyb2wpIHJldHVybjtcbiAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgbWFya0FsbEFzVG91Y2hlZChjb250cm9sLCB7IC4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcbiAgICAoY29udHJvbC5jb250cm9scyB8fCBbXSkuZm9yRWFjaChjID0+IG1hcmtDb250cm9sQXNUb3VjaGVkKGMsIHsgLi4ub3B0cywgb25seVNlbGY6IHRydWV9KSk7IC8vIHJlY3Vyc2l2ZSBjYWxsXG4gIH1cbiAgZWxzZSB7XG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHtvbmx5U2VsZjogdHJ1ZX0pO1xuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShmb3JtOiBVbnR5cGVkRm9ybUdyb3VwLCBvcHRzPzoge29ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSB7XG4gIGlmICghZm9ybSkgcmV0dXJuO1xuICBmb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkob3B0cyk7XG4gIE9iamVjdC5rZXlzKGZvcm0uY29udHJvbHMpXG4gICAgLm1hcChrZXkgPT4gZm9ybS5jb250cm9sc1trZXldKVxuICAgIC5maWx0ZXIoY29udHJvbCA9PiBjb250cm9sLmVuYWJsZWQpXG4gICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcbiAgICAgICAgdXBkYXRlVmFsdWVBbmRWYWxpZGl0eShjb250cm9sLCB7Li4ub3B0cywgb25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoey4uLm9wdHMsIG9ubHlTZWxmOiB0cnVlfSk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQXNVbnRvdWNoZWQoZm9ybTogVW50eXBlZEZvcm1Hcm91cCwgb3B0cz86IHtvbmx5U2VsZj86IGJvb2xlYW4gfSkge1xuICBpZiAoIWZvcm0pIHJldHVybjtcbiAgZm9ybS5tYXJrQXNVbnRvdWNoZWQob3B0cyk7XG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGZvcm0uY29udHJvbHMpXG4gICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtLmdldChrZXkpO1xuICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG4gICAgICAgIG1hcmtBc1VudG91Y2hlZChjb250cm9sLCB7b25seVNlbGY6IHRydWV9KTsgLy8gcmVjdXJzaXZlIGNhbGxcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjb250cm9sLm1hcmtBc1VudG91Y2hlZCh7b25seVNlbGY6IHRydWV9KTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogV2FpdCBlbmQgb2YgYXN5bmMgdmFsaWRhdGlvbiAobm90IHBlbmRpbmcpLiBUaGlzIG5lZWQgdG8gaW1wbGVtZW50IHtwZW5kaW5nOiBib29sZWFufVxuICogcmV0dXJuIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YWl0V2hpbGVQZW5kaW5nPFQgZXh0ZW5kcyB7IHBlbmRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5wZW5kaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuXG4vKipcbiAqIFdhaXQgZm9ybSBpcyBpZGxlIChub3QgbG9hZGluZykuIFRoaXMgbmVlZCB0byBpbXBsZW1lbnQge2xvYWRpbmc6IGJvb2xlYW59XG4gKiBAcGFyYW0gZm9ybVxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRJZGxlPFQgZXh0ZW5kcyB7IGxvYWRpbmc6IGJvb2xlYW4gfT4oZm9ybTogVCwgb3B0cz86IFdhaXRGb3JPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByZWRpY2F0ZTogUHJlZGljYXRlPHZvaWQ+ID0gKCkgPT4gZm9ybS5sb2FkaW5nICE9PSB0cnVlO1xuICByZXR1cm4gd2FpdEZvcihwcmVkaWNhdGUsIG9wdHMpO1xufVxuIl19