renovate-log-parser 0.1.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 (325) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +402 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +30 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/analyze.d.ts +24 -0
  7. package/dist/commands/analyze.js +114 -0
  8. package/dist/commands/analyze.js.map +1 -0
  9. package/dist/commands/detect-errors.d.ts +17 -0
  10. package/dist/commands/detect-errors.js +119 -0
  11. package/dist/commands/detect-errors.js.map +1 -0
  12. package/dist/commands/install-analyze-skill.d.ts +27 -0
  13. package/dist/commands/install-analyze-skill.js +181 -0
  14. package/dist/commands/install-analyze-skill.js.map +1 -0
  15. package/dist/commands/web.d.ts +12 -0
  16. package/dist/commands/web.js +103 -0
  17. package/dist/commands/web.js.map +1 -0
  18. package/dist/core/analyzer.d.ts +89 -0
  19. package/dist/core/analyzer.js +179 -0
  20. package/dist/core/analyzer.js.map +1 -0
  21. package/dist/core/error-detector.d.ts +56 -0
  22. package/dist/core/error-detector.js +236 -0
  23. package/dist/core/error-detector.js.map +1 -0
  24. package/dist/core/filters.d.ts +136 -0
  25. package/dist/core/filters.js +95 -0
  26. package/dist/core/filters.js.map +1 -0
  27. package/dist/core/ignore-file.d.ts +52 -0
  28. package/dist/core/ignore-file.js +104 -0
  29. package/dist/core/ignore-file.js.map +1 -0
  30. package/dist/core/levels.d.ts +33 -0
  31. package/dist/core/levels.js +35 -0
  32. package/dist/core/levels.js.map +1 -0
  33. package/dist/core/parser.d.ts +57 -0
  34. package/dist/core/parser.js +201 -0
  35. package/dist/core/parser.js.map +1 -0
  36. package/dist/core/query-builder.d.ts +47 -0
  37. package/dist/core/query-builder.js +155 -0
  38. package/dist/core/query-builder.js.map +1 -0
  39. package/dist/core/skill-template.d.ts +34 -0
  40. package/dist/core/skill-template.js +259 -0
  41. package/dist/core/skill-template.js.map +1 -0
  42. package/package.json +68 -0
  43. package/web/.output/nitro.json +15 -0
  44. package/web/.output/public/_fonts/57NSSoFy1VLVs2gqly8Ls9awBnZMFyXGrefpmqvdqmc-zJfbBtpgM4cDmcXBsqZNW79_kFnlpPd62b48glgdydA.woff2 +0 -0
  45. package/web/.output/public/_fonts/8VR2wSMN-3U4NbWAVYXlkRV6hA0jFBXP-0RtL3X7fko-x2gYI4qfmkRdxyQQUPaBZdZdgl1TeVrquF_TxHeM4lM.woff2 +0 -0
  46. package/web/.output/public/_fonts/GsKUclqeNLJ96g5AU593ug6yanivOiwjW_7zESNPChw-jHA4tBeM1bjF7LATGUpfBuSTyomIFrWBTzjF7txVYfg.woff2 +0 -0
  47. package/web/.output/public/_fonts/Ld1FnTo3yTIwDyGfTQ5-Fws9AWsCbKfMvgxduXr7JcY-W25bL8NF1fjpLRSOgJb7RoZPHqGQNwMTM7S9tHVoxx8.woff2 +0 -0
  48. package/web/.output/public/_fonts/NdzqRASp2bovDUhQT1IRE_EMqKJ2KYQdTCfFcBvL8yw-KhwZiS86o3fErOe5GGMExHUemmI_dBfaEFxjISZrBd0.woff2 +0 -0
  49. package/web/.output/public/_fonts/iTkrULNFJJkTvihIg1Vqi5IODRH_9btXCioVF5l98I8-AndUyau2HR2felA_ra8V2mutQgschhasE5FD1dXGJX8.woff2 +0 -0
  50. package/web/.output/public/_nuxt/BWja8e3M.js +37 -0
  51. package/web/.output/public/_nuxt/BgApMHS1.js +1 -0
  52. package/web/.output/public/_nuxt/CGPWRqbc.js +1 -0
  53. package/web/.output/public/_nuxt/DlAUqK2U.js +1 -0
  54. package/web/.output/public/_nuxt/Sgtec1U0.js +1 -0
  55. package/web/.output/public/_nuxt/builds/latest.json +1 -0
  56. package/web/.output/public/_nuxt/builds/meta/c4723e49-0623-47af-ae79-9ab6428bdcc1.json +1 -0
  57. package/web/.output/public/_nuxt/entry.9mB-pyEY.css +1 -0
  58. package/web/.output/public/_nuxt/error-404.B_PvSG-P.css +1 -0
  59. package/web/.output/public/_nuxt/error-500.CghkKCEr.css +1 -0
  60. package/web/.output/public/_nuxt/index.BlvAG7F6.css +1 -0
  61. package/web/.output/public/favicon.ico +0 -0
  62. package/web/.output/server/chunks/_/error-500.mjs +19 -0
  63. package/web/.output/server/chunks/_/error-500.mjs.map +1 -0
  64. package/web/.output/server/chunks/_/icons.mjs +6153 -0
  65. package/web/.output/server/chunks/_/icons.mjs.map +1 -0
  66. package/web/.output/server/chunks/_/icons2.mjs +11494 -0
  67. package/web/.output/server/chunks/_/icons2.mjs.map +1 -0
  68. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs +10 -0
  69. package/web/.output/server/chunks/build/_plugin-vue_export-helper-1tPrXgE0.mjs.map +1 -0
  70. package/web/.output/server/chunks/build/client.precomputed.mjs +4 -0
  71. package/web/.output/server/chunks/build/client.precomputed.mjs.map +1 -0
  72. package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs +106 -0
  73. package/web/.output/server/chunks/build/error-404-DyaaQUIS.mjs.map +1 -0
  74. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs +8 -0
  75. package/web/.output/server/chunks/build/error-404-styles.9cNA4arh.mjs.map +1 -0
  76. package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs +89 -0
  77. package/web/.output/server/chunks/build/error-500-CVSP-p02.mjs.map +1 -0
  78. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs +8 -0
  79. package/web/.output/server/chunks/build/error-500-styles.BX54ZlkH.mjs.map +1 -0
  80. package/web/.output/server/chunks/build/index-88dXYOxO.mjs +19675 -0
  81. package/web/.output/server/chunks/build/index-88dXYOxO.mjs.map +1 -0
  82. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs +8 -0
  83. package/web/.output/server/chunks/build/index-styles.V2iua2bE.mjs.map +1 -0
  84. package/web/.output/server/chunks/build/server.mjs +7910 -0
  85. package/web/.output/server/chunks/build/server.mjs.map +1 -0
  86. package/web/.output/server/chunks/build/styles.mjs +10 -0
  87. package/web/.output/server/chunks/build/styles.mjs.map +1 -0
  88. package/web/.output/server/chunks/nitro/nitro.mjs +6944 -0
  89. package/web/.output/server/chunks/nitro/nitro.mjs.map +1 -0
  90. package/web/.output/server/chunks/routes/api/fields.get.mjs +27 -0
  91. package/web/.output/server/chunks/routes/api/fields.get.mjs.map +1 -0
  92. package/web/.output/server/chunks/routes/api/findings.get.mjs +30 -0
  93. package/web/.output/server/chunks/routes/api/findings.get.mjs.map +1 -0
  94. package/web/.output/server/chunks/routes/api/log/contents.post.mjs +29 -0
  95. package/web/.output/server/chunks/routes/api/log/contents.post.mjs.map +1 -0
  96. package/web/.output/server/chunks/routes/api/log/path.post.mjs +30 -0
  97. package/web/.output/server/chunks/routes/api/log/path.post.mjs.map +1 -0
  98. package/web/.output/server/chunks/routes/api/repositories.get.mjs +27 -0
  99. package/web/.output/server/chunks/routes/api/repositories.get.mjs.map +1 -0
  100. package/web/.output/server/chunks/routes/api/rows.get.mjs +48 -0
  101. package/web/.output/server/chunks/routes/api/rows.get.mjs.map +1 -0
  102. package/web/.output/server/chunks/routes/renderer.mjs +451 -0
  103. package/web/.output/server/chunks/routes/renderer.mjs.map +1 -0
  104. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs +4 -0
  105. package/web/.output/server/chunks/virtual/_virtual_spa-template.mjs.map +1 -0
  106. package/web/.output/server/index.mjs +16 -0
  107. package/web/.output/server/index.mjs.map +1 -0
  108. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/dist/index.mjs +290 -0
  109. package/web/.output/server/node_modules/.nitro/hookable@5.5.3/package.json +49 -0
  110. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/dist/index.mjs +257 -0
  111. package/web/.output/server/node_modules/.nitro/hookable@6.1.1/package.json +53 -0
  112. package/web/.output/server/node_modules/@babel/parser/lib/index.js +14599 -0
  113. package/web/.output/server/node_modules/@babel/parser/package.json +50 -0
  114. package/web/.output/server/node_modules/@floating-ui/core/dist/floating-ui.core.mjs +1038 -0
  115. package/web/.output/server/node_modules/@floating-ui/core/package.json +63 -0
  116. package/web/.output/server/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs +789 -0
  117. package/web/.output/server/node_modules/@floating-ui/dom/package.json +72 -0
  118. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs +165 -0
  119. package/web/.output/server/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs +136 -0
  120. package/web/.output/server/node_modules/@floating-ui/utils/package.json +70 -0
  121. package/web/.output/server/node_modules/@floating-ui/vue/dist/floating-ui.vue.mjs +190 -0
  122. package/web/.output/server/node_modules/@floating-ui/vue/package.json +71 -0
  123. package/web/.output/server/node_modules/@iconify/utils/lib/colors/index.js +295 -0
  124. package/web/.output/server/node_modules/@iconify/utils/lib/colors/keywords.js +701 -0
  125. package/web/.output/server/node_modules/@iconify/utils/lib/css/common.js +75 -0
  126. package/web/.output/server/node_modules/@iconify/utils/lib/css/format.js +39 -0
  127. package/web/.output/server/node_modules/@iconify/utils/lib/css/icon.js +47 -0
  128. package/web/.output/server/node_modules/@iconify/utils/lib/css/icons.js +128 -0
  129. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/bool.js +19 -0
  130. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/defaults.js +13 -0
  131. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/flip.js +17 -0
  132. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/merge.js +16 -0
  133. package/web/.output/server/node_modules/@iconify/utils/lib/customisations/rotate.js +30 -0
  134. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/cleanup.js +78 -0
  135. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/convert.js +100 -0
  136. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/data.js +28 -0
  137. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/format.js +58 -0
  138. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/parse.js +48 -0
  139. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/base.js +203 -0
  140. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/create.js +33 -0
  141. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/numbers.js +132 -0
  142. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/similar.js +165 -0
  143. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/regex/tree.js +79 -0
  144. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/find.js +92 -0
  145. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/replace/replace.js +26 -0
  146. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/components.js +76 -0
  147. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/missing.js +66 -0
  148. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/name.js +45 -0
  149. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/parse.js +103 -0
  150. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/similar.js +36 -0
  151. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/tree.js +92 -0
  152. package/web/.output/server/node_modules/@iconify/utils/lib/emoji/test/variations.js +62 -0
  153. package/web/.output/server/node_modules/@iconify/utils/lib/icon/defaults.js +25 -0
  154. package/web/.output/server/node_modules/@iconify/utils/lib/icon/merge.js +16 -0
  155. package/web/.output/server/node_modules/@iconify/utils/lib/icon/name.js +57 -0
  156. package/web/.output/server/node_modules/@iconify/utils/lib/icon/square.js +33 -0
  157. package/web/.output/server/node_modules/@iconify/utils/lib/icon/transformations.js +12 -0
  158. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/convert-info.js +125 -0
  159. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/expand.js +19 -0
  160. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icon.js +25 -0
  161. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/get-icons.js +36 -0
  162. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/minify.js +91 -0
  163. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/parse.js +46 -0
  164. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/tree.js +23 -0
  165. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate-basic.js +42 -0
  166. package/web/.output/server/node_modules/@iconify/utils/lib/icon-set/validate.js +123 -0
  167. package/web/.output/server/node_modules/@iconify/utils/lib/index.js +52 -0
  168. package/web/.output/server/node_modules/@iconify/utils/lib/loader/custom.js +30 -0
  169. package/web/.output/server/node_modules/@iconify/utils/lib/loader/loader.js +26 -0
  170. package/web/.output/server/node_modules/@iconify/utils/lib/loader/modern.js +27 -0
  171. package/web/.output/server/node_modules/@iconify/utils/lib/loader/utils.js +105 -0
  172. package/web/.output/server/node_modules/@iconify/utils/lib/misc/objects.js +26 -0
  173. package/web/.output/server/node_modules/@iconify/utils/lib/misc/strings.js +26 -0
  174. package/web/.output/server/node_modules/@iconify/utils/lib/misc/title.js +9 -0
  175. package/web/.output/server/node_modules/@iconify/utils/lib/svg/build.js +113 -0
  176. package/web/.output/server/node_modules/@iconify/utils/lib/svg/defs.js +31 -0
  177. package/web/.output/server/node_modules/@iconify/utils/lib/svg/encode-svg-for-css.js +13 -0
  178. package/web/.output/server/node_modules/@iconify/utils/lib/svg/html.js +9 -0
  179. package/web/.output/server/node_modules/@iconify/utils/lib/svg/id.js +41 -0
  180. package/web/.output/server/node_modules/@iconify/utils/lib/svg/inner-html.js +22 -0
  181. package/web/.output/server/node_modules/@iconify/utils/lib/svg/parse.js +67 -0
  182. package/web/.output/server/node_modules/@iconify/utils/lib/svg/pretty.js +54 -0
  183. package/web/.output/server/node_modules/@iconify/utils/lib/svg/size.js +27 -0
  184. package/web/.output/server/node_modules/@iconify/utils/lib/svg/trim.js +7 -0
  185. package/web/.output/server/node_modules/@iconify/utils/lib/svg/url.js +22 -0
  186. package/web/.output/server/node_modules/@iconify/utils/lib/svg/viewbox.js +8 -0
  187. package/web/.output/server/node_modules/@iconify/utils/package.json +119 -0
  188. package/web/.output/server/node_modules/@iconify/vue/dist/iconify.mjs +1896 -0
  189. package/web/.output/server/node_modules/@iconify/vue/package.json +62 -0
  190. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/index.js +1268 -0
  191. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/lazy-measurements.js +34 -0
  192. package/web/.output/server/node_modules/@tanstack/virtual-core/dist/esm/utils.js +74 -0
  193. package/web/.output/server/node_modules/@tanstack/virtual-core/package.json +56 -0
  194. package/web/.output/server/node_modules/@tanstack/vue-virtual/dist/esm/index.js +66 -0
  195. package/web/.output/server/node_modules/@tanstack/vue-virtual/package.json +68 -0
  196. package/web/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +6759 -0
  197. package/web/.output/server/node_modules/@vue/compiler-core/package.json +58 -0
  198. package/web/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +689 -0
  199. package/web/.output/server/node_modules/@vue/compiler-dom/package.json +57 -0
  200. package/web/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1413 -0
  201. package/web/.output/server/node_modules/@vue/compiler-ssr/package.json +34 -0
  202. package/web/.output/server/node_modules/@vue/devtools-api/dist/index.js +2 -0
  203. package/web/.output/server/node_modules/@vue/devtools-api/package.json +34 -0
  204. package/web/.output/server/node_modules/@vue/devtools-kit/dist/index.js +5670 -0
  205. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/dist/index.mjs +290 -0
  206. package/web/.output/server/node_modules/@vue/devtools-kit/node_modules/hookable/package.json +49 -0
  207. package/web/.output/server/node_modules/@vue/devtools-kit/package.json +44 -0
  208. package/web/.output/server/node_modules/@vue/devtools-shared/dist/index.js +239 -0
  209. package/web/.output/server/node_modules/@vue/devtools-shared/package.json +33 -0
  210. package/web/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +1899 -0
  211. package/web/.output/server/node_modules/@vue/reactivity/package.json +55 -0
  212. package/web/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +6940 -0
  213. package/web/.output/server/node_modules/@vue/runtime-core/package.json +52 -0
  214. package/web/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +1822 -0
  215. package/web/.output/server/node_modules/@vue/runtime-dom/package.json +60 -0
  216. package/web/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +896 -0
  217. package/web/.output/server/node_modules/@vue/server-renderer/package.json +55 -0
  218. package/web/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +604 -0
  219. package/web/.output/server/node_modules/@vue/shared/package.json +47 -0
  220. package/web/.output/server/node_modules/@vueuse/core/dist/index.js +8464 -0
  221. package/web/.output/server/node_modules/@vueuse/core/package.json +49 -0
  222. package/web/.output/server/node_modules/@vueuse/shared/dist/index.js +2013 -0
  223. package/web/.output/server/node_modules/@vueuse/shared/package.json +42 -0
  224. package/web/.output/server/node_modules/aria-hidden/dist/es5/index.js +174 -0
  225. package/web/.output/server/node_modules/aria-hidden/package.json +71 -0
  226. package/web/.output/server/node_modules/birpc/dist/index.mjs +291 -0
  227. package/web/.output/server/node_modules/birpc/package.json +57 -0
  228. package/web/.output/server/node_modules/consola/dist/chunks/prompt.mjs +280 -0
  229. package/web/.output/server/node_modules/consola/dist/core.mjs +512 -0
  230. package/web/.output/server/node_modules/consola/dist/index.mjs +651 -0
  231. package/web/.output/server/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs +72 -0
  232. package/web/.output/server/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs +288 -0
  233. package/web/.output/server/node_modules/consola/package.json +136 -0
  234. package/web/.output/server/node_modules/devalue/index.js +4 -0
  235. package/web/.output/server/node_modules/devalue/package.json +40 -0
  236. package/web/.output/server/node_modules/devalue/src/base64.js +60 -0
  237. package/web/.output/server/node_modules/devalue/src/constants.js +12 -0
  238. package/web/.output/server/node_modules/devalue/src/parse.js +283 -0
  239. package/web/.output/server/node_modules/devalue/src/stringify.js +401 -0
  240. package/web/.output/server/node_modules/devalue/src/uneval.js +552 -0
  241. package/web/.output/server/node_modules/devalue/src/utils.js +160 -0
  242. package/web/.output/server/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
  243. package/web/.output/server/node_modules/entities/dist/commonjs/decode.js +568 -0
  244. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-html.js +7 -0
  245. package/web/.output/server/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +7 -0
  246. package/web/.output/server/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js +21 -0
  247. package/web/.output/server/node_modules/entities/dist/commonjs/internal/decode-shared.js +31 -0
  248. package/web/.output/server/node_modules/entities/dist/commonjs/package.json +3 -0
  249. package/web/.output/server/node_modules/entities/package.json +120 -0
  250. package/web/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js +344 -0
  251. package/web/.output/server/node_modules/estree-walker/package.json +37 -0
  252. package/web/.output/server/node_modules/hookable/dist/index.mjs +257 -0
  253. package/web/.output/server/node_modules/hookable/package.json +53 -0
  254. package/web/.output/server/node_modules/nostics/dist/index.mjs +179 -0
  255. package/web/.output/server/node_modules/nostics/package.json +124 -0
  256. package/web/.output/server/node_modules/perfect-debounce/dist/index.mjs +89 -0
  257. package/web/.output/server/node_modules/perfect-debounce/package.json +41 -0
  258. package/web/.output/server/node_modules/rou3/dist/index.mjs +501 -0
  259. package/web/.output/server/node_modules/rou3/package.json +48 -0
  260. package/web/.output/server/node_modules/source-map-js/lib/array-set.js +121 -0
  261. package/web/.output/server/node_modules/source-map-js/lib/base64-vlq.js +140 -0
  262. package/web/.output/server/node_modules/source-map-js/lib/base64.js +67 -0
  263. package/web/.output/server/node_modules/source-map-js/lib/binary-search.js +111 -0
  264. package/web/.output/server/node_modules/source-map-js/lib/mapping-list.js +79 -0
  265. package/web/.output/server/node_modules/source-map-js/lib/quick-sort.js +132 -0
  266. package/web/.output/server/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
  267. package/web/.output/server/node_modules/source-map-js/lib/source-map-generator.js +444 -0
  268. package/web/.output/server/node_modules/source-map-js/lib/source-node.js +413 -0
  269. package/web/.output/server/node_modules/source-map-js/lib/util.js +594 -0
  270. package/web/.output/server/node_modules/source-map-js/package.json +71 -0
  271. package/web/.output/server/node_modules/source-map-js/source-map.js +8 -0
  272. package/web/.output/server/node_modules/srvx/dist/_chunks/_body-limit.mjs +39 -0
  273. package/web/.output/server/node_modules/srvx/dist/_chunks/_plugins.mjs +56 -0
  274. package/web/.output/server/node_modules/srvx/dist/_chunks/_trust-proxy.mjs +58 -0
  275. package/web/.output/server/node_modules/srvx/dist/_chunks/_url.mjs +134 -0
  276. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils.mjs +15 -0
  277. package/web/.output/server/node_modules/srvx/dist/_chunks/_utils2.mjs +75 -0
  278. package/web/.output/server/node_modules/srvx/dist/adapters/node.mjs +976 -0
  279. package/web/.output/server/node_modules/srvx/package.json +102 -0
  280. package/web/.output/server/node_modules/tailwind-merge/dist/bundle-mjs.mjs +3365 -0
  281. package/web/.output/server/node_modules/tailwind-merge/package.json +93 -0
  282. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-LQJYWU4O.js +112 -0
  283. package/web/.output/server/node_modules/tailwind-variants/dist/chunk-RZF76H2U.js +269 -0
  284. package/web/.output/server/node_modules/tailwind-variants/dist/index.js +38 -0
  285. package/web/.output/server/node_modules/tailwind-variants/package.json +122 -0
  286. package/web/.output/server/node_modules/tailwindcss/dist/chunk-X4GG3EDV.mjs +1 -0
  287. package/web/.output/server/node_modules/tailwindcss/dist/colors.mjs +1 -0
  288. package/web/.output/server/node_modules/tailwindcss/package.json +89 -0
  289. package/web/.output/server/node_modules/ufo/dist/index.mjs +645 -0
  290. package/web/.output/server/node_modules/ufo/package.json +48 -0
  291. package/web/.output/server/node_modules/unhead/dist/index.mjs +9 -0
  292. package/web/.output/server/node_modules/unhead/dist/parser.mjs +508 -0
  293. package/web/.output/server/node_modules/unhead/dist/plugins.mjs +101 -0
  294. package/web/.output/server/node_modules/unhead/dist/scripts.mjs +30 -0
  295. package/web/.output/server/node_modules/unhead/dist/server.mjs +180 -0
  296. package/web/.output/server/node_modules/unhead/dist/shared/unhead.B3VbJo7Y.mjs +207 -0
  297. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BYvz9V1x.mjs +43 -0
  298. package/web/.output/server/node_modules/unhead/dist/shared/unhead.BnoAbrHA.mjs +269 -0
  299. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CaI5ZD4O.mjs +182 -0
  300. package/web/.output/server/node_modules/unhead/dist/shared/unhead.CbpEuj3y.mjs +71 -0
  301. package/web/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
  302. package/web/.output/server/node_modules/unhead/dist/shared/unhead.DQc16pHI.mjs +196 -0
  303. package/web/.output/server/node_modules/unhead/dist/shared/unhead.Dh1cQCTe.mjs +44 -0
  304. package/web/.output/server/node_modules/unhead/dist/shared/unhead.TxTMM7cM.mjs +166 -0
  305. package/web/.output/server/node_modules/unhead/dist/shared/unhead.yem5I2v_.mjs +38 -0
  306. package/web/.output/server/node_modules/unhead/dist/utils.mjs +5 -0
  307. package/web/.output/server/node_modules/unhead/node_modules/hookable/dist/index.mjs +257 -0
  308. package/web/.output/server/node_modules/unhead/node_modules/hookable/package.json +53 -0
  309. package/web/.output/server/node_modules/unhead/package.json +105 -0
  310. package/web/.output/server/node_modules/vue/dist/vue.cjs.js +80 -0
  311. package/web/.output/server/node_modules/vue/dist/vue.cjs.prod.js +66 -0
  312. package/web/.output/server/node_modules/vue/index.js +7 -0
  313. package/web/.output/server/node_modules/vue/index.mjs +1 -0
  314. package/web/.output/server/node_modules/vue/package.json +112 -0
  315. package/web/.output/server/node_modules/vue/server-renderer/index.mjs +1 -0
  316. package/web/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs +249 -0
  317. package/web/.output/server/node_modules/vue-bundle-renderer/package.json +57 -0
  318. package/web/.output/server/node_modules/vue-demi/lib/index.mjs +34 -0
  319. package/web/.output/server/node_modules/vue-demi/package.json +47 -0
  320. package/web/.output/server/node_modules/vue-router/dist/devtools-Bpr7ZAVB.js +1056 -0
  321. package/web/.output/server/node_modules/vue-router/dist/useApi-CROJJdhE.js +436 -0
  322. package/web/.output/server/node_modules/vue-router/dist/vue-router.js +1543 -0
  323. package/web/.output/server/node_modules/vue-router/package.json +214 -0
  324. package/web/.output/server/node_modules/vue-router/vue-router.node.mjs +2 -0
  325. package/web/.output/server/package.json +51 -0
@@ -0,0 +1,1268 @@
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