@eo-sdk/client 10.0.0-beta.3 → 10.0.0-beta.5

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 (264) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/dashboard/dashboard.component.d.ts +6 -7
  3. package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
  4. package/app/eo-client/favorite-state/favorite-state.component.d.ts +7 -8
  5. package/app/eo-client/favorite-state/favorite-state.component.d.ts.map +1 -1
  6. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts +8 -10
  7. package/app/eo-client/inbox-state/inbox-state/inbox-state.component.d.ts.map +1 -1
  8. package/app/eo-client/login/login.component.d.ts +4 -2
  9. package/app/eo-client/login/login.component.d.ts.map +1 -1
  10. package/app/eo-client/notifications-state/notifications-state.component.d.ts +9 -11
  11. package/app/eo-client/notifications-state/notifications-state.component.d.ts.map +1 -1
  12. package/app/eo-client/object-state/object-state/object-state.component.d.ts +10 -11
  13. package/app/eo-client/object-state/object-state/object-state.component.d.ts.map +1 -1
  14. package/app/eo-client/prepare-state/prepare-state/prepare-state.component.d.ts +8 -9
  15. package/app/eo-client/prepare-state/prepare-state/prepare-state.component.d.ts.map +1 -1
  16. package/app/eo-client/process-state/process-state.component.d.ts +8 -10
  17. package/app/eo-client/process-state/process-state.component.d.ts.map +1 -1
  18. package/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts +5 -6
  19. package/app/eo-client/recyclebin-state/recyclebin-state.component.d.ts.map +1 -1
  20. package/app/eo-client/result-state/result-state.component.d.ts +3 -5
  21. package/app/eo-client/result-state/result-state.component.d.ts.map +1 -1
  22. package/app/eo-client/settings/settings.component.d.ts +6 -7
  23. package/app/eo-client/settings/settings.component.d.ts.map +1 -1
  24. package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts +8 -10
  25. package/app/eo-client/stored-queries-state/stored-queries-state.component.d.ts.map +1 -1
  26. package/app/eo-client/version-state/version-state.component.d.ts +5 -7
  27. package/app/eo-client/version-state/version-state.component.d.ts.map +1 -1
  28. package/app/eo-framework/accordion/accordion.module.d.ts +1 -2
  29. package/app/eo-framework/accordion/accordion.module.d.ts.map +1 -1
  30. package/app/eo-framework/actions/action-menu/action-menu.component.d.ts +4 -5
  31. package/app/eo-framework/actions/action-menu/action-menu.component.d.ts.map +1 -1
  32. package/app/eo-framework/actions/action.module.d.ts +11 -10
  33. package/app/eo-framework/actions/action.module.d.ts.map +1 -1
  34. package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts +3 -2
  35. package/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.d.ts.map +1 -1
  36. package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts +9 -13
  37. package/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.d.ts.map +1 -1
  38. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts +3 -4
  39. package/app/eo-framework/app-shell/app-bar/app-bar.component.d.ts.map +1 -1
  40. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  41. package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts +1 -2
  42. package/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.d.ts.map +1 -1
  43. package/app/eo-framework/app-shell/app-shell.module.d.ts +18 -20
  44. package/app/eo-framework/app-shell/app-shell.module.d.ts.map +1 -1
  45. package/app/eo-framework/app-shell/index.d.ts +0 -1
  46. package/app/eo-framework/app-shell/index.d.ts.map +1 -1
  47. package/app/eo-framework/eo-framework.module.d.ts +37 -41
  48. package/app/eo-framework/eo-framework.module.d.ts.map +1 -1
  49. package/app/eo-framework/form-elements/date/date.component.d.ts +0 -2
  50. package/app/eo-framework/form-elements/date/date.component.d.ts.map +1 -1
  51. package/app/eo-framework/form-elements/form-elements.module.d.ts +9 -18
  52. package/app/eo-framework/form-elements/form-elements.module.d.ts.map +1 -1
  53. package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts +1 -0
  54. package/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.d.ts.map +1 -1
  55. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts +0 -2
  56. package/app/eo-framework/grid/filters/datetime-filter.component.d.ts.map +1 -1
  57. package/app/eo-framework/grid/grid.component.d.ts +7 -8
  58. package/app/eo-framework/grid/grid.component.d.ts.map +1 -1
  59. package/app/eo-framework/grid/grid.module.d.ts +7 -8
  60. package/app/eo-framework/grid/grid.module.d.ts.map +1 -1
  61. package/app/eo-framework/inbox-details/inbox-details.component.d.ts +1 -2
  62. package/app/eo-framework/inbox-details/inbox-details.component.d.ts.map +1 -1
  63. package/app/eo-framework/index.d.ts +0 -4
  64. package/app/eo-framework/index.d.ts.map +1 -1
  65. package/app/eo-framework/media/media.component.d.ts +4 -3
  66. package/app/eo-framework/media/media.component.d.ts.map +1 -1
  67. package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts +2 -3
  68. package/app/eo-framework/object-details/favorite-icon/favorite-icon.component.d.ts.map +1 -1
  69. package/app/eo-framework/object-details/object-details.component.d.ts +5 -4
  70. package/app/eo-framework/object-details/object-details.component.d.ts.map +1 -1
  71. package/app/eo-framework/object-details/object-details.module.d.ts +2 -1
  72. package/app/eo-framework/object-details/object-details.module.d.ts.map +1 -1
  73. package/app/eo-framework/object-details/object-history/object-history.component.d.ts +2 -3
  74. package/app/eo-framework/object-details/object-history/object-history.component.d.ts.map +1 -1
  75. package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts +10 -0
  76. package/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.d.ts.map +1 -0
  77. package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts +8 -3
  78. package/app/eo-framework/object-form/object-form/form-element/form-element.component.d.ts.map +1 -1
  79. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +1 -2
  80. package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
  81. package/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.d.ts +7 -2
  82. package/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.d.ts.map +1 -1
  83. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts +28 -11
  84. package/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.d.ts.map +1 -1
  85. package/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.d.ts.map +1 -1
  86. package/app/eo-framework/object-form/object-form/object-form.component.d.ts +1 -2
  87. package/app/eo-framework/object-form/object-form/object-form.component.d.ts.map +1 -1
  88. package/app/eo-framework/object-form/object-form-helper.service.d.ts.map +1 -1
  89. package/app/eo-framework/object-form/object-form.module.d.ts +9 -9
  90. package/app/eo-framework/object-state-details/object-state-details.component.d.ts +1 -2
  91. package/app/eo-framework/object-state-details/object-state-details.component.d.ts.map +1 -1
  92. package/app/eo-framework/prepare-details/prepare-details.component.d.ts +8 -9
  93. package/app/eo-framework/prepare-details/prepare-details.component.d.ts.map +1 -1
  94. package/app/eo-framework/process/details/process-details.component.d.ts +7 -8
  95. package/app/eo-framework/process/details/process-details.component.d.ts.map +1 -1
  96. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts +9 -11
  97. package/app/eo-framework/recyclebin-details/recyclebin-details.component.d.ts.map +1 -1
  98. package/app/eo-framework/result-list/result-list.component.d.ts +5 -6
  99. package/app/eo-framework/result-list/result-list.component.d.ts.map +1 -1
  100. package/app/eo-framework/settings/settings.module.d.ts +3 -4
  101. package/app/eo-framework/settings/settings.module.d.ts.map +1 -1
  102. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts +4 -5
  103. package/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.d.ts.map +1 -1
  104. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts +2 -3
  105. package/app/eo-framework/ui/eo-dialog/eo-dialog.component.d.ts.map +1 -1
  106. package/app/eo-framework/ui/outside-click/outside-click.directive.d.ts +1 -2
  107. package/app/eo-framework/ui/outside-click/outside-click.directive.d.ts.map +1 -1
  108. package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts +0 -1
  109. package/app/eo-framework/ui/signature-tab/signature-tab.component.d.ts.map +1 -1
  110. package/app/eo-framework/util/index.d.ts +0 -1
  111. package/app/eo-framework/util/index.d.ts.map +1 -1
  112. package/app/eo-framework/util/util.module.d.ts +0 -1
  113. package/app/eo-framework/util/util.module.d.ts.map +1 -1
  114. package/app/eo-framework-core/layout/layout.service.d.ts +2 -26
  115. package/app/eo-framework-core/layout/layout.service.d.ts.map +1 -1
  116. package/app/eo-framework-core/pipes/locale-number.pipe.d.ts +2 -3
  117. package/app/eo-framework-core/pipes/locale-number.pipe.d.ts.map +1 -1
  118. package/assets/_default/i18n/de.json +2 -1
  119. package/assets/_default/i18n/en.json +7 -6
  120. package/assets/_default/svg/ic_add_document_file_as_new_version.svg +1 -0
  121. package/assets/_default/svg/ic_create_document.svg +1 -0
  122. package/assets/_default/svg/ic_create_document_in_folder.svg +1 -0
  123. package/esm2020/app/eo-client/about-state/about-state.component.mjs +5 -5
  124. package/esm2020/app/eo-client/dashboard/dashboard.component.mjs +17 -14
  125. package/esm2020/app/eo-client/favorite-state/favorite-state.component.mjs +15 -14
  126. package/esm2020/app/eo-client/inbox-state/inbox-state/inbox-state.component.mjs +14 -11
  127. package/esm2020/app/eo-client/login/login.component.mjs +6 -7
  128. package/esm2020/app/eo-client/notifications-state/notifications-state.component.mjs +16 -12
  129. package/esm2020/app/eo-client/object-state/object-state/object-state.component.mjs +28 -24
  130. package/esm2020/app/eo-client/prepare-state/prepare-state/prepare-state.component.mjs +12 -9
  131. package/esm2020/app/eo-client/process-state/process-state.component.mjs +6 -9
  132. package/esm2020/app/eo-client/recyclebin-state/recyclebin-state.component.mjs +17 -16
  133. package/esm2020/app/eo-client/result-state/result-state.component.mjs +11 -8
  134. package/esm2020/app/eo-client/settings/settings.component.mjs +16 -12
  135. package/esm2020/app/eo-client/stored-queries-state/stored-queries-state.component.mjs +17 -14
  136. package/esm2020/app/eo-client/version-state/version-state.component.mjs +13 -10
  137. package/esm2020/app/eo-framework/accordion/accordion.module.mjs +3 -7
  138. package/esm2020/app/eo-framework/accordion/simple-accordion/simple-accordion.component.mjs +3 -3
  139. package/esm2020/app/eo-framework/actions/action-menu/action-menu.component.mjs +15 -11
  140. package/esm2020/app/eo-framework/actions/action.module.mjs +5 -2
  141. package/esm2020/app/eo-framework/actions/actions/add-resubmission-action/add-resubmission/add-resubmission.component.mjs +5 -7
  142. package/esm2020/app/eo-framework/actions/actions/add-subscription-action/add-subscription/add-subscription.component.mjs +3 -3
  143. package/esm2020/app/eo-framework/actions/actions/custom-actions/custom-actions.component.mjs +2 -2
  144. package/esm2020/app/eo-framework/actions/actions/share-object-action/share-object/share-object.component.mjs +43 -48
  145. package/esm2020/app/eo-framework/actions/actions/signature-action/signature/signature.component.mjs +2 -2
  146. package/esm2020/app/eo-framework/actions/actions/workflow-action/workflow/workflow.component.mjs +2 -2
  147. package/esm2020/app/eo-framework/app-shell/app-bar/app-bar.component.mjs +16 -14
  148. package/esm2020/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +7 -3
  149. package/esm2020/app/eo-framework/app-shell/app-bar/side-bar/side-bar.component.mjs +3 -5
  150. package/esm2020/app/eo-framework/app-shell/app-shell.module.mjs +1 -8
  151. package/esm2020/app/eo-framework/app-shell/index.mjs +1 -2
  152. package/esm2020/app/eo-framework/eo-framework.module.mjs +35 -76
  153. package/esm2020/app/eo-framework/form-elements/date/date.component.mjs +2 -12
  154. package/esm2020/app/eo-framework/form-elements/datetime-range/datetime-range.component.mjs +2 -2
  155. package/esm2020/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +3 -3
  156. package/esm2020/app/eo-framework/form-elements/form-elements.module.mjs +28 -37
  157. package/esm2020/app/eo-framework/form-elements/id-reference/id-reference.component.mjs +7 -8
  158. package/esm2020/app/eo-framework/form-elements/id-reference/reference-finder/reference-finder.component.mjs +10 -6
  159. package/esm2020/app/eo-framework/form-elements/number-range/number-range.component.mjs +2 -2
  160. package/esm2020/app/eo-framework/form-elements/organization/organization.component.mjs +3 -3
  161. package/esm2020/app/eo-framework/form-elements/reference/reference.component.mjs +4 -5
  162. package/esm2020/app/eo-framework/form-elements/string/string.component.mjs +3 -3
  163. package/esm2020/app/eo-framework/grid/extensions/filter/setFilters/set-filter.component.mjs +3 -3
  164. package/esm2020/app/eo-framework/grid/extensions/filter/text/text-filter.component.mjs +3 -3
  165. package/esm2020/app/eo-framework/grid/extensions/reset-filter/reset-filter.component.mjs +3 -3
  166. package/esm2020/app/eo-framework/grid/filters/datetime-filter.component.mjs +2 -6
  167. package/esm2020/app/eo-framework/grid/filters/dynamic-list-filter.component.mjs +3 -3
  168. package/esm2020/app/eo-framework/grid/filters/list-filter.component.mjs +3 -3
  169. package/esm2020/app/eo-framework/grid/filters/organization-filter.component.mjs +3 -3
  170. package/esm2020/app/eo-framework/grid/grid.component.mjs +16 -12
  171. package/esm2020/app/eo-framework/grid/grid.module.mjs +1 -5
  172. package/esm2020/app/eo-framework/inbox-details/inbox-details.component.mjs +16 -11
  173. package/esm2020/app/eo-framework/index.mjs +1 -5
  174. package/esm2020/app/eo-framework/media/media.component.mjs +32 -12
  175. package/esm2020/app/eo-framework/object-details/favorite-icon/favorite-icon.component.mjs +13 -10
  176. package/esm2020/app/eo-framework/object-details/object-details.component.mjs +42 -30
  177. package/esm2020/app/eo-framework/object-details/object-details.module.mjs +7 -3
  178. package/esm2020/app/eo-framework/object-details/object-history/object-history.component.mjs +13 -9
  179. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element-template.directive.mjs +18 -0
  180. package/esm2020/app/eo-framework/object-form/object-form/form-element/form-element.component.mjs +20 -6
  181. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +21 -22
  182. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/form-element.interface.mjs +1 -1
  183. package/esm2020/app/eo-framework/object-form/object-form/form-element-table/row-edit/row-edit.component.mjs +94 -32
  184. package/esm2020/app/eo-framework/object-form/object-form/object-form-group/object-form-group.component.mjs +6 -4
  185. package/esm2020/app/eo-framework/object-form/object-form/object-form-script/object-form-script.service.mjs +2 -3
  186. package/esm2020/app/eo-framework/object-form/object-form/object-form.component.mjs +3 -5
  187. package/esm2020/app/eo-framework/object-form/object-form-helper.service.mjs +2 -2
  188. package/esm2020/app/eo-framework/object-form/object-form.module.mjs +9 -10
  189. package/esm2020/app/eo-framework/object-state-details/object-state-details.component.mjs +15 -13
  190. package/esm2020/app/eo-framework/prepare-details/prepare-details.component.mjs +16 -14
  191. package/esm2020/app/eo-framework/process/details/process-details.component.mjs +16 -12
  192. package/esm2020/app/eo-framework/process-form/process-form.component.mjs +2 -2
  193. package/esm2020/app/eo-framework/recyclebin-details/recyclebin-details.component.mjs +25 -17
  194. package/esm2020/app/eo-framework/result-list/result-list.component.mjs +18 -14
  195. package/esm2020/app/eo-framework/settings/settings.module.mjs +1 -5
  196. package/esm2020/app/eo-framework/stored-query/stored-query-details/stored-query-details.component.mjs +17 -13
  197. package/esm2020/app/eo-framework/ui/eo-dialog/eo-dialog.component.mjs +12 -8
  198. package/esm2020/app/eo-framework/ui/eo-icon/eo-icon.component.mjs +2 -2
  199. package/esm2020/app/eo-framework/ui/outside-click/outside-click.directive.mjs +11 -8
  200. package/esm2020/app/eo-framework/ui/signature-tab/signature-tab.component.mjs +3 -6
  201. package/esm2020/app/eo-framework/upload-overlay/upload-overlay.component.mjs +3 -3
  202. package/esm2020/app/eo-framework/util/index.mjs +1 -2
  203. package/esm2020/app/eo-framework/util/util.module.mjs +2 -3
  204. package/esm2020/app/eo-framework-core/layout/layout.service.mjs +61 -63
  205. package/esm2020/app/eo-framework-core/pipes/locale-number.pipe.mjs +11 -8
  206. package/esm2020/projects/eo-sdk/core/lib/eo-core.module.mjs +8 -8
  207. package/esm2020/projects/eo-sdk/core/lib/model/inbox-item.model.mjs +2 -6
  208. package/esm2020/projects/eo-sdk/core/lib/service/dms/dms.service.mjs +14 -16
  209. package/esm2020/projects/eo-sdk/core/lib/service/prepare/prepare.service.mjs +15 -12
  210. package/esm2020/projects/eo-sdk/core/lib/service/system/system.service.mjs +2 -6
  211. package/esm2020/projects/eo-sdk/core/lib/util/utils.mjs +4 -4
  212. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs +158 -166
  213. package/fesm2015/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  214. package/fesm2015/eo-sdk-client.mjs +13541 -14313
  215. package/fesm2015/eo-sdk-client.mjs.map +1 -1
  216. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs +158 -166
  217. package/fesm2020/eo-sdk-client-projects-eo-sdk-core.mjs.map +1 -1
  218. package/fesm2020/eo-sdk-client.mjs +13563 -14335
  219. package/fesm2020/eo-sdk-client.mjs.map +1 -1
  220. package/package.json +4 -5
  221. package/projects/eo-sdk/core/lib/eo-core.module.d.ts.map +1 -1
  222. package/projects/eo-sdk/core/lib/model/inbox-item.model.d.ts.map +1 -1
  223. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts +10 -8
  224. package/projects/eo-sdk/core/lib/service/dms/dms.service.d.ts.map +1 -1
  225. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts +1 -0
  226. package/projects/eo-sdk/core/lib/service/prepare/prepare.service.d.ts.map +1 -1
  227. package/projects/eo-sdk/core/lib/service/system/system.service.d.ts.map +1 -1
  228. package/projects/eo-sdk/core/lib/util/utils.d.ts +3 -4
  229. package/projects/eo-sdk/core/lib/util/utils.d.ts.map +1 -1
  230. package/scss/_eo-variables.scss +3 -1
  231. package/scss/_main.scss +1 -1
  232. package/scss/_mixins.scss +6 -6
  233. package/scss/_yuuvis-components.scss +1 -0
  234. package/styles.css +3 -3
  235. package/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.d.ts +0 -24
  236. package/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.d.ts.map +0 -1
  237. package/app/eo-framework/split/index.d.ts +0 -5
  238. package/app/eo-framework/split/index.d.ts.map +0 -1
  239. package/app/eo-framework/split/split/split.component.d.ts +0 -83
  240. package/app/eo-framework/split/split/split.component.d.ts.map +0 -1
  241. package/app/eo-framework/split/split-area/split-area.component.d.ts +0 -37
  242. package/app/eo-framework/split/split-area/split-area.component.d.ts.map +0 -1
  243. package/app/eo-framework/split/split-gutter/split-gutter.directive.d.ts +0 -21
  244. package/app/eo-framework/split/split-gutter/split-gutter.directive.d.ts.map +0 -1
  245. package/app/eo-framework/split/split.module.d.ts +0 -12
  246. package/app/eo-framework/split/split.module.d.ts.map +0 -1
  247. package/app/eo-framework/undock-split/undock-split.component.d.ts +0 -28
  248. package/app/eo-framework/undock-split/undock-split.component.d.ts.map +0 -1
  249. package/app/eo-framework/undock-split/undock-split.service.d.ts +0 -43
  250. package/app/eo-framework/undock-split/undock-split.service.d.ts.map +0 -1
  251. package/app/eo-framework/undock-split/undock-state.interface.d.ts +0 -6
  252. package/app/eo-framework/undock-split/undock-state.interface.d.ts.map +0 -1
  253. package/app/eo-framework/util/unsubscribe/unsubscribe.component.d.ts +0 -11
  254. package/app/eo-framework/util/unsubscribe/unsubscribe.component.d.ts.map +0 -1
  255. package/esm2020/app/eo-framework/app-shell/app-bar/app-layout/app-layout.component.mjs +0 -67
  256. package/esm2020/app/eo-framework/split/index.mjs +0 -5
  257. package/esm2020/app/eo-framework/split/split/split.component.mjs +0 -373
  258. package/esm2020/app/eo-framework/split/split-area/split-area.component.mjs +0 -131
  259. package/esm2020/app/eo-framework/split/split-gutter/split-gutter.directive.mjs +0 -73
  260. package/esm2020/app/eo-framework/split/split.module.mjs +0 -28
  261. package/esm2020/app/eo-framework/undock-split/undock-split.component.mjs +0 -89
  262. package/esm2020/app/eo-framework/undock-split/undock-split.service.mjs +0 -135
  263. package/esm2020/app/eo-framework/undock-split/undock-state.interface.mjs +0 -2
  264. package/esm2020/app/eo-framework/util/unsubscribe/unsubscribe.component.mjs +0 -23
