ranuts 0.4.1-alpha.2 → 0.5.1

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 (333) hide show
  1. package/CLAUDE.md +23 -16
  2. package/README.de.md +62 -0
  3. package/README.es.md +62 -0
  4. package/README.fa.md +62 -0
  5. package/README.ja.md +62 -0
  6. package/README.ko.md +62 -0
  7. package/README.md +35 -92
  8. package/README.pt.md +62 -0
  9. package/README.zh-CN.md +35 -91
  10. package/dist/iife/index.iife.js +4 -0
  11. package/dist/iife/utils.iife.js +4 -0
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.js +307 -1
  14. package/dist/src/_virtual/_rolldown/runtime/index.js +12 -0
  15. package/dist/src/conversation/engine.d.ts +1 -1
  16. package/dist/src/conversation/engine.js +101 -0
  17. package/dist/src/conversation/index.d.ts +3 -3
  18. package/dist/src/conversation/index.js +4 -1
  19. package/dist/src/stream/accumulator.d.ts +1 -1
  20. package/dist/src/stream/accumulator.js +79 -0
  21. package/dist/src/stream/budget.d.ts +1 -1
  22. package/dist/src/stream/budget.js +45 -0
  23. package/dist/src/stream/index.d.ts +7 -7
  24. package/dist/src/stream/index.js +11 -1
  25. package/dist/src/stream/sse.d.ts +1 -1
  26. package/dist/src/stream/sse.js +61 -0
  27. package/dist/src/sw/index.js +52 -1
  28. package/dist/src/utils/async.js +49 -0
  29. package/dist/src/utils/audioRecorder.js +1121 -0
  30. package/dist/src/utils/behavior.js +9 -0
  31. package/dist/src/utils/binary.js +89 -0
  32. package/dist/src/utils/bom.d.ts +31 -9
  33. package/dist/src/utils/bom.js +165 -0
  34. package/dist/src/utils/bridge.js +310 -0
  35. package/dist/src/utils/canvas.js +103 -0
  36. package/dist/src/utils/chain.js +76 -0
  37. package/dist/src/utils/charset.d.ts +15 -0
  38. package/dist/src/utils/charset.js +21 -0
  39. package/dist/src/utils/color.d.ts +0 -1
  40. package/dist/src/utils/color.js +312 -0
  41. package/dist/src/utils/compose.js +22 -0
  42. package/dist/src/utils/console.js +22 -0
  43. package/dist/src/utils/debounce.js +18 -0
  44. package/dist/src/utils/device.d.ts +0 -9
  45. package/dist/src/utils/device.js +31 -0
  46. package/dist/src/utils/diff.js +110 -0
  47. package/dist/src/utils/dom.d.ts +1 -1
  48. package/dist/src/utils/dom.js +89 -0
  49. package/dist/src/utils/error.js +11 -0
  50. package/dist/src/utils/event.d.ts +3 -3
  51. package/dist/src/utils/event.js +39 -0
  52. package/dist/src/utils/file.js +14 -0
  53. package/dist/src/utils/func.js +4 -0
  54. package/dist/src/utils/i18n/index.js +79 -1
  55. package/dist/src/utils/idb.js +177 -0
  56. package/dist/src/utils/img.d.ts +1 -1
  57. package/dist/src/utils/img.js +68 -0
  58. package/dist/src/utils/index.d.ts +82 -80
  59. package/dist/src/utils/index.js +307 -1
  60. package/dist/src/utils/lang.d.ts +23 -6
  61. package/dist/src/utils/lang.js +42 -0
  62. package/dist/src/utils/localePath.js +48 -0
  63. package/dist/src/utils/memoize.d.ts +1 -7
  64. package/dist/src/utils/memoize.js +16 -0
  65. package/dist/src/utils/mimeType.js +841 -0
  66. package/dist/src/utils/monitor.js +84 -0
  67. package/dist/src/utils/network.js +117 -0
  68. package/dist/src/utils/noop.js +5 -0
  69. package/dist/src/utils/number.js +185 -0
  70. package/dist/src/utils/obj.d.ts +2 -2
  71. package/dist/src/utils/obj.js +140 -0
  72. package/dist/src/utils/paginate.js +93 -0
  73. package/dist/src/utils/performance.js +26 -0
  74. package/dist/src/utils/placement.js +37 -0
  75. package/dist/src/utils/prefetch.js +69 -0
  76. package/dist/src/utils/queue.js +46 -0
  77. package/dist/src/utils/report.js +44 -0
  78. package/dist/src/utils/request.js +35 -0
  79. package/dist/src/utils/script.d.ts +4 -2
  80. package/dist/src/utils/script.js +45 -0
  81. package/dist/src/utils/scroll.d.ts +2 -0
  82. package/dist/src/utils/scroll.js +62 -0
  83. package/dist/src/utils/secure.js +36 -0
  84. package/dist/src/utils/segment.js +43 -0
  85. package/dist/src/utils/signal.d.ts +1 -1
  86. package/dist/src/utils/signal.js +13 -0
  87. package/dist/src/utils/speech.js +59 -0
  88. package/dist/src/utils/storage.js +53 -0
  89. package/dist/src/utils/str.d.ts +0 -21
  90. package/dist/src/utils/str.js +377 -0
  91. package/dist/src/utils/style.js +29 -0
  92. package/dist/src/utils/subscribe.js +58 -0
  93. package/dist/src/utils/throttle.js +17 -0
  94. package/dist/src/utils/time.d.ts +0 -21
  95. package/dist/src/utils/time.js +97 -0
  96. package/dist/src/utils/totp/sha/common.d.ts +1 -1
  97. package/dist/src/utils/totp/sha/common.js +201 -0
  98. package/dist/src/utils/totp/sha/converters.d.ts +1 -1
  99. package/dist/src/utils/totp/sha/converters.js +188 -0
  100. package/dist/src/utils/totp/sha/primitives_32.js +55 -0
  101. package/dist/src/utils/totp/sha/primitives_64.js +85 -0
  102. package/dist/src/utils/totp/sha/sha.d.ts +1 -1
  103. package/dist/src/utils/totp/sha/sha.js +30 -0
  104. package/dist/src/utils/totp/sha/sha1.d.ts +2 -2
  105. package/dist/src/utils/totp/sha/sha1.js +51 -0
  106. package/dist/src/utils/totp/sha/sha256.d.ts +2 -2
  107. package/dist/src/utils/totp/sha/sha256.js +56 -0
  108. package/dist/src/utils/totp/sha/sha3.d.ts +3 -3
  109. package/dist/src/utils/totp/sha/sha3.js +253 -0
  110. package/dist/src/utils/totp/sha/sha512.d.ts +3 -3
  111. package/dist/src/utils/totp/sha/sha512.js +177 -0
  112. package/dist/src/utils/totp/totp.js +49 -0
  113. package/dist/src/utils/tween.js +59 -0
  114. package/dist/src/utils/visual/application.d.ts +4 -4
  115. package/dist/src/utils/visual/application.js +42 -0
  116. package/dist/src/utils/visual/enums.js +19 -0
  117. package/dist/src/utils/visual/event/boundary.d.ts +2 -2
  118. package/dist/src/utils/visual/event/boundary.js +93 -0
  119. package/dist/src/utils/visual/event/event.d.ts +1 -1
  120. package/dist/src/utils/visual/event/event.js +34 -0
  121. package/dist/src/utils/visual/event/index.d.ts +4 -4
  122. package/dist/src/utils/visual/event/types.d.ts +2 -2
  123. package/dist/src/utils/visual/event/types.js +23 -0
  124. package/dist/src/utils/visual/graphics/graphics.d.ts +8 -8
  125. package/dist/src/utils/visual/graphics/graphics.js +168 -0
  126. package/dist/src/utils/visual/graphics/graphicsData.d.ts +3 -3
  127. package/dist/src/utils/visual/graphics/graphicsData.js +12 -0
  128. package/dist/src/utils/visual/graphics/graphicsGeometry.d.ts +7 -7
  129. package/dist/src/utils/visual/graphics/graphicsGeometry.js +39 -0
  130. package/dist/src/utils/visual/graphics/index.d.ts +3 -3
  131. package/dist/src/utils/visual/index.d.ts +8 -8
  132. package/dist/src/utils/visual/index.js +20 -1
  133. package/dist/src/utils/visual/math/bezier.js +15 -0
  134. package/dist/src/utils/visual/math/enums.js +6 -0
  135. package/dist/src/utils/visual/math/index.d.ts +4 -4
  136. package/dist/src/utils/visual/math/matrix.d.ts +1 -1
  137. package/dist/src/utils/visual/math/matrix.js +59 -0
  138. package/dist/src/utils/visual/math/transform.d.ts +2 -2
  139. package/dist/src/utils/visual/math/transform.js +50 -0
  140. package/dist/src/utils/visual/render/batchRenderer.d.ts +4 -4
  141. package/dist/src/utils/visual/render/batchRenderer.js +59 -0
  142. package/dist/src/utils/visual/render/canvasRenderer.d.ts +3 -3
  143. package/dist/src/utils/visual/render/canvasRenderer.js +17 -0
  144. package/dist/src/utils/visual/render/filter.d.ts +1 -1
  145. package/dist/src/utils/visual/render/filter.js +92 -0
  146. package/dist/src/utils/visual/render/index.d.ts +2 -2
  147. package/dist/src/utils/visual/render/index.js +20 -0
  148. package/dist/src/utils/visual/render/render.d.ts +4 -4
  149. package/dist/src/utils/visual/render/render.js +19 -0
  150. package/dist/src/utils/visual/render/renderTarget.js +28 -0
  151. package/dist/src/utils/visual/render/utils/batch/index.d.ts +4 -4
  152. package/dist/src/utils/visual/render/utils/batch/index.js +88 -0
  153. package/dist/src/utils/visual/render/utils/earcut.js +328 -0
  154. package/dist/src/utils/visual/render/utils/float.js +65 -0
  155. package/dist/src/utils/visual/render/utils/index.js +50 -0
  156. package/dist/src/utils/visual/render/utils/verticy.d.ts +2 -2
  157. package/dist/src/utils/visual/render/utils/verticy.js +162 -0
  158. package/dist/src/utils/visual/render/utils/webgl/initShader.d.ts +1 -1
  159. package/dist/src/utils/visual/render/utils/webgl/initShader.js +31 -0
  160. package/dist/src/utils/visual/render/utils/webgl/shaders.js +22 -0
  161. package/dist/src/utils/visual/render/utils/webgpu/shaders.js +32 -0
  162. package/dist/src/utils/visual/render/webGPURenderer.d.ts +2 -2
  163. package/dist/src/utils/visual/render/webGPURenderer.js +185 -0
  164. package/dist/src/utils/visual/render/webGlRenderer.d.ts +2 -2
  165. package/dist/src/utils/visual/render/webGlRenderer.js +88 -0
  166. package/dist/src/utils/visual/shape/circle.d.ts +3 -3
  167. package/dist/src/utils/visual/shape/circle.js +17 -0
  168. package/dist/src/utils/visual/shape/ellipse.d.ts +3 -3
  169. package/dist/src/utils/visual/shape/ellipse.js +18 -0
  170. package/dist/src/utils/visual/shape/index.d.ts +6 -6
  171. package/dist/src/utils/visual/shape/polygon.d.ts +3 -3
  172. package/dist/src/utils/visual/shape/polygon.js +29 -0
  173. package/dist/src/utils/visual/shape/rectangle.d.ts +3 -3
  174. package/dist/src/utils/visual/shape/rectangle.js +18 -0
  175. package/dist/src/utils/visual/shape/roundedRectangle.d.ts +3 -3
  176. package/dist/src/utils/visual/shape/roundedRectangle.js +32 -0
  177. package/dist/src/utils/visual/shape/shape.d.ts +2 -2
  178. package/dist/src/utils/visual/shape/shape.js +5 -0
  179. package/dist/src/utils/visual/style/fill.js +18 -0
  180. package/dist/src/utils/visual/style/index.d.ts +2 -2
  181. package/dist/src/utils/visual/style/line.d.ts +2 -2
  182. package/dist/src/utils/visual/style/line.js +18 -0
  183. package/dist/src/utils/visual/types.d.ts +1 -1
  184. package/dist/src/utils/visual/vertex/container.d.ts +5 -5
  185. package/dist/src/utils/visual/vertex/container.js +54 -0
  186. package/dist/src/utils/visual/vertex/point.js +37 -0
  187. package/dist/src/utils/visual/vertex/vertex.d.ts +7 -7
  188. package/dist/src/utils/visual/vertex/vertex.js +76 -0
  189. package/dist/src/utils/worker.js +89 -0
  190. package/dist/src/utils/zip.js +161 -0
  191. package/dist/src/vnode/h.d.ts +1 -1
  192. package/dist/src/vnode/h.js +22 -0
  193. package/dist/src/vnode/hooks.d.ts +1 -1
  194. package/dist/src/vnode/htmlDomApi.js +94 -0
  195. package/dist/src/vnode/index.d.ts +16 -16
  196. package/dist/src/vnode/index.js +28 -1
  197. package/dist/src/vnode/init.d.ts +1 -1
  198. package/dist/src/vnode/init.js +104 -0
  199. package/dist/src/vnode/is.d.ts +1 -1
  200. package/dist/src/vnode/is.js +20 -0
  201. package/dist/src/vnode/modules/attributes.d.ts +1 -1
  202. package/dist/src/vnode/modules/attributes.js +21 -0
  203. package/dist/src/vnode/modules/class.d.ts +1 -1
  204. package/dist/src/vnode/modules/class.js +18 -0
  205. package/dist/src/vnode/modules/index.js +15 -0
  206. package/dist/src/vnode/modules/listeners.d.ts +1 -1
  207. package/dist/src/vnode/modules/listeners.js +36 -0
  208. package/dist/src/vnode/modules/props.d.ts +1 -1
  209. package/dist/src/vnode/modules/props.js +17 -0
  210. package/dist/src/vnode/modules/style.d.ts +1 -1
  211. package/dist/src/vnode/modules/style.js +52 -0
  212. package/dist/src/vnode/vnode.d.ts +6 -6
  213. package/dist/src/vnode/vnode.js +13 -0
  214. package/dist/third-party/jschardet/LICENSE.txt +504 -0
  215. package/dist/third-party/jschardet/NOTICE.txt +33 -0
  216. package/docs/API.md +8 -64
  217. package/package.json +14 -18
  218. package/dist/bin/generate-api-docs.d.ts +0 -1
  219. package/dist/build/build.es.d.ts +0 -2
  220. package/dist/build/build.umd.d.ts +0 -2
  221. package/dist/build/build.umd.node.d.ts +0 -2
  222. package/dist/build/build.umd.utils.d.ts +0 -2
  223. package/dist/chain-CTywmh_H.js +0 -1
  224. package/dist/color-BTvZUuf-.js +0 -1
  225. package/dist/enums-BAgbyGdH.js +0 -1
  226. package/dist/examples/clone-deep-example.d.ts +0 -1
  227. package/dist/examples/is-equal-example.d.ts +0 -1
  228. package/dist/i18n-DW21b_DJ.js +0 -1
  229. package/dist/plugins/vite-plugins-banner.d.ts +0 -2
  230. package/dist/rolldown-runtime-I3TIJKkN.js +0 -1
  231. package/dist/src/node/appendFile.d.ts +0 -7
  232. package/dist/src/node/body.d.ts +0 -9
  233. package/dist/src/node/color.d.ts +0 -7
  234. package/dist/src/node/command.d.ts +0 -8
  235. package/dist/src/node/ctx2req.d.ts +0 -5
  236. package/dist/src/node/fileInfo.d.ts +0 -7
  237. package/dist/src/node/fs.d.ts +0 -7
  238. package/dist/src/node/get.d.ts +0 -10
  239. package/dist/src/node/getIPAdress.d.ts +0 -1
  240. package/dist/src/node/index.d.ts +0 -25
  241. package/dist/src/node/index.js +0 -1
  242. package/dist/src/node/isColorSupported.d.ts +0 -2
  243. package/dist/src/node/paresUrl.d.ts +0 -19
  244. package/dist/src/node/readDir.d.ts +0 -6
  245. package/dist/src/node/readFile.d.ts +0 -9
  246. package/dist/src/node/router.d.ts +0 -42
  247. package/dist/src/node/send.d.ts +0 -7
  248. package/dist/src/node/server.d.ts +0 -18
  249. package/dist/src/node/startTask.d.ts +0 -2
  250. package/dist/src/node/stream.d.ts +0 -15
  251. package/dist/src/node/taskEnd.d.ts +0 -2
  252. package/dist/src/node/traverse.d.ts +0 -17
  253. package/dist/src/node/watchFile.d.ts +0 -8
  254. package/dist/src/node/writeFile.d.ts +0 -8
  255. package/dist/src/node/ws.d.ts +0 -8
  256. package/dist/src/utils/visual/render/utils/batch/index.test.d.ts +0 -1
  257. package/dist/src/utils/visual/render/utils/index.test.d.ts +0 -1
  258. package/dist/test/binary.test.d.ts +0 -1
  259. package/dist/test/bridge.test.d.ts +0 -1
  260. package/dist/test/budget.test.d.ts +0 -1
  261. package/dist/test/canvas.test.d.ts +0 -1
  262. package/dist/test/clearBr.test.d.ts +0 -1
  263. package/dist/test/cloneDeep.test.d.ts +0 -1
  264. package/dist/test/color.test.d.ts +0 -1
  265. package/dist/test/command.test.d.ts +0 -1
  266. package/dist/test/conversation.test.d.ts +0 -1
  267. package/dist/test/diff.test.d.ts +0 -1
  268. package/dist/test/encodeUrl.test.d.ts +0 -1
  269. package/dist/test/escapeHtml.test.d.ts +0 -1
  270. package/dist/test/formatBytes.test.d.ts +0 -1
  271. package/dist/test/is-equal.test.d.ts +0 -1
  272. package/dist/test/mimeType.test.d.ts +0 -1
  273. package/dist/test/package-exports.test.d.ts +0 -1
  274. package/dist/test/scroll.test.d.ts +0 -1
  275. package/dist/test/server.test.d.ts +0 -1
  276. package/dist/test/status.test.d.ts +0 -1
  277. package/dist/test/stream.test.d.ts +0 -1
  278. package/dist/test/sw.test.d.ts +0 -1
  279. package/dist/test/totp.test.d.ts +0 -1
  280. package/dist/test/tween.test.d.ts +0 -1
  281. package/dist/test/utils/async.test.d.ts +0 -1
  282. package/dist/test/utils/autosize.test.d.ts +0 -1
  283. package/dist/test/utils/color-grade.test.d.ts +0 -1
  284. package/dist/test/utils/compose.test.d.ts +0 -1
  285. package/dist/test/utils/event.test.d.ts +0 -1
  286. package/dist/test/utils/file-read.test.d.ts +0 -1
  287. package/dist/test/utils/format.test.d.ts +0 -1
  288. package/dist/test/utils/i18n.test.d.ts +0 -1
  289. package/dist/test/utils/idb-collection.test.d.ts +0 -1
  290. package/dist/test/utils/idb.test.d.ts +0 -1
  291. package/dist/test/utils/instrumentation.test.d.ts +0 -1
  292. package/dist/test/utils/interp.test.d.ts +0 -1
  293. package/dist/test/utils/lang.test.d.ts +0 -1
  294. package/dist/test/utils/locale-path.test.d.ts +0 -1
  295. package/dist/test/utils/media-query.test.d.ts +0 -1
  296. package/dist/test/utils/mergeObj.test.d.ts +0 -1
  297. package/dist/test/utils/number-parse.test.d.ts +0 -1
  298. package/dist/test/utils/paginate.test.d.ts +0 -1
  299. package/dist/test/utils/placement.test.d.ts +0 -1
  300. package/dist/test/utils/prefetch.test.d.ts +0 -1
  301. package/dist/test/utils/query-storage.test.d.ts +0 -1
  302. package/dist/test/utils/queue.test.d.ts +0 -1
  303. package/dist/test/utils/report-config.test.d.ts +0 -1
  304. package/dist/test/utils/report-image.test.d.ts +0 -1
  305. package/dist/test/utils/secure.test.d.ts +0 -1
  306. package/dist/test/utils/segment.test.d.ts +0 -1
  307. package/dist/test/utils/signal-once.test.d.ts +0 -1
  308. package/dist/test/utils/single-flight.test.d.ts +0 -1
  309. package/dist/test/utils/speech.test.d.ts +0 -1
  310. package/dist/test/utils/text-boundary.test.d.ts +0 -1
  311. package/dist/test/utils/time.test.d.ts +0 -1
  312. package/dist/test/utils/timing.test.d.ts +0 -1
  313. package/dist/test/utils/truncate.test.d.ts +0 -1
  314. package/dist/test/utils/visual/filter.test.d.ts +0 -1
  315. package/dist/test/utils/worker-client.test.d.ts +0 -1
  316. package/dist/test/utils/worker-serve.test.d.ts +0 -1
  317. package/dist/test/utils/zip.test.d.ts +0 -1
  318. package/dist/test/visual/math.test.d.ts +0 -1
  319. package/dist/test/visual-application.test.d.ts +0 -1
  320. package/dist/test/visual-batch.test.d.ts +0 -1
  321. package/dist/test/visual-math.test.d.ts +0 -1
  322. package/dist/test/vnode/index.d.ts +0 -1
  323. package/dist/test/vnode/server.d.ts +0 -2
  324. package/dist/test/vnode/vnode.d.ts +0 -1
  325. package/dist/test/vnode.test.d.ts +0 -1
  326. package/dist/test/websocket.test.d.ts +0 -1
  327. package/dist/test/writeFile.test.d.ts +0 -1
  328. package/dist/umd/index.umd.cjs +0 -1
  329. package/dist/umd/node/node.umd.cjs +0 -1
  330. package/dist/umd/utils/utils.umd.cjs +0 -1
  331. package/dist/utils-B4FnyUzW.js +0 -1
  332. package/dist/vite.config.d.ts +0 -8
  333. package/dist/vitest.config.d.ts +0 -2
@@ -0,0 +1,110 @@
1
+ var g = 4e6;
2
+ function L(i) {
3
+ if (i === "") return [];
4
+ const r = i.split(`
5
+ `);
6
+ return r.at(-1) === "" && r.pop(), r;
7
+ }
8
+ function a(i, r) {
9
+ const u = i.length + 1, s = r.length + 1, o = new Uint32Array(u * s);
10
+ for (let h = i.length - 1; h >= 0; h -= 1) for (let t = r.length - 1; t >= 0; t -= 1) o[h * s + t] = i[h] === r[t] ? o[(h + 1) * s + t + 1] + 1 : Math.max(o[(h + 1) * s + t], o[h * s + t + 1]);
11
+ const l = [];
12
+ let e = 0, n = 0;
13
+ for (; e < i.length && n < r.length; ) i[e] === r[n] ? (l.push({
14
+ kind: "context",
15
+ text: i[e],
16
+ oldLine: e + 1,
17
+ newLine: n + 1
18
+ }), e += 1, n += 1) : o[(e + 1) * s + n] >= o[e * s + n + 1] ? (l.push({
19
+ kind: "removed",
20
+ text: i[e],
21
+ oldLine: e + 1,
22
+ newLine: null
23
+ }), e += 1) : (l.push({
24
+ kind: "added",
25
+ text: r[n],
26
+ oldLine: null,
27
+ newLine: n + 1
28
+ }), n += 1);
29
+ for (; e < i.length; e += 1) l.push({
30
+ kind: "removed",
31
+ text: i[e],
32
+ oldLine: e + 1,
33
+ newLine: null
34
+ });
35
+ for (; n < r.length; n += 1) l.push({
36
+ kind: "added",
37
+ text: r[n],
38
+ oldLine: null,
39
+ newLine: n + 1
40
+ });
41
+ return l;
42
+ }
43
+ function p(i, r) {
44
+ return [...i.map((u, s) => ({
45
+ kind: "removed",
46
+ text: u,
47
+ oldLine: s + 1,
48
+ newLine: null
49
+ })), ...r.map((u, s) => ({
50
+ kind: "added",
51
+ text: u,
52
+ oldLine: null,
53
+ newLine: s + 1
54
+ }))];
55
+ }
56
+ function m(i, r) {
57
+ const u = i.map((n) => n.kind !== "context");
58
+ if (!u.includes(!0)) return [];
59
+ const s = Array.from({ length: i.length }, () => !1);
60
+ u.forEach((n, h) => {
61
+ if (n)
62
+ for (let t = Math.max(0, h - r); t <= Math.min(i.length - 1, h + r); t += 1) s[t] = !0;
63
+ });
64
+ const o = [];
65
+ let l = [];
66
+ const e = () => {
67
+ if (l.length === 0) return;
68
+ const n = l.map((t) => t.oldLine).filter((t) => t !== null), h = l.map((t) => t.newLine).filter((t) => t !== null);
69
+ o.push({
70
+ oldStart: n[0] ?? 0,
71
+ oldLines: n.length,
72
+ newStart: h[0] ?? 0,
73
+ newLines: h.length,
74
+ lines: l
75
+ }), l = [];
76
+ };
77
+ return s.forEach((n, h) => {
78
+ n ? l.push(i[h]) : e();
79
+ }), e(), o;
80
+ }
81
+ function w(i, r, u = {}) {
82
+ const s = Math.max(0, u.context ?? 3), o = L(i), l = L(r);
83
+ let e = 0;
84
+ for (; e < o.length && e < l.length && o[e] === l[e]; ) e += 1;
85
+ let n = 0;
86
+ for (; n < o.length - e && n < l.length - e && o[o.length - 1 - n] === l[l.length - 1 - n]; ) n += 1;
87
+ const h = o.slice(e, o.length - n), t = l.slice(e, l.length - n), f = (h.length + 1) * (t.length + 1) > g ? p(h, t) : a(h, t);
88
+ return m([
89
+ ...o.slice(0, e).map((d, c) => ({
90
+ kind: "context",
91
+ text: d,
92
+ oldLine: c + 1,
93
+ newLine: c + 1
94
+ })),
95
+ ...f.map((d) => ({
96
+ ...d,
97
+ oldLine: d.oldLine === null ? null : d.oldLine + e,
98
+ newLine: d.newLine === null ? null : d.newLine + e
99
+ })),
100
+ ...o.slice(o.length - n).map((d, c) => ({
101
+ kind: "context",
102
+ text: d,
103
+ oldLine: o.length - n + c + 1,
104
+ newLine: l.length - n + c + 1
105
+ }))
106
+ ], s);
107
+ }
108
+ export {
109
+ w as diffLines
110
+ };
@@ -49,4 +49,4 @@ export declare const setFontSize2html: (designWidth?: number) => void;
49
49
  * ```
50
50
  */
51
51
  export declare const autosizeTextarea: (element: HTMLTextAreaElement) => (() => void);
52
- export { Chain, create } from './chain';
52
+ export { Chain, create } from "./chain.js";
@@ -0,0 +1,89 @@
1
+ import { DEVICE as f, currentDevice as p } from "./device.js";
2
+ import { Chain as b, create as x } from "./chain.js";
3
+ var L = (n, e) => {
4
+ if (typeof document > "u") return;
5
+ const t = n.classList;
6
+ t.contains(e) || t.add(e);
7
+ }, y = (n, e) => {
8
+ if (typeof document > "u") return;
9
+ const t = n.classList;
10
+ t.contains(e) && t.remove(e);
11
+ }, E = (n) => {
12
+ if (typeof document > "u") return;
13
+ const e = document.createDocumentFragment();
14
+ return n.forEach((t) => e.appendChild(t)), e;
15
+ }, g = /["'&<>]/;
16
+ function z(n) {
17
+ const e = "" + n, t = g.exec(e);
18
+ if (!t) return e;
19
+ let o, s = "", i = 0, r = 0;
20
+ for (i = t.index; i < e.length; i++) {
21
+ switch (e.charCodeAt(i)) {
22
+ case 34:
23
+ o = "&quot;";
24
+ break;
25
+ case 38:
26
+ o = "&amp;";
27
+ break;
28
+ case 39:
29
+ o = "&#39;";
30
+ break;
31
+ case 60:
32
+ o = "&lt;";
33
+ break;
34
+ case 62:
35
+ o = "&gt;";
36
+ break;
37
+ default:
38
+ continue;
39
+ }
40
+ r !== i && (s += e.substring(r, i)), r = i + 1, s += o;
41
+ }
42
+ return r !== i ? s + e.substring(r, i) : s;
43
+ }
44
+ var S = (n = 375) => {
45
+ let e = n;
46
+ const { documentElement: t } = document, o = window.matchMedia("(orientation: portrait)");
47
+ let s, i = 667 / 375;
48
+ p() === f.IPAD && (i = 1024 / 768, e = 768);
49
+ function r() {
50
+ const u = !o.matches;
51
+ let l = window.screen.width, c = window.screen.height;
52
+ l < c && ([l, c] = [c, l]);
53
+ let d = t.clientWidth, h = c;
54
+ d / h >= i ? (d = h * i, t.classList.remove("adjustHeight"), t.classList.add("adjustWidth")) : (h = d / i, t.classList.remove("adjustWidth"), t.classList.add("adjustHeight"));
55
+ let a = d / e * 16;
56
+ u && (a /= i), t.style.fontSize = `${a}px`;
57
+ const m = window.getComputedStyle(t).fontSize.replace("px", "") || 0;
58
+ a !== m && (t.style.fontSize = `${a / Number(m) * a}px`);
59
+ }
60
+ window.addEventListener("resize", function() {
61
+ clearTimeout(s), s = setTimeout(r, 300);
62
+ }, !1), window.addEventListener("pageshow", function(u) {
63
+ u.persisted && (clearTimeout(s), s = setTimeout(r, 300));
64
+ }, !1), window.addEventListener("orientationchange", function() {
65
+ r();
66
+ }, !1), r();
67
+ }, T = (n) => {
68
+ const e = n.style.height, t = (s) => {
69
+ const i = parseFloat(s);
70
+ return Number.isFinite(i) ? i : 0;
71
+ }, o = () => {
72
+ n.style.height = "auto";
73
+ const s = getComputedStyle(n), i = s.boxSizing === "border-box" ? t(s.borderTopWidth) + t(s.borderBottomWidth) : -(t(s.paddingTop) + t(s.paddingBottom));
74
+ n.style.height = `${n.scrollHeight + i}px`;
75
+ };
76
+ return n.addEventListener("input", o), o(), () => {
77
+ n.removeEventListener("input", o), n.style.height = e;
78
+ };
79
+ };
80
+ export {
81
+ b as Chain,
82
+ L as addClassToElement,
83
+ T as autosizeTextarea,
84
+ x as create,
85
+ E as createDocumentFragment,
86
+ z as escapeHtml,
87
+ y as removeClassToElement,
88
+ S as setFontSize2html
89
+ };
@@ -0,0 +1,11 @@
1
+ import { noop as t } from "./noop.js";
2
+ var i = (r = t) => {
3
+ if (typeof window > "u") return t;
4
+ const n = (e) => r(e), o = (e) => r(e);
5
+ return window.addEventListener("unhandledrejection", n, !0), window.addEventListener("error", o, !0), () => {
6
+ window.removeEventListener("unhandledrejection", n, !0), window.removeEventListener("error", o, !0);
7
+ };
8
+ };
9
+ export {
10
+ i as handleError
11
+ };
@@ -36,8 +36,8 @@
36
36
  * }
37
37
  */
38
38
  export declare class EventManager {
39
+ /** Unused scopes and repeated cleanup never allocate a controller. */
39
40
  private ac;
40
- constructor();
41
41
  /** The underlying AbortSignal — pass it straight to addEventListener's options when needed. */
42
42
  get signal(): AbortSignal;
43
43
  on<K extends keyof HTMLElementEventMap>(target: HTMLElement, type: K, handler: (this: HTMLElement, ev: HTMLElementEventMap[K]) => unknown, options?: Omit<AddEventListenerOptions, 'signal'>): this;
@@ -54,8 +54,8 @@ export declare class EventManager {
54
54
  */
55
55
  delegate<K extends keyof HTMLElementEventMap>(parent: HTMLElement, selector: string, type: K, handler: (ev: HTMLElementEventMap[K], target: Element) => void, options?: Omit<AddEventListenerOptions, 'signal'>): this;
56
56
  /**
57
- * @description: Remove every registered listener and reset the internal AbortController.
58
- * Safe to call repeatedly; later on() / delegate() calls start from a clean scope.
57
+ * @description: Remove every registered listener and release the internal AbortController.
58
+ * Safe to call repeatedly; the next signal read or listener starts a clean scope.
59
59
  */
60
60
  abort(): void;
61
61
  }
@@ -0,0 +1,39 @@
1
+ var g = class {
2
+ ac = null;
3
+ get signal() {
4
+ return this.ac ??= new AbortController(), this.ac.signal;
5
+ }
6
+ on(e, s, r, t) {
7
+ return e.addEventListener(s, r, {
8
+ ...t,
9
+ signal: this.signal
10
+ }), this;
11
+ }
12
+ delegate(e, s, r, t, i) {
13
+ return e.addEventListener(r, (n) => {
14
+ const a = n.target?.closest(s);
15
+ a && e.contains(a) && t(n, a);
16
+ }, {
17
+ ...i,
18
+ signal: this.signal
19
+ }), this;
20
+ }
21
+ abort() {
22
+ this.ac?.abort(), this.ac = null;
23
+ }
24
+ };
25
+ function u(e = {}) {
26
+ const { windowMs: s = 300, maxDistancePx: r = 60 } = e;
27
+ let t = -1 / 0, i = 0, n = 0;
28
+ const a = () => {
29
+ t = -1 / 0, i = 0, n = 0;
30
+ };
31
+ return {
32
+ check: (l, c, o = Date.now()) => o - t < s && Math.hypot(l - i, c - n) < r ? (a(), !0) : (t = o, i = l, n = c, !1),
33
+ reset: a
34
+ };
35
+ }
36
+ export {
37
+ g as EventManager,
38
+ u as createDoubleTapDetector
39
+ };
@@ -0,0 +1,14 @@
1
+ var d = (r, a, t) => new Promise((n, i) => {
2
+ if (typeof FileReader > "u") {
3
+ i(/* @__PURE__ */ new Error("FileReader is not available"));
4
+ return;
5
+ }
6
+ const e = new FileReader();
7
+ e.onload = () => n(e.result), e.onerror = () => i(e.error ?? /* @__PURE__ */ new Error("read file error")), e.onabort = () => i(/* @__PURE__ */ new Error("read file aborted")), a === "arrayBuffer" ? e.readAsArrayBuffer(r) : a === "text" ? e.readAsText(r, t) : a === "dataURL" ? e.readAsDataURL(r) : e.readAsBinaryString(r);
8
+ }), f = (r) => d(r, "arrayBuffer"), o = async (r) => new Uint8Array(await f(r)), s = (r, a) => d(r, "text", a), l = (r) => d(r, "dataURL");
9
+ export {
10
+ f as readFileAsArrayBuffer,
11
+ l as readFileAsDataURL,
12
+ s as readFileAsText,
13
+ o as readFileAsUint8Array
14
+ };
@@ -0,0 +1,4 @@
1
+ var t = (n) => typeof n == "function";
2
+ export {
3
+ t as isFunction
4
+ };
@@ -1 +1,79 @@
1
- import{n as r,r as s,t as a}from"../../../i18n-DW21b_DJ.js";export{a as I18nCore,r as createI18n,s as useI18n};
1
+ import { localStorageGetItem as i, localStorageSetItem as o } from "../storage.js";
2
+ import { resolveLocale as n } from "../lang.js";
3
+ var _ = "ran-locale", c = Object.freeze({}), h = class {
4
+ _locale;
5
+ _fallback;
6
+ _messages;
7
+ _persist;
8
+ _storageKey;
9
+ _handlers = /* @__PURE__ */ new Set();
10
+ constructor(e = {}) {
11
+ this._messages = { ...e.messages }, this._fallback = e.fallbackLocale ?? "en", this._persist = e.persist ?? !1, this._storageKey = e.storageKey ?? _, this._locale = this._resolveInitialLocale(e);
12
+ }
13
+ _resolveInitialLocale(e) {
14
+ const s = Object.keys(this._messages), t = this._persist && i(this._storageKey) || null;
15
+ if (t && (this._messages[t] || s.length === 0)) return t;
16
+ if (e.locale) return e.locale;
17
+ if (e.detectNavigator) {
18
+ const a = n({
19
+ supported: s,
20
+ useNavigator: !0,
21
+ fallback: ""
22
+ });
23
+ if (a) return a;
24
+ }
25
+ return this._fallback;
26
+ }
27
+ get locale() {
28
+ return this._locale;
29
+ }
30
+ getLocale() {
31
+ return this._locale;
32
+ }
33
+ setLocale(e) {
34
+ e !== this._locale && (this._locale = e, this._persist && o(this._storageKey, e), this._notify());
35
+ }
36
+ addMessages(e, s) {
37
+ this._messages[e] = {
38
+ ...this._messages[e],
39
+ ...s
40
+ };
41
+ }
42
+ getMessages(e = this._locale) {
43
+ return this._messages[e] ?? {};
44
+ }
45
+ get availableLocales() {
46
+ return Object.keys(this._messages);
47
+ }
48
+ t(e, s) {
49
+ const t = this._messages[this._locale]?.[e] ?? this._messages[this._fallback]?.[e] ?? e;
50
+ return this._interpolate(t, s);
51
+ }
52
+ _interpolate(e, s) {
53
+ const t = s ?? c;
54
+ return e.replace(/\{\{|\}\}|\{(\w+)\}/g, (a, r) => a === "{{" ? "{" : a === "}}" ? "}" : t[r] != null ? String(t[r]) : a);
55
+ }
56
+ onChange(e) {
57
+ return this._handlers.add(e), () => {
58
+ this._handlers.delete(e);
59
+ };
60
+ }
61
+ _notify() {
62
+ for (const e of this._handlers) e(this._locale);
63
+ }
64
+ destroy() {
65
+ this._handlers.clear();
66
+ }
67
+ }, l = null;
68
+ function f(e = {}) {
69
+ const s = new h(e);
70
+ return l = s, s;
71
+ }
72
+ function d() {
73
+ return l;
74
+ }
75
+ export {
76
+ h as I18nCore,
77
+ f as createI18n,
78
+ d as useI18n
79
+ };
@@ -0,0 +1,177 @@
1
+ var l = (e) => ({
2
+ status: "success",
3
+ code: 0,
4
+ data: e,
5
+ error: !1
6
+ }), d = (e, r = null) => ({
7
+ status: "error",
8
+ code: 1,
9
+ data: r,
10
+ error: !0,
11
+ message: e
12
+ }), h = class {
13
+ database;
14
+ version;
15
+ dbName;
16
+ stores;
17
+ upgrade;
18
+ constructor({ dbName: e, version: r, stores: t, upgrade: s }) {
19
+ this.dbName = e, this.version = r || 1, this.stores = t || [], this.upgrade = s;
20
+ }
21
+ openDataBase = () => new Promise((e, r) => {
22
+ if (typeof indexedDB > "u") {
23
+ r(d("indexedDB is not available"));
24
+ return;
25
+ }
26
+ const t = indexedDB.open(this.dbName, this.version);
27
+ t.onsuccess = () => {
28
+ this.database = t.result, this.version = this.database.version, this.database.onversionchange = () => {
29
+ this.database?.close(), this.database = void 0;
30
+ }, e(l({ db: this.database }));
31
+ }, t.onerror = () => {
32
+ if (t.error && t.error.name === "VersionError") {
33
+ const [, s] = (t.error.message || "").match(/\d+/g) || [];
34
+ if (Number(s) > this.version) {
35
+ this.version = Number(s), this.refreshDatabase().then(e, r);
36
+ return;
37
+ }
38
+ }
39
+ r(d("open database error", t.error));
40
+ }, t.onupgradeneeded = (s) => {
41
+ const o = t.result;
42
+ this.database = o, this.version = o.version;
43
+ for (const a of this.stores) {
44
+ const i = o.objectStoreNames.contains(a.name) ? t.transaction?.objectStore(a.name) : o.createObjectStore(a.name, a.options);
45
+ for (const n of a.indexes || []) i && !i.indexNames.contains(n.name) && i.createIndex(n.name, n.keyPath, n.options);
46
+ }
47
+ this.upgrade?.(o, s, t.transaction);
48
+ };
49
+ });
50
+ closeDataBase = () => {
51
+ this.database?.close(), this.database = void 0;
52
+ };
53
+ refreshDatabase = () => (this.closeDataBase(), this.openDataBase());
54
+ deleteDatabase = ({ dbName: e } = {}) => new Promise((r, t) => {
55
+ const s = indexedDB.deleteDatabase(e ?? this.dbName);
56
+ s.onsuccess = () => r(l(null)), s.onerror = () => t(d("delete database error", s.error));
57
+ });
58
+ getObjectStore = (e, r = "readonly") => {
59
+ if (this.database)
60
+ return this.database.transaction([e], r).objectStore(e);
61
+ };
62
+ run = (e, r, t, s, o) => new Promise((a, i) => {
63
+ let n;
64
+ try {
65
+ const c = this.database?.transaction(e, r).objectStore(e);
66
+ n = c && t(c);
67
+ } catch (c) {
68
+ i(d(`${s} error`, c));
69
+ return;
70
+ }
71
+ if (!n) {
72
+ i(d(`${s} error`));
73
+ return;
74
+ }
75
+ const u = n;
76
+ u.onsuccess = () => a(l(o(u))), u.onerror = () => i(d(`${s} error`, u.error));
77
+ });
78
+ add = ({ storeName: e, data: r }) => this.run(e, "readwrite", (t) => t.add(r), "add", () => r);
79
+ update = ({ storeName: e, data: r }) => this.run(e, "readwrite", (t) => t.put(r), "update", () => null);
80
+ readByKey = ({ storeName: e, key: r }) => this.run(e, "readonly", (t) => t.get(r), "read", (t) => t.result);
81
+ readAll = ({ storeName: e, query: r, count: t }) => this.run(e, "readonly", (s) => s.getAll(r, t), "read all", (s) => s.result);
82
+ count = ({ storeName: e, query: r }) => this.run(e, "readonly", (t) => t.count(r), "count", (t) => t.result);
83
+ readByCursor = ({ storeName: e, keyRange: r, direction: t }) => new Promise((s, o) => {
84
+ const a = this.database?.transaction(e, "readonly").objectStore(e)?.openCursor(r, t), i = [];
85
+ if (!a) {
86
+ o(d("read cursor error"));
87
+ return;
88
+ }
89
+ a.onsuccess = () => {
90
+ const n = a.result;
91
+ n ? (i.push(n.value), n.continue()) : s(l(i));
92
+ }, a.onerror = () => o(d("read cursor error", a.error));
93
+ });
94
+ delete = ({ storeName: e, key: r }) => this.run(e, "readwrite", (t) => t.delete(r), "delete", () => null);
95
+ clear = ({ storeName: e }) => this.run(e, "readwrite", (r) => r.clear(), "clear", () => null);
96
+ collection = (e) => {
97
+ const r = (s, o) => s.then((a) => a.data ?? o).catch(() => o), t = (s) => s.then(() => !0).catch(() => !1);
98
+ return {
99
+ name: e,
100
+ get: (s) => this.readByKey({
101
+ storeName: e,
102
+ key: s
103
+ }).then((o) => o.data ?? null).catch(() => null),
104
+ all: () => r(this.readByCursor({ storeName: e }), []),
105
+ count: () => r(this.count({ storeName: e }), 0),
106
+ add: (s) => t(this.add({
107
+ storeName: e,
108
+ data: s
109
+ })),
110
+ put: (s) => t(this.update({
111
+ storeName: e,
112
+ data: s
113
+ })),
114
+ remove: (s) => t(this.delete({
115
+ storeName: e,
116
+ key: s
117
+ })),
118
+ clear: () => t(this.clear({ storeName: e }))
119
+ };
120
+ };
121
+ }, b = ({ dbName: e, storeName: r = "files", key: t = "pending" }) => {
122
+ const s = () => new Promise((o) => {
123
+ if (typeof indexedDB > "u") {
124
+ o(null);
125
+ return;
126
+ }
127
+ let a;
128
+ try {
129
+ a = indexedDB.open(e, 1);
130
+ } catch {
131
+ o(null);
132
+ return;
133
+ }
134
+ a.onupgradeneeded = () => {
135
+ a.result.objectStoreNames.contains(r) || a.result.createObjectStore(r);
136
+ }, a.onerror = () => o(null), a.onblocked = () => o(null), a.onsuccess = () => o(a.result);
137
+ });
138
+ return {
139
+ put: async (o) => {
140
+ const a = await s();
141
+ return a ? new Promise((i) => {
142
+ try {
143
+ const n = a.transaction(r, "readwrite");
144
+ n.objectStore(r).put(o, t), n.oncomplete = () => {
145
+ a.close(), i(!0);
146
+ }, n.onerror = n.onabort = () => {
147
+ a.close(), i(!1);
148
+ };
149
+ } catch {
150
+ a.close(), i(!1);
151
+ }
152
+ }) : !1;
153
+ },
154
+ take: async () => {
155
+ const o = await s();
156
+ return o ? new Promise((a) => {
157
+ try {
158
+ const i = o.transaction(r, "readwrite"), n = i.objectStore(r), u = n.get(t);
159
+ let c = null;
160
+ u.onsuccess = () => {
161
+ c = u.result ?? null, c !== null && n.delete(t);
162
+ }, i.oncomplete = () => {
163
+ o.close(), a(c);
164
+ }, i.onerror = i.onabort = () => {
165
+ o.close(), a(null);
166
+ };
167
+ } catch {
168
+ o.close(), a(null);
169
+ }
170
+ }) : null;
171
+ }
172
+ };
173
+ };
174
+ export {
175
+ h as WebDB,
176
+ b as createHandoff
177
+ };
@@ -1,4 +1,4 @@
1
- import type { BaseReturn } from '@/utils/bom';
1
+ import type { BaseReturn } from "./bom.js";
2
2
  /** A bitmap container usable both as a drawImage source and as a render target */
3
3
  export type ImgSource = HTMLImageElement | HTMLCanvasElement;
4
4
  /**
@@ -0,0 +1,68 @@
1
+ import { roundRectByArc as g } from "./canvas.js";
2
+ var w = (r) => new Promise((o, t) => {
3
+ const e = new Image();
4
+ e.onload = () => o(e), e.onerror = (n) => t(n), e.src = r;
5
+ }), h = (r, o) => {
6
+ const t = document.createElement("canvas"), e = t.getContext("2d"), { width: n, height: a } = r;
7
+ return t.width = n, t.height = a, g(e, 0, 0, n, a, o), e.clip(), e.drawImage(r, 0, 0, n, a), t;
8
+ }, u = (r, o) => {
9
+ const t = document.createElement("canvas"), e = t.getContext("2d"), { width: n, height: a } = r;
10
+ if (t.width = n, t.height = a, typeof e.filter == "string")
11
+ e.filter = `opacity(${o * 100}%)`, e.drawImage(r, 0, 0, n, a);
12
+ else {
13
+ e.drawImage(r, 0, 0, n, a);
14
+ const s = e.getImageData(0, 0, n, a), { data: d } = s, c = d.length;
15
+ for (let i = 0; i < c; i += 4) {
16
+ const l = d[i + 3];
17
+ l !== 0 && (d[i + 3] = l * o);
18
+ }
19
+ e.putImageData(s, 0, 0);
20
+ }
21
+ return t;
22
+ }, f = (r, o) => {
23
+ o = o || r / 3;
24
+ const t = Math.ceil(r), e = o * o, n = 2 * e, a = 1 / (2 * Math.PI * e), s = [];
25
+ let d = 0;
26
+ for (let c = -t; c <= t; c++) for (let i = -t; i <= t; i++) {
27
+ const l = a * Math.exp(-(c * c + i * i) / n);
28
+ s.push(l), d += l;
29
+ }
30
+ for (let c = 0; c < s.length; c++) s[c] /= d;
31
+ return s;
32
+ }, v = (r, o, t) => new Promise((e, n) => {
33
+ if (typeof window > "u") {
34
+ n(/* @__PURE__ */ new Error("isImageSize is browser-only: window is undefined"));
35
+ return;
36
+ }
37
+ const a = window.URL || window.webkitURL, s = new Image(), d = a.createObjectURL(r), c = () => a.revokeObjectURL(d);
38
+ s.onload = () => {
39
+ c();
40
+ const i = o === void 0 || s.width === o, l = t === void 0 || s.height === t;
41
+ e(i && l);
42
+ }, s.onerror = () => {
43
+ c(), n(/* @__PURE__ */ new Error("failed to decode image"));
44
+ }, s.src = d;
45
+ }), I = (r) => new Promise((o, t) => {
46
+ const e = new FileReader();
47
+ e.onload = function() {
48
+ o({
49
+ success: !0,
50
+ data: e.result,
51
+ message: ""
52
+ });
53
+ }, e.onerror = (n) => {
54
+ t({
55
+ success: !1,
56
+ data: n,
57
+ message: ""
58
+ });
59
+ }, e.readAsDataURL(r);
60
+ });
61
+ export {
62
+ I as convertImageToBase64,
63
+ h as cutRound,
64
+ w as getImage,
65
+ f as getMatrix,
66
+ v as isImageSize,
67
+ u as opacity
68
+ };