@graphrefly/graphrefly 0.25.0 → 0.27.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 (231) hide show
  1. package/README.md +8 -0
  2. package/dist/ai-CaR_912Q.d.cts +1033 -0
  3. package/dist/ai-WlRltJV7.d.ts +1033 -0
  4. package/dist/audit-ClmqGOCx.d.cts +245 -0
  5. package/dist/audit-DRlSzBu9.d.ts +245 -0
  6. package/dist/{chunk-QOWVNWOC.js → chunk-3ZWCKRHX.js} +27 -25
  7. package/dist/{chunk-QOWVNWOC.js.map → chunk-3ZWCKRHX.js.map} +1 -1
  8. package/dist/chunk-APFNLIRG.js +62 -0
  9. package/dist/chunk-APFNLIRG.js.map +1 -0
  10. package/dist/chunk-AT5LKYNL.js +395 -0
  11. package/dist/chunk-AT5LKYNL.js.map +1 -0
  12. package/dist/{chunk-IAHGTNOZ.js → chunk-BQ6RQQFF.js} +351 -2095
  13. package/dist/chunk-BQ6RQQFF.js.map +1 -0
  14. package/dist/{chunk-L2GLW2U7.js → chunk-BVZYTZ5H.js} +9 -103
  15. package/dist/chunk-BVZYTZ5H.js.map +1 -0
  16. package/dist/{chunk-EVR6UFUV.js → chunk-DST5DKZS.js} +19 -15
  17. package/dist/{chunk-EVR6UFUV.js.map → chunk-DST5DKZS.js.map} +1 -1
  18. package/dist/{chunk-TKE3JGOH.js → chunk-GTE6PWRZ.js} +5 -692
  19. package/dist/chunk-GTE6PWRZ.js.map +1 -0
  20. package/dist/chunk-HXZEYDUR.js +94 -0
  21. package/dist/chunk-HXZEYDUR.js.map +1 -0
  22. package/dist/chunk-J22W6HV3.js +107 -0
  23. package/dist/chunk-J22W6HV3.js.map +1 -0
  24. package/dist/{chunk-PY4XCDLR.js → chunk-J2VBW3DZ.js} +6 -95
  25. package/dist/chunk-J2VBW3DZ.js.map +1 -0
  26. package/dist/{chunk-HWPIFSW2.js → chunk-JSCT3CR4.js} +6 -4
  27. package/dist/{chunk-HWPIFSW2.js.map → chunk-JSCT3CR4.js.map} +1 -1
  28. package/dist/chunk-JWBCY4NC.js +330 -0
  29. package/dist/chunk-JWBCY4NC.js.map +1 -0
  30. package/dist/chunk-K2AUJHVP.js +2251 -0
  31. package/dist/chunk-K2AUJHVP.js.map +1 -0
  32. package/dist/chunk-MJ2NKQQL.js +119 -0
  33. package/dist/chunk-MJ2NKQQL.js.map +1 -0
  34. package/dist/chunk-N6UR7YVY.js +198 -0
  35. package/dist/chunk-N6UR7YVY.js.map +1 -0
  36. package/dist/chunk-NC6S43JJ.js +456 -0
  37. package/dist/chunk-NC6S43JJ.js.map +1 -0
  38. package/dist/chunk-OFVJBJXR.js +98 -0
  39. package/dist/chunk-OFVJBJXR.js.map +1 -0
  40. package/dist/chunk-OHISZPOJ.js +97 -0
  41. package/dist/chunk-OHISZPOJ.js.map +1 -0
  42. package/dist/chunk-OU5CQKNW.js +102 -0
  43. package/dist/chunk-OU5CQKNW.js.map +1 -0
  44. package/dist/{chunk-XOFWRC73.js → chunk-PF7GRZMW.js} +316 -21
  45. package/dist/chunk-PF7GRZMW.js.map +1 -0
  46. package/dist/{chunk-5DJTTKX3.js → chunk-PHOUUNK7.js} +74 -111
  47. package/dist/chunk-PHOUUNK7.js.map +1 -0
  48. package/dist/chunk-RNHBMHKA.js +1665 -0
  49. package/dist/chunk-RNHBMHKA.js.map +1 -0
  50. package/dist/chunk-SX52TAR4.js +110 -0
  51. package/dist/chunk-SX52TAR4.js.map +1 -0
  52. package/dist/{chunk-H4RVA4VE.js → chunk-VYPWMZ6H.js} +2 -2
  53. package/dist/chunk-WBZOVTYK.js +171 -0
  54. package/dist/chunk-WBZOVTYK.js.map +1 -0
  55. package/dist/chunk-WKNUIZOY.js +354 -0
  56. package/dist/chunk-WKNUIZOY.js.map +1 -0
  57. package/dist/chunk-X3VMZYBT.js +713 -0
  58. package/dist/chunk-X3VMZYBT.js.map +1 -0
  59. package/dist/chunk-X5R3GL6H.js +525 -0
  60. package/dist/chunk-X5R3GL6H.js.map +1 -0
  61. package/dist/chunk-XGPU467M.js +136 -0
  62. package/dist/chunk-XGPU467M.js.map +1 -0
  63. package/dist/compat/index.cjs +7656 -0
  64. package/dist/compat/index.cjs.map +1 -0
  65. package/dist/compat/index.d.cts +18 -0
  66. package/dist/compat/index.d.ts +18 -0
  67. package/dist/compat/index.js +50 -0
  68. package/dist/compat/index.js.map +1 -0
  69. package/dist/compat/jotai/index.cjs +2048 -0
  70. package/dist/compat/jotai/index.cjs.map +1 -0
  71. package/dist/compat/jotai/index.d.cts +2 -0
  72. package/dist/compat/jotai/index.d.ts +2 -0
  73. package/dist/compat/jotai/index.js +9 -0
  74. package/dist/compat/jotai/index.js.map +1 -0
  75. package/dist/compat/nanostores/index.cjs +2175 -0
  76. package/dist/compat/nanostores/index.cjs.map +1 -0
  77. package/dist/compat/nanostores/index.d.cts +2 -0
  78. package/dist/compat/nanostores/index.d.ts +2 -0
  79. package/dist/compat/nanostores/index.js +23 -0
  80. package/dist/compat/nanostores/index.js.map +1 -0
  81. package/dist/compat/nestjs/index.cjs +350 -16
  82. package/dist/compat/nestjs/index.cjs.map +1 -1
  83. package/dist/compat/nestjs/index.d.cts +6 -6
  84. package/dist/compat/nestjs/index.d.ts +6 -6
  85. package/dist/compat/nestjs/index.js +11 -9
  86. package/dist/compat/react/index.cjs +141 -0
  87. package/dist/compat/react/index.cjs.map +1 -0
  88. package/dist/compat/react/index.d.cts +2 -0
  89. package/dist/compat/react/index.d.ts +2 -0
  90. package/dist/compat/react/index.js +12 -0
  91. package/dist/compat/react/index.js.map +1 -0
  92. package/dist/compat/solid/index.cjs +128 -0
  93. package/dist/compat/solid/index.cjs.map +1 -0
  94. package/dist/compat/solid/index.d.cts +2 -0
  95. package/dist/compat/solid/index.d.ts +2 -0
  96. package/dist/compat/solid/index.js +12 -0
  97. package/dist/compat/solid/index.js.map +1 -0
  98. package/dist/compat/svelte/index.cjs +131 -0
  99. package/dist/compat/svelte/index.cjs.map +1 -0
  100. package/dist/compat/svelte/index.d.cts +2 -0
  101. package/dist/compat/svelte/index.d.ts +2 -0
  102. package/dist/compat/svelte/index.js +12 -0
  103. package/dist/compat/svelte/index.js.map +1 -0
  104. package/dist/compat/vue/index.cjs +146 -0
  105. package/dist/compat/vue/index.cjs.map +1 -0
  106. package/dist/compat/vue/index.d.cts +3 -0
  107. package/dist/compat/vue/index.d.ts +3 -0
  108. package/dist/compat/vue/index.js +12 -0
  109. package/dist/compat/vue/index.js.map +1 -0
  110. package/dist/compat/zustand/index.cjs +4931 -0
  111. package/dist/compat/zustand/index.cjs.map +1 -0
  112. package/dist/compat/zustand/index.d.cts +5 -0
  113. package/dist/compat/zustand/index.d.ts +5 -0
  114. package/dist/compat/zustand/index.js +12 -0
  115. package/dist/compat/zustand/index.js.map +1 -0
  116. package/dist/composite-C7PcQvcs.d.cts +303 -0
  117. package/dist/composite-aUCvjZVR.d.ts +303 -0
  118. package/dist/core/index.cjs +53 -4
  119. package/dist/core/index.cjs.map +1 -1
  120. package/dist/core/index.d.cts +4 -3
  121. package/dist/core/index.d.ts +4 -3
  122. package/dist/core/index.js +26 -24
  123. package/dist/demo-shell-BDkOptd6.d.ts +102 -0
  124. package/dist/demo-shell-Crid1WdR.d.cts +102 -0
  125. package/dist/extra/index.cjs +222 -110
  126. package/dist/extra/index.cjs.map +1 -1
  127. package/dist/extra/index.d.cts +6 -4
  128. package/dist/extra/index.d.ts +6 -4
  129. package/dist/extra/index.js +72 -65
  130. package/dist/extra/sources.cjs +2486 -0
  131. package/dist/extra/sources.cjs.map +1 -0
  132. package/dist/extra/sources.d.cts +465 -0
  133. package/dist/extra/sources.d.ts +465 -0
  134. package/dist/extra/sources.js +57 -0
  135. package/dist/extra/sources.js.map +1 -0
  136. package/dist/graph/index.cjs +408 -14
  137. package/dist/graph/index.cjs.map +1 -1
  138. package/dist/graph/index.d.cts +5 -5
  139. package/dist/graph/index.d.ts +5 -5
  140. package/dist/graph/index.js +13 -5
  141. package/dist/{graph-D-3JIQme.d.cts → graph-CCwGKLCm.d.ts} +195 -4
  142. package/dist/{graph-B6NFqv3z.d.ts → graph-DNCrvZSn.d.cts} +195 -4
  143. package/dist/index-3lsddbbS.d.ts +86 -0
  144. package/dist/index-B1tloyhO.d.cts +34 -0
  145. package/dist/{index-CYkjxu3s.d.ts → index-B6D3QNSA.d.ts} +33 -4
  146. package/dist/index-B6EhDnjH.d.cts +37 -0
  147. package/dist/index-B9B7_HEY.d.ts +37 -0
  148. package/dist/{index-Ds23Wvou.d.ts → index-BHlKbUwO.d.cts} +131 -883
  149. package/dist/{index-DiobMNwE.d.ts → index-BPVt8kqc.d.ts} +3 -3
  150. package/dist/index-BaSM3aYt.d.ts +195 -0
  151. package/dist/index-BuEoe-Qu.d.ts +121 -0
  152. package/dist/{index-Ch0IpIO0.d.cts → index-BwfLUNw4.d.ts} +131 -883
  153. package/dist/index-ByQxazQJ.d.cts +86 -0
  154. package/dist/index-C0svESO4.d.ts +127 -0
  155. package/dist/{index-OXImXMq6.d.ts → index-C8oil6M6.d.ts} +18 -196
  156. package/dist/{index-DKE1EATr.d.cts → index-CI3DprxP.d.cts} +18 -196
  157. package/dist/{index-AMWewNDe.d.cts → index-CO8uBlUh.d.cts} +33 -4
  158. package/dist/index-CxFrXH4m.d.ts +45 -0
  159. package/dist/index-D8wS_PeY.d.cts +121 -0
  160. package/dist/index-DO_6JN9Z.d.cts +127 -0
  161. package/dist/index-DVGiGFGT.d.cts +195 -0
  162. package/dist/index-DYme44FM.d.cts +44 -0
  163. package/dist/{index-J7Kc0oIQ.d.cts → index-DlLp-2Xn.d.cts} +3 -3
  164. package/dist/index-Dzk2hrlR.d.ts +44 -0
  165. package/dist/index-VHqptjhu.d.cts +45 -0
  166. package/dist/index-VdHQMPy1.d.ts +36 -0
  167. package/dist/index-Xi3u0HCQ.d.cts +36 -0
  168. package/dist/index-wEn0eFe8.d.ts +34 -0
  169. package/dist/index.cjs +1780 -176
  170. package/dist/index.cjs.map +1 -1
  171. package/dist/index.d.cts +784 -2082
  172. package/dist/index.d.ts +784 -2082
  173. package/dist/index.js +955 -4349
  174. package/dist/index.js.map +1 -1
  175. package/dist/memory-C6Z2tGpC.d.cts +139 -0
  176. package/dist/memory-li6FL5RM.d.ts +139 -0
  177. package/dist/messaging-Gt4LPbyA.d.cts +269 -0
  178. package/dist/messaging-XDoYablx.d.ts +269 -0
  179. package/dist/{meta-DWbkoq1s.d.cts → meta-BxCA7rcr.d.cts} +1 -1
  180. package/dist/{meta-CnkLA_43.d.ts → meta-CbznRPYJ.d.ts} +1 -1
  181. package/dist/{node-B-f-Lu-k.d.cts → node-BmerH3kS.d.cts} +26 -1
  182. package/dist/{node-B-f-Lu-k.d.ts → node-BmerH3kS.d.ts} +26 -1
  183. package/dist/{observable-uP-wy_uK.d.ts → observable-BgGUwcqp.d.ts} +1 -1
  184. package/dist/{observable-DBnrwcar.d.cts → observable-DJt_AxzQ.d.cts} +1 -1
  185. package/dist/patterns/ai.cjs +7930 -0
  186. package/dist/patterns/ai.cjs.map +1 -0
  187. package/dist/patterns/ai.d.cts +10 -0
  188. package/dist/patterns/ai.d.ts +10 -0
  189. package/dist/patterns/ai.js +71 -0
  190. package/dist/patterns/ai.js.map +1 -0
  191. package/dist/patterns/audit.cjs +5805 -0
  192. package/dist/patterns/audit.cjs.map +1 -0
  193. package/dist/patterns/audit.d.cts +6 -0
  194. package/dist/patterns/audit.d.ts +6 -0
  195. package/dist/patterns/audit.js +29 -0
  196. package/dist/patterns/audit.js.map +1 -0
  197. package/dist/patterns/demo-shell.cjs +5604 -0
  198. package/dist/patterns/demo-shell.cjs.map +1 -0
  199. package/dist/patterns/demo-shell.d.cts +6 -0
  200. package/dist/patterns/demo-shell.d.ts +6 -0
  201. package/dist/patterns/demo-shell.js +15 -0
  202. package/dist/patterns/demo-shell.js.map +1 -0
  203. package/dist/patterns/memory.cjs +5283 -0
  204. package/dist/patterns/memory.cjs.map +1 -0
  205. package/dist/patterns/memory.d.cts +5 -0
  206. package/dist/patterns/memory.d.ts +5 -0
  207. package/dist/patterns/memory.js +20 -0
  208. package/dist/patterns/memory.js.map +1 -0
  209. package/dist/patterns/reactive-layout/index.cjs +355 -13
  210. package/dist/patterns/reactive-layout/index.cjs.map +1 -1
  211. package/dist/patterns/reactive-layout/index.d.cts +6 -5
  212. package/dist/patterns/reactive-layout/index.d.ts +6 -5
  213. package/dist/patterns/reactive-layout/index.js +15 -12
  214. package/dist/reactive-layout-MQP--J3F.d.cts +183 -0
  215. package/dist/reactive-layout-u5Ulnqag.d.ts +183 -0
  216. package/dist/{storage-BuTdpCI1.d.cts → storage-CMjUUuxn.d.ts} +10 -2
  217. package/dist/{storage-F2X1U1x0.d.ts → storage-DdWlZo6U.d.cts} +10 -2
  218. package/dist/sugar-CCOxXK1e.d.ts +201 -0
  219. package/dist/sugar-D02n5JjF.d.cts +201 -0
  220. package/package.json +63 -3
  221. package/dist/chunk-5DJTTKX3.js.map +0 -1
  222. package/dist/chunk-IAHGTNOZ.js.map +0 -1
  223. package/dist/chunk-L2GLW2U7.js.map +0 -1
  224. package/dist/chunk-MW4VAKAO.js +0 -47
  225. package/dist/chunk-MW4VAKAO.js.map +0 -1
  226. package/dist/chunk-PY4XCDLR.js.map +0 -1
  227. package/dist/chunk-TKE3JGOH.js.map +0 -1
  228. package/dist/chunk-XOFWRC73.js.map +0 -1
  229. package/dist/index-BJB7t9gg.d.cts +0 -392
  230. package/dist/index-C-TXEa7C.d.ts +0 -392
  231. /package/dist/{chunk-H4RVA4VE.js.map → chunk-VYPWMZ6H.js.map} +0 -0
