@graphrefly/ts 0.0.2 → 0.0.3

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 (210) hide show
  1. package/README.md +197 -117
  2. package/dist/{actions-types-wl9Mgkmr.d.cts → actions-types-CH-XCU9O.d.cts} +4 -4
  3. package/dist/{actions-types-CSC3NMDl.d.ts → actions-types-w2iPQTkv.d.ts} +4 -4
  4. package/dist/adapters/index.cjs.map +1 -1
  5. package/dist/adapters/index.d.cts +10 -10
  6. package/dist/adapters/index.d.ts +10 -10
  7. package/dist/adapters/index.js +7 -7
  8. package/dist/adapters/nestjs/microservices.d.cts +3 -3
  9. package/dist/adapters/nestjs/microservices.d.ts +3 -3
  10. package/dist/adapters/nestjs/native.cjs.map +1 -1
  11. package/dist/adapters/nestjs/native.d.cts +4 -4
  12. package/dist/adapters/nestjs/native.d.ts +4 -4
  13. package/dist/adapters/nestjs/native.js +3 -3
  14. package/dist/adapters/nestjs/websockets.d.cts +3 -3
  15. package/dist/adapters/nestjs/websockets.d.ts +3 -3
  16. package/dist/adapters/nestjs.d.cts +3 -3
  17. package/dist/adapters/nestjs.d.ts +3 -3
  18. package/dist/adapters/observe-storage.d.cts +3 -3
  19. package/dist/adapters/observe-storage.d.ts +3 -3
  20. package/dist/adapters/react.d.cts +2 -2
  21. package/dist/adapters/react.d.ts +2 -2
  22. package/dist/adapters/solid.d.cts +2 -2
  23. package/dist/adapters/solid.d.ts +2 -2
  24. package/dist/adapters/svelte.d.cts +2 -2
  25. package/dist/adapters/svelte.d.ts +2 -2
  26. package/dist/adapters/vue.d.cts +2 -2
  27. package/dist/adapters/vue.d.ts +2 -2
  28. package/dist/{agent-runtime-types-core-hU299uIC.d.ts → agent-runtime-types-core-CKwrBDyi.d.ts} +1 -1
  29. package/dist/{agent-runtime-types-core-CaXfKNtY.d.cts → agent-runtime-types-core-bfl4m0vM.d.cts} +1 -1
  30. package/dist/{agent-runtime-types-tool-DninPEzk.d.cts → agent-runtime-types-tool-BLPV3azj.d.cts} +4 -4
  31. package/dist/{agent-runtime-types-tool-BEpSINol.d.ts → agent-runtime-types-tool-hwqvVqNt.d.ts} +4 -4
  32. package/dist/{agentic-memory-retention-BmGX368S.d.ts → agentic-memory-retention-CLwI76JK.d.ts} +2 -2
  33. package/dist/{agentic-memory-retention-Ih1qhX9Z.d.cts → agentic-memory-retention-Cz8GR6ie.d.cts} +2 -2
  34. package/dist/{agentic-memory-types-FnnYlVUs.d.cts → agentic-memory-types-JDr7MPhh.d.cts} +2 -2
  35. package/dist/{agentic-memory-types-CVSUS6XR.d.ts → agentic-memory-types-khYJgzKL.d.ts} +2 -2
  36. package/dist/{capability-admission-lwSecxXs.d.cts → capability-admission-B8RNFyaZ.d.cts} +3 -3
  37. package/dist/{capability-admission-BW2CziT6.d.ts → capability-admission-Dkw1Xz3r.d.ts} +3 -3
  38. package/dist/{chunk-SIDJO2T4.js → chunk-3J7UPZL5.js} +6 -6
  39. package/dist/{chunk-ECURQ3HD.js → chunk-3LYI6ADX.js} +4 -4
  40. package/dist/chunk-3LYI6ADX.js.map +1 -0
  41. package/dist/{chunk-M7J6Z4IJ.js → chunk-4M37FH2I.js} +2 -2
  42. package/dist/chunk-4M37FH2I.js.map +1 -0
  43. package/dist/{chunk-CJIFGJQG.js → chunk-54WPEODM.js} +2 -2
  44. package/dist/chunk-54WPEODM.js.map +1 -0
  45. package/dist/{chunk-CX6B6PO2.js → chunk-DKFWDTVY.js} +2 -2
  46. package/dist/chunk-DKFWDTVY.js.map +1 -0
  47. package/dist/{chunk-SHZDP2MQ.js → chunk-GXU6WFEJ.js} +1 -1
  48. package/dist/chunk-GXU6WFEJ.js.map +1 -0
  49. package/dist/{chunk-YDWBXXQZ.js → chunk-KFURM6FM.js} +3 -3
  50. package/dist/{chunk-STXRMPW4.js → chunk-MCOFHMUU.js} +2 -2
  51. package/dist/{chunk-EOKT4QFF.js → chunk-NNDIFUKX.js} +3 -3
  52. package/dist/chunk-NNDIFUKX.js.map +1 -0
  53. package/dist/{chunk-TPND5MJS.js → chunk-PUSRRALM.js} +3 -3
  54. package/dist/{chunk-7HZRJMN6.js → chunk-UEMN5URK.js} +2 -2
  55. package/dist/{chunk-2NJP6GO4.js → chunk-WOS7RJYZ.js} +2 -2
  56. package/dist/composition/index.cjs.map +1 -1
  57. package/dist/composition/index.d.cts +3 -3
  58. package/dist/composition/index.d.ts +3 -3
  59. package/dist/composition/index.js +3 -3
  60. package/dist/core/index.cjs.map +1 -1
  61. package/dist/core/index.d.cts +23 -2
  62. package/dist/core/index.d.ts +23 -2
  63. package/dist/core/index.js +1 -1
  64. package/dist/cqrs/index.d.cts +3 -3
  65. package/dist/cqrs/index.d.ts +3 -3
  66. package/dist/cqrs/messaging.d.cts +4 -4
  67. package/dist/cqrs/messaging.d.ts +4 -4
  68. package/dist/cqrs/work-queue.d.cts +5 -5
  69. package/dist/cqrs/work-queue.d.ts +5 -5
  70. package/dist/data-structures/index.cjs.map +1 -1
  71. package/dist/data-structures/index.d.cts +8 -8
  72. package/dist/data-structures/index.d.ts +8 -8
  73. package/dist/data-structures/index.js +4 -4
  74. package/dist/{describe-CQRrkv-Q.d.cts → describe-BumQ-3_0.d.cts} +1 -1
  75. package/dist/{describe-B_A5fbXH.d.ts → describe-cYr_Z5zm.d.ts} +1 -1
  76. package/dist/executors/tool-provider-adapters.d.cts +7 -7
  77. package/dist/executors/tool-provider-adapters.d.ts +7 -7
  78. package/dist/executors/tool-provider-adapters.js +5 -5
  79. package/dist/executors/tool-provider-runtime.cjs.map +1 -1
  80. package/dist/executors/tool-provider-runtime.d.cts +8 -8
  81. package/dist/executors/tool-provider-runtime.d.ts +8 -8
  82. package/dist/executors/tool-provider-runtime.js +2 -2
  83. package/dist/executors/tool-provider.cjs.map +1 -1
  84. package/dist/executors/tool-provider.d.cts +7 -7
  85. package/dist/executors/tool-provider.d.ts +7 -7
  86. package/dist/executors/tool-provider.js +2 -2
  87. package/dist/executors/work-queue.d.cts +6 -6
  88. package/dist/executors/work-queue.d.ts +6 -6
  89. package/dist/graph/index.cjs.map +1 -1
  90. package/dist/graph/index.d.cts +9 -9
  91. package/dist/graph/index.d.ts +9 -9
  92. package/dist/graph/index.js +7 -7
  93. package/dist/{graph-CWK3HLPB.d.cts → graph-C1C-wb0L.d.cts} +135 -8
  94. package/dist/{graph-ho5sotHP.d.ts → graph-CS0b4V9B.d.ts} +135 -8
  95. package/dist/{index-CQWcE0Dw.d.ts → index-DLrNopda.d.cts} +135 -8
  96. package/dist/{index-DHA1i67c.d.cts → index-DzJni3_6.d.ts} +135 -8
  97. package/dist/index.cjs.map +1 -1
  98. package/dist/index.d.cts +12 -12
  99. package/dist/index.d.ts +12 -12
  100. package/dist/index.js +13 -13
  101. package/dist/inspection/boundary.d.cts +4 -4
  102. package/dist/inspection/boundary.d.ts +4 -4
  103. package/dist/{measurements-OMpCeBwh.d.ts → measurements-BWAnochv.d.ts} +139 -9
  104. package/dist/{measurements-C0mAvWU1.d.cts → measurements-B_gJfD8h.d.cts} +139 -9
  105. package/dist/messaging/index.d.cts +5 -5
  106. package/dist/messaging/index.d.ts +5 -5
  107. package/dist/operators/index.cjs.map +1 -1
  108. package/dist/operators/index.d.cts +5 -5
  109. package/dist/operators/index.d.ts +5 -5
  110. package/dist/operators/index.js +4 -4
  111. package/dist/orchestration/index.cjs.map +1 -1
  112. package/dist/orchestration/index.d.cts +12 -12
  113. package/dist/orchestration/index.d.ts +12 -12
  114. package/dist/orchestration/index.js +5 -5
  115. package/dist/orchestration/messaging.d.cts +5 -5
  116. package/dist/orchestration/messaging.d.ts +5 -5
  117. package/dist/orchestration/work-queue.d.cts +8 -8
  118. package/dist/orchestration/work-queue.d.ts +8 -8
  119. package/dist/patterns/event-flow.d.cts +4 -4
  120. package/dist/patterns/event-flow.d.ts +4 -4
  121. package/dist/patterns/index.d.cts +6 -6
  122. package/dist/patterns/index.d.ts +6 -6
  123. package/dist/{process-types-h3uRlzDc.d.cts → process-types-BB7oRhX3.d.cts} +1 -1
  124. package/dist/{process-types-C9uMYz3i.d.ts → process-types-QNhyoYJ8.d.ts} +1 -1
  125. package/dist/{reactive-collection-B9R0Bl1P.d.cts → reactive-collection-BYlWvtnp.d.cts} +3 -3
  126. package/dist/{reactive-collection-BXFrH0U2.d.ts → reactive-collection-efOEdGFN.d.ts} +3 -3
  127. package/dist/{reactive-collection-storage-BLGv8Xp8.d.cts → reactive-collection-storage-BjoLsoiC.d.cts} +5 -5
  128. package/dist/{reactive-collection-storage-a4zD3665.d.ts → reactive-collection-storage-DwW6UuK_.d.ts} +5 -5
  129. package/dist/{reactive-map-jle5dnok.d.ts → reactive-map-BHacbIqz.d.cts} +7 -3
  130. package/dist/{reactive-map-C_8sOfdS.d.cts → reactive-map-DN4Jyqnf.d.ts} +7 -3
  131. package/dist/render/index.d.cts +2 -2
  132. package/dist/render/index.d.ts +2 -2
  133. package/dist/{scheduled-readiness-5rwQlyjV.d.ts → scheduled-readiness-BmqXxnzX.d.ts} +3 -3
  134. package/dist/{scheduled-readiness-DpRY8jI0.d.cts → scheduled-readiness-CYSw7KDE.d.cts} +3 -3
  135. package/dist/{semantic-memory-graph-DlZBD_Eu.d.cts → semantic-memory-graph-B_LwbM-E.d.cts} +2 -2
  136. package/dist/{semantic-memory-graph-C2ZUwIlq.d.ts → semantic-memory-graph-rsFNNhwn.d.ts} +2 -2
  137. package/dist/{semantic-memory-graph-types-BvzdqmkY.d.cts → semantic-memory-graph-types-Y73bbwVI.d.cts} +1 -1
  138. package/dist/{semantic-memory-graph-types-Ci-OtahO.d.ts → semantic-memory-graph-types-safmPkuX.d.ts} +1 -1
  139. package/dist/solutions/index.cjs.map +1 -1
  140. package/dist/solutions/index.d.cts +11 -11
  141. package/dist/solutions/index.d.ts +11 -11
  142. package/dist/solutions/index.js +2 -2
  143. package/dist/solutions/reactive-layout/browser/index.cjs.map +1 -1
  144. package/dist/solutions/reactive-layout/browser/index.d.cts +4 -4
  145. package/dist/solutions/reactive-layout/browser/index.d.ts +4 -4
  146. package/dist/solutions/reactive-layout/browser/index.js +2 -2
  147. package/dist/solutions/reactive-layout/index.cjs.map +1 -1
  148. package/dist/solutions/reactive-layout/index.d.cts +6 -6
  149. package/dist/solutions/reactive-layout/index.d.ts +6 -6
  150. package/dist/solutions/reactive-layout/index.js +2 -2
  151. package/dist/solutions/reactive-layout/node-canvas/index.cjs.map +1 -1
  152. package/dist/solutions/reactive-layout/node-canvas/index.d.cts +4 -4
  153. package/dist/solutions/reactive-layout/node-canvas/index.d.ts +4 -4
  154. package/dist/solutions/reactive-layout/node-canvas/index.js +2 -2
  155. package/dist/solutions/reactive-layout/react-native/index.cjs.map +1 -1
  156. package/dist/solutions/reactive-layout/react-native/index.d.cts +4 -4
  157. package/dist/solutions/reactive-layout/react-native/index.d.ts +4 -4
  158. package/dist/solutions/reactive-layout/react-native/index.js +2 -2
  159. package/dist/solutions/reactive-layout/skia/index.cjs.map +1 -1
  160. package/dist/solutions/reactive-layout/skia/index.d.cts +4 -4
  161. package/dist/solutions/reactive-layout/skia/index.d.ts +4 -4
  162. package/dist/solutions/reactive-layout/skia/index.js +2 -2
  163. package/dist/solutions/work-item/actions.d.cts +10 -10
  164. package/dist/solutions/work-item/actions.d.ts +10 -10
  165. package/dist/solutions/work-item/scheduling.d.cts +9 -9
  166. package/dist/solutions/work-item/scheduling.d.ts +9 -9
  167. package/dist/solutions/work-item/work-queue.d.cts +7 -7
  168. package/dist/solutions/work-item/work-queue.d.ts +7 -7
  169. package/dist/sources/browser.cjs.map +1 -1
  170. package/dist/sources/browser.d.cts +22 -6
  171. package/dist/sources/browser.d.ts +22 -6
  172. package/dist/sources/browser.js +3 -3
  173. package/dist/sources/browser.js.map +1 -1
  174. package/dist/sources/index.cjs.map +1 -1
  175. package/dist/sources/index.d.cts +4 -4
  176. package/dist/sources/index.d.ts +4 -4
  177. package/dist/sources/index.js +3 -3
  178. package/dist/sources/node.d.cts +3 -3
  179. package/dist/sources/node.d.ts +3 -3
  180. package/dist/storage/index.d.cts +5 -5
  181. package/dist/storage/index.d.ts +5 -5
  182. package/dist/{store-BmtEs9mG.d.ts → store-6_CHF6Ge.d.ts} +1 -1
  183. package/dist/{store-PAAsYvML.d.cts → store-BljX8RkQ.d.cts} +1 -1
  184. package/dist/{types-BhveCMg5.d.cts → types-BAw2QVVE.d.cts} +1 -1
  185. package/dist/{types-XDoqxYO9.d.cts → types-BUbbbh4f.d.cts} +1 -1
  186. package/dist/{types-BWK2ay3e.d.cts → types-CMnzoL54.d.cts} +2 -2
  187. package/dist/{types-BS6CyR-x.d.cts → types-CTN3XoMl.d.cts} +30 -0
  188. package/dist/{types-BXKSAoE1.d.cts → types-CV_ohy5T.d.cts} +2 -2
  189. package/dist/{types-C9NOgNJw.d.ts → types-DChxk1vK.d.ts} +30 -0
  190. package/dist/{types-CTsQ8Ww4.d.ts → types-DRu7SnLV.d.ts} +1 -1
  191. package/dist/{types-DL_05n2M.d.ts → types-DeID_FRl.d.ts} +1 -1
  192. package/dist/{types-BRNKoFHj.d.ts → types-IhKH0hGW.d.ts} +2 -2
  193. package/dist/{types-BaPpZItj.d.ts → types-ePlD2uyT.d.ts} +2 -2
  194. package/dist/{work-item-runtime-types-CHO03AKh.d.cts → work-item-runtime-types-BTxLskN5.d.cts} +2 -2
  195. package/dist/{work-item-runtime-types-BqtWnSCS.d.ts → work-item-runtime-types-DAsZbb2y.d.ts} +2 -2
  196. package/dist/work-queue/index.d.cts +6 -6
  197. package/dist/work-queue/index.d.ts +6 -6
  198. package/package.json +9 -1
  199. package/dist/chunk-CJIFGJQG.js.map +0 -1
  200. package/dist/chunk-CX6B6PO2.js.map +0 -1
  201. package/dist/chunk-ECURQ3HD.js.map +0 -1
  202. package/dist/chunk-EOKT4QFF.js.map +0 -1
  203. package/dist/chunk-M7J6Z4IJ.js.map +0 -1
  204. package/dist/chunk-SHZDP2MQ.js.map +0 -1
  205. /package/dist/{chunk-SIDJO2T4.js.map → chunk-3J7UPZL5.js.map} +0 -0
  206. /package/dist/{chunk-YDWBXXQZ.js.map → chunk-KFURM6FM.js.map} +0 -0
  207. /package/dist/{chunk-STXRMPW4.js.map → chunk-MCOFHMUU.js.map} +0 -0
  208. /package/dist/{chunk-TPND5MJS.js.map → chunk-PUSRRALM.js.map} +0 -0
  209. /package/dist/{chunk-7HZRJMN6.js.map → chunk-UEMN5URK.js.map} +0 -0
  210. /package/dist/{chunk-2NJP6GO4.js.map → chunk-WOS7RJYZ.js.map} +0 -0
@@ -1,7 +1,7 @@
1
- import { z as MeasurementAdapter, ac as TextMeasureCapability, f as CellMeasureAdapterOptions, n as ImageMeasurer, o as ImageSizeLookup, a5 as Size, x as MeasureFn, r as InjectedMeasureAdapterOptions, N as PrecomputedMeasureAdapterOptions, a9 as SvgMeasurer, y as MeasuredBlock, P as PositionedBlock, j as ContentBlock, M as MeasureBlockOptions, U as ReactiveBlockLayoutOptions, T as ReactiveBlockLayoutBundle, W as ReactiveFlowLayoutOptions, V as ReactiveFlowLayoutBundle, Y as ReactiveLayoutOptions, X as ReactiveLayoutBundle, h as CircleObstacle, ag as Interval, R as PreparedSegment, i as ComputeFlowLinesOptions, l as FlowLinesResult, $ as RectObstacle, O as Obstacle, k as FlowContainer, F as FlowColumns, a4 as SegmentMeasureStats, a1 as SegmentAdapter, w as LineBreaksResult, af as CharPosition, L as LayoutCursor, u as LayoutNextLineContext, v as LayoutNextLineResult, c as BlockAdaptersProviderOptions, b as BlockAdapters, d as BlockMeasurementProviderOptions, H as Measurements, C as CapabilityTextMeasurementsOptions, g as CellTextMeasurementsOptions, q as ImageSizeMeasurementsOptions, s as InjectedTextMeasurementsOptions, J as MergeMeasurementsOptions, Q as PrecomputedTextMeasurementsOptions, Z as ReadinessMeasurementsOptions, _ as ReadinessTextMeasurementsOptions, a7 as SvgBoundsMeasurementsOptions, ad as TextMeasurementProviderOptions, D as MeasurementIssue, G as MeasurementResult } from './types-BWK2ay3e.cjs';
1
+ import { z as MeasurementAdapter, ac as TextMeasureCapability, f as CellMeasureAdapterOptions, n as ImageMeasurer, o as ImageSizeLookup, a5 as Size, x as MeasureFn, r as InjectedMeasureAdapterOptions, N as PrecomputedMeasureAdapterOptions, a9 as SvgMeasurer, y as MeasuredBlock, P as PositionedBlock, j as ContentBlock, M as MeasureBlockOptions, U as ReactiveBlockLayoutOptions, T as ReactiveBlockLayoutBundle, W as ReactiveFlowLayoutOptions, V as ReactiveFlowLayoutBundle, Y as ReactiveLayoutOptions, X as ReactiveLayoutBundle, h as CircleObstacle, ag as Interval, R as PreparedSegment, i as ComputeFlowLinesOptions, l as FlowLinesResult, $ as RectObstacle, O as Obstacle, k as FlowContainer, F as FlowColumns, a4 as SegmentMeasureStats, a1 as SegmentAdapter, w as LineBreaksResult, af as CharPosition, L as LayoutCursor, u as LayoutNextLineContext, v as LayoutNextLineResult, c as BlockAdaptersProviderOptions, b as BlockAdapters, d as BlockMeasurementProviderOptions, H as Measurements, C as CapabilityTextMeasurementsOptions, g as CellTextMeasurementsOptions, q as ImageSizeMeasurementsOptions, s as InjectedTextMeasurementsOptions, J as MergeMeasurementsOptions, Q as PrecomputedTextMeasurementsOptions, Z as ReadinessMeasurementsOptions, _ as ReadinessTextMeasurementsOptions, a7 as SvgBoundsMeasurementsOptions, ad as TextMeasurementProviderOptions, D as MeasurementIssue, G as MeasurementResult } from './types-CMnzoL54.cjs';
2
2
  import { DataIssue } from './data/index.cjs';
3
- import { d as Graph } from './graph-CWK3HLPB.cjs';
4
- import { N as Node } from './types-BS6CyR-x.cjs';
3
+ import { d as Graph } from './graph-C1C-wb0L.cjs';
4
+ import { N as Node } from './types-CTN3XoMl.cjs';
5
5
 
6
6
  /** Adapter that wraps a caller-owned synchronous measurement function. */
7
7
  declare class InjectedMeasureAdapter implements MeasurementAdapter {
@@ -70,14 +70,67 @@ declare function computeTotalHeight(blocks: readonly PositionedBlock[]): number;
70
70
  /**
71
71
  * Create a graph-visible single-column text layout bundle.
72
72
  *
73
- * D181: this adds ordinary state/output nodes only; it does not add protocol behavior,
74
- * hidden subscriptions, GraphSpec ownership, storage, or platform globals.
73
+ * @param opts - Requires a graph and a graph-visible `measurements` node, plus optional
74
+ * `lineHeight`, `maxWidth`, `targetId`, `segmentAdapter`, and bundle `name`.
75
+ * @returns A `ReactiveLayoutBundle` containing input nodes, setters, and graph-visible output
76
+ * nodes for segments, line breaks, height, and character positions.
77
+ * @example
78
+ * ```ts
79
+ * import { graph } from "@graphrefly/ts";
80
+ * import {
81
+ * cellTextMeasurements,
82
+ * reactiveLayout,
83
+ * } from "@graphrefly/ts/solutions/reactive-layout";
84
+ *
85
+ * const g = graph({ name: "article" });
86
+ * const text = g.state("Hello GraphReFly", { name: "text" });
87
+ * const font = g.state("16px system-ui", { name: "font" });
88
+ * const measurements = cellTextMeasurements({ graph: g, text, font });
89
+ *
90
+ * const layout = reactiveLayout({ graph: g, measurements, maxWidth: 320, lineHeight: 20 });
91
+ * layout.setMaxWidth(280);
92
+ * ```
93
+ * @remarks **Graph-visible:** This creates ordinary state/output nodes only; it does not add
94
+ * protocol behavior, hidden subscriptions, GraphSpec ownership, storage, or platform globals.
95
+ * @category solutions
75
96
  */
76
97
  declare function reactiveLayout(opts: ReactiveLayoutOptions): ReactiveLayoutBundle;
77
98
  /**
78
99
  * Create a graph-visible vertical block layout bundle over the same DOM-free core.
79
100
  *
80
- * Image/SVG sizing is explicit or injected; no async image loading or DOM SVG parsing occurs.
101
+ * @param opts - Requires a graph and a graph-visible block `measurements` node, plus optional
102
+ * `gap`, `targetId`, and bundle `name`.
103
+ * @returns A `ReactiveBlockLayoutBundle` containing the gap input, measured block output,
104
+ * positioned block flow, and total height node.
105
+ * @example
106
+ * ```ts
107
+ * import { graph } from "@graphrefly/ts";
108
+ * import {
109
+ * blockAdaptersProvider,
110
+ * blockMeasurementProvider,
111
+ * reactiveBlockLayout,
112
+ * type MeasurementAdapter,
113
+ * } from "@graphrefly/ts/solutions/reactive-layout";
114
+ *
115
+ * const g = graph({ name: "cards" });
116
+ * const blocks = g.state([{ id: "title", kind: "text", text: "Hello" }]);
117
+ * const maxWidth = g.state(320);
118
+ * const text = g.state<MeasurementAdapter>({
119
+ * measureSegment: (segment) => ({ width: segment.length * 8 }),
120
+ * });
121
+ * const measurements = blockMeasurementProvider({
122
+ * graph: g,
123
+ * blocks,
124
+ * maxWidth,
125
+ * adapters: blockAdaptersProvider({ graph: g, text }),
126
+ * });
127
+ *
128
+ * const layout = reactiveBlockLayout({ graph: g, measurements, gap: 12 });
129
+ * layout.setGap(16);
130
+ * ```
131
+ * @remarks **DOM-free:** Image/SVG sizing is explicit or injected; no async image loading or
132
+ * DOM SVG parsing occurs in the core layout bundle.
133
+ * @category solutions
81
134
  */
82
135
  declare function reactiveBlockLayout(opts: ReactiveBlockLayoutOptions): ReactiveBlockLayoutBundle;
83
136
  /** Create a graph-visible multi-column flow layout bundle with rectangle/circle obstacles. */
@@ -103,9 +156,57 @@ declare function blockedIntervalsForBand(obstacles: readonly Obstacle[], bandTop
103
156
  /** Flow prepared text through columns and carved obstacle slots. */
104
157
  declare function computeFlowLines(segments: readonly PreparedSegment[], opts: ComputeFlowLinesOptions): FlowLinesResult;
105
158
 
106
- /** Segment text and measure every resulting segment with a caller-owned synchronous adapter. */
159
+ /**
160
+ * Segment text and measure every resulting segment with a caller-owned synchronous adapter.
161
+ *
162
+ * @param text - Text to normalize, segment, and measure.
163
+ * @param font - Font descriptor passed through to the measurement adapter.
164
+ * @param adapter - Synchronous measurement adapter used for each segment or grapheme.
165
+ * @param cache - Caller-owned cache keyed by font and segment text.
166
+ * @param stats - Optional cache hit/miss accounting object updated during measurement.
167
+ * @param segmentAdapter - Optional segmentation adapter; defaults to the built-in adapter.
168
+ * @returns A prepared segment list with widths, break kinds, and optional grapheme widths for
169
+ * word-like segments.
170
+ * @example
171
+ * ```ts
172
+ * import { analyzeAndMeasure } from "@graphrefly/ts/solutions/reactive-layout";
173
+ *
174
+ * const segments = analyzeAndMeasure(
175
+ * "Hello world",
176
+ * "16px system-ui",
177
+ * { measureSegment: (segment) => ({ width: segment.length * 8 }) },
178
+ * new Map(),
179
+ * );
180
+ * ```
181
+ * @remarks **Caller-owned adapter:** Measurement stays synchronous and host-injected; browser
182
+ * Canvas, Skia, React Native, or test adapters live outside this helper.
183
+ * @category solutions
184
+ */
107
185
  declare function analyzeAndMeasure(text: string, font: string, adapter: MeasurementAdapter, cache: Map<string, Map<string, number>>, stats?: SegmentMeasureStats, segmentAdapter?: SegmentAdapter): PreparedSegment[];
108
- /** Greedy single-column line breaking over prepared segments. */
186
+ /**
187
+ * Compute greedy single-column line breaks over prepared segments.
188
+ *
189
+ * @param segments - Prepared segments from `analyzeAndMeasure` or a measurement provider.
190
+ * @param maxWidth - Maximum line width in pixels; non-finite or negative values produce no useful
191
+ * width budget.
192
+ * @param opts - Optional hyphen width and segment adapter for grapheme-aware slicing.
193
+ * @returns A `LineBreaksResult` containing ordered layout lines and the line count.
194
+ * @example
195
+ * ```ts
196
+ * import { analyzeAndMeasure, computeLineBreaks } from "@graphrefly/ts/solutions/reactive-layout";
197
+ *
198
+ * const segments = analyzeAndMeasure(
199
+ * "Hello world",
200
+ * "16px system-ui",
201
+ * { measureSegment: (segment) => ({ width: segment.length * 8 }) },
202
+ * new Map(),
203
+ * );
204
+ * const lineBreaks = computeLineBreaks(segments, 64);
205
+ * ```
206
+ * @remarks **Pure helper:** This does not subscribe, schedule, or emit messages; reactive bundles
207
+ * call it from ordinary graph nodes.
208
+ * @category solutions
209
+ */
109
210
  declare function computeLineBreaks(segments: readonly PreparedSegment[], maxWidth: number, opts?: {
110
211
  readonly hyphenWidth?: number;
111
212
  readonly segmentAdapter?: SegmentAdapter;
@@ -114,7 +215,36 @@ declare function computeLineBreaks(segments: readonly PreparedSegment[], maxWidt
114
215
  declare function layoutNextLine(segments: readonly PreparedSegment[], cursor: LayoutCursor, slotWidth: number, ctx?: LayoutNextLineContext): LayoutNextLineResult | null;
115
216
  /** Subtract obstacle intervals from a horizontal text band. */
116
217
  declare function carveTextLineSlots(base: Interval, blocked: readonly Interval[], minSlotWidth?: number): Interval[];
117
- /** Compute per-grapheme boxes for already-broken lines. */
218
+ /**
219
+ * Compute per-grapheme boxes for already-broken lines.
220
+ *
221
+ * @param lineBreaks - Line break result whose cursors identify the visible grapheme ranges.
222
+ * @param segments - Prepared segments used to produce the line breaks.
223
+ * @param lineHeight - Height assigned to every line box.
224
+ * @param segmentAdapter - Optional segmentation adapter; defaults to the built-in adapter.
225
+ * @returns Character-position boxes in visual order, each with `x`, `y`, `width`, `height`, and
226
+ * zero-based line index.
227
+ * @example
228
+ * ```ts
229
+ * import {
230
+ * analyzeAndMeasure,
231
+ * computeCharPositions,
232
+ * computeLineBreaks,
233
+ * } from "@graphrefly/ts/solutions/reactive-layout";
234
+ *
235
+ * const segments = analyzeAndMeasure(
236
+ * "Hello world",
237
+ * "16px system-ui",
238
+ * { measureSegment: (segment) => ({ width: segment.length * 8 }) },
239
+ * new Map(),
240
+ * );
241
+ * const lineBreaks = computeLineBreaks(segments, 64);
242
+ * const positions = computeCharPositions(lineBreaks, segments, 20);
243
+ * ```
244
+ * @remarks **Already measured:** Widths come from the prepared segments; this helper only maps the
245
+ * line cursors into per-grapheme rectangles.
246
+ * @category solutions
247
+ */
118
248
  declare function computeCharPositions(lineBreaks: LineBreaksResult, segments: readonly PreparedSegment[], lineHeight: number, segmentAdapter?: SegmentAdapter): readonly CharPosition[];
119
249
 
120
250
  declare function measurementIssue(code: string, message: string, targetId: string, measurementKind: string, opts?: {
@@ -1,12 +1,12 @@
1
- import { d as Graph } from '../graph-CWK3HLPB.cjs';
2
- import { N as Node } from '../types-BS6CyR-x.cjs';
3
- import { e as EventMessageOptions, E as EventMessage, d as MessageBus, f as MessageBusTopicPage, g as MessageBusOptions, T as ToTopicOptions, h as ToTopicBundle } from '../types-BhveCMg5.cjs';
4
- export { C as CONTEXT_TOPIC, D as DEFERRED_TOPIC, I as INJECTIONS_TOPIC, J as JsonSchema, b as MessageBusAvailablePage, i as MessageBusAvailableParams, j as MessageBusCatalogEntry, k as MessageBusCatalogPage, l as MessageBusCatalogParams, a as MessageBusCommand, m as MessageBusCursor, n as MessageBusDeadLetterEntry, o as MessageBusDeadLetterPage, p as MessageBusDeadLetterParams, q as MessageBusDedupePolicy, M as MessageBusMessage, r as MessageBusPageParams, s as MessageBusPullProjection, t as MessageBusRetentionPolicy, u as MessageBusStatus, v as MessageBusSubscription, w as MessageBusTopicParams, x as MessageBusTopicPolicy, y as MessageBusTopicProjection, c as MessageEnvelope, P as PROMPTS_TOPIC, R as RESPONSES_TOPIC, S as SPAWNS_TOPIC, z as STANDARD_TOPICS, A as StandardTopic, B as TODOS_TOPIC, F as TopicMessage } from '../types-BhveCMg5.cjs';
1
+ import { d as Graph } from '../graph-C1C-wb0L.cjs';
2
+ import { N as Node } from '../types-CTN3XoMl.cjs';
3
+ import { e as EventMessageOptions, E as EventMessage, d as MessageBus, f as MessageBusTopicPage, g as MessageBusOptions, T as ToTopicOptions, h as ToTopicBundle } from '../types-BAw2QVVE.cjs';
4
+ export { C as CONTEXT_TOPIC, D as DEFERRED_TOPIC, I as INJECTIONS_TOPIC, J as JsonSchema, b as MessageBusAvailablePage, i as MessageBusAvailableParams, j as MessageBusCatalogEntry, k as MessageBusCatalogPage, l as MessageBusCatalogParams, a as MessageBusCommand, m as MessageBusCursor, n as MessageBusDeadLetterEntry, o as MessageBusDeadLetterPage, p as MessageBusDeadLetterParams, q as MessageBusDedupePolicy, M as MessageBusMessage, r as MessageBusPageParams, s as MessageBusPullProjection, t as MessageBusRetentionPolicy, u as MessageBusStatus, v as MessageBusSubscription, w as MessageBusTopicParams, x as MessageBusTopicPolicy, y as MessageBusTopicProjection, c as MessageEnvelope, P as PROMPTS_TOPIC, R as RESPONSES_TOPIC, S as SPAWNS_TOPIC, z as STANDARD_TOPICS, A as StandardTopic, B as TODOS_TOPIC, F as TopicMessage } from '../types-BAw2QVVE.cjs';
5
5
  import { DataIssue } from '../data/index.cjs';
6
6
  import '../core/index.cjs';
7
7
  import '../messages-CAzUPPJM.cjs';
8
8
  import '../codec-BB7p8fJc.cjs';
9
- import '../describe-CQRrkv-Q.cjs';
9
+ import '../describe-BumQ-3_0.cjs';
10
10
 
11
11
  declare function eventMessage<T>(type: string, payload: T, opts: EventMessageOptions): EventMessage<T>;
12
12
  declare function isEventMessage(value: unknown): value is EventMessage;
@@ -1,12 +1,12 @@
1
- import { d as Graph } from '../graph-ho5sotHP.js';
2
- import { N as Node } from '../types-C9NOgNJw.js';
3
- import { e as EventMessageOptions, E as EventMessage, d as MessageBus, f as MessageBusTopicPage, g as MessageBusOptions, T as ToTopicOptions, h as ToTopicBundle } from '../types-CTsQ8Ww4.js';
4
- export { C as CONTEXT_TOPIC, D as DEFERRED_TOPIC, I as INJECTIONS_TOPIC, J as JsonSchema, b as MessageBusAvailablePage, i as MessageBusAvailableParams, j as MessageBusCatalogEntry, k as MessageBusCatalogPage, l as MessageBusCatalogParams, a as MessageBusCommand, m as MessageBusCursor, n as MessageBusDeadLetterEntry, o as MessageBusDeadLetterPage, p as MessageBusDeadLetterParams, q as MessageBusDedupePolicy, M as MessageBusMessage, r as MessageBusPageParams, s as MessageBusPullProjection, t as MessageBusRetentionPolicy, u as MessageBusStatus, v as MessageBusSubscription, w as MessageBusTopicParams, x as MessageBusTopicPolicy, y as MessageBusTopicProjection, c as MessageEnvelope, P as PROMPTS_TOPIC, R as RESPONSES_TOPIC, S as SPAWNS_TOPIC, z as STANDARD_TOPICS, A as StandardTopic, B as TODOS_TOPIC, F as TopicMessage } from '../types-CTsQ8Ww4.js';
1
+ import { d as Graph } from '../graph-CS0b4V9B.js';
2
+ import { N as Node } from '../types-DChxk1vK.js';
3
+ import { e as EventMessageOptions, E as EventMessage, d as MessageBus, f as MessageBusTopicPage, g as MessageBusOptions, T as ToTopicOptions, h as ToTopicBundle } from '../types-DRu7SnLV.js';
4
+ export { C as CONTEXT_TOPIC, D as DEFERRED_TOPIC, I as INJECTIONS_TOPIC, J as JsonSchema, b as MessageBusAvailablePage, i as MessageBusAvailableParams, j as MessageBusCatalogEntry, k as MessageBusCatalogPage, l as MessageBusCatalogParams, a as MessageBusCommand, m as MessageBusCursor, n as MessageBusDeadLetterEntry, o as MessageBusDeadLetterPage, p as MessageBusDeadLetterParams, q as MessageBusDedupePolicy, M as MessageBusMessage, r as MessageBusPageParams, s as MessageBusPullProjection, t as MessageBusRetentionPolicy, u as MessageBusStatus, v as MessageBusSubscription, w as MessageBusTopicParams, x as MessageBusTopicPolicy, y as MessageBusTopicProjection, c as MessageEnvelope, P as PROMPTS_TOPIC, R as RESPONSES_TOPIC, S as SPAWNS_TOPIC, z as STANDARD_TOPICS, A as StandardTopic, B as TODOS_TOPIC, F as TopicMessage } from '../types-DRu7SnLV.js';
5
5
  import { DataIssue } from '../data/index.js';
6
6
  import '../core/index.js';
7
7
  import '../messages-CAzUPPJM.js';
8
8
  import '../codec-BB7p8fJc.js';
9
- import '../describe-B_A5fbXH.js';
9
+ import '../describe-cYr_Z5zm.js';
10
10
 
11
11
  declare function eventMessage<T>(type: string, payload: T, opts: EventMessageOptions): EventMessage<T>;
12
12
  declare function isEventMessage(value: unknown): value is EventMessage;