@melt-js/comps-vue3 2026.11.6 → 2026.11.8

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 (457) hide show
  1. package/README.md +223 -57
  2. package/hel_dist/bilibili/autumn-1/5f18bd9e0b4fff738eaf6ebdc3c5c1477b5ea592.png +0 -0
  3. package/hel_dist/bilibili/autumn-1/62a1c4b6-da1f-437a-90f4-1427f058d2e9.mp4 +0 -0
  4. package/hel_dist/bilibili/autumn-1/839af78322450ea0eb6dbb1d19889d831862804f.png +0 -0
  5. package/hel_dist/bilibili/autumn-1/8bcf476e-6c97-472b-b1e8-d19dd7170edf.mp4 +0 -0
  6. package/hel_dist/bilibili/autumn-1/logo.png +0 -0
  7. package/hel_dist/bilibili/autumn-2/a10dc06f92ff2cf438244d0ed13dba27be88d73f.webp +0 -0
  8. package/hel_dist/bilibili/autumn-2/logo.png +0 -0
  9. package/hel_dist/bilibili/autumn-3/0479542df6a7c5deddf60fbbf63b6e1f1f770c08.png@1c.webp +0 -0
  10. package/hel_dist/bilibili/autumn-3/0876da4f3ec73ff180fc87b46b6d1bcf4d52030a.png@1c.webp +0 -0
  11. package/hel_dist/bilibili/autumn-3/0f79aa287163a3271c6cb22a73a6dc0fc210ab7c.png@1c.webp +0 -0
  12. package/hel_dist/bilibili/autumn-3/32aa867cd3e8fba371a2be90d7d844a68c67f7a5.png@1c.webp +0 -0
  13. package/hel_dist/bilibili/autumn-3/4adc24834b64143296d77bc81ccd952a59301b08.png@1c.webp +0 -0
  14. package/hel_dist/bilibili/autumn-3/530a4624fe408881101885c6f24c72e8c2a14fb6.png@1c.webp +0 -0
  15. package/hel_dist/bilibili/autumn-3/57102cf6e2e2845f2773581928c1d0f0c1985a3e.png@1c.webp +0 -0
  16. package/hel_dist/bilibili/autumn-3/639de634f90688e86b7bd32924cfb029a316cde4.png@1c.webp +0 -0
  17. package/hel_dist/bilibili/autumn-3/852c3bd9d9608ceccb7265de8cea7cf3a4b039eb.png@1c.webp +0 -0
  18. package/hel_dist/bilibili/autumn-3/8a6899088fc9dcd37a0039884fb77f69dc3b1c30.png@1c.webp +0 -0
  19. package/hel_dist/bilibili/autumn-3/9556f65510f73c44aa6756ee9b8cf7fc2562b906.png@1c.webp +0 -0
  20. package/hel_dist/bilibili/autumn-3/96704a6197153e1717a910e6c227937f34743cee.png@1c.webp +0 -0
  21. package/hel_dist/bilibili/autumn-3/b6f4359409b4550fb38594d8c227902db29c720a.png@1c.webp +0 -0
  22. package/hel_dist/bilibili/autumn-3/bf896616dec163402ec79a81f936af67932eca2f.png@1c.webp +0 -0
  23. package/hel_dist/bilibili/autumn-3/c6263485a0218c887848c47a0fe4f515006e1567.png@1c.webp +0 -0
  24. package/hel_dist/bilibili/autumn-3/cd4fda9478b06a8d81cd04f69d7a2ad475d1db40.png@1c.webp +0 -0
  25. package/hel_dist/bilibili/autumn-3/e33992d2d75647af38c50792c199fb9db006786c.png@1c.webp +0 -0
  26. package/hel_dist/bilibili/autumn-3/logo.png +0 -0
  27. package/hel_dist/bilibili/autumn-4/16dc88de1e536a9b11dbe4acec40d44acbf30e4d.png@1c.webp +0 -0
  28. package/hel_dist/bilibili/autumn-4/1c4b40f96bac2479f7a67541171170f79429158c.png@1c.webp +0 -0
  29. package/hel_dist/bilibili/autumn-4/2422523efbc7d3486555c66a9a8f20c3e3f6fdb5.png@1c.webp +0 -0
  30. package/hel_dist/bilibili/autumn-4/392e080a19e6618774a15c235ab0873180e4010d.png@1c.webp +0 -0
  31. package/hel_dist/bilibili/autumn-4/454a3f4bd1f8bd23d89d8e3a676a826e144ab13a.png@1c.webp +0 -0
  32. package/hel_dist/bilibili/autumn-4/459b9e641fc8be0466084ec0fff89e28ca2229ea.png@1c.webp +0 -0
  33. package/hel_dist/bilibili/autumn-4/85d3ee641e1af27233ce0571bfdc650bb6bac668.png@1c.webp +0 -0
  34. package/hel_dist/bilibili/autumn-4/8f976964bf99b64dcf844b698642caa01449623b.png@1c.webp +0 -0
  35. package/hel_dist/bilibili/autumn-4/a1d3587a7230b68e78b724558697ae6a1739e1cc.png@1c.webp +0 -0
  36. package/hel_dist/bilibili/autumn-4/a2f14a60908565b6a4b85caee82bd0457127f9f3.png@1c.webp +0 -0
  37. package/hel_dist/bilibili/autumn-4/a89c6c61109d1f58b83bc76fa3cf939df82d2ff4.png@1c.webp +0 -0
  38. package/hel_dist/bilibili/autumn-4/a9a0eb9ce2e611290e86961a61c3b0942de3515b.png@1c.webp +0 -0
  39. package/hel_dist/bilibili/autumn-4/b51d0d75b1b27b669e456aa36bdf3b46f658a531.png@1c.webp +0 -0
  40. package/hel_dist/bilibili/autumn-4/d29049442060427102881e002285ae50686052e2.png@1c.webp +0 -0
  41. package/hel_dist/bilibili/autumn-4/d86630ee943035f95c0e318bc386764196ab08b6.png@1c.webp +0 -0
  42. package/hel_dist/bilibili/autumn-4/d9ff91200e453584beb49626c2ddbd78e4dd60ed.png@1c.webp +0 -0
  43. package/hel_dist/bilibili/autumn-4/e3a1d1ea8c4360518fa9bbef665795056ca1d50f.png@1c.webp +0 -0
  44. package/hel_dist/bilibili/autumn-4/f3bbed911be68b540c12fb7cbe602ae71ec9a8c7.png@1c.webp +0 -0
  45. package/hel_dist/bilibili/autumn-4/logo.png +0 -0
  46. package/hel_dist/bilibili/autumn-5/064a75156c568aa6a9982e2c983d2a30cb86ea94.png@1c.webp +0 -0
  47. package/hel_dist/bilibili/autumn-5/0ebcccd16a9fe9bb551e213de4eaf3cd5a24c8ff.png@1c.webp +0 -0
  48. package/hel_dist/bilibili/autumn-5/18e14b236c8c0478b9f126b53dc149718c8277d6.png@1c.webp +0 -0
  49. package/hel_dist/bilibili/autumn-5/1b6718fe3996574889da7ef1b9c29a566fe963f4.png@1c.webp +0 -0
  50. package/hel_dist/bilibili/autumn-5/20ccfde3e5606d223ab230a78234e4f9ac140371.png@1c.webp +0 -0
  51. package/hel_dist/bilibili/autumn-5/21a613a7457891ed7daa559b03191df7bf551362.png@1c.webp +0 -0
  52. package/hel_dist/bilibili/autumn-5/2c048730ce3449400cd657650f5f2e68e2fa5ef5.png@1c.webp +0 -0
  53. package/hel_dist/bilibili/autumn-5/30ccbdfe561bcd18a7ee457bd151b55da7a3dd3c.png@1c.webp +0 -0
  54. package/hel_dist/bilibili/autumn-5/4367bada261c826302101afa18fe41e86f545099.png@1c.webp +0 -0
  55. package/hel_dist/bilibili/autumn-5/4a66f79212d4c6182a8e10a1eb0424f3d7c79120.png@1c.webp +0 -0
  56. package/hel_dist/bilibili/autumn-5/57f20e919517fc784f1e03900140274cfea2cb85.png@1c.webp +0 -0
  57. package/hel_dist/bilibili/autumn-5/582b9609daf669327c460af63776f5f0c14b5c26.png@1c.webp +0 -0
  58. package/hel_dist/bilibili/autumn-5/6683112849dadee65749c4f7f72b83c9a9f8f537.png@1c.webp +0 -0
  59. package/hel_dist/bilibili/autumn-5/670d70b0351582e5b53855ddbf50600c03425062.png@1c.webp +0 -0
  60. package/hel_dist/bilibili/autumn-5/7bb79a88a5c61724c7fd2ab009f462b744ba5b29.png@1c.webp +0 -0
  61. package/hel_dist/bilibili/autumn-5/83b58af34fc683e529962449078a3ded7f1d2e80.png@1c.webp +0 -0
  62. package/hel_dist/bilibili/autumn-5/93ab310ca3e2a24489aa1873865501adb3f81393.png@1c.webp +0 -0
  63. package/hel_dist/bilibili/autumn-5/ab4fbaed481d880a618e52f97e7e1f6e5c8b7f7c.png@1c.webp +0 -0
  64. package/hel_dist/bilibili/autumn-5/b66a4ac5-5c0b-487e-86d2-f787b70a4ace.webm +0 -0
  65. package/hel_dist/bilibili/autumn-5/c31995a7a80e459e165ae4ef60e323e27f497420.png@1c.webp +0 -0
  66. package/hel_dist/bilibili/autumn-5/d562864113a6e6cce54b41745132a974b4576c3c.png@1c.webp +0 -0
  67. package/hel_dist/bilibili/autumn-5/f5fcc108b811577571e3f54d6d46df58a9f553ed.png@1c.webp +0 -0
  68. package/hel_dist/bilibili/autumn-5/logo.png +0 -0
  69. package/hel_dist/bilibili/spring-1/17a00335345ecb9f5439069ee2d069772a9cede3.png +0 -0
  70. package/hel_dist/bilibili/spring-1/3969636231e7668ec91985bb147c89a6b69021c7.png +0 -0
  71. package/hel_dist/bilibili/spring-1/45031fa60ea6084886e80ca9e906803f9a3221b1.png +0 -0
  72. package/hel_dist/bilibili/spring-1/4d5ddb371f6d710cf0222a5d0cef46ea3ed5901c.png +0 -0
  73. package/hel_dist/bilibili/spring-1/4d8514308bd6673b215cdb1aadbf12891d784672.png +0 -0
  74. package/hel_dist/bilibili/spring-1/65a860abda015ed247d48b1bcc5cbb9ce725d050.png +0 -0
  75. package/hel_dist/bilibili/spring-1/6a6e6e52a18a7731645aa1d93b1d74f2f628f77a.png +0 -0
  76. package/hel_dist/bilibili/spring-1/8d947f22c6a67b8a5d2fbe1424ca2a946802e729.png +0 -0
  77. package/hel_dist/bilibili/spring-1/963685e7d82d27ba5e8187680814a2d548b5adbe.png +0 -0
  78. package/hel_dist/bilibili/spring-1/9af4cdc3c81e01522fc4df82a5b7cfa8b03b6b5b.png +0 -0
  79. package/hel_dist/bilibili/spring-1/9b4f18f9f18c8dca17ba6c0b46a1dcedb649c82b.png +0 -0
  80. package/hel_dist/bilibili/spring-1/b24c872ae1ef34ebe794d1631a50b57fbdb0a482.png +0 -0
  81. package/hel_dist/bilibili/spring-1/c12c6ceaa5f78de17cd94bb0ad325339b2386ee8.png +0 -0
  82. package/hel_dist/bilibili/spring-1/c7a1dbf9bbc09c1f867b14a141c4e2f07c4b228d.png +0 -0
  83. package/hel_dist/bilibili/spring-1/d605a7076d5fe89d0d7e3d6219bffe4000033a09.png +0 -0
  84. package/hel_dist/bilibili/spring-1/logo.png +0 -0
  85. package/hel_dist/bilibili/spring-2/kPbkWcX74M.mp4 +0 -0
  86. package/hel_dist/bilibili/spring-2/logo.png +0 -0
  87. package/hel_dist/bilibili/spring-3/c3c807eb2f5bcc333a3bf3189634e3f9867c6a85.webp +0 -0
  88. package/hel_dist/bilibili/spring-3/logo.png +0 -0
  89. package/hel_dist/bilibili/spring-4/2e81e0644044fafd5e72de3e595d7db6f65122ef.png@3840w_360h_1c_90q.webp +0 -0
  90. package/hel_dist/bilibili/spring-4/logo.png +0 -0
  91. package/hel_dist/bilibili/spring-5/06336184ba84f89890f50e867012c05914219947.png@1c.webp +0 -0
  92. package/hel_dist/bilibili/spring-5/17a1bcfacfc51f000cad0611dca32020b18db6f5.png@1c.webp +0 -0
  93. package/hel_dist/bilibili/spring-5/2c32dd208cb8f317ac78e03c78da5cd04b9a1410.png@1c.webp +0 -0
  94. package/hel_dist/bilibili/spring-5/2dd4a5f8aee1829bcdae687052853b8947a5d2f6.png@1c.webp +0 -0
  95. package/hel_dist/bilibili/spring-5/4d37acea06841ace858f27cab3a5596d9fdd8354.png@1c.webp +0 -0
  96. package/hel_dist/bilibili/spring-5/5630bebd1068fa6c46eaea4ffa9b004f882d7d33.png@1c.webp +0 -0
  97. package/hel_dist/bilibili/spring-5/6d9f792b3458e0b6f8647f7ad3958b1c1438d50e.png@1c.webp +0 -0
  98. package/hel_dist/bilibili/spring-5/8cacfce7b1f44f707836fa4fb68444a9c7202d63.png@1c.webp +0 -0
  99. package/hel_dist/bilibili/spring-5/905fbc85df462f16c3fe0b83f0e5814696818a56.png@1c.webp +0 -0
  100. package/hel_dist/bilibili/spring-5/996a5656d3a31738f79b67d94ea0b654fba169ac.png@1c.webp +0 -0
  101. package/hel_dist/bilibili/spring-5/a0de269c-fb3b-42b6-8ea5-8be8fe8d95a1.webm +0 -0
  102. package/hel_dist/bilibili/spring-5/a7ead379e7a6653cd70f24e8556ce336702abb3a.png@1c.webp +0 -0
  103. package/hel_dist/bilibili/spring-5/ae0543610dd9b3d0903cec7a6982200691dce1b5.png@1c.webp +0 -0
  104. package/hel_dist/bilibili/spring-5/ba22577d90164e589f87f9073d56953ff3e30088.png@1c.webp +0 -0
  105. package/hel_dist/bilibili/spring-5/be5632d3f86228a81979b8a85ce9cf0d5df541e0.png@1c.webp +0 -0
  106. package/hel_dist/bilibili/spring-5/d4d4569741806055f36c4d9140bdd7069a50ec09.png@1c.webp +0 -0
  107. package/hel_dist/bilibili/spring-5/d5113ee4aaca71d7e7570a45b1e541efc0deca71.png@1c.webp +0 -0
  108. package/hel_dist/bilibili/spring-5/d6ef89533fed72dfde53009ac2aab66009ab545a.png@1c.webp +0 -0
  109. package/hel_dist/bilibili/spring-5/ddc58cd92df71ada0be9bad00b2139a34872ef94.png@1c.webp +0 -0
  110. package/hel_dist/bilibili/spring-5/e04d0fbaaf67bdb0de7c40dca04180a9c1defa0a.png@1c.webp +0 -0
  111. package/hel_dist/bilibili/spring-5/f0ba9b7f8d4ec1745a08cabdf3951ceb4aa266d1.png@1c.webp +0 -0
  112. package/hel_dist/bilibili/spring-5/f3945f0ed928e45fb58c8a1edb07358ec719c8df.png@1c.webp +0 -0
  113. package/hel_dist/bilibili/spring-5/f63cf9726b73c78ececc43ff16f3336fdfc76748.png@1c.webp +0 -0
  114. package/hel_dist/bilibili/spring-5/ff63f10698f5f0a9e9083d90c6f32de5269801d4.png@1c.webp +0 -0
  115. package/hel_dist/bilibili/spring-5/logo.png +0 -0
  116. package/hel_dist/bilibili/spring-6/2e5a5407987125451f4401e1f80da8aa6c9ec74e.png@1c.webp +0 -0
  117. package/hel_dist/bilibili/spring-6/2ec5703e20135d578a4d31a9d40dd9deb23c326e.png@1c.webp +0 -0
  118. package/hel_dist/bilibili/spring-6/3dd93e33d7e9bb6b74b7e2c577cb4a61cd7876bf.png@1c.webp +0 -0
  119. package/hel_dist/bilibili/spring-6/48d675bee7f2b20af495ddcfa2051d1e42eeb526.png@1c.webp +0 -0
  120. package/hel_dist/bilibili/spring-6/556c868c5b003f3f167cf1e63e6e3aa27b74bdc7.png@1c.webp +0 -0
  121. package/hel_dist/bilibili/spring-6/5598c26a3d090ba7cdf1d99de1e7d76561d56e78.png@1c.webp +0 -0
  122. package/hel_dist/bilibili/spring-6/598389b103a4c89592706b9a426c1dd5c9fbdb96.png@1c.webp +0 -0
  123. package/hel_dist/bilibili/spring-6/59a63bc51e049fd01d7e567b9759727888d0de43.png@1c.webp +0 -0
  124. package/hel_dist/bilibili/spring-6/5a97b3d3f84e4ce0e77988a8a0d5744a2a2fd8b9.png@1c.webp +0 -0
  125. package/hel_dist/bilibili/spring-6/5cbcbeb21c079264f78e63c411f09334126a11d3.png@1c.webp +0 -0
  126. package/hel_dist/bilibili/spring-6/679c3bb077504de3379100c688770d94d97778cf.png@1c.webp +0 -0
  127. package/hel_dist/bilibili/spring-6/96151dfbace0750a4a590e9fac92211ce7c28b82.png@1c.webp +0 -0
  128. package/hel_dist/bilibili/spring-6/add3317b33f371b4ce4391b5169dbd6455065ed4.png@1c.webp +0 -0
  129. package/hel_dist/bilibili/spring-6/b1b6ebe5d3def015132105fe7a8253eced9b563c.png@1c.webp +0 -0
  130. package/hel_dist/bilibili/spring-6/b94241f2-320a-47ac-9f14-e9b0c46385ce.webm +0 -0
  131. package/hel_dist/bilibili/spring-6/c9ef0b13e5ec27cc6e9fa1516e79a8ab8f5c5b38.png@1c.webp +0 -0
  132. package/hel_dist/bilibili/spring-6/e35035fb17abb07d80c1749988bc938c9a5919dc.png@1c.webp +0 -0
  133. package/hel_dist/bilibili/spring-6/f272c9c3125afec158fe4c4e0540a271cd75dfb4.png@1c.webp +0 -0
  134. package/hel_dist/bilibili/spring-6/logo.png +0 -0
  135. package/hel_dist/bilibili/summer-1/11dd110b-5b4b-4912-af6d-1c4906295a1d.webm +0 -0
  136. package/hel_dist/bilibili/summer-1/1c713de1-3bbf-42b4-9148-0427b567b741.webm +0 -0
  137. package/hel_dist/bilibili/summer-1/4c0b2c71-0990-47a5-b19f-40e478ff6923.webm +0 -0
  138. package/hel_dist/bilibili/summer-1/6ef8db87-259b-48fb-b930-0fd201780d9b.webm +0 -0
  139. package/hel_dist/bilibili/summer-1/9f75c700-2e13-45c7-b021-006928c80667.webm +0 -0
  140. package/hel_dist/bilibili/summer-1/b180aa43-9b33-476d-bca3-7db19583beff.webm +0 -0
  141. package/hel_dist/bilibili/summer-1/logo.png +0 -0
  142. package/hel_dist/bilibili/summer-2/background.png +0 -0
  143. package/hel_dist/bilibili/summer-2/cover.png +0 -0
  144. package/hel_dist/bilibili/summer-2/logo.png +0 -0
  145. package/hel_dist/bilibili/summer-3/fba0c9bac0fad743e9befa9305f197a919561580.png@3840w_360h_1c_90q.webp +0 -0
  146. package/hel_dist/bilibili/summer-3/logo.png +0 -0
  147. package/hel_dist/bilibili/summer-4/0b9e2b95931f266a853ba046b6c225e49511a428.png@1c.webp +0 -0
  148. package/hel_dist/bilibili/summer-4/109794fd095a7328501365454faae6c91bc914cb.png@1c.webp +0 -0
  149. package/hel_dist/bilibili/summer-4/1f7d26c7582e7b320cb21923175613c9d8077f56.png@1c.webp +0 -0
  150. package/hel_dist/bilibili/summer-4/4d444aa8fafe9dac2db3b847657938a24a2fa83d.png@1c.webp +0 -0
  151. package/hel_dist/bilibili/summer-4/4d58f4c657906f900a37eb6a9dcdaab5d7c31ef6.png@1c.webp +0 -0
  152. package/hel_dist/bilibili/summer-4/502ef5bcff5ae1588acf6abaf8ec57115183b6a5.png@1c.webp +0 -0
  153. package/hel_dist/bilibili/summer-4/58a4287288d296ccb9235e49f330cc9f8ae3f6e8.png@1c.webp +0 -0
  154. package/hel_dist/bilibili/summer-4/5f2aa97bddf032a32420313465904560e96e791d.png@1c.webp +0 -0
  155. package/hel_dist/bilibili/summer-4/640b9089660a21c30698edd35fd89146b28a25a2.png@1c.webp +0 -0
  156. package/hel_dist/bilibili/summer-4/6ea563b54bfaf1830ed95edd295e2521c14ecf38.png@1c.webp +0 -0
  157. package/hel_dist/bilibili/summer-4/79abfde6b4ac5d95fd4df0dcea96c3d14d55f64c.png@1c.webp +0 -0
  158. package/hel_dist/bilibili/summer-4/93b789dfa303f9458d31690c2f13a4fc719da2db.png@1c.webp +0 -0
  159. package/hel_dist/bilibili/summer-4/b4fcb84965fadf036875b8189910280b3edb182c.png@1c.webp +0 -0
  160. package/hel_dist/bilibili/summer-4/b772ae3b3ed3342b0cbf26b6f2e66a054b7af81b.png@1c.webp +0 -0
  161. package/hel_dist/bilibili/summer-4/b83df7a50dd88a9f4558e1773b48fe523705d333.png@1c.webp +0 -0
  162. package/hel_dist/bilibili/summer-4/dc63a982b67922e999d743d3772091a8b412671c.png@1c.webp +0 -0
  163. package/hel_dist/bilibili/summer-4/logo.png +0 -0
  164. package/hel_dist/bilibili/summer-5/0725acc8fac5c8164726240de477fbd0ce18e6dd.png@1c.webp +0 -0
  165. package/hel_dist/bilibili/summer-5/149e5beb3ef989ee01a28c0412ece9842c026e74.png@1c.webp +0 -0
  166. package/hel_dist/bilibili/summer-5/1a77fc745eb5b65b976506bc3a8ce1c8fe876991.png@1c.webp +0 -0
  167. package/hel_dist/bilibili/summer-5/24c57a58af481117640928798419341bc6fd32d3.png@1c.webp +0 -0
  168. package/hel_dist/bilibili/summer-5/339abbc0d089a1ddbe3265b238e750173ce56de4.png@1c.webp +0 -0
  169. package/hel_dist/bilibili/summer-5/4e7edb416c34eccc40f34d2b297524652685a9bb.png@1c.webp +0 -0
  170. package/hel_dist/bilibili/summer-5/78e8b2abe1bc5715719e847a4e3654e3d11bcbf7.png@1c.webp +0 -0
  171. package/hel_dist/bilibili/summer-5/7b96b0044345b5c2e3ddb8ea487daed8761c57f7.png@1c.webp +0 -0
  172. package/hel_dist/bilibili/summer-5/8198227e8abb7c75a94ddbc1209a9bf5ba067a68.png@1c.webp +0 -0
  173. package/hel_dist/bilibili/summer-5/9af5dad13028d419618e86399eb8fc009700d74c.png@1c.webp +0 -0
  174. package/hel_dist/bilibili/summer-5/9f86739c3b0ff5ddc99122aa506dee041aab4ec4.png@1c.webp +0 -0
  175. package/hel_dist/bilibili/summer-5/a679239d0399412dd75e4e0eb30702b0818ef26d.png@1c.webp +0 -0
  176. package/hel_dist/bilibili/summer-5/a89d95306fab17a35b50a5f7451e2b27ba4d2a6e.png@1c.webp +0 -0
  177. package/hel_dist/bilibili/summer-5/af9d07a3e29858d742cf2f0dd22c70d5553641f3.png@1c.webp +0 -0
  178. package/hel_dist/bilibili/summer-5/ce1377aa701c7704b5f0984959512120ac57c586.png@1c.webp +0 -0
  179. package/hel_dist/bilibili/summer-5/dc29b8093f5d97a41d48ca24b4d7d00f78920d54.png@1c.webp +0 -0
  180. package/hel_dist/bilibili/summer-5/logo.png +0 -0
  181. package/hel_dist/bilibili/summer-6/0a3bf7a4c7c3b8b5b63aae6adf57c5fabeeb0cff.png@1c.webp +0 -0
  182. package/hel_dist/bilibili/summer-6/31c6df60-8e93-40bc-8f16-e144f90a3ff3.webm +0 -0
  183. package/hel_dist/bilibili/summer-6/3483ce9cad9fc3dd80f34cb164bcd5eeb1606332.png@1c.webp +0 -0
  184. package/hel_dist/bilibili/summer-6/39f5846ccf601e178afe37eef2e9759d38078d56.png@1c.webp +0 -0
  185. package/hel_dist/bilibili/summer-6/4d9b71139bc84c4ddd1b37a906115c4b0c54af87.png@1c.webp +0 -0
  186. package/hel_dist/bilibili/summer-6/6e9dd4d7f26b117773661aeed3a357641d519f2a.png@1c.webp +0 -0
  187. package/hel_dist/bilibili/summer-6/8512395c322494ef32b0fb40821e8e66fb291b53.png@1c.webp +0 -0
  188. package/hel_dist/bilibili/summer-6/9539f58accbf88eb810a45ff2cbefbf1c29840c3.png@1c.webp +0 -0
  189. package/hel_dist/bilibili/summer-6/988a546df1cdf5eeefa0a5c319bc6b4bfca7d42d.png@1c.webp +0 -0
  190. package/hel_dist/bilibili/summer-6/9cc0c1c3b87ca0ea32b80c3b08611e794108348b.png@1c.webp +0 -0
  191. package/hel_dist/bilibili/summer-6/ada15ae5-b072-434b-ab94-f1d8a683b74e.webm +0 -0
  192. package/hel_dist/bilibili/summer-6/b5514fc043485ce31d0c91a398aeb288261256dc.png@1c.webp +0 -0
  193. package/hel_dist/bilibili/summer-6/cd873292b7b3ae5603b546e1ecdf05fecaa955f3.png@1c.webp +0 -0
  194. package/hel_dist/bilibili/summer-6/e737e375a9bf412f802feaec18ee52ad517b4db9.png@1c.webp +0 -0
  195. package/hel_dist/bilibili/summer-6/f3a02af183b808d236d0cc7997cbeb8958ef9bb0.png@1c.webp +0 -0
  196. package/hel_dist/bilibili/summer-6/f48b2d7535cae1ed97c7bb3c69d29e574cbe30c6.png@1c.webp +0 -0
  197. package/hel_dist/bilibili/summer-6/logo.png +0 -0
  198. package/hel_dist/bilibili/summer-7/09d0855b6b6d6965e8f02404777986237848c6c9.png@1c.webp +0 -0
  199. package/hel_dist/bilibili/summer-7/142a486b8dd500a626a60b68ad993af8dabc8b55.png@1c.webp +0 -0
  200. package/hel_dist/bilibili/summer-7/198efffbc58493300854c04ab0ea8d979a6f9223.png@1c.webp +0 -0
  201. package/hel_dist/bilibili/summer-7/27e411d92729604aa594858beb5130ed60aad76d.png@1c.webp +0 -0
  202. package/hel_dist/bilibili/summer-7/286eb259a60a0eabfcde96d7ea92d239fe68b3fe.png@1c.webp +0 -0
  203. package/hel_dist/bilibili/summer-7/40878bbef514e2d4bf5d660fe1145c869567bec2.png@1c.webp +0 -0
  204. package/hel_dist/bilibili/summer-7/42485baddbca05d2c4c7710a0b76b74d303e06d7.png@1c.webp +0 -0
  205. package/hel_dist/bilibili/summer-7/4596b25b-a9e6-47a2-b80c-d9c70c04d8eb.webm +0 -0
  206. package/hel_dist/bilibili/summer-7/75ec2d45ce8c942a1f7379d4641171da4d90ab0d.png@1c.webp +0 -0
  207. package/hel_dist/bilibili/summer-7/782d55aeca6cc75f51d2d630005f514a61a0ddfa.png@1c.webp +0 -0
  208. package/hel_dist/bilibili/summer-7/7998ca9f0bc267375fb7b45f75626d96806f94d7.png@1c.webp +0 -0
  209. package/hel_dist/bilibili/summer-7/8ea0e95a8e5fc85ae227810925dba1ace1e9fcba.png@1c.webp +0 -0
  210. package/hel_dist/bilibili/summer-7/a43c6833d262301373234ffbd6934559d2ce7fb2.png@1c.webp +0 -0
  211. package/hel_dist/bilibili/summer-7/bb6266e1525a51f7920fc8881e47cadeee271b0c.png@1c.webp +0 -0
  212. package/hel_dist/bilibili/summer-7/c13ca9c6405c71bf864ed2bc421680cb437f45ef.png@1c.webp +0 -0
  213. package/hel_dist/bilibili/summer-7/cbf19f3682dfb02e62557d07fefaf241a80296a1.png@1c.webp +0 -0
  214. package/hel_dist/bilibili/summer-7/cd68251cde11936871237ca94360acb451bf7ed2.png@1c.webp +0 -0
  215. package/hel_dist/bilibili/summer-7/ce8c5e45230a6d3805baf60f5916f1cd441aac8e.png@1c.webp +0 -0
  216. package/hel_dist/bilibili/summer-7/d6c941cf2d5fc6c717173f7e3f166dbc444aa15b.png@1c.webp +0 -0
  217. package/hel_dist/bilibili/summer-7/dcf4044d-c928-4e4f-bd94-d5a34df80d0d.webm +0 -0
  218. package/hel_dist/bilibili/summer-7/e305925c-56ec-44b5-b18e-1b8dc73b25f2.webm +0 -0
  219. package/hel_dist/bilibili/summer-7/logo.png +0 -0
  220. package/hel_dist/bilibili/winter-1/392f3829-0285-4589-8fba-ba5c3a236048.webm +0 -0
  221. package/hel_dist/bilibili/winter-1/93d05910-f94a-4246-aa23-60234dc90e31.webm +0 -0
  222. package/hel_dist/bilibili/winter-1/c1f4248b-fe5b-413e-890a-ebdbfbb3543f.webm +0 -0
  223. package/hel_dist/bilibili/winter-1/logo.png +0 -0
  224. package/hel_dist/bilibili/winter-2/f97330ca7905307f539b2af1f64fa2a2fdb4eaed.webp +0 -0
  225. package/hel_dist/bilibili/winter-2/logo.png +0 -0
  226. package/hel_dist/bilibili/winter-3/09fa68c0c716596cebf6b1f81ed69a2a7a0a8c89.png@1c.webp +0 -0
  227. package/hel_dist/bilibili/winter-3/0cea6143cb8fce3ac55c0e1888a889c906a976aa.png@1c.webp +0 -0
  228. package/hel_dist/bilibili/winter-3/0eb9f058-7ec4-4539-8a2c-083bd91146d5.webm +0 -0
  229. package/hel_dist/bilibili/winter-3/31ff321fe1c2b003ab5c42beebb07f6c1652f66e.png@1c.webp +0 -0
  230. package/hel_dist/bilibili/winter-3/459fbeaaff1fbeced05ac36f1cb0c0c70df3ff01.png@1c.webp +0 -0
  231. package/hel_dist/bilibili/winter-3/4cbfd5b2c00e1abb157e9ca3e79380bfa40d2b26.png@1c.webp +0 -0
  232. package/hel_dist/bilibili/winter-3/5103762686dc9627619b028354c15ba2a72b0886.png@1c.webp +0 -0
  233. package/hel_dist/bilibili/winter-3/596c782fe6636269c65a50a9188fd4d16d12a83e.png@1c.webp +0 -0
  234. package/hel_dist/bilibili/winter-3/6b8bf544dec0088423136771f01696c68112a145.png@1c.webp +0 -0
  235. package/hel_dist/bilibili/winter-3/7c2d36bba37320de03c417ed7d86111f7b05347e.png@1c.webp +0 -0
  236. package/hel_dist/bilibili/winter-3/89d1c8fb55797a064a4d4aca51be2ebb8d86643a.png@1c.webp +0 -0
  237. package/hel_dist/bilibili/winter-3/aa01bb2357ea84d7cc6cf3030769f2581a3ac98f.png@1c.webp +0 -0
  238. package/hel_dist/bilibili/winter-3/b28b35a71a658e8bc449cd570337d7d9662d07d7.png@1c.webp +0 -0
  239. package/hel_dist/bilibili/winter-3/bad95b1085650b58108b3491c9c13e1ef4e6b41f.png@1c.webp +0 -0
  240. package/hel_dist/bilibili/winter-3/bba2f3520bedef31ef33a816f11a9d22487b80aa.png@1c.webp +0 -0
  241. package/hel_dist/bilibili/winter-3/c2914ea86a54203e59b9b9fb1b8ab3461a5976ed.png@1c.webp +0 -0
  242. package/hel_dist/bilibili/winter-3/c7cb3d67462676f79b3e702db60f4d4b038f3f28.png@1c.webp +0 -0
  243. package/hel_dist/bilibili/winter-3/cb5b4ca963e3a1a6d3917182561844b24a05fc20.png@1c.webp +0 -0
  244. package/hel_dist/bilibili/winter-3/cd6dadba219330bf44d3f8bcb584aede77d37f79.png@1c.webp +0 -0
  245. package/hel_dist/bilibili/winter-3/cfb54458ad3e2101d245f3434222e33453825f4e.png@1c.webp +0 -0
  246. package/hel_dist/bilibili/winter-3/logo.png +0 -0
  247. package/hel_dist/bilibili/winter-4/01b79b5b5b38d7305a0ca1780c24662cc5a59f18.png@1c.webp +0 -0
  248. package/hel_dist/bilibili/winter-4/085bc5e7f70b625b62c1f5d374f55acbd828ab65.png@1c.webp +0 -0
  249. package/hel_dist/bilibili/winter-4/121335f79c78bb6f47e4fc7dae4b0af0eac804bb.png@1c.webp +0 -0
  250. package/hel_dist/bilibili/winter-4/1fd3d44b8f890b88cf52f6bcc041326b30e7cb62.png@1c.webp +0 -0
  251. package/hel_dist/bilibili/winter-4/357dd346995f678c43eb6bf51fe02f47bbe7db7d.png@1c.webp +0 -0
  252. package/hel_dist/bilibili/winter-4/3e16264878dd88c1b8ead37aab07a9363186b18c.png@1c.webp +0 -0
  253. package/hel_dist/bilibili/winter-4/476679726643b3b6cc5599b882d85953ef34f3d9.png@1c.webp +0 -0
  254. package/hel_dist/bilibili/winter-4/590a6dd64ff00d5d0e63e230188939c405253452.png@1c.webp +0 -0
  255. package/hel_dist/bilibili/winter-4/67a3c27832d63060d88fbd7bdb2fc543e3fb9ddf.png@1c.webp +0 -0
  256. package/hel_dist/bilibili/winter-4/6afc90f36610318b4785a52c1a51ef6f1de9d25b.png@1c.webp +0 -0
  257. package/hel_dist/bilibili/winter-4/73fcb8a56776307147c140f68bf9c5793696ae88.png@1c.webp +0 -0
  258. package/hel_dist/bilibili/winter-4/758c63f5-cd91-43d2-abdd-4a3d6ccd4562.webm +0 -0
  259. package/hel_dist/bilibili/winter-4/8902051ab71c8093a85ce2a71882054ee91ea631.png@1c.webp +0 -0
  260. package/hel_dist/bilibili/winter-4/b8a5bcf77a07793ce50294a8cb14a9fb8f2cea83.png@1c.webp +0 -0
  261. package/hel_dist/bilibili/winter-4/bae427c01d895b63e6aaf6b0c239b86027527e6a.png@1c.webp +0 -0
  262. package/hel_dist/bilibili/winter-4/c651a0183b81857191c86b133c5a777059b13571.png@1c.webp +0 -0
  263. package/hel_dist/bilibili/winter-4/c9231e763120806f3e918d06ad3f415e920c2b73.png@1c.webp +0 -0
  264. package/hel_dist/bilibili/winter-4/dd79de12-0736-4d00-acba-c6b201bc4886.webm +0 -0
  265. package/hel_dist/bilibili/winter-4/e00c60ae700774655af2e2516a13a5b1fa2fcfe7.png@1c.webp +0 -0
  266. package/hel_dist/bilibili/winter-4/fe903820ca0f604ef24f16ff7ad51192ead3d0c8.png@1c.webp +0 -0
  267. package/hel_dist/bilibili/winter-4/logo.png +0 -0
  268. package/hel_dist/bilibili/winter-5/1696ffeacb26bcce7ad50037952620ee43614a4a.png@1c.webp +0 -0
  269. package/hel_dist/bilibili/winter-5/23c05e4d9e0ffbc16671e14c406fbe785b06ff9f.png@1c.webp +0 -0
  270. package/hel_dist/bilibili/winter-5/477fb7a2f5e2cc1b2aa00c679c8ab168b47ff1b9.png@1c.webp +0 -0
  271. package/hel_dist/bilibili/winter-5/480a5c02dbcd3afd5f790cf621efbd1b2d39efcb.png@1c.webp +0 -0
  272. package/hel_dist/bilibili/winter-5/567e0221b3bd89e34d85c604549d915c95ca17d1.png@1c.webp +0 -0
  273. package/hel_dist/bilibili/winter-5/6f27fe80f495e83546921c2c58b2107c2ee89706.png@1c.webp +0 -0
  274. package/hel_dist/bilibili/winter-5/843ee84b16bab6274b98b317b3adaf1351b4be76.png@1c.webp +0 -0
  275. package/hel_dist/bilibili/winter-5/987a407da2e02a12be549ad7f011dc11f73216e9.png@1c.webp +0 -0
  276. package/hel_dist/bilibili/winter-5/a12cbab877db2b6d3b96ec012735cfe3998de399.png@1c.webp +0 -0
  277. package/hel_dist/bilibili/winter-5/a5607001ac06b4780106e2a10aa835657e553f07.png@1c.webp +0 -0
  278. package/hel_dist/bilibili/winter-5/ac580ac636595e27b5d5c8b1f9d802751823f02f.png@1c.webp +0 -0
  279. package/hel_dist/bilibili/winter-5/ae64c474ba2748b4fea1a1433b9b373598d3e686.png@1c.webp +0 -0
  280. package/hel_dist/bilibili/winter-5/b0747b7f64e0e07e379a4bd416a0891b3e52c7d9.png@1c.webp +0 -0
  281. package/hel_dist/bilibili/winter-5/b14cad3c76e957705810c26f4c6acc236f280721.png@1c.webp +0 -0
  282. package/hel_dist/bilibili/winter-5/c4cef2b063a853521c7f413d8e7782ff653e4126.png@1c.webp +0 -0
  283. package/hel_dist/bilibili/winter-5/cc1405d4d805baf9c459f67c03f095f70ec864c6.png@1c.webp +0 -0
  284. package/hel_dist/bilibili/winter-5/d41b0292d9d1b0fce37a35f6efacac579093cdb3.png@1c.webp +0 -0
  285. package/hel_dist/bilibili/winter-5/dd4aa5af4898a15dde074fe6b833bdfbc045dd47.png@1c.webp +0 -0
  286. package/hel_dist/bilibili/winter-5/eb98a42561de7d45f8856407c4531d2724ac6fc6.png@1c.webp +0 -0
  287. package/hel_dist/bilibili/winter-5/ec9f99bf71be9408a359d7cd48dfb47e48ebce2c.png@1c.webp +0 -0
  288. package/hel_dist/bilibili/winter-5/f569be6834a5968c038bcc0fb0403f8f77e24c18.png@1c.webp +0 -0
  289. package/hel_dist/bilibili/winter-5/fbfeb5de7e41fd1e888fca7ac76cbf2f8a42f3d3.png@1c.webp +0 -0
  290. package/hel_dist/bilibili/winter-5/logo.png +0 -0
  291. package/hel_dist/css/comp-misc.edf6705f.css +1 -0
  292. package/hel_dist/css/loadApp.3c3e8774.css +1 -0
  293. package/hel_dist/hel-meta.json +354 -16
  294. package/hel_dist/index.html +1 -1
  295. package/hel_dist/js/app.4c7ccd2a.js +1 -0
  296. package/hel_dist/js/comp-BilibiliBanner.b602ce49.js +1 -0
  297. package/hel_dist/js/comp-BookFlip.fe7fff09.js +1 -0
  298. package/hel_dist/js/comp-ChinaRouteMap.9c153fdd.js +1 -0
  299. package/hel_dist/js/comp-CircularMenu.21006db8.js +1 -0
  300. package/hel_dist/js/comp-CompareSlider.640445be.js +1 -0
  301. package/hel_dist/js/comp-CorgiInput.2009fdaa.js +1 -0
  302. package/hel_dist/js/comp-CubeWaveLoading.75d40172.js +1 -0
  303. package/hel_dist/js/comp-CyberInput.b1fb1801.js +1 -0
  304. package/hel_dist/js/comp-DnaLoading.c60932df.js +1 -0
  305. package/hel_dist/js/comp-DominoLoading.314224a9.js +1 -0
  306. package/hel_dist/js/comp-ExpandSearch.2ffc38e9.js +1 -0
  307. package/hel_dist/js/comp-FilmRoll.e671d245.js +1 -0
  308. package/hel_dist/js/comp-FloatingLabelInput.09236a77.js +1 -0
  309. package/hel_dist/js/comp-GearLoading.261e4a0a.js +1 -0
  310. package/hel_dist/js/comp-GlowBorder.90cb30a1.js +1 -0
  311. package/hel_dist/js/comp-GooeyBallsLoading.37f9507e.js +1 -0
  312. package/hel_dist/js/comp-GridLoading.186b710d.js +1 -0
  313. package/hel_dist/js/comp-HelloWorld.2dbcda11.js +1 -0
  314. package/hel_dist/js/comp-HourglassLoading.68f74b3e.js +1 -0
  315. package/hel_dist/js/comp-JellyLoading.89edea82.js +1 -0
  316. package/hel_dist/js/comp-LiftCard.8de22713.js +1 -0
  317. package/hel_dist/js/comp-MagneticButton.0c49d56a.js +1 -0
  318. package/hel_dist/js/comp-MinecraftChest.d4ccbace.js +1 -0
  319. package/hel_dist/js/comp-NeonRingLoading.93502681.js +1 -0
  320. package/hel_dist/js/comp-PasswordInput.48c2736e.js +1 -0
  321. package/hel_dist/js/comp-PhotoSphere.c2197581.js +1 -0
  322. package/hel_dist/js/comp-PosterCollage.4301b0e3.js +1 -0
  323. package/hel_dist/js/comp-RopeGallery.851f2614.js +1 -0
  324. package/hel_dist/js/comp-SlideAuthPanel.598b01a2.js +1 -0
  325. package/hel_dist/js/comp-SplitCodePreview.04c52458.js +1 -0
  326. package/hel_dist/js/comp-SpotlightButton.bd4d921d.js +1 -0
  327. package/hel_dist/js/comp-TerminalAuth.2b570932.js +1 -0
  328. package/hel_dist/js/comp-TiltCard.94648e12.js +1 -0
  329. package/hel_dist/js/comp-Typewriter.7fdd3eb9.js +1 -0
  330. package/hel_dist/js/comp-VortexLoading.26651753.js +1 -0
  331. package/hel_dist/js/comp-WarpStarfield.285914be.js +1 -0
  332. package/hel_dist/js/comp-WaterBallLoading.4e068436.js +1 -0
  333. package/hel_dist/js/comp-WheelMenuButton.c5dfc7a0.js +1 -0
  334. package/hel_dist/js/comp-china-route-map.data.33296e57.js +1 -0
  335. package/hel_dist/js/comp-index.82fba6d1.js +1 -0
  336. package/hel_dist/js/libProperties.d5e0d649.js +1 -0
  337. package/hel_dist/js/loadApp.481f7d00.js +1 -0
  338. package/hel_dist/js/vendors.bfb27d6d.js +1 -0
  339. package/package.json +72 -68
  340. package/scripts/meta.js +53 -53
  341. package/scripts/prepublishOnly.js +27 -27
  342. package/scripts/preview.js +72 -72
  343. package/src/components/BilibiliBanner/AutoPlayVideo.vue +100 -0
  344. package/src/components/BilibiliBanner/common-util.ts +35 -0
  345. package/src/components/BilibiliBanner/globals.d.ts +7 -0
  346. package/src/components/BilibiliBanner/index.vue +423 -0
  347. package/src/components/BilibiliBanner/propsSchema.json +78 -0
  348. package/src/components/BilibiliBanner/resize-observer.ts +29 -0
  349. package/src/components/BilibiliBanner/themes/autumn-1.ts +53 -0
  350. package/src/components/BilibiliBanner/themes/autumn-2.ts +20 -0
  351. package/src/components/BilibiliBanner/themes/autumn-3.ts +40 -0
  352. package/src/components/BilibiliBanner/themes/autumn-4.ts +43 -0
  353. package/src/components/BilibiliBanner/themes/autumn-5.ts +44 -0
  354. package/src/components/BilibiliBanner/themes/spring-1.ts +38 -0
  355. package/src/components/BilibiliBanner/themes/spring-2.ts +38 -0
  356. package/src/components/BilibiliBanner/themes/spring-3.ts +18 -0
  357. package/src/components/BilibiliBanner/themes/spring-4.ts +20 -0
  358. package/src/components/BilibiliBanner/themes/spring-5.ts +45 -0
  359. package/src/components/BilibiliBanner/themes/spring-6.ts +41 -0
  360. package/src/components/BilibiliBanner/themes/summer-1.ts +61 -0
  361. package/src/components/BilibiliBanner/themes/summer-2.ts +25 -0
  362. package/src/components/BilibiliBanner/themes/summer-3.ts +20 -0
  363. package/src/components/BilibiliBanner/themes/summer-4.ts +40 -0
  364. package/src/components/BilibiliBanner/themes/summer-5.ts +39 -0
  365. package/src/components/BilibiliBanner/themes/summer-6.ts +42 -0
  366. package/src/components/BilibiliBanner/themes/summer-7.ts +43 -0
  367. package/src/components/BilibiliBanner/themes/winter-1.ts +56 -0
  368. package/src/components/BilibiliBanner/themes/winter-2.ts +20 -0
  369. package/src/components/BilibiliBanner/themes/winter-3.ts +44 -0
  370. package/src/components/BilibiliBanner/themes/winter-4.ts +43 -0
  371. package/src/components/BilibiliBanner/themes/winter-5.ts +43 -0
  372. package/src/components/BilibiliBanner/themes.ts +64 -0
  373. package/src/components/BilibiliBanner/types.ts +82 -0
  374. package/src/components/BookFlip.propsSchema.json +167 -0
  375. package/src/components/BookFlip.vue +510 -0
  376. package/src/components/ChinaRouteMap.propsSchema.json +132 -0
  377. package/src/components/ChinaRouteMap.vue +803 -0
  378. package/src/components/CircularMenu.propsSchema.json +134 -0
  379. package/src/components/CircularMenu.vue +236 -57
  380. package/src/components/CompareSlider.propsSchema.json +143 -0
  381. package/src/components/CompareSlider.vue +424 -0
  382. package/src/components/CorgiInput.propsSchema.json +122 -0
  383. package/src/components/CorgiInput.vue +604 -0
  384. package/src/components/CubeWaveLoading.propsSchema.json +88 -0
  385. package/src/components/CubeWaveLoading.vue +279 -0
  386. package/src/components/CyberInput.propsSchema.json +134 -0
  387. package/src/components/CyberInput.vue +971 -0
  388. package/src/components/DnaLoading.propsSchema.json +142 -0
  389. package/src/components/DnaLoading.vue +276 -0
  390. package/src/components/DominoLoading.propsSchema.json +83 -0
  391. package/src/components/DominoLoading.vue +394 -0
  392. package/src/components/ExpandSearch.propsSchema.json +105 -0
  393. package/src/components/ExpandSearch.vue +314 -0
  394. package/src/components/FilmRoll.propsSchema.json +164 -0
  395. package/src/components/FilmRoll.vue +998 -0
  396. package/src/components/FloatingLabelInput.propsSchema.json +84 -0
  397. package/src/components/FloatingLabelInput.vue +222 -0
  398. package/src/components/GearLoading.propsSchema.json +88 -0
  399. package/src/components/GearLoading.vue +452 -0
  400. package/src/components/GlowBorder.propsSchema.json +110 -0
  401. package/src/components/GlowBorder.vue +201 -0
  402. package/src/components/GooeyBallsLoading.propsSchema.json +136 -0
  403. package/src/components/GooeyBallsLoading.vue +212 -0
  404. package/src/components/GridLoading.propsSchema.json +115 -0
  405. package/src/components/GridLoading.vue +147 -0
  406. package/src/components/HelloWorld.propsSchema.json +24 -0
  407. package/src/components/HelloWorld.vue +65 -59
  408. package/src/components/HourglassLoading.propsSchema.json +67 -0
  409. package/src/components/HourglassLoading.vue +424 -0
  410. package/src/components/JellyLoading.propsSchema.json +99 -0
  411. package/src/components/JellyLoading.vue +387 -0
  412. package/src/components/LiftCard.propsSchema.json +186 -0
  413. package/src/components/LiftCard.vue +291 -0
  414. package/src/components/MagneticButton.propsSchema.json +51 -0
  415. package/src/components/MagneticButton.vue +196 -0
  416. package/src/components/MinecraftChest.propsSchema.json +223 -0
  417. package/src/components/MinecraftChest.vue +738 -0
  418. package/src/components/NeonRingLoading.propsSchema.json +127 -0
  419. package/src/components/NeonRingLoading.vue +393 -0
  420. package/src/components/PasswordInput.propsSchema.json +79 -0
  421. package/src/components/PasswordInput.vue +249 -0
  422. package/src/components/PhotoSphere.propsSchema.json +184 -0
  423. package/src/components/PhotoSphere.vue +719 -0
  424. package/src/components/PosterCollage.propsSchema.json +125 -0
  425. package/src/components/PosterCollage.vue +236 -0
  426. package/src/components/RopeGallery.propsSchema.json +131 -0
  427. package/src/components/RopeGallery.vue +706 -0
  428. package/src/components/SlideAuthPanel.propsSchema.json +198 -0
  429. package/src/components/SlideAuthPanel.vue +772 -0
  430. package/src/components/SplitCodePreview.propsSchema.json +115 -0
  431. package/src/components/SplitCodePreview.vue +477 -0
  432. package/src/components/SpotlightButton.propsSchema.json +40 -0
  433. package/src/components/SpotlightButton.vue +141 -0
  434. package/src/components/TerminalAuth.propsSchema.json +210 -0
  435. package/src/components/TerminalAuth.vue +857 -0
  436. package/src/components/TiltCard.propsSchema.json +94 -0
  437. package/src/components/TiltCard.vue +177 -0
  438. package/src/components/Typewriter.propsSchema.json +94 -0
  439. package/src/components/Typewriter.vue +189 -0
  440. package/src/components/VortexLoading.propsSchema.json +110 -0
  441. package/src/components/VortexLoading.vue +362 -0
  442. package/src/components/WarpStarfield.propsSchema.json +159 -0
  443. package/src/components/WarpStarfield.vue +625 -0
  444. package/src/components/WaterBallLoading.propsSchema.json +132 -0
  445. package/src/components/WaterBallLoading.vue +355 -0
  446. package/src/components/WheelMenuButton.propsSchema.json +229 -0
  447. package/src/components/WheelMenuButton.vue +593 -0
  448. package/src/components/china-route-map.data.ts +964 -0
  449. package/src/components/index.ts +72 -0
  450. package/src/configs/subApp.ts +9 -9
  451. package/src/entrance/libTypes.ts +36 -0
  452. package/src/main.ts +3 -2
  453. package/hel_dist/css/695.1f4389c4.css +0 -1
  454. package/hel_dist/js/695.5260fdcb.js +0 -2
  455. package/hel_dist/js/695.5260fdcb.js.map +0 -1
  456. package/hel_dist/js/app.7fc432e5.js +0 -16
  457. package/hel_dist/js/app.7fc432e5.js.map +0 -1
@@ -0,0 +1,706 @@
1
+ <template>
2
+ <div ref="rootEl" class="rope" :style="rootStyle">
3
+ <canvas ref="canvasEl" class="rope__canvas" />
4
+
5
+ <div class="rope__stage">
6
+ <div
7
+ v-for="(photo, i) in items"
8
+ :key="`p-${i}`"
9
+ :ref="(el) => setPhotoEl(el as HTMLElement | null, i)"
10
+ class="rope__photo"
11
+ :style="{ backgroundImage: `url(&quot;${photo.src}&quot;)` }"
12
+ :title="photo.alt || ''"
13
+ @pointerdown="onPointerDown($event, i)"
14
+ />
15
+ <span
16
+ v-for="(photo, i) in items"
17
+ :key="`pass-${i}`"
18
+ :ref="(el) => setPassEl(el as HTMLElement | null, i)"
19
+ class="rope__pass"
20
+ aria-hidden="true"
21
+ />
22
+ </div>
23
+
24
+ <div v-if="controls" class="rope__controls">
25
+ <label>
26
+ <span>风强度</span>
27
+ <span>{{ wind.toFixed(1) }}x</span>
28
+ </label>
29
+ <input v-model.number="draftWind" type="range" min="0" max="6" step="0.1" @input="emitWind" />
30
+ </div>
31
+
32
+ <p v-if="hint" class="rope__hint">{{ hintText }}</p>
33
+ </div>
34
+ </template>
35
+
36
+ <script setup lang="ts">
37
+ import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
38
+
39
+ /*
40
+ * 由 video-code / 交互效果/绳串图片.html 提取而来。
41
+ *
42
+ * 原 demo 是一整页:一根往下垂的绳子横过画面上方,7 张照片按随机间距挂在绳上,各自带一点质量,
43
+ * 会被「风」吹得小幅摆动;抓住任意一张拖动,整根绳子和所有照片都会跟着偏、松手再弹回去。
44
+ * 绳子是 canvas 画的一条二次弧线(垂度 + 横向摆动都是弹簧),照片是绝对定位的 div,
45
+ * 每张照片上还压着一小段「穿绳」把它和绳子连起来。
46
+ *
47
+ * 组件化后:
48
+ * - 照片由 photos 传入,风强度走 v-model:wind,可拖动 / 可暂停;
49
+ * - 画布尺寸跟容器(ResizeObserver + DPR),不再绑 window;
50
+ * - 点一下不拖动会派发 select,方便宿主做点开大图之类的交互;
51
+ * - 绳子的垂度 / 摆动 / 每张照片的摆角仍是原来的弹簧积分,逐帧直接写 DOM。
52
+ */
53
+ type Photo = string | { src: string; alt?: string }
54
+
55
+ type PhotoState = {
56
+ t: number
57
+ mass: number
58
+ restAngle: number
59
+ angle: number
60
+ velocity: number
61
+ phase: number
62
+ x: number
63
+ y: number
64
+ }
65
+
66
+ const HOLE = { x: 16, y: 6 }
67
+ const ROPE_SAMPLES = 110
68
+
69
+ const props = defineProps({
70
+ /**
71
+ * @description 照片列表(字符串地址,或 { src, alt })
72
+ */
73
+ photos: {
74
+ type: Array as () => Photo[],
75
+ default: () => [],
76
+ },
77
+ /**
78
+ * @description 风强度 0 ~ 6(可用 v-model:wind 双向绑定)
79
+ */
80
+ wind: {
81
+ type: Number,
82
+ default: 3,
83
+ },
84
+ /**
85
+ * @description 照片宽度,单位 px
86
+ */
87
+ photoWidth: {
88
+ type: Number,
89
+ default: 170,
90
+ },
91
+ /**
92
+ * @description 照片高度,单位 px
93
+ */
94
+ photoHeight: {
95
+ type: Number,
96
+ default: 120,
97
+ },
98
+ /**
99
+ * @description 绳子两端的水平留白,单位 px
100
+ */
101
+ inset: {
102
+ type: Number,
103
+ default: 78,
104
+ },
105
+ /**
106
+ * @description 是否允许拖动照片拉动绳子
107
+ */
108
+ draggable: {
109
+ type: Boolean,
110
+ default: true,
111
+ },
112
+ /**
113
+ * @description 是否显示内置的风强度滑杆
114
+ */
115
+ controls: {
116
+ type: Boolean,
117
+ default: false,
118
+ },
119
+ /**
120
+ * @description 是否显示底部提示
121
+ */
122
+ hint: {
123
+ type: Boolean,
124
+ default: true,
125
+ },
126
+ /**
127
+ * @description 提示文案
128
+ */
129
+ hintText: {
130
+ type: String,
131
+ default: '拖动任意一张照片,整根绳子都会跟着晃',
132
+ },
133
+ /**
134
+ * @description 是否暂停
135
+ */
136
+ paused: {
137
+ type: Boolean,
138
+ default: false,
139
+ },
140
+ })
141
+
142
+ const emit = defineEmits<{
143
+ 'update:wind': [wind: number]
144
+ /** 点中某张照片(不拖动) */
145
+ select: [index: number, src: string]
146
+ }>()
147
+
148
+ const rootEl = ref<HTMLElement | null>(null)
149
+ const canvasEl = ref<HTMLCanvasElement | null>(null)
150
+ const draftWind = ref(props.wind)
151
+
152
+ const photoEls: (HTMLElement | null)[] = []
153
+ const passEls: (HTMLElement | null)[] = []
154
+ let states: PhotoState[] = []
155
+
156
+ let ctx: CanvasRenderingContext2D | null = null
157
+ let width = 0
158
+ let height = 0
159
+ let dpr = 1
160
+ let rafId = 0
161
+ let observer: ResizeObserver | null = null
162
+ let lastTime = 0
163
+
164
+ let ropeStart = { x: 0, y: 0 }
165
+ let ropeEnd = { x: 0, y: 0 }
166
+ let ropeSag = 0
167
+ let ropeSagVel = 0
168
+ let ropeSway = 0
169
+ let ropeSwayVel = 0
170
+
171
+ let dragX = 0
172
+ let dragY = 0
173
+ let dragVX = 0
174
+ let dragVY = 0
175
+ let dragTargetX = 0
176
+ let dragTargetY = 0
177
+ let activeDrag: {
178
+ pointerId: number
179
+ index: number
180
+ startPointerX: number
181
+ startPointerY: number
182
+ startDragX: number
183
+ startDragY: number
184
+ moved: boolean
185
+ } | null = null
186
+
187
+ const items = computed(() =>
188
+ props.photos.map((photo) => (typeof photo === 'string' ? { src: photo, alt: '' } : photo)),
189
+ )
190
+
191
+ const rootStyle = computed(() => ({
192
+ '--rope-w': `${props.photoWidth}px`,
193
+ '--rope-h': `${props.photoHeight}px`,
194
+ '--rope-hole-x': `${HOLE.x}px`,
195
+ '--rope-hole-y': `${HOLE.y}px`,
196
+ }))
197
+
198
+ function setPhotoEl(el: HTMLElement | null, i: number) {
199
+ photoEls[i] = el
200
+ }
201
+
202
+ function setPassEl(el: HTMLElement | null, i: number) {
203
+ passEls[i] = el
204
+ }
205
+
206
+ function lerp(a: number, b: number, t: number) {
207
+ return a + (b - a) * t
208
+ }
209
+
210
+ function clamp(value: number, min: number, max: number) {
211
+ return Math.max(min, Math.min(max, value))
212
+ }
213
+
214
+ /** 沿绳均匀撒点,带最小间距,避免照片叠在一起 */
215
+ function buildTs(count: number, minT = 0.12, maxT = 0.88, minGap = 0.085) {
216
+ const values: number[] = []
217
+ let attempts = 0
218
+ while (values.length < count && attempts < 4000) {
219
+ const t = minT + Math.random() * (maxT - minT)
220
+ if (values.every((v) => Math.abs(v - t) >= minGap)) values.push(t)
221
+ attempts += 1
222
+ }
223
+ if (values.length < count) {
224
+ values.length = 0
225
+ const step = (maxT - minT) / (count + 1)
226
+ for (let i = 0; i < count; i += 1) {
227
+ const base = minT + step * (i + 1)
228
+ const jitter = (Math.random() - 0.5) * step * 0.6
229
+ values.push(clamp(base + jitter, minT, maxT))
230
+ }
231
+ }
232
+ return values.sort((a, b) => a - b)
233
+ }
234
+
235
+ function resetStates() {
236
+ const ts = buildTs(items.value.length)
237
+ states = items.value.map((_, i) => {
238
+ const dx = props.photoWidth - HOLE.x
239
+ const dy = props.photoHeight - HOLE.y
240
+ const restAngle = Math.atan2(dx, dy)
241
+ return {
242
+ t: ts[i],
243
+ mass: 1 + Math.random() * 0.6,
244
+ restAngle,
245
+ angle: restAngle + (Math.random() - 0.5) * 0.06,
246
+ velocity: 0,
247
+ phase: Math.random() * Math.PI * 2,
248
+ x: 0,
249
+ y: 0,
250
+ }
251
+ })
252
+ }
253
+
254
+ /* ───────── 绳子的几何 ───────── */
255
+
256
+ function ropePoint(t: number) {
257
+ const lineX = lerp(ropeStart.x, ropeEnd.x, t)
258
+ const lineY = lerp(ropeStart.y, ropeEnd.y, t)
259
+ const arc = 4 * t * (1 - t)
260
+ const dragWeight = 0.36 + 0.64 * arc
261
+ return {
262
+ x: lineX + ropeSway * arc + dragX * dragWeight,
263
+ y: lineY + ropeSag * arc + dragY * dragWeight,
264
+ }
265
+ }
266
+
267
+ function ropeTangent(t: number) {
268
+ const e = 0.004
269
+ const a = ropePoint(clamp(t - e, 0, 1))
270
+ const b = ropePoint(clamp(t + e, 0, 1))
271
+ const dx = b.x - a.x
272
+ const dy = b.y - a.y
273
+ const len = Math.hypot(dx, dy) || 1
274
+ return { x: dx / len, y: dy / len }
275
+ }
276
+
277
+ function resize() {
278
+ const root = rootEl.value
279
+ const canvas = canvasEl.value
280
+ if (!root || !canvas) return
281
+
282
+ width = root.clientWidth || 1
283
+ height = root.clientHeight || 1
284
+ dpr = Math.max(1, Math.min(2, window.devicePixelRatio || 1))
285
+ canvas.width = Math.floor(width * dpr)
286
+ canvas.height = Math.floor(height * dpr)
287
+ canvas.style.width = `${width}px`
288
+ canvas.style.height = `${height}px`
289
+
290
+ ctx = canvas.getContext('2d')
291
+ ctx?.setTransform(dpr, 0, 0, dpr, 0, 0)
292
+
293
+ const inset = Math.min(props.inset, Math.max(12, width * 0.12))
294
+ ropeStart = { x: inset, y: Math.max(56, height * 0.13) }
295
+ ropeEnd = { x: width - inset, y: Math.max(72, height * 0.2) }
296
+
297
+ ropeSag = Math.min(168, Math.max(88, height * 0.16))
298
+ ropeSagVel = 0
299
+ ropeSway = 0
300
+ ropeSwayVel = 0
301
+ dragX = 0
302
+ dragY = 0
303
+ dragVX = 0
304
+ dragVY = 0
305
+ dragTargetX = 0
306
+ dragTargetY = 0
307
+ }
308
+
309
+ /* ───────── 每帧 ───────── */
310
+
311
+ function update(dt: number, timeS: number) {
312
+ let windSum = 0
313
+ const windStrength = props.wind
314
+
315
+ states.forEach((state) => {
316
+ const wind = Math.sin(timeS * 0.8 + state.phase) * 0.12 + Math.sin(timeS * 0.31 + state.phase * 0.7) * 0.06
317
+ const windBoost = 0.2 + windStrength * windStrength * 0.35
318
+ const gust = Math.sin(timeS * 1.9 + state.phase * 1.3) * 0.04 * windStrength
319
+ const scaledWind = wind * windBoost + gust
320
+ windSum += scaledWind
321
+
322
+ const stiffness = 9.2
323
+ const damping = 2.45
324
+ const acc = -stiffness * Math.sin(state.angle - state.restAngle) - damping * state.velocity + scaledWind
325
+ state.velocity += acc * dt
326
+ state.angle += state.velocity * dt
327
+ state.angle = clamp(state.angle, state.restAngle - 0.24, state.restAngle + 0.24)
328
+ })
329
+
330
+ if (!activeDrag) {
331
+ dragTargetX = 0
332
+ dragTargetY = 0
333
+ }
334
+ const dragK = activeDrag ? 42 : 16
335
+ const dragDamping = activeDrag ? 9.5 : 7.6
336
+ dragVX += (dragTargetX - dragX) * dragK * dt
337
+ dragVY += (dragTargetY - dragY) * dragK * dt
338
+ dragVX *= Math.exp(-dragDamping * dt)
339
+ dragVY *= Math.exp(-dragDamping * dt)
340
+ dragX += dragVX * dt
341
+ dragY += dragVY * dt
342
+
343
+ if (
344
+ !activeDrag &&
345
+ Math.abs(dragX) < 0.04 &&
346
+ Math.abs(dragY) < 0.04 &&
347
+ Math.abs(dragVX) < 0.04 &&
348
+ Math.abs(dragVY) < 0.04
349
+ ) {
350
+ dragX = 0
351
+ dragY = 0
352
+ dragVX = 0
353
+ dragVY = 0
354
+ }
355
+
356
+ const avgWind = windSum / Math.max(1, states.length)
357
+ const avgMass = states.reduce((sum, p) => sum + p.mass, 0) / Math.max(1, states.length)
358
+ const baseSag = Math.min(172, Math.max(90, height * 0.15 + avgMass * 20))
359
+ const targetSag = baseSag + avgWind * 12 + dragY * 0.16
360
+ const targetSway = avgWind * 30 + dragX * 0.18
361
+
362
+ ropeSagVel += (targetSag - ropeSag) * 7.2 * dt
363
+ ropeSagVel *= Math.exp(-3.9 * dt)
364
+ ropeSag += ropeSagVel * dt
365
+
366
+ ropeSwayVel += (targetSway - ropeSway) * 6.8 * dt
367
+ ropeSwayVel *= Math.exp(-3.5 * dt)
368
+ ropeSway += ropeSwayVel * dt
369
+
370
+ states.forEach((state) => {
371
+ const point = ropePoint(state.t)
372
+ state.x = point.x
373
+ state.y = point.y
374
+ })
375
+ }
376
+
377
+ function drawRope() {
378
+ if (!ctx) return
379
+ ctx.clearRect(0, 0, width, height)
380
+
381
+ // 主绳
382
+ ctx.beginPath()
383
+ for (let i = 0; i <= ROPE_SAMPLES; i += 1) {
384
+ const point = ropePoint(i / ROPE_SAMPLES)
385
+ if (i === 0) ctx.moveTo(point.x, point.y)
386
+ else ctx.lineTo(point.x, point.y)
387
+ }
388
+ ctx.lineWidth = 6
389
+ ctx.strokeStyle = '#5f4532'
390
+ ctx.lineCap = 'round'
391
+ ctx.stroke()
392
+
393
+ // 高光
394
+ ctx.beginPath()
395
+ for (let i = 0; i <= ROPE_SAMPLES; i += 1) {
396
+ const point = ropePoint(i / ROPE_SAMPLES)
397
+ if (i === 0) ctx.moveTo(point.x, point.y - 1.5)
398
+ else ctx.lineTo(point.x, point.y - 1.5)
399
+ }
400
+ ctx.lineWidth = 2
401
+ ctx.strokeStyle = 'rgba(255, 255, 255, 0.4)'
402
+ ctx.stroke()
403
+ }
404
+
405
+ function drawPhotos() {
406
+ if (!states.length) return
407
+
408
+ // 从绳头到绳尾依次抬高层级,右边的照片压住左边的
409
+ const order = states.map((state, index) => ({ state, index })).sort((a, b) => a.state.t - b.state.t)
410
+ const zMap = new Map<number, number>()
411
+ order.forEach((entry, i) => zMap.set(entry.index, 1000 + i * 10))
412
+
413
+ states.forEach((state, i) => {
414
+ const el = photoEls[i]
415
+ const pass = passEls[i]
416
+ if (!el || !pass) return
417
+ const baseZ = zMap.get(i) ?? 1000
418
+
419
+ el.style.left = `${state.x - HOLE.x}px`
420
+ el.style.top = `${state.y - HOLE.y}px`
421
+ el.style.zIndex = String(baseZ)
422
+ const tiltY = clamp(state.angle * 58, -14, 14)
423
+ const tiltX = clamp(-Math.abs(state.velocity) * 24, -6, 0)
424
+ el.style.transform = `rotateZ(${state.angle}rad) rotateY(${tiltY}deg) rotateX(${tiltX}deg)`
425
+
426
+ const tangent = ropeTangent(state.t)
427
+ const tangentAngle = Math.atan2(tangent.y, tangent.x)
428
+ pass.style.left = `${state.x - 3}px`
429
+ pass.style.top = `${state.y}px`
430
+ pass.style.zIndex = String(baseZ + 1)
431
+ pass.style.transform = `translate(0, -50%) rotate(${tangentAngle}rad)`
432
+ })
433
+ }
434
+
435
+ function frame(now: number) {
436
+ const dt = Math.min(0.033, (now - lastTime) / 1000)
437
+ lastTime = now
438
+ update(dt, now / 1000)
439
+ drawRope()
440
+ drawPhotos()
441
+ rafId = requestAnimationFrame(frame)
442
+ }
443
+
444
+ function start() {
445
+ if (rafId || props.paused) return
446
+ lastTime = performance.now()
447
+ rafId = requestAnimationFrame(frame)
448
+ }
449
+
450
+ function stop() {
451
+ if (rafId) cancelAnimationFrame(rafId)
452
+ rafId = 0
453
+ }
454
+
455
+ /* ───────── 拖动 ───────── */
456
+
457
+ function onPointerDown(event: PointerEvent, index: number) {
458
+ if (!props.draggable) {
459
+ // 不能拖的时候退化成点击
460
+ emit('select', index, items.value[index].src)
461
+ return
462
+ }
463
+ if (event.button !== 0 && event.pointerType === 'mouse') return
464
+ activeDrag = {
465
+ pointerId: event.pointerId,
466
+ index,
467
+ startPointerX: event.clientX,
468
+ startPointerY: event.clientY,
469
+ startDragX: dragX,
470
+ startDragY: dragY,
471
+ moved: false,
472
+ }
473
+ dragTargetX = dragX
474
+ dragTargetY = dragY
475
+ const el = photoEls[index]
476
+ el?.classList.add('is-dragging')
477
+ try {
478
+ el?.setPointerCapture?.(event.pointerId)
479
+ } catch {
480
+ // 合成事件下会抛 NotFoundError
481
+ }
482
+ event.preventDefault()
483
+ }
484
+
485
+ function onPointerMove(event: PointerEvent) {
486
+ if (!activeDrag || event.pointerId !== activeDrag.pointerId) return
487
+ const dx = activeDrag.startDragX + (event.clientX - activeDrag.startPointerX)
488
+ const dy = activeDrag.startDragY + (event.clientY - activeDrag.startPointerY)
489
+ if (Math.hypot(event.clientX - activeDrag.startPointerX, event.clientY - activeDrag.startPointerY) > 4) {
490
+ activeDrag.moved = true
491
+ }
492
+ const len = Math.hypot(dx, dy)
493
+ const limit = 110
494
+ const ratio = len > limit ? limit / len : 1
495
+ dragTargetX = dx * ratio
496
+ dragTargetY = dy * ratio
497
+ }
498
+
499
+ function onPointerUp(event: PointerEvent) {
500
+ if (!activeDrag || event.pointerId !== activeDrag.pointerId) return
501
+ const { index, moved } = activeDrag
502
+ const el = photoEls[index]
503
+ el?.classList.remove('is-dragging')
504
+ try {
505
+ el?.releasePointerCapture?.(event.pointerId)
506
+ } catch {
507
+ // 指针可能已释放
508
+ }
509
+ activeDrag = null
510
+ dragTargetX = 0
511
+ dragTargetY = 0
512
+ if (!moved) emit('select', index, items.value[index].src)
513
+ }
514
+
515
+ function emitWind() {
516
+ emit('update:wind', draftWind.value)
517
+ }
518
+
519
+ watch(
520
+ () => props.wind,
521
+ (next) => {
522
+ draftWind.value = next
523
+ },
524
+ )
525
+
526
+ watch(
527
+ () => props.photos,
528
+ () => {
529
+ photoEls.length = 0
530
+ passEls.length = 0
531
+ resetStates()
532
+ },
533
+ { deep: true },
534
+ )
535
+
536
+ // 照片尺寸变了,挂点和静止角都要重算
537
+ watch(
538
+ () => [props.photoWidth, props.photoHeight] as const,
539
+ () => {
540
+ resetStates()
541
+ resize()
542
+ },
543
+ )
544
+
545
+ watch(
546
+ () => props.paused,
547
+ (paused) => {
548
+ if (paused) stop()
549
+ else start()
550
+ },
551
+ )
552
+
553
+ onMounted(() => {
554
+ resetStates()
555
+ resize()
556
+ observer = new ResizeObserver(() => resize())
557
+ if (rootEl.value) observer.observe(rootEl.value)
558
+ document.addEventListener('pointermove', onPointerMove)
559
+ document.addEventListener('pointerup', onPointerUp)
560
+ document.addEventListener('pointercancel', onPointerUp)
561
+ start()
562
+ })
563
+
564
+ onBeforeUnmount(() => {
565
+ stop()
566
+ observer?.disconnect()
567
+ document.removeEventListener('pointermove', onPointerMove)
568
+ document.removeEventListener('pointerup', onPointerUp)
569
+ document.removeEventListener('pointercancel', onPointerUp)
570
+ })
571
+
572
+ defineExpose({
573
+ /** 重新随机挂点位置 */
574
+ shake: () => {
575
+ resetStates()
576
+ },
577
+ getWind: () => props.wind,
578
+ })
579
+ </script>
580
+
581
+ <style scoped>
582
+ .rope {
583
+ position: relative;
584
+ width: 100%;
585
+ height: 100%;
586
+ min-height: 260px;
587
+ overflow: hidden;
588
+ background:
589
+ radial-gradient(circle at 20% 10%, rgba(255, 255, 255, 0.65) 0%, rgba(255, 255, 255, 0) 40%),
590
+ radial-gradient(circle at 85% 5%, rgba(255, 255, 255, 0.55) 0%, rgba(255, 255, 255, 0) 36%),
591
+ linear-gradient(180deg, #ece4d7 0%, #f2ede4 45%, #e9e1d4 100%);
592
+ font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
593
+ touch-action: none;
594
+ user-select: none;
595
+ }
596
+
597
+ .rope__canvas {
598
+ position: absolute;
599
+ inset: 0;
600
+ z-index: 1;
601
+ pointer-events: none;
602
+ }
603
+
604
+ .rope__stage {
605
+ position: absolute;
606
+ inset: 0;
607
+ z-index: 2;
608
+ perspective: 1200px;
609
+ perspective-origin: 50% 20%;
610
+ }
611
+
612
+ /* 每张照片挂在自己的孔上,绕孔旋转 */
613
+ .rope__photo {
614
+ position: absolute;
615
+ width: var(--rope-w);
616
+ height: var(--rope-h);
617
+ border-radius: 8px;
618
+ background: #ddd center / cover no-repeat;
619
+ box-shadow: 0 16px 24px rgba(32, 18, 8, 0.22);
620
+ transform-origin: var(--rope-hole-x) var(--rope-hole-y);
621
+ transform-style: preserve-3d;
622
+ backface-visibility: hidden;
623
+ cursor: grab;
624
+ will-change: transform, top, left;
625
+ pointer-events: auto;
626
+ }
627
+
628
+ .rope__photo.is-dragging {
629
+ cursor: grabbing;
630
+ }
631
+
632
+ /* 压在照片上那一小段「穿绳」,让它看起来是挂上去的 */
633
+ .rope__pass {
634
+ position: absolute;
635
+ width: 26px;
636
+ height: 6px;
637
+ border-radius: 999px;
638
+ transform-origin: 0 50%;
639
+ background: linear-gradient(
640
+ 90deg,
641
+ rgba(95, 69, 50, 0) 0%,
642
+ rgba(95, 69, 50, 0.95) 28%,
643
+ rgba(95, 69, 50, 0.95) 72%,
644
+ rgba(95, 69, 50, 0) 100%
645
+ );
646
+ pointer-events: none;
647
+ }
648
+
649
+ .rope__pass::after {
650
+ content: '';
651
+ position: absolute;
652
+ top: 1px;
653
+ right: 3px;
654
+ left: 3px;
655
+ height: 2px;
656
+ border-radius: 999px;
657
+ background: rgba(255, 255, 255, 0.3);
658
+ }
659
+
660
+ .rope__controls {
661
+ position: absolute;
662
+ bottom: 14px;
663
+ left: 18px;
664
+ z-index: 5;
665
+ min-width: 210px;
666
+ padding: 10px 12px;
667
+ border-radius: 12px;
668
+ background: rgba(255, 255, 255, 0.78);
669
+ color: #5f4b39;
670
+ backdrop-filter: blur(3px);
671
+ }
672
+
673
+ .rope__controls label {
674
+ display: flex;
675
+ justify-content: space-between;
676
+ margin-bottom: 8px;
677
+ font-size: 13px;
678
+ }
679
+
680
+ .rope__controls input {
681
+ width: 100%;
682
+ accent-color: #8a6844;
683
+ }
684
+
685
+ .rope__hint {
686
+ position: absolute;
687
+ right: 18px;
688
+ bottom: 16px;
689
+ margin: 0;
690
+ color: rgba(95, 75, 57, 0.55);
691
+ font-size: 12px;
692
+ pointer-events: none;
693
+ }
694
+
695
+ @media (max-width: 560px) {
696
+ .rope__hint {
697
+ display: none;
698
+ }
699
+ }
700
+
701
+ @media (prefers-reduced-motion: reduce) {
702
+ .rope__photo {
703
+ transition: none;
704
+ }
705
+ }
706
+ </style>