@yuuvis/client-framework 2.0.0-beta.0 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/actions/lib/actions/delete-action/delete/delete.component.d.ts +3 -3
  2. package/actions/lib/actions/delete-action/delete-action.d.ts +1 -1
  3. package/actions/lib/actions.service.d.ts +7 -3
  4. package/actions/lib/components/contextmenu/contextmenu.component.d.ts +3 -1
  5. package/autocomplete/README.md +3 -0
  6. package/autocomplete/index.d.ts +3 -0
  7. package/autocomplete/lib/autocomplete.component.d.ts +72 -0
  8. package/autocomplete/lib/autocomplete.interface.d.ts +4 -0
  9. package/autocomplete/lib/autocomplete.module.d.ts +7 -0
  10. package/common/index.d.ts +4 -4
  11. package/common/lib/common.module.d.ts +19 -0
  12. package/common/lib/common.utils.d.ts +2 -0
  13. package/common/lib/components/confirm/confirm.component.d.ts +7 -0
  14. package/common/lib/components/confirm/confirm.interface.d.ts +7 -0
  15. package/common/lib/components/confirm/confirm.service.d.ts +9 -0
  16. package/common/lib/components/dialog/dialog.component.d.ts +6 -0
  17. package/common/lib/components/dialog/dialog.options.d.ts +7 -0
  18. package/common/lib/components/index.d.ts +5 -0
  19. package/common/lib/directives/autofocus-child.directive.d.ts +13 -0
  20. package/common/lib/directives/autofocus-delayed.directive.d.ts +18 -0
  21. package/common/lib/directives/drag-scroll.directive.d.ts +20 -0
  22. package/common/lib/directives/index.d.ts +8 -4
  23. package/common/lib/directives/noop-value-accessor.directive.d.ts +2 -2
  24. package/common/lib/mat-form-field.abstract.d.ts +41 -0
  25. package/common/lib/services/index.d.ts +1 -1
  26. package/common/lib/services/layout-settings/layout-settings.service.d.ts +18 -0
  27. package/datepicker/README.md +3 -0
  28. package/datepicker/index.d.ts +5 -0
  29. package/datepicker/lib/calendar/calendar.component.d.ts +72 -0
  30. package/datepicker/lib/date-input/date-input-element/date-input-element.component.d.ts +43 -0
  31. package/datepicker/lib/date-input/date-input-hour-element/date-input-hour-element.component.d.ts +11 -0
  32. package/datepicker/lib/date-input/date-input.component.d.ts +61 -0
  33. package/datepicker/lib/datepicker-calendar/datepicker-calendar-trigger.component.d.ts +7 -0
  34. package/datepicker/lib/datepicker-calendar/datepicker-calendar.component.d.ts +12 -0
  35. package/datepicker/lib/datepicker.component.d.ts +80 -0
  36. package/datepicker/lib/datepicker.interface.d.ts +34 -0
  37. package/datepicker/lib/datepicker.module.d.ts +9 -0
  38. package/datepicker/lib/datepicker.service.d.ts +46 -0
  39. package/datepicker/lib/datepicker.utils.d.ts +23 -0
  40. package/datepicker/lib/time-input/time-input.component.d.ts +36 -0
  41. package/datepicker/lib/time-input/time-input.interface.d.ts +6 -0
  42. package/fesm2022/yuuvis-client-framework-actions.mjs +147 -105
  43. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
  44. package/fesm2022/yuuvis-client-framework-app-bar.mjs +7 -8
  45. package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
  46. package/fesm2022/yuuvis-client-framework-autocomplete.mjs +210 -0
  47. package/fesm2022/yuuvis-client-framework-autocomplete.mjs.map +1 -0
  48. package/fesm2022/yuuvis-client-framework-clipboard.mjs +9 -9
  49. package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -1
  50. package/fesm2022/yuuvis-client-framework-common.mjs +853 -780
  51. package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
  52. package/fesm2022/yuuvis-client-framework-datepicker.mjs +1688 -0
  53. package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -0
  54. package/fesm2022/yuuvis-client-framework-forms.mjs +945 -1157
  55. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  56. package/fesm2022/yuuvis-client-framework-icons.mjs +85 -12
  57. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  58. package/fesm2022/yuuvis-client-framework-list.mjs +81 -45
  59. package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
  60. package/fesm2022/yuuvis-client-framework-master-details.mjs +112 -0
  61. package/fesm2022/yuuvis-client-framework-master-details.mjs.map +1 -0
  62. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +60 -0
  63. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -0
  64. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +125 -100
  65. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
  66. package/fesm2022/yuuvis-client-framework-object-details.mjs +49 -59
  67. package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
  68. package/fesm2022/yuuvis-client-framework-object-flavor.mjs +188 -77
  69. package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
  70. package/fesm2022/yuuvis-client-framework-object-form.mjs +99 -184
  71. package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
  72. package/fesm2022/yuuvis-client-framework-object-preview.mjs +11 -11
  73. package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
  74. package/fesm2022/yuuvis-client-framework-object-summary.mjs +46 -42
  75. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  76. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs +126 -0
  77. package/fesm2022/yuuvis-client-framework-overflow-menu.mjs.map +1 -0
  78. package/fesm2022/yuuvis-client-framework-pagination.mjs +7 -9
  79. package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
  80. package/fesm2022/yuuvis-client-framework-panel.mjs +8 -7
  81. package/fesm2022/yuuvis-client-framework-panel.mjs.map +1 -1
  82. package/fesm2022/yuuvis-client-framework-popout.mjs +212 -0
  83. package/fesm2022/yuuvis-client-framework-popout.mjs.map +1 -0
  84. package/fesm2022/yuuvis-client-framework-renderer.mjs +99 -72
  85. package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
  86. package/fesm2022/yuuvis-client-framework-sequence-list.mjs +29 -112
  87. package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
  88. package/fesm2022/yuuvis-client-framework-simple-search.mjs +40 -21
  89. package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
  90. package/fesm2022/yuuvis-client-framework-split-view.mjs +188 -0
  91. package/fesm2022/yuuvis-client-framework-split-view.mjs.map +1 -0
  92. package/fesm2022/yuuvis-client-framework-tile-list.mjs +100 -93
  93. package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
  94. package/fesm2022/yuuvis-client-framework-tree.mjs +15 -15
  95. package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -1
  96. package/fesm2022/yuuvis-client-framework-upload-progress.mjs +16 -21
  97. package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -1
  98. package/fesm2022/yuuvis-client-framework.mjs +4 -4
  99. package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
  100. package/forms/index.d.ts +7 -1
  101. package/forms/lib/elements/catalog/catalog.component.d.ts +17 -56
  102. package/forms/lib/elements/data-grid/edit-table-data/edit-data.component.d.ts +5 -4
  103. package/forms/lib/elements/datetime/datetime.component.d.ts +19 -10
  104. package/forms/lib/elements/datetime-range/datetime-range.component.d.ts +12 -27
  105. package/forms/lib/elements/index.d.ts +0 -1
  106. package/forms/lib/elements/number/number.component.d.ts +21 -30
  107. package/forms/lib/elements/number-range/number-range.component.d.ts +12 -7
  108. package/forms/lib/elements/organization/organization.component.d.ts +23 -51
  109. package/forms/lib/elements/range-select-date/range-select-date.component.d.ts +12 -7
  110. package/forms/lib/elements/range-select-filesize/range-select-filesize.component.d.ts +12 -7
  111. package/forms/lib/elements/string/string.component.d.ts +15 -20
  112. package/forms/lib/forms.module.d.ts +8 -11
  113. package/icons/index.d.ts +1 -0
  114. package/icons/lib/icon.component.d.ts +20 -0
  115. package/lib/assets/i18n/de.json +7 -23
  116. package/lib/assets/i18n/en.json +10 -26
  117. package/list/index.d.ts +1 -0
  118. package/list/lib/list-item.directive.d.ts +5 -4
  119. package/list/lib/list.component.d.ts +6 -3
  120. package/list/lib/list.module.d.ts +8 -0
  121. package/master-details/README.md +3 -0
  122. package/master-details/index.d.ts +2 -0
  123. package/master-details/lib/master-details.component.d.ts +58 -0
  124. package/master-details/lib/master-details.interface.d.ts +7 -0
  125. package/master-details/lib/master-details.module.d.ts +7 -0
  126. package/metadata-form/index.d.ts +4 -1
  127. package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +4 -17
  128. package/metadata-form/lib/metadata-form-field/metadata-form-field.interface.d.ts +11 -0
  129. package/metadata-form/lib/object-metadata-element-error.directive.d.ts +13 -0
  130. package/metadata-form/lib/object-metadata-element-label.directive.d.ts +10 -0
  131. package/metadata-form/lib/object-metadata-element-template.directive.d.ts +3 -3
  132. package/metadata-form-defaults/README.md +3 -0
  133. package/metadata-form-defaults/index.d.ts +2 -0
  134. package/metadata-form-defaults/lib/metadata-form-defaults.module.d.ts +7 -0
  135. package/object-details/lib/object-audit/object-audit.component.d.ts +3 -9
  136. package/object-details/lib/object-details.component.d.ts +0 -2
  137. package/object-details/lib/object-metadata/object-metadata.component.d.ts +4 -3
  138. package/object-details/lib/retention-badge/retention-badge.component.d.ts +0 -3
  139. package/object-flavor/index.d.ts +1 -0
  140. package/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.d.ts +1 -2
  141. package/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.d.ts +3 -2
  142. package/object-flavor/lib/default-apply-flavor/default-apply-flavor.component.d.ts +19 -0
  143. package/object-flavor/lib/flavor-chip/flavor-chip.component.d.ts +1 -1
  144. package/object-flavor/lib/object-flavor/object-flavor.component.d.ts +3 -6
  145. package/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.d.ts +0 -1
  146. package/object-form/index.d.ts +1 -1
  147. package/object-form/lib/object-form-element/object-form-element.component.d.ts +2 -2
  148. package/object-form/lib/object-form-group/object-form-group.component.d.ts +1 -3
  149. package/object-form/lib/object-form.component.d.ts +2 -2
  150. package/object-form/lib/object-form.interface.d.ts +0 -44
  151. package/object-form/lib/object-form.module.d.ts +7 -0
  152. package/object-form/lib/object-form.service.d.ts +1 -2
  153. package/object-form/lib/object-form.utils.d.ts +1 -1
  154. package/object-summary/lib/object-summary/object-summary.component.d.ts +13 -15
  155. package/overflow-menu/README.md +3 -0
  156. package/overflow-menu/index.d.ts +3 -0
  157. package/overflow-menu/lib/overflow-menu.component.d.ts +31 -0
  158. package/overflow-menu/lib/overflow-menu.interface.d.ts +9 -0
  159. package/overflow-menu/lib/overflow-menu.module.d.ts +7 -0
  160. package/package.json +43 -69
  161. package/popout/README.md +3 -0
  162. package/popout/index.d.ts +3 -0
  163. package/popout/lib/popout.component.d.ts +58 -0
  164. package/popout/lib/popout.interface.d.ts +17 -0
  165. package/popout/lib/popout.module.d.ts +7 -0
  166. package/renderer/lib/property-renderer/abstract.renderer.d.ts +4 -4
  167. package/renderer/lib/property-renderer/icon.renderer.component.d.ts +2 -0
  168. package/renderer/lib/renderer.directive.d.ts +4 -3
  169. package/sequence-list/index.d.ts +0 -1
  170. package/sequence-list/lib/sequence-list.component.d.ts +0 -4
  171. package/simple-search/index.d.ts +0 -1
  172. package/simple-search/lib/simple-search/simple-search.component.d.ts +6 -10
  173. package/split-view/README.md +3 -0
  174. package/split-view/index.d.ts +4 -0
  175. package/split-view/lib/split-area.directive.d.ts +16 -0
  176. package/split-view/lib/split-view.component.d.ts +76 -0
  177. package/split-view/lib/split-view.interface.d.ts +10 -0
  178. package/split-view/lib/split-view.module.d.ts +8 -0
  179. package/styles/client-framework.scss +21 -67
  180. package/tile-list/lib/tile/tile.component.d.ts +1 -2
  181. package/tile-list/lib/tile-config/property-select/property-select.component.d.ts +0 -1
  182. package/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.d.ts +1 -2
  183. package/tile-list/lib/tile-config/tile-config.component.d.ts +0 -3
  184. package/tile-list/lib/tile-list/tile-list.component.d.ts +5 -5
  185. package/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.d.ts +0 -5
  186. package/upload-progress/lib/upload-progress/upload-progress.component.d.ts +0 -4
  187. package/common/lib/components/focus-indicator/focus-indicator.component.d.ts +0 -7
  188. package/common/lib/components/token-input/token-input.component.d.ts +0 -55
  189. package/common/lib/components/token-input/token-input.interface.d.ts +0 -8
  190. package/common/lib/services/error-messages/error-messages.service.d.ts +0 -7
  191. package/esm2022/actions/index.mjs +0 -7
  192. package/esm2022/actions/lib/actions/copy-action/copy-action.mjs +0 -31
  193. package/esm2022/actions/lib/actions/cut-action/cut-action.mjs +0 -30
  194. package/esm2022/actions/lib/actions/delete-action/delete/delete.component.mjs +0 -67
  195. package/esm2022/actions/lib/actions/delete-action/delete-action.mjs +0 -38
  196. package/esm2022/actions/lib/actions/download-action/download-action.mjs +0 -33
  197. package/esm2022/actions/lib/actions.icon.mjs +0 -8
  198. package/esm2022/actions/lib/actions.interface.mjs +0 -19
  199. package/esm2022/actions/lib/actions.module.mjs +0 -16
  200. package/esm2022/actions/lib/actions.service.mjs +0 -89
  201. package/esm2022/actions/lib/components/contextmenu/contextmenu.component.mjs +0 -27
  202. package/esm2022/actions/yuuvis-client-framework-actions.mjs +0 -5
  203. package/esm2022/app-bar/index.mjs +0 -2
  204. package/esm2022/app-bar/lib/app-bar.component.mjs +0 -89
  205. package/esm2022/app-bar/yuuvis-client-framework-app-bar.mjs +0 -5
  206. package/esm2022/clipboard/index.mjs +0 -2
  207. package/esm2022/clipboard/lib/clipboard.component.mjs +0 -48
  208. package/esm2022/clipboard/yuuvis-client-framework-clipboard.mjs +0 -5
  209. package/esm2022/common/index.mjs +0 -7
  210. package/esm2022/common/lib/components/focus-indicator/focus-indicator.component.mjs +0 -41
  211. package/esm2022/common/lib/components/token-input/token-input.component.mjs +0 -324
  212. package/esm2022/common/lib/components/token-input/token-input.interface.mjs +0 -2
  213. package/esm2022/common/lib/directives/busy-overlay.directive.mjs +0 -88
  214. package/esm2022/common/lib/directives/click-double.directive.mjs +0 -61
  215. package/esm2022/common/lib/directives/container-size.directive.mjs +0 -56
  216. package/esm2022/common/lib/directives/drag-select.directive.mjs +0 -114
  217. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.directive.mjs +0 -153
  218. package/esm2022/common/lib/directives/file-drop-zone/file-drop-zone.interface.mjs +0 -2
  219. package/esm2022/common/lib/directives/focus-within.directive.mjs +0 -81
  220. package/esm2022/common/lib/directives/index.mjs +0 -9
  221. package/esm2022/common/lib/directives/light-dismiss.directive.mjs +0 -44
  222. package/esm2022/common/lib/directives/longpress.directive.mjs +0 -36
  223. package/esm2022/common/lib/directives/noop-value-accessor.directive.mjs +0 -42
  224. package/esm2022/common/lib/services/error-messages/error-messages.service.mjs +0 -68
  225. package/esm2022/common/lib/services/index.mjs +0 -2
  226. package/esm2022/common/yuuvis-client-framework-common.mjs +0 -5
  227. package/esm2022/forms/index.mjs +0 -24
  228. package/esm2022/forms/lib/elements/catalog/catalog.component.mjs +0 -118
  229. package/esm2022/forms/lib/elements/data-grid/data-grid/data-grid.component.mjs +0 -172
  230. package/esm2022/forms/lib/elements/data-grid/edit-table-data/edit-data.component.mjs +0 -95
  231. package/esm2022/forms/lib/elements/data-grid/model/data-grid.interface.mjs +0 -9
  232. package/esm2022/forms/lib/elements/datetime/datetime.component.mjs +0 -82
  233. package/esm2022/forms/lib/elements/datetime-range/datetime-range.component.mjs +0 -166
  234. package/esm2022/forms/lib/elements/index.mjs +0 -11
  235. package/esm2022/forms/lib/elements/number/number.component.mjs +0 -195
  236. package/esm2022/forms/lib/elements/number-range/number-range.component.mjs +0 -176
  237. package/esm2022/forms/lib/elements/organization/organization.component.mjs +0 -286
  238. package/esm2022/forms/lib/elements/range-select-date/date-range-picker/date-range-picker.component.mjs +0 -38
  239. package/esm2022/forms/lib/elements/range-select-date/range-select-date.component.mjs +0 -181
  240. package/esm2022/forms/lib/elements/range-select-date/range-select-date.interface.mjs +0 -2
  241. package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.component.mjs +0 -98
  242. package/esm2022/forms/lib/elements/range-select-filesize/range-select-filesize.interface.mjs +0 -2
  243. package/esm2022/forms/lib/elements/string/string.component.mjs +0 -261
  244. package/esm2022/forms/lib/form-input/form-input.component.mjs +0 -88
  245. package/esm2022/forms/lib/forms.module.mjs +0 -58
  246. package/esm2022/forms/yuuvis-client-framework-forms.mjs +0 -5
  247. package/esm2022/icons/index.mjs +0 -4
  248. package/esm2022/icons/lib/icon.service.mjs +0 -59
  249. package/esm2022/icons/lib/icons.mjs +0 -32
  250. package/esm2022/icons/lib/object-type-icon/object-type-icon.component.mjs +0 -29
  251. package/esm2022/icons/yuuvis-client-framework-icons.mjs +0 -5
  252. package/esm2022/index.mjs +0 -2
  253. package/esm2022/lib/yuuvis-client-framework.module.mjs +0 -15
  254. package/esm2022/list/index.mjs +0 -3
  255. package/esm2022/list/lib/list-item.directive.mjs +0 -72
  256. package/esm2022/list/lib/list.component.mjs +0 -135
  257. package/esm2022/list/yuuvis-client-framework-list.mjs +0 -5
  258. package/esm2022/metadata-form/index.mjs +0 -4
  259. package/esm2022/metadata-form/lib/metadata-default-templates/metadata-default-templates.component.mjs +0 -32
  260. package/esm2022/metadata-form/lib/metadata-form-element-registry.service.mjs +0 -99
  261. package/esm2022/metadata-form/lib/metadata-form-field/metadata-form-field.component.mjs +0 -83
  262. package/esm2022/metadata-form/lib/object-metadata-element-template.directive.mjs +0 -52
  263. package/esm2022/metadata-form/yuuvis-client-framework-metadata-form.mjs +0 -5
  264. package/esm2022/object-details/index.mjs +0 -8
  265. package/esm2022/object-details/lib/object-audit/object-audit.component.mjs +0 -195
  266. package/esm2022/object-details/lib/object-details-shell/object-details-shell.component.mjs +0 -127
  267. package/esm2022/object-details/lib/object-details.component.mjs +0 -61
  268. package/esm2022/object-details/lib/object-metadata/form-section-group.pipe.mjs +0 -17
  269. package/esm2022/object-details/lib/object-metadata/object-metadata.component.mjs +0 -202
  270. package/esm2022/object-details/lib/object-metadata/object-metadata.interface.mjs +0 -2
  271. package/esm2022/object-details/lib/retention-badge/retention-badge.component.mjs +0 -27
  272. package/esm2022/object-details/yuuvis-client-framework-object-details.mjs +0 -5
  273. package/esm2022/object-flavor/index.mjs +0 -6
  274. package/esm2022/object-flavor/lib/abstract-apply-create-flavor/abstract-apply-create-flavor.component.mjs +0 -25
  275. package/esm2022/object-flavor/lib/abstract-apply-object-flavor/abstract-apply-object-flavor.component.mjs +0 -21
  276. package/esm2022/object-flavor/lib/flavor-chip/flavor-chip.component.mjs +0 -35
  277. package/esm2022/object-flavor/lib/object-flavor/object-flavor.component.mjs +0 -93
  278. package/esm2022/object-flavor/lib/object-flavor-picker/object-flavor-picker.component.mjs +0 -43
  279. package/esm2022/object-flavor/yuuvis-client-framework-object-flavor.mjs +0 -5
  280. package/esm2022/object-form/index.mjs +0 -5
  281. package/esm2022/object-form/lib/form-scripting.api.interface.mjs +0 -2
  282. package/esm2022/object-form/lib/form-scripting.service.mjs +0 -160
  283. package/esm2022/object-form/lib/object-form-element/object-form-element.component.mjs +0 -87
  284. package/esm2022/object-form/lib/object-form-extension.interface.mjs +0 -36
  285. package/esm2022/object-form/lib/object-form-group/object-form-group.component.mjs +0 -85
  286. package/esm2022/object-form/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.mjs +0 -23
  287. package/esm2022/object-form/lib/object-form-script/object-form-script.service.mjs +0 -115
  288. package/esm2022/object-form/lib/object-form-script/object-form-scripting-scope.mjs +0 -251
  289. package/esm2022/object-form/lib/object-form-translate.service.mjs +0 -73
  290. package/esm2022/object-form/lib/object-form.component.mjs +0 -628
  291. package/esm2022/object-form/lib/object-form.interface.mjs +0 -9
  292. package/esm2022/object-form/lib/object-form.model.mjs +0 -20
  293. package/esm2022/object-form/lib/object-form.service.mjs +0 -130
  294. package/esm2022/object-form/lib/object-form.utils.mjs +0 -55
  295. package/esm2022/object-form/lib/object-form.validation.mjs +0 -48
  296. package/esm2022/object-form/yuuvis-client-framework-object-form.mjs +0 -5
  297. package/esm2022/object-preview/index.mjs +0 -3
  298. package/esm2022/object-preview/lib/components/index.mjs +0 -3
  299. package/esm2022/object-preview/lib/components/object-email-preview/object-email-preview.component.mjs +0 -45
  300. package/esm2022/object-preview/lib/components/object-preview/object-preview.component.mjs +0 -78
  301. package/esm2022/object-preview/lib/services/object-preview.service.mjs +0 -119
  302. package/esm2022/object-preview/yuuvis-client-framework-object-preview.mjs +0 -5
  303. package/esm2022/object-summary/index.mjs +0 -5
  304. package/esm2022/object-summary/lib/multi-object-summary/multi-object-summary.component.mjs +0 -33
  305. package/esm2022/object-summary/lib/object-summary/object-summary.component.mjs +0 -275
  306. package/esm2022/object-summary/lib/object-summary-data/object-summary-data.component.mjs +0 -80
  307. package/esm2022/object-summary/lib/object-summary.module.mjs +0 -15
  308. package/esm2022/object-summary/yuuvis-client-framework-object-summary.mjs +0 -5
  309. package/esm2022/pagination/index.mjs +0 -3
  310. package/esm2022/pagination/lib/pagination.component.mjs +0 -46
  311. package/esm2022/pagination/lib/pagination.interface.mjs +0 -2
  312. package/esm2022/pagination/yuuvis-client-framework-pagination.mjs +0 -5
  313. package/esm2022/panel/index.mjs +0 -2
  314. package/esm2022/panel/lib/panel.component.mjs +0 -20
  315. package/esm2022/panel/yuuvis-client-framework-panel.mjs +0 -5
  316. package/esm2022/renderer/index.mjs +0 -11
  317. package/esm2022/renderer/lib/property-renderer/abstract.renderer.mjs +0 -29
  318. package/esm2022/renderer/lib/property-renderer/datetime.renderer.mjs +0 -13
  319. package/esm2022/renderer/lib/property-renderer/decimal.renderer.component.mjs +0 -12
  320. package/esm2022/renderer/lib/property-renderer/filesize.renderer.component.mjs +0 -28
  321. package/esm2022/renderer/lib/property-renderer/icon.renderer.component.mjs +0 -23
  322. package/esm2022/renderer/lib/property-renderer/integer.renderer.component.mjs +0 -12
  323. package/esm2022/renderer/lib/property-renderer/organization.renderer.mjs +0 -19
  324. package/esm2022/renderer/lib/property-renderer/string.renderer.component.mjs +0 -12
  325. package/esm2022/renderer/lib/property-renderer/unknown.renderer.mjs +0 -12
  326. package/esm2022/renderer/lib/renderer.directive.mjs +0 -51
  327. package/esm2022/renderer/lib/services/renderer/renderer.interface.mjs +0 -2
  328. package/esm2022/renderer/lib/services/renderer/renderer.service.mjs +0 -84
  329. package/esm2022/renderer/yuuvis-client-framework-renderer.mjs +0 -5
  330. package/esm2022/sequence-list/index.mjs +0 -4
  331. package/esm2022/sequence-list/lib/due-date-picker/due-date-picker.component.mjs +0 -99
  332. package/esm2022/sequence-list/lib/sequence-list.component.mjs +0 -141
  333. package/esm2022/sequence-list/lib/sequence-list.interface.mjs +0 -2
  334. package/esm2022/sequence-list/yuuvis-client-framework-sequence-list.mjs +0 -5
  335. package/esm2022/simple-search/index.mjs +0 -3
  336. package/esm2022/simple-search/lib/simple-search/simple-search.component.mjs +0 -111
  337. package/esm2022/simple-search/lib/simple-search/simple-search.interface.mjs +0 -2
  338. package/esm2022/simple-search/yuuvis-client-framework-simple-search.mjs +0 -5
  339. package/esm2022/tile-list/index.mjs +0 -11
  340. package/esm2022/tile-list/lib/tile/tile.component.mjs +0 -53
  341. package/esm2022/tile-list/lib/tile-config/action-select/action-select.component.mjs +0 -25
  342. package/esm2022/tile-list/lib/tile-config/icon-select/icon-select.component.mjs +0 -33
  343. package/esm2022/tile-list/lib/tile-config/property-select/property-select.component.mjs +0 -91
  344. package/esm2022/tile-list/lib/tile-config/tile-config-tile/tile-config-tile.component.mjs +0 -66
  345. package/esm2022/tile-list/lib/tile-config/tile-config-trigger/tile-config-trigger.component.mjs +0 -46
  346. package/esm2022/tile-list/lib/tile-config/tile-config.component.mjs +0 -156
  347. package/esm2022/tile-list/lib/tile-extension/directive/tile-extension.directive.mjs +0 -37
  348. package/esm2022/tile-list/lib/tile-extension/extensions/email.extension.mjs +0 -42
  349. package/esm2022/tile-list/lib/tile-extension/tile-extension.service.mjs +0 -35
  350. package/esm2022/tile-list/lib/tile-list/tile-list.component.mjs +0 -510
  351. package/esm2022/tile-list/lib/tile-list/tile-list.interface.mjs +0 -2
  352. package/esm2022/tile-list/yuuvis-client-framework-tile-list.mjs +0 -5
  353. package/esm2022/token-search/index.mjs +0 -3
  354. package/esm2022/token-search/token-search.component.mjs +0 -78
  355. package/esm2022/token-search/token-search.interface.mjs +0 -2
  356. package/esm2022/token-search/yuuvis-client-framework-token-search.mjs +0 -5
  357. package/esm2022/tree/index.mjs +0 -3
  358. package/esm2022/tree/lib/tree-node/tree-node.component.mjs +0 -65
  359. package/esm2022/tree/lib/tree.component.mjs +0 -148
  360. package/esm2022/tree/lib/tree.interface.mjs +0 -2
  361. package/esm2022/tree/lib/tree.service.mjs +0 -95
  362. package/esm2022/tree/yuuvis-client-framework-tree.mjs +0 -5
  363. package/esm2022/upload-progress/index.mjs +0 -2
  364. package/esm2022/upload-progress/lib/upload-progress/upload-progress-overlay/upload-progress-overlay.component.mjs +0 -49
  365. package/esm2022/upload-progress/lib/upload-progress/upload-progress.component.mjs +0 -37
  366. package/esm2022/upload-progress/yuuvis-client-framework-upload-progress.mjs +0 -5
  367. package/esm2022/user-avatar/index.mjs +0 -3
  368. package/esm2022/user-avatar/lib/user-avatar.component.mjs +0 -69
  369. package/esm2022/user-avatar/lib/user-avatar.module.mjs +0 -24
  370. package/esm2022/user-avatar/yuuvis-client-framework-user-avatar.mjs +0 -5
  371. package/esm2022/yuuvis-client-framework.mjs +0 -5
  372. package/fesm2022/yuuvis-client-framework-token-search.mjs +0 -85
  373. package/fesm2022/yuuvis-client-framework-token-search.mjs.map +0 -1
  374. package/fesm2022/yuuvis-client-framework-user-avatar.mjs +0 -96
  375. package/fesm2022/yuuvis-client-framework-user-avatar.mjs.map +0 -1
  376. package/forms/lib/form-input/form-input.component.d.ts +0 -48
  377. package/object-form/lib/object-form-translate.service.d.ts +0 -15
  378. package/object-form/lib/object-form.model.d.ts +0 -18
  379. package/sequence-list/lib/due-date-picker/due-date-picker.component.d.ts +0 -28
  380. package/simple-search/lib/simple-search/simple-search.interface.d.ts +0 -4
  381. package/token-search/README.md +0 -3
  382. package/token-search/index.d.ts +0 -2
  383. package/token-search/token-search.component.d.ts +0 -22
  384. package/token-search/token-search.interface.d.ts +0 -4
  385. package/user-avatar/README.md +0 -3
  386. package/user-avatar/index.d.ts +0 -2
  387. package/user-avatar/lib/user-avatar.component.d.ts +0 -44
  388. package/user-avatar/lib/user-avatar.module.d.ts +0 -8
  389. /package/{metadata-form → metadata-form-defaults}/lib/metadata-default-templates/metadata-default-templates.component.d.ts +0 -0