@@ -1,19 +1,24 @@
1
- import { Component, Input, Output, EventEmitter, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { takeUntil } from 'rxjs/operators';
3
- import { UnsubscribeOnDestroy } from '../../../../util/unsubscribe/unsubscribe.component';
1
+ import { __decorate } from "tslib";
2
+ import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { Utils } from '@eo-sdk/core';
4
+ import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
5
+ import { ObjectFormScriptService } from '../../object-form-script/object-form-script.service';
4
6
  import * as i0 from "@angular/core";
5
7
  import * as i1 from "../../../../../eo-framework-core/pending-changes/pending-changes.service";
6
- import * as i2 from "@angular/forms";
7
- import * as i3 from "@eo-sdk/core";
8
- import * as i4 from "@angular/common";
9
- import * as i5 from "@ngx-translate/core";
10
- import * as i6 from "../../../../ui/eo-icon/eo-icon.component";
11
- import * as i7 from "../../../../ui/eo-dialog/eo-dialog.component";
12
- import * as i8 from "../../../../form-elements/checkbox/checkbox.component";
8
+ import * as i2 from "../../object-form-script/object-form-script.service";
9
+ import * as i3 from "../../../object-form-helper.service";
10
+ import * as i4 from "@angular/forms";
11
+ import * as i5 from "@eo-sdk/core";
12
+ import * as i6 from "@angular/common";
13
+ import * as i7 from "@ngx-translate/core";
14
+ import * as i8 from "../../../../ui/eo-icon/eo-icon.component";
15
+ import * as i9 from "../../../../ui/eo-dialog/eo-dialog.component";
16
+ import * as i10 from "../../../../form-elements/checkbox/checkbox.component";
17
+ import * as i11 from "../../form-element/form-element.component";
13
18
  /**
14
19
  * Component for editing a row from an object forms table.
15
20
  */
16
- export class RowEditComponent extends UnsubscribeOnDestroy {
21
+ let RowEditComponent = class RowEditComponent {
17
22
  set showDeleteDialog(val) {
18
23
  this._showDeleteDialog = val;
19
24
  if (this._showDeleteDialog) {
@@ -25,18 +30,22 @@ export class RowEditComponent extends UnsubscribeOnDestroy {
25
30
  }
26
31
  set row(r) {
27
32
  this._row = r;
28
- this.queryEnabled = r.situation === 'SEARCH';
33
+ this.queryEnabled = r?.situation === 'SEARCH';
29
34
  this.copyEnabled = !this.queryEnabled;
30
35
  this.saveEnabled = !this.queryEnabled;
31
36
  this.deleteEnabled = !this.queryEnabled;
32
- this.isNewRow = this._row.index === -1;
37
+ this.isNewRow = this._row?.index === -1;
38
+ this.unsubscribeAll();
39
+ this._buildRowEditForm();
33
40
  }
34
- constructor(pendingChanges, fb, storageService) {
35
- super();
41
+ constructor(pendingChanges, formScriptService, formHelperService, fb, storageService) {
36
42
  this.pendingChanges = pendingChanges;
43
+ this.formScriptService = formScriptService;
44
+ this.formHelperService = formHelperService;
37
45
  this.fb = fb;
38
46
  this.storageService = storageService;
39
- this.formState = {};
47
+ this.editFormControls = [];
48
+ this.subscriptions = [];
40
49
  this.queryEnabled = true;
41
50
  this.copyEnabled = true;
42
51
  this.deleteEnabled = true;
@@ -48,25 +57,31 @@ export class RowEditComponent extends UnsubscribeOnDestroy {
48
57
  this.onSave = new EventEmitter();
49
58
  this.onSaveCopy = new EventEmitter();
50
59
  this.onDelete = new EventEmitter();
51
- // @ViewChild('rowForm') rowForm: ObjectFormComponent;
52
- this.rowForm = {
53
- getObservedScriptModel: () => { },
54
- getFormData: () => { }
55
- };
56
60
  this.createNewRow = !!this.storageService.getItem('createNewRow');
57
61
  this.createNewCheckbox = this.fb.control(this.createNewRow);
58
- this.createNewCheckbox.valueChanges.pipe(takeUntil(this.componentDestroyed$)).subscribe((v) => {
62
+ this.createNewCheckbox.valueChanges.pipe(untilDestroyed(this)).subscribe((v) => {
59
63
  this.createNewRow = v;
60
64
  this.storageService.setItem('createNewRow', this.createNewRow);
61
65
  });
62
66
  }
67
+ /**
68
+ * Returns the observed model that was passed to the current form script running. If there is
69
+ * no form script, this method will return NULL.
70
+ * @returns
71
+ */
72
+ _getObservedScriptModel() {
73
+ return this.scriptingScope ? this.scriptingScope.getModel() : null;
74
+ }
75
+ _getFormData() {
76
+ return this.formHelperService.extractFormData(this.editForm, this._row.situation, this._row.form.data);
77
+ }
63
78
  onFormReady() {
64
79
  // execute after form has been set up, because otherwise not all of the components are ready to be used
65
80
  // if for example a form script executed `onrowedit` tries to apply a filter or something like that
66
81
  if (this._row.tableElement.onrowedit && !this._row.tableElement.readonly) {
67
82
  // Generate row API object (wrapper) for the script
68
83
  const row = {
69
- model: this.rowForm.getObservedScriptModel(),
84
+ model: this._getObservedScriptModel(),
70
85
  index: this._row.index,
71
86
  copyEnabled: this.copyEnabled,
72
87
  deleteEnabled: this.deleteEnabled,
@@ -82,7 +97,16 @@ export class RowEditComponent extends UnsubscribeOnDestroy {
82
97
  }
83
98
  }
84
99
  onFormStatusChanged(evt) {
85
- this.formState = evt;
100
+ // check if indexdata has been changed
101
+ let currentFormData = this._getFormData();
102
+ let idxChange = JSON.stringify(this.formData) !== JSON.stringify(currentFormData);
103
+ this.formData = Utils.formDataParse(Utils.formDataStringify(currentFormData));
104
+ this.formState = {
105
+ invalid: this.editForm.invalid,
106
+ dirty: this.editForm.dirty,
107
+ data: this.formData,
108
+ indexdataChanged: idxChange
109
+ };
86
110
  if (this.formState.indexdataChanged) {
87
111
  this.startPending();
88
112
  }
@@ -90,6 +114,31 @@ export class RowEditComponent extends UnsubscribeOnDestroy {
90
114
  this.finishPending();
91
115
  }
92
116
  }
117
+ _buildRowEditForm() {
118
+ if (this._row) {
119
+ const formGenRes = this.formHelperService.buildReactiveForm({
120
+ formModel: {
121
+ elements: [{
122
+ type: 'o2mGroup',
123
+ elements: structuredClone(this._row.form.elements)
124
+ }]
125
+ }, disabled: this._row.form.disabled, data: this._row.form.data
126
+ }, this.formScriptService, true);
127
+ this.editForm = formGenRes.form;
128
+ this.scriptingScope = formGenRes.scriptingScope;
129
+ this.subscriptions = formGenRes.controlValueSubscriptions;
130
+ const ctrls = this.editForm.controls.core.controls;
131
+ this.editFormControls = Object.keys(ctrls).map(k => ctrls[k]);
132
+ setTimeout(() => {
133
+ if (!this.editForm)
134
+ return;
135
+ let formStateWatch = this.editForm.statusChanges.pipe()
136
+ .subscribe((e) => this.onFormStatusChanged(e));
137
+ this.subscriptions.push(formStateWatch);
138
+ this.onFormReady();
139
+ }, 300);
140
+ }
141
+ }
93
142
  startPending() {
94
143
  // because this method will be called every time the form status changes,
95
144
  // pending task will only be started once until it was finished
@@ -107,7 +156,7 @@ export class RowEditComponent extends UnsubscribeOnDestroy {
107
156
  if (!this.formState.invalid) {
108
157
  this.onSave.emit({
109
158
  index: this._row.index,
110
- rowData: this.rowForm.getFormData(),
159
+ rowData: this._getFormData(),
111
160
  createNewRow: this.createNewRow
112
161
  });
113
162
  }
@@ -120,7 +169,7 @@ export class RowEditComponent extends UnsubscribeOnDestroy {
120
169
  if (!this.formState.invalid) {
121
170
  this.onSaveCopy.emit({
122
171
  index: this._row.index,
123
- rowData: this.rowForm.getFormData(),
172
+ rowData: this._getFormData(),
124
173
  createNewRow: this.createNewRow
125
174
  });
126
175
  }
@@ -135,13 +184,26 @@ export class RowEditComponent extends UnsubscribeOnDestroy {
135
184
  this.finishPending();
136
185
  this.onCancel.emit();
137
186
  }
138
- }
139
- RowEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RowEditComponent, deps: [{ token: i1.PendingChangesService }, { token: i2.UntypedFormBuilder }, { token: i3.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component });
140
- RowEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: RowEditComponent, selector: "eo-row-edit", inputs: { limitReached: "limitReached", row: "row" }, outputs: { onCancel: "onCancel", onSave: "onSave", onSaveCopy: "onSaveCopy", onDelete: "onDelete" }, viewQueries: [{ propertyName: "confirmDeleteButton", first: true, predicate: ["confirmDelete"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\" [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\">\n <!-- <eo-object-form [formOptions]=\"_row.formOptions\" #rowForm\n [isInnerTableForm]=\"true\"\n (onFormReady)=\"onFormReady()\"\n (statusChanged)=\"onFormStatusChanged($event)\">\n </eo-object-form> -->\n </div>\n\n <div class=\"actions\">\n <eo-checkbox *ngIf=\"isNewRow\" title=\"{{'eo.form.table.options.checkbox.new.title' | translate}}\" [formControl]=\"createNewCheckbox\"></eo-checkbox>\n <span *ngIf=\"isNewRow\" class=\"add-label\" translate>eo.form.table.options.checkbox.new</span>\n <button type=\"button\" *ngIf=\"deleteEnabled && !isNewRow && !_row.formOptions.disabled && !queryEnabled\" (click)=\"showDeleteDialog = true;\"\n title=\"{{'eo.form.table.options.btn.delete' | translate}}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"></eo-icon>\n </button>\n <button type=\"button\" (click)=\"saveCopy()\" class=\"seco\"\n *ngIf=\"copyEnabled && !isNewRow && !_row.formOptions.disabled\" [disabled]=\"limitReached || saving || formState.invalid\"\n translate>eo.form.table.options.btn.copy</button>\n <button type=\"button\" (click)=\"save()\" class=\"primary\"\n *ngIf=\"saveEnabled && !_row.formOptions.disabled\" [disabled]=\"(limitReached && isNewRow) || saving || formState.invalid || (!formState.dirty && !isNewRow)\"\n >{{ 'eo.form.table.options.btn.save' + (isNewRow ? '.new' : '') | translate}}</button>\n <!-- query button for SEARCH situation -->\n <button type=\"button\" (click)=\"save()\" class=\"primary\"\n *ngIf=\"queryEnabled\" [disabled]=\"formState.invalid || !formState.indexdataChanged\"\n translate>eo.form.table.options.btn.save</button>\n </div>\n\n</div>\n\n<eo-dialog [title]=\"('eo.form.table.options.confirm.delete' | translate)\" [(visible)]=\"showDeleteDialog\" [minWidth]=\"400\">\n <div class=\"action-buttons flex-row\" style=\"padding: 8px;\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.form.table.options.btn.cancel</button>\n <button type=\"button\" #confirmDelete (click)=\"delete()\" class=\"button primary\"\n translate>eo.form.table.options.btn.ok</button>\n </div>\n</eo-dialog>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i7.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i8.CheckboxComponent, selector: "eo-checkbox", inputs: ["tristate", "readonly"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
187
+ unsubscribeAll() {
188
+ if (this.subscriptions.length) {
189
+ this.subscriptions.forEach(s => s.unsubscribe());
190
+ this.subscriptions = [];
191
+ }
192
+ }
193
+ ngOnDestroy() {
194
+ this.unsubscribeAll();
195
+ }
196
+ };
197
+ RowEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RowEditComponent, deps: [{ token: i1.PendingChangesService }, { token: i2.ObjectFormScriptService }, { token: i3.ObjectFormHelperService }, { token: i4.UntypedFormBuilder }, { token: i5.LocalStorageService }], target: i0.ɵɵFactoryTarget.Component });
198
+ RowEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: RowEditComponent, selector: "eo-row-edit", inputs: { limitReached: "limitReached", row: "row" }, outputs: { onCancel: "onCancel", onSave: "onSave", onSaveCopy: "onSaveCopy", onDelete: "onDelete" }, providers: [ObjectFormScriptService], viewQueries: [{ propertyName: "confirmDeleteButton", first: true, predicate: ["confirmDelete"], descendants: true }], ngImport: i0, template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\"\n [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\" [formGroup]=\"editForm\" *ngIf=\"editForm\">\n <eo-form-element *ngFor=\"let c of editFormControls\" [element]=\"c\" [situation]=\"_row?.situation\" [skipToggle]=\"true\">\n </eo-form-element>\n </div>\n\n <div class=\"actions\">\n <eo-checkbox *ngIf=\"isNewRow\" title=\"{{'eo.form.table.options.checkbox.new.title' | translate}}\"\n [formControl]=\"createNewCheckbox\"></eo-checkbox>\n <span *ngIf=\"isNewRow\" class=\"add-label\" translate>eo.form.table.options.checkbox.new</span>\n <button type=\"button\" *ngIf=\"deleteEnabled && !isNewRow && !_row?.form.disabled && !queryEnabled\"\n (click)=\"showDeleteDialog = true;\" title=\"{{'eo.form.table.options.btn.delete' | translate}}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"></eo-icon>\n </button>\n <button type=\"button\" (click)=\"saveCopy()\" class=\"seco\" *ngIf=\"copyEnabled && !isNewRow && !_row?.form.disabled\"\n [disabled]=\"limitReached || saving || formState?.invalid\" translate>eo.form.table.options.btn.copy</button>\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"saveEnabled && !_row?.form.disabled\"\n [disabled]=\"(limitReached && isNewRow) || saving || formState?.invalid || (!formState?.dirty && !isNewRow)\">{{\n 'eo.form.table.options.btn.save' + (isNewRow ? '.new' : '') | translate}}</button>\n <!-- query button for SEARCH situation -->\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"queryEnabled\"\n [disabled]=\"formState?.invalid || !formState?.indexdataChanged\" translate>eo.form.table.options.btn.save</button>\n </div>\n\n</div>\n\n<eo-dialog [title]=\"('eo.form.table.options.confirm.delete' | translate)\" [(visible)]=\"showDeleteDialog\"\n [minWidth]=\"400\">\n <div class=\"action-buttons flex-row\" style=\"padding: 8px;\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.form.table.options.btn.cancel</button>\n <button type=\"button\" #confirmDelete (click)=\"delete()\" class=\"button primary\"\n translate>eo.form.table.options.btn.ok</button>\n </div>\n</eo-dialog>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i8.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "component", type: i9.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i10.CheckboxComponent, selector: "eo-checkbox", inputs: ["tristate", "readonly"] }, { kind: "component", type: i11.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
199
+ RowEditComponent = __decorate([
200
+ UntilDestroy()
201
+ ], RowEditComponent);
202
+ export { RowEditComponent };
141
203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RowEditComponent, decorators: [{
142
204
  type: Component,
143
- args: [{ selector: 'eo-row-edit', encapsulation: ViewEncapsulation.None, template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\" [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\">\n <!-- <eo-object-form [formOptions]=\"_row.formOptions\" #rowForm\n [isInnerTableForm]=\"true\"\n (onFormReady)=\"onFormReady()\"\n (statusChanged)=\"onFormStatusChanged($event)\">\n </eo-object-form> -->\n </div>\n\n <div class=\"actions\">\n <eo-checkbox *ngIf=\"isNewRow\" title=\"{{'eo.form.table.options.checkbox.new.title' | translate}}\" [formControl]=\"createNewCheckbox\"></eo-checkbox>\n <span *ngIf=\"isNewRow\" class=\"add-label\" translate>eo.form.table.options.checkbox.new</span>\n <button type=\"button\" *ngIf=\"deleteEnabled && !isNewRow && !_row.formOptions.disabled && !queryEnabled\" (click)=\"showDeleteDialog = true;\"\n title=\"{{'eo.form.table.options.btn.delete' | translate}}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"></eo-icon>\n </button>\n <button type=\"button\" (click)=\"saveCopy()\" class=\"seco\"\n *ngIf=\"copyEnabled && !isNewRow && !_row.formOptions.disabled\" [disabled]=\"limitReached || saving || formState.invalid\"\n translate>eo.form.table.options.btn.copy</button>\n <button type=\"button\" (click)=\"save()\" class=\"primary\"\n *ngIf=\"saveEnabled && !_row.formOptions.disabled\" [disabled]=\"(limitReached && isNewRow) || saving || formState.invalid || (!formState.dirty && !isNewRow)\"\n >{{ 'eo.form.table.options.btn.save' + (isNewRow ? '.new' : '') | translate}}</button>\n <!-- query button for SEARCH situation -->\n <button type=\"button\" (click)=\"save()\" class=\"primary\"\n *ngIf=\"queryEnabled\" [disabled]=\"formState.invalid || !formState.indexdataChanged\"\n translate>eo.form.table.options.btn.save</button>\n </div>\n\n</div>\n\n<eo-dialog [title]=\"('eo.form.table.options.confirm.delete' | translate)\" [(visible)]=\"showDeleteDialog\" [minWidth]=\"400\">\n <div class=\"action-buttons flex-row\" style=\"padding: 8px;\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.form.table.options.btn.cancel</button>\n <button type=\"button\" #confirmDelete (click)=\"delete()\" class=\"button primary\"\n translate>eo.form.table.options.btn.ok</button>\n </div>\n</eo-dialog>\n" }]
144
- }], ctorParameters: function () { return [{ type: i1.PendingChangesService }, { type: i2.UntypedFormBuilder }, { type: i3.LocalStorageService }]; }, propDecorators: { confirmDeleteButton: [{
205
+ args: [{ selector: 'eo-row-edit', encapsulation: ViewEncapsulation.None, providers: [ObjectFormScriptService], template: "<div class=\"row-edit\">\n <div class=\"edit-header\" *ngIf=\"!queryEnabled\">\n <div class=\"new-indicator\" *ngIf=\"isNewRow\" translate>eo.form.table.options.indicator.new</div>\n <div></div>\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\" (click)=\"cancel()\" class=\"button cancel-icon\"\n [iconTitle]=\"('eo.form.table.options.btn.cancel' | translate)\"></eo-icon>\n </div>\n\n <div class=\"form\" [formGroup]=\"editForm\" *ngIf=\"editForm\">\n <eo-form-element *ngFor=\"let c of editFormControls\" [element]=\"c\" [situation]=\"_row?.situation\" [skipToggle]=\"true\">\n </eo-form-element>\n </div>\n\n <div class=\"actions\">\n <eo-checkbox *ngIf=\"isNewRow\" title=\"{{'eo.form.table.options.checkbox.new.title' | translate}}\"\n [formControl]=\"createNewCheckbox\"></eo-checkbox>\n <span *ngIf=\"isNewRow\" class=\"add-label\" translate>eo.form.table.options.checkbox.new</span>\n <button type=\"button\" *ngIf=\"deleteEnabled && !isNewRow && !_row?.form.disabled && !queryEnabled\"\n (click)=\"showDeleteDialog = true;\" title=\"{{'eo.form.table.options.btn.delete' | translate}}\">\n <eo-icon [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\"></eo-icon>\n </button>\n <button type=\"button\" (click)=\"saveCopy()\" class=\"seco\" *ngIf=\"copyEnabled && !isNewRow && !_row?.form.disabled\"\n [disabled]=\"limitReached || saving || formState?.invalid\" translate>eo.form.table.options.btn.copy</button>\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"saveEnabled && !_row?.form.disabled\"\n [disabled]=\"(limitReached && isNewRow) || saving || formState?.invalid || (!formState?.dirty && !isNewRow)\">{{\n 'eo.form.table.options.btn.save' + (isNewRow ? '.new' : '') | translate}}</button>\n <!-- query button for SEARCH situation -->\n <button type=\"button\" (click)=\"save()\" class=\"primary\" *ngIf=\"queryEnabled\"\n [disabled]=\"formState?.invalid || !formState?.indexdataChanged\" translate>eo.form.table.options.btn.save</button>\n </div>\n\n</div>\n\n<eo-dialog [title]=\"('eo.form.table.options.confirm.delete' | translate)\" [(visible)]=\"showDeleteDialog\"\n [minWidth]=\"400\">\n <div class=\"action-buttons flex-row\" style=\"padding: 8px;\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.form.table.options.btn.cancel</button>\n <button type=\"button\" #confirmDelete (click)=\"delete()\" class=\"button primary\"\n translate>eo.form.table.options.btn.ok</button>\n </div>\n</eo-dialog>" }]
206
+ }], ctorParameters: function () { return [{ type: i1.PendingChangesService }, { type: i2.ObjectFormScriptService }, { type: i3.ObjectFormHelperService }, { type: i4.UntypedFormBuilder }, { type: i5.LocalStorageService }]; }, propDecorators: { confirmDeleteButton: [{
145
207
  type: ViewChild,
146
208
  args: ['confirmDelete']
147
209
  }], limitReached: [{
@@ -157,4 +219,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
157
219
  }], onDelete: [{
158
220
  type: Output
159
221
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBeUIsTUFBTSxlQUFlLENBQUM7QUFLNUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7Ozs7O0FBSXhGOztHQUVHO0FBUUgsTUFBTSxPQUFPLGdCQUFrQixTQUFRLG9CQUFvQjtJQW1CekQsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFZO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUM7UUFFN0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDckU7SUFDSCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUlELElBQ0ksR0FBRyxDQUFDLENBQVU7UUFDaEIsSUFBSSxDQUFDLElB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QTlDLFNBQVM7dUJBQUMsZUFBZTtnQkE4QmpCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0YsR0FBRztzQkFETixLQUFLO2dCQVVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkRlc3Ryb3ksIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gaW1wb3J0IHsgT2JqZWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZW5kaW5nQ2hhbmdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtQnVpbGRlcn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHt0YWtlVW50aWx9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7VW5zdWJzY3JpYmVPbkRlc3Ryb3l9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWwvdW5zdWJzY3JpYmUvdW5zdWJzY3JpYmUuY29tcG9uZW50JztcbmltcG9ydCB7TG9jYWxTdG9yYWdlU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7RWRpdFJvdywgRWRpdFJvd1Jlc3VsdH0gZnJvbSAnLi4vZm9ybS1lbGVtZW50LmludGVyZmFjZSc7XG5cbi8qKlxuICogQ29tcG9uZW50IGZvciBlZGl0aW5nIGEgcm93IGZyb20gYW4gb2JqZWN0IGZvcm1zIHRhYmxlLlxuICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLXJvdy1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Jvdy1lZGl0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm93LWVkaXQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBSb3dFZGl0Q29tcG9uZW50ICBleHRlbmRzIFVuc3Vic2NyaWJlT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZScpIGNvbmZpcm1EZWxldGVCdXR0b246IEVsZW1lbnRSZWY7XG5cbiAgLy8gSUQgc2V0IGJ5IHBlbmRpbmdDaGFuZ2VzIHNlcnZpY2Ugd2hlbiBlZGl0aW5nIHJvdyBkYXRhXG4gIC8vIFVzZWQgdG8gZmluaXNoIHRoZSBwZW5kaW5nIHRhc2sgd2hlbiBlZGl0aW5nIGlzIGRvbmVcbiAgcGVuZGluZ1Rhc2tJZDogc3RyaW5nO1xuXG4gIF9yb3c6IEVkaXRSb3c7XG4gIGlzTmV3Um93OiBib29sZWFuO1xuICBmb3JtU3RhdGU6IGFueSA9IHt9O1xuICBxdWVyeUVuYWJsZWQgPSB0cnVlO1xuICBjb3B5RW5hYmxlZCA9IHRydWU7XG4gIGRlbGV0ZUVuYWJsZWQgPSB0cnVlO1xuICBzYXZlRW5hYmxlZCA9IHRydWU7XG4gIGNyZWF0ZU5ld0NoZWNrYm94OiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIGNyZWF0ZU5ld1JvdyA9IGZhbHNlO1xuICBfc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBzYXZpbmcgPSBmYWxzZTtcblxuICBzZXQgc2hvd0RlbGV0ZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gdmFsO1xuXG4gICAgaWYgKHRoaXMuX3Nob3dEZWxldGVEaWFsb2cpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25maXJtRGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dEZWxldGVEaWFsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dEZWxldGVEaWFsb2c7XG4gIH1cblxuICBASW5wdXQoKSBsaW1pdFJlYWNoZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2V0IHJvdyhyOiBFZGl0Um93KSB7XG4gICAgdGhpcy5fcm93ID0gcjtcbiAgICB0aGlzLnF1ZXJ5RW5hYmxlZCA9IHIuc2l0dWF0aW9uID09PSAnU0VBUkNIJztcbiAgICB0aGlzLmNvcHlFbmFibGVkID0gIXRoaXMucXVlcnlFbmFibGVkO1xuICAgIHRoaXMuc2F2ZUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5kZWxldGVFbmFibGVkID0gIXRoaXMucXVlcnlFbmFibGVkO1xuICAgIHRoaXMuaXNOZXdSb3cgPSB0aGlzLl9yb3cuaW5kZXggPT09IC0xO1xuICB9XG5cbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0Um93UmVzdWx0PigpO1xuICBAT3V0cHV0KCkgb25TYXZlQ29weSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdFJvd1Jlc3VsdD4oKTtcbiAgQE91dHB1dCgpIG9uRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgLy8gIEBWaWV3Q2hpbGQoJ3Jvd0Zvcm0nKSByb3dGb3JtOiBPYmplY3RGb3JtQ29tcG9uZW50O1xuICByb3dGb3JtID0ge1xuICAgIGdldE9ic2VydmVkU2NyaXB0TW9kZWw6ICgpID0+IHt9LFxuICAgIGdldEZvcm1EYXRhOiAoKSA9PiB7fVxuICB9IFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSwgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLCBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNyZWF0ZU5ld1JvdyA9ICEhdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjcmVhdGVOZXdSb3cnKTtcbiAgICB0aGlzLmNyZWF0ZU5ld0NoZWNrYm94ID0gdGhpcy5mYi5jb250cm9sKHRoaXMuY3JlYXRlTmV3Um93KTtcbiAgICB0aGlzLmNyZWF0ZU5ld0NoZWNrYm94LnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlTmV3Um93ID0gdjtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnY3JlYXRlTmV3Um93JywgdGhpcy5jcmVhdGVOZXdSb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgb25Gb3JtUmVhZHkoKSB7XG4gICAgLy8gZXhlY3V0ZSBhZnRlciBmb3JtIGhhcyBiZWVuIHNldCB1cCwgYmVjYXVzZSBvdGhlcndpc2Ugbm90IGFsbCBvZiB0aGUgY29tcG9uZW50cyBhcmUgcmVhZHkgdG8gYmUgdXNlZFxuICAgIC8vIGlmIGZvciBleGFtcGxlIGEgZm9ybSBzY3JpcHQgZXhlY3V0ZWQgYG9ucm93ZWRpdGAgdHJpZXMgdG8gYXBwbHkgYSBmaWx0ZXIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdFxuICAgIGlmICh0aGlzLl9yb3cudGFibGVFbGVtZW50Lm9ucm93ZWRpdCAmJiAhdGhpcy5fcm93LnRhYmxlRWxlbWVudC5yZWFkb25seSkge1xuXG4gICAgICAvLyBHZW5lcmF0ZSByb3cgQVBJIG9iamVjdCAod3JhcHBlcikgZm9yIHRoZSBzY3JpcHRcbiAgICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMucm93Rm9ybS5nZXRPYnNlcnZlZFNjcmlwdE1vZGVsKCksXG4gICAgICAgIGluZGV4OiB0aGlzLl9yb3cuaW5kZXgsXG4gICAgICAgIGNvcHlFbmFibGVkOiB0aGlzLmNvcHlFbmFibGVkLFxuICAgICAgICBkZWxldGVFbmFibGVkOiB0aGlzLmRlbGV0ZUVuYWJsZWQsXG4gICAgICAgIHNhdmVFbmFibGVkOiB0aGlzLnNhdmVFbmFibGVkLFxuICAgICAgICBwZXJzaXN0ZWQ6IHRoaXMuaXNOZXdSb3cgLy8gTm90IHBlcnNpc3RlZCBpZiBpdCBpcyBhIG5ldyByb3dcbiAgICAgIH07XG4gICAgICAvLyBDYWxsIHRoZSBzY3JpcHQgZnVuY3Rpb24gLi4uXG4gICAgICB0aGlzLl9yb3cudGFibGVFbGVtZW50Lm9ucm93ZWRpdCh0aGlzLl9yb3cudGFibGVFbGVtZW50LCByb3cpO1xuICAgICAgLy8gLi4uIGFuZCByZXNwZWN0IHRoZSByZXN1bHRcbiAgICAgIHRoaXMuY29weUVuYWJsZWQgPSByb3cuY29weUVuYWJsZWQ7XG4gICAgICB0aGlzLmRlbGV0ZUVuYWJsZWQgPSByb3cuZGVsZXRlRW5hYmxlZDtcbiAgICAgIHRoaXMuc2F2ZUVuYWJsZWQgPSByb3cuc2F2ZUVuYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChldnQpIHtcbiAgICB0aGlzLmZvcm1TdGF0ZSA9IGV2dDtcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuaW5kZXhkYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFBlbmRpbmcoKSB7XG4gICAgLy8gYmVjYXVzZSB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBmb3JtIHN0YXR1cyBjaGFuZ2VzLFxuICAgIC8vIHBlbmRpbmcgdGFzayB3aWxsIG9ubHkgYmUgc3RhcnRlZCBvbmNlIHVudGlsIGl0IHdhcyBmaW5pc2hlZFxuICAgIGlmICghdGhpcy5wZW5kaW5nQ2hhbmdlcy5oYXNQZW5kaW5nVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQgfHwgJyAnKSkge1xuICAgICAgdGhpcy5wZW5kaW5nVGFza0lkID0gdGhpcy5wZW5kaW5nQ2hhbmdlcy5zdGFydFRhc2soKTtcbiAgICB9XG4gIH1cblxuICBmaW5pc2hQZW5kaW5nKCkge1xuICAgIHRoaXMucGVuZGluZ0NoYW5nZXMuZmluaXNoVGFzayh0aGlzLnBlbmRpbmdUYXNrSWQpO1xuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZm9ybVN0YXRlLmludmFsaWQpIHtcbiAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh7XG4gICAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgICByb3dEYXRhOiB0aGlzLnJvd0Zvcm0uZ2V0Rm9ybURhdGEoKSxcbiAgICAgICAgICBjcmVhdGVOZXdSb3c6IHRoaXMuY3JlYXRlTmV3Um93XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgc2F2ZUNvcHkoKSB7XG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMub25TYXZlQ29weS5lbWl0KHtcbiAgICAgICAgICBpbmRleDogdGhpcy5fcm93LmluZGV4LFxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMucm93Rm9ybS5nZXRGb3JtRGF0YSgpLFxuICAgICAgICAgIGNyZWF0ZU5ld1JvdzogdGhpcy5jcmVhdGVOZXdSb3dcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBkZWxldGUoKSB7XG4gICAgdGhpcy5vbkRlbGV0ZS5lbWl0KHRoaXMuX3Jvdy5pbmRleCk7XG4gICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3ctZWRpdFwiPlxuICA8ZGl2IGNsYXNzPVwiZWRpdC1oZWFkZXJcIiAqbmdJZj1cIiFxdWVyeUVuYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibmV3LWluZGljYXRvclwiICpuZ0lmPVwiaXNOZXdSb3dcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmluZGljYXRvci5uZXc8L2Rpdj5cbiAgICA8ZGl2PjwvZGl2PlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIiAoY2xpY2spPVwiY2FuY2VsKClcIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWwtaWNvblwiIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNhbmNlbCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxuICAgIDwhLS0gPGVvLW9iamVjdC1mb3JtIFtmb3JtT3B0aW9uc109XCJfcm93LmZvcm1PcHRpb25zXCIgI3Jvd0Zvcm1cbiAgICAgICAgICAgICAgICAgICAgW2lzSW5uZXJUYWJsZUZvcm1dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkZvcm1SZWFkeSk9XCJvbkZvcm1SZWFkeSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKHN0YXR1c0NoYW5nZWQpPVwib25Gb3JtU3RhdHVzQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgPC9lby1vYmplY3QtZm9ybT4gLS0+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPGVvLWNoZWNrYm94ICpuZ0lmPVwiaXNOZXdSb3dcIiB0aXRsZT1cInt7J2VvLmZvcm0udGFibGUub3B0aW9ucy5jaGVja2JveC5uZXcudGl0bGUnIHwgdHJhbnNsYXRlfX1cIiBbZm9ybUNvbnRyb2xdPVwiY3JlYXRlTmV3Q2hlY2tib3hcIj48L2VvLWNoZWNrYm94PlxuICAgIDxzcGFuICpuZ0lmPVwiaXNOZXdSb3dcIiBjbGFzcz1cImFkZC1sYWJlbFwiIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuY2hlY2tib3gubmV3PC9zcGFuPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZGVsZXRlRW5hYmxlZCAmJiAhaXNOZXdSb3cgJiYgIV9yb3cuZm9ybU9wdGlvbnMuZGlzYWJsZWQgJiYgIXF1ZXJ5RW5hYmxlZFwiIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gdHJ1ZTtcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmRlbGV0ZScgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfdHJhc2guc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZUNvcHkoKVwiIGNsYXNzPVwic2Vjb1wiXG4gICAgICAgICAgICAqbmdJZj1cImNvcHlFbmFibGVkICYmICFpc05ld1JvdyAmJiAhX3Jvdy5mb3JtT3B0aW9ucy5kaXNhYmxlZFwiIFtkaXNhYmxlZF09XCJsaW1pdFJlYWNoZWQgfHwgc2F2aW5nIHx8IGZvcm1TdGF0ZS5pbnZhbGlkXCJcbiAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNvcHk8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCIgY2xhc3M9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICpuZ0lmPVwic2F2ZUVuYWJsZWQgJiYgIV9yb3cuZm9ybU9wdGlvbnMuZGlzYWJsZWRcIiBbZGlzYWJsZWRdPVwiKGxpbWl0UmVhY2hlZCAmJiBpc05ld1JvdykgfHwgc2F2aW5nIHx8IGZvcm1TdGF0ZS5pbnZhbGlkIHx8ICghZm9ybVN0YXRlLmRpcnR5ICYmICFpc05ld1JvdylcIlxuICAgICAgICAgICAgPnt7ICdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLnNhdmUnICsgKGlzTmV3Um93ID8gJy5uZXcnIDogJycpIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICA8IS0tIHF1ZXJ5IGJ1dHRvbiBmb3IgU0VBUkNIIHNpdHVhdGlvbiAtLT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCIgY2xhc3M9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICpuZ0lmPVwicXVlcnlFbmFibGVkXCIgW2Rpc2FibGVkXT1cImZvcm1TdGF0ZS5pbnZhbGlkIHx8ICFmb3JtU3RhdGUuaW5kZXhkYXRhQ2hhbmdlZFwiXG4gICAgICAgICAgICB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5zYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuY29uZmlybS5kZWxldGUnIHwgdHJhbnNsYXRlKVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiIFttaW5XaWR0aF09XCI0MDBcIj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGZsZXgtcm93XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlybURlbGV0ZSAoY2xpY2spPVwiZGVsZXRlKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLm9rPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+XG4iXX0=
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJMUgsT0FBTyxFQUFzQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU9uRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUk1Rjs7R0FFRztBQVNJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNEIzQixJQUFJLGdCQUFnQixDQUFDLEdBQVk7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNyRTtJQUNILENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FB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LENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7NkdBOU5VLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLGlNQUZoQixDQUFDLHVCQUF1QixDQUFDLGdKQ3pCdEMsK2lGQXlDWTtBRGRDLGdCQUFnQjtJQVI1QixZQUFZLEVBQUU7R0FRRixnQkFBZ0IsQ0ErTjVCO1NBL05ZLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGFBQWEsaUJBR1IsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLHVCQUF1QixDQUFDOzJQQUdSLG1CQUFtQjtzQkFBOUMsU0FBUzt1QkFBQyxlQUFlO2dCQXVDakIsWUFBWTtzQkFBcEIsS0FBSztnQkFHRixHQUFHO3NCQUROLEtBQUs7Z0JBYUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gaW1wb3J0IHsgT2JqZWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQge1VudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0Zvcm1TdGF0dXNDaGFuZ2VkRXZlbnR9IGZyb20gJy4uLy4uLy4uL2Zvcm0tc3RhdHVzLWNoYW5nZWQtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7Rm9ybUdlblJlc3VsdCwgT2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL29iamVjdC1mb3JtLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS1jb250cm9sLXdyYXBwZXInO1xuaW1wb3J0IHtPYmplY3RGb3JtR3JvdXB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLWdyb3VwLm1vZGVsJztcbmltcG9ydCB7T2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2V9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLXNjcmlwdC9vYmplY3QtZm9ybS1zY3JpcHQuc2VydmljZSc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRpbmdTY29wZX0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZSc7XG5pbXBvcnQge0VkaXRSb3csIEVkaXRSb3dSZXN1bHR9IGZyb20gJy4uL2Zvcm0tZWxlbWVudC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZWRpdGluZyBhIHJvdyBmcm9tIGFuIG9iamVjdCBmb3JtcyB0YWJsZS5cbiAqL1xuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1yb3ctZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jvdy1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW09iamVjdEZvcm1TY3JpcHRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUm93RWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EZWxldGUnKSBjb25maXJtRGVsZXRlQnV0dG9uOiBFbGVtZW50UmVmO1xuXG4gIC8vIElEIHNldCBieSBwZW5kaW5nQ2hhbmdlcyBzZXJ2aWNlIHdoZW4gZWRpdGluZyByb3cgZGF0YVxuICAvLyBVc2VkIHRvIGZpbmlzaCB0aGUgcGVuZGluZyB0YXNrIHdoZW4gZWRpdGluZyBpcyBkb25lXG4gIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcblxuICBlZGl0Rm9ybTogT2JqZWN0Rm9ybUdyb3VwO1xuICBlZGl0Rm9ybUNvbnRyb2xzOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJbXSA9IFtdO1xuICBwcml2YXRlIHNjcmlwdGluZ1Njb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgLy8gcHJvcGVydHkgZm9yIGhvbGRpbmcgdGhlIGZvcm1zIGRhdGEgdXNlZCBmb3IgY29tcGFyaXNvbiB3aGVuIGEgZm9ybS1jaGFuZ2VkLWV2ZW50XG4gIC8vIGlzIGZldGNoZWQgdG8gaW5kaWNhdGUgd2hlciBvciBub3QgdGhlIGluZGV4ZGF0YSB3ZXJlIGNoYW5nZWQgb3IganVzdCB0aGUgcHJvcGVydGllc1xuICAvLyBvZiB0aGUgZm9ybSBlbGVtZW50cyAoZWcuIGZvcm0gc2NyaXB0IHNldHRpbmcgZmllbGRzIHRvIHJlYWRvbmx5KVxuICBwcml2YXRlIGZvcm1EYXRhOiBhbnk7XG5cbiAgX3JvdzogRWRpdFJvdztcbiAgaXNOZXdSb3c6IGJvb2xlYW47XG4gIGZvcm1TdGF0ZT86IEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQ7XG4gIHF1ZXJ5RW5hYmxlZCA9IHRydWU7XG4gIGNvcHlFbmFibGVkID0gdHJ1ZTtcbiAgZGVsZXRlRW5hYmxlZCA9IHRydWU7XG4gIHNhdmVFbmFibGVkID0gdHJ1ZTtcbiAgY3JlYXRlTmV3Q2hlY2tib3g6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgY3JlYXRlTmV3Um93ID0gZmFsc2U7XG4gIF9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIHNhdmluZyA9IGZhbHNlO1xuXG4gIHNldCBzaG93RGVsZXRlRGlhbG9nKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dEZWxldGVEaWFsb2cgPSB2YWw7XG5cbiAgICBpZiAodGhpcy5fc2hvd0RlbGV0ZURpYWxvZykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1EZWxldGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0RlbGV0ZURpYWxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0RlbGV0ZURpYWxvZztcbiAgfVxuXG4gIEBJbnB1dCgpIGxpbWl0UmVhY2hlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBzZXQgcm93KHI6IEVkaXRSb3cpIHtcbiAgICB0aGlzLl9yb3cgPSByO1xuICAgIHRoaXMucXVlcnlFbmFibGVkID0gcj8uc2l0dWF0aW9uID09PSAnU0VBUkNIJztcbiAgICB0aGlzLmNvcHlFbmFibGVkID0gIXRoaXMucXVlcnlFbmFibGVkO1xuICAgIHRoaXMuc2F2ZUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5kZWxldGVFbmFibGVkID0gIXRoaXMucXVlcnlFbmFibGVkO1xuICAgIHRoaXMuaXNOZXdSb3cgPSB0aGlzLl9yb3c/LmluZGV4ID09PSAtMTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG5cbiAgICB0aGlzLl9idWlsZFJvd0VkaXRGb3JtKClcbiAgfVxuXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdFJvd1Jlc3VsdD4oKTtcbiAgQE91dHB1dCgpIG9uU2F2ZUNvcHkgPSBuZXcgRXZlbnRFbWl0dGVyPEVkaXRSb3dSZXN1bHQ+KCk7XG4gIEBPdXRwdXQoKSBvbkRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TY3JpcHRTZXJ2aWNlOiBPYmplY3RGb3JtU2NyaXB0U2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1IZWxwZXJTZXJ2aWNlOiBPYmplY3RGb3JtSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmNyZWF0ZU5ld1JvdyA9ICEhdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjcmVhdGVOZXdSb3cnKTtcbiAgICB0aGlzLmNyZWF0ZU5ld0NoZWNrYm94ID0gdGhpcy5mYi5jb250cm9sKHRoaXMuY3JlYXRlTmV3Um93KTtcbiAgICB0aGlzLmNyZWF0ZU5ld0NoZWNrYm94LnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlTmV3Um93ID0gdjtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnY3JlYXRlTmV3Um93JywgdGhpcy5jcmVhdGVOZXdSb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gKiBSZXR1cm5zIHRoZSBvYnNlcnZlZCBtb2RlbCB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGN1cnJlbnQgZm9ybSBzY3JpcHQgcnVubmluZy4gSWYgdGhlcmUgaXNcbiAqIG5vIGZvcm0gc2NyaXB0LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBOVUxMLlxuICogQHJldHVybnNcbiAqL1xuICBwcml2YXRlIF9nZXRPYnNlcnZlZFNjcmlwdE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLnNjcmlwdGluZ1Njb3BlID8gdGhpcy5zY3JpcHRpbmdTY29wZS5nZXRNb2RlbCgpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEZvcm1EYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmV4dHJhY3RGb3JtRGF0YShcbiAgICAgIHRoaXMuZWRpdEZvcm0sXG4gICAgICB0aGlzLl9yb3cuc2l0dWF0aW9uLFxuICAgICAgdGhpcy5fcm93LmZvcm0uZGF0YVxuICAgICk7XG5cbiAgfVxuXG4gIG9uRm9ybVJlYWR5KCkge1xuICAgIC8vIGV4ZWN1dGUgYWZ0ZXIgZm9ybSBoYXMgYmVlbiBzZXQgdXAsIGJlY2F1c2Ugb3RoZXJ3aXNlIG5vdCBhbGwgb2YgdGhlIGNvbXBvbmVudHMgYXJlIHJlYWR5IHRvIGJlIHVzZWRcbiAgICAvLyBpZiBmb3IgZXhhbXBsZSBhIGZvcm0gc2NyaXB0IGV4ZWN1dGVkIGBvbnJvd2VkaXRgIHRyaWVzIHRvIGFwcGx5IGEgZmlsdGVyIG9yIHNvbWV0aGluZyBsaWtlIHRoYXRcbiAgICBpZiAodGhpcy5fcm93LnRhYmxlRWxlbWVudC5vbnJvd2VkaXQgJiYgIXRoaXMuX3Jvdy50YWJsZUVsZW1lbnQucmVhZG9ubHkpIHtcblxuICAgICAgLy8gR2VuZXJhdGUgcm93IEFQSSBvYmplY3QgKHdyYXBwZXIpIGZvciB0aGUgc2NyaXB0XG4gICAgICBjb25zdCByb3cgPSB7XG4gICAgICAgIG1vZGVsOiB0aGlzLl9nZXRPYnNlcnZlZFNjcmlwdE1vZGVsKCksXG4gICAgICAgIGluZGV4OiB0aGlzLl9yb3cuaW5kZXgsXG4gICAgICAgIGNvcHlFbmFibGVkOiB0aGlzLmNvcHlFbmFibGVkLFxuICAgICAgICBkZWxldGVFbmFibGVkOiB0aGlzLmRlbGV0ZUVuYWJsZWQsXG4gICAgICAgIHNhdmVFbmFibGVkOiB0aGlzLnNhdmVFbmFibGVkLFxuICAgICAgICBwZXJzaXN0ZWQ6IHRoaXMuaXNOZXdSb3cgLy8gTm90IHBlcnNpc3RlZCBpZiBpdCBpcyBhIG5ldyByb3dcbiAgICAgIH07XG4gICAgICAvLyBDYWxsIHRoZSBzY3JpcHQgZnVuY3Rpb24gLi4uXG4gICAgICB0aGlzLl9yb3cudGFibGVFbGVtZW50Lm9ucm93ZWRpdCh0aGlzLl9yb3cudGFibGVFbGVtZW50LCByb3cpO1xuICAgICAgLy8gLi4uIGFuZCByZXNwZWN0IHRoZSByZXN1bHRcbiAgICAgIHRoaXMuY29weUVuYWJsZWQgPSByb3cuY29weUVuYWJsZWQ7XG4gICAgICB0aGlzLmRlbGV0ZUVuYWJsZWQgPSByb3cuZGVsZXRlRW5hYmxlZDtcbiAgICAgIHRoaXMuc2F2ZUVuYWJsZWQgPSByb3cuc2F2ZUVuYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgb25Gb3JtU3RhdHVzQ2hhbmdlZChldnQpIHtcblxuICAgIC8vIGNoZWNrIGlmIGluZGV4ZGF0YSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgbGV0IGN1cnJlbnRGb3JtRGF0YSA9IHRoaXMuX2dldEZvcm1EYXRhKCk7XG4gICAgbGV0IGlkeENoYW5nZSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybURhdGEpICE9PSBKU09OLnN0cmluZ2lmeShjdXJyZW50Rm9ybURhdGEpO1xuICAgIHRoaXMuZm9ybURhdGEgPSBVdGlscy5mb3JtRGF0YVBhcnNlKFV0aWxzLmZvcm1EYXRhU3RyaW5naWZ5KGN1cnJlbnRGb3JtRGF0YSkpO1xuXG4gICAgdGhpcy5mb3JtU3RhdGUgPSB7XG4gICAgICBpbnZhbGlkOiB0aGlzLmVkaXRGb3JtLmludmFsaWQsXG4gICAgICBkaXJ0eTogdGhpcy5lZGl0Rm9ybS5kaXJ0eSxcbiAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGEsXG4gICAgICBpbmRleGRhdGFDaGFuZ2VkOiBpZHhDaGFuZ2VcbiAgICB9O1xuICAgIGlmICh0aGlzLmZvcm1TdGF0ZS5pbmRleGRhdGFDaGFuZ2VkKSB7XG4gICAgICB0aGlzLnN0YXJ0UGVuZGluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9idWlsZFJvd0VkaXRGb3JtKCkge1xuICAgIGlmICh0aGlzLl9yb3cpIHtcbiAgICAgIGNvbnN0IGZvcm1HZW5SZXM6IEZvcm1HZW5SZXN1bHQgPSB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmJ1aWxkUmVhY3RpdmVGb3JtKFxuICAgICAgICB7XG4gICAgICAgICAgZm9ybU1vZGVsOiB7XG4gICAgICAgICAgICBlbGVtZW50czogW3tcbiAgICAgICAgICAgICAgdHlwZTogJ28ybUdyb3VwJyxcbiAgICAgICAgICAgICAgZWxlbWVudHM6IHN0cnVjdHVyZWRDbG9uZSh0aGlzLl9yb3cuZm9ybS5lbGVtZW50cylcbiAgICAgICAgICAgIH1dXG4gICAgICAgICAgfSwgZGlzYWJsZWQ6IHRoaXMuX3Jvdy5mb3JtLmRpc2FibGVkLCBkYXRhOiB0aGlzLl9yb3cuZm9ybS5kYXRhXG4gICAgICAgIH0sIHRoaXMuZm9ybVNjcmlwdFNlcnZpY2UsIHRydWVcbiAgICAgICk7XG4gICAgICB0aGlzLmVkaXRGb3JtID0gZm9ybUdlblJlcy5mb3JtO1xuICAgICAgdGhpcy5zY3JpcHRpbmdTY29wZSA9IGZvcm1HZW5SZXMuc2NyaXB0aW5nU2NvcGU7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBmb3JtR2VuUmVzLmNvbnRyb2xWYWx1ZVN1YnNjcmlwdGlvbnM7XG5cbiAgICAgIGNvbnN0IGN0cmxzID0gKHRoaXMuZWRpdEZvcm0uY29udHJvbHMuY29yZSBhcyBPYmplY3RGb3JtR3JvdXApLmNvbnRyb2xzO1xuICAgICAgdGhpcy5lZGl0Rm9ybUNvbnRyb2xzID0gT2JqZWN0LmtleXMoY3RybHMpLm1hcChrID0+IGN0cmxzW2tdIGFzIE9iamVjdEZvcm1Db250cm9sV3JhcHBlcilcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5lZGl0Rm9ybSkgcmV0dXJuO1xuICAgICAgICBsZXQgZm9ybVN0YXRlV2F0Y2ggPSB0aGlzLmVkaXRGb3JtLnN0YXR1c0NoYW5nZXMucGlwZSgpXG4gICAgICAgICAgLnN1YnNjcmliZSgoZSkgPT4gdGhpcy5vbkZvcm1TdGF0dXNDaGFuZ2VkKGUpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goZm9ybVN0YXRlV2F0Y2gpO1xuICAgICAgICB0aGlzLm9uRm9ybVJlYWR5KCk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRQZW5kaW5nKCkge1xuICAgIC8vIGJlY2F1c2UgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZm9ybSBzdGF0dXMgY2hhbmdlcyxcbiAgICAvLyBwZW5kaW5nIHRhc2sgd2lsbCBvbmx5IGJlIHN0YXJ0ZWQgb25jZSB1bnRpbCBpdCB3YXMgZmluaXNoZWRcbiAgICBpZiAoIXRoaXMucGVuZGluZ0NoYW5nZXMuaGFzUGVuZGluZ1Rhc2sodGhpcy5wZW5kaW5nVGFza0lkIHx8ICcgJykpIHtcbiAgICAgIHRoaXMucGVuZGluZ1Rhc2tJZCA9IHRoaXMucGVuZGluZ0NoYW5nZXMuc3RhcnRUYXNrKCk7XG4gICAgfVxuICB9XG5cbiAgZmluaXNoUGVuZGluZygpIHtcbiAgICB0aGlzLnBlbmRpbmdDaGFuZ2VzLmZpbmlzaFRhc2sodGhpcy5wZW5kaW5nVGFza0lkKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIHRoaXMuZmluaXNoUGVuZGluZygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMub25TYXZlLmVtaXQoe1xuICAgICAgICAgIGluZGV4OiB0aGlzLl9yb3cuaW5kZXgsXG4gICAgICAgICAgcm93RGF0YTogdGhpcy5fZ2V0Rm9ybURhdGEoKSxcbiAgICAgICAgICBjcmVhdGVOZXdSb3c6IHRoaXMuY3JlYXRlTmV3Um93XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgc2F2ZUNvcHkoKSB7XG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm1TdGF0ZS5pbnZhbGlkKSB7XG4gICAgICAgIHRoaXMub25TYXZlQ29weS5lbWl0KHtcbiAgICAgICAgICBpbmRleDogdGhpcy5fcm93LmluZGV4LFxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMuX2dldEZvcm1EYXRhKCksXG4gICAgICAgICAgY3JlYXRlTmV3Um93OiB0aGlzLmNyZWF0ZU5ld1Jvd1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICB0aGlzLm9uRGVsZXRlLmVtaXQodGhpcy5fcm93LmluZGV4KTtcbiAgICB0aGlzLnNob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVBbGwoKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvdy1lZGl0XCI+XG4gIDxkaXYgY2xhc3M9XCJlZGl0LWhlYWRlclwiICpuZ0lmPVwiIXF1ZXJ5RW5hYmxlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJuZXctaW5kaWNhdG9yXCIgKm5nSWY9XCJpc05ld1Jvd1wiIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuaW5kaWNhdG9yLm5ldzwvZGl2PlxuICAgIDxkaXY+PC9kaXY+XG4gICAgPGVvLWljb24gW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY2xlYXIuc3ZnJ1wiIChjbGljayk9XCJjYW5jZWwoKVwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbC1pY29uXCJcbiAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLmNhbmNlbCcgfCB0cmFuc2xhdGUpXCI+PC9lby1pY29uPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybVwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm1cIiAqbmdJZj1cImVkaXRGb3JtXCI+XG4gICAgPGVvLWZvcm0tZWxlbWVudCAqbmdGb3I9XCJsZXQgYyBvZiBlZGl0Rm9ybUNvbnRyb2xzXCIgW2VsZW1lbnRdPVwiY1wiIFtzaXR1YXRpb25dPVwiX3Jvdz8uc2l0dWF0aW9uXCIgW3NraXBUb2dnbGVdPVwidHJ1ZVwiPlxuICAgIDwvZW8tZm9ybS1lbGVtZW50PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgIDxlby1jaGVja2JveCAqbmdJZj1cImlzTmV3Um93XCIgdGl0bGU9XCJ7eydlby5mb3JtLnRhYmxlLm9wdGlvbnMuY2hlY2tib3gubmV3LnRpdGxlJyB8IHRyYW5zbGF0ZX19XCJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjcmVhdGVOZXdDaGVja2JveFwiPjwvZW8tY2hlY2tib3g+XG4gICAgPHNwYW4gKm5nSWY9XCJpc05ld1Jvd1wiIGNsYXNzPVwiYWRkLWxhYmVsXCIgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUub3B0aW9ucy5jaGVja2JveC5uZXc8L3NwYW4+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJkZWxldGVFbmFibGVkICYmICFpc05ld1JvdyAmJiAhX3Jvdz8uZm9ybS5kaXNhYmxlZCAmJiAhcXVlcnlFbmFibGVkXCJcbiAgICAgIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gdHJ1ZTtcIiB0aXRsZT1cInt7J2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uZGVsZXRlJyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICA8ZW8taWNvbiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY190cmFzaC5zdmcnXCI+PC9lby1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlQ29weSgpXCIgY2xhc3M9XCJzZWNvXCIgKm5nSWY9XCJjb3B5RW5hYmxlZCAmJiAhaXNOZXdSb3cgJiYgIV9yb3c/LmZvcm0uZGlzYWJsZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImxpbWl0UmVhY2hlZCB8fCBzYXZpbmcgfHwgZm9ybVN0YXRlPy5pbnZhbGlkXCIgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUub3B0aW9ucy5idG4uY29weTwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBjbGFzcz1cInByaW1hcnlcIiAqbmdJZj1cInNhdmVFbmFibGVkICYmICFfcm93Py5mb3JtLmRpc2FibGVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCIobGltaXRSZWFjaGVkICYmIGlzTmV3Um93KSB8fCBzYXZpbmcgfHwgZm9ybVN0YXRlPy5pbnZhbGlkIHx8ICghZm9ybVN0YXRlPy5kaXJ0eSAmJiAhaXNOZXdSb3cpXCI+e3tcbiAgICAgICdlby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLnNhdmUnICsgKGlzTmV3Um93ID8gJy5uZXcnIDogJycpIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICA8IS0tIHF1ZXJ5IGJ1dHRvbiBmb3IgU0VBUkNIIHNpdHVhdGlvbiAtLT5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCIgY2xhc3M9XCJwcmltYXJ5XCIgKm5nSWY9XCJxdWVyeUVuYWJsZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImZvcm1TdGF0ZT8uaW52YWxpZCB8fCAhZm9ybVN0YXRlPy5pbmRleGRhdGFDaGFuZ2VkXCIgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUub3B0aW9ucy5idG4uc2F2ZTwvYnV0dG9uPlxuICA8L2Rpdj5cblxuPC9kaXY+XG5cbjxlby1kaWFsb2cgW3RpdGxlXT1cIignZW8uZm9ybS50YWJsZS5vcHRpb25zLmNvbmZpcm0uZGVsZXRlJyB8IHRyYW5zbGF0ZSlcIiBbKHZpc2libGUpXT1cInNob3dEZWxldGVEaWFsb2dcIlxuICBbbWluV2lkdGhdPVwiNDAwXCI+XG4gIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiIHN0eWxlPVwicGFkZGluZzogOHB4O1wiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgdHJhbnNsYXRlPmVvLmZvcm0udGFibGUub3B0aW9ucy5idG4uY2FuY2VsPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI2NvbmZpcm1EZWxldGUgKGNsaWNrKT1cImRlbGV0ZSgpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5vazwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZW8tZGlhbG9nPiJdfQ==
@@ -4,7 +4,9 @@ import * as i1 from "@angular/common";
4
4
  import * as i2 from "@angular/forms";
5
5
  import * as i3 from "@yuuvis/components/tabs";
6
6
  import * as i4 from "../form-element/form-element.component";
7
- import * as i5 from "../../../../eo-framework-core/pipes/keys.pipe";
7
+ import * as i5 from "../form-element-table/form-element-table.component";
8
+ import * as i6 from "../form-element/form-element-template.directive";
9
+ import * as i7 from "../../../../eo-framework-core/pipes/keys.pipe";
8
10
  export class ObjectFormGroupComponent {
9
11
  constructor() {
10
12
  this.types = {
@@ -55,10 +57,10 @@ export class ObjectFormGroupComponent {
55
57
  }
56
58
  }
57
59
  ObjectFormGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
58
- ObjectFormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: { situation: "situation", skipToggle: "skipToggle", groupd: ["group", "groupd"], noGroupLabels: "noGroupLabels" }, ngImport: i0, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.Tabs, selector: "yvc-tabs", inputs: ["tabs", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i3.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: ["situation", "skipToggle", "group", "noGroupLabels"] }, { kind: "component", type: i4.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "pipe", type: i5.KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None });
60
+ ObjectFormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: { situation: "situation", skipToggle: "skipToggle", groupd: ["group", "groupd"], noGroupLabels: "noGroupLabels" }, ngImport: i0, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.Tabs, selector: "yvc-tabs", inputs: ["tabs", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i3.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: ObjectFormGroupComponent, selector: "eo-form-group", inputs: ["situation", "skipToggle", "group", "noGroupLabels"] }, { kind: "component", type: i4.FormElementComponent, selector: "eo-form-element", inputs: ["situation", "skipToggle", "element"] }, { kind: "component", type: i5.FormElementTableComponent, selector: "eo-table", inputs: ["limit", "hasPreviewFile", "minWidth", "height", "params"] }, { kind: "directive", type: i6.FormElementTemplate, selector: "[eoFormElementTemplate]", inputs: ["propertyType"] }, { kind: "pipe", type: i7.KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None });
59
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormGroupComponent, decorators: [{
60
62
  type: Component,
61
- args: [{ selector: 'eo-form-group', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"] }]
63
+ args: [{ selector: 'eo-form-group', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"group\" [ngSwitch]=\"groupType\"\n class=\"form-element {{group._eoFormGroup ? group._eoFormGroup.type : 'o2mControlWrap'}} align-{{(group._eoFormGroup && group._eoFormGroup.layout) ? group._eoFormGroup.layout.align : ''}}\"\n [formGroup]=\"group\">\n\n <!-- group stacks (tabs) -->\n <yvc-tabs *ngSwitchCase=\"'stack'\">\n <ng-template *ngFor=\"let key of group.controls | keys; index as i;\" [yvcTab]=\"{id: 't' + i, \n headerStyleClass: 'dirty-' + group.controls[key].dirty + ' invalid-' + group.controls[key].invalid,\n label: getObjectFormGroup(group.controls[key]).label}\">\n <div class=\"stack\" [ngClass]=\"{stackBase: group._eoFormGroup.label === 'data'}\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else stkgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #stkgroup>\n <eo-form-group [group]=\"group.controls[key]\" [noGroupLabels]=\"true\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </div>\n </ng-template>\n </yvc-tabs>\n\n <!-- group with legend -->\n <div *ngSwitchCase=\"'fieldset'\" class=\"om-group fieldset\">\n <div class=\"legend\"><span>{{group._eoFormGroup.label}}</span></div>\n\n <div>\n <ng-container *ngFor=\"let key of group.controls | keys\">\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else fsgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n </eo-form-element>\n <ng-template #fsgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </div>\n </div>\n\n <!-- group -->\n <ng-container class=\"om-group\" *ngSwitchCase=\"'group'\">\n <ng-container *ngFor=\"let key of group.controls | keys\">\n\n <eo-form-element [element]=\"group.controls[key]\"\n *ngIf=\"getObjectFormControlWrapper(group.controls[key]); else omgroup\" [situation]=\"situation\"\n [skipToggle]=\"skipToggle\">\n\n <ng-template eoFormElementTemplate propertyType=\"TABLE\" let-element=\"element\"\n let-formElementRef=\"formElementRef\">\n <ng-container *ngTemplateOutlet=\"tplFormElementTable; context: {element, formElementRef}\"></ng-container>\n </ng-template>\n\n </eo-form-element>\n <ng-template #omgroup>\n <eo-form-group [group]=\"group.controls[key]\" [situation]=\"situation\" [skipToggle]=\"skipToggle\"></eo-form-group>\n </ng-template>\n </ng-container>\n </ng-container>\n\n</div>\n\n\n<ng-template #tplFormElementTable let-element=\"element\" let-formElementRef=\"formElementRef\">\n <div class=\"table\">\n <eo-table [params]=\"{\nsituation: element._eoFormControlWrapper.situation,\nelement: formElementRef._eoFormElement,\nsize: formElementRef._eoFormElement.size,\nobject: formElementRef._eoFormElement.object\n}\" [formControl]=\"element.get(element._eoFormControlWrapper.controlName)\"></eo-table>\n </div>\n</ng-template>", styles: [":host{flex:1 1 auto}.dark .form-element .ui-tabview.ui-tabview-top>.ui-tabview-nav{border-color:rgba(var(--color-white-rgb),.2)}.dark .form-element.o2mGroupStack .ui-tabview.ui-tabview-top>.ui-tabview-nav li.ui-state-active{border-color:rgba(var(--color-white-rgb),1)}.dark .form-element .ui-widget-header .ui-state-active a,.dark .form-element .ui-widget-content .ui-state-active a,.dark .form-element .ui-state-active a{color:var(--color-white)}.dark .form-element .ui-widget-header .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-widget-content .ui-state-default:not(.ui-state-active) a,.dark .form-element .ui-state-default:not(.ui-state-active) a{color:rgba(var(--color-white-rgb),.3)}.form-element{box-sizing:border-box}.form-element.o2mGroupStack{background:rgba(var(--color-black-rgb),.02);border:1px solid rgba(var(--color-black-rgb),.1)}.form-element.o2mGroupStack p-tabview{width:100%}.form-element.o2mGroupStack a[role=tab].invalid-true .label{background-color:var(--color-error);color:var(--color-white)}.form-element.o2mGroupStack a[role=tab].invalid-true .label:after{content:\"!\";margin-inline-start:calc(var(--app-pane-padding) / 2)}.form-element.o2mGroupStack a[role=tab].dirty-true:not(.invalid-true) .label{background-color:var(--color-dirty-background);color:var(--color-dirty-font)}.form-element.o2mGroupStack.data{border:0}.form-element.align-column{display:flex;flex-flow:column nowrap;justify-content:flex-start;align-content:stretch;align-items:stretch}.form-element.align-column>*{flex:1 1 auto}.form-element.align-row{display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>*{flex:1 1 auto}.form-element.align-row>.fieldset>:not(.legend){display:flex;flex-flow:row wrap;justify-content:flex-start;align-content:flex-start;align-items:flex-start}.form-element.align-row>.fieldset>:not(.legend) eo-form-group{flex:1 1 auto;min-width:200px}.form-element .stackBase{padding:var(--app-pane-padding)}.form-element .stackBase>eo-form-group>.form-element>.fieldset{margin:0;padding:0;border:0;background-color:transparent}.form-element .stackBase>eo-form-group>.form-element>.fieldset>.legend{display:none}\n"] }]
62
64
  }], propDecorators: { situation: [{
63
65
  type: Input
64
66
  }], skipToggle: [{
@@ -69,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
69
71
  }], noGroupLabels: [{
70
72
  type: Input
71
73
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFXbEUsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVNVLFVBQUssR0FBRztZQUNkLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxRQUFRLEVBQUUsVUFBVTtTQUNyQixDQUFDO1FBT0Ysb0RBQW9EO1FBQzNDLGNBQVMsR0FBRyxNQUFNLENBQUM7S0FpRDdCO0lBOUNDLElBQ0ksTUFBTSxDQUFDLENBQWtCO1FBQzNCLElBQUksQ0FBQyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7WUFDbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDO1lBQ2xGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3RDO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNuQjtJQUNILENBQUM7SUFJRCxrQkFBa0IsQ0FBQyxPQUFPO1FBQ3hCLE9BQVEsT0FBMkIsQ0FBQyxZQUFZLENBQUM7SUFDbkQsQ0FBQztJQUVELDJCQUEyQixDQUFDLE9BQU87UUFDakMsT0FBUSxPQUFvQyxDQUFDLHFCQUFxQixDQUFDO0lBQ3JFLENBQUM7SUFHTyxZQUFZO1FBQ2xCLDREQUE0RDtRQUM1RCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUU7Z0JBRXBELDhFQUE4RTtnQkFDOUUsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUNoRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2lCQUN6QjtnQkFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ3pCO1lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUMvQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDNUs7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUFzQjtRQUMxQyxJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsT0FBTyxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDO0lBQ3pFLENBQUM7O3FIQTlEVSx3QkFBd0I7eUdBQXhCLHdCQUF3QixnTENYckMsKzlFQW9ETSw2MEdEekNPLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLGVBQWUsaUJBSVYsaUJBQWlCLENBQUMsSUFBSTs4QkFnQjVCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRixNQUFNO3NCQURULEtBQUs7dUJBQUMsT0FBTztnQkFZTCxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VvRm9ybUdyb3VwV3JhcHBlciwgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyfSBmcm9tICcuLi9vYmplY3QtZm9ybS1jb250cm9sLXdyYXBwZXInO1xuaW1wb3J0IHtFb0Zvcm1Hcm91cCwgT2JqZWN0Rm9ybUdyb3VwfSBmcm9tICcuLi9vYmplY3QtZm9ybS1ncm91cC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLWZvcm0tZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtZm9ybS1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtR3JvdXBDb21wb25lbnQge1xuXG4gIHByaXZhdGUgdHlwZXMgPSB7XG4gICAgU1RBQ0s6ICdzdGFjaycsXG4gICAgR1JPVVA6ICdncm91cCcsXG4gICAgRklFTERTRVQ6ICdmaWVsZHNldCdcbiAgfTtcblxuICBncm91cDogT2JqZWN0Rm9ybUdyb3VwO1xuICBncm91cFR5cGU6IHN0cmluZztcbiAgaXNDb3JlOiBib29sZWFuO1xuICBpc0RhdGE6IGJvb2xlYW47XG5cbiAgLy8gZm9ybSBzaXR1YXRpb24sIGlmIG5vdCBzZXQgZGVmYXVsdCB3aWxsIGJlICdFRElUJ1xuICBASW5wdXQoKSBzaXR1YXRpb24gPSAnRURJVCc7XG4gIEBJbnB1dCgpIHNraXBUb2dnbGU6IGJvb2xlYW47XG5cbiAgQElucHV0KCdncm91cCcpXG4gIHNldCBncm91cGQoZzogT2JqZWN0Rm9ybUdyb3VwKSB7XG4gICAgaWYgKGcpIHtcbiAgICAgIHRoaXMuZ3JvdXAgPSBnO1xuICAgICAgdGhpcy5pc0NvcmUgPSB0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cCAmJiB0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cC5sYWJlbCA9PT0gJ2NvcmUnO1xuICAgICAgdGhpcy5pc0RhdGEgPSB0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cCAmJiB0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cC5sYWJlbCA9PT0gJ2RhdGEnO1xuICAgICAgdGhpcy5ncm91cFR5cGUgPSB0aGlzLmdldEdyb3VwVHlwZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdyb3VwID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBub0dyb3VwTGFiZWxzOiBib29sZWFuO1xuXG4gIGdldE9iamVjdEZvcm1Hcm91cChjb250cm9sKTogRW9Gb3JtR3JvdXAge1xuICAgIHJldHVybiAoY29udHJvbCBhcyBPYmplY3RGb3JtR3JvdXApLl9lb0Zvcm1Hcm91cDtcbiAgfVxuXG4gIGdldE9iamVjdEZvcm1Db250cm9sV3JhcHBlcihjb250cm9sKTogRW9Gb3JtR3JvdXBXcmFwcGVyIHtcbiAgICByZXR1cm4gKGNvbnRyb2wgYXMgT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKS5fZW9Gb3JtQ29udHJvbFdyYXBwZXI7XG4gIH1cblxuXG4gIHByaXZhdGUgZ2V0R3JvdXBUeXBlKCkge1xuICAgIC8vIG1heSBhcyB3ZWxsIGJlIGFuIE9iamVjdEZvcm1Db250cm9sV3JhcHBlciBzbyBjaGVjayBmaXJzdFxuICAgIC8vIGlmIHdlIGdvdCBhIHJlYWwgZ3JvdXBcbiAgICBpZiAodGhpcy5ncm91cC5fZW9Gb3JtR3JvdXApIHtcbiAgICAgIGlmICh0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cC50eXBlID09PSAnbzJtR3JvdXBTdGFjaycpIHtcblxuICAgICAgICAvLyBmb3IgZGF0YSBzZWN0aW9uIG9ubHkgcmVuZGVyIGFzIHN0YWNrICh0YWJzKSBpZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgY2hpbGRcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRhICYmIE9iamVjdC5rZXlzKHRoaXMuZ3JvdXAuY29udHJvbHMpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVzLkdST1VQO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGVzLlNUQUNLO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLnR5cGUgPT09ICdvMm1Hcm91cCcpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cC5sYWJlbCAmJiAhKHRoaXMuaXNDb3JlIHx8IHRoaXMuaXNEYXRhKSAmJiAhdGhpcy5ub0dyb3VwTGFiZWxzICYmICF0aGlzLnBhcmVudElzU3RhY2sodGhpcy5ncm91cCkpID8gdGhpcy50eXBlcy5GSUVMRFNFVCA6IHRoaXMudHlwZXMuR1JPVVA7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50eXBlcy5HUk9VUDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcmVudElzU3RhY2soZ3JvdXA6IE9iamVjdEZvcm1Hcm91cCk6IGJvb2xlYW4ge1xuICAgIGxldCBwYXJlbnRGb3JtRWxlbWVudCA9IGdyb3VwLnBhcmVudFsnX2VvRm9ybUdyb3VwJ107XG4gICAgcmV0dXJuIHBhcmVudEZvcm1FbGVtZW50ICYmIHBhcmVudEZvcm1FbGVtZW50LnR5cGUgPT09ICdvMm1Hcm91cFN0YWNrJztcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cImdyb3VwXCIgW25nU3dpdGNoXT1cImdyb3VwVHlwZVwiXG4gIGNsYXNzPVwiZm9ybS1lbGVtZW50IHt7Z3JvdXAuX2VvRm9ybUdyb3VwID8gZ3JvdXAuX2VvRm9ybUdyb3VwLnR5cGUgOiAnbzJtQ29udHJvbFdyYXAnfX0gYWxpZ24te3soZ3JvdXAuX2VvRm9ybUdyb3VwICYmIGdyb3VwLl9lb0Zvcm1Hcm91cC5sYXlvdXQpID8gZ3JvdXAuX2VvRm9ybUdyb3VwLmxheW91dC5hbGlnbiA6ICcnfX1cIlxuICBbZm9ybUdyb3VwXT1cImdyb3VwXCI+XG5cbiAgPCEtLSBncm91cCBzdGFja3MgKHRhYnMpIC0tPlxuICA8eXZjLXRhYnMgKm5nU3dpdGNoQ2FzZT1cIidzdGFjaydcIj5cbiAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IGtleSBvZiBncm91cC5jb250cm9scyB8IGtleXM7IGluZGV4IGFzIGk7XCIgW3l2Y1RhYl09XCJ7aWQ6ICd0JyArIGksIFxuICAgIGhlYWRlclN0eWxlQ2xhc3M6ICdkaXJ0eS0nICsgZ3JvdXAuY29udHJvbHNba2V5XS5kaXJ0eSArICcgaW52YWxpZC0nICsgZ3JvdXAuY29udHJvbHNba2V5XS5pbnZhbGlkLFxuICAgIGxhYmVsOiBnZXRPYmplY3RGb3JtR3JvdXAoZ3JvdXAuY29udHJvbHNba2V5XSkubGFiZWx9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhY2tcIiBbbmdDbGFzc109XCJ7c3RhY2tCYXNlOiBncm91cC5fZW9Gb3JtR3JvdXAubGFiZWwgPT09ICdkYXRhJ31cIj5cblxuICAgICAgICA8ZW8tZm9ybS1lbGVtZW50IFtlbGVtZW50XT1cImdyb3VwLmNvbnRyb2xzW2tleV1cIlxuICAgICAgICAgICpuZ0lmPVwiZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGdyb3VwLmNvbnRyb2xzW2tleV0pOyBlbHNlIHN0a2dyb3VwXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGVcIj48L2VvLWZvcm0tZWxlbWVudD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzdGtncm91cD5cbiAgICAgICAgICA8ZW8tZm9ybS1ncm91cCBbZ3JvdXBdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiIFtub0dyb3VwTGFiZWxzXT1cInRydWVcIiBbc2l0dWF0aW9uXT1cInNpdHVhdGlvblwiXG4gICAgICAgICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlXCI+PC9lby1mb3JtLWdyb3VwPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC95dmMtdGFicz5cblxuICA8IS0tIGdyb3VwIHdpdGggbGVnZW5kIC0tPlxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZmllbGRzZXQnXCIgY2xhc3M9XCJvbS1ncm91cCBmaWVsZHNldFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRcIj48c3Bhbj57e2dyb3VwLl9lb0Zvcm1Hcm91cC5sYWJlbH19PC9zcGFuPjwvZGl2PlxuXG4gICAgPGRpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBncm91cC5jb250cm9scyB8IGtleXNcIj5cbiAgICAgICAgPGVvLWZvcm0tZWxlbWVudCBbZWxlbWVudF09XCJncm91cC5jb250cm9sc1trZXldXCJcbiAgICAgICAgICAqbmdJZj1cImdldE9iamVjdEZvcm1Db250cm9sV3JhcHBlcihncm91cC5jb250cm9sc1trZXldKTsgZWxzZSBmc2dyb3VwXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgIFtza2lwVG9nZ2xlXT1cInNraXBUb2dnbGVcIj48L2VvLWZvcm0tZWxlbWVudD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmc2dyb3VwPlxuICAgICAgICAgIDxlby1mb3JtLWdyb3VwIFtncm91cF09XCJncm91cC5jb250cm9sc1trZXldXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1ncm91cD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIGdyb3VwIC0tPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwib20tZ3JvdXBcIiAqbmdTd2l0Y2hDYXNlPVwiJ2dyb3VwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBncm91cC5jb250cm9scyB8IGtleXNcIj5cblxuICAgICAgPGVvLWZvcm0tZWxlbWVudCBbZWxlbWVudF09XCJncm91cC5jb250cm9sc1trZXldXCJcbiAgICAgICAgKm5nSWY9XCJnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JvdXAuY29udHJvbHNba2V5XSk7IGVsc2Ugb21ncm91cFwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1lbGVtZW50PlxuICAgICAgPG5nLXRlbXBsYXRlICNvbWdyb3VwPlxuICAgICAgICA8ZW8tZm9ybS1ncm91cCBbZ3JvdXBdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCIgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1ncm91cD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L2Rpdj4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0tZ3JvdXAvb2JqZWN0LWZvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQVdsRSxNQUFNLE9BQU8sd0JBQXdCO0lBUHJDO1FBU1UsVUFBSyxHQUFHO1lBQ2QsS0FBSyxFQUFFLE9BQU87WUFDZCxLQUFLLEVBQUUsT0FBTztZQUNkLFFBQVEsRUFBRSxVQUFVO1NBQ3JCLENBQUM7UUFPRixvREFBb0Q7UUFDM0MsY0FBUyxHQUFHLE1BQU0sQ0FBQztLQWlEN0I7SUE5Q0MsSUFDSSxNQUFNLENBQUMsQ0FBa0I7UUFDM0IsSUFBSSxDQUFDLEVBQUU7WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQztZQUNsRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxNQUFNLENBQUM7WUFDbEYsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUlELGtCQUFrQixDQUFDLE9BQU87UUFDeEIsT0FBUSxPQUEyQixDQUFDLFlBQVksQ0FBQztJQUNuRCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsT0FBTztRQUNqQyxPQUFRLE9BQW9DLENBQUMscUJBQXFCLENBQUM7SUFDckUsQ0FBQztJQUdPLFlBQVk7UUFDbEIsNERBQTREO1FBQzVELHlCQUF5QjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtnQkFFcEQsOEVBQThFO2dCQUM5RSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ2hFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ3pCO2dCQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7YUFDekI7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUM1SztZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQXNCO1FBQzFDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRCxPQUFPLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLElBQUksS0FBSyxlQUFlLENBQUM7SUFDekUsQ0FBQzs7cUhBOURVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGdMQ1hyQyx5eUhBaUZjLCt3SER0RUQsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsZUFBZSxpQkFJVixpQkFBaUIsQ0FBQyxJQUFJOzhCQWdCNUIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdGLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxPQUFPO2dCQVlMLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RW9Gb3JtR3JvdXBXcmFwcGVyLCBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJ9IGZyb20gJy4uL29iamVjdC1mb3JtLWNvbnRyb2wtd3JhcHBlcic7XG5pbXBvcnQge0VvRm9ybUdyb3VwLCBPYmplY3RGb3JtR3JvdXB9IGZyb20gJy4uL29iamVjdC1mb3JtLWdyb3VwLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tZm9ybS1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZm9ybS1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1mb3JtLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdEZvcm1Hcm91cENvbXBvbmVudCB7XG5cbiAgcHJpdmF0ZSB0eXBlcyA9IHtcbiAgICBTVEFDSzogJ3N0YWNrJyxcbiAgICBHUk9VUDogJ2dyb3VwJyxcbiAgICBGSUVMRFNFVDogJ2ZpZWxkc2V0J1xuICB9O1xuXG4gIGdyb3VwOiBPYmplY3RGb3JtR3JvdXA7XG4gIGdyb3VwVHlwZTogc3RyaW5nO1xuICBpc0NvcmU6IGJvb2xlYW47XG4gIGlzRGF0YTogYm9vbGVhbjtcblxuICAvLyBmb3JtIHNpdHVhdGlvbiwgaWYgbm90IHNldCBkZWZhdWx0IHdpbGwgYmUgJ0VESVQnXG4gIEBJbnB1dCgpIHNpdHVhdGlvbiA9ICdFRElUJztcbiAgQElucHV0KCkgc2tpcFRvZ2dsZTogYm9vbGVhbjtcblxuICBASW5wdXQoJ2dyb3VwJylcbiAgc2V0IGdyb3VwZChnOiBPYmplY3RGb3JtR3JvdXApIHtcbiAgICBpZiAoZykge1xuICAgICAgdGhpcy5ncm91cCA9IGc7XG4gICAgICB0aGlzLmlzQ29yZSA9IHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwICYmIHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsID09PSAnY29yZSc7XG4gICAgICB0aGlzLmlzRGF0YSA9IHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwICYmIHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsID09PSAnZGF0YSc7XG4gICAgICB0aGlzLmdyb3VwVHlwZSA9IHRoaXMuZ2V0R3JvdXBUeXBlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JvdXAgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIG5vR3JvdXBMYWJlbHM6IGJvb2xlYW47XG5cbiAgZ2V0T2JqZWN0Rm9ybUdyb3VwKGNvbnRyb2wpOiBFb0Zvcm1Hcm91cCB7XG4gICAgcmV0dXJuIChjb250cm9sIGFzIE9iamVjdEZvcm1Hcm91cCkuX2VvRm9ybUdyb3VwO1xuICB9XG5cbiAgZ2V0T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyKGNvbnRyb2wpOiBFb0Zvcm1Hcm91cFdyYXBwZXIge1xuICAgIHJldHVybiAoY29udHJvbCBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpLl9lb0Zvcm1Db250cm9sV3JhcHBlcjtcbiAgfVxuXG5cbiAgcHJpdmF0ZSBnZXRHcm91cFR5cGUoKSB7XG4gICAgLy8gbWF5IGFzIHdlbGwgYmUgYW4gT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyIHNvIGNoZWNrIGZpcnN0XG4gICAgLy8gaWYgd2UgZ290IGEgcmVhbCBncm91cFxuICAgIGlmICh0aGlzLmdyb3VwLl9lb0Zvcm1Hcm91cCkge1xuICAgICAgaWYgKHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLnR5cGUgPT09ICdvMm1Hcm91cFN0YWNrJykge1xuXG4gICAgICAgIC8vIGZvciBkYXRhIHNlY3Rpb24gb25seSByZW5kZXIgYXMgc3RhY2sgKHRhYnMpIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGlsZFxuICAgICAgICBpZiAodGhpcy5pc0RhdGEgJiYgT2JqZWN0LmtleXModGhpcy5ncm91cC5jb250cm9scykubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHlwZXMuR1JPVVA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZXMuU1RBQ0s7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA9PT0gJ28ybUdyb3VwJykge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ3JvdXAuX2VvRm9ybUdyb3VwLmxhYmVsICYmICEodGhpcy5pc0NvcmUgfHwgdGhpcy5pc0RhdGEpICYmICF0aGlzLm5vR3JvdXBMYWJlbHMgJiYgIXRoaXMucGFyZW50SXNTdGFjayh0aGlzLmdyb3VwKSkgPyB0aGlzLnR5cGVzLkZJRUxEU0VUIDogdGhpcy50eXBlcy5HUk9VUDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnR5cGVzLkdST1VQO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyZW50SXNTdGFjayhncm91cDogT2JqZWN0Rm9ybUdyb3VwKTogYm9vbGVhbiB7XG4gICAgbGV0IHBhcmVudEZvcm1FbGVtZW50ID0gZ3JvdXAucGFyZW50WydfZW9Gb3JtR3JvdXAnXTtcbiAgICByZXR1cm4gcGFyZW50Rm9ybUVsZW1lbnQgJiYgcGFyZW50Rm9ybUVsZW1lbnQudHlwZSA9PT0gJ28ybUdyb3VwU3RhY2snO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZ3JvdXBcIiBbbmdTd2l0Y2hdPVwiZ3JvdXBUeXBlXCJcbiAgY2xhc3M9XCJmb3JtLWVsZW1lbnQge3tncm91cC5fZW9Gb3JtR3JvdXAgPyBncm91cC5fZW9Gb3JtR3JvdXAudHlwZSA6ICdvMm1Db250cm9sV3JhcCd9fSBhbGlnbi17eyhncm91cC5fZW9Gb3JtR3JvdXAgJiYgZ3JvdXAuX2VvRm9ybUdyb3VwLmxheW91dCkgPyBncm91cC5fZW9Gb3JtR3JvdXAubGF5b3V0LmFsaWduIDogJyd9fVwiXG4gIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cblxuICA8IS0tIGdyb3VwIHN0YWNrcyAodGFicykgLS0+XG4gIDx5dmMtdGFicyAqbmdTd2l0Y2hDYXNlPVwiJ3N0YWNrJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQga2V5IG9mIGdyb3VwLmNvbnRyb2xzIHwga2V5czsgaW5kZXggYXMgaTtcIiBbeXZjVGFiXT1cIntpZDogJ3QnICsgaSwgXG4gICAgaGVhZGVyU3R5bGVDbGFzczogJ2RpcnR5LScgKyBncm91cC5jb250cm9sc1trZXldLmRpcnR5ICsgJyBpbnZhbGlkLScgKyBncm91cC5jb250cm9sc1trZXldLmludmFsaWQsXG4gICAgbGFiZWw6IGdldE9iamVjdEZvcm1Hcm91cChncm91cC5jb250cm9sc1trZXldKS5sYWJlbH1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGFja1wiIFtuZ0NsYXNzXT1cIntzdGFja0Jhc2U6IGdyb3VwLl9lb0Zvcm1Hcm91cC5sYWJlbCA9PT0gJ2RhdGEnfVwiPlxuXG4gICAgICAgIDxlby1mb3JtLWVsZW1lbnQgW2VsZW1lbnRdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiXG4gICAgICAgICAgKm5nSWY9XCJnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JvdXAuY29udHJvbHNba2V5XSk7IGVsc2Ugc3RrZ3JvdXBcIiBbc2l0dWF0aW9uXT1cInNpdHVhdGlvblwiXG4gICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiVEFCTEVcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgICAgICAgICAgbGV0LWZvcm1FbGVtZW50UmVmPVwiZm9ybUVsZW1lbnRSZWZcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxGb3JtRWxlbWVudFRhYmxlOyBjb250ZXh0OiB7ZWxlbWVudCwgZm9ybUVsZW1lbnRSZWZ9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RrZ3JvdXA+XG4gICAgICAgICAgPGVvLWZvcm0tZ3JvdXAgW2dyb3VwXT1cImdyb3VwLmNvbnRyb2xzW2tleV1cIiBbbm9Hcm91cExhYmVsc109XCJ0cnVlXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1ncm91cD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwveXZjLXRhYnM+XG5cbiAgPCEtLSBncm91cCB3aXRoIGxlZ2VuZCAtLT5cbiAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2ZpZWxkc2V0J1wiIGNsYXNzPVwib20tZ3JvdXAgZmllbGRzZXRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kXCI+PHNwYW4+e3tncm91cC5fZW9Gb3JtR3JvdXAubGFiZWx9fTwvc3Bhbj48L2Rpdj5cblxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2YgZ3JvdXAuY29udHJvbHMgfCBrZXlzXCI+XG4gICAgICAgIDxlby1mb3JtLWVsZW1lbnQgW2VsZW1lbnRdPVwiZ3JvdXAuY29udHJvbHNba2V5XVwiXG4gICAgICAgICAgKm5nSWY9XCJnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JvdXAuY29udHJvbHNba2V5XSk7IGVsc2UgZnNncm91cFwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgICBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlXCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIGVvRm9ybUVsZW1lbnRUZW1wbGF0ZSBwcm9wZXJ0eVR5cGU9XCJUQUJMRVwiIGxldC1lbGVtZW50PVwiZWxlbWVudFwiXG4gICAgICAgICAgICBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbEZvcm1FbGVtZW50VGFibGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2VvLWZvcm0tZWxlbWVudD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmc2dyb3VwPlxuICAgICAgICAgIDxlby1mb3JtLWdyb3VwIFtncm91cF09XCJncm91cC5jb250cm9sc1trZXldXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIlxuICAgICAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPjwvZW8tZm9ybS1ncm91cD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIGdyb3VwIC0tPlxuICA8bmctY29udGFpbmVyIGNsYXNzPVwib20tZ3JvdXBcIiAqbmdTd2l0Y2hDYXNlPVwiJ2dyb3VwJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBncm91cC5jb250cm9scyB8IGtleXNcIj5cblxuICAgICAgPGVvLWZvcm0tZWxlbWVudCBbZWxlbWVudF09XCJncm91cC5jb250cm9sc1trZXldXCJcbiAgICAgICAgKm5nSWY9XCJnZXRPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIoZ3JvdXAuY29udHJvbHNba2V5XSk7IGVsc2Ugb21ncm91cFwiIFtzaXR1YXRpb25dPVwic2l0dWF0aW9uXCJcbiAgICAgICAgW3NraXBUb2dnbGVdPVwic2tpcFRvZ2dsZVwiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBlb0Zvcm1FbGVtZW50VGVtcGxhdGUgcHJvcGVydHlUeXBlPVwiVEFCTEVcIiBsZXQtZWxlbWVudD1cImVsZW1lbnRcIlxuICAgICAgICAgIGxldC1mb3JtRWxlbWVudFJlZj1cImZvcm1FbGVtZW50UmVmXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRwbEZvcm1FbGVtZW50VGFibGU7IGNvbnRleHQ6IHtlbGVtZW50LCBmb3JtRWxlbWVudFJlZn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gICAgICA8bmctdGVtcGxhdGUgI29tZ3JvdXA+XG4gICAgICAgIDxlby1mb3JtLWdyb3VwIFtncm91cF09XCJncm91cC5jb250cm9sc1trZXldXCIgW3NpdHVhdGlvbl09XCJzaXR1YXRpb25cIiBbc2tpcFRvZ2dsZV09XCJza2lwVG9nZ2xlXCI+PC9lby1mb3JtLWdyb3VwPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuXG5cbjxuZy10ZW1wbGF0ZSAjdHBsRm9ybUVsZW1lbnRUYWJsZSBsZXQtZWxlbWVudD1cImVsZW1lbnRcIiBsZXQtZm9ybUVsZW1lbnRSZWY9XCJmb3JtRWxlbWVudFJlZlwiPlxuICA8ZGl2IGNsYXNzPVwidGFibGVcIj5cbiAgICA8ZW8tdGFibGUgW3BhcmFtc109XCJ7XG5zaXR1YXRpb246IGVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLnNpdHVhdGlvbixcbmVsZW1lbnQ6IGZvcm1FbGVtZW50UmVmLl9lb0Zvcm1FbGVtZW50LFxuc2l6ZTogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQuc2l6ZSxcbm9iamVjdDogZm9ybUVsZW1lbnRSZWYuX2VvRm9ybUVsZW1lbnQub2JqZWN0XG59XCIgW2Zvcm1Db250cm9sXT1cImVsZW1lbnQuZ2V0KGVsZW1lbnQuX2VvRm9ybUNvbnRyb2xXcmFwcGVyLmNvbnRyb2xOYW1lKVwiPjwvZW8tdGFibGU+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -3,10 +3,9 @@ import { map } from 'rxjs/operators';
3
3
  import { Injectable } from '@angular/core';
4
4
  import { HttpHeaders } from '@angular/common/http';
5
5
  import * as lodash from 'lodash';
6
- import * as moment_ from 'moment';
6
+ import moment from 'moment';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@eo-sdk/core";
9
- const moment = moment_;
10
9
  export class ObjectFormScriptService {
11
10
  constructor(logger, backend) {
12
11
  this.logger = logger;
@@ -111,4 +110,4 @@ ObjectFormScriptService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.
111
110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObjectFormScriptService, decorators: [{
112
111
  type: Injectable
113
112
  }], ctorParameters: function () { return [{ type: i1.Logger }, { type: i1.BackendService }]; } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFFBQVEsSUFBSSxrQkFBa0IsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVoRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7OztBQUNsQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFJdkIsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFvQixNQUFjLEVBQ2QsT0FBdUI7UUFEdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxLQUErQixFQUFFLE1BQVcsRUFBRSxVQUFtQjtRQUVwRixJQUFJO1lBQ0Ysa0NBQWtDO1lBQ2xDLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLHNCQUFzQjtZQUN0QixJQUFJLGdCQUFnQixHQUFHLGtCQUFrQixDQUN2QyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FDdEIsQ0FBQztZQUNGLDJFQUEyRTtZQUMzRSxJQUFJLGdCQUFnQixFQUFFO2dCQUNwQixJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7YUFDOUQ7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFlBQVksV0FBVyxFQUFFO2dCQUM1QixLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQzthQUNwRTtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssY0FBYyxDQUFDLElBQVksRUFBRSxNQUFXO1FBQzlDLHlIQUF5SDtRQUN6SCxtRUFBbUU7UUFDbkUsd0VBQXdFO1FBQ3hFLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLG1CQUFtQixHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssOEJBQThCLENBQUMsS0FBK0IsRUFBRSxnQkFBcUI7UUFFM0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFFRCxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUN6Qiw2Q0FBNkM7WUFDN0MsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUVqQixrREFBa0Q7WUFDbEQsS0FBSyxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3BEO1lBRUQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBRXRELEtBQUssSUFBSSxZQUFZLElBQUksYUFBYSxFQUFFO29CQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxzREFBc0Q7Z0JBQ3RELGlEQUFpRDtnQkFDakQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsZ0RBQWdEO1lBQ2hELGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssbUJBQW1CLENBQUMsSUFBWSxFQUFFLEtBQStCO1FBRXZFLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsUUFBUSxFQUFFLFlBQVk7YUFDdkIsQ0FBQztZQUNGLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLEdBQUcsQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsaUNBQWlDO1lBQ2pDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5RCxpQkFBaUI7WUFDakIsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzs7b0hBOUdVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRpbmdTY29wZX0gZnJvbSAnLi9vYmplY3QtZm9ybS1zY3JpcHRpbmctc2NvcGUnO1xuaW1wb3J0ICogYXMgbG9kYXNoIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuaW1wb3J0IHtMb2dnZXIsIEJhY2tlbmRTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9nZ2VyOiBMb2dnZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgYmFja2VuZDogQmFja2VuZFNlcnZpY2UpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gYSBmb3JtIHNjcmlwdC5cbiAgICogQHBhcmFtIHNjb3BlIC0gdGhlIGN1cnJlbnQgc2NyaXB0aW5nIHNjb3BlXG4gICAqIEBwYXJhbSBzY3JpcHQgLSB0aGUgc2NyaXB0IHRvIGJlIGV4ZWN1dGVkXG4gICAqIEBwYXJhbSBbc2NyaXB0TmFtZV0gLSB0aGUgc2NyaXB0cyBuYW1lXG4gICAqL1xuICBwdWJsaWMgcnVuRm9ybVNjcmlwdChzY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlLCBzY3JpcHQ6IGFueSwgc2NyaXB0TmFtZT86IHN0cmluZykge1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIERlZmluZSBmb3JtIHNjcmlwdCB0aGUgZnVuY3Rpb25cbiAgICAgIGxldCBmb3JtU2NyaXB0RnVuY3Rpb24gPSB0aGlzLmRlZmluZUZ1bmN0aW9uKCdGb3Jtc2NyaXB0LycgKyBzY3JpcHROYW1lLCBzY3JpcHQpO1xuICAgICAgLy8gcnVuIHRoZSBmb3JtIHNjcmlwdFxuICAgICAgbGV0IGZvcm1TY3JpcHRSZXR1cm4gPSBmb3JtU2NyaXB0RnVuY3Rpb24oXG4gICAgICAgIHNjb3BlLCBsb2Rhc2gsIG1vbWVudFxuICAgICAgKTtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBmb3JtIHNjcmlwdCByZXR1cm5zIHNvbWV0aGluZyBhbmQgbWF5IGV4cG9ydCBnbG9iYWwgc2NyaXB0c1xuICAgICAgaWYgKGZvcm1TY3JpcHRSZXR1cm4pIHtcbiAgICAgICAgdGhpcy5pbXBvcnRHbG9iYWxTY3JpcHRzQW5kQ2FsbEluaXQoc2NvcGUsIGZvcm1TY3JpcHRSZXR1cm4pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgICAgYWxlcnQoJ1N5bnRheCBlcnJvciBpbiBGb3JtLVNjcmlwdC4gU2VlIGNvbnNvbGUgbG9nIGZvciBkZXRhaWxzLicpO1xuICAgICAgfVxuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0dvdCBzY3JpcHQgZXJyb3InLCBlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIGZvcm0gc2NyaXB0IGZ1bmN0aW9uLCBhcHBlbmRpbmcgc291cmNlIHVybCBhcyBjb21tZW50LlxuICAgKiBFbmFibGVzIGRlYnVnZ2luZyB1c2luZyBicm93c2VyIGRlYnVnZ2luZyB0b29scyAoQ2hyb21lK0ZpcmVmb3gpXG4gICAqIEBzZWU6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVG9vbHMvRGVidWdnZXIvSG93X3RvL0RlYnVnX2V2YWxfc291cmNlc1xuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIHRoZSBuYW1lIG9mIHRoZSBzY3JpcHRcbiAgICogQHBhcmFtIHNjcmlwdCAtIHNjcmlwdCB0byBiZSB3cmFwcGVkIGluIGEgZnVuY3Rpb25cbiAgICogQHJldHVybnMgdGhlIGZ1bmN0aW9uXG4gICAqL1xuICBwcml2YXRlIGRlZmluZUZ1bmN0aW9uKG5hbWU6IHN0cmluZywgc2NyaXB0OiBhbnkpOiBGdW5jdGlvbiB7XG4gICAgLy8gQXBwZW5kaW5nIHNvdXJjZSB1cmwgYXMgY29tbWVudC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvVG9vbHMvRGVidWdnZXIvSG93X3RvL0RlYnVnX2V2YWxfc291cmNlc1xuICAgIC8vIEVuYWJsZXMgZGVidWdnaW5nIHVzaW5nIGJyb3dzZXIgZGVidWdnaW5nIHRvb2xzIChDaHJvbWUrRmlyZWZveClcbiAgICAvLyBUaGUgbGluZSBmZWVkIGlzIG5lZWRlZCwgaWYgdGhlIHNjcmlwdCBoYXMgYSBjb21tZW50IGluIHRoZSBsYXN0IGxpbmVcbiAgICByZXR1cm4gbmV3IEZ1bmN0aW9uKCdzY29wZScsICdfJywgJ21vbWVudCcsIHNjcmlwdCArICdcXG47Ly8jIHNvdXJjZVVSTD0nICsgbmFtZSArICcuanMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgc2NyaXB0IGNvbnRhaW5zIGdsb2JhbCBzY3JpcHQsIHRoaXMgZnVuY3Rpb24gd2lsbCBpbXBvcnQgYW5kIHJ1biB0aGVtXG4gICAqIGJlZm9yZSBydW5uaW5nIHRoZSBhY3R1YWwgc2NyaXB0LlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSB0aGUgY3VycmVudCBzY3JpcHRpbmcgc2NvcGVcbiAgICogQHBhcmFtIGZvcm1TY3JpcHRSZXR1cm4gLSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBhY3R1YWwgZm9ybSBzY3JpcHRcbiAgICovXG4gIHByaXZhdGUgaW1wb3J0R2xvYmFsU2NyaXB0c0FuZENhbGxJbml0KHNjb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGUsIGZvcm1TY3JpcHRSZXR1cm46IGFueSkge1xuXG4gICAgaWYgKCFmb3JtU2NyaXB0UmV0dXJuLmluaXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZm9ybVNjcmlwdFJldHVybi51c2VzKSB7XG4gICAgICAvLyBjb2xsZWN0IHRoZSBnbG9iYWwgc2NyaXB0IGV4cG9ydHMgcHJvbWlzZXNcbiAgICAgIGxldCBleHBvcnRzID0gW107XG4gICAgICBsZXQgZ2xvYmFscyA9IFtdO1xuXG4gICAgICAvLyBjb2xsZWN0IE9ic2VydmFibGVzIGZvciBmZXRjaGluZyBnbG9iYWwgc2NyaXB0c1xuICAgICAgZm9yIChsZXQgdXNlIG9mIGZvcm1TY3JpcHRSZXR1cm4udXNlcykge1xuICAgICAgICBnbG9iYWxzLnB1c2godGhpcy5yZXNvbHZlR2xvYmFsU2NyaXB0KHVzZSwgc2NvcGUpKTtcbiAgICAgIH1cblxuICAgICAgb2JzZXJ2YWJsZUZvcmtKb2luKGdsb2JhbHMpLnN1YnNjcmliZSgoZ2xvYmFsUmV0dXJucykgPT4ge1xuXG4gICAgICAgIGZvciAobGV0IHNjcmlwdFJldHVybiBvZiBnbG9iYWxSZXR1cm5zKSB7XG4gICAgICAgICAgZXhwb3J0cy5wdXNoKHNjcmlwdFJldHVyblsnZXhwb3J0cyddKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJbnZva2UgaW5pdCBmdW5jdGlvbiBvbiBmb3JtIHNjcmlwdCByZXR1cm4gd2l0aCB0aGVcbiAgICAgICAgLy8gY29sbGVjdGVkIGV4cG9ydHMgdXNpbmcgamF2YXNjcmlwdCBhcHBseSBtYWdpY1xuICAgICAgICBmb3JtU2NyaXB0UmV0dXJuLmluaXQuYXBwbHkodGhpcywgZXhwb3J0cyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW52b2tlIGluaXQgZGlyZWN0IChubyB1c2Ugb2YgZ2xvYmFsIHNjcmlwdHMpXG4gICAgICBmb3JtU2NyaXB0UmV0dXJuLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggZ2xvYmFsIHNjcmlwdHMuXG4gICAqIEBwYXJhbSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIGdsb2JhbCBzY3JpcHRcbiAgICogQHBhcmFtIHNjb3BlIC0gdGhlIGN1cnJlbnQgc2NyaXB0aW5nIHNjb3BlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVHbG9iYWxTY3JpcHQobmFtZTogc3RyaW5nLCBzY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgJ0FjY2VwdCc6ICd0ZXh0L3BsYWluJ1xuICAgICAgfSksXG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0J1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0KGAvc2NyaXB0LyR7bmFtZX0vc2NyaXB0YCwgbnVsbCwgcmVxdWVzdE9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiB7XG4gICAgICAgIC8vIGRlZmluZSB0aGUgZ2xvYmFsIGZ1bmN0aW9uIC4uLlxuICAgICAgICBsZXQgZ2xvYmFsU2NyaXB0ID0gdGhpcy5kZWZpbmVGdW5jdGlvbignR2xvYmFsLycgKyBuYW1lLCByZXMpO1xuICAgICAgICAvLyAuLi4gYW5kIHJ1biBpdFxuICAgICAgICByZXR1cm4gZ2xvYmFsU2NyaXB0KHNjb3BlLCBsb2Rhc2gsIG1vbWVudCk7XG4gICAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2VvLWZyYW1ld29yay9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFDLFFBQVEsSUFBSSxrQkFBa0IsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVoRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDOzs7QUFJNUIsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQyxZQUFvQixNQUFjLEVBQ2QsT0FBdUI7UUFEdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWdCO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxLQUErQixFQUFFLE1BQVcsRUFBRSxVQUFtQjtRQUVwRixJQUFJO1lBQ0Ysa0NBQWtDO1lBQ2xDLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEdBQUcsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ2pGLHNCQUFzQjtZQUN0QixJQUFJLGdCQUFnQixHQUFHLGtCQUFrQixDQUN2QyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FDdEIsQ0FBQztZQUNGLDJFQUEyRTtZQUMzRSxJQUFJLGdCQUFnQixFQUFFO2dCQUNwQixJQUFJLENBQUMsOEJBQThCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7YUFDOUQ7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFlBQVksV0FBVyxFQUFFO2dCQUM1QixLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQzthQUNwRTtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssY0FBYyxDQUFDLElBQVksRUFBRSxNQUFXO1FBQzlDLHlIQUF5SDtRQUN6SCxtRUFBbUU7UUFDbkUsd0VBQXdFO1FBQ3hFLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxHQUFHLG1CQUFtQixHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssOEJBQThCLENBQUMsS0FBK0IsRUFBRSxnQkFBcUI7UUFFM0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFFRCxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUN6Qiw2Q0FBNkM7WUFDN0MsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUVqQixrREFBa0Q7WUFDbEQsS0FBSyxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3BEO1lBRUQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBRXRELEtBQUssSUFBSSxZQUFZLElBQUksYUFBYSxFQUFFO29CQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUN2QztnQkFDRCxzREFBc0Q7Z0JBQ3RELGlEQUFpRDtnQkFDakQsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsZ0RBQWdEO1lBQ2hELGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssbUJBQW1CLENBQUMsSUFBWSxFQUFFLEtBQStCO1FBRXZFLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsUUFBUSxFQUFFLFlBQVk7YUFDdkIsQ0FBQztZQUNGLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUM7UUFFRixPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2hCLEdBQUcsQ0FBQyxXQUFXLElBQUksU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2YsaUNBQWlDO1lBQ2pDLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM5RCxpQkFBaUI7WUFDakIsT0FBTyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQzs7b0hBOUdVLHVCQUF1Qjt3SEFBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7Zm9ya0pvaW4gYXMgb2JzZXJ2YWJsZUZvcmtKb2luLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBIZWFkZXJzfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRpbmdTY29wZX0gZnJvbSAnLi9vYmplY3QtZm9ybS1zY3JpcHRpbmctc2NvcGUnO1xuaW1wb3J0ICogYXMgbG9kYXNoIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0xvZ2dlciwgQmFja2VuZFNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPYmplY3RGb3JtU2NyaXB0U2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSkge1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBhIGZvcm0gc2NyaXB0LlxuICAgKiBAcGFyYW0gc2NvcGUgLSB0aGUgY3VycmVudCBzY3JpcHRpbmcgc2NvcGVcbiAgICogQHBhcmFtIHNjcmlwdCAtIHRoZSBzY3JpcHQgdG8gYmUgZXhlY3V0ZWRcbiAgICogQHBhcmFtIFtzY3JpcHROYW1lXSAtIHRoZSBzY3JpcHRzIG5hbWVcbiAgICovXG4gIHB1YmxpYyBydW5Gb3JtU2NyaXB0KHNjb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGUsIHNjcmlwdDogYW55LCBzY3JpcHROYW1lPzogc3RyaW5nKSB7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRGVmaW5lIGZvcm0gc2NyaXB0IHRoZSBmdW5jdGlvblxuICAgICAgbGV0IGZvcm1TY3JpcHRGdW5jdGlvbiA9IHRoaXMuZGVmaW5lRnVuY3Rpb24oJ0Zvcm1zY3JpcHQvJyArIHNjcmlwdE5hbWUsIHNjcmlwdCk7XG4gICAgICAvLyBydW4gdGhlIGZvcm0gc2NyaXB0XG4gICAgICBsZXQgZm9ybVNjcmlwdFJldHVybiA9IGZvcm1TY3JpcHRGdW5jdGlvbihcbiAgICAgICAgc2NvcGUsIGxvZGFzaCwgbW9tZW50XG4gICAgICApO1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZvcm0gc2NyaXB0IHJldHVybnMgc29tZXRoaW5nIGFuZCBtYXkgZXhwb3J0IGdsb2JhbCBzY3JpcHRzXG4gICAgICBpZiAoZm9ybVNjcmlwdFJldHVybikge1xuICAgICAgICB0aGlzLmltcG9ydEdsb2JhbFNjcmlwdHNBbmRDYWxsSW5pdChzY29wZSwgZm9ybVNjcmlwdFJldHVybik7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgICBhbGVydCgnU3ludGF4IGVycm9yIGluIEZvcm0tU2NyaXB0LiBTZWUgY29uc29sZSBsb2cgZm9yIGRldGFpbHMuJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignR290IHNjcmlwdCBlcnJvcicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmUgZm9ybSBzY3JpcHQgZnVuY3Rpb24sIGFwcGVuZGluZyBzb3VyY2UgdXJsIGFzIGNvbW1lbnQuXG4gICAqIEVuYWJsZXMgZGVidWdnaW5nIHVzaW5nIGJyb3dzZXIgZGVidWdnaW5nIHRvb2xzIChDaHJvbWUrRmlyZWZveClcbiAgICogQHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Ub29scy9EZWJ1Z2dlci9Ib3dfdG8vRGVidWdfZXZhbF9zb3VyY2VzXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIHNjcmlwdFxuICAgKiBAcGFyYW0gc2NyaXB0IC0gc2NyaXB0IHRvIGJlIHdyYXBwZWQgaW4gYSBmdW5jdGlvblxuICAgKiBAcmV0dXJucyB0aGUgZnVuY3Rpb25cbiAgICovXG4gIHByaXZhdGUgZGVmaW5lRnVuY3Rpb24obmFtZTogc3RyaW5nLCBzY3JpcHQ6IGFueSk6IEZ1bmN0aW9uIHtcbiAgICAvLyBBcHBlbmRpbmcgc291cmNlIHVybCBhcyBjb21tZW50LiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Ub29scy9EZWJ1Z2dlci9Ib3dfdG8vRGVidWdfZXZhbF9zb3VyY2VzXG4gICAgLy8gRW5hYmxlcyBkZWJ1Z2dpbmcgdXNpbmcgYnJvd3NlciBkZWJ1Z2dpbmcgdG9vbHMgKENocm9tZStGaXJlZm94KVxuICAgIC8vIFRoZSBsaW5lIGZlZWQgaXMgbmVlZGVkLCBpZiB0aGUgc2NyaXB0IGhhcyBhIGNvbW1lbnQgaW4gdGhlIGxhc3QgbGluZVxuICAgIHJldHVybiBuZXcgRnVuY3Rpb24oJ3Njb3BlJywgJ18nLCAnbW9tZW50Jywgc2NyaXB0ICsgJ1xcbjsvLyMgc291cmNlVVJMPScgKyBuYW1lICsgJy5qcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBzY3JpcHQgY29udGFpbnMgZ2xvYmFsIHNjcmlwdCwgdGhpcyBmdW5jdGlvbiB3aWxsIGltcG9ydCBhbmQgcnVuIHRoZW1cbiAgICogYmVmb3JlIHJ1bm5pbmcgdGhlIGFjdHVhbCBzY3JpcHQuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIHRoZSBjdXJyZW50IHNjcmlwdGluZyBzY29wZVxuICAgKiBAcGFyYW0gZm9ybVNjcmlwdFJldHVybiAtIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGFjdHVhbCBmb3JtIHNjcmlwdFxuICAgKi9cbiAgcHJpdmF0ZSBpbXBvcnRHbG9iYWxTY3JpcHRzQW5kQ2FsbEluaXQoc2NvcGU6IE9iamVjdEZvcm1TY3JpcHRpbmdTY29wZSwgZm9ybVNjcmlwdFJldHVybjogYW55KSB7XG5cbiAgICBpZiAoIWZvcm1TY3JpcHRSZXR1cm4uaW5pdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmb3JtU2NyaXB0UmV0dXJuLnVzZXMpIHtcbiAgICAgIC8vIGNvbGxlY3QgdGhlIGdsb2JhbCBzY3JpcHQgZXhwb3J0cyBwcm9taXNlc1xuICAgICAgbGV0IGV4cG9ydHMgPSBbXTtcbiAgICAgIGxldCBnbG9iYWxzID0gW107XG5cbiAgICAgIC8vIGNvbGxlY3QgT2JzZXJ2YWJsZXMgZm9yIGZldGNoaW5nIGdsb2JhbCBzY3JpcHRzXG4gICAgICBmb3IgKGxldCB1c2Ugb2YgZm9ybVNjcmlwdFJldHVybi51c2VzKSB7XG4gICAgICAgIGdsb2JhbHMucHVzaCh0aGlzLnJlc29sdmVHbG9iYWxTY3JpcHQodXNlLCBzY29wZSkpO1xuICAgICAgfVxuXG4gICAgICBvYnNlcnZhYmxlRm9ya0pvaW4oZ2xvYmFscykuc3Vic2NyaWJlKChnbG9iYWxSZXR1cm5zKSA9PiB7XG5cbiAgICAgICAgZm9yIChsZXQgc2NyaXB0UmV0dXJuIG9mIGdsb2JhbFJldHVybnMpIHtcbiAgICAgICAgICBleHBvcnRzLnB1c2goc2NyaXB0UmV0dXJuWydleHBvcnRzJ10pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEludm9rZSBpbml0IGZ1bmN0aW9uIG9uIGZvcm0gc2NyaXB0IHJldHVybiB3aXRoIHRoZVxuICAgICAgICAvLyBjb2xsZWN0ZWQgZXhwb3J0cyB1c2luZyBqYXZhc2NyaXB0IGFwcGx5IG1hZ2ljXG4gICAgICAgIGZvcm1TY3JpcHRSZXR1cm4uaW5pdC5hcHBseSh0aGlzLCBleHBvcnRzKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbnZva2UgaW5pdCBkaXJlY3QgKG5vIHVzZSBvZiBnbG9iYWwgc2NyaXB0cylcbiAgICAgIGZvcm1TY3JpcHRSZXR1cm4uaW5pdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaCBnbG9iYWwgc2NyaXB0cy5cbiAgICogQHBhcmFtIG5hbWUgLSB0aGUgbmFtZSBvZiB0aGUgZ2xvYmFsIHNjcmlwdFxuICAgKiBAcGFyYW0gc2NvcGUgLSB0aGUgY3VycmVudCBzY3JpcHRpbmcgc2NvcGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUdsb2JhbFNjcmlwdChuYW1lOiBzdHJpbmcsIHNjb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAnQWNjZXB0JzogJ3RleHQvcGxhaW4nXG4gICAgICB9KSxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5nZXQoYC9zY3JpcHQvJHtuYW1lfS9zY3JpcHRgLCBudWxsLCByZXF1ZXN0T3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgLy8gZGVmaW5lIHRoZSBnbG9iYWwgZnVuY3Rpb24gLi4uXG4gICAgICAgIGxldCBnbG9iYWxTY3JpcHQgPSB0aGlzLmRlZmluZUZ1bmN0aW9uKCdHbG9iYWwvJyArIG5hbWUsIHJlcyk7XG4gICAgICAgIC8vIC4uLiBhbmQgcnVuIGl0XG4gICAgICAgIHJldHVybiBnbG9iYWxTY3JpcHQoc2NvcGUsIGxvZGFzaCwgbW9tZW50KTtcbiAgICAgIH0pKTtcbiAgfVxufVxuIl19