@dereekb/dbx-form 12.6.21 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/LICENSE +1 -1
  2. package/fesm2022/dereekb-dbx-form-calendar.mjs +86 -86
  3. package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
  4. package/fesm2022/dereekb-dbx-form-mapbox.mjs +28 -28
  5. package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
  6. package/fesm2022/dereekb-dbx-form.mjs +429 -600
  7. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  8. package/lib/formly/field/value/phone/_phone.scss +1 -0
  9. package/lib/style/_theming.scss +196 -1
  10. package/package.json +26 -32
  11. package/types/dereekb-dbx-form-calendar.d.ts +679 -0
  12. package/types/dereekb-dbx-form-mapbox.d.ts +216 -0
  13. package/types/dereekb-dbx-form.d.ts +3050 -0
  14. package/calendar/index.d.ts +0 -1
  15. package/calendar/lib/calendar.module.d.ts +0 -19
  16. package/calendar/lib/calendar.schedule.selection.cell.component.d.ts +0 -16
  17. package/calendar/lib/calendar.schedule.selection.component.d.ts +0 -74
  18. package/calendar/lib/calendar.schedule.selection.d.ts +0 -29
  19. package/calendar/lib/calendar.schedule.selection.days.component.d.ts +0 -15
  20. package/calendar/lib/calendar.schedule.selection.days.form.component.d.ts +0 -10
  21. package/calendar/lib/calendar.schedule.selection.dialog.button.component.d.ts +0 -15
  22. package/calendar/lib/calendar.schedule.selection.dialog.component.d.ts +0 -24
  23. package/calendar/lib/calendar.schedule.selection.form.d.ts +0 -4
  24. package/calendar/lib/calendar.schedule.selection.popover.button.component.d.ts +0 -17
  25. package/calendar/lib/calendar.schedule.selection.popover.component.d.ts +0 -14
  26. package/calendar/lib/calendar.schedule.selection.popover.content.component.d.ts +0 -5
  27. package/calendar/lib/calendar.schedule.selection.range.component.d.ts +0 -52
  28. package/calendar/lib/calendar.schedule.selection.store.d.ts +0 -282
  29. package/calendar/lib/calendar.schedule.selection.store.provide.d.ts +0 -23
  30. package/calendar/lib/calendar.schedule.selection.toggle.button.component.d.ts +0 -18
  31. package/calendar/lib/field/index.d.ts +0 -1
  32. package/calendar/lib/field/schedule/calendar.schedule.field.component.d.ts +0 -102
  33. package/calendar/lib/field/schedule/calendar.schedule.field.d.ts +0 -6
  34. package/calendar/lib/field/schedule/calendar.schedule.module.d.ts +0 -8
  35. package/calendar/lib/field/schedule/index.d.ts +0 -3
  36. package/calendar/lib/index.d.ts +0 -17
  37. package/esm2022/calendar/dereekb-dbx-form-calendar.mjs +0 -5
  38. package/esm2022/calendar/index.mjs +0 -2
  39. package/esm2022/calendar/lib/calendar.module.mjs +0 -84
  40. package/esm2022/calendar/lib/calendar.schedule.selection.cell.component.mjs +0 -42
  41. package/esm2022/calendar/lib/calendar.schedule.selection.component.mjs +0 -156
  42. package/esm2022/calendar/lib/calendar.schedule.selection.days.component.mjs +0 -47
  43. package/esm2022/calendar/lib/calendar.schedule.selection.days.form.component.mjs +0 -22
  44. package/esm2022/calendar/lib/calendar.schedule.selection.dialog.button.component.mjs +0 -32
  45. package/esm2022/calendar/lib/calendar.schedule.selection.dialog.component.mjs +0 -59
  46. package/esm2022/calendar/lib/calendar.schedule.selection.form.mjs +0 -15
  47. package/esm2022/calendar/lib/calendar.schedule.selection.mjs +0 -31
  48. package/esm2022/calendar/lib/calendar.schedule.selection.popover.button.component.mjs +0 -50
  49. package/esm2022/calendar/lib/calendar.schedule.selection.popover.component.mjs +0 -41
  50. package/esm2022/calendar/lib/calendar.schedule.selection.popover.content.component.mjs +0 -34
  51. package/esm2022/calendar/lib/calendar.schedule.selection.range.component.mjs +0 -165
  52. package/esm2022/calendar/lib/calendar.schedule.selection.store.mjs +0 -785
  53. package/esm2022/calendar/lib/calendar.schedule.selection.store.provide.mjs +0 -48
  54. package/esm2022/calendar/lib/calendar.schedule.selection.toggle.button.component.mjs +0 -67
  55. package/esm2022/calendar/lib/field/index.mjs +0 -3
  56. package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.component.mjs +0 -154
  57. package/esm2022/calendar/lib/field/schedule/calendar.schedule.field.mjs +0 -28
  58. package/esm2022/calendar/lib/field/schedule/calendar.schedule.module.mjs +0 -26
  59. package/esm2022/calendar/lib/field/schedule/index.mjs +0 -4
  60. package/esm2022/calendar/lib/index.mjs +0 -18
  61. package/esm2022/dereekb-dbx-form.mjs +0 -5
  62. package/esm2022/index.mjs +0 -2
  63. package/esm2022/lib/form/action/form.action.dialog.component.mjs +0 -79
  64. package/esm2022/lib/form/action/form.action.directive.mjs +0 -167
  65. package/esm2022/lib/form/action/form.action.module.mjs +0 -19
  66. package/esm2022/lib/form/action/index.mjs +0 -5
  67. package/esm2022/lib/form/action/transition/form.action.transition.module.mjs +0 -19
  68. package/esm2022/lib/form/action/transition/form.action.transition.safety.directive.mjs +0 -28
  69. package/esm2022/lib/form/action/transition/index.mjs +0 -3
  70. package/esm2022/lib/form/form.angular.util.mjs +0 -13
  71. package/esm2022/lib/form/form.mjs +0 -42
  72. package/esm2022/lib/form/form.module.mjs +0 -17
  73. package/esm2022/lib/form/index.mjs +0 -6
  74. package/esm2022/lib/form/io/form.change.directive.mjs +0 -36
  75. package/esm2022/lib/form/io/form.input.directive.mjs +0 -95
  76. package/esm2022/lib/form/io/form.io.module.mjs +0 -26
  77. package/esm2022/lib/form/io/form.loading.directive.mjs +0 -36
  78. package/esm2022/lib/form/io/index.mjs +0 -5
  79. package/esm2022/lib/form.module.mjs +0 -18
  80. package/esm2022/lib/form.providers.mjs +0 -32
  81. package/esm2022/lib/formly/config/index.mjs +0 -2
  82. package/esm2022/lib/formly/config/validation.mjs +0 -23
  83. package/esm2022/lib/formly/field/checklist/checklist.field.mjs +0 -102
  84. package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +0 -86
  85. package/esm2022/lib/formly/field/checklist/checklist.item.field.content.default.component.mjs +0 -50
  86. package/esm2022/lib/formly/field/checklist/checklist.item.field.mjs +0 -14
  87. package/esm2022/lib/formly/field/checklist/checklist.item.field.module.mjs +0 -30
  88. package/esm2022/lib/formly/field/checklist/checklist.item.mjs +0 -2
  89. package/esm2022/lib/formly/field/checklist/index.mjs +0 -7
  90. package/esm2022/lib/formly/field/component/component.field.component.mjs +0 -25
  91. package/esm2022/lib/formly/field/component/component.field.mjs +0 -7
  92. package/esm2022/lib/formly/field/component/component.field.module.mjs +0 -26
  93. package/esm2022/lib/formly/field/component/index.mjs +0 -4
  94. package/esm2022/lib/formly/field/field.mjs +0 -97
  95. package/esm2022/lib/formly/field/form.field.module.mjs +0 -22
  96. package/esm2022/lib/formly/field/index.mjs +0 -9
  97. package/esm2022/lib/formly/field/selection/index.mjs +0 -8
  98. package/esm2022/lib/formly/field/selection/list/index.mjs +0 -4
  99. package/esm2022/lib/formly/field/selection/list/list.field.component.mjs +0 -90
  100. package/esm2022/lib/formly/field/selection/list/list.field.mjs +0 -15
  101. package/esm2022/lib/formly/field/selection/list/list.field.module.mjs +0 -26
  102. package/esm2022/lib/formly/field/selection/pickable/index.mjs +0 -8
  103. package/esm2022/lib/formly/field/selection/pickable/pickable.chip.field.component.mjs +0 -37
  104. package/esm2022/lib/formly/field/selection/pickable/pickable.field.directive.mjs +0 -272
  105. package/esm2022/lib/formly/field/selection/pickable/pickable.field.mjs +0 -26
  106. package/esm2022/lib/formly/field/selection/pickable/pickable.field.module.mjs +0 -33
  107. package/esm2022/lib/formly/field/selection/pickable/pickable.list.field.component.mjs +0 -130
  108. package/esm2022/lib/formly/field/selection/pickable/pickable.mjs +0 -2
  109. package/esm2022/lib/formly/field/selection/pickable/pickable.util.mjs +0 -35
  110. package/esm2022/lib/formly/field/selection/searchable/index.mjs +0 -9
  111. package/esm2022/lib/formly/field/selection/searchable/searchable.chip.field.component.mjs +0 -70
  112. package/esm2022/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.mjs +0 -90
  113. package/esm2022/lib/formly/field/selection/searchable/searchable.field.directive.mjs +0 -288
  114. package/esm2022/lib/formly/field/selection/searchable/searchable.field.mjs +0 -69
  115. package/esm2022/lib/formly/field/selection/searchable/searchable.field.module.mjs +0 -34
  116. package/esm2022/lib/formly/field/selection/searchable/searchable.mjs +0 -2
  117. package/esm2022/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +0 -72
  118. package/esm2022/lib/formly/field/selection/searchable/text.chip.field.mjs +0 -15
  119. package/esm2022/lib/formly/field/selection/selection.field.mjs +0 -39
  120. package/esm2022/lib/formly/field/selection/selection.mjs +0 -2
  121. package/esm2022/lib/formly/field/selection/selection.module.mjs +0 -28
  122. package/esm2022/lib/formly/field/selection/sourceselect/index.mjs +0 -5
  123. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.component.mjs +0 -325
  124. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.mjs +0 -14
  125. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.field.module.mjs +0 -26
  126. package/esm2022/lib/formly/field/selection/sourceselect/sourceselect.mjs +0 -2
  127. package/esm2022/lib/formly/field/texteditor/index.mjs +0 -4
  128. package/esm2022/lib/formly/field/texteditor/texteditor.field.component.mjs +0 -97
  129. package/esm2022/lib/formly/field/texteditor/texteditor.field.mjs +0 -21
  130. package/esm2022/lib/formly/field/texteditor/texteditor.field.module.mjs +0 -26
  131. package/esm2022/lib/formly/field/value/array/array.field.component.mjs +0 -231
  132. package/esm2022/lib/formly/field/value/array/array.field.mjs +0 -28
  133. package/esm2022/lib/formly/field/value/array/array.field.module.mjs +0 -26
  134. package/esm2022/lib/formly/field/value/array/index.mjs +0 -4
  135. package/esm2022/lib/formly/field/value/boolean/boolean.field.mjs +0 -51
  136. package/esm2022/lib/formly/field/value/boolean/boolean.field.module.mjs +0 -19
  137. package/esm2022/lib/formly/field/value/boolean/index.mjs +0 -3
  138. package/esm2022/lib/formly/field/value/date/date.field.module.mjs +0 -36
  139. package/esm2022/lib/formly/field/value/date/date.value.mjs +0 -133
  140. package/esm2022/lib/formly/field/value/date/datetime.field.component.mjs +0 -737
  141. package/esm2022/lib/formly/field/value/date/datetime.field.mjs +0 -151
  142. package/esm2022/lib/formly/field/value/date/datetime.field.service.mjs +0 -23
  143. package/esm2022/lib/formly/field/value/date/datetime.mjs +0 -26
  144. package/esm2022/lib/formly/field/value/date/datetime.preset.mjs +0 -31
  145. package/esm2022/lib/formly/field/value/date/fixeddaterange.field.component.mjs +0 -521
  146. package/esm2022/lib/formly/field/value/date/index.mjs +0 -10
  147. package/esm2022/lib/formly/field/value/hidden.field.mjs +0 -8
  148. package/esm2022/lib/formly/field/value/index.mjs +0 -9
  149. package/esm2022/lib/formly/field/value/number/index.mjs +0 -3
  150. package/esm2022/lib/formly/field/value/number/number.field.mjs +0 -75
  151. package/esm2022/lib/formly/field/value/number/number.field.module.mjs +0 -18
  152. package/esm2022/lib/formly/field/value/phone/index.mjs +0 -4
  153. package/esm2022/lib/formly/field/value/phone/phone.field.component.mjs +0 -104
  154. package/esm2022/lib/formly/field/value/phone/phone.field.mjs +0 -66
  155. package/esm2022/lib/formly/field/value/phone/phone.field.module.mjs +0 -26
  156. package/esm2022/lib/formly/field/value/text/index.mjs +0 -5
  157. package/esm2022/lib/formly/field/value/text/text.additional.field.mjs +0 -114
  158. package/esm2022/lib/formly/field/value/text/text.address.field.mjs +0 -73
  159. package/esm2022/lib/formly/field/value/text/text.field.mjs +0 -47
  160. package/esm2022/lib/formly/field/value/text/text.field.module.mjs +0 -20
  161. package/esm2022/lib/formly/field/value/value.module.mjs +0 -31
  162. package/esm2022/lib/formly/field/wrapper/autotouch.wrapper.component.mjs +0 -32
  163. package/esm2022/lib/formly/field/wrapper/expand.wrapper.component.mjs +0 -34
  164. package/esm2022/lib/formly/field/wrapper/expand.wrapper.delegate.mjs +0 -58
  165. package/esm2022/lib/formly/field/wrapper/flex.wrapper.component.mjs +0 -38
  166. package/esm2022/lib/formly/field/wrapper/index.mjs +0 -13
  167. package/esm2022/lib/formly/field/wrapper/info.wrapper.component.mjs +0 -48
  168. package/esm2022/lib/formly/field/wrapper/section.wrapper.component.mjs +0 -31
  169. package/esm2022/lib/formly/field/wrapper/style.wrapper.component.mjs +0 -53
  170. package/esm2022/lib/formly/field/wrapper/subsection.wrapper.component.mjs +0 -30
  171. package/esm2022/lib/formly/field/wrapper/toggle.wrapper.component.mjs +0 -55
  172. package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +0 -45
  173. package/esm2022/lib/formly/field/wrapper/wrapper.key.mjs +0 -10
  174. package/esm2022/lib/formly/field/wrapper/wrapper.mjs +0 -77
  175. package/esm2022/lib/formly/field/wrapper/wrapper.module.mjs +0 -101
  176. package/esm2022/lib/formly/form/form.form.mjs +0 -17
  177. package/esm2022/lib/formly/form/form.form.module.mjs +0 -20
  178. package/esm2022/lib/formly/form/index.mjs +0 -4
  179. package/esm2022/lib/formly/form/search.form.component.mjs +0 -35
  180. package/esm2022/lib/formly/formly.component.template.mjs +0 -29
  181. package/esm2022/lib/formly/formly.context.directive.mjs +0 -23
  182. package/esm2022/lib/formly/formly.context.mjs +0 -102
  183. package/esm2022/lib/formly/formly.directive.mjs +0 -84
  184. package/esm2022/lib/formly/formly.form.component.mjs +0 -194
  185. package/esm2022/lib/formly/formly.module.mjs +0 -40
  186. package/esm2022/lib/formly/formly.providers.mjs +0 -8
  187. package/esm2022/lib/formly/index.mjs +0 -12
  188. package/esm2022/lib/formly/template/available.mjs +0 -18
  189. package/esm2022/lib/formly/template/available.module.mjs +0 -18
  190. package/esm2022/lib/formly/template/index.mjs +0 -8
  191. package/esm2022/lib/formly/template/login.mjs +0 -92
  192. package/esm2022/lib/formly/template/login.module.mjs +0 -17
  193. package/esm2022/lib/formly/template/timezone.mjs +0 -46
  194. package/esm2022/lib/formly/template/timezone.module.mjs +0 -17
  195. package/esm2022/lib/formly/template/website.mjs +0 -25
  196. package/esm2022/lib/index.mjs +0 -7
  197. package/esm2022/lib/layout/form.layout.module.mjs +0 -20
  198. package/esm2022/lib/layout/form.spacer.directive.mjs +0 -20
  199. package/esm2022/lib/layout/index.mjs +0 -3
  200. package/esm2022/lib/validator/available.mjs +0 -31
  201. package/esm2022/lib/validator/boolean.mjs +0 -12
  202. package/esm2022/lib/validator/email.mjs +0 -6
  203. package/esm2022/lib/validator/field.mjs +0 -31
  204. package/esm2022/lib/validator/index.mjs +0 -8
  205. package/esm2022/lib/validator/number.mjs +0 -53
  206. package/esm2022/lib/validator/phone.mjs +0 -61
  207. package/esm2022/lib/validator/website.mjs +0 -68
  208. package/esm2022/mapbox/dereekb-dbx-form-mapbox.mjs +0 -5
  209. package/esm2022/mapbox/index.mjs +0 -3
  210. package/esm2022/mapbox/lib/field/index.mjs +0 -3
  211. package/esm2022/mapbox/lib/field/latlng/index.mjs +0 -5
  212. package/esm2022/mapbox/lib/field/latlng/latlng.field.component.mjs +0 -262
  213. package/esm2022/mapbox/lib/field/latlng/latlng.field.marker.component.mjs +0 -34
  214. package/esm2022/mapbox/lib/field/latlng/latlng.field.mjs +0 -35
  215. package/esm2022/mapbox/lib/field/latlng/latlng.module.mjs +0 -26
  216. package/esm2022/mapbox/lib/field/zoom/index.mjs +0 -4
  217. package/esm2022/mapbox/lib/field/zoom/zoom.field.component.mjs +0 -146
  218. package/esm2022/mapbox/lib/field/zoom/zoom.field.mjs +0 -23
  219. package/esm2022/mapbox/lib/field/zoom/zoom.module.mjs +0 -26
  220. package/esm2022/mapbox/lib/mapbox.module.mjs +0 -16
  221. package/index.d.ts +0 -1
  222. package/lib/form/action/form.action.dialog.component.d.ts +0 -63
  223. package/lib/form/action/form.action.directive.d.ts +0 -66
  224. package/lib/form/action/form.action.module.d.ts +0 -10
  225. package/lib/form/action/index.d.ts +0 -4
  226. package/lib/form/action/transition/form.action.transition.module.d.ts +0 -10
  227. package/lib/form/action/transition/form.action.transition.safety.directive.d.ts +0 -17
  228. package/lib/form/action/transition/index.d.ts +0 -2
  229. package/lib/form/form.angular.util.d.ts +0 -15
  230. package/lib/form/form.d.ts +0 -92
  231. package/lib/form/form.module.d.ts +0 -9
  232. package/lib/form/index.d.ts +0 -5
  233. package/lib/form/io/form.change.directive.d.ts +0 -17
  234. package/lib/form/io/form.input.directive.d.ts +0 -28
  235. package/lib/form/io/form.io.module.d.ts +0 -16
  236. package/lib/form/io/form.loading.directive.d.ts +0 -23
  237. package/lib/form/io/index.d.ts +0 -4
  238. package/lib/form.module.d.ts +0 -10
  239. package/lib/form.providers.d.ts +0 -8
  240. package/lib/formly/config/index.d.ts +0 -1
  241. package/lib/formly/config/validation.d.ts +0 -23
  242. package/lib/formly/field/checklist/checklist.field.d.ts +0 -44
  243. package/lib/formly/field/checklist/checklist.item.d.ts +0 -36
  244. package/lib/formly/field/checklist/checklist.item.field.component.d.ts +0 -43
  245. package/lib/formly/field/checklist/checklist.item.field.content.default.component.d.ts +0 -10
  246. package/lib/formly/field/checklist/checklist.item.field.d.ts +0 -7
  247. package/lib/formly/field/checklist/checklist.item.field.module.d.ts +0 -10
  248. package/lib/formly/field/checklist/index.d.ts +0 -6
  249. package/lib/formly/field/component/component.field.component.d.ts +0 -12
  250. package/lib/formly/field/component/component.field.d.ts +0 -3
  251. package/lib/formly/field/component/component.field.module.d.ts +0 -8
  252. package/lib/formly/field/component/index.d.ts +0 -3
  253. package/lib/formly/field/field.d.ts +0 -99
  254. package/lib/formly/field/form.field.module.d.ts +0 -12
  255. package/lib/formly/field/index.d.ts +0 -8
  256. package/lib/formly/field/selection/index.d.ts +0 -7
  257. package/lib/formly/field/selection/list/index.d.ts +0 -3
  258. package/lib/formly/field/selection/list/list.field.component.d.ts +0 -55
  259. package/lib/formly/field/selection/list/list.field.d.ts +0 -8
  260. package/lib/formly/field/selection/list/list.field.module.d.ts +0 -8
  261. package/lib/formly/field/selection/pickable/index.d.ts +0 -7
  262. package/lib/formly/field/selection/pickable/pickable.chip.field.component.d.ts +0 -10
  263. package/lib/formly/field/selection/pickable/pickable.d.ts +0 -26
  264. package/lib/formly/field/selection/pickable/pickable.field.d.ts +0 -8
  265. package/lib/formly/field/selection/pickable/pickable.field.directive.d.ts +0 -169
  266. package/lib/formly/field/selection/pickable/pickable.field.module.d.ts +0 -9
  267. package/lib/formly/field/selection/pickable/pickable.list.field.component.d.ts +0 -39
  268. package/lib/formly/field/selection/pickable/pickable.util.d.ts +0 -14
  269. package/lib/formly/field/selection/searchable/index.d.ts +0 -8
  270. package/lib/formly/field/selection/searchable/searchable.chip.field.component.d.ts +0 -28
  271. package/lib/formly/field/selection/searchable/searchable.d.ts +0 -39
  272. package/lib/formly/field/selection/searchable/searchable.field.autocomplete.item.component.d.ts +0 -22
  273. package/lib/formly/field/selection/searchable/searchable.field.d.ts +0 -25
  274. package/lib/formly/field/selection/searchable/searchable.field.directive.d.ts +0 -163
  275. package/lib/formly/field/selection/searchable/searchable.field.module.d.ts +0 -10
  276. package/lib/formly/field/selection/searchable/searchable.text.field.component.d.ts +0 -24
  277. package/lib/formly/field/selection/searchable/text.chip.field.d.ts +0 -8
  278. package/lib/formly/field/selection/selection.d.ts +0 -26
  279. package/lib/formly/field/selection/selection.field.d.ts +0 -38
  280. package/lib/formly/field/selection/selection.module.d.ts +0 -18
  281. package/lib/formly/field/selection/sourceselect/index.d.ts +0 -4
  282. package/lib/formly/field/selection/sourceselect/sourceselect.d.ts +0 -116
  283. package/lib/formly/field/selection/sourceselect/sourceselect.field.component.d.ts +0 -95
  284. package/lib/formly/field/selection/sourceselect/sourceselect.field.d.ts +0 -7
  285. package/lib/formly/field/selection/sourceselect/sourceselect.field.module.d.ts +0 -8
  286. package/lib/formly/field/texteditor/index.d.ts +0 -3
  287. package/lib/formly/field/texteditor/texteditor.field.component.d.ts +0 -24
  288. package/lib/formly/field/texteditor/texteditor.field.d.ts +0 -6
  289. package/lib/formly/field/texteditor/texteditor.field.module.d.ts +0 -8
  290. package/lib/formly/field/value/array/array.field.component.d.ts +0 -89
  291. package/lib/formly/field/value/array/array.field.d.ts +0 -40
  292. package/lib/formly/field/value/array/array.field.module.d.ts +0 -8
  293. package/lib/formly/field/value/array/index.d.ts +0 -3
  294. package/lib/formly/field/value/boolean/boolean.field.d.ts +0 -8
  295. package/lib/formly/field/value/boolean/boolean.field.module.d.ts +0 -9
  296. package/lib/formly/field/value/boolean/index.d.ts +0 -2
  297. package/lib/formly/field/value/date/date.field.module.d.ts +0 -10
  298. package/lib/formly/field/value/date/date.value.d.ts +0 -32
  299. package/lib/formly/field/value/date/datetime.d.ts +0 -56
  300. package/lib/formly/field/value/date/datetime.field.component.d.ts +0 -307
  301. package/lib/formly/field/value/date/datetime.field.d.ts +0 -31
  302. package/lib/formly/field/value/date/datetime.field.service.d.ts +0 -12
  303. package/lib/formly/field/value/date/datetime.preset.d.ts +0 -2
  304. package/lib/formly/field/value/date/fixeddaterange.field.component.d.ts +0 -163
  305. package/lib/formly/field/value/date/index.d.ts +0 -9
  306. package/lib/formly/field/value/hidden.field.d.ts +0 -4
  307. package/lib/formly/field/value/index.d.ts +0 -8
  308. package/lib/formly/field/value/number/index.d.ts +0 -2
  309. package/lib/formly/field/value/number/number.field.d.ts +0 -46
  310. package/lib/formly/field/value/number/number.field.module.d.ts +0 -8
  311. package/lib/formly/field/value/phone/index.d.ts +0 -3
  312. package/lib/formly/field/value/phone/phone.field.component.d.ts +0 -35
  313. package/lib/formly/field/value/phone/phone.field.d.ts +0 -28
  314. package/lib/formly/field/value/phone/phone.field.module.d.ts +0 -8
  315. package/lib/formly/field/value/text/index.d.ts +0 -4
  316. package/lib/formly/field/value/text/text.additional.field.d.ts +0 -24
  317. package/lib/formly/field/value/text/text.address.field.d.ts +0 -43
  318. package/lib/formly/field/value/text/text.field.d.ts +0 -21
  319. package/lib/formly/field/value/text/text.field.module.d.ts +0 -10
  320. package/lib/formly/field/value/value.module.d.ts +0 -21
  321. package/lib/formly/field/wrapper/autotouch.wrapper.component.d.ts +0 -11
  322. package/lib/formly/field/wrapper/expand.wrapper.component.d.ts +0 -14
  323. package/lib/formly/field/wrapper/expand.wrapper.delegate.d.ts +0 -31
  324. package/lib/formly/field/wrapper/flex.wrapper.component.d.ts +0 -25
  325. package/lib/formly/field/wrapper/index.d.ts +0 -12
  326. package/lib/formly/field/wrapper/info.wrapper.component.d.ts +0 -11
  327. package/lib/formly/field/wrapper/section.wrapper.component.d.ts +0 -10
  328. package/lib/formly/field/wrapper/style.wrapper.component.d.ts +0 -27
  329. package/lib/formly/field/wrapper/subsection.wrapper.component.d.ts +0 -10
  330. package/lib/formly/field/wrapper/toggle.wrapper.component.d.ts +0 -17
  331. package/lib/formly/field/wrapper/working.wrapper.component.d.ts +0 -21
  332. package/lib/formly/field/wrapper/wrapper.d.ts +0 -35
  333. package/lib/formly/field/wrapper/wrapper.key.d.ts +0 -9
  334. package/lib/formly/field/wrapper/wrapper.module.d.ts +0 -17
  335. package/lib/formly/form/form.form.d.ts +0 -11
  336. package/lib/formly/form/form.form.module.d.ts +0 -10
  337. package/lib/formly/form/index.d.ts +0 -3
  338. package/lib/formly/form/search.form.component.d.ts +0 -13
  339. package/lib/formly/formly.component.template.d.ts +0 -19
  340. package/lib/formly/formly.context.d.ts +0 -57
  341. package/lib/formly/formly.context.directive.d.ts +0 -18
  342. package/lib/formly/formly.directive.d.ts +0 -56
  343. package/lib/formly/formly.form.component.d.ts +0 -52
  344. package/lib/formly/formly.module.d.ts +0 -15
  345. package/lib/formly/formly.providers.d.ts +0 -1
  346. package/lib/formly/index.d.ts +0 -11
  347. package/lib/formly/template/available.d.ts +0 -7
  348. package/lib/formly/template/available.module.d.ts +0 -8
  349. package/lib/formly/template/index.d.ts +0 -7
  350. package/lib/formly/template/login.d.ts +0 -66
  351. package/lib/formly/template/login.module.d.ts +0 -7
  352. package/lib/formly/template/timezone.d.ts +0 -20
  353. package/lib/formly/template/timezone.module.d.ts +0 -7
  354. package/lib/formly/template/website.d.ts +0 -15
  355. package/lib/index.d.ts +0 -6
  356. package/lib/layout/form.layout.module.d.ts +0 -10
  357. package/lib/layout/form.spacer.directive.d.ts +0 -8
  358. package/lib/layout/index.d.ts +0 -2
  359. package/lib/validator/available.d.ts +0 -30
  360. package/lib/validator/boolean.d.ts +0 -2
  361. package/lib/validator/email.d.ts +0 -2
  362. package/lib/validator/field.d.ts +0 -32
  363. package/lib/validator/index.d.ts +0 -7
  364. package/lib/validator/number.d.ts +0 -23
  365. package/lib/validator/phone.d.ts +0 -16
  366. package/lib/validator/website.d.ts +0 -31
  367. package/mapbox/index.d.ts +0 -2
  368. package/mapbox/lib/field/index.d.ts +0 -2
  369. package/mapbox/lib/field/latlng/index.d.ts +0 -4
  370. package/mapbox/lib/field/latlng/latlng.field.component.d.ts +0 -116
  371. package/mapbox/lib/field/latlng/latlng.field.d.ts +0 -6
  372. package/mapbox/lib/field/latlng/latlng.field.marker.component.d.ts +0 -12
  373. package/mapbox/lib/field/latlng/latlng.module.d.ts +0 -8
  374. package/mapbox/lib/field/zoom/index.d.ts +0 -3
  375. package/mapbox/lib/field/zoom/zoom.field.component.d.ts +0 -68
  376. package/mapbox/lib/field/zoom/zoom.field.d.ts +0 -6
  377. package/mapbox/lib/field/zoom/zoom.module.d.ts +0 -8
  378. package/mapbox/lib/mapbox.module.d.ts +0 -8
