@taiga-ui/core 4.65.0 → 5.0.0-canary.8b64ec1

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 (655) hide show
  1. package/README.md +1 -1
  2. package/classes/accessors.d.ts +2 -2
  3. package/classes/driver.d.ts +1 -1
  4. package/components/button/button.directive.d.ts +2 -3
  5. package/components/button/button.options.d.ts +1 -1
  6. package/components/calendar/calendar-sheet.component.d.ts +2 -7
  7. package/components/calendar/calendar-sheet.options.d.ts +1 -3
  8. package/{pipes/calendar-sheet → components/calendar}/calendar-sheet.pipe.d.ts +2 -2
  9. package/components/calendar/calendar-spin.component.d.ts +1 -0
  10. package/components/calendar/calendar-year.component.d.ts +1 -1
  11. package/components/calendar/calendar.options.d.ts +9 -0
  12. package/components/calendar/index.d.ts +3 -0
  13. package/{pipes/order-week-days → components/calendar}/order-week-days.pipe.d.ts +1 -1
  14. package/components/cell/cell.directive.d.ts +9 -0
  15. package/components/cell/cell.options.d.ts +6 -0
  16. package/components/cell/index.d.ts +2 -0
  17. package/components/data-list/data-list.component.d.ts +8 -12
  18. package/components/data-list/data-list.d.ts +3 -4
  19. package/components/data-list/data-list.tokens.d.ts +1 -20
  20. package/components/data-list/index.d.ts +3 -4
  21. package/components/data-list/opt-group.directive.d.ts +2 -2
  22. package/components/data-list/option-content.directive.d.ts +14 -0
  23. package/components/data-list/option-with-value.directive.d.ts +9 -0
  24. package/components/data-list/option.directive.d.ts +19 -0
  25. package/components/error/error.component.d.ts +6 -8
  26. package/components/error/error.d.ts +4 -0
  27. package/components/error/error.directive.d.ts +19 -0
  28. package/components/error/error.pipe.d.ts +10 -0
  29. package/components/error/index.d.ts +3 -0
  30. package/components/expand/expand.component.d.ts +9 -28
  31. package/components/expand/index.d.ts +0 -2
  32. package/components/icon/icon.component.d.ts +6 -11
  33. package/components/index.d.ts +3 -3
  34. package/components/input/index.d.ts +2 -0
  35. package/components/input/input.d.ts +5 -0
  36. package/components/input/input.directive.d.ts +29 -0
  37. package/components/label/label.directive.d.ts +1 -1
  38. package/components/link/index.d.ts +0 -1
  39. package/components/link/link.directive.d.ts +8 -6
  40. package/components/loader/loader.component.d.ts +7 -7
  41. package/components/loader/loader.options.d.ts +1 -3
  42. package/components/notification/index.d.ts +3 -0
  43. package/components/notification/notification.component.d.ts +14 -0
  44. package/components/notification/notification.d.ts +3 -0
  45. package/components/notification/notification.directive.d.ts +7 -12
  46. package/components/notification/notification.options.d.ts +10 -7
  47. package/components/notification/notification.service.d.ts +17 -0
  48. package/components/root/root.component.d.ts +4 -7
  49. package/components/scrollbar/scroll-into-view.directive.d.ts +3 -2
  50. package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
  51. package/components/scrollbar/scrollbar.component.d.ts +1 -5
  52. package/components/scrollbar/scrollbar.directive.d.ts +2 -2
  53. package/components/scrollbar/scrollbar.options.d.ts +1 -1
  54. package/components/spin-button/spin-button.component.d.ts +9 -10
  55. package/components/textfield/index.d.ts +1 -4
  56. package/components/textfield/select-like.directive.d.ts +1 -0
  57. package/components/textfield/textfield-content.directive.d.ts +3 -2
  58. package/components/textfield/textfield-icon.d.ts +3 -3
  59. package/components/textfield/textfield-multi/textfield-item.component.d.ts +3 -2
  60. package/components/textfield/textfield-multi/textfield-multi.component.d.ts +9 -15
  61. package/components/textfield/textfield.component.d.ts +20 -35
  62. package/components/textfield/textfield.d.ts +2 -4
  63. package/components/textfield/textfield.options.d.ts +8 -11
  64. package/{directives → components}/title/title.directive.d.ts +2 -3
  65. package/directives/appearance/appearance.directive.d.ts +5 -13
  66. package/directives/appearance/appearance.options.d.ts +1 -2
  67. package/directives/button-x/button-x.directive.d.ts +6 -0
  68. package/directives/button-x/index.d.ts +1 -0
  69. package/directives/date-format/date-format.directive.d.ts +3 -7
  70. package/directives/group/group.directive.d.ts +7 -7
  71. package/directives/group/group.options.d.ts +1 -3
  72. package/directives/icons/icons.bindings.d.ts +5 -0
  73. package/directives/icons/icons.directive.d.ts +8 -16
  74. package/directives/icons/index.d.ts +1 -0
  75. package/directives/index.d.ts +1 -5
  76. package/directives/items-handlers/items-handlers.directive.d.ts +5 -9
  77. package/directives/items-handlers/items-handlers.tokens.d.ts +4 -4
  78. package/directives/number-format/number-format.directive.d.ts +3 -7
  79. package/fesm2022/taiga-ui-core-classes.mjs +9 -11
  80. package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
  81. package/fesm2022/taiga-ui-core-components-button.mjs +13 -21
  82. package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
  83. package/fesm2022/taiga-ui-core-components-calendar.mjs +144 -47
  84. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  85. package/fesm2022/taiga-ui-core-components-cell.mjs +45 -0
  86. package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -0
  87. package/fesm2022/taiga-ui-core-components-data-list.mjs +113 -284
  88. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  89. package/fesm2022/taiga-ui-core-components-error.mjs +110 -26
  90. package/fesm2022/taiga-ui-core-components-error.mjs.map +1 -1
  91. package/fesm2022/taiga-ui-core-components-expand.mjs +34 -132
  92. package/fesm2022/taiga-ui-core-components-expand.mjs.map +1 -1
  93. package/fesm2022/taiga-ui-core-components-icon.mjs +22 -40
  94. package/fesm2022/taiga-ui-core-components-icon.mjs.map +1 -1
  95. package/fesm2022/taiga-ui-core-components-input.mjs +100 -0
  96. package/fesm2022/taiga-ui-core-components-input.mjs.map +1 -0
  97. package/fesm2022/taiga-ui-core-components-label.mjs +13 -18
  98. package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
  99. package/fesm2022/taiga-ui-core-components-link.mjs +16 -36
  100. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  101. package/fesm2022/taiga-ui-core-components-loader.mjs +20 -40
  102. package/fesm2022/taiga-ui-core-components-loader.mjs.map +1 -1
  103. package/fesm2022/taiga-ui-core-components-notification.mjs +107 -66
  104. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  105. package/fesm2022/taiga-ui-core-components-root.mjs +23 -60
  106. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  107. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +73 -87
  108. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  109. package/fesm2022/taiga-ui-core-components-spin-button.mjs +18 -31
  110. package/fesm2022/taiga-ui-core-components-spin-button.mjs.map +1 -1
  111. package/fesm2022/taiga-ui-core-components-textfield.mjs +165 -463
  112. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  113. package/fesm2022/taiga-ui-core-components-title.mjs +37 -0
  114. package/fesm2022/taiga-ui-core-components-title.mjs.map +1 -0
  115. package/fesm2022/taiga-ui-core-components.mjs +3 -3
  116. package/fesm2022/taiga-ui-core-directives-appearance.mjs +32 -69
  117. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  118. package/fesm2022/taiga-ui-core-directives-button-x.mjs +51 -0
  119. package/fesm2022/taiga-ui-core-directives-button-x.mjs.map +1 -0
  120. package/fesm2022/taiga-ui-core-directives-date-format.mjs +26 -20
  121. package/fesm2022/taiga-ui-core-directives-date-format.mjs.map +1 -1
  122. package/fesm2022/taiga-ui-core-directives-group.mjs +25 -40
  123. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  124. package/fesm2022/taiga-ui-core-directives-icons.mjs +35 -45
  125. package/fesm2022/taiga-ui-core-directives-icons.mjs.map +1 -1
  126. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs +18 -42
  127. package/fesm2022/taiga-ui-core-directives-items-handlers.mjs.map +1 -1
  128. package/fesm2022/taiga-ui-core-directives-number-format.mjs +32 -20
  129. package/fesm2022/taiga-ui-core-directives-number-format.mjs.map +1 -1
  130. package/fesm2022/taiga-ui-core-directives.mjs +1 -5
  131. package/fesm2022/taiga-ui-core-directives.mjs.map +1 -1
  132. package/fesm2022/taiga-ui-core-pipes-format-number.mjs +21 -15
  133. package/fesm2022/taiga-ui-core-pipes-format-number.mjs.map +1 -1
  134. package/fesm2022/taiga-ui-core-pipes.mjs +0 -8
  135. package/fesm2022/taiga-ui-core-pipes.mjs.map +1 -1
  136. package/fesm2022/taiga-ui-core-portals-alert.mjs +73 -0
  137. package/fesm2022/taiga-ui-core-portals-alert.mjs.map +1 -0
  138. package/fesm2022/taiga-ui-core-portals-dialog.mjs +159 -0
  139. package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -0
  140. package/fesm2022/{taiga-ui-core-directives-dropdown.mjs → taiga-ui-core-portals-dropdown.mjs} +249 -414
  141. package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -0
  142. package/fesm2022/taiga-ui-core-portals-hint.mjs +552 -0
  143. package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -0
  144. package/fesm2022/taiga-ui-core-portals-modal.mjs +89 -0
  145. package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -0
  146. package/fesm2022/taiga-ui-core-portals-popup.mjs +56 -0
  147. package/fesm2022/taiga-ui-core-portals-popup.mjs.map +1 -0
  148. package/fesm2022/taiga-ui-core-portals.mjs +11 -0
  149. package/fesm2022/taiga-ui-core-portals.mjs.map +1 -0
  150. package/fesm2022/taiga-ui-core-services.mjs +17 -81
  151. package/fesm2022/taiga-ui-core-services.mjs.map +1 -1
  152. package/fesm2022/taiga-ui-core-tokens.mjs +62 -81
  153. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  154. package/fesm2022/taiga-ui-core-utils-dom.mjs.map +1 -1
  155. package/fesm2022/taiga-ui-core-utils-format.mjs +1 -22
  156. package/fesm2022/taiga-ui-core-utils-format.mjs.map +1 -1
  157. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs +55 -19
  158. package/fesm2022/taiga-ui-core-utils-miscellaneous.mjs.map +1 -1
  159. package/fesm2022/taiga-ui-core.mjs +1 -1
  160. package/index.d.ts +1 -1
  161. package/package.json +61 -182
  162. package/pipes/format-number/format-number.pipe.d.ts +6 -4
  163. package/pipes/index.d.ts +0 -8
  164. package/portals/alert/alert.directive.d.ts +11 -0
  165. package/portals/alert/alert.service.d.ts +12 -0
  166. package/portals/alert/index.d.ts +2 -0
  167. package/portals/dialog/dialog.component.d.ts +14 -0
  168. package/portals/dialog/dialog.directive.d.ts +8 -0
  169. package/{components → portals}/dialog/dialog.factory.d.ts +1 -1
  170. package/portals/dialog/dialog.options.d.ts +25 -0
  171. package/{components/dialog/dialog-close.service.d.ts → portals/dialog/dialog.providers.d.ts} +2 -0
  172. package/portals/dialog/dialog.service.d.ts +10 -0
  173. package/portals/dialog/index.d.ts +6 -0
  174. package/portals/dropdown/dropdown-close.directive.d.ts +15 -0
  175. package/portals/dropdown/dropdown-content.directive.d.ts +9 -0
  176. package/{directives → portals}/dropdown/dropdown-context.directive.d.ts +0 -1
  177. package/{directives → portals}/dropdown/dropdown-hover.directive.d.ts +5 -10
  178. package/{directives → portals}/dropdown/dropdown-hover.options.d.ts +1 -3
  179. package/{directives → portals}/dropdown/dropdown-manual.directive.d.ts +2 -2
  180. package/portals/dropdown/dropdown-open.directive.d.ts +29 -0
  181. package/{directives → portals}/dropdown/dropdown-options.directive.d.ts +1 -5
  182. package/{directives → portals}/dropdown/dropdown-position-sided.directive.d.ts +3 -3
  183. package/{directives → portals}/dropdown/dropdown-position.directive.d.ts +6 -6
  184. package/{directives → portals}/dropdown/dropdown-selection.directive.d.ts +4 -5
  185. package/{directives → portals}/dropdown/dropdown.bindings.d.ts +0 -1
  186. package/{directives → portals}/dropdown/dropdown.d.ts +2 -3
  187. package/{directives → portals}/dropdown/dropdown.directive.d.ts +6 -8
  188. package/{directives → portals}/dropdown/index.d.ts +2 -4
  189. package/{directives → portals}/hint/hint-describe.directive.d.ts +4 -6
  190. package/{directives → portals}/hint/hint-host.directive.d.ts +2 -2
  191. package/{directives → portals}/hint/hint-hover.directive.d.ts +3 -4
  192. package/{directives → portals}/hint/hint-manual.directive.d.ts +2 -2
  193. package/portals/hint/hint-options.directive.d.ts +17 -0
  194. package/{directives → portals}/hint/hint-overflow.directive.d.ts +2 -2
  195. package/{directives → portals}/hint/hint-position.directive.d.ts +7 -8
  196. package/{directives → portals}/hint/hint-unstyled.component.d.ts +2 -7
  197. package/portals/hint/hint.component.d.ts +29 -0
  198. package/{directives → portals}/hint/hint.d.ts +1 -2
  199. package/portals/hint/hint.directive.d.ts +24 -0
  200. package/{directives → portals}/hint/index.d.ts +0 -2
  201. package/portals/index.d.ts +6 -0
  202. package/portals/modal/index.d.ts +2 -0
  203. package/portals/modal/modal.component.d.ts +17 -0
  204. package/portals/modal/modal.service.d.ts +13 -0
  205. package/portals/popup/popup.directive.d.ts +12 -0
  206. package/{directives → portals}/popup/popup.service.d.ts +1 -1
  207. package/{directives → portals}/popup/popups.component.d.ts +2 -2
  208. package/services/index.d.ts +0 -3
  209. package/styles/components/appearance.less +5 -0
  210. package/styles/components/button.less +10 -22
  211. package/styles/components/icon.less +42 -21
  212. package/styles/components/icons.less +18 -13
  213. package/styles/components/label.less +3 -12
  214. package/styles/components/link.less +8 -27
  215. package/styles/components/notification.less +31 -65
  216. package/styles/components/textfield.less +128 -213
  217. package/styles/components/title.less +8 -8
  218. package/styles/mixins/appearance.less +11 -26
  219. package/styles/mixins/appearance.scss +9 -24
  220. package/styles/mixins/date-picker.less +1 -1
  221. package/styles/mixins/mixins.less +1 -7
  222. package/styles/mixins/mixins.scss +1 -7
  223. package/styles/mixins/picker.less +1 -1
  224. package/styles/mixins/picker.scss +1 -1
  225. package/styles/mixins/slider.less +28 -24
  226. package/styles/mixins/slider.scss +23 -22
  227. package/styles/taiga-ui-local.less +0 -1
  228. package/styles/taiga-ui-local.scss +0 -1
  229. package/styles/taiga-ui-theme.less +0 -1
  230. package/styles/theme/appearance/outline.less +9 -18
  231. package/styles/theme/appearance/primary.less +2 -4
  232. package/styles/theme/appearance/secondary.less +6 -14
  233. package/styles/theme/appearance/status.less +0 -4
  234. package/styles/theme/appearance/table.less +36 -35
  235. package/styles/theme/appearance/textfield.less +27 -28
  236. package/styles/theme/appearance.less +0 -1
  237. package/styles/theme/variables.less +16 -19
  238. package/styles/variables/media.less +13 -18
  239. package/styles/variables/media.scss +13 -13
  240. package/tokens/breakpoint.d.ts +4 -0
  241. package/tokens/common-icons.d.ts +3 -3
  242. package/tokens/date-format.d.ts +2 -3
  243. package/tokens/i18n.d.ts +7 -7
  244. package/tokens/icon-resolver.d.ts +1 -5
  245. package/tokens/icons.d.ts +0 -4
  246. package/tokens/index.d.ts +2 -4
  247. package/tokens/number-format.d.ts +2 -3
  248. package/tokens/validation-errors.d.ts +4 -0
  249. package/types/direction.d.ts +1 -1
  250. package/types/index.d.ts +0 -3
  251. package/types/point.d.ts +1 -1
  252. package/types/size.d.ts +0 -11
  253. package/utils/format/index.d.ts +0 -1
  254. package/utils/miscellaneous/get-duration.d.ts +2 -0
  255. package/utils/miscellaneous/index.d.ts +2 -1
  256. package/utils/miscellaneous/provide-taiga.d.ts +13 -0
  257. package/animations/animations.d.ts +0 -109
  258. package/animations/index.d.ts +0 -1
  259. package/components/alert/alert.component.d.ts +0 -15
  260. package/components/alert/alert.directive.d.ts +0 -7
  261. package/components/alert/alert.interfaces.d.ts +0 -12
  262. package/components/alert/alert.service.d.ts +0 -7
  263. package/components/alert/alert.tokens.d.ts +0 -12
  264. package/components/alert/alerts.component.d.ts +0 -12
  265. package/components/alert/index.d.ts +0 -6
  266. package/components/data-list/data-list.directive.d.ts +0 -7
  267. package/components/data-list/option/option-content.d.ts +0 -16
  268. package/components/data-list/option/option-legacy.component.d.ts +0 -24
  269. package/components/data-list/option/option.directive.d.ts +0 -27
  270. package/components/dialog/active-zone-adapter.directive.d.ts +0 -11
  271. package/components/dialog/dialog.component.d.ts +0 -20
  272. package/components/dialog/dialog.directive.d.ts +0 -7
  273. package/components/dialog/dialog.interfaces.d.ts +0 -34
  274. package/components/dialog/dialog.service.d.ts +0 -7
  275. package/components/dialog/dialog.tokens.d.ts +0 -15
  276. package/components/dialog/dialogs.component.d.ts +0 -8
  277. package/components/dialog/index.d.ts +0 -8
  278. package/components/expand/expand-content.directive.d.ts +0 -8
  279. package/components/expand/expand.d.ts +0 -6
  280. package/components/fullscreen/fullscreen.component.d.ts +0 -14
  281. package/components/fullscreen/index.d.ts +0 -1
  282. package/components/link/link.options.d.ts +0 -12
  283. package/components/textfield/select.directive.d.ts +0 -19
  284. package/components/textfield/textfield-dropdown.directive.d.ts +0 -16
  285. package/components/textfield/textfield.directive.d.ts +0 -38
  286. package/directives/dropdown/dropdown-open-legacy.directive.d.ts +0 -12
  287. package/directives/dropdown/dropdown-open.directive.d.ts +0 -33
  288. package/directives/dropdown/dropdown-portal.directive.d.ts +0 -14
  289. package/directives/dropdown/dropdown.service.d.ts +0 -6
  290. package/directives/dropdown/dropdowns.component.d.ts +0 -9
  291. package/directives/hint/hint-options.directive.d.ts +0 -36
  292. package/directives/hint/hint.component.d.ts +0 -30
  293. package/directives/hint/hint.directive.d.ts +0 -26
  294. package/directives/hint/hint.service.d.ts +0 -13
  295. package/directives/hint/hints.component.d.ts +0 -12
  296. package/directives/popup/popup.directive.d.ts +0 -11
  297. package/directives/surface/index.d.ts +0 -1
  298. package/directives/surface/surface.directive.d.ts +0 -8
  299. package/esm2022/animations/animations.mjs +0 -363
  300. package/esm2022/animations/index.mjs +0 -2
  301. package/esm2022/animations/taiga-ui-core-animations.mjs +0 -5
  302. package/esm2022/classes/accessors.mjs +0 -31
  303. package/esm2022/classes/driver.mjs +0 -36
  304. package/esm2022/classes/index.mjs +0 -4
  305. package/esm2022/classes/taiga-ui-core-classes.mjs +0 -5
  306. package/esm2022/classes/vehicle.mjs +0 -7
  307. package/esm2022/components/alert/alert.component.mjs +0 -43
  308. package/esm2022/components/alert/alert.directive.mjs +0 -21
  309. package/esm2022/components/alert/alert.interfaces.mjs +0 -2
  310. package/esm2022/components/alert/alert.service.mjs +0 -18
  311. package/esm2022/components/alert/alert.tokens.mjs +0 -51
  312. package/esm2022/components/alert/alerts.component.mjs +0 -33
  313. package/esm2022/components/alert/index.mjs +0 -6
  314. package/esm2022/components/alert/taiga-ui-core-components-alert.mjs +0 -5
  315. package/esm2022/components/button/button.directive.mjs +0 -43
  316. package/esm2022/components/button/button.options.mjs +0 -7
  317. package/esm2022/components/button/index.mjs +0 -3
  318. package/esm2022/components/button/taiga-ui-core-components-button.mjs +0 -5
  319. package/esm2022/components/calendar/calendar-sheet.component.mjs +0 -168
  320. package/esm2022/components/calendar/calendar-sheet.options.mjs +0 -12
  321. package/esm2022/components/calendar/calendar-spin.component.mjs +0 -53
  322. package/esm2022/components/calendar/calendar-year.component.mjs +0 -128
  323. package/esm2022/components/calendar/calendar.component.mjs +0 -147
  324. package/esm2022/components/calendar/index.mjs +0 -6
  325. package/esm2022/components/calendar/taiga-ui-core-components-calendar.mjs +0 -5
  326. package/esm2022/components/data-list/data-list.component.mjs +0 -139
  327. package/esm2022/components/data-list/data-list.directive.mjs +0 -19
  328. package/esm2022/components/data-list/data-list.mjs +0 -14
  329. package/esm2022/components/data-list/data-list.tokens.mjs +0 -18
  330. package/esm2022/components/data-list/index.mjs +0 -9
  331. package/esm2022/components/data-list/opt-group.directive.mjs +0 -21
  332. package/esm2022/components/data-list/option/option-content.mjs +0 -36
  333. package/esm2022/components/data-list/option/option-legacy.component.mjs +0 -90
  334. package/esm2022/components/data-list/option/option.directive.mjs +0 -109
  335. package/esm2022/components/data-list/taiga-ui-core-components-data-list.mjs +0 -5
  336. package/esm2022/components/dialog/active-zone-adapter.directive.mjs +0 -37
  337. package/esm2022/components/dialog/dialog-close.service.mjs +0 -41
  338. package/esm2022/components/dialog/dialog.component.mjs +0 -63
  339. package/esm2022/components/dialog/dialog.directive.mjs +0 -21
  340. package/esm2022/components/dialog/dialog.factory.mjs +0 -15
  341. package/esm2022/components/dialog/dialog.interfaces.mjs +0 -2
  342. package/esm2022/components/dialog/dialog.service.mjs +0 -18
  343. package/esm2022/components/dialog/dialog.tokens.mjs +0 -33
  344. package/esm2022/components/dialog/dialogs.component.mjs +0 -31
  345. package/esm2022/components/dialog/index.mjs +0 -8
  346. package/esm2022/components/dialog/taiga-ui-core-components-dialog.mjs +0 -5
  347. package/esm2022/components/error/error.component.mjs +0 -34
  348. package/esm2022/components/error/index.mjs +0 -2
  349. package/esm2022/components/error/taiga-ui-core-components-error.mjs +0 -5
  350. package/esm2022/components/expand/expand-content.directive.mjs +0 -18
  351. package/esm2022/components/expand/expand.component.mjs +0 -124
  352. package/esm2022/components/expand/expand.mjs +0 -7
  353. package/esm2022/components/expand/index.mjs +0 -4
  354. package/esm2022/components/expand/taiga-ui-core-components-expand.mjs +0 -5
  355. package/esm2022/components/fullscreen/fullscreen.component.mjs +0 -71
  356. package/esm2022/components/fullscreen/index.mjs +0 -2
  357. package/esm2022/components/fullscreen/taiga-ui-core-components-fullscreen.mjs +0 -5
  358. package/esm2022/components/icon/icon.component.mjs +0 -44
  359. package/esm2022/components/icon/icon.pipe.mjs +0 -19
  360. package/esm2022/components/icon/index.mjs +0 -3
  361. package/esm2022/components/icon/taiga-ui-core-components-icon.mjs +0 -5
  362. package/esm2022/components/index.mjs +0 -18
  363. package/esm2022/components/label/index.mjs +0 -2
  364. package/esm2022/components/label/label.directive.mjs +0 -41
  365. package/esm2022/components/label/taiga-ui-core-components-label.mjs +0 -5
  366. package/esm2022/components/link/index.mjs +0 -3
  367. package/esm2022/components/link/link.directive.mjs +0 -47
  368. package/esm2022/components/link/link.options.mjs +0 -13
  369. package/esm2022/components/link/taiga-ui-core-components-link.mjs +0 -5
  370. package/esm2022/components/loader/index.mjs +0 -3
  371. package/esm2022/components/loader/loader.component.mjs +0 -46
  372. package/esm2022/components/loader/loader.options.mjs +0 -18
  373. package/esm2022/components/loader/taiga-ui-core-components-loader.mjs +0 -5
  374. package/esm2022/components/notification/index.mjs +0 -3
  375. package/esm2022/components/notification/notification.directive.mjs +0 -81
  376. package/esm2022/components/notification/notification.options.mjs +0 -23
  377. package/esm2022/components/notification/taiga-ui-core-components-notification.mjs +0 -5
  378. package/esm2022/components/root/index.mjs +0 -2
  379. package/esm2022/components/root/root.component.mjs +0 -87
  380. package/esm2022/components/root/taiga-ui-core-components-root.mjs +0 -5
  381. package/esm2022/components/scrollbar/index.mjs +0 -9
  382. package/esm2022/components/scrollbar/scroll-controls.component.mjs +0 -32
  383. package/esm2022/components/scrollbar/scroll-into-view.directive.mjs +0 -43
  384. package/esm2022/components/scrollbar/scroll-ref.directive.mjs +0 -19
  385. package/esm2022/components/scrollbar/scrollable.directive.mjs +0 -26
  386. package/esm2022/components/scrollbar/scrollbar.component.mjs +0 -72
  387. package/esm2022/components/scrollbar/scrollbar.directive.mjs +0 -93
  388. package/esm2022/components/scrollbar/scrollbar.options.mjs +0 -6
  389. package/esm2022/components/scrollbar/scrollbar.service.mjs +0 -46
  390. package/esm2022/components/scrollbar/taiga-ui-core-components-scrollbar.mjs +0 -5
  391. package/esm2022/components/spin-button/index.mjs +0 -2
  392. package/esm2022/components/spin-button/spin-button.component.mjs +0 -51
  393. package/esm2022/components/spin-button/taiga-ui-core-components-spin-button.mjs +0 -5
  394. package/esm2022/components/taiga-ui-core-components.mjs +0 -5
  395. package/esm2022/components/textfield/index.mjs +0 -16
  396. package/esm2022/components/textfield/select-like.directive.mjs +0 -42
  397. package/esm2022/components/textfield/select.directive.mjs +0 -64
  398. package/esm2022/components/textfield/taiga-ui-core-components-textfield.mjs +0 -5
  399. package/esm2022/components/textfield/textfield-accessor.mjs +0 -7
  400. package/esm2022/components/textfield/textfield-auxiliary.mjs +0 -7
  401. package/esm2022/components/textfield/textfield-content.directive.mjs +0 -22
  402. package/esm2022/components/textfield/textfield-dropdown.directive.mjs +0 -43
  403. package/esm2022/components/textfield/textfield-icon.mjs +0 -10
  404. package/esm2022/components/textfield/textfield-multi/textfield-item.component.mjs +0 -34
  405. package/esm2022/components/textfield/textfield-multi/textfield-multi.component.mjs +0 -137
  406. package/esm2022/components/textfield/textfield.component.mjs +0 -183
  407. package/esm2022/components/textfield/textfield.directive.mjs +0 -134
  408. package/esm2022/components/textfield/textfield.mjs +0 -19
  409. package/esm2022/components/textfield/textfield.options.mjs +0 -63
  410. package/esm2022/components/textfield/with-native-picker.directive.mjs +0 -24
  411. package/esm2022/directives/appearance/appearance.bindings.mjs +0 -15
  412. package/esm2022/directives/appearance/appearance.directive.mjs +0 -79
  413. package/esm2022/directives/appearance/appearance.options.mjs +0 -12
  414. package/esm2022/directives/appearance/index.mjs +0 -5
  415. package/esm2022/directives/appearance/taiga-ui-core-directives-appearance.mjs +0 -5
  416. package/esm2022/directives/appearance/with-appearance.mjs +0 -27
  417. package/esm2022/directives/date-format/date-format.directive.mjs +0 -31
  418. package/esm2022/directives/date-format/index.mjs +0 -2
  419. package/esm2022/directives/date-format/taiga-ui-core-directives-date-format.mjs +0 -5
  420. package/esm2022/directives/dropdown/dropdown-context.directive.mjs +0 -76
  421. package/esm2022/directives/dropdown/dropdown-hover.directive.mjs +0 -70
  422. package/esm2022/directives/dropdown/dropdown-hover.options.mjs +0 -17
  423. package/esm2022/directives/dropdown/dropdown-limit-width.mjs +0 -37
  424. package/esm2022/directives/dropdown/dropdown-manual.directive.mjs +0 -27
  425. package/esm2022/directives/dropdown/dropdown-open-legacy.directive.mjs +0 -33
  426. package/esm2022/directives/dropdown/dropdown-open.directive.mjs +0 -169
  427. package/esm2022/directives/dropdown/dropdown-options.directive.mjs +0 -73
  428. package/esm2022/directives/dropdown/dropdown-portal.directive.mjs +0 -34
  429. package/esm2022/directives/dropdown/dropdown-position-sided.directive.mjs +0 -69
  430. package/esm2022/directives/dropdown/dropdown-position.directive.mjs +0 -88
  431. package/esm2022/directives/dropdown/dropdown-selection.directive.mjs +0 -159
  432. package/esm2022/directives/dropdown/dropdown.bindings.mjs +0 -19
  433. package/esm2022/directives/dropdown/dropdown.component.mjs +0 -92
  434. package/esm2022/directives/dropdown/dropdown.directive.mjs +0 -110
  435. package/esm2022/directives/dropdown/dropdown.driver.mjs +0 -32
  436. package/esm2022/directives/dropdown/dropdown.mjs +0 -29
  437. package/esm2022/directives/dropdown/dropdown.providers.mjs +0 -10
  438. package/esm2022/directives/dropdown/dropdown.service.mjs +0 -15
  439. package/esm2022/directives/dropdown/dropdowns.component.mjs +0 -24
  440. package/esm2022/directives/dropdown/index.mjs +0 -22
  441. package/esm2022/directives/dropdown/taiga-ui-core-directives-dropdown.mjs +0 -5
  442. package/esm2022/directives/dropdown/with-dropdown-open.directive.mjs +0 -23
  443. package/esm2022/directives/group/group.directive.mjs +0 -53
  444. package/esm2022/directives/group/group.options.mjs +0 -15
  445. package/esm2022/directives/group/index.mjs +0 -3
  446. package/esm2022/directives/group/taiga-ui-core-directives-group.mjs +0 -5
  447. package/esm2022/directives/hint/hint-describe.directive.mjs +0 -50
  448. package/esm2022/directives/hint/hint-driver.directive.mjs +0 -19
  449. package/esm2022/directives/hint/hint-host.directive.mjs +0 -27
  450. package/esm2022/directives/hint/hint-hover.directive.mjs +0 -59
  451. package/esm2022/directives/hint/hint-manual.directive.mjs +0 -33
  452. package/esm2022/directives/hint/hint-options.directive.mjs +0 -86
  453. package/esm2022/directives/hint/hint-overflow.directive.mjs +0 -38
  454. package/esm2022/directives/hint/hint-pointer.directive.mjs +0 -33
  455. package/esm2022/directives/hint/hint-position.directive.mjs +0 -115
  456. package/esm2022/directives/hint/hint-unstyled.component.mjs +0 -39
  457. package/esm2022/directives/hint/hint.component.mjs +0 -127
  458. package/esm2022/directives/hint/hint.directive.mjs +0 -99
  459. package/esm2022/directives/hint/hint.mjs +0 -27
  460. package/esm2022/directives/hint/hint.providers.mjs +0 -9
  461. package/esm2022/directives/hint/hint.service.mjs +0 -29
  462. package/esm2022/directives/hint/hints.component.mjs +0 -34
  463. package/esm2022/directives/hint/index.mjs +0 -17
  464. package/esm2022/directives/hint/taiga-ui-core-directives-hint.mjs +0 -5
  465. package/esm2022/directives/icons/icons.directive.mjs +0 -66
  466. package/esm2022/directives/icons/index.mjs +0 -3
  467. package/esm2022/directives/icons/taiga-ui-core-directives-icons.mjs +0 -5
  468. package/esm2022/directives/icons/with-icons.mjs +0 -22
  469. package/esm2022/directives/index.mjs +0 -12
  470. package/esm2022/directives/items-handlers/index.mjs +0 -4
  471. package/esm2022/directives/items-handlers/items-handlers.directive.mjs +0 -63
  472. package/esm2022/directives/items-handlers/items-handlers.tokens.mjs +0 -27
  473. package/esm2022/directives/items-handlers/items-handlers.validator.mjs +0 -32
  474. package/esm2022/directives/items-handlers/taiga-ui-core-directives-items-handlers.mjs +0 -5
  475. package/esm2022/directives/number-format/index.mjs +0 -2
  476. package/esm2022/directives/number-format/number-format.directive.mjs +0 -31
  477. package/esm2022/directives/number-format/taiga-ui-core-directives-number-format.mjs +0 -5
  478. package/esm2022/directives/popup/index.mjs +0 -4
  479. package/esm2022/directives/popup/popup.directive.mjs +0 -31
  480. package/esm2022/directives/popup/popup.service.mjs +0 -15
  481. package/esm2022/directives/popup/popups.component.mjs +0 -20
  482. package/esm2022/directives/popup/taiga-ui-core-directives-popup.mjs +0 -5
  483. package/esm2022/directives/surface/index.mjs +0 -2
  484. package/esm2022/directives/surface/surface.directive.mjs +0 -44
  485. package/esm2022/directives/surface/taiga-ui-core-directives-surface.mjs +0 -5
  486. package/esm2022/directives/taiga-ui-core-directives.mjs +0 -5
  487. package/esm2022/directives/title/index.mjs +0 -2
  488. package/esm2022/directives/title/taiga-ui-core-directives-title.mjs +0 -5
  489. package/esm2022/directives/title/title.directive.mjs +0 -37
  490. package/esm2022/index.mjs +0 -9
  491. package/esm2022/pipes/auto-color/auto-color.pipe.mjs +0 -19
  492. package/esm2022/pipes/auto-color/index.mjs +0 -2
  493. package/esm2022/pipes/auto-color/taiga-ui-core-pipes-auto-color.mjs +0 -5
  494. package/esm2022/pipes/calendar-sheet/calendar-sheet.pipe.mjs +0 -54
  495. package/esm2022/pipes/calendar-sheet/index.mjs +0 -2
  496. package/esm2022/pipes/calendar-sheet/taiga-ui-core-pipes-calendar-sheet.mjs +0 -5
  497. package/esm2022/pipes/calendar-sheet/utils.mjs +0 -36
  498. package/esm2022/pipes/fallback-src/fallback-src.pipe.mjs +0 -23
  499. package/esm2022/pipes/fallback-src/index.mjs +0 -2
  500. package/esm2022/pipes/fallback-src/taiga-ui-core-pipes-fallback-src.mjs +0 -5
  501. package/esm2022/pipes/flag/flag.pipe.mjs +0 -26
  502. package/esm2022/pipes/flag/index.mjs +0 -2
  503. package/esm2022/pipes/flag/taiga-ui-core-pipes-flag.mjs +0 -5
  504. package/esm2022/pipes/format-date/format-date.pipe.mjs +0 -22
  505. package/esm2022/pipes/format-date/index.mjs +0 -2
  506. package/esm2022/pipes/format-date/taiga-ui-core-pipes-format-date.mjs +0 -5
  507. package/esm2022/pipes/format-number/format-number.pipe.mjs +0 -36
  508. package/esm2022/pipes/format-number/index.mjs +0 -2
  509. package/esm2022/pipes/format-number/taiga-ui-core-pipes-format-number.mjs +0 -5
  510. package/esm2022/pipes/index.mjs +0 -10
  511. package/esm2022/pipes/initials/index.mjs +0 -2
  512. package/esm2022/pipes/initials/initials.pipe.mjs +0 -23
  513. package/esm2022/pipes/initials/taiga-ui-core-pipes-initials.mjs +0 -5
  514. package/esm2022/pipes/month/index.mjs +0 -2
  515. package/esm2022/pipes/month/month.pipe.mjs +0 -23
  516. package/esm2022/pipes/month/taiga-ui-core-pipes-month.mjs +0 -5
  517. package/esm2022/pipes/order-week-days/index.mjs +0 -2
  518. package/esm2022/pipes/order-week-days/order-week-days.pipe.mjs +0 -30
  519. package/esm2022/pipes/order-week-days/taiga-ui-core-pipes-order-week-days.mjs +0 -5
  520. package/esm2022/pipes/taiga-ui-core-pipes.mjs +0 -5
  521. package/esm2022/services/breakpoint.service.mjs +0 -31
  522. package/esm2022/services/dark-theme.service.mjs +0 -24
  523. package/esm2022/services/format-date.service.mjs +0 -24
  524. package/esm2022/services/index.mjs +0 -6
  525. package/esm2022/services/position.service.mjs +0 -26
  526. package/esm2022/services/taiga-ui-core-services.mjs +0 -5
  527. package/esm2022/services/visual-viewport.service.mjs +0 -29
  528. package/esm2022/taiga-ui-core.mjs +0 -5
  529. package/esm2022/tokens/animations-speed.mjs +0 -9
  530. package/esm2022/tokens/assets-path.mjs +0 -11
  531. package/esm2022/tokens/auxiliary.mjs +0 -9
  532. package/esm2022/tokens/common-icons.mjs +0 -18
  533. package/esm2022/tokens/dark-mode.mjs +0 -43
  534. package/esm2022/tokens/date-format.mjs +0 -20
  535. package/esm2022/tokens/day-type-handler.mjs +0 -8
  536. package/esm2022/tokens/first-day-of-week.mjs +0 -9
  537. package/esm2022/tokens/i18n.mjs +0 -45
  538. package/esm2022/tokens/icon-resolver.mjs +0 -44
  539. package/esm2022/tokens/icon.mjs +0 -8
  540. package/esm2022/tokens/icons.mjs +0 -21
  541. package/esm2022/tokens/index.mjs +0 -21
  542. package/esm2022/tokens/media.mjs +0 -12
  543. package/esm2022/tokens/number-format.mjs +0 -24
  544. package/esm2022/tokens/reduced-motion.mjs +0 -7
  545. package/esm2022/tokens/scroll-ref.mjs +0 -6
  546. package/esm2022/tokens/selection-stream.mjs +0 -14
  547. package/esm2022/tokens/spin-icons.mjs +0 -8
  548. package/esm2022/tokens/taiga-ui-core-tokens.mjs +0 -5
  549. package/esm2022/tokens/theme.mjs +0 -5
  550. package/esm2022/tokens/viewport.mjs +0 -35
  551. package/esm2022/types/direction.mjs +0 -2
  552. package/esm2022/types/index.mjs +0 -2
  553. package/esm2022/types/interactive-state.mjs +0 -2
  554. package/esm2022/types/orientation.mjs +0 -2
  555. package/esm2022/types/point.mjs +0 -2
  556. package/esm2022/types/portal-item.mjs +0 -2
  557. package/esm2022/types/range-state.mjs +0 -2
  558. package/esm2022/types/size.mjs +0 -13
  559. package/esm2022/types/taiga-ui-core-types.mjs +0 -5
  560. package/esm2022/types/value-content-context.mjs +0 -2
  561. package/esm2022/utils/dom/check-fixed-position.mjs +0 -9
  562. package/esm2022/utils/dom/get-viewport.mjs +0 -24
  563. package/esm2022/utils/dom/get-word-range.mjs +0 -51
  564. package/esm2022/utils/dom/index.mjs +0 -4
  565. package/esm2022/utils/dom/taiga-ui-core-utils-dom.mjs +0 -5
  566. package/esm2022/utils/format/format-number.mjs +0 -47
  567. package/esm2022/utils/format/get-fractional-part-padded.mjs +0 -16
  568. package/esm2022/utils/format/index.mjs +0 -5
  569. package/esm2022/utils/format/number-to-string-without-exp.mjs +0 -18
  570. package/esm2022/utils/format/string-hash-to-hsl.mjs +0 -21
  571. package/esm2022/utils/format/taiga-ui-core-utils-format.mjs +0 -5
  572. package/esm2022/utils/index.mjs +0 -4
  573. package/esm2022/utils/miscellaneous/font-scaling.mjs +0 -21
  574. package/esm2022/utils/miscellaneous/index.mjs +0 -7
  575. package/esm2022/utils/miscellaneous/is-editing-key.mjs +0 -18
  576. package/esm2022/utils/miscellaneous/is-obscured.mjs +0 -8
  577. package/esm2022/utils/miscellaneous/override-options.mjs +0 -11
  578. package/esm2022/utils/miscellaneous/size-bigger.mjs +0 -19
  579. package/esm2022/utils/miscellaneous/taiga-ui-core-utils-miscellaneous.mjs +0 -5
  580. package/esm2022/utils/miscellaneous/to-animation-options.mjs +0 -16
  581. package/esm2022/utils/taiga-ui-core-utils.mjs +0 -5
  582. package/fesm2022/taiga-ui-core-animations.mjs +0 -370
  583. package/fesm2022/taiga-ui-core-animations.mjs.map +0 -1
  584. package/fesm2022/taiga-ui-core-components-alert.mjs +0 -149
  585. package/fesm2022/taiga-ui-core-components-alert.mjs.map +0 -1
  586. package/fesm2022/taiga-ui-core-components-dialog.mjs +0 -230
  587. package/fesm2022/taiga-ui-core-components-dialog.mjs.map +0 -1
  588. package/fesm2022/taiga-ui-core-components-fullscreen.mjs +0 -77
  589. package/fesm2022/taiga-ui-core-components-fullscreen.mjs.map +0 -1
  590. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +0 -1
  591. package/fesm2022/taiga-ui-core-directives-hint.mjs +0 -713
  592. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +0 -1
  593. package/fesm2022/taiga-ui-core-directives-popup.mjs +0 -63
  594. package/fesm2022/taiga-ui-core-directives-popup.mjs.map +0 -1
  595. package/fesm2022/taiga-ui-core-directives-surface.mjs +0 -50
  596. package/fesm2022/taiga-ui-core-directives-surface.mjs.map +0 -1
  597. package/fesm2022/taiga-ui-core-directives-title.mjs +0 -43
  598. package/fesm2022/taiga-ui-core-directives-title.mjs.map +0 -1
  599. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs +0 -25
  600. package/fesm2022/taiga-ui-core-pipes-auto-color.mjs.map +0 -1
  601. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs +0 -94
  602. package/fesm2022/taiga-ui-core-pipes-calendar-sheet.mjs.map +0 -1
  603. package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs +0 -29
  604. package/fesm2022/taiga-ui-core-pipes-fallback-src.mjs.map +0 -1
  605. package/fesm2022/taiga-ui-core-pipes-flag.mjs +0 -32
  606. package/fesm2022/taiga-ui-core-pipes-flag.mjs.map +0 -1
  607. package/fesm2022/taiga-ui-core-pipes-format-date.mjs +0 -28
  608. package/fesm2022/taiga-ui-core-pipes-format-date.mjs.map +0 -1
  609. package/fesm2022/taiga-ui-core-pipes-initials.mjs +0 -29
  610. package/fesm2022/taiga-ui-core-pipes-initials.mjs.map +0 -1
  611. package/fesm2022/taiga-ui-core-pipes-month.mjs +0 -29
  612. package/fesm2022/taiga-ui-core-pipes-month.mjs.map +0 -1
  613. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs +0 -36
  614. package/fesm2022/taiga-ui-core-pipes-order-week-days.mjs.map +0 -1
  615. package/pipes/auto-color/auto-color.pipe.d.ts +0 -7
  616. package/pipes/auto-color/index.d.ts +0 -1
  617. package/pipes/calendar-sheet/index.d.ts +0 -1
  618. package/pipes/calendar-sheet/utils.d.ts +0 -20
  619. package/pipes/fallback-src/fallback-src.pipe.d.ts +0 -9
  620. package/pipes/fallback-src/index.d.ts +0 -1
  621. package/pipes/flag/flag.pipe.d.ts +0 -14
  622. package/pipes/flag/index.d.ts +0 -1
  623. package/pipes/format-date/format-date.pipe.d.ts +0 -9
  624. package/pipes/format-date/index.d.ts +0 -1
  625. package/pipes/initials/index.d.ts +0 -1
  626. package/pipes/initials/initials.pipe.d.ts +0 -7
  627. package/pipes/month/index.d.ts +0 -1
  628. package/pipes/month/month.pipe.d.ts +0 -10
  629. package/pipes/order-week-days/index.d.ts +0 -1
  630. package/services/breakpoint.service.d.ts +0 -16
  631. package/services/dark-theme.service.d.ts +0 -10
  632. package/services/format-date.service.d.ts +0 -8
  633. package/styles/mixins/wrapper.less +0 -64
  634. package/styles/mixins/wrapper.scss +0 -61
  635. package/styles/theme/appearance/opposite.less +0 -17
  636. package/styles/theme/wrapper.less +0 -211
  637. package/tokens/day-type-handler.d.ts +0 -7
  638. package/tokens/first-day-of-week.d.ts +0 -5
  639. package/tokens/scroll-ref.d.ts +0 -2
  640. package/tokens/spin-icons.d.ts +0 -6
  641. package/types/portal-item.d.ts +0 -9
  642. package/types/range-state.d.ts +0 -4
  643. package/types/value-content-context.d.ts +0 -4
  644. package/utils/format/string-hash-to-hsl.d.ts +0 -6
  645. package/utils/miscellaneous/to-animation-options.d.ts +0 -4
  646. /package/{directives → components}/title/index.d.ts +0 -0
  647. /package/{directives → portals}/dropdown/dropdown-limit-width.d.ts +0 -0
  648. /package/{directives → portals}/dropdown/dropdown.component.d.ts +0 -0
  649. /package/{directives → portals}/dropdown/dropdown.driver.d.ts +0 -0
  650. /package/{directives → portals}/dropdown/dropdown.providers.d.ts +0 -0
  651. /package/{directives → portals}/dropdown/with-dropdown-open.directive.d.ts +0 -0
  652. /package/{directives → portals}/hint/hint-driver.directive.d.ts +0 -0
  653. /package/{directives → portals}/hint/hint-pointer.directive.d.ts +0 -0
  654. /package/{directives → portals}/hint/hint.providers.d.ts +0 -0
  655. /package/{directives → portals}/popup/index.d.ts +0 -0
@@ -1,69 +0,0 @@
1
- import { Directive, inject, Input } from '@angular/core';
2
- import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
3
- import { tuiAsPositionAccessor, TuiPositionAccessor } from '@taiga-ui/core/classes';
4
- import { TUI_VIEWPORT } from '@taiga-ui/core/tokens';
5
- import { TUI_DROPDOWN_OPTIONS } from './dropdown-options.directive';
6
- import { TuiDropdownPosition } from './dropdown-position.directive';
7
- import * as i0 from "@angular/core";
8
- class TuiDropdownPositionSided extends TuiPositionAccessor {
9
- constructor() {
10
- super(...arguments);
11
- this.options = inject(TUI_DROPDOWN_OPTIONS);
12
- this.viewport = inject(TUI_VIEWPORT);
13
- this.vertical = inject(TuiDropdownPosition);
14
- this.previous = this.options.direction || 'bottom';
15
- this.tuiDropdownSided = '';
16
- this.tuiDropdownSidedOffset = 4;
17
- this.type = 'dropdown';
18
- }
19
- getPosition(rect) {
20
- if (this.tuiDropdownSided === false) {
21
- return this.vertical.getPosition(rect);
22
- }
23
- const { height, width } = rect;
24
- const hostRect = this.vertical.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;
25
- const viewport = this.viewport.getClientRect();
26
- const { direction, offset } = this.options;
27
- const adjusted = this.vertical.getAlign(this.options.align);
28
- const align = adjusted === 'center' ? 'left' : adjusted;
29
- const available = {
30
- top: hostRect.bottom - viewport.top,
31
- left: hostRect.left - offset - viewport.left,
32
- right: viewport.right - hostRect.right - offset,
33
- bottom: viewport.bottom - hostRect.top,
34
- };
35
- const position = {
36
- top: hostRect.bottom - height + this.tuiDropdownSidedOffset + 1,
37
- left: hostRect.left - width - offset,
38
- right: hostRect.right + offset,
39
- bottom: hostRect.top - this.tuiDropdownSidedOffset - 1, // 1 for border
40
- };
41
- const better = available.top > available.bottom ? 'top' : 'bottom';
42
- const maxLeft = available.left > available.right ? position.left : position.right;
43
- const left = available[align] > width ? position[align] : maxLeft;
44
- if ((available[this.previous] > height && direction) ||
45
- this.previous === better) {
46
- this.vertical.emitDirection(this.previous);
47
- return [position[this.previous], left];
48
- }
49
- this.previous = better;
50
- this.vertical.emitDirection(better);
51
- return [position[better], left];
52
- }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPositionSided, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
54
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownPositionSided, isStandalone: true, selector: "[tuiDropdownSided]", inputs: { tuiDropdownSided: "tuiDropdownSided", tuiDropdownSidedOffset: "tuiDropdownSidedOffset" }, providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)], usesInheritance: true, ngImport: i0 }); }
55
- }
56
- export { TuiDropdownPositionSided };
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPositionSided, decorators: [{
58
- type: Directive,
59
- args: [{
60
- standalone: true,
61
- selector: '[tuiDropdownSided]',
62
- providers: [TuiDropdownPosition, tuiAsPositionAccessor(TuiDropdownPositionSided)],
63
- }]
64
- }], propDecorators: { tuiDropdownSided: [{
65
- type: Input
66
- }], tuiDropdownSidedOffset: [{
67
- type: Input
68
- }] } });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcG9zaXRpb24tc2lkZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLXBvc2l0aW9uLXNpZGVkLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBR25ELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOztBQUVsRSxNQUthLHdCQUF5QixTQUFRLG1CQUFtQjtJQUxqRTs7UUFNcUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hELGFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7UUFHL0MscUJBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUd4QywyQkFBc0IsR0FBRyxDQUFDLENBQUM7UUFFbEIsU0FBSSxHQUFHLFVBQVUsQ0FBQztLQTJDckM7SUF6Q1UsV0FBVyxDQUFDLElBQWE7UUFDNUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssS0FBSyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxX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QkFMcEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsU0FBUyxFQUFFLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLDBCQUEwQixDQUFDO2lCQUNwRjs4QkFRVSxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUQ1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFTVBUWV9DTElFTlRfUkVDVH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHt0dWlBc1Bvc2l0aW9uQWNjZXNzb3IsIFR1aVBvc2l0aW9uQWNjZXNzb3J9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NsYXNzZXMnO1xuaW1wb3J0IHtUVUlfVklFV1BPUlR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5pbXBvcnQge3R5cGUgVHVpUG9pbnR9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3R5cGVzJztcblxuaW1wb3J0IHtUVUlfRFJPUERPV05fT1BUSU9OU30gZnJvbSAnLi9kcm9wZG93bi1vcHRpb25zLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1R1aURyb3Bkb3duUG9zaXRpb259IGZyb20gJy4vZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1t0dWlEcm9wZG93blNpZGVkXScsXG4gICAgcHJvdmlkZXJzOiBbVHVpRHJvcGRvd25Qb3NpdGlvbiwgdHVpQXNQb3NpdGlvbkFjY2Vzc29yKFR1aURyb3Bkb3duUG9zaXRpb25TaWRlZCldLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93blBvc2l0aW9uU2lkZWQgZXh0ZW5kcyBUdWlQb3NpdGlvbkFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0RST1BET1dOX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld3BvcnQgPSBpbmplY3QoVFVJX1ZJRVdQT1JUKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZlcnRpY2FsID0gaW5qZWN0KFR1aURyb3Bkb3duUG9zaXRpb24pO1xuICAgIHByaXZhdGUgcHJldmlvdXMgPSB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uIHx8ICdib3R0b20nO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHVpRHJvcGRvd25TaWRlZDogYm9vbGVhbiB8IHN0cmluZyA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdHVpRHJvcGRvd25TaWRlZE9mZnNldCA9IDQ7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdkcm9wZG93bic7XG5cbiAgICBwdWJsaWMgZ2V0UG9zaXRpb24ocmVjdDogRE9NUmVjdCk6IFR1aVBvaW50IHtcbiAgICAgICAgaWYgKHRoaXMudHVpRHJvcGRvd25TaWRlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcnRpY2FsLmdldFBvc2l0aW9uKHJlY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge2hlaWdodCwgd2lkdGh9ID0gcmVjdDtcbiAgICAgICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLnZlcnRpY2FsLmFjY2Vzc29yPy5nZXRDbGllbnRSZWN0KCkgPz8gRU1QVFlfQ0xJRU5UX1JFQ1Q7XG4gICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydC5nZXRDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHtkaXJlY3Rpb24sIG9mZnNldH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkID0gdGhpcy52ZXJ0aWNhbC5nZXRBbGlnbih0aGlzLm9wdGlvbnMuYWxpZ24pO1xuICAgICAgICBjb25zdCBhbGlnbiA9IGFkanVzdGVkID09PSAnY2VudGVyJyA/ICdsZWZ0JyA6IGFkanVzdGVkO1xuICAgICAgICBjb25zdCBhdmFpbGFibGUgPSB7XG4gICAgICAgICAgICB0b3A6IGhvc3RSZWN0LmJvdHRvbSAtIHZpZXdwb3J0LnRvcCxcbiAgICAgICAgICAgIGxlZnQ6IGhvc3RSZWN0LmxlZnQgLSBvZmZzZXQgLSB2aWV3cG9ydC5sZWZ0LFxuICAgICAgICAgICAgcmlnaHQ6IHZpZXdwb3J0LnJpZ2h0IC0gaG9zdFJlY3QucmlnaHQgLSBvZmZzZXQsXG4gICAgICAgICAgICBib3R0b206IHZpZXdwb3J0LmJvdHRvbSAtIGhvc3RSZWN0LnRvcCxcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgICAgICB0b3A6IGhvc3RSZWN0LmJvdHRvbSAtIGhlaWdodCArIHRoaXMudHVpRHJvcGRvd25TaWRlZE9mZnNldCArIDEsIC8vIDEgZm9yIGJvcmRlclxuICAgICAgICAgICAgbGVmdDogaG9zdFJlY3QubGVmdCAtIHdpZHRoIC0gb2Zmc2V0LFxuICAgICAgICAgICAgcmlnaHQ6IGhvc3RSZWN0LnJpZ2h0ICsgb2Zmc2V0LFxuICAgICAgICAgICAgYm90dG9tOiBob3N0UmVjdC50b3AgLSB0aGlzLnR1aURyb3Bkb3duU2lkZWRPZmZzZXQgLSAxLCAvLyAxIGZvciBib3JkZXJcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgYmV0dGVyID0gYXZhaWxhYmxlLnRvcCA+IGF2YWlsYWJsZS5ib3R0b20gPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgICBjb25zdCBtYXhMZWZ0ID0gYXZhaWxhYmxlLmxlZnQgPiBhdmFpbGFibGUucmlnaHQgPyBwb3NpdGlvbi5sZWZ0IDogcG9zaXRpb24ucmlnaHQ7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBhdmFpbGFibGVbYWxpZ25dID4gd2lkdGggPyBwb3NpdGlvblthbGlnbl0gOiBtYXhMZWZ0O1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChhdmFpbGFibGVbdGhpcy5wcmV2aW91c10gPiBoZWlnaHQgJiYgZGlyZWN0aW9uKSB8fFxuICAgICAgICAgICAgdGhpcy5wcmV2aW91cyA9PT0gYmV0dGVyXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy52ZXJ0aWNhbC5lbWl0RGlyZWN0aW9uKHRoaXMucHJldmlvdXMpO1xuXG4gICAgICAgICAgICByZXR1cm4gW3Bvc2l0aW9uW3RoaXMucHJldmlvdXNdLCBsZWZ0XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSBiZXR0ZXI7XG4gICAgICAgIHRoaXMudmVydGljYWwuZW1pdERpcmVjdGlvbihiZXR0ZXIpO1xuXG4gICAgICAgIHJldHVybiBbcG9zaXRpb25bYmV0dGVyXSwgbGVmdF07XG4gICAgfVxufVxuIl19
@@ -1,88 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Directive, EventEmitter, inject, Output } from '@angular/core';
3
- import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
4
- import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
5
- import { tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
6
- import { tuiFallbackAccessor, TuiPositionAccessor, TuiRectAccessor, } from '@taiga-ui/core/classes';
7
- import { TUI_VIEWPORT } from '@taiga-ui/core/tokens';
8
- import { TuiDropdownDirective } from './dropdown.directive';
9
- import { TUI_DROPDOWN_OPTIONS } from './dropdown-options.directive';
10
- import * as i0 from "@angular/core";
11
- class TuiDropdownPosition extends TuiPositionAccessor {
12
- constructor() {
13
- super(...arguments);
14
- this.el = tuiInjectElement();
15
- this.options = inject(TUI_DROPDOWN_OPTIONS);
16
- this.viewport = inject(TUI_VIEWPORT);
17
- this.directionChange = new EventEmitter();
18
- this.type = 'dropdown';
19
- this.accessor = tuiFallbackAccessor('dropdown')(inject(TuiRectAccessor), inject(TuiDropdownDirective, { optional: true }));
20
- }
21
- emitDirection(direction) {
22
- this.directionChange.emit(direction);
23
- }
24
- getPosition({ width, height }) {
25
- if (!width && !height) {
26
- this.previous = undefined;
27
- }
28
- const hostRect = this.accessor?.getClientRect() ?? EMPTY_CLIENT_RECT;
29
- const viewportRect = this.viewport.getClientRect();
30
- const { minHeight, direction, offset, limitWidth } = this.options;
31
- const align = this.getAlign(this.options.align);
32
- const viewport = {
33
- top: viewportRect.top - offset,
34
- bottom: viewportRect.bottom + offset,
35
- right: viewportRect.right - offset,
36
- left: viewportRect.left + offset,
37
- };
38
- const previous = this.previous || direction || 'bottom';
39
- const available = {
40
- top: hostRect.top - 2 * offset - viewport.top,
41
- bottom: viewport.bottom - hostRect.bottom - 2 * offset,
42
- };
43
- const rectWidth = limitWidth === 'fixed' ? hostRect.width : width;
44
- const right = Math.max(hostRect.right - rectWidth, offset);
45
- const left = hostRect.left + width < viewport.right ? hostRect.left : right;
46
- const position = {
47
- top: hostRect.top - offset - height,
48
- bottom: hostRect.bottom + offset,
49
- right: Math.max(viewport.left, right),
50
- center: hostRect.left + hostRect.width / 2 + width / 2 < viewport.right
51
- ? hostRect.left + hostRect.width / 2 - width / 2
52
- : right,
53
- left: Math.max(viewport.left, left),
54
- };
55
- const better = available.top > available.bottom ? 'top' : 'bottom';
56
- if ((available[previous] > minHeight && direction) ||
57
- available[previous] > height) {
58
- this.emitDirection(previous);
59
- return [position[previous], position[align]];
60
- }
61
- this.previous = better;
62
- this.emitDirection(better);
63
- return [position[better], position[align]];
64
- }
65
- getAlign(align) {
66
- const rtl = this.el.matches('[dir="rtl"] :scope');
67
- if (rtl && align === 'left') {
68
- return 'right';
69
- }
70
- return rtl && align === 'right' ? 'left' : align;
71
- }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPosition, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownPosition, isStandalone: true, outputs: { directionChange: "tuiDropdownDirectionChange" }, usesInheritance: true, ngImport: i0 }); }
74
- }
75
- __decorate([
76
- tuiPure
77
- ], TuiDropdownPosition.prototype, "emitDirection", null);
78
- export { TuiDropdownPosition };
79
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownPosition, decorators: [{
80
- type: Directive,
81
- args: [{
82
- standalone: true,
83
- }]
84
- }], propDecorators: { directionChange: [{
85
- type: Output,
86
- args: ['tuiDropdownDirectionChange']
87
- }], emitDirection: [] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tcG9zaXRpb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLXBvc2l0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDMUQsT0FBTyxFQUNILG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIsZUFBZSxHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsb0JBQW9CLEVBQXdCLE1BQU0sOEJBQThCLENBQUM7O0FBRXpGLE1BR2EsbUJBQW9CLFNBQVEsbUJBQW1CO0lBSDVEOztRQUlxQixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUtqQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUF3QixDQUFDO1FBRTNELFNBQUksR0FBRyxVQUFVLENBQUM7UUFDbEIsYUFBUSxHQUNwQixtQkFBbUIsQ0FBa0IsVUFBVSxDQUFDLENBQzVDLE1BQU0sQ0FBTSxlQUFlLENBQUMsRUFDNUIsTUFBTSxDQUFDLG9CQUFv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Q0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBRXhELElBQ0ksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQztZQUM5QyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxFQUM5QjtZQUNFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQXVCO1FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbEQsSUFBSSxHQUFHLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtZQUN6QixPQUFPLE9BQU8sQ0FBQztTQUNsQjtRQUVELE9BQU8sR0FBRyxJQUFJLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JELENBQUM7K0dBakZRLG1CQUFtQjttR0FBbkIsbUJBQW1COztBQWtCckI7SUFETixPQUFPO3dEQUdQO1NBcEJRLG1CQUFtQjs0RkFBbkIsbUJBQW1CO2tCQUgvQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs4QkFTbUIsZUFBZTtzQkFEOUIsTUFBTTt1QkFBQyw0QkFBNEI7Z0JBVzdCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0VNUFRZX0NMSUVOVF9SRUNUfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge3R1aUluamVjdEVsZW1lbnR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZG9tJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7XG4gICAgdHVpRmFsbGJhY2tBY2Nlc3NvcixcbiAgICBUdWlQb3NpdGlvbkFjY2Vzc29yLFxuICAgIFR1aVJlY3RBY2Nlc3Nvcixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9WSUVXUE9SVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7dHlwZSBUdWlQb2ludCwgdHlwZSBUdWlWZXJ0aWNhbERpcmVjdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9PUFRJT05TLCB0eXBlIFR1aURyb3Bkb3duQWxpZ259IGZyb20gJy4vZHJvcGRvd24tb3B0aW9ucy5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93blBvc2l0aW9uIGV4dGVuZHMgVHVpUG9zaXRpb25BY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnMgPSBpbmplY3QoVFVJX0RST1BET1dOX09QVElPTlMpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld3BvcnQgPSBpbmplY3QoVFVJX1ZJRVdQT1JUKTtcblxuICAgIHByaXZhdGUgcHJldmlvdXM/OiBUdWlWZXJ0aWNhbERpcmVjdGlvbjtcblxuICAgIEBPdXRwdXQoJ3R1aURyb3Bkb3duRGlyZWN0aW9uQ2hhbmdlJylcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlyZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlWZXJ0aWNhbERpcmVjdGlvbj4oKTtcblxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlID0gJ2Ryb3Bkb3duJztcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWNjZXNzb3I6IFR1aVJlY3RBY2Nlc3NvciB8IG51bGwgPVxuICAgICAgICB0dWlGYWxsYmFja0FjY2Vzc29yPFR1aVJlY3RBY2Nlc3Nvcj4oJ2Ryb3Bkb3duJykoXG4gICAgICAgICAgICBpbmplY3Q8YW55PihUdWlSZWN0QWNjZXNzb3IpLFxuICAgICAgICAgICAgaW5qZWN0KFR1aURyb3Bkb3duRGlyZWN0aXZlLCB7b3B0aW9uYWw6IHRydWV9KSEsXG4gICAgICAgICk7XG5cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBlbWl0RGlyZWN0aW9uKGRpcmVjdGlvbjogVHVpVmVydGljYWxEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb25DaGFuZ2UuZW1pdChkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQb3NpdGlvbih7d2lkdGgsIGhlaWdodH06IERPTVJlY3QpOiBUdWlQb2ludCB7XG4gICAgICAgIGlmICghd2lkdGggJiYgIWhlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhvc3RSZWN0ID0gdGhpcy5hY2Nlc3Nvcj8uZ2V0Q2xpZW50UmVjdCgpID8/IEVNUFRZX0NMSUVOVF9SRUNUO1xuICAgICAgICBjb25zdCB2aWV3cG9ydFJlY3QgPSB0aGlzLnZpZXdwb3J0LmdldENsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge21pbkhlaWdodCwgZGlyZWN0aW9uLCBvZmZzZXQsIGxpbWl0V2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCBhbGlnbiA9IHRoaXMuZ2V0QWxpZ24odGhpcy5vcHRpb25zLmFsaWduKTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB7XG4gICAgICAgICAgICB0b3A6IHZpZXdwb3J0UmVjdC50b3AgLSBvZmZzZXQsXG4gICAgICAgICAgICBib3R0b206IHZpZXdwb3J0UmVjdC5ib3R0b20gKyBvZmZzZXQsXG4gICAgICAgICAgICByaWdodDogdmlld3BvcnRSZWN0LnJpZ2h0IC0gb2Zmc2V0LFxuICAgICAgICAgICAgbGVmdDogdmlld3BvcnRSZWN0LmxlZnQgKyBvZmZzZXQsXG4gICAgICAgIH0gYXMgY29uc3Q7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gdGhpcy5wcmV2aW91cyB8fCBkaXJlY3Rpb24gfHwgJ2JvdHRvbSc7XG4gICAgICAgIGNvbnN0IGF2YWlsYWJsZSA9IHtcbiAgICAgICAgICAgIHRvcDogaG9zdFJlY3QudG9wIC0gMiAqIG9mZnNldCAtIHZpZXdwb3J0LnRvcCxcbiAgICAgICAgICAgIGJvdHRvbTogdmlld3BvcnQuYm90dG9tIC0gaG9zdFJlY3QuYm90dG9tIC0gMiAqIG9mZnNldCxcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgcmVjdFdpZHRoID0gbGltaXRXaWR0aCA9PT0gJ2ZpeGVkJyA/IGhvc3RSZWN0LndpZHRoIDogd2lkdGg7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5tYXgoaG9zdFJlY3QucmlnaHQgLSByZWN0V2lkdGgsIG9mZnNldCk7XG4gICAgICAgIGNvbnN0IGxlZnQgPSBob3N0UmVjdC5sZWZ0ICsgd2lkdGggPCB2aWV3cG9ydC5yaWdodCA/IGhvc3RSZWN0LmxlZnQgOiByaWdodDtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB7XG4gICAgICAgICAgICB0b3A6IGhvc3RSZWN0LnRvcCAtIG9mZnNldCAtIGhlaWdodCxcbiAgICAgICAgICAgIGJvdHRvbTogaG9zdFJlY3QuYm90dG9tICsgb2Zmc2V0LFxuICAgICAgICAgICAgcmlnaHQ6IE1hdGgubWF4KHZpZXdwb3J0LmxlZnQsIHJpZ2h0KSxcbiAgICAgICAgICAgIGNlbnRlcjpcbiAgICAgICAgICAgICAgICBob3N0UmVjdC5sZWZ0ICsgaG9zdFJlY3Qud2lkdGggLyAyICsgd2lkdGggLyAyIDwgdmlld3BvcnQucmlnaHRcbiAgICAgICAgICAgICAgICAgICAgPyBob3N0UmVjdC5sZWZ0ICsgaG9zdFJlY3Qud2lkdGggLyAyIC0gd2lkdGggLyAyXG4gICAgICAgICAgICAgICAgICAgIDogcmlnaHQsXG4gICAgICAgICAgICBsZWZ0OiBNYXRoLm1heCh2aWV3cG9ydC5sZWZ0LCBsZWZ0KSxcbiAgICAgICAgfSBhcyBjb25zdDtcbiAgICAgICAgY29uc3QgYmV0dGVyOiBUdWlWZXJ0aWNhbERpcmVjdGlvbiA9XG4gICAgICAgICAgICBhdmFpbGFibGUudG9wID4gYXZhaWxhYmxlLmJvdHRvbSA/ICd0b3AnIDogJ2JvdHRvbSc7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGF2YWlsYWJsZVtwcmV2aW91c10gPiBtaW5IZWlnaHQgJiYgZGlyZWN0aW9uKSB8fFxuICAgICAgICAgICAgYXZhaWxhYmxlW3ByZXZpb3VzXSA+IGhlaWdodFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZW1pdERpcmVjdGlvbihwcmV2aW91cyk7XG5cbiAgICAgICAgICAgIHJldHVybiBbcG9zaXRpb25bcHJldmlvdXNdLCBwb3NpdGlvblthbGlnbl1dO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2aW91cyA9IGJldHRlcjtcbiAgICAgICAgdGhpcy5lbWl0RGlyZWN0aW9uKGJldHRlcik7XG5cbiAgICAgICAgcmV0dXJuIFtwb3NpdGlvbltiZXR0ZXJdLCBwb3NpdGlvblthbGlnbl1dO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGlnbihhbGlnbjogVHVpRHJvcGRvd25BbGlnbik6IFR1aURyb3Bkb3duQWxpZ24ge1xuICAgICAgICBjb25zdCBydGwgPSB0aGlzLmVsLm1hdGNoZXMoJ1tkaXI9XCJydGxcIl0gOnNjb3BlJyk7XG5cbiAgICAgICAgaWYgKHJ0bCAmJiBhbGlnbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBydGwgJiYgYWxpZ24gPT09ICdyaWdodCcgPyAnbGVmdCcgOiBhbGlnbjtcbiAgICB9XG59XG4iXX0=
@@ -1,159 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Directive, inject, Input, ViewContainerRef } from '@angular/core';
3
- import { CHAR_NO_BREAK_SPACE, CHAR_ZERO_WIDTH_SPACE, EMPTY_CLIENT_RECT, TUI_TRUE_HANDLER, } from '@taiga-ui/cdk/constants';
4
- import { TUI_RANGE } from '@taiga-ui/cdk/tokens';
5
- import { tuiInjectElement, tuiIsElement, tuiIsTextfield, tuiIsTextNode, } from '@taiga-ui/cdk/utils/dom';
6
- import { tuiGetNativeFocused } from '@taiga-ui/cdk/utils/focus';
7
- import { tuiIsString, tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
8
- import { tuiAsDriver, tuiAsRectAccessor, TuiDriver, } from '@taiga-ui/core/classes';
9
- import { TUI_SELECTION_STREAM } from '@taiga-ui/core/tokens';
10
- import { tuiGetWordRange } from '@taiga-ui/core/utils';
11
- import { BehaviorSubject, combineLatest, distinctUntilChanged, filter, map } from 'rxjs';
12
- import { TuiDropdownDirective } from './dropdown.directive';
13
- import * as i0 from "@angular/core";
14
- class TuiDropdownSelection extends TuiDriver {
15
- constructor() {
16
- super((subscriber) => this.stream$.subscribe(subscriber));
17
- this.doc = inject(DOCUMENT);
18
- this.vcr = inject(ViewContainerRef);
19
- this.dropdown = inject(TuiDropdownDirective);
20
- this.el = tuiInjectElement();
21
- this.handler$ = new BehaviorSubject(TUI_TRUE_HANDLER);
22
- this.stream$ = combineLatest([
23
- this.handler$,
24
- inject(TUI_SELECTION_STREAM).pipe(map(() => this.getRange()), filter((range) => this.isValid(range)), distinctUntilChanged((x, y) => x.startOffset === y.startOffset &&
25
- x.endOffset === y.endOffset &&
26
- x.commonAncestorContainer === y.commonAncestorContainer)),
27
- ]).pipe(map(([handler, range]) => {
28
- const contained = this.el.contains(range.commonAncestorContainer);
29
- this.range =
30
- contained && tuiIsTextNode(range.commonAncestorContainer)
31
- ? range
32
- : this.range;
33
- return (contained && handler(this.range)) || this.inDropdown(range);
34
- }));
35
- this.range = inject(TUI_RANGE);
36
- this.position = 'selection';
37
- this.type = 'dropdown';
38
- }
39
- set tuiDropdownSelection(visible) {
40
- if (!tuiIsString(visible)) {
41
- this.handler$.next(visible);
42
- }
43
- }
44
- getClientRect() {
45
- switch (this.position) {
46
- case 'tag': {
47
- const { commonAncestorContainer } = this.range;
48
- const element = tuiIsElement(commonAncestorContainer)
49
- ? commonAncestorContainer
50
- : commonAncestorContainer.parentNode;
51
- return element && tuiIsElement(element)
52
- ? element.getBoundingClientRect()
53
- : EMPTY_CLIENT_RECT;
54
- }
55
- case 'word':
56
- return tuiGetWordRange(this.range).getBoundingClientRect();
57
- default:
58
- return this.range.getBoundingClientRect();
59
- }
60
- }
61
- ngOnDestroy() {
62
- if (this.ghost) {
63
- this.ghostHost.removeChild(this.ghost);
64
- }
65
- }
66
- get ghostHost() {
67
- return this.el.querySelector('tui-textfield .t-ghost') || this.el;
68
- }
69
- getRange() {
70
- const active = tuiGetNativeFocused(this.doc);
71
- const selection = this.doc.getSelection();
72
- const range = active && tuiIsTextfield(active) && this.el.contains(active)
73
- ? this.veryVerySadInputFix(active)
74
- : (selection?.rangeCount && selection.getRangeAt(0)) || this.range;
75
- return range.cloneRange();
76
- }
77
- /**
78
- * Check if given range is at least partially inside dropdown
79
- */
80
- inDropdown(range) {
81
- const { startContainer, endContainer } = range;
82
- const inDropdown = this.boxContains(range.commonAncestorContainer);
83
- const hostToDropdown = this.boxContains(endContainer) && this.el.contains(startContainer);
84
- const dropdownToHost = this.boxContains(startContainer) && this.el.contains(endContainer);
85
- return inDropdown || hostToDropdown || dropdownToHost;
86
- }
87
- /**
88
- * Check if Node is inside dropdown
89
- */
90
- boxContains(node) {
91
- return !!this.dropdown.ref()?.location.nativeElement.contains(node);
92
- }
93
- /**
94
- * Check if range is not inside tui-textfield's DOM elements
95
- */
96
- isValid(range) {
97
- return (!this.el.contains(range.commonAncestorContainer) ||
98
- !this.el.closest('tui-textfield') ||
99
- range.intersectsNode(this.ghost || this.el));
100
- }
101
- veryVerySadInputFix(element) {
102
- const { ghost = this.initGhost(this.ghostHost) } = this;
103
- const { top, left, width, height } = this.ghostHost.getBoundingClientRect();
104
- const { selectionStart, selectionEnd, value } = element;
105
- const range = this.doc.createRange();
106
- const hostRect = this.ghostHost.getBoundingClientRect();
107
- ghost.style.top = tuiPx(top - hostRect.top);
108
- ghost.style.left = tuiPx(left - hostRect.left);
109
- ghost.style.width = tuiPx(width);
110
- ghost.style.height = tuiPx(height);
111
- ghost.textContent = CHAR_ZERO_WIDTH_SPACE + value + CHAR_NO_BREAK_SPACE;
112
- range.setStart(ghost.firstChild, selectionStart || 0);
113
- range.setEnd(ghost.firstChild, selectionEnd || 0);
114
- return range;
115
- }
116
- /**
117
- * Create an invisible DIV styled exactly like input/textarea element inside directive
118
- */
119
- initGhost(element) {
120
- const ghost = this.doc.createElement('div');
121
- const { font, letterSpacing, textTransform, padding, borderTop } = getComputedStyle(element);
122
- ghost.style.position = 'absolute';
123
- ghost.style.pointerEvents = 'none';
124
- ghost.style.opacity = '0';
125
- ghost.style.whiteSpace = 'pre-wrap';
126
- ghost.style.boxSizing = 'border-box';
127
- ghost.style.borderTop = borderTop;
128
- ghost.style.font = font;
129
- ghost.style.letterSpacing = letterSpacing;
130
- ghost.style.textTransform = textTransform;
131
- ghost.style.padding = padding;
132
- this.ghostHost.appendChild(ghost);
133
- this.ghost = ghost;
134
- return ghost;
135
- }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
137
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownSelection, isStandalone: true, selector: "[tuiDropdownSelection]", inputs: { position: ["tuiDropdownSelectionPosition", "position"], tuiDropdownSelection: "tuiDropdownSelection" }, providers: [
138
- tuiAsDriver(TuiDropdownSelection),
139
- tuiAsRectAccessor(TuiDropdownSelection),
140
- ], usesInheritance: true, ngImport: i0 }); }
141
- }
142
- export { TuiDropdownSelection };
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownSelection, decorators: [{
144
- type: Directive,
145
- args: [{
146
- standalone: true,
147
- selector: '[tuiDropdownSelection]',
148
- providers: [
149
- tuiAsDriver(TuiDropdownSelection),
150
- tuiAsRectAccessor(TuiDropdownSelection),
151
- ],
152
- }]
153
- }], ctorParameters: function () { return []; }, propDecorators: { position: [{
154
- type: Input,
155
- args: ['tuiDropdownSelectionPosition']
156
- }], tuiDropdownSelection: [{
157
- type: Input
158
- }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tc2VsZWN0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bi9kcm9wZG93bi1zZWxlY3Rpb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWtCLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pGLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDbkIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUNILGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNkLGFBQWEsR0FDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsV0FBVyxFQUFFLEtBQUssRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFDSCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLFNBQVMsR0FFWixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXZGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQUUxRCxNQVFh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S0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUMxQyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDMUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRTlCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBN0tRLG9CQUFvQjttR0FBcEIsb0JBQW9CLHVMQUxsQjtZQUNQLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQztZQUNqQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQztTQUMxQzs7U0FFUSxvQkFBb0I7NEZBQXBCLG9CQUFvQjtrQkFSaEMsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsU0FBUyxFQUFFO3dCQUNQLFdBQVcsc0JBQXNCO3dCQUNqQyxpQkFBaUIsc0JBQXNCO3FCQUMxQztpQkFDSjswRUEyQ1UsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLDhCQUE4QjtnQkFVMUIsb0JBQW9CO3NCQUQ5QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCB0eXBlIE9uRGVzdHJveSwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENIQVJfTk9fQlJFQUtfU1BBQ0UsXG4gICAgQ0hBUl9aRVJPX1dJRFRIX1NQQUNFLFxuICAgIEVNUFRZX0NMSUVOVF9SRUNULFxuICAgIFRVSV9UUlVFX0hBTkRMRVIsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsvY29uc3RhbnRzJztcbmltcG9ydCB7VFVJX1JBTkdFfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3Rva2Vucyc7XG5pbXBvcnQge3R5cGUgVHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHtcbiAgICB0dWlJbmplY3RFbGVtZW50LFxuICAgIHR1aUlzRWxlbWVudCxcbiAgICB0dWlJc1RleHRmaWVsZCxcbiAgICB0dWlJc1RleHROb2RlLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUdldE5hdGl2ZUZvY3VzZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlJc1N0cmluZywgdHVpUHh9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1xuICAgIHR1aUFzRHJpdmVyLFxuICAgIHR1aUFzUmVjdEFjY2Vzc29yLFxuICAgIFR1aURyaXZlcixcbiAgICB0eXBlIFR1aVJlY3RBY2Nlc3Nvcixcbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY2xhc3Nlcyc7XG5pbXBvcnQge1RVSV9TRUxFQ1RJT05fU1RSRUFNfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90b2tlbnMnO1xuaW1wb3J0IHt0dWlHZXRXb3JkUmFuZ2V9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3V0aWxzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbdHVpRHJvcGRvd25TZWxlY3Rpb25dJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgdHVpQXNEcml2ZXIoVHVpRHJvcGRvd25TZWxlY3Rpb24pLFxuICAgICAgICB0dWlBc1JlY3RBY2Nlc3NvcihUdWlEcm9wZG93blNlbGVjdGlvbiksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRHJvcGRvd25TZWxlY3Rpb25cbiAgICBleHRlbmRzIFR1aURyaXZlclxuICAgIGltcGxlbWVudHMgVHVpUmVjdEFjY2Vzc29yLCBPbkRlc3Ryb3lcbntcbiAgICBwcml2YXRlIGdob3N0PzogSFRNTEVsZW1lbnQ7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmNyID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkcm9wZG93biA9IGluamVjdChUdWlEcm9wZG93bkRpcmVjdGl2ZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBoYW5kbGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VHVpQm9vbGVhbkhhbmRsZXI8UmFuZ2U+PihcbiAgICAgICAgVFVJX1RSVUVfSEFORExFUixcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0cmVhbSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5oYW5kbGVyJCxcbiAgICAgICAgaW5qZWN0KFRVSV9TRUxFQ1RJT05fU1RSRUFNKS5waXBlKFxuICAgICAgICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0UmFuZ2UoKSksXG4gICAgICAgICAgICBmaWx0ZXIoKHJhbmdlKSA9PiB0aGlzLmlzVmFsaWQocmFuZ2UpKSxcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKFxuICAgICAgICAgICAgICAgICh4LCB5KSA9PlxuICAgICAgICAgICAgICAgICAgICB4LnN0YXJ0T2Zmc2V0ID09PSB5LnN0YXJ0T2Zmc2V0ICYmXG4gICAgICAgICAgICAgICAgICAgIHguZW5kT2Zmc2V0ID09PSB5LmVuZE9mZnNldCAmJlxuICAgICAgICAgICAgICAgICAgICB4LmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyID09PSB5LmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICBdKS5waXBlKFxuICAgICAgICBtYXAoKFtoYW5kbGVyLCByYW5nZV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lZCA9IHRoaXMuZWwuY29udGFpbnMocmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIpO1xuXG4gICAgICAgICAgICB0aGlzLnJhbmdlID1cbiAgICAgICAgICAgICAgICBjb250YWluZWQgJiYgdHVpSXNUZXh0Tm9kZShyYW5nZS5jb21tb25BbmNlc3RvckNvbnRhaW5lcilcbiAgICAgICAgICAgICAgICAgICAgPyByYW5nZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMucmFuZ2U7XG5cbiAgICAgICAgICAgIHJldHVybiAoY29udGFpbmVkICYmIGhhbmRsZXIodGhpcy5yYW5nZSkpIHx8IHRoaXMuaW5Ecm9wZG93bihyYW5nZSk7XG4gICAgICAgIH0pLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmFuZ2UgPSBpbmplY3QoVFVJX1JBTkdFKTtcblxuICAgIEBJbnB1dCgndHVpRHJvcGRvd25TZWxlY3Rpb25Qb3NpdGlvbicpXG4gICAgcHVibGljIHBvc2l0aW9uOiAnc2VsZWN0aW9uJyB8ICd0YWcnIHwgJ3dvcmQnID0gJ3NlbGVjdGlvbic7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgdHlwZSA9ICdkcm9wZG93bic7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKHN1YnNjcmliZXIpID0+IHRoaXMuc3RyZWFtJC5zdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0dWlEcm9wZG93blNlbGVjdGlvbih2aXNpYmxlOiBUdWlCb29sZWFuSGFuZGxlcjxSYW5nZT4gfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0dWlJc1N0cmluZyh2aXNpYmxlKSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVyJC5uZXh0KHZpc2libGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsaWVudFJlY3QoKTogRE9NUmVjdCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5wb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSAndGFnJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHtjb21tb25BbmNlc3RvckNvbnRhaW5lcn0gPSB0aGlzLnJhbmdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0dWlJc0VsZW1lbnQoY29tbW9uQW5jZXN0b3JDb250YWluZXIpXG4gICAgICAgICAgICAgICAgICAgID8gY29tbW9uQW5jZXN0b3JDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgOiBjb21tb25BbmNlc3RvckNvbnRhaW5lci5wYXJlbnROb2RlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgdHVpSXNFbGVtZW50KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgICAgICAgICA6IEVNUFRZX0NMSUVOVF9SRUNUO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnd29yZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHR1aUdldFdvcmRSYW5nZSh0aGlzLnJhbmdlKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmdob3N0KSB7XG4gICAgICAgICAgICB0aGlzLmdob3N0SG9zdC5yZW1vdmVDaGlsZCh0aGlzLmdob3N0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGdob3N0SG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoJ3R1aS10ZXh0ZmllbGQgLnQtZ2hvc3QnKSB8fCB0aGlzLmVsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmFuZ2UoKTogUmFuZ2Uge1xuICAgICAgICBjb25zdCBhY3RpdmUgPSB0dWlHZXROYXRpdmVGb2N1c2VkKHRoaXMuZG9jKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5kb2MuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJhbmdlID1cbiAgICAgICAgICAgIGFjdGl2ZSAmJiB0dWlJc1RleHRmaWVsZChhY3RpdmUpICYmIHRoaXMuZWwuY29udGFpbnMoYWN0aXZlKVxuICAgICAgICAgICAgICAgID8gdGhpcy52ZXJ5VmVyeVNhZElucHV0Rml4KGFjdGl2ZSlcbiAgICAgICAgICAgICAgICA6IChzZWxlY3Rpb24/LnJhbmdlQ291bnQgJiYgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkpIHx8IHRoaXMucmFuZ2U7XG5cbiAgICAgICAgcmV0dXJuIHJhbmdlLmNsb25lUmFuZ2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBnaXZlbiByYW5nZSBpcyBhdCBsZWFzdCBwYXJ0aWFsbHkgaW5zaWRlIGRyb3Bkb3duXG4gICAgICovXG4gICAgcHJpdmF0ZSBpbkRyb3Bkb3duKHJhbmdlOiBSYW5nZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7c3RhcnRDb250YWluZXIsIGVuZENvbnRhaW5lcn0gPSByYW5nZTtcbiAgICAgICAgY29uc3QgaW5Ecm9wZG93biA9IHRoaXMuYm94Q29udGFpbnMocmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIpO1xuICAgICAgICBjb25zdCBob3N0VG9Ecm9wZG93biA9XG4gICAgICAgICAgICB0aGlzLmJveENvbnRhaW5zKGVuZENvbnRhaW5lcikgJiYgdGhpcy5lbC5jb250YWlucyhzdGFydENvbnRhaW5lcik7XG4gICAgICAgIGNvbnN0IGRyb3Bkb3duVG9Ib3N0ID1cbiAgICAgICAgICAgIHRoaXMuYm94Q29udGFpbnMoc3RhcnRDb250YWluZXIpICYmIHRoaXMuZWwuY29udGFpbnMoZW5kQ29udGFpbmVyKTtcblxuICAgICAgICByZXR1cm4gaW5Ecm9wZG93biB8fCBob3N0VG9Ecm9wZG93biB8fCBkcm9wZG93blRvSG9zdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBOb2RlIGlzIGluc2lkZSBkcm9wZG93blxuICAgICAqL1xuICAgIHByaXZhdGUgYm94Q29udGFpbnMobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmRyb3Bkb3duLnJlZigpPy5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKG5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHJhbmdlIGlzIG5vdCBpbnNpZGUgdHVpLXRleHRmaWVsZCdzIERPTSBlbGVtZW50c1xuICAgICAqL1xuICAgIHByaXZhdGUgaXNWYWxpZChyYW5nZTogUmFuZ2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICF0aGlzLmVsLmNvbnRhaW5zKHJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKSB8fFxuICAgICAgICAgICAgIXRoaXMuZWwuY2xvc2VzdCgndHVpLXRleHRmaWVsZCcpIHx8XG4gICAgICAgICAgICByYW5nZS5pbnRlcnNlY3RzTm9kZSh0aGlzLmdob3N0IHx8IHRoaXMuZWwpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2ZXJ5VmVyeVNhZElucHV0Rml4KGVsZW1lbnQ6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50KTogUmFuZ2Uge1xuICAgICAgICBjb25zdCB7Z2hvc3QgPSB0aGlzLmluaXRHaG9zdCh0aGlzLmdob3N0SG9zdCl9ID0gdGhpcztcbiAgICAgICAgY29uc3Qge3RvcCwgbGVmdCwgd2lkdGgsIGhlaWdodH0gPSB0aGlzLmdob3N0SG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qge3NlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHZhbHVlfSA9IGVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5kb2MuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgY29uc3QgaG9zdFJlY3QgPSB0aGlzLmdob3N0SG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBnaG9zdC5zdHlsZS50b3AgPSB0dWlQeCh0b3AgLSBob3N0UmVjdC50b3ApO1xuICAgICAgICBnaG9zdC5zdHlsZS5sZWZ0ID0gdHVpUHgobGVmdCAtIGhvc3RSZWN0LmxlZnQpO1xuICAgICAgICBnaG9zdC5zdHlsZS53aWR0aCA9IHR1aVB4KHdpZHRoKTtcbiAgICAgICAgZ2hvc3Quc3R5bGUuaGVpZ2h0ID0gdHVpUHgoaGVpZ2h0KTtcbiAgICAgICAgZ2hvc3QudGV4dENvbnRlbnQgPSBDSEFSX1pFUk9fV0lEVEhfU1BBQ0UgKyB2YWx1ZSArIENIQVJfTk9fQlJFQUtfU1BBQ0U7XG5cbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQoZ2hvc3QuZmlyc3RDaGlsZCBhcyBOb2RlLCBzZWxlY3Rpb25TdGFydCB8fCAwKTtcbiAgICAgICAgcmFuZ2Uuc2V0RW5kKGdob3N0LmZpcnN0Q2hpbGQgYXMgTm9kZSwgc2VsZWN0aW9uRW5kIHx8IDApO1xuXG4gICAgICAgIHJldHVybiByYW5nZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYW4gaW52aXNpYmxlIERJViBzdHlsZWQgZXhhY3RseSBsaWtlIGlucHV0L3RleHRhcmVhIGVsZW1lbnQgaW5zaWRlIGRpcmVjdGl2ZVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdEdob3N0KFxuICAgICAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50LFxuICAgICk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgZ2hvc3QgPSB0aGlzLmRvYy5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY29uc3Qge2ZvbnQsIGxldHRlclNwYWNpbmcsIHRleHRUcmFuc2Zvcm0sIHBhZGRpbmcsIGJvcmRlclRvcH0gPVxuICAgICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgICAgICBnaG9zdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGdob3N0LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgIGdob3N0LnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgICAgIGdob3N0LnN0eWxlLndoaXRlU3BhY2UgPSAncHJlLXdyYXAnO1xuICAgICAgICBnaG9zdC5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7XG4gICAgICAgIGdob3N0LnN0eWxlLmJvcmRlclRvcCA9IGJvcmRlclRvcDtcbiAgICAgICAgZ2hvc3Quc3R5bGUuZm9udCA9IGZvbnQ7XG4gICAgICAgIGdob3N0LnN0eWxlLmxldHRlclNwYWNpbmcgPSBsZXR0ZXJTcGFjaW5nO1xuICAgICAgICBnaG9zdC5zdHlsZS50ZXh0VHJhbnNmb3JtID0gdGV4dFRyYW5zZm9ybTtcbiAgICAgICAgZ2hvc3Quc3R5bGUucGFkZGluZyA9IHBhZGRpbmc7XG5cbiAgICAgICAgdGhpcy5naG9zdEhvc3QuYXBwZW5kQ2hpbGQoZ2hvc3QpO1xuICAgICAgICB0aGlzLmdob3N0ID0gZ2hvc3Q7XG5cbiAgICAgICAgcmV0dXJuIGdob3N0O1xuICAgIH1cbn1cbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { inject } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { tuiDirectiveBinding } from '@taiga-ui/cdk/utils/miscellaneous';
4
- import { TuiDropdownDirective } from './dropdown.directive';
5
- import { TuiDropdownOpen } from './dropdown-open.directive';
6
- export function tuiDropdown(value) {
7
- return tuiDirectiveBinding(TuiDropdownDirective, 'tuiDropdown', value, {});
8
- }
9
- export function tuiDropdownEnabled(value) {
10
- return tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownEnabled', value, {});
11
- }
12
- export function tuiDropdownOpen() {
13
- const open = tuiDirectiveBinding(TuiDropdownOpen, 'tuiDropdownOpen', false, {});
14
- inject(TuiDropdownOpen)
15
- .tuiDropdownOpenChange.pipe(takeUntilDestroyed())
16
- .subscribe((value) => open.set(value));
17
- return open;
18
- }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uYmluZGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvZHJvcGRvd24vZHJvcGRvd24uYmluZGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBbUMsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHdEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBTTFELE1BQU0sVUFBVSxXQUFXLENBQUMsS0FBb0I7SUFDNUMsT0FBTyxtQkFBbUIsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUM7QUFNRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBZ0M7SUFDL0QsT0FBTyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pGLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUMzQixNQUFNLElBQUksR0FBNEIsbUJBQW1CLENBQ3JELGVBQWUsRUFDZixpQkFBaUIsRUFDakIsS0FBSyxFQUNMLEVBQUUsQ0FDTCxDQUFDO0lBRUYsTUFBTSxDQUFDLGVBQWUsQ0FBQztTQUNsQixxQkFBcUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUNoRCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUzQyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpbmplY3QsIHR5cGUgU2lnbmFsLCB0eXBlIFdyaXRhYmxlU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge3R1aURpcmVjdGl2ZUJpbmRpbmd9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3R5cGUgUG9seW1vcnBoZXVzQ29udGVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5cbmltcG9ydCB7VHVpRHJvcGRvd25EaXJlY3RpdmV9IGZyb20gJy4vZHJvcGRvd24uZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpRHJvcGRvd25PcGVufSBmcm9tICcuL2Ryb3Bkb3duLW9wZW4uZGlyZWN0aXZlJztcblxudHlwZSBDID0gUG9seW1vcnBoZXVzQ29udGVudDtcblxuZXhwb3J0IGZ1bmN0aW9uIHR1aURyb3Bkb3duKHZhbHVlOiBDIHwgV3JpdGFibGVTaWduYWw8Qz4pOiBXcml0YWJsZVNpZ25hbDxDPjtcbmV4cG9ydCBmdW5jdGlvbiB0dWlEcm9wZG93bih2YWx1ZTogU2lnbmFsPEM+KTogU2lnbmFsPEM+O1xuZXhwb3J0IGZ1bmN0aW9uIHR1aURyb3Bkb3duKHZhbHVlOiBDIHwgU2lnbmFsPEM+KTogU2lnbmFsPEM+IHtcbiAgICByZXR1cm4gdHVpRGlyZWN0aXZlQmluZGluZyhUdWlEcm9wZG93bkRpcmVjdGl2ZSwgJ3R1aURyb3Bkb3duJywgdmFsdWUsIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aURyb3Bkb3duRW5hYmxlZChcbiAgICB2YWx1ZTogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gfCBib29sZWFuLFxuKTogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG5leHBvcnQgZnVuY3Rpb24gdHVpRHJvcGRvd25FbmFibGVkKHZhbHVlOiBTaWduYWw8Ym9vbGVhbj4pOiBTaWduYWw8Ym9vbGVhbj47XG5leHBvcnQgZnVuY3Rpb24gdHVpRHJvcGRvd25FbmFibGVkKHZhbHVlOiBTaWduYWw8Ym9vbGVhbj4gfCBib29sZWFuKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdHVpRGlyZWN0aXZlQmluZGluZyhUdWlEcm9wZG93bk9wZW4sICd0dWlEcm9wZG93bkVuYWJsZWQnLCB2YWx1ZSwge30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHVpRHJvcGRvd25PcGVuKCk6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+IHtcbiAgICBjb25zdCBvcGVuOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHR1aURpcmVjdGl2ZUJpbmRpbmcoXG4gICAgICAgIFR1aURyb3Bkb3duT3BlbixcbiAgICAgICAgJ3R1aURyb3Bkb3duT3BlbicsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB7fSxcbiAgICApO1xuXG4gICAgaW5qZWN0KFR1aURyb3Bkb3duT3BlbilcbiAgICAgICAgLnR1aURyb3Bkb3duT3BlbkNoYW5nZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4gb3Blbi5zZXQodmFsdWUpKTtcblxuICAgIHJldHVybiBvcGVuO1xufVxuIl19
@@ -1,92 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, inject, } from '@angular/core';
2
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
- import { EMPTY_CLIENT_RECT } from '@taiga-ui/cdk/constants';
4
- import { TuiActiveZone } from '@taiga-ui/cdk/directives/active-zone';
5
- import { TuiAnimated } from '@taiga-ui/cdk/directives/animated';
6
- import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
7
- import { tuiClamp } from '@taiga-ui/cdk/utils/math';
8
- import { tuiPx } from '@taiga-ui/cdk/utils/miscellaneous';
9
- import { tuiPositionAccessorFor, TuiRectAccessor, tuiRectAccessorFor, } from '@taiga-ui/core/classes';
10
- import { TuiScrollbar } from '@taiga-ui/core/components/scrollbar';
11
- import { TuiPositionService, TuiVisualViewportService } from '@taiga-ui/core/services';
12
- import { TUI_DARK_MODE, TUI_VIEWPORT } from '@taiga-ui/core/tokens';
13
- import { PolymorpheusOutlet } from '@taiga-ui/polymorpheus';
14
- import { map, takeWhile } from 'rxjs';
15
- import { TuiDropdownDirective } from './dropdown.directive';
16
- import { TUI_DROPDOWN_CONTEXT } from './dropdown.providers';
17
- import { TUI_DROPDOWN_OPTIONS } from './dropdown-options.directive';
18
- import { TuiDropdownPosition } from './dropdown-position.directive';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "@taiga-ui/cdk/directives/active-zone";
21
- import * as i2 from "@taiga-ui/cdk/directives/animated";
22
- /**
23
- * @description:
24
- * This component is used to show template in a portal
25
- * using default style of white rounded box with a shadow
26
- */
27
- class TuiDropdownComponent {
28
- constructor() {
29
- this.el = tuiInjectElement();
30
- this.accessor = inject(TuiRectAccessor);
31
- this.viewport = inject(TUI_VIEWPORT);
32
- this.vvs = inject(TuiVisualViewportService);
33
- this.styles$ = inject(TuiPositionService).pipe(takeWhile(() => this.directive.el.isConnected &&
34
- !!this.directive.el.getBoundingClientRect().height), map((v) => (this.position === 'fixed' ? this.vvs.correct(v) : v)), map(([top, left]) => this.getStyles(left, top)), takeUntilDestroyed());
35
- this.options = inject(TUI_DROPDOWN_OPTIONS);
36
- this.directive = inject(TuiDropdownDirective);
37
- this.context = inject(TUI_DROPDOWN_CONTEXT, { optional: true });
38
- this.darkMode = inject(TUI_DARK_MODE);
39
- this.position = this.directive.position;
40
- this.theme = computed((_ = this.darkMode()) => this.directive.el.closest('[tuiTheme]')?.getAttribute('tuiTheme'));
41
- this.close = () => this.directive.toggle(false);
42
- }
43
- ngAfterViewInit() {
44
- this.styles$.subscribe({
45
- next: (styles) => Object.assign(this.el.style, styles),
46
- complete: () => this.close?.(),
47
- });
48
- }
49
- getStyles(x, y) {
50
- const { maxHeight, minHeight, offset, limitWidth } = this.options;
51
- const parent = this.el.offsetParent?.getBoundingClientRect() || EMPTY_CLIENT_RECT;
52
- const { left = 0, top = 0 } = this.position === 'fixed' ? {} : parent;
53
- const rect = this.accessor.getClientRect();
54
- const viewport = this.viewport.getClientRect();
55
- const above = rect.top - viewport.top - 2 * offset;
56
- const below = viewport.top + viewport.height - y - offset;
57
- const available = y > rect.bottom ? below : above;
58
- const height = this.el.getBoundingClientRect().right <= rect.left || x >= rect.right
59
- ? maxHeight
60
- : tuiClamp(available, minHeight, maxHeight);
61
- y -= top;
62
- x -= left;
63
- return {
64
- position: this.position,
65
- top: tuiPx(Math.round(Math.max(y, offset - top))),
66
- left: tuiPx(Math.round(x)),
67
- maxHeight: tuiPx(Math.round(height)),
68
- width: limitWidth === 'fixed' ? tuiPx(Math.round(rect.width)) : '',
69
- minWidth: limitWidth === 'min' ? tuiPx(Math.round(rect.width)) : '',
70
- maxWidth: tuiPx(Math.round(viewport.width) - 16), // 8px min gap from each side
71
- };
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDropdownComponent, isStandalone: true, selector: "tui-dropdown", host: { properties: { "attr.data-appearance": "options.appearance", "attr.tuiTheme": "theme()" } }, providers: [
75
- TuiPositionService,
76
- tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
77
- tuiRectAccessorFor('dropdown', TuiDropdownDirective),
78
- ], hostDirectives: [{ directive: i1.TuiActiveZone }, { directive: i2.TuiAnimated }], ngImport: i0, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
79
- }
80
- export { TuiDropdownComponent };
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDropdownComponent, decorators: [{
82
- type: Component,
83
- args: [{ standalone: true, selector: 'tui-dropdown', imports: [PolymorpheusOutlet, TuiScrollbar], changeDetection: ChangeDetectionStrategy.Default, providers: [
84
- TuiPositionService,
85
- tuiPositionAccessorFor('dropdown', TuiDropdownPosition),
86
- tuiRectAccessorFor('dropdown', TuiDropdownDirective),
87
- ], hostDirectives: [TuiActiveZone, TuiAnimated], host: {
88
- '[attr.data-appearance]': 'options.appearance',
89
- '[attr.tuiTheme]': 'theme()',
90
- }, template: "<tui-scrollbar class=\"t-scroll\">\n <div\n *polymorpheusOutlet=\"directive._content() as text; context: {$implicit: close}\"\n class=\"t-primitive\"\n >\n {{ text }}\n </div>\n</tui-scrollbar>\n", styles: [":host{position:absolute;display:flex;box-shadow:var(--tui-shadow-medium);color:var(--tui-text-primary);background:var(--tui-background-elevation-3);border-radius:var(--tui-radius-m);overflow:hidden;border:1px solid var(--tui-border-normal);box-sizing:border-box;isolation:isolate;pointer-events:auto;--tui-from: translateY(-1rem)}:host.tui-enter,:host.tui-leave{animation-name:tuiFade,tuiSlide}:host:not([style*=top]){visibility:hidden}.t-scroll{flex-grow:1;max-inline-size:100%;inline-size:-webkit-max-content;inline-size:max-content;overscroll-behavior:none}.t-primitive{padding:1rem}\n"] }]
91
- }] });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9kaXJlY3RpdmVzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZGlyZWN0aXZlcy9kcm9wZG93bi9kcm9wZG93bi50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hELE9BQU8sRUFDSCxzQkFBc0IsRUFDdEIsZUFBZSxFQUNmLGtCQUFrQixHQUNyQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLCtCQUErQixDQUFDOzs7O0FBRWxFOzs7O0dBSUc7QUFDSCxNQW9CYSxvQkFBb0I7SUFwQmpDO1FBcUJxQixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEMsUUFBRyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRXZDLFlBQU8sR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQ3RELFNBQVMsQ0FDTCxHQUFHLEVBQUUsQ0FDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXO1lBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FDekQsRUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNqRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFDL0Msa0JBQWtCLEVBQUUsQ0FDdkIsQ0FBQztRQUVpQixZQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN6RCxhQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNuQyxVQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQ3BFLENBQUM7UUFTaUIsVUFBSyxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBNkJ2RTtJQXBDVSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQ25CLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDdEQsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRTtTQUNqQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBSU8sU0FBUyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ2xDLE1BQU0sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLHFCQUFxQixFQUFFLElBQUksaUJBQWlCLENBQUM7UUFDbEYsTUFBTSxFQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDMUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xELE1BQU0sTUFBTSxHQUNSLElBQUksQ0FBQyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7WUFDakUsQ0FBQyxDQUFDLFNBQVM7WUFDWCxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFcEQsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNULENBQUMsSUFBSSxJQUFJLENBQUM7UUFFVixPQUFPO1lBQ0gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLEtBQUssRUFBRSxVQUFVLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsRSxRQUFRLEVBQUUsVUFBVSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSw2QkFBNkI7U0FDbEYsQ0FBQztJQUNOLENBQUM7K0dBN0RRLG9CQUFvQjttR0FBcEIsb0JBQW9CLCtKQVhsQjtZQUNQLGtCQUFrQjtZQUNsQixzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7WUFDdkQsa0JBQWtCLENBQUMsVUFBVSxFQUFFLG9CQUFvQixDQUFDO1NBQ3ZELDRHQ2hETCxtT0FRQSxzb0JEOEJjLGtCQUFrQiw4SEFBRSxZQUFZOztTQWlCakMsb0JBQW9COzRGQUFwQixvQkFBb0I7a0JBcEJoQyxTQUFTO2lDQUNNLElBQUksWUFDTixjQUFjLFdBQ2YsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsbUJBSzFCLHVCQUF1QixDQUFDLE9BQU8sYUFDckM7d0JBQ1Asa0JBQWtCO3dCQUNsQixzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7d0JBQ3ZELGtCQUFrQixDQUFDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQztxQkFDdkQsa0JBQ2UsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLFFBQ3RDO3dCQUNGLHdCQUF3QixFQUFFLG9CQUFvQjt3QkFDOUMsaUJBQWlCLEVBQUUsU0FBUztxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIHR5cGUgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgY29tcHV0ZWQsXG4gICAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0VNUFRZX0NMSUVOVF9SRUNUfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUFjdGl2ZVpvbmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9hY3RpdmUtem9uZSc7XG5pbXBvcnQge1R1aUFuaW1hdGVkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvYW5pbWF0ZWQnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHt0dWlQeH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcbmltcG9ydCB7XG4gICAgdHVpUG9zaXRpb25BY2Nlc3NvckZvcixcbiAgICBUdWlSZWN0QWNjZXNzb3IsXG4gICAgdHVpUmVjdEFjY2Vzc29yRm9yLFxufSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jbGFzc2VzJztcbmltcG9ydCB7VHVpU2Nyb2xsYmFyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3Njcm9sbGJhcic7XG5pbXBvcnQge1R1aVBvc2l0aW9uU2VydmljZSwgVHVpVmlzdWFsVmlld3BvcnRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9zZXJ2aWNlcyc7XG5pbXBvcnQge1RVSV9EQVJLX01PREUsIFRVSV9WSUVXUE9SVH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB7UG9seW1vcnBoZXVzT3V0bGV0fSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7bWFwLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aURyb3Bkb3duRGlyZWN0aXZlfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9DT05URVhUfSBmcm9tICcuL2Ryb3Bkb3duLnByb3ZpZGVycyc7XG5pbXBvcnQge1RVSV9EUk9QRE9XTl9PUFRJT05TfSBmcm9tICcuL2Ryb3Bkb3duLW9wdGlvbnMuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpRHJvcGRvd25Qb3NpdGlvbn0gZnJvbSAnLi9kcm9wZG93bi1wb3NpdGlvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbjpcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gc2hvdyB0ZW1wbGF0ZSBpbiBhIHBvcnRhbFxuICogdXNpbmcgZGVmYXVsdCBzdHlsZSBvZiB3aGl0ZSByb3VuZGVkIGJveCB3aXRoIGEgc2hhZG93XG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd0dWktZHJvcGRvd24nLFxuICAgIGltcG9ydHM6IFtQb2x5bW9ycGhldXNPdXRsZXQsIFR1aVNjcm9sbGJhcl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Ryb3Bkb3duLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Ryb3Bkb3duLnN0eWxlLmxlc3MnXSxcbiAgICAvLyBAYmFkIFRPRE86IE9uUHVzaFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvcHJlZmVyLW9uLXB1c2gtY29tcG9uZW50LWNoYW5nZS1kZXRlY3Rpb25cbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFR1aVBvc2l0aW9uU2VydmljZSxcbiAgICAgICAgdHVpUG9zaXRpb25BY2Nlc3NvckZvcignZHJvcGRvd24nLCBUdWlEcm9wZG93blBvc2l0aW9uKSxcbiAgICAgICAgdHVpUmVjdEFjY2Vzc29yRm9yKCdkcm9wZG93bicsIFR1aURyb3Bkb3duRGlyZWN0aXZlKSxcbiAgICBdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbVHVpQWN0aXZlWm9uZSwgVHVpQW5pbWF0ZWRdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtYXBwZWFyYW5jZV0nOiAnb3B0aW9ucy5hcHBlYXJhbmNlJyxcbiAgICAgICAgJ1thdHRyLnR1aVRoZW1lXSc6ICd0aGVtZSgpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhY2Nlc3NvciA9IGluamVjdChUdWlSZWN0QWNjZXNzb3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld3BvcnQgPSBpbmplY3QoVFVJX1ZJRVdQT1JUKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZ2cyA9IGluamVjdChUdWlWaXN1YWxWaWV3cG9ydFNlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHlsZXMkID0gaW5qZWN0KFR1aVBvc2l0aW9uU2VydmljZSkucGlwZShcbiAgICAgICAgdGFrZVdoaWxlKFxuICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmRpcmVjdGl2ZS5lbC5pc0Nvbm5lY3RlZCAmJlxuICAgICAgICAgICAgICAgICEhdGhpcy5kaXJlY3RpdmUuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0LFxuICAgICAgICApLFxuICAgICAgICBtYXAoKHYpID0+ICh0aGlzLnBvc2l0aW9uID09PSAnZml4ZWQnID8gdGhpcy52dnMuY29ycmVjdCh2KSA6IHYpKSxcbiAgICAgICAgbWFwKChbdG9wLCBsZWZ0XSkgPT4gdGhpcy5nZXRTdHlsZXMobGVmdCwgdG9wKSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfRFJPUERPV05fT1BUSU9OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpcmVjdGl2ZSA9IGluamVjdChUdWlEcm9wZG93bkRpcmVjdGl2ZSk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3QoVFVJX0RST1BET1dOX0NPTlRFWFQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkYXJrTW9kZSA9IGluamVjdChUVUlfREFSS19NT0RFKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9zaXRpb24gPSB0aGlzLmRpcmVjdGl2ZS5wb3NpdGlvbjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGhlbWUgPSBjb21wdXRlZCgoXyA9IHRoaXMuZGFya01vZGUoKSkgPT5cbiAgICAgICAgdGhpcy5kaXJlY3RpdmUuZWwuY2xvc2VzdCgnW3R1aVRoZW1lXScpPy5nZXRBdHRyaWJ1dGUoJ3R1aVRoZW1lJyksXG4gICAgKTtcblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3R5bGVzJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgbmV4dDogKHN0eWxlcykgPT4gT2JqZWN0LmFzc2lnbih0aGlzLmVsLnN0eWxlLCBzdHlsZXMpLFxuICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuY2xvc2U/LigpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvc2UgPSAoKTogdm9pZCA9PiB0aGlzLmRpcmVjdGl2ZS50b2dnbGUoZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBnZXRTdHlsZXMoeDogbnVtYmVyLCB5OiBudW1iZXIpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qge21heEhlaWdodCwgbWluSGVpZ2h0LCBvZmZzZXQsIGxpbWl0V2lkdGh9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsLm9mZnNldFBhcmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgfHwgRU1QVFlfQ0xJRU5UX1JFQ1Q7XG4gICAgICAgIGNvbnN0IHtsZWZ0ID0gMCwgdG9wID0gMH0gPSB0aGlzLnBvc2l0aW9uID09PSAnZml4ZWQnID8ge30gOiBwYXJlbnQ7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmFjY2Vzc29yLmdldENsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnZpZXdwb3J0LmdldENsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgYWJvdmUgPSByZWN0LnRvcCAtIHZpZXdwb3J0LnRvcCAtIDIgKiBvZmZzZXQ7XG4gICAgICAgIGNvbnN0IGJlbG93ID0gdmlld3BvcnQudG9wICsgdmlld3BvcnQuaGVpZ2h0IC0geSAtIG9mZnNldDtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlID0geSA+IHJlY3QuYm90dG9tID8gYmVsb3cgOiBhYm92ZTtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID1cbiAgICAgICAgICAgIHRoaXMuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQgPD0gcmVjdC5sZWZ0IHx8IHggPj0gcmVjdC5yaWdodFxuICAgICAgICAgICAgICAgID8gbWF4SGVpZ2h0XG4gICAgICAgICAgICAgICAgOiB0dWlDbGFtcChhdmFpbGFibGUsIG1pbkhlaWdodCwgbWF4SGVpZ2h0KTtcblxuICAgICAgICB5IC09IHRvcDtcbiAgICAgICAgeCAtPSBsZWZ0O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRvcDogdHVpUHgoTWF0aC5yb3VuZChNYXRoLm1heCh5LCBvZmZzZXQgLSB0b3ApKSksXG4gICAgICAgICAgICBsZWZ0OiB0dWlQeChNYXRoLnJvdW5kKHgpKSxcbiAgICAgICAgICAgIG1heEhlaWdodDogdHVpUHgoTWF0aC5yb3VuZChoZWlnaHQpKSxcbiAgICAgICAgICAgIHdpZHRoOiBsaW1pdFdpZHRoID09PSAnZml4ZWQnID8gdHVpUHgoTWF0aC5yb3VuZChyZWN0LndpZHRoKSkgOiAnJyxcbiAgICAgICAgICAgIG1pbldpZHRoOiBsaW1pdFdpZHRoID09PSAnbWluJyA/IHR1aVB4KE1hdGgucm91bmQocmVjdC53aWR0aCkpIDogJycsXG4gICAgICAgICAgICBtYXhXaWR0aDogdHVpUHgoTWF0aC5yb3VuZCh2aWV3cG9ydC53aWR0aCkgLSAxNiksIC8vIDhweCBtaW4gZ2FwIGZyb20gZWFjaCBzaWRlXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPHR1aS1zY3JvbGxiYXIgY2xhc3M9XCJ0LXNjcm9sbFwiPlxuICAgIDxkaXZcbiAgICAgICAgKnBvbHltb3JwaGV1c091dGxldD1cImRpcmVjdGl2ZS5fY29udGVudCgpIGFzIHRleHQ7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNsb3NlfVwiXG4gICAgICAgIGNsYXNzPVwidC1wcmltaXRpdmVcIlxuICAgID5cbiAgICAgICAge3sgdGV4dCB9fVxuICAgIDwvZGl2PlxuPC90dWktc2Nyb2xsYmFyPlxuIl19