@@ -1,286 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, forwardRef, HostBinding, HostListener, inject, input, Input, Output, ViewChild } from '@angular/core';
3
- import { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { Classification, SystemService, TranslateModule, TranslateService, UserService, YuvUser } from '@yuuvis/client-core';
5
- import { YUV_ICONS } from '@yuuvis/client-framework/icons';
6
- import { AutoComplete, YvcAutocompleteModule } from '@yuuvis/components/autocomplete';
7
- import { YvcIconModule } from '@yuuvis/components/icon';
8
- import { forkJoin, of } from 'rxjs';
9
- import { catchError, map } from 'rxjs/operators';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/common";
12
- import * as i2 from "@angular/forms";
13
- import * as i3 from "@yuuvis/components/autocomplete";
14
- import * as i4 from "@yuuvis/components/icon";
15
- /**
16
- * Creates form input for organisation values.
17
- * Implements `ControlValueAccessor` so it can be used within Angular forms.
18
- *
19
- * [Screenshot](../assets/images/yuv-organization.gif)
20
- *
21
- * @example
22
- * <yuv-organization [multiselect]="true"></yuv-organization>
23
- */
24
- export class OrganizationComponent {
25
- constructor() {
26
- this.system = inject(SystemService);
27
- this.userService = inject(UserService);
28
- this.translate = inject(TranslateService);
29
- this.minLength = 2;
30
- this.icons = {
31
- organizationMulti: YUV_ICONS['group'],
32
- organization: YUV_ICONS['user']
33
- };
34
- this.isValidInput = true;
35
- this.value = null;
36
- this._innerValue = [];
37
- this.autocompleteRes = [];
38
- this.filterRoles = [];
39
- /**
40
- * Indicator that multiple strings could be inserted, they will be rendered as chips (default: false).
41
- */
42
- this.multiselect = false;
43
- /**
44
- * Will prevent the input from being changed (default: false)
45
- */
46
- this.readonly = false;
47
- /**
48
- * Set this to true and the component will try to gain focus once it has been rendered.
49
- * Notice that this is not reliable. If there are any other components that are rendered
50
- * later and also try to be focused, they will 'win', because there can only be one focus.
51
- */
52
- this.autofocus = false;
53
- /**
54
- * Will attch the overlay to this HTMLelement
55
- */
56
- this.appendTo = null;
57
- /**
58
- * Whether or not to exclude the current user from autocomplete result
59
- */
60
- this.excludeMe = false;
61
- /**
62
- * Whether or not the emitted value should be an object containing id and title
63
- * or, if set to false only the ID
64
- */
65
- this.withMetadata = input(false);
66
- this.userSelect = new EventEmitter();
67
- // eslint-disable-next-line @typescript-eslint/no-empty-function
68
- this.propagateChange = (_) => { };
69
- }
70
- set innerValue(iv) {
71
- this._innerValue = iv || [];
72
- this.userSelect.emit(this._innerValue.map((v) => v.user));
73
- }
74
- get innerValue() {
75
- return this._innerValue;
76
- }
77
- // prevent ENTER from being propagated, because the component could be located
78
- // inside some other component that also relys on ENTER
79
- onKeydownHandler(event) {
80
- event.stopPropagation();
81
- }
82
- get _inputDisabled() {
83
- return !this.multiselect && this.innerValue?.length === 1;
84
- }
85
- set classifications(c) {
86
- this._classifications = c;
87
- if (c?.length) {
88
- const classifications = this.system.getClassifications(c);
89
- if (classifications.has(Classification.STRING_ORGANIZATION)) {
90
- const options = classifications.get(Classification.STRING_ORGANIZATION).options;
91
- this.filterRoles = options;
92
- }
93
- }
94
- else {
95
- this.filterRoles = [];
96
- }
97
- }
98
- get classifications() {
99
- return this._classifications;
100
- }
101
- writeValue(value) {
102
- if (value) {
103
- this.value = value;
104
- this.resolveFn(value);
105
- }
106
- else {
107
- this.value = null;
108
- this.innerValue = [];
109
- }
110
- }
111
- registerOnChange(fn) {
112
- this.propagateChange = fn;
113
- }
114
- // eslint-disable-next-line @typescript-eslint/no-empty-function
115
- registerOnTouched(fn) { }
116
- propagate() {
117
- this.propagateChange(this.#getPropagateValue());
118
- }
119
- #getPropagateValue() {
120
- return this.multiselect
121
- ? this.withMetadata()
122
- ? this.value
123
- ? this._innerValue.map((v) => ({
124
- id: v.user.id,
125
- title: v.user.title
126
- }))
127
- : this.value
128
- : this.value
129
- : this.withMetadata()
130
- ? this.value
131
- ? {
132
- id: this._innerValue[0].user.id,
133
- title: this._innerValue[0].user.title
134
- }
135
- : this.value
136
- : this.value;
137
- }
138
- focusInput() {
139
- this.autoCompleteInput.focusInput();
140
- }
141
- resolveFn(value) {
142
- const obs = (value instanceof Array ? value : [value]).map((v) => {
143
- const valueID = typeof v === 'string' ? v : v.id;
144
- const match = this.innerValue.find((iv) => iv.user.id === valueID);
145
- return match
146
- ? of(match)
147
- : this.userService.getUserById(valueID).pipe(map((res) => ({
148
- user: res,
149
- state: {}
150
- })), catchError((e) => {
151
- const user = new YuvUser({
152
- id: typeof v === 'string' ? v : v.id
153
- });
154
- user.title = typeof v === 'string' ? v : v.title;
155
- return of({
156
- user,
157
- state: {
158
- notFound: e.status === 404
159
- },
160
- titleString: e.status === 404 ? this.translate.instant('yuv.form.element.organization.user.not-found') : undefined
161
- });
162
- }));
163
- });
164
- return forkJoin(obs).subscribe((data) => {
165
- this.innerValue = data;
166
- // setTimeout(() => this.autoCompleteInput.cd.markForCheck());
167
- });
168
- }
169
- autocompleteFn(query) {
170
- if (query.length >= this.minLength) {
171
- this.userService.queryUser(query, this.excludeMe, this.filterRoles).subscribe({
172
- next: (users) => {
173
- this.autocompleteRes = users
174
- .filter((user) => !this.innerValue.some((value) => value.user.id === user.id))
175
- .map((user) => ({
176
- user: user,
177
- state: {}
178
- }));
179
- this.propagateValidity(this.autocompleteRes.length > 0);
180
- },
181
- error: () => {
182
- this.autocompleteRes = [];
183
- this.propagateValidity(this.autocompleteRes.length > 0);
184
- }
185
- });
186
- }
187
- else {
188
- this.autocompleteRes = [];
189
- }
190
- }
191
- // returns null when valid else the validation object
192
- validate() {
193
- return this.isValidInput ? null : { empty: { valid: false } };
194
- }
195
- propagateValidity(valid = true) {
196
- if (this.isValidInput !== valid) {
197
- this.isValidInput = valid;
198
- this.propagate();
199
- }
200
- }
201
- // handle selection changes to the model
202
- onSelect() {
203
- if (this.multiselect) {
204
- this.value = this.innerValue.map((v) => v.user.id);
205
- }
206
- else {
207
- // internal autocomplete control is always set to multiselect
208
- // so the resolved value is always an array
209
- this.innerValue = this.innerValue.slice(-1);
210
- this.value = this.innerValue[0].user.id;
211
- }
212
- this.propagate();
213
- }
214
- // handle selection changes to the model
215
- onUnselect(value) {
216
- this.innerValue = this.innerValue.filter((v) => v.user.id !== value.id);
217
- const _value = this.innerValue.map((v) => v.user.id);
218
- this.value = this.multiselect ? _value : null;
219
- if (!this.multiselect) {
220
- this.clearInnerInput();
221
- }
222
- this.propagate();
223
- }
224
- onAutoCompleteBlur() {
225
- this.clearInnerInput();
226
- }
227
- clearInnerInput() {
228
- this.autoCompleteInput.clearInput();
229
- }
230
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
231
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: OrganizationComponent, isStandalone: true, selector: "yuv-organization", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, situation: { classPropertyName: "situation", publicName: "situation", isSignal: false, isRequired: false, transformFunction: null }, multiselect: { classPropertyName: "multiselect", publicName: "multiselect", isSignal: false, isRequired: false, transformFunction: null }, classifications: { classPropertyName: "classifications", publicName: "classifications", isSignal: false, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: false, isRequired: false, transformFunction: null }, autofocus: { classPropertyName: "autofocus", publicName: "autofocus", isSignal: false, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: false, isRequired: false, transformFunction: null }, excludeMe: { classPropertyName: "excludeMe", publicName: "excludeMe", isSignal: false, isRequired: false, transformFunction: null }, withMetadata: { classPropertyName: "withMetadata", publicName: "withMetadata", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { userSelect: "userSelect" }, host: { listeners: { "keydown.enter": "onKeydownHandler($event)" }, properties: { "class.inputDisabled": "this._inputDisabled" } }, providers: [
232
- {
233
- provide: NG_VALUE_ACCESSOR,
234
- useExisting: forwardRef(() => OrganizationComponent),
235
- multi: true
236
- },
237
- {
238
- provide: NG_VALIDATORS,
239
- useExisting: forwardRef(() => OrganizationComponent),
240
- multi: true
241
- }
242
- ], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autocomplete"], descendants: true }], ngImport: i0, template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.user.title }}</span>\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\" [ngClass]=\"{ notFound: item.state.notFound }\" [title]=\"item.titleString\">\n {{ item.user.title }}\n </span>\n </ng-template>\n</yvc-autocomplete>\n\n<yvc-icon class=\"classify\" aria-hidden=\"true\" [svg]=\"multiselect ? icons.organizationMulti : icons.organization\" (click)=\"focusInput()\"></yvc-icon>\n", styles: [":host{display:flex;align-items:center}:host .chip.notFound{color:var(--color-error);text-decoration:line-through}:host .chip.notFound:before{content:\"!\";display:inline-block;background-color:var(--color-error);color:#fff;border-radius:2px;padding-inline:.3em;text-decoration:none;margin-inline-end:.75em}:host yvc-autocomplete{flex:1;--yvc-form-element-focus-border-color: transparent;--yvc-form-element-focus-outline-color: transparent}:host yvc-icon.classify{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8);color:var(--text-color-hint)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: YvcAutocompleteModule }, { kind: "component", type: i3.AutoComplete, selector: "yvc-autocomplete", inputs: ["field", "placeholder", "minLength", "multiple", "typeahead", "distinctValues", "forceSelection", "autocompleteValues", "disabled"], outputs: ["autocompleteFnc", "blur", "focus", "suggestionUnselect", "suggestionSelect"] }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i4.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "ngmodule", type: TranslateModule }] }); }
243
- }
244
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OrganizationComponent, decorators: [{
245
- type: Component,
246
- args: [{ selector: 'yuv-organization', standalone: true, imports: [CommonModule, FormsModule, YvcAutocompleteModule, YvcIconModule, TranslateModule], providers: [
247
- {
248
- provide: NG_VALUE_ACCESSOR,
249
- useExisting: forwardRef(() => OrganizationComponent),
250
- multi: true
251
- },
252
- {
253
- provide: NG_VALIDATORS,
254
- useExisting: forwardRef(() => OrganizationComponent),
255
- multi: true
256
- }
257
- ], template: "<yvc-autocomplete\n [(ngModel)]=\"innerValue\"\n #autocomplete\n (suggestionSelect)=\"onSelect()\"\n [placeholder]=\"placeholder\"\n (suggestionUnselect)=\"onUnselect($event)\"\n (blur)=\"onAutoCompleteBlur()\"\n [disabled]=\"readonly\"\n [autocompleteValues]=\"autocompleteRes\"\n field=\"id\"\n [forceSelection]=\"true\"\n (autocompleteFnc)=\"autocompleteFn($event)\"\n [multiple]=\"true\"\n>\n <!-- template for item inside the dropdown -->\n <ng-template #autocompleteOptionTemplate let-item>\n <span class=\"chip\">{{ item.user.title }}</span>\n </ng-template>\n\n <!-- template for chip -->\n <ng-template #chipTemplate let-item>\n <span class=\"chip\" [ngClass]=\"{ notFound: item.state.notFound }\" [title]=\"item.titleString\">\n {{ item.user.title }}\n </span>\n </ng-template>\n</yvc-autocomplete>\n\n<yvc-icon class=\"classify\" aria-hidden=\"true\" [svg]=\"multiselect ? icons.organizationMulti : icons.organization\" (click)=\"focusInput()\"></yvc-icon>\n", styles: [":host{display:flex;align-items:center}:host .chip.notFound{color:var(--color-error);text-decoration:line-through}:host .chip.notFound:before{content:\"!\";display:inline-block;background-color:var(--color-error);color:#fff;border-radius:2px;padding-inline:.3em;text-decoration:none;margin-inline-end:.75em}:host yvc-autocomplete{flex:1;--yvc-form-element-focus-border-color: transparent;--yvc-form-element-focus-outline-color: transparent}:host yvc-icon.classify{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 8);color:var(--text-color-hint)}\n"] }]
258
- }], propDecorators: { autoCompleteInput: [{
259
- type: ViewChild,
260
- args: ['autocomplete']
261
- }], onKeydownHandler: [{
262
- type: HostListener,
263
- args: ['keydown.enter', ['$event']]
264
- }], _inputDisabled: [{
265
- type: HostBinding,
266
- args: ['class.inputDisabled']
267
- }], placeholder: [{
268
- type: Input
269
- }], situation: [{
270
- type: Input
271
- }], multiselect: [{
272
- type: Input
273
- }], classifications: [{
274
- type: Input
275
- }], readonly: [{
276
- type: Input
277
- }], autofocus: [{
278
- type: Input
279
- }], appendTo: [{
280
- type: Input
281
- }], excludeMe: [{
282
- type: Input
283
- }], userSelect: [{
284
- type: Output
285
- }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9vcmdhbml6YXRpb24vb3JnYW5pemF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hJLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVB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U0FBUztzQkFBakIsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtPLGVBQWU7c0JBQTNCLEtBQUs7Z0JBbUJHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBTUcsU0FBUztzQkFBakIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBpbmplY3QsIGlucHV0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENsYXNzaWZpY2F0aW9uLCBTeXN0ZW1TZXJ2aWNlLCBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UsIFVzZXJTZXJ2aWNlLCBZdXZVc2VyIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBZVVZfSUNPTlMgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvaWNvbnMnO1xuaW1wb3J0IHsgQXV0b0NvbXBsZXRlLCBZdmNBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IFl2Y0ljb25Nb2R1bGUgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvaWNvbic7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW50ZXJmYWNlIFVzZXJOb2RlIHtcbiAgdXNlcjogWXV2VXNlcjtcbiAgc3RhdGU6IHtcbiAgICBub3RGb3VuZD86IGJvb2xlYW47XG4gIH07XG4gIHRpdGxlU3RyaW5nPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgZm9ybSBpbnB1dCBmb3Igb3JnYW5pc2F0aW9uIHZhbHVlcy5cbiAqIEltcGxlbWVudHMgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoaW4gQW5ndWxhciBmb3Jtcy5cbiAqXG4gKiBbU2NyZWVuc2hvdF0oLi4vYXNzZXRzL2ltYWdlcy95dXYtb3JnYW5pemF0aW9uLmdpZilcbiAqXG4gKiBAZXhhbXBsZVxuICogPHl1di1vcmdhbml6YXRpb24gW211bHRpc2VsZWN0XT1cInRydWVcIj48L3l1di1vcmdhbml6YXRpb24+XG4gKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW9yZ2FuaXphdGlvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBZdmNBdXRvY29tcGxldGVNb2R1bGUsIFl2Y0ljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmdhbml6YXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vcmdhbml6YXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcmdhbml6YXRpb25Db21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB7XG4gIHByaXZhdGUgc3lzdGVtID0gaW5qZWN0KFN5c3RlbVNlcnZpY2UpO1xuICBwcml2YXRlIHVzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlJykgYXV0b0NvbXBsZXRlSW5wdXQhOiBBdXRvQ29tcGxldGU7XG4gIG1pbkxlbmd0aCA9IDI7XG5cbiAgaWNvbnMgPSB7XG4gICAgb3JnYW5pemF0aW9uTXVsdGk6IFlVVl9JQ09OU1snZ3JvdXAnXSxcbiAgICBvcmdhbml6YXRpb246IFlVVl9JQ09OU1sndXNlciddXG4gIH07XG5cbiAgcHJpdmF0ZSBpc1ZhbGlkSW5wdXQgPSB0cnVlO1xuICB2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsID0gbnVsbDtcbiAgX2lubmVyVmFsdWU6IFVzZXJOb2RlW10gPSBbXTtcbiAgc2V0IGlubmVyVmFsdWUoaXY6IFVzZXJOb2RlW10pIHtcbiAgICB0aGlzLl9pbm5lclZhbHVlID0gaXYgfHwgW107XG4gICAgdGhpcy51c2VyU2VsZWN0LmVtaXQodGhpcy5faW5uZXJWYWx1ZS5tYXAoKHYpID0+IHYudXNlcikpO1xuICB9XG4gIGdldCBpbm5lclZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pbm5lclZhbHVlO1xuICB9XG4gIGF1dG9jb21wbGV0ZVJlczogVXNlck5vZGVbXSA9IFtdO1xuICBwcml2YXRlIGZpbHRlclJvbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIHByZXZlbnQgRU5URVIgZnJvbSBiZWluZyBwcm9wYWdhdGVkLCBiZWNhdXNlIHRoZSBjb21wb25lbnQgY291bGQgYmUgbG9jYXRlZFxuICAvLyBpbnNpZGUgc29tZSBvdGhlciBjb21wb25lbnQgdGhhdCBhbHNvIHJlbHlzIG9uIEVOVEVSXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZW50ZXInLCBbJyRldmVudCddKVxuICBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlucHV0RGlzYWJsZWQnKSBnZXQgX2lucHV0RGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuICF0aGlzLm11bHRpc2VsZWN0ICYmIHRoaXMuaW5uZXJWYWx1ZT8ubGVuZ3RoID09PSAxO1xuICB9XG4gIC8vIEBIb3N0QmluZGluZygnY2xhc3MuaW5wdXREaXJ0eScpIGdldCBfaW5wdXREaXJ0eSgpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5hdXRvQ29tcGxldGVJbnB1dD8ubXVsdGlJbnB1dEVMPy5uYXRpdmVFbGVtZW50Py52YWx1ZTtcbiAgLy8gfVxuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKipcbiAgICogUG9zc2libGVzIHZhbHVlcyBhcmUgYEVESVRgIChkZWZhdWx0KSxgU0VBUkNIYCxgQ1JFQVRFYC4gSW4gc2VhcmNoIHNpdHVhdGlvbiB2YWxpZGF0aW9uIG9mIHRoZSBmb3JtIGVsZW1lbnQgd2lsbCBiZSB0dXJuZWQgb2ZmLCBzbyB5b3UgYXJlIGFibGUgdG8gZW50ZXIgc2VhcmNoIHRlcm1zIHRoYXQgZG8gbm90IG1lZXQgdGhlIGVsZW1lbnRzIHZhbGlkYXRvcnMuXG4gICAqL1xuICBASW5wdXQoKSBzaXR1YXRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbmRpY2F0b3IgdGhhdCBtdWx0aXBsZSBzdHJpbmdzIGNvdWxkIGJlIGluc2VydGVkLCB0aGV5IHdpbGwgYmUgcmVuZGVyZWQgYXMgY2hpcHMgKGRlZmF1bHQ6IGZhbHNlKS5cbiAgICovXG4gIEBJbnB1dCgpIG11bHRpc2VsZWN0ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHNlbWFudGljcyBmb3IgdGhlIGZvcm0gZWxlbWVudC5cbiAgICovXG4gIHByaXZhdGUgX2NsYXNzaWZpY2F0aW9ucz86IHN0cmluZ1tdO1xuICBASW5wdXQoKSBzZXQgY2xhc3NpZmljYXRpb25zKGM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fY2xhc3NpZmljYXRpb25zID0gYztcbiAgICBpZiAoYz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjbGFzc2lmaWNhdGlvbnMgPSB0aGlzLnN5c3RlbS5nZXRDbGFzc2lmaWNhdGlvbnMoYyk7XG4gICAgICBpZiAoY2xhc3NpZmljYXRpb25zLmhhcyhDbGFzc2lmaWNhdGlvbi5TVFJJTkdfT1JHQU5JWkFUSU9OKSkge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gY2xhc3NpZmljYXRpb25zLmdldChDbGFzc2lmaWNhdGlvbi5TVFJJTkdfT1JHQU5JWkFUSU9OKSEub3B0aW9ucztcbiAgICAgICAgdGhpcy5maWx0ZXJSb2xlcyA9IG9wdGlvbnM7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsdGVyUm9sZXMgPSBbXTtcbiAgICB9XG4gIH1cbiAgZ2V0IGNsYXNzaWZpY2F0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xhc3NpZmljYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcHJldmVudCB0aGUgaW5wdXQgZnJvbSBiZWluZyBjaGFuZ2VkIChkZWZhdWx0OiBmYWxzZSlcbiAgICovXG4gIEBJbnB1dCgpIHJlYWRvbmx5ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlIGFuZCB0aGUgY29tcG9uZW50IHdpbGwgdHJ5IHRvIGdhaW4gZm9jdXMgb25jZSBpdCBoYXMgYmVlbiByZW5kZXJlZC5cbiAgICogTm90aWNlIHRoYXQgdGhpcyBpcyBub3QgcmVsaWFibGUuIElmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29tcG9uZW50cyB0aGF0IGFyZSByZW5kZXJlZFxuICAgKiBsYXRlciBhbmQgYWxzbyB0cnkgdG8gYmUgZm9jdXNlZCwgdGhleSB3aWxsICd3aW4nLCBiZWNhdXNlIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBmb2N1cy5cbiAgICovXG4gIEBJbnB1dCgpIGF1dG9mb2N1cyA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaWxsIGF0dGNoIHRoZSBvdmVybGF5IHRvIHRoaXMgSFRNTGVsZW1lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGVuZFRvID0gbnVsbDtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZXhjbHVkZSB0aGUgY3VycmVudCB1c2VyIGZyb20gYXV0b2NvbXBsZXRlIHJlc3VsdFxuICAgKi9cbiAgQElucHV0KCkgZXhjbHVkZU1lID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRoZSBlbWl0dGVkIHZhbHVlIHNob3VsZCBiZSBhbiBvYmplY3QgY29udGFpbmluZyBpZCBhbmQgdGl0bGVcbiAgICogb3IsIGlmIHNldCB0byBmYWxzZSBvbmx5IHRoZSBJRFxuICAgKi9cbiAgd2l0aE1ldGFkYXRhID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBPdXRwdXQoKSB1c2VyU2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxZdXZVc2VyW10+KCk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMucmVzb2x2ZUZuKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLmlubmVyVmFsdWUgPSBbXTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7fVxuXG4gIHByaXZhdGUgcHJvcGFnYXRlKCkge1xuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuI2dldFByb3BhZ2F0ZVZhbHVlKCkpO1xuICB9XG5cbiAgI2dldFByb3BhZ2F0ZVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm11bHRpc2VsZWN0XG4gICAgICA/IHRoaXMud2l0aE1ldGFkYXRhKClcbiAgICAgICAgPyB0aGlzLnZhbHVlXG4gICAgICAgICAgPyB0aGlzLl9pbm5lclZhbHVlLm1hcCgodikgPT4gKHtcbiAgICAgICAgICAgICAgaWQ6IHYudXNlci5pZCxcbiAgICAgICAgICAgICAgdGl0bGU6IHYudXNlci50aXRsZVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICAgIDogdGhpcy52YWx1ZVxuICAgICAgOiB0aGlzLndpdGhNZXRhZGF0YSgpXG4gICAgICAgID8gdGhpcy52YWx1ZVxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBpZDogdGhpcy5faW5uZXJWYWx1ZVswXS51c2VyLmlkLFxuICAgICAgICAgICAgICB0aXRsZTogdGhpcy5faW5uZXJWYWx1ZVswXS51c2VyLnRpdGxlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB0aGlzLnZhbHVlXG4gICAgICAgIDogdGhpcy52YWx1ZTtcbiAgfVxuXG4gIGZvY3VzSW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5mb2N1c0lucHV0KCk7XG4gIH1cblxuICByZXNvbHZlRm4odmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG9iczogT2JzZXJ2YWJsZTxVc2VyTm9kZT5bXSA9ICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ID8gdmFsdWUgOiBbdmFsdWVdKS5tYXAoKHYpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlSUQgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgPyB2IDogdi5pZDtcblxuICAgICAgY29uc3QgbWF0Y2g6IFVzZXJOb2RlIHwgdW5kZWZpbmVkID0gdGhpcy5pbm5lclZhbHVlLmZpbmQoKGl2KSA9PiBpdi51c2VyLmlkID09PSB2YWx1ZUlEKTtcbiAgICAgIHJldHVybiBtYXRjaFxuICAgICAgICA/IG9mKG1hdGNoKVxuICAgICAgICA6IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckJ5SWQodmFsdWVJRCkucGlwZShcbiAgICAgICAgICAgIG1hcCgocmVzOiBZdXZVc2VyKSA9PiAoe1xuICAgICAgICAgICAgICB1c2VyOiByZXMsXG4gICAgICAgICAgICAgIHN0YXRlOiB7fVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgdXNlciA9IG5ldyBZdXZVc2VyKHtcbiAgICAgICAgICAgICAgICBpZDogdHlwZW9mIHYgPT09ICdzdHJpbmcnID8gdiA6IHYuaWRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHVzZXIudGl0bGUgPSB0eXBlb2YgdiA9PT0gJ3N0cmluZycgPyB2IDogdi50aXRsZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICBub3RGb3VuZDogZS5zdGF0dXMgPT09IDQwNFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGl0bGVTdHJpbmc6IGUuc3RhdHVzID09PSA0MDQgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuZm9ybS5lbGVtZW50Lm9yZ2FuaXphdGlvbi51c2VyLm5vdC1mb3VuZCcpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgIH0pO1xuICAgIHJldHVybiBmb3JrSm9pbihvYnMpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5pbm5lclZhbHVlID0gZGF0YTtcbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jZC5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfSk7XG4gIH1cblxuICBhdXRvY29tcGxldGVGbihxdWVyeTogc3RyaW5nKSB7XG4gICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aCkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5xdWVyeVVzZXIocXVlcnksIHRoaXMuZXhjbHVkZU1lLCB0aGlzLmZpbHRlclJvbGVzKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodXNlcnM6IFl1dlVzZXJbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVzID0gdXNlcnNcbiAgICAgICAgICAgIC5maWx0ZXIoKHVzZXIpID0+ICF0aGlzLmlubmVyVmFsdWUuc29tZSgodmFsdWUpID0+IHZhbHVlLnVzZXIuaWQgPT09IHVzZXIuaWQpKVxuICAgICAgICAgICAgLm1hcCgodXNlcikgPT4gKHtcbiAgICAgICAgICAgICAgdXNlcjogdXNlcixcbiAgICAgICAgICAgICAgc3RhdGU6IHt9XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgdGhpcy5wcm9wYWdhdGVWYWxpZGl0eSh0aGlzLmF1dG9jb21wbGV0ZVJlcy5sZW5ndGggPiAwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgICAgICAgIHRoaXMucHJvcGFnYXRlVmFsaWRpdHkodGhpcy5hdXRvY29tcGxldGVSZXMubGVuZ3RoID4gMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlcyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybnMgbnVsbCB3aGVuIHZhbGlkIGVsc2UgdGhlIHZhbGlkYXRpb24gb2JqZWN0XG4gIHB1YmxpYyB2YWxpZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSW5wdXQgPyBudWxsIDogeyBlbXB0eTogeyB2YWxpZDogZmFsc2UgfSB9O1xuICB9XG5cbiAgcHJvcGFnYXRlVmFsaWRpdHkodmFsaWQgPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMuaXNWYWxpZElucHV0ICE9PSB2YWxpZCkge1xuICAgICAgdGhpcy5pc1ZhbGlkSW5wdXQgPSB2YWxpZDtcbiAgICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaGFuZGxlIHNlbGVjdGlvbiBjaGFuZ2VzIHRvIHRoZSBtb2RlbFxuICBvblNlbGVjdCgpIHtcbiAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5tYXAoKHYpID0+IHYudXNlci5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGludGVybmFsIGF1dG9jb21wbGV0ZSBjb250cm9sIGlzIGFsd2F5cyBzZXQgdG8gbXVsdGlzZWxlY3RcbiAgICAgIC8vIHNvIHRoZSByZXNvbHZlZCB2YWx1ZSBpcyBhbHdheXMgYW4gYXJyYXlcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5zbGljZSgtMSk7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5pbm5lclZhbHVlWzBdLnVzZXIuaWQ7XG4gICAgfVxuICAgIHRoaXMucHJvcGFnYXRlKCk7XG4gIH1cblxuICAvLyBoYW5kbGUgc2VsZWN0aW9uIGNoYW5nZXMgdG8gdGhlIG1vZGVsXG4gIG9uVW5zZWxlY3QodmFsdWU6IGFueSkge1xuICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5maWx0ZXIoKHYpID0+IHYudXNlci5pZCAhPT0gdmFsdWUuaWQpO1xuICAgIGNvbnN0IF92YWx1ZSA9IHRoaXMuaW5uZXJWYWx1ZS5tYXAoKHYpID0+IHYudXNlci5pZCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubXVsdGlzZWxlY3QgPyBfdmFsdWUgOiBudWxsO1xuICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgdGhpcy5jbGVhcklubmVySW5wdXQoKTtcbiAgICB9XG4gICAgdGhpcy5wcm9wYWdhdGUoKTtcbiAgfVxuXG4gIG9uQXV0b0NvbXBsZXRlQmx1cigpIHtcbiAgICB0aGlzLmNsZWFySW5uZXJJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcklubmVySW5wdXQoKSB7XG4gICAgdGhpcy5hdXRvQ29tcGxldGVJbnB1dC5jbGVhcklucHV0KCk7XG4gIH1cbn1cbiIsIjx5dmMtYXV0b2NvbXBsZXRlXG4gIFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiXG4gICNhdXRvY29tcGxldGVcbiAgKHN1Z2dlc3Rpb25TZWxlY3QpPVwib25TZWxlY3QoKVwiXG4gIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gIChzdWdnZXN0aW9uVW5zZWxlY3QpPVwib25VbnNlbGVjdCgkZXZlbnQpXCJcbiAgKGJsdXIpPVwib25BdXRvQ29tcGxldGVCbHVyKClcIlxuICBbZGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICBbYXV0b2NvbXBsZXRlVmFsdWVzXT1cImF1dG9jb21wbGV0ZVJlc1wiXG4gIGZpZWxkPVwiaWRcIlxuICBbZm9yY2VTZWxlY3Rpb25dPVwidHJ1ZVwiXG4gIChhdXRvY29tcGxldGVGbmMpPVwiYXV0b2NvbXBsZXRlRm4oJGV2ZW50KVwiXG4gIFttdWx0aXBsZV09XCJ0cnVlXCJcbj5cbiAgPCEtLSB0ZW1wbGF0ZSBmb3IgaXRlbSBpbnNpZGUgdGhlIGRyb3Bkb3duIC0tPlxuICA8bmctdGVtcGxhdGUgI2F1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlIGxldC1pdGVtPlxuICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPnt7IGl0ZW0udXNlci50aXRsZSB9fTwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIHRlbXBsYXRlIGZvciBjaGlwIC0tPlxuICA8bmctdGVtcGxhdGUgI2NoaXBUZW1wbGF0ZSBsZXQtaXRlbT5cbiAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbbmdDbGFzc109XCJ7IG5vdEZvdW5kOiBpdGVtLnN0YXRlLm5vdEZvdW5kIH1cIiBbdGl0bGVdPVwiaXRlbS50aXRsZVN0cmluZ1wiPlxuICAgICAge3sgaXRlbS51c2VyLnRpdGxlIH19XG4gICAgPC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuPC95dmMtYXV0b2NvbXBsZXRlPlxuXG48eXZjLWljb24gY2xhc3M9XCJjbGFzc2lmeVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtzdmddPVwibXVsdGlzZWxlY3QgPyBpY29ucy5vcmdhbml6YXRpb25NdWx0aSA6IGljb25zLm9yZ2FuaXphdGlvblwiIChjbGljayk9XCJmb2N1c0lucHV0KClcIj48L3l2Yy1pY29uPlxuIl19
@@ -1,38 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, effect, inject, input, output } from '@angular/core';
3
- import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
4
- import { TranslateModule } from '@yuuvis/client-core';
5
- import { YvcOverlayRef } from '@yuuvis/components/overlay';
6
- import { DatetimeRangeComponent } from '../../datetime-range/datetime-range.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/forms";
9
- import * as i2 from "@yuuvis/client-core";
10
- export class DateRangePickerComponent {
11
- constructor() {
12
- this.#oRef = inject(YvcOverlayRef);
13
- this.#fb = inject(FormBuilder);
14
- this.form = this.#fb.group({
15
- range: this.#fb.control(this.#oRef.data.range, Validators.required)
16
- });
17
- this.range = input(this.#oRef.data.range);
18
- this.rangeChange = output();
19
- this.#rangeEffect = effect(() => {
20
- const range = this.range();
21
- this.form.patchValue({ range });
22
- });
23
- }
24
- #oRef;
25
- #fb;
26
- #rangeEffect;
27
- apply() {
28
- this.rangeChange.emit(this.form.value.range || undefined);
29
- this.#oRef?.close(this.form.value.range);
30
- }
31
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: DateRangePickerComponent, isStandalone: true, selector: "yuv-date-range-picker", inputs: { range: { classPropertyName: "range", publicName: "range", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rangeChange: "rangeChange" }, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n <h2>{{ 'yuv.form.element.range-select-date.custom.overlay.title' | translate }}</h2>\n <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n <button class=\"primary\" [disabled]=\"form.invalid\">{{ 'yuv.form.element.range-select-date.custom.overlay.button.apply' | translate }}</button>\n</form>\n", styles: [":host{--form-element-border-color: transparent;--yvc-form-element-border-color: transparent}:host form{display:grid;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"title title\" \"input input\" \". button\";gap:var(--app-pane-padding);padding:var(--app-pane-padding)}:host form h2{grid-area:title;margin:0}:host form yuv-datetime-range{grid-area:input;border:1px solid var(--text-color-hint);padding:1px 2px;border-radius:2px}:host form button{grid-area:button}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: DatetimeRangeComponent, selector: "yuv-datetime-range", inputs: ["withTime", "readonly", "operator", "situation"] }] }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangePickerComponent, decorators: [{
35
- type: Component,
36
- args: [{ selector: 'yuv-date-range-picker', standalone: true, imports: [CommonModule, ReactiveFormsModule, TranslateModule, DatetimeRangeComponent], template: "<form [formGroup]=\"form\" (ngSubmit)=\"apply()\">\n <h2>{{ 'yuv.form.element.range-select-date.custom.overlay.title' | translate }}</h2>\n <yuv-datetime-range [withTime]=\"false\" formControlName=\"range\"></yuv-datetime-range>\n <button class=\"primary\" [disabled]=\"form.invalid\">{{ 'yuv.form.element.range-select-date.custom.overlay.button.apply' | translate }}</button>\n</form>\n", styles: [":host{--form-element-border-color: transparent;--yvc-form-element-border-color: transparent}:host form{display:grid;grid-template-columns:1fr auto;grid-template-rows:repeat(3,auto);grid-template-areas:\"title title\" \"input input\" \". button\";gap:var(--app-pane-padding);padding:var(--app-pane-padding)}:host form h2{grid-area:title;margin:0}:host form yuv-datetime-range{grid-area:input;border:1px solid var(--text-color-hint);padding:1px 2px;border-radius:2px}:host form button{grid-area:button}\n"] }]
37
- }] });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3JhbmdlLXNlbGVjdC1kYXRlL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9yYW5nZS1zZWxlY3QtZGF0ZS9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQWMsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7O0FBU3ZGLE1BQU0sT0FBTyx3QkFBd0I7SUFQckM7UUFRRSxVQUFLLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlCLFFBQUcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFMUIsU0FBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBeUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDNUYsQ0FBQyxDQUFDO1FBRUgsVUFBSyxHQUFHLEtBQUssQ0FBeUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsZ0JBQVcsR0FBRyxNQUFNLEVBQTBCLENBQUM7UUFDL0MsaUJBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7S0FNSjtJQWxCQyxLQUFLLENBQXlCO0lBQzlCLEdBQUcsQ0FBdUI7SUFRMUIsWUFBWSxDQUdUO0lBRUgsS0FBSztRQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDOytHQWxCVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw4UENkckMsd1lBS0EsK2lCREtZLFlBQVksOEJBQUUsbUJBQW1CLDRyQkFBRSxlQUFlLDRGQUFFLHNCQUFzQjs7NEZBSXpFLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJhbmdlVmFsdWUsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgWXZjT3ZlcmxheVJlZiB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9vdmVybGF5JztcbmltcG9ydCB7IERhdGV0aW1lUmFuZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9kYXRldGltZS1yYW5nZS9kYXRldGltZS1yYW5nZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dXYtZGF0ZS1yYW5nZS1waWNrZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIERhdGV0aW1lUmFuZ2VDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIERhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG4gICNvUmVmID0gaW5qZWN0KFl2Y092ZXJsYXlSZWYpO1xuICAjZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpO1xuXG4gIGZvcm0gPSB0aGlzLiNmYi5ncm91cCh7XG4gICAgcmFuZ2U6IHRoaXMuI2ZiLmNvbnRyb2w8UmFuZ2VWYWx1ZSB8IHVuZGVmaW5lZD4odGhpcy4jb1JlZi5kYXRhLnJhbmdlLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICB9KTtcblxuICByYW5nZSA9IGlucHV0PFJhbmdlVmFsdWUgfCB1bmRlZmluZWQ+KHRoaXMuI29SZWYuZGF0YS5yYW5nZSk7XG4gIHJhbmdlQ2hhbmdlID0gb3V0cHV0PFJhbmdlVmFsdWUgfCB1bmRlZmluZWQ+KCk7XG4gICNyYW5nZUVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLnJhbmdlKCk7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyByYW5nZSB9KTtcbiAgfSk7XG5cbiAgYXBwbHkoKSB7XG4gICAgdGhpcy5yYW5nZUNoYW5nZS5lbWl0KHRoaXMuZm9ybS52YWx1ZS5yYW5nZSB8fCB1bmRlZmluZWQpO1xuICAgIHRoaXMuI29SZWY/LmNsb3NlKHRoaXMuZm9ybS52YWx1ZS5yYW5nZSk7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJhcHBseSgpXCI+XG4gIDxoMj57eyAneXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5jdXN0b20ub3ZlcmxheS50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gyPlxuICA8eXV2LWRhdGV0aW1lLXJhbmdlIFt3aXRoVGltZV09XCJmYWxzZVwiIGZvcm1Db250cm9sTmFtZT1cInJhbmdlXCI+PC95dXYtZGF0ZXRpbWUtcmFuZ2U+XG4gIDxidXR0b24gY2xhc3M9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiPnt7ICd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLmN1c3RvbS5vdmVybGF5LmJ1dHRvbi5hcHBseScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==
@@ -1,181 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, forwardRef, inject, input, signal } from '@angular/core';
3
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
- import { FormBuilder, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
5
- import { marker } from '@colsen1991/ngx-translate-extract-marker';
6
- import { LocaleDatePipe, Operator, OperatorLabel, SearchUtils, TranslateService } from '@yuuvis/client-core';
7
- import { YvcDropdownModule } from '@yuuvis/components/dropdown';
8
- import { YvcOverlayService } from '@yuuvis/components/overlay';
9
- import { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@yuuvis/components/dropdown";
12
- import * as i2 from "@angular/forms";
13
- // marker for extracting translations for the available date range options
14
- marker('yuv.form.element.range-select-date.option.any');
15
- marker('yuv.form.element.range-select-date.option.today');
16
- marker('yuv.form.element.range-select-date.option.yesterday');
17
- marker('yuv.form.element.range-select-date.option.thisWeek');
18
- marker('yuv.form.element.range-select-date.option.lastWeek');
19
- marker('yuv.form.element.range-select-date.option.thisMonth');
20
- marker('yuv.form.element.range-select-date.option.lastMonth');
21
- marker('yuv.form.element.range-select-date.option.thisYear');
22
- marker('yuv.form.element.range-select-date.option.lastYear');
23
- marker('yuv.form.element.range-select-date.option.custom');
24
- /**
25
- * Component for selecting a date range based on pre-defined ranges like
26
- * 'today', 'this week', 'this month', etc.
27
- * It also allows to pick a custom date range.
28
- */
29
- export class RangeSelectDateComponent {
30
- #overlay;
31
- #fb;
32
- #ANY_OPTION;
33
- #CUSTOM_OPTION;
34
- #customDateRange;
35
- constructor() {
36
- this.translate = inject(TranslateService);
37
- this.#overlay = inject(YvcOverlayService);
38
- this.#fb = inject(FormBuilder);
39
- this.#ANY_OPTION = 'any';
40
- this.#CUSTOM_OPTION = 'custom';
41
- this.dateOptions = signal([]);
42
- this.innerForm = this.#fb.nonNullable.group({
43
- range: [this.#ANY_OPTION]
44
- });
45
- /**
46
- * Range values to be used in the dropdown.
47
- */
48
- this.ranges = input(['today', 'yesterday', 'thisWeek', 'thisMonth', 'thisYear']);
49
- /**
50
- * Whether to show the custom date range option.
51
- */
52
- this.customRange = input(true);
53
- // ControlValueAccessor implementation
54
- // eslint-disable-next-line @typescript-eslint/no-empty-function
55
- this.propagateChange = (_) => { };
56
- this.translate.onLangChange.pipe(takeUntilDestroyed()).subscribe((_) => this.#setupOptions());
57
- this.#setupOptions();
58
- this.innerForm.valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => this.#onFormValueChange(v));
59
- }
60
- #onFormValueChange(v) {
61
- if (v.range === this.#CUSTOM_OPTION) {
62
- if (!this.#customDateRange || this.dateOptions().find((o) => o.value === this.#CUSTOM_OPTION)?.label === this.#customDateRangeToString())
63
- this.#openCustomRangeDialog();
64
- else
65
- this.propagateChange({
66
- rangeValue: this.#customDateRange,
67
- label: this.#customDateRangeToString()
68
- });
69
- }
70
- else {
71
- const { start, end } = SearchUtils.dateRangeStartEnd(v.range);
72
- this.propagateChange(v.range !== this.#ANY_OPTION
73
- ? {
74
- rangeValue: { operator: Operator.INTERVAL_INCLUDE_BOTH, firstValue: start, secondValue: end },
75
- label: this.translate.instant(`yuv.form.element.range-select-date.option.${v.range}`)
76
- }
77
- : undefined);
78
- this.#customDateRange = undefined;
79
- this.#setupOptions();
80
- }
81
- }
82
- #openCustomRangeDialog() {
83
- // open date range picker
84
- const o = this.#overlay.open(DateRangePickerComponent, {
85
- range: this.#customDateRange
86
- });
87
- o.afterClosed$.subscribe((res) => {
88
- this.#customDateRange = res.data;
89
- if (!res.data) {
90
- this.innerForm.patchValue({ range: this.#ANY_OPTION });
91
- this.#setupOptions();
92
- }
93
- else {
94
- this.#onFormValueChange(this.innerForm.value);
95
- this.#setupOptions(this.#customDateRangeToString());
96
- setTimeout(() => {
97
- this.innerForm.patchValue({ range: this.#CUSTOM_OPTION }, {
98
- emitEvent: false
99
- });
100
- });
101
- }
102
- });
103
- }
104
- #setupOptions(custom) {
105
- const options = this.ranges().map((value) => ({
106
- label: this.translate.instant(`yuv.form.element.range-select-date.option.${value}`),
107
- value
108
- }));
109
- if (this.customRange())
110
- options.push({
111
- label: custom || this.translate.instant('yuv.form.element.range-select-date.option.custom'),
112
- value: this.#CUSTOM_OPTION
113
- });
114
- this.dateOptions.set([
115
- {
116
- label: this.translate.instant('yuv.form.element.range-select-date.option.any'),
117
- value: this.#ANY_OPTION
118
- },
119
- ...options
120
- ]);
121
- }
122
- #customDateRangeToString() {
123
- if (!this.#customDateRange)
124
- return undefined;
125
- const dp = new LocaleDatePipe(this.translate);
126
- switch (this.#customDateRange.operator) {
127
- case Operator.EQUAL: {
128
- return dp.transform(this.#customDateRange.firstValue, 'shortDate');
129
- }
130
- case Operator.GREATER_OR_EQUAL: {
131
- return `${OperatorLabel.GREATER_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue, 'shortDate')}`;
132
- }
133
- case Operator.LESS_OR_EQUAL: {
134
- return `${OperatorLabel.LESS_OR_EQUAL} ${dp.transform(this.#customDateRange.firstValue, 'shortDate')}`;
135
- }
136
- case Operator.INTERVAL_INCLUDE_BOTH: {
137
- return `${dp.transform(this.#customDateRange.firstValue, 'shortDate')} ${OperatorLabel.INTERVAL_INCLUDE_BOTH} ${dp.transform(this.#customDateRange.secondValue, 'shortDate')}`;
138
- }
139
- }
140
- return undefined;
141
- }
142
- writeValue(value) {
143
- if (value?.rangeValue?.operator && value?.rangeValue?.firstValue) {
144
- const dr = SearchUtils.getMatchingDateRange(value.rangeValue);
145
- if (dr) {
146
- this.innerForm.patchValue({ range: dr });
147
- }
148
- else {
149
- this.#customDateRange = value.rangeValue;
150
- this.innerForm.patchValue({ range: this.#CUSTOM_OPTION });
151
- }
152
- }
153
- else {
154
- this.innerForm.patchValue({ range: this.#ANY_OPTION });
155
- }
156
- }
157
- registerOnChange(fn) {
158
- this.propagateChange = fn;
159
- }
160
- // eslint-disable-next-line @typescript-eslint/no-empty-function
161
- registerOnTouched(fn) { }
162
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeSelectDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: RangeSelectDateComponent, isStandalone: true, selector: "yuv-range-select-date", inputs: { ranges: { classPropertyName: "ranges", publicName: "ranges", isSignal: true, isRequired: false, transformFunction: null }, customRange: { classPropertyName: "customRange", publicName: "customRange", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
164
- {
165
- provide: NG_VALUE_ACCESSOR,
166
- useExisting: forwardRef(() => RangeSelectDateComponent),
167
- multi: true
168
- }
169
- ], ngImport: i0, template: "<form [formGroup]=\"innerForm\">\n <yvc-dropdown formControlName=\"range\" [options]=\"dateOptions()\" [disableClearButton]=\"true\"></yvc-dropdown>\n</form>", styles: [":host form{display:flex}:host form yvc-dropdown{flex:1;outline-offset:0px;color:currentColor}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: YvcDropdownModule }, { kind: "component", type: i1.Dropdown, selector: "yvc-dropdown", inputs: ["options", "filter", "disabled", "multiple", "disableClearButton"], outputs: ["onDropdownOptionsClose"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
170
- }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeSelectDateComponent, decorators: [{
172
- type: Component,
173
- args: [{ selector: 'yuv-range-select-date', standalone: true, imports: [CommonModule, YvcDropdownModule, ReactiveFormsModule], providers: [
174
- {
175
- provide: NG_VALUE_ACCESSOR,
176
- useExisting: forwardRef(() => RangeSelectDateComponent),
177
- multi: true
178
- }
179
- ], template: "<form [formGroup]=\"innerForm\">\n <yvc-dropdown formControlName=\"range\" [options]=\"dateOptions()\" [disableClearButton]=\"true\"></yvc-dropdown>\n</form>", styles: [":host form{display:flex}:host form yvc-dropdown{flex:1;outline-offset:0px;color:currentColor}\n"] }]
180
- }], ctorParameters: () => [] });
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0LWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3JhbmdlLXNlbGVjdC1kYXRlL3JhbmdlLXNlbGVjdC1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvZm9ybXMvc3JjL2xpYi9lbGVtZW50cy9yYW5nZS1zZWxlY3QtZGF0ZS9yYW5nZS1zZWxlY3QtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEUsT0FBTyxFQUFhLGNBQWMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFjLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BJLE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRixPQUFPLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7QUFHM0YsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQywr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T0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUM7NEJBQ3ZELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgaW5qZWN0LCBpbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUJ1aWxkZXIsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWFya2VyIH0gZnJvbSAnQGNvbHNlbjE5OTEvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcic7XG5pbXBvcnQgeyBEYXRlUmFuZ2UsIExvY2FsZURhdGVQaXBlLCBPcGVyYXRvciwgT3BlcmF0b3JMYWJlbCwgUmFuZ2VWYWx1ZSwgU2VhcmNoVXRpbHMsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9uLCBZdmNEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBPdmVybGF5Q2xvc2VFdmVudCwgWXZjT3ZlcmxheVNlcnZpY2UgfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvb3ZlcmxheSc7XG5pbXBvcnQgeyBEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYW5nZVNlbGVjdERhdGVWYWx1ZSB9IGZyb20gJy4vcmFuZ2Utc2VsZWN0LWRhdGUuaW50ZXJmYWNlJztcblxuLy8gbWFya2VyIGZvciBleHRyYWN0aW5nIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGF2YWlsYWJsZSBkYXRlIHJhbmdlIG9wdGlvbnNcbm1hcmtlcigneXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5vcHRpb24uYW55Jyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLnRvZGF5Jyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLnllc3RlcmRheScpO1xubWFya2VyKCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi50aGlzV2VlaycpO1xubWFya2VyKCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi5sYXN0V2VlaycpO1xubWFya2VyKCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi50aGlzTW9udGgnKTtcbm1hcmtlcigneXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5vcHRpb24ubGFzdE1vbnRoJyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLnRoaXNZZWFyJyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLmxhc3RZZWFyJyk7XG5tYXJrZXIoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLmN1c3RvbScpO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGEgZGF0ZSByYW5nZSBiYXNlZCBvbiBwcmUtZGVmaW5lZCByYW5nZXMgbGlrZVxuICogJ3RvZGF5JywgJ3RoaXMgd2VlaycsICd0aGlzIG1vbnRoJywgZXRjLlxuICogSXQgYWxzbyBhbGxvd3MgdG8gcGljayBhIGN1c3RvbSBkYXRlIHJhbmdlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dXYtcmFuZ2Utc2VsZWN0LWRhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBZdmNEcm9wZG93bk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yYW5nZS1zZWxlY3QtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9yYW5nZS1zZWxlY3QtZGF0ZS5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFuZ2VTZWxlY3REYXRlQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlU2VsZWN0RGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gICNvdmVybGF5ID0gaW5qZWN0KFl2Y092ZXJsYXlTZXJ2aWNlKTtcbiAgI2ZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICAjQU5ZX09QVElPTiA9ICdhbnknO1xuICAjQ1VTVE9NX09QVElPTiA9ICdjdXN0b20nO1xuXG4gIGRhdGVPcHRpb25zID0gc2lnbmFsPERyb3Bkb3duT3B0aW9uW10+KFtdKTtcbiAgI2N1c3RvbURhdGVSYW5nZT86IFJhbmdlVmFsdWU7XG5cbiAgaW5uZXJGb3JtID0gdGhpcy4jZmIubm9uTnVsbGFibGUuZ3JvdXAoe1xuICAgIHJhbmdlOiBbdGhpcy4jQU5ZX09QVElPTl1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJhbmdlIHZhbHVlcyB0byBiZSB1c2VkIGluIHRoZSBkcm9wZG93bi5cbiAgICovXG4gIHJhbmdlcyA9IGlucHV0PERhdGVSYW5nZVtdPihbJ3RvZGF5JywgJ3llc3RlcmRheScsICd0aGlzV2VlaycsICd0aGlzTW9udGgnLCAndGhpc1llYXInXSk7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNob3cgdGhlIGN1c3RvbSBkYXRlIHJhbmdlIG9wdGlvbi5cbiAgICovXG4gIGN1c3RvbVJhbmdlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoXykgPT4gdGhpcy4jc2V0dXBPcHRpb25zKCkpO1xuICAgIHRoaXMuI3NldHVwT3B0aW9ucygpO1xuICAgIHRoaXMuaW5uZXJGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHYpID0+IHRoaXMuI29uRm9ybVZhbHVlQ2hhbmdlKHYpKTtcbiAgfVxuXG4gICNvbkZvcm1WYWx1ZUNoYW5nZSh2OiBhbnkpIHtcbiAgICBpZiAodi5yYW5nZSA9PT0gdGhpcy4jQ1VTVE9NX09QVElPTikge1xuICAgICAgaWYgKCF0aGlzLiNjdXN0b21EYXRlUmFuZ2UgfHwgdGhpcy5kYXRlT3B0aW9ucygpLmZpbmQoKG8pID0+IG8udmFsdWUgPT09IHRoaXMuI0NVU1RPTV9PUFRJT04pPy5sYWJlbCA9PT0gdGhpcy4jY3VzdG9tRGF0ZVJhbmdlVG9TdHJpbmcoKSlcbiAgICAgICAgdGhpcy4jb3BlbkN1c3RvbVJhbmdlRGlhbG9nKCk7XG4gICAgICBlbHNlXG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHtcbiAgICAgICAgICByYW5nZVZhbHVlOiB0aGlzLiNjdXN0b21EYXRlUmFuZ2UsXG4gICAgICAgICAgbGFiZWw6IHRoaXMuI2N1c3RvbURhdGVSYW5nZVRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHsgc3RhcnQsIGVuZCB9ID0gU2VhcmNoVXRpbHMuZGF0ZVJhbmdlU3RhcnRFbmQodi5yYW5nZSBhcyBEYXRlUmFuZ2UpO1xuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoXG4gICAgICAgIHYucmFuZ2UgIT09IHRoaXMuI0FOWV9PUFRJT05cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgcmFuZ2VWYWx1ZTogeyBvcGVyYXRvcjogT3BlcmF0b3IuSU5URVJWQUxfSU5DTFVERV9CT1RILCBmaXJzdFZhbHVlOiBzdGFydCwgc2Vjb25kVmFsdWU6IGVuZCB9LFxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgeXV2LmZvcm0uZWxlbWVudC5yYW5nZS1zZWxlY3QtZGF0ZS5vcHRpb24uJHt2LnJhbmdlfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuI2N1c3RvbURhdGVSYW5nZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuI3NldHVwT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gICNvcGVuQ3VzdG9tUmFuZ2VEaWFsb2coKSB7XG4gICAgLy8gb3BlbiBkYXRlIHJhbmdlIHBpY2tlclxuICAgIGNvbnN0IG8gPSB0aGlzLiNvdmVybGF5Lm9wZW4oRGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LCB7XG4gICAgICByYW5nZTogdGhpcy4jY3VzdG9tRGF0ZVJhbmdlXG4gICAgfSk7XG4gICAgby5hZnRlckNsb3NlZCQuc3Vic2NyaWJlKChyZXM6IE92ZXJsYXlDbG9zZUV2ZW50PFJhbmdlVmFsdWU+KSA9PiB7XG4gICAgICB0aGlzLiNjdXN0b21EYXRlUmFuZ2UgPSByZXMuZGF0YTtcblxuICAgICAgaWYgKCFyZXMuZGF0YSkge1xuICAgICAgICB0aGlzLmlubmVyRm9ybS5wYXRjaFZhbHVlKHsgcmFuZ2U6IHRoaXMuI0FOWV9PUFRJT04gfSk7XG4gICAgICAgIHRoaXMuI3NldHVwT3B0aW9ucygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jb25Gb3JtVmFsdWVDaGFuZ2UodGhpcy5pbm5lckZvcm0udmFsdWUpO1xuICAgICAgICB0aGlzLiNzZXR1cE9wdGlvbnModGhpcy4jY3VzdG9tRGF0ZVJhbmdlVG9TdHJpbmcoKSk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbm5lckZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgICAgICAgIHsgcmFuZ2U6IHRoaXMuI0NVU1RPTV9PUFRJT04gfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgI3NldHVwT3B0aW9ucyhjdXN0b20/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5yYW5nZXMoKS5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYHl1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLiR7dmFsdWV9YCksXG4gICAgICB2YWx1ZVxuICAgIH0pKTtcbiAgICBpZiAodGhpcy5jdXN0b21SYW5nZSgpKVxuICAgICAgb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IGN1c3RvbSB8fCB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCd5dXYuZm9ybS5lbGVtZW50LnJhbmdlLXNlbGVjdC1kYXRlLm9wdGlvbi5jdXN0b20nKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuI0NVU1RPTV9PUFRJT04gYXMgRGF0ZVJhbmdlXG4gICAgICB9KTtcblxuICAgIHRoaXMuZGF0ZU9wdGlvbnMuc2V0KFtcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ3l1di5mb3JtLmVsZW1lbnQucmFuZ2Utc2VsZWN0LWRhdGUub3B0aW9uLmFueScpLFxuICAgICAgICB2YWx1ZTogdGhpcy4jQU5ZX09QVElPTlxuICAgICAgfSxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICBdKTtcbiAgfVxuXG4gICNjdXN0b21EYXRlUmFuZ2VUb1N0cmluZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy4jY3VzdG9tRGF0ZVJhbmdlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRwID0gbmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKTtcbiAgICBzd2l0Y2ggKHRoaXMuI2N1c3RvbURhdGVSYW5nZS5vcGVyYXRvcikge1xuICAgICAgY2FzZSBPcGVyYXRvci5FUVVBTDoge1xuICAgICAgICByZXR1cm4gZHAudHJhbnNmb3JtKHRoaXMuI2N1c3RvbURhdGVSYW5nZS5maXJzdFZhbHVlIGFzIERhdGUsICdzaG9ydERhdGUnKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgT3BlcmF0b3IuR1JFQVRFUl9PUl9FUVVBTDoge1xuICAgICAgICByZXR1cm4gYCR7T3BlcmF0b3JMYWJlbC5HUkVBVEVSX09SX0VRVUFMfSAke2RwLnRyYW5zZm9ybSh0aGlzLiNjdXN0b21EYXRlUmFuZ2UuZmlyc3RWYWx1ZSBhcyBEYXRlLCAnc2hvcnREYXRlJyl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgT3BlcmF0b3IuTEVTU19PUl9FUVVBTDoge1xuICAgICAgICByZXR1cm4gYCR7T3BlcmF0b3JMYWJlbC5MRVNTX09SX0VRVUFMfSAke2RwLnRyYW5zZm9ybSh0aGlzLiNjdXN0b21EYXRlUmFuZ2UuZmlyc3RWYWx1ZSBhcyBEYXRlLCAnc2hvcnREYXRlJyl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgT3BlcmF0b3IuSU5URVJWQUxfSU5DTFVERV9CT1RIOiB7XG4gICAgICAgIHJldHVybiBgJHtkcC50cmFuc2Zvcm0odGhpcy4jY3VzdG9tRGF0ZVJhbmdlLmZpcnN0VmFsdWUgYXMgRGF0ZSwgJ3Nob3J0RGF0ZScpfSAke09wZXJhdG9yTGFiZWwuSU5URVJWQUxfSU5DTFVERV9CT1RIfSAke2RwLnRyYW5zZm9ybSh0aGlzLiNjdXN0b21EYXRlUmFuZ2Uuc2Vjb25kVmFsdWUgYXMgRGF0ZSwgJ3Nob3J0RGF0ZScpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRhdGlvblxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZT86IFJhbmdlU2VsZWN0RGF0ZVZhbHVlKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlPy5yYW5nZVZhbHVlPy5vcGVyYXRvciAmJiB2YWx1ZT8ucmFuZ2VWYWx1ZT8uZmlyc3RWYWx1ZSkge1xuICAgICAgY29uc3QgZHI6IERhdGVSYW5nZSB8IHVuZGVmaW5lZCA9IFNlYXJjaFV0aWxzLmdldE1hdGNoaW5nRGF0ZVJhbmdlKHZhbHVlLnJhbmdlVmFsdWUpO1xuICAgICAgaWYgKGRyKSB7XG4gICAgICAgIHRoaXMuaW5uZXJGb3JtLnBhdGNoVmFsdWUoeyByYW5nZTogZHIgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiNjdXN0b21EYXRlUmFuZ2UgPSB2YWx1ZS5yYW5nZVZhbHVlO1xuICAgICAgICB0aGlzLmlubmVyRm9ybS5wYXRjaFZhbHVlKHsgcmFuZ2U6IHRoaXMuI0NVU1RPTV9PUFRJT04gfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5uZXJGb3JtLnBhdGNoVmFsdWUoeyByYW5nZTogdGhpcy4jQU5ZX09QVElPTiB9KTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHt9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImlubmVyRm9ybVwiPlxuICAgIDx5dmMtZHJvcGRvd24gZm9ybUNvbnRyb2xOYW1lPVwicmFuZ2VcIiBbb3B0aW9uc109XCJkYXRlT3B0aW9ucygpXCIgW2Rpc2FibGVDbGVhckJ1dHRvbl09XCJ0cnVlXCI+PC95dmMtZHJvcGRvd24+XG48L2Zvcm0+Il19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2VsZWN0LWRhdGUuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWZyYW1ld29yay9mb3Jtcy9zcmMvbGliL2VsZW1lbnRzL3JhbmdlLXNlbGVjdC1kYXRlL3JhbmdlLXNlbGVjdC1kYXRlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmFuZ2VWYWx1ZSB9IGZyb20gXCJAeXV1dmlzL2NsaWVudC1jb3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFuZ2VTZWxlY3REYXRlVmFsdWUge1xuICAgIHJhbmdlVmFsdWU6IFJhbmdlVmFsdWU7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG59Il19