@graphrefly/graphrefly 0.27.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/dist/backoff-HPZMEZNF.js +1 -0
  2. package/dist/cascading-Bp99ckMJ.d.ts +180 -0
  3. package/dist/cascading-CcAgRacD.d.cts +180 -0
  4. package/dist/chunk-22F4K3G7.js +1 -0
  5. package/dist/chunk-22SVXUPB.js +64 -0
  6. package/dist/chunk-2GQREQ6C.js +1 -0
  7. package/dist/chunk-3JXNEPCD.js +2 -0
  8. package/dist/chunk-4JJCCD5S.js +2 -0
  9. package/dist/chunk-4OFIQ66T.js +1 -0
  10. package/dist/chunk-4V4C7K56.js +1 -0
  11. package/dist/chunk-4VVTGLXJ.js +1 -0
  12. package/dist/chunk-567NWZ3T.js +1 -0
  13. package/dist/chunk-5JDE5JHE.js +1 -0
  14. package/dist/chunk-5QDBSZBV.js +1 -0
  15. package/dist/chunk-5Z4HDCO6.js +1 -0
  16. package/dist/chunk-63FFOHLA.js +1 -0
  17. package/dist/chunk-6QZNQS5B.js +1 -0
  18. package/dist/chunk-7JDLFI6N.js +1 -0
  19. package/dist/chunk-7TDOES3L.js +1 -0
  20. package/dist/chunk-A7IAQQ63.js +1 -0
  21. package/dist/chunk-AMG5VBHW.js +1 -0
  22. package/dist/chunk-AUY2YKCO.js +1 -0
  23. package/dist/chunk-AV3PIDFQ.js +1 -0
  24. package/dist/chunk-BA5URFYW.js +1 -0
  25. package/dist/chunk-BKPLTBL5.js +1 -0
  26. package/dist/chunk-BZP5T4X6.js +1 -0
  27. package/dist/chunk-CK2E7BTU.js +1 -0
  28. package/dist/chunk-CSJE2EKV.js +1 -0
  29. package/dist/chunk-E3AXATVZ.js +9 -0
  30. package/dist/chunk-ESMPEKEV.js +1 -0
  31. package/dist/chunk-GJR3P6JG.js +1 -0
  32. package/dist/chunk-GNCBXARM.js +1 -0
  33. package/dist/chunk-GPW2V3RE.js +1 -0
  34. package/dist/chunk-HSIEYSDY.js +1 -0
  35. package/dist/chunk-I6VIH3VA.js +1 -0
  36. package/dist/chunk-ISCENNXS.js +1 -0
  37. package/dist/chunk-JYOUF6UQ.js +1 -0
  38. package/dist/chunk-KASHOCF5.js +1 -0
  39. package/dist/chunk-LGSNR4LU.js +5 -0
  40. package/dist/chunk-LVGBLZM2.js +1 -0
  41. package/dist/chunk-MGKAO4EK.js +7 -0
  42. package/dist/chunk-NSG4C6BF.js +23 -0
  43. package/dist/chunk-OL33ZI6R.js +1 -0
  44. package/dist/chunk-PCZ35NXD.js +78 -0
  45. package/dist/chunk-PGMUCUHG.js +43 -0
  46. package/dist/chunk-QYADASLV.js +1 -0
  47. package/dist/chunk-RD52SNH2.js +1 -0
  48. package/dist/chunk-SLMYTGTU.js +1 -0
  49. package/dist/chunk-TWMEGG45.js +1 -0
  50. package/dist/chunk-UVJQ35G2.js +1 -0
  51. package/dist/chunk-VGTCGNRX.js +18 -0
  52. package/dist/chunk-VIMF6LGM.js +1 -0
  53. package/dist/chunk-VJLMUKOI.js +1 -0
  54. package/dist/chunk-VWPRPPKR.js +1 -0
  55. package/dist/chunk-W4TSQ6RJ.js +1 -0
  56. package/dist/chunk-WM7H7WTY.js +3 -0
  57. package/dist/chunk-Y32RJO24.js +1 -0
  58. package/dist/chunk-Y53B6NS4.js +1 -0
  59. package/dist/compat/index.cjs +15 -7656
  60. package/dist/compat/index.d.cts +15 -14
  61. package/dist/compat/index.d.ts +15 -14
  62. package/dist/compat/index.js +1 -50
  63. package/dist/compat/jotai/index.cjs +1 -2048
  64. package/dist/compat/jotai/index.d.cts +2 -2
  65. package/dist/compat/jotai/index.d.ts +2 -2
  66. package/dist/compat/jotai/index.js +1 -9
  67. package/dist/compat/nanostores/index.cjs +1 -2175
  68. package/dist/compat/nanostores/index.d.cts +2 -2
  69. package/dist/compat/nanostores/index.d.ts +2 -2
  70. package/dist/compat/nanostores/index.js +1 -23
  71. package/dist/compat/nestjs/index.cjs +15 -6782
  72. package/dist/compat/nestjs/index.d.cts +7 -6
  73. package/dist/compat/nestjs/index.d.ts +7 -6
  74. package/dist/compat/nestjs/index.js +1 -83
  75. package/dist/compat/react/index.cjs +1 -141
  76. package/dist/compat/react/index.d.cts +2 -2
  77. package/dist/compat/react/index.d.ts +2 -2
  78. package/dist/compat/react/index.js +1 -12
  79. package/dist/compat/solid/index.cjs +1 -128
  80. package/dist/compat/solid/index.d.cts +2 -2
  81. package/dist/compat/solid/index.d.ts +2 -2
  82. package/dist/compat/solid/index.js +1 -12
  83. package/dist/compat/svelte/index.cjs +1 -131
  84. package/dist/compat/svelte/index.d.cts +2 -2
  85. package/dist/compat/svelte/index.d.ts +2 -2
  86. package/dist/compat/svelte/index.js +1 -12
  87. package/dist/compat/vue/index.cjs +1 -146
  88. package/dist/compat/vue/index.d.cts +2 -2
  89. package/dist/compat/vue/index.d.ts +2 -2
  90. package/dist/compat/vue/index.js +1 -12
  91. package/dist/compat/zustand/index.cjs +7 -4931
  92. package/dist/compat/zustand/index.d.cts +5 -5
  93. package/dist/compat/zustand/index.d.ts +5 -5
  94. package/dist/compat/zustand/index.js +1 -12
  95. package/dist/composite-BL-llbnE.d.ts +69 -0
  96. package/dist/composite-Dze--DaA.d.cts +69 -0
  97. package/dist/core/index.cjs +1 -2271
  98. package/dist/core/index.d.cts +4 -4
  99. package/dist/core/index.d.ts +4 -4
  100. package/dist/core/index.js +1 -110
  101. package/dist/extra/browser.cjs +1 -0
  102. package/dist/extra/browser.d.cts +3 -0
  103. package/dist/extra/browser.d.ts +3 -0
  104. package/dist/extra/browser.js +1 -0
  105. package/dist/extra/index.cjs +24 -9971
  106. package/dist/extra/index.d.cts +13 -6
  107. package/dist/extra/index.d.ts +13 -6
  108. package/dist/extra/index.js +1 -381
  109. package/dist/extra/node.cjs +3 -0
  110. package/dist/extra/node.d.cts +81 -0
  111. package/dist/extra/node.d.ts +81 -0
  112. package/dist/extra/node.js +2 -0
  113. package/dist/extra/operators.cjs +1 -0
  114. package/dist/extra/operators.d.cts +910 -0
  115. package/dist/extra/operators.d.ts +910 -0
  116. package/dist/extra/operators.js +1 -0
  117. package/dist/extra/reactive.cjs +1 -0
  118. package/dist/extra/reactive.d.cts +352 -0
  119. package/dist/extra/reactive.d.ts +352 -0
  120. package/dist/extra/reactive.js +1 -0
  121. package/dist/extra/sources.cjs +1 -2486
  122. package/dist/extra/sources.d.cts +6 -2
  123. package/dist/extra/sources.d.ts +6 -2
  124. package/dist/extra/sources.js +1 -57
  125. package/dist/extra/storage-browser.cjs +1 -0
  126. package/dist/extra/storage-browser.d.cts +71 -0
  127. package/dist/extra/storage-browser.d.ts +71 -0
  128. package/dist/extra/storage-browser.js +1 -0
  129. package/dist/extra/storage-core.cjs +1 -0
  130. package/dist/extra/storage-core.d.cts +98 -0
  131. package/dist/extra/storage-core.d.ts +98 -0
  132. package/dist/extra/storage-core.js +1 -0
  133. package/dist/extra/storage-node.cjs +2 -0
  134. package/dist/extra/storage-node.d.cts +60 -0
  135. package/dist/extra/storage-node.d.ts +60 -0
  136. package/dist/extra/storage-node.js +1 -0
  137. package/dist/fallback-BaTS7vVY.d.cts +258 -0
  138. package/dist/fallback-eOm3LNxP.d.ts +258 -0
  139. package/dist/graph/index.cjs +7 -5030
  140. package/dist/graph/index.d.cts +6 -5
  141. package/dist/graph/index.d.ts +6 -5
  142. package/dist/graph/index.js +1 -50
  143. package/dist/{graph-DNCrvZSn.d.cts → graph-DgohqXK-.d.cts} +151 -32
  144. package/dist/{graph-CCwGKLCm.d.ts → graph-Qjg9gWHI.d.ts} +151 -32
  145. package/dist/{index-BwfLUNw4.d.ts → index-2BVuRCI4.d.ts} +173 -2040
  146. package/dist/{index-BPVt8kqc.d.ts → index-2NvguqQA.d.ts} +10 -195
  147. package/dist/index-A65LZhoM.d.ts +186 -0
  148. package/dist/{index-DlLp-2Xn.d.cts → index-B-8FCEua.d.cts} +10 -195
  149. package/dist/index-B-gqvYel.d.ts +135 -0
  150. package/dist/index-B2PRuolf.d.cts +86 -0
  151. package/dist/index-BJqt9EwW.d.ts +231 -0
  152. package/dist/{index-BHlKbUwO.d.cts → index-BKjT5DiZ.d.cts} +173 -2040
  153. package/dist/{index-C0svESO4.d.ts → index-BM8BU4q6.d.ts} +1 -1
  154. package/dist/{index-VdHQMPy1.d.ts → index-BQaEnxBf.d.ts} +1 -1
  155. package/dist/index-BSfwiy5B.d.ts +192 -0
  156. package/dist/index-BTSkeCZs.d.cts +291 -0
  157. package/dist/index-BUVtw1Ay.d.cts +186 -0
  158. package/dist/index-BUi57v_p.d.ts +163 -0
  159. package/dist/{messaging-Gt4LPbyA.d.cts → index-BanNUILp.d.cts} +31 -93
  160. package/dist/{audit-DRlSzBu9.d.ts → index-BayHDRx6.d.cts} +27 -21
  161. package/dist/{index-B6D3QNSA.d.ts → index-BiyjsZ0m.d.ts} +148 -20
  162. package/dist/index-BqZ6vB2A.d.ts +2057 -0
  163. package/dist/{memory-li6FL5RM.d.ts → index-BuVidq3D.d.cts} +26 -26
  164. package/dist/index-Byh-xTyp.d.ts +105 -0
  165. package/dist/index-C08QPDcV.d.cts +321 -0
  166. package/dist/{demo-shell-BDkOptd6.d.ts → index-C66RJiX8.d.ts} +14 -14
  167. package/dist/index-C8RfjffH.d.ts +291 -0
  168. package/dist/index-CA1Cu7Ud.d.ts +873 -0
  169. package/dist/{index-ByQxazQJ.d.cts → index-CABbltIu.d.cts} +1 -1
  170. package/dist/{index-VHqptjhu.d.cts → index-CHEBsnYv.d.cts} +1 -1
  171. package/dist/{index-BuEoe-Qu.d.ts → index-CI0yDnLp.d.ts} +9 -9
  172. package/dist/{index-B9B7_HEY.d.ts → index-CJ45TW-h.d.ts} +1 -1
  173. package/dist/{index-CO8uBlUh.d.cts → index-CJZKZoo4.d.cts} +148 -20
  174. package/dist/{index-wEn0eFe8.d.ts → index-CX2tFJL1.d.ts} +1 -1
  175. package/dist/{index-BaSM3aYt.d.ts → index-CcWOJ6F0.d.ts} +3 -3
  176. package/dist/{audit-ClmqGOCx.d.cts → index-CiaVoZGo.d.ts} +27 -21
  177. package/dist/{index-Dzk2hrlR.d.ts → index-Ct5CWc4E.d.ts} +1 -1
  178. package/dist/index-D38duMCv.d.cts +357 -0
  179. package/dist/{index-C8oil6M6.d.ts → index-D5XJ2tSx.d.ts} +30 -6
  180. package/dist/{index-DO_6JN9Z.d.cts → index-D80do5jX.d.cts} +1 -1
  181. package/dist/index-D9HKAH_-.d.cts +231 -0
  182. package/dist/index-DBe_8XW5.d.cts +143 -0
  183. package/dist/{memory-C6Z2tGpC.d.cts → index-DCeTyFlB.d.ts} +26 -26
  184. package/dist/index-DDy8eeXS.d.ts +321 -0
  185. package/dist/index-DJ5oNBc8.d.ts +143 -0
  186. package/dist/{index-CI3DprxP.d.cts → index-DP0_O3ls.d.cts} +30 -6
  187. package/dist/{demo-shell-Crid1WdR.d.cts → index-DX8xS-yB.d.cts} +14 -14
  188. package/dist/index-DiZejfCI.d.cts +2057 -0
  189. package/dist/index-DknyJ2Fu.d.cts +163 -0
  190. package/dist/index-DoWMs-Kk.d.cts +135 -0
  191. package/dist/{messaging-XDoYablx.d.ts → index-DuB5aO4-.d.ts} +31 -93
  192. package/dist/index-DwjJGKxV.d.ts +357 -0
  193. package/dist/{index-B6EhDnjH.d.cts → index-H_oxVec5.d.cts} +1 -1
  194. package/dist/{index-3lsddbbS.d.ts → index-IMAHq-ia.d.ts} +1 -1
  195. package/dist/{index-B1tloyhO.d.cts → index-U1nir7MX.d.cts} +1 -1
  196. package/dist/index-Vg7tORgk.d.ts +86 -0
  197. package/dist/index-dig-r2tQ.d.cts +873 -0
  198. package/dist/{index-CxFrXH4m.d.ts → index-gsT79Xu9.d.ts} +1 -1
  199. package/dist/{index-D8wS_PeY.d.cts → index-i99Ka8s7.d.cts} +9 -9
  200. package/dist/index-iKkyJosF.d.cts +105 -0
  201. package/dist/{index-Xi3u0HCQ.d.cts → index-jleeotBT.d.cts} +1 -1
  202. package/dist/{index-DVGiGFGT.d.cts → index-kykKWwV-.d.cts} +3 -3
  203. package/dist/index-vgcLF5TH.d.cts +192 -0
  204. package/dist/{index-DYme44FM.d.cts → index-y1RllPn4.d.cts} +1 -1
  205. package/dist/index.cjs +151 -24142
  206. package/dist/index.d.cts +69 -2099
  207. package/dist/index.d.ts +69 -2099
  208. package/dist/index.js +1 -3868
  209. package/dist/{meta-CbznRPYJ.d.ts → meta-CX7YsOzp.d.cts} +5 -5
  210. package/dist/{meta-BxCA7rcr.d.cts → meta-CckhhFRd.d.ts} +5 -5
  211. package/dist/{node-BmerH3kS.d.cts → node-Dd6wHSib.d.cts} +71 -11
  212. package/dist/{node-BmerH3kS.d.ts → node-Dd6wHSib.d.ts} +71 -11
  213. package/dist/{observable-BgGUwcqp.d.ts → observable-BZJgo616.d.ts} +1 -1
  214. package/dist/{observable-DJt_AxzQ.d.cts → observable-kwzpLvbi.d.cts} +1 -1
  215. package/dist/patterns/ai/browser.cjs +25 -0
  216. package/dist/patterns/ai/browser.d.cts +127 -0
  217. package/dist/patterns/ai/browser.d.ts +127 -0
  218. package/dist/patterns/ai/browser.js +3 -0
  219. package/dist/patterns/ai/index.cjs +92 -0
  220. package/dist/patterns/ai/index.d.cts +17 -0
  221. package/dist/patterns/ai/index.d.ts +17 -0
  222. package/dist/patterns/ai/index.js +1 -0
  223. package/dist/patterns/ai/node.cjs +2 -0
  224. package/dist/patterns/ai/node.d.cts +58 -0
  225. package/dist/patterns/ai/node.d.ts +58 -0
  226. package/dist/patterns/ai/node.js +1 -0
  227. package/dist/patterns/audit/index.cjs +7 -0
  228. package/dist/patterns/audit/index.d.cts +6 -0
  229. package/dist/patterns/audit/index.d.ts +6 -0
  230. package/dist/patterns/audit/index.js +1 -0
  231. package/dist/patterns/cqrs/index.cjs +7 -0
  232. package/dist/patterns/cqrs/index.d.cts +5 -0
  233. package/dist/patterns/cqrs/index.d.ts +5 -0
  234. package/dist/patterns/cqrs/index.js +1 -0
  235. package/dist/patterns/demo-shell/index.cjs +8 -0
  236. package/dist/patterns/demo-shell/index.d.cts +6 -0
  237. package/dist/patterns/demo-shell/index.d.ts +6 -0
  238. package/dist/patterns/demo-shell/index.js +1 -0
  239. package/dist/patterns/domain-templates/index.cjs +7 -0
  240. package/dist/patterns/domain-templates/index.d.cts +5 -0
  241. package/dist/patterns/domain-templates/index.d.ts +5 -0
  242. package/dist/patterns/domain-templates/index.js +1 -0
  243. package/dist/patterns/graphspec/index.cjs +84 -0
  244. package/dist/patterns/graphspec/index.d.cts +7 -0
  245. package/dist/patterns/graphspec/index.d.ts +7 -0
  246. package/dist/patterns/graphspec/index.js +1 -0
  247. package/dist/patterns/guarded-execution/index.cjs +7 -0
  248. package/dist/patterns/guarded-execution/index.d.cts +7 -0
  249. package/dist/patterns/guarded-execution/index.d.ts +7 -0
  250. package/dist/patterns/guarded-execution/index.js +1 -0
  251. package/dist/patterns/harness/index.cjs +49 -0
  252. package/dist/patterns/harness/index.d.cts +11 -0
  253. package/dist/patterns/harness/index.d.ts +11 -0
  254. package/dist/patterns/harness/index.js +1 -0
  255. package/dist/patterns/job-queue/index.cjs +7 -0
  256. package/dist/patterns/job-queue/index.d.cts +5 -0
  257. package/dist/patterns/job-queue/index.d.ts +5 -0
  258. package/dist/patterns/job-queue/index.js +1 -0
  259. package/dist/patterns/lens/index.cjs +7 -0
  260. package/dist/patterns/lens/index.d.cts +7 -0
  261. package/dist/patterns/lens/index.d.ts +7 -0
  262. package/dist/patterns/lens/index.js +1 -0
  263. package/dist/patterns/memory/index.cjs +7 -0
  264. package/dist/patterns/memory/index.d.cts +5 -0
  265. package/dist/patterns/memory/index.d.ts +5 -0
  266. package/dist/patterns/memory/index.js +1 -0
  267. package/dist/patterns/messaging/index.cjs +7 -0
  268. package/dist/patterns/messaging/index.d.cts +5 -0
  269. package/dist/patterns/messaging/index.d.ts +5 -0
  270. package/dist/patterns/messaging/index.js +1 -0
  271. package/dist/patterns/orchestration/index.cjs +7 -0
  272. package/dist/patterns/orchestration/index.d.cts +6 -0
  273. package/dist/patterns/orchestration/index.d.ts +6 -0
  274. package/dist/patterns/orchestration/index.js +1 -0
  275. package/dist/patterns/reactive-layout/index.cjs +8 -6444
  276. package/dist/patterns/reactive-layout/index.d.cts +6 -6
  277. package/dist/patterns/reactive-layout/index.d.ts +6 -6
  278. package/dist/patterns/reactive-layout/index.js +1 -56
  279. package/dist/patterns/reduction/index.cjs +7 -0
  280. package/dist/patterns/reduction/index.d.cts +5 -0
  281. package/dist/patterns/reduction/index.d.ts +5 -0
  282. package/dist/patterns/reduction/index.js +1 -0
  283. package/dist/patterns/refine-loop/index.cjs +9 -0
  284. package/dist/patterns/refine-loop/index.d.cts +7 -0
  285. package/dist/patterns/refine-loop/index.d.ts +7 -0
  286. package/dist/patterns/refine-loop/index.js +1 -0
  287. package/dist/patterns/resilient-pipeline/index.cjs +1 -0
  288. package/dist/patterns/resilient-pipeline/index.d.cts +7 -0
  289. package/dist/patterns/resilient-pipeline/index.d.ts +7 -0
  290. package/dist/patterns/resilient-pipeline/index.js +1 -0
  291. package/dist/patterns/surface/index.cjs +15 -0
  292. package/dist/patterns/surface/index.d.cts +8 -0
  293. package/dist/patterns/surface/index.d.ts +8 -0
  294. package/dist/patterns/surface/index.js +1 -0
  295. package/dist/{reactive-layout-u5Ulnqag.d.ts → reactive-layout-BkBwVvwm.d.ts} +2 -2
  296. package/dist/{reactive-layout-MQP--J3F.d.cts → reactive-layout-PiFwVaWS.d.cts} +2 -2
  297. package/dist/reactive-log-1QTyx10a.d.ts +190 -0
  298. package/dist/reactive-log-BiVoSxke.d.cts +190 -0
  299. package/dist/{composite-aUCvjZVR.d.ts → reactive-map-CwO_COHy.d.cts} +2 -67
  300. package/dist/{composite-C7PcQvcs.d.cts → reactive-map-FeuTVAJb.d.ts} +2 -67
  301. package/dist/resilience-CBfYJW5C.d.ts +493 -0
  302. package/dist/resilience-XRUF267O.js +1 -0
  303. package/dist/resilience-uBz4yvYB.d.cts +493 -0
  304. package/dist/{sugar-CCOxXK1e.d.ts → sugar-CY-MCfZ9.d.ts} +17 -15
  305. package/dist/{sugar-D02n5JjF.d.cts → sugar-DHttV0LX.d.cts} +17 -15
  306. package/dist/topology-tree-CVjt2gp7.d.cts +25 -0
  307. package/dist/topology-tree-one6oSKY.d.ts +25 -0
  308. package/dist/types-O3GzJY2U.d.cts +401 -0
  309. package/dist/types-u64Ose53.d.ts +401 -0
  310. package/package.json +252 -22
  311. package/dist/ai-CaR_912Q.d.cts +0 -1033
  312. package/dist/ai-WlRltJV7.d.ts +0 -1033
  313. package/dist/chunk-3ZWCKRHX.js +0 -117
  314. package/dist/chunk-3ZWCKRHX.js.map +0 -1
  315. package/dist/chunk-7TAQJHQV.js +0 -103
  316. package/dist/chunk-7TAQJHQV.js.map +0 -1
  317. package/dist/chunk-APFNLIRG.js +0 -62
  318. package/dist/chunk-APFNLIRG.js.map +0 -1
  319. package/dist/chunk-AT5LKYNL.js +0 -395
  320. package/dist/chunk-AT5LKYNL.js.map +0 -1
  321. package/dist/chunk-BQ6RQQFF.js +0 -5087
  322. package/dist/chunk-BQ6RQQFF.js.map +0 -1
  323. package/dist/chunk-BVZYTZ5H.js +0 -599
  324. package/dist/chunk-BVZYTZ5H.js.map +0 -1
  325. package/dist/chunk-DST5DKZS.js +0 -1371
  326. package/dist/chunk-DST5DKZS.js.map +0 -1
  327. package/dist/chunk-GTE6PWRZ.js +0 -866
  328. package/dist/chunk-GTE6PWRZ.js.map +0 -1
  329. package/dist/chunk-HXZEYDUR.js +0 -94
  330. package/dist/chunk-HXZEYDUR.js.map +0 -1
  331. package/dist/chunk-J22W6HV3.js +0 -107
  332. package/dist/chunk-J22W6HV3.js.map +0 -1
  333. package/dist/chunk-J2VBW3DZ.js +0 -302
  334. package/dist/chunk-J2VBW3DZ.js.map +0 -1
  335. package/dist/chunk-JSCT3CR4.js +0 -38
  336. package/dist/chunk-JSCT3CR4.js.map +0 -1
  337. package/dist/chunk-JWBCY4NC.js +0 -330
  338. package/dist/chunk-JWBCY4NC.js.map +0 -1
  339. package/dist/chunk-K2AUJHVP.js +0 -2251
  340. package/dist/chunk-K2AUJHVP.js.map +0 -1
  341. package/dist/chunk-MJ2NKQQL.js +0 -119
  342. package/dist/chunk-MJ2NKQQL.js.map +0 -1
  343. package/dist/chunk-N6UR7YVY.js +0 -198
  344. package/dist/chunk-N6UR7YVY.js.map +0 -1
  345. package/dist/chunk-NC6S43JJ.js +0 -456
  346. package/dist/chunk-NC6S43JJ.js.map +0 -1
  347. package/dist/chunk-OFVJBJXR.js +0 -98
  348. package/dist/chunk-OFVJBJXR.js.map +0 -1
  349. package/dist/chunk-OHISZPOJ.js +0 -97
  350. package/dist/chunk-OHISZPOJ.js.map +0 -1
  351. package/dist/chunk-OU5CQKNW.js +0 -102
  352. package/dist/chunk-OU5CQKNW.js.map +0 -1
  353. package/dist/chunk-PF7GRZMW.js +0 -2712
  354. package/dist/chunk-PF7GRZMW.js.map +0 -1
  355. package/dist/chunk-PHOUUNK7.js +0 -2291
  356. package/dist/chunk-PHOUUNK7.js.map +0 -1
  357. package/dist/chunk-RNHBMHKA.js +0 -1665
  358. package/dist/chunk-RNHBMHKA.js.map +0 -1
  359. package/dist/chunk-SX52TAR4.js +0 -110
  360. package/dist/chunk-SX52TAR4.js.map +0 -1
  361. package/dist/chunk-VYPWMZ6H.js +0 -98
  362. package/dist/chunk-VYPWMZ6H.js.map +0 -1
  363. package/dist/chunk-WBZOVTYK.js +0 -171
  364. package/dist/chunk-WBZOVTYK.js.map +0 -1
  365. package/dist/chunk-WKNUIZOY.js +0 -354
  366. package/dist/chunk-WKNUIZOY.js.map +0 -1
  367. package/dist/chunk-X3VMZYBT.js +0 -713
  368. package/dist/chunk-X3VMZYBT.js.map +0 -1
  369. package/dist/chunk-X5R3GL6H.js +0 -525
  370. package/dist/chunk-X5R3GL6H.js.map +0 -1
  371. package/dist/chunk-XGPU467M.js +0 -136
  372. package/dist/chunk-XGPU467M.js.map +0 -1
  373. package/dist/compat/index.cjs.map +0 -1
  374. package/dist/compat/index.js.map +0 -1
  375. package/dist/compat/jotai/index.cjs.map +0 -1
  376. package/dist/compat/jotai/index.js.map +0 -1
  377. package/dist/compat/nanostores/index.cjs.map +0 -1
  378. package/dist/compat/nanostores/index.js.map +0 -1
  379. package/dist/compat/nestjs/index.cjs.map +0 -1
  380. package/dist/compat/nestjs/index.js.map +0 -1
  381. package/dist/compat/react/index.cjs.map +0 -1
  382. package/dist/compat/react/index.js.map +0 -1
  383. package/dist/compat/solid/index.cjs.map +0 -1
  384. package/dist/compat/solid/index.js.map +0 -1
  385. package/dist/compat/svelte/index.cjs.map +0 -1
  386. package/dist/compat/svelte/index.js.map +0 -1
  387. package/dist/compat/vue/index.cjs.map +0 -1
  388. package/dist/compat/vue/index.js.map +0 -1
  389. package/dist/compat/zustand/index.cjs.map +0 -1
  390. package/dist/compat/zustand/index.js.map +0 -1
  391. package/dist/core/index.cjs.map +0 -1
  392. package/dist/core/index.js.map +0 -1
  393. package/dist/extra/index.cjs.map +0 -1
  394. package/dist/extra/index.js.map +0 -1
  395. package/dist/extra/sources.cjs.map +0 -1
  396. package/dist/extra/sources.js.map +0 -1
  397. package/dist/graph/index.cjs.map +0 -1
  398. package/dist/graph/index.js.map +0 -1
  399. package/dist/index.cjs.map +0 -1
  400. package/dist/index.js.map +0 -1
  401. package/dist/patterns/ai.cjs +0 -7930
  402. package/dist/patterns/ai.cjs.map +0 -1
  403. package/dist/patterns/ai.d.cts +0 -10
  404. package/dist/patterns/ai.d.ts +0 -10
  405. package/dist/patterns/ai.js +0 -71
  406. package/dist/patterns/ai.js.map +0 -1
  407. package/dist/patterns/audit.cjs +0 -5805
  408. package/dist/patterns/audit.cjs.map +0 -1
  409. package/dist/patterns/audit.d.cts +0 -6
  410. package/dist/patterns/audit.d.ts +0 -6
  411. package/dist/patterns/audit.js +0 -29
  412. package/dist/patterns/audit.js.map +0 -1
  413. package/dist/patterns/demo-shell.cjs +0 -5604
  414. package/dist/patterns/demo-shell.cjs.map +0 -1
  415. package/dist/patterns/demo-shell.d.cts +0 -6
  416. package/dist/patterns/demo-shell.d.ts +0 -6
  417. package/dist/patterns/demo-shell.js +0 -15
  418. package/dist/patterns/demo-shell.js.map +0 -1
  419. package/dist/patterns/memory.cjs +0 -5283
  420. package/dist/patterns/memory.cjs.map +0 -1
  421. package/dist/patterns/memory.d.cts +0 -5
  422. package/dist/patterns/memory.d.ts +0 -5
  423. package/dist/patterns/memory.js +0 -20
  424. package/dist/patterns/memory.js.map +0 -1
  425. package/dist/patterns/reactive-layout/index.cjs.map +0 -1
  426. package/dist/patterns/reactive-layout/index.js.map +0 -1
  427. package/dist/storage-CMjUUuxn.d.ts +0 -190
  428. package/dist/storage-DdWlZo6U.d.cts +0 -190
@@ -1,866 +0,0 @@
1
- import {
2
- emitToMeta
3
- } from "./chunk-JSCT3CR4.js";
4
- import {
5
- Graph
6
- } from "./chunk-PF7GRZMW.js";
7
- import {
8
- derived,
9
- monotonicNs,
10
- node,
11
- state
12
- } from "./chunk-PHOUUNK7.js";
13
-
14
- // src/patterns/reactive-layout/reactive-layout.ts
15
- function isCJK(s) {
16
- for (const ch of s) {
17
- const c = ch.codePointAt(0);
18
- if (c >= 19968 && c <= 40959 || // CJK Unified Ideographs
19
- c >= 13312 && c <= 19903 || // CJK Extension A
20
- c >= 12288 && c <= 12351 || // CJK Symbols and Punctuation
21
- c >= 12352 && c <= 12447 || // Hiragana
22
- c >= 12448 && c <= 12543 || // Katakana
23
- c >= 44032 && c <= 55215 || // Hangul
24
- c >= 65280 && c <= 65519) {
25
- return true;
26
- }
27
- }
28
- return false;
29
- }
30
- var kinsokuStart = /* @__PURE__ */ new Set([
31
- "\uFF0C",
32
- "\uFF0E",
33
- "\uFF01",
34
- "\uFF1A",
35
- "\uFF1B",
36
- "\uFF1F",
37
- "\u3001",
38
- "\u3002",
39
- "\u30FB",
40
- "\uFF09",
41
- "\u3015",
42
- "\u3009",
43
- "\u300B",
44
- "\u300D",
45
- "\u300F",
46
- "\u3011"
47
- ]);
48
- var leftStickyPunctuation = /* @__PURE__ */ new Set([
49
- ".",
50
- ",",
51
- "!",
52
- "?",
53
- ":",
54
- ";",
55
- ")",
56
- "]",
57
- "}",
58
- "%",
59
- '"',
60
- "\u201D",
61
- "\u2019",
62
- "\xBB",
63
- "\u203A",
64
- "\u2026"
65
- ]);
66
- function normalizeWhitespace(text) {
67
- return text.replace(/[\t\n\r\f ]+/g, " ").replace(/^ | $/g, "");
68
- }
69
- function segmentText(normalized) {
70
- const wordSegmenter = new Intl.Segmenter(void 0, { granularity: "word" });
71
- const pieces = [];
72
- for (const s of wordSegmenter.segment(normalized)) {
73
- const text = s.segment;
74
- const isWordLike = s.isWordLike ?? false;
75
- const texts = [];
76
- const wordLikes = [];
77
- const kinds = [];
78
- let currentText = "";
79
- let currentKind = null;
80
- for (const ch of text) {
81
- let kind;
82
- if (ch === " ") kind = "space";
83
- else if (ch === "\u200B") kind = "zero-width-break";
84
- else if (ch === "\xAD") kind = "soft-hyphen";
85
- else if (ch === "\n") kind = "hard-break";
86
- else kind = "text";
87
- if (currentKind !== null && kind === currentKind) {
88
- currentText += ch;
89
- } else {
90
- if (currentKind !== null) {
91
- texts.push(currentText);
92
- wordLikes.push(currentKind === "text" && isWordLike);
93
- kinds.push(currentKind);
94
- }
95
- currentText = ch;
96
- currentKind = kind;
97
- }
98
- }
99
- if (currentKind !== null) {
100
- texts.push(currentText);
101
- wordLikes.push(currentKind === "text" && isWordLike);
102
- kinds.push(currentKind);
103
- }
104
- pieces.push({ texts, isWordLike: wordLikes, kinds });
105
- }
106
- return pieces;
107
- }
108
- function analyzeAndMeasure(text, font, adapter, cache, stats) {
109
- const normalized = normalizeWhitespace(text);
110
- if (normalized.length === 0) return [];
111
- const pieces = segmentText(normalized);
112
- const graphemeSegmenter2 = new Intl.Segmenter(void 0, {
113
- granularity: "grapheme"
114
- });
115
- const rawTexts = [];
116
- const rawKinds = [];
117
- const rawWordLike = [];
118
- for (const piece of pieces) {
119
- for (let i = 0; i < piece.texts.length; i++) {
120
- rawTexts.push(piece.texts[i]);
121
- rawKinds.push(piece.kinds[i]);
122
- rawWordLike.push(piece.isWordLike[i]);
123
- }
124
- }
125
- const mergedTexts = [];
126
- const mergedKinds = [];
127
- const mergedWordLike = [];
128
- for (let i = 0; i < rawTexts.length; i++) {
129
- const t = rawTexts[i];
130
- const k = rawKinds[i];
131
- const wl = rawWordLike[i];
132
- if (k === "text" && !wl && mergedTexts.length > 0 && mergedKinds[mergedKinds.length - 1] === "text") {
133
- const isSticky = t.length === 1 && (leftStickyPunctuation.has(t) || kinsokuStart.has(t));
134
- if (isSticky) {
135
- mergedTexts[mergedTexts.length - 1] += t;
136
- continue;
137
- }
138
- }
139
- if (t === "-" && mergedTexts.length > 0 && mergedKinds[mergedKinds.length - 1] === "text" && mergedWordLike[mergedWordLike.length - 1]) {
140
- mergedTexts[mergedTexts.length - 1] += t;
141
- continue;
142
- }
143
- mergedTexts.push(t);
144
- mergedKinds.push(k);
145
- mergedWordLike.push(wl);
146
- }
147
- let fontCache = cache.get(font);
148
- if (!fontCache) {
149
- fontCache = /* @__PURE__ */ new Map();
150
- cache.set(font, fontCache);
151
- }
152
- function measureCached(seg) {
153
- let w = fontCache.get(seg);
154
- if (w === void 0) {
155
- if (stats) stats.misses += 1;
156
- const raw = adapter.measureSegment(seg, font).width;
157
- w = Number.isFinite(raw) && raw >= 0 ? raw : 0;
158
- fontCache.set(seg, w);
159
- } else if (stats) {
160
- stats.hits += 1;
161
- }
162
- return w;
163
- }
164
- const segments = [];
165
- for (let i = 0; i < mergedTexts.length; i++) {
166
- const t = mergedTexts[i];
167
- const k = mergedKinds[i];
168
- if (k !== "text") {
169
- segments.push({
170
- text: t,
171
- width: k === "space" ? measureCached(" ") * t.length : 0,
172
- kind: k,
173
- graphemeWidths: null
174
- });
175
- continue;
176
- }
177
- if (isCJK(t)) {
178
- let unitText = "";
179
- for (const gs of graphemeSegmenter2.segment(t)) {
180
- const grapheme = gs.segment;
181
- if (unitText.length > 0 && kinsokuStart.has(grapheme)) {
182
- unitText += grapheme;
183
- continue;
184
- }
185
- if (unitText.length > 0) {
186
- const w2 = measureCached(unitText);
187
- segments.push({
188
- text: unitText,
189
- width: w2,
190
- kind: "text",
191
- graphemeWidths: null
192
- });
193
- }
194
- unitText = grapheme;
195
- }
196
- if (unitText.length > 0) {
197
- const w2 = measureCached(unitText);
198
- segments.push({
199
- text: unitText,
200
- width: w2,
201
- kind: "text",
202
- graphemeWidths: null
203
- });
204
- }
205
- continue;
206
- }
207
- const w = measureCached(t);
208
- let graphemeWidths = null;
209
- if (mergedWordLike[i] && t.length > 1) {
210
- const gWidths = [];
211
- for (const gs of graphemeSegmenter2.segment(t)) {
212
- gWidths.push(measureCached(gs.segment));
213
- }
214
- if (gWidths.length > 1) {
215
- graphemeWidths = gWidths;
216
- }
217
- }
218
- segments.push({ text: t, width: w, kind: "text", graphemeWidths });
219
- }
220
- return segments;
221
- }
222
- function computeLineBreaks(segments, maxWidth, adapter, font, cache) {
223
- if (segments.length === 0) {
224
- return { lines: [], lineCount: 0 };
225
- }
226
- const lines = [];
227
- let lineW = 0;
228
- let hasContent = false;
229
- let lineStartSeg = 0;
230
- let lineStartGrapheme = 0;
231
- let lineEndSeg = 0;
232
- let lineEndGrapheme = 0;
233
- let pendingBreakSeg = -1;
234
- let pendingBreakWidth = 0;
235
- let fontCache = cache.get(font);
236
- if (!fontCache) {
237
- fontCache = /* @__PURE__ */ new Map();
238
- cache.set(font, fontCache);
239
- }
240
- let hyphenWidth = fontCache.get("-");
241
- if (hyphenWidth === void 0) {
242
- hyphenWidth = adapter.measureSegment("-", font).width;
243
- fontCache.set("-", hyphenWidth);
244
- }
245
- function flushLine(endSeg = lineEndSeg, endGrapheme = lineEndGrapheme, width = lineW) {
246
- let text = "";
247
- for (let i = lineStartSeg; i < endSeg; i++) {
248
- const seg = segments[i];
249
- if (seg.kind === "soft-hyphen" || seg.kind === "hard-break") continue;
250
- if (i === lineStartSeg && lineStartGrapheme > 0 && seg.graphemeWidths) {
251
- const graphemeSegmenter2 = new Intl.Segmenter(void 0, {
252
- granularity: "grapheme"
253
- });
254
- const graphemes = [...graphemeSegmenter2.segment(seg.text)].map((g) => g.segment);
255
- text += graphemes.slice(lineStartGrapheme).join("");
256
- } else {
257
- text += seg.text;
258
- }
259
- }
260
- if (endGrapheme > 0 && endSeg < segments.length) {
261
- const seg = segments[endSeg];
262
- const graphemeSegmenter2 = new Intl.Segmenter(void 0, {
263
- granularity: "grapheme"
264
- });
265
- const graphemes = [...graphemeSegmenter2.segment(seg.text)].map((g) => g.segment);
266
- const startG = lineStartSeg === endSeg ? lineStartGrapheme : 0;
267
- text += graphemes.slice(startG, endGrapheme).join("");
268
- }
269
- if (endSeg > 0 && segments[endSeg - 1]?.kind === "soft-hyphen" && !(lineStartSeg === endSeg && lineStartGrapheme > 0)) {
270
- text += "-";
271
- }
272
- lines.push({
273
- text,
274
- width,
275
- startSegment: lineStartSeg,
276
- startGrapheme: lineStartGrapheme,
277
- endSegment: endSeg,
278
- endGrapheme
279
- });
280
- lineW = 0;
281
- hasContent = false;
282
- pendingBreakSeg = -1;
283
- pendingBreakWidth = 0;
284
- }
285
- function canBreakAfter2(kind) {
286
- return kind === "space" || kind === "zero-width-break" || kind === "soft-hyphen";
287
- }
288
- function startLine(segIdx, graphemeIdx, width) {
289
- hasContent = true;
290
- lineStartSeg = segIdx;
291
- lineStartGrapheme = graphemeIdx;
292
- lineEndSeg = segIdx + 1;
293
- lineEndGrapheme = 0;
294
- lineW = width;
295
- }
296
- function startLineAtGrapheme(segIdx, graphemeIdx, width) {
297
- hasContent = true;
298
- lineStartSeg = segIdx;
299
- lineStartGrapheme = graphemeIdx;
300
- lineEndSeg = segIdx;
301
- lineEndGrapheme = graphemeIdx + 1;
302
- lineW = width;
303
- }
304
- for (let i = 0; i < segments.length; i++) {
305
- const seg = segments[i];
306
- if (seg.kind === "hard-break") {
307
- if (hasContent) {
308
- flushLine();
309
- } else {
310
- lines.push({
311
- text: "",
312
- width: 0,
313
- startSegment: i,
314
- startGrapheme: 0,
315
- endSegment: i,
316
- endGrapheme: 0
317
- });
318
- }
319
- lineStartSeg = i + 1;
320
- lineStartGrapheme = 0;
321
- continue;
322
- }
323
- const w = seg.width;
324
- if (!hasContent) {
325
- if (w > maxWidth && seg.graphemeWidths) {
326
- appendBreakableSegment(i, 0, seg.graphemeWidths);
327
- } else {
328
- startLine(i, 0, w);
329
- }
330
- if (canBreakAfter2(seg.kind)) {
331
- pendingBreakSeg = i + 1;
332
- pendingBreakWidth = seg.kind === "space" ? lineW - w : lineW;
333
- }
334
- continue;
335
- }
336
- const newW = lineW + w;
337
- if (newW > maxWidth + 5e-3) {
338
- if (canBreakAfter2(seg.kind)) {
339
- lineW += w;
340
- lineEndSeg = i + 1;
341
- lineEndGrapheme = 0;
342
- flushLine(i + 1, 0, seg.kind === "space" ? lineW - w : lineW);
343
- continue;
344
- }
345
- if (pendingBreakSeg >= 0) {
346
- flushLine(pendingBreakSeg, 0, pendingBreakWidth);
347
- i--;
348
- continue;
349
- }
350
- if (w > maxWidth && seg.graphemeWidths) {
351
- flushLine();
352
- appendBreakableSegment(i, 0, seg.graphemeWidths);
353
- continue;
354
- }
355
- flushLine();
356
- i--;
357
- continue;
358
- }
359
- lineW = newW;
360
- lineEndSeg = i + 1;
361
- lineEndGrapheme = 0;
362
- if (canBreakAfter2(seg.kind)) {
363
- pendingBreakSeg = i + 1;
364
- pendingBreakWidth = seg.kind === "space" ? lineW - w : lineW;
365
- }
366
- }
367
- if (hasContent) {
368
- flushLine();
369
- }
370
- return { lines, lineCount: lines.length };
371
- function appendBreakableSegment(segIdx, startG, gWidths) {
372
- for (let g = startG; g < gWidths.length; g++) {
373
- const gw = gWidths[g];
374
- if (!hasContent) {
375
- startLineAtGrapheme(segIdx, g, gw);
376
- continue;
377
- }
378
- if (lineW + gw > maxWidth + 5e-3) {
379
- flushLine();
380
- startLineAtGrapheme(segIdx, g, gw);
381
- } else {
382
- lineW += gw;
383
- lineEndSeg = segIdx;
384
- lineEndGrapheme = g + 1;
385
- }
386
- }
387
- if (hasContent && lineEndSeg === segIdx && lineEndGrapheme === gWidths.length) {
388
- lineEndSeg = segIdx + 1;
389
- lineEndGrapheme = 0;
390
- }
391
- }
392
- }
393
- function canBreakAfter(kind) {
394
- return kind === "space" || kind === "zero-width-break" || kind === "soft-hyphen";
395
- }
396
- var _graphemeSegmenter = null;
397
- function graphemeSegmenter() {
398
- if (_graphemeSegmenter === null) {
399
- _graphemeSegmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
400
- }
401
- return _graphemeSegmenter;
402
- }
403
- function sliceSegmentText(seg, startG, endG) {
404
- if (startG === 0 && endG < 0) return seg.text;
405
- const graphemes = [...graphemeSegmenter().segment(seg.text)].map((g) => g.segment);
406
- const stop = endG < 0 ? graphemes.length : endG;
407
- return graphemes.slice(startG, stop).join("");
408
- }
409
- function buildLineText(segments, startSeg, startG, endSeg, endG, appendHyphen) {
410
- let text = "";
411
- for (let i = startSeg; i < endSeg; i++) {
412
- const seg = segments[i];
413
- if (seg.kind === "soft-hyphen" || seg.kind === "hard-break") continue;
414
- if (i === startSeg && startG > 0) {
415
- text += sliceSegmentText(seg, startG, -1);
416
- } else {
417
- text += seg.text;
418
- }
419
- }
420
- if (endG > 0 && endSeg < segments.length) {
421
- const seg = segments[endSeg];
422
- const from = startSeg === endSeg ? startG : 0;
423
- text += sliceSegmentText(seg, from, endG);
424
- }
425
- if (appendHyphen) text += "-";
426
- return text;
427
- }
428
- function resolveHyphenWidth(ctx) {
429
- if (!ctx || !ctx.adapter || !ctx.font) return 0;
430
- const cache = ctx.cache;
431
- if (cache) {
432
- let fc = cache.get(ctx.font);
433
- if (!fc) {
434
- fc = /* @__PURE__ */ new Map();
435
- cache.set(ctx.font, fc);
436
- }
437
- let hw = fc.get("-");
438
- if (hw === void 0) {
439
- hw = ctx.adapter.measureSegment("-", ctx.font).width;
440
- fc.set("-", hw);
441
- }
442
- return hw;
443
- }
444
- return ctx.adapter.measureSegment("-", ctx.font).width;
445
- }
446
- function layoutNextLine(segments, cursor, slotWidth, ctx) {
447
- let i = cursor.segmentIndex;
448
- const initialG = cursor.graphemeIndex;
449
- if (i >= segments.length) return null;
450
- if (initialG === 0) {
451
- while (i < segments.length) {
452
- const seg = segments[i];
453
- if (seg.kind === "hard-break") {
454
- return {
455
- text: "",
456
- width: 0,
457
- start: { segmentIndex: cursor.segmentIndex, graphemeIndex: 0 },
458
- end: { segmentIndex: i + 1, graphemeIndex: 0 }
459
- };
460
- }
461
- if (seg.kind === "space" || seg.kind === "zero-width-break" || seg.kind === "soft-hyphen") {
462
- i += 1;
463
- continue;
464
- }
465
- break;
466
- }
467
- if (i >= segments.length) return null;
468
- }
469
- const hyphenWidth = resolveHyphenWidth(ctx);
470
- const startSeg = i;
471
- const startG = i === cursor.segmentIndex ? initialG : 0;
472
- let lineW = 0;
473
- let lineEndSeg = startSeg;
474
- let lineEndG = 0;
475
- let hasContent = false;
476
- let pendingBreakSeg = -1;
477
- let pendingBreakG = 0;
478
- let pendingBreakWidth = 0;
479
- let pendingBreakSoftHyphen = false;
480
- const recordPending = (sIdx, gIdx, widthAtBreak, kind) => {
481
- pendingBreakSeg = sIdx;
482
- pendingBreakG = gIdx;
483
- pendingBreakWidth = widthAtBreak;
484
- pendingBreakSoftHyphen = kind === "soft-hyphen";
485
- };
486
- const consumeBreakable = (segIdx, gStart, gWidths) => {
487
- for (let g = gStart; g < gWidths.length; g++) {
488
- const gw = gWidths[g];
489
- if (!hasContent) {
490
- lineW = gw;
491
- lineEndSeg = segIdx;
492
- lineEndG = g + 1;
493
- hasContent = true;
494
- continue;
495
- }
496
- if (lineW + gw > slotWidth + 5e-3) {
497
- return true;
498
- }
499
- lineW += gw;
500
- lineEndSeg = segIdx;
501
- lineEndG = g + 1;
502
- }
503
- if (lineEndSeg === segIdx && lineEndG === gWidths.length) {
504
- lineEndSeg = segIdx + 1;
505
- lineEndG = 0;
506
- }
507
- return false;
508
- };
509
- if (startG > 0 && startSeg < segments.length) {
510
- const seg = segments[startSeg];
511
- if (seg.graphemeWidths) {
512
- const overflowed = consumeBreakable(startSeg, startG, seg.graphemeWidths);
513
- if (overflowed) {
514
- const text2 = buildLineText(segments, startSeg, startG, lineEndSeg, lineEndG, false);
515
- return {
516
- text: text2,
517
- width: lineW,
518
- start: { segmentIndex: startSeg, graphemeIndex: startG },
519
- end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
520
- };
521
- }
522
- i = lineEndSeg;
523
- } else {
524
- }
525
- }
526
- for (; i < segments.length; ) {
527
- const seg = segments[i];
528
- if (seg.kind === "hard-break") {
529
- if (hasContent) {
530
- const endsAtSoftHyphen2 = lineEndSeg > 0 && segments[lineEndSeg - 1]?.kind === "soft-hyphen";
531
- const text2 = buildLineText(
532
- segments,
533
- startSeg,
534
- startG,
535
- lineEndSeg,
536
- lineEndG,
537
- endsAtSoftHyphen2
538
- );
539
- return {
540
- text: text2,
541
- width: lineW + (endsAtSoftHyphen2 ? hyphenWidth : 0),
542
- start: { segmentIndex: startSeg, graphemeIndex: startG },
543
- end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
544
- };
545
- }
546
- return {
547
- text: "",
548
- width: 0,
549
- start: { segmentIndex: startSeg, graphemeIndex: startG },
550
- end: { segmentIndex: i + 1, graphemeIndex: 0 }
551
- };
552
- }
553
- const w = seg.width;
554
- if (!hasContent) {
555
- if (w > slotWidth && seg.graphemeWidths) {
556
- const overflowed = consumeBreakable(i, 0, seg.graphemeWidths);
557
- if (overflowed) {
558
- const text2 = buildLineText(segments, startSeg, startG, lineEndSeg, lineEndG, false);
559
- return {
560
- text: text2,
561
- width: lineW,
562
- start: { segmentIndex: startSeg, graphemeIndex: startG },
563
- end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
564
- };
565
- }
566
- i = lineEndSeg;
567
- continue;
568
- }
569
- lineW = w;
570
- lineEndSeg = i + 1;
571
- lineEndG = 0;
572
- hasContent = true;
573
- if (canBreakAfter(seg.kind)) {
574
- recordPending(i + 1, 0, seg.kind === "space" ? lineW - w : lineW, seg.kind);
575
- }
576
- i += 1;
577
- continue;
578
- }
579
- const newW = lineW + w;
580
- if (newW > slotWidth + 5e-3) {
581
- if (canBreakAfter(seg.kind)) {
582
- lineEndSeg = i + 1;
583
- lineEndG = 0;
584
- const endsAtSoftHyphen2 = seg.kind === "soft-hyphen";
585
- const finalWidth = seg.kind === "space" ? lineW : lineW + (endsAtSoftHyphen2 ? hyphenWidth : 0);
586
- const text3 = buildLineText(
587
- segments,
588
- startSeg,
589
- startG,
590
- lineEndSeg,
591
- lineEndG,
592
- endsAtSoftHyphen2
593
- );
594
- return {
595
- text: text3,
596
- width: finalWidth,
597
- start: { segmentIndex: startSeg, graphemeIndex: startG },
598
- end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
599
- };
600
- }
601
- if (pendingBreakSeg >= 0) {
602
- const text3 = buildLineText(
603
- segments,
604
- startSeg,
605
- startG,
606
- pendingBreakSeg,
607
- pendingBreakG,
608
- pendingBreakSoftHyphen
609
- );
610
- return {
611
- text: text3,
612
- width: pendingBreakWidth + (pendingBreakSoftHyphen ? hyphenWidth : 0),
613
- start: { segmentIndex: startSeg, graphemeIndex: startG },
614
- end: { segmentIndex: pendingBreakSeg, graphemeIndex: pendingBreakG }
615
- };
616
- }
617
- if (w > slotWidth && seg.graphemeWidths) {
618
- const text3 = buildLineText(segments, startSeg, startG, lineEndSeg, lineEndG, false);
619
- return {
620
- text: text3,
621
- width: lineW,
622
- start: { segmentIndex: startSeg, graphemeIndex: startG },
623
- end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
624
- };
625
- }
626
- const text2 = buildLineText(segments, startSeg, startG, lineEndSeg, lineEndG, false);
627
- return {
628
- text: text2,
629
- width: lineW,
630
- start: { segmentIndex: startSeg, graphemeIndex: startG },
631
- end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
632
- };
633
- }
634
- lineW = newW;
635
- lineEndSeg = i + 1;
636
- lineEndG = 0;
637
- if (canBreakAfter(seg.kind)) {
638
- recordPending(i + 1, 0, seg.kind === "space" ? lineW - w : lineW, seg.kind);
639
- }
640
- i += 1;
641
- }
642
- if (!hasContent) return null;
643
- const endsAtSoftHyphen = lineEndSeg > 0 && segments[lineEndSeg - 1]?.kind === "soft-hyphen";
644
- const text = buildLineText(segments, startSeg, startG, lineEndSeg, lineEndG, endsAtSoftHyphen);
645
- return {
646
- text,
647
- width: lineW + (endsAtSoftHyphen ? hyphenWidth : 0),
648
- start: { segmentIndex: startSeg, graphemeIndex: startG },
649
- end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
650
- };
651
- }
652
- function carveTextLineSlots(base, blocked, minSlotWidth = 0) {
653
- let slots = [base];
654
- for (let bi = 0; bi < blocked.length; bi++) {
655
- const block = blocked[bi];
656
- const next = [];
657
- for (let si = 0; si < slots.length; si++) {
658
- const slot = slots[si];
659
- if (block.right <= slot.left || block.left >= slot.right) {
660
- next.push(slot);
661
- continue;
662
- }
663
- if (block.left > slot.left) next.push({ left: slot.left, right: block.left });
664
- if (block.right < slot.right) next.push({ left: block.right, right: slot.right });
665
- }
666
- slots = next;
667
- }
668
- if (minSlotWidth > 0) {
669
- return slots.filter((s) => s.right - s.left >= minSlotWidth);
670
- }
671
- return slots;
672
- }
673
- function computeCharPositions(lineBreaks, segments, lineHeight) {
674
- const positions = [];
675
- const graphemeSegmenter2 = new Intl.Segmenter(void 0, {
676
- granularity: "grapheme"
677
- });
678
- for (let lineIdx = 0; lineIdx < lineBreaks.lines.length; lineIdx++) {
679
- const line = lineBreaks.lines[lineIdx];
680
- const y = lineIdx * lineHeight;
681
- let x = 0;
682
- for (let si = line.startSegment; si < segments.length; si++) {
683
- const seg = segments[si];
684
- if (seg.kind === "soft-hyphen" || seg.kind === "hard-break") {
685
- if (si >= line.endSegment && line.endGrapheme === 0) break;
686
- continue;
687
- }
688
- const graphemes = [...graphemeSegmenter2.segment(seg.text)].map((g) => g.segment);
689
- if (graphemes.length === 0) continue;
690
- const startG = si === line.startSegment ? line.startGrapheme : 0;
691
- let endG;
692
- if (si < line.endSegment) {
693
- endG = graphemes.length;
694
- } else if (si === line.endSegment && line.endGrapheme > 0) {
695
- endG = line.endGrapheme;
696
- } else {
697
- break;
698
- }
699
- for (let g = startG; g < endG; g++) {
700
- const gWidth = seg.graphemeWidths ? seg.graphemeWidths[g] : seg.width / graphemes.length;
701
- positions.push({ x, y, width: gWidth, height: lineHeight, line: lineIdx });
702
- x += gWidth;
703
- }
704
- }
705
- }
706
- return positions;
707
- }
708
- function reactiveLayout(opts) {
709
- const { adapter, name = "reactive-layout" } = opts;
710
- const g = new Graph(name);
711
- const measureCache = /* @__PURE__ */ new Map();
712
- const textNode = state(opts.text ?? "", { name: "text" });
713
- const fontNode = state(opts.font ?? "16px sans-serif", {
714
- name: "font"
715
- });
716
- const lineHeightNode = state(opts.lineHeight ?? 20, {
717
- name: "line-height"
718
- });
719
- const maxWidthNode = state(Math.max(0, opts.maxWidth ?? 800), {
720
- name: "max-width"
721
- });
722
- function graphemeWidthsEqual(a, b) {
723
- if (a === null || b === null) return a === b;
724
- if (a.length !== b.length) return false;
725
- for (let i = 0; i < a.length; i++) {
726
- if (a[i] !== b[i]) return false;
727
- }
728
- return true;
729
- }
730
- const segmentsNode = node(
731
- [textNode, fontNode],
732
- (data, actions, ctx) => {
733
- const b0 = data[0];
734
- const textVal = b0 != null && b0.length > 0 ? b0.at(-1) : ctx.prevData[0];
735
- const b1 = data[1];
736
- const fontVal = b1 != null && b1.length > 0 ? b1.at(-1) : ctx.prevData[1];
737
- const t0 = monotonicNs();
738
- const measureStats = { hits: 0, misses: 0 };
739
- const result = analyzeAndMeasure(
740
- textVal,
741
- fontVal,
742
- adapter,
743
- measureCache,
744
- measureStats
745
- );
746
- const elapsed = monotonicNs() - t0;
747
- const lookups = measureStats.hits + measureStats.misses;
748
- const hitRate = lookups === 0 ? 1 : measureStats.hits / lookups;
749
- const meta = segmentsNode.meta;
750
- if (meta) {
751
- emitToMeta(meta["cache-hit-rate"], hitRate);
752
- emitToMeta(meta["segment-count"], result.length);
753
- emitToMeta(meta["layout-time-ns"], elapsed);
754
- }
755
- actions.emit(result);
756
- return () => {
757
- measureCache.clear();
758
- adapter.clearCache?.();
759
- };
760
- },
761
- {
762
- name: "segments",
763
- describeKind: "derived",
764
- meta: {
765
- "cache-hit-rate": 0,
766
- "segment-count": 0,
767
- "layout-time-ns": 0
768
- },
769
- equals: (a, b) => {
770
- const sa = a;
771
- const sb = b;
772
- if (sa == null || sb == null) return sa === sb;
773
- if (sa.length !== sb.length) return false;
774
- for (let i = 0; i < sa.length; i++) {
775
- const pa = sa[i];
776
- const pb = sb[i];
777
- if (pa.text !== pb.text || pa.width !== pb.width || pa.kind !== pb.kind || !graphemeWidthsEqual(pa.graphemeWidths ?? null, pb.graphemeWidths ?? null))
778
- return false;
779
- }
780
- return true;
781
- }
782
- }
783
- );
784
- const lineBreaksNode = derived(
785
- [segmentsNode, maxWidthNode, fontNode],
786
- ([segs, mw, font]) => {
787
- return computeLineBreaks(
788
- segs,
789
- mw,
790
- adapter,
791
- font,
792
- measureCache
793
- );
794
- },
795
- {
796
- name: "line-breaks",
797
- equals: (a, b) => {
798
- const la = a;
799
- const lb = b;
800
- if (la == null || lb == null) return la === lb;
801
- if (la.lineCount !== lb.lineCount) return false;
802
- for (let i = 0; i < la.lines.length; i++) {
803
- const lineA = la.lines[i];
804
- const lineB = lb.lines[i];
805
- if (lineA.text !== lineB.text || lineA.width !== lineB.width || lineA.startSegment !== lineB.startSegment || lineA.startGrapheme !== lineB.startGrapheme || lineA.endSegment !== lineB.endSegment || lineA.endGrapheme !== lineB.endGrapheme)
806
- return false;
807
- }
808
- return true;
809
- }
810
- }
811
- );
812
- const heightNode = derived(
813
- [lineBreaksNode, lineHeightNode],
814
- ([lb, lh]) => lb.lineCount * lh,
815
- { name: "height" }
816
- );
817
- const charPositionsNode = derived(
818
- [lineBreaksNode, segmentsNode, lineHeightNode],
819
- ([lb, segs, lh]) => {
820
- return computeCharPositions(lb, segs, lh);
821
- },
822
- {
823
- name: "char-positions",
824
- equals: (a, b) => {
825
- const ca = a;
826
- const cb = b;
827
- if (ca == null || cb == null) return ca === cb;
828
- if (ca.length !== cb.length) return false;
829
- for (let i = 0; i < ca.length; i++) {
830
- if (ca[i].x !== cb[i].x || ca[i].y !== cb[i].y || ca[i].width !== cb[i].width)
831
- return false;
832
- }
833
- return true;
834
- }
835
- }
836
- );
837
- g.add("text", textNode);
838
- g.add("font", fontNode);
839
- g.add("line-height", lineHeightNode);
840
- g.add("max-width", maxWidthNode);
841
- g.add("segments", segmentsNode);
842
- g.add("line-breaks", lineBreaksNode);
843
- g.add("height", heightNode);
844
- g.add("char-positions", charPositionsNode);
845
- return {
846
- graph: g,
847
- setText: (text) => g.set("text", text),
848
- setFont: (font) => g.set("font", font),
849
- setLineHeight: (lh) => g.set("line-height", lh),
850
- setMaxWidth: (mw) => g.set("max-width", Math.max(0, mw)),
851
- segments: segmentsNode,
852
- lineBreaks: lineBreaksNode,
853
- height: heightNode,
854
- charPositions: charPositionsNode
855
- };
856
- }
857
-
858
- export {
859
- analyzeAndMeasure,
860
- computeLineBreaks,
861
- layoutNextLine,
862
- carveTextLineSlots,
863
- computeCharPositions,
864
- reactiveLayout
865
- };
866
- //# sourceMappingURL=chunk-GTE6PWRZ.js.map