renovate-log-parser 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/README.md +119 -34
  2. package/dist/commands/install-analyze-skill.d.ts +0 -1
  3. package/dist/commands/install-analyze-skill.js +15 -12
  4. package/dist/commands/install-analyze-skill.js.map +1 -1
  5. package/dist/commands/web.d.ts +2 -1
  6. package/dist/commands/web.js +23 -11
  7. package/dist/commands/web.js.map +1 -1
  8. package/dist/core/skill-template.js +17 -3
  9. package/dist/core/skill-template.js.map +1 -1
  10. package/dist/server/api.d.ts +16 -0
  11. package/dist/server/api.js +173 -0
  12. package/dist/server/api.js.map +1 -0
  13. package/dist/server/http-error.d.ts +18 -0
  14. package/dist/server/http-error.js +23 -0
  15. package/dist/server/http-error.js.map +1 -0
  16. package/dist/server/index.d.ts +34 -0
  17. package/dist/server/index.js +54 -0
  18. package/dist/server/index.js.map +1 -0
  19. package/dist/server/log-registry.d.ts +34 -0
  20. package/dist/server/log-registry.js +157 -0
  21. package/dist/server/log-registry.js.map +1 -0
  22. package/dist/server/server-main.d.ts +1 -0
  23. package/dist/server/server-main.js +31 -0
  24. package/dist/server/server-main.js.map +1 -0
  25. package/dist/server/translate-filters.d.ts +58 -0
  26. package/dist/server/translate-filters.js +119 -0
  27. package/dist/server/translate-filters.js.map +1 -0
  28. package/package.json +13 -5
  29. package/web/.output/public/200.html +1 -0
  30. package/web/.output/public/404.html +1 -0
  31. package/web/.output/public/_nuxt/BDNMzG2s.js +1 -0
  32. package/web/.output/public/_nuxt/BjDV6v2h.js +1 -0
  33. package/web/.output/public/_nuxt/CVlqYHPc.js +6 -0
  34. package/web/.output/public/_nuxt/CuOsDQlp.js +1 -0
  35. package/web/.output/public/_nuxt/CztOM3Aq.js +28 -0
  36. package/web/.output/public/_nuxt/D3wuHpM_.js +3 -0
  37. package/web/.output/public/_nuxt/DK3Fl9T5.js +1 -0
  38. package/web/.output/public/_nuxt/DUXEQ2Eh.js +3 -0
  39. package/web/.output/public/_nuxt/DVWtRbHb.js +1 -0
  40. package/web/.output/public/_nuxt/DeS15jQo.js +1 -0
  41. package/web/.output/public/_nuxt/XP9RigIT.js +1 -0
  42. package/web/.output/public/_nuxt/builds/latest.json +1 -1
  43. package/web/.output/public/_nuxt/builds/meta/f68582c9-55a9-4352-b85a-d7f8de6f7202.json +1 -0
  44. package/web/.output/public/_nuxt/entry.BlZrUrUl.css +2 -0
  45. package/web/.output/public/_nuxt/error-404.zKZBzOko.css +1 -0
  46. package/web/.output/public/_nuxt/error-500.DwXcJPfY.css +1 -0
  47. package/web/.output/public/_nuxt/lGYp6_9X.js +1 -0
  48. package/web/.output/public/_nuxt/pages.BDcbBSnU.css +1 -0
  49. package/web/.output/public/_nuxt/public-sans-latin-400-italic.B1appi_f.woff2 +0 -0
  50. package/web/.output/public/_nuxt/public-sans-latin-400-italic.DsCWG5h0.woff +0 -0
  51. package/web/.output/public/_nuxt/public-sans-latin-400-normal.8Rpg0ruU.woff2 +0 -0
  52. package/web/.output/public/_nuxt/public-sans-latin-400-normal.SBbinRkI.woff +0 -0
  53. package/web/.output/public/_nuxt/public-sans-latin-500-normal.NlrCPXnF.woff2 +0 -0
  54. package/web/.output/public/_nuxt/public-sans-latin-500-normal.vCxiVFAq.woff +0 -0
  55. package/web/.output/public/_nuxt/public-sans-latin-600-normal.BR59oU-I.woff +0 -0
  56. package/web/.output/public/_nuxt/public-sans-latin-600-normal.Fru-LXNs.woff2 +0 -0
  57. package/web/.output/public/_nuxt/public-sans-latin-700-normal.BqJmxWdE.woff2 +0 -0
  58. package/web/.output/public/_nuxt/public-sans-latin-700-normal.Dm-oTPSL.woff +0 -0
  59. package/web/.output/public/favicon-dark.svg +32 -0
  60. package/web/.output/public/favicon-light.svg +32 -0
  61. package/web/.output/public/index.html +1 -0
  62. package/web/.output/nitro.json +0 -15
  63. package/web/.output/public/_fonts/57NSSoFy1VLVs2gqly8Ls9awBnZMFyXGrefpmqvdqmc-zJfbBtpgM4cDmcXBsqZNW79_kFnlpPd62b48glgdydA.woff2 +0 -0
  64. package/web/.output/public/_fonts/8VR2wSMN-3U4NbWAVYXlkRV6hA0jFBXP-0RtL3X7fko-x2gYI4qfmkRdxyQQUPaBZdZdgl1TeVrquF_TxHeM4lM.woff2 +0 -0
  65. package/web/.output/public/_fonts/GsKUclqeNLJ96g5AU593ug6yanivOiwjW_7zESNPChw-jHA4tBeM1bjF7LATGUpfBuSTyomIFrWBTzjF7txVYfg.woff2 +0 -0
  66. package/web/.output/public/_fonts/Ld1FnTo3yTIwDyGfTQ5-Fws9AWsCbKfMvgxduXr7JcY-W25bL8NF1fjpLRSOgJb7RoZPHqGQNwMTM7S9tHVoxx8.woff2 +0 -0
  67. package/web/.output/public/_fonts/NdzqRASp2bovDUhQT1IRE_EMqKJ2KYQdTCfFcBvL8yw-KhwZiS86o3fErOe5GGMExHUemmI_dBfaEFxjISZrBd0.woff2 +0 -0
  68. package/web/.output/public/_fonts/iTkrULNFJJkTvihIg1Vqi5IODRH_9btXCioVF5l98I8-AndUyau2HR2felA_ra8V2mutQgschhasE5FD1dXGJX8.woff2 +0 -0
  69. package/web/.output/public/_nuxt/BWja8e3M.js +0 -37
  70. package/web/.output/public/_nuxt/BgApMHS1.js +0 -1
  71. package/web/.output/public/_nuxt/CGPWRqbc.js +0 -1
  72. package/web/.output/public/_nuxt/DlAUqK2U.js +0 -1
  73. package/web/.output/public/_nuxt/Sgtec1U0.js +0 -1
  74. package/web/.output/public/_nuxt/builds/meta/785e7885-8d38-4aac-a7f6-735f68d27e63.json +0 -1
  75. package/web/.output/public/_nuxt/entry.9mB-pyEY.css +0 -1
  76. package/web/.output/public/_nuxt/error-404.B_PvSG-P.css +0 -1
  77. package/web/.output/public/_nuxt/error-500.CghkKCEr.css +0 -1
  78. package/web/.output/public/_nuxt/index.BlvAG7F6.css +0 -1
  79. package/web/.output/public/favicon.ico +0 -0
  80. package/web/.output/server/chunks/_/error-500.mjs +0 -19
  81. package/web/.output/server/chunks/_/error-500.mjs.map +0 -1
  82. package/web/.output/server/chunks/_/icons.mjs +0 -6153
  83. package/web/.output/server/chunks/_/icons.mjs.map +0 -1
  84. package/web/.output/server/chunks/_/icons2.mjs +0 -11494
  85. package/web/.output/server/chunks/_/icons2.mjs.map +0 -1
  86. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +0 -10
  87. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +0 -1
  88. package/web/.output/server/chunks/build/client.precomputed.mjs +0 -4
  89. package/web/.output/server/chunks/build/client.precomputed.mjs.map +0 -1
  90. package/web/.output/server/chunks/build/error-404-DOK13euR.mjs +0 -106
  91. package/web/.output/server/chunks/build/error-404-DOK13euR.mjs.map +0 -1
  92. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs +0 -8
  93. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs.map +0 -1
  94. package/web/.output/server/chunks/build/error-500-DKHEaocY.mjs +0 -89
  95. package/web/.output/server/chunks/build/error-500-DKHEaocY.mjs.map +0 -1
  96. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs +0 -8
  97. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs.map +0 -1
  98. package/web/.output/server/chunks/build/index-D_lNB6LA.mjs +0 -19675
  99. package/web/.output/server/chunks/build/index-D_lNB6LA.mjs.map +0 -1
  100. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs +0 -8
  101. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs.map +0 -1
  102. package/web/.output/server/chunks/build/server.mjs +0 -7910
  103. package/web/.output/server/chunks/build/server.mjs.map +0 -1
  104. package/web/.output/server/chunks/build/styles.mjs +0 -10
  105. package/web/.output/server/chunks/build/styles.mjs.map +0 -1
  106. package/web/.output/server/chunks/nitro/nitro.mjs +0 -6944
  107. package/web/.output/server/chunks/nitro/nitro.mjs.map +0 -1
  108. package/web/.output/server/chunks/routes/api/fields.get.mjs +0 -27
  109. package/web/.output/server/chunks/routes/api/fields.get.mjs.map +0 -1
  110. package/web/.output/server/chunks/routes/api/findings.get.mjs +0 -30
  111. package/web/.output/server/chunks/routes/api/findings.get.mjs.map +0 -1
  112. package/web/.output/server/chunks/routes/api/log/contents.post.mjs +0 -29
  113. package/web/.output/server/chunks/routes/api/log/contents.post.mjs.map +0 -1
  114. package/web/.output/server/chunks/routes/api/log/path.post.mjs +0 -30
  115. package/web/.output/server/chunks/routes/api/log/path.post.mjs.map +0 -1
  116. package/web/.output/server/chunks/routes/api/repositories.get.mjs +0 -27
  117. package/web/.output/server/chunks/routes/api/repositories.get.mjs.map +0 -1
  118. package/web/.output/server/chunks/routes/api/rows.get.mjs +0 -48
  119. package/web/.output/server/chunks/routes/api/rows.get.mjs.map +0 -1
  120. package/web/.output/server/chunks/routes/renderer.mjs +0 -451
  121. package/web/.output/server/chunks/routes/renderer.mjs.map +0 -1
  122. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs +0 -4
  123. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +0 -1
  124. package/web/.output/server/index.mjs +0 -16
  125. package/web/.output/server/index.mjs.map +0 -1
  126. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.mjs +0 -290
  127. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +0 -49
  128. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/dist/index.mjs +0 -257
  129. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/package.json +0 -53
  130. package/web/.output/server/node_modules/@babel/parser/lib/index.js +0 -14599
  131. package/web/.output/server/node_modules/@babel/parser/package.json +0 -50
  132. package/web/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +0 -1038
  133. package/web/.output/server/node_modules/@floating-ui/core/package.json +0 -63
  134. package/web/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +0 -789
  135. package/web/.output/server/node_modules/@floating-ui/dom/package.json +0 -72
  136. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +0 -165
  137. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +0 -136
  138. package/web/.output/server/node_modules/@floating-ui/utils/package.json +0 -70
  139. package/web/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +0 -190
  140. package/web/.output/server/node_modules/@floating-ui/vue/package.json +0 -71
  141. package/web/.output/server/node_modules/@iconify/utils/lib/colors/index.js +0 -295
  142. package/web/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +0 -701
  143. package/web/.output/server/node_modules/@iconify/utils/lib/css/common.js +0 -75
  144. package/web/.output/server/node_modules/@iconify/utils/lib/css/format.js +0 -39
  145. package/web/.output/server/node_modules/@iconify/utils/lib/css/icon.js +0 -47
  146. package/web/.output/server/node_modules/@iconify/utils/lib/css/icons.js +0 -128
  147. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +0 -19
  148. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +0 -13
  149. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +0 -17
  150. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +0 -16
  151. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +0 -30
  152. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +0 -78
  153. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +0 -100
  154. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +0 -28
  155. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +0 -58
  156. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +0 -48
  157. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +0 -203
  158. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +0 -33
  159. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +0 -132
  160. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +0 -165
  161. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +0 -79
  162. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +0 -92
  163. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +0 -26
  164. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +0 -76
  165. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +0 -66
  166. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +0 -45
  167. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +0 -103
  168. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +0 -36
  169. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +0 -92
  170. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +0 -62
  171. package/web/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +0 -25
  172. package/web/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +0 -16
  173. package/web/.output/server/node_modules/@iconify/utils/lib/icon/name.js +0 -57
  174. package/web/.output/server/node_modules/@iconify/utils/lib/icon/square.js +0 -33
  175. package/web/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +0 -12
  176. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +0 -125
  177. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +0 -19
  178. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +0 -25
  179. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +0 -36
  180. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +0 -91
  181. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +0 -46
  182. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +0 -23
  183. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +0 -42
  184. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +0 -123
  185. package/web/.output/server/node_modules/@iconify/utils/lib/index.js +0 -52
  186. package/web/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +0 -30
  187. package/web/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +0 -26
  188. package/web/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +0 -27
  189. package/web/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +0 -105
  190. package/web/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +0 -26
  191. package/web/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +0 -26
  192. package/web/.output/server/node_modules/@iconify/utils/lib/misc/title.js +0 -9
  193. package/web/.output/server/node_modules/@iconify/utils/lib/svg/build.js +0 -113
  194. package/web/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +0 -31
  195. package/web/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +0 -13
  196. package/web/.output/server/node_modules/@iconify/utils/lib/svg/html.js +0 -9
  197. package/web/.output/server/node_modules/@iconify/utils/lib/svg/id.js +0 -41
  198. package/web/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +0 -22
  199. package/web/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +0 -67
  200. package/web/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +0 -54
  201. package/web/.output/server/node_modules/@iconify/utils/lib/svg/size.js +0 -27
  202. package/web/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +0 -7
  203. package/web/.output/server/node_modules/@iconify/utils/lib/svg/url.js +0 -22
  204. package/web/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +0 -8
  205. package/web/.output/server/node_modules/@iconify/utils/package.json +0 -119
  206. package/web/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +0 -1896
  207. package/web/.output/server/node_modules/@iconify/vue/package.json +0 -62
  208. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +0 -1268
  209. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +0 -34
  210. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +0 -74
  211. package/web/.output/server/node_modules/@tanstack/virtual-core/package.json +0 -56
  212. package/web/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +0 -66
  213. package/web/.output/server/node_modules/@tanstack/vue-virtual/package.json +0 -68
  214. package/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +0 -6759
  215. package/web/.output/server/node_modules/@vue/compiler-core/package.json +0 -58
  216. package/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +0 -689
  217. package/web/.output/server/node_modules/@vue/compiler-dom/package.json +0 -57
  218. package/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +0 -1413
  219. package/web/.output/server/node_modules/@vue/compiler-ssr/package.json +0 -34
  220. package/web/.output/server/node_modules/@vue/devtools-api/dist/index.js +0 -2
  221. package/web/.output/server/node_modules/@vue/devtools-api/package.json +0 -34
  222. package/web/.output/server/node_modules/@vue/devtools-kit/dist/index.js +0 -5670
  223. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/dist/index.mjs +0 -290
  224. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/package.json +0 -49
  225. package/web/.output/server/node_modules/@vue/devtools-kit/package.json +0 -44
  226. package/web/.output/server/node_modules/@vue/devtools-shared/dist/index.js +0 -239
  227. package/web/.output/server/node_modules/@vue/devtools-shared/package.json +0 -33
  228. package/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +0 -1899
  229. package/web/.output/server/node_modules/@vue/reactivity/package.json +0 -55
  230. package/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +0 -6940
  231. package/web/.output/server/node_modules/@vue/runtime-core/package.json +0 -52
  232. package/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +0 -1822
  233. package/web/.output/server/node_modules/@vue/runtime-dom/package.json +0 -60
  234. package/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +0 -896
  235. package/web/.output/server/node_modules/@vue/server-renderer/package.json +0 -55
  236. package/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +0 -604
  237. package/web/.output/server/node_modules/@vue/shared/package.json +0 -47
  238. package/web/.output/server/node_modules/@vueuse/core/dist/index.js +0 -8464
  239. package/web/.output/server/node_modules/@vueuse/core/package.json +0 -49
  240. package/web/.output/server/node_modules/@vueuse/shared/dist/index.js +0 -2013
  241. package/web/.output/server/node_modules/@vueuse/shared/package.json +0 -42
  242. package/web/.output/server/node_modules/aria-hidden/dist/es5/index.js +0 -174
  243. package/web/.output/server/node_modules/aria-hidden/package.json +0 -71
  244. package/web/.output/server/node_modules/birpc/dist/index.mjs +0 -291
  245. package/web/.output/server/node_modules/birpc/package.json +0 -57
  246. package/web/.output/server/node_modules/consola/dist/chunks/prompt.mjs +0 -280
  247. package/web/.output/server/node_modules/consola/dist/core.mjs +0 -512
  248. package/web/.output/server/node_modules/consola/dist/index.mjs +0 -651
  249. package/web/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +0 -72
  250. package/web/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +0 -288
  251. package/web/.output/server/node_modules/consola/package.json +0 -136
  252. package/web/.output/server/node_modules/devalue/index.js +0 -4
  253. package/web/.output/server/node_modules/devalue/package.json +0 -40
  254. package/web/.output/server/node_modules/devalue/src/base64.js +0 -60
  255. package/web/.output/server/node_modules/devalue/src/constants.js +0 -12
  256. package/web/.output/server/node_modules/devalue/src/parse.js +0 -283
  257. package/web/.output/server/node_modules/devalue/src/stringify.js +0 -401
  258. package/web/.output/server/node_modules/devalue/src/uneval.js +0 -552
  259. package/web/.output/server/node_modules/devalue/src/utils.js +0 -160
  260. package/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +0 -77
  261. package/web/.output/server/node_modules/entities/dist/commonjs/decode.js +0 -568
  262. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +0 -7
  263. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +0 -7
  264. package/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +0 -21
  265. package/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +0 -31
  266. package/web/.output/server/node_modules/entities/dist/commonjs/package.json +0 -3
  267. package/web/.output/server/node_modules/entities/package.json +0 -120
  268. package/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +0 -344
  269. package/web/.output/server/node_modules/estree-walker/package.json +0 -37
  270. package/web/.output/server/node_modules/hookable/dist/index.mjs +0 -257
  271. package/web/.output/server/node_modules/hookable/package.json +0 -53
  272. package/web/.output/server/node_modules/nostics/dist/index.mjs +0 -179
  273. package/web/.output/server/node_modules/nostics/package.json +0 -124
  274. package/web/.output/server/node_modules/perfect-debounce/dist/index.mjs +0 -89
  275. package/web/.output/server/node_modules/perfect-debounce/package.json +0 -41
  276. package/web/.output/server/node_modules/rou3/dist/index.mjs +0 -501
  277. package/web/.output/server/node_modules/rou3/package.json +0 -48
  278. package/web/.output/server/node_modules/source-map-js/lib/array-set.js +0 -121
  279. package/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js +0 -140
  280. package/web/.output/server/node_modules/source-map-js/lib/base64.js +0 -67
  281. package/web/.output/server/node_modules/source-map-js/lib/binary-search.js +0 -111
  282. package/web/.output/server/node_modules/source-map-js/lib/mapping-list.js +0 -79
  283. package/web/.output/server/node_modules/source-map-js/lib/quick-sort.js +0 -132
  284. package/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +0 -1188
  285. package/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js +0 -444
  286. package/web/.output/server/node_modules/source-map-js/lib/source-node.js +0 -413
  287. package/web/.output/server/node_modules/source-map-js/lib/util.js +0 -594
  288. package/web/.output/server/node_modules/source-map-js/package.json +0 -71
  289. package/web/.output/server/node_modules/source-map-js/source-map.js +0 -8
  290. package/web/.output/server/node_modules/srvx/dist/_chunks/_body-limit.mjs +0 -39
  291. package/web/.output/server/node_modules/srvx/dist/_chunks/_plugins.mjs +0 -56
  292. package/web/.output/server/node_modules/srvx/dist/_chunks/_trust-proxy.mjs +0 -58
  293. package/web/.output/server/node_modules/srvx/dist/_chunks/_url.mjs +0 -134
  294. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils.mjs +0 -15
  295. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils2.mjs +0 -75
  296. package/web/.output/server/node_modules/srvx/dist/adapters/node.mjs +0 -976
  297. package/web/.output/server/node_modules/srvx/package.json +0 -102
  298. package/web/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +0 -3365
  299. package/web/.output/server/node_modules/tailwind-merge/package.json +0 -93
  300. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js +0 -112
  301. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-RZF76H2U.js +0 -269
  302. package/web/.output/server/node_modules/tailwind-variants/dist/index.js +0 -38
  303. package/web/.output/server/node_modules/tailwind-variants/package.json +0 -122
  304. package/web/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +0 -1
  305. package/web/.output/server/node_modules/tailwindcss/dist/colors.mjs +0 -1
  306. package/web/.output/server/node_modules/tailwindcss/package.json +0 -89
  307. package/web/.output/server/node_modules/ufo/dist/index.mjs +0 -645
  308. package/web/.output/server/node_modules/ufo/package.json +0 -48
  309. package/web/.output/server/node_modules/unhead/dist/index.mjs +0 -9
  310. package/web/.output/server/node_modules/unhead/dist/parser.mjs +0 -508
  311. package/web/.output/server/node_modules/unhead/dist/plugins.mjs +0 -101
  312. package/web/.output/server/node_modules/unhead/dist/scripts.mjs +0 -30
  313. package/web/.output/server/node_modules/unhead/dist/server.mjs +0 -180
  314. package/web/.output/server/node_modules/unhead/dist/shared/unhead.B3VbJo7Y.mjs +0 -207
  315. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +0 -43
  316. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +0 -269
  317. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CaI5ZD4O.mjs +0 -182
  318. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +0 -71
  319. package/web/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +0 -236
  320. package/web/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +0 -196
  321. package/web/.output/server/node_modules/unhead/dist/shared/unhead.Dh1cQCTe.mjs +0 -44
  322. package/web/.output/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +0 -166
  323. package/web/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +0 -38
  324. package/web/.output/server/node_modules/unhead/dist/utils.mjs +0 -5
  325. package/web/.output/server/node_modules/unhead/node_modules/hookable/dist/index.mjs +0 -257
  326. package/web/.output/server/node_modules/unhead/node_modules/hookable/package.json +0 -53
  327. package/web/.output/server/node_modules/unhead/package.json +0 -105
  328. package/web/.output/server/node_modules/vue/dist/vue.cjs.js +0 -80
  329. package/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js +0 -66
  330. package/web/.output/server/node_modules/vue/index.js +0 -7
  331. package/web/.output/server/node_modules/vue/index.mjs +0 -1
  332. package/web/.output/server/node_modules/vue/package.json +0 -112
  333. package/web/.output/server/node_modules/vue/server-renderer/index.mjs +0 -1
  334. package/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +0 -249
  335. package/web/.output/server/node_modules/vue-bundle-renderer/package.json +0 -57
  336. package/web/.output/server/node_modules/vue-demi/lib/index.mjs +0 -34
  337. package/web/.output/server/node_modules/vue-demi/package.json +0 -47
  338. package/web/.output/server/node_modules/vue-router/dist/devtools-Bpr7ZAVB.js +0 -1056
  339. package/web/.output/server/node_modules/vue-router/dist/useApi-CROJJdhE.js +0 -436
  340. package/web/.output/server/node_modules/vue-router/dist/vue-router.js +0 -1543
  341. package/web/.output/server/node_modules/vue-router/package.json +0 -214
  342. package/web/.output/server/node_modules/vue-router/vue-router.node.mjs +0 -2
  343. package/web/.output/server/package.json +0 -51
