react-grab 0.1.29 → 0.1.30

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 (438) hide show
  1. package/README.md +2 -5
  2. package/dist/core/index.cjs +9 -1
  3. package/dist/core/index.d.cts +11 -3
  4. package/dist/core/index.d.ts +11 -3
  5. package/dist/core/index.js +9 -1
  6. package/dist/core--H_JZk7a.js +16 -0
  7. package/dist/core-1AoeBJ2R.cjs +4386 -0
  8. package/dist/core-4VC4A94S.js +4249 -0
  9. package/dist/core-5Q_6LVh_.cjs +16 -0
  10. package/dist/core-6sOn3YNs.js +16 -0
  11. package/dist/core-B3FYVaHv.cjs +16 -0
  12. package/dist/core-B3I0upO1.js +4250 -0
  13. package/dist/core-B3ndcALq.cjs +4386 -0
  14. package/dist/core-B9GWVp1Q.js +16 -0
  15. package/dist/core-BGIMywNa.js +16 -0
  16. package/dist/core-BGK4C6ju.js +16 -0
  17. package/dist/core-BGXprTx7.cjs +16 -0
  18. package/dist/core-BKt5SHzo.js +16 -0
  19. package/dist/core-BMObVYUv.cjs +16 -0
  20. package/dist/core-BNMx90Sn.js +16 -0
  21. package/dist/core-BWQ6C5g9.js +4268 -0
  22. package/dist/core-BcwRbSfO.js +16 -0
  23. package/dist/core-Be-1ubQn.cjs +16 -0
  24. package/dist/core-BfpPi7c6.cjs +16 -0
  25. package/dist/core-BiIoWLRk.js +16 -0
  26. package/dist/core-BjpyJHlW.js +16 -0
  27. package/dist/core-Bqf3D4Ra.cjs +16 -0
  28. package/dist/core-Bs0wekHY.cjs +4284 -0
  29. package/dist/core-Bvqgv6Zr.js +16 -0
  30. package/dist/core-Bw0-Cecq.cjs +16 -0
  31. package/dist/core-BzRpJ5QI.cjs +4284 -0
  32. package/dist/core-C0ZgNdUR.cjs +4386 -0
  33. package/dist/core-C191WXKe.cjs +16 -0
  34. package/dist/core-C4yYleJn.js +16 -0
  35. package/dist/core-C758xgeI.js +16 -0
  36. package/dist/core-CAZ8ENTv.js +16 -0
  37. package/dist/core-CBUFmwfx.cjs +4386 -0
  38. package/dist/core-CDV48I9C.js +4249 -0
  39. package/dist/core-CGXCsSkm.js +4280 -0
  40. package/dist/core-CHsFU9FZ.js +16 -0
  41. package/dist/core-CJOQfSzq.js +4495 -0
  42. package/dist/core-CLW9tl4L.js +4249 -0
  43. package/dist/core-CP1yCnSB.js +16 -0
  44. package/dist/core-CRLyvQCt.cjs +16 -0
  45. package/dist/core-CZX3EijL.js +16 -0
  46. package/dist/core-Ccli-yLf.cjs +16 -0
  47. package/dist/core-Ce4pBUSh.js +16 -0
  48. package/dist/core-CgCGjXfB.cjs +16 -0
  49. package/dist/core-CiQl2PfF.cjs +16 -0
  50. package/dist/core-CnPpGWUc.js +16 -0
  51. package/dist/core-Co9954wQ.cjs +16 -0
  52. package/dist/core-Cr4qVf2a.js +16 -0
  53. package/dist/core-CrQCbm00.js +16 -0
  54. package/dist/core-CsCg35MW.js +16 -0
  55. package/dist/core-Cshs0orb.js +16 -0
  56. package/dist/core-CthjfoZX.cjs +16 -0
  57. package/dist/core-CtvavOAt.cjs +16 -0
  58. package/dist/core-CvoFTVjy.cjs +16 -0
  59. package/dist/core-CzE8I9NL.cjs +16 -0
  60. package/dist/core-CzGijRTx.js +16 -0
  61. package/dist/core-CzosrDdO.cjs +16 -0
  62. package/dist/core-D--fM7Xq.cjs +16 -0
  63. package/dist/core-D-UGQb_Z.cjs +16 -0
  64. package/dist/core-D0UqPwu_.cjs +16 -0
  65. package/dist/core-D2LzIluw.js +4495 -0
  66. package/dist/core-D4z4W-Qz.cjs +16 -0
  67. package/dist/core-D7NwJuzy.js +16 -0
  68. package/dist/core-DCqMIKkK.js +16 -0
  69. package/dist/core-DFrvwczh.cjs +4284 -0
  70. package/dist/core-DGxxKKPR.cjs +16 -0
  71. package/dist/core-DGyQeEXa.js +4495 -0
  72. package/dist/core-DH8Uvag-.js +4249 -0
  73. package/dist/core-DHZBYfsC.js +16 -0
  74. package/dist/core-DKVj078o.js +4249 -0
  75. package/dist/core-DMRsaGr7.js +16 -0
  76. package/dist/core-DRUnXCNA.cjs +16 -0
  77. package/dist/core-DRlG4zYm.cjs +16 -0
  78. package/dist/core-DSqJwwdV.cjs +4284 -0
  79. package/dist/core-DXqmRz53.cjs +16 -0
  80. package/dist/core-DcRxqPad.js +16 -0
  81. package/dist/core-DdNOX4pt.js +16 -0
  82. package/dist/core-Df7CMRnd.cjs +4315 -0
  83. package/dist/core-DiIZA6Hx.js +4495 -0
  84. package/dist/core-DiVnlonK.cjs +4284 -0
  85. package/dist/core-Dj1WV911.js +4495 -0
  86. package/dist/core-DjPDxMID.cjs +16 -0
  87. package/dist/core-DjcnHWor.cjs +16 -0
  88. package/dist/core-DkWjrEUZ.cjs +16 -0
  89. package/dist/core-Dq-CCsij.cjs +4303 -0
  90. package/dist/core-DsVAkMs2.js +16 -0
  91. package/dist/core-DueMb4P6.js +4249 -0
  92. package/dist/core-DvJt5JmX.js +16 -0
  93. package/dist/core-Dz8Hrc33.js +4249 -0
  94. package/dist/core-ESHKG2mL.cjs +4285 -0
  95. package/dist/core-Ij_B_RWV.cjs +16 -0
  96. package/dist/core-JyczI7kP.cjs +16 -0
  97. package/dist/core-K0XuILjf.cjs +4284 -0
  98. package/dist/core-N9HyYpZv.cjs +16 -0
  99. package/dist/core-PW2DC2Tb.js +4495 -0
  100. package/dist/core-Q84EBsQ8.cjs +16 -0
  101. package/dist/core-TSuD8D7m.js +16 -0
  102. package/dist/core-WN76m9V0.cjs +16 -0
  103. package/dist/core-YRKn-0AV.js +16 -0
  104. package/dist/core-fC6GdbUJ.js +16 -0
  105. package/dist/core-h5q7bqH-.cjs +4284 -0
  106. package/dist/core-hkgBRD_T.js +16 -0
  107. package/dist/core-k9l5c9Hk.cjs +16 -0
  108. package/dist/core-mNhkpUYQ.cjs +16 -0
  109. package/dist/core-qCvYE9Ox.cjs +4386 -0
  110. package/dist/core-rvs2FEMH.js +16 -0
  111. package/dist/core-sXzUCmoJ.js +16 -0
  112. package/dist/core-t7gaYHyj.cjs +4386 -0
  113. package/dist/core-thci-YqL.js +16 -0
  114. package/dist/core-xokESdbC.cjs +16 -0
  115. package/dist/core-yW0MN96-.cjs +16 -0
  116. package/dist/core-ydFCYlV4.js +16 -0
  117. package/dist/core-zQ4jjKHw.cjs +16 -0
  118. package/dist/extract-element-css-B-R_28uM.cjs +10 -0
  119. package/dist/extract-element-css-B732tro7.js +10 -0
  120. package/dist/extract-element-css-B9Xh1wUd.js +10 -0
  121. package/dist/extract-element-css-BGZPWnck.js +10 -0
  122. package/dist/extract-element-css-BIniUwQh.js +319 -0
  123. package/dist/extract-element-css-BOQUDYB3.cjs +10 -0
  124. package/dist/extract-element-css-BTzDGIs3.cjs +336 -0
  125. package/dist/extract-element-css-BWUnsvjZ.js +10 -0
  126. package/dist/extract-element-css-BceTcL6y.cjs +10 -0
  127. package/dist/extract-element-css-Bi1y8V4z.cjs +336 -0
  128. package/dist/extract-element-css-Bra6hEzg.js +319 -0
  129. package/dist/extract-element-css-BuJ3zqGO.js +10 -0
  130. package/dist/extract-element-css-C8lBuGP7.js +10 -0
  131. package/dist/extract-element-css-CBHVjrBq.cjs +10 -0
  132. package/dist/extract-element-css-CGxXdwim.js +10 -0
  133. package/dist/extract-element-css-CJx4cesM.js +10 -0
  134. package/dist/extract-element-css-CQBJAbFD.cjs +10 -0
  135. package/dist/extract-element-css-CQV8FsMB.cjs +10 -0
  136. package/dist/extract-element-css-CQx4Biqa.cjs +336 -0
  137. package/dist/extract-element-css-CTy2pRfA.js +10 -0
  138. package/dist/extract-element-css-CchtITXx.cjs +336 -0
  139. package/dist/extract-element-css-CjY9vDS6.js +10 -0
  140. package/dist/extract-element-css-ClnG20sN.cjs +10 -0
  141. package/dist/extract-element-css-CmMetO-q.cjs +10 -0
  142. package/dist/extract-element-css-CmOD6UeE.cjs +10 -0
  143. package/dist/extract-element-css-CnY9b0vB.js +10 -0
  144. package/dist/extract-element-css-CoQLNjVI.js +10 -0
  145. package/dist/extract-element-css-CqjmXl0Y.cjs +10 -0
  146. package/dist/extract-element-css-Cr29xtzW.cjs +10 -0
  147. package/dist/extract-element-css-CzNVoJEM.js +319 -0
  148. package/dist/extract-element-css-CzgC7nM9.cjs +10 -0
  149. package/dist/extract-element-css-D3Dy-3Qz.js +10 -0
  150. package/dist/extract-element-css-D5qqKVc-.cjs +10 -0
  151. package/dist/extract-element-css-D5zsPw09.cjs +10 -0
  152. package/dist/extract-element-css-D6UwJjf4.cjs +336 -0
  153. package/dist/extract-element-css-DEuA2W6G.js +10 -0
  154. package/dist/extract-element-css-DKkUiIlS.cjs +10 -0
  155. package/dist/extract-element-css-DM0EhhXw.cjs +10 -0
  156. package/dist/extract-element-css-DPA6C_o-.cjs +10 -0
  157. package/dist/extract-element-css-DU45xRGh.js +10 -0
  158. package/dist/extract-element-css-DUvYlz4T.js +10 -0
  159. package/dist/extract-element-css-DVDr5Tn6.cjs +10 -0
  160. package/dist/extract-element-css-Di9hCigW.js +319 -0
  161. package/dist/extract-element-css-DivFxCRt.js +319 -0
  162. package/dist/extract-element-css-DlDbU4YM.cjs +10 -0
  163. package/dist/extract-element-css-DsssOqcQ.cjs +10 -0
  164. package/dist/extract-element-css-EnvrIHtf.cjs +336 -0
  165. package/dist/extract-element-css-FI71J_KB.js +10 -0
  166. package/dist/extract-element-css-GdDDlzTf.js +10 -0
  167. package/dist/extract-element-css-U3MgLHty.cjs +10 -0
  168. package/dist/extract-element-css-U4oxl-UP.js +10 -0
  169. package/dist/extract-element-css-VyMIgOZy.js +10 -0
  170. package/dist/extract-element-css-XGv0WWIL.js +319 -0
  171. package/dist/extract-element-css-Y-x4luJL.cjs +10 -0
  172. package/dist/extract-element-css-Zz_CgLqY.js +319 -0
  173. package/dist/extract-element-css-_aFPl5y4.cjs +336 -0
  174. package/dist/extract-element-css-_uZRVqCT.cjs +10 -0
  175. package/dist/extract-element-css-i8nzXODQ.js +10 -0
  176. package/dist/extract-element-css-jh1iLRzJ.js +10 -0
  177. package/dist/extract-element-css-nkJQc3j1.js +10 -0
  178. package/dist/freeze-updates--K1ecmFi.cjs +44 -0
  179. package/dist/freeze-updates-1FTXgIdb.js +44 -0
  180. package/dist/freeze-updates-3QjTocF-.cjs +2267 -0
  181. package/dist/freeze-updates-81f5sY45.js +44 -0
  182. package/dist/freeze-updates-B1mPDmJB.js +44 -0
  183. package/dist/freeze-updates-B5h8teL6.cjs +44 -0
  184. package/dist/freeze-updates-BAYe0Nlx.js +44 -0
  185. package/dist/freeze-updates-BDhlBp3V.js +44 -0
  186. package/dist/freeze-updates-BGa9CqrW.cjs +2267 -0
  187. package/dist/freeze-updates-BQH6Y8E1.cjs +44 -0
  188. package/dist/freeze-updates-BQjWBzy4.cjs +53 -0
  189. package/dist/freeze-updates-BSOSfpXo.js +44 -0
  190. package/dist/freeze-updates-BT-s67nK.js +53 -0
  191. package/dist/freeze-updates-BUJeYIm5.js +44 -0
  192. package/dist/freeze-updates-BVDrqUzf.js +2498 -0
  193. package/dist/freeze-updates-BVX0QSXz.cjs +44 -0
  194. package/dist/freeze-updates-BXMr6a9g.cjs +2912 -0
  195. package/dist/freeze-updates-BZpmCVDl.cjs +2267 -0
  196. package/dist/freeze-updates-BbbID39H.js +1866 -0
  197. package/dist/freeze-updates-BdnJ5RrP.js +1866 -0
  198. package/dist/freeze-updates-Bj59uWit.cjs +44 -0
  199. package/dist/freeze-updates-Bla3E0Kv.js +53 -0
  200. package/dist/freeze-updates-BoYyIB3V.cjs +44 -0
  201. package/dist/freeze-updates-C2TqDiTp.cjs +44 -0
  202. package/dist/freeze-updates-C6Tg4EoW.js +44 -0
  203. package/dist/freeze-updates-C7c9TRvJ.cjs +44 -0
  204. package/dist/freeze-updates-CPNAwtsl.cjs +2267 -0
  205. package/dist/freeze-updates-CTP39zuf.js +44 -0
  206. package/dist/freeze-updates-Cm3EVm_J.cjs +53 -0
  207. package/dist/freeze-updates-CnSZEKoI.cjs +44 -0
  208. package/dist/freeze-updates-CrKe4F0s.js +44 -0
  209. package/dist/freeze-updates-CtYFeM4D.cjs +2267 -0
  210. package/dist/freeze-updates-CxYFvPj9.cjs +53 -0
  211. package/dist/freeze-updates-D10Qj9Ec.cjs +44 -0
  212. package/dist/freeze-updates-D6o46vBw.cjs +44 -0
  213. package/dist/freeze-updates-D7XFQ3_T.js +53 -0
  214. package/dist/freeze-updates-D8H25gFt.js +44 -0
  215. package/dist/freeze-updates-DCpGX7lt.cjs +44 -0
  216. package/dist/freeze-updates-DG3hLEL2.cjs +44 -0
  217. package/dist/freeze-updates-DO_M76qf.js +44 -0
  218. package/dist/freeze-updates-Db4Id665.cjs +2267 -0
  219. package/dist/freeze-updates-DbL_EXkN.js +1866 -0
  220. package/dist/freeze-updates-DcvNGCcR.cjs +44 -0
  221. package/dist/freeze-updates-Dh4GiYXz.cjs +44 -0
  222. package/dist/freeze-updates-DkKJK_nh.cjs +44 -0
  223. package/dist/freeze-updates-DmB-ndqy.cjs +44 -0
  224. package/dist/freeze-updates-DnAA3QYp.cjs +44 -0
  225. package/dist/freeze-updates-Dpj8jndD.js +44 -0
  226. package/dist/freeze-updates-DuHXIi3M.js +44 -0
  227. package/dist/freeze-updates-DwERlFID.js +1866 -0
  228. package/dist/freeze-updates-HHyWtz8f.cjs +44 -0
  229. package/dist/freeze-updates-JRZCAR0q.js +1866 -0
  230. package/dist/freeze-updates-KLyCac_c.js +44 -0
  231. package/dist/freeze-updates-MaNDvTJS.js +1866 -0
  232. package/dist/freeze-updates-REe44rww.js +44 -0
  233. package/dist/freeze-updates-TPRkNnYY.js +44 -0
  234. package/dist/freeze-updates-WfKs4yF4.js +44 -0
  235. package/dist/freeze-updates-d9yH0V6A.cjs +44 -0
  236. package/dist/freeze-updates-nzZkxjqN.js +44 -0
  237. package/dist/freeze-updates-q_DMlHq7.js +44 -0
  238. package/dist/index-0hhKx6KA.d.ts +534 -0
  239. package/dist/index-5oOhE8Ae.d.cts +123 -0
  240. package/dist/index-BA23Z7zi.d.ts +77 -0
  241. package/dist/index-BAbHDCJb.d.ts +190 -0
  242. package/dist/index-BN1ZJhWK.d.cts +471 -0
  243. package/dist/index-BNt_9BO7.d.ts +77 -0
  244. package/dist/index-BQIO-ZFv.d.cts +190 -0
  245. package/dist/index-BTQxeAz1.d.cts +123 -0
  246. package/dist/index-BxsI0BlT.d.ts +471 -0
  247. package/dist/index-BzzHoNRc.d.cts +77 -0
  248. package/dist/index-C0Scq3kL.d.ts +458 -0
  249. package/dist/index-CAHLDDjY.d.ts +190 -0
  250. package/dist/index-CIJ7ossb.d.ts +190 -0
  251. package/dist/index-CJqujqsv.d.cts +190 -0
  252. package/dist/index-CJrVDk2d.d.ts +470 -0
  253. package/dist/index-CQBZI4f5.d.cts +458 -0
  254. package/dist/index-CS3VHZ8R.d.cts +77 -0
  255. package/dist/index-CWd5aKyK.d.ts +123 -0
  256. package/dist/index-DM3Ga1zc.d.ts +123 -0
  257. package/dist/index-DYp_9VQ_.d.cts +470 -0
  258. package/dist/index-DrK-HiGj.d.ts +203 -0
  259. package/dist/index-GwiDNOsl.d.ts +457 -0
  260. package/dist/index-QLMT7NRw.d.cts +203 -0
  261. package/dist/index-QLi1BtdI.d.cts +190 -0
  262. package/dist/index-sM3yy652.d.cts +534 -0
  263. package/dist/index-zvkV7Xwg.d.cts +457 -0
  264. package/dist/index.cjs +2 -2
  265. package/dist/index.d.cts +21 -12
  266. package/dist/index.d.ts +21 -12
  267. package/dist/index.global.js +26 -97
  268. package/dist/index.iife.js +43 -0
  269. package/dist/index.js +2 -2
  270. package/dist/primitives.cjs +2 -2
  271. package/dist/primitives.d.cts +20 -13
  272. package/dist/primitives.d.ts +20 -13
  273. package/dist/primitives.js +2 -2
  274. package/dist/renderer--AVNuclr.js +9 -0
  275. package/dist/renderer--bWj0AZJ.js +4101 -0
  276. package/dist/renderer--cF4pvND.js +9 -0
  277. package/dist/renderer-0mo5bvxE.js +4126 -0
  278. package/dist/renderer-4Wa-UMC5.cjs +9 -0
  279. package/dist/renderer-6D9KbSAS.js +9 -0
  280. package/dist/renderer-7mjLlkgX.cjs +9 -0
  281. package/dist/renderer-B0v-2J0H.js +9 -0
  282. package/dist/renderer-B0yJsSRz.js +9 -0
  283. package/dist/renderer-B660bBKn.cjs +9 -0
  284. package/dist/renderer-B6m2pWq1.cjs +4102 -0
  285. package/dist/renderer-BA_yjKW4.cjs +9 -0
  286. package/dist/renderer-BDCne7IL.cjs +9 -0
  287. package/dist/renderer-BDKG-8eW.js +9 -0
  288. package/dist/renderer-BEisX7lt.js +9 -0
  289. package/dist/renderer-BEnSHrkN.cjs +9 -0
  290. package/dist/renderer-BJQHCki_.js +9 -0
  291. package/dist/renderer-BLEQ0lBg.js +9 -0
  292. package/dist/renderer-BQMe9vbO.cjs +9 -0
  293. package/dist/renderer-BZfQAWt2.cjs +9 -0
  294. package/dist/renderer-BZypunFM.cjs +9 -0
  295. package/dist/renderer-Be1I1mDW.cjs +9 -0
  296. package/dist/renderer-Bhrtihjr.cjs +9 -0
  297. package/dist/renderer-Bp3dRMPA.js +9 -0
  298. package/dist/renderer-BqYgf0tD.js +9 -0
  299. package/dist/renderer-BwD9ZaGr.cjs +9 -0
  300. package/dist/renderer-BxCRcsEK.cjs +4125 -0
  301. package/dist/renderer-C1Wrh8hn.js +9 -0
  302. package/dist/renderer-C6pztTyv.js +9 -0
  303. package/dist/renderer-C9bCr3pC.js +4101 -0
  304. package/dist/renderer-CEmrAuyA.js +9 -0
  305. package/dist/renderer-CG1lpM8J.cjs +9 -0
  306. package/dist/renderer-CIJhv1xD.js +9 -0
  307. package/dist/renderer-CJ3EovD7.js +9 -0
  308. package/dist/renderer-CJVIzi67.js +4114 -0
  309. package/dist/renderer-CKAmRN9i.cjs +9 -0
  310. package/dist/renderer-CNa9jW2d.js +9 -0
  311. package/dist/renderer-CS6q5sh-.cjs +4101 -0
  312. package/dist/renderer-CTip7L4z.cjs +4114 -0
  313. package/dist/renderer-Cdh6G3WO.cjs +4101 -0
  314. package/dist/renderer-Cfnc_J-x.js +9 -0
  315. package/dist/renderer-CidbOiiO.js +9 -0
  316. package/dist/renderer-CooL8OD4.cjs +9 -0
  317. package/dist/renderer-Cp8W_Vpj.cjs +4101 -0
  318. package/dist/renderer-Ctq4IL1w.cjs +9 -0
  319. package/dist/renderer-D0gZDp8v.js +9 -0
  320. package/dist/renderer-D2Ius1-3.cjs +9 -0
  321. package/dist/renderer-D2gUuAUv.cjs +9 -0
  322. package/dist/renderer-D6qQGrNF.js +9 -0
  323. package/dist/renderer-D9RBf9He.js +9 -0
  324. package/dist/renderer-DDpyudCh.js +9 -0
  325. package/dist/renderer-DEo9eIZj.cjs +9 -0
  326. package/dist/renderer-DHBz10-G.js +9 -0
  327. package/dist/renderer-DM6gVYD_.cjs +4126 -0
  328. package/dist/renderer-DS5wjL1R.cjs +9 -0
  329. package/dist/renderer-DWZQjHeF.cjs +4101 -0
  330. package/dist/renderer-DZ-EdxOj.cjs +9 -0
  331. package/dist/renderer-DblZTrea.js +9 -0
  332. package/dist/renderer-DcPiCh7r.js +4114 -0
  333. package/dist/renderer-Dfj6tfg9.cjs +4139 -0
  334. package/dist/renderer-DhoYb1PY.js +4103 -0
  335. package/dist/renderer-Dl6awT_I.cjs +9 -0
  336. package/dist/renderer-DmOXobMF.js +4101 -0
  337. package/dist/renderer-DmlAyeq6.cjs +4114 -0
  338. package/dist/renderer-DnwizF3I.cjs +9 -0
  339. package/dist/renderer-Dpzs-uao.js +4125 -0
  340. package/dist/renderer-Ds21virZ.cjs +4145 -0
  341. package/dist/renderer-DslAAsKS.js +4101 -0
  342. package/dist/renderer-DtBv4wTu.js +4102 -0
  343. package/dist/renderer-DxuOYfZN.cjs +9 -0
  344. package/dist/renderer-DyrsoA_r.js +9 -0
  345. package/dist/renderer-GlgUXTaV.js +9 -0
  346. package/dist/renderer-KL2bSyIW.cjs +9 -0
  347. package/dist/renderer-N_yFJNWi.cjs +9 -0
  348. package/dist/renderer-TkTQ8ZzV.cjs +4101 -0
  349. package/dist/renderer-WtWG_Uzr.js +4139 -0
  350. package/dist/renderer-YPWUo91d.cjs +9 -0
  351. package/dist/renderer-foaHR93_.js +9 -0
  352. package/dist/renderer-irss7gH9.js +9 -0
  353. package/dist/renderer-kNWgh9RH.js +9 -0
  354. package/dist/renderer-l2DsHbX5.js +4145 -0
  355. package/dist/renderer-lRGat4eI.js +9 -0
  356. package/dist/renderer-m1ynwV5m.cjs +9 -0
  357. package/dist/renderer-oDWZTt10.cjs +9 -0
  358. package/dist/renderer-ruVxrW9_.cjs +9 -0
  359. package/dist/renderer-tLg9bC5E.cjs +4103 -0
  360. package/dist/renderer-wKL03A96.cjs +9 -0
  361. package/dist/renderer-xY7WwwPb.cjs +9 -0
  362. package/dist/renderer-yNfPLGJa.js +4101 -0
  363. package/dist/renderer-zFA8Xsqn.js +9 -0
  364. package/dist/state-0zvRag7o.js +1832 -0
  365. package/dist/state-1bNOTRwX.js +9 -0
  366. package/dist/state-4KlM-876.cjs +9 -0
  367. package/dist/state-5YzsfKSg.js +9 -0
  368. package/dist/state-B2sO7SGs.cjs +9 -0
  369. package/dist/state-B30FVO9-.cjs +9 -0
  370. package/dist/state-BBF5Yd6R.cjs +1488 -0
  371. package/dist/state-BHM_hL69.cjs +9 -0
  372. package/dist/state-BKkU5MYC.js +9 -0
  373. package/dist/state-B_xrj8fC.js +9 -0
  374. package/dist/state-BaTqKR5-.js +1832 -0
  375. package/dist/state-Bb1Wechu.js +9 -0
  376. package/dist/state-BfgVpFaG.cjs +9 -0
  377. package/dist/state-BoRPcmmD.js +9 -0
  378. package/dist/state-BqB3gaPk.js +9 -0
  379. package/dist/state-Bt9zarML.js +1832 -0
  380. package/dist/state-Bw07Ecsm.js +9 -0
  381. package/dist/state-Bw9Y8zmt.js +9 -0
  382. package/dist/state-ByV_XBwX.js +9 -0
  383. package/dist/state-C4nNE_SS.js +9 -0
  384. package/dist/state-C4uusDVL.cjs +9 -0
  385. package/dist/state-CMwBL8Lh.cjs +9 -0
  386. package/dist/state-C_KJ10Ip.cjs +9 -0
  387. package/dist/state-ClLJ5ade.cjs +1488 -0
  388. package/dist/state-CpWrjvjx.js +277 -0
  389. package/dist/state-CwguFqss.cjs +9 -0
  390. package/dist/state-Cxj7mpyT.cjs +9 -0
  391. package/dist/state-CyWfuYBm.js +9 -0
  392. package/dist/state-Cz4euNVW.js +1832 -0
  393. package/dist/state-D1eYdbOV.js +9 -0
  394. package/dist/state-D231Xq-p.js +9 -0
  395. package/dist/state-D2nMXLig.cjs +9 -0
  396. package/dist/state-D3NnAU-G.js +9 -0
  397. package/dist/state-D4g0zX0j.cjs +9 -0
  398. package/dist/state-D5n1XOr-.cjs +372 -0
  399. package/dist/state-DPKTXrbJ.cjs +9 -0
  400. package/dist/state-DREKPmRw.cjs +9 -0
  401. package/dist/state-DT0Nzp9g.cjs +9 -0
  402. package/dist/state-Deun4HK-.cjs +9 -0
  403. package/dist/state-DfcZ51t9.js +9 -0
  404. package/dist/state-DgvhS6KW.cjs +1488 -0
  405. package/dist/state-DkjLMcvP.cjs +9 -0
  406. package/dist/state-DspBT1Sv.js +9 -0
  407. package/dist/state-DtgVqpBv.js +9 -0
  408. package/dist/state-DycsTHAk.cjs +9 -0
  409. package/dist/state-EWoHHdWu.js +9 -0
  410. package/dist/state-HWOltPgB.js +9 -0
  411. package/dist/state-JJNPE2tU.js +277 -0
  412. package/dist/state-KDd3Eouo.js +9 -0
  413. package/dist/state-Kmc6BtLp.cjs +9 -0
  414. package/dist/state-Q4M-6UjH.cjs +9 -0
  415. package/dist/state-U8yVy4Ad.cjs +9 -0
  416. package/dist/state-Uwm9KEi1.js +1832 -0
  417. package/dist/state-XYH8BGBU.cjs +372 -0
  418. package/dist/state-aBiYx-N-.cjs +9 -0
  419. package/dist/state-arg5pYvx.cjs +1488 -0
  420. package/dist/state-dFAAWOP9.cjs +1488 -0
  421. package/dist/state-daFKdtG6.js +9 -0
  422. package/dist/state-muKg33Sx.cjs +9 -0
  423. package/dist/state-wvjxc3BL.js +9 -0
  424. package/dist/styles.css +1 -1
  425. package/package.json +15 -22
  426. package/dist/chunk-2VXWII4G.cjs +0 -12
  427. package/dist/chunk-3HCPVIMZ.cjs +0 -83
  428. package/dist/chunk-CAZ3NLYA.cjs +0 -10
  429. package/dist/chunk-IWIPTBFC.js +0 -21
  430. package/dist/chunk-KH7JPDWT.js +0 -83
  431. package/dist/chunk-MIM6UREC.cjs +0 -21
  432. package/dist/chunk-RYNNLFJT.js +0 -10
  433. package/dist/chunk-VCA74BQS.js +0 -12
  434. package/dist/index-bB0QMlHm.d.cts +0 -507
  435. package/dist/index-bB0QMlHm.d.ts +0 -507
  436. package/dist/renderer-DEPHVNHK.cjs +0 -10
  437. package/dist/renderer-WYB2HHU6.js +0 -10
  438. package/scripts/postinstall.cjs +0 -23
@@ -0,0 +1,319 @@
1
+ /**
2
+ * @license MIT
3
+ *
4
+ * Copyright (c) 2025 Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import { U as MAX_SELECTOR_COMBINATIONS, nt as RELEVANT_CSS_PROPERTIES } from "./freeze-updates-BdnJ5RrP.js";
10
+
11
+ //#region src/utils/find-unique-selector.ts
12
+ const SEED_MIN_LENGTH = 3;
13
+ const ATTR_VALUE_MAX_LENGTH_CHARS = 100;
14
+ const PENALTY_ID = 0;
15
+ const PENALTY_CLASS = 1;
16
+ const PENALTY_ATTR = 2;
17
+ const PENALTY_TAG = 5;
18
+ const PENALTY_NTH_OF_TYPE = 10;
19
+ const PENALTY_NTH_CHILD = 50;
20
+ const ACCEPTED_ATTR_NAMES = new Set([
21
+ "role",
22
+ "name",
23
+ "aria-label",
24
+ "rel",
25
+ "href"
26
+ ]);
27
+ const isWordLike = (text) => {
28
+ if (!/^[a-z\-]{3,}$/i.test(text)) return false;
29
+ const segments = text.split(/-|[A-Z]/);
30
+ for (const segment of segments) {
31
+ if (segment.length <= 2) return false;
32
+ if (/[^aeiou]{4,}/i.test(segment)) return false;
33
+ }
34
+ return true;
35
+ };
36
+ const isAcceptedAttr = (attributeName, attributeValue) => {
37
+ const nameIsAccepted = ACCEPTED_ATTR_NAMES.has(attributeName) || attributeName.startsWith("data-") && isWordLike(attributeName);
38
+ const valueIsAccepted = isWordLike(attributeValue) && attributeValue.length < ATTR_VALUE_MAX_LENGTH_CHARS || attributeValue.startsWith("#") && isWordLike(attributeValue.slice(1));
39
+ return nameIsAccepted && valueIsAccepted;
40
+ };
41
+ const buildSelectorString = (path) => {
42
+ let result = path[0].name;
43
+ for (let index = 1; index < path.length; index++) result = `${path[index].name} > ${result}`;
44
+ return result;
45
+ };
46
+ const calculatePenalty = (path) => {
47
+ let total = 0;
48
+ for (const selectorNode of path) total += selectorNode.penalty;
49
+ return total;
50
+ };
51
+ const comparePenalty = (pathA, pathB) => calculatePenalty(pathA) - calculatePenalty(pathB);
52
+ const getChildIndex = (element, filterTagName) => {
53
+ const parentNode = element.parentNode;
54
+ if (!parentNode) return void 0;
55
+ let sibling = parentNode.firstChild;
56
+ if (!sibling) return void 0;
57
+ let position = 0;
58
+ while (sibling) {
59
+ if (sibling.nodeType === Node.ELEMENT_NODE && (filterTagName === void 0 || sibling.tagName.toLowerCase() === filterTagName)) position++;
60
+ if (sibling === element) break;
61
+ sibling = sibling.nextSibling;
62
+ }
63
+ return position;
64
+ };
65
+ const formatNthChild = (tagName, childPosition) => tagName === "html" ? "html" : `${tagName}:nth-child(${childPosition})`;
66
+ const formatNthOfType = (tagName, typePosition) => tagName === "html" ? "html" : `${tagName}:nth-of-type(${typePosition})`;
67
+ const collectCandidateNodes = (element, attrFilter) => {
68
+ const candidates = [];
69
+ const elementId = element.getAttribute("id");
70
+ const elementTagName = element.tagName.toLowerCase();
71
+ if (elementId && isWordLike(elementId)) candidates.push({
72
+ name: `#${CSS.escape(elementId)}`,
73
+ penalty: PENALTY_ID
74
+ });
75
+ for (const className of element.classList) if (isWordLike(className)) candidates.push({
76
+ name: `.${CSS.escape(className)}`,
77
+ penalty: PENALTY_CLASS
78
+ });
79
+ for (const attribute of element.attributes) if (attrFilter(attribute.name, attribute.value)) candidates.push({
80
+ name: `[${CSS.escape(attribute.name)}="${CSS.escape(attribute.value)}"]`,
81
+ penalty: PENALTY_ATTR
82
+ });
83
+ candidates.push({
84
+ name: elementTagName,
85
+ penalty: PENALTY_TAG
86
+ });
87
+ const typePosition = getChildIndex(element, elementTagName);
88
+ if (typePosition !== void 0) candidates.push({
89
+ name: formatNthOfType(elementTagName, typePosition),
90
+ penalty: PENALTY_NTH_OF_TYPE
91
+ });
92
+ const childPosition = getChildIndex(element);
93
+ if (childPosition !== void 0) candidates.push({
94
+ name: formatNthChild(elementTagName, childPosition),
95
+ penalty: PENALTY_NTH_CHILD
96
+ });
97
+ return candidates;
98
+ };
99
+ const collectCombinations = (stack, budget = MAX_SELECTOR_COMBINATIONS, currentPath = []) => {
100
+ if (budget <= 0) return [];
101
+ if (stack.length === 0) return [currentPath];
102
+ const results = [];
103
+ for (const selectorNode of stack[0]) {
104
+ const remainingBudget = budget - results.length;
105
+ if (remainingBudget <= 0) break;
106
+ results.push(...collectCombinations(stack.slice(1), remainingBudget, [...currentPath, selectorNode]));
107
+ }
108
+ return results;
109
+ };
110
+ const resolveRootDocument = (rootNode, targetElement) => {
111
+ const attachedRoot = targetElement.getRootNode?.();
112
+ if (attachedRoot instanceof ShadowRoot) return attachedRoot;
113
+ if (rootNode.nodeType === Node.DOCUMENT_NODE) return rootNode;
114
+ return rootNode.ownerDocument;
115
+ };
116
+ const isSelectorUnique = (selectorPath, rootDocument) => rootDocument.querySelectorAll(buildSelectorString(selectorPath)).length === 1;
117
+ const buildFallbackPath = (targetElement, rootDocument) => {
118
+ let currentElement = targetElement;
119
+ const path = [];
120
+ while (currentElement && currentElement !== rootDocument) {
121
+ const currentTagName = currentElement.tagName.toLowerCase();
122
+ const typePosition = getChildIndex(currentElement, currentTagName);
123
+ if (typePosition === void 0) return void 0;
124
+ path.push({
125
+ name: formatNthOfType(currentTagName, typePosition),
126
+ penalty: PENALTY_NTH_OF_TYPE
127
+ });
128
+ currentElement = currentElement.parentElement;
129
+ }
130
+ return isSelectorUnique(path, rootDocument) ? path : void 0;
131
+ };
132
+ const findUniqueSelector = (targetElement, root, timeoutMs, attrFilter) => {
133
+ if (targetElement.nodeType !== Node.ELEMENT_NODE) throw new Error("Can't generate CSS selector for non-element node type.");
134
+ if (targetElement.tagName.toLowerCase() === "html") return "html";
135
+ const rootDocument = resolveRootDocument(root, targetElement);
136
+ const startTime = Date.now();
137
+ const ancestorStack = [];
138
+ let currentElement = targetElement;
139
+ let depth = 0;
140
+ let foundPath;
141
+ while (currentElement && currentElement !== rootDocument && !foundPath) {
142
+ ancestorStack.push(collectCandidateNodes(currentElement, attrFilter));
143
+ currentElement = currentElement.parentElement;
144
+ depth++;
145
+ if (depth >= SEED_MIN_LENGTH) {
146
+ const candidatePaths = collectCombinations(ancestorStack);
147
+ candidatePaths.sort(comparePenalty);
148
+ for (const candidatePath of candidatePaths) {
149
+ if (Date.now() - startTime > timeoutMs) {
150
+ const fallbackPath = buildFallbackPath(targetElement, rootDocument);
151
+ if (!fallbackPath) throw new Error(`Timeout: Can't find a unique selector after ${timeoutMs}ms`);
152
+ return buildSelectorString(fallbackPath);
153
+ }
154
+ if (isSelectorUnique(candidatePath, rootDocument)) {
155
+ foundPath = candidatePath;
156
+ break;
157
+ }
158
+ }
159
+ }
160
+ }
161
+ if (!foundPath && depth < SEED_MIN_LENGTH) {
162
+ const remainingPaths = collectCombinations(ancestorStack);
163
+ remainingPaths.sort(comparePenalty);
164
+ for (const candidatePath of remainingPaths) {
165
+ if (Date.now() - startTime > timeoutMs) break;
166
+ if (isSelectorUnique(candidatePath, rootDocument)) {
167
+ foundPath = candidatePath;
168
+ break;
169
+ }
170
+ }
171
+ }
172
+ if (!foundPath) throw new Error("Selector was not found.");
173
+ return buildSelectorString(foundPath);
174
+ };
175
+
176
+ //#endregion
177
+ //#region src/utils/create-element-selector.ts
178
+ const escapeCssIdentifier = (value) => {
179
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
180
+ return value.replace(/[^a-zA-Z0-9_-]/g, (character) => `\\${character}`);
181
+ };
182
+ const getFinderRoot = (element) => element.ownerDocument.body ?? element.ownerDocument.documentElement;
183
+ const PREFERRED_SELECTOR_ATTRIBUTE_NAMES = new Set([
184
+ "data-testid",
185
+ "data-test-id",
186
+ "data-test",
187
+ "data-cy",
188
+ "data-qa",
189
+ "aria-label",
190
+ "role",
191
+ "name",
192
+ "title",
193
+ "alt"
194
+ ]);
195
+ const isPreferredAttributeValueSafe = (value) => value.length > 0 && value.length <= 120;
196
+ const isSelectorUniqueForElement = (element, selector) => {
197
+ try {
198
+ const matchingElements = element.ownerDocument.querySelectorAll(selector);
199
+ return matchingElements.length === 1 && matchingElements[0] === element;
200
+ } catch {
201
+ return false;
202
+ }
203
+ };
204
+ const createFastElementSelector = (element) => {
205
+ if (element instanceof HTMLElement && element.id) {
206
+ const idSelector = `#${escapeCssIdentifier(element.id)}`;
207
+ if (isSelectorUniqueForElement(element, idSelector)) return idSelector;
208
+ }
209
+ for (const attributeName of PREFERRED_SELECTOR_ATTRIBUTE_NAMES) {
210
+ const attributeValue = element.getAttribute(attributeName);
211
+ if (!attributeValue) continue;
212
+ if (!isPreferredAttributeValueSafe(attributeValue)) continue;
213
+ const attributeOnlySelector = `[${attributeName}=${JSON.stringify(attributeValue)}]`;
214
+ if (isSelectorUniqueForElement(element, attributeOnlySelector)) return attributeOnlySelector;
215
+ const tagSelector = `${element.tagName.toLowerCase()}${attributeOnlySelector}`;
216
+ if (isSelectorUniqueForElement(element, tagSelector)) return tagSelector;
217
+ }
218
+ return null;
219
+ };
220
+ const createNthChildSelector = (element) => {
221
+ const segments = [];
222
+ const root = getFinderRoot(element);
223
+ let currentElement = element;
224
+ while (currentElement) {
225
+ if (currentElement instanceof HTMLElement && currentElement.id) {
226
+ segments.unshift(`#${escapeCssIdentifier(currentElement.id)}`);
227
+ break;
228
+ }
229
+ const parentElement = currentElement.parentElement;
230
+ if (!parentElement) {
231
+ segments.unshift(currentElement.tagName.toLowerCase());
232
+ break;
233
+ }
234
+ const siblingIndex = Array.from(parentElement.children).indexOf(currentElement);
235
+ const nthChild = siblingIndex >= 0 ? siblingIndex + 1 : 1;
236
+ segments.unshift(`${currentElement.tagName.toLowerCase()}:nth-child(${nthChild})`);
237
+ if (parentElement === root) {
238
+ segments.unshift(root.tagName.toLowerCase());
239
+ break;
240
+ }
241
+ currentElement = parentElement;
242
+ }
243
+ return segments.join(" > ");
244
+ };
245
+ const createElementSelector = (element, shouldUseFinder = true) => {
246
+ const fastSelector = createFastElementSelector(element);
247
+ if (fastSelector) return fastSelector;
248
+ if (shouldUseFinder) try {
249
+ const selector = findUniqueSelector(element, getFinderRoot(element), 200, (attributeName, attributeValue) => isAcceptedAttr(attributeName, attributeValue) || PREFERRED_SELECTOR_ATTRIBUTE_NAMES.has(attributeName) && isPreferredAttributeValueSafe(attributeValue));
250
+ if (selector) return selector;
251
+ } catch {}
252
+ return createNthChildSelector(element);
253
+ };
254
+
255
+ //#endregion
256
+ //#region src/utils/extract-element-css.ts
257
+ const BORDER_FILTER_SIDE_MAP = new Map([
258
+ "top",
259
+ "right",
260
+ "bottom",
261
+ "left"
262
+ ].flatMap((side) => [[`border-${side}-style`, side], [`border-${side}-color`, side]]));
263
+ let baselineIframe = null;
264
+ const defaultStylesByTag = /* @__PURE__ */ new Map();
265
+ const ensureBaselineIframe = () => {
266
+ if (baselineIframe) return baselineIframe;
267
+ baselineIframe = document.createElement("iframe");
268
+ baselineIframe.style.cssText = "position:fixed;left:-9999px;width:0;height:0;border:none;visibility:hidden;";
269
+ document.body.appendChild(baselineIframe);
270
+ return baselineIframe;
271
+ };
272
+ const getDefaultStylesForTag = (tagName) => {
273
+ const cached = defaultStylesByTag.get(tagName);
274
+ if (cached) return cached;
275
+ const iframe = ensureBaselineIframe();
276
+ const iframeDocument = iframe.contentDocument;
277
+ const baselineElement = iframeDocument.createElement(tagName);
278
+ iframeDocument.body.appendChild(baselineElement);
279
+ const baselineComputed = iframe.contentWindow.getComputedStyle(baselineElement);
280
+ const defaultStyles = /* @__PURE__ */ new Map();
281
+ for (const propertyName of RELEVANT_CSS_PROPERTIES) {
282
+ const propertyValue = baselineComputed.getPropertyValue(propertyName);
283
+ if (propertyValue) defaultStyles.set(propertyName, propertyValue);
284
+ }
285
+ baselineElement.remove();
286
+ defaultStylesByTag.set(tagName, defaultStyles);
287
+ return defaultStyles;
288
+ };
289
+ const isBorderPropertyWithoutWidth = (propertyName, computedStyle) => {
290
+ const side = BORDER_FILTER_SIDE_MAP.get(propertyName);
291
+ if (!side) return false;
292
+ const widthValue = computedStyle.getPropertyValue(`border-${side}-width`);
293
+ return widthValue === "0px" || widthValue === "0";
294
+ };
295
+ const extractElementCss = (element) => {
296
+ const defaultStyles = getDefaultStylesForTag(element.tagName.toLowerCase());
297
+ const computedStyle = getComputedStyle(element);
298
+ const declarations = [];
299
+ for (const propertyName of RELEVANT_CSS_PROPERTIES) {
300
+ const propertyValue = computedStyle.getPropertyValue(propertyName);
301
+ if (!propertyValue) continue;
302
+ if (propertyValue === defaultStyles.get(propertyName)) continue;
303
+ if (isBorderPropertyWithoutWidth(propertyName, computedStyle)) continue;
304
+ declarations.push(`${propertyName}: ${propertyValue};`);
305
+ }
306
+ const classAttribute = element.getAttribute("class")?.trim();
307
+ const cssBlock = declarations.join("\n");
308
+ if (!classAttribute) return cssBlock;
309
+ if (!cssBlock) return `className: ${classAttribute}`;
310
+ return `className: ${classAttribute}\n\n${cssBlock}`;
311
+ };
312
+ const disposeBaselineStyles = () => {
313
+ baselineIframe?.remove();
314
+ baselineIframe = null;
315
+ defaultStylesByTag.clear();
316
+ };
317
+
318
+ //#endregion
319
+ export { extractElementCss as n, createElementSelector as r, disposeBaselineStyles as t };
@@ -0,0 +1,319 @@
1
+ /**
2
+ * @license MIT
3
+ *
4
+ * Copyright (c) 2025 Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ import { G as MAX_SELECTOR_COMBINATIONS, it as RELEVANT_CSS_PROPERTIES } from "./freeze-updates-BVDrqUzf.js";
10
+
11
+ //#region src/utils/find-unique-selector.ts
12
+ const SEED_MIN_LENGTH = 3;
13
+ const ATTR_VALUE_MAX_LENGTH_CHARS = 100;
14
+ const PENALTY_ID = 0;
15
+ const PENALTY_CLASS = 1;
16
+ const PENALTY_ATTR = 2;
17
+ const PENALTY_TAG = 5;
18
+ const PENALTY_NTH_OF_TYPE = 10;
19
+ const PENALTY_NTH_CHILD = 50;
20
+ const ACCEPTED_ATTR_NAMES = new Set([
21
+ "role",
22
+ "name",
23
+ "aria-label",
24
+ "rel",
25
+ "href"
26
+ ]);
27
+ const isWordLike = (text) => {
28
+ if (!/^[a-z\-]{3,}$/i.test(text)) return false;
29
+ const segments = text.split(/-|[A-Z]/);
30
+ for (const segment of segments) {
31
+ if (segment.length <= 2) return false;
32
+ if (/[^aeiou]{4,}/i.test(segment)) return false;
33
+ }
34
+ return true;
35
+ };
36
+ const isAcceptedAttr = (attributeName, attributeValue) => {
37
+ const nameIsAccepted = ACCEPTED_ATTR_NAMES.has(attributeName) || attributeName.startsWith("data-") && isWordLike(attributeName);
38
+ const valueIsAccepted = isWordLike(attributeValue) && attributeValue.length < ATTR_VALUE_MAX_LENGTH_CHARS || attributeValue.startsWith("#") && isWordLike(attributeValue.slice(1));
39
+ return nameIsAccepted && valueIsAccepted;
40
+ };
41
+ const buildSelectorString = (path) => {
42
+ let result = path[0].name;
43
+ for (let index = 1; index < path.length; index++) result = `${path[index].name} > ${result}`;
44
+ return result;
45
+ };
46
+ const calculatePenalty = (path) => {
47
+ let total = 0;
48
+ for (const selectorNode of path) total += selectorNode.penalty;
49
+ return total;
50
+ };
51
+ const comparePenalty = (pathA, pathB) => calculatePenalty(pathA) - calculatePenalty(pathB);
52
+ const getChildIndex = (element, filterTagName) => {
53
+ const parentNode = element.parentNode;
54
+ if (!parentNode) return void 0;
55
+ let sibling = parentNode.firstChild;
56
+ if (!sibling) return void 0;
57
+ let position = 0;
58
+ while (sibling) {
59
+ if (sibling.nodeType === Node.ELEMENT_NODE && (filterTagName === void 0 || sibling.tagName.toLowerCase() === filterTagName)) position++;
60
+ if (sibling === element) break;
61
+ sibling = sibling.nextSibling;
62
+ }
63
+ return position;
64
+ };
65
+ const formatNthChild = (tagName, childPosition) => tagName === "html" ? "html" : `${tagName}:nth-child(${childPosition})`;
66
+ const formatNthOfType = (tagName, typePosition) => tagName === "html" ? "html" : `${tagName}:nth-of-type(${typePosition})`;
67
+ const collectCandidateNodes = (element, attrFilter) => {
68
+ const candidates = [];
69
+ const elementId = element.getAttribute("id");
70
+ const elementTagName = element.tagName.toLowerCase();
71
+ if (elementId && isWordLike(elementId)) candidates.push({
72
+ name: `#${CSS.escape(elementId)}`,
73
+ penalty: PENALTY_ID
74
+ });
75
+ for (const className of element.classList) if (isWordLike(className)) candidates.push({
76
+ name: `.${CSS.escape(className)}`,
77
+ penalty: PENALTY_CLASS
78
+ });
79
+ for (const attribute of element.attributes) if (attrFilter(attribute.name, attribute.value)) candidates.push({
80
+ name: `[${CSS.escape(attribute.name)}="${CSS.escape(attribute.value)}"]`,
81
+ penalty: PENALTY_ATTR
82
+ });
83
+ candidates.push({
84
+ name: elementTagName,
85
+ penalty: PENALTY_TAG
86
+ });
87
+ const typePosition = getChildIndex(element, elementTagName);
88
+ if (typePosition !== void 0) candidates.push({
89
+ name: formatNthOfType(elementTagName, typePosition),
90
+ penalty: PENALTY_NTH_OF_TYPE
91
+ });
92
+ const childPosition = getChildIndex(element);
93
+ if (childPosition !== void 0) candidates.push({
94
+ name: formatNthChild(elementTagName, childPosition),
95
+ penalty: PENALTY_NTH_CHILD
96
+ });
97
+ return candidates;
98
+ };
99
+ const collectCombinations = (stack, budget = MAX_SELECTOR_COMBINATIONS, currentPath = []) => {
100
+ if (budget <= 0) return [];
101
+ if (stack.length === 0) return [currentPath];
102
+ const results = [];
103
+ for (const selectorNode of stack[0]) {
104
+ const remainingBudget = budget - results.length;
105
+ if (remainingBudget <= 0) break;
106
+ results.push(...collectCombinations(stack.slice(1), remainingBudget, [...currentPath, selectorNode]));
107
+ }
108
+ return results;
109
+ };
110
+ const resolveRootDocument = (rootNode, targetElement) => {
111
+ const attachedRoot = targetElement.getRootNode?.();
112
+ if (attachedRoot instanceof ShadowRoot) return attachedRoot;
113
+ if (rootNode.nodeType === Node.DOCUMENT_NODE) return rootNode;
114
+ return rootNode.ownerDocument;
115
+ };
116
+ const isSelectorUnique = (selectorPath, rootDocument) => rootDocument.querySelectorAll(buildSelectorString(selectorPath)).length === 1;
117
+ const buildFallbackPath = (targetElement, rootDocument) => {
118
+ let currentElement = targetElement;
119
+ const path = [];
120
+ while (currentElement && currentElement !== rootDocument) {
121
+ const currentTagName = currentElement.tagName.toLowerCase();
122
+ const typePosition = getChildIndex(currentElement, currentTagName);
123
+ if (typePosition === void 0) return void 0;
124
+ path.push({
125
+ name: formatNthOfType(currentTagName, typePosition),
126
+ penalty: PENALTY_NTH_OF_TYPE
127
+ });
128
+ currentElement = currentElement.parentElement;
129
+ }
130
+ return isSelectorUnique(path, rootDocument) ? path : void 0;
131
+ };
132
+ const findUniqueSelector = (targetElement, root, timeoutMs, attrFilter) => {
133
+ if (targetElement.nodeType !== Node.ELEMENT_NODE) throw new Error("Can't generate CSS selector for non-element node type.");
134
+ if (targetElement.tagName.toLowerCase() === "html") return "html";
135
+ const rootDocument = resolveRootDocument(root, targetElement);
136
+ const startTime = Date.now();
137
+ const ancestorStack = [];
138
+ let currentElement = targetElement;
139
+ let depth = 0;
140
+ let foundPath;
141
+ while (currentElement && currentElement !== rootDocument && !foundPath) {
142
+ ancestorStack.push(collectCandidateNodes(currentElement, attrFilter));
143
+ currentElement = currentElement.parentElement;
144
+ depth++;
145
+ if (depth >= SEED_MIN_LENGTH) {
146
+ const candidatePaths = collectCombinations(ancestorStack);
147
+ candidatePaths.sort(comparePenalty);
148
+ for (const candidatePath of candidatePaths) {
149
+ if (Date.now() - startTime > timeoutMs) {
150
+ const fallbackPath = buildFallbackPath(targetElement, rootDocument);
151
+ if (!fallbackPath) throw new Error(`Timeout: Can't find a unique selector after ${timeoutMs}ms`);
152
+ return buildSelectorString(fallbackPath);
153
+ }
154
+ if (isSelectorUnique(candidatePath, rootDocument)) {
155
+ foundPath = candidatePath;
156
+ break;
157
+ }
158
+ }
159
+ }
160
+ }
161
+ if (!foundPath && depth < SEED_MIN_LENGTH) {
162
+ const remainingPaths = collectCombinations(ancestorStack);
163
+ remainingPaths.sort(comparePenalty);
164
+ for (const candidatePath of remainingPaths) {
165
+ if (Date.now() - startTime > timeoutMs) break;
166
+ if (isSelectorUnique(candidatePath, rootDocument)) {
167
+ foundPath = candidatePath;
168
+ break;
169
+ }
170
+ }
171
+ }
172
+ if (!foundPath) throw new Error("Selector was not found.");
173
+ return buildSelectorString(foundPath);
174
+ };
175
+
176
+ //#endregion
177
+ //#region src/utils/create-element-selector.ts
178
+ const escapeCssIdentifier = (value) => {
179
+ if (typeof CSS !== "undefined" && typeof CSS.escape === "function") return CSS.escape(value);
180
+ return value.replace(/[^a-zA-Z0-9_-]/g, (character) => `\\${character}`);
181
+ };
182
+ const getFinderRoot = (element) => element.ownerDocument.body ?? element.ownerDocument.documentElement;
183
+ const PREFERRED_SELECTOR_ATTRIBUTE_NAMES = new Set([
184
+ "data-testid",
185
+ "data-test-id",
186
+ "data-test",
187
+ "data-cy",
188
+ "data-qa",
189
+ "aria-label",
190
+ "role",
191
+ "name",
192
+ "title",
193
+ "alt"
194
+ ]);
195
+ const isPreferredAttributeValueSafe = (value) => value.length > 0 && value.length <= 120;
196
+ const isSelectorUniqueForElement = (element, selector) => {
197
+ try {
198
+ const matchingElements = element.ownerDocument.querySelectorAll(selector);
199
+ return matchingElements.length === 1 && matchingElements[0] === element;
200
+ } catch {
201
+ return false;
202
+ }
203
+ };
204
+ const createFastElementSelector = (element) => {
205
+ if (element instanceof HTMLElement && element.id) {
206
+ const idSelector = `#${escapeCssIdentifier(element.id)}`;
207
+ if (isSelectorUniqueForElement(element, idSelector)) return idSelector;
208
+ }
209
+ for (const attributeName of PREFERRED_SELECTOR_ATTRIBUTE_NAMES) {
210
+ const attributeValue = element.getAttribute(attributeName);
211
+ if (!attributeValue) continue;
212
+ if (!isPreferredAttributeValueSafe(attributeValue)) continue;
213
+ const attributeOnlySelector = `[${attributeName}=${JSON.stringify(attributeValue)}]`;
214
+ if (isSelectorUniqueForElement(element, attributeOnlySelector)) return attributeOnlySelector;
215
+ const tagSelector = `${element.tagName.toLowerCase()}${attributeOnlySelector}`;
216
+ if (isSelectorUniqueForElement(element, tagSelector)) return tagSelector;
217
+ }
218
+ return null;
219
+ };
220
+ const createNthChildSelector = (element) => {
221
+ const segments = [];
222
+ const root = getFinderRoot(element);
223
+ let currentElement = element;
224
+ while (currentElement) {
225
+ if (currentElement instanceof HTMLElement && currentElement.id) {
226
+ segments.unshift(`#${escapeCssIdentifier(currentElement.id)}`);
227
+ break;
228
+ }
229
+ const parentElement = currentElement.parentElement;
230
+ if (!parentElement) {
231
+ segments.unshift(currentElement.tagName.toLowerCase());
232
+ break;
233
+ }
234
+ const siblingIndex = Array.from(parentElement.children).indexOf(currentElement);
235
+ const nthChild = siblingIndex >= 0 ? siblingIndex + 1 : 1;
236
+ segments.unshift(`${currentElement.tagName.toLowerCase()}:nth-child(${nthChild})`);
237
+ if (parentElement === root) {
238
+ segments.unshift(root.tagName.toLowerCase());
239
+ break;
240
+ }
241
+ currentElement = parentElement;
242
+ }
243
+ return segments.join(" > ");
244
+ };
245
+ const createElementSelector = (element, shouldUseFinder = true) => {
246
+ const fastSelector = createFastElementSelector(element);
247
+ if (fastSelector) return fastSelector;
248
+ if (shouldUseFinder) try {
249
+ const selector = findUniqueSelector(element, getFinderRoot(element), 200, (attributeName, attributeValue) => isAcceptedAttr(attributeName, attributeValue) || PREFERRED_SELECTOR_ATTRIBUTE_NAMES.has(attributeName) && isPreferredAttributeValueSafe(attributeValue));
250
+ if (selector) return selector;
251
+ } catch {}
252
+ return createNthChildSelector(element);
253
+ };
254
+
255
+ //#endregion
256
+ //#region src/utils/extract-element-css.ts
257
+ const BORDER_FILTER_SIDE_MAP = new Map([
258
+ "top",
259
+ "right",
260
+ "bottom",
261
+ "left"
262
+ ].flatMap((side) => [[`border-${side}-style`, side], [`border-${side}-color`, side]]));
263
+ let baselineIframe = null;
264
+ const defaultStylesByTag = /* @__PURE__ */ new Map();
265
+ const ensureBaselineIframe = () => {
266
+ if (baselineIframe) return baselineIframe;
267
+ baselineIframe = document.createElement("iframe");
268
+ baselineIframe.style.cssText = "position:fixed;left:-9999px;width:0;height:0;border:none;visibility:hidden;";
269
+ document.body.appendChild(baselineIframe);
270
+ return baselineIframe;
271
+ };
272
+ const getDefaultStylesForTag = (tagName) => {
273
+ const cached = defaultStylesByTag.get(tagName);
274
+ if (cached) return cached;
275
+ const iframe = ensureBaselineIframe();
276
+ const iframeDocument = iframe.contentDocument;
277
+ const baselineElement = iframeDocument.createElement(tagName);
278
+ iframeDocument.body.appendChild(baselineElement);
279
+ const baselineComputed = iframe.contentWindow.getComputedStyle(baselineElement);
280
+ const defaultStyles = /* @__PURE__ */ new Map();
281
+ for (const propertyName of RELEVANT_CSS_PROPERTIES) {
282
+ const propertyValue = baselineComputed.getPropertyValue(propertyName);
283
+ if (propertyValue) defaultStyles.set(propertyName, propertyValue);
284
+ }
285
+ baselineElement.remove();
286
+ defaultStylesByTag.set(tagName, defaultStyles);
287
+ return defaultStyles;
288
+ };
289
+ const isBorderPropertyWithoutWidth = (propertyName, computedStyle) => {
290
+ const side = BORDER_FILTER_SIDE_MAP.get(propertyName);
291
+ if (!side) return false;
292
+ const widthValue = computedStyle.getPropertyValue(`border-${side}-width`);
293
+ return widthValue === "0px" || widthValue === "0";
294
+ };
295
+ const extractElementCss = (element) => {
296
+ const defaultStyles = getDefaultStylesForTag(element.tagName.toLowerCase());
297
+ const computedStyle = getComputedStyle(element);
298
+ const declarations = [];
299
+ for (const propertyName of RELEVANT_CSS_PROPERTIES) {
300
+ const propertyValue = computedStyle.getPropertyValue(propertyName);
301
+ if (!propertyValue) continue;
302
+ if (propertyValue === defaultStyles.get(propertyName)) continue;
303
+ if (isBorderPropertyWithoutWidth(propertyName, computedStyle)) continue;
304
+ declarations.push(`${propertyName}: ${propertyValue};`);
305
+ }
306
+ const classAttribute = element.getAttribute("class")?.trim();
307
+ const cssBlock = declarations.join("\n");
308
+ if (!classAttribute) return cssBlock;
309
+ if (!cssBlock) return `className: ${classAttribute}`;
310
+ return `className: ${classAttribute}\n\n${cssBlock}`;
311
+ };
312
+ const disposeBaselineStyles = () => {
313
+ baselineIframe?.remove();
314
+ baselineIframe = null;
315
+ defaultStylesByTag.clear();
316
+ };
317
+
318
+ //#endregion
319
+ export { extractElementCss as n, createElementSelector as r, disposeBaselineStyles as t };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license MIT
3
+ *
4
+ * Copyright (c) 2025 Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ const e=require(`./freeze-updates-DnAA3QYp.cjs`),t=new Set([`role`,`name`,`aria-label`,`rel`,`href`]),n=e=>{if(!/^[a-z\-]{3,}$/i.test(e))return!1;let t=e.split(/-|[A-Z]/);for(let e of t)if(e.length<=2||/[^aeiou]{4,}/i.test(e))return!1;return!0},r=(e,r)=>{let i=t.has(e)||e.startsWith(`data-`)&&n(e),a=n(r)&&r.length<100||r.startsWith(`#`)&&n(r.slice(1));return i&&a},i=e=>{let t=e[0].name;for(let n=1;n<e.length;n++)t=`${e[n].name} > ${t}`;return t},a=e=>{let t=0;for(let n of e)t+=n.penalty;return t},o=(e,t)=>a(e)-a(t),s=(e,t)=>{let n=e.parentNode;if(!n)return;let r=n.firstChild;if(!r)return;let i=0;for(;r&&(r.nodeType===Node.ELEMENT_NODE&&(t===void 0||r.tagName.toLowerCase()===t)&&i++,r!==e);)r=r.nextSibling;return i},c=(e,t)=>e===`html`?`html`:`${e}:nth-child(${t})`,l=(e,t)=>e===`html`?`html`:`${e}:nth-of-type(${t})`,u=(e,t)=>{let r=[],i=e.getAttribute(`id`),a=e.tagName.toLowerCase();i&&n(i)&&r.push({name:`#${CSS.escape(i)}`,penalty:0});for(let t of e.classList)n(t)&&r.push({name:`.${CSS.escape(t)}`,penalty:1});for(let n of e.attributes)t(n.name,n.value)&&r.push({name:`[${CSS.escape(n.name)}="${CSS.escape(n.value)}"]`,penalty:2});r.push({name:a,penalty:5});let o=s(e,a);o!==void 0&&r.push({name:l(a,o),penalty:10});let u=s(e);return u!==void 0&&r.push({name:c(a,u),penalty:50}),r},d=(t,n=e.U,r=[])=>{if(n<=0)return[];if(t.length===0)return[r];let i=[];for(let e of t[0]){let a=n-i.length;if(a<=0)break;i.push(...d(t.slice(1),a,[...r,e]))}return i},f=(e,t)=>{let n=t.getRootNode?.();return n instanceof ShadowRoot?n:e.nodeType===Node.DOCUMENT_NODE?e:e.ownerDocument},p=(e,t)=>t.querySelectorAll(i(e)).length===1,m=(e,t)=>{let n=e,r=[];for(;n&&n!==t;){let e=n.tagName.toLowerCase(),t=s(n,e);if(t===void 0)return;r.push({name:l(e,t),penalty:10}),n=n.parentElement}return p(r,t)?r:void 0},h=(e,t,n,r)=>{if(e.nodeType!==Node.ELEMENT_NODE)throw Error(`Can't generate CSS selector for non-element node type.`);if(e.tagName.toLowerCase()===`html`)return`html`;let a=f(t,e),s=Date.now(),c=[],l=e,h=0,g;for(;l&&l!==a&&!g;)if(c.push(u(l,r)),l=l.parentElement,h++,h>=3){let t=d(c);t.sort(o);for(let r of t){if(Date.now()-s>n){let t=m(e,a);if(!t)throw Error(`Timeout: Can't find a unique selector after ${n}ms`);return i(t)}if(p(r,a)){g=r;break}}}if(!g&&h<3){let e=d(c);e.sort(o);for(let t of e){if(Date.now()-s>n)break;if(p(t,a)){g=t;break}}}if(!g)throw Error(`Selector was not found.`);return i(g)},g=e=>typeof CSS<`u`&&typeof CSS.escape==`function`?CSS.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`),_=e=>e.ownerDocument.body??e.ownerDocument.documentElement,v=new Set([`data-testid`,`data-test-id`,`data-test`,`data-cy`,`data-qa`,`aria-label`,`role`,`name`,`title`,`alt`]),y=e=>e.length>0&&e.length<=120,b=(e,t)=>{try{let n=e.ownerDocument.querySelectorAll(t);return n.length===1&&n[0]===e}catch{return!1}},x=e=>{if(e instanceof HTMLElement&&e.id){let t=`#${g(e.id)}`;if(b(e,t))return t}for(let t of v){let n=e.getAttribute(t);if(!n||!y(n))continue;let r=`[${t}=${JSON.stringify(n)}]`;if(b(e,r))return r;let i=`${e.tagName.toLowerCase()}${r}`;if(b(e,i))return i}return null},S=e=>{let t=[],n=_(e),r=e;for(;r;){if(r instanceof HTMLElement&&r.id){t.unshift(`#${g(r.id)}`);break}let e=r.parentElement;if(!e){t.unshift(r.tagName.toLowerCase());break}let i=Array.from(e.children).indexOf(r),a=i>=0?i+1:1;if(t.unshift(`${r.tagName.toLowerCase()}:nth-child(${a})`),e===n){t.unshift(n.tagName.toLowerCase());break}r=e}return t.join(` > `)},C=(e,t=!0)=>{let n=x(e);if(n)return n;if(t)try{let t=h(e,_(e),200,(e,t)=>r(e,t)||v.has(e)&&y(t));if(t)return t}catch{}return S(e)},w=new Map([`top`,`right`,`bottom`,`left`].flatMap(e=>[[`border-${e}-style`,e],[`border-${e}-color`,e]]));let T=null;const E=new Map,D=()=>T||(T=document.createElement(`iframe`),T.style.cssText=`position:fixed;left:-9999px;width:0;height:0;border:none;visibility:hidden;`,document.body.appendChild(T),T),O=t=>{let n=E.get(t);if(n)return n;let r=D(),i=r.contentDocument,a=i.createElement(t);i.body.appendChild(a);let o=r.contentWindow.getComputedStyle(a),s=new Map;for(let t of e.nt){let e=o.getPropertyValue(t);e&&s.set(t,e)}return a.remove(),E.set(t,s),s},k=(e,t)=>{let n=w.get(e);if(!n)return!1;let r=t.getPropertyValue(`border-${n}-width`);return r===`0px`||r===`0`},A=t=>{let n=O(t.tagName.toLowerCase()),r=getComputedStyle(t),i=[];for(let t of e.nt){let e=r.getPropertyValue(t);e&&e!==n.get(t)&&(k(t,r)||i.push(`${t}: ${e};`))}let a=t.getAttribute(`class`)?.trim(),o=i.join(`
10
+ `);return a?o?`className: ${a}\n\n${o}`:`className: ${a}`:o},j=()=>{T?.remove(),T=null,E.clear()};Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return j}});
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license MIT
3
+ *
4
+ * Copyright (c) 2025 Aiden Bai
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ const e=require(`./freeze-updates-HHyWtz8f.cjs`),t=new Set([`role`,`name`,`aria-label`,`rel`,`href`]),n=e=>{if(!/^[a-z\-]{3,}$/i.test(e))return!1;let t=e.split(/-|[A-Z]/);for(let e of t)if(e.length<=2||/[^aeiou]{4,}/i.test(e))return!1;return!0},r=(e,r)=>{let i=t.has(e)||e.startsWith(`data-`)&&n(e),a=n(r)&&r.length<100||r.startsWith(`#`)&&n(r.slice(1));return i&&a},i=e=>{let t=e[0].name;for(let n=1;n<e.length;n++)t=`${e[n].name} > ${t}`;return t},a=e=>{let t=0;for(let n of e)t+=n.penalty;return t},o=(e,t)=>a(e)-a(t),s=(e,t)=>{let n=e.parentNode;if(!n)return;let r=n.firstChild;if(!r)return;let i=0;for(;r&&(r.nodeType===Node.ELEMENT_NODE&&(t===void 0||r.tagName.toLowerCase()===t)&&i++,r!==e);)r=r.nextSibling;return i},c=(e,t)=>e===`html`?`html`:`${e}:nth-child(${t})`,l=(e,t)=>e===`html`?`html`:`${e}:nth-of-type(${t})`,u=(e,t)=>{let r=[],i=e.getAttribute(`id`),a=e.tagName.toLowerCase();i&&n(i)&&r.push({name:`#${CSS.escape(i)}`,penalty:0});for(let t of e.classList)n(t)&&r.push({name:`.${CSS.escape(t)}`,penalty:1});for(let n of e.attributes)t(n.name,n.value)&&r.push({name:`[${CSS.escape(n.name)}="${CSS.escape(n.value)}"]`,penalty:2});r.push({name:a,penalty:5});let o=s(e,a);o!==void 0&&r.push({name:l(a,o),penalty:10});let u=s(e);return u!==void 0&&r.push({name:c(a,u),penalty:50}),r},d=(t,n=e.G,r=[])=>{if(n<=0)return[];if(t.length===0)return[r];let i=[];for(let e of t[0]){let a=n-i.length;if(a<=0)break;i.push(...d(t.slice(1),a,[...r,e]))}return i},f=(e,t)=>{let n=t.getRootNode?.();return n instanceof ShadowRoot?n:e.nodeType===Node.DOCUMENT_NODE?e:e.ownerDocument},p=(e,t)=>t.querySelectorAll(i(e)).length===1,m=(e,t)=>{let n=e,r=[];for(;n&&n!==t;){let e=n.tagName.toLowerCase(),t=s(n,e);if(t===void 0)return;r.push({name:l(e,t),penalty:10}),n=n.parentElement}return p(r,t)?r:void 0},h=(e,t,n,r)=>{if(e.nodeType!==Node.ELEMENT_NODE)throw Error(`Can't generate CSS selector for non-element node type.`);if(e.tagName.toLowerCase()===`html`)return`html`;let a=f(t,e),s=Date.now(),c=[],l=e,h=0,g;for(;l&&l!==a&&!g;)if(c.push(u(l,r)),l=l.parentElement,h++,h>=3){let t=d(c);t.sort(o);for(let r of t){if(Date.now()-s>n){let t=m(e,a);if(!t)throw Error(`Timeout: Can't find a unique selector after ${n}ms`);return i(t)}if(p(r,a)){g=r;break}}}if(!g&&h<3){let e=d(c);e.sort(o);for(let t of e){if(Date.now()-s>n)break;if(p(t,a)){g=t;break}}}if(!g)throw Error(`Selector was not found.`);return i(g)},g=e=>typeof CSS<`u`&&typeof CSS.escape==`function`?CSS.escape(e):e.replace(/[^a-zA-Z0-9_-]/g,e=>`\\${e}`),_=e=>e.ownerDocument.body??e.ownerDocument.documentElement,v=new Set([`data-testid`,`data-test-id`,`data-test`,`data-cy`,`data-qa`,`aria-label`,`role`,`name`,`title`,`alt`]),y=e=>e.length>0&&e.length<=120,b=(e,t)=>{try{let n=e.ownerDocument.querySelectorAll(t);return n.length===1&&n[0]===e}catch{return!1}},x=e=>{if(e instanceof HTMLElement&&e.id){let t=`#${g(e.id)}`;if(b(e,t))return t}for(let t of v){let n=e.getAttribute(t);if(!n||!y(n))continue;let r=`[${t}=${JSON.stringify(n)}]`;if(b(e,r))return r;let i=`${e.tagName.toLowerCase()}${r}`;if(b(e,i))return i}return null},S=e=>{let t=[],n=_(e),r=e;for(;r;){if(r instanceof HTMLElement&&r.id){t.unshift(`#${g(r.id)}`);break}let e=r.parentElement;if(!e){t.unshift(r.tagName.toLowerCase());break}let i=Array.from(e.children).indexOf(r),a=i>=0?i+1:1;if(t.unshift(`${r.tagName.toLowerCase()}:nth-child(${a})`),e===n){t.unshift(n.tagName.toLowerCase());break}r=e}return t.join(` > `)},C=(e,t=!0)=>{let n=x(e);if(n)return n;if(t)try{let t=h(e,_(e),200,(e,t)=>r(e,t)||v.has(e)&&y(t));if(t)return t}catch{}return S(e)},w=new Map([`top`,`right`,`bottom`,`left`].flatMap(e=>[[`border-${e}-style`,e],[`border-${e}-color`,e]]));let T=null;const E=new Map,D=()=>T||(T=document.createElement(`iframe`),T.style.cssText=`position:fixed;left:-9999px;width:0;height:0;border:none;visibility:hidden;`,document.body.appendChild(T),T),O=t=>{let n=E.get(t);if(n)return n;let r=D(),i=r.contentDocument,a=i.createElement(t);i.body.appendChild(a);let o=r.contentWindow.getComputedStyle(a),s=new Map;for(let t of e.it){let e=o.getPropertyValue(t);e&&s.set(t,e)}return a.remove(),E.set(t,s),s},k=(e,t)=>{let n=w.get(e);if(!n)return!1;let r=t.getPropertyValue(`border-${n}-width`);return r===`0px`||r===`0`},A=t=>{let n=O(t.tagName.toLowerCase()),r=getComputedStyle(t),i=[];for(let t of e.it){let e=r.getPropertyValue(t);e&&e!==n.get(t)&&(k(t,r)||i.push(`${t}: ${e};`))}let a=t.getAttribute(`class`)?.trim(),o=i.join(`
10
+ `);return a?o?`className: ${a}\n\n${o}`:`className: ${a}`:o},j=()=>{T?.remove(),T=null,E.clear()};Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return j}});