@@ -1,15 +0,0 @@
1
- import { of } from 'rxjs';
2
- import { searchableChipField } from './searchable.field';
3
- export function chipTextField(config) {
4
- const convertStringValue = config.caseSensitive ? (x) => x : (x) => x?.toLowerCase();
5
- return searchableChipField({
6
- search: () => of([]), // no search by default
7
- ...config,
8
- allowStringValues: true,
9
- convertStringValue,
10
- displayForValue: (values) => {
11
- return of(values.map((x) => ({ ...x, label: x.value })));
12
- }
13
- });
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jaGlwLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3NlYXJjaGFibGUvdGV4dC5jaGlwLmZpZWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFPekQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUEyQjtJQUN2RCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFFckcsT0FBTyxtQkFBbUIsQ0FBQztRQUN6QixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLHVCQUF1QjtRQUM3QyxHQUFHLE1BQU07UUFDVCxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGtCQUFrQjtRQUNsQixlQUFlLEVBQUUsQ0FBQyxNQUEyQyxFQUFFLEVBQUU7WUFDL0QsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdHlwZSBMYWJlbGVkRmllbGRDb25maWcgfSBmcm9tICcuLi8uLi9maWVsZCc7XG5pbXBvcnQgeyB0eXBlIFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWUgfSBmcm9tICcuL3NlYXJjaGFibGUnO1xuaW1wb3J0IHsgc2VhcmNoYWJsZUNoaXBGaWVsZCB9IGZyb20gJy4vc2VhcmNoYWJsZS5maWVsZCc7XG5pbXBvcnQgeyB0eXBlIFN0cmluZ1ZhbHVlRmllbGRzRmllbGRQcm9wcyB9IGZyb20gJy4vc2VhcmNoYWJsZS5maWVsZC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoaXBUZXh0RmllbGRDb25maWcgZXh0ZW5kcyBMYWJlbGVkRmllbGRDb25maWcsIFN0cmluZ1ZhbHVlRmllbGRzRmllbGRQcm9wcyB7XG4gIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpcFRleHRGaWVsZChjb25maWc6IENoaXBUZXh0RmllbGRDb25maWcpIHtcbiAgY29uc3QgY29udmVydFN0cmluZ1ZhbHVlID0gY29uZmlnLmNhc2VTZW5zaXRpdmUgPyAoeDogc3RyaW5nKSA9PiB4IDogKHg6IHN0cmluZykgPT4geD8udG9Mb3dlckNhc2UoKTtcblxuICByZXR1cm4gc2VhcmNoYWJsZUNoaXBGaWVsZCh7XG4gICAgc2VhcmNoOiAoKSA9PiBvZihbXSksIC8vIG5vIHNlYXJjaCBieSBkZWZhdWx0XG4gICAgLi4uY29uZmlnLFxuICAgIGFsbG93U3RyaW5nVmFsdWVzOiB0cnVlLFxuICAgIGNvbnZlcnRTdHJpbmdWYWx1ZSxcbiAgICBkaXNwbGF5Rm9yVmFsdWU6ICh2YWx1ZXM6IFNlYXJjaGFibGVWYWx1ZUZpZWxkVmFsdWU8c3RyaW5nPltdKSA9PiB7XG4gICAgICByZXR1cm4gb2YodmFsdWVzLm1hcCgoeCkgPT4gKHsgLi4ueCwgbGFiZWw6IHgudmFsdWUgfSkpKTtcbiAgICB9XG4gIH0pO1xufVxuIl19
@@ -1,39 +0,0 @@
1
- import { asObservable } from '@dereekb/rxjs';
2
- import { convertMaybeToArray, firstValue } from '@dereekb/util';
3
- import { map } from 'rxjs';
4
- import { formlyField, propsAndConfigForFieldConfig } from '../field';
5
- export function valueSelectionField(config) {
6
- const { key, native = false, addClearOption = false, selectAllOption: inputSelectAllOption, options: inputOptions, materialFormField } = config;
7
- let selectAllOptionConfig;
8
- if (inputSelectAllOption) {
9
- selectAllOptionConfig = {
10
- selectAllOption: typeof inputSelectAllOption === 'boolean' ? 'Select All' : inputSelectAllOption
11
- };
12
- }
13
- const options = addClearOption ? asObservable(inputOptions).pipe(map(addValueSelectionOptionFunction(typeof addClearOption === 'string' ? addClearOption : undefined))) : inputOptions;
14
- let parsers = undefined;
15
- parsers = config.multiple !== true ? [firstValue] : [convertMaybeToArray];
16
- return formlyField({
17
- key,
18
- type: native ? 'native-select' : 'select',
19
- ...propsAndConfigForFieldConfig(config, {
20
- ...materialFormField,
21
- options,
22
- multiple: config.multiple,
23
- ...selectAllOptionConfig
24
- }),
25
- parsers
26
- });
27
- }
28
- export function addValueSelectionOptionFunction(label) {
29
- return (options) => {
30
- const hasClear = options.findIndex((x) => x.clear) !== -1;
31
- if (hasClear) {
32
- return options;
33
- }
34
- else {
35
- return [{ label, clear: true }, ...options];
36
- }
37
- };
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3NlbGVjdGlvbi5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUUvRixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBK0IsV0FBVyxFQUFpRiw0QkFBNEIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQXNDakwsTUFBTSxVQUFVLG1CQUFtQixDQUFJLE1BQW9DO0lBQ3pFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxjQUFjLEdBQUcsS0FBSyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ2hKLElBQUkscUJBQXlELENBQUM7SUFFOUQsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pCLHFCQUFxQixHQUFHO1lBQ3RCLGVBQWUsRUFBRSxPQUFPLG9CQUFvQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBRSxvQkFBK0I7U0FDN0csQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLE9BQU8sY0FBYyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUN2TCxJQUFJLE9BQU8sR0FBb0MsU0FBUyxDQUFDO0lBRXpELE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTFFLE9BQU8sV0FBVyxDQUFDO1FBQ2pCLEdBQUc7UUFDSCxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVE7UUFDekMsR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUU7WUFDdEMsR0FBRyxpQkFBaUI7WUFDcEIsT0FBTztZQUNQLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixHQUFHLHFCQUFxQjtTQUN6QixDQUFDO1FBQ0YsT0FBTztLQUNSLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCLENBQUksS0FBMEI7SUFDM0UsT0FBTyxDQUFDLE9BQWtDLEVBQUUsRUFBRTtRQUM1QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBRSxDQUErQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXpGLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzT2JzZXJ2YWJsZSwgdHlwZSBPYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgY29udmVydE1heWJlVG9BcnJheSwgZmlyc3RWYWx1ZSwgdHlwZSBMYWJlbGVkVmFsdWUsIHR5cGUgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHR5cGUgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdHlwZSBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBmb3JtbHlGaWVsZCwgdHlwZSBGb3JtbHlWYWx1ZVBhcnNlciwgdHlwZSBMYWJlbGVkRmllbGRDb25maWcsIHR5cGUgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcgfSBmcm9tICcuLi9maWVsZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVTZWxlY3Rpb25PcHRpb25XaXRoVmFsdWU8VD4gZXh0ZW5kcyBMYWJlbGVkVmFsdWU8VD4ge1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVTZWxlY3Rpb25PcHRpb25DbGVhciB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBjbGVhcjogdHJ1ZTtcbn1cblxuZXhwb3J0IHR5cGUgVmFsdWVTZWxlY3Rpb25PcHRpb248VD4gPSBWYWx1ZVNlbGVjdGlvbk9wdGlvbldpdGhWYWx1ZTxUPiB8IFZhbHVlU2VsZWN0aW9uT3B0aW9uQ2xlYXI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVTZWxlY3Rpb25GaWVsZENvbmZpZzxUPiBleHRlbmRzIExhYmVsZWRGaWVsZENvbmZpZywgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgTWF0ZXJpYWxGb3JtRmllbGRDb25maWcge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gdXNlIHRoZSBuYXRpdmUgc2VsZWN0LlxuICAgKlxuICAgKiBCZSBzdXJlIHRvIGltcG9ydCBGb3JtbHlNYXROYXRpdmVTZWxlY3RNb2R1bGUuXG4gICAqL1xuICByZWFkb25seSBuYXRpdmU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gYWRkIGEgY2xlYXIgb3B0aW9uIHRvIHRoZSBpbnB1dCB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBhZGRDbGVhck9wdGlvbj86IHN0cmluZyB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBWYWx1ZXMgdG8gc2VsZWN0IGZyb20uXG4gICAqL1xuICByZWFkb25seSBvcHRpb25zOiBPYnNlcnZhYmxlT3JWYWx1ZTxWYWx1ZVNlbGVjdGlvbk9wdGlvbjxUPltdPjtcbiAgLyoqXG4gICAqIEFsbG93IHNlbGVjdGluZyBtdWx0aXBsZSB2YWx1ZXMgYW5kIHJldHVybiBhbiBhcnJheS5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpcGxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBzZWxlY3QgYWxsIG9wdGlvbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VsZWN0QWxsT3B0aW9uPzogdHJ1ZSB8IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbHVlU2VsZWN0aW9uRmllbGQ8VD4oY29uZmlnOiBWYWx1ZVNlbGVjdGlvbkZpZWxkQ29uZmlnPFQ+KTogRm9ybWx5RmllbGRDb25maWcge1xuICBjb25zdCB7IGtleSwgbmF0aXZlID0gZmFsc2UsIGFkZENsZWFyT3B0aW9uID0gZmFsc2UsIHNlbGVjdEFsbE9wdGlvbjogaW5wdXRTZWxlY3RBbGxPcHRpb24sIG9wdGlvbnM6IGlucHV0T3B0aW9ucywgbWF0ZXJpYWxGb3JtRmllbGQgfSA9IGNvbmZpZztcbiAgbGV0IHNlbGVjdEFsbE9wdGlvbkNvbmZpZzogTWF5YmU8eyBzZWxlY3RBbGxPcHRpb246IHN0cmluZyB9PjtcblxuICBpZiAoaW5wdXRTZWxlY3RBbGxPcHRpb24pIHtcbiAgICBzZWxlY3RBbGxPcHRpb25Db25maWcgPSB7XG4gICAgICBzZWxlY3RBbGxPcHRpb246IHR5cGVvZiBpbnB1dFNlbGVjdEFsbE9wdGlvbiA9PT0gJ2Jvb2xlYW4nID8gJ1NlbGVjdCBBbGwnIDogKGlucHV0U2VsZWN0QWxsT3B0aW9uIGFzIHN0cmluZylcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IGFkZENsZWFyT3B0aW9uID8gYXNPYnNlcnZhYmxlKGlucHV0T3B0aW9ucykucGlwZShtYXAoYWRkVmFsdWVTZWxlY3Rpb25PcHRpb25GdW5jdGlvbih0eXBlb2YgYWRkQ2xlYXJPcHRpb24gPT09ICdzdHJpbmcnID8gYWRkQ2xlYXJPcHRpb24gOiB1bmRlZmluZWQpKSkgOiBpbnB1dE9wdGlvbnM7XG4gIGxldCBwYXJzZXJzOiBGb3JtbHlWYWx1ZVBhcnNlcltdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIHBhcnNlcnMgPSBjb25maWcubXVsdGlwbGUgIT09IHRydWUgPyBbZmlyc3RWYWx1ZV0gOiBbY29udmVydE1heWJlVG9BcnJheV07XG5cbiAgcmV0dXJuIGZvcm1seUZpZWxkKHtcbiAgICBrZXksXG4gICAgdHlwZTogbmF0aXZlID8gJ25hdGl2ZS1zZWxlY3QnIDogJ3NlbGVjdCcsXG4gICAgLi4ucHJvcHNBbmRDb25maWdGb3JGaWVsZENvbmZpZyhjb25maWcsIHtcbiAgICAgIC4uLm1hdGVyaWFsRm9ybUZpZWxkLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIG11bHRpcGxlOiBjb25maWcubXVsdGlwbGUsXG4gICAgICAuLi5zZWxlY3RBbGxPcHRpb25Db25maWdcbiAgICB9KSxcbiAgICBwYXJzZXJzXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkVmFsdWVTZWxlY3Rpb25PcHRpb25GdW5jdGlvbjxUPihsYWJlbD86IHN0cmluZyB8IHVuZGVmaW5lZCk6IChvcHRpb25zOiBWYWx1ZVNlbGVjdGlvbk9wdGlvbjxUPltdKSA9PiBWYWx1ZVNlbGVjdGlvbk9wdGlvbjxUPltdIHtcbiAgcmV0dXJuIChvcHRpb25zOiBWYWx1ZVNlbGVjdGlvbk9wdGlvbjxUPltdKSA9PiB7XG4gICAgY29uc3QgaGFzQ2xlYXIgPSBvcHRpb25zLmZpbmRJbmRleCgoeCkgPT4gKHggYXMgVmFsdWVTZWxlY3Rpb25PcHRpb25DbGVhcikuY2xlYXIpICE9PSAtMTtcblxuICAgIGlmIChoYXNDbGVhcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBbeyBsYWJlbCwgY2xlYXI6IHRydWUgfSwgLi4ub3B0aW9uc107XG4gICAgfVxuICB9O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3NlbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBQcmltYXRpdmVLZXksIHR5cGUgTWF5YmUsIHR5cGUgTWFwRnVuY3Rpb24sIHR5cGUgTGFiZWxSZWYgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25WYWx1ZTxULCBNID0gdW5rbm93bj4ge1xuICAvKipcbiAgICogVmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmllbGQuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogVDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIG1ldGFkYXRhIG9uIHRoZSBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGE/OiBNYXliZTxNPjtcbn1cblxuLyoqXG4gKiBEaXNwbGF5ZWQgdmFsdWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uRGlzcGxheVZhbHVlPFQsIE0gPSB1bmtub3duPiBleHRlbmRzIFNlbGVjdGlvblZhbHVlPFQsIE0+LCBMYWJlbFJlZiB7XG4gIHJlYWRvbmx5IHN1YmxhYmVsPzogc3RyaW5nO1xuICByZWFkb25seSBpY29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHZhbHVlIGlzIGtub3duLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNVbmtub3duPzogTWF5YmU8Ym9vbGVhbj47XG59XG5cbi8qKlxuICogVXNlZCB0byBoYXNoIHRoZSB2YWx1ZSBmcm9tIHRoZSBpbnB1dCBwaWNrYWJsZSB2YWx1ZS5cbiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0aW9uVmFsdWVIYXNoRnVuY3Rpb248VCwgSCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleT4gPSBNYXBGdW5jdGlvbjxULCBIPjtcbiJdfQ==
@@ -1,28 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { DbxFormFormlyPickableFieldModule } from './pickable/pickable.field.module';
3
- import { DbxFormFormlySearchableFieldModule } from './searchable/searchable.field.module';
4
- import { DbxFormFormlyDbxListFieldModule } from './list/list.field.module';
5
- import { DbxFormFormlySourceSelectModule } from './sourceselect/sourceselect.field.module';
6
- import * as i0 from "@angular/core";
7
- const importsAndExports = [DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule, DbxFormFormlySourceSelectModule];
8
- /**
9
- * @deprecated import the modules directly instead
10
- *
11
- * @see DbxFormFormlyDbxListFieldModule
12
- * @see DbxFormFormlyPickableFieldModule
13
- * @see DbxFormFormlySearchableFieldModule
14
- * @see DbxFormFormlySourceSelectModule
15
- */
16
- export class DbxFormFormlySelectionModule {
17
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySelectionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySelectionModule, imports: [DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule, DbxFormFormlySourceSelectModule], exports: [DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule, DbxFormFormlySourceSelectModule] });
19
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySelectionModule, imports: [importsAndExports, DbxFormFormlyDbxListFieldModule, DbxFormFormlyPickableFieldModule, DbxFormFormlySearchableFieldModule, DbxFormFormlySourceSelectModule] });
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySelectionModule, decorators: [{
22
- type: NgModule,
23
- args: [{
24
- imports: importsAndExports,
25
- exports: importsAndExports
26
- }]
27
- }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zZWxlY3Rpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBRTNGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0MsRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO0FBRW5LOzs7Ozs7O0dBT0c7QUFLSCxNQUFNLE9BQU8sNEJBQTRCO3dHQUE1Qiw0QkFBNEI7eUdBQTVCLDRCQUE0QixZQWRkLCtCQUErQixFQUFFLGdDQUFnQyxFQUFFLGtDQUFrQyxFQUFFLCtCQUErQixhQUF0SSwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0MsRUFBRSwrQkFBK0I7eUdBY3BKLDRCQUE0QixZQUg5QixpQkFBaUIsRUFYRCwrQkFBK0IsRUFBRSxnQ0FBZ0MsRUFBRSxrQ0FBa0MsRUFBRSwrQkFBK0I7OzRGQWNwSiw0QkFBNEI7a0JBSnhDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsT0FBTyxFQUFFLGlCQUFpQjtpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUZvcm1seVBpY2thYmxlRmllbGRNb2R1bGUgfSBmcm9tICcuL3BpY2thYmxlL3BpY2thYmxlLmZpZWxkLm1vZHVsZSc7XG5pbXBvcnQgeyBEYnhGb3JtRm9ybWx5U2VhcmNoYWJsZUZpZWxkTW9kdWxlIH0gZnJvbSAnLi9zZWFyY2hhYmxlL3NlYXJjaGFibGUuZmllbGQubW9kdWxlJztcbmltcG9ydCB7IERieEZvcm1Gb3JtbHlEYnhMaXN0RmllbGRNb2R1bGUgfSBmcm9tICcuL2xpc3QvbGlzdC5maWVsZC5tb2R1bGUnO1xuaW1wb3J0IHsgRGJ4Rm9ybUZvcm1seVNvdXJjZVNlbGVjdE1vZHVsZSB9IGZyb20gJy4vc291cmNlc2VsZWN0L3NvdXJjZXNlbGVjdC5maWVsZC5tb2R1bGUnO1xuXG5jb25zdCBpbXBvcnRzQW5kRXhwb3J0cyA9IFtEYnhGb3JtRm9ybWx5RGJ4TGlzdEZpZWxkTW9kdWxlLCBEYnhGb3JtRm9ybWx5UGlja2FibGVGaWVsZE1vZHVsZSwgRGJ4Rm9ybUZvcm1seVNlYXJjaGFibGVGaWVsZE1vZHVsZSwgRGJ4Rm9ybUZvcm1seVNvdXJjZVNlbGVjdE1vZHVsZV07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgaW1wb3J0IHRoZSBtb2R1bGVzIGRpcmVjdGx5IGluc3RlYWRcbiAqXG4gKiBAc2VlIERieEZvcm1Gb3JtbHlEYnhMaXN0RmllbGRNb2R1bGVcbiAqIEBzZWUgRGJ4Rm9ybUZvcm1seVBpY2thYmxlRmllbGRNb2R1bGVcbiAqIEBzZWUgRGJ4Rm9ybUZvcm1seVNlYXJjaGFibGVGaWVsZE1vZHVsZVxuICogQHNlZSBEYnhGb3JtRm9ybWx5U291cmNlU2VsZWN0TW9kdWxlXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IGltcG9ydHNBbmRFeHBvcnRzLFxuICBleHBvcnRzOiBpbXBvcnRzQW5kRXhwb3J0c1xufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtRm9ybWx5U2VsZWN0aW9uTW9kdWxlIHt9XG4iXX0=
@@ -1,5 +0,0 @@
1
- export * from './sourceselect.field.component';
2
- export * from './sourceselect.field';
3
- export * from './sourceselect.field.module';
4
- export * from './sourceselect';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9zcmMvbGliL2Zvcm1seS9maWVsZC9zZWxlY3Rpb24vc291cmNlc2VsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NvdXJjZXNlbGVjdC5maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3VyY2VzZWxlY3QuZmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9zb3VyY2VzZWxlY3QuZmllbGQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc291cmNlc2VsZWN0JztcbiJdfQ==
@@ -1,325 +0,0 @@
1
- import { filterMaybe, isLoadingStateWithDefinedValue, isLoadingStateLoading, startWithBeginLoading, SubscriptionObject, successResult, beginLoading, mapLoadingStateValueWithOperator, loadingStateContext, valueFromFinishedLoadingState } from '@dereekb/rxjs';
2
- import { ChangeDetectionStrategy, Component, ElementRef, viewChild } from '@angular/core';
3
- import { distinctUntilChanged, map, switchMap, shareReplay, startWith, mergeMap, scan, BehaviorSubject, tap, first, combineLatest, of } from 'rxjs';
4
- import { addToSetCopy, asArray, convertMaybeToArray, filterMaybeArrayValues, lastValue, makeValuesGroupMap, mergeArrays, separateValues, setContainsAllValues, setsAreEquivalent, sortByStringFunction } from '@dereekb/util';
5
- import { FieldType } from '@ngx-formly/material/form-field';
6
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
7
- import { toSignal } from '@angular/core/rxjs-interop';
8
- import { MatOptgroup, MatOption, MatSelect } from '@angular/material/select';
9
- import { DbxActionModule, DbxButtonComponent, DbxButtonSpacerDirective, DbxLoadingComponent } from '@dereekb/dbx-web';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/forms";
12
- import * as i2 from "@dereekb/dbx-core";
13
- /**
14
- * Component that displays a select view (multi or not)
15
- */
16
- export class DbxFormSourceSelectFieldComponent extends FieldType {
17
- _cacheMetaSub = new SubscriptionObject();
18
- _clearDisplayHashMapSub = new SubscriptionObject();
19
- _valueMetaHashMap = new BehaviorSubject(new Map());
20
- _displayHashMap = new BehaviorSubject(new Map());
21
- _formControlObs = new BehaviorSubject(undefined);
22
- _fromOpenSource = new BehaviorSubject({ values: [], valuesSet: new Set() });
23
- _loadSources = new BehaviorSubject(undefined);
24
- buttonElement = viewChild('button', { read: (ElementRef) });
25
- formControl$ = this._formControlObs.pipe(filterMaybe());
26
- currentFormControlValue$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), shareReplay(1));
27
- values$ = this.currentFormControlValue$.pipe(map(convertMaybeToArray), shareReplay(1));
28
- allValuesEverSelected$ = this.values$.pipe(scan((acc, values) => {
29
- let result = acc;
30
- if (!setContainsAllValues(acc, values)) {
31
- result = addToSetCopy(acc, values);
32
- }
33
- return result;
34
- }, new Set()), distinctUntilChanged(), map((x) => Array.from(x)), shareReplay(1));
35
- sourceSelectValuesFromValuesState$ = this.allValuesEverSelected$.pipe(distinctUntilChanged(), switchMap((values) => this.loadSourceSelectValueForValues(values)), shareReplay(1));
36
- loadSources$ = this._loadSources.pipe(filterMaybe(), switchMap((loadSource) => {
37
- const { valueReader } = this;
38
- return loadSource.pipe(switchMap((sources) => {
39
- const sourceObs = sources.map((x) => x.meta.pipe(map((metaState) => ({ ...metaState, label: x.label }))));
40
- if (sourceObs.length === 0) {
41
- return of(successResult([]));
42
- }
43
- else {
44
- return combineLatest(sourceObs).pipe(map((x) => {
45
- const statesWithValues = x.filter((y) => isLoadingStateWithDefinedValue(y));
46
- const loading = x.findIndex(isLoadingStateLoading) !== -1;
47
- const value = statesWithValues.map((y) => {
48
- const group = {
49
- label: y.label,
50
- values: y.value.map((meta) => ({ meta, value: valueReader(meta) }))
51
- };
52
- return group;
53
- });
54
- return {
55
- loading,
56
- value
57
- };
58
- }));
59
- }
60
- }));
61
- }));
62
- fromOpenSource$ = this._fromOpenSource.pipe(distinctUntilChanged((a, b) => setsAreEquivalent(a.valuesSet, b.valuesSet)), map((x) => {
63
- const group = {
64
- label: '',
65
- values: x.values
66
- };
67
- return group;
68
- }), shareReplay(1));
69
- valueGroupsFromSourcesState$ = combineLatest([this.fromOpenSource$, this.loadSources$]).pipe(map(([fromOpenSourceGroup, loadSources]) => {
70
- const loadSourcesValue = loadSources.value ?? [];
71
- const value = [fromOpenSourceGroup, ...loadSourcesValue];
72
- const result = {
73
- loading: loadSources.loading,
74
- value
75
- };
76
- return result;
77
- }), shareReplay(1));
78
- allValueGroupsState$ = this.sourceSelectValuesFromValuesState$.pipe(switchMap((sourceSelectValuesFromValues) => {
79
- if (isLoadingStateWithDefinedValue(sourceSelectValuesFromValues)) {
80
- const valuesFromValuesGroup = {
81
- label: '',
82
- values: sourceSelectValuesFromValues.value
83
- };
84
- return this.valueGroupsFromSourcesState$.pipe(map((sourcesState) => {
85
- const allGroups = [valuesFromValuesGroup, ...sourcesState.value];
86
- const result = {
87
- loading: sourceSelectValuesFromValues.loading || sourcesState.loading,
88
- value: allGroups
89
- };
90
- return result;
91
- }));
92
- }
93
- else {
94
- return of(beginLoading({}));
95
- }
96
- }), shareReplay(1));
97
- allOptionGroupsState$ = this.allValueGroupsState$.pipe(mapLoadingStateValueWithOperator(switchMap((groups) => {
98
- const allGroupsReducedByLabel = makeValuesGroupMap(groups, (x) => x.label);
99
- const valuesEncountered = new Set();
100
- const allUniqueValues = [];
101
- const simplifiedValuesGroups = [];
102
- // sort to put the blank label first
103
- Array.from(allGroupsReducedByLabel.entries())
104
- .sort(sortByStringFunction((x) => x[0]))
105
- .forEach(([label, groups]) => {
106
- const values = [];
107
- groups.forEach((group) => {
108
- group.values.forEach((selectValue) => {
109
- if (!valuesEncountered.has(selectValue.value)) {
110
- values.push(selectValue);
111
- allUniqueValues.push(selectValue);
112
- valuesEncountered.add(selectValue.value);
113
- }
114
- });
115
- });
116
- if (values.length > 0) {
117
- simplifiedValuesGroups.push({
118
- label,
119
- values
120
- });
121
- }
122
- });
123
- const obs = this.getDisplayValuesForSelectValues(allUniqueValues).pipe(map((displayValues) => {
124
- const displayValuesMap = new Map(displayValues.map((x) => [x.value, x]));
125
- const displayGroups = simplifiedValuesGroups.map((valueGroup) => {
126
- const values = filterMaybeArrayValues(valueGroup.values.map((x) => displayValuesMap.get(x.value)));
127
- return {
128
- label: valueGroup.label,
129
- values
130
- };
131
- });
132
- return displayGroups;
133
- }));
134
- return obs;
135
- })), shareReplay(1));
136
- allOptionGroups$ = this.allOptionGroupsState$.pipe(valueFromFinishedLoadingState(), map((x) => x ?? []), shareReplay(1));
137
- options$ = this.allOptionGroups$.pipe(map((x) => {
138
- const { included: groupedValues, excluded: nonGroupedGroup } = separateValues(x, (y) => Boolean(y.label));
139
- const result = {
140
- nonGroupedValues: nonGroupedGroup[0]?.values ?? [],
141
- groupedValues
142
- };
143
- return result;
144
- }), shareReplay(1));
145
- nonGroupedValues$ = this.options$.pipe(map((x) => x.nonGroupedValues));
146
- groupedOptions$ = this.options$.pipe(map((x) => x.groupedValues));
147
- nonGroupedValuesSignal = toSignal(this.nonGroupedValues$);
148
- groupedOptionsSignal = toSignal(this.groupedOptions$);
149
- get sourceSelectField() {
150
- return this.props;
151
- }
152
- get openSource() {
153
- return this.props.openSource;
154
- }
155
- get showOpenSourceButton() {
156
- return Boolean(this.openSource);
157
- }
158
- get loadSources() {
159
- return this.props.loadSources;
160
- }
161
- get valueReader() {
162
- return this.props.valueReader;
163
- }
164
- get metaLoader() {
165
- return this.props.metaLoader;
166
- }
167
- get displayForValue() {
168
- return this.props.displayForValue;
169
- }
170
- get selectButtonIcon() {
171
- return this.props.selectButtonIcon ?? 'add';
172
- }
173
- get multiple() {
174
- return this.props.multiple || false;
175
- }
176
- get refreshDisplayValues$() {
177
- return this.props.refreshDisplayValues$;
178
- }
179
- loadSourceSelectValueForValues(values) {
180
- return this.getSourceSelectValueForValues(values).pipe(map((sourceSelectValues) => successResult(sourceSelectValues)), startWithBeginLoading(), shareReplay(1));
181
- }
182
- getSourceSelectValueForValues(values) {
183
- const { valueReader } = this;
184
- return this._valueMetaHashMap.pipe(mergeMap((metaMap) => {
185
- const mappingResult = values.map((hash, i) => [i, hash, metaMap.get(hash)]);
186
- const {
187
- //
188
- included: hasMeta, excluded: needsMeta } = separateValues(mappingResult, (x) => Boolean(x[2]));
189
- let obs;
190
- if (needsMeta.length > 0) {
191
- // Go get the meta value.
192
- const metaValuesObs = this.metaLoader(needsMeta.map((x) => x[1]));
193
- obs = metaValuesObs.pipe(first(), map((metaResults) => {
194
- const metaResultsMapping = metaResults.map((meta) => ({ meta, value: valueReader(meta) }));
195
- const valueIndexHashMap = new Map(metaResultsMapping.map((x) => [x.value, x]));
196
- // Update metaMap. No need to push an update notification.
197
- metaResultsMapping.forEach((x) => metaMap.set(x.value, x));
198
- // Zip values back together.
199
- const newDisplayValues = mappingResult.map((x) => x[2] ?? valueIndexHashMap.get(x[1]));
200
- // Return display values.
201
- return newDisplayValues;
202
- }));
203
- }
204
- else {
205
- // If all display values are hashed return them
206
- obs = of(hasMeta.map((x) => x[2]));
207
- }
208
- return obs;
209
- }));
210
- }
211
- loadDisplayValuesForSelectValues(values) {
212
- return this.getDisplayValuesForSelectValues(values).pipe(map((displayValues) => successResult(displayValues)), startWithBeginLoading(), shareReplay(1));
213
- }
214
- getDisplayValuesForSelectValues(values) {
215
- return this._displayHashMap.pipe(mergeMap((metaMap) => {
216
- const mappingResult = values.map((x) => [x, x.value]).map(([x, hash], i) => [i, hash, x, metaMap.get(hash)]);
217
- const hasDisplay = mappingResult.filter((x) => Boolean(x[3]));
218
- const needsDisplay = mappingResult.filter((x) => !x[3]);
219
- let obs;
220
- if (needsDisplay.length > 0) {
221
- // Go get the display value.
222
- const displayValuesObs = this.displayForValue(needsDisplay.map((x) => x[2]));
223
- obs = displayValuesObs.pipe(first(), map((displayResults) => {
224
- const displayResultsMapping = displayResults.map((x) => [x, x.value]);
225
- const valueIndexHashMap = new Map(displayResultsMapping.map(([x, hash]) => [hash, x]));
226
- // Update metaMap. No need to push an update notification.
227
- displayResultsMapping.forEach(([x, hash]) => metaMap.set(hash, x));
228
- // Zip values back together.
229
- const newDisplayValues = mappingResult.map((x) => x[3] ?? valueIndexHashMap.get(x[1]));
230
- // Return display values.
231
- return newDisplayValues;
232
- }));
233
- }
234
- else {
235
- // If all display values are hashed return that.
236
- obs = of(hasDisplay.map((x) => x[3]));
237
- }
238
- return obs;
239
- }));
240
- }
241
- context = loadingStateContext({ obs: this.allOptionGroupsState$ });
242
- ngOnInit() {
243
- const { loadSources } = this;
244
- this._loadSources.next(loadSources?.() || of([]));
245
- if (this.refreshDisplayValues$ != null) {
246
- this._clearDisplayHashMapSub.subscription = this.refreshDisplayValues$.subscribe(() => this._displayHashMap.next(new Map()));
247
- }
248
- this._formControlObs.next(this.formControl);
249
- // copy all values from the sources into the values hash map to prevent reloading
250
- this._cacheMetaSub.subscription = this.valueGroupsFromSourcesState$.subscribe((x) => {
251
- const hashMap = this._valueMetaHashMap.value;
252
- x.value.forEach((x) => x.values.forEach((y) => hashMap.set(y.value, y)));
253
- });
254
- }
255
- ngOnDestroy() {
256
- super.ngOnDestroy();
257
- this._cacheMetaSub.destroy();
258
- this._clearDisplayHashMapSub.destroy();
259
- this._valueMetaHashMap.complete();
260
- this._displayHashMap.complete();
261
- this._formControlObs.complete();
262
- this._fromOpenSource.complete();
263
- this._loadSources.complete();
264
- this.context.destroy();
265
- }
266
- handleSelectOptions = (_, context) => {
267
- const { openSource } = this;
268
- const origin = this.buttonElement();
269
- if (openSource && origin) {
270
- const sourceObs = openSource({ origin });
271
- context.startWorkingWithObservable(sourceObs.pipe(first(), tap((result) => {
272
- const valuesToAdd = mergeArrays([result.select, result.options]);
273
- if (valuesToAdd.length) {
274
- this.addToOpenSourceMap(valuesToAdd);
275
- }
276
- if (result.set) {
277
- this.setCurrentValue(result.set.map((x) => this.valueReader(x)));
278
- }
279
- else if (result.select) {
280
- this.addToCurrentValue(result.select.map((x) => this.valueReader(x)));
281
- }
282
- })));
283
- }
284
- else {
285
- context.reject();
286
- }
287
- };
288
- addToOpenSourceMap(input) {
289
- const { valueReader } = this;
290
- const { values: meta, valuesSet: initialValues } = this._fromOpenSource.value;
291
- const newMetaFromInput = [];
292
- const valuesSet = new Set(initialValues);
293
- input.forEach((x) => {
294
- const value = valueReader(x);
295
- if (!valuesSet.has(value)) {
296
- newMetaFromInput.push({ meta: x, value });
297
- valuesSet.add(value);
298
- }
299
- });
300
- if (newMetaFromInput.length > 0) {
301
- this._fromOpenSource.next({
302
- values: [...meta, ...newMetaFromInput],
303
- valuesSet: valuesSet
304
- });
305
- }
306
- }
307
- addToCurrentValue(values) {
308
- const currentValue = asArray(this.formControl.value);
309
- const newValueArray = [...currentValue, ...values];
310
- this.setCurrentValue(newValueArray);
311
- }
312
- setCurrentValue(newValueArray) {
313
- const value = this.multiple ? newValueArray : lastValue(newValueArray); // pick last value, as the last value added is the newest value.
314
- this.formControl.setValue(value);
315
- this.formControl.markAsDirty();
316
- this.formControl.markAsTouched();
317
- }
318
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormSourceSelectFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
319
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DbxFormSourceSelectFieldComponent, isStandalone: true, selector: "dbx-form-sourceselectfield", viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-source-select-field\">\n <div class=\"dbx-source-select-field-content\">\n <mat-select class=\"dbx-source-select-field-select\" [id]=\"id\" [formControl]=\"formControl\" [multiple]=\"props.multiple\">\n @for (value of nonGroupedValuesSignal(); track value.value) {\n <mat-option [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n }\n @for (optionGroup of groupedOptionsSignal(); track optionGroup.label) {\n <mat-optgroup [label]=\"optionGroup.label\">\n @for (value of optionGroup.values; track value.value) {\n <mat-option [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n }\n </mat-optgroup>\n }\n </mat-select>\n @if (showOpenSourceButton) {\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-action dbxActionValue [dbxActionHandler]=\"handleSelectOptions\" class=\"dbx-source-select-field-button\">\n <dbx-button #button dbxActionButton [fab]=\"true\" [iconOnly]=\"true\" [icon]=\"selectButtonIcon\"></dbx-button>\n </dbx-action>\n }\n </div>\n <dbx-loading class=\"dbx-source-select-field-loading\" [linear]=\"true\" [context]=\"context\"></dbx-loading>\n</div>\n", dependencies: [{ kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customButtonColor", "customTextColor", "customSpinnerColor", "basic", "raised", "stroked", "flat", "iconOnly", "fab", "mode"] }, { kind: "component", type: MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i2.DbxActionDirective, selector: "dbx-action,[dbxAction],dbx-action-context,[dbxActionContext]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i2.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i2.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i2.DbxActionButtonDirective, selector: "[dbxActionButton]" }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "color", "diameter", "linear", "loading", "error", "context"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
320
- }
321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormSourceSelectFieldComponent, decorators: [{
322
- type: Component,
323
- args: [{ selector: 'dbx-form-sourceselectfield', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatSelect, MatOption, FormsModule, ReactiveFormsModule, DbxButtonComponent, MatOptgroup, DbxButtonSpacerDirective, DbxActionModule, DbxLoadingComponent], standalone: true, template: "<div class=\"dbx-source-select-field\">\n <div class=\"dbx-source-select-field-content\">\n <mat-select class=\"dbx-source-select-field-select\" [id]=\"id\" [formControl]=\"formControl\" [multiple]=\"props.multiple\">\n @for (value of nonGroupedValuesSignal(); track value.value) {\n <mat-option [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n }\n @for (optionGroup of groupedOptionsSignal(); track optionGroup.label) {\n <mat-optgroup [label]=\"optionGroup.label\">\n @for (value of optionGroup.values; track value.value) {\n <mat-option [value]=\"value.value\">\n {{ value.label }}\n </mat-option>\n }\n </mat-optgroup>\n }\n </mat-select>\n @if (showOpenSourceButton) {\n <dbx-button-spacer></dbx-button-spacer>\n <dbx-action dbxActionValue [dbxActionHandler]=\"handleSelectOptions\" class=\"dbx-source-select-field-button\">\n <dbx-button #button dbxActionButton [fab]=\"true\" [iconOnly]=\"true\" [icon]=\"selectButtonIcon\"></dbx-button>\n </dbx-action>\n }\n </div>\n <dbx-loading class=\"dbx-source-select-field-loading\" [linear]=\"true\" [context]=\"context\"></dbx-loading>\n</div>\n" }]
324
- }] });
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQWdCLDhCQUE4QixFQUFFLHFCQUFxQixFQUFnQyxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGdDQUFnQyxFQUFFLG1CQUFtQixFQUFvQiw2QkFBNkIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvVCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hLLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBUyxXQUFXLEVBQWdCLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuUCxPQUFPLEVBQUUsU0FB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QWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sZUFBZSxDQUFDLGFBQWtCO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsZ0VBQWdFO1FBQ3hJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDO3dHQXJjVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQywwS0FVMEMsVUFBVSxvRUN4RWxHLDB1Q0EyQkEsNENEZ0NZLFNBQVMsd2VBQUUsU0FBUyxvSkFBRSxXQUFXLHNJQUFFLG1CQUFtQixrTkFBRSxrQkFBa0IsdVBBQUUsV0FBVyxtSEFBRSx3QkFBd0IsK0VBQUUsZUFBZSxvaEJBQUUsbUJBQW1COzs0RkFHdEosaUNBQWlDO2tCQVA3QyxTQUFTOytCQUNFLDRCQUE0QixtQkFFckIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUMsY0FDdEosSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbHRlck1heWJlLCBMb2FkaW5nU3RhdGUsIGlzTG9hZGluZ1N0YXRlV2l0aERlZmluZWRWYWx1ZSwgaXNMb2FkaW5nU3RhdGVMb2FkaW5nLCBMb2FkaW5nU3RhdGVXaXRoRGVmaW5lZFZhbHVlLCBzdGFydFdpdGhCZWdpbkxvYWRpbmcsIFN1YnNjcmlwdGlvbk9iamVjdCwgc3VjY2Vzc1Jlc3VsdCwgYmVnaW5Mb2FkaW5nLCBtYXBMb2FkaW5nU3RhdGVWYWx1ZVdpdGhPcGVyYXRvciwgbG9hZGluZ1N0YXRlQ29udGV4dCwgV29ya1VzaW5nQ29udGV4dCwgdmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgbWVyZ2VNYXAsIHNjYW4sIEJlaGF2aW9yU3ViamVjdCwgdGFwLCBmaXJzdCwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFkZFRvU2V0Q29weSwgYXNBcnJheSwgY29udmVydE1heWJlVG9BcnJheSwgZmlsdGVyTWF5YmVBcnJheVZhbHVlcywgbGFzdFZhbHVlLCBtYWtlVmFsdWVzR3JvdXBNYXAsIE1heWJlLCBtZXJnZUFycmF5cywgUHJpbWF0aXZlS2V5LCBzZXBhcmF0ZVZhbHVlcywgc2V0Q29udGFpbnNBbGxWYWx1ZXMsIHNldHNBcmVFcXVpdmFsZW50LCBzb3J0QnlTdHJpbmdGdW5jdGlvbiB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IFNvdXJjZVNlbGVjdFZhbHVlTWV0YUxvYWRlciwgU291cmNlU2VsZWN0TWV0YVZhbHVlUmVhZGVyLCBTb3VyY2VTZWxlY3RPcGVuRnVuY3Rpb24sIFNvdXJjZVNlbGVjdExvYWRTb3VyY2VzRnVuY3Rpb24sIFNvdXJjZVNlbGVjdExvYWRTb3VyY2UsIFNvdXJjZVNlbGVjdExvYWRTb3VyY2VMb2FkaW5nU3RhdGUsIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZSwgU291cmNlU2VsZWN0VmFsdWUsIFNvdXJjZVNlbGVjdERpc3BsYXlGdW5jdGlvbiwgU291cmNlU2VsZWN0RGlzcGxheVZhbHVlR3JvdXAsIFNvdXJjZVNlbGVjdFZhbHVlR3JvdXAsIFNvdXJjZVNlbGVjdE9wdGlvbnMsIFNvdXJjZVNlbGVjdE9wZW5Tb3VyY2VSZXN1bHQgfSBmcm9tICcuL3NvdXJjZXNlbGVjdCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBNYXRPcHRncm91cCwgTWF0T3B0aW9uLCBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgRGJ4QWN0aW9uTW9kdWxlLCBEYnhCdXR0b25Db21wb25lbnQsIERieEJ1dHRvblNwYWNlckRpcmVjdGl2ZSwgRGJ4TG9hZGluZ0NvbXBvbmVudCB9IGZyb20gJ0BkZXJlZWtiL2RieC13ZWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IGV4dGVuZHMgRm9ybWx5RmllbGRQcm9wcyB7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBvcGVuIHRoZSBzb3VyY2UgYW5kIHJlcXVlc3QgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlblNvdXJjZT86IFNvdXJjZVNlbGVjdE9wZW5GdW5jdGlvbjxNPjtcbiAgLyoqXG4gICAqIExvYWRzIHRoZSBzb3VyY2VzIHRvIGRpc3BsYXkgZW50cmllcyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZFNvdXJjZXM/OiBTb3VyY2VTZWxlY3RMb2FkU291cmNlc0Z1bmN0aW9uPE0+O1xuICAvKipcbiAgICogUmVhZHMgdGhlIHZhbHVlIGZyb20gYSBtZXRhIHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVSZWFkZXI6IFNvdXJjZVNlbGVjdE1ldGFWYWx1ZVJlYWRlcjxULCBNPjtcbiAgLyoqXG4gICAqIExvYWRzIG1ldGFkYXRhIGZvciB0aGUgaW5wdXQgdmFsdWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YUxvYWRlcjogU291cmNlU2VsZWN0VmFsdWVNZXRhTG9hZGVyPFQsIE0+O1xuICAvKipcbiAgICogVXNlZCBmb3IgYnVpbGRpbmcgYSBkaXNwbGF5IHZhbHVlIGdpdmVuIHRoZSBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlGb3JWYWx1ZTogU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQsIE0+O1xuICAvKipcbiAgICogU2VsZWN0IGJ1dHRvbiBpY29uXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RCdXR0b25JY29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhlIHNlbGVjdGlvbiBpcyBhcyBhbiBhcnJheS5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpcGxlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIChPcHRpb25hbCkgb2JzZXJ2YWJsZSB0aGF0IHdpbGwgdHJpZ2dlciB0aGUgY2xlYXJpbmcgb2YgYWxsIGNhY2hlZCBkaXNwbGF5IHZhbHVlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZnJlc2hEaXNwbGF5VmFsdWVzJD86IE9ic2VydmFibGU8dW5rbm93bj47XG59XG5cbmludGVyZmFjZSBTZWxlY3RGaWVsZE9wZW5Tb3VyY2VNYXA8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgdmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdO1xuICByZWFkb25seSB2YWx1ZXNTZXQ6IFNldDxUPjtcbn1cblxuLyoqXG4gKiBDb21wb25lbnQgdGhhdCBkaXNwbGF5cyBhIHNlbGVjdCB2aWV3IChtdWx0aSBvciBub3QpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1mb3JtLXNvdXJjZXNlbGVjdGZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICdzb3VyY2VzZWxlY3QuZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW01hdFNlbGVjdCwgTWF0T3B0aW9uLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRGJ4QnV0dG9uQ29tcG9uZW50LCBNYXRPcHRncm91cCwgRGJ4QnV0dG9uU3BhY2VyRGlyZWN0aXZlLCBEYnhBY3Rpb25Nb2R1bGUsIERieExvYWRpbmdDb21wb25lbnRdLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1Tb3VyY2VTZWxlY3RGaWVsZENvbXBvbmVudDxUIGV4dGVuZHMgUHJpbWF0aXZlS2V5ID0gUHJpbWF0aXZlS2V5LCBNID0gdW5rbm93bj4gZXh0ZW5kcyBGaWVsZFR5cGU8RmllbGRUeXBlQ29uZmlnPFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCwgTT4+PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2FjaGVNZXRhU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jbGVhckRpc3BsYXlIYXNoTWFwU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZU1ldGFIYXNoTWFwID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXA8VCwgU291cmNlU2VsZWN0VmFsdWU8VCwgTT4+PihuZXcgTWFwKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwbGF5SGFzaE1hcCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPFQsIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPj4+KG5ldyBNYXAoKSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUNvbnRyb2xPYnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPEFic3RyYWN0Q29udHJvbDxUW10+Pj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnJvbU9wZW5Tb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlbGVjdEZpZWxkT3BlblNvdXJjZU1hcDxULCBNPj4oeyB2YWx1ZXM6IFtdLCB2YWx1ZXNTZXQ6IG5ldyBTZXQoKSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9hZFNvdXJjZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1heWJlPE9ic2VydmFibGU8U291cmNlU2VsZWN0TG9hZFNvdXJjZTxNPltdPj4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgYnV0dG9uRWxlbWVudCA9IHZpZXdDaGlsZDxzdHJpbmcsIEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PignYnV0dG9uJywgeyByZWFkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB9KTtcblxuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IGN1cnJlbnRGb3JtQ29udHJvbFZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsdWVzJDogT2JzZXJ2YWJsZTxUW10+ID0gdGhpcy5jdXJyZW50Rm9ybUNvbnRyb2xWYWx1ZSQucGlwZShtYXAoY29udmVydE1heWJlVG9BcnJheSksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBhbGxWYWx1ZXNFdmVyU2VsZWN0ZWQkOiBPYnNlcnZhYmxlPFRbXT4gPSB0aGlzLnZhbHVlcyQucGlwZShcbiAgICBzY2FuKChhY2MsIHZhbHVlcykgPT4ge1xuICAgICAgbGV0IHJlc3VsdDogU2V0PFQ+ID0gYWNjO1xuXG4gICAgICBpZiAoIXNldENvbnRhaW5zQWxsVmFsdWVzKGFjYywgdmFsdWVzKSkge1xuICAgICAgICByZXN1bHQgPSBhZGRUb1NldENvcHkoYWNjLCB2YWx1ZXMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIG5ldyBTZXQ8VD4oKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBtYXAoKHgpID0+IEFycmF5LmZyb20oeCkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgc291cmNlU2VsZWN0VmFsdWVzRnJvbVZhbHVlc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXT4+ID0gdGhpcy5hbGxWYWx1ZXNFdmVyU2VsZWN0ZWQkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzd2l0Y2hNYXAoKHZhbHVlczogVFtdKSA9PiB0aGlzLmxvYWRTb3VyY2VTZWxlY3RWYWx1ZUZvclZhbHVlcyh2YWx1ZXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IGxvYWRTb3VyY2VzJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPj4gPSB0aGlzLl9sb2FkU291cmNlcy5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgc3dpdGNoTWFwKChsb2FkU291cmNlKSA9PiB7XG4gICAgICBjb25zdCB7IHZhbHVlUmVhZGVyIH0gPSB0aGlzO1xuXG4gICAgICByZXR1cm4gbG9hZFNvdXJjZS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHNvdXJjZXM6IFNvdXJjZVNlbGVjdExvYWRTb3VyY2U8TT5bXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNvdXJjZU9iczogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RMb2FkU291cmNlTG9hZGluZ1N0YXRlPE0+PltdID0gc291cmNlcy5tYXAoKHgpID0+IHgubWV0YS5waXBlKG1hcCgobWV0YVN0YXRlKSA9PiAoeyAuLi5tZXRhU3RhdGUsIGxhYmVsOiB4LmxhYmVsIH0pKSkpO1xuXG4gICAgICAgICAgaWYgKHNvdXJjZU9icy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvZihzdWNjZXNzUmVzdWx0KFtdKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHNvdXJjZU9icykucGlwZShcbiAgICAgICAgICAgICAgbWFwKCh4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhdGVzV2l0aFZhbHVlcyA9IHguZmlsdGVyKCh5KSA9PiBpc0xvYWRpbmdTdGF0ZVdpdGhEZWZpbmVkVmFsdWUoeSkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvYWRpbmcgPSB4LmZpbmRJbmRleChpc0xvYWRpbmdTdGF0ZUxvYWRpbmcpICE9PSAtMTtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZTogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gc3RhdGVzV2l0aFZhbHVlcy5tYXAoKHkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+ID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogeS5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiAoeS52YWx1ZSBhcyBNW10pLm1hcCgobWV0YSkgPT4gKHsgbWV0YSwgdmFsdWU6IHZhbHVlUmVhZGVyKG1ldGEpIH0pKVxuICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGxvYWRpbmcsXG4gICAgICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICByZWFkb25seSBmcm9tT3BlblNvdXJjZSQ6IE9ic2VydmFibGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPj4gPSB0aGlzLl9mcm9tT3BlblNvdXJjZS5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PiBzZXRzQXJlRXF1aXZhbGVudChhLnZhbHVlc1NldCwgYi52YWx1ZXNTZXQpKSxcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+ID0ge1xuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIHZhbHVlczogeC52YWx1ZXNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBncm91cDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbHVlR3JvdXBzRnJvbVNvdXJjZXNTdGF0ZSQ6IE9ic2VydmFibGU8TG9hZGluZ1N0YXRlV2l0aERlZmluZWRWYWx1ZTxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZnJvbU9wZW5Tb3VyY2UkLCB0aGlzLmxvYWRTb3VyY2VzJF0pLnBpcGUoXG4gICAgbWFwKChbZnJvbU9wZW5Tb3VyY2VHcm91cCwgbG9hZFNvdXJjZXNdKSA9PiB7XG4gICAgICBjb25zdCBsb2FkU291cmNlc1ZhbHVlID0gbG9hZFNvdXJjZXMudmFsdWUgPz8gW107XG4gICAgICBjb25zdCB2YWx1ZTogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdID0gW2Zyb21PcGVuU291cmNlR3JvdXAsIC4uLmxvYWRTb3VyY2VzVmFsdWVdO1xuXG4gICAgICBjb25zdCByZXN1bHQ6IExvYWRpbmdTdGF0ZVdpdGhEZWZpbmVkVmFsdWU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPiA9IHtcbiAgICAgICAgbG9hZGluZzogbG9hZFNvdXJjZXMubG9hZGluZyxcbiAgICAgICAgdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBhbGxWYWx1ZUdyb3Vwc1N0YXRlJDogT2JzZXJ2YWJsZTxMb2FkaW5nU3RhdGU8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPj4gPSB0aGlzLnNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXNTdGF0ZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHNvdXJjZVNlbGVjdFZhbHVlc0Zyb21WYWx1ZXM6IExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPikgPT4ge1xuICAgICAgaWYgKGlzTG9hZGluZ1N0YXRlV2l0aERlZmluZWRWYWx1ZShzb3VyY2VTZWxlY3RWYWx1ZXNGcm9tVmFsdWVzKSkge1xuICAgICAgICBjb25zdCB2YWx1ZXNGcm9tVmFsdWVzR3JvdXA6IFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT4gPSB7XG4gICAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICAgIHZhbHVlczogc291cmNlU2VsZWN0VmFsdWVzRnJvbVZhbHVlcy52YWx1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlR3JvdXBzRnJvbVNvdXJjZXNTdGF0ZSQucGlwZShcbiAgICAgICAgICBtYXAoKHNvdXJjZXNTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWxsR3JvdXBzOiBTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10gPSBbdmFsdWVzRnJvbVZhbHVlc0dyb3VwLCAuLi5zb3VyY2VzU3RhdGUudmFsdWVdO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZUdyb3VwPFQsIE0+W10+ID0ge1xuICAgICAgICAgICAgICBsb2FkaW5nOiBzb3VyY2VTZWxlY3RWYWx1ZXNGcm9tVmFsdWVzLmxvYWRpbmcgfHwgc291cmNlc1N0YXRlLmxvYWRpbmcsXG4gICAgICAgICAgICAgIHZhbHVlOiBhbGxHcm91cHNcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvZihiZWdpbkxvYWRpbmc8U291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdPih7fSkpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYWxsT3B0aW9uR3JvdXBzU3RhdGUkOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWVHcm91cDxULCBNPltdPj4gPSB0aGlzLmFsbFZhbHVlR3JvdXBzU3RhdGUkLnBpcGUoXG4gICAgbWFwTG9hZGluZ1N0YXRlVmFsdWVXaXRoT3BlcmF0b3IoXG4gICAgICBzd2l0Y2hNYXAoKGdyb3VwczogU291cmNlU2VsZWN0VmFsdWVHcm91cDxULCBNPltdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFsbEdyb3Vwc1JlZHVjZWRCeUxhYmVsID0gbWFrZVZhbHVlc0dyb3VwTWFwKGdyb3VwcywgKHgpID0+IHgubGFiZWwpIGFzIE1hcDxzdHJpbmcsIFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXT47XG5cbiAgICAgICAgY29uc3QgdmFsdWVzRW5jb3VudGVyZWQgPSBuZXcgU2V0PFQ+KCk7XG4gICAgICAgIGNvbnN0IGFsbFVuaXF1ZVZhbHVlczogU291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHNpbXBsaWZpZWRWYWx1ZXNHcm91cHM6IFNvdXJjZVNlbGVjdFZhbHVlR3JvdXA8VCwgTT5bXSA9IFtdO1xuXG4gICAgICAgIC8vIHNvcnQgdG8gcHV0IHRoZSBibGFuayBsYWJlbCBmaXJzdFxuICAgICAgICBBcnJheS5mcm9tKGFsbEdyb3Vwc1JlZHVjZWRCeUxhYmVsLmVudHJpZXMoKSlcbiAgICAgICAgICAuc29ydChzb3J0QnlTdHJpbmdGdW5jdGlvbigoeCkgPT4geFswXSkpXG4gICAgICAgICAgLmZvckVhY2goKFtsYWJlbCwgZ3JvdXBzXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdID0gW107XG5cbiAgICAgICAgICAgIGdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICBncm91cC52YWx1ZXMuZm9yRWFjaCgoc2VsZWN0VmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlc0VuY291bnRlcmVkLmhhcyhzZWxlY3RWYWx1ZS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlcy5wdXNoKHNlbGVjdFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIGFsbFVuaXF1ZVZhbHVlcy5wdXNoKHNlbGVjdFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgIHZhbHVlc0VuY291bnRlcmVkLmFkZChzZWxlY3RWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgc2ltcGxpZmllZFZhbHVlc0dyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBsYWJlbCxcbiAgICAgICAgICAgICAgICB2YWx1ZXNcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb2JzID0gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKGFsbFVuaXF1ZVZhbHVlcykucGlwZShcbiAgICAgICAgICBtYXAoKGRpc3BsYXlWYWx1ZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlWYWx1ZXNNYXAgPSBuZXcgTWFwKGRpc3BsYXlWYWx1ZXMubWFwKCh4KSA9PiBbeC52YWx1ZSwgeF0pKTtcblxuICAgICAgICAgICAgY29uc3QgZGlzcGxheUdyb3VwczogU291cmNlU2VsZWN0RGlzcGxheVZhbHVlR3JvdXA8VCwgTT5bXSA9IHNpbXBsaWZpZWRWYWx1ZXNHcm91cHMubWFwKCh2YWx1ZUdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IGZpbHRlck1heWJlQXJyYXlWYWx1ZXModmFsdWVHcm91cC52YWx1ZXMubWFwKCh4KSA9PiBkaXNwbGF5VmFsdWVzTWFwLmdldCh4LnZhbHVlKSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IHZhbHVlR3JvdXAubGFiZWwsXG4gICAgICAgICAgICAgICAgdmFsdWVzXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlHcm91cHM7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gb2JzO1xuICAgICAgfSlcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgYWxsT3B0aW9uR3JvdXBzJDogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWVHcm91cDxULCBNPltdPiA9IHRoaXMuYWxsT3B0aW9uR3JvdXBzU3RhdGUkLnBpcGUoXG4gICAgdmFsdWVGcm9tRmluaXNoZWRMb2FkaW5nU3RhdGUoKSxcbiAgICBtYXAoKHgpID0+IHggPz8gW10pLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgb3B0aW9ucyQ6IE9ic2VydmFibGU8U291cmNlU2VsZWN0T3B0aW9uczxULCBNPj4gPSB0aGlzLmFsbE9wdGlvbkdyb3VwcyQucGlwZShcbiAgICBtYXAoKHgpID0+IHtcbiAgICAgIGNvbnN0IHsgaW5jbHVkZWQ6IGdyb3VwZWRWYWx1ZXMsIGV4Y2x1ZGVkOiBub25Hcm91cGVkR3JvdXAgfSA9IHNlcGFyYXRlVmFsdWVzKHgsICh5KSA9PiBCb29sZWFuKHkubGFiZWwpKTtcblxuICAgICAgY29uc3QgcmVzdWx0OiBTb3VyY2VTZWxlY3RPcHRpb25zPFQsIE0+ID0ge1xuICAgICAgICBub25Hcm91cGVkVmFsdWVzOiBub25Hcm91cGVkR3JvdXBbMF0/LnZhbHVlcyA/PyBbXSxcbiAgICAgICAgZ3JvdXBlZFZhbHVlc1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHJlYWRvbmx5IG5vbkdyb3VwZWRWYWx1ZXMkID0gdGhpcy5vcHRpb25zJC5waXBlKG1hcCgoeCkgPT4geC5ub25Hcm91cGVkVmFsdWVzKSk7XG4gIHJlYWRvbmx5IGdyb3VwZWRPcHRpb25zJCA9IHRoaXMub3B0aW9ucyQucGlwZShtYXAoKHgpID0+IHguZ3JvdXBlZFZhbHVlcykpO1xuXG4gIHJlYWRvbmx5IG5vbkdyb3VwZWRWYWx1ZXNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLm5vbkdyb3VwZWRWYWx1ZXMkKTtcbiAgcmVhZG9ubHkgZ3JvdXBlZE9wdGlvbnNTaWduYWwgPSB0b1NpZ25hbCh0aGlzLmdyb3VwZWRPcHRpb25zJCk7XG5cbiAgZ2V0IHNvdXJjZVNlbGVjdEZpZWxkKCk6IFNvdXJjZVNlbGVjdEZpZWxkUHJvcHM8VCwgTT4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG5cbiAgZ2V0IG9wZW5Tb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMub3BlblNvdXJjZTtcbiAgfVxuXG4gIGdldCBzaG93T3BlblNvdXJjZUJ1dHRvbigpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLm9wZW5Tb3VyY2UpO1xuICB9XG5cbiAgZ2V0IGxvYWRTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxvYWRTb3VyY2VzO1xuICB9XG5cbiAgZ2V0IHZhbHVlUmVhZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnZhbHVlUmVhZGVyO1xuICB9XG5cbiAgZ2V0IG1ldGFMb2FkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMubWV0YUxvYWRlcjtcbiAgfVxuXG4gIGdldCBkaXNwbGF5Rm9yVmFsdWUoKTogU291cmNlU2VsZWN0RGlzcGxheUZ1bmN0aW9uPFQsIE0+IHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5kaXNwbGF5Rm9yVmFsdWU7XG4gIH1cblxuICBnZXQgc2VsZWN0QnV0dG9uSWNvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zZWxlY3RCdXR0b25JY29uID8/ICdhZGQnO1xuICB9XG5cbiAgZ2V0IG11bHRpcGxlKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLm11bHRpcGxlIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IHJlZnJlc2hEaXNwbGF5VmFsdWVzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5yZWZyZXNoRGlzcGxheVZhbHVlcyQ7XG4gIH1cblxuICBsb2FkU291cmNlU2VsZWN0VmFsdWVGb3JWYWx1ZXModmFsdWVzOiBUW10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPj4ge1xuICAgIHJldHVybiB0aGlzLmdldFNvdXJjZVNlbGVjdFZhbHVlRm9yVmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoc291cmNlU2VsZWN0VmFsdWVzOiBTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdKSA9PiBzdWNjZXNzUmVzdWx0KHNvdXJjZVNlbGVjdFZhbHVlcykpLFxuICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXRTb3VyY2VTZWxlY3RWYWx1ZUZvclZhbHVlcyh2YWx1ZXM6IFRbXSk6IE9ic2VydmFibGU8U291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXT4ge1xuICAgIGNvbnN0IHsgdmFsdWVSZWFkZXIgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4gdGhpcy5fdmFsdWVNZXRhSGFzaE1hcC5waXBlKFxuICAgICAgbWVyZ2VNYXAoKG1ldGFNYXApID0+IHtcbiAgICAgICAgY29uc3QgbWFwcGluZ1Jlc3VsdCA9IHZhbHVlcy5tYXAoKGhhc2gsIGkpID0+IFtpLCBoYXNoLCBtZXRhTWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgVCwgU291cmNlU2VsZWN0VmFsdWU8VCwgTT5dKTtcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgLy9cbiAgICAgICAgICBpbmNsdWRlZDogaGFzTWV0YSxcbiAgICAgICAgICBleGNsdWRlZDogbmVlZHNNZXRhXG4gICAgICAgIH0gPSBzZXBhcmF0ZVZhbHVlcyhtYXBwaW5nUmVzdWx0LCAoeCkgPT4gQm9vbGVhbih4WzJdKSk7XG5cbiAgICAgICAgbGV0IG9iczogT2JzZXJ2YWJsZTxTb3VyY2VTZWxlY3RWYWx1ZTxULCBNPltdPjtcblxuICAgICAgICBpZiAobmVlZHNNZXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAvLyBHbyBnZXQgdGhlIG1ldGEgdmFsdWUuXG4gICAgICAgICAgY29uc3QgbWV0YVZhbHVlc09icyA9IHRoaXMubWV0YUxvYWRlcihuZWVkc01ldGEubWFwKCh4KSA9PiB4WzFdKSk7XG5cbiAgICAgICAgICBvYnMgPSBtZXRhVmFsdWVzT2JzLnBpcGUoXG4gICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgbWFwKChtZXRhUmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhUmVzdWx0c01hcHBpbmc6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBtZXRhUmVzdWx0cy5tYXAoKG1ldGEpID0+ICh7IG1ldGEsIHZhbHVlOiB2YWx1ZVJlYWRlcihtZXRhKSB9KSk7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXhIYXNoTWFwID0gbmV3IE1hcChtZXRhUmVzdWx0c01hcHBpbmcubWFwKCh4KSA9PiBbeC52YWx1ZSwgeF0pKTtcblxuICAgICAgICAgICAgICAvLyBVcGRhdGUgbWV0YU1hcC4gTm8gbmVlZCB0byBwdXNoIGFuIHVwZGF0ZSBub3RpZmljYXRpb24uXG4gICAgICAgICAgICAgIG1ldGFSZXN1bHRzTWFwcGluZy5mb3JFYWNoKCh4KSA9PiBtZXRhTWFwLnNldCh4LnZhbHVlLCB4KSk7XG5cbiAgICAgICAgICAgICAgLy8gWmlwIHZhbHVlcyBiYWNrIHRvZ2V0aGVyLlxuICAgICAgICAgICAgICBjb25zdCBuZXdEaXNwbGF5VmFsdWVzID0gbWFwcGluZ1Jlc3VsdC5tYXAoKHgpID0+IHhbMl0gPz8gdmFsdWVJbmRleEhhc2hNYXAuZ2V0KHhbMV0pKTtcblxuICAgICAgICAgICAgICAvLyBSZXR1cm4gZGlzcGxheSB2YWx1ZXMuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdEaXNwbGF5VmFsdWVzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIElmIGFsbCBkaXNwbGF5IHZhbHVlcyBhcmUgaGFzaGVkIHJldHVybiB0aGVtXG4gICAgICAgICAgb2JzID0gb2YoaGFzTWV0YS5tYXAoKHgpID0+IHhbMl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvYnM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBsb2FkRGlzcGxheVZhbHVlc0ZvclNlbGVjdFZhbHVlcyh2YWx1ZXM6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10pOiBPYnNlcnZhYmxlPExvYWRpbmdTdGF0ZTxTb3VyY2VTZWxlY3REaXNwbGF5VmFsdWU8VCwgTT5bXT4+IHtcbiAgICByZXR1cm4gdGhpcy5nZXREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKHZhbHVlcykucGlwZShcbiAgICAgIG1hcCgoZGlzcGxheVZhbHVlczogU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10pID0+IHN1Y2Nlc3NSZXN1bHQoZGlzcGxheVZhbHVlcykpLFxuICAgICAgc3RhcnRXaXRoQmVnaW5Mb2FkaW5nKCksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXREaXNwbGF5VmFsdWVzRm9yU2VsZWN0VmFsdWVzKHZhbHVlczogU291cmNlU2VsZWN0VmFsdWU8VCwgTT5bXSk6IE9ic2VydmFibGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheUhhc2hNYXAucGlwZShcbiAgICAgIG1lcmdlTWFwKChtZXRhTWFwKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hcHBpbmdSZXN1bHQgPSB2YWx1ZXMubWFwKCh4KSA9PiBbeCwgeC52YWx1ZV0gYXMgW1NvdXJjZVNlbGVjdFZhbHVlPFQsIE0+LCBUXSkubWFwKChbeCwgaGFzaF0sIGkpID0+IFtpLCBoYXNoLCB4LCBtZXRhTWFwLmdldChoYXNoKV0gYXMgW251bWJlciwgVCwgU291cmNlU2VsZWN0VmFsdWU8VCwgTT4sIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPl0pO1xuXG4gICAgICAgIGNvbnN0IGhhc0Rpc3BsYXkgPSBtYXBwaW5nUmVzdWx0LmZpbHRlcigoeCkgPT4gQm9vbGVhbih4WzNdKSk7XG4gICAgICAgIGNvbnN0IG5lZWRzRGlzcGxheSA9IG1hcHBpbmdSZXN1bHQuZmlsdGVyKCh4KSA9PiAheFszXSk7XG4gICAgICAgIGxldCBvYnM6IE9ic2VydmFibGU8U291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+W10+O1xuXG4gICAgICAgIGlmIChuZWVkc0Rpc3BsYXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEdvIGdldCB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWVzT2JzID0gdGhpcy5kaXNwbGF5Rm9yVmFsdWUobmVlZHNEaXNwbGF5Lm1hcCgoeCkgPT4geFsyXSkpO1xuXG4gICAgICAgICAgb2JzID0gZGlzcGxheVZhbHVlc09icy5waXBlKFxuICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgIG1hcCgoZGlzcGxheVJlc3VsdHMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVJlc3VsdHNNYXBwaW5nOiBbU291cmNlU2VsZWN0RGlzcGxheVZhbHVlPFQsIE0+LCBUXVtdID0gKGRpc3BsYXlSZXN1bHRzIGFzIFNvdXJjZVNlbGVjdERpc3BsYXlWYWx1ZTxULCBNPltdKS5tYXAoKHgpID0+IFt4LCB4LnZhbHVlXSk7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlSW5kZXhIYXNoTWFwID0gbmV3IE1hcChkaXNwbGF5UmVzdWx0c01hcHBpbmcubWFwKChbeCwgaGFzaF0pID0+IFtoYXNoLCB4XSkpO1xuXG4gICAgICAgICAgICAgIC8vIFVwZGF0ZSBtZXRhTWFwLiBObyBuZWVkIHRvIHB1c2ggYW4gdXBkYXRlIG5vdGlmaWNhdGlvbi5cbiAgICAgICAgICAgICAgZGlzcGxheVJlc3VsdHNNYXBwaW5nLmZvckVhY2goKFt4LCBoYXNoXSkgPT4gbWV0YU1hcC5zZXQoaGFzaCwgeCkpO1xuXG4gICAgICAgICAgICAgIC8vIFppcCB2YWx1ZXMgYmFjayB0b2dldGhlci5cbiAgICAgICAgICAgICAgY29uc3QgbmV3RGlzcGxheVZhbHVlcyA9IG1hcHBpbmdSZXN1bHQubWFwKCh4KSA9PiB4WzNdID8/IHZhbHVlSW5kZXhIYXNoTWFwLmdldCh4WzFdKSk7XG5cbiAgICAgICAgICAgICAgLy8gUmV0dXJuIGRpc3BsYXkgdmFsdWVzLlxuICAgICAgICAgICAgICByZXR1cm4gbmV3RGlzcGxheVZhbHVlcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBJZiBhbGwgZGlzcGxheSB2YWx1ZXMgYXJlIGhhc2hlZCByZXR1cm4gdGhhdC5cbiAgICAgICAgICBvYnMgPSBvZihoYXNEaXNwbGF5Lm1hcCgoeCkgPT4geFszXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9icztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGNvbnRleHQgPSBsb2FkaW5nU3RhdGVDb250ZXh0KHsgb2JzOiB0aGlzLmFsbE9wdGlvbkdyb3Vwc1N0YXRlJCB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGxvYWRTb3VyY2VzIH0gPSB0aGlzO1xuXG4gICAgdGhpcy5fbG9hZFNvdXJjZXMubmV4dChsb2FkU291cmNlcz8uKCkgfHwgb2YoW10pKTtcblxuICAgIGlmICh0aGlzLnJlZnJlc2hEaXNwbGF5VmFsdWVzJCAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9jbGVhckRpc3BsYXlIYXNoTWFwU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMucmVmcmVzaERpc3BsYXlWYWx1ZXMkLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kaXNwbGF5SGFzaE1hcC5uZXh0KG5ldyBNYXAoKSkpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1Db250cm9sT2JzLm5leHQodGhpcy5mb3JtQ29udHJvbCk7XG5cbiAgICAvLyBjb3B5IGFsbCB2YWx1ZXMgZnJvbSB0aGUgc291cmNlcyBpbnRvIHRoZSB2YWx1ZXMgaGFzaCBtYXAgdG8gcHJldmVudCByZWxvYWRpbmdcbiAgICB0aGlzLl9jYWNoZU1ldGFTdWIuc3Vic2NyaXB0aW9uID0gdGhpcy52YWx1ZUdyb3Vwc0Zyb21Tb3VyY2VzU3RhdGUkLnN1YnNjcmliZSgoeCkgPT4ge1xuICAgICAgY29uc3QgaGFzaE1hcCA9IHRoaXMuX3ZhbHVlTWV0YUhhc2hNYXAudmFsdWU7XG4gICAgICB4LnZhbHVlLmZvckVhY2goKHgpID0+IHgudmFsdWVzLmZvckVhY2goKHkpID0+IGhhc2hNYXAuc2V0KHkudmFsdWUsIHkpKSk7XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIHRoaXMuX2NhY2hlTWV0YVN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fY2xlYXJEaXNwbGF5SGFzaE1hcFN1Yi5kZXN0cm95KCk7XG4gICAgdGhpcy5fdmFsdWVNZXRhSGFzaE1hcC5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2Rpc3BsYXlIYXNoTWFwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl9mcm9tT3BlblNvdXJjZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX2xvYWRTb3VyY2VzLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5jb250ZXh0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGhhbmRsZVNlbGVjdE9wdGlvbnM6IFdvcmtVc2luZ0NvbnRleHQ8dW5rbm93bj4gPSAoXywgY29udGV4dCkgPT4ge1xuICAgIGNvbnN0IHsgb3BlblNvdXJjZSB9ID0gdGhpcztcbiAgICBjb25zdCBvcmlnaW4gPSB0aGlzLmJ1dHRvbkVsZW1lbnQoKTtcblxuICAgIGlmIChvcGVuU291cmNlICYmIG9yaWdpbikge1xuICAgICAgY29uc3Qgc291cmNlT2JzID0gb3BlblNvdXJjZSh7IG9yaWdpbiB9KTtcbiAgICAgIGNvbnRleHQuc3RhcnRXb3JraW5nV2l0aE9ic2VydmFibGUoXG4gICAgICAgIHNvdXJjZU9icy5waXBlKFxuICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgdGFwKChyZXN1bHQ6IFNvdXJjZVNlbGVjdE9wZW5Tb3VyY2VSZXN1bHQ8TT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlc1RvQWRkID0gbWVyZ2VBcnJheXMoW3Jlc3VsdC5zZWxlY3QsIHJlc3VsdC5vcHRpb25zXSk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXNUb0FkZC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5hZGRUb09wZW5Tb3VyY2VNYXAodmFsdWVzVG9BZGQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LnNldCkge1xuICAgICAgICAgICAgICB0aGlzLnNldEN1cnJlbnRWYWx1ZShyZXN1bHQuc2V0Lm1hcCgoeCkgPT4gdGhpcy52YWx1ZVJlYWRlcih4KSkpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuc2VsZWN0KSB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkVG9DdXJyZW50VmFsdWUocmVzdWx0LnNlbGVjdC5tYXAoKHgpID0+IHRoaXMudmFsdWVSZWFkZXIoeCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZXh0LnJlamVjdCgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIGFkZFRvT3BlblNvdXJjZU1hcChpbnB1dDogTVtdKSB7XG4gICAgY29uc3QgeyB2YWx1ZVJlYWRlciB9ID0gdGhpcztcbiAgICBjb25zdCB7IHZhbHVlczogbWV0YSwgdmFsdWVzU2V0OiBpbml0aWFsVmFsdWVzIH0gPSB0aGlzLl9mcm9tT3BlblNvdXJjZS52YWx1ZTtcblxuICAgIGNvbnN0IG5ld01ldGFGcm9tSW5wdXQ6IFNvdXJjZVNlbGVjdFZhbHVlPFQsIE0+W10gPSBbXTtcbiAgICBjb25zdCB2YWx1ZXNTZXQgPSBuZXcgU2V0KGluaXRpYWxWYWx1ZXMpO1xuXG4gICAgaW5wdXQuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZVJlYWRlcih4KTtcblxuICAgICAgaWYgKCF2YWx1ZXNTZXQuaGFzKHZhbHVlKSkge1xuICAgICAgICBuZXdNZXRhRnJvbUlucHV0LnB1c2goeyBtZXRhOiB4LCB2YWx1ZSB9KTtcbiAgICAgICAgdmFsdWVzU2V0LmFkZCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAobmV3TWV0YUZyb21JbnB1dC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9mcm9tT3BlblNvdXJjZS5uZXh0KHtcbiAgICAgICAgdmFsdWVzOiBbLi4ubWV0YSwgLi4ubmV3TWV0YUZyb21JbnB1dF0sXG4gICAgICAgIHZhbHVlc1NldDogdmFsdWVzU2V0XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRvQ3VycmVudFZhbHVlKHZhbHVlczogVFtdKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gYXNBcnJheSh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcbiAgICBjb25zdCBuZXdWYWx1ZUFycmF5ID0gWy4uLmN1cnJlbnRWYWx1ZSwgLi4udmFsdWVzXTtcbiAgICB0aGlzLnNldEN1cnJlbnRWYWx1ZShuZXdWYWx1ZUFycmF5KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3VycmVudFZhbHVlKG5ld1ZhbHVlQXJyYXk6IFRbXSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5tdWx0aXBsZSA/IG5ld1ZhbHVlQXJyYXkgOiBsYXN0VmFsdWUobmV3VmFsdWVBcnJheSk7IC8vIHBpY2sgbGFzdCB2YWx1ZSwgYXMgdGhlIGxhc3QgdmFsdWUgYWRkZWQgaXMgdGhlIG5ld2VzdCB2YWx1ZS5cbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZFwiPlxuICA8ZGl2IGNsYXNzPVwiZGJ4LXNvdXJjZS1zZWxlY3QtZmllbGQtY29udGVudFwiPlxuICAgIDxtYXQtc2VsZWN0IGNsYXNzPVwiZGJ4LXNvdXJjZS1zZWxlY3QtZmllbGQtc2VsZWN0XCIgW2lkXT1cImlkXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW211bHRpcGxlXT1cInByb3BzLm11bHRpcGxlXCI+XG4gICAgICBAZm9yICh2YWx1ZSBvZiBub25Hcm91cGVkVmFsdWVzU2lnbmFsKCk7IHRyYWNrIHZhbHVlLnZhbHVlKSB7XG4gICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJ2YWx1ZS52YWx1ZVwiPlxuICAgICAgICAgIHt7IHZhbHVlLmxhYmVsIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIH1cbiAgICAgIEBmb3IgKG9wdGlvbkdyb3VwIG9mIGdyb3VwZWRPcHRpb25zU2lnbmFsKCk7IHRyYWNrIG9wdGlvbkdyb3VwLmxhYmVsKSB7XG4gICAgICAgIDxtYXQtb3B0Z3JvdXAgW2xhYmVsXT1cIm9wdGlvbkdyb3VwLmxhYmVsXCI+XG4gICAgICAgICAgQGZvciAodmFsdWUgb2Ygb3B0aW9uR3JvdXAudmFsdWVzOyB0cmFjayB2YWx1ZS52YWx1ZSkge1xuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cInZhbHVlLnZhbHVlXCI+XG4gICAgICAgICAgICAgIHt7IHZhbHVlLmxhYmVsIH19XG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgIH1cbiAgICA8L21hdC1zZWxlY3Q+XG4gICAgQGlmIChzaG93T3BlblNvdXJjZUJ1dHRvbikge1xuICAgICAgPGRieC1idXR0b24tc3BhY2VyPjwvZGJ4LWJ1dHRvbi1zcGFjZXI+XG4gICAgICA8ZGJ4LWFjdGlvbiBkYnhBY3Rpb25WYWx1ZSBbZGJ4QWN0aW9uSGFuZGxlcl09XCJoYW5kbGVTZWxlY3RPcHRpb25zXCIgY2xhc3M9XCJkYngtc291cmNlLXNlbGVjdC1maWVsZC1idXR0b25cIj5cbiAgICAgICAgPGRieC1idXR0b24gI2J1dHRvbiBkYnhBY3Rpb25CdXR0b24gW2ZhYl09XCJ0cnVlXCIgW2ljb25Pbmx5XT1cInRydWVcIiBbaWNvbl09XCJzZWxlY3RCdXR0b25JY29uXCI+PC9kYngtYnV0dG9uPlxuICAgICAgPC9kYngtYWN0aW9uPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxkYngtbG9hZGluZyBjbGFzcz1cImRieC1zb3VyY2Utc2VsZWN0LWZpZWxkLWxvYWRpbmdcIiBbbGluZWFyXT1cInRydWVcIiBbY29udGV4dF09XCJjb250ZXh0XCI+PC9kYngtbG9hZGluZz5cbjwvZGl2PlxuIl19
@@ -1,14 +0,0 @@
1
- import { formlyField, propsAndConfigForFieldConfig } from '../../field';
2
- export function sourceSelectField(config) {
3
- const { key, materialFormField } = config;
4
- return formlyField({
5
- key,
6
- type: 'sourceselectfield',
7
- ...propsAndConfigForFieldConfig(config, {
8
- ...materialFormField,
9
- ...config,
10
- autocomplete: false
11
- })
12
- });
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZmllbGQvc2VsZWN0aW9uL3NvdXJjZXNlbGVjdC9zb3VyY2VzZWxlY3QuZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUEyQixXQUFXLEVBQUUsNEJBQTRCLEVBQTZELE1BQU0sYUFBYSxDQUFDO0FBTTVKLE1BQU0sVUFBVSxpQkFBaUIsQ0FBcUQsTUFBcUM7SUFDekgsTUFBTSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMxQyxPQUFPLFdBQVcsQ0FBQztRQUNqQixHQUFHO1FBQ0gsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixHQUFHLDRCQUE0QixDQUFDLE1BQU0sRUFBRTtZQUN0QyxHQUFHLGlCQUFpQjtZQUNwQixHQUFHLE1BQU07WUFDVCxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgUHJpbWF0aXZlS2V5IH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0eXBlIEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyB0eXBlIExhYmVsZWRGaWVsZENvbmZpZywgZm9ybWx5RmllbGQsIHByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcsIHR5cGUgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgdHlwZSBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZyB9IGZyb20gJy4uLy4uL2ZpZWxkJztcbmltcG9ydCB7IHR5cGUgU291cmNlU2VsZWN0RmllbGRQcm9wcyB9IGZyb20gJy4vc291cmNlc2VsZWN0LmZpZWxkLmNvbXBvbmVudCc7XG5cbi8vIE1BUks6IFRleHRcbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlU2VsZWN0RmllbGRDb25maWc8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+IGV4dGVuZHMgTGFiZWxlZEZpZWxkQ29uZmlnLCBEZXNjcmlwdGlvbkZpZWxkQ29uZmlnLCBNYXRlcmlhbEZvcm1GaWVsZENvbmZpZywgU291cmNlU2VsZWN0RmllbGRQcm9wczxULCBNPiB7fVxuXG5leHBvcnQgZnVuY3Rpb24gc291cmNlU2VsZWN0RmllbGQ8VCBleHRlbmRzIFByaW1hdGl2ZUtleSA9IFByaW1hdGl2ZUtleSwgTSA9IHVua25vd24+KGNvbmZpZzogU291cmNlU2VsZWN0RmllbGRDb25maWc8VCwgTT4pOiBGb3JtbHlGaWVsZENvbmZpZyB7XG4gIGNvbnN0IHsga2V5LCBtYXRlcmlhbEZvcm1GaWVsZCB9ID0gY29uZmlnO1xuICByZXR1cm4gZm9ybWx5RmllbGQoe1xuICAgIGtleSxcbiAgICB0eXBlOiAnc291cmNlc2VsZWN0ZmllbGQnLFxuICAgIC4uLnByb3BzQW5kQ29uZmlnRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAuLi5tYXRlcmlhbEZvcm1GaWVsZCxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGF1dG9jb21wbGV0ZTogZmFsc2VcbiAgICB9KVxuICB9KTtcbn1cbiJdfQ==
@@ -1,26 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { FormlyModule } from '@ngx-formly/core';
3
- import { DbxFormSourceSelectFieldComponent } from './sourceselect.field.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@ngx-formly/core";
6
- export class DbxFormFormlySourceSelectModule {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySourceSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySourceSelectModule, imports: [DbxFormSourceSelectFieldComponent, i1.FormlyModule], exports: [DbxFormSourceSelectFieldComponent] });
9
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySourceSelectModule, imports: [DbxFormSourceSelectFieldComponent,
10
- FormlyModule.forChild({
11
- types: [{ name: 'sourceselectfield', component: DbxFormSourceSelectFieldComponent, wrappers: ['form-field'] }]
12
- })] });
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormFormlySourceSelectModule, decorators: [{
15
- type: NgModule,
16
- args: [{
17
- imports: [
18
- DbxFormSourceSelectFieldComponent,
19
- FormlyModule.forChild({
20
- types: [{ name: 'sourceselectfield', component: DbxFormSourceSelectFieldComponent, wrappers: ['form-field'] }]
21
- })
22
- ],
23
- exports: [DbxFormSourceSelectFieldComponent]
24
- }]
25
- }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlc2VsZWN0LmZpZWxkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2ZpZWxkL3NlbGVjdGlvbi9zb3VyY2VzZWxlY3Qvc291cmNlc2VsZWN0LmZpZWxkLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7O0FBV25GLE1BQU0sT0FBTywrQkFBK0I7d0dBQS9CLCtCQUErQjt5R0FBL0IsK0JBQStCLFlBUHhDLGlDQUFpQyw4QkFLekIsaUNBQWlDO3lHQUVoQywrQkFBK0IsWUFQeEMsaUNBQWlDO1lBQ2pDLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2FBQy9HLENBQUM7OzRGQUlPLCtCQUErQjtrQkFUM0MsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsaUNBQWlDO3dCQUNqQyxZQUFZLENBQUMsUUFBUSxDQUFDOzRCQUNwQixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsaUNBQWlDLEVBQUUsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQzt5QkFDL0csQ0FBQztxQkFDSDtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBEYnhGb3JtU291cmNlU2VsZWN0RmllbGRDb21wb25lbnQgfSBmcm9tICcuL3NvdXJjZXNlbGVjdC5maWVsZC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgRGJ4Rm9ybVNvdXJjZVNlbGVjdEZpZWxkQ29tcG9uZW50LFxuICAgIEZvcm1seU1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB0eXBlczogW3sgbmFtZTogJ3NvdXJjZXNlbGVjdGZpZWxkJywgY29tcG9uZW50OiBEYnhGb3JtU291cmNlU2VsZWN0RmllbGRDb21wb25lbnQsIHdyYXBwZXJzOiBbJ2Zvcm0tZmllbGQnXSB9XVxuICAgIH0pXG4gIF0sXG4gIGV4cG9ydHM6IFtEYnhGb3JtU291cmNlU2VsZWN0RmllbGRDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1Gb3JtbHlTb3VyY2VTZWxlY3RNb2R1bGUge31cbiJdfQ==