primeng 22.1.2 → 22.1.3

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 (406) hide show
  1. package/fesm2022/primeng-accordion.mjs +23 -24
  2. package/fesm2022/primeng-animateonscroll.mjs +9 -10
  3. package/fesm2022/primeng-api.mjs +31 -32
  4. package/fesm2022/primeng-autocomplete.mjs +17 -18
  5. package/fesm2022/primeng-autofocus.mjs +7 -8
  6. package/fesm2022/primeng-avatar.mjs +10 -11
  7. package/fesm2022/primeng-avatargroup.mjs +10 -11
  8. package/fesm2022/primeng-badge.mjs +10 -11
  9. package/fesm2022/primeng-base.mjs +41 -31
  10. package/fesm2022/primeng-basecomponent.mjs +108 -44
  11. package/fesm2022/primeng-baseeditableholder.mjs +3 -4
  12. package/fesm2022/primeng-baseinput.mjs +3 -4
  13. package/fesm2022/primeng-basemodelholder.mjs +3 -4
  14. package/fesm2022/primeng-bind.mjs +10 -9
  15. package/fesm2022/primeng-blockui.mjs +23 -24
  16. package/fesm2022/primeng-breadcrumb.mjs +10 -11
  17. package/fesm2022/primeng-button.mjs +33 -39
  18. package/fesm2022/primeng-buttongroup.mjs +12 -13
  19. package/fesm2022/primeng-card.mjs +10 -11
  20. package/fesm2022/primeng-carousel.mjs +47 -46
  21. package/fesm2022/primeng-cascadeselect.mjs +23 -24
  22. package/fesm2022/primeng-chart.mjs +10 -11
  23. package/fesm2022/primeng-checkbox.mjs +10 -11
  24. package/fesm2022/primeng-chip.mjs +10 -11
  25. package/fesm2022/primeng-classnames.mjs +7 -8
  26. package/fesm2022/primeng-colorpicker.mjs +10 -11
  27. package/fesm2022/primeng-commandmenu.mjs +12 -13
  28. package/fesm2022/primeng-compare.mjs +19 -20
  29. package/fesm2022/primeng-config.mjs +39 -18
  30. package/fesm2022/primeng-confirmdialog.mjs +29 -21
  31. package/fesm2022/primeng-confirmpopup.mjs +22 -21
  32. package/fesm2022/primeng-contextmenu.mjs +29 -28
  33. package/fesm2022/primeng-dataview.mjs +10 -11
  34. package/fesm2022/primeng-datepicker.mjs +110 -87
  35. package/fesm2022/primeng-dialog.mjs +46 -34
  36. package/fesm2022/primeng-divider.mjs +10 -11
  37. package/fesm2022/primeng-dock.mjs +12 -13
  38. package/fesm2022/primeng-dom.mjs +18 -6
  39. package/fesm2022/primeng-dragdrop.mjs +15 -14
  40. package/fesm2022/primeng-drawer.mjs +20 -22
  41. package/fesm2022/primeng-dynamicdialog.mjs +23 -22
  42. package/fesm2022/primeng-editor.mjs +10 -11
  43. package/fesm2022/primeng-fieldset.mjs +13 -15
  44. package/fesm2022/primeng-fileupload.mjs +24 -25
  45. package/fesm2022/primeng-floatlabel.mjs +10 -11
  46. package/fesm2022/primeng-fluid.mjs +10 -11
  47. package/fesm2022/primeng-focustrap.mjs +11 -12
  48. package/fesm2022/primeng-galleria.mjs +40 -37
  49. package/fesm2022/primeng-gallery.mjs +73 -74
  50. package/fesm2022/primeng-iconfield.mjs +10 -11
  51. package/fesm2022/primeng-icons-angledoubledown.mjs +3 -4
  52. package/fesm2022/primeng-icons-angledoubleleft.mjs +3 -4
  53. package/fesm2022/primeng-icons-angledoubleright.mjs +3 -4
  54. package/fesm2022/primeng-icons-angledoubleup.mjs +3 -4
  55. package/fesm2022/primeng-icons-angledown.mjs +3 -4
  56. package/fesm2022/primeng-icons-angleleft.mjs +3 -4
  57. package/fesm2022/primeng-icons-angleright.mjs +3 -4
  58. package/fesm2022/primeng-icons-angleup.mjs +3 -4
  59. package/fesm2022/primeng-icons-arrowdown.mjs +4 -6
  60. package/fesm2022/primeng-icons-arrowdownleft.mjs +3 -4
  61. package/fesm2022/primeng-icons-arrowdownright.mjs +3 -4
  62. package/fesm2022/primeng-icons-arrowleft.mjs +4 -6
  63. package/fesm2022/primeng-icons-arrowright.mjs +3 -4
  64. package/fesm2022/primeng-icons-arrowup.mjs +4 -6
  65. package/fesm2022/primeng-icons-ban.mjs +4 -6
  66. package/fesm2022/primeng-icons-bars.mjs +3 -4
  67. package/fesm2022/primeng-icons-baseicon.mjs +6 -7
  68. package/fesm2022/primeng-icons-blank.mjs +3 -4
  69. package/fesm2022/primeng-icons-calendar.mjs +3 -4
  70. package/fesm2022/primeng-icons-caretleft.mjs +3 -4
  71. package/fesm2022/primeng-icons-caretright.mjs +3 -4
  72. package/fesm2022/primeng-icons-check.mjs +3 -4
  73. package/fesm2022/primeng-icons-chevrondown.mjs +3 -4
  74. package/fesm2022/primeng-icons-chevronleft.mjs +3 -4
  75. package/fesm2022/primeng-icons-chevronright.mjs +3 -4
  76. package/fesm2022/primeng-icons-chevronup.mjs +3 -4
  77. package/fesm2022/primeng-icons-exclamationtriangle.mjs +4 -6
  78. package/fesm2022/primeng-icons-eye.mjs +3 -4
  79. package/fesm2022/primeng-icons-eyeslash.mjs +4 -6
  80. package/fesm2022/primeng-icons-filter.mjs +4 -6
  81. package/fesm2022/primeng-icons-filterfill.mjs +3 -4
  82. package/fesm2022/primeng-icons-filterslash.mjs +4 -6
  83. package/fesm2022/primeng-icons-home.mjs +4 -6
  84. package/fesm2022/primeng-icons-infocircle.mjs +4 -6
  85. package/fesm2022/primeng-icons-minus.mjs +3 -4
  86. package/fesm2022/primeng-icons-pencil.mjs +4 -6
  87. package/fesm2022/primeng-icons-plus.mjs +4 -6
  88. package/fesm2022/primeng-icons-refresh.mjs +4 -6
  89. package/fesm2022/primeng-icons-search.mjs +4 -6
  90. package/fesm2022/primeng-icons-searchminus.mjs +4 -6
  91. package/fesm2022/primeng-icons-searchplus.mjs +4 -6
  92. package/fesm2022/primeng-icons-sortalt.mjs +4 -6
  93. package/fesm2022/primeng-icons-sortamountdown.mjs +4 -6
  94. package/fesm2022/primeng-icons-sortamountupalt.mjs +4 -6
  95. package/fesm2022/primeng-icons-spinner.mjs +4 -6
  96. package/fesm2022/primeng-icons-star.mjs +4 -6
  97. package/fesm2022/primeng-icons-starfill.mjs +4 -6
  98. package/fesm2022/primeng-icons-thlarge.mjs +4 -6
  99. package/fesm2022/primeng-icons-times.mjs +3 -4
  100. package/fesm2022/primeng-icons-timescircle.mjs +4 -6
  101. package/fesm2022/primeng-icons-trash.mjs +4 -6
  102. package/fesm2022/primeng-icons-undo.mjs +4 -6
  103. package/fesm2022/primeng-icons-upload.mjs +4 -6
  104. package/fesm2022/primeng-icons-windowmaximize.mjs +4 -6
  105. package/fesm2022/primeng-icons-windowminimize.mjs +4 -6
  106. package/fesm2022/primeng-iftalabel.mjs +10 -11
  107. package/fesm2022/primeng-image.mjs +34 -20
  108. package/fesm2022/primeng-imagecompare.mjs +10 -11
  109. package/fesm2022/primeng-inplace.mjs +16 -17
  110. package/fesm2022/primeng-inputcolor.mjs +46 -51
  111. package/fesm2022/primeng-inputgroup.mjs +10 -11
  112. package/fesm2022/primeng-inputgroupaddon.mjs +10 -11
  113. package/fesm2022/primeng-inputicon.mjs +10 -11
  114. package/fesm2022/primeng-inputmask.mjs +15 -16
  115. package/fesm2022/primeng-inputnumber.mjs +10 -11
  116. package/fesm2022/primeng-inputotp.mjs +10 -11
  117. package/fesm2022/primeng-inputpassword.mjs +10 -11
  118. package/fesm2022/primeng-inputtags.mjs +12 -13
  119. package/fesm2022/primeng-inputtext.mjs +10 -11
  120. package/fesm2022/primeng-isolation.mjs +280 -0
  121. package/fesm2022/primeng-keyfilter.mjs +7 -8
  122. package/fesm2022/primeng-knob.mjs +13 -15
  123. package/fesm2022/primeng-label.mjs +10 -11
  124. package/fesm2022/primeng-license.mjs +0 -1
  125. package/fesm2022/primeng-listbox.mjs +32 -29
  126. package/fesm2022/primeng-megamenu.mjs +30 -34
  127. package/fesm2022/primeng-menu.mjs +36 -43
  128. package/fesm2022/primeng-menubar.mjs +26 -24
  129. package/fesm2022/primeng-message.mjs +16 -19
  130. package/fesm2022/primeng-metergroup.mjs +13 -14
  131. package/fesm2022/primeng-motion.mjs +13 -14
  132. package/fesm2022/primeng-multiselect.mjs +34 -27
  133. package/fesm2022/primeng-orderlist.mjs +31 -23
  134. package/fesm2022/primeng-organizationchart.mjs +13 -14
  135. package/fesm2022/primeng-overlay.mjs +24 -22
  136. package/fesm2022/primeng-overlaybadge.mjs +10 -11
  137. package/fesm2022/primeng-paginator.mjs +13 -11
  138. package/fesm2022/primeng-panel.mjs +13 -15
  139. package/fesm2022/primeng-panelmenu.mjs +22 -23
  140. package/fesm2022/primeng-passthrough.mjs +0 -1
  141. package/fesm2022/primeng-password.mjs +29 -30
  142. package/fesm2022/primeng-picklist.mjs +28 -20
  143. package/fesm2022/primeng-popover.mjs +21 -21
  144. package/fesm2022/primeng-progressbar.mjs +10 -11
  145. package/fesm2022/primeng-progressspinner.mjs +10 -11
  146. package/fesm2022/primeng-radiobutton.mjs +13 -14
  147. package/fesm2022/primeng-rating.mjs +14 -16
  148. package/fesm2022/primeng-ripple.mjs +24 -23
  149. package/fesm2022/primeng-scrollarea.mjs +25 -26
  150. package/fesm2022/primeng-scroller.mjs +16 -14
  151. package/fesm2022/primeng-scrollpanel.mjs +23 -24
  152. package/fesm2022/primeng-scrolltop.mjs +12 -13
  153. package/fesm2022/primeng-select.mjs +243 -146
  154. package/fesm2022/primeng-selectbutton.mjs +10 -11
  155. package/fesm2022/primeng-sidebar.mjs +82 -84
  156. package/fesm2022/primeng-skeleton.mjs +10 -11
  157. package/fesm2022/primeng-slider.mjs +10 -11
  158. package/fesm2022/primeng-speeddial.mjs +20 -19
  159. package/fesm2022/primeng-splitbutton.mjs +11 -13
  160. package/fesm2022/primeng-splitter.mjs +13 -14
  161. package/fesm2022/primeng-stepper.mjs +47 -48
  162. package/fesm2022/primeng-steps.mjs +10 -11
  163. package/fesm2022/primeng-styleclass.mjs +10 -9
  164. package/fesm2022/primeng-table.mjs +183 -162
  165. package/fesm2022/primeng-tabs.mjs +36 -37
  166. package/fesm2022/primeng-tag.mjs +10 -11
  167. package/fesm2022/primeng-terminal.mjs +13 -14
  168. package/fesm2022/primeng-textarea.mjs +10 -11
  169. package/fesm2022/primeng-tieredmenu.mjs +26 -26
  170. package/fesm2022/primeng-timeline.mjs +10 -11
  171. package/fesm2022/primeng-toast.mjs +48 -33
  172. package/fesm2022/primeng-togglebutton.mjs +10 -11
  173. package/fesm2022/primeng-toggleswitch.mjs +10 -11
  174. package/fesm2022/primeng-toolbar.mjs +10 -11
  175. package/fesm2022/primeng-tooltip.mjs +24 -25
  176. package/fesm2022/primeng-tree.mjs +19 -20
  177. package/fesm2022/primeng-treeselect.mjs +18 -19
  178. package/fesm2022/primeng-treetable.mjs +93 -88
  179. package/fesm2022/primeng-useid.mjs +38 -0
  180. package/fesm2022/primeng-usestyle.mjs +265 -44
  181. package/fesm2022/primeng-utils.mjs +33 -2
  182. package/fesm2022/primeng.mjs +0 -1
  183. package/package.json +12 -4
  184. package/types/primeng-accordion.d.ts +0 -9
  185. package/types/primeng-animateonscroll.d.ts +2 -1
  186. package/types/primeng-api.d.ts +3 -1
  187. package/types/primeng-autocomplete.d.ts +1 -3
  188. package/types/primeng-base.d.ts +3 -1
  189. package/types/primeng-basecomponent.d.ts +34 -16
  190. package/types/primeng-button.d.ts +9 -12
  191. package/types/primeng-carousel.d.ts +3 -25
  192. package/types/primeng-compare.d.ts +0 -9
  193. package/types/primeng-config.d.ts +27 -2
  194. package/types/primeng-confirmdialog.d.ts +1 -0
  195. package/types/primeng-confirmpopup.d.ts +1 -3
  196. package/types/primeng-datepicker.d.ts +2 -12
  197. package/types/primeng-dialog.d.ts +1 -0
  198. package/types/primeng-dom.d.ts +6 -11
  199. package/types/primeng-dragdrop.d.ts +1 -0
  200. package/types/primeng-dynamicdialog.d.ts +3 -1
  201. package/types/primeng-focustrap.d.ts +1 -1
  202. package/types/primeng-gallery.d.ts +0 -63
  203. package/types/primeng-inputcolor.d.ts +0 -33
  204. package/types/primeng-isolation.d.ts +21 -0
  205. package/types/primeng-listbox.d.ts +1 -0
  206. package/types/primeng-megamenu.d.ts +5 -1
  207. package/types/primeng-menu.d.ts +6 -7
  208. package/types/primeng-motion.d.ts +2 -7
  209. package/types/primeng-multiselect.d.ts +3 -1
  210. package/types/primeng-orderlist.d.ts +1 -0
  211. package/types/primeng-picklist.d.ts +1 -0
  212. package/types/primeng-scrollarea.d.ts +0 -15
  213. package/types/primeng-scroller.d.ts +2 -1
  214. package/types/primeng-select.d.ts +54 -13
  215. package/types/primeng-sidebar.d.ts +0 -69
  216. package/types/primeng-splitter.d.ts +0 -3
  217. package/types/primeng-stepper.d.ts +2 -19
  218. package/types/primeng-table.d.ts +2 -75
  219. package/types/primeng-tabs.d.ts +2 -16
  220. package/types/primeng-toast.d.ts +4 -2
  221. package/types/primeng-treetable.d.ts +4 -92
  222. package/types/primeng-types-listbox.d.ts +1 -1
  223. package/types/primeng-types-select.d.ts +4 -0
  224. package/types/primeng-useid.d.ts +15 -0
  225. package/types/primeng-usestyle.d.ts +87 -7
  226. package/types/primeng-utils.d.ts +42 -0
  227. package/fesm2022/primeng-accordion.mjs.map +0 -1
  228. package/fesm2022/primeng-animateonscroll.mjs.map +0 -1
  229. package/fesm2022/primeng-api.mjs.map +0 -1
  230. package/fesm2022/primeng-autocomplete.mjs.map +0 -1
  231. package/fesm2022/primeng-autofocus.mjs.map +0 -1
  232. package/fesm2022/primeng-avatar.mjs.map +0 -1
  233. package/fesm2022/primeng-avatargroup.mjs.map +0 -1
  234. package/fesm2022/primeng-badge.mjs.map +0 -1
  235. package/fesm2022/primeng-base.mjs.map +0 -1
  236. package/fesm2022/primeng-basecomponent.mjs.map +0 -1
  237. package/fesm2022/primeng-baseeditableholder.mjs.map +0 -1
  238. package/fesm2022/primeng-baseinput.mjs.map +0 -1
  239. package/fesm2022/primeng-basemodelholder.mjs.map +0 -1
  240. package/fesm2022/primeng-bind.mjs.map +0 -1
  241. package/fesm2022/primeng-blockui.mjs.map +0 -1
  242. package/fesm2022/primeng-breadcrumb.mjs.map +0 -1
  243. package/fesm2022/primeng-button.mjs.map +0 -1
  244. package/fesm2022/primeng-buttongroup.mjs.map +0 -1
  245. package/fesm2022/primeng-card.mjs.map +0 -1
  246. package/fesm2022/primeng-carousel.mjs.map +0 -1
  247. package/fesm2022/primeng-cascadeselect.mjs.map +0 -1
  248. package/fesm2022/primeng-chart.mjs.map +0 -1
  249. package/fesm2022/primeng-checkbox.mjs.map +0 -1
  250. package/fesm2022/primeng-chip.mjs.map +0 -1
  251. package/fesm2022/primeng-classnames.mjs.map +0 -1
  252. package/fesm2022/primeng-colorpicker.mjs.map +0 -1
  253. package/fesm2022/primeng-commandmenu.mjs.map +0 -1
  254. package/fesm2022/primeng-compare.mjs.map +0 -1
  255. package/fesm2022/primeng-config.mjs.map +0 -1
  256. package/fesm2022/primeng-confirmdialog.mjs.map +0 -1
  257. package/fesm2022/primeng-confirmpopup.mjs.map +0 -1
  258. package/fesm2022/primeng-contextmenu.mjs.map +0 -1
  259. package/fesm2022/primeng-dataview.mjs.map +0 -1
  260. package/fesm2022/primeng-datepicker.mjs.map +0 -1
  261. package/fesm2022/primeng-dialog.mjs.map +0 -1
  262. package/fesm2022/primeng-divider.mjs.map +0 -1
  263. package/fesm2022/primeng-dock.mjs.map +0 -1
  264. package/fesm2022/primeng-dom.mjs.map +0 -1
  265. package/fesm2022/primeng-dragdrop.mjs.map +0 -1
  266. package/fesm2022/primeng-drawer.mjs.map +0 -1
  267. package/fesm2022/primeng-dynamicdialog.mjs.map +0 -1
  268. package/fesm2022/primeng-editor.mjs.map +0 -1
  269. package/fesm2022/primeng-fieldset.mjs.map +0 -1
  270. package/fesm2022/primeng-fileupload.mjs.map +0 -1
  271. package/fesm2022/primeng-floatlabel.mjs.map +0 -1
  272. package/fesm2022/primeng-fluid.mjs.map +0 -1
  273. package/fesm2022/primeng-focustrap.mjs.map +0 -1
  274. package/fesm2022/primeng-galleria.mjs.map +0 -1
  275. package/fesm2022/primeng-gallery.mjs.map +0 -1
  276. package/fesm2022/primeng-iconfield.mjs.map +0 -1
  277. package/fesm2022/primeng-icons-angledoubledown.mjs.map +0 -1
  278. package/fesm2022/primeng-icons-angledoubleleft.mjs.map +0 -1
  279. package/fesm2022/primeng-icons-angledoubleright.mjs.map +0 -1
  280. package/fesm2022/primeng-icons-angledoubleup.mjs.map +0 -1
  281. package/fesm2022/primeng-icons-angledown.mjs.map +0 -1
  282. package/fesm2022/primeng-icons-angleleft.mjs.map +0 -1
  283. package/fesm2022/primeng-icons-angleright.mjs.map +0 -1
  284. package/fesm2022/primeng-icons-angleup.mjs.map +0 -1
  285. package/fesm2022/primeng-icons-arrowdown.mjs.map +0 -1
  286. package/fesm2022/primeng-icons-arrowdownleft.mjs.map +0 -1
  287. package/fesm2022/primeng-icons-arrowdownright.mjs.map +0 -1
  288. package/fesm2022/primeng-icons-arrowleft.mjs.map +0 -1
  289. package/fesm2022/primeng-icons-arrowright.mjs.map +0 -1
  290. package/fesm2022/primeng-icons-arrowup.mjs.map +0 -1
  291. package/fesm2022/primeng-icons-ban.mjs.map +0 -1
  292. package/fesm2022/primeng-icons-bars.mjs.map +0 -1
  293. package/fesm2022/primeng-icons-baseicon.mjs.map +0 -1
  294. package/fesm2022/primeng-icons-blank.mjs.map +0 -1
  295. package/fesm2022/primeng-icons-calendar.mjs.map +0 -1
  296. package/fesm2022/primeng-icons-caretleft.mjs.map +0 -1
  297. package/fesm2022/primeng-icons-caretright.mjs.map +0 -1
  298. package/fesm2022/primeng-icons-check.mjs.map +0 -1
  299. package/fesm2022/primeng-icons-chevrondown.mjs.map +0 -1
  300. package/fesm2022/primeng-icons-chevronleft.mjs.map +0 -1
  301. package/fesm2022/primeng-icons-chevronright.mjs.map +0 -1
  302. package/fesm2022/primeng-icons-chevronup.mjs.map +0 -1
  303. package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +0 -1
  304. package/fesm2022/primeng-icons-eye.mjs.map +0 -1
  305. package/fesm2022/primeng-icons-eyeslash.mjs.map +0 -1
  306. package/fesm2022/primeng-icons-filter.mjs.map +0 -1
  307. package/fesm2022/primeng-icons-filterfill.mjs.map +0 -1
  308. package/fesm2022/primeng-icons-filterslash.mjs.map +0 -1
  309. package/fesm2022/primeng-icons-home.mjs.map +0 -1
  310. package/fesm2022/primeng-icons-infocircle.mjs.map +0 -1
  311. package/fesm2022/primeng-icons-minus.mjs.map +0 -1
  312. package/fesm2022/primeng-icons-pencil.mjs.map +0 -1
  313. package/fesm2022/primeng-icons-plus.mjs.map +0 -1
  314. package/fesm2022/primeng-icons-refresh.mjs.map +0 -1
  315. package/fesm2022/primeng-icons-search.mjs.map +0 -1
  316. package/fesm2022/primeng-icons-searchminus.mjs.map +0 -1
  317. package/fesm2022/primeng-icons-searchplus.mjs.map +0 -1
  318. package/fesm2022/primeng-icons-sortalt.mjs.map +0 -1
  319. package/fesm2022/primeng-icons-sortamountdown.mjs.map +0 -1
  320. package/fesm2022/primeng-icons-sortamountupalt.mjs.map +0 -1
  321. package/fesm2022/primeng-icons-spinner.mjs.map +0 -1
  322. package/fesm2022/primeng-icons-star.mjs.map +0 -1
  323. package/fesm2022/primeng-icons-starfill.mjs.map +0 -1
  324. package/fesm2022/primeng-icons-thlarge.mjs.map +0 -1
  325. package/fesm2022/primeng-icons-times.mjs.map +0 -1
  326. package/fesm2022/primeng-icons-timescircle.mjs.map +0 -1
  327. package/fesm2022/primeng-icons-trash.mjs.map +0 -1
  328. package/fesm2022/primeng-icons-undo.mjs.map +0 -1
  329. package/fesm2022/primeng-icons-upload.mjs.map +0 -1
  330. package/fesm2022/primeng-icons-windowmaximize.mjs.map +0 -1
  331. package/fesm2022/primeng-icons-windowminimize.mjs.map +0 -1
  332. package/fesm2022/primeng-iftalabel.mjs.map +0 -1
  333. package/fesm2022/primeng-image.mjs.map +0 -1
  334. package/fesm2022/primeng-imagecompare.mjs.map +0 -1
  335. package/fesm2022/primeng-inplace.mjs.map +0 -1
  336. package/fesm2022/primeng-inputcolor.mjs.map +0 -1
  337. package/fesm2022/primeng-inputgroup.mjs.map +0 -1
  338. package/fesm2022/primeng-inputgroupaddon.mjs.map +0 -1
  339. package/fesm2022/primeng-inputicon.mjs.map +0 -1
  340. package/fesm2022/primeng-inputmask.mjs.map +0 -1
  341. package/fesm2022/primeng-inputnumber.mjs.map +0 -1
  342. package/fesm2022/primeng-inputotp.mjs.map +0 -1
  343. package/fesm2022/primeng-inputpassword.mjs.map +0 -1
  344. package/fesm2022/primeng-inputtags.mjs.map +0 -1
  345. package/fesm2022/primeng-inputtext.mjs.map +0 -1
  346. package/fesm2022/primeng-keyfilter.mjs.map +0 -1
  347. package/fesm2022/primeng-knob.mjs.map +0 -1
  348. package/fesm2022/primeng-label.mjs.map +0 -1
  349. package/fesm2022/primeng-license.mjs.map +0 -1
  350. package/fesm2022/primeng-listbox.mjs.map +0 -1
  351. package/fesm2022/primeng-megamenu.mjs.map +0 -1
  352. package/fesm2022/primeng-menu.mjs.map +0 -1
  353. package/fesm2022/primeng-menubar.mjs.map +0 -1
  354. package/fesm2022/primeng-message.mjs.map +0 -1
  355. package/fesm2022/primeng-metergroup.mjs.map +0 -1
  356. package/fesm2022/primeng-motion.mjs.map +0 -1
  357. package/fesm2022/primeng-multiselect.mjs.map +0 -1
  358. package/fesm2022/primeng-orderlist.mjs.map +0 -1
  359. package/fesm2022/primeng-organizationchart.mjs.map +0 -1
  360. package/fesm2022/primeng-overlay.mjs.map +0 -1
  361. package/fesm2022/primeng-overlaybadge.mjs.map +0 -1
  362. package/fesm2022/primeng-paginator.mjs.map +0 -1
  363. package/fesm2022/primeng-panel.mjs.map +0 -1
  364. package/fesm2022/primeng-panelmenu.mjs.map +0 -1
  365. package/fesm2022/primeng-passthrough.mjs.map +0 -1
  366. package/fesm2022/primeng-password.mjs.map +0 -1
  367. package/fesm2022/primeng-picklist.mjs.map +0 -1
  368. package/fesm2022/primeng-popover.mjs.map +0 -1
  369. package/fesm2022/primeng-progressbar.mjs.map +0 -1
  370. package/fesm2022/primeng-progressspinner.mjs.map +0 -1
  371. package/fesm2022/primeng-radiobutton.mjs.map +0 -1
  372. package/fesm2022/primeng-rating.mjs.map +0 -1
  373. package/fesm2022/primeng-ripple.mjs.map +0 -1
  374. package/fesm2022/primeng-scrollarea.mjs.map +0 -1
  375. package/fesm2022/primeng-scroller.mjs.map +0 -1
  376. package/fesm2022/primeng-scrollpanel.mjs.map +0 -1
  377. package/fesm2022/primeng-scrolltop.mjs.map +0 -1
  378. package/fesm2022/primeng-select.mjs.map +0 -1
  379. package/fesm2022/primeng-selectbutton.mjs.map +0 -1
  380. package/fesm2022/primeng-sidebar.mjs.map +0 -1
  381. package/fesm2022/primeng-skeleton.mjs.map +0 -1
  382. package/fesm2022/primeng-slider.mjs.map +0 -1
  383. package/fesm2022/primeng-speeddial.mjs.map +0 -1
  384. package/fesm2022/primeng-splitbutton.mjs.map +0 -1
  385. package/fesm2022/primeng-splitter.mjs.map +0 -1
  386. package/fesm2022/primeng-stepper.mjs.map +0 -1
  387. package/fesm2022/primeng-steps.mjs.map +0 -1
  388. package/fesm2022/primeng-styleclass.mjs.map +0 -1
  389. package/fesm2022/primeng-table.mjs.map +0 -1
  390. package/fesm2022/primeng-tabs.mjs.map +0 -1
  391. package/fesm2022/primeng-tag.mjs.map +0 -1
  392. package/fesm2022/primeng-terminal.mjs.map +0 -1
  393. package/fesm2022/primeng-textarea.mjs.map +0 -1
  394. package/fesm2022/primeng-tieredmenu.mjs.map +0 -1
  395. package/fesm2022/primeng-timeline.mjs.map +0 -1
  396. package/fesm2022/primeng-toast.mjs.map +0 -1
  397. package/fesm2022/primeng-togglebutton.mjs.map +0 -1
  398. package/fesm2022/primeng-toggleswitch.mjs.map +0 -1
  399. package/fesm2022/primeng-toolbar.mjs.map +0 -1
  400. package/fesm2022/primeng-tooltip.mjs.map +0 -1
  401. package/fesm2022/primeng-tree.mjs.map +0 -1
  402. package/fesm2022/primeng-treeselect.mjs.map +0 -1
  403. package/fesm2022/primeng-treetable.mjs.map +0 -1
  404. package/fesm2022/primeng-usestyle.mjs.map +0 -1
  405. package/fesm2022/primeng-utils.mjs.map +0 -1
  406. package/fesm2022/primeng.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"primeng-tree.mjs","names":["i1","ChevronRightIcon","ChevronDownIcon","SpinnerIcon","SearchIcon","SpinnerIcon"],"sources":["../../src/tree/style/treestyle.ts","../../src/tree/tree-token.ts","../../src/tree/tree-node.ts","../../src/tree/tree.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/tree';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n root: ({ instance }) => [\n 'p-tree p-component',\n {\n 'p-tree-selectable': instance.selectionMode() != null,\n 'p-tree-loading': instance.loading(),\n 'p-tree-flex-scrollable': instance.scrollHeight() === 'flex',\n 'p-tree-node-dragover': instance.dragHover\n }\n ],\n mask: 'p-tree-mask p-overlay-mask',\n loadingIcon: 'p-tree-loading-icon',\n pcFilterInput: 'p-tree-filter-input',\n wrapper: 'p-tree-root',\n rootChildren: 'p-tree-root-children',\n node: ({ instance }) => ({ 'p-tree-node': true, 'p-tree-node-leaf': instance.isLeaf() }),\n nodeContent: ({ instance }) => ({\n 'p-tree-node-content': true,\n 'p-tree-node-selectable': instance.selectable,\n 'p-tree-node-dragover': instance.isNodeDropActive(),\n 'p-tree-node-selected': instance.tree.selectionMode() === 'checkbox' && instance.tree.highlightOnSelect() ? instance.checked : instance.selected,\n 'p-tree-node-contextmenu-selected': instance.isContextMenuSelected()\n }),\n nodeToggleButton: 'p-tree-node-toggle-button',\n nodeToggleIcon: 'p-tree-node-toggle-icon',\n nodeCheckbox: 'p-tree-node-checkbox',\n nodeIcon: 'p-tree-node-icon',\n nodeLabel: 'p-tree-node-label',\n nodeChildren: 'p-tree-node-children',\n emptyMessage: 'p-tree-empty-message',\n dropPoint: 'p-tree-node-drop-point'\n};\n\n@Injectable()\nexport class TreeStyle extends BaseStyle {\n name = 'tree';\n\n style = style;\n\n classes = classes;\n}\n\n/**\n *\n * Tree is used to display hierarchical data.\n *\n * [Live Demo](https://www.primeng.org/tree/)\n *\n * @module treestyle\n *\n */\nexport enum TreeClasses {\n /**\n * Class name of the root element\n */\n root = 'p-tree',\n /**\n * Class name of the mask element\n */\n mask = 'p-tree-mask',\n /**\n * Class name of the loading icon element\n */\n loadingIcon = 'p-tree-loading-icon',\n /**\n * Class name of the filter input element\n */\n pcFilterInput = 'p-tree-filter-input',\n /**\n * Class name of the wrapper element\n */\n wrapper = 'p-tree-root',\n /**\n * Class name of the root children element\n */\n rootChildren = 'p-tree-root-children',\n /**\n * Class name of the node element\n */\n node = 'p-tree-node',\n /**\n * Class name of the node content element\n */\n nodeContent = 'p-tree-node-content',\n /**\n * Class name of the node toggle button element\n */\n nodeToggleButton = 'p-tree-node-toggle-button',\n /**\n * Class name of the node toggle icon element\n */\n nodeToggleIcon = 'p-tree-node-toggle-icon',\n /**\n * Class name of the node checkbox element\n */\n nodeCheckbox = 'p-tree-node-checkbox',\n /**\n * Class name of the node icon element\n */\n nodeIcon = 'p-tree-node-icon',\n /**\n * Class name of the node label element\n */\n nodeLabel = 'p-tree-node-label',\n /**\n * Class name of the node children element\n */\n nodeChildren = 'p-tree-node-children',\n /**\n * Class name of the empty message element\n */\n emptyMessage = 'p-tree-empty-message',\n /**\n * Class name of the drop point element\n */\n dropPoint = 'p-tree-node-droppoint'\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const TREE_INSTANCE = new InjectionToken<any>('TREE_INSTANCE');\nexport const TREENODE_INSTANCE = new InjectionToken<any>('TREENODE_INSTANCE');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input, signal, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { find, findSingle, focus, getOuterHeight, getOuterWidth } from '@primeuix/utils';\nimport { TreeNode } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { Checkbox } from 'primeng/checkbox';\nimport { ChevronDown as ChevronDownIcon } from '@primeicons/angular/chevron-down';\nimport { ChevronRight as ChevronRightIcon } from '@primeicons/angular/chevron-right';\nimport { Spinner as SpinnerIcon } from '@primeicons/angular/spinner';\nimport { Ripple } from 'primeng/ripple';\nimport { TreeLoadingMode, TreePassThrough } from 'primeng/types/tree';\nimport type { Tree } from './tree';\nimport { TREE_INSTANCE, TREENODE_INSTANCE } from './tree-token';\nimport { TreeStyle } from './style/treestyle';\n\n@Component({\n selector: 'p-treenode',\n standalone: true,\n imports: [NgTemplateOutlet, Ripple, Checkbox, FormsModule, ChevronRightIcon, ChevronDownIcon, SpinnerIcon, Bind],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (node()) {\n <li\n [class]=\"cn(cx('node'), node()!.styleClass)\"\n [style.height.px]=\"itemSize()\"\n [style]=\"node()!.style\"\n [attr.aria-label]=\"node()!.label\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-setsize]=\"ariaSetSize\"\n [attr.aria-selected]=\"selected\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-posinset]=\"ariaPosInSet()\"\n [attr.aria-level]=\"ariaLevel()\"\n [attr.tabindex]=\"nodeTabindex()\"\n [attr.data-id]=\"node()!.key\"\n role=\"treeitem\"\n (keydown)=\"onKeyDown($event)\"\n [pBind]=\"getPTOptions('node')\"\n >\n @if (isPrevDropPointActive()) {\n <div [class]=\"cx('dropPoint')\" [attr.aria-hidden]=\"true\" [pBind]=\"getPTOptions('dropPoint')\"></div>\n }\n <div\n [class]=\"cx('nodeContent')\"\n [style.paddingLeft]=\"nodeContentPaddingLeft()\"\n (click)=\"onNodeClick($event)\"\n (contextmenu)=\"onNodeRightClick($event)\"\n (dblclick)=\"onNodeDblClick($event)\"\n (touchend)=\"onNodeTouchEnd()\"\n (drop)=\"onNodeDrop($event)\"\n (dragstart)=\"onNodeDragStart($event)\"\n (dragover)=\"onNodeDragOver($event)\"\n (dragleave)=\"onNodeDragLeave()\"\n (dragend)=\"onNodeDragEnd($event)\"\n [draggable]=\"tree.draggableNodes()\"\n [pBind]=\"getPTOptions('nodeContent')\"\n >\n <button type=\"button\" [class]=\"cx('nodeToggleButton')\" (click)=\"toggle($event)\" pRipple tabindex=\"-1\" [pBind]=\"getPTOptions('nodeToggleButton')\">\n @if (!tree.togglerIconTemplate()) {\n @if (!node()!.loading) {\n @if (!node()!.expanded) {\n <svg data-p-icon=\"chevron-right\" [class]=\"cx('nodeToggleIcon')\" [pBind]=\"getPTOptions('nodeToggleIcon')\" />\n }\n @if (node()!.expanded) {\n <svg data-p-icon=\"chevron-down\" [class]=\"cx('nodeToggleIcon')\" [pBind]=\"getPTOptions('nodeToggleIcon')\" />\n }\n }\n @if (showLoadingSpinner) {\n <svg data-p-icon=\"spinner\" [class]=\"cx('nodeToggleIcon')\" [spin]=\"true\" [pBind]=\"getPTOptions('nodeToggleIcon')\" />\n }\n }\n @if (tree.togglerIconTemplate()) {\n <span [class]=\"cx('nodeToggleIcon')\" [pBind]=\"getPTOptions('nodeToggleIcon')\">\n <ng-template *ngTemplateOutlet=\"tree.togglerIconTemplate()!; context: togglerIconContext\"></ng-template>\n </span>\n }\n </button>\n\n @if (tree.selectionMode() === 'checkbox') {\n <p-checkbox\n [ngModel]=\"isSelected()\"\n [class]=\"cx('nodeCheckbox')\"\n [binary]=\"true\"\n [indeterminate]=\"node()!.partialSelected\"\n [disabled]=\"node()!.selectable === false\"\n [variant]=\"checkboxVariant()\"\n [attr.data-p-partialchecked]=\"node()!.partialSelected\"\n [tabindex]=\"-1\"\n (click)=\"$event.preventDefault()\"\n [pt]=\"getPTOptions('pcNodeCheckbox')\"\n [unstyled]=\"unstyled()\"\n >\n @if (tree.checkboxIconTemplate()) {\n <ng-template #icon>\n <ng-template *ngTemplateOutlet=\"tree.checkboxIconTemplate()!; context: checkboxIconContext\"></ng-template>\n </ng-template>\n }\n </p-checkbox>\n }\n\n @if (hasNodeIcon) {\n <span [class]=\"getIcon()\" [pBind]=\"getPTOptions('nodeIcon')\"></span>\n }\n <span [class]=\"cx('nodeLabel')\" [pBind]=\"getPTOptions('nodeLabel')\">\n @if (!tree.getTemplateForNode(node()!)) {\n <span>{{ node()!.label }}</span>\n }\n @if (tree.getTemplateForNode(node()!)) {\n <span>\n <ng-container *ngTemplateOutlet=\"tree.getTemplateForNode(node()!)!; context: { $implicit: node() }\"></ng-container>\n </span>\n }\n </span>\n </div>\n @if (isNextDropPointActive()) {\n <div [class]=\"cx('dropPoint', { next: true })\" [attr.aria-hidden]=\"true\" [pBind]=\"getPTOptions('dropPoint')\"></div>\n }\n @if (showChildren) {\n <ul [class]=\"cx('nodeChildren')\" role=\"group\" [pBind]=\"ptm('nodeChildren')\">\n @for (childNode of node()!.children; track tree.trackBy()($index, childNode); let firstChild = $first; let lastChild = $last; let idx = $index) {\n <p-treenode\n [node]=\"childNode\"\n [parentNode]=\"node()\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"idx\"\n [itemSize]=\"itemSize()\"\n [level]=\"level()! + 1\"\n [loadingMode]=\"loadingMode()\"\n [pt]=\"pt()\"\n [unstyled]=\"unstyled()\"\n />\n }\n </ul>\n }\n </li>\n }\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [TreeStyle, { provide: TREENODE_INSTANCE, useExisting: UITreeNode }, { provide: PARENT_INSTANCE, useExisting: UITreeNode }]\n})\nexport class UITreeNode extends BaseComponent<TreePassThrough> {\n static ICON_CLASS: string = 'p-tree-node-icon ';\n\n $pcTreeNode: UITreeNode | undefined = inject(TREENODE_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n rowNode = input<any>();\n\n node = input<TreeNode<any> | undefined>();\n\n parentNode = input<TreeNode<any> | undefined>();\n\n root = input(false, { transform: booleanAttribute });\n\n index = input<number | undefined>();\n\n firstChild = input(false, { transform: booleanAttribute });\n\n lastChild = input(false, { transform: booleanAttribute });\n\n level = input<number | undefined>();\n\n indentation = input<number | undefined>();\n\n itemSize = input<number | undefined>();\n\n loadingMode = input<TreeLoadingMode>();\n\n tree = inject<Tree>(TREE_INSTANCE);\n\n timeout: any;\n\n isPrevDropPointHovered = signal<boolean>(false);\n\n isNextDropPointHovered = signal<boolean>(false);\n\n isNodeDropHovered = signal<boolean>(false);\n\n isPrevDropPointActive = computed(() => this.isPrevDropPointHovered() && this.isDroppable());\n\n isNextDropPointActive = computed(() => this.isNextDropPointHovered() && this.isDroppable());\n\n isNodeDropActive = computed(() => this.isNodeDropHovered() && this.isNodeDroppable());\n\n dropPosition = computed(() => (this.isPrevDropPointActive() ? -1 : this.isNextDropPointActive() ? 1 : 0));\n\n get ariaSetSize() {\n return this.node()?.children?.length ?? 0;\n }\n\n get ariaExpanded() {\n return this.node()?.expanded;\n }\n\n ariaPosInSet = computed(() => (this.index() ?? 0) + 1);\n\n ariaLevel = computed(() => (this.level() ?? 0) + 1);\n\n nodeTabindex = computed(() => (this.index() === 0 ? 0 : -1));\n\n nodeContentPaddingLeft = computed(() => this.level()! * this.indentation()! + 'rem');\n\n get hasNodeIcon() {\n return !!(this.node()?.icon || this.node()?.expandedIcon || this.node()?.collapsedIcon);\n }\n\n get showChildren() {\n return !this.tree.virtualScroll() && !!this.node()?.children && !!this.node()?.expanded;\n }\n\n get showLoadingSpinner() {\n return this.loadingMode() === 'icon' && !!this.node()?.loading;\n }\n\n checkboxVariant = computed(() => this.tree?.config.inputVariant() || 'outlined');\n\n get togglerIconContext() {\n return {\n $implicit: this.node()?.expanded,\n loading: this.node()?.loading\n };\n }\n\n get checkboxIconContext() {\n return {\n $implicit: this.isSelected(),\n partialSelected: this.node()?.partialSelected,\n class: this.cx('nodeCheckbox')\n };\n }\n\n _componentStyle = inject(TreeStyle);\n\n /**\n * Computed signal that reactively tracks selection state.\n */\n private _selected = computed(() => {\n // Reading selection() makes this computed reactive to selection changes\n this.tree.selection();\n\n return this.tree.isSelected(<TreeNode>this.node());\n });\n\n /**\n * Computed signal that reactively tracks context menu selection state.\n */\n private _contextMenuSelected = computed(() => {\n const selection = this.tree.contextMenuSelection();\n const node = this.node();\n\n if (!selection || !node) {\n return false;\n }\n\n return selection === node || (selection.key && selection.key === node.key);\n });\n\n get selected() {\n return this.tree.selectionMode() === 'single' || this.tree.selectionMode() === 'multiple' ? this._selected() : undefined;\n }\n\n get checked() {\n return this.tree.selectionMode() === 'checkbox' ? this._selected() : undefined;\n }\n\n get nodeClass() {\n return this.tree._componentStyle.classes.node({ instance: this });\n }\n\n get selectable() {\n return this.node()?.selectable === false ? false : this.tree?.selectionMode() != null;\n }\n\n get subNodes(): TreeNode[] | undefined {\n return this.node()?.parent ? this.node()!.parent!.children : this.tree.value();\n }\n\n /** The node this row represents in the original value; when a filter is active the rendered node is a copy. */\n get originalNode(): TreeNode | undefined {\n const node = this.node();\n\n return node && this.tree.getOriginalNode(node);\n }\n\n /** Sibling list of this node within the original value; when a filter is active `subNodes` holds copies. */\n get originalSubNodes(): TreeNode[] | undefined {\n const parent = this.node()?.parent;\n\n return parent ? this.tree.getOriginalNode(parent).children : this.tree.value();\n }\n\n getPTOptions(key: string) {\n return this.ptm(key, {\n context: {\n node: this.node(),\n index: this.index(),\n expanded: this.node()?.expanded,\n selected: this.selected,\n checked: this.checked,\n partialChecked: this.node()?.partialSelected,\n leaf: this.isLeaf()\n }\n });\n }\n\n onInit() {\n (<TreeNode>this.node()).parent = this.parentNode();\n const nativeElement = this.tree.el.nativeElement;\n const pDialogWrapper = nativeElement.closest('p-dialog');\n\n if (this.parentNode() && !pDialogWrapper) {\n this.setAllNodesTabIndexes();\n this.tree.syncNodeOption(<TreeNode>this.node(), <TreeNode<any>[]>this.tree.value(), 'parent', this.tree.getNodeWithKey(<string>this.parentNode()!.key, <TreeNode<any>[]>this.tree.value()));\n }\n }\n\n getIcon() {\n let icon: string | undefined;\n const node = this.node();\n\n if ((<TreeNode>node).icon) icon = (<TreeNode>node).icon as string;\n else icon = (<TreeNode>node).expanded && (<TreeNode>node).children && (<TreeNode>node).children?.length ? (<TreeNode>node).expandedIcon : (<TreeNode>node).collapsedIcon;\n\n return UITreeNode.ICON_CLASS + ' ' + icon + ' p-tree-node-icon';\n }\n\n isLeaf() {\n return this.tree.isNodeLeaf(<TreeNode>this.node());\n }\n\n isSelected() {\n return this._selected();\n }\n\n isContextMenuSelected() {\n return this._contextMenuSelected();\n }\n\n isSameNode(event) {\n return event.currentTarget && (event.currentTarget.isSameNode(event.target) || event.currentTarget.isSameNode(event.target.closest('[role=\"treeitem\"]')));\n }\n\n isDraggable() {\n return this.tree.draggableNodes();\n }\n\n isDroppable() {\n return this.tree.droppableNodes() && this.tree.allowDrop(<TreeNode>this.tree.dragNode, <TreeNode>this.node(), this.tree.dragNodeScope);\n }\n\n isNodeDroppable() {\n return (<TreeNode>this.node())?.droppable !== false && this.isDroppable();\n }\n\n isNodeDraggable() {\n return (<TreeNode>this.node())?.draggable !== false && this.isDraggable();\n }\n\n toggle(event: Event) {\n if ((<TreeNode>this.node()).expanded) this.collapse(event);\n else this.expand(event);\n\n event.stopPropagation();\n }\n\n expand(event: Event) {\n (<TreeNode>this.node()).expanded = true;\n this.tree.setNodeCollapsed(<TreeNode>this.node(), false);\n\n if (this.tree.virtualScroll()) {\n this.tree.updateSerializedValue();\n this.focusVirtualNode();\n }\n\n this.tree.onNodeExpand.emit({ originalEvent: event, node: <TreeNode>this.node() });\n }\n\n collapse(event: Event) {\n (<TreeNode>this.node()).expanded = false;\n this.tree.setNodeCollapsed(<TreeNode>this.node(), true);\n\n if (this.tree.virtualScroll()) {\n this.tree.updateSerializedValue();\n }\n\n this.tree.onNodeCollapse.emit({ originalEvent: event, node: <TreeNode>this.node() });\n this.focusVirtualNode();\n }\n\n onNodeClick(event: MouseEvent) {\n this.tree.onNodeClick(event, <TreeNode>this.node());\n }\n\n onNodeKeydown(event: KeyboardEvent) {\n if (event.key === 'Enter') {\n this.tree.onNodeClick(event, <TreeNode>this.node());\n }\n }\n\n onNodeTouchEnd() {\n this.tree.onNodeTouchEnd();\n }\n\n onNodeRightClick(event: MouseEvent) {\n this.tree.onNodeRightClick(event, <TreeNode>this.node());\n }\n\n onNodeDblClick(event: MouseEvent) {\n this.tree.onNodeDblClick(event, <TreeNode>this.node());\n }\n\n /**\n * The drag state and drop position are taken as arguments (captured at drop time) since\n * `accept` may be invoked asynchronously, after `dragend` has cleared the drag state\n * and the drop point hover signals were reset.\n */\n insertNodeOnDrop(dragNode: TreeNode | null | undefined, dragNodeSubNodes: TreeNode[] | null | undefined, position: number) {\n const dropNode = this.originalNode;\n\n if (!dropNode || !dragNode || !dragNodeSubNodes) {\n return;\n }\n\n const subNodes = this.originalSubNodes || [];\n const dragNodeIndex = dragNodeSubNodes.indexOf(dragNode);\n const index = subNodes.indexOf(dropNode);\n const dropIndex = dragNodeSubNodes === subNodes ? (dragNodeIndex > index ? index : index - 1) : index;\n\n if (dragNodeIndex !== -1) {\n dragNodeSubNodes.splice(dragNodeIndex, 1);\n }\n\n if (position < 0) {\n // insert before a Node\n subNodes.splice(dropIndex, 0, dragNode);\n } else if (position > 0) {\n // insert after a Node\n subNodes.splice(dropIndex + 1, 0, dragNode);\n } else {\n // insert as child of a Node\n dropNode.children = dropNode.children || [];\n dropNode.children!.push(dragNode);\n }\n\n this.tree.dragDropService!.stopDrag({\n node: dragNode,\n subNodes,\n index: dragNodeIndex\n });\n }\n\n onNodeDrop(event: any) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isDroppable()) {\n const { dragNode, dragNodeSubNodes } = this.tree;\n const position = this.dropPosition();\n const isValidDrop = position !== 0 || (position === 0 && this.isNodeDroppable());\n const dropPoint: 'node' | 'between' = position === 0 ? 'node' : 'between';\n\n if (isValidDrop) {\n if (this.tree.validateDrop()) {\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.originalNode,\n index: this.index(),\n dropPoint: dropPoint,\n accept: () => {\n this.insertNodeOnDrop(dragNode, dragNodeSubNodes, position);\n }\n });\n } else {\n this.insertNodeOnDrop(dragNode, dragNodeSubNodes, position);\n this.tree.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: this.originalNode,\n index: this.index(),\n dropPoint: dropPoint\n });\n }\n }\n }\n\n this.isPrevDropPointHovered.set(false);\n this.isNextDropPointHovered.set(false);\n this.isNodeDropHovered.set(false);\n }\n\n onNodeDragStart(event: any) {\n if (this.isNodeDraggable()) {\n event.dataTransfer.effectAllowed = 'all';\n event.dataTransfer?.setData('text', 'data');\n\n const target = event.currentTarget as HTMLElement;\n const dragEl = target.cloneNode(true) as HTMLElement;\n const toggler = <HTMLElement>dragEl.querySelector('[data-pc-section=\"nodetogglebutton\"]');\n const checkbox = <HTMLElement>dragEl.querySelector('[data-pc-name=\"pcnodecheckbox\"]');\n\n target.setAttribute('data-p-dragging', 'true');\n dragEl.style.width = getOuterWidth(target) + 'px';\n dragEl.style.height = getOuterHeight(target) + 'px';\n dragEl.setAttribute('data-pc-section', 'drag-image');\n toggler.style.visibility = 'hidden';\n checkbox?.remove();\n document.body.appendChild(dragEl);\n\n event.dataTransfer?.setDragImage(dragEl, 0, 0);\n\n setTimeout(() => document.body.removeChild(dragEl), 0);\n\n this.tree.dragDropService!.startDrag({\n tree: this,\n node: this.originalNode,\n subNodes: this.originalSubNodes,\n index: this.index(),\n scope: this.tree.draggableScope()\n });\n } else {\n event.preventDefault();\n }\n }\n\n onNodeDragOver(event: any) {\n if (this.isDroppable()) {\n event.dataTransfer.dropEffect = 'copy';\n\n const nodeElement = event.currentTarget as HTMLElement;\n const rect = nodeElement.getBoundingClientRect();\n const y = event.clientY - parseInt(rect.top as any);\n\n this.isPrevDropPointHovered.set(false);\n this.isNextDropPointHovered.set(false);\n this.isNodeDropHovered.set(false);\n\n if (y < rect.height * 0.25) {\n this.isPrevDropPointHovered.set(true);\n } else if (y > rect.height * 0.75) {\n this.isNextDropPointHovered.set(true);\n } else if (this.isNodeDroppable()) {\n this.isNodeDropHovered.set(true);\n }\n } else {\n event.dataTransfer.dropEffect = 'none';\n }\n\n if (this.tree.droppableNodes()) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n onNodeDragLeave() {\n this.isPrevDropPointHovered.set(false);\n this.isNextDropPointHovered.set(false);\n this.isNodeDropHovered.set(false);\n }\n\n onNodeDragEnd(event: any) {\n event.currentTarget?.removeAttribute('data-p-dragging');\n\n this.tree.dragDropService!.stopDrag({\n node: this.originalNode,\n subNodes: this.originalSubNodes,\n index: this.index()\n });\n }\n\n onKeyDown(event: KeyboardEvent) {\n if (!this.isSameNode(event) || (this.tree.contextMenu() && this.tree.contextMenu().containerViewChild?.nativeElement.style.display === 'block')) {\n return;\n }\n\n switch (event.code) {\n //down arrow\n case 'ArrowDown':\n this.onArrowDown(event);\n break;\n\n //up arrow\n case 'ArrowUp':\n this.onArrowUp(event);\n break;\n\n //right arrow\n case 'ArrowRight':\n this.onArrowRight(event);\n break;\n\n //left arrow\n case 'ArrowLeft':\n this.onArrowLeft(event);\n break;\n\n //enter\n case 'Enter':\n case 'Space':\n case 'NumpadEnter':\n this.onEnter(event);\n break;\n //tab\n case 'Tab':\n this.setAllNodesTabIndexes();\n break;\n\n default:\n //no op\n break;\n }\n }\n\n onArrowUp(event: KeyboardEvent) {\n const nodeElement = (<HTMLDivElement>event.target).getAttribute('data-pc-section') === 'nodetogglebutton' ? (<HTMLDivElement>event.target).closest('[role=\"treeitem\"]') : (<HTMLDivElement>event.target).parentElement;\n\n if (nodeElement?.previousElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.previousElementSibling, this.findLastVisibleDescendant(nodeElement.previousElementSibling));\n } else {\n let parentNodeElement = this.getParentNodeElement(nodeElement!);\n\n if (parentNodeElement) {\n this.focusRowChange(nodeElement, parentNodeElement);\n }\n }\n\n event.preventDefault();\n }\n\n onArrowDown(event: KeyboardEvent) {\n const nodeElement = (<HTMLDivElement>event.target).getAttribute('data-pc-section') === 'nodetogglebutton' ? (<HTMLDivElement>event.target).closest('[role=\"treeitem\"]') : <HTMLDivElement>event.target;\n const listElement = nodeElement?.children[1];\n\n if (listElement && listElement.children.length > 0) {\n this.focusRowChange(nodeElement, listElement.children[0]);\n } else {\n if (nodeElement?.parentElement?.nextElementSibling) {\n this.focusRowChange(nodeElement, nodeElement.parentElement.nextElementSibling);\n } else {\n let nextSiblingAncestor = this.findNextSiblingOfAncestor(nodeElement?.parentElement);\n\n if (nextSiblingAncestor) {\n this.focusRowChange(nodeElement, nextSiblingAncestor);\n }\n }\n }\n\n event.preventDefault();\n }\n\n onArrowRight(event: KeyboardEvent) {\n if (!this.node()?.expanded && !this.tree.isNodeLeaf(<TreeNode>this.node())) {\n this.expand(event);\n (<HTMLDivElement>event.currentTarget).tabIndex = -1;\n\n setTimeout(() => {\n this.onArrowDown(event);\n }, 1);\n }\n\n event.preventDefault();\n }\n\n onArrowLeft(event: KeyboardEvent) {\n const nodeElement = (<HTMLDivElement>event.target).getAttribute('data-pc-section') === 'nodetogglebutton' ? (<HTMLDivElement>event.target).closest('[role=\"treeitem\"]') : <HTMLDivElement>event.target;\n\n if (this.level() === 0 && !this.node()?.expanded) {\n return false;\n }\n\n if (this.node()?.expanded) {\n this.collapse(event);\n\n return;\n }\n\n let parentNodeElement = this.getParentNodeElement(nodeElement?.parentElement);\n\n if (parentNodeElement) {\n this.focusRowChange(event.currentTarget, parentNodeElement);\n }\n\n event.preventDefault();\n }\n\n onEnter(event: KeyboardEvent) {\n this.tree.onNodeClick(event, <TreeNode>this.node());\n this.setTabIndexForSelectionMode(event, this.tree.nodeTouched);\n event.preventDefault();\n }\n\n setAllNodesTabIndexes() {\n const nodes = <any>find(this.tree.el.nativeElement, '[data-pc-section=\"node\"]');\n\n const hasSelectedNode = [...nodes].some((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n [...nodes].forEach((node) => {\n node.tabIndex = -1;\n });\n\n if (hasSelectedNode) {\n const selectedNodes = [...nodes].filter((node) => node.getAttribute('aria-selected') === 'true' || node.getAttribute('aria-checked') === 'true');\n\n selectedNodes[0].tabIndex = 0;\n\n return;\n }\n\n if (nodes.length) {\n ([...nodes][0] as any).tabIndex = 0;\n }\n }\n\n setTabIndexForSelectionMode(event, nodeTouched) {\n if (this.tree.selectionMode() !== null) {\n const elements = [...find(this.tree.el.nativeElement, '[role=\"treeitem\"]')];\n\n event.currentTarget.tabIndex = nodeTouched === false ? -1 : 0;\n\n if (elements.every((element: any) => element.tabIndex === -1)) {\n (elements[0] as any).tabIndex = 0;\n }\n }\n }\n\n findNextSiblingOfAncestor(nodeElement: any): any {\n let parentNodeElement = this.getParentNodeElement(nodeElement);\n\n if (parentNodeElement) {\n if (parentNodeElement.nextElementSibling) return parentNodeElement.nextElementSibling;\n else return this.findNextSiblingOfAncestor(parentNodeElement);\n } else {\n return null;\n }\n }\n\n findLastVisibleDescendant(nodeElement: any): any {\n const listElement = <HTMLElement>Array.from(nodeElement.children).find((el: any) => el.getAttribute('data-pc-section') === 'node');\n const childrenListElement = listElement?.children[1];\n\n if (childrenListElement && childrenListElement.children.length > 0) {\n const lastChildElement = childrenListElement.children[childrenListElement.children.length - 1];\n\n return this.findLastVisibleDescendant(lastChildElement);\n } else {\n return nodeElement;\n }\n }\n\n getParentNodeElement(nodeElement: HTMLElement | Element | null | undefined) {\n const parentNodeElement = nodeElement?.parentElement?.parentElement?.parentElement;\n\n return parentNodeElement?.tagName === 'P-TREENODE' ? parentNodeElement : null;\n }\n\n focusNode(element: any) {\n (element.children[0] as HTMLElement).focus();\n }\n\n focusRowChange(firstFocusableRow, currentFocusedRow, lastVisibleDescendant?) {\n firstFocusableRow.tabIndex = '-1';\n currentFocusedRow.children[0].tabIndex = '0';\n\n this.focusNode(lastVisibleDescendant || currentFocusedRow);\n }\n\n focusVirtualNode() {\n this.timeout = setTimeout(() => {\n let node = <any>findSingle(this.tree?.contentViewChild()?.nativeElement, `[data-id=\"${<TreeNode>this.node()?.key ?? <TreeNode>this.node()?.data}\"]`);\n\n focus(node);\n }, 1);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n DestroyRef,\n effect,\n ElementRef,\n inject,\n input,\n model,\n NgModule,\n numberAttribute,\n output,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Search as SearchIcon } from '@primeicons/angular/search';\nimport { Spinner as SpinnerIcon } from '@primeicons/angular/spinner';\nimport { removeAccents, resolveFieldData } from '@primeuix/utils';\nimport { BlockableUI, ScrollerOptions, TranslationKeys, TreeDragDropService, TreeNode } from 'primeng/api';\nimport { AutoFocusModule } from 'primeng/autofocus';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { IconField } from 'primeng/iconfield';\nimport { InputIcon } from 'primeng/inputicon';\nimport { InputText } from 'primeng/inputtext';\nimport { Scroller } from 'primeng/scroller';\nimport {\n TreeCheckboxIconTemplateContext,\n TreeFilterEvent,\n TreeFilterTemplateContext,\n TreeLazyLoadEvent,\n TreeLoaderTemplateContext,\n TreeLoadingMode,\n TreeNodeCollapseEvent,\n TreeNodeContextMenuSelectEvent,\n TreeNodeDoubleClickEvent,\n TreeNodeDropEvent,\n TreeNodeExpandEvent,\n TreeNodeSelectEvent,\n TreeNodeUnSelectEvent,\n TreePassThrough,\n TreeScrollEvent,\n TreeScrollIndexChangeEvent,\n TreeSelectionMode,\n TreeTogglerIconTemplateContext\n} from 'primeng/types/tree';\nimport { TreeStyle } from './style/treestyle';\nimport { UITreeNode } from './tree-node';\nimport { TREE_INSTANCE } from './tree-token';\n\n/**\n * Tree is used to display hierarchical data.\n * @group Components\n */\n@Component({\n selector: 'p-tree',\n standalone: true,\n imports: [NgTemplateOutlet, Scroller, SearchIcon, SpinnerIcon, InputText, IconField, InputIcon, UITreeNode, AutoFocusModule, Bind],\n template: `\n @if (showLoadingMask()) {\n <div [class]=\"cx('mask')\" [pBind]=\"ptm('mask')\" animate.enter=\"p-overlay-mask-enter-active\" animate.leave=\"p-overlay-mask-leave-active\">\n @if (loadingIcon()) {\n <i [class]=\"cn(cx('loadingIcon'), 'pi-spin' + loadingIcon())\" [pBind]=\"ptm('loadingIcon')\"></i>\n }\n @if (!loadingIcon()) {\n @if (!loadingIconTemplate()) {\n <svg data-p-icon=\"spinner\" [class]=\"cx('loadingIcon')\" [spin]=\"true\" [pBind]=\"ptm('loadingIcon')\" />\n }\n @if (loadingIconTemplate()) {\n <span [class]=\"cx('loadingIcon')\" [pBind]=\"ptm('loadingIcon')\">\n <ng-template *ngTemplateOutlet=\"loadingIconTemplate()!\"></ng-template>\n </span>\n }\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"headerTemplate()\"></ng-container>\n @if (filterTemplate()) {\n <ng-container *ngTemplateOutlet=\"filterTemplate()!; context: { $implicit: filterOptions }\"></ng-container>\n } @else {\n @if (filter()) {\n <p-iconfield [class]=\"cx('pcFilterContainer')\" [pt]=\"ptm('pcFilterContainer')\" [unstyled]=\"unstyled()\">\n <input\n #filter\n [pAutoFocus]=\"filterInputAutoFocus()\"\n pInputText\n type=\"search\"\n autocomplete=\"off\"\n [class]=\"cx('pcFilterInput')\"\n [attr.placeholder]=\"filterPlaceholder()\"\n (keydown.enter)=\"$event.preventDefault()\"\n (input)=\"_filter($event.target?.value)\"\n [pt]=\"ptm('pcFilterInput')\"\n [unstyled]=\"unstyled()\"\n />\n <p-inputicon [pt]=\"ptm('pcFilterIconContainer')\" [unstyled]=\"unstyled()\">\n @if (!filterIconTemplate()) {\n <svg data-p-icon=\"search\" [class]=\"cx('filterIcon')\" [pBind]=\"ptm('filterIcon')\" />\n }\n @if (filterIconTemplate()) {\n <span [class]=\"cx('filterIcon')\" [pBind]=\"ptm('filterIcon')\">\n <ng-template *ngTemplateOutlet=\"filterIconTemplate()!\"></ng-template>\n </span>\n }\n </p-inputicon>\n </p-iconfield>\n }\n }\n\n @if (getRootNode()?.length) {\n @if (virtualScroll()) {\n <p-scroller\n #scroller\n [items]=\"serializedValue\"\n [tabindex]=\"-1\"\n [styleClass]=\"cx('wrapper')\"\n [style]=\"{ height: scrollerStyleHeight() }\"\n [scrollHeight]=\"scrollerScrollHeight()\"\n [itemSize]=\"virtualScrollItemSize()!\"\n [lazy]=\"lazy()\"\n (onScroll)=\"onScroll.emit($event)\"\n (onScrollIndexChange)=\"onScrollIndexChange.emit($event)\"\n (onLazyLoad)=\"onLazyLoad.emit($event)\"\n [options]=\"virtualScrollOptions()\"\n [pt]=\"ptm('virtualScroller')\"\n hostName=\"tree\"\n [attr.data-p]=\"wrapperDataP\"\n >\n <ng-template #content let-items let-scrollerOptions=\"options\">\n @if (items) {\n <ul\n #content\n [class]=\"cn(cx('rootChildren'), scrollerOptions.contentStyleClass)\"\n [style]=\"scrollerOptions.contentStyle\"\n role=\"tree\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [pBind]=\"ptm('rootChildren')\"\n >\n @for (rowNode of items; track trackBy()($index, rowNode); let firstChild = $first; let lastChild = $last; let idx = $index) {\n <p-treenode\n #treeNode\n [level]=\"rowNode.level\"\n [rowNode]=\"rowNode\"\n [node]=\"rowNode.node\"\n [parentNode]=\"rowNode.parent\"\n [firstChild]=\"firstChild\"\n [lastChild]=\"lastChild\"\n [index]=\"getIndex(scrollerOptions, idx)\"\n [itemSize]=\"scrollerOptions.itemSize\"\n [indentation]=\"indentation()\"\n [loadingMode]=\"loadingMode()\"\n [pt]=\"pt()\"\n [unstyled]=\"unstyled()\"\n />\n }\n </ul>\n }\n </ng-template>\n @if (loaderTemplate()) {\n <ng-template #loader let-scrollerOptions=\"options\">\n <ng-container *ngTemplateOutlet=\"loaderTemplate()!; context: { options: scrollerOptions }\"></ng-container>\n </ng-template>\n }\n </p-scroller>\n }\n @if (!virtualScroll()) {\n <div #wrapper [class]=\"cx('wrapper')\" [style.max-height]=\"scrollHeight()\" [pBind]=\"ptm('wrapper')\" [attr.data-p]=\"wrapperDataP\">\n @if (getRootNode()) {\n <ul #content [class]=\"cx('rootChildren')\" role=\"tree\" [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [pBind]=\"ptm('rootChildren')\">\n @for (node of getRootNode(); track trackBy().bind(this)($index, node); let firstChild = $first; let lastChild = $last; let idx = $index) {\n <p-treenode [node]=\"node\" [firstChild]=\"firstChild\" [lastChild]=\"lastChild\" [index]=\"idx\" [level]=\"0\" [loadingMode]=\"loadingMode()\" [pt]=\"pt()\" [unstyled]=\"unstyled()\" />\n }\n </ul>\n }\n </div>\n }\n }\n\n @if (showEmptyMessage) {\n <div [class]=\"cx('emptyMessage')\" [pBind]=\"ptm('emptyMessage')\">\n @if (!emptyTemplate()) {\n {{ emptyMessageLabel }}\n }\n @if (emptyTemplate()) {\n <ng-template *ngTemplateOutlet=\"emptyTemplate()!\"></ng-template>\n }\n </div>\n }\n <ng-container *ngTemplateOutlet=\"footerTemplate()\"></ng-container>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [TreeStyle, { provide: TREE_INSTANCE, useExisting: Tree }, { provide: PARENT_INSTANCE, useExisting: Tree }],\n host: {\n '[class]': \"cx('root')\",\n '[attr.data-p]': 'containerDataP',\n '(drop)': 'onDrop($event)',\n '(dragover)': 'onDragOver($event)',\n '(dragenter)': 'onDragEnter()',\n '(dragleave)': 'onDragLeave($event)'\n },\n hostDirectives: [Bind]\n})\nexport class Tree extends BaseComponent<TreePassThrough> implements BlockableUI {\n componentName = 'Tree';\n\n private _destroyed = false;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n $pcTree: Tree | undefined = inject(TREE_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n /**\n * An array of treenodes.\n * @group Props\n */\n value = input<TreeNode<any> | TreeNode<any>[] | any[] | any>();\n /**\n * Defines the selection mode.\n * @group Props\n */\n selectionMode = input<TreeSelectionMode>();\n /**\n * Loading mode display.\n * @group Props\n */\n loadingMode = input<TreeLoadingMode>('mask');\n /**\n * A single treenode instance or an array to refer to the selections.\n * @deprecated since v22, use `selectionKeys` instead for key-based selection state.\n * @group Props\n */\n selection = model<TreeNode<any> | TreeNode<any>[] | null | undefined>(null);\n /**\n * A map of node keys (by `TreeNode.key`) whose value is `true` for collapsed nodes. Two-way bindable.\n * When provided it controls expansion (a node is expanded unless its key maps to `true`); leave it\n * unset to keep driving expansion from each node's `expanded` flag (default, non-breaking).\n * @group Props\n */\n collapsedKeys = model<{ [key: string]: boolean } | null>(null);\n /**\n * A map of node keys (by `TreeNode.key`) describing the selection state. Two-way bindable.\n * For single/multiple selection a key maps to `true`; for checkbox selection it maps to\n * `{ checked, partialChecked }`. When provided it is kept in sync with `selection`; leave it unset\n * to keep using the node-reference based `selection` model (default, non-breaking).\n * @group Props\n */\n selectionKeys = model<{ [key: string]: any } | null>(null);\n /**\n * Context menu instance.\n * @group Props\n */\n contextMenu = input<any>();\n /**\n * Selected node with a context menu.\n * @group Props\n */\n contextMenuSelection = model<TreeNode<any> | null>(null);\n /**\n * Scope of the draggable nodes to match a droppableScope.\n * @group Props\n */\n draggableScope = input<any>();\n /**\n * Scope of the droppable nodes to match a draggableScope.\n * @group Props\n */\n droppableScope = input<any>();\n /**\n * Whether the nodes are draggable.\n * @group Props\n */\n draggableNodes = input(false, { transform: booleanAttribute });\n /**\n * Whether the nodes are droppable.\n * @group Props\n */\n droppableNodes = input(false, { transform: booleanAttribute });\n /**\n * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = input(false, { transform: booleanAttribute });\n /**\n * Whether checkbox selections propagate to ancestor nodes.\n * @group Props\n */\n propagateSelectionUp = input(true, { transform: booleanAttribute });\n /**\n * Whether checkbox selections propagate to descendant nodes.\n * @group Props\n */\n propagateSelectionDown = input(true, { transform: booleanAttribute });\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n loading = input(false, { transform: booleanAttribute });\n /**\n * The icon to show while indicating data load is in progress.\n * @group Props\n */\n loadingIcon = input<string | undefined>();\n /**\n * Text to display when there is no data.\n * @group Props\n */\n emptyMessage = input('');\n /**\n * Used to define a string that labels the tree.\n * @group Props\n */\n ariaLabel = input<string | undefined>();\n /**\n * Defines a string that labels the toggler icon for accessibility.\n * @group Props\n */\n togglerAriaLabel = input<string | undefined>();\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy = input<string | undefined>();\n /**\n * When enabled, drop can be accepted or rejected based on condition defined at onNodeDrop.\n * @group Props\n */\n validateDrop = input(false, { transform: booleanAttribute });\n /**\n * When specified, displays an input field to filter the items.\n * @group Props\n */\n filter = input(false, { transform: booleanAttribute });\n /**\n * Determines whether the filter input should be automatically focused when the component is rendered.\n * @group Props\n */\n filterInputAutoFocus = input(false, { transform: booleanAttribute });\n /**\n * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.\n * @group Props\n */\n filterBy = input('label');\n /**\n * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n * @group Props\n */\n filterMode = input('lenient');\n /**\n * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n * @group Props\n */\n filterOptions: any;\n /**\n * Placeholder text to show when filter input is empty.\n * @group Props\n */\n filterPlaceholder = input<string | undefined>();\n /**\n * Values after the tree nodes are filtered.\n * @group Props\n */\n filteredNodes = model<TreeNode<any>[] | undefined | null>(undefined);\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale = input<string | undefined>();\n /**\n * Height of the scrollable viewport.\n * @group Props\n */\n scrollHeight = input<string | undefined>();\n /**\n * Defines if data is loaded and interacted with in lazy manner.\n * @group Props\n */\n lazy = input(false, { transform: booleanAttribute });\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll = input(false, { transform: booleanAttribute });\n /**\n * Height of an item in the list for VirtualScrolling.\n * @group Props\n */\n virtualScrollItemSize = input<number | undefined>();\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions = input<ScrollerOptions | undefined>();\n /**\n * Indentation factor for spacing of the nested node when virtual scrolling is enabled.\n * @group Props\n */\n indentation = input(1.5, { transform: numberAttribute });\n /**\n * Function to optimize the node list rendering, default algorithm checks for object identity.\n * @group Props\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n trackBy = input<Function>((index: number, item: any) => item);\n /**\n * Highlights the node on select.\n * @group Props\n */\n highlightOnSelect = input(false, { transform: booleanAttribute });\n /**\n * Callback to invoke when a node is selected.\n * @param {TreeNodeSelectEvent} event - Node select event.\n * @group Emits\n */\n onNodeSelect = output<TreeNodeSelectEvent>();\n /**\n * Callback to invoke when a node is unselected.\n * @param {TreeNodeUnSelectEvent} event - Node unselect event.\n * @group Emits\n */\n onNodeUnselect = output<TreeNodeUnSelectEvent>();\n /**\n * Callback to invoke when a node is expanded.\n * @param {TreeNodeExpandEvent} event - Node expand event.\n * @group Emits\n */\n onNodeExpand = output<TreeNodeExpandEvent>();\n /**\n * Callback to invoke when a node is collapsed.\n * @param {TreeNodeCollapseEvent} event - Node collapse event.\n * @group Emits\n */\n onNodeCollapse = output<TreeNodeCollapseEvent>();\n /**\n * Callback to invoke when a node is selected with right click.\n * @param {onNodeContextMenuSelect} event - Node context menu select event.\n * @group Emits\n */\n onNodeContextMenuSelect = output<TreeNodeContextMenuSelectEvent>();\n /**\n * Callback to invoke when a node is double clicked.\n * @param {TreeNodeDoubleClickEvent} event - Node double click event.\n * @group Emits\n */\n onNodeDoubleClick = output<TreeNodeDoubleClickEvent>();\n /**\n * Callback to invoke when a node is dropped.\n * @param {TreeNodeDropEvent} event - Node drop event.\n * @group Emits\n */\n onNodeDrop = output<TreeNodeDropEvent>();\n /**\n * Callback to invoke in lazy mode to load new data.\n * @param {TreeLazyLoadEvent} event - Custom lazy load event.\n * @group Emits\n */\n onLazyLoad = output<TreeLazyLoadEvent>();\n /**\n * Callback to invoke in virtual scroll mode when scroll position changes.\n * @param {TreeScrollEvent} event - Custom scroll event.\n * @group Emits\n */\n onScroll = output<TreeScrollEvent>();\n /**\n * Callback to invoke in virtual scroll mode when scroll position and item's range in view changes.\n * @param {TreeScrollIndexChangeEvent} event - Scroll index change event.\n * @group Emits\n */\n onScrollIndexChange = output<TreeScrollIndexChangeEvent>();\n /**\n * Callback to invoke when data is filtered.\n * @param {TreeFilterEvent} event - Custom filter event.\n * @group Emits\n */\n onFilter = output<TreeFilterEvent>();\n /**\n * Custom filter template.\n * @param {TreeFilterTemplateContext} context - filter context.\n * @see {@link TreeFilterTemplateContext}\n * @group Templates\n */\n filterTemplate = contentChild<TemplateRef<TreeFilterTemplateContext>>('filter', { descendants: false });\n /**\n * Custom node template.\n * @group Templates\n */\n nodeTemplate = contentChild<TemplateRef<any>>('node', { descendants: false });\n /**\n * Custom header template.\n * @group Templates\n */\n headerTemplate = contentChild<TemplateRef<void>>('header', { descendants: false });\n /**\n * Custom footer template.\n * @group Templates\n */\n footerTemplate = contentChild<TemplateRef<void>>('footer', { descendants: false });\n /**\n * Custom loader template.\n * @param {TreeLoaderTemplateContext} context - loader context.\n * @see {@link TreeLoaderTemplateContext}\n * @group Templates\n */\n loaderTemplate = contentChild<TemplateRef<TreeLoaderTemplateContext>>('loader', { descendants: false });\n /**\n * Custom empty message template.\n * @group Templates\n */\n emptyTemplate = contentChild<TemplateRef<void>>('empty', { descendants: false });\n /**\n * Custom toggler icon template.\n * @param {TreeTogglerIconTemplateContext} context - toggler icon context.\n * @see {@link TreeTogglerIconTemplateContext}\n * @group Templates\n */\n togglerIconTemplate = contentChild<TemplateRef<TreeTogglerIconTemplateContext>>('togglericon', { descendants: false });\n /**\n * Custom checkbox icon template.\n * @param {TreeCheckboxIconTemplateContext} context - checkbox icon context.\n * @see {@link TreeCheckboxIconTemplateContext}\n * @group Templates\n */\n checkboxIconTemplate = contentChild<TemplateRef<TreeCheckboxIconTemplateContext>>('checkboxicon', { descendants: false });\n /**\n * Custom loading icon template.\n * @group Templates\n */\n loadingIconTemplate = contentChild<TemplateRef<void>>('loadingicon', { descendants: false });\n /**\n * Custom filter icon template.\n * @group Templates\n */\n filterIconTemplate = contentChild<TemplateRef<void>>('filtericon', { descendants: false });\n\n filterViewChild = viewChild<ElementRef>('filter');\n\n scroller = viewChild<Scroller>('scroller');\n\n wrapperViewChild = viewChild<ElementRef>('wrapper');\n\n contentViewChild = viewChild<ElementRef>('content');\n\n serializedValue: TreeNode<any>[] | null | undefined;\n\n public nodeTouched: boolean | undefined | null;\n\n public dragNodeTree: Tree | undefined | null;\n\n public dragNode: TreeNode<any> | undefined | null;\n\n public dragNodeSubNodes: TreeNode<any>[] | undefined | null;\n\n public dragNodeIndex: number | undefined | null;\n\n public dragNodeScope: any;\n\n public dragHover: boolean | undefined | null;\n\n _componentStyle = inject(TreeStyle);\n\n dragDropService = inject(TreeDragDropService, { optional: true });\n\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n effect(() => {\n this.value();\n untracked(() => {\n this.updateSerializedValue();\n\n if (this.hasFilterActive()) {\n this._filter(this.filterViewChild()?.nativeElement?.value);\n }\n });\n });\n\n effect(() => {\n this.collapsedKeys();\n this.value();\n untracked(() => {\n if (this.collapsedKeys() == null) {\n return;\n }\n\n this.applyCollapsedKeys();\n this.updateSerializedValue();\n });\n });\n\n effect(() => {\n this.selectionKeys();\n this.value();\n untracked(() => {\n if (this.selectionKeys() == null) {\n return;\n }\n\n if (!this.isSameSelectionKeys(this.deriveSelectionKeys(), this.selectionKeys())) {\n this.applySelectionKeys();\n }\n });\n });\n effect(() => {\n this.selection();\n untracked(() => {\n if (this.selectionKeys() == null) {\n return;\n }\n\n const derived = this.deriveSelectionKeys();\n\n if (!this.isSameSelectionKeys(derived, this.selectionKeys())) {\n this.selectionKeys.set(derived);\n }\n });\n });\n }\n\n showLoadingMask = computed(() => this.loading() && this.loadingMode() === 'mask');\n\n get showEmptyMessage() {\n return !this.loading() && (this.getRootNode() == null || this.getRootNode()!.length === 0);\n }\n\n scrollerStyleHeight = computed(() => (this.scrollHeight() !== 'flex' ? this.scrollHeight() : undefined));\n\n scrollerScrollHeight = computed(() => (this.scrollHeight() !== 'flex' ? undefined : '100%'));\n\n get emptyMessageLabel(): string {\n return this.emptyMessage() || this.translate(TranslationKeys.EMPTY_MESSAGE);\n }\n\n /**\n * Filtering renders shallow copies of the matched nodes, this map links each copy back to\n * its source node so that structural operations (drag&drop) can mutate the original value.\n */\n private filteredNodeOrigins = new WeakMap<object, TreeNode<any>>();\n\n onDestroy() {\n this._destroyed = true;\n }\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n onInit() {\n if (this.filterBy()) {\n this.filterOptions = {\n filter: (value) => this._filter(value),\n reset: () => this.resetFilter()\n };\n }\n\n if (this.droppableNodes()) {\n this.dragDropService?.dragStart$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.dragNodeTree = event.tree;\n this.dragNode = event.node;\n this.dragNodeSubNodes = event.subNodes;\n this.dragNodeIndex = event.index;\n this.dragNodeScope = event.scope;\n });\n }\n\n if (this.droppableNodes() || this.draggableNodes()) {\n this.dragDropService?.dragStop$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.dragNodeTree = null;\n this.dragNode = null;\n this.dragNodeSubNodes = null;\n this.dragNodeIndex = null;\n this.dragNodeScope = null;\n this.dragHover = false;\n\n if (this.hasFilterActive()) {\n this._filter(this.filterViewChild()?.nativeElement?.value);\n this.cd.markForCheck();\n } else if (this.virtualScroll()) {\n this.updateSerializedValue();\n this.cd.markForCheck();\n }\n });\n }\n }\n\n updateSerializedValue() {\n this.serializedValue = [];\n this.serializeNodes(null, this.getRootNode(), 0, true);\n }\n\n /**\n * Projects the current `collapsedKeys` map onto each node's `expanded` flag (a node is expanded\n * unless its key maps to `true`).\n */\n private applyCollapsedKeys() {\n const collapsedKeys = this.collapsedKeys();\n\n if (collapsedKeys == null) {\n return;\n }\n\n const walk = (nodes?: TreeNode<any>[] | null) => {\n if (!nodes) return;\n\n for (const node of nodes) {\n if (node.key != null) {\n node.expanded = !collapsedKeys[node.key as string];\n }\n\n if (node.children) {\n walk(node.children);\n }\n }\n };\n\n walk(this.getRootNode() as TreeNode<any>[]);\n }\n\n /**\n * Reflects a node's expansion change back into the two-way `collapsedKeys` map when it is in use.\n */\n setNodeCollapsed(node: TreeNode<any>, collapsed: boolean) {\n const collapsedKeys = this.collapsedKeys();\n\n if (collapsedKeys == null || node.key == null) {\n return;\n }\n\n const next = { ...collapsedKeys };\n\n if (collapsed) {\n next[node.key as string] = true;\n } else {\n delete next[node.key as string];\n }\n\n this.collapsedKeys.set(next);\n }\n\n /** Builds a `key -> node` lookup over the whole tree (for `selectionKeys` projection). */\n private collectNodesByKey(): Map<string, TreeNode<any>> {\n const map = new Map<string, TreeNode<any>>();\n\n const walk = (nodes?: TreeNode<any>[] | null) => {\n if (!nodes) return;\n\n for (const node of nodes) {\n if (node.key != null) {\n map.set(node.key as string, node);\n }\n\n if (node.children) {\n walk(node.children);\n }\n }\n };\n\n walk(this.getRootNode() as TreeNode<any>[]);\n\n return map;\n }\n\n /** Derives the `selectionKeys` map from the current `selection` (and `partialSelected` for checkbox). */\n private deriveSelectionKeys(): { [key: string]: any } {\n const mode = this.selectionMode();\n const map: { [key: string]: any } = {};\n\n if (mode === 'checkbox') {\n const selection = (this.selection() as TreeNode<any>[]) || [];\n const selectedKeys = new Set(selection.map((node) => node.key));\n\n const walk = (nodes?: TreeNode<any>[] | null) => {\n if (!nodes) return;\n\n for (const node of nodes) {\n if (node.key != null) {\n if (selectedKeys.has(node.key)) {\n map[node.key as string] = { checked: true, partialChecked: false };\n } else if (node.partialSelected) {\n map[node.key as string] = { checked: false, partialChecked: true };\n }\n }\n\n if (node.children) {\n walk(node.children);\n }\n }\n };\n\n walk(this.getRootNode() as TreeNode<any>[]);\n } else if (mode === 'single') {\n const selected = this.selection() as TreeNode<any> | null;\n\n if (selected?.key != null) {\n map[selected.key as string] = true;\n }\n } else {\n const selection = (this.selection() as TreeNode<any>[]) || [];\n\n for (const node of selection) {\n if (node.key != null) {\n map[node.key as string] = true;\n }\n }\n }\n\n return map;\n }\n\n /** Applies the current `selectionKeys` map onto the `selection` model (and `partialSelected` for checkbox). */\n private applySelectionKeys() {\n const keys = this.selectionKeys();\n\n if (keys == null) {\n return;\n }\n\n const mode = this.selectionMode();\n const nodesByKey = this.collectNodesByKey();\n const isChecked = (value: any) => value === true || value?.checked === true;\n\n if (mode === 'single') {\n const key = Object.keys(keys).find((k) => isChecked(keys[k]));\n\n this.selection.set(key != null ? (nodesByKey.get(key) ?? null) : null);\n\n return;\n }\n\n const selected: TreeNode<any>[] = [];\n\n nodesByKey.forEach((node, key) => {\n const value = keys[key];\n\n if (mode === 'checkbox') {\n node.partialSelected = value?.partialChecked === true;\n }\n\n if (isChecked(value)) {\n selected.push(node);\n }\n });\n this.selection.set(selected);\n }\n\n /** Value-based equality for two `selectionKeys` maps (handles both boolean and `{checked,partialChecked}` values). */\n private isSameSelectionKeys(a: { [key: string]: any } | null, b: { [key: string]: any } | null): boolean {\n const aKeys = Object.keys(a || {});\n const bKeys = Object.keys(b || {});\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n return aKeys.every((key) => {\n const av = (a as any)[key];\n const bv = (b as any)[key];\n\n if (av === bv) return true;\n\n if (av && bv && typeof av === 'object' && typeof bv === 'object') {\n return av.checked === bv.checked && av.partialChecked === bv.partialChecked;\n }\n\n return false;\n });\n }\n\n serializeNodes(parent: TreeNode<any> | null, nodes: TreeNode<any>[] | any, level: number, visible: boolean) {\n if (nodes && nodes.length) {\n for (let node of nodes) {\n node.parent = parent;\n const rowNode = {\n node: node,\n parent: parent,\n level: level,\n visible: visible && (parent ? parent.expanded : true)\n };\n\n (this.serializedValue as TreeNode<any>[]).push(<TreeNode>rowNode);\n\n if (rowNode.visible && node.expanded) {\n this.serializeNodes(node, node.children, level + 1, rowNode.visible);\n }\n }\n }\n }\n\n onNodeClick(event: Event, node: TreeNode) {\n let eventTarget = <Element>event.target;\n const section = eventTarget?.getAttribute?.('data-pc-section');\n\n if (section === 'nodetogglebutton' || section === 'nodetoggleicon') {\n return;\n }\n\n if (this.selectionMode()) {\n if (node.selectable === false) {\n return;\n }\n\n if (this.hasFilteredNodes()) {\n node = this.getNodeWithKey(<string>node.key, <TreeNode<any>[]>this.filteredNodes()) as TreeNode;\n\n if (!node) {\n return;\n }\n }\n\n let index = this.findIndexInSelection(node);\n let selected = index >= 0;\n const currentSelection = this.selection();\n\n if (this.isCheckboxSelectionMode()) {\n if (selected) {\n if (this.propagateSelectionDown()) this.propagateDown(node, false);\n else this.selection.set((currentSelection as TreeNode[]).filter((_val: TreeNode, i: number) => i != index));\n\n if (this.propagateSelectionUp() && node.parent) {\n this.propagateUp(node.parent, false);\n }\n\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n if (this.propagateSelectionDown()) this.propagateDown(node, true);\n else this.selection.set([...((currentSelection as TreeNode[]) || []), node]);\n\n if (this.propagateSelectionUp() && node.parent) {\n this.propagateUp(node.parent, true);\n }\n\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n } else {\n let metaSelection = this.nodeTouched ? false : this.metaKeySelection();\n\n if (metaSelection) {\n let metaKey = (<KeyboardEvent>event).metaKey || (<KeyboardEvent>event).ctrlKey;\n\n if (selected && metaKey) {\n if (this.isSingleSelectionMode()) {\n this.selection.set(null);\n } else {\n this.selection.set((currentSelection as TreeNode[]).filter((_val: TreeNode, i: number) => i != index));\n }\n\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n if (this.isSingleSelectionMode()) {\n this.selection.set(node);\n } else if (this.isMultipleSelectionMode()) {\n const base = !metaKey ? [] : (currentSelection as TreeNode[]) || [];\n\n this.selection.set([...base, node]);\n }\n\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n }\n } else {\n if (this.isSingleSelectionMode()) {\n if (selected) {\n this.selection.set(null);\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.selection.set(node);\n setTimeout(() => {\n if (this._destroyed) return;\n\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n });\n }\n } else {\n if (selected) {\n this.selection.set((currentSelection as TreeNode[]).filter((_val: TreeNode, i: number) => i != index));\n this.onNodeUnselect.emit({ originalEvent: event, node: node });\n } else {\n this.selection.set([...((currentSelection as TreeNode[]) || []), node]);\n setTimeout(() => {\n if (this._destroyed) return;\n\n this.onNodeSelect.emit({ originalEvent: event, node: node });\n });\n }\n }\n }\n }\n }\n\n this.nodeTouched = false;\n }\n\n onNodeTouchEnd() {\n this.nodeTouched = true;\n }\n\n onNodeRightClick(event: MouseEvent, node: TreeNode<any>) {\n if (this.contextMenu()) {\n let eventTarget = <Element>event.target;\n const section = eventTarget.getAttribute('data-pc-section');\n\n if (section === 'nodetogglebutton' || section === 'nodetoggleicon') {\n return;\n }\n\n const onContextMenuCallback = () => {\n this.contextMenu().show(event);\n\n this.contextMenu().hideCallback = () => {\n this.contextMenuSelection.set(null);\n };\n\n this.onNodeContextMenuSelect.emit({ originalEvent: event, node: node });\n };\n\n this.contextMenuSelection.set(node);\n onContextMenuCallback();\n }\n }\n\n onNodeDblClick(event: MouseEvent, node: TreeNode<any>) {\n this.onNodeDoubleClick.emit({ originalEvent: event, node: node });\n }\n\n findIndexInSelection(node: TreeNode) {\n let index: number = -1;\n const currentSelection = this.selection();\n\n if (this.selectionMode() && currentSelection) {\n if (this.isSingleSelectionMode()) {\n const sel = currentSelection as TreeNode;\n let areNodesEqual = (sel.key && sel.key === node.key) || sel == node;\n\n index = areNodesEqual ? 0 : -1;\n } else {\n const selArray = currentSelection as TreeNode[];\n\n for (let i = 0; i < selArray.length; i++) {\n let selectedNode = selArray[i];\n let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n\n if (areNodesEqual) {\n index = i;\n break;\n }\n }\n }\n }\n\n return index;\n }\n\n syncNodeOption(node: TreeNode, parentNodes: TreeNode<any>[], option: any, value?: any) {\n // to synchronize the node option between the filtered nodes and the original nodes(this.value)\n const _node = this.hasFilteredNodes() ? this.getNodeWithKey(<string>node.key, parentNodes) : null;\n\n if (_node) {\n (<any>_node)[option] = value || (<any>node)[option];\n }\n }\n\n hasFilteredNodes() {\n return this.filter() && this.filteredNodes() && this.filteredNodes()!.length;\n }\n\n /** Returns the source node of a filtered copy, or the node itself when it is not a copy. */\n getOriginalNode(node: TreeNode<any>): TreeNode<any> {\n return this.filteredNodeOrigins.get(node) ?? node;\n }\n\n hasFilterActive() {\n return this.filter() && this.filterViewChild()?.nativeElement?.value.length > 0;\n }\n\n getNodeWithKey(key: string, nodes: TreeNode<any>[]): TreeNode<any> | undefined {\n for (let node of nodes) {\n if (node.key === key) {\n return node;\n }\n\n if (node.children) {\n let matchedNode = this.getNodeWithKey(key, node.children);\n\n if (matchedNode) {\n return matchedNode;\n }\n }\n }\n }\n\n propagateUp(node: TreeNode, select: boolean) {\n if (node.children && node.children.length) {\n let selectedCount: number = 0;\n let childPartialSelected: boolean = false;\n\n for (let child of node.children) {\n if (this.isSelected(child)) {\n selectedCount++;\n } else if (child.partialSelected) {\n childPartialSelected = true;\n }\n }\n\n const currentSelection = (this.selection() as TreeNode[]) || [];\n\n if (select && selectedCount == node.children.length) {\n this.selection.set([...currentSelection, node]);\n node.partialSelected = false;\n } else {\n if (!select) {\n let index = this.findIndexInSelection(node);\n\n if (index >= 0) {\n this.selection.set(currentSelection.filter((_val: TreeNode, i: number) => i != index));\n }\n }\n\n if (childPartialSelected || (selectedCount > 0 && selectedCount != node.children.length)) node.partialSelected = true;\n else node.partialSelected = false;\n }\n\n this.syncNodeOption(node, <TreeNode<any>[]>this.filteredNodes(), 'partialSelected');\n }\n\n let parent = node.parent;\n\n if (parent) {\n this.propagateUp(parent, select);\n }\n }\n\n propagateDown(node: TreeNode, select: boolean) {\n let index = this.findIndexInSelection(node);\n const currentSelection = (this.selection() as TreeNode[]) || [];\n\n if (select && index == -1) {\n this.selection.set([...currentSelection, node]);\n } else if (!select && index > -1) {\n this.selection.set(currentSelection.filter((_val: TreeNode, i: number) => i != index));\n }\n\n node.partialSelected = false;\n\n this.syncNodeOption(node, <TreeNode<any>[]>this.filteredNodes(), 'partialSelected');\n\n if (node.children && node.children.length) {\n for (let child of node.children) {\n this.propagateDown(child, select);\n }\n }\n }\n\n isSelected(node: TreeNode) {\n return this.findIndexInSelection(node) != -1;\n }\n\n isSingleSelectionMode() {\n return this.selectionMode() && this.selectionMode() == 'single';\n }\n\n isMultipleSelectionMode() {\n return this.selectionMode() && this.selectionMode() == 'multiple';\n }\n\n isCheckboxSelectionMode() {\n return this.selectionMode() && this.selectionMode() == 'checkbox';\n }\n\n isNodeLeaf(node: TreeNode): boolean {\n return node.leaf == false ? false : !(node.children && node.children.length);\n }\n\n getRootNode() {\n return this.filteredNodes() ? this.filteredNodes() : this.value();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getTemplateForNode(node: TreeNode): TemplateRef<any> | null {\n return this.nodeTemplate() ?? null;\n }\n\n onDragOver(event: DragEvent) {\n if (this.droppableNodes() && this.allowDrop(<TreeNode>this.dragNode, null, this.dragNodeScope)) {\n (<any>event).dataTransfer.dropEffect = 'copy';\n event.preventDefault();\n }\n }\n\n onDrop(event: DragEvent) {\n if (this.droppableNodes()) {\n event.preventDefault();\n let dragNode = this.dragNode as TreeNode;\n\n if (this.isSameTreeScope(this.dragNodeScope)) {\n return;\n }\n\n if (this.allowDrop(dragNode, null, this.dragNodeScope)) {\n let dragNodeIndex = <number>this.dragNodeIndex;\n\n if (this.validateDrop()) {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex,\n accept: () => {\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n });\n } else {\n this.onNodeDrop.emit({\n originalEvent: event,\n dragNode: dragNode,\n dropNode: null,\n index: dragNodeIndex\n });\n\n this.processTreeDrop(dragNode, dragNodeIndex);\n }\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n processTreeDrop(dragNode: TreeNode, dragNodeIndex: number) {\n const subNodes = <TreeNode<any>[]>this.dragNodeSubNodes;\n const removalIndex = subNodes ? subNodes.indexOf(dragNode) : -1;\n\n if (removalIndex !== -1) {\n subNodes.splice(removalIndex, 1);\n }\n\n (this.value() as TreeNode<any>[]).push(dragNode);\n this.dragDropService!.stopDrag({\n node: dragNode\n });\n }\n\n onDragEnter() {\n if (this.droppableNodes() && this.allowDrop(<TreeNode>this.dragNode, null, this.dragNodeScope)) {\n this.dragHover = true;\n }\n }\n\n onDragLeave(event: DragEvent) {\n if (this.droppableNodes()) {\n let rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n\n if (event.x > parseInt(rect.left as any) + rect.width || event.x < parseInt(rect.left as any) || event.y > parseInt(rect.top as any) + rect.height || event.y < parseInt(rect.top as any)) {\n this.dragHover = false;\n }\n }\n }\n\n allowDrop(dragNode: TreeNode, dropNode: TreeNode<any> | null, dragNodeScope: any): boolean {\n if (!dragNode) {\n //prevent random html elements to be dragged\n return false;\n } else if (this.isValidDragScope(dragNodeScope)) {\n let allow: boolean = true;\n\n if (dropNode) {\n if (dragNode === this.getOriginalNode(dropNode)) {\n allow = false;\n } else {\n let parent = dropNode.parent;\n\n while (parent != null) {\n if (this.getOriginalNode(parent) === dragNode) {\n allow = false;\n break;\n }\n\n parent = parent.parent;\n }\n }\n }\n\n return allow;\n } else {\n return false;\n }\n }\n\n hasCommonScope(dragScope: any, dropScope: any): boolean {\n if (typeof dropScope === 'string') {\n if (typeof dragScope === 'string') return dropScope === dragScope;\n else if (Array.isArray(dragScope)) return (<Array<any>>dragScope).indexOf(dropScope) != -1;\n } else if (Array.isArray(dropScope)) {\n if (typeof dragScope === 'string') {\n return (<Array<any>>dropScope).indexOf(dragScope) != -1;\n } else if (Array.isArray(dragScope)) {\n for (let s of dropScope) {\n for (let ds of dragScope) {\n if (s === ds) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n }\n\n isSameTreeScope(dragScope: any): boolean {\n return this.hasCommonScope(dragScope, this.draggableScope());\n }\n\n isValidDragScope(dragScope: any): boolean {\n let dropScope = this.droppableScope();\n\n if (dropScope) {\n return this.hasCommonScope(dragScope, dropScope);\n } else {\n return true;\n }\n }\n\n public _filter(value: string) {\n let filterValue = value;\n\n if (filterValue === '') {\n this.filteredNodes.set(null);\n } else {\n const filteredNodes: TreeNode<any>[] = [];\n const searchFields: string[] = this.filterBy().split(',');\n const filterText = removeAccents(filterValue).toLocaleLowerCase(this.filterLocale());\n const isStrictMode = this.filterMode() === 'strict';\n\n for (let node of <TreeNode<any>[]>this.value()) {\n let copyNode = { ...node };\n\n this.filteredNodeOrigins.set(copyNode, node);\n let paramsWithoutNode = { searchFields, filterText, isStrictMode };\n\n if (\n (isStrictMode && (this.findFilteredNodes(copyNode, paramsWithoutNode) || this.isFilterMatched(copyNode, paramsWithoutNode))) ||\n (!isStrictMode && (this.isFilterMatched(copyNode, paramsWithoutNode) || this.findFilteredNodes(copyNode, paramsWithoutNode)))\n ) {\n filteredNodes.push(copyNode);\n }\n }\n\n this.filteredNodes.set(filteredNodes);\n }\n\n this.updateSerializedValue();\n this.onFilter.emit({\n filter: filterValue,\n filteredValue: this.filteredNodes()\n });\n }\n\n /**\n * Resets filter.\n * @group Method\n */\n public resetFilter() {\n this.filteredNodes.set(null);\n\n const filterEl = this.filterViewChild();\n\n if (filterEl && filterEl.nativeElement) {\n filterEl.nativeElement.value = '';\n }\n }\n /**\n * Scrolls to virtual index.\n * @param {number} number - Index to be scrolled.\n * @group Method\n */\n public scrollToVirtualIndex(index: number) {\n if (this.virtualScroll()) {\n this.scroller()?.scrollToIndex(index);\n }\n }\n /**\n * Scrolls to virtual index.\n * @param {ScrollToOptions} options - Scroll options.\n * @group Method\n */\n public scrollTo(options: any) {\n if (this.virtualScroll()) {\n this.scroller()?.scrollTo(options);\n } else {\n const wrapper = this.wrapperViewChild();\n\n if (wrapper && wrapper.nativeElement) {\n if (wrapper.nativeElement.scrollTo) {\n wrapper.nativeElement.scrollTo(options);\n } else {\n wrapper.nativeElement.scrollLeft = options.left;\n wrapper.nativeElement.scrollTop = options.top;\n }\n }\n }\n }\n\n findFilteredNodes(node: TreeNode, paramsWithoutNode: any) {\n if (node) {\n let matched = false;\n\n if (node.children) {\n let childNodes = [...node.children];\n\n node.children = [];\n\n for (let childNode of childNodes) {\n let copyChildNode = { ...childNode };\n\n this.filteredNodeOrigins.set(copyChildNode, this.getOriginalNode(childNode));\n\n if (this.isFilterMatched(copyChildNode, paramsWithoutNode)) {\n matched = true;\n node.children.push(copyChildNode);\n }\n }\n }\n\n if (matched) {\n node.expanded = true;\n\n return true;\n }\n }\n }\n\n isFilterMatched(node: TreeNode, params: any) {\n let { searchFields, filterText, isStrictMode } = params;\n let matched = false;\n\n for (let field of searchFields) {\n let fieldValue = removeAccents(String(resolveFieldData(node, field))).toLocaleLowerCase(this.filterLocale());\n\n if (fieldValue.indexOf(filterText) > -1) {\n matched = true;\n }\n }\n\n if (!matched || (isStrictMode && !this.isNodeLeaf(node))) {\n matched = this.findFilteredNodes(node, { searchFields, filterText, isStrictMode }) || matched;\n }\n\n return matched;\n }\n\n getIndex(options: any, index: number) {\n const getItemOptions = options['getItemOptions'];\n\n return getItemOptions ? getItemOptions(index).index : index;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n get containerDataP() {\n return this.cn({\n loading: this.loading(),\n scrollable: this.scrollHeight() === 'flex'\n });\n }\n\n get wrapperDataP() {\n return this.cn({\n scrollable: this.scrollHeight() === 'flex'\n });\n }\n}\n@NgModule({\n imports: [Tree],\n exports: [Tree]\n})\nexport class TreeModule {}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"primeng-treeselect.mjs","names":["TimesIcon","ChevronDownIcon"],"sources":["../../src/treeselect/style/treeselectstyle.ts","../../src/treeselect/treeselect.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/treeselect';\nimport { BaseStyle } from 'primeng/base';\n\nconst inlineStyles = {\n root: ({ instance }) => ({ position: instance.$appendTo() === 'self' ? 'relative' : undefined })\n};\n\nconst classes = {\n root: ({ instance }) => [\n 'p-treeselect p-component p-inputwrapper',\n {\n 'p-treeselect-display-chip': instance.display() === 'chip',\n 'p-disabled': instance.$disabled(),\n 'p-invalid': instance.invalid(),\n 'p-focus': instance.focused(),\n 'p-variant-filled': instance.$variant() === 'filled',\n 'p-inputwrapper-filled': !instance.emptyValue(),\n 'p-inputwrapper-focus': instance.focused() || instance.overlayVisible(),\n 'p-treeselect-open': instance.overlayVisible(),\n 'p-treeselect-fluid': instance.hasFluid,\n 'p-treeselect-sm p-inputfield-sm': instance.size() === 'small',\n 'p-treeselect-lg p-inputfield-lg': instance.size() === 'large'\n }\n ],\n labelContainer: 'p-treeselect-label-container',\n label: ({ instance }) => [\n 'p-treeselect-label',\n {\n 'p-placeholder': instance.label() === instance.placeholder(),\n 'p-treeselect-label-empty': !instance.placeholder() && instance.emptyValue()\n }\n ],\n clearIcon: 'p-treeselect-clear-icon',\n chip: 'p-treeselect-chip-item',\n pcChip: 'p-treeselect-chip',\n dropdown: 'p-treeselect-dropdown',\n dropdownIcon: 'p-treeselect-dropdown-icon',\n panel: 'p-treeselect-overlay p-component-overlay p-component',\n treeContainer: 'p-treeselect-tree-container',\n emptyMessage: 'p-treeselect-empty-message'\n};\n\n@Injectable()\nexport class TreeSelectStyle extends BaseStyle {\n name = 'treeselect';\n\n style = style;\n\n classes = classes;\n\n inlineStyles = inlineStyles;\n}\n\n/**\n *\n * TreeSelect is a form component to choose from hierarchical data.\n *\n * [Live Demo](https://www.primeng.org/treeselect/)\n *\n * @module treeselectstyle\n *\n */\nexport enum TreeSelectClasses {\n /**\n * Class name of the root element\n */\n root = 'p-treeselect',\n /**\n * Class name of the label container element\n */\n labelContainer = 'p-treeselect-label-container',\n /**\n * Class name of the label element\n */\n label = 'p-treeselect-label',\n /**\n * Class name of the chip item element\n */\n chipItem = 'p-treeselect-chip-item',\n /**\n * Class name of the clear icon element\n */\n clearIcon = 'p-treeselect-clear-icon',\n /**\n * Class name of the chip element\n */\n pcChip = 'p-treeselect-chip',\n /**\n * Class name of the dropdown element\n */\n dropdown = 'p-treeselect-dropdown',\n /**\n * Class name of the dropdown icon element\n */\n dropdownIcon = 'p-treeselect-dropdown-icon',\n /**\n * Class name of the panel element\n */\n panel = 'p-treeselect-overlay',\n /**\n * Class name of the tree container element\n */\n treeContainer = 'p-treeselect-tree-container',\n /**\n * Class name of the empty message element\n */\n emptyMessage = 'p-treeselect-empty-message'\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n forwardRef,\n inject,\n InjectionToken,\n input,\n NgModule,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChevronDown as ChevronDownIcon } from '@primeicons/angular/chevron-down';\nimport { Times as TimesIcon } from '@primeicons/angular/times';\nimport { MotionOptions } from '@primeuix/motion';\nimport { focus, getFirstFocusableElement, getFocusableElements, getLastFocusableElement, isNotEmpty, uuid } from '@primeuix/utils';\nimport { OverlayOptions, ScrollerOptions, SharedModule, TreeNode } from 'primeng/api';\nimport { AutoFocus } from 'primeng/autofocus';\nimport { PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { BaseEditableHolder } from 'primeng/baseeditableholder';\nimport { Bind } from 'primeng/bind';\nimport { Chip } from 'primeng/chip';\nimport { Fluid } from 'primeng/fluid';\nimport { Overlay } from 'primeng/overlay';\nimport { Tree, TreeFilterEvent, TreeNodeSelectEvent, TreeNodeUnSelectEvent } from 'primeng/tree';\nimport { Nullable } from 'primeng/ts-helpers';\nimport type { AppendTo, CSSProperties, InputSize, InputVariant } from 'primeng/types/shared';\nimport {\n TreeSelectDisplay,\n TreeSelectHeaderTemplateContext,\n TreeSelectItemCheckboxIconTemplateContext,\n TreeSelectItemTogglerIconTemplateContext,\n TreeSelectLoadingMode,\n TreeSelectNodeCollapseEvent,\n TreeSelectNodeExpandEvent,\n TreeSelectPassThrough,\n TreeSelectSelectionMode,\n TreeSelectValueTemplateContext\n} from 'primeng/types/treeselect';\nimport { TreeSelectStyle } from './style/treeselectstyle';\n\nexport const TREESELECT_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TreeSelect),\n multi: true\n};\n\nconst TREESELECT_INSTANCE = new InjectionToken<TreeSelect>('TREESELECT_INSTANCE');\n\n/**\n * TreeSelect is a form component to choose from hierarchical data.\n * @group Components\n */\n@Component({\n selector: 'p-tree-select, p-treeselect',\n standalone: true,\n imports: [NgTemplateOutlet, Overlay, SharedModule, Tree, AutoFocus, TimesIcon, ChevronDownIcon, Chip, Bind],\n hostDirectives: [Bind],\n template: `\n <div class=\"p-hidden-accessible\" [pBind]=\"ptm('hiddenInputContainer')\" [attr.data-p-hidden-accessible]=\"true\">\n <input\n #focusInput\n type=\"text\"\n role=\"combobox\"\n [attr.id]=\"inputId()\"\n readonly\n [attr.disabled]=\"$inputDisabledAttr()\"\n (focus)=\"onInputFocus($event)\"\n (blur)=\"onInputBlur($event)\"\n (keydown)=\"onKeyDown($event)\"\n [attr.tabindex]=\"$inputTabindex()\"\n [attr.aria-controls]=\"$ariaControls()\"\n [attr.aria-haspopup]=\"'tree'\"\n [attr.aria-expanded]=\"$ariaExpanded()\"\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-label]=\"$inputAriaLabel()\"\n [pAutoFocus]=\"autofocus()\"\n [pBind]=\"ptm('hiddenInput')\"\n />\n </div>\n <div [class]=\"cx('labelContainer')\" [pBind]=\"ptm('labelContainer')\">\n <div [class]=\"cn(cx('label'), labelStyleClass())\" [style]=\"labelStyle()\" [pBind]=\"ptm('label')\">\n @if (valueTemplate()) {\n <ng-container *ngTemplateOutlet=\"valueTemplate(); context: valueTemplateContext()\"></ng-container>\n } @else {\n @if (display() === 'comma') {\n {{ $labelText() }}\n } @else {\n @for (node of _value(); track node.key || $index) {\n <div [class]=\"cx('chipItem')\" [pBind]=\"ptm('chipItem')\">\n <p-chip [unstyled]=\"unstyled()\" [label]=\"node.label\" [class]=\"cx('pcChip')\" [pt]=\"ptm('pcChip')\" />\n </div>\n }\n @if (emptyValue()) {\n {{ $placeholderText() }}\n }\n }\n }\n </div>\n </div>\n @if ($showClearIcon()) {\n @if (!clearIconTemplate()) {\n <svg data-p-icon=\"times\" [class]=\"cx('clearIcon')\" (click)=\"clear($event)\" [pBind]=\"ptm('clearIcon')\" [attr.data-pc-section]=\"'clearicon'\" />\n } @else {\n <span [class]=\"cx('clearIcon')\" (click)=\"clear($event)\" [pBind]=\"ptm('clearIcon')\" [attr.data-pc-section]=\"'clearicon'\">\n <ng-template *ngTemplateOutlet=\"clearIconTemplate()\"></ng-template>\n </span>\n }\n }\n <div [class]=\"cx('dropdown')\" role=\"button\" aria-haspopup=\"tree\" [attr.aria-expanded]=\"$ariaExpanded()\" [attr.aria-label]=\"'treeselect trigger'\" [pBind]=\"ptm('dropdown')\">\n @if ($showDefaultDropdownIcon()) {\n <svg data-p-icon=\"chevron-down\" [class]=\"cx('dropdownIcon')\" [pBind]=\"ptm('dropdownIcon')\" />\n } @else {\n <span [class]=\"cx('dropdownIcon')\" [pBind]=\"ptm('dropdownIcon')\">\n <ng-template *ngTemplateOutlet=\"$dropdownIconTemplate()\"></ng-template>\n </span>\n }\n </div>\n <p-overlay\n #overlay\n [hostAttrSelector]=\"$attrSelector\"\n [visible]=\"overlayVisible()\"\n (visibleChange)=\"overlayVisible.set($event)\"\n [options]=\"overlayOptions()\"\n [target]=\"'@parent'\"\n [appendTo]=\"$appendTo()\"\n [unstyled]=\"unstyled()\"\n [pt]=\"ptm('pcOverlay')\"\n [motionOptions]=\"motionOptions()\"\n (onBeforeEnter)=\"onOverlayBeforeEnter()\"\n (onBeforeHide)=\"onOverlayBeforeHide()\"\n (onShow)=\"onShow.emit($event)\"\n (onHide)=\"hide($event)\"\n >\n <ng-template #content>\n <div #panel [attr.id]=\"listId\" [class]=\"cn(cx('panel'), panelStyleClass(), panelClass())\" [style]=\"panelStyle()\" [pBind]=\"ptm('panel')\">\n <span\n #firstHiddenFocusableEl\n role=\"presentation\"\n class=\"p-hidden-accessible p-hidden-focusable\"\n [attr.tabindex]=\"0\"\n (focus)=\"onFirstHiddenFocus($event)\"\n [attr.data-p-hidden-accessible]=\"true\"\n [attr.data-p-hidden-focusable]=\"true\"\n [pBind]=\"ptm('hiddenFirstFocusableEl')\"\n >\n </span>\n @if (headerTemplate()) {\n <ng-container *ngTemplateOutlet=\"headerTemplate(); context: headerTemplateContext()\"></ng-container>\n }\n <div [class]=\"cx('treeContainer')\" [style]=\"$treeContainerStyle()\" [pBind]=\"ptm('treeContainer')\">\n <p-tree\n #tree\n [value]=\"_options()\"\n [propagateSelectionDown]=\"propagateSelectionDown()\"\n [propagateSelectionUp]=\"propagateSelectionUp()\"\n [selectionMode]=\"selectionMode()\"\n (selectionChange)=\"onSelectionChange($event)\"\n [selection]=\"_value()\"\n [metaKeySelection]=\"metaKeySelection()\"\n (onNodeExpand)=\"nodeExpand($event)\"\n (onNodeCollapse)=\"nodeCollapse($event)\"\n (onNodeSelect)=\"onSelect($event)\"\n [emptyMessage]=\"emptyMessage()\"\n (onNodeUnselect)=\"onUnselect($event)\"\n [filter]=\"filter()\"\n [filterBy]=\"filterBy()\"\n [filterMode]=\"filterMode()\"\n [filterPlaceholder]=\"filterPlaceholder()\"\n [filterLocale]=\"filterLocale()\"\n [filteredNodes]=\"filteredNodes\"\n [virtualScroll]=\"virtualScroll()\"\n [virtualScrollItemSize]=\"virtualScrollItemSize()\"\n [virtualScrollOptions]=\"virtualScrollOptions()\"\n [loading]=\"loading()\"\n [filterInputAutoFocus]=\"filterInputAutoFocus()\"\n [loadingMode]=\"loadingMode()\"\n [pt]=\"ptm('pcTree')\"\n [unstyled]=\"unstyled()\"\n >\n @if (emptyTemplate()) {\n <ng-template #empty>\n <ng-container *ngTemplateOutlet=\"emptyTemplate()\"></ng-container>\n </ng-template>\n }\n @if (itemTogglerIconTemplate()) {\n <ng-template #togglericon let-expanded>\n <ng-container *ngTemplateOutlet=\"itemTogglerIconTemplate(); context: { $implicit: expanded }\"></ng-container>\n </ng-template>\n }\n @if (itemCheckboxIconTemplate()) {\n <ng-template #checkboxicon let-selected let-partialSelected=\"partialSelected\">\n <ng-container *ngTemplateOutlet=\"itemCheckboxIconTemplate(); context: { $implicit: selected, partialSelected: partialSelected }\"></ng-container>\n </ng-template>\n }\n @if (itemLoadingIconTemplate()) {\n <ng-template #loadingicon>\n <ng-container *ngTemplateOutlet=\"itemLoadingIconTemplate()\"></ng-container>\n </ng-template>\n }\n @if (filterIconTemplate()) {\n <ng-template #filtericon>\n <ng-container *ngTemplateOutlet=\"filterIconTemplate()\"></ng-container>\n </ng-template>\n }\n </p-tree>\n </div>\n @if (footerTemplate()) {\n <ng-container *ngTemplateOutlet=\"footerTemplate(); context: footerTemplateContext()\"></ng-container>\n }\n <span\n #lastHiddenFocusableEl\n role=\"presentation\"\n class=\"p-hidden-accessible p-hidden-focusable\"\n [attr.tabindex]=\"0\"\n (focus)=\"onLastHiddenFocus($event)\"\n [attr.data-p-hidden-accessible]=\"true\"\n [attr.data-p-hidden-focusable]=\"true\"\n [pBind]=\"ptm('hiddenLastFocusableEl')\"\n ></span>\n </div>\n </ng-template>\n </p-overlay>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TREESELECT_VALUE_ACCESSOR,\n TreeSelectStyle,\n {\n provide: TREESELECT_INSTANCE,\n useExisting: TreeSelect\n },\n {\n provide: PARENT_INSTANCE,\n useExisting: TreeSelect\n }\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': \"cx('root')\",\n '[style]': \"sx('root')\",\n '(mousedown)': 'onClick($event)'\n }\n})\nexport class TreeSelect extends BaseEditableHolder<TreeSelectPassThrough> {\n componentName = 'TreeSelect';\n\n $pcTreeSelect: TreeSelect | undefined = inject(TREESELECT_INSTANCE, { optional: true, skipSelf: true }) ?? undefined;\n\n bindDirectiveInstance = inject(Bind, { self: true });\n\n _componentStyle = inject(TreeSelectStyle);\n\n /**\n * Identifier of the underlying input element.\n * @group Props\n */\n inputId = input<string>();\n /**\n * Height of the viewport, a scrollbar is defined if height of list exceeds this value.\n * @group Props\n */\n scrollHeight = input<string>('400px');\n /**\n * Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.\n * @group Props\n */\n metaKeySelection = input(false, { transform: booleanAttribute });\n /**\n * Defines how the selected items are displayed.\n * @group Props\n */\n display = input<TreeSelectDisplay>('comma');\n /**\n * Defines the selection mode.\n * @group Props\n */\n selectionMode = input<TreeSelectSelectionMode>('single');\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n tabindex = input<string>('0');\n /**\n * Defines a string that labels the input for accessibility.\n * @group Props\n */\n ariaLabel = input<string>();\n /**\n * Establishes relationships between the component and label(s) where its value should be one or more element IDs.\n * @group Props\n */\n ariaLabelledBy = input<string>();\n /**\n * Label to display when there are no selections.\n * @group Props\n */\n placeholder = input<string>();\n /**\n * Style class of the overlay panel.\n * @group Props\n */\n panelClass = input<string | string[] | Set<string> | { [klass: string]: any }>();\n /**\n * Inline style of the panel element.\n * @group Props\n */\n panelStyle = input<CSSProperties>();\n /**\n * Style class of the panel element.\n * @group Props\n */\n panelStyleClass = input<string>();\n /**\n * Inline style of the label element.\n * @group Props\n */\n labelStyle = input<CSSProperties>();\n /**\n * Style class of the label element.\n * @group Props\n */\n labelStyleClass = input<string>();\n /**\n * Specifies the options for the overlay.\n * @group Props\n */\n overlayOptions = input<OverlayOptions>();\n /**\n * Text to display when there are no options available. Defaults to value from PrimeNG locale configuration.\n * @group Props\n */\n emptyMessage = input<string>('');\n /**\n * When specified, displays an input field to filter the items.\n * @group Props\n */\n filter = input(false, { transform: booleanAttribute });\n /**\n * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.\n * @group Props\n */\n filterBy = input<string>('label');\n /**\n * Mode for filtering valid values are \"lenient\" and \"strict\". Default is lenient.\n * @group Props\n */\n filterMode = input<string>('lenient');\n /**\n * Placeholder text to show when filter input is empty.\n * @group Props\n */\n filterPlaceholder = input<string>();\n /**\n * Locale to use in filtering. The default locale is the host environment's current locale.\n * @group Props\n */\n filterLocale = input<string>();\n /**\n * Determines whether the filter input should be automatically focused when the component is rendered.\n * @group Props\n */\n filterInputAutoFocus = input(true, { transform: booleanAttribute });\n /**\n * Whether checkbox selections propagate to descendant nodes.\n * @group Props\n */\n propagateSelectionDown = input(true, { transform: booleanAttribute });\n /**\n * Whether checkbox selections propagate to ancestor nodes.\n * @group Props\n */\n propagateSelectionUp = input(true, { transform: booleanAttribute });\n /**\n * When enabled, a clear icon is displayed to clear the value.\n * @group Props\n */\n showClear = input(false, { transform: booleanAttribute });\n /**\n * Clears the filter value when hiding the dropdown.\n * @group Props\n */\n resetFilterOnHide = input(true, { transform: booleanAttribute });\n /**\n * Whether the data should be loaded on demand during scroll.\n * @group Props\n */\n virtualScroll = input(undefined, { transform: booleanAttribute });\n /**\n * Height of an item in the list for VirtualScrolling.\n * @group Props\n */\n virtualScrollItemSize = input(undefined, { transform: numberAttribute });\n /**\n * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.\n * @group Props\n */\n virtualScrollOptions = input<ScrollerOptions>();\n /**\n * When present, it specifies that the component should automatically get focus on load.\n * @group Props\n */\n autofocus = input(undefined, { transform: booleanAttribute });\n /**\n * An array of treenodes.\n * @defaultValue undefined\n * @group Props\n */\n options = input<TreeNode[]>();\n /**\n * Displays a loader to indicate data load is in progress.\n * @group Props\n */\n loading = input(undefined, { transform: booleanAttribute });\n /**\n * Loading mode display.\n * @group Props\n */\n loadingMode = input<TreeSelectLoadingMode>('mask');\n /**\n * Specifies the size of the component.\n * @defaultValue undefined\n * @group Props\n */\n size = input<InputSize>();\n /**\n * Specifies the input variant of the component.\n * @defaultValue undefined\n * @group Props\n */\n variant = input<InputVariant>();\n /**\n * Spans 100% width of the container when enabled.\n * @defaultValue undefined\n * @group Props\n */\n fluid = input(undefined, { transform: booleanAttribute });\n /**\n * Target element to attach the overlay, valid values are \"body\" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]=\"mydiv\" for a div element having #mydiv as variable name).\n * @defaultValue 'self'\n * @group Props\n */\n appendTo = input<AppendTo>(undefined);\n /**\n * The motion options.\n * @group Props\n */\n motionOptions = input<MotionOptions | undefined>(undefined);\n\n /**\n * Callback to invoke when a node is expanded.\n * @param {TreeSelectNodeExpandEvent} event - Custom node expand event.\n * @group Emits\n */\n onNodeExpand = output<TreeSelectNodeExpandEvent>();\n /**\n * Callback to invoke when a node is collapsed.\n * @param {TreeSelectNodeCollapseEvent} event - Custom node collapse event.\n * @group Emits\n */\n onNodeCollapse = output<TreeSelectNodeCollapseEvent>();\n /**\n * Callback to invoke when the overlay is shown.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onShow = output<any>();\n /**\n * Callback to invoke when the overlay is hidden.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onHide = output<Event>();\n /**\n * Callback to invoke when input field is cleared.\n * @group Emits\n */\n onClear = output<any>();\n /**\n * Callback to invoke when data is filtered.\n * @group Emits\n */\n onFilter = output<TreeFilterEvent>();\n /**\n * Callback to invoke when treeselect gets focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onFocus = output<Event>();\n /**\n * Callback to invoke when treeselect loses focus.\n * @param {Event} event - Browser event.\n * @group Emits\n */\n onBlur = output<Event>();\n /**\n * Callback to invoke when a node is unselected.\n * @param {TreeNodeUnSelectEvent} event - node unselect event.\n * @group Emits\n */\n onNodeUnselect = output<TreeNodeUnSelectEvent>();\n /**\n * Callback to invoke when a node is selected.\n * @param {TreeNodeSelectEvent} event - node select event.\n * @group Emits\n */\n onNodeSelect = output<TreeNodeSelectEvent>();\n\n $appendTo = computed(() => this.appendTo() || this.config.overlayAppendTo());\n\n focusInputViewChild = viewChild<ElementRef>('focusInput');\n\n filterViewChild = viewChild<ElementRef>('filter');\n\n treeViewChild = viewChild<Tree>('tree');\n\n panelEl = viewChild<ElementRef>('panel');\n\n overlayViewChild = viewChild<Overlay>('overlay');\n\n firstHiddenFocusableElementOnOverlay = viewChild<ElementRef>('firstHiddenFocusableEl');\n\n lastHiddenFocusableElementOnOverlay = viewChild<ElementRef>('lastHiddenFocusableEl');\n\n $variant = computed(() => this.variant() || this.config.inputVariant() || undefined);\n\n pcFluid: Fluid | null = inject(Fluid, { optional: true, host: true, skipSelf: true });\n\n get hasFluid() {\n return this.fluid() ?? !!this.pcFluid;\n }\n\n public filteredNodes: TreeNode[] | undefined | null;\n\n filterValue: Nullable<string> = null;\n\n serializedValue: Nullable<any[]>;\n\n /**\n * Custom value template.\n * @param {TreeSelectValueTemplateContext} context - value context.\n * @see {@link TreeSelectValueTemplateContext}\n * @group Templates\n */\n valueTemplate = contentChild<TemplateRef<TreeSelectValueTemplateContext>>('value', { descendants: false });\n\n /**\n * Custom header template.\n * @param {TreeSelectHeaderTemplateContext} context - header context.\n * @see {@link TreeSelectHeaderTemplateContext}\n * @group Templates\n */\n headerTemplate = contentChild<TemplateRef<TreeSelectHeaderTemplateContext>>('header', { descendants: false });\n\n /**\n * Custom empty message template.\n * @group Templates\n */\n emptyTemplate = contentChild<TemplateRef<void>>('empty', { descendants: false });\n\n /**\n * Custom footer template.\n * @param {TreeSelectHeaderTemplateContext} context - footer context.\n * @see {@link TreeSelectHeaderTemplateContext}\n * @group Templates\n */\n footerTemplate = contentChild<TemplateRef<TreeSelectHeaderTemplateContext>>('footer', { descendants: false });\n\n /**\n * Custom clear icon template.\n * @group Templates\n */\n clearIconTemplate = contentChild<TemplateRef<void>>('clearicon', { descendants: false });\n\n /**\n * Custom trigger icon template.\n * @group Templates\n */\n triggerIconTemplate = contentChild<TemplateRef<void>>('triggericon', { descendants: false });\n\n /**\n * Custom dropdown icon template.\n * @group Templates\n */\n dropdownIconTemplate = contentChild<TemplateRef<void>>('dropdownicon', { descendants: false });\n\n /**\n * Custom filter icon template.\n * @group Templates\n */\n filterIconTemplate = contentChild<TemplateRef<void>>('filtericon', { descendants: false });\n\n /**\n * Custom close icon template.\n * @group Templates\n */\n closeIconTemplate = contentChild<TemplateRef<void>>('closeicon', { descendants: false });\n\n /**\n * Custom item toggler icon template.\n * @param {TreeSelectItemTogglerIconTemplateContext} context - toggler icon context.\n * @see {@link TreeSelectItemTogglerIconTemplateContext}\n * @group Templates\n */\n itemTogglerIconTemplate = contentChild<TemplateRef<TreeSelectItemTogglerIconTemplateContext>>('itemtogglericon', { descendants: false });\n\n /**\n * Custom item checkbox icon template.\n * @param {TreeSelectItemCheckboxIconTemplateContext} context - checkbox icon context.\n * @see {@link TreeSelectItemCheckboxIconTemplateContext}\n * @group Templates\n */\n itemCheckboxIconTemplate = contentChild<TemplateRef<TreeSelectItemCheckboxIconTemplateContext>>('itemcheckboxicon', { descendants: false });\n\n /**\n * Custom item loading icon template.\n * @group Templates\n */\n itemLoadingIconTemplate = contentChild<TemplateRef<void>>('itemloadingicon', { descendants: false });\n\n focused = signal<boolean>(false);\n\n overlayVisible = signal<boolean>(false);\n\n _value = signal<any>(undefined);\n\n expandedNodes: any[] = [];\n\n _options = signal<TreeNode[] | undefined>(undefined);\n\n listId: string = '';\n\n valueTemplateContext = computed(() => ({ $implicit: this._value(), placeholder: this.placeholder() }));\n\n headerTemplateContext = computed(() => ({ $implicit: this._value(), options: this._options() }));\n\n footerTemplateContext = computed(() => ({ $implicit: this._value(), options: this._options() }));\n\n label = computed(() => {\n const value = this._value() || [];\n\n return value.length ? value.map((node: TreeNode) => node.label).join(', ') : this.selectionMode() === 'single' && this._value() ? this._value().label : this.placeholder();\n });\n\n emptyValue = computed(() => !this._value() || Object.keys(this._value()).length === 0);\n\n emptyOptions = computed(() => !this._options() || this._options()!.length === 0);\n\n $inputDisabledAttr = computed(() => (this.$disabled() ? '' : undefined));\n\n $inputTabindex = computed(() => (!this.$disabled() ? this.tabindex() : '-1'));\n\n $ariaControls = computed(() => (this.overlayVisible() ? this.listId : null));\n\n $ariaExpanded = computed(() => this.overlayVisible() ?? false);\n\n $inputAriaLabel = computed(() => {\n const ariaLabel = this.ariaLabel();\n const label = this.label();\n\n return ariaLabel || (label === 'p-emptylabel' ? undefined : label);\n });\n\n $showClearIcon = computed(() => this.checkValue() && !this.$disabled() && this.showClear());\n\n $showDefaultDropdownIcon = computed(() => !this.triggerIconTemplate() && !this.dropdownIconTemplate());\n\n $dropdownIconTemplate = computed(() => this.triggerIconTemplate() || this.dropdownIconTemplate());\n\n $labelText = computed(() => this.label() || 'empty');\n\n $placeholderText = computed(() => this.placeholder() || 'empty');\n\n $treeContainerStyle = computed(() => {\n if (!this.virtualScroll()) {\n return { 'max-height': this.scrollHeight() };\n }\n\n const height = this.virtualScrollOptions()?.scrollHeight ?? this.scrollHeight();\n\n return { height, 'max-height': height, overflow: 'hidden' };\n });\n\n constructor() {\n super();\n\n // Handle options input changes\n effect(() => {\n const opts = this.options();\n\n untracked(() => {\n this._options.set(opts);\n this.updateTreeState();\n });\n });\n }\n\n onAfterViewChecked(): void {\n this.bindDirectiveInstance.setAttrs(this.ptms(['host', 'root']));\n }\n\n onInit() {\n this.listId = uuid('pn_id_') + '_list';\n this.updateTreeState();\n }\n\n onOverlayBeforeEnter() {\n if (this.filter()) {\n if (isNotEmpty(this.filterValue)) {\n this.treeViewChild()?._filter(<any>this.filterValue);\n }\n\n if (this.filterInputAutoFocus()) {\n this.filterViewChild()?.nativeElement.focus();\n }\n } else {\n let focusableElements = <any>getFocusableElements(this.panelEl()?.nativeElement);\n\n if (focusableElements && focusableElements.length > 0) {\n focusableElements[0].focus();\n }\n }\n }\n\n onOverlayBeforeHide() {\n let focusableElements = <any>getFocusableElements(this.el.nativeElement);\n\n if (focusableElements && focusableElements.length > 0) {\n focusableElements[0].focus();\n }\n }\n\n onSelectionChange(event: any) {\n this._value.set(event);\n this.onModelChange(this._value());\n }\n\n onClick(event: any) {\n if (this.$disabled()) {\n return;\n }\n\n const section = event.target?.getAttribute?.('data-pc-section');\n\n if (event.target?.closest?.('[data-pc-section=\"clearicon\"]')) {\n return;\n }\n\n if (!this.overlayViewChild()?.el?.nativeElement?.contains(event.target) && section !== 'box' && section !== 'icon') {\n if (this.overlayVisible()) {\n this.hide();\n } else {\n this.show();\n }\n\n this.focusInputViewChild()?.nativeElement.focus();\n }\n }\n\n onKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n //down\n case 'ArrowDown':\n if (!this.overlayVisible()) {\n this.show();\n event.preventDefault();\n }\n\n this.onArrowDown(event);\n event.preventDefault();\n break;\n\n //space\n case 'Space':\n case 'Enter':\n if (!this.overlayVisible()) {\n this.show();\n event.preventDefault();\n }\n\n break;\n\n //escape\n case 'Escape':\n if (this.overlayVisible()) {\n this.hide();\n this.focusInputViewChild()?.nativeElement.focus();\n event.preventDefault();\n }\n\n break;\n\n //tab\n case 'Tab':\n this.onTabKey(event);\n break;\n\n default:\n break;\n }\n }\n\n onFilterInput(event: Event) {\n this.filterValue = (event.target as HTMLInputElement).value;\n this.treeViewChild()?._filter(this.filterValue);\n this.onFilter.emit({\n filter: this.filterValue,\n filteredValue: this.treeViewChild()?.filteredNodes()\n });\n setTimeout(() => {\n this.overlayViewChild()?.alignOverlay();\n });\n }\n\n onArrowDown(event: KeyboardEvent) {\n if (this.overlayVisible() && this.panelEl()?.nativeElement) {\n let focusableElements = <any>getFocusableElements(this.panelEl()!.nativeElement, '[data-pc-section=\"node\"]');\n\n if (focusableElements && focusableElements.length > 0) {\n focusableElements[0].focus();\n }\n\n event.preventDefault();\n }\n }\n\n onFirstHiddenFocus(event: FocusEvent) {\n const focusableEl =\n event.relatedTarget === this.focusInputViewChild()?.nativeElement\n ? getFirstFocusableElement(this.overlayViewChild()?.overlayViewChild()?.nativeElement, ':not([data-p-hidden-focusable=\"true\"])')\n : this.focusInputViewChild()?.nativeElement;\n\n focus(focusableEl);\n }\n\n onLastHiddenFocus(event: FocusEvent) {\n const focusableEl =\n event.relatedTarget === this.focusInputViewChild()?.nativeElement ? getLastFocusableElement(this.overlayViewChild()?.overlayViewChild()?.nativeElement, ':not([data-p-hidden-focusable=\"true\"])') : this.focusInputViewChild()?.nativeElement;\n\n focus(focusableEl);\n }\n\n show() {\n this.overlayVisible.set(true);\n }\n\n hide(event?: any) {\n this.overlayVisible.set(false);\n this.resetFilter();\n\n this.onHide.emit(event);\n }\n\n clear(event: Event) {\n this._value.set(null);\n this.resetExpandedNodes();\n this.resetPartialSelected();\n this.onModelChange(this._value());\n this.onClear.emit(null);\n\n event.stopPropagation();\n }\n\n checkValue() {\n return this._value() !== null && isNotEmpty(this._value());\n }\n\n onTabKey(event: KeyboardEvent, pressedInInputText = false) {\n if (!pressedInInputText) {\n if (this.overlayVisible() && this.hasFocusableElements()) {\n focus(event.shiftKey ? this.lastHiddenFocusableElementOnOverlay()?.nativeElement : this.firstHiddenFocusableElementOnOverlay()?.nativeElement);\n\n event.preventDefault();\n } else {\n if (this.overlayVisible()) {\n this.hide(this.filter());\n }\n }\n }\n }\n\n hasFocusableElements() {\n return getFocusableElements(this.overlayViewChild()?.overlayViewChild()?.nativeElement, ':not([data-p-hidden-focusable=\"true\"])').length > 0;\n }\n\n resetFilter() {\n if (this.filter() && !this.resetFilterOnHide()) {\n this.filteredNodes = this.treeViewChild()?.filteredNodes();\n this.treeViewChild()?.resetFilter();\n } else {\n this.filterValue = null;\n }\n }\n\n updateTreeState() {\n if (this._value()) {\n let selectedNodes = this.selectionMode() === 'single' ? [this._value()] : [...this._value()];\n\n this.resetExpandedNodes();\n this.resetPartialSelected();\n\n if (selectedNodes && this._options()) {\n this.updateTreeBranchState(null, null, selectedNodes);\n }\n }\n }\n\n updateTreeBranchState(node: TreeNode | null, path: any, selectedNodes: TreeNode[]) {\n if (node) {\n if (this.isSelected(node)) {\n this.expandPath(path);\n selectedNodes.splice(selectedNodes.indexOf(node), 1);\n }\n\n if (selectedNodes.length > 0 && node.children) {\n for (let childNode of node.children) {\n this.updateTreeBranchState(childNode, [...path, node], selectedNodes);\n }\n }\n } else {\n for (let childNode of this._options() as TreeNode[]) {\n this.updateTreeBranchState(childNode, [], selectedNodes);\n }\n }\n }\n\n expandPath(expandedNodes: TreeNode[]) {\n for (let node of expandedNodes) {\n node.expanded = true;\n }\n\n this.expandedNodes = [...expandedNodes];\n }\n\n nodeExpand(event: { originalEvent: Event; node: TreeNode }) {\n this.onNodeExpand.emit(event);\n this.expandedNodes.push(event.node);\n setTimeout(() => {\n this.overlayViewChild()?.alignOverlay();\n });\n }\n\n nodeCollapse(event: { originalEvent: Event; node: TreeNode }) {\n this.onNodeCollapse.emit(event);\n this.expandedNodes.splice(this.expandedNodes.indexOf(event.node), 1);\n setTimeout(() => {\n this.overlayViewChild()?.alignOverlay();\n });\n }\n\n resetExpandedNodes() {\n for (let node of this.expandedNodes) {\n node.expanded = false;\n }\n\n this.expandedNodes = [];\n }\n\n resetPartialSelected(nodes = this._options()): void {\n if (!nodes) {\n return;\n }\n\n for (let node of nodes) {\n node.partialSelected = false;\n\n if (node.children && node.children?.length > 0) {\n this.resetPartialSelected(node.children);\n }\n }\n }\n\n findSelectedNodes(node: TreeNode, keys: any[], selectedNodes: TreeNode[]) {\n if (node) {\n if (this.isSelected(node)) {\n selectedNodes.push(node);\n delete keys[node.key as any];\n }\n\n if (Object.keys(keys).length && node.children) {\n for (let childNode of node.children) {\n this.findSelectedNodes(childNode, keys, selectedNodes);\n }\n }\n } else {\n for (let childNode of this._options() as TreeNode[]) {\n this.findSelectedNodes(childNode, keys, selectedNodes);\n }\n }\n }\n\n isSelected(node: TreeNode) {\n return this.findIndexInSelection(node) != -1;\n }\n\n findIndexInSelection(node: TreeNode) {\n let index: number = -1;\n const value = this._value();\n\n if (value) {\n if (this.selectionMode() === 'single') {\n let areNodesEqual = (value.key && value.key === node.key) || value == node;\n\n index = areNodesEqual ? 0 : -1;\n } else {\n for (let i = 0; i < value.length; i++) {\n let selectedNode = value[i];\n let areNodesEqual = (selectedNode.key && selectedNode.key === node.key) || selectedNode == node;\n\n if (areNodesEqual) {\n index = i;\n break;\n }\n }\n }\n }\n\n return index;\n }\n\n onSelect(event: TreeNodeSelectEvent) {\n this.onNodeSelect.emit(event);\n\n if (this.selectionMode() === 'single') {\n this.hide();\n this.focusInputViewChild()?.nativeElement.focus();\n }\n }\n\n onUnselect(event: TreeNodeUnSelectEvent) {\n this.onNodeUnselect.emit(event);\n }\n\n onInputFocus(event: Event) {\n if (this.$disabled()) {\n // For ScreenReaders\n return;\n }\n\n this.focused.set(true);\n this.onFocus.emit(event);\n }\n\n onInputBlur(event: Event) {\n this.focused.set(false);\n this.onBlur.emit(event);\n this.onModelTouched();\n }\n\n /**\n * @override\n *\n * @see {@link BaseEditableHolder.writeControlValue}\n * Writes the value to the control.\n */\n writeControlValue(value: any): void {\n this._value.set(value);\n this.updateTreeState();\n }\n}\n\n@NgModule({\n imports: [TreeSelect, SharedModule],\n exports: [TreeSelect, SharedModule]\n})\nexport class TreeSelectModule {}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAIA,MAAM,eAAe,EACjB,OAAO,EAAE,gBAAgB,EAAE,UAAU,SAAS,UAAS,MAAO,SAAS,aAAa,OAAS,GAChG;AAED,MAAM,UAAU;CACZ,OAAO,EAAE,eAAe,CACpB,2CACA;EACI,6BAA6B,SAAS,QAAO,MAAO;EACpD,cAAc,SAAS,UAAS;EAChC,aAAa,SAAS,QAAO;EAC7B,WAAW,SAAS,QAAO;EAC3B,oBAAoB,SAAS,SAAQ,MAAO;EAC5C,yBAAyB,CAAC,SAAS,WAAU;EAC7C,wBAAwB,SAAS,QAAO,KAAM,SAAS,eAAc;EACrE,qBAAqB,SAAS,eAAc;EAC5C,sBAAsB,SAAS;EAC/B,mCAAmC,SAAS,KAAI,MAAO;EACvD,mCAAmC,SAAS,KAAI,MAAO;CAC1D,CACJ;CACD,gBAAgB;CAChB,QAAQ,EAAE,eAAe,CACrB,sBACA;EACI,iBAAiB,SAAS,MAAK,MAAO,SAAS,YAAW;EAC1D,4BAA4B,CAAC,SAAS,YAAW,KAAM,SAAS,WAAU;CAC7E,CACJ;CACD,WAAW;CACX,MAAM;CACN,QAAQ;CACR,UAAU;CACV,cAAc;CACd,OAAO;CACP,eAAe;CACf,cAAc;AACjB;AAGD,IAAa,kBAAb,MAAa,wBAAwB,UAAS;CAC1C,OAAO;CAEP,QAAQ;CAER,UAAU;CAEV,eAAe;CAPN,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAe,MAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAf,OAAA,QAAA,GAAA,sBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;CAAe,CAAA;;AAAf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAe,YAAA,CAAA,EAD3B,MAAA,WAAA,CAAA;;AAoBD,IAAY;CAAZ,SAAY,mBAAiB;CAIzB,kBAAA,UAAA;CAIA,kBAAA,oBAAA;CAIA,kBAAA,WAAA;CAIA,kBAAA,cAAA;CAIA,kBAAA,eAAA;CAIA,kBAAA,YAAA;CAIA,kBAAA,cAAA;CAIA,kBAAA,kBAAA;CAIA,kBAAA,WAAA;CAIA,kBAAA,mBAAA;CAIA,kBAAA,kBAAA;AACJ,EAAA,CA7CY,sBAAA,oBAAiB,CAAA,EAAA;ACX7B,MAAa,4BAAiC;CAC1C,SAAS;CACT,aAAa,iBAAiB,UAAU;CACxC,OAAO;AACV;AAED,MAAM,sBAAsB,IAAI,eAA2B,qBAAqB;AAqMhF,IAAa,aAAb,MAAa,mBAAmB,mBAAyC;CACrE,gBAAgB;CAEhB,gBAAwC,OAAO,qBAAqB;EAAE,UAAU;EAAM,UAAU;CAAI,CAAE,KAAK;CAE3G,wBAAwB,OAAO,MAAM,EAAE,MAAM,KAAI,CAAE;CAEnD,kBAAkB,OAAO,eAAe;CAMxC,UAAU,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAKzB,eAAe,MAAc,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAKrC,mBAAmB,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,mBAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAK7D,UAAU,MAAyB,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAK3C,gBAAgB,MAA+B,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CAKxD,WAAW,MAAc,KAAI,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAK7B,YAAY,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAK3B,iBAAiB,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;CAKhC,cAAc,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAK7B,aAAa,MAAmE,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAKhF,aAAa,MAAsB,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAKnC,kBAAkB,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;CAKjC,aAAa,MAAsB,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAKnC,kBAAkB,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;CAKjC,iBAAiB,MAAuB,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;CAKxC,eAAe,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAKhC,SAAS,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,SAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAKnD,WAAW,MAAc,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAKjC,aAAa,MAAc,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAKrC,oBAAoB,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,oBAAA,CAAA,+BAAA,CAAA,CAAA;CAKnC,eAAe,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAK9B,uBAAuB,MAAM,MAAI;EAAA,GAAA,YAAA,EAAA,WAAA,uBAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAKhE,yBAAyB,MAAM,MAAI;EAAA,GAAA,YAAA,EAAA,WAAA,yBAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAKlE,uBAAuB,MAAM,MAAI;EAAA,GAAA,YAAA,EAAA,WAAA,uBAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAKhE,YAAY,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,YAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAKtD,oBAAoB,MAAM,MAAI;EAAA,GAAA,YAAA,EAAA,WAAA,oBAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAK7D,gBAAgB,MAAM,QAAS;EAAA,GAAA,YAAA,EAAA,WAAA,gBAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAK9D,wBAAwB,MAAM,QAAS;EAAA,GAAA,YAAA,EAAA,WAAA,wBAAA,+BAAA,CAAA;EAAI,WAAW;CAAe,CAAA;CAKrE,uBAAuB,MAAwB,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,uBAAA,CAAA,+BAAA,CAAA,CAAA;CAK/C,YAAY,MAAM,QAAS;EAAA,GAAA,YAAA,EAAA,WAAA,YAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAM1D,UAAU,MAAmB,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAK7B,UAAU,MAAM,QAAS;EAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAKxD,cAAc,MAA6B,QAAO,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAMlD,OAAO,MAAkB,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAMzB,UAAU,MAAqB,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAM/B,QAAQ,MAAM,QAAS;EAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAMtD,WAAW,MAAgB,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAKrC,gBAAgB,MAAiC,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CAO3D,eAAe,OAAM;CAMrB,iBAAiB,OAAM;CAMvB,SAAS,OAAM;CAMf,SAAS,OAAM;CAKf,UAAU,OAAM;CAKhB,WAAW,OAAM;CAMjB,UAAU,OAAM;CAMhB,SAAS,OAAM;CAMf,iBAAiB,OAAM;CAMvB,eAAe,OAAM;CAErB,YAAY,eAAe,KAAK,SAAQ,KAAM,KAAK,OAAO,gBAAe,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAE5E,sBAAsB,UAAsB,cAAa,GAAA,YAAA,CAAA,EAAA,WAAA,sBAAA,CAAA,+BAAA,CAAA,CAAA;CAEzD,kBAAkB,UAAsB,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;CAEjD,gBAAgB,UAAgB,QAAO,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CAEvC,UAAU,UAAsB,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAExC,mBAAmB,UAAmB,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;CAEhD,uCAAuC,UAAsB,0BAAyB,GAAA,YAAA,CAAA,EAAA,WAAA,uCAAA,CAAA,+BAAA,CAAA,CAAA;CAEtF,sCAAsC,UAAsB,yBAAwB,GAAA,YAAA,CAAA,EAAA,WAAA,sCAAA,CAAA,+BAAA,CAAA,CAAA;CAEpF,WAAW,eAAe,KAAK,QAAO,KAAM,KAAK,OAAO,aAAY,KAAM,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAEpF,UAAwB,OAAO,OAAO;EAAE,UAAU;EAAM,MAAM;EAAM,UAAU;CAAI,CAAE;CAEpF,IAAI,WAAQ;EACR,OAAO,KAAK,MAAK,KAAM,CAAC,CAAC,KAAK;CAClC;CAEO;CAEP,cAAgC;CAEhC;CAQA,gBAAgB,aAA0D,SAAO;EAAA,GAAA,YAAA,EAAA,WAAA,gBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAQvG,iBAAiB,aAA2D,UAAQ;EAAA,GAAA,YAAA,EAAA,WAAA,iBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAM1G,gBAAgB,aAAgC,SAAO;EAAA,GAAA,YAAA,EAAA,WAAA,gBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAQ7E,iBAAiB,aAA2D,UAAQ;EAAA,GAAA,YAAA,EAAA,WAAA,iBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAM1G,oBAAoB,aAAgC,aAAW;EAAA,GAAA,YAAA,EAAA,WAAA,oBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAMrF,sBAAsB,aAAgC,eAAa;EAAA,GAAA,YAAA,EAAA,WAAA,sBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAMzF,uBAAuB,aAAgC,gBAAc;EAAA,GAAA,YAAA,EAAA,WAAA,uBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAM3F,qBAAqB,aAAgC,cAAY;EAAA,GAAA,YAAA,EAAA,WAAA,qBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAMvF,oBAAoB,aAAgC,aAAW;EAAA,GAAA,YAAA,EAAA,WAAA,oBAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAQrF,0BAA0B,aAAoE,mBAAiB;EAAA,GAAA,YAAA,EAAA,WAAA,0BAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAQrI,2BAA2B,aAAqE,oBAAkB;EAAA,GAAA,YAAA,EAAA,WAAA,2BAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAMxI,0BAA0B,aAAgC,mBAAiB;EAAA,GAAA,YAAA,EAAA,WAAA,0BAAA,+BAAA,CAAA;EAAI,aAAa;CAAK,CAAA;CAEjG,UAAU,OAAgB,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAEhC,iBAAiB,OAAgB,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;CAEvC,SAAS,OAAY,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAE/B,gBAAuB,CAAA;CAEvB,WAAW,OAA+B,QAAU,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAEpD,SAAiB;CAEjB,uBAAuB,gBAAgB;EAAE,WAAW,KAAK,OAAM;EAAI,aAAa,KAAK,YAAW;CAAE,IAAI,GAAA,YAAA,CAAA,EAAA,WAAA,uBAAA,CAAA,+BAAA,CAAA,CAAA;CAEtG,wBAAwB,gBAAgB;EAAE,WAAW,KAAK,OAAM;EAAI,SAAS,KAAK,SAAQ;CAAE,IAAI,GAAA,YAAA,CAAA,EAAA,WAAA,wBAAA,CAAA,+BAAA,CAAA,CAAA;CAEhG,wBAAwB,gBAAgB;EAAE,WAAW,KAAK,OAAM;EAAI,SAAS,KAAK,SAAQ;CAAE,IAAI,GAAA,YAAA,CAAA,EAAA,WAAA,wBAAA,CAAA,+BAAA,CAAA,CAAA;CAEhG,QAAQ,eAAc;EAClB,MAAM,QAAQ,KAAK,OAAM,KAAM,CAAA;EAE/B,OAAO,MAAM,SAAS,MAAM,KAAK,SAAmB,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,cAAa,MAAO,YAAY,KAAK,OAAM,IAAK,KAAK,OAAM,CAAE,CAAC,QAAQ,KAAK,YAAW;CAC5K,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAEF,aAAa,eAAe,CAAC,KAAK,OAAM,KAAM,OAAO,KAAK,KAAK,OAAM,CAAE,CAAC,CAAC,WAAW,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAEtF,eAAe,eAAe,CAAC,KAAK,SAAQ,KAAM,KAAK,SAAQ,CAAG,CAAC,WAAW,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAEhF,qBAAqB,eAAgB,KAAK,UAAS,IAAK,KAAK,QAAW,GAAA,YAAA,CAAA,EAAA,WAAA,qBAAA,CAAA,+BAAA,CAAA,CAAA;CAExE,iBAAiB,eAAgB,CAAC,KAAK,UAAS,IAAK,KAAK,SAAQ,IAAK,MAAM,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;CAE7E,gBAAgB,eAAgB,KAAK,eAAc,IAAK,KAAK,SAAS,MAAM,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CAE5E,gBAAgB,eAAe,KAAK,eAAc,KAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;CAE9D,kBAAkB,eAAc;EAC5B,MAAM,YAAY,KAAK,UAAS;EAChC,MAAM,QAAQ,KAAK,MAAK;EAExB,OAAO,cAAc,UAAU,iBAAiB,SAAY;CAChE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;CAEF,iBAAiB,eAAe,KAAK,WAAU,KAAM,CAAC,KAAK,UAAS,KAAM,KAAK,UAAS,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;CAE3F,2BAA2B,eAAe,CAAC,KAAK,oBAAmB,KAAM,CAAC,KAAK,qBAAoB,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,2BAAA,CAAA,+BAAA,CAAA,CAAA;CAEtG,wBAAwB,eAAe,KAAK,oBAAmB,KAAM,KAAK,qBAAoB,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,wBAAA,CAAA,+BAAA,CAAA,CAAA;CAEjG,aAAa,eAAe,KAAK,MAAK,KAAM,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAEpD,mBAAmB,eAAe,KAAK,YAAW,KAAM,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;CAEhE,sBAAsB,eAAc;EAChC,IAAI,CAAC,KAAK,cAAa,GACnB,OAAO,EAAE,cAAc,KAAK,aAAY,EAAE;EAG9C,MAAM,SAAS,KAAK,qBAAoB,CAAE,EAAE,gBAAgB,KAAK,aAAY;EAE7E,OAAO;GAAE;GAAQ,cAAc;GAAQ,UAAU;EAAQ;CAC7D,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,sBAAA,CAAA,+BAAA,CAAA,CAAA;CAEF,cAAA;EACI,MAAK;EAGL,aAAY;GACR,MAAM,OAAO,KAAK,QAAO;GAEzB,gBAAe;IACX,KAAK,SAAS,IAAI,IAAI;IACtB,KAAK,gBAAe;GACxB,CAAC;EACL,CAAC;CACL;CAEA,qBAAkB;EACd,KAAK,sBAAsB,SAAS,KAAK,KAAK,CAAC,QAAQ,MAAM,CAAC,CAAC;CACnE;CAEA,SAAM;EACF,KAAK,SAAS,KAAK,QAAQ,IAAI;EAC/B,KAAK,gBAAe;CACxB;CAEA,uBAAoB;EAChB,IAAI,KAAK,OAAM,GAAI;GACf,IAAI,WAAW,KAAK,WAAW,GAC3B,KAAK,cAAa,CAAE,EAAE,QAAa,KAAK,WAAW;GAGvD,IAAI,KAAK,qBAAoB,GACzB,KAAK,gBAAe,CAAE,EAAE,cAAc,MAAK;EAEnD,OAAO;GACH,IAAI,oBAAyB,qBAAqB,KAAK,QAAO,CAAE,EAAE,aAAa;GAE/E,IAAI,qBAAqB,kBAAkB,SAAS,GAChD,kBAAkB,EAAE,CAAC,MAAK;EAElC;CACJ;CAEA,sBAAmB;EACf,IAAI,oBAAyB,qBAAqB,KAAK,GAAG,aAAa;EAEvE,IAAI,qBAAqB,kBAAkB,SAAS,GAChD,kBAAkB,EAAE,CAAC,MAAK;CAElC;CAEA,kBAAkB,OAAU;EACxB,KAAK,OAAO,IAAI,KAAK;EACrB,KAAK,cAAc,KAAK,OAAM,CAAE;CACpC;CAEA,QAAQ,OAAU;EACd,IAAI,KAAK,UAAS,GACd;EAGJ,MAAM,UAAU,MAAM,QAAQ,eAAe,iBAAiB;EAE9D,IAAI,MAAM,QAAQ,UAAU,iCAA+B,GACvD;EAGJ,IAAI,CAAC,KAAK,iBAAgB,CAAE,EAAE,IAAI,eAAe,SAAS,MAAM,MAAM,KAAK,YAAY,SAAS,YAAY,QAAQ;GAChH,IAAI,KAAK,eAAc,GACnB,KAAK,KAAI;QAET,KAAK,KAAI;GAGb,KAAK,oBAAmB,CAAE,EAAE,cAAc,MAAK;EACnD;CACJ;CAEA,UAAU,OAAoB;EAC1B,QAAQ,MAAM,MAAd;GAEI,KAAK;IACD,IAAI,CAAC,KAAK,eAAc,GAAI;KACxB,KAAK,KAAI;KACT,MAAM,eAAc;IACxB;IAEA,KAAK,YAAY,KAAK;IACtB,MAAM,eAAc;IACpB;GAGJ,KAAK;GACL,KAAK;IACD,IAAI,CAAC,KAAK,eAAc,GAAI;KACxB,KAAK,KAAI;KACT,MAAM,eAAc;IACxB;IAEA;GAGJ,KAAK;IACD,IAAI,KAAK,eAAc,GAAI;KACvB,KAAK,KAAI;KACT,KAAK,oBAAmB,CAAE,EAAE,cAAc,MAAK;KAC/C,MAAM,eAAc;IACxB;IAEA;GAGJ,KAAK,OACD,KAAK,SAAS,KAAK;EAK3B;CACJ;CAEA,cAAc,OAAY;EACtB,KAAK,cAAe,MAAM,OAA4B;EACtD,KAAK,cAAa,CAAE,EAAE,QAAQ,KAAK,WAAW;EAC9C,KAAK,SAAS,KAAK;GACf,QAAQ,KAAK;GACb,eAAe,KAAK,cAAa,CAAE,EAAE,cAAa;EACrD,CAAA;EACD,iBAAgB;GACZ,KAAK,iBAAgB,CAAE,EAAE,aAAY;EACzC,CAAC;CACL;CAEA,YAAY,OAAoB;EAC5B,IAAI,KAAK,eAAc,KAAM,KAAK,QAAO,CAAE,EAAE,eAAe;GACxD,IAAI,oBAAyB,qBAAqB,KAAK,QAAO,CAAG,CAAC,eAAe,4BAA0B;GAE3G,IAAI,qBAAqB,kBAAkB,SAAS,GAChD,kBAAkB,EAAE,CAAC,MAAK;GAG9B,MAAM,eAAc;EACxB;CACJ;CAEA,mBAAmB,OAAiB;EAChC,MAAM,cACF,MAAM,kBAAkB,KAAK,oBAAmB,CAAE,EAAE,gBAC9C,yBAAyB,KAAK,iBAAgB,CAAE,EAAE,iBAAgB,CAAE,EAAE,eAAe,0CAAwC,IAC7H,KAAK,oBAAmB,CAAE,EAAE;EAEtC,MAAM,WAAW;CACrB;CAEA,kBAAkB,OAAiB;EAC/B,MAAM,cACF,MAAM,kBAAkB,KAAK,oBAAmB,CAAE,EAAE,gBAAgB,wBAAwB,KAAK,iBAAgB,CAAE,EAAE,iBAAgB,CAAE,EAAE,eAAe,0CAAwC,IAAI,KAAK,oBAAmB,CAAE,EAAE;EAEpO,MAAM,WAAW;CACrB;CAEA,OAAI;EACA,KAAK,eAAe,IAAI,IAAI;CAChC;CAEA,KAAK,OAAW;EACZ,KAAK,eAAe,IAAI,KAAK;EAC7B,KAAK,YAAW;EAEhB,KAAK,OAAO,KAAK,KAAK;CAC1B;CAEA,MAAM,OAAY;EACd,KAAK,OAAO,IAAI,IAAI;EACpB,KAAK,mBAAkB;EACvB,KAAK,qBAAoB;EACzB,KAAK,cAAc,KAAK,OAAM,CAAE;EAChC,KAAK,QAAQ,KAAK,IAAI;EAEtB,MAAM,gBAAe;CACzB;CAEA,aAAU;EACN,OAAO,KAAK,OAAM,MAAO,QAAQ,WAAW,KAAK,OAAM,CAAE;CAC7D;CAEA,SAAS,OAAsB,qBAAqB,OAAK;EACrD,IAAI,CAAC,oBAAoB;GACrB,IAAI,KAAK,eAAc,KAAM,KAAK,qBAAoB,GAAI;IACtD,MAAM,MAAM,WAAW,KAAK,oCAAmC,CAAE,EAAE,gBAAgB,KAAK,qCAAoC,CAAE,EAAE,aAAa;IAE7I,MAAM,eAAc;GACxB,OACI,IAAI,KAAK,eAAc,GACnB,KAAK,KAAK,KAAK,OAAM,CAAE;EAGnC;CACJ;CAEA,uBAAoB;EAChB,OAAO,qBAAqB,KAAK,iBAAgB,CAAE,EAAE,iBAAgB,CAAE,EAAE,eAAe,0CAAwC,CAAC,CAAC,SAAS;CAC/I;CAEA,cAAW;EACP,IAAI,KAAK,OAAM,KAAM,CAAC,KAAK,kBAAiB,GAAI;GAC5C,KAAK,gBAAgB,KAAK,cAAa,CAAE,EAAE,cAAa;GACxD,KAAK,cAAa,CAAE,EAAE,YAAW;EACrC,OACI,KAAK,cAAc;CAE3B;CAEA,kBAAe;EACX,IAAI,KAAK,OAAM,GAAI;GACf,IAAI,gBAAgB,KAAK,cAAa,MAAO,WAAW,CAAC,KAAK,OAAM,CAAE,IAAI,CAAC,GAAG,KAAK,OAAM,CAAE;GAE3F,KAAK,mBAAkB;GACvB,KAAK,qBAAoB;GAEzB,IAAI,iBAAiB,KAAK,SAAQ,GAC9B,KAAK,sBAAsB,MAAM,MAAM,aAAa;EAE5D;CACJ;CAEA,sBAAsB,MAAuB,MAAW,eAAyB;EAC7E,IAAI,MAAM;GACN,IAAI,KAAK,WAAW,IAAI,GAAG;IACvB,KAAK,WAAW,IAAI;IACpB,cAAc,OAAO,cAAc,QAAQ,IAAI,GAAG,CAAC;GACvD;GAEA,IAAI,cAAc,SAAS,KAAK,KAAK,UACjC,KAAK,IAAI,aAAa,KAAK,UACvB,KAAK,sBAAsB,WAAW,CAAC,GAAG,MAAM,IAAI,GAAG,aAAa;EAGhF,OACI,KAAK,IAAI,aAAa,KAAK,SAAQ,GAC/B,KAAK,sBAAsB,WAAW,CAAA,GAAI,aAAa;CAGnE;CAEA,WAAW,eAAyB;EAChC,KAAK,IAAI,QAAQ,eACb,KAAK,WAAW;EAGpB,KAAK,gBAAgB,CAAC,GAAG,aAAa;CAC1C;CAEA,WAAW,OAA+C;EACtD,KAAK,aAAa,KAAK,KAAK;EAC5B,KAAK,cAAc,KAAK,MAAM,IAAI;EAClC,iBAAgB;GACZ,KAAK,iBAAgB,CAAE,EAAE,aAAY;EACzC,CAAC;CACL;CAEA,aAAa,OAA+C;EACxD,KAAK,eAAe,KAAK,KAAK;EAC9B,KAAK,cAAc,OAAO,KAAK,cAAc,QAAQ,MAAM,IAAI,GAAG,CAAC;EACnE,iBAAgB;GACZ,KAAK,iBAAgB,CAAE,EAAE,aAAY;EACzC,CAAC;CACL;CAEA,qBAAkB;EACd,KAAK,IAAI,QAAQ,KAAK,eAClB,KAAK,WAAW;EAGpB,KAAK,gBAAgB,CAAA;CACzB;CAEA,qBAAqB,QAAQ,KAAK,SAAQ,GAAE;EACxC,IAAI,CAAC,OACD;EAGJ,KAAK,IAAI,QAAQ,OAAO;GACpB,KAAK,kBAAkB;GAEvB,IAAI,KAAK,YAAY,KAAK,UAAU,SAAS,GACzC,KAAK,qBAAqB,KAAK,QAAQ;EAE/C;CACJ;CAEA,kBAAkB,MAAgB,MAAa,eAAyB;EACpE,IAAI,MAAM;GACN,IAAI,KAAK,WAAW,IAAI,GAAG;IACvB,cAAc,KAAK,IAAI;IACvB,OAAO,KAAK,KAAK;GACrB;GAEA,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,UAAU,KAAK,UACjC,KAAK,IAAI,aAAa,KAAK,UACvB,KAAK,kBAAkB,WAAW,MAAM,aAAa;EAGjE,OACI,KAAK,IAAI,aAAa,KAAK,SAAQ,GAC/B,KAAK,kBAAkB,WAAW,MAAM,aAAa;CAGjE;CAEA,WAAW,MAAc;EACrB,OAAO,KAAK,qBAAqB,IAAI,KAAK;CAC9C;CAEA,qBAAqB,MAAc;EAC/B,IAAI,QAAgB;EACpB,MAAM,QAAQ,KAAK,OAAM;EAEzB,IAAI,OAAO;GACP,IAAI,KAAK,cAAa,MAAO,UAGzB,QAFqB,MAAM,OAAO,MAAM,QAAQ,KAAK,OAAQ,SAAS,OAE9C,IAAI;QAE5B,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;IACnC,IAAI,eAAe,MAAM;IAGzB,IAFqB,aAAa,OAAO,aAAa,QAAQ,KAAK,OAAQ,gBAAgB,MAExE;KACf,QAAQ;KACR;IACJ;GACJ;EAER;EAEA,OAAO;CACX;CAEA,SAAS,OAA0B;EAC/B,KAAK,aAAa,KAAK,KAAK;EAE5B,IAAI,KAAK,cAAa,MAAO,UAAU;GACnC,KAAK,KAAI;GACT,KAAK,oBAAmB,CAAE,EAAE,cAAc,MAAK;EACnD;CACJ;CAEA,WAAW,OAA4B;EACnC,KAAK,eAAe,KAAK,KAAK;CAClC;CAEA,aAAa,OAAY;EACrB,IAAI,KAAK,UAAS,GAEd;EAGJ,KAAK,QAAQ,IAAI,IAAI;EACrB,KAAK,QAAQ,KAAK,KAAK;CAC3B;CAEA,YAAY,OAAY;EACpB,KAAK,QAAQ,IAAI,KAAK;EACtB,KAAK,OAAO,KAAK,KAAK;EACtB,KAAK,eAAc;CACvB;CAQA,kBAAkB,OAAU;EACxB,KAAK,OAAO,IAAI,KAAK;EACrB,KAAK,gBAAe;CACxB;CA9yBS,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAU,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAV,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAU,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,kBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,eAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,WAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,gBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,iBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,iBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,gBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,mBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,sBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,wBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,sBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,WAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,mBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,eAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,uBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,sBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,WAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,eAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA;GAAA,cAAA;GAAA,gBAAA;GAAA,QAAA;GAAA,QAAA;GAAA,SAAA;GAAA,UAAA;GAAA,SAAA;GAAA,QAAA;GAAA,gBAAA;GAAA,cAAA;EAAA;EAAA,MAAA;GAAA,WAAA,EAAA,aAAA,kBAAA;GAAA,YAAA;IAAA,SAAA;IAAA,SAAA;GAAA;EAAA;EAAA,WAnBR;GACP;GACA;GACA;IACI,SAAS;IACT,aAAa;GAChB;GACD;IACI,SAAS;IACT,aAAa;GAChB;EACJ;EAAA,SAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,OAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,QAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,OAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,QAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,WAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,aAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,cAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,YAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,WAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,iBAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,kBAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,iBAAA;IAAA,UAAA;GAAA;EAAA;EAAA,aAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,YAAA;IAAA,aAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,QAAA;IAAA,aAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,MAAA;IAAA,aAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,OAAA;IAAA,aAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,SAAA;IAAA,aAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,wBAAA;IAAA,aAAA;IAAA,UAAA;GAAA;GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,uBAAA;IAAA,aAAA;IAAA,UAAA;GAAA;EAAA;EAAA,iBAAA;EAAA,gBAAA,CAAA,EAAA,WAAA,GAAA,KAAA,CAAA;EAAA,UAAA;EAAA,UAlLS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqKT,UAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MAvKS;IAAgB,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAO,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;GAAY;GAAA;IAAA,MAAA;IAAA,MAAE;IAAI,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAS,UAAA;IAAA,QAAA,CAAA,YAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAEA;IAAS,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAEC;IAAe,UAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAI,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;IAAA,SAAA,CAAA,YAAA,cAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAI,UAAA;IAAA,QAAA,CAAA,OAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;EAAA,eAAA,GAAA,kBAAA;CAAA,CAAA;;AA4LjG,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAU,YAAA,CAAA;EA/LtB,MAAA;EAAU,MAAA,CAAA;GACP,UAAU;GACV,YAAY;GACZ,SAAS;IAAC;IAAkB;IAAS;IAAc;IAAM;IAAWD;IAAWC;IAAiB;IAAM;GAAI;GAC1G,gBAAgB,CAAC,IAAI;GACrB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsKV,iBAAiB,wBAAwB;GACzC,WAAW;IACP;IACA;IACA;KACI,SAAS;KACT,aAAW;IACd;IACD;KACI,SAAS;KACT,aAAW;IACd;GACJ;GACD,eAAe,kBAAkB;GACjC,MAAM;IACF,WAAW;IACX,WAAW;IACX,eAAe;GAClB;EACJ,CAAA;CA2Q+C,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,kBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,aAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,iBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,iBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,mBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,sBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,wBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,sBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,mBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,uBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,sBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,aAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,MAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,cAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,gBAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,QAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,QAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,SAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,UAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,SAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,QAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,gBAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,cAAA;EAAA,CAAA;EAAA,qBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,cAAY,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,iBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAEhB,UAAQ,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAEhB,QAAM,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAEN,SAAO,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,kBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAED,WAAS,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,sCAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAEc,0BAAwB,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,qCAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAEzB,yBAAuB,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAsBT,SAAO;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAQ7B,UAAQ;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAM5D,SAAO;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,gBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAQH,UAAQ;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,mBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAMxD,aAAW;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,qBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAMjC,eAAa;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,sBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAMpC,gBAAc;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,oBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAMxC,cAAY;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,mBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAMrC,aAAW;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,yBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAQO,mBAAiB;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,0BAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAQvC,oBAAkB;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,yBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAMhF,mBAAiB;IAAI,aAAa;IAAO,UAAA;GAAA,CAAA;EAAA,CAAA;CAAA;AAAA,CAAA;AA+bvG,IAAa,mBAAb,MAAa,iBAAgB;CAAhB,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAhB,OAAA,OAAA,GAAA,oBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgB,SAAA,CArzBhB,YAkzBa,YAAY;EAAA,SAAA,CAlzBzB,YAmzBa,YAAY;CAAA,CAAA;CAEzB,OAAA,OAAA,GAAA,oBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgB,SAAA;GAHf;GAAY;GACA;EAAY;CAAA,CAAA;;AAEzB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAJ5B,MAAA;EAAS,MAAA,CAAA;GACN,SAAS,CAAC,YAAY,YAAY;GAClC,SAAS,CAAC,YAAY,YAAY;EACrC,CAAA"}