@@ -1,1268 +0,0 @@
1
- import { createLazyMeasurementsView } from "./lazy-measurements.js";
2
- import { memo, notUndefined, approxEqual, debounce } from "./utils.js";
3
- let _isIOSResult;
4
- const isIOSWebKit = () => {
5
- if (_isIOSResult !== void 0) return _isIOSResult;
6
- if (typeof navigator === "undefined") return _isIOSResult = false;
7
- if (/iP(hone|od|ad)/.test(navigator.userAgent)) return _isIOSResult = true;
8
- const mtp = navigator.maxTouchPoints;
9
- return _isIOSResult = navigator.platform === "MacIntel" && mtp !== void 0 && mtp > 0;
10
- };
11
- const _resetIOSDetectionForTests = () => {
12
- _isIOSResult = void 0;
13
- };
14
- const getRect = (element) => {
15
- const { offsetWidth, offsetHeight } = element;
16
- return { width: offsetWidth, height: offsetHeight };
17
- };
18
- const defaultKeyExtractor = (index) => index;
19
- const defaultRangeExtractor = (range) => {
20
- const start = Math.max(range.startIndex - range.overscan, 0);
21
- const end = Math.min(range.endIndex + range.overscan, range.count - 1);
22
- const len = end - start + 1;
23
- const arr = new Array(len);
24
- for (let i = 0; i < len; i++) {
25
- arr[i] = start + i;
26
- }
27
- return arr;
28
- };
29
- const observeElementRect = (instance, cb) => {
30
- const element = instance.scrollElement;
31
- if (!element) {
32
- return;
33
- }
34
- const targetWindow = instance.targetWindow;
35
- if (!targetWindow) {
36
- return;
37
- }
38
- const handler = (rect) => {
39
- const { width, height } = rect;
40
- cb({ width: Math.round(width), height: Math.round(height) });
41
- };
42
- handler(getRect(element));
43
- if (!targetWindow.ResizeObserver) {
44
- return () => {
45
- };
46
- }
47
- const observer = new targetWindow.ResizeObserver((entries) => {
48
- const run = () => {
49
- const entry = entries[0];
50
- if (entry == null ? void 0 : entry.borderBoxSize) {
51
- const box = entry.borderBoxSize[0];
52
- if (box) {
53
- handler({ width: box.inlineSize, height: box.blockSize });
54
- return;
55
- }
56
- }
57
- handler(getRect(element));
58
- };
59
- instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();
60
- });
61
- observer.observe(element, { box: "border-box" });
62
- return () => {
63
- observer.unobserve(element);
64
- };
65
- };
66
- const addEventListenerOptions = {
67
- passive: true
68
- };
69
- const observeWindowRect = (instance, cb) => {
70
- const element = instance.scrollElement;
71
- if (!element) {
72
- return;
73
- }
74
- const handler = () => {
75
- cb({ width: element.innerWidth, height: element.innerHeight });
76
- };
77
- handler();
78
- element.addEventListener("resize", handler, addEventListenerOptions);
79
- return () => {
80
- element.removeEventListener("resize", handler);
81
- };
82
- };
83
- const supportsScrollend = typeof window == "undefined" ? true : "onscrollend" in window;
84
- const observeOffset = (instance, cb, readOffset) => {
85
- const element = instance.scrollElement;
86
- if (!element) {
87
- return;
88
- }
89
- const targetWindow = instance.targetWindow;
90
- if (!targetWindow) {
91
- return;
92
- }
93
- const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;
94
- let offset = 0;
95
- const fallback = registerScrollendEvent ? null : debounce(
96
- targetWindow,
97
- () => cb(offset, false),
98
- instance.options.isScrollingResetDelay
99
- );
100
- const createHandler = (isScrolling) => () => {
101
- offset = readOffset(element);
102
- fallback == null ? void 0 : fallback();
103
- cb(offset, isScrolling);
104
- };
105
- const handler = createHandler(true);
106
- const endHandler = createHandler(false);
107
- element.addEventListener("scroll", handler, addEventListenerOptions);
108
- if (registerScrollendEvent) {
109
- element.addEventListener("scrollend", endHandler, addEventListenerOptions);
110
- }
111
- return () => {
112
- element.removeEventListener("scroll", handler);
113
- if (registerScrollendEvent) {
114
- element.removeEventListener("scrollend", endHandler);
115
- }
116
- };
117
- };
118
- const observeElementOffset = (instance, cb) => observeOffset(instance, cb, (el) => {
119
- const { horizontal, isRtl } = instance.options;
120
- return horizontal ? el.scrollLeft * (isRtl && -1 || 1) : el.scrollTop;
121
- });
122
- const observeWindowOffset = (instance, cb) => observeOffset(
123
- instance,
124
- cb,
125
- (win) => instance.options.horizontal ? win.scrollX : win.scrollY
126
- );
127
- const measureElement = (element, entry, instance) => {
128
- if (instance.options.useCachedMeasurements) {
129
- const index = instance.indexFromElement(element);
130
- const key = instance.options.getItemKey(index);
131
- return instance.itemSizeCache.get(key) ?? instance.options.estimateSize(index);
132
- }
133
- if (entry == null ? void 0 : entry.borderBoxSize) {
134
- const box = entry.borderBoxSize[0];
135
- if (box) {
136
- const size = Math.round(
137
- box[instance.options.horizontal ? "inlineSize" : "blockSize"]
138
- );
139
- return size;
140
- }
141
- }
142
- if (!entry) {
143
- const index = instance.indexFromElement(element);
144
- const key = instance.options.getItemKey(index);
145
- const cachedSize = instance.itemSizeCache.get(key);
146
- if (cachedSize !== void 0) {
147
- return cachedSize;
148
- }
149
- }
150
- return element[instance.options.horizontal ? "offsetWidth" : "offsetHeight"];
151
- };
152
- const scrollWithAdjustments = (offset, {
153
- adjustments = 0,
154
- behavior
155
- }, instance) => {
156
- var _a, _b;
157
- (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {
158
- [instance.options.horizontal ? "left" : "top"]: offset + adjustments,
159
- behavior
160
- });
161
- };
162
- const windowScroll = scrollWithAdjustments;
163
- const elementScroll = scrollWithAdjustments;
164
- class Virtualizer {
165
- constructor(opts) {
166
- this.unsubs = [];
167
- this.scrollElement = null;
168
- this.targetWindow = null;
169
- this.isScrolling = false;
170
- this.scrollState = null;
171
- this.measurementsCache = [];
172
- this._flatMeasurements = null;
173
- this.itemSizeCache = /* @__PURE__ */ new Map();
174
- this.itemSizeCacheVersion = 0;
175
- this.laneAssignments = /* @__PURE__ */ new Map();
176
- this.pendingMin = null;
177
- this.prevLanes = void 0;
178
- this.lanesChangedFlag = false;
179
- this.lanesSettling = false;
180
- this.pendingScrollAnchor = null;
181
- this.scrollRect = null;
182
- this.scrollOffset = null;
183
- this.scrollDirection = null;
184
- this.scrollAdjustments = 0;
185
- this._iosDeferredAdjustment = 0;
186
- this._iosTouching = false;
187
- this._iosJustTouchEnded = false;
188
- this._iosTouchEndTimerId = null;
189
- this._intendedScrollOffset = null;
190
- this.elementsCache = /* @__PURE__ */ new Map();
191
- this.now = () => {
192
- var _a, _b, _c;
193
- return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();
194
- };
195
- this.observer = /* @__PURE__ */ (() => {
196
- let _ro = null;
197
- const get = () => {
198
- if (_ro) {
199
- return _ro;
200
- }
201
- if (!this.targetWindow || !this.targetWindow.ResizeObserver) {
202
- return null;
203
- }
204
- return _ro = new this.targetWindow.ResizeObserver((entries) => {
205
- entries.forEach((entry) => {
206
- const run = () => {
207
- const node = entry.target;
208
- const index = this.indexFromElement(node);
209
- if (!node.isConnected) {
210
- this.observer.unobserve(node);
211
- for (const [cacheKey, cachedNode] of this.elementsCache) {
212
- if (cachedNode === node) {
213
- this.elementsCache.delete(cacheKey);
214
- break;
215
- }
216
- }
217
- return;
218
- }
219
- if (this.shouldMeasureDuringScroll(index)) {
220
- this.resizeItem(
221
- index,
222
- this.options.measureElement(node, entry, this)
223
- );
224
- }
225
- };
226
- this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();
227
- });
228
- });
229
- };
230
- return {
231
- disconnect: () => {
232
- var _a;
233
- (_a = get()) == null ? void 0 : _a.disconnect();
234
- _ro = null;
235
- },
236
- observe: (target) => {
237
- var _a;
238
- return (_a = get()) == null ? void 0 : _a.observe(target, { box: "border-box" });
239
- },
240
- unobserve: (target) => {
241
- var _a;
242
- return (_a = get()) == null ? void 0 : _a.unobserve(target);
243
- }
244
- };
245
- })();
246
- this.range = null;
247
- this.setOptions = (opts2) => {
248
- var _a, _b;
249
- const merged = {
250
- debug: false,
251
- initialOffset: 0,
252
- overscan: 1,
253
- paddingStart: 0,
254
- paddingEnd: 0,
255
- scrollPaddingStart: 0,
256
- scrollPaddingEnd: 0,
257
- horizontal: false,
258
- getItemKey: defaultKeyExtractor,
259
- rangeExtractor: defaultRangeExtractor,
260
- onChange: () => {
261
- },
262
- measureElement,
263
- initialRect: { width: 0, height: 0 },
264
- scrollMargin: 0,
265
- gap: 0,
266
- indexAttribute: "data-index",
267
- initialMeasurementsCache: [],
268
- lanes: 1,
269
- anchorTo: "start",
270
- followOnAppend: false,
271
- scrollEndThreshold: 1,
272
- isScrollingResetDelay: 150,
273
- enabled: true,
274
- isRtl: false,
275
- useScrollendEvent: false,
276
- useAnimationFrameWithResizeObserver: false,
277
- laneAssignmentMode: "estimate",
278
- useCachedMeasurements: false
279
- };
280
- for (const key in opts2) {
281
- const v = opts2[key];
282
- if (v !== void 0) merged[key] = v;
283
- }
284
- const prevOptions = this.options;
285
- let anchor = null;
286
- let followOnAppend = null;
287
- let edgeKeysChanged = false;
288
- if (prevOptions !== void 0 && prevOptions.enabled && merged.enabled && merged.anchorTo === "end" && this.scrollElement !== null) {
289
- const prevCount = prevOptions.count;
290
- const nextCount = merged.count;
291
- const measurements = this.getMeasurements();
292
- const prevFirstKey = prevCount > 0 ? ((_a = measurements[0]) == null ? void 0 : _a.key) ?? prevOptions.getItemKey(0) : null;
293
- const prevLastKey = prevCount > 0 ? ((_b = measurements[prevCount - 1]) == null ? void 0 : _b.key) ?? prevOptions.getItemKey(prevCount - 1) : null;
294
- const didCountChange = nextCount !== prevCount;
295
- const didEdgeKeysChange = didCountChange || prevCount > 0 && nextCount > 0 && (merged.getItemKey(0) !== prevFirstKey || merged.getItemKey(nextCount - 1) !== prevLastKey);
296
- if (didEdgeKeysChange) {
297
- edgeKeysChanged = true;
298
- const item = prevCount > 0 ? this.getVirtualItemForOffset(this.getScrollOffset()) ?? measurements[0] : null;
299
- if (item) {
300
- anchor = [item.key, this.getScrollOffset() - item.start];
301
- }
302
- const behavior = merged.followOnAppend === true ? "auto" : merged.followOnAppend || null;
303
- if (behavior && nextCount > prevCount && this.isAtEnd(prevOptions.scrollEndThreshold) && (prevCount === 0 || merged.getItemKey(nextCount - 1) !== prevLastKey)) {
304
- followOnAppend = behavior;
305
- }
306
- }
307
- }
308
- this.options = merged;
309
- if (edgeKeysChanged) {
310
- this.pendingMin = 0;
311
- this.itemSizeCacheVersion++;
312
- }
313
- let anchorResolved = false;
314
- let anchorDelta = 0;
315
- if (anchor && this.scrollOffset !== null) {
316
- const [anchorKey, anchorOffset] = anchor;
317
- const newMeasurements = this.getMeasurements();
318
- const { count, getItemKey } = this.options;
319
- let idx = 0;
320
- while (idx < count && getItemKey(idx) !== anchorKey) {
321
- idx++;
322
- }
323
- if (idx < count) {
324
- const anchorItem = newMeasurements[idx];
325
- if (anchorItem) {
326
- const newOffset = anchorItem.start + anchorOffset;
327
- if (newOffset !== this.scrollOffset) {
328
- anchorDelta = newOffset - this.scrollOffset;
329
- this.scrollOffset = newOffset;
330
- anchorResolved = true;
331
- }
332
- }
333
- }
334
- }
335
- if (anchorResolved || followOnAppend) {
336
- this.pendingScrollAnchor = [
337
- anchorResolved ? anchor[0] : null,
338
- anchorResolved ? anchor[1] : 0,
339
- followOnAppend,
340
- anchorDelta
341
- ];
342
- }
343
- };
344
- this.notify = (sync) => {
345
- var _a, _b;
346
- (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);
347
- };
348
- this.maybeNotify = memo(
349
- () => {
350
- this.calculateRange();
351
- return [
352
- this.isScrolling,
353
- this.range ? this.range.startIndex : null,
354
- this.range ? this.range.endIndex : null
355
- ];
356
- },
357
- (isScrolling) => {
358
- this.notify(isScrolling);
359
- },
360
- {
361
- key: process.env.NODE_ENV !== "production" && "maybeNotify",
362
- debug: () => this.options.debug,
363
- initialDeps: [
364
- this.isScrolling,
365
- this.range ? this.range.startIndex : null,
366
- this.range ? this.range.endIndex : null
367
- ]
368
- }
369
- );
370
- this.cleanup = () => {
371
- this.unsubs.filter(Boolean).forEach((d) => d());
372
- this.unsubs = [];
373
- this.observer.disconnect();
374
- if (this.rafId != null && this.targetWindow) {
375
- this.targetWindow.cancelAnimationFrame(this.rafId);
376
- this.rafId = null;
377
- }
378
- this.scrollState = null;
379
- this._iosDeferredAdjustment = 0;
380
- this._iosTouching = false;
381
- this._iosJustTouchEnded = false;
382
- this.scrollElement = null;
383
- this.targetWindow = null;
384
- };
385
- this._didMount = () => {
386
- return () => {
387
- this.cleanup();
388
- };
389
- };
390
- this._willUpdate = () => {
391
- var _a;
392
- const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;
393
- if (this.scrollElement !== scrollElement) {
394
- this.cleanup();
395
- if (!scrollElement) {
396
- this.maybeNotify();
397
- return;
398
- }
399
- this.scrollElement = scrollElement;
400
- if (this.scrollElement && "ownerDocument" in this.scrollElement) {
401
- this.targetWindow = this.scrollElement.ownerDocument.defaultView;
402
- } else {
403
- this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;
404
- }
405
- this.elementsCache.forEach((cached) => {
406
- this.observer.observe(cached);
407
- });
408
- this.unsubs.push(
409
- this.options.observeElementRect(this, (rect) => {
410
- this.scrollRect = rect;
411
- this.maybeNotify();
412
- })
413
- );
414
- this.unsubs.push(
415
- this.options.observeElementOffset(this, (offset, isScrolling) => {
416
- if (isScrolling && this._intendedScrollOffset === null && offset === this.scrollOffset) {
417
- return;
418
- }
419
- if (this._intendedScrollOffset !== null && Math.abs(offset - this._intendedScrollOffset) < 1.5) {
420
- offset = this._intendedScrollOffset;
421
- }
422
- this._intendedScrollOffset = null;
423
- this.scrollAdjustments = 0;
424
- const prevOffset = this.getScrollOffset();
425
- this.scrollDirection = isScrolling ? prevOffset === offset ? this.scrollDirection : prevOffset < offset ? "forward" : "backward" : null;
426
- this.scrollOffset = offset;
427
- this.isScrolling = isScrolling;
428
- this._flushIosDeferredIfReady();
429
- if (this.scrollState) {
430
- this.scheduleScrollReconcile();
431
- }
432
- this.maybeNotify();
433
- })
434
- );
435
- if ("addEventListener" in this.scrollElement) {
436
- const scrollEl = this.scrollElement;
437
- const onTouchStart = () => {
438
- this._iosTouching = true;
439
- this._iosJustTouchEnded = false;
440
- if (this._iosTouchEndTimerId !== null && this.targetWindow != null) {
441
- this.targetWindow.clearTimeout(this._iosTouchEndTimerId);
442
- this._iosTouchEndTimerId = null;
443
- }
444
- };
445
- const onTouchEnd = () => {
446
- this._iosTouching = false;
447
- if (!isIOSWebKit() || this.targetWindow == null) {
448
- return;
449
- }
450
- this._iosJustTouchEnded = true;
451
- this._iosTouchEndTimerId = this.targetWindow.setTimeout(() => {
452
- this._iosJustTouchEnded = false;
453
- this._iosTouchEndTimerId = null;
454
- this._flushIosDeferredIfReady();
455
- }, 150);
456
- };
457
- scrollEl.addEventListener(
458
- "touchstart",
459
- onTouchStart,
460
- addEventListenerOptions
461
- );
462
- scrollEl.addEventListener(
463
- "touchend",
464
- onTouchEnd,
465
- addEventListenerOptions
466
- );
467
- this.unsubs.push(() => {
468
- scrollEl.removeEventListener("touchstart", onTouchStart);
469
- scrollEl.removeEventListener("touchend", onTouchEnd);
470
- if (this._iosTouchEndTimerId !== null && this.targetWindow != null) {
471
- this.targetWindow.clearTimeout(this._iosTouchEndTimerId);
472
- this._iosTouchEndTimerId = null;
473
- }
474
- });
475
- }
476
- this._scrollToOffset(this.getScrollOffset(), {
477
- adjustments: void 0,
478
- behavior: void 0
479
- });
480
- }
481
- const anchor = this.pendingScrollAnchor;
482
- this.pendingScrollAnchor = null;
483
- if (anchor && this.scrollElement && this.options.enabled) {
484
- const [key, _offset, followOnAppend, anchorDelta] = anchor;
485
- if (key !== null && !followOnAppend) {
486
- if (isIOSWebKit() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded)) {
487
- if (anchorDelta !== 0) {
488
- this._iosDeferredAdjustment += anchorDelta;
489
- }
490
- } else {
491
- this._scrollToOffset(this.getScrollOffset(), {
492
- adjustments: void 0,
493
- behavior: void 0
494
- });
495
- }
496
- }
497
- if (followOnAppend) {
498
- this.scrollToEnd({ behavior: followOnAppend });
499
- }
500
- }
501
- };
502
- this._flushIosDeferredIfReady = () => {
503
- if (this._iosDeferredAdjustment === 0) return;
504
- if (this.isScrolling) return;
505
- if (this._iosTouching) return;
506
- if (this._iosJustTouchEnded) return;
507
- const cur = this.getScrollOffset();
508
- const max = this.getMaxScrollOffset();
509
- if (cur < 0 || cur > max) return;
510
- const delta = this._iosDeferredAdjustment;
511
- this._iosDeferredAdjustment = 0;
512
- this._scrollToOffset(cur, {
513
- adjustments: this.scrollAdjustments += delta,
514
- behavior: void 0
515
- });
516
- };
517
- this.rafId = null;
518
- this.getSize = () => {
519
- if (!this.options.enabled) {
520
- this.scrollRect = null;
521
- return 0;
522
- }
523
- this.scrollRect = this.scrollRect ?? this.options.initialRect;
524
- return this.scrollRect[this.options.horizontal ? "width" : "height"];
525
- };
526
- this.getScrollOffset = () => {
527
- if (!this.options.enabled) {
528
- this.scrollOffset = null;
529
- return 0;
530
- }
531
- this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === "function" ? this.options.initialOffset() : this.options.initialOffset);
532
- return this.scrollOffset;
533
- };
534
- this.getMeasurementOptions = memo(
535
- () => [
536
- this.options.count,
537
- this.options.paddingStart,
538
- this.options.scrollMargin,
539
- this.options.getItemKey,
540
- this.options.enabled,
541
- this.options.lanes,
542
- this.options.laneAssignmentMode,
543
- this.options.gap
544
- ],
545
- (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode, gap) => {
546
- const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;
547
- if (lanesChanged) {
548
- this.lanesChangedFlag = true;
549
- }
550
- this.prevLanes = lanes;
551
- this.pendingMin = null;
552
- return {
553
- count,
554
- paddingStart,
555
- scrollMargin,
556
- getItemKey,
557
- enabled,
558
- lanes,
559
- laneAssignmentMode,
560
- gap
561
- };
562
- },
563
- {
564
- key: false
565
- }
566
- );
567
- this.getMeasurements = memo(
568
- () => [this.getMeasurementOptions(), this.itemSizeCacheVersion],
569
- ({
570
- count,
571
- paddingStart,
572
- scrollMargin,
573
- getItemKey,
574
- enabled,
575
- lanes,
576
- laneAssignmentMode,
577
- gap
578
- }, _itemSizeCacheVersion) => {
579
- const itemSizeCache = this.itemSizeCache;
580
- if (!enabled) {
581
- this.measurementsCache = [];
582
- this.itemSizeCache.clear();
583
- this.laneAssignments.clear();
584
- return [];
585
- }
586
- if (this.laneAssignments.size > count) {
587
- for (const index of this.laneAssignments.keys()) {
588
- if (index >= count) {
589
- this.laneAssignments.delete(index);
590
- }
591
- }
592
- }
593
- if (this.lanesChangedFlag) {
594
- this.lanesChangedFlag = false;
595
- this.lanesSettling = true;
596
- this.measurementsCache = [];
597
- this.itemSizeCache.clear();
598
- this.laneAssignments.clear();
599
- this.pendingMin = null;
600
- }
601
- if (this.measurementsCache.length === 0 && !this.lanesSettling) {
602
- this.measurementsCache = this.options.initialMeasurementsCache;
603
- this.measurementsCache.forEach((item) => {
604
- this.itemSizeCache.set(item.key, item.size);
605
- });
606
- }
607
- const min = this.lanesSettling ? 0 : this.pendingMin ?? 0;
608
- this.pendingMin = null;
609
- if (this.lanesSettling && this.measurementsCache.length === count) {
610
- this.lanesSettling = false;
611
- }
612
- if (lanes === 1) {
613
- const need = count * 2;
614
- let flat = this._flatMeasurements;
615
- if (!flat || flat.length < need) {
616
- const next = new Float64Array(need);
617
- if (flat && min > 0) next.set(flat.subarray(0, min * 2));
618
- flat = next;
619
- this._flatMeasurements = flat;
620
- }
621
- let runningStart;
622
- if (min === 0) {
623
- runningStart = paddingStart + scrollMargin;
624
- } else {
625
- const prevIdx = min - 1;
626
- runningStart = flat[prevIdx * 2] + flat[prevIdx * 2 + 1] + gap;
627
- }
628
- for (let i = min; i < count; i++) {
629
- const key = getItemKey(i);
630
- const measuredSize = itemSizeCache.get(key);
631
- const size = typeof measuredSize === "number" ? measuredSize : this.options.estimateSize(i);
632
- flat[i * 2] = runningStart;
633
- flat[i * 2 + 1] = size;
634
- runningStart += size + gap;
635
- }
636
- const view = createLazyMeasurementsView(count, flat, getItemKey);
637
- this.measurementsCache = view;
638
- return view;
639
- }
640
- const measurements = this.measurementsCache.slice(0, min);
641
- const laneLastIndex = new Array(lanes).fill(
642
- void 0
643
- );
644
- const laneEnds = new Float64Array(lanes);
645
- let filledLanes = 0;
646
- for (let m = 0; m < min; m++) {
647
- const item = measurements[m];
648
- if (item) {
649
- if (laneLastIndex[item.lane] === void 0) filledLanes++;
650
- laneLastIndex[item.lane] = m;
651
- laneEnds[item.lane] = item.end;
652
- }
653
- }
654
- for (let i = min; i < count; i++) {
655
- const key = getItemKey(i);
656
- const cachedLane = this.laneAssignments.get(i);
657
- let lane;
658
- let start;
659
- const shouldCacheLane = laneAssignmentMode === "estimate" || itemSizeCache.has(key);
660
- if (cachedLane !== void 0 && this.options.lanes > 1) {
661
- lane = cachedLane;
662
- const prevIndex = laneLastIndex[lane];
663
- const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;
664
- start = prevInLane ? prevInLane.end + gap : paddingStart + scrollMargin;
665
- } else if (filledLanes === lanes) {
666
- let bestLane = 0;
667
- let bestEnd = laneEnds[0];
668
- let bestIdx = laneLastIndex[0];
669
- for (let l = 1; l < lanes; l++) {
670
- const e = laneEnds[l];
671
- if (e < bestEnd || e === bestEnd && laneLastIndex[l] < bestIdx) {
672
- bestLane = l;
673
- bestEnd = e;
674
- bestIdx = laneLastIndex[l];
675
- }
676
- }
677
- lane = bestLane;
678
- start = bestEnd + gap;
679
- if (shouldCacheLane) {
680
- this.laneAssignments.set(i, lane);
681
- }
682
- } else {
683
- lane = i % this.options.lanes;
684
- start = paddingStart + scrollMargin;
685
- if (shouldCacheLane) {
686
- this.laneAssignments.set(i, lane);
687
- }
688
- }
689
- const measuredSize = itemSizeCache.get(key);
690
- const size = typeof measuredSize === "number" ? measuredSize : this.options.estimateSize(i);
691
- const end = start + size;
692
- measurements[i] = {
693
- index: i,
694
- start,
695
- size,
696
- end,
697
- key,
698
- lane
699
- };
700
- if (laneLastIndex[lane] === void 0) filledLanes++;
701
- laneLastIndex[lane] = i;
702
- laneEnds[lane] = end;
703
- }
704
- this.measurementsCache = measurements;
705
- return measurements;
706
- },
707
- {
708
- key: process.env.NODE_ENV !== "production" && "getMeasurements",
709
- debug: () => this.options.debug
710
- }
711
- );
712
- this.calculateRange = memo(
713
- () => [
714
- this.getMeasurements(),
715
- this.getSize(),
716
- this.getScrollOffset(),
717
- this.options.lanes
718
- ],
719
- (measurements, outerSize, scrollOffset, lanes) => {
720
- if (measurements.length === 0 || outerSize === 0) {
721
- this.range = null;
722
- return null;
723
- }
724
- this.range = calculateRangeImpl(
725
- measurements,
726
- outerSize,
727
- scrollOffset,
728
- lanes,
729
- // Pass the typed array so binary search + forward-walk can read
730
- // start/end directly from Float64Array, skipping the Proxy traps.
731
- lanes === 1 && this._flatMeasurements != null ? this._flatMeasurements : null
732
- );
733
- return this.range;
734
- },
735
- {
736
- key: process.env.NODE_ENV !== "production" && "calculateRange",
737
- debug: () => this.options.debug
738
- }
739
- );
740
- this.getVirtualIndexes = memo(
741
- () => {
742
- let startIndex = null;
743
- let endIndex = null;
744
- const range = this.calculateRange();
745
- if (range) {
746
- startIndex = range.startIndex;
747
- endIndex = range.endIndex;
748
- }
749
- this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);
750
- return [
751
- this.options.rangeExtractor,
752
- this.options.overscan,
753
- this.options.count,
754
- startIndex,
755
- endIndex
756
- ];
757
- },
758
- (rangeExtractor, overscan, count, startIndex, endIndex) => {
759
- return startIndex === null || endIndex === null ? [] : rangeExtractor({
760
- startIndex,
761
- endIndex,
762
- overscan,
763
- count
764
- });
765
- },
766
- {
767
- key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
768
- debug: () => this.options.debug
769
- }
770
- );
771
- this.indexFromElement = (node) => {
772
- const attributeName = this.options.indexAttribute;
773
- const indexStr = node.getAttribute(attributeName);
774
- if (!indexStr) {
775
- console.warn(
776
- `Missing attribute name '${attributeName}={index}' on measured element.`
777
- );
778
- return -1;
779
- }
780
- return parseInt(indexStr, 10);
781
- };
782
- this.shouldMeasureDuringScroll = (index) => {
783
- var _a;
784
- if (!this.scrollState || this.scrollState.behavior !== "smooth") {
785
- return true;
786
- }
787
- const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);
788
- if (scrollIndex !== void 0 && this.range) {
789
- const bufferSize = Math.max(
790
- this.options.overscan,
791
- Math.ceil((this.range.endIndex - this.range.startIndex) / 2)
792
- );
793
- const minIndex = Math.max(0, scrollIndex - bufferSize);
794
- const maxIndex = Math.min(
795
- this.options.count - 1,
796
- scrollIndex + bufferSize
797
- );
798
- return index >= minIndex && index <= maxIndex;
799
- }
800
- return true;
801
- };
802
- this.measureElement = (node) => {
803
- if (!node) {
804
- this.elementsCache.forEach((cached, key2) => {
805
- if (!cached.isConnected) {
806
- this.observer.unobserve(cached);
807
- this.elementsCache.delete(key2);
808
- }
809
- });
810
- return;
811
- }
812
- const index = this.indexFromElement(node);
813
- const key = this.options.getItemKey(index);
814
- const prevNode = this.elementsCache.get(key);
815
- if (prevNode !== node) {
816
- if (prevNode) {
817
- this.observer.unobserve(prevNode);
818
- }
819
- this.observer.observe(node);
820
- this.elementsCache.set(key, node);
821
- }
822
- if ((!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {
823
- this.resizeItem(index, this.options.measureElement(node, void 0, this));
824
- }
825
- };
826
- this.resizeItem = (index, size) => {
827
- var _a, _b;
828
- if (index < 0 || index >= this.options.count) return;
829
- let cachedSize;
830
- let itemStart;
831
- let key;
832
- const flat = this._flatMeasurements;
833
- if (this.options.lanes === 1 && flat !== null) {
834
- key = this.options.getItemKey(index);
835
- itemStart = flat[index * 2];
836
- cachedSize = flat[index * 2 + 1];
837
- } else {
838
- const item = this.measurementsCache[index];
839
- if (!item) return;
840
- key = item.key;
841
- itemStart = item.start;
842
- cachedSize = item.size;
843
- }
844
- const itemSize = this.itemSizeCache.get(key) ?? cachedSize;
845
- const delta = size - itemSize;
846
- if (delta !== 0) {
847
- const wasAtEnd = this.options.anchorTo === "end" && ((_a = this.scrollState) == null ? void 0 : _a.behavior) !== "smooth" && this.getVirtualDistanceFromEnd() <= this.options.scrollEndThreshold;
848
- const prevTotalSize = wasAtEnd ? this.getTotalSize() : 0;
849
- const shouldAdjustScroll = ((_b = this.scrollState) == null ? void 0 : _b.behavior) !== "smooth" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(
850
- // The callback expects a VirtualItem; build one lazily only
851
- // when the consumer actually supplied a custom predicate.
852
- this.measurementsCache[index] ?? {
853
- index,
854
- key,
855
- start: itemStart,
856
- size: cachedSize,
857
- end: itemStart + cachedSize,
858
- lane: 0
859
- },
860
- delta,
861
- this
862
- ) : (
863
- // Default: adjust when the resize is an above-viewport item.
864
- // First measurement (!has(key)): always adjust — the item
865
- // has never been sized, so the estimate→actual delta must
866
- // be compensated regardless of scroll direction.
867
- // Re-measurement (has(key)): skip during backward scroll
868
- // to avoid the "items jump while scrolling up" cascade.
869
- itemStart < this.getScrollOffset() + this.scrollAdjustments && (!this.itemSizeCache.has(key) || this.scrollDirection !== "backward")
870
- ));
871
- if (this.pendingMin === null || index < this.pendingMin) {
872
- this.pendingMin = index;
873
- }
874
- this.itemSizeCache.set(key, size);
875
- this.itemSizeCacheVersion++;
876
- if (wasAtEnd) {
877
- this.applyScrollAdjustment(this.getTotalSize() - prevTotalSize);
878
- } else if (shouldAdjustScroll) {
879
- this.applyScrollAdjustment(delta);
880
- }
881
- this.notify(false);
882
- }
883
- };
884
- this.getVirtualItems = memo(
885
- () => [this.getVirtualIndexes(), this.getMeasurements()],
886
- (indexes, measurements) => {
887
- const virtualItems = [];
888
- for (let k = 0, len = indexes.length; k < len; k++) {
889
- const i = indexes[k];
890
- const measurement = measurements[i];
891
- virtualItems.push(measurement);
892
- }
893
- return virtualItems;
894
- },
895
- {
896
- key: process.env.NODE_ENV !== "production" && "getVirtualItems",
897
- debug: () => this.options.debug
898
- }
899
- );
900
- this.getVirtualItemForOffset = (offset) => {
901
- const measurements = this.getMeasurements();
902
- if (measurements.length === 0) {
903
- return void 0;
904
- }
905
- const flat = this._flatMeasurements;
906
- const useFlat = this.options.lanes === 1 && flat != null;
907
- const idx = findNearestBinarySearch(
908
- 0,
909
- measurements.length - 1,
910
- useFlat ? (i) => flat[i * 2] : (i) => notUndefined(measurements[i]).start,
911
- offset
912
- );
913
- return notUndefined(measurements[idx]);
914
- };
915
- this.getMaxScrollOffset = () => {
916
- if (!this.scrollElement) return 0;
917
- if ("scrollHeight" in this.scrollElement) {
918
- return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;
919
- } else {
920
- const doc = this.scrollElement.document.documentElement;
921
- return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;
922
- }
923
- };
924
- this.getVirtualDistanceFromEnd = () => {
925
- return Math.max(
926
- this.getTotalSize() - this.getSize() - this.getScrollOffset(),
927
- 0
928
- );
929
- };
930
- this.getDistanceFromEnd = () => {
931
- return Math.max(this.getMaxScrollOffset() - this.getScrollOffset(), 0);
932
- };
933
- this.isAtEnd = (threshold = this.options.scrollEndThreshold) => {
934
- return this.getDistanceFromEnd() <= threshold;
935
- };
936
- this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {
937
- if (!this.scrollElement) return 0;
938
- const size = this.getSize();
939
- const scrollOffset = this.getScrollOffset();
940
- if (align === "auto") {
941
- align = toOffset >= scrollOffset + size ? "end" : "start";
942
- }
943
- if (align === "center") {
944
- toOffset += (itemSize - size) / 2;
945
- } else if (align === "end") {
946
- toOffset -= size;
947
- }
948
- const maxOffset = this.getMaxScrollOffset();
949
- return Math.max(Math.min(maxOffset, toOffset), 0);
950
- };
951
- this.getOffsetForIndex = (index, align = "auto") => {
952
- index = Math.max(0, Math.min(index, this.options.count - 1));
953
- const size = this.getSize();
954
- const scrollOffset = this.getScrollOffset();
955
- const item = this.measurementsCache[index];
956
- if (!item) return;
957
- if (align === "auto") {
958
- if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {
959
- align = "end";
960
- } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {
961
- align = "start";
962
- } else {
963
- return [scrollOffset, align];
964
- }
965
- }
966
- if (align === "end" && index === this.options.count - 1) {
967
- return [this.getMaxScrollOffset(), align];
968
- }
969
- const toOffset = align === "end" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;
970
- return [
971
- this.getOffsetForAlignment(toOffset, align, item.size),
972
- align
973
- ];
974
- };
975
- this.scrollToOffset = (toOffset, { align = "start", behavior = "auto" } = {}) => {
976
- const offset = this.getOffsetForAlignment(toOffset, align);
977
- const now = this.now();
978
- this.scrollState = {
979
- index: null,
980
- align,
981
- behavior,
982
- startedAt: now,
983
- lastTargetOffset: offset,
984
- stableFrames: 0
985
- };
986
- this._scrollToOffset(offset, { adjustments: void 0, behavior });
987
- this.scheduleScrollReconcile();
988
- };
989
- this.scrollToIndex = (index, {
990
- align: initialAlign = "auto",
991
- behavior = "auto"
992
- } = {}) => {
993
- index = Math.max(0, Math.min(index, this.options.count - 1));
994
- const offsetInfo = this.getOffsetForIndex(index, initialAlign);
995
- if (!offsetInfo) {
996
- return;
997
- }
998
- const [offset, align] = offsetInfo;
999
- const now = this.now();
1000
- this.scrollState = {
1001
- index,
1002
- align,
1003
- behavior,
1004
- startedAt: now,
1005
- lastTargetOffset: offset,
1006
- stableFrames: 0
1007
- };
1008
- this._scrollToOffset(offset, { adjustments: void 0, behavior });
1009
- this.scheduleScrollReconcile();
1010
- };
1011
- this.scrollBy = (delta, { behavior = "auto" } = {}) => {
1012
- const offset = this.getScrollOffset() + delta;
1013
- const now = this.now();
1014
- this.scrollState = {
1015
- index: null,
1016
- align: "start",
1017
- behavior,
1018
- startedAt: now,
1019
- lastTargetOffset: offset,
1020
- stableFrames: 0
1021
- };
1022
- this._scrollToOffset(offset, { adjustments: void 0, behavior });
1023
- this.scheduleScrollReconcile();
1024
- };
1025
- this.scrollToEnd = ({ behavior = "auto" } = {}) => {
1026
- if (this.options.count > 0) {
1027
- this.scrollToIndex(this.options.count - 1, {
1028
- align: "end",
1029
- behavior
1030
- });
1031
- return;
1032
- }
1033
- this.scrollToOffset(Math.max(this.getTotalSize() - this.getSize(), 0), {
1034
- behavior
1035
- });
1036
- };
1037
- this.getTotalSize = () => {
1038
- var _a;
1039
- const measurements = this.getMeasurements();
1040
- let end;
1041
- if (measurements.length === 0) {
1042
- end = this.options.paddingStart;
1043
- } else if (this.options.lanes === 1) {
1044
- const lastIdx = measurements.length - 1;
1045
- const flat = this._flatMeasurements;
1046
- if (flat != null) {
1047
- end = flat[lastIdx * 2] + flat[lastIdx * 2 + 1];
1048
- } else {
1049
- end = ((_a = measurements[lastIdx]) == null ? void 0 : _a.end) ?? 0;
1050
- }
1051
- } else {
1052
- const endByLane = Array(this.options.lanes).fill(null);
1053
- let endIndex = measurements.length - 1;
1054
- while (endIndex >= 0 && endByLane.some((val) => val === null)) {
1055
- const item = measurements[endIndex];
1056
- if (endByLane[item.lane] === null) {
1057
- endByLane[item.lane] = item.end;
1058
- }
1059
- endIndex--;
1060
- }
1061
- end = Math.max(...endByLane.filter((val) => val !== null));
1062
- }
1063
- return Math.max(
1064
- end - this.options.scrollMargin + this.options.paddingEnd,
1065
- 0
1066
- );
1067
- };
1068
- this.takeSnapshot = () => {
1069
- const snapshot = [];
1070
- if (this.itemSizeCache.size === 0) return snapshot;
1071
- const m = this.getMeasurements();
1072
- for (const item of m) {
1073
- if (item && this.itemSizeCache.has(item.key)) {
1074
- snapshot.push({
1075
- index: item.index,
1076
- key: item.key,
1077
- start: item.start,
1078
- size: item.size,
1079
- end: item.end,
1080
- lane: item.lane
1081
- });
1082
- }
1083
- }
1084
- return snapshot;
1085
- };
1086
- this._scrollToOffset = (offset, {
1087
- adjustments,
1088
- behavior
1089
- }) => {
1090
- this._intendedScrollOffset = offset + (adjustments ?? 0);
1091
- this.options.scrollToFn(offset, { behavior, adjustments }, this);
1092
- };
1093
- this.measure = () => {
1094
- this.pendingMin = null;
1095
- this.itemSizeCache.clear();
1096
- this.laneAssignments.clear();
1097
- this.itemSizeCacheVersion++;
1098
- this.notify(false);
1099
- };
1100
- this.setOptions(opts);
1101
- }
1102
- applyScrollAdjustment(delta, behavior) {
1103
- if (delta === 0) return;
1104
- if (process.env.NODE_ENV !== "production" && this.options.debug) {
1105
- console.info("correction", delta);
1106
- }
1107
- if (isIOSWebKit() && (this.isScrolling || this._iosTouching || this._iosJustTouchEnded)) {
1108
- this._iosDeferredAdjustment += delta;
1109
- } else {
1110
- this._scrollToOffset(this.getScrollOffset(), {
1111
- adjustments: this.scrollAdjustments += delta,
1112
- behavior
1113
- });
1114
- if (this.scrollOffset !== null) {
1115
- this.scrollOffset += this.scrollAdjustments;
1116
- this.scrollAdjustments = 0;
1117
- }
1118
- }
1119
- }
1120
- scheduleScrollReconcile() {
1121
- if (!this.targetWindow) {
1122
- this.scrollState = null;
1123
- return;
1124
- }
1125
- if (this.rafId != null) return;
1126
- this.rafId = this.targetWindow.requestAnimationFrame(() => {
1127
- this.rafId = null;
1128
- this.reconcileScroll();
1129
- });
1130
- }
1131
- reconcileScroll() {
1132
- if (!this.scrollState) return;
1133
- const el = this.scrollElement;
1134
- if (!el) return;
1135
- const MAX_RECONCILE_MS = 5e3;
1136
- if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {
1137
- this.scrollState = null;
1138
- return;
1139
- }
1140
- const offsetInfo = this.scrollState.index != null ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align) : void 0;
1141
- const targetOffset = offsetInfo ? offsetInfo[0] : this.scrollState.lastTargetOffset;
1142
- const STABLE_FRAMES = 1;
1143
- const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;
1144
- if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {
1145
- this.scrollState.stableFrames++;
1146
- if (this.scrollState.stableFrames >= STABLE_FRAMES) {
1147
- if (this.getScrollOffset() !== targetOffset) {
1148
- this._scrollToOffset(targetOffset, {
1149
- adjustments: void 0,
1150
- behavior: "auto"
1151
- });
1152
- }
1153
- this.scrollState = null;
1154
- return;
1155
- }
1156
- } else {
1157
- this.scrollState.stableFrames = 0;
1158
- if (targetChanged) {
1159
- const viewport = this.getSize() || 600;
1160
- const distance = Math.abs(targetOffset - this.getScrollOffset());
1161
- const keepSmooth = this.scrollState.behavior === "smooth" && distance > viewport;
1162
- this.scrollState.lastTargetOffset = targetOffset;
1163
- if (!keepSmooth) {
1164
- this.scrollState.behavior = "auto";
1165
- }
1166
- this._scrollToOffset(targetOffset, {
1167
- adjustments: void 0,
1168
- behavior: keepSmooth ? "smooth" : "auto"
1169
- });
1170
- }
1171
- }
1172
- this.scheduleScrollReconcile();
1173
- }
1174
- }
1175
- const findNearestBinarySearch = (low, high, getCurrentValue, value) => {
1176
- while (low <= high) {
1177
- const middle = (low + high) / 2 | 0;
1178
- const currentValue = getCurrentValue(middle);
1179
- if (currentValue < value) {
1180
- low = middle + 1;
1181
- } else if (currentValue > value) {
1182
- high = middle - 1;
1183
- } else {
1184
- return middle;
1185
- }
1186
- }
1187
- if (low > 0) {
1188
- return low - 1;
1189
- } else {
1190
- return 0;
1191
- }
1192
- };
1193
- function findNearestBinarySearchFlat(flat, high, value) {
1194
- let low = 0;
1195
- while (low <= high) {
1196
- const middle = (low + high) / 2 | 0;
1197
- const currentValue = flat[middle * 2];
1198
- if (currentValue < value) {
1199
- low = middle + 1;
1200
- } else if (currentValue > value) {
1201
- high = middle - 1;
1202
- } else {
1203
- return middle;
1204
- }
1205
- }
1206
- return low > 0 ? low - 1 : 0;
1207
- }
1208
- function calculateRangeImpl(measurements, outerSize, scrollOffset, lanes, flat) {
1209
- const lastIndex = measurements.length - 1;
1210
- if (measurements.length <= lanes) {
1211
- return { startIndex: 0, endIndex: lastIndex };
1212
- }
1213
- if (lanes === 1 && flat !== null) {
1214
- const startIndex2 = findNearestBinarySearchFlat(
1215
- flat,
1216
- lastIndex,
1217
- scrollOffset
1218
- );
1219
- let endIndex2 = startIndex2;
1220
- const limit = scrollOffset + outerSize;
1221
- while (endIndex2 < lastIndex && flat[endIndex2 * 2] + flat[endIndex2 * 2 + 1] < limit) {
1222
- endIndex2++;
1223
- }
1224
- return { startIndex: startIndex2, endIndex: endIndex2 };
1225
- }
1226
- const getStart = (index) => measurements[index].start;
1227
- let startIndex = findNearestBinarySearch(0, lastIndex, getStart, scrollOffset);
1228
- let endIndex = startIndex;
1229
- if (lanes === 1) {
1230
- while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {
1231
- endIndex++;
1232
- }
1233
- } else if (lanes > 1) {
1234
- const endPerLane = Array(lanes).fill(0);
1235
- while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {
1236
- const item = measurements[endIndex];
1237
- endPerLane[item.lane] = item.end;
1238
- endIndex++;
1239
- }
1240
- const startPerLane = Array(lanes).fill(scrollOffset + outerSize);
1241
- while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {
1242
- const item = measurements[startIndex];
1243
- startPerLane[item.lane] = item.start;
1244
- startIndex--;
1245
- }
1246
- startIndex = Math.max(0, startIndex - startIndex % lanes);
1247
- endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));
1248
- }
1249
- return { startIndex, endIndex };
1250
- }
1251
- export {
1252
- Virtualizer,
1253
- _resetIOSDetectionForTests,
1254
- approxEqual,
1255
- debounce,
1256
- defaultKeyExtractor,
1257
- defaultRangeExtractor,
1258
- elementScroll,
1259
- measureElement,
1260
- memo,
1261
- notUndefined,
1262
- observeElementOffset,
1263
- observeElementRect,
1264
- observeWindowOffset,
1265
- observeWindowRect,
1266
- windowScroll
1267
- };
1268
- //# sourceMappingURL=index.js.map