ngx-bootstrap 18.1.2 → 19.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 (440) hide show
  1. package/accordion/fesm2022/ngx-bootstrap-accordion.mjs +13 -14
  2. package/accordion/fesm2022/ngx-bootstrap-accordion.mjs.map +1 -1
  3. package/alert/fesm2022/ngx-bootstrap-alert.mjs +10 -10
  4. package/alert/fesm2022/ngx-bootstrap-alert.mjs.map +1 -1
  5. package/buttons/fesm2022/ngx-bootstrap-buttons.mjs +13 -13
  6. package/buttons/fesm2022/ngx-bootstrap-buttons.mjs.map +1 -1
  7. package/carousel/fesm2022/ngx-bootstrap-carousel.mjs +13 -13
  8. package/carousel/fesm2022/ngx-bootstrap-carousel.mjs.map +1 -1
  9. package/chronos/fesm2022/ngx-bootstrap-chronos.mjs.map +1 -1
  10. package/collapse/fesm2022/ngx-bootstrap-collapse.mjs +7 -8
  11. package/collapse/fesm2022/ngx-bootstrap-collapse.mjs.map +1 -1
  12. package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs +3 -3
  13. package/component-loader/fesm2022/ngx-bootstrap-component-loader.mjs.map +1 -1
  14. package/datepicker/bs-datepicker.component.d.ts +5 -1
  15. package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs +94 -91
  16. package/datepicker/fesm2022/ngx-bootstrap-datepicker.mjs.map +1 -1
  17. package/datepicker/themes/bs/bs-custom-dates-view.component.d.ts +1 -0
  18. package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs +22 -25
  19. package/dropdown/fesm2022/ngx-bootstrap-dropdown.mjs.map +1 -1
  20. package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs +19 -19
  21. package/focus-trap/fesm2022/ngx-bootstrap-focus-trap.mjs.map +1 -1
  22. package/mini-ngrx/fesm2022/ngx-bootstrap-mini-ngrx.mjs.map +1 -1
  23. package/modal/fesm2022/ngx-bootstrap-modal.mjs +27 -27
  24. package/modal/fesm2022/ngx-bootstrap-modal.mjs.map +1 -1
  25. package/package.json +1 -3
  26. package/pagination/fesm2022/ngx-bootstrap-pagination.mjs +13 -13
  27. package/pagination/fesm2022/ngx-bootstrap-pagination.mjs.map +1 -1
  28. package/popover/fesm2022/ngx-bootstrap-popover.mjs +13 -13
  29. package/popover/fesm2022/ngx-bootstrap-popover.mjs.map +1 -1
  30. package/positioning/fesm2022/ngx-bootstrap-positioning.mjs +3 -3
  31. package/positioning/fesm2022/ngx-bootstrap-positioning.mjs.map +1 -1
  32. package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs +13 -13
  33. package/progressbar/fesm2022/ngx-bootstrap-progressbar.mjs.map +1 -1
  34. package/rating/fesm2022/ngx-bootstrap-rating.mjs +10 -10
  35. package/rating/fesm2022/ngx-bootstrap-rating.mjs.map +1 -1
  36. package/schematics/ng-add/index.js +2 -3
  37. package/schematics/ng-add/index.js.map +1 -1
  38. package/schematics/utils/addStyles.js +1 -2
  39. package/schematics/utils/addStyles.js.map +1 -1
  40. package/schematics/utils/current_dependency_versions.json +1 -1
  41. package/schematics/utils/getVersions.js +2 -3
  42. package/schematics/utils/getVersions.js.map +1 -1
  43. package/schematics/utils/index.js +6 -7
  44. package/schematics/utils/index.js.map +1 -1
  45. package/schematics/utils/ng-module-imports.js +1 -2
  46. package/schematics/utils/ng-module-imports.js.map +1 -1
  47. package/schematics/utils/project-main-file.js +1 -2
  48. package/schematics/utils/project-main-file.js.map +1 -1
  49. package/schematics/utils/project-targets.js +1 -2
  50. package/schematics/utils/project-targets.js.map +1 -1
  51. package/sortable/fesm2022/ngx-bootstrap-sortable.mjs +12 -14
  52. package/sortable/fesm2022/ngx-bootstrap-sortable.mjs.map +1 -1
  53. package/tabs/fesm2022/ngx-bootstrap-tabs.mjs +19 -19
  54. package/tabs/fesm2022/ngx-bootstrap-tabs.mjs.map +1 -1
  55. package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs +16 -16
  56. package/timepicker/fesm2022/ngx-bootstrap-timepicker.mjs.map +1 -1
  57. package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs +13 -13
  58. package/tooltip/fesm2022/ngx-bootstrap-tooltip.mjs.map +1 -1
  59. package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs +13 -14
  60. package/typeahead/fesm2022/ngx-bootstrap-typeahead.mjs.map +1 -1
  61. package/utils/fesm2022/ngx-bootstrap-utils.mjs.map +1 -1
  62. package/accordion/esm2022/accordion-group.component.mjs +0 -85
  63. package/accordion/esm2022/accordion.component.mjs +0 -57
  64. package/accordion/esm2022/accordion.config.mjs +0 -22
  65. package/accordion/esm2022/accordion.module.mjs +0 -24
  66. package/accordion/esm2022/index.mjs +0 -2
  67. package/accordion/esm2022/ngx-bootstrap-accordion.mjs +0 -5
  68. package/accordion/esm2022/public_api.mjs +0 -5
  69. package/alert/esm2022/alert.component.mjs +0 -77
  70. package/alert/esm2022/alert.config.mjs +0 -21
  71. package/alert/esm2022/alert.module.mjs +0 -23
  72. package/alert/esm2022/index.mjs +0 -2
  73. package/alert/esm2022/ngx-bootstrap-alert.mjs +0 -5
  74. package/alert/esm2022/public_api.mjs +0 -4
  75. package/buttons/esm2022/button-checkbox.directive.mjs +0 -88
  76. package/buttons/esm2022/button-radio-group.directive.mjs +0 -158
  77. package/buttons/esm2022/button-radio.directive.mjs +0 -189
  78. package/buttons/esm2022/buttons.module.mjs +0 -25
  79. package/buttons/esm2022/index.mjs +0 -2
  80. package/buttons/esm2022/ngx-bootstrap-buttons.mjs +0 -5
  81. package/buttons/esm2022/public_api.mjs +0 -5
  82. package/carousel/esm2022/carousel.component.mjs +0 -712
  83. package/carousel/esm2022/carousel.config.mjs +0 -32
  84. package/carousel/esm2022/carousel.module.mjs +0 -24
  85. package/carousel/esm2022/index.mjs +0 -2
  86. package/carousel/esm2022/models/index.mjs +0 -2
  87. package/carousel/esm2022/ngx-bootstrap-carousel.mjs +0 -5
  88. package/carousel/esm2022/public_api.mjs +0 -5
  89. package/carousel/esm2022/slide.component.mjs +0 -65
  90. package/carousel/esm2022/utils.mjs +0 -32
  91. package/chronos/esm2022/create/check-overflow.mjs +0 -30
  92. package/chronos/esm2022/create/clone.mjs +0 -6
  93. package/chronos/esm2022/create/date-from-array.mjs +0 -19
  94. package/chronos/esm2022/create/from-anything.mjs +0 -106
  95. package/chronos/esm2022/create/from-array.mjs +0 -135
  96. package/chronos/esm2022/create/from-object.mjs +0 -17
  97. package/chronos/esm2022/create/from-string-and-array.mjs +0 -38
  98. package/chronos/esm2022/create/from-string-and-format.mjs +0 -106
  99. package/chronos/esm2022/create/from-string.mjs +0 -222
  100. package/chronos/esm2022/create/local.mjs +0 -16
  101. package/chronos/esm2022/create/parsing-flags.mjs +0 -26
  102. package/chronos/esm2022/create/parsing.types.mjs +0 -2
  103. package/chronos/esm2022/create/valid.mjs +0 -42
  104. package/chronos/esm2022/duration/bubble.mjs +0 -47
  105. package/chronos/esm2022/duration/constructor.mjs +0 -130
  106. package/chronos/esm2022/duration/create.mjs +0 -112
  107. package/chronos/esm2022/duration/humanize.mjs +0 -79
  108. package/chronos/esm2022/duration/valid.mjs +0 -43
  109. package/chronos/esm2022/format/format.mjs +0 -50
  110. package/chronos/esm2022/format.mjs +0 -46
  111. package/chronos/esm2022/i18n/ar.mjs +0 -132
  112. package/chronos/esm2022/i18n/bg.mjs +0 -90
  113. package/chronos/esm2022/i18n/ca.mjs +0 -87
  114. package/chronos/esm2022/i18n/cs.mjs +0 -175
  115. package/chronos/esm2022/i18n/da.mjs +0 -49
  116. package/chronos/esm2022/i18n/de.mjs +0 -67
  117. package/chronos/esm2022/i18n/en-gb.mjs +0 -57
  118. package/chronos/esm2022/i18n/es-do.mjs +0 -81
  119. package/chronos/esm2022/i18n/es-pr.mjs +0 -74
  120. package/chronos/esm2022/i18n/es-us.mjs +0 -75
  121. package/chronos/esm2022/i18n/es.mjs +0 -80
  122. package/chronos/esm2022/i18n/et.mjs +0 -69
  123. package/chronos/esm2022/i18n/fa.mjs +0 -130
  124. package/chronos/esm2022/i18n/fi.mjs +0 -96
  125. package/chronos/esm2022/i18n/fr-ca.mjs +0 -69
  126. package/chronos/esm2022/i18n/fr.mjs +0 -72
  127. package/chronos/esm2022/i18n/gl.mjs +0 -80
  128. package/chronos/esm2022/i18n/he.mjs +0 -94
  129. package/chronos/esm2022/i18n/hi.mjs +0 -119
  130. package/chronos/esm2022/i18n/hr.mjs +0 -58
  131. package/chronos/esm2022/i18n/hu.mjs +0 -100
  132. package/chronos/esm2022/i18n/id.mjs +0 -78
  133. package/chronos/esm2022/i18n/it.mjs +0 -61
  134. package/chronos/esm2022/i18n/ja.mjs +0 -71
  135. package/chronos/esm2022/i18n/ka.mjs +0 -83
  136. package/chronos/esm2022/i18n/kk.mjs +0 -76
  137. package/chronos/esm2022/i18n/ko.mjs +0 -72
  138. package/chronos/esm2022/i18n/lt.mjs +0 -112
  139. package/chronos/esm2022/i18n/lv.mjs +0 -52
  140. package/chronos/esm2022/i18n/mn.mjs +0 -94
  141. package/chronos/esm2022/i18n/nb.mjs +0 -53
  142. package/chronos/esm2022/i18n/nl-be.mjs +0 -77
  143. package/chronos/esm2022/i18n/nl.mjs +0 -76
  144. package/chronos/esm2022/i18n/pl.mjs +0 -122
  145. package/chronos/esm2022/i18n/pt-br.mjs +0 -52
  146. package/chronos/esm2022/i18n/ro.mjs +0 -66
  147. package/chronos/esm2022/i18n/ru.mjs +0 -177
  148. package/chronos/esm2022/i18n/sk.mjs +0 -153
  149. package/chronos/esm2022/i18n/sl.mjs +0 -179
  150. package/chronos/esm2022/i18n/sq.mjs +0 -50
  151. package/chronos/esm2022/i18n/sv.mjs +0 -59
  152. package/chronos/esm2022/i18n/th-be.mjs +0 -73
  153. package/chronos/esm2022/i18n/th.mjs +0 -58
  154. package/chronos/esm2022/i18n/tr.mjs +0 -78
  155. package/chronos/esm2022/i18n/uk.mjs +0 -143
  156. package/chronos/esm2022/i18n/vi.mjs +0 -70
  157. package/chronos/esm2022/i18n/zh-cn.mjs +0 -109
  158. package/chronos/esm2022/index.mjs +0 -2
  159. package/chronos/esm2022/locale/calendar.mjs +0 -9
  160. package/chronos/esm2022/locale/locale.class.mjs +0 -532
  161. package/chronos/esm2022/locale/locale.defaults.mjs +0 -40
  162. package/chronos/esm2022/locale/locales.mjs +0 -228
  163. package/chronos/esm2022/moment/add-subtract.mjs +0 -35
  164. package/chronos/esm2022/moment/calendar.mjs +0 -41
  165. package/chronos/esm2022/moment/diff.mjs +0 -70
  166. package/chronos/esm2022/moment/min-max.mjs +0 -38
  167. package/chronos/esm2022/ngx-bootstrap-chronos.mjs +0 -5
  168. package/chronos/esm2022/parse/regex.mjs +0 -47
  169. package/chronos/esm2022/parse/token.mjs +0 -31
  170. package/chronos/esm2022/public_api.mjs +0 -59
  171. package/chronos/esm2022/testing/chain.mjs +0 -708
  172. package/chronos/esm2022/types.mjs +0 -2
  173. package/chronos/esm2022/units/aliases.mjs +0 -35
  174. package/chronos/esm2022/units/constants.mjs +0 -11
  175. package/chronos/esm2022/units/day-of-month.mjs +0 -31
  176. package/chronos/esm2022/units/day-of-week.mjs +0 -129
  177. package/chronos/esm2022/units/day-of-year.mjs +0 -37
  178. package/chronos/esm2022/units/hour.mjs +0 -127
  179. package/chronos/esm2022/units/index.mjs +0 -19
  180. package/chronos/esm2022/units/millisecond.mjs +0 -59
  181. package/chronos/esm2022/units/minute.mjs +0 -23
  182. package/chronos/esm2022/units/month.mjs +0 -63
  183. package/chronos/esm2022/units/offset.mjs +0 -209
  184. package/chronos/esm2022/units/priorities.mjs +0 -21
  185. package/chronos/esm2022/units/quarter.mjs +0 -39
  186. package/chronos/esm2022/units/second.mjs +0 -23
  187. package/chronos/esm2022/units/timestamp.mjs +0 -28
  188. package/chronos/esm2022/units/timezone.mjs +0 -19
  189. package/chronos/esm2022/units/week-calendar-utils.mjs +0 -70
  190. package/chronos/esm2022/units/week-year.mjs +0 -101
  191. package/chronos/esm2022/units/week.mjs +0 -58
  192. package/chronos/esm2022/units/year.mjs +0 -60
  193. package/chronos/esm2022/utils/abs-ceil.mjs +0 -4
  194. package/chronos/esm2022/utils/abs-round.mjs +0 -4
  195. package/chronos/esm2022/utils/compare-arrays.mjs +0 -16
  196. package/chronos/esm2022/utils/date-compare.mjs +0 -55
  197. package/chronos/esm2022/utils/date-getters.mjs +0 -67
  198. package/chronos/esm2022/utils/date-setters.mjs +0 -75
  199. package/chronos/esm2022/utils/defaults.mjs +0 -11
  200. package/chronos/esm2022/utils/start-end-of.mjs +0 -57
  201. package/chronos/esm2022/utils/type-checks.mjs +0 -58
  202. package/chronos/esm2022/utils/zero-fill.mjs +0 -10
  203. package/chronos/esm2022/utils.mjs +0 -7
  204. package/collapse/esm2022/collapse-animations.mjs +0 -11
  205. package/collapse/esm2022/collapse.directive.mjs +0 -169
  206. package/collapse/esm2022/collapse.module.mjs +0 -23
  207. package/collapse/esm2022/index.mjs +0 -2
  208. package/collapse/esm2022/ngx-bootstrap-collapse.mjs +0 -5
  209. package/collapse/esm2022/public_api.mjs +0 -3
  210. package/component-loader/esm2022/bs-component-ref.class.mjs +0 -3
  211. package/component-loader/esm2022/component-loader.class.mjs +0 -292
  212. package/component-loader/esm2022/component-loader.factory.mjs +0 -35
  213. package/component-loader/esm2022/content-ref.class.mjs +0 -16
  214. package/component-loader/esm2022/index.mjs +0 -2
  215. package/component-loader/esm2022/listen-options.model.mjs +0 -2
  216. package/component-loader/esm2022/ngx-bootstrap-component-loader.mjs +0 -5
  217. package/component-loader/esm2022/public_api.mjs +0 -5
  218. package/datepicker/esm2022/base/bs-datepicker-container.mjs +0 -76
  219. package/datepicker/esm2022/bs-datepicker-inline.component.mjs +0 -163
  220. package/datepicker/esm2022/bs-datepicker-inline.config.mjs +0 -14
  221. package/datepicker/esm2022/bs-datepicker-input.directive.mjs +0 -173
  222. package/datepicker/esm2022/bs-datepicker.component.mjs +0 -305
  223. package/datepicker/esm2022/bs-datepicker.config.mjs +0 -101
  224. package/datepicker/esm2022/bs-datepicker.module.mjs +0 -105
  225. package/datepicker/esm2022/bs-daterangepicker-inline.component.mjs +0 -169
  226. package/datepicker/esm2022/bs-daterangepicker-inline.config.mjs +0 -21
  227. package/datepicker/esm2022/bs-daterangepicker-input.directive.mjs +0 -215
  228. package/datepicker/esm2022/bs-daterangepicker.component.mjs +0 -302
  229. package/datepicker/esm2022/bs-daterangepicker.config.mjs +0 -19
  230. package/datepicker/esm2022/bs-locale.service.mjs +0 -32
  231. package/datepicker/esm2022/datepicker-animations.mjs +0 -16
  232. package/datepicker/esm2022/engine/calc-days-calendar.mjs +0 -21
  233. package/datepicker/esm2022/engine/flag-days-calendar.mjs +0 -93
  234. package/datepicker/esm2022/engine/flag-months-calendar.mjs +0 -45
  235. package/datepicker/esm2022/engine/flag-years-calendar.mjs +0 -42
  236. package/datepicker/esm2022/engine/format-days-calendar.mjs +0 -33
  237. package/datepicker/esm2022/engine/format-months-calendar.mjs +0 -23
  238. package/datepicker/esm2022/engine/format-years-calendar.mjs +0 -39
  239. package/datepicker/esm2022/engine/view-mode.mjs +0 -4
  240. package/datepicker/esm2022/index.mjs +0 -2
  241. package/datepicker/esm2022/models/index.mjs +0 -9
  242. package/datepicker/esm2022/ngx-bootstrap-datepicker.mjs +0 -5
  243. package/datepicker/esm2022/public_api.mjs +0 -17
  244. package/datepicker/esm2022/reducer/_defaults.mjs +0 -6
  245. package/datepicker/esm2022/reducer/bs-datepicker.actions.mjs +0 -143
  246. package/datepicker/esm2022/reducer/bs-datepicker.effects.mjs +0 -182
  247. package/datepicker/esm2022/reducer/bs-datepicker.reducer.mjs +0 -378
  248. package/datepicker/esm2022/reducer/bs-datepicker.state.mjs +0 -18
  249. package/datepicker/esm2022/reducer/bs-datepicker.store.mjs +0 -22
  250. package/datepicker/esm2022/themes/bs/bs-calendar-layout.component.mjs +0 -49
  251. package/datepicker/esm2022/themes/bs/bs-current-date-view.component.mjs +0 -17
  252. package/datepicker/esm2022/themes/bs/bs-custom-dates-view.component.mjs +0 -52
  253. package/datepicker/esm2022/themes/bs/bs-datepicker-container.component.mjs +0 -199
  254. package/datepicker/esm2022/themes/bs/bs-datepicker-day-decorator.directive.mjs +0 -48
  255. package/datepicker/esm2022/themes/bs/bs-datepicker-inline-container.component.mjs +0 -49
  256. package/datepicker/esm2022/themes/bs/bs-datepicker-navigation-view.component.mjs +0 -125
  257. package/datepicker/esm2022/themes/bs/bs-daterangepicker-container.component.mjs +0 -275
  258. package/datepicker/esm2022/themes/bs/bs-daterangepicker-inline-container.component.mjs +0 -49
  259. package/datepicker/esm2022/themes/bs/bs-days-calendar-view.component.mjs +0 -233
  260. package/datepicker/esm2022/themes/bs/bs-months-calendar-view.component.mjs +0 -95
  261. package/datepicker/esm2022/themes/bs/bs-timepicker-view.component.mjs +0 -56
  262. package/datepicker/esm2022/themes/bs/bs-years-calendar-view.component.mjs +0 -96
  263. package/datepicker/esm2022/utils/bs-calendar-utils.mjs +0 -117
  264. package/datepicker/esm2022/utils/copy-time-utils.mjs +0 -10
  265. package/datepicker/esm2022/utils/matrix-utils.mjs +0 -14
  266. package/dropdown/esm2022/bs-dropdown-container.component.mjs +0 -81
  267. package/dropdown/esm2022/bs-dropdown-menu.directive.mjs +0 -23
  268. package/dropdown/esm2022/bs-dropdown-toggle.directive.mjs +0 -88
  269. package/dropdown/esm2022/bs-dropdown.config.mjs +0 -24
  270. package/dropdown/esm2022/bs-dropdown.directive.mjs +0 -343
  271. package/dropdown/esm2022/bs-dropdown.module.mjs +0 -40
  272. package/dropdown/esm2022/bs-dropdown.state.mjs +0 -25
  273. package/dropdown/esm2022/dropdown-animations.mjs +0 -7
  274. package/dropdown/esm2022/index.mjs +0 -2
  275. package/dropdown/esm2022/ngx-bootstrap-dropdown.mjs +0 -5
  276. package/dropdown/esm2022/public_api.mjs +0 -8
  277. package/esm2022/index.mjs +0 -2
  278. package/esm2022/ngx-bootstrap.mjs +0 -5
  279. package/focus-trap/esm2022/boolean-property.mjs +0 -12
  280. package/focus-trap/esm2022/focus-trap-manager.mjs +0 -54
  281. package/focus-trap/esm2022/focus-trap.mjs +0 -411
  282. package/focus-trap/esm2022/focus-trap.module.mjs +0 -24
  283. package/focus-trap/esm2022/index.mjs +0 -2
  284. package/focus-trap/esm2022/interactivity-checker.mjs +0 -241
  285. package/focus-trap/esm2022/ngx-bootstrap-focus-trap.mjs +0 -5
  286. package/focus-trap/esm2022/platform.mjs +0 -80
  287. package/focus-trap/esm2022/public_api.mjs +0 -4
  288. package/locale/esm2022/index.mjs +0 -2
  289. package/locale/esm2022/ngx-bootstrap-locale.mjs +0 -5
  290. package/locale/esm2022/public_api.mjs +0 -47
  291. package/mini-ngrx/esm2022/index.mjs +0 -2
  292. package/mini-ngrx/esm2022/ngx-bootstrap-mini-ngrx.mjs +0 -5
  293. package/mini-ngrx/esm2022/public_api.mjs +0 -3
  294. package/mini-ngrx/esm2022/state.class.mjs +0 -16
  295. package/mini-ngrx/esm2022/store.class.mjs +0 -42
  296. package/modal/esm2022/bs-modal-ref.service.mjs +0 -22
  297. package/modal/esm2022/bs-modal.service.mjs +0 -230
  298. package/modal/esm2022/index.mjs +0 -2
  299. package/modal/esm2022/modal-backdrop.component.mjs +0 -51
  300. package/modal/esm2022/modal-backdrop.options.mjs +0 -7
  301. package/modal/esm2022/modal-container.component.mjs +0 -155
  302. package/modal/esm2022/modal-options.class.mjs +0 -46
  303. package/modal/esm2022/modal.directive.mjs +0 -365
  304. package/modal/esm2022/modal.module.mjs +0 -44
  305. package/modal/esm2022/models/index.mjs +0 -2
  306. package/modal/esm2022/ngx-bootstrap-modal.mjs +0 -5
  307. package/modal/esm2022/public_api.mjs +0 -9
  308. package/pagination/esm2022/index.mjs +0 -2
  309. package/pagination/esm2022/models/index.mjs +0 -2
  310. package/pagination/esm2022/ngx-bootstrap-pagination.mjs +0 -5
  311. package/pagination/esm2022/pager.component.mjs +0 -256
  312. package/pagination/esm2022/pagination.component.mjs +0 -257
  313. package/pagination/esm2022/pagination.config.mjs +0 -35
  314. package/pagination/esm2022/pagination.module.mjs +0 -25
  315. package/pagination/esm2022/public_api.mjs +0 -5
  316. package/popover/esm2022/index.mjs +0 -2
  317. package/popover/esm2022/ngx-bootstrap-popover.mjs +0 -5
  318. package/popover/esm2022/popover-container.component.mjs +0 -45
  319. package/popover/esm2022/popover.config.mjs +0 -35
  320. package/popover/esm2022/popover.directive.mjs +0 -241
  321. package/popover/esm2022/popover.module.mjs +0 -25
  322. package/popover/esm2022/public_api.mjs +0 -5
  323. package/positioning/esm2022/index.mjs +0 -2
  324. package/positioning/esm2022/models/index.mjs +0 -53
  325. package/positioning/esm2022/modifiers/arrow.mjs +0 -56
  326. package/positioning/esm2022/modifiers/flip.mjs +0 -65
  327. package/positioning/esm2022/modifiers/index.mjs +0 -6
  328. package/positioning/esm2022/modifiers/initData.mjs +0 -44
  329. package/positioning/esm2022/modifiers/preventOverflow.mjs +0 -54
  330. package/positioning/esm2022/modifiers/shift.mjs +0 -24
  331. package/positioning/esm2022/ng-positioning.mjs +0 -39
  332. package/positioning/esm2022/ngx-bootstrap-positioning.mjs +0 -5
  333. package/positioning/esm2022/positioning.service.mjs +0 -71
  334. package/positioning/esm2022/public_api.mjs +0 -5
  335. package/positioning/esm2022/utils/checkMargin.mjs +0 -32
  336. package/positioning/esm2022/utils/computeAutoPlacement.mjs +0 -55
  337. package/positioning/esm2022/utils/findCommonOffsetParent.mjs +0 -40
  338. package/positioning/esm2022/utils/getBordersSize.mjs +0 -10
  339. package/positioning/esm2022/utils/getBoundaries.mjs +0 -70
  340. package/positioning/esm2022/utils/getBoundingClientRect.mjs +0 -56
  341. package/positioning/esm2022/utils/getClientRect.mjs +0 -8
  342. package/positioning/esm2022/utils/getFixedPositionOffsetParent.mjs +0 -16
  343. package/positioning/esm2022/utils/getOffsetParent.mjs +0 -33
  344. package/positioning/esm2022/utils/getOffsetRectRelativeToArbitraryNode.mjs +0 -50
  345. package/positioning/esm2022/utils/getOffsets.mjs +0 -11
  346. package/positioning/esm2022/utils/getOppositePlacement.mjs +0 -8
  347. package/positioning/esm2022/utils/getOppositeVariation.mjs +0 -13
  348. package/positioning/esm2022/utils/getOuterSizes.mjs +0 -12
  349. package/positioning/esm2022/utils/getParentNode.mjs +0 -12
  350. package/positioning/esm2022/utils/getReferenceOffsets.mjs +0 -13
  351. package/positioning/esm2022/utils/getRoot.mjs +0 -10
  352. package/positioning/esm2022/utils/getScroll.mjs +0 -14
  353. package/positioning/esm2022/utils/getScrollParent.mjs +0 -28
  354. package/positioning/esm2022/utils/getStyleComputedProperty.mjs +0 -12
  355. package/positioning/esm2022/utils/getTargetOffsets.mjs +0 -30
  356. package/positioning/esm2022/utils/getViewportOffsetRectRelativeToArtbitraryNode.mjs +0 -19
  357. package/positioning/esm2022/utils/getWindowSizes.mjs +0 -14
  358. package/positioning/esm2022/utils/index.mjs +0 -24
  359. package/positioning/esm2022/utils/isFixed.mjs +0 -16
  360. package/positioning/esm2022/utils/isModifierEnabled.mjs +0 -4
  361. package/positioning/esm2022/utils/isNumeric.mjs +0 -10
  362. package/positioning/esm2022/utils/isOffsetContainer.mjs +0 -11
  363. package/positioning/esm2022/utils/setStyles.mjs +0 -21
  364. package/positioning/esm2022/utils/updateContainerClass.mjs +0 -32
  365. package/progressbar/esm2022/bar.component.mjs +0 -72
  366. package/progressbar/esm2022/index.mjs +0 -2
  367. package/progressbar/esm2022/ngx-bootstrap-progressbar.mjs +0 -5
  368. package/progressbar/esm2022/progressbar-type.interface.mjs +0 -2
  369. package/progressbar/esm2022/progressbar.component.mjs +0 -53
  370. package/progressbar/esm2022/progressbar.config.mjs +0 -19
  371. package/progressbar/esm2022/progressbar.module.mjs +0 -24
  372. package/progressbar/esm2022/public_api.mjs +0 -5
  373. package/rating/esm2022/index.mjs +0 -2
  374. package/rating/esm2022/models/index.mjs +0 -2
  375. package/rating/esm2022/ngx-bootstrap-rating.mjs +0 -5
  376. package/rating/esm2022/public_api.mjs +0 -4
  377. package/rating/esm2022/rating.component.mjs +0 -121
  378. package/rating/esm2022/rating.config.mjs +0 -18
  379. package/rating/esm2022/rating.module.mjs +0 -23
  380. package/sortable/esm2022/draggable-item.mjs +0 -2
  381. package/sortable/esm2022/draggable-item.service.mjs +0 -36
  382. package/sortable/esm2022/index.mjs +0 -2
  383. package/sortable/esm2022/ngx-bootstrap-sortable.mjs +0 -5
  384. package/sortable/esm2022/public_api.mjs +0 -4
  385. package/sortable/esm2022/sortable.component.mjs +0 -270
  386. package/sortable/esm2022/sortable.module.mjs +0 -23
  387. package/tabs/esm2022/index.mjs +0 -2
  388. package/tabs/esm2022/ng-transclude.directive.mjs +0 -29
  389. package/tabs/esm2022/ngx-bootstrap-tabs.mjs +0 -5
  390. package/tabs/esm2022/public_api.mjs +0 -7
  391. package/tabs/esm2022/tab-heading.directive.mjs +0 -21
  392. package/tabs/esm2022/tab.directive.mjs +0 -118
  393. package/tabs/esm2022/tabs.module.mjs +0 -41
  394. package/tabs/esm2022/tabset.component.mjs +0 -216
  395. package/tabs/esm2022/tabset.config.mjs +0 -21
  396. package/timepicker/esm2022/index.mjs +0 -2
  397. package/timepicker/esm2022/models/index.mjs +0 -2
  398. package/timepicker/esm2022/ngx-bootstrap-timepicker.mjs +0 -5
  399. package/timepicker/esm2022/public_api.mjs +0 -6
  400. package/timepicker/esm2022/reducer/timepicker.actions.mjs +0 -53
  401. package/timepicker/esm2022/reducer/timepicker.reducer.mjs +0 -83
  402. package/timepicker/esm2022/reducer/timepicker.store.mjs +0 -21
  403. package/timepicker/esm2022/timepicker-controls.util.mjs +0 -123
  404. package/timepicker/esm2022/timepicker.component.mjs +0 -334
  405. package/timepicker/esm2022/timepicker.config.mjs +0 -54
  406. package/timepicker/esm2022/timepicker.models.mjs +0 -2
  407. package/timepicker/esm2022/timepicker.module.mjs +0 -23
  408. package/timepicker/esm2022/timepicker.utils.mjs +0 -152
  409. package/tooltip/esm2022/index.mjs +0 -2
  410. package/tooltip/esm2022/ngx-bootstrap-tooltip.mjs +0 -5
  411. package/tooltip/esm2022/public_api.mjs +0 -5
  412. package/tooltip/esm2022/tooltip-container.component.mjs +0 -48
  413. package/tooltip/esm2022/tooltip.config.mjs +0 -22
  414. package/tooltip/esm2022/tooltip.directive.mjs +0 -344
  415. package/tooltip/esm2022/tooltip.module.mjs +0 -25
  416. package/typeahead/esm2022/index.mjs +0 -2
  417. package/typeahead/esm2022/latin-map.mjs +0 -827
  418. package/typeahead/esm2022/models/index.mjs +0 -2
  419. package/typeahead/esm2022/ngx-bootstrap-typeahead.mjs +0 -5
  420. package/typeahead/esm2022/public_api.mjs +0 -9
  421. package/typeahead/esm2022/typeahead-animations.mjs +0 -16
  422. package/typeahead/esm2022/typeahead-container.component.mjs +0 -310
  423. package/typeahead/esm2022/typeahead-match.class.mjs +0 -15
  424. package/typeahead/esm2022/typeahead-options.class.mjs +0 -8
  425. package/typeahead/esm2022/typeahead-order.class.mjs +0 -2
  426. package/typeahead/esm2022/typeahead-utils.mjs +0 -77
  427. package/typeahead/esm2022/typeahead.config.mjs +0 -34
  428. package/typeahead/esm2022/typeahead.directive.mjs +0 -573
  429. package/typeahead/esm2022/typeahead.module.mjs +0 -25
  430. package/utils/esm2022/decorators.mjs +0 -23
  431. package/utils/esm2022/facade/browser.mjs +0 -26
  432. package/utils/esm2022/index.mjs +0 -2
  433. package/utils/esm2022/linked-list.class.mjs +0 -247
  434. package/utils/esm2022/ngx-bootstrap-utils.mjs +0 -5
  435. package/utils/esm2022/public_api.mjs +0 -10
  436. package/utils/esm2022/theme-provider.mjs +0 -48
  437. package/utils/esm2022/trigger.class.mjs +0 -14
  438. package/utils/esm2022/triggers.mjs +0 -120
  439. package/utils/esm2022/utils.class.mjs +0 -30
  440. package/utils/esm2022/warn-once.mjs +0 -11
@@ -1,169 +0,0 @@
1
- import { Directive, ElementRef, EventEmitter, Input, Output, Renderer2, ViewContainerRef } from '@angular/core';
2
- import { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';
3
- import { filter } from 'rxjs/operators';
4
- import { BsDatepickerConfig } from './bs-datepicker.config';
5
- import { BsDaterangepickerInlineConfig } from './bs-daterangepicker-inline.config';
6
- import { BsDaterangepickerInlineContainerComponent } from './themes/bs/bs-daterangepicker-inline-container.component';
7
- import { checkBsValue, checkRangesWithMaxDate, setDateRangesCurrentTimeOnDateSelect } from './utils/bs-calendar-utils';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./bs-daterangepicker-inline.config";
10
- import * as i2 from "ngx-bootstrap/component-loader";
11
- export class BsDaterangepickerInlineDirective {
12
- /**
13
- * Initial value of datepicker
14
- */
15
- set bsValue(value) {
16
- if (this._bsValue === value) {
17
- return;
18
- }
19
- if (value && this.bsConfig?.initCurrentTime) {
20
- value = setDateRangesCurrentTimeOnDateSelect(value);
21
- }
22
- this._bsValue = value;
23
- this.bsValueChange.emit(value);
24
- }
25
- constructor(_config, _elementRef, _renderer, _viewContainerRef, cis) {
26
- this._config = _config;
27
- this._elementRef = _elementRef;
28
- /**
29
- * Indicates whether datepicker is enabled or not
30
- */
31
- this.isDisabled = false;
32
- /**
33
- * Emits when daterangepicker value has been changed
34
- */
35
- this.bsValueChange = new EventEmitter();
36
- this._subs = [];
37
- // todo: assign only subset of fields
38
- Object.assign(this, this._config);
39
- this._datepicker = cis.createLoader(_elementRef, _viewContainerRef, _renderer);
40
- }
41
- ngOnInit() {
42
- this.setConfig();
43
- this.initSubscribes();
44
- }
45
- ngOnChanges(changes) {
46
- if (changes["bsConfig"]) {
47
- if (changes["bsConfig"].currentValue.initCurrentTime && changes["bsConfig"].currentValue.initCurrentTime !== changes["bsConfig"].previousValue.initCurrentTime && this._bsValue) {
48
- this._bsValue = setDateRangesCurrentTimeOnDateSelect(this._bsValue);
49
- this.bsValueChange.emit(this._bsValue);
50
- }
51
- }
52
- if (!this._datepickerRef || !this._datepickerRef.instance) {
53
- return;
54
- }
55
- if (changes["minDate"]) {
56
- this._datepickerRef.instance.minDate = this.minDate;
57
- }
58
- if (changes["maxDate"]) {
59
- this._datepickerRef.instance.maxDate = this.maxDate;
60
- }
61
- if (changes["datesEnabled"]) {
62
- this._datepickerRef.instance.datesEnabled = this.datesEnabled;
63
- this._datepickerRef.instance.value = this._bsValue;
64
- }
65
- if (changes["datesDisabled"]) {
66
- this._datepickerRef.instance.datesDisabled = this.datesDisabled;
67
- }
68
- if (changes["daysDisabled"]) {
69
- this._datepickerRef.instance.daysDisabled = this.daysDisabled;
70
- }
71
- if (changes["isDisabled"]) {
72
- this._datepickerRef.instance.isDisabled = this.isDisabled;
73
- }
74
- if (changes["dateCustomClasses"]) {
75
- this._datepickerRef.instance.dateCustomClasses = this.dateCustomClasses;
76
- }
77
- this.setConfig();
78
- }
79
- /**
80
- * Set config for datepicker
81
- */
82
- setConfig() {
83
- if (this._datepicker) {
84
- this._datepicker.hide();
85
- }
86
- this._config = Object.assign({}, this._config, this.bsConfig, {
87
- value: checkBsValue(this._bsValue, this.maxDate || this.bsConfig && this.bsConfig.maxDate),
88
- isDisabled: this.isDisabled,
89
- minDate: this.minDate || this.bsConfig && this.bsConfig.minDate,
90
- maxDate: this.maxDate || this.bsConfig && this.bsConfig.maxDate,
91
- daysDisabled: this.daysDisabled || this.bsConfig && this.bsConfig.daysDisabled,
92
- dateCustomClasses: this.dateCustomClasses || this.bsConfig && this.bsConfig.dateCustomClasses,
93
- datesDisabled: this.datesDisabled || this.bsConfig && this.bsConfig.datesDisabled,
94
- datesEnabled: this.datesEnabled || this.bsConfig && this.bsConfig.datesEnabled,
95
- ranges: checkRangesWithMaxDate(this.bsConfig && this.bsConfig.ranges, this.maxDate || this.bsConfig && this.bsConfig.maxDate),
96
- maxDateRange: this.bsConfig && this.bsConfig.maxDateRange,
97
- initCurrentTime: this.bsConfig?.initCurrentTime
98
- });
99
- this._datepickerRef = this._datepicker
100
- .provide({ provide: BsDatepickerConfig, useValue: this._config })
101
- .attach(BsDaterangepickerInlineContainerComponent)
102
- .to(this._elementRef)
103
- .show();
104
- this.initSubscribes();
105
- }
106
- initSubscribes() {
107
- this.unsubscribeSubscriptions();
108
- // if date changes from external source (model -> view)
109
- this._subs.push(this.bsValueChange.subscribe((value) => {
110
- if (this._datepickerRef) {
111
- this._datepickerRef.instance.value = value;
112
- }
113
- }));
114
- // if date changes from picker (view -> model)
115
- if (this._datepickerRef) {
116
- this._subs.push(this._datepickerRef.instance.valueChange
117
- .pipe(filter((range) => range && range[0] && !!range[1]))
118
- .subscribe((value) => {
119
- this.bsValue = value;
120
- }));
121
- }
122
- }
123
- unsubscribeSubscriptions() {
124
- if (this._subs?.length) {
125
- this._subs.map(sub => sub.unsubscribe());
126
- this._subs.length = 0;
127
- }
128
- }
129
- ngOnDestroy() {
130
- this._datepicker.dispose();
131
- this.unsubscribeSubscriptions();
132
- }
133
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDaterangepickerInlineDirective, deps: [{ token: i1.BsDaterangepickerInlineConfig }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i2.ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Directive }); }
134
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BsDaterangepickerInlineDirective, isStandalone: true, selector: "bs-daterangepicker-inline", inputs: { bsValue: "bsValue", bsConfig: "bsConfig", isDisabled: "isDisabled", minDate: "minDate", maxDate: "maxDate", dateCustomClasses: "dateCustomClasses", daysDisabled: "daysDisabled", datesDisabled: "datesDisabled", datesEnabled: "datesEnabled" }, outputs: { bsValueChange: "bsValueChange" }, providers: [
135
- ComponentLoaderFactory
136
- ], exportAs: ["bsDaterangepickerInline"], usesOnChanges: true, ngImport: i0 }); }
137
- }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDaterangepickerInlineDirective, decorators: [{
139
- type: Directive,
140
- args: [{
141
- selector: 'bs-daterangepicker-inline',
142
- exportAs: 'bsDaterangepickerInline',
143
- standalone: true,
144
- providers: [
145
- ComponentLoaderFactory
146
- ]
147
- }]
148
- }], ctorParameters: () => [{ type: i1.BsDaterangepickerInlineConfig }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i2.ComponentLoaderFactory }], propDecorators: { bsValue: [{
149
- type: Input
150
- }], bsConfig: [{
151
- type: Input
152
- }], isDisabled: [{
153
- type: Input
154
- }], minDate: [{
155
- type: Input
156
- }], maxDate: [{
157
- type: Input
158
- }], dateCustomClasses: [{
159
- type: Input
160
- }], daysDisabled: [{
161
- type: Input
162
- }], datesDisabled: [{
163
- type: Input
164
- }], datesEnabled: [{
165
- type: Input
166
- }], bsValueChange: [{
167
- type: Output
168
- }] } });
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXJhbmdlcGlja2VyLWlubGluZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9icy1kYXRlcmFuZ2VwaWNrZXItaW5saW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ1MsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUFpQixnQkFBZ0IsRUFDdEUsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3pGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNuRixPQUFPLEVBQUUseUNBQXlDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUV0SCxPQUFPLEVBQ0wsWUFBWSxFQUNaLHNCQUFzQixFQUN0QixvQ0FBb0MsRUFDckMsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQVVuQyxNQUFNLE9BQU8sZ0NBQWdDO0lBRXpDOztPQUVHO0lBQ0gsSUFDSSxPQUFPLENBQUMsS0FBcUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzVCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsQ0FBQztZQUM1QyxLQUFLLEdBQUcsb0NBQW9DLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxD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O3NCQUFmLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsYUFBYTtzQkFBckIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnRSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBSZW5kZXJlcjIsIFNpbXBsZUNoYW5nZXMsIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbXBvbmVudExvYWRlciwgQ29tcG9uZW50TG9hZGVyRmFjdG9yeSB9IGZyb20gJ25neC1ib290c3RyYXAvY29tcG9uZW50LWxvYWRlcic7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBCc0RhdGVwaWNrZXJDb25maWcgfSBmcm9tICcuL2JzLWRhdGVwaWNrZXIuY29uZmlnJztcbmltcG9ydCB7IEJzRGF0ZXJhbmdlcGlja2VySW5saW5lQ29uZmlnIH0gZnJvbSAnLi9icy1kYXRlcmFuZ2VwaWNrZXItaW5saW5lLmNvbmZpZyc7XG5pbXBvcnQgeyBCc0RhdGVyYW5nZXBpY2tlcklubGluZUNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vdGhlbWVzL2JzL2JzLWRhdGVyYW5nZXBpY2tlci1pbmxpbmUtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlcGlja2VyRGF0ZUN1c3RvbUNsYXNzZXMgfSBmcm9tICcuL21vZGVscyc7XG5pbXBvcnQge1xuICBjaGVja0JzVmFsdWUsXG4gIGNoZWNrUmFuZ2VzV2l0aE1heERhdGUsXG4gIHNldERhdGVSYW5nZXNDdXJyZW50VGltZU9uRGF0ZVNlbGVjdFxufSBmcm9tICcuL3V0aWxzL2JzLWNhbGVuZGFyLXV0aWxzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdicy1kYXRlcmFuZ2VwaWNrZXItaW5saW5lJyxcbiAgICBleHBvcnRBczogJ2JzRGF0ZXJhbmdlcGlja2VySW5saW5lJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgQ29tcG9uZW50TG9hZGVyRmFjdG9yeVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQnNEYXRlcmFuZ2VwaWNrZXJJbmxpbmVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgICBfYnNWYWx1ZT86IChEYXRlfHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHZhbHVlIG9mIGRhdGVwaWNrZXJcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBic1ZhbHVlKHZhbHVlOiAoRGF0ZXx1bmRlZmluZWQpW10gfCB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLl9ic1ZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLmJzQ29uZmlnPy5pbml0Q3VycmVudFRpbWUpIHtcbiAgICAgICAgdmFsdWUgPSBzZXREYXRlUmFuZ2VzQ3VycmVudFRpbWVPbkRhdGVTZWxlY3QodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9ic1ZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLmJzVmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uZmlnIG9iamVjdCBmb3IgZGF0ZXBpY2tlclxuICAgICAqL1xuICAgIEBJbnB1dCgpIGJzQ29uZmlnPzogUGFydGlhbDxCc0RhdGVyYW5nZXBpY2tlcklubGluZUNvbmZpZz47XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgZGF0ZXBpY2tlciBpcyBlbmFibGVkIG9yIG5vdFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBNaW5pbXVtIGRhdGUgd2hpY2ggaXMgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcbiAgICAvKipcbiAgICAgKiBNYXhpbXVtIGRhdGUgd2hpY2ggaXMgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKSBtYXhEYXRlPzogRGF0ZTtcbiAgICAvKipcbiAgICAgKiBEYXRlIGN1c3RvbSBjbGFzc2VzXG4gICAgICovXG4gICAgQElucHV0KCkgZGF0ZUN1c3RvbUNsYXNzZXM/OiBEYXRlcGlja2VyRGF0ZUN1c3RvbUNsYXNzZXNbXTtcbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHNwZWNpZmljIGRheXMsIGUuZy4gWzAsNl0gd2lsbCBkaXNhYmxlIGFsbCBTYXR1cmRheXMgYW5kIFN1bmRheXNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkYXlzRGlzYWJsZWQ/OiBudW1iZXJbXTtcbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHNwZWNpZmljIGRhdGVzXG4gICAgICovXG4gICAgQElucHV0KCkgZGF0ZXNEaXNhYmxlZD86IERhdGVbXTtcbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHNwZWNpZmljIGRhdGVzXG4gICAgICovXG4gICAgQElucHV0KCkgZGF0ZXNFbmFibGVkPzogRGF0ZVtdO1xuICAgIC8qKlxuICAgICAqIEVtaXRzIHdoZW4gZGF0ZXJhbmdlcGlja2VyIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgYnNWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPChEYXRlfHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBwcm90ZWN0ZWQgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kYXRlcGlja2VyOiBDb21wb25lbnRMb2FkZXI8QnNEYXRlcmFuZ2VwaWNrZXJJbmxpbmVDb250YWluZXJDb21wb25lbnQ+O1xuICAgIHByaXZhdGUgX2RhdGVwaWNrZXJSZWY/OiBDb21wb25lbnRSZWY8QnNEYXRlcmFuZ2VwaWNrZXJJbmxpbmVDb250YWluZXJDb21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICBwdWJsaWMgX2NvbmZpZzogQnNEYXRlcmFuZ2VwaWNrZXJJbmxpbmVDb25maWcsXG4gICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgIGNpczogQ29tcG9uZW50TG9hZGVyRmFjdG9yeVxuICAgICkge1xuICAgICAgLy8gdG9kbzogYXNzaWduIG9ubHkgc3Vic2V0IG9mIGZpZWxkc1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB0aGlzLl9jb25maWcpO1xuICAgICAgdGhpcy5fZGF0ZXBpY2tlciA9IGNpcy5jcmVhdGVMb2FkZXI8QnNEYXRlcmFuZ2VwaWNrZXJJbmxpbmVDb250YWluZXJDb21wb25lbnQ+KFxuICAgICAgICBfZWxlbWVudFJlZixcbiAgICAgICAgX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIF9yZW5kZXJlclxuICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRDb25maWcoKTtcbiAgICAgICAgdGhpcy5pbml0U3Vic2NyaWJlcygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgIGlmIChjaGFuZ2VzW1wiYnNDb25maWdcIl0pIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbXCJic0NvbmZpZ1wiXS5jdXJyZW50VmFsdWUuaW5pdEN1cnJlbnRUaW1lICYmIGNoYW5nZXNbXCJic0NvbmZpZ1wiXS5jdXJyZW50VmFsdWUuaW5pdEN1cnJlbnRUaW1lICE9PSBjaGFuZ2VzW1wiYnNDb25maWdcIl0ucHJldmlvdXNWYWx1ZS5pbml0Q3VycmVudFRpbWUgJiYgdGhpcy5fYnNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2JzVmFsdWUgPSBzZXREYXRlUmFuZ2VzQ3VycmVudFRpbWVPbkRhdGVTZWxlY3QodGhpcy5fYnNWYWx1ZSk7XG4gICAgICAgICAgdGhpcy5ic1ZhbHVlQ2hhbmdlLmVtaXQodGhpcy5fYnNWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLl9kYXRlcGlja2VyUmVmIHx8ICF0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXNbXCJtaW5EYXRlXCJdKSB7XG4gICAgICAgIHRoaXMuX2RhdGVwaWNrZXJSZWYuaW5zdGFuY2UubWluRGF0ZSA9IHRoaXMubWluRGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXNbXCJtYXhEYXRlXCJdKSB7XG4gICAgICAgIHRoaXMuX2RhdGVwaWNrZXJSZWYuaW5zdGFuY2UubWF4RGF0ZSA9IHRoaXMubWF4RGF0ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZXNbXCJkYXRlc0VuYWJsZWRcIl0pIHtcbiAgICAgICAgdGhpcy5fZGF0ZXBpY2tlclJlZi5pbnN0YW5jZS5kYXRlc0VuYWJsZWQgPSB0aGlzLmRhdGVzRW5hYmxlZDtcbiAgICAgICAgdGhpcy5fZGF0ZXBpY2tlclJlZi5pbnN0YW5jZS52YWx1ZSA9IHRoaXMuX2JzVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzW1wiZGF0ZXNEaXNhYmxlZFwiXSkge1xuICAgICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLmRhdGVzRGlzYWJsZWQgPSB0aGlzLmRhdGVzRGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzW1wiZGF5c0Rpc2FibGVkXCJdKSB7XG4gICAgICAgIHRoaXMuX2RhdGVwaWNrZXJSZWYuaW5zdGFuY2UuZGF5c0Rpc2FibGVkID0gdGhpcy5kYXlzRGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzW1wiaXNEaXNhYmxlZFwiXSkge1xuICAgICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLmlzRGlzYWJsZWQgPSB0aGlzLmlzRGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VzW1wiZGF0ZUN1c3RvbUNsYXNzZXNcIl0pIHtcbiAgICAgICAgdGhpcy5fZGF0ZXBpY2tlclJlZi5pbnN0YW5jZS5kYXRlQ3VzdG9tQ2xhc3NlcyA9IHRoaXMuZGF0ZUN1c3RvbUNsYXNzZXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0Q29uZmlnKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IGNvbmZpZyBmb3IgZGF0ZXBpY2tlclxuICAgICAqL1xuICAgIHNldENvbmZpZygpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLl9kYXRlcGlja2VyKSB7XG4gICAgICAgIHRoaXMuX2RhdGVwaWNrZXIuaGlkZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9jb25maWcsIHRoaXMuYnNDb25maWcsIHtcbiAgICAgICAgdmFsdWU6IGNoZWNrQnNWYWx1ZSh0aGlzLl9ic1ZhbHVlLCB0aGlzLm1heERhdGUgfHwgdGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLm1heERhdGUpLFxuICAgICAgICBpc0Rpc2FibGVkOiB0aGlzLmlzRGlzYWJsZWQsXG4gICAgICAgIG1pbkRhdGU6IHRoaXMubWluRGF0ZSB8fCB0aGlzLmJzQ29uZmlnICYmIHRoaXMuYnNDb25maWcubWluRGF0ZSxcbiAgICAgICAgbWF4RGF0ZTogdGhpcy5tYXhEYXRlIHx8IHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5tYXhEYXRlLFxuICAgICAgICBkYXlzRGlzYWJsZWQ6IHRoaXMuZGF5c0Rpc2FibGVkIHx8IHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5kYXlzRGlzYWJsZWQsXG4gICAgICAgIGRhdGVDdXN0b21DbGFzc2VzOiB0aGlzLmRhdGVDdXN0b21DbGFzc2VzIHx8IHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5kYXRlQ3VzdG9tQ2xhc3NlcyxcbiAgICAgICAgZGF0ZXNEaXNhYmxlZDogdGhpcy5kYXRlc0Rpc2FibGVkIHx8IHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5kYXRlc0Rpc2FibGVkLFxuICAgICAgICBkYXRlc0VuYWJsZWQ6IHRoaXMuZGF0ZXNFbmFibGVkIHx8IHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5kYXRlc0VuYWJsZWQsXG4gICAgICAgIHJhbmdlczogY2hlY2tSYW5nZXNXaXRoTWF4RGF0ZSh0aGlzLmJzQ29uZmlnICYmIHRoaXMuYnNDb25maWcucmFuZ2VzLCB0aGlzLm1heERhdGUgfHwgdGhpcy5ic0NvbmZpZyAmJiB0aGlzLmJzQ29uZmlnLm1heERhdGUpLFxuICAgICAgICBtYXhEYXRlUmFuZ2U6IHRoaXMuYnNDb25maWcgJiYgdGhpcy5ic0NvbmZpZy5tYXhEYXRlUmFuZ2UsXG4gICAgICAgIGluaXRDdXJyZW50VGltZTogdGhpcy5ic0NvbmZpZz8uaW5pdEN1cnJlbnRUaW1lXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fZGF0ZXBpY2tlclJlZiA9IHRoaXMuX2RhdGVwaWNrZXJcbiAgICAgICAgLnByb3ZpZGUoe3Byb3ZpZGU6IEJzRGF0ZXBpY2tlckNvbmZpZywgdXNlVmFsdWU6IHRoaXMuX2NvbmZpZ30pXG4gICAgICAgIC5hdHRhY2goQnNEYXRlcmFuZ2VwaWNrZXJJbmxpbmVDb250YWluZXJDb21wb25lbnQpXG4gICAgICAgIC50byh0aGlzLl9lbGVtZW50UmVmKVxuICAgICAgICAuc2hvdygpO1xuXG4gICAgICB0aGlzLmluaXRTdWJzY3JpYmVzKCk7XG4gICAgfVxuXG4gIGluaXRTdWJzY3JpYmVzKCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmVTdWJzY3JpcHRpb25zKCk7XG4gICAgLy8gaWYgZGF0ZSBjaGFuZ2VzIGZyb20gZXh0ZXJuYWwgc291cmNlIChtb2RlbCAtPiB2aWV3KVxuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuYnNWYWx1ZUNoYW5nZS5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlW10pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVwaWNrZXJSZWYpIHtcbiAgICAgICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIGlmIGRhdGUgY2hhbmdlcyBmcm9tIHBpY2tlciAodmlldyAtPiBtb2RlbClcbiAgICBpZiAodGhpcy5fZGF0ZXBpY2tlclJlZikge1xuICAgICAgdGhpcy5fc3Vicy5wdXNoKFxuICAgICAgICB0aGlzLl9kYXRlcGlja2VyUmVmLmluc3RhbmNlLnZhbHVlQ2hhbmdlXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKHJhbmdlOiBEYXRlW10pID0+IHJhbmdlICYmIHJhbmdlWzBdICYmICEhcmFuZ2VbMV0pXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBEYXRlW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnNWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHVuc3Vic2NyaWJlU3Vic2NyaXB0aW9ucygpIHtcbiAgICBpZiAodGhpcy5fc3Vicz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9zdWJzLm1hcChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgdGhpcy5fc3Vicy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICB0aGlzLl9kYXRlcGlja2VyLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVTdWJzY3JpcHRpb25zKCk7XG4gICAgfVxufVxuIl19
@@ -1,21 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { BsDatepickerConfig } from './bs-datepicker.config';
3
- import * as i0 from "@angular/core";
4
- export class BsDaterangepickerInlineConfig extends BsDatepickerConfig {
5
- constructor() {
6
- super(...arguments);
7
- // DatepickerRenderOptions
8
- this.displayMonths = 2;
9
- /** turn on/off animation */
10
- this.isAnimated = false;
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDaterangepickerInlineConfig, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
13
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDaterangepickerInlineConfig, providedIn: 'root' }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDaterangepickerInlineConfig, decorators: [{
16
- type: Injectable,
17
- args: [{
18
- providedIn: 'root'
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXJhbmdlcGlja2VyLWlubGluZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGF0ZXBpY2tlci9icy1kYXRlcmFuZ2VwaWNrZXItaW5saW5lLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUs1RCxNQUFNLE9BQU8sNkJBQThCLFNBQVEsa0JBQWtCO0lBSHJFOztRQUlJLDBCQUEwQjtRQUNuQixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUN6Qiw0QkFBNEI7UUFDckIsZUFBVSxHQUFHLEtBQUssQ0FBQztLQUM3Qjs4R0FMWSw2QkFBNkI7a0hBQTdCLDZCQUE2QixjQUY1QixNQUFNOzsyRkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyQ29uZmlnIH0gZnJvbSAnLi9icy1kYXRlcGlja2VyLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEJzRGF0ZXJhbmdlcGlja2VySW5saW5lQ29uZmlnIGV4dGVuZHMgQnNEYXRlcGlja2VyQ29uZmlnIHtcbiAgICAvLyBEYXRlcGlja2VyUmVuZGVyT3B0aW9uc1xuICBvdmVycmlkZSBkaXNwbGF5TW9udGhzID0gMjtcbiAgICAvKiogdHVybiBvbi9vZmYgYW5pbWF0aW9uICovXG4gIG92ZXJyaWRlIGlzQW5pbWF0ZWQgPSBmYWxzZTtcbn1cbiJdfQ==
@@ -1,215 +0,0 @@
1
- import { ChangeDetectorRef, Directive, ElementRef, forwardRef, Host, Renderer2 } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { parseDate, formatDate, getLocale, isAfter, isBefore, isArray, isDateValid, utcAsLocal } from 'ngx-bootstrap/chronos';
4
- import { BsDaterangepickerDirective } from './bs-daterangepicker.component';
5
- import { BsLocaleService } from './bs-locale.service';
6
- import { Subscription } from 'rxjs';
7
- import { distinctUntilChanged } from 'rxjs/operators';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./bs-daterangepicker.component";
10
- import * as i2 from "./bs-locale.service";
11
- const BS_DATERANGEPICKER_VALUE_ACCESSOR = {
12
- provide: NG_VALUE_ACCESSOR,
13
- useExisting: forwardRef(() => BsDaterangepickerInputDirective),
14
- multi: true
15
- };
16
- const BS_DATERANGEPICKER_VALIDATOR = {
17
- provide: NG_VALIDATORS,
18
- useExisting: forwardRef(() => BsDaterangepickerInputDirective),
19
- multi: true
20
- };
21
- export class BsDaterangepickerInputDirective {
22
- constructor(_picker, _localeService, _renderer, _elRef, changeDetection) {
23
- this._picker = _picker;
24
- this._localeService = _localeService;
25
- this._renderer = _renderer;
26
- this._elRef = _elRef;
27
- this.changeDetection = changeDetection;
28
- this._onChange = Function.prototype;
29
- this._onTouched = Function.prototype;
30
- this._validatorChange = Function.prototype;
31
- this._subs = new Subscription();
32
- }
33
- ngOnInit() {
34
- const setBsValue = (value) => {
35
- this._setInputValue(value);
36
- if (this._value !== value) {
37
- this._value = value;
38
- this._onChange(value);
39
- this._onTouched();
40
- }
41
- this.changeDetection.markForCheck();
42
- };
43
- // if value set via [bsValue] it will not get into value change
44
- if (this._picker._bsValue) {
45
- setBsValue(this._picker._bsValue);
46
- }
47
- // update input value on datepicker value update
48
- this._subs.add(this._picker.bsValueChange.subscribe((value) => {
49
- this._setInputValue(value);
50
- if (this._value !== value) {
51
- this._value = value;
52
- this._onChange(value);
53
- this._onTouched();
54
- }
55
- this.changeDetection.markForCheck();
56
- }));
57
- // update input value on locale change
58
- this._subs.add(this._localeService.localeChange.subscribe(() => {
59
- this._setInputValue(this._value);
60
- }));
61
- this._subs.add(
62
- // update input value on format change
63
- this._picker.rangeInputFormat$.pipe(distinctUntilChanged()).subscribe(() => {
64
- this._setInputValue(this._value);
65
- }));
66
- }
67
- ngOnDestroy() {
68
- this._subs.unsubscribe();
69
- }
70
- onKeydownEvent(event) {
71
- if (event.keyCode === 13 || event.code === 'Enter') {
72
- this.hide();
73
- }
74
- }
75
- _setInputValue(date) {
76
- let range = '';
77
- if (date) {
78
- const start = !date[0] ? ''
79
- : formatDate(date[0], this._picker._config.rangeInputFormat, this._localeService.currentLocale);
80
- const end = !date[1] ? ''
81
- : formatDate(date[1], this._picker._config.rangeInputFormat, this._localeService.currentLocale);
82
- range = (start && end) ? start + this._picker._config.rangeSeparator + end : '';
83
- }
84
- this._renderer.setProperty(this._elRef.nativeElement, 'value', range);
85
- }
86
- onChange(event) {
87
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
88
- this.writeValue(event.target.value);
89
- this._onChange(this._value);
90
- if (this._picker._config.returnFocusToInput) {
91
- this._renderer.selectRootElement(this._elRef.nativeElement).focus();
92
- }
93
- this._onTouched();
94
- }
95
- validate(c) {
96
- let _value = c.value;
97
- const errors = [];
98
- if (_value === null || _value === undefined || !isArray(_value)) {
99
- return null;
100
- }
101
- _value = _value.slice().sort((a, b) => a.getTime() - b.getTime());
102
- const _isFirstDateValid = isDateValid(_value[0]);
103
- const _isSecondDateValid = isDateValid(_value[1]);
104
- if (!_isFirstDateValid) {
105
- return { bsDate: { invalid: _value[0] } };
106
- }
107
- if (!_isSecondDateValid) {
108
- return { bsDate: { invalid: _value[1] } };
109
- }
110
- if (this._picker && this._picker.minDate && isBefore(_value[0], this._picker.minDate, 'date')) {
111
- _value[0] = this._picker.minDate;
112
- errors.push({ bsDate: { minDate: this._picker.minDate } });
113
- }
114
- if (this._picker && this._picker.maxDate && isAfter(_value[1], this._picker.maxDate, 'date')) {
115
- _value[1] = this._picker.maxDate;
116
- errors.push({ bsDate: { maxDate: this._picker.maxDate } });
117
- }
118
- if (errors.length > 0) {
119
- this.writeValue(_value);
120
- return errors;
121
- }
122
- return null;
123
- }
124
- registerOnValidatorChange(fn) {
125
- this._validatorChange = fn;
126
- }
127
- writeValue(value) {
128
- if (!value) {
129
- this._value = void 0;
130
- }
131
- else {
132
- const _localeKey = this._localeService.currentLocale;
133
- const _locale = getLocale(_localeKey);
134
- if (!_locale) {
135
- throw new Error(`Locale "${_localeKey}" is not defined, please add it with "defineLocale(...)"`);
136
- }
137
- let _input = [];
138
- if (typeof value === 'string') {
139
- const trimmedSeparator = this._picker._config.rangeSeparator.trim();
140
- if (value.replace(/[^-]/g, '').length > 1) {
141
- _input = value.split(this._picker._config.rangeSeparator);
142
- }
143
- else {
144
- _input = value
145
- .split(trimmedSeparator.length > 0 ? trimmedSeparator : this._picker._config.rangeSeparator)
146
- .map(_val => _val.trim());
147
- }
148
- }
149
- if (Array.isArray(value)) {
150
- _input = value;
151
- }
152
- this._value = _input
153
- .map((_val) => {
154
- if (this._picker._config.useUtc) {
155
- return utcAsLocal(parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale));
156
- }
157
- return parseDate(_val, this._picker._config.rangeInputFormat, this._localeService.currentLocale);
158
- })
159
- .map((date) => (isNaN(date.valueOf()) ? void 0 : date));
160
- }
161
- this._picker.bsValue = this._value;
162
- }
163
- setDisabledState(isDisabled) {
164
- this._picker.isDisabled = isDisabled;
165
- if (isDisabled) {
166
- this._renderer.setAttribute(this._elRef.nativeElement, 'disabled', 'disabled');
167
- return;
168
- }
169
- this._renderer.removeAttribute(this._elRef.nativeElement, 'disabled');
170
- }
171
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
172
- registerOnChange(fn) {
173
- this._onChange = fn;
174
- }
175
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
- registerOnTouched(fn) {
177
- this._onTouched = fn;
178
- }
179
- onBlur() {
180
- this._onTouched();
181
- }
182
- hide() {
183
- this._picker.hide();
184
- this._renderer.selectRootElement(this._elRef.nativeElement).blur();
185
- if (this._picker._config.returnFocusToInput) {
186
- this._renderer.selectRootElement(this._elRef.nativeElement).focus();
187
- }
188
- }
189
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDaterangepickerInputDirective, deps: [{ token: i1.BsDaterangepickerDirective, host: true }, { token: i2.BsLocaleService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
190
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BsDaterangepickerInputDirective, isStandalone: true, selector: "input[bsDaterangepicker]", host: { listeners: { "change": "onChange($event)", "keyup.esc": "hide()", "keydown": "onKeydownEvent($event)", "blur": "onBlur()" } }, providers: [
191
- BS_DATERANGEPICKER_VALUE_ACCESSOR,
192
- BS_DATERANGEPICKER_VALIDATOR
193
- ], ngImport: i0 }); }
194
- }
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BsDaterangepickerInputDirective, decorators: [{
196
- type: Directive,
197
- args: [{
198
- selector: `input[bsDaterangepicker]`,
199
- // eslint-disable-next-line @angular-eslint/no-host-metadata-property
200
- host: {
201
- '(change)': 'onChange($event)',
202
- '(keyup.esc)': 'hide()',
203
- '(keydown)': 'onKeydownEvent($event)',
204
- '(blur)': 'onBlur()'
205
- },
206
- providers: [
207
- BS_DATERANGEPICKER_VALUE_ACCESSOR,
208
- BS_DATERANGEPICKER_VALIDATOR
209
- ],
210
- standalone: true
211
- }]
212
- }], ctorParameters: () => [{ type: i1.BsDaterangepickerDirective, decorators: [{
213
- type: Host
214
- }] }, { type: i2.BsLocaleService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }] });
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZGF0ZXJhbmdlcGlja2VyLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRlcGlja2VyL2JzLWRhdGVyYW5nZXBpY2tlci1pbnB1dC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixJQUFJLEVBSUosU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFdBQVcsRUFDWCxVQUFVLEVBQ1gsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUV0RCxNQUFNLGlDQUFpQyxHQUFhO0lBQ2xELE9BQU8sRUFBRSxpQkFBaUI7SUFDeEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztJQUNoRSxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLDRCQUE0QixHQUFhO0lBQzdDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUM7SUFDOUQsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDO0FBa0JGLE1BQU0sT0FBTywrQkFBK0I7SUFR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ZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3QsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBQcm92aWRlcixcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgcGFyc2VEYXRlLFxuICBmb3JtYXREYXRlLFxuICBnZXRMb2NhbGUsXG4gIGlzQWZ0ZXIsXG4gIGlzQmVmb3JlLFxuICBpc0FycmF5LFxuICBpc0RhdGVWYWxpZCxcbiAgdXRjQXNMb2NhbFxufSBmcm9tICduZ3gtYm9vdHN0cmFwL2Nocm9ub3MnO1xuXG5pbXBvcnQgeyBCc0RhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gJy4vYnMtZGF0ZXJhbmdlcGlja2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc0xvY2FsZVNlcnZpY2UgfSBmcm9tICcuL2JzLWxvY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmNvbnN0IEJTX0RBVEVSQU5HRVBJQ0tFUl9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJzRGF0ZXJhbmdlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuY29uc3QgQlNfREFURVJBTkdFUElDS0VSX1ZBTElEQVRPUjogUHJvdmlkZXIgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJzRGF0ZXJhbmdlcGlja2VySW5wdXREaXJlY3RpdmUpLFxuICBtdWx0aTogdHJ1ZVxufTtcblxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYGlucHV0W2JzRGF0ZXJhbmdlcGlja2VyXWAsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gICAgaG9zdDoge1xuICAgICAgICAnKGNoYW5nZSknOiAnb25DaGFuZ2UoJGV2ZW50KScsXG4gICAgICAgICcoa2V5dXAuZXNjKSc6ICdoaWRlKCknLFxuICAgICAgICAnKGtleWRvd24pJzogJ29uS2V5ZG93bkV2ZW50KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ29uQmx1cigpJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICBCU19EQVRFUkFOR0VQSUNLRVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgICBCU19EQVRFUkFOR0VQSUNLRVJfVkFMSURBVE9SXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEJzRGF0ZXJhbmdlcGlja2VySW5wdXREaXJlY3RpdmVcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX29uQ2hhbmdlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuICBwcml2YXRlIF9vblRvdWNoZWQgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIHByaXZhdGUgX3ZhbGlkYXRvckNoYW5nZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgcHJpdmF0ZSBfdmFsdWU/OiAoRGF0ZXx1bmRlZmluZWQpW107XG4gIHByaXZhdGUgX3N1YnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoQEhvc3QoKSBwcml2YXRlIF9waWNrZXI6IEJzRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9sb2NhbGVTZXJ2aWNlOiBCc0xvY2FsZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHNldEJzVmFsdWUgPSAodmFsdWU6IChEYXRlfHVuZGVmaW5lZClbXSkgPT4ge1xuICAgICAgdGhpcy5fc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgICBpZiAodGhpcy5fdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9O1xuXG4gICAgLy8gaWYgdmFsdWUgc2V0IHZpYSBbYnNWYWx1ZV0gaXQgd2lsbCBub3QgZ2V0IGludG8gdmFsdWUgY2hhbmdlXG4gICAgaWYgKHRoaXMuX3BpY2tlci5fYnNWYWx1ZSkge1xuICAgICAgc2V0QnNWYWx1ZSh0aGlzLl9waWNrZXIuX2JzVmFsdWUpO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSBpbnB1dCB2YWx1ZSBvbiBkYXRlcGlja2VyIHZhbHVlIHVwZGF0ZVxuICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgdGhpcy5fcGlja2VyLmJzVmFsdWVDaGFuZ2Uuc3Vic2NyaWJlKCh2YWx1ZTogRGF0ZVtdKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgICBpZiAodGhpcy5fdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KSk7XG5cbiAgICAvLyB1cGRhdGUgaW5wdXQgdmFsdWUgb24gbG9jYWxlIGNoYW5nZVxuICAgIHRoaXMuX3N1YnMuYWRkKHRoaXMuX2xvY2FsZVNlcnZpY2UubG9jYWxlQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLl9zZXRJbnB1dFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLl9zdWJzLmFkZChcbiAgICAgIC8vIHVwZGF0ZSBpbnB1dCB2YWx1ZSBvbiBmb3JtYXQgY2hhbmdlXG4gICAgICB0aGlzLl9waWNrZXIucmFuZ2VJbnB1dEZvcm1hdCQucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zZXRJbnB1dFZhbHVlKHRoaXMuX3ZhbHVlKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzIHx8IGV2ZW50LmNvZGUgPT09ICdFbnRlcicpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIF9zZXRJbnB1dFZhbHVlKGRhdGU/OiAoRGF0ZXx1bmRlZmluZWQpW10pOiB2b2lkIHtcbiAgICBsZXQgcmFuZ2UgPSAnJztcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgY29uc3Qgc3RhcnQ6IHN0cmluZyA9ICFkYXRlWzBdID8gJydcbiAgICAgICAgOiBmb3JtYXREYXRlKGRhdGVbMF0sXG4gICAgICAgICAgdGhpcy5fcGlja2VyLl9jb25maWcucmFuZ2VJbnB1dEZvcm1hdCxcbiAgICAgICAgICB0aGlzLl9sb2NhbGVTZXJ2aWNlLmN1cnJlbnRMb2NhbGVcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IGVuZDogc3RyaW5nID0gIWRhdGVbMV0gPyAnJ1xuICAgICAgICA6IGZvcm1hdERhdGUoXG4gICAgICAgICAgZGF0ZVsxXSxcbiAgICAgICAgICB0aGlzLl9waWNrZXIuX2NvbmZpZy5yYW5nZUlucHV0Rm9ybWF0LFxuICAgICAgICAgIHRoaXMuX2xvY2FsZVNlcnZpY2UuY3VycmVudExvY2FsZVxuICAgICAgICApO1xuICAgICAgcmFuZ2UgPSAoc3RhcnQgJiYgZW5kKSA/IHN0YXJ0ICsgdGhpcy5fcGlja2VyLl9jb25maWcucmFuZ2VTZXBhcmF0b3IgKyBlbmQgOiAnJztcbiAgICB9XG4gICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgcmFuZ2UpO1xuICB9XG5cbiAgb25DaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB0aGlzLndyaXRlVmFsdWUoKGV2ZW50LnRhcmdldCBhcyBhbnkpLnZhbHVlKTtcbiAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgaWYgKHRoaXMuX3BpY2tlci5fY29uZmlnLnJldHVybkZvY3VzVG9JbnB1dCkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcbiAgICB9XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgbGV0IF92YWx1ZTogW0RhdGUsIERhdGVdID0gYy52YWx1ZTtcbiAgICBjb25zdCBlcnJvcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W10gPSBbXTtcblxuICAgIGlmIChfdmFsdWUgPT09IG51bGwgfHwgX3ZhbHVlID09PSB1bmRlZmluZWQgfHwgIWlzQXJyYXkoX3ZhbHVlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgX3ZhbHVlID0gX3ZhbHVlLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS5nZXRUaW1lKCkgLSBiLmdldFRpbWUoKSkgYXMgW0RhdGUsIERhdGVdO1xuXG4gICAgY29uc3QgX2lzRmlyc3REYXRlVmFsaWQgPSBpc0RhdGVWYWxpZChfdmFsdWVbMF0pO1xuICAgIGNvbnN0IF9pc1NlY29uZERhdGVWYWxpZCA9IGlzRGF0ZVZhbGlkKF92YWx1ZVsxXSk7XG5cbiAgICBpZiAoIV9pc0ZpcnN0RGF0ZVZhbGlkKSB7XG4gICAgICByZXR1cm4geyBic0RhdGU6IHsgaW52YWxpZDogX3ZhbHVlWzBdIH0gfTtcbiAgICB9XG5cbiAgICBpZiAoIV9pc1NlY29uZERhdGVWYWxpZCkge1xuICAgICAgcmV0dXJuIHsgYnNEYXRlOiB7IGludmFsaWQ6IF92YWx1ZVsxXSB9IH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BpY2tlciAmJiB0aGlzLl9waWNrZXIubWluRGF0ZSAmJiBpc0JlZm9yZShfdmFsdWVbMF0sIHRoaXMuX3BpY2tlci5taW5EYXRlLCAnZGF0ZScpKSB7XG4gICAgICBfdmFsdWVbMF0gPSB0aGlzLl9waWNrZXIubWluRGF0ZTtcbiAgICAgIGVycm9ycy5wdXNoKHsgYnNEYXRlOiB7IG1pbkRhdGU6IHRoaXMuX3BpY2tlci5taW5EYXRlIH0gfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3BpY2tlciAmJiB0aGlzLl9waWNrZXIubWF4RGF0ZSAmJiBpc0FmdGVyKF92YWx1ZVsxXSwgdGhpcy5fcGlja2VyLm1heERhdGUsICdkYXRlJykpIHtcbiAgICAgIF92YWx1ZVsxXSA9IHRoaXMuX3BpY2tlci5tYXhEYXRlO1xuICAgICAgZXJyb3JzLnB1c2goeyBic0RhdGU6IHsgbWF4RGF0ZTogdGhpcy5fcGlja2VyLm1heERhdGUgfSB9KTtcbiAgICB9XG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUoX3ZhbHVlKTtcblxuICAgICAgcmV0dXJuIGVycm9ycztcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IERhdGVbXSB8IHN0cmluZykge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdm9pZCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBfbG9jYWxlS2V5ID0gdGhpcy5fbG9jYWxlU2VydmljZS5jdXJyZW50TG9jYWxlO1xuICAgICAgY29uc3QgX2xvY2FsZSA9IGdldExvY2FsZShfbG9jYWxlS2V5KTtcbiAgICAgIGlmICghX2xvY2FsZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYExvY2FsZSBcIiR7X2xvY2FsZUtleX1cIiBpcyBub3QgZGVmaW5lZCwgcGxlYXNlIGFkZCBpdCB3aXRoIFwiZGVmaW5lTG9jYWxlKC4uLilcImBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IF9pbnB1dDogKHN0cmluZyB8IERhdGUpW10gPSBbXTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHRyaW1tZWRTZXBhcmF0b3IgPSB0aGlzLl9waWNrZXIuX2NvbmZpZy5yYW5nZVNlcGFyYXRvci50cmltKCk7XG4gICAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKC9bXi1dL2csICcnKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgX2lucHV0ID0gdmFsdWUuc3BsaXQodGhpcy5fcGlja2VyLl9jb25maWcucmFuZ2VTZXBhcmF0b3IpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF9pbnB1dCA9IHZhbHVlXG4gICAgICAgICAgICAuc3BsaXQodHJpbW1lZFNlcGFyYXRvci5sZW5ndGggPiAwID8gdHJpbW1lZFNlcGFyYXRvciA6IHRoaXMuX3BpY2tlci5fY29uZmlnLnJhbmdlU2VwYXJhdG9yKVxuICAgICAgICAgICAgLm1hcChfdmFsID0+IF92YWwudHJpbSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgX2lucHV0ID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ZhbHVlID0gX2lucHV0XG4gICAgICAgIC5tYXAoKF92YWw6IHN0cmluZyB8IERhdGUpOiBEYXRlID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9waWNrZXIuX2NvbmZpZy51c2VVdGMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHV0Y0FzTG9jYWwoXG4gICAgICAgICAgICAgICAgcGFyc2VEYXRlKF92YWwsIHRoaXMuX3BpY2tlci5fY29uZmlnLnJhbmdlSW5wdXRGb3JtYXQsIHRoaXMuX2xvY2FsZVNlcnZpY2UuY3VycmVudExvY2FsZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRGF0ZShfdmFsLCB0aGlzLl9waWNrZXIuX2NvbmZpZy5yYW5nZUlucHV0Rm9ybWF0LCB0aGlzLl9sb2NhbGVTZXJ2aWNlLmN1cnJlbnRMb2NhbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICAubWFwKChkYXRlOiBEYXRlKSA9PiAoaXNOYU4oZGF0ZS52YWx1ZU9mKCkpID8gdm9pZCAwIDogZGF0ZSkpO1xuICAgIH1cblxuICAgIHRoaXMuX3BpY2tlci5ic1ZhbHVlID0gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9waWNrZXIuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVBdHRyaWJ1dGUodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJyk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuX3BpY2tlci5oaWRlKCk7XG4gICAgdGhpcy5fcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCkuYmx1cigpO1xuXG4gICAgaWYgKHRoaXMuX3BpY2tlci5fY29uZmlnLnJldHVybkZvY3VzVG9JbnB1dCkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIuc2VsZWN0Um9vdEVsZW1lbnQodGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudCkuZm9jdXMoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==