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

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