@formio/angular 7.5.0-rc.1-dev.1060.2e45ec8 → 7.5.0-rc.2

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 (416) hide show
  1. package/FormioBaseComponent.d.ts +93 -0
  2. package/FormioBaseComponent.d.ts.map +1 -0
  3. package/README.md +13 -204
  4. package/auth/auth.component.d.ts +6 -0
  5. package/auth/auth.component.d.ts.map +1 -0
  6. package/auth/auth.config.d.ts +63 -0
  7. package/auth/auth.config.d.ts.map +1 -0
  8. package/auth/auth.module.d.ts +17 -0
  9. package/auth/auth.module.d.ts.map +1 -0
  10. package/auth/auth.routes.d.ts +4 -0
  11. package/auth/auth.routes.d.ts.map +1 -0
  12. package/auth/auth.service.d.ts +41 -0
  13. package/auth/auth.service.d.ts.map +1 -0
  14. package/auth/formio-angular-auth.d.ts.map +1 -0
  15. package/{projects/angular-formio/auth/src/index.ts → auth/index.d.ts} +2 -1
  16. package/auth/index.d.ts.map +1 -0
  17. package/auth/login/login.component.d.ts +10 -0
  18. package/auth/login/login.component.d.ts.map +1 -0
  19. package/auth/register/register.component.d.ts +10 -0
  20. package/auth/register/register.component.d.ts.map +1 -0
  21. package/auth/resetpass/resetpass.component.d.ts +9 -0
  22. package/auth/resetpass/resetpass.component.d.ts.map +1 -0
  23. package/components/alerts/formio.alerts.component.d.ts +12 -0
  24. package/components/alerts/formio.alerts.component.d.ts.map +1 -0
  25. package/components/alerts/formio.alerts.d.ts +12 -0
  26. package/components/alerts/formio.alerts.d.ts.map +1 -0
  27. package/components/alerts/parse-html-content.pipe.d.ts +8 -0
  28. package/components/alerts/parse-html-content.pipe.d.ts.map +1 -0
  29. package/components/formbuilder/formbuilder.component.d.ts +37 -0
  30. package/components/formbuilder/formbuilder.component.d.ts.map +1 -0
  31. package/components/formio/formio.component.d.ts +15 -0
  32. package/components/formio/formio.component.d.ts.map +1 -0
  33. package/components/formioreport/formioreport.component.d.ts +21 -0
  34. package/components/formioreport/formioreport.component.d.ts.map +1 -0
  35. package/components/loader/formio.loader.component.d.ts +7 -0
  36. package/components/loader/formio.loader.component.d.ts.map +1 -0
  37. package/{projects/angular-formio/src/core.ts → core.d.ts} +2 -12
  38. package/core.d.ts.map +1 -0
  39. package/custom-tags.service.d.ts +8 -0
  40. package/custom-tags.service.d.ts.map +1 -0
  41. package/embed/app.service.d.ts +28 -0
  42. package/embed/app.service.d.ts.map +1 -0
  43. package/embed/builder.component.d.ts +14 -0
  44. package/embed/builder.component.d.ts.map +1 -0
  45. package/embed/embed.module.d.ts +10 -0
  46. package/embed/embed.module.d.ts.map +1 -0
  47. package/embed/formio-angular-embed.d.ts.map +1 -0
  48. package/embed/formio.component.d.ts +17 -0
  49. package/embed/formio.component.d.ts.map +1 -0
  50. package/{projects/angular-formio/embed/src/index.ts → embed/index.d.ts} +2 -1
  51. package/embed/index.d.ts.map +1 -0
  52. package/esm2022/FormioBaseComponent.mjs +580 -0
  53. package/esm2022/auth/auth.component.mjs +12 -0
  54. package/esm2022/auth/auth.config.mjs +21 -0
  55. package/esm2022/auth/auth.module.mjs +46 -0
  56. package/esm2022/auth/auth.routes.mjs +32 -0
  57. package/esm2022/auth/auth.service.mjs +199 -0
  58. package/esm2022/auth/formio-angular-auth.mjs +5 -0
  59. package/esm2022/auth/index.mjs +9 -0
  60. package/esm2022/auth/login/login.component.mjs +20 -0
  61. package/esm2022/auth/register/register.component.mjs +20 -0
  62. package/esm2022/auth/resetpass/resetpass.component.mjs +17 -0
  63. package/esm2022/components/alerts/formio.alerts.component.mjs +28 -0
  64. package/esm2022/components/alerts/formio.alerts.mjs +13 -0
  65. package/esm2022/components/alerts/parse-html-content.pipe.mjs +19 -0
  66. package/esm2022/components/formbuilder/formbuilder.component.mjs +202 -0
  67. package/esm2022/components/formio/formio.component.mjs +43 -0
  68. package/esm2022/components/formioreport/formioreport.component.mjs +89 -0
  69. package/esm2022/components/loader/formio.loader.component.mjs +15 -0
  70. package/esm2022/core.mjs +18 -0
  71. package/esm2022/custom-tags.service.mjs +14 -0
  72. package/esm2022/embed/app.service.mjs +58 -0
  73. package/esm2022/embed/builder.component.mjs +36 -0
  74. package/esm2022/embed/embed.module.mjs +35 -0
  75. package/esm2022/embed/formio-angular-embed.mjs +5 -0
  76. package/esm2022/embed/formio.component.mjs +50 -0
  77. package/esm2022/embed/index.mjs +7 -0
  78. package/esm2022/formio-angular.mjs +5 -0
  79. package/esm2022/formio-promise.service.mjs +36 -0
  80. package/esm2022/formio.common.mjs +11 -0
  81. package/esm2022/formio.config.mjs +29 -0
  82. package/esm2022/formio.module.mjs +59 -0
  83. package/esm2022/formio.service.mjs +62 -0
  84. package/esm2022/formio.utils.mjs +21 -0
  85. package/esm2022/grid/GridBodyComponent.mjs +89 -0
  86. package/esm2022/grid/GridFooterComponent.mjs +44 -0
  87. package/esm2022/grid/GridHeaderComponent.mjs +34 -0
  88. package/esm2022/grid/form/FormGridBody.component.mjs +63 -0
  89. package/esm2022/grid/form/FormGridFooter.component.mjs +26 -0
  90. package/esm2022/grid/form/FormGridHeader.component.mjs +27 -0
  91. package/esm2022/grid/form/index.mjs +9 -0
  92. package/esm2022/grid/form/time-since.pipe.mjs +37 -0
  93. package/esm2022/grid/formio-angular-grid.mjs +5 -0
  94. package/esm2022/grid/grid.component.mjs +257 -0
  95. package/esm2022/grid/grid.module.mjs +79 -0
  96. package/esm2022/grid/grid.service.mjs +18 -0
  97. package/esm2022/grid/index.mjs +13 -0
  98. package/esm2022/grid/submission/SubmissionGridBody.component.mjs +43 -0
  99. package/esm2022/grid/submission/SubmissionGridFooter.component.mjs +23 -0
  100. package/esm2022/grid/submission/SubmissionGridHeader.component.mjs +63 -0
  101. package/esm2022/grid/submission/index.mjs +9 -0
  102. package/esm2022/grid/types/grid-column.mjs +2 -0
  103. package/esm2022/grid/types/grid-footer-positions.mjs +7 -0
  104. package/esm2022/grid/types/grid-header.mjs +6 -0
  105. package/esm2022/index.mjs +3 -0
  106. package/esm2022/manager/create/create.component.mjs +18 -0
  107. package/esm2022/manager/delete/delete.component.mjs +42 -0
  108. package/esm2022/manager/edit/edit.component.mjs +125 -0
  109. package/esm2022/manager/form/form.component.mjs +80 -0
  110. package/esm2022/manager/form-manager.config.mjs +18 -0
  111. package/esm2022/manager/form-manager.module.mjs +83 -0
  112. package/esm2022/manager/form-manager.routes.mjs +74 -0
  113. package/esm2022/manager/form-manager.service.mjs +185 -0
  114. package/esm2022/manager/formio-angular-manager.mjs +5 -0
  115. package/esm2022/manager/index/index.component.mjs +108 -0
  116. package/esm2022/manager/index.mjs +16 -0
  117. package/esm2022/manager/submission/delete/delete.component.mjs +32 -0
  118. package/esm2022/manager/submission/edit/edit.component.mjs +25 -0
  119. package/esm2022/manager/submission/index/index.component.mjs +25 -0
  120. package/esm2022/manager/submission/submission/submission.component.mjs +29 -0
  121. package/esm2022/manager/submission/view/view.component.mjs +17 -0
  122. package/esm2022/manager/view/view.component.mjs +52 -0
  123. package/esm2022/resource/create/create.component.mjs +43 -0
  124. package/esm2022/resource/delete/delete.component.mjs +29 -0
  125. package/esm2022/resource/edit/edit.component.mjs +42 -0
  126. package/esm2022/resource/formio-angular-resource.mjs +5 -0
  127. package/esm2022/resource/index/index.component.mjs +69 -0
  128. package/esm2022/resource/index.mjs +12 -0
  129. package/esm2022/resource/resource.component.mjs +46 -0
  130. package/esm2022/resource/resource.config.mjs +13 -0
  131. package/esm2022/resource/resource.module.mjs +62 -0
  132. package/esm2022/resource/resource.routes.mjs +42 -0
  133. package/esm2022/resource/resource.service.mjs +229 -0
  134. package/esm2022/resource/resources.service.mjs +25 -0
  135. package/esm2022/resource/view/view.component.mjs +25 -0
  136. package/esm2022/types/alerts-position.mjs +8 -0
  137. package/esm2022/types/formio-metadata.mjs +2 -0
  138. package/esm2022/types/formio-submission.mjs +6 -0
  139. package/fesm2022/formio-angular-auth.mjs +345 -0
  140. package/fesm2022/formio-angular-auth.mjs.map +1 -0
  141. package/fesm2022/formio-angular-embed.mjs +176 -0
  142. package/fesm2022/formio-angular-embed.mjs.map +1 -0
  143. package/fesm2022/formio-angular-grid.mjs +772 -0
  144. package/fesm2022/formio-angular-grid.mjs.map +1 -0
  145. package/fesm2022/formio-angular-manager.mjs +822 -0
  146. package/fesm2022/formio-angular-manager.mjs.map +1 -0
  147. package/fesm2022/formio-angular-resource.mjs +571 -0
  148. package/fesm2022/formio-angular-resource.mjs.map +1 -0
  149. package/fesm2022/formio-angular.mjs +1187 -0
  150. package/fesm2022/formio-angular.mjs.map +1 -0
  151. package/formio-angular.d.ts.map +1 -0
  152. package/formio-promise.service.d.ts +16 -0
  153. package/formio-promise.service.d.ts.map +1 -0
  154. package/formio.common.d.ts +73 -0
  155. package/formio.common.d.ts.map +1 -0
  156. package/formio.config.d.ts +20 -0
  157. package/formio.config.d.ts.map +1 -0
  158. package/formio.module.d.ts +15 -0
  159. package/formio.module.d.ts.map +1 -0
  160. package/formio.service.d.ts +18 -0
  161. package/formio.service.d.ts.map +1 -0
  162. package/formio.utils.d.ts +2 -0
  163. package/formio.utils.d.ts.map +1 -0
  164. package/grid/GridBodyComponent.d.ts +35 -0
  165. package/grid/GridBodyComponent.d.ts.map +1 -0
  166. package/grid/GridFooterComponent.d.ts +20 -0
  167. package/grid/GridFooterComponent.d.ts.map +1 -0
  168. package/grid/GridHeaderComponent.d.ts +16 -0
  169. package/grid/GridHeaderComponent.d.ts.map +1 -0
  170. package/grid/form/FormGridBody.component.d.ts +19 -0
  171. package/grid/form/FormGridBody.component.d.ts.map +1 -0
  172. package/grid/form/FormGridFooter.component.d.ts +10 -0
  173. package/grid/form/FormGridFooter.component.d.ts.map +1 -0
  174. package/grid/form/FormGridHeader.component.d.ts +11 -0
  175. package/grid/form/FormGridHeader.component.d.ts.map +1 -0
  176. package/grid/form/index.d.ts +10 -0
  177. package/grid/form/index.d.ts.map +1 -0
  178. package/grid/form/time-since.pipe.d.ts +8 -0
  179. package/grid/form/time-since.pipe.d.ts.map +1 -0
  180. package/grid/formio-angular-grid.d.ts.map +1 -0
  181. package/grid/grid.component.d.ts +59 -0
  182. package/grid/grid.component.d.ts.map +1 -0
  183. package/grid/grid.module.d.ts +23 -0
  184. package/grid/grid.module.d.ts.map +1 -0
  185. package/grid/grid.service.d.ts +10 -0
  186. package/grid/grid.service.d.ts.map +1 -0
  187. package/{projects/angular-formio/grid/src/index.ts → grid/index.d.ts} +1 -0
  188. package/grid/index.d.ts.map +1 -0
  189. package/grid/submission/SubmissionGridBody.component.d.ts +19 -0
  190. package/grid/submission/SubmissionGridBody.component.d.ts.map +1 -0
  191. package/grid/submission/SubmissionGridFooter.component.d.ts +10 -0
  192. package/grid/submission/SubmissionGridFooter.component.d.ts.map +1 -0
  193. package/grid/submission/SubmissionGridHeader.component.d.ts +30 -0
  194. package/grid/submission/SubmissionGridHeader.component.d.ts.map +1 -0
  195. package/{projects/angular-formio/grid/src/submission/index.ts → grid/submission/index.d.ts} +6 -4
  196. package/grid/submission/index.d.ts.map +1 -0
  197. package/grid/types/grid-column.d.ts +7 -0
  198. package/grid/types/grid-column.d.ts.map +1 -0
  199. package/grid/types/grid-footer-positions.d.ts +6 -0
  200. package/grid/types/grid-footer-positions.d.ts.map +1 -0
  201. package/grid/types/grid-header.d.ts +13 -0
  202. package/grid/types/grid-header.d.ts.map +1 -0
  203. package/{projects/angular-formio/src/index.ts → index.d.ts} +1 -0
  204. package/index.d.ts.map +1 -0
  205. package/manager/create/create.component.d.ts +9 -0
  206. package/manager/create/create.component.d.ts.map +1 -0
  207. package/manager/delete/delete.component.d.ts +18 -0
  208. package/manager/delete/delete.component.d.ts.map +1 -0
  209. package/manager/edit/edit.component.d.ts +31 -0
  210. package/manager/edit/edit.component.d.ts.map +1 -0
  211. package/manager/form/form.component.d.ts +29 -0
  212. package/manager/form/form.component.d.ts.map +1 -0
  213. package/manager/form-manager.config.d.ts +30 -0
  214. package/manager/form-manager.config.d.ts.map +1 -0
  215. package/manager/form-manager.module.d.ts +28 -0
  216. package/manager/form-manager.module.d.ts.map +1 -0
  217. package/manager/form-manager.routes.d.ts +4 -0
  218. package/manager/form-manager.routes.d.ts.map +1 -0
  219. package/manager/form-manager.service.d.ts +37 -0
  220. package/manager/form-manager.service.d.ts.map +1 -0
  221. package/manager/formio-angular-manager.d.ts.map +1 -0
  222. package/manager/index/index.component.d.ts +28 -0
  223. package/manager/index/index.component.d.ts.map +1 -0
  224. package/{projects/angular-formio/manager/src/index.ts → manager/index.d.ts} +1 -0
  225. package/manager/index.d.ts.map +1 -0
  226. package/manager/submission/delete/delete.component.d.ts +16 -0
  227. package/manager/submission/delete/delete.component.d.ts.map +1 -0
  228. package/manager/submission/edit/edit.component.d.ts +13 -0
  229. package/manager/submission/edit/edit.component.d.ts.map +1 -0
  230. package/manager/submission/index/index.component.d.ts +13 -0
  231. package/manager/submission/index/index.component.d.ts.map +1 -0
  232. package/manager/submission/submission/submission.component.d.ts +15 -0
  233. package/manager/submission/submission/submission.component.d.ts.map +1 -0
  234. package/manager/submission/view/view.component.d.ts +9 -0
  235. package/manager/submission/view/view.component.d.ts.map +1 -0
  236. package/manager/view/view.component.d.ts +24 -0
  237. package/manager/view/view.component.d.ts.map +1 -0
  238. package/package.json +63 -54
  239. package/resource/create/create.component.d.ts +19 -0
  240. package/resource/create/create.component.d.ts.map +1 -0
  241. package/resource/delete/delete.component.d.ts +14 -0
  242. package/resource/delete/delete.component.d.ts.map +1 -0
  243. package/resource/edit/edit.component.d.ts +22 -0
  244. package/resource/edit/edit.component.d.ts.map +1 -0
  245. package/resource/formio-angular-resource.d.ts.map +1 -0
  246. package/resource/index/index.component.d.ts +23 -0
  247. package/resource/index/index.component.d.ts.map +1 -0
  248. package/{projects/angular-formio/resource/src/index.ts → resource/index.d.ts} +1 -0
  249. package/resource/index.d.ts.map +1 -0
  250. package/resource/resource.component.d.ts +24 -0
  251. package/resource/resource.component.d.ts.map +1 -0
  252. package/resource/resource.config.d.ts +17 -0
  253. package/resource/resource.config.d.ts.map +1 -0
  254. package/resource/resource.module.d.ts +20 -0
  255. package/resource/resource.module.d.ts.map +1 -0
  256. package/resource/resource.routes.d.ts +4 -0
  257. package/resource/resource.routes.d.ts.map +1 -0
  258. package/resource/resource.service.d.ts +52 -0
  259. package/resource/resource.service.d.ts.map +1 -0
  260. package/resource/resources.service.d.ts +16 -0
  261. package/resource/resources.service.d.ts.map +1 -0
  262. package/resource/view/view.component.d.ts +16 -0
  263. package/resource/view/view.component.d.ts.map +1 -0
  264. package/types/alerts-position.d.ts +7 -0
  265. package/types/alerts-position.d.ts.map +1 -0
  266. package/types/formio-metadata.d.ts +11 -0
  267. package/types/formio-metadata.d.ts.map +1 -0
  268. package/types/formio-submission.d.ts +19 -0
  269. package/types/formio-submission.d.ts.map +1 -0
  270. package/.dockerignore +0 -5
  271. package/.editorconfig +0 -13
  272. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  273. package/.github/ISSUE_TEMPLATE/custom-components-support-request.md +0 -15
  274. package/.github/ISSUE_TEMPLATE/question.md +0 -8
  275. package/.github/pull_request_template.md +0 -35
  276. package/.github/workflows/repo.yml +0 -145
  277. package/.travis.yml +0 -4
  278. package/.yo-rc.json +0 -7
  279. package/CHANGELOG.md +0 -1153
  280. package/Dockerfile +0 -20
  281. package/LICENSE +0 -21
  282. package/angular.json +0 -38
  283. package/bs-config.json +0 -11
  284. package/projects/angular-formio/README.md +0 -24
  285. package/projects/angular-formio/auth/ng-package.json +0 -5
  286. package/projects/angular-formio/auth/src/auth.component.html +0 -11
  287. package/projects/angular-formio/auth/src/auth.component.ts +0 -5
  288. package/projects/angular-formio/auth/src/auth.config.ts +0 -72
  289. package/projects/angular-formio/auth/src/auth.module.ts +0 -33
  290. package/projects/angular-formio/auth/src/auth.routes.ts +0 -34
  291. package/projects/angular-formio/auth/src/auth.service.ts +0 -221
  292. package/projects/angular-formio/auth/src/login/login.component.html +0 -1
  293. package/projects/angular-formio/auth/src/login/login.component.ts +0 -11
  294. package/projects/angular-formio/auth/src/public_api.ts +0 -5
  295. package/projects/angular-formio/auth/src/register/register.component.html +0 -1
  296. package/projects/angular-formio/auth/src/register/register.component.ts +0 -11
  297. package/projects/angular-formio/auth/src/resetpass/resetpass.component.html +0 -1
  298. package/projects/angular-formio/auth/src/resetpass/resetpass.component.ts +0 -8
  299. package/projects/angular-formio/embed/ng-package.json +0 -5
  300. package/projects/angular-formio/embed/src/app.service.ts +0 -59
  301. package/projects/angular-formio/embed/src/builder.component.ts +0 -19
  302. package/projects/angular-formio/embed/src/embed.module.ts +0 -23
  303. package/projects/angular-formio/embed/src/formio.component.ts +0 -27
  304. package/projects/angular-formio/grid/ng-package.json +0 -5
  305. package/projects/angular-formio/grid/src/GridBodyComponent.ts +0 -80
  306. package/projects/angular-formio/grid/src/GridFooterComponent.ts +0 -25
  307. package/projects/angular-formio/grid/src/GridHeaderComponent.ts +0 -25
  308. package/projects/angular-formio/grid/src/form/FormGridBody.component.html +0 -22
  309. package/projects/angular-formio/grid/src/form/FormGridBody.component.scss +0 -4
  310. package/projects/angular-formio/grid/src/form/FormGridBody.component.ts +0 -46
  311. package/projects/angular-formio/grid/src/form/FormGridFooter.component.html +0 -21
  312. package/projects/angular-formio/grid/src/form/FormGridFooter.component.ts +0 -23
  313. package/projects/angular-formio/grid/src/form/FormGridHeader.component.html +0 -18
  314. package/projects/angular-formio/grid/src/form/FormGridHeader.component.ts +0 -24
  315. package/projects/angular-formio/grid/src/form/index.ts +0 -8
  316. package/projects/angular-formio/grid/src/form/time-since.pipe.ts +0 -31
  317. package/projects/angular-formio/grid/src/grid.component.html +0 -18
  318. package/projects/angular-formio/grid/src/grid.component.scss +0 -9
  319. package/projects/angular-formio/grid/src/grid.component.ts +0 -242
  320. package/projects/angular-formio/grid/src/grid.footer.scss +0 -14
  321. package/projects/angular-formio/grid/src/grid.module.ts +0 -49
  322. package/projects/angular-formio/grid/src/grid.service.ts +0 -16
  323. package/projects/angular-formio/grid/src/public_api.ts +0 -5
  324. package/projects/angular-formio/grid/src/submission/SubmissionGridBody.component.html +0 -7
  325. package/projects/angular-formio/grid/src/submission/SubmissionGridBody.component.ts +0 -39
  326. package/projects/angular-formio/grid/src/submission/SubmissionGridFooter.component.html +0 -18
  327. package/projects/angular-formio/grid/src/submission/SubmissionGridFooter.component.ts +0 -20
  328. package/projects/angular-formio/grid/src/submission/SubmissionGridHeader.component.html +0 -11
  329. package/projects/angular-formio/grid/src/submission/SubmissionGridHeader.component.ts +0 -72
  330. package/projects/angular-formio/grid/src/types/grid-column.ts +0 -7
  331. package/projects/angular-formio/grid/src/types/grid-footer-positions.ts +0 -5
  332. package/projects/angular-formio/grid/src/types/grid-header.ts +0 -14
  333. package/projects/angular-formio/karma.conf.js +0 -32
  334. package/projects/angular-formio/manager/ng-package.json +0 -5
  335. package/projects/angular-formio/manager/src/create/create.component.ts +0 -11
  336. package/projects/angular-formio/manager/src/delete/delete.component.html +0 -6
  337. package/projects/angular-formio/manager/src/delete/delete.component.ts +0 -37
  338. package/projects/angular-formio/manager/src/edit/edit.component.html +0 -19
  339. package/projects/angular-formio/manager/src/edit/edit.component.ts +0 -110
  340. package/projects/angular-formio/manager/src/form/form.component.html +0 -32
  341. package/projects/angular-formio/manager/src/form/form.component.ts +0 -73
  342. package/projects/angular-formio/manager/src/form-manager.config.ts +0 -31
  343. package/projects/angular-formio/manager/src/form-manager.module.ts +0 -54
  344. package/projects/angular-formio/manager/src/form-manager.routes.ts +0 -75
  345. package/projects/angular-formio/manager/src/form-manager.service.ts +0 -190
  346. package/projects/angular-formio/manager/src/index/index.component.html +0 -14
  347. package/projects/angular-formio/manager/src/index/index.component.scss +0 -22
  348. package/projects/angular-formio/manager/src/index/index.component.ts +0 -100
  349. package/projects/angular-formio/manager/src/public_api.ts +0 -5
  350. package/projects/angular-formio/manager/src/submission/delete/delete.component.html +0 -6
  351. package/projects/angular-formio/manager/src/submission/delete/delete.component.ts +0 -26
  352. package/projects/angular-formio/manager/src/submission/edit/edit.component.html +0 -7
  353. package/projects/angular-formio/manager/src/submission/edit/edit.component.ts +0 -18
  354. package/projects/angular-formio/manager/src/submission/index/index.component.html +0 -1
  355. package/projects/angular-formio/manager/src/submission/index/index.component.ts +0 -18
  356. package/projects/angular-formio/manager/src/submission/submission/submission.component.html +0 -8
  357. package/projects/angular-formio/manager/src/submission/submission/submission.component.ts +0 -24
  358. package/projects/angular-formio/manager/src/submission/view/view.component.html +0 -7
  359. package/projects/angular-formio/manager/src/submission/view/view.component.ts +0 -9
  360. package/projects/angular-formio/manager/src/view/view.component.html +0 -11
  361. package/projects/angular-formio/manager/src/view/view.component.ts +0 -44
  362. package/projects/angular-formio/ng-package.json +0 -7
  363. package/projects/angular-formio/package.json +0 -37
  364. package/projects/angular-formio/resource/ng-package.json +0 -5
  365. package/projects/angular-formio/resource/src/create/create.component.html +0 -13
  366. package/projects/angular-formio/resource/src/create/create.component.scss +0 -3
  367. package/projects/angular-formio/resource/src/create/create.component.ts +0 -37
  368. package/projects/angular-formio/resource/src/delete/delete.component.html +0 -5
  369. package/projects/angular-formio/resource/src/delete/delete.component.ts +0 -24
  370. package/projects/angular-formio/resource/src/edit/edit.component.html +0 -7
  371. package/projects/angular-formio/resource/src/edit/edit.component.ts +0 -35
  372. package/projects/angular-formio/resource/src/index/index.component.html +0 -10
  373. package/projects/angular-formio/resource/src/index/index.component.ts +0 -64
  374. package/projects/angular-formio/resource/src/index.js +0 -24
  375. package/projects/angular-formio/resource/src/public_api.ts +0 -5
  376. package/projects/angular-formio/resource/src/resource.component.html +0 -7
  377. package/projects/angular-formio/resource/src/resource.component.ts +0 -48
  378. package/projects/angular-formio/resource/src/resource.config.ts +0 -17
  379. package/projects/angular-formio/resource/src/resource.module.ts +0 -43
  380. package/projects/angular-formio/resource/src/resource.routes.ts +0 -43
  381. package/projects/angular-formio/resource/src/resource.service.ts +0 -258
  382. package/projects/angular-formio/resource/src/resources.service.ts +0 -24
  383. package/projects/angular-formio/resource/src/view/view.component.html +0 -6
  384. package/projects/angular-formio/resource/src/view/view.component.ts +0 -19
  385. package/projects/angular-formio/src/FormioBaseComponent.ts +0 -554
  386. package/projects/angular-formio/src/components/alerts/formio.alerts.component.html +0 -3
  387. package/projects/angular-formio/src/components/alerts/formio.alerts.component.ts +0 -19
  388. package/projects/angular-formio/src/components/alerts/formio.alerts.ts +0 -21
  389. package/projects/angular-formio/src/components/alerts/parse-html-content.pipe.ts +0 -15
  390. package/projects/angular-formio/src/components/formbuilder/formbuilder.component.html +0 -1
  391. package/projects/angular-formio/src/components/formbuilder/formbuilder.component.ts +0 -213
  392. package/projects/angular-formio/src/components/formio/formio.component.html +0 -8
  393. package/projects/angular-formio/src/components/formio/formio.component.ts +0 -33
  394. package/projects/angular-formio/src/components/formioreport/formioreport.component.html +0 -8
  395. package/projects/angular-formio/src/components/formioreport/formioreport.component.ts +0 -95
  396. package/projects/angular-formio/src/components/loader/formio.loader.component.html +0 -3
  397. package/projects/angular-formio/src/components/loader/formio.loader.component.scss +0 -26
  398. package/projects/angular-formio/src/components/loader/formio.loader.component.ts +0 -10
  399. package/projects/angular-formio/src/custom-tags.service.ts +0 -9
  400. package/projects/angular-formio/src/formio-promise.service.ts +0 -36
  401. package/projects/angular-formio/src/formio.common.ts +0 -91
  402. package/projects/angular-formio/src/formio.config.ts +0 -26
  403. package/projects/angular-formio/src/formio.module.ts +0 -38
  404. package/projects/angular-formio/src/formio.service.ts +0 -57
  405. package/projects/angular-formio/src/formio.utils.ts +0 -23
  406. package/projects/angular-formio/src/public-api.ts +0 -5
  407. package/projects/angular-formio/src/test.ts +0 -28
  408. package/projects/angular-formio/src/types/alerts-position.ts +0 -6
  409. package/projects/angular-formio/src/types/formio-metadata.ts +0 -10
  410. package/projects/angular-formio/src/types/formio-submission.ts +0 -20
  411. package/projects/angular-formio/tsconfig.lib.json +0 -27
  412. package/projects/angular-formio/tsconfig.lib.prod.json +0 -8
  413. package/projects/angular-formio/tsconfig.spec.json +0 -17
  414. package/projects/angular-formio/tslint.json +0 -17
  415. package/tsconfig.json +0 -39
  416. package/tslint.json +0 -140
@@ -0,0 +1,44 @@
1
+ import { GridFooterPositions } from './types/grid-footer-positions';
2
+ import { Input, Output, ViewChild, TemplateRef, EventEmitter, Component } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class GridFooterComponent {
5
+ header;
6
+ body;
7
+ createText;
8
+ size;
9
+ actionAllowed;
10
+ pageChanged;
11
+ createItem;
12
+ template;
13
+ footerPositions = GridFooterPositions;
14
+ constructor() {
15
+ this.pageChanged = new EventEmitter();
16
+ this.createItem = new EventEmitter();
17
+ }
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: GridFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: GridFooterComponent, selector: "ng-component", inputs: { header: "header", body: "body", createText: "createText", size: "size", actionAllowed: "actionAllowed" }, outputs: { pageChanged: "pageChanged", createItem: "createItem" }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: '', isInline: true });
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: GridFooterComponent, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ template: ''
25
+ }]
26
+ }], ctorParameters: () => [], propDecorators: { header: [{
27
+ type: Input
28
+ }], body: [{
29
+ type: Input
30
+ }], createText: [{
31
+ type: Input
32
+ }], size: [{
33
+ type: Input
34
+ }], actionAllowed: [{
35
+ type: Input
36
+ }], pageChanged: [{
37
+ type: Output
38
+ }], createItem: [{
39
+ type: Output
40
+ }], template: [{
41
+ type: ViewChild,
42
+ args: [TemplateRef, { static: true }]
43
+ }] } });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JpZEZvb3RlckNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL0dyaWRGb290ZXJDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8vRixNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLE1BQU0sQ0FBc0I7SUFDNUIsSUFBSSxDQUFvQjtJQUN4QixVQUFVLENBQVM7SUFDbkIsSUFBSSxDQUFTO0lBQ2IsYUFBYSxDQUFNO0lBQ2xCLFdBQVcsQ0FBb0I7SUFDL0IsVUFBVSxDQUFvQjtJQUNBLFFBQVEsQ0FBbUI7SUFFNUQsZUFBZSxHQUFHLG1CQUFtQixDQUFDO0lBRTdDO1FBQ0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO3VHQWZVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHFSQVFuQixXQUFXLDhEQVZaLEVBQUU7OzJGQUVELG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjt3REFFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNpQyxRQUFRO3NCQUEvQyxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmlkRm9vdGVyUG9zaXRpb25zIH0gZnJvbSAnLi90eXBlcy9ncmlkLWZvb3Rlci1wb3NpdGlvbnMnO1xuaW1wb3J0IHsgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgRXZlbnRFbWl0dGVyLCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL0dyaWRIZWFkZXJDb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZEJvZHlDb21wb25lbnQgfSBmcm9tICcuL0dyaWRCb2R5Q29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBHcmlkRm9vdGVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgaGVhZGVyOiBHcmlkSGVhZGVyQ29tcG9uZW50O1xuICBASW5wdXQoKSBib2R5OiBHcmlkQm9keUNvbXBvbmVudDtcbiAgQElucHV0KCkgY3JlYXRlVGV4dDogU3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBudW1iZXI7XG4gIEBJbnB1dCgpIGFjdGlvbkFsbG93ZWQ6IGFueTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIGNyZWF0ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAVmlld0NoaWxkKFRlbXBsYXRlUmVmLCB7c3RhdGljOiB0cnVlfSkgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHVibGljIGZvb3RlclBvc2l0aW9ucyA9IEdyaWRGb290ZXJQb3NpdGlvbnM7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5wYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLmNyZWF0ZUl0ZW0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Output, EventEmitter, ViewChild, TemplateRef, Input, Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class GridHeaderComponent {
4
+ actionAllowed;
5
+ sort;
6
+ template;
7
+ headers;
8
+ constructor() {
9
+ this.headers = [];
10
+ this.sort = new EventEmitter();
11
+ }
12
+ get numHeaders() {
13
+ return this.headers.length;
14
+ }
15
+ load(formio, query, columns) {
16
+ return Promise.resolve([]);
17
+ }
18
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: GridHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: GridHeaderComponent, selector: "ng-component", inputs: { actionAllowed: "actionAllowed" }, outputs: { sort: "sort" }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }], ngImport: i0, template: '', isInline: true });
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: GridHeaderComponent, decorators: [{
22
+ type: Component,
23
+ args: [{
24
+ template: ''
25
+ }]
26
+ }], ctorParameters: () => [], propDecorators: { actionAllowed: [{
27
+ type: Input
28
+ }], sort: [{
29
+ type: Output
30
+ }], template: [{
31
+ type: ViewChild,
32
+ args: [TemplateRef, { static: true }]
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JpZEhlYWRlckNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL0dyaWRIZWFkZXJDb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU8vRixNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLGFBQWEsQ0FBTTtJQUNsQixJQUFJLENBQTJCO0lBQ0QsUUFBUSxDQUFtQjtJQUM1RCxPQUFPLENBQW9CO0lBQ2xDO1FBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBNEIsRUFBRSxLQUFXLEVBQUUsT0FBb0I7UUFDbEUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7dUdBaEJVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHFLQUduQixXQUFXLDhEQUxaLEVBQUU7OzJGQUVELG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjt3REFFVSxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLElBQUk7c0JBQWIsTUFBTTtnQkFDaUMsUUFBUTtzQkFBL0MsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIElucHV0LCBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybWlvUHJvbWlzZVNlcnZpY2V9IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge0dyaWRIZWFkZXJ9IGZyb20gJy4vdHlwZXMvZ3JpZC1oZWFkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRIZWFkZXJDb21wb25lbnQge1xuICBASW5wdXQoKSBhY3Rpb25BbGxvd2VkOiBhbnk7XG4gIEBPdXRwdXQoKSBzb3J0OiBFdmVudEVtaXR0ZXI8R3JpZEhlYWRlcj47XG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYsIHtzdGF0aWM6IHRydWV9KSB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHVibGljIGhlYWRlcnM6IEFycmF5PEdyaWRIZWFkZXI+O1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBbXTtcbiAgICB0aGlzLnNvcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIH1cblxuICBnZXQgbnVtSGVhZGVycygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJzLmxlbmd0aDtcbiAgfVxuXG4gIGxvYWQoZm9ybWlvOiBGb3JtaW9Qcm9taXNlU2VydmljZSwgcXVlcnk/OiBhbnksIGNvbHVtbnM/OiBBcnJheTxhbnk+KTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,63 @@
1
+ import { Component, ViewChildren } from '@angular/core';
2
+ import { GridBodyComponent } from '../GridBodyComponent';
3
+ import { Tooltip } from 'bootstrap';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/router";
7
+ import * as i3 from "./time-since.pipe";
8
+ export class FormGridBodyComponent extends GridBodyComponent {
9
+ createBtns;
10
+ viewBtns;
11
+ editBtns;
12
+ permissionsBtns;
13
+ deleteBtns;
14
+ tooltips = [];
15
+ load(formio, query) {
16
+ query = query || {};
17
+ return formio.loadForms({ params: query })
18
+ .then((forms) => this.setRows(query, forms))
19
+ .then(() => this.attachTooltips());
20
+ }
21
+ attachTooltips() {
22
+ this.createBtns.forEach((el) => {
23
+ this.tooltips.push(new Tooltip(el.nativeElement, { title: 'Create' }));
24
+ });
25
+ this.editBtns.forEach((el) => {
26
+ this.tooltips.push(new Tooltip(el.nativeElement, { title: 'Edit' }));
27
+ });
28
+ this.viewBtns.forEach((el) => {
29
+ this.tooltips.push(new Tooltip(el.nativeElement, { title: 'View' }));
30
+ });
31
+ this.permissionsBtns.forEach((el) => {
32
+ this.tooltips.push(new Tooltip(el.nativeElement, { title: 'Permissions' }));
33
+ });
34
+ this.deleteBtns.forEach((el) => {
35
+ this.tooltips.push(new Tooltip(el.nativeElement, { title: 'Delete' }));
36
+ });
37
+ }
38
+ ngOnDestroy() {
39
+ this.tooltips.forEach((tootip) => tootip.dispose());
40
+ }
41
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormGridBodyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
42
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: FormGridBodyComponent, selector: "form-grid-body", viewQueries: [{ propertyName: "createBtns", predicate: ["create"], descendants: true }, { propertyName: "viewBtns", predicate: ["view"], descendants: true }, { propertyName: "editBtns", predicate: ["edit"], descendants: true }, { propertyName: "permissionsBtns", predicate: ["permissions"], descendants: true }, { propertyName: "deleteBtns", predicate: ["delete"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <tbody *ngIf=\"rows\">\n <tr *ngFor=\"let form of rows\">\n <td>\n <div class=\"row\">\n <div class=\"col-sm-9\">\n <a routerLink=\"{{form._id}}/view\" (click)=\"onRowSelect($event, form)\" class=\"text-decoration-none\"><h5>{{ form.title }}</h5></a>\n <div class=\"form-updated small text-muted\">\n Updated {{ form.modified | timeSince }} ago\n </div>\n </div>\n <div class=\"col-sm-3 d-flex justify-content-end align-items-center\">\n <button #create *ngIf=\"actionAllowed('formView')\" class=\"btn btn-outline-secondary btn-sm form-btn form-btn-use\" (click)=\"onRowAction($event, form, 'view')\"><span class=\"fa fa-pencil bi bi-pencil\"></span></button>&nbsp;\n <button #view *ngIf=\"actionAllowed('formSubmission')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'submission')\"><span class=\"fa fa-list-alt bi bi-table\"></span></button>&nbsp;\n <button #edit *ngIf=\"actionAllowed('formEdit')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'edit')\"><span class=\"fa fa-edit bi bi-pencil-square\"></span></button>&nbsp;\n <button #delete *ngIf=\"actionAllowed('formDelete')\" class=\"btn btn-secondary btn-sm form-btn form-btn-delete\" (click)=\"onRowAction($event, form, 'delete')\" title=\"Delete form\"><span class=\"fa fa-trash bi bi-trash\"></span></button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n</ng-template>\n", styles: [".form-btn{font-size:.75rem;margin:2px 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.TimeSince, name: "timeSince" }] });
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormGridBodyComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'form-grid-body', template: "<ng-template>\n <tbody *ngIf=\"rows\">\n <tr *ngFor=\"let form of rows\">\n <td>\n <div class=\"row\">\n <div class=\"col-sm-9\">\n <a routerLink=\"{{form._id}}/view\" (click)=\"onRowSelect($event, form)\" class=\"text-decoration-none\"><h5>{{ form.title }}</h5></a>\n <div class=\"form-updated small text-muted\">\n Updated {{ form.modified | timeSince }} ago\n </div>\n </div>\n <div class=\"col-sm-3 d-flex justify-content-end align-items-center\">\n <button #create *ngIf=\"actionAllowed('formView')\" class=\"btn btn-outline-secondary btn-sm form-btn form-btn-use\" (click)=\"onRowAction($event, form, 'view')\"><span class=\"fa fa-pencil bi bi-pencil\"></span></button>&nbsp;\n <button #view *ngIf=\"actionAllowed('formSubmission')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'submission')\"><span class=\"fa fa-list-alt bi bi-table\"></span></button>&nbsp;\n <button #edit *ngIf=\"actionAllowed('formEdit')\" class=\"btn btn-outline-secondary btn-sm form-btn\" (click)=\"onRowAction($event, form, 'edit')\"><span class=\"fa fa-edit bi bi-pencil-square\"></span></button>&nbsp;\n <button #delete *ngIf=\"actionAllowed('formDelete')\" class=\"btn btn-secondary btn-sm form-btn form-btn-delete\" (click)=\"onRowAction($event, form, 'delete')\" title=\"Delete form\"><span class=\"fa fa-trash bi bi-trash\"></span></button>\n </div>\n </div>\n </td>\n </tr>\n </tbody>\n</ng-template>\n", styles: [".form-btn{font-size:.75rem;margin:2px 0}\n"] }]
47
+ }], propDecorators: { createBtns: [{
48
+ type: ViewChildren,
49
+ args: ['create']
50
+ }], viewBtns: [{
51
+ type: ViewChildren,
52
+ args: ['view']
53
+ }], editBtns: [{
54
+ type: ViewChildren,
55
+ args: ['edit']
56
+ }], permissionsBtns: [{
57
+ type: ViewChildren,
58
+ args: ['permissions']
59
+ }], deleteBtns: [{
60
+ type: ViewChildren,
61
+ args: ['delete']
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUdyaWRCb2R5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2Zvcm0vRm9ybUdyaWRCb2R5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2Zvcm0vRm9ybUdyaWRCb2R5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQW9DLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQU1wQyxNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQWlCO0lBQ2xDLFVBQVUsQ0FBZTtJQUMzQixRQUFRLENBQWU7SUFDdkIsUUFBUSxDQUFlO0lBQ2hCLGVBQWUsQ0FBZTtJQUNuQyxVQUFVLENBQWU7SUFDMUMsUUFBUSxHQUFtQixFQUFFLENBQUM7SUFFckMsSUFBSSxDQUFDLE1BQTRCLEVBQUUsS0FBVztRQUM1QyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNwQixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDdkMsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNoRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQWMsRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFjLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBYyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQWMsRUFBRSxFQUFFO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFjLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7dUdBbkNVLHFCQUFxQjsyRkFBckIscUJBQXFCLGdkQ1RsQywyakRBc0JBOzsyRkRiYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsZ0JBQWdCOzhCQUtGLFVBQVU7c0JBQWpDLFlBQVk7dUJBQUMsUUFBUTtnQkFDQSxRQUFRO3NCQUE3QixZQUFZO3VCQUFDLE1BQU07Z0JBQ0UsUUFBUTtzQkFBN0IsWUFBWTt1QkFBQyxNQUFNO2dCQUNTLGVBQWU7c0JBQTNDLFlBQVk7dUJBQUMsYUFBYTtnQkFDSCxVQUFVO3NCQUFqQyxZQUFZO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vR3JpZEJvZHlDb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybWlvUHJvbWlzZVNlcnZpY2UgfSBmcm9tICdAZm9ybWlvL2FuZ3VsYXInO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ2Jvb3RzdHJhcCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdyaWQtYm9keScsXG4gIHN0eWxlVXJsczogWycuL0Zvcm1HcmlkQm9keS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vRm9ybUdyaWRCb2R5LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtR3JpZEJvZHlDb21wb25lbnQgZXh0ZW5kcyBHcmlkQm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGRyZW4oJ2NyZWF0ZScpIGNyZWF0ZUJ0bnM6IEVsZW1lbnRSZWZbXTtcbiAgQFZpZXdDaGlsZHJlbigndmlldycpIHZpZXdCdG5zOiBFbGVtZW50UmVmW107XG4gIEBWaWV3Q2hpbGRyZW4oJ2VkaXQnKSBlZGl0QnRuczogRWxlbWVudFJlZltdO1xuICBAVmlld0NoaWxkcmVuKCdwZXJtaXNzaW9ucycpIHBlcm1pc3Npb25zQnRuczogRWxlbWVudFJlZltdO1xuICBAVmlld0NoaWxkcmVuKCdkZWxldGUnKSBkZWxldGVCdG5zOiBFbGVtZW50UmVmW107XG4gIHB1YmxpYyB0b29sdGlwczogQXJyYXk8VG9vbHRpcD4gPSBbXTtcblxuICBsb2FkKGZvcm1pbzogRm9ybWlvUHJvbWlzZVNlcnZpY2UsIHF1ZXJ5PzogYW55KSB7XG4gICAgcXVlcnkgPSBxdWVyeSB8fCB7fTtcbiAgICByZXR1cm4gZm9ybWlvLmxvYWRGb3Jtcyh7IHBhcmFtczogcXVlcnkgfSlcbiAgICAgIC50aGVuKChmb3JtczogYW55KSA9PiB0aGlzLnNldFJvd3MocXVlcnksIGZvcm1zKSlcbiAgICAgIC50aGVuKCgpID0+IHRoaXMuYXR0YWNoVG9vbHRpcHMoKSk7XG4gIH1cblxuICBhdHRhY2hUb29sdGlwcygpIHtcbiAgICB0aGlzLmNyZWF0ZUJ0bnMuZm9yRWFjaCgoZWw6IEVsZW1lbnRSZWYpID0+IHtcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7dGl0bGU6ICdDcmVhdGUnfSkpO1xuICAgIH0pO1xuICAgIHRoaXMuZWRpdEJ0bnMuZm9yRWFjaCgoZWw6IEVsZW1lbnRSZWYpID0+IHtcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7dGl0bGU6ICdFZGl0J30pKTtcbiAgICB9KTtcbiAgICB0aGlzLnZpZXdCdG5zLmZvckVhY2goKGVsOiBFbGVtZW50UmVmKSA9PiB7XG4gICAgICB0aGlzLnRvb2x0aXBzLnB1c2gobmV3IFRvb2x0aXAoZWwubmF0aXZlRWxlbWVudCwge3RpdGxlOiAnVmlldyd9KSk7XG4gICAgfSlcbiAgICB0aGlzLnBlcm1pc3Npb25zQnRucy5mb3JFYWNoKChlbDogRWxlbWVudFJlZikgPT4ge1xuICAgICAgdGhpcy50b29sdGlwcy5wdXNoKG5ldyBUb29sdGlwKGVsLm5hdGl2ZUVsZW1lbnQsIHt0aXRsZTogJ1Blcm1pc3Npb25zJ30pKTtcbiAgICB9KTtcbiAgICB0aGlzLmRlbGV0ZUJ0bnMuZm9yRWFjaCgoZWw6IEVsZW1lbnRSZWYpID0+IHtcbiAgICAgIHRoaXMudG9vbHRpcHMucHVzaChuZXcgVG9vbHRpcChlbC5uYXRpdmVFbGVtZW50LCB7dGl0bGU6ICdEZWxldGUnfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy50b29sdGlwcy5mb3JFYWNoKCh0b290aXA6IFRvb2x0aXApID0+IHRvb3RpcC5kaXNwb3NlKCkpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGU+XG4gIDx0Ym9keSAqbmdJZj1cInJvd3NcIj5cbiAgICA8dHIgKm5nRm9yPVwibGV0IGZvcm0gb2Ygcm93c1wiPlxuICAgICAgPHRkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS05XCI+XG4gICAgICAgICAgICA8YSByb3V0ZXJMaW5rPVwie3tmb3JtLl9pZH19L3ZpZXdcIiAoY2xpY2spPVwib25Sb3dTZWxlY3QoJGV2ZW50LCBmb3JtKVwiIGNsYXNzPVwidGV4dC1kZWNvcmF0aW9uLW5vbmVcIj48aDU+e3sgZm9ybS50aXRsZSB9fTwvaDU+PC9hPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tdXBkYXRlZCBzbWFsbCB0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgIFVwZGF0ZWQge3sgZm9ybS5tb2RpZmllZCB8IHRpbWVTaW5jZSB9fSBhZ29cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gI2NyZWF0ZSAqbmdJZj1cImFjdGlvbkFsbG93ZWQoJ2Zvcm1WaWV3JylcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLXNtIGZvcm0tYnRuIGZvcm0tYnRuLXVzZVwiIChjbGljayk9XCJvblJvd0FjdGlvbigkZXZlbnQsIGZvcm0sICd2aWV3JylcIj48c3BhbiBjbGFzcz1cImZhIGZhLXBlbmNpbCBiaSBiaS1wZW5jaWxcIj48L3NwYW4+PC9idXR0b24+Jm5ic3A7XG4gICAgICAgICAgICA8YnV0dG9uICN2aWV3ICpuZ0lmPVwiYWN0aW9uQWxsb3dlZCgnZm9ybVN1Ym1pc3Npb24nKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeSBidG4tc20gZm9ybS1idG5cIiAoY2xpY2spPVwib25Sb3dBY3Rpb24oJGV2ZW50LCBmb3JtLCAnc3VibWlzc2lvbicpXCI+PHNwYW4gY2xhc3M9XCJmYSBmYS1saXN0LWFsdCBiaSBiaS10YWJsZVwiPjwvc3Bhbj48L2J1dHRvbj4mbmJzcDtcbiAgICAgICAgICAgIDxidXR0b24gI2VkaXQgKm5nSWY9XCJhY3Rpb25BbGxvd2VkKCdmb3JtRWRpdCcpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1zbSBmb3JtLWJ0blwiIChjbGljayk9XCJvblJvd0FjdGlvbigkZXZlbnQsIGZvcm0sICdlZGl0JylcIj48c3BhbiBjbGFzcz1cImZhIGZhLWVkaXQgYmkgYmktcGVuY2lsLXNxdWFyZVwiPjwvc3Bhbj48L2J1dHRvbj4mbmJzcDtcbiAgICAgICAgICAgIDxidXR0b24gI2RlbGV0ZSAqbmdJZj1cImFjdGlvbkFsbG93ZWQoJ2Zvcm1EZWxldGUnKVwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIGZvcm0tYnRuIGZvcm0tYnRuLWRlbGV0ZVwiIChjbGljayk9XCJvblJvd0FjdGlvbigkZXZlbnQsIGZvcm0sICdkZWxldGUnKVwiIHRpdGxlPVwiRGVsZXRlIGZvcm1cIj48c3BhbiBjbGFzcz1cImZhIGZhLXRyYXNoIGJpIGJpLXRyYXNoXCI+PC9zcGFuPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGQ+XG4gICAgPC90cj5cbiAgPC90Ym9keT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { Component, ViewEncapsulation } from '@angular/core';
2
+ import { GridFooterComponent } from '../GridFooterComponent';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "ngx-bootstrap/pagination";
7
+ export class FormGridFooterComponent extends GridFooterComponent {
8
+ constructor() {
9
+ super();
10
+ }
11
+ ngOnInit() {
12
+ if (!this.createText) {
13
+ this.createText = 'Create Form';
14
+ }
15
+ if (!this.size) {
16
+ this.size = 7;
17
+ }
18
+ }
19
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormGridFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: FormGridFooterComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-template #footer let-position=\"position\" let-label=\"label\">\n <thead class=\"formio-grid-footer\" *ngIf=\"position === footerPositions.top\">\n <ng-container [ngTemplateOutlet]=\"defaultFooterTemplate\" [ngTemplateOutletContext]=\"{ label: label }\"></ng-container>\n </thead>\n <tfoot class=\"formio-grid-footer\" *ngIf=\"position === footerPositions.bottom\">\n <ng-container [ngTemplateOutlet]=\"defaultFooterTemplate\" [ngTemplateOutletContext]=\"{ label: label }\"></ng-container>\n </tfoot>\n</ng-template>\n\n<ng-template let-label=\"label\" #defaultFooterTemplate>\n <tr>\n <td *ngIf=\"header\" [colSpan]=\"header.numHeaders\">\n <button *ngIf=\"actionAllowed('formCreate')\" class=\"btn btn-primary form-btn-use float-start\" (click)=\"createItem.emit('form')\"><em class=\"fa fa-plus bi bi-plus-lg\"></em> {{ createText }}</button>\n <span class=\"float-end item-counter\"><span class=\"page-num\">{{ body.firstItem }} - {{ body.lastItem }}</span> / {{ body.total }} total</span>\n <span [attr.aria-label]=\"label\" role=\"navigation\">\n <pagination [totalItems]=\"body.total\" [itemsPerPage]=\"body.limit\" [(ngModel)]=\"body.skip\" (pageChanged)=\"pageChanged.emit($event)\" [maxSize]=\"size\" class=\"justify-content-center pagination-sm\">\n </pagination>\n </span>\n </td>\n </tr>\n</ng-template>\n", styles: ["tfoot.formio-grid-footer td{padding:.3rem}tfoot.formio-grid-footer .page-num{font-size:1.4em}tfoot.formio-grid-footer ul.pagination{margin-top:5px;margin-bottom:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PaginationComponent, selector: "pagination", inputs: ["align", "maxSize", "boundaryLinks", "directionLinks", "firstText", "previousText", "nextText", "lastText", "rotate", "pageBtnClass", "disabled", "customPageTemplate", "customNextTemplate", "customPreviousTemplate", "customFirstTemplate", "customLastTemplate", "itemsPerPage", "totalItems"], outputs: ["numPages", "pageChanged"] }], encapsulation: i0.ViewEncapsulation.None });
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormGridFooterComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ encapsulation: ViewEncapsulation.None, template: "<ng-template #footer let-position=\"position\" let-label=\"label\">\n <thead class=\"formio-grid-footer\" *ngIf=\"position === footerPositions.top\">\n <ng-container [ngTemplateOutlet]=\"defaultFooterTemplate\" [ngTemplateOutletContext]=\"{ label: label }\"></ng-container>\n </thead>\n <tfoot class=\"formio-grid-footer\" *ngIf=\"position === footerPositions.bottom\">\n <ng-container [ngTemplateOutlet]=\"defaultFooterTemplate\" [ngTemplateOutletContext]=\"{ label: label }\"></ng-container>\n </tfoot>\n</ng-template>\n\n<ng-template let-label=\"label\" #defaultFooterTemplate>\n <tr>\n <td *ngIf=\"header\" [colSpan]=\"header.numHeaders\">\n <button *ngIf=\"actionAllowed('formCreate')\" class=\"btn btn-primary form-btn-use float-start\" (click)=\"createItem.emit('form')\"><em class=\"fa fa-plus bi bi-plus-lg\"></em> {{ createText }}</button>\n <span class=\"float-end item-counter\"><span class=\"page-num\">{{ body.firstItem }} - {{ body.lastItem }}</span> / {{ body.total }} total</span>\n <span [attr.aria-label]=\"label\" role=\"navigation\">\n <pagination [totalItems]=\"body.total\" [itemsPerPage]=\"body.limit\" [(ngModel)]=\"body.skip\" (pageChanged)=\"pageChanged.emit($event)\" [maxSize]=\"size\" class=\"justify-content-center pagination-sm\">\n </pagination>\n </span>\n </td>\n </tr>\n</ng-template>\n", styles: ["tfoot.formio-grid-footer td{padding:.3rem}tfoot.formio-grid-footer .page-num{font-size:1.4em}tfoot.formio-grid-footer ul.pagination{margin-top:5px;margin-bottom:0}\n"] }]
25
+ }], ctorParameters: () => [] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUdyaWRGb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vZ3JpZC9zcmMvZm9ybS9Gb3JtR3JpZEZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZvcm1pby9ncmlkL3NyYy9mb3JtL0Zvcm1HcmlkRm9vdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBTzdELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFFOUQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO3VHQWJVLHVCQUF1QjsyRkFBdkIsdUJBQXVCLDJFQ1JwQyxnMkNBcUJBOzsyRkRiYSx1QkFBdUI7a0JBTG5DLFNBQVM7b0NBR08saUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHcmlkRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vR3JpZEZvb3RlckNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vRm9ybUdyaWRGb290ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vZ3JpZC5mb290ZXIuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1HcmlkRm9vdGVyQ29tcG9uZW50IGV4dGVuZHMgR3JpZEZvb3RlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5jcmVhdGVUZXh0KSB7XG4gICAgICB0aGlzLmNyZWF0ZVRleHQgPSAnQ3JlYXRlIEZvcm0nO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2l6ZSkge1xuICAgICAgdGhpcy5zaXplID0gNztcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZm9vdGVyIGxldC1wb3NpdGlvbj1cInBvc2l0aW9uXCIgbGV0LWxhYmVsPVwibGFiZWxcIj5cbiAgPHRoZWFkIGNsYXNzPVwiZm9ybWlvLWdyaWQtZm9vdGVyXCIgKm5nSWY9XCJwb3NpdGlvbiA9PT0gZm9vdGVyUG9zaXRpb25zLnRvcFwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdEZvb3RlclRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGFiZWw6IGxhYmVsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC90aGVhZD5cbiAgPHRmb290IGNsYXNzPVwiZm9ybWlvLWdyaWQtZm9vdGVyXCIgKm5nSWY9XCJwb3NpdGlvbiA9PT0gZm9vdGVyUG9zaXRpb25zLmJvdHRvbVwiPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdEZvb3RlclRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbGFiZWw6IGxhYmVsIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgPC90Zm9vdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtbGFiZWw9XCJsYWJlbFwiICNkZWZhdWx0Rm9vdGVyVGVtcGxhdGU+XG4gIDx0cj5cbiAgICA8dGQgKm5nSWY9XCJoZWFkZXJcIiBbY29sU3Bhbl09XCJoZWFkZXIubnVtSGVhZGVyc1wiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGlvbkFsbG93ZWQoJ2Zvcm1DcmVhdGUnKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGZvcm0tYnRuLXVzZSBmbG9hdC1zdGFydFwiIChjbGljayk9XCJjcmVhdGVJdGVtLmVtaXQoJ2Zvcm0nKVwiPjxlbSBjbGFzcz1cImZhIGZhLXBsdXMgYmkgYmktcGx1cy1sZ1wiPjwvZW0+IHt7IGNyZWF0ZVRleHQgfX08L2J1dHRvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZmxvYXQtZW5kIGl0ZW0tY291bnRlclwiPjxzcGFuIGNsYXNzPVwicGFnZS1udW1cIj57eyBib2R5LmZpcnN0SXRlbSB9fSAtIHt7IGJvZHkubGFzdEl0ZW0gfX08L3NwYW4+IC8ge3sgYm9keS50b3RhbCB9fSB0b3RhbDwvc3Bhbj5cbiAgICAgIDxzcGFuIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxcIiByb2xlPVwibmF2aWdhdGlvblwiPlxuICAgICAgICA8cGFnaW5hdGlvbiBbdG90YWxJdGVtc109XCJib2R5LnRvdGFsXCIgW2l0ZW1zUGVyUGFnZV09XCJib2R5LmxpbWl0XCIgWyhuZ01vZGVsKV09XCJib2R5LnNraXBcIiAocGFnZUNoYW5nZWQpPVwicGFnZUNoYW5nZWQuZW1pdCgkZXZlbnQpXCIgW21heFNpemVdPVwic2l6ZVwiIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlciBwYWdpbmF0aW9uLXNtXCI+XG4gICAgICAgIDwvcGFnaW5hdGlvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3RkPlxuICA8L3RyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { Component } from '@angular/core';
2
+ import { GridHeaderComponent } from '../GridHeaderComponent';
3
+ import { SortType } from '../types/grid-header';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ export class FormGridHeaderComponent extends GridHeaderComponent {
7
+ header;
8
+ load(formio) {
9
+ this.header = {
10
+ label: 'Title',
11
+ key: 'title',
12
+ sort: SortType.ASC
13
+ };
14
+ this.headers = [this.header];
15
+ return Promise.resolve(this.headers);
16
+ }
17
+ get numHeaders() {
18
+ return 2;
19
+ }
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormGridHeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
21
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: FormGridHeaderComponent, selector: "form-grid-header", usesInheritance: true, ngImport: i0, template: "<ng-template>\n <thead>\n <tr>\n <th>\n <div class=\"row\">\n <div class=\"col-sm-9\">\n <a (click)=\"sort.emit(header)\" style=\"cursor: pointer\">\n {{ header.label }}&nbsp;<span [ngClass]=\"{'fa-caret-up bi-caret-up': (header.sort === 'asc'), 'fa-caret-down bi-caret-down': (header.sort === 'desc')}\" class=\"fa bi\" *ngIf=\"header.sort\"></span>\n </a>\n </div>\n <div class=\"col-sm-3 d-flex justify-content-end\">\n Operations\n </div>\n </div>\n </th>\n </tr>\n </thead>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormGridHeaderComponent, decorators: [{
24
+ type: Component,
25
+ args: [{ selector: 'form-grid-header', template: "<ng-template>\n <thead>\n <tr>\n <th>\n <div class=\"row\">\n <div class=\"col-sm-9\">\n <a (click)=\"sort.emit(header)\" style=\"cursor: pointer\">\n {{ header.label }}&nbsp;<span [ngClass]=\"{'fa-caret-up bi-caret-up': (header.sort === 'asc'), 'fa-caret-down bi-caret-down': (header.sort === 'desc')}\" class=\"fa bi\" *ngIf=\"header.sort\"></span>\n </a>\n </div>\n <div class=\"col-sm-3 d-flex justify-content-end\">\n Operations\n </div>\n </div>\n </th>\n </tr>\n </thead>\n</ng-template>\n" }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybUdyaWRIZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vZ3JpZC9zcmMvZm9ybS9Gb3JtR3JpZEhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZvcm1pby9ncmlkL3NyYy9mb3JtL0Zvcm1HcmlkSGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFhLFFBQVEsRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7QUFNMUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLG1CQUFtQjtJQUN2RCxNQUFNLENBQWE7SUFDMUIsSUFBSSxDQUFDLE1BQVk7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osS0FBSyxFQUFFLE9BQU87WUFDZCxHQUFHLEVBQUUsT0FBTztZQUNaLElBQUksRUFBRSxRQUFRLENBQUMsR0FBRztTQUNuQixDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7dUdBZFUsdUJBQXVCOzJGQUF2Qix1QkFBdUIsK0VDUnBDLG9tQkFrQkE7OzJGRFZhLHVCQUF1QjtrQkFKbkMsU0FBUzsrQkFDRSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0dyaWRIZWFkZXJDb21wb25lbnR9IGZyb20gJy4uL0dyaWRIZWFkZXJDb21wb25lbnQnO1xuaW1wb3J0IHtHcmlkSGVhZGVyLCBTb3J0VHlwZX0gZnJvbSAnLi4vdHlwZXMvZ3JpZC1oZWFkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtLWdyaWQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL0Zvcm1HcmlkSGVhZGVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtR3JpZEhlYWRlckNvbXBvbmVudCBleHRlbmRzIEdyaWRIZWFkZXJDb21wb25lbnQge1xuICBwdWJsaWMgaGVhZGVyOiBHcmlkSGVhZGVyO1xuICBsb2FkKGZvcm1pbz86IGFueSkge1xuICAgIHRoaXMuaGVhZGVyID0ge1xuICAgICAgbGFiZWw6ICdUaXRsZScsXG4gICAgICBrZXk6ICd0aXRsZScsXG4gICAgICBzb3J0OiBTb3J0VHlwZS5BU0NcbiAgICB9O1xuICAgIHRoaXMuaGVhZGVycyA9IFt0aGlzLmhlYWRlcl07XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLmhlYWRlcnMpO1xuICB9XG5cbiAgZ2V0IG51bUhlYWRlcnMoKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPHRoZWFkPlxuICAgIDx0cj5cbiAgICAgIDx0aD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tOVwiPlxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cInNvcnQuZW1pdChoZWFkZXIpXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cbiAgICAgICAgICAgICAge3sgaGVhZGVyLmxhYmVsIH19Jm5ic3A7PHNwYW4gW25nQ2xhc3NdPVwieydmYS1jYXJldC11cCBiaS1jYXJldC11cCc6IChoZWFkZXIuc29ydCA9PT0gJ2FzYycpLCAnZmEtY2FyZXQtZG93biBiaS1jYXJldC1kb3duJzogKGhlYWRlci5zb3J0ID09PSAnZGVzYycpfVwiIGNsYXNzPVwiZmEgYmlcIiAqbmdJZj1cImhlYWRlci5zb3J0XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgT3BlcmF0aW9uc1xuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,9 @@
1
+ import { FormGridHeaderComponent } from './FormGridHeader.component';
2
+ import { FormGridBodyComponent } from './FormGridBody.component';
3
+ import { FormGridFooterComponent } from './FormGridFooter.component';
4
+ export default {
5
+ header: FormGridHeaderComponent,
6
+ body: FormGridBodyComponent,
7
+ footer: FormGridFooterComponent
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZvcm1pby9ncmlkL3NyYy9mb3JtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLGVBQWU7SUFDYixNQUFNLEVBQUUsdUJBQXVCO0lBQy9CLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsTUFBTSxFQUFFLHVCQUF1QjtDQUNoQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyaWRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL0Zvcm1HcmlkSGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtR3JpZEJvZHlDb21wb25lbnQgfSBmcm9tICcuL0Zvcm1HcmlkQm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybUdyaWRGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL0Zvcm1HcmlkRm9vdGVyLmNvbXBvbmVudCc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGhlYWRlcjogRm9ybUdyaWRIZWFkZXJDb21wb25lbnQsXG4gIGJvZHk6IEZvcm1HcmlkQm9keUNvbXBvbmVudCxcbiAgZm9vdGVyOiBGb3JtR3JpZEZvb3RlckNvbXBvbmVudFxufTtcbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TimeSince {
4
+ transform(date) {
5
+ const elapsed = (new Date().getTime() - new Date(date).getTime()) / 1000;
6
+ let interval;
7
+ if (interval >= 1) {
8
+ return interval + ' year' + (interval > 1 ? 's' : '');
9
+ }
10
+ interval = Math.floor(elapsed / 2592000);
11
+ if (interval >= 1) {
12
+ return interval + ' month' + (interval > 1 ? 's' : '');
13
+ }
14
+ interval = Math.floor(elapsed / 86400);
15
+ if (interval >= 1) {
16
+ return interval + ' day' + (interval > 1 ? 's' : '');
17
+ }
18
+ interval = Math.floor(elapsed / 3600);
19
+ if (interval >= 1) {
20
+ return interval + ' hour' + (interval > 1 ? 's' : '');
21
+ }
22
+ interval = Math.floor(elapsed / 60);
23
+ if (interval >= 1) {
24
+ return interval + ' minute' + (interval > 1 ? 's' : '');
25
+ }
26
+ return Math.floor(elapsed) + ' second' + (elapsed > 1 ? 's' : '');
27
+ }
28
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: TimeSince, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
29
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: TimeSince, name: "timeSince" });
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: TimeSince, decorators: [{
32
+ type: Pipe,
33
+ args: [{
34
+ name: 'timeSince'
35
+ }]
36
+ }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zaW5jZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1mb3JtaW8vZ3JpZC9zcmMvZm9ybS90aW1lLXNpbmNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sT0FBTyxTQUFTO0lBQ3BCLFNBQVMsQ0FBQyxJQUFVO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN6RSxJQUFJLFFBQVEsQ0FBQztRQUNiLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sUUFBUSxHQUFHLE9BQU8sR0FBRyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsQ0FBQztRQUN6QyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUMsQ0FBQztZQUNqQixPQUFPLFFBQVEsR0FBRyxRQUFRLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFDRCxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEIsT0FBTyxRQUFRLEdBQUcsTUFBTSxHQUFHLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3RDLElBQUksUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sUUFBUSxHQUFHLE9BQU8sR0FBRyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwQyxJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQixPQUFPLFFBQVEsR0FBRyxTQUFTLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRSxDQUFDO3VHQXhCVSxTQUFTO3FHQUFULFNBQVM7OzJGQUFULFNBQVM7a0JBSHJCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFdBQVc7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd0aW1lU2luY2UnXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVTaW5jZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgZWxhcHNlZCA9IChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGRhdGUpLmdldFRpbWUoKSkgLyAxMDAwO1xuICAgIGxldCBpbnRlcnZhbDtcbiAgICBpZiAoaW50ZXJ2YWwgPj0gMSkge1xuICAgICAgcmV0dXJuIGludGVydmFsICsgJyB5ZWFyJyArIChpbnRlcnZhbCA+IDEgPyAncycgOiAnJyk7XG4gICAgfVxuICAgIGludGVydmFsID0gTWF0aC5mbG9vcihlbGFwc2VkIC8gMjU5MjAwMCk7XG4gICAgaWYgKGludGVydmFsID49IDEpe1xuICAgICAgcmV0dXJuIGludGVydmFsICsgJyBtb250aCcgKyAoaW50ZXJ2YWwgPiAxID8gJ3MnIDogJycpO1xuICAgIH1cbiAgICBpbnRlcnZhbCA9IE1hdGguZmxvb3IoZWxhcHNlZCAvIDg2NDAwKTtcbiAgICBpZiAoaW50ZXJ2YWwgPj0gMSkge1xuICAgICAgcmV0dXJuIGludGVydmFsICsgJyBkYXknICsgKGludGVydmFsID4gMSA/ICdzJyA6ICcnKTtcbiAgICB9XG4gICAgaW50ZXJ2YWwgPSBNYXRoLmZsb29yKGVsYXBzZWQgLyAzNjAwKTtcbiAgICBpZiAoaW50ZXJ2YWwgPj0gMSkge1xuICAgICAgcmV0dXJuIGludGVydmFsICsgJyBob3VyJyArIChpbnRlcnZhbCA+IDEgPyAncycgOiAnJyk7XG4gICAgfVxuICAgIGludGVydmFsID0gTWF0aC5mbG9vcihlbGFwc2VkIC8gNjApO1xuICAgIGlmIChpbnRlcnZhbCA+PSAxKSB7XG4gICAgICByZXR1cm4gaW50ZXJ2YWwgKyAnIG1pbnV0ZScgKyAoaW50ZXJ2YWwgPiAxID8gJ3MnIDogJycpO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aC5mbG9vcihlbGFwc2VkKSArICcgc2Vjb25kJyArIChlbGFwc2VkID4gMSA/ICdzJyA6ICcnKTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWlvLWFuZ3VsYXItZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2Zvcm1pby1hbmd1bGFyLWdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,257 @@
1
+ import { GridFooterPositions } from './types/grid-footer-positions';
2
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
3
+ import { each } from 'lodash';
4
+ import { Formio } from '@formio/js/sdk';
5
+ import FormComponents from './form/index';
6
+ import SubmissionComponents from './submission/index';
7
+ import { FormioPromiseService } from '@formio/angular';
8
+ import { SortType } from './types/grid-header';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@formio/angular";
11
+ import * as i2 from "@angular/common";
12
+ export class FormioGridComponent {
13
+ alerts;
14
+ resolver;
15
+ ref;
16
+ footerPosition = GridFooterPositions.bottom;
17
+ src;
18
+ items;
19
+ onForm;
20
+ query;
21
+ refresh;
22
+ columns;
23
+ gridType;
24
+ size;
25
+ components;
26
+ formio;
27
+ label;
28
+ createText;
29
+ isActionAllowed;
30
+ select;
31
+ rowSelect;
32
+ rowAction;
33
+ createItem;
34
+ error;
35
+ headerElement;
36
+ bodyElement;
37
+ footerElement;
38
+ page = 0;
39
+ isLoading = false;
40
+ initialized = false;
41
+ header;
42
+ body;
43
+ footer;
44
+ footerPositions = GridFooterPositions;
45
+ constructor(alerts, resolver, ref) {
46
+ this.alerts = alerts;
47
+ this.resolver = resolver;
48
+ this.ref = ref;
49
+ this.select = this.rowSelect = new EventEmitter();
50
+ this.rowAction = new EventEmitter();
51
+ this.createItem = new EventEmitter();
52
+ this.error = new EventEmitter();
53
+ this.isLoading = true;
54
+ }
55
+ createComponent(property, component) {
56
+ const factory = this.resolver.resolveComponentFactory(component);
57
+ const componentRef = property.createComponent(factory);
58
+ return componentRef.instance;
59
+ }
60
+ loadGrid(src) {
61
+ // If no source is provided, then skip.
62
+ if (!src && !this.formio) {
63
+ return;
64
+ }
65
+ // Do not double load.
66
+ if (this.formio && this.src && (src === this.src)) {
67
+ return;
68
+ }
69
+ if (src) {
70
+ this.src = src;
71
+ this.formio = new FormioPromiseService(this.src, { formOnly: true });
72
+ }
73
+ // Load the header.
74
+ this.header.load(this.formio, {}, this.columns)
75
+ .then(() => this.setPage(0))
76
+ .catch(error => this.onError(error));
77
+ }
78
+ ngOnInit() {
79
+ // Create our components.
80
+ const comps = this.components || ((this.gridType === 'form') ? FormComponents : SubmissionComponents);
81
+ this.header = this.createComponent(this.headerElement, comps.header);
82
+ this.header.actionAllowed = this.actionAllowed.bind(this);
83
+ this.header.sort.subscribe(header => this.sortColumn(header));
84
+ this.body = this.createComponent(this.bodyElement, comps.body);
85
+ this.body.header = this.header;
86
+ this.body.actionAllowed = this.actionAllowed.bind(this);
87
+ this.body.rowSelect.subscribe(row => this.rowSelect.emit(row));
88
+ this.body.rowAction.subscribe(action => this.rowAction.emit(action));
89
+ this.footer = this.createComponent(this.footerElement, comps.footer);
90
+ this.footer.header = this.header;
91
+ this.footer.body = this.body;
92
+ this.footer.actionAllowed = this.actionAllowed.bind(this);
93
+ this.footer.createText = this.createText;
94
+ this.footer.size = this.size;
95
+ this.footer.pageChanged.subscribe(page => this.pageChanged(page));
96
+ this.footer.createItem.subscribe(item => this.createItem.emit(item));
97
+ }
98
+ ngOnChanges(changes) {
99
+ if (this.initialized) {
100
+ if ((changes.src && changes.src.currentValue) ||
101
+ (changes.formio && changes.formio.currentValue)) {
102
+ this.loadGrid(changes.src.currentValue);
103
+ }
104
+ if (changes.items && changes.items.currentValue) {
105
+ this.refreshGrid();
106
+ }
107
+ }
108
+ if (this.footer &&
109
+ (changes.createText && changes.createText.currentValue)) {
110
+ this.footer.createText = changes.createText.currentValue;
111
+ }
112
+ }
113
+ ngAfterViewInit() {
114
+ this.alerts.setAlerts([]);
115
+ this.query = this.query || {};
116
+ if (this.refresh) {
117
+ this.refresh.subscribe((query) => this.refreshGrid(query));
118
+ }
119
+ this.loadGrid(this.src);
120
+ this.initialized = true;
121
+ this.ref.detectChanges();
122
+ }
123
+ actionAllowed(action) {
124
+ if (this.isActionAllowed) {
125
+ return this.isActionAllowed(action);
126
+ }
127
+ else {
128
+ return true;
129
+ }
130
+ }
131
+ onError(error) {
132
+ this.isLoading = false;
133
+ this.error.emit(error);
134
+ if (typeof error === 'string' || error.message) {
135
+ this.alerts.setAlert({
136
+ type: 'danger',
137
+ message: error.message || error
138
+ });
139
+ }
140
+ }
141
+ refreshGrid(query) {
142
+ this.alerts.setAlerts([]);
143
+ this.query = query || this.query;
144
+ if (!this.query.hasOwnProperty('limit')) {
145
+ this.query.limit = 10;
146
+ }
147
+ if (!this.query.hasOwnProperty('skip')) {
148
+ this.query.skip = 0;
149
+ }
150
+ this.isLoading = true;
151
+ this.ref.detectChanges();
152
+ Formio.cache = {};
153
+ let loader = null;
154
+ if (this.items) {
155
+ loader = Promise.resolve(this.body.setRows(this.query, this.items));
156
+ }
157
+ else {
158
+ loader = this.body.load(this.formio, this.query);
159
+ }
160
+ return loader.then(info => {
161
+ this.isLoading = false;
162
+ this.initialized = true;
163
+ this.ref.detectChanges();
164
+ }).catch(error => this.onError(error));
165
+ }
166
+ setPage(num = -1) {
167
+ this.page = num !== -1 ? num : this.page;
168
+ if (!this.query.hasOwnProperty('limit')) {
169
+ this.query.limit = 10;
170
+ }
171
+ if (!this.query.hasOwnProperty('skip')) {
172
+ this.query.skip = 0;
173
+ }
174
+ this.query.skip = this.page * this.query.limit;
175
+ this.refreshGrid();
176
+ }
177
+ sortColumn(header) {
178
+ // Reset all other column sorts.
179
+ each(this.header.headers, (col) => {
180
+ if (col.key !== header.key) {
181
+ col.sort = '';
182
+ }
183
+ });
184
+ switch (header.sort) {
185
+ case 'asc':
186
+ header.sort = SortType.DESC;
187
+ this.query.sort = '-' + header.key;
188
+ break;
189
+ case 'desc':
190
+ header.sort = undefined;
191
+ delete this.query.sort;
192
+ break;
193
+ case undefined:
194
+ header.sort = SortType.ASC;
195
+ this.query.sort = header.key;
196
+ break;
197
+ }
198
+ this.refreshGrid();
199
+ }
200
+ pageChanged(page) {
201
+ this.setPage(page.page - 1);
202
+ }
203
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormioGridComponent, deps: [{ token: i1.FormioAlerts }, { token: i0.ComponentFactoryResolver }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
204
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.2", type: FormioGridComponent, selector: "formio-grid", inputs: { footerPosition: "footerPosition", src: "src", items: "items", onForm: "onForm", query: "query", refresh: "refresh", columns: "columns", gridType: "gridType", size: "size", components: "components", formio: "formio", label: "label", createText: "createText", isActionAllowed: "isActionAllowed" }, outputs: { select: "select", rowSelect: "rowSelect", rowAction: "rowAction", createItem: "createItem", error: "error" }, viewQueries: [{ propertyName: "headerElement", first: true, predicate: ["headerTemplate"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "bodyElement", first: true, predicate: ["bodyTemplate"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "footerElement", first: true, predicate: ["footerTemplate"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #headerTemplate></ng-template>\n<ng-template #bodyTemplate></ng-template>\n<ng-template #footerTemplate></ng-template>\n<div class=\"formio-grid\">\n <formio-alerts [alerts]=\"alerts\"></formio-alerts>\n <table class=\"table table-bordered table-striped table-hover\">\n <ng-container *ngIf=\"initialized && [footerPositions.top, footerPositions.both].indexOf(footerPosition) !== -1\"\n [ngTemplateOutlet]=\"footer.template\" [ngTemplateOutletContext]=\"{ position: footerPositions.top, label: label }\">\n </ng-container>\n <ng-container *ngIf=\"initialized\"\n [ngTemplateOutlet]=\"header.template\"></ng-container>\n <formio-loader [isLoading]=\"isLoading\"></formio-loader>\n <ng-container *ngIf=\"initialized\" [ngTemplateOutlet]=\"body.template\"></ng-container>\n <ng-container *ngIf=\"initialized && [footerPositions.bottom, footerPositions.both].indexOf(footerPosition) !== -1\"\n [ngTemplateOutlet]=\"footer.template\" [ngTemplateOutletContext]=\"{ position: footerPositions.bottom, label: label }\">\n </ng-container>\n </table>\n</div>\n", styles: [".formio-grid{position:relative;width:100%}.grid-refresh{height:400px;width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.FormioLoaderComponent, selector: "formio-loader", inputs: ["isLoading"] }, { kind: "component", type: i1.FormioAlertsComponent, selector: "formio-alerts", inputs: ["alerts"], outputs: ["focusComponent"] }] });
205
+ }
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: FormioGridComponent, decorators: [{
207
+ type: Component,
208
+ args: [{ selector: 'formio-grid', template: "<ng-template #headerTemplate></ng-template>\n<ng-template #bodyTemplate></ng-template>\n<ng-template #footerTemplate></ng-template>\n<div class=\"formio-grid\">\n <formio-alerts [alerts]=\"alerts\"></formio-alerts>\n <table class=\"table table-bordered table-striped table-hover\">\n <ng-container *ngIf=\"initialized && [footerPositions.top, footerPositions.both].indexOf(footerPosition) !== -1\"\n [ngTemplateOutlet]=\"footer.template\" [ngTemplateOutletContext]=\"{ position: footerPositions.top, label: label }\">\n </ng-container>\n <ng-container *ngIf=\"initialized\"\n [ngTemplateOutlet]=\"header.template\"></ng-container>\n <formio-loader [isLoading]=\"isLoading\"></formio-loader>\n <ng-container *ngIf=\"initialized\" [ngTemplateOutlet]=\"body.template\"></ng-container>\n <ng-container *ngIf=\"initialized && [footerPositions.bottom, footerPositions.both].indexOf(footerPosition) !== -1\"\n [ngTemplateOutlet]=\"footer.template\" [ngTemplateOutletContext]=\"{ position: footerPositions.bottom, label: label }\">\n </ng-container>\n </table>\n</div>\n", styles: [".formio-grid{position:relative;width:100%}.grid-refresh{height:400px;width:100%}\n"] }]
209
+ }], ctorParameters: () => [{ type: i1.FormioAlerts }, { type: i0.ComponentFactoryResolver }, { type: i0.ChangeDetectorRef }], propDecorators: { footerPosition: [{
210
+ type: Input
211
+ }], src: [{
212
+ type: Input
213
+ }], items: [{
214
+ type: Input
215
+ }], onForm: [{
216
+ type: Input
217
+ }], query: [{
218
+ type: Input
219
+ }], refresh: [{
220
+ type: Input
221
+ }], columns: [{
222
+ type: Input
223
+ }], gridType: [{
224
+ type: Input
225
+ }], size: [{
226
+ type: Input
227
+ }], components: [{
228
+ type: Input
229
+ }], formio: [{
230
+ type: Input
231
+ }], label: [{
232
+ type: Input
233
+ }], createText: [{
234
+ type: Input
235
+ }], isActionAllowed: [{
236
+ type: Input
237
+ }], select: [{
238
+ type: Output
239
+ }], rowSelect: [{
240
+ type: Output
241
+ }], rowAction: [{
242
+ type: Output
243
+ }], createItem: [{
244
+ type: Output
245
+ }], error: [{
246
+ type: Output
247
+ }], headerElement: [{
248
+ type: ViewChild,
249
+ args: ['headerTemplate', { read: ViewContainerRef, static: true }]
250
+ }], bodyElement: [{
251
+ type: ViewChild,
252
+ args: ['bodyTemplate', { read: ViewContainerRef, static: true }]
253
+ }], footerElement: [{
254
+ type: ViewChild,
255
+ args: ['footerTemplate', { read: ViewContainerRef, static: true }]
256
+ }] } });
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWZvcm1pby9ncmlkL3NyYy9ncmlkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItZm9ybWlvL2dyaWQvc3JjL2dyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSXRDLE9BQU8sY0FBYyxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLG9CQUFvQixNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sRUFBYSxRQUFRLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQU96RCxNQUFNLE9BQU8sbUJBQW1CO0lBaUNyQjtJQUNDO0lBQ0E7SUFsQ0QsY0FBYyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUM1QyxHQUFHLENBQVU7SUFDYixLQUFLLENBQWM7SUFDbkIsTUFBTSxDQUFnQjtJQUN0QixLQUFLLENBQU87SUFDWixPQUFPLENBQXdCO0lBQy9CLE9BQU8sQ0FBcUI7SUFDNUIsUUFBUSxDQUFVO0lBQ2xCLElBQUksQ0FBVTtJQUNkLFVBQVUsQ0FBTztJQUNqQixNQUFNLENBQXdCO0lBQzlCLEtBQUssQ0FBVTtJQUNmLFVBQVUsQ0FBUztJQUNuQixlQUFlLENBQU07SUFDcEIsTUFBTSxD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QWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxN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QWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUM4RCxhQUFhO3NCQUFqRixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0EsV0FBVztzQkFBN0UsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDSSxhQUFhO3NCQUFqRixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmlkRm9vdGVyUG9zaXRpb25zIH0gZnJvbSAnLi90eXBlcy9ncmlkLWZvb3Rlci1wb3NpdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1pb0FsZXJ0c30gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7ZWFjaH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Rm9ybWlvfSBmcm9tICdAZm9ybWlvL2pzL3Nkayc7XG5pbXBvcnQge0dyaWRIZWFkZXJDb21wb25lbnR9IGZyb20gJy4vR3JpZEhlYWRlckNvbXBvbmVudCc7XG5pbXBvcnQge0dyaWRCb2R5Q29tcG9uZW50fSBmcm9tICcuL0dyaWRCb2R5Q29tcG9uZW50JztcbmltcG9ydCB7R3JpZEZvb3RlckNvbXBvbmVudH0gZnJvbSAnLi9HcmlkRm9vdGVyQ29tcG9uZW50JztcbmltcG9ydCBGb3JtQ29tcG9uZW50cyBmcm9tICcuL2Zvcm0vaW5kZXgnO1xuaW1wb3J0IFN1Ym1pc3Npb25Db21wb25lbnRzIGZyb20gJy4vc3VibWlzc2lvbi9pbmRleCc7XG5pbXBvcnQge0Zvcm1pb1Byb21pc2VTZXJ2aWNlfSBmcm9tICdAZm9ybWlvL2FuZ3VsYXInO1xuaW1wb3J0IHtHcmlkQ29sdW1ufSBmcm9tICcuL3R5cGVzL2dyaWQtY29sdW1uJztcbmltcG9ydCB7R3JpZEhlYWRlciwgU29ydFR5cGV9IGZyb20gJy4vdHlwZXMvZ3JpZC1oZWFkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmb3JtaW8tZ3JpZCcsXG4gIHN0eWxlVXJsczogWycuL2dyaWQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1pb0dyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIGZvb3RlclBvc2l0aW9uID0gR3JpZEZvb3RlclBvc2l0aW9ucy5ib3R0b207XG4gIEBJbnB1dCgpIHNyYz86IHN0cmluZztcbiAgQElucHV0KCkgaXRlbXM/OiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBvbkZvcm0/OiBQcm9taXNlPGFueT47XG4gIEBJbnB1dCgpIHF1ZXJ5PzogYW55O1xuICBASW5wdXQoKSByZWZyZXNoPzogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBJbnB1dCgpIGNvbHVtbnM/OiBBcnJheTxHcmlkQ29sdW1uPjtcbiAgQElucHV0KCkgZ3JpZFR5cGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNpemU/OiBudW1iZXI7XG4gIEBJbnB1dCgpIGNvbXBvbmVudHM/OiBhbnk7XG4gIEBJbnB1dCgpIGZvcm1pbz86IEZvcm1pb1Byb21pc2VTZXJ2aWNlO1xuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgY3JlYXRlVGV4dDogU3RyaW5nO1xuICBASW5wdXQoKSBpc0FjdGlvbkFsbG93ZWQ6IGFueTtcbiAgQE91dHB1dCgpIHNlbGVjdDogRXZlbnRFbWl0dGVyPG9iamVjdD47XG4gIEBPdXRwdXQoKSByb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxvYmplY3Q+O1xuICBAT3V0cHV0KCkgcm93QWN0aW9uOiBFdmVudEVtaXR0ZXI8b2JqZWN0PjtcbiAgQE91dHB1dCgpIGNyZWF0ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgZXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAVmlld0NoaWxkKCdoZWFkZXJUZW1wbGF0ZScsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWV9KSBoZWFkZXJFbGVtZW50OiBWaWV3Q29udGFpbmVyUmVmO1xuICBAVmlld0NoaWxkKCdib2R5VGVtcGxhdGUnLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlfSkgYm9keUVsZW1lbnQ6IFZpZXdDb250YWluZXJSZWY7XG4gIEBWaWV3Q2hpbGQoJ2Zvb3RlclRlbXBsYXRlJywge3JlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZX0pIGZvb3RlckVsZW1lbnQ6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHVibGljIHBhZ2UgPSAwO1xuICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBpbml0aWFsaXplZCA9IGZhbHNlO1xuICBwdWJsaWMgaGVhZGVyOiBHcmlkSGVhZGVyQ29tcG9uZW50O1xuICBwdWJsaWMgYm9keTogR3JpZEJvZHlDb21wb25lbnQ7XG4gIHB1YmxpYyBmb290ZXI6IEdyaWRGb290ZXJDb21wb25lbnQ7XG4gIHB1YmxpYyBmb290ZXJQb3NpdGlvbnMgPSBHcmlkRm9vdGVyUG9zaXRpb25zO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhbGVydHM6IEZvcm1pb0FsZXJ0cyxcbiAgICBwcml2YXRlIHJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5yb3dTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5jcmVhdGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMuZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICB9XG5cbiAgY3JlYXRlQ29tcG9uZW50KHByb3BlcnR5LCBjb21wb25lbnQpIHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5yZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHByb3BlcnR5LmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICByZXR1cm4gY29tcG9uZW50UmVmLmluc3RhbmNlO1xuICB9XG5cbiAgbG9hZEdyaWQoc3JjPzogc3RyaW5nKSB7XG4gICAgLy8gSWYgbm8gc291cmNlIGlzIHByb3ZpZGVkLCB0aGVuIHNraXAuXG4gICAgaWYgKCFzcmMgJiYgIXRoaXMuZm9ybWlvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIERvIG5vdCBkb3VibGUgbG9hZC5cbiAgICBpZiAodGhpcy5mb3JtaW8gJiYgdGhpcy5zcmMgJiYgKHNyYyA9PT0gdGhpcy5zcmMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNyYykge1xuICAgICAgdGhpcy5zcmMgPSBzcmM7XG4gICAgICB0aGlzLmZvcm1pbyA9IG5ldyBGb3JtaW9Qcm9taXNlU2VydmljZSh0aGlzLnNyYywgeyBmb3JtT25seTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIHRoZSBoZWFkZXIuXG4gICAgdGhpcy5oZWFkZXIubG9hZCh0aGlzLmZvcm1pbywge30sIHRoaXMuY29sdW1ucylcbiAgICAgIC50aGVuKCgpID0+IHRoaXMuc2V0UGFnZSgwKSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB0aGlzLm9uRXJyb3IoZXJyb3IpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIENyZWF0ZSBvdXIgY29tcG9uZW50cy5cbiAgICBjb25zdCBjb21wcyA9IHRoaXMuY29tcG9uZW50cyB8fCAoKHRoaXMuZ3JpZFR5cGUgPT09ICdmb3JtJykgPyBGb3JtQ29tcG9uZW50cyA6IFN1Ym1pc3Npb25Db21wb25lbnRzKTtcblxuICAgIHRoaXMuaGVhZGVyID0gdGhpcy5jcmVhdGVDb21wb25lbnQodGhpcy5oZWFkZXJFbGVtZW50LCBjb21wcy5oZWFkZXIpO1xuICAgIHRoaXMuaGVhZGVyLmFjdGlvbkFsbG93ZWQgPSB0aGlzLmFjdGlvbkFsbG93ZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmhlYWRlci5zb3J0LnN1YnNjcmliZShoZWFkZXIgPT4gdGhpcy5zb3J0Q29sdW1uKGhlYWRlcikpO1xuXG4gICAgdGhpcy5ib2R5ID0gdGhpcy5jcmVhdGVDb21wb25lbnQodGhpcy5ib2R5RWxlbWVudCwgY29tcHMuYm9keSk7XG4gICAgdGhpcy5ib2R5LmhlYWRlciA9IHRoaXMuaGVhZGVyO1xuICAgIHRoaXMuYm9keS5hY3Rpb25BbGxvd2VkID0gdGhpcy5hY3Rpb25BbGxvd2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy5ib2R5LnJvd1NlbGVjdC5zdWJzY3JpYmUocm93ID0+IHRoaXMucm93U2VsZWN0LmVtaXQocm93KSk7XG4gICAgdGhpcy5ib2R5LnJvd0FjdGlvbi5zdWJzY3JpYmUoYWN0aW9uID0+IHRoaXMucm93QWN0aW9uLmVtaXQoYWN0aW9uKSk7XG5cbiAgICB0aGlzLmZvb3RlciA9IHRoaXMuY3JlYXRlQ29tcG9uZW50KHRoaXMuZm9vdGVyRWxlbWVudCwgY29tcHMuZm9vdGVyKTtcbiAgICB0aGlzLmZvb3Rlci5oZWFkZXIgPSB0aGlzLmhlYWRlcjtcbiAgICB0aGlzLmZvb3Rlci5ib2R5ID0gdGhpcy5ib2R5O1xuICAgIHRoaXMuZm9vdGVyLmFjdGlvbkFsbG93ZWQgPSB0aGlzLmFjdGlvbkFsbG93ZWQuYmluZCh0aGlzKTtcbiAgICB0aGlzLmZvb3Rlci5jcmVhdGVUZXh0ID0gdGhpcy5jcmVhdGVUZXh0O1xuICAgIHRoaXMuZm9vdGVyLnNpemUgPSB0aGlzLnNpemU7XG4gICAgdGhpcy5mb290ZXIucGFnZUNoYW5nZWQuc3Vic2NyaWJlKHBhZ2UgPT4gdGhpcy5wYWdlQ2hhbmdlZChwYWdlKSk7XG4gICAgdGhpcy5mb290ZXIuY3JlYXRlSXRlbS5zdWJzY3JpYmUoaXRlbSA9PiB0aGlzLmNyZWF0ZUl0ZW0uZW1pdChpdGVtKSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgaWYgKFxuICAgICAgICAoY2hhbmdlcy5zcmMgJiYgY2hhbmdlcy5zcmMuY3VycmVudFZhbHVlKSB8fFxuICAgICAgICAoY2hhbmdlcy5mb3JtaW8gJiYgY2hhbmdlcy5mb3JtaW8uY3VycmVudFZhbHVlKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubG9hZEdyaWQoY2hhbmdlcy5zcmMuY3VycmVudFZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXMuaXRlbXMgJiYgY2hhbmdlcy5pdGVtcy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmZvb3RlciAmJlxuICAgICAgICAoY2hhbmdlcy5jcmVhdGVUZXh0ICYmIGNoYW5nZXMuY3JlYXRlVGV4dC5jdXJyZW50VmFsdWUpKSB7XG4gICAgICB0aGlzLmZvb3Rlci5jcmVhdGVUZXh0ID0gY2hhbmdlcy5jcmVhdGVUZXh0LmN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5hbGVydHMuc2V0QWxlcnRzKFtdKTtcbiAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5xdWVyeSB8fCB7fTtcbiAgICBpZiAodGhpcy5yZWZyZXNoKSB7XG4gICAgICB0aGlzLnJlZnJlc2guc3Vic2NyaWJlKChxdWVyeTogb2JqZWN0KSA9PiB0aGlzLnJlZnJlc2hHcmlkKHF1ZXJ5KSk7XG4gICAgfVxuICAgIHRoaXMubG9hZEdyaWQodGhpcy5zcmMpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGFjdGlvbkFsbG93ZWQoYWN0aW9uKSB7XG4gICAgaWYgKHRoaXMuaXNBY3Rpb25BbGxvd2VkKSB7XG4gICAgICByZXR1cm4gdGhpcy5pc0FjdGlvbkFsbG93ZWQoYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgb25FcnJvcihlcnJvcjogYW55KSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVycm9yLmVtaXQoZXJyb3IpO1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnIHx8IGVycm9yLm1lc3NhZ2UpIHtcbiAgICAgIHRoaXMuYWxlcnRzLnNldEFsZXJ0KHtcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2UgfHwgZXJyb3JcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hHcmlkKHF1ZXJ5PzogYW55KSB7XG4gICAgdGhpcy5hbGVydHMuc2V0QWxlcnRzKFtdKTtcbiAgICB0aGlzLnF1ZXJ5ID0gcXVlcnkgfHwgdGhpcy5xdWVyeTtcbiAgICBpZiAoIXRoaXMucXVlcnkuaGFzT3duUHJvcGVydHkoJ2xpbWl0JykpIHtcbiAgICAgIHRoaXMucXVlcnkubGltaXQgPSAxMDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnF1ZXJ5Lmhhc093blByb3BlcnR5KCdza2lwJykpIHtcbiAgICAgIHRoaXMucXVlcnkuc2tpcCA9IDA7XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgRm9ybWlvLmNhY2hlID0ge307XG4gICAgbGV0IGxvYWRlciA9IG51bGw7XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIGxvYWRlciA9IFByb21pc2UucmVzb2x2ZSh0aGlzLmJvZHkuc2V0Um93cyh0aGlzLnF1ZXJ5LCB0aGlzLml0ZW1zKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvYWRlciA9IHRoaXMuYm9keS5sb2FkKHRoaXMuZm9ybWlvLCB0aGlzLnF1ZXJ5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9hZGVyLnRoZW4oaW5mbyA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4gdGhpcy5vbkVycm9yKGVycm9yKSk7XG4gIH1cblxuICBzZXRQYWdlKG51bSA9IC0xKSB7XG4gICAgdGhpcy5wYWdlID0gbnVtICE9PSAtMSA/IG51bSA6IHRoaXMucGFnZTtcbiAgICBpZiAoIXRoaXMucXVlcnkuaGFzT3duUHJvcGVydHkoJ2xpbWl0JykpIHtcbiAgICAgIHRoaXMucXVlcnkubGltaXQgPSAxMDtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnF1ZXJ5Lmhhc093blByb3BlcnR5KCdza2lwJykpIHtcbiAgICAgIHRoaXMucXVlcnkuc2tpcCA9IDA7XG4gICAgfVxuICAgIHRoaXMucXVlcnkuc2tpcCA9IHRoaXMucGFnZSAqIHRoaXMucXVlcnkubGltaXQ7XG4gICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICB9XG5cbiAgc29ydENvbHVtbihoZWFkZXI6IEdyaWRIZWFkZXIpIHtcbiAgICAvLyBSZXNldCBhbGwgb3RoZXIgY29sdW1uIHNvcnRzLlxuICAgIGVhY2godGhpcy5oZWFkZXIuaGVhZGVycywgKGNvbDogYW55KSA9PiB7XG4gICAgICBpZiAoY29sLmtleSAhPT0gaGVhZGVyLmtleSkge1xuICAgICAgICBjb2wuc29ydCA9ICcnO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHN3aXRjaCAoaGVhZGVyLnNvcnQpIHtcbiAgICAgIGNhc2UgJ2FzYyc6XG4gICAgICAgIGhlYWRlci5zb3J0ID0gU29ydFR5cGUuREVTQztcbiAgICAgICAgdGhpcy5xdWVyeS5zb3J0ID0gJy0nICsgaGVhZGVyLmtleTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZXNjJzpcbiAgICAgICAgaGVhZGVyLnNvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnF1ZXJ5LnNvcnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIGhlYWRlci5zb3J0ID0gU29ydFR5cGUuQVNDO1xuICAgICAgICB0aGlzLnF1ZXJ5LnNvcnQgPSBoZWFkZXIua2V5O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoR3JpZCgpO1xuICB9XG5cbiAgcGFnZUNoYW5nZWQocGFnZTogYW55KSB7XG4gICAgdGhpcy5zZXRQYWdlKHBhZ2UucGFnZSAtIDEpO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2hlYWRlclRlbXBsYXRlPjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2JvZHlUZW1wbGF0ZT48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT48L25nLXRlbXBsYXRlPlxuPGRpdiBjbGFzcz1cImZvcm1pby1ncmlkXCI+XG4gIDxmb3JtaW8tYWxlcnRzIFthbGVydHNdPVwiYWxlcnRzXCI+PC9mb3JtaW8tYWxlcnRzPlxuICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1zdHJpcGVkIHRhYmxlLWhvdmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXRpYWxpemVkICYmIFtmb290ZXJQb3NpdGlvbnMudG9wLCBmb290ZXJQb3NpdGlvbnMuYm90aF0uaW5kZXhPZihmb290ZXJQb3NpdGlvbikgIT09IC0xXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3Rlci50ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHBvc2l0aW9uOiBmb290ZXJQb3NpdGlvbnMudG9wLCBsYWJlbDogbGFiZWwgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXIudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8Zm9ybWlvLWxvYWRlciBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiPjwvZm9ybWlvLWxvYWRlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJib2R5LnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXRpYWxpemVkICYmIFtmb290ZXJQb3NpdGlvbnMuYm90dG9tLCBmb290ZXJQb3NpdGlvbnMuYm90aF0uaW5kZXhPZihmb290ZXJQb3NpdGlvbikgIT09IC0xXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3Rlci50ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IHBvc2l0aW9uOiBmb290ZXJQb3NpdGlvbnMuYm90dG9tLCBsYWJlbDogbGFiZWwgfVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3RhYmxlPlxuPC9kaXY+XG4iXX0=