@@ -1,5 +1,6 @@
1
- export { B as BlockAdapters, C as CanvasMeasureAdapter, a as CanvasMeasureAdapterOptions, b as CanvasModule, c as CharPosition, d as CircleObstacle, e as CliMeasureAdapter, f as CliMeasureAdapterOptions, g as ContentBlock, F as FlowColumns, h as FlowContainer, j as FlowLinesResult, I as ImageMeasurer, k as ImageSizeAdapter, l as Interval, L as LayoutCursor, m as LayoutLine, n as LayoutNextLineContext, o as LayoutNextLineResult, p as LineBreaksResult, q as MeasuredBlock, M as MeasurementAdapter, N as NodeCanvasMeasureAdapter, O as Obstacle, P as PositionedBlock, r as PositionedLine, s as PrecomputedAdapter, t as PrecomputedAdapterOptions, u as PreparedSegment, R as ReactiveBlockLayoutBundle, v as ReactiveBlockLayoutOptions, w as ReactiveFlowLayoutBundle, x as ReactiveFlowLayoutOptions, y as ReactiveLayoutBundle, z as ReactiveLayoutOptions, A as RectObstacle, S as SegmentBreakKind, D as SegmentMeasureStats, E as SvgBoundsAdapter, G as SvgMeasurer, H as analyzeAndMeasure, J as carveTextLineSlots, K as circleIntervalForBand, Q as computeBlockFlow, T as computeCharPositions, U as computeFlowLines, V as computeLineBreaks, W as computeTotalHeight, X as layoutNextLine, Y as measureBlock, Z as measureBlocks, _ as reactiveBlockLayout, $ as reactiveFlowLayout, a0 as reactiveLayout, a1 as rectIntervalForBand } from '../../index-DKE1EATr.cjs';
2
- import '../../node-B-f-Lu-k.cjs';
3
- import '../../graph-D-3JIQme.cjs';
4
- import '../../meta-DWbkoq1s.cjs';
5
- import '../../storage-BuTdpCI1.cjs';
1
+ export { B as BlockAdapters, C as CanvasMeasureAdapter, a as CanvasMeasureAdapterOptions, b as CanvasModule, c as CircleObstacle, d as CliMeasureAdapter, e as CliMeasureAdapterOptions, f as ContentBlock, F as FlowColumns, g as FlowContainer, h as FlowLinesResult, I as ImageMeasurer, j as ImageSizeAdapter, M as MeasuredBlock, N as NodeCanvasMeasureAdapter, O as Obstacle, P as PositionedBlock, k as PositionedLine, l as PrecomputedAdapter, m as PrecomputedAdapterOptions, R as ReactiveBlockLayoutBundle, n as ReactiveBlockLayoutOptions, o as ReactiveFlowLayoutBundle, p as ReactiveFlowLayoutOptions, q as RectObstacle, S as SvgBoundsAdapter, r as SvgMeasurer, s as circleIntervalForBand, t as computeBlockFlow, u as computeFlowLines, v as computeTotalHeight, w as measureBlock, x as measureBlocks, y as reactiveBlockLayout, z as reactiveFlowLayout, A as rectIntervalForBand } from '../../index-CI3DprxP.cjs';
2
+ export { C as CharPosition, I as Interval, a as LayoutCursor, b as LayoutLine, c as LayoutNextLineContext, d as LayoutNextLineResult, L as LineBreaksResult, M as MeasurementAdapter, P as PreparedSegment, R as ReactiveLayoutBundle, e as ReactiveLayoutOptions, S as SegmentBreakKind, f as SegmentMeasureStats, g as analyzeAndMeasure, h as carveTextLineSlots, i as computeCharPositions, j as computeLineBreaks, l as layoutNextLine, r as reactiveLayout } from '../../reactive-layout-MQP--J3F.cjs';
3
+ import '../../node-BmerH3kS.cjs';
4
+ import '../../graph-DNCrvZSn.cjs';
5
+ import '../../meta-BxCA7rcr.cjs';
6
+ import '../../storage-DdWlZo6U.cjs';
@@ -1,5 +1,6 @@
1
- export { B as BlockAdapters, C as CanvasMeasureAdapter, a as CanvasMeasureAdapterOptions, b as CanvasModule, c as CharPosition, d as CircleObstacle, e as CliMeasureAdapter, f as CliMeasureAdapterOptions, g as ContentBlock, F as FlowColumns, h as FlowContainer, j as FlowLinesResult, I as ImageMeasurer, k as ImageSizeAdapter, l as Interval, L as LayoutCursor, m as LayoutLine, n as LayoutNextLineContext, o as LayoutNextLineResult, p as LineBreaksResult, q as MeasuredBlock, M as MeasurementAdapter, N as NodeCanvasMeasureAdapter, O as Obstacle, P as PositionedBlock, r as PositionedLine, s as PrecomputedAdapter, t as PrecomputedAdapterOptions, u as PreparedSegment, R as ReactiveBlockLayoutBundle, v as ReactiveBlockLayoutOptions, w as ReactiveFlowLayoutBundle, x as ReactiveFlowLayoutOptions, y as ReactiveLayoutBundle, z as ReactiveLayoutOptions, A as RectObstacle, S as SegmentBreakKind, D as SegmentMeasureStats, E as SvgBoundsAdapter, G as SvgMeasurer, H as analyzeAndMeasure, J as carveTextLineSlots, K as circleIntervalForBand, Q as computeBlockFlow, T as computeCharPositions, U as computeFlowLines, V as computeLineBreaks, W as computeTotalHeight, X as layoutNextLine, Y as measureBlock, Z as measureBlocks, _ as reactiveBlockLayout, $ as reactiveFlowLayout, a0 as reactiveLayout, a1 as rectIntervalForBand } from '../../index-OXImXMq6.js';
2
- import '../../node-B-f-Lu-k.js';
3
- import '../../graph-B6NFqv3z.js';
4
- import '../../meta-CnkLA_43.js';
5
- import '../../storage-F2X1U1x0.js';
1
+ export { B as BlockAdapters, C as CanvasMeasureAdapter, a as CanvasMeasureAdapterOptions, b as CanvasModule, c as CircleObstacle, d as CliMeasureAdapter, e as CliMeasureAdapterOptions, f as ContentBlock, F as FlowColumns, g as FlowContainer, h as FlowLinesResult, I as ImageMeasurer, j as ImageSizeAdapter, M as MeasuredBlock, N as NodeCanvasMeasureAdapter, O as Obstacle, P as PositionedBlock, k as PositionedLine, l as PrecomputedAdapter, m as PrecomputedAdapterOptions, R as ReactiveBlockLayoutBundle, n as ReactiveBlockLayoutOptions, o as ReactiveFlowLayoutBundle, p as ReactiveFlowLayoutOptions, q as RectObstacle, S as SvgBoundsAdapter, r as SvgMeasurer, s as circleIntervalForBand, t as computeBlockFlow, u as computeFlowLines, v as computeTotalHeight, w as measureBlock, x as measureBlocks, y as reactiveBlockLayout, z as reactiveFlowLayout, A as rectIntervalForBand } from '../../index-C8oil6M6.js';
2
+ export { C as CharPosition, I as Interval, a as LayoutCursor, b as LayoutLine, c as LayoutNextLineContext, d as LayoutNextLineResult, L as LineBreaksResult, M as MeasurementAdapter, P as PreparedSegment, R as ReactiveLayoutBundle, e as ReactiveLayoutOptions, S as SegmentBreakKind, f as SegmentMeasureStats, g as analyzeAndMeasure, h as carveTextLineSlots, i as computeCharPositions, j as computeLineBreaks, l as layoutNextLine, r as reactiveLayout } from '../../reactive-layout-u5Ulnqag.js';
3
+ import '../../node-BmerH3kS.js';
4
+ import '../../graph-CCwGKLCm.js';
5
+ import '../../meta-CbznRPYJ.js';
6
+ import '../../storage-CMjUUuxn.js';
@@ -5,28 +5,31 @@ import {
5
5
  NodeCanvasMeasureAdapter,
6
6
  PrecomputedAdapter,
7
7
  SvgBoundsAdapter,
8
- analyzeAndMeasure,
9
- carveTextLineSlots,
10
8
  circleIntervalForBand,
11
9
  computeBlockFlow,
12
- computeCharPositions,
13
10
  computeFlowLines,
14
- computeLineBreaks,
15
11
  computeTotalHeight,
16
- layoutNextLine,
17
12
  measureBlock,
18
13
  measureBlocks,
19
14
  reactiveBlockLayout,
20
15
  reactiveFlowLayout,
21
- reactiveLayout,
22
16
  rectIntervalForBand
23
- } from "../../chunk-TKE3JGOH.js";
24
- import "../../chunk-HWPIFSW2.js";
25
- import "../../chunk-L2GLW2U7.js";
26
- import "../../chunk-XOFWRC73.js";
27
- import "../../chunk-H4RVA4VE.js";
17
+ } from "../../chunk-X3VMZYBT.js";
18
+ import {
19
+ analyzeAndMeasure,
20
+ carveTextLineSlots,
21
+ computeCharPositions,
22
+ computeLineBreaks,
23
+ layoutNextLine,
24
+ reactiveLayout
25
+ } from "../../chunk-GTE6PWRZ.js";
26
+ import "../../chunk-JSCT3CR4.js";
27
+ import "../../chunk-BVZYTZ5H.js";
28
+ import "../../chunk-PF7GRZMW.js";
29
+ import "../../chunk-VYPWMZ6H.js";
28
30
  import "../../chunk-7TAQJHQV.js";
29
- import "../../chunk-5DJTTKX3.js";
31
+ import "../../chunk-PHOUUNK7.js";
32
+ import "../../chunk-SX52TAR4.js";
30
33
  export {
31
34
  CanvasMeasureAdapter,
32
35
  CliMeasureAdapter,
@@ -0,0 +1,183 @@
1
+ import { N as Node } from './node-BmerH3kS.cjs';
2
+ import { a as Graph } from './graph-DNCrvZSn.cjs';
3
+
4
+ /** Pluggable measurement backend. */
5
+ interface MeasurementAdapter {
6
+ measureSegment(text: string, font: string): {
7
+ width: number;
8
+ };
9
+ /** Optional; adapters may omit for read-only / stateless measurement. */
10
+ clearCache?(): void;
11
+ }
12
+ /** Mutable counters for `analyzeAndMeasure` cache hit ratio (hits / (hits + misses)). */
13
+ type SegmentMeasureStats = {
14
+ hits: number;
15
+ misses: number;
16
+ };
17
+ /** Break kind for each segment (ported from Pretext analysis.ts). */
18
+ type SegmentBreakKind = "text" | "space" | "zero-width-break" | "soft-hyphen" | "hard-break";
19
+ /** A measured text segment ready for line breaking. */
20
+ type PreparedSegment = {
21
+ text: string;
22
+ width: number;
23
+ kind: SegmentBreakKind;
24
+ /** Grapheme widths for overflow-wrap: break-word (null if single grapheme). */
25
+ graphemeWidths: number[] | null;
26
+ };
27
+ /** A laid-out line with start/end cursors. */
28
+ type LayoutLine = {
29
+ text: string;
30
+ width: number;
31
+ startSegment: number;
32
+ startGrapheme: number;
33
+ endSegment: number;
34
+ endGrapheme: number;
35
+ };
36
+ /** Per-character position for hit testing. */
37
+ type CharPosition = {
38
+ x: number;
39
+ y: number;
40
+ width: number;
41
+ height: number;
42
+ line: number;
43
+ };
44
+ /** Full layout result from the line-breaks derived node. */
45
+ type LineBreaksResult = {
46
+ lines: LayoutLine[];
47
+ lineCount: number;
48
+ };
49
+ /**
50
+ * A position within `PreparedSegment[]` — segment + grapheme offset.
51
+ * `graphemeIndex: 0` at segment boundaries.
52
+ *
53
+ * Used by {@link layoutNextLine} for cursor-based line walking; needed when
54
+ * lines have varying widths (multi-column flow, text wrapping around obstacles).
55
+ */
56
+ type LayoutCursor = {
57
+ segmentIndex: number;
58
+ graphemeIndex: number;
59
+ };
60
+ /** A horizontal span `[left, right]` in pixels — used by flow-layout slot carving. */
61
+ type Interval = {
62
+ left: number;
63
+ right: number;
64
+ };
65
+ /** Result of a single `layoutNextLine` call. */
66
+ type LayoutNextLineResult = {
67
+ text: string;
68
+ width: number;
69
+ start: LayoutCursor;
70
+ end: LayoutCursor;
71
+ };
72
+ /** Optional context for `layoutNextLine` — enables soft-hyphen visible-hyphen rendering. */
73
+ type LayoutNextLineContext = {
74
+ adapter?: MeasurementAdapter;
75
+ font?: string;
76
+ cache?: Map<string, Map<string, number>>;
77
+ };
78
+ /** Result of the reactive layout graph's describe-accessible state. */
79
+ type ReactiveLayoutBundle = {
80
+ graph: Graph;
81
+ /** Set input text. */
82
+ setText: (text: string) => void;
83
+ /** Set CSS font string. */
84
+ setFont: (font: string) => void;
85
+ /** Set line height (px). */
86
+ setLineHeight: (lineHeight: number) => void;
87
+ /** Set max width constraint (px). */
88
+ setMaxWidth: (maxWidth: number) => void;
89
+ /** Segments node. */
90
+ segments: Node<PreparedSegment[]>;
91
+ /** Line breaks node. */
92
+ lineBreaks: Node<LineBreaksResult>;
93
+ /** Total height node. */
94
+ height: Node<number>;
95
+ /** Per-character positions node. */
96
+ charPositions: Node<CharPosition[]>;
97
+ };
98
+ /**
99
+ * Merge segmentation pieces: sticky punctuation, CJK per-grapheme splitting,
100
+ * and produce the final measured segment list.
101
+ */
102
+ declare function analyzeAndMeasure(text: string, font: string, adapter: MeasurementAdapter, cache: Map<string, Map<string, number>>, stats?: SegmentMeasureStats): PreparedSegment[];
103
+ /**
104
+ * Greedy line-breaking algorithm.
105
+ *
106
+ * Walks segments left to right, accumulating width. Breaks when a segment would
107
+ * overflow maxWidth. Supports:
108
+ * - Trailing space hang (spaces don't trigger breaks)
109
+ * - overflow-wrap: break-word via grapheme widths
110
+ * - Soft hyphens (break opportunity, adds visible hyphen width)
111
+ * - Hard breaks (forced newline)
112
+ */
113
+ declare function computeLineBreaks(segments: PreparedSegment[], maxWidth: number, adapter: MeasurementAdapter, font: string, cache: Map<string, Map<string, number>>): LineBreaksResult;
114
+ /**
115
+ * Lay out the next single line starting from `cursor`, fitting into `slotWidth`.
116
+ *
117
+ * Unlike `computeLineBreaks`, which consumes whole text with one `maxWidth`,
118
+ * this is the cursor-based primitive needed when successive lines have different
119
+ * widths (multi-column flow, text wrapping around shape obstacles, mixed
120
+ * column+pullquote layouts).
121
+ *
122
+ * Returns `null` when the cursor is past all segments (text exhausted).
123
+ * At a hard-break with no preceding content, returns an empty line and advances
124
+ * the cursor past the break so the caller can continue.
125
+ *
126
+ * ```ts
127
+ * let cursor: LayoutCursor = { segmentIndex: 0, graphemeIndex: 0 };
128
+ * while (true) {
129
+ * const line = layoutNextLine(segments, cursor, availableWidth);
130
+ * if (line === null) break;
131
+ * render(line);
132
+ * cursor = line.end;
133
+ * }
134
+ * ```
135
+ */
136
+ declare function layoutNextLine(segments: PreparedSegment[], cursor: LayoutCursor, slotWidth: number, ctx?: LayoutNextLineContext): LayoutNextLineResult | null;
137
+ /**
138
+ * Subtract blocked horizontal intervals from a base interval, producing
139
+ * remaining ordered, non-overlapping slots wide enough to fit text.
140
+ *
141
+ * Pure geometry — no text dependency. Used by flow-layout to turn obstacle
142
+ * intersections into per-line layout slots.
143
+ *
144
+ * ```ts
145
+ * carveTextLineSlots({left: 0, right: 600}, [{left: 200, right: 280}])
146
+ * // → [{left: 0, right: 200}, {left: 280, right: 600}]
147
+ * ```
148
+ */
149
+ declare function carveTextLineSlots(base: Interval, blocked: Interval[], minSlotWidth?: number): Interval[];
150
+ /** Compute per-character x,y positions from line breaks and segments. */
151
+ declare function computeCharPositions(lineBreaks: LineBreaksResult, segments: PreparedSegment[], lineHeight: number): CharPosition[];
152
+ type ReactiveLayoutOptions = {
153
+ /** Measurement backend (required). */
154
+ adapter: MeasurementAdapter;
155
+ /** Graph name (default: "reactive-layout"). */
156
+ name?: string;
157
+ /** Initial text. */
158
+ text?: string;
159
+ /** Initial CSS font string. */
160
+ font?: string;
161
+ /** Initial line height in px. */
162
+ lineHeight?: number;
163
+ /** Initial max width in px (clamped to ≥ 0). */
164
+ maxWidth?: number;
165
+ };
166
+ /**
167
+ * Create a reactive text layout graph.
168
+ *
169
+ * ```
170
+ * Graph("reactive-layout")
171
+ * ├── state("text")
172
+ * ├── state("font")
173
+ * ├── state("line-height")
174
+ * ├── state("max-width")
175
+ * ├── derived("segments") — text + font → PreparedSegment[]
176
+ * ├── derived("line-breaks") — segments + max-width → LineBreaksResult
177
+ * ├── derived("height") — line-breaks → number
178
+ * └── derived("char-positions") — line-breaks + segments → CharPosition[]
179
+ * ```
180
+ */
181
+ declare function reactiveLayout(opts: ReactiveLayoutOptions): ReactiveLayoutBundle;
182
+
183
+ export { type CharPosition as C, type Interval as I, type LineBreaksResult as L, type MeasurementAdapter as M, type PreparedSegment as P, type ReactiveLayoutBundle as R, type SegmentBreakKind as S, type LayoutCursor as a, type LayoutLine as b, type LayoutNextLineContext as c, type LayoutNextLineResult as d, type ReactiveLayoutOptions as e, type SegmentMeasureStats as f, analyzeAndMeasure as g, carveTextLineSlots as h, computeCharPositions as i, computeLineBreaks as j, layoutNextLine as l, reactiveLayout as r };
@@ -0,0 +1,183 @@
1
+ import { N as Node } from './node-BmerH3kS.js';
2
+ import { a as Graph } from './graph-CCwGKLCm.js';
3
+
4
+ /** Pluggable measurement backend. */
5
+ interface MeasurementAdapter {
6
+ measureSegment(text: string, font: string): {
7
+ width: number;
8
+ };
9
+ /** Optional; adapters may omit for read-only / stateless measurement. */
10
+ clearCache?(): void;
11
+ }
12
+ /** Mutable counters for `analyzeAndMeasure` cache hit ratio (hits / (hits + misses)). */
13
+ type SegmentMeasureStats = {
14
+ hits: number;
15
+ misses: number;
16
+ };
17
+ /** Break kind for each segment (ported from Pretext analysis.ts). */
18
+ type SegmentBreakKind = "text" | "space" | "zero-width-break" | "soft-hyphen" | "hard-break";
19
+ /** A measured text segment ready for line breaking. */
20
+ type PreparedSegment = {
21
+ text: string;
22
+ width: number;
23
+ kind: SegmentBreakKind;
24
+ /** Grapheme widths for overflow-wrap: break-word (null if single grapheme). */
25
+ graphemeWidths: number[] | null;
26
+ };
27
+ /** A laid-out line with start/end cursors. */
28
+ type LayoutLine = {
29
+ text: string;
30
+ width: number;
31
+ startSegment: number;
32
+ startGrapheme: number;
33
+ endSegment: number;
34
+ endGrapheme: number;
35
+ };
36
+ /** Per-character position for hit testing. */
37
+ type CharPosition = {
38
+ x: number;
39
+ y: number;
40
+ width: number;
41
+ height: number;
42
+ line: number;
43
+ };
44
+ /** Full layout result from the line-breaks derived node. */
45
+ type LineBreaksResult = {
46
+ lines: LayoutLine[];
47
+ lineCount: number;
48
+ };
49
+ /**
50
+ * A position within `PreparedSegment[]` — segment + grapheme offset.
51
+ * `graphemeIndex: 0` at segment boundaries.
52
+ *
53
+ * Used by {@link layoutNextLine} for cursor-based line walking; needed when
54
+ * lines have varying widths (multi-column flow, text wrapping around obstacles).
55
+ */
56
+ type LayoutCursor = {
57
+ segmentIndex: number;
58
+ graphemeIndex: number;
59
+ };
60
+ /** A horizontal span `[left, right]` in pixels — used by flow-layout slot carving. */
61
+ type Interval = {
62
+ left: number;
63
+ right: number;
64
+ };
65
+ /** Result of a single `layoutNextLine` call. */
66
+ type LayoutNextLineResult = {
67
+ text: string;
68
+ width: number;
69
+ start: LayoutCursor;
70
+ end: LayoutCursor;
71
+ };
72
+ /** Optional context for `layoutNextLine` — enables soft-hyphen visible-hyphen rendering. */
73
+ type LayoutNextLineContext = {
74
+ adapter?: MeasurementAdapter;
75
+ font?: string;
76
+ cache?: Map<string, Map<string, number>>;
77
+ };
78
+ /** Result of the reactive layout graph's describe-accessible state. */
79
+ type ReactiveLayoutBundle = {
80
+ graph: Graph;
81
+ /** Set input text. */
82
+ setText: (text: string) => void;
83
+ /** Set CSS font string. */
84
+ setFont: (font: string) => void;
85
+ /** Set line height (px). */
86
+ setLineHeight: (lineHeight: number) => void;
87
+ /** Set max width constraint (px). */
88
+ setMaxWidth: (maxWidth: number) => void;
89
+ /** Segments node. */
90
+ segments: Node<PreparedSegment[]>;
91
+ /** Line breaks node. */
92
+ lineBreaks: Node<LineBreaksResult>;
93
+ /** Total height node. */
94
+ height: Node<number>;
95
+ /** Per-character positions node. */
96
+ charPositions: Node<CharPosition[]>;
97
+ };
98
+ /**
99
+ * Merge segmentation pieces: sticky punctuation, CJK per-grapheme splitting,
100
+ * and produce the final measured segment list.
101
+ */
102
+ declare function analyzeAndMeasure(text: string, font: string, adapter: MeasurementAdapter, cache: Map<string, Map<string, number>>, stats?: SegmentMeasureStats): PreparedSegment[];
103
+ /**
104
+ * Greedy line-breaking algorithm.
105
+ *
106
+ * Walks segments left to right, accumulating width. Breaks when a segment would
107
+ * overflow maxWidth. Supports:
108
+ * - Trailing space hang (spaces don't trigger breaks)
109
+ * - overflow-wrap: break-word via grapheme widths
110
+ * - Soft hyphens (break opportunity, adds visible hyphen width)
111
+ * - Hard breaks (forced newline)
112
+ */
113
+ declare function computeLineBreaks(segments: PreparedSegment[], maxWidth: number, adapter: MeasurementAdapter, font: string, cache: Map<string, Map<string, number>>): LineBreaksResult;
114
+ /**
115
+ * Lay out the next single line starting from `cursor`, fitting into `slotWidth`.
116
+ *
117
+ * Unlike `computeLineBreaks`, which consumes whole text with one `maxWidth`,
118
+ * this is the cursor-based primitive needed when successive lines have different
119
+ * widths (multi-column flow, text wrapping around shape obstacles, mixed
120
+ * column+pullquote layouts).
121
+ *
122
+ * Returns `null` when the cursor is past all segments (text exhausted).
123
+ * At a hard-break with no preceding content, returns an empty line and advances
124
+ * the cursor past the break so the caller can continue.
125
+ *
126
+ * ```ts
127
+ * let cursor: LayoutCursor = { segmentIndex: 0, graphemeIndex: 0 };
128
+ * while (true) {
129
+ * const line = layoutNextLine(segments, cursor, availableWidth);
130
+ * if (line === null) break;
131
+ * render(line);
132
+ * cursor = line.end;
133
+ * }
134
+ * ```
135
+ */
136
+ declare function layoutNextLine(segments: PreparedSegment[], cursor: LayoutCursor, slotWidth: number, ctx?: LayoutNextLineContext): LayoutNextLineResult | null;
137
+ /**
138
+ * Subtract blocked horizontal intervals from a base interval, producing
139
+ * remaining ordered, non-overlapping slots wide enough to fit text.
140
+ *
141
+ * Pure geometry — no text dependency. Used by flow-layout to turn obstacle
142
+ * intersections into per-line layout slots.
143
+ *
144
+ * ```ts
145
+ * carveTextLineSlots({left: 0, right: 600}, [{left: 200, right: 280}])
146
+ * // → [{left: 0, right: 200}, {left: 280, right: 600}]
147
+ * ```
148
+ */
149
+ declare function carveTextLineSlots(base: Interval, blocked: Interval[], minSlotWidth?: number): Interval[];
150
+ /** Compute per-character x,y positions from line breaks and segments. */
151
+ declare function computeCharPositions(lineBreaks: LineBreaksResult, segments: PreparedSegment[], lineHeight: number): CharPosition[];
152
+ type ReactiveLayoutOptions = {
153
+ /** Measurement backend (required). */
154
+ adapter: MeasurementAdapter;
155
+ /** Graph name (default: "reactive-layout"). */
156
+ name?: string;
157
+ /** Initial text. */
158
+ text?: string;
159
+ /** Initial CSS font string. */
160
+ font?: string;
161
+ /** Initial line height in px. */
162
+ lineHeight?: number;
163
+ /** Initial max width in px (clamped to ≥ 0). */
164
+ maxWidth?: number;
165
+ };
166
+ /**
167
+ * Create a reactive text layout graph.
168
+ *
169
+ * ```
170
+ * Graph("reactive-layout")
171
+ * ├── state("text")
172
+ * ├── state("font")
173
+ * ├── state("line-height")
174
+ * ├── state("max-width")
175
+ * ├── derived("segments") — text + font → PreparedSegment[]
176
+ * ├── derived("line-breaks") — segments + max-width → LineBreaksResult
177
+ * ├── derived("height") — line-breaks → number
178
+ * └── derived("char-positions") — line-breaks + segments → CharPosition[]
179
+ * ```
180
+ */
181
+ declare function reactiveLayout(opts: ReactiveLayoutOptions): ReactiveLayoutBundle;
182
+
183
+ export { type CharPosition as C, type Interval as I, type LineBreaksResult as L, type MeasurementAdapter as M, type PreparedSegment as P, type ReactiveLayoutBundle as R, type SegmentBreakKind as S, type LayoutCursor as a, type LayoutLine as b, type LayoutNextLineContext as c, type LayoutNextLineResult as d, type ReactiveLayoutOptions as e, type SegmentMeasureStats as f, analyzeAndMeasure as g, carveTextLineSlots as h, computeCharPositions as i, computeLineBreaks as j, layoutNextLine as l, reactiveLayout as r };
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-B-f-Lu-k.cjs';
1
+ import { N as Node } from './node-BmerH3kS.js';
2
2
 
3
3
  /**
4
4
  * Storage tier primitive — unified persistence surface (roadmap §3.1).
@@ -28,6 +28,14 @@ interface StorageTier {
28
28
  save(key: string, data: unknown): void | Promise<void>;
29
29
  /** Delete a value. Optional — tiers without `clear` are append/overwrite-only. */
30
30
  clear?(key: string): void | Promise<void>;
31
+ /**
32
+ * Enumerate known keys. Optional — tiers that only address a single record
33
+ * (e.g. `indexedDbStorage`) or that can't cheaply enumerate (e.g. a remote
34
+ * write-only sink) may omit it. Callers that require enumeration (the
35
+ * surface `snapshot.list()` helper, MCP `graphrefly_snapshot_list`, CLI
36
+ * `graphrefly snapshot list`) should check before calling.
37
+ */
38
+ list?(): readonly string[] | Promise<readonly string[]>;
31
39
  /**
32
40
  * Debounce saves on this tier (ms). Hot tier: `0` (sync-through).
33
41
  * Warm: `1000`. Cold: `60000`. Each tier holds its own last-save baseline,
@@ -179,4 +187,4 @@ declare function fromIDBTransaction(tx: IDBTransaction): Node<void>;
179
187
  */
180
188
  declare function indexedDbStorage(spec: IndexedDbStorageSpec): StorageTier;
181
189
 
182
- export { type IndexedDbStorageSpec as I, type StorageHandle as S, type StorageTier as a, fromIDBRequest as b, fromIDBTransaction as c, dictStorage as d, fileStorage as f, indexedDbStorage as i, memoryStorage as m, sqliteStorage as s };
190
+ export { type IndexedDbStorageSpec as I, type StorageTier as S, type StorageHandle as a, fromIDBRequest as b, fromIDBTransaction as c, dictStorage as d, fileStorage as f, indexedDbStorage as i, memoryStorage as m, sqliteStorage as s };
@@ -1,4 +1,4 @@
1
- import { N as Node } from './node-B-f-Lu-k.js';
1
+ import { N as Node } from './node-BmerH3kS.cjs';
2
2
 
3
3
  /**
4
4
  * Storage tier primitive — unified persistence surface (roadmap §3.1).
@@ -28,6 +28,14 @@ interface StorageTier {
28
28
  save(key: string, data: unknown): void | Promise<void>;
29
29
  /** Delete a value. Optional — tiers without `clear` are append/overwrite-only. */
30
30
  clear?(key: string): void | Promise<void>;
31
+ /**
32
+ * Enumerate known keys. Optional — tiers that only address a single record
33
+ * (e.g. `indexedDbStorage`) or that can't cheaply enumerate (e.g. a remote
34
+ * write-only sink) may omit it. Callers that require enumeration (the
35
+ * surface `snapshot.list()` helper, MCP `graphrefly_snapshot_list`, CLI
36
+ * `graphrefly snapshot list`) should check before calling.
37
+ */
38
+ list?(): readonly string[] | Promise<readonly string[]>;
31
39
  /**
32
40
  * Debounce saves on this tier (ms). Hot tier: `0` (sync-through).
33
41
  * Warm: `1000`. Cold: `60000`. Each tier holds its own last-save baseline,
@@ -179,4 +187,4 @@ declare function fromIDBTransaction(tx: IDBTransaction): Node<void>;
179
187
  */
180
188
  declare function indexedDbStorage(spec: IndexedDbStorageSpec): StorageTier;
181
189
 
182
- export { type IndexedDbStorageSpec as I, type StorageHandle as S, type StorageTier as a, fromIDBRequest as b, fromIDBTransaction as c, dictStorage as d, fileStorage as f, indexedDbStorage as i, memoryStorage as m, sqliteStorage as s };
190
+ export { type IndexedDbStorageSpec as I, type StorageTier as S, type StorageHandle as a, fromIDBRequest as b, fromIDBTransaction as c, dictStorage as d, fileStorage as f, indexedDbStorage as i, memoryStorage as m, sqliteStorage as s };