@sumaris-net/ngx-components 18.10.29 → 18.12.0

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