@graphrefly/graphrefly 0.45.0 → 0.46.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.
- package/README.md +1 -2
- package/dist/_internal-B23BagFd.d.cts +33 -0
- package/dist/_internal-B23BagFd.d.ts +33 -0
- package/dist/adaptive-rate-limiter-Dch_xYIi.d.cts +111 -0
- package/dist/adaptive-rate-limiter-Dch_xYIi.d.ts +111 -0
- package/dist/agents-C0Ji9ldU.d.cts +629 -0
- package/dist/agents-C9zexT7I.d.ts +629 -0
- package/dist/audit-BAXb3VOg.d.ts +246 -0
- package/dist/audit-C_bPfkqS.d.cts +246 -0
- package/dist/backoff-7KIK3WQW.js +24 -0
- package/dist/backoff-7KIK3WQW.js.map +1 -0
- package/dist/backoff-Bnb9OoPh.d.cts +6 -0
- package/dist/backoff-Bnb9OoPh.d.ts +6 -0
- package/dist/base/composition/index.cjs +811 -0
- package/dist/base/composition/index.cjs.map +1 -0
- package/dist/base/composition/index.d.cts +469 -0
- package/dist/base/composition/index.d.ts +469 -0
- package/dist/base/composition/index.js +40 -0
- package/dist/base/composition/index.js.map +1 -0
- package/dist/base/index.cjs +6336 -0
- package/dist/base/index.cjs.map +1 -0
- package/dist/base/index.d.cts +22 -0
- package/dist/base/index.d.ts +22 -0
- package/dist/base/index.js +259 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/io/index.cjs +3270 -0
- package/dist/base/io/index.cjs.map +1 -0
- package/dist/base/io/index.d.cts +2245 -0
- package/dist/base/io/index.d.ts +2245 -0
- package/dist/base/io/index.js +117 -0
- package/dist/base/io/index.js.map +1 -0
- package/dist/base/meta/index.cjs +43 -0
- package/dist/base/meta/index.cjs.map +1 -0
- package/dist/base/meta/index.d.cts +45 -0
- package/dist/base/meta/index.d.ts +45 -0
- package/dist/base/meta/index.js +13 -0
- package/dist/base/meta/index.js.map +1 -0
- package/dist/base/mutation/index.cjs +200 -0
- package/dist/base/mutation/index.cjs.map +1 -0
- package/dist/base/mutation/index.d.cts +177 -0
- package/dist/base/mutation/index.d.ts +177 -0
- package/dist/base/mutation/index.js +22 -0
- package/dist/base/mutation/index.js.map +1 -0
- package/dist/base/render/index.cjs +1120 -0
- package/dist/base/render/index.cjs.map +1 -0
- package/dist/base/render/index.d.cts +227 -0
- package/dist/base/render/index.d.ts +227 -0
- package/dist/base/render/index.js +24 -0
- package/dist/base/render/index.js.map +1 -0
- package/dist/base/sources/browser/index.cjs +172 -0
- package/dist/base/sources/browser/index.cjs.map +1 -0
- package/dist/base/sources/browser/index.d.cts +84 -0
- package/dist/base/sources/browser/index.d.ts +84 -0
- package/dist/base/sources/browser/index.js +151 -0
- package/dist/base/sources/browser/index.js.map +1 -0
- package/dist/base/sources/event/index.cjs +98 -0
- package/dist/base/sources/event/index.cjs.map +1 -0
- package/dist/base/sources/event/index.d.cts +91 -0
- package/dist/base/sources/event/index.d.ts +91 -0
- package/dist/base/sources/event/index.js +13 -0
- package/dist/base/sources/event/index.js.map +1 -0
- package/dist/base/sources/index.cjs +755 -0
- package/dist/base/sources/index.cjs.map +1 -0
- package/dist/base/sources/index.d.cts +357 -0
- package/dist/base/sources/index.d.ts +357 -0
- package/dist/base/sources/index.js +42 -0
- package/dist/base/sources/index.js.map +1 -0
- package/dist/base/sources/node/index.cjs +320 -0
- package/dist/base/sources/node/index.cjs.map +1 -0
- package/dist/base/sources/node/index.d.cts +185 -0
- package/dist/base/sources/node/index.d.ts +185 -0
- package/dist/base/sources/node/index.js +306 -0
- package/dist/base/sources/node/index.js.map +1 -0
- package/dist/base/utils/index.cjs +37 -0
- package/dist/base/utils/index.cjs.map +1 -0
- package/dist/base/utils/index.d.cts +37 -0
- package/dist/base/utils/index.d.ts +37 -0
- package/dist/base/utils/index.js +11 -0
- package/dist/base/utils/index.js.map +1 -0
- package/dist/base/worker/index.cjs +548 -0
- package/dist/base/worker/index.cjs.map +1 -0
- package/dist/base/worker/index.d.cts +207 -0
- package/dist/base/worker/index.d.ts +207 -0
- package/dist/base/worker/index.js +20 -0
- package/dist/base/worker/index.js.map +1 -0
- package/dist/breaker-C9skL3d8.d.ts +175 -0
- package/dist/breaker-ugSdq54q.d.cts +175 -0
- package/dist/cascading-CSSbKGrJ.d.ts +199 -0
- package/dist/cascading-baGkiihI.d.cts +199 -0
- package/dist/chunk-255UCBG4.js +58 -0
- package/dist/chunk-255UCBG4.js.map +1 -0
- package/dist/chunk-2LO3EL4W.js +1 -0
- package/dist/chunk-2LO3EL4W.js.map +1 -0
- package/dist/chunk-2OB3CEJS.js +1065 -0
- package/dist/chunk-2OB3CEJS.js.map +1 -0
- package/dist/chunk-36NMM65U.js +144 -0
- package/dist/chunk-36NMM65U.js.map +1 -0
- package/dist/chunk-3CEXCBN6.js +1 -0
- package/dist/chunk-3CEXCBN6.js.map +1 -0
- package/dist/chunk-3MUSLI6E.js +105 -0
- package/dist/chunk-3MUSLI6E.js.map +1 -0
- package/dist/chunk-3PSLNJDU.js +884 -0
- package/dist/chunk-3PSLNJDU.js.map +1 -0
- package/dist/chunk-3QZY5BI7.js +92 -0
- package/dist/chunk-3QZY5BI7.js.map +1 -0
- package/dist/chunk-42FQ27MQ.js +594 -0
- package/dist/chunk-42FQ27MQ.js.map +1 -0
- package/dist/chunk-4GYMCUDZ.js +1085 -0
- package/dist/chunk-4GYMCUDZ.js.map +1 -0
- package/dist/chunk-4S53H2KR.js +382 -0
- package/dist/chunk-4S53H2KR.js.map +1 -0
- package/dist/chunk-4XCHZRUJ.js +128 -0
- package/dist/chunk-4XCHZRUJ.js.map +1 -0
- package/dist/chunk-5THCXDWY.js +725 -0
- package/dist/chunk-5THCXDWY.js.map +1 -0
- package/dist/chunk-6XZYT4SW.js +256 -0
- package/dist/chunk-6XZYT4SW.js.map +1 -0
- package/dist/chunk-7EGRP2VX.js +76 -0
- package/dist/chunk-7EGRP2VX.js.map +1 -0
- package/dist/chunk-A7KV5UK4.js +150 -0
- package/dist/chunk-A7KV5UK4.js.map +1 -0
- package/dist/chunk-APY2SS5X.js +156 -0
- package/dist/chunk-APY2SS5X.js.map +1 -0
- package/dist/chunk-AZDQPQ3V.js +66 -0
- package/dist/chunk-AZDQPQ3V.js.map +1 -0
- package/dist/chunk-BU3SEFA5.js +90 -0
- package/dist/chunk-BU3SEFA5.js.map +1 -0
- package/dist/chunk-BXGZFGZ4.js +189 -0
- package/dist/chunk-BXGZFGZ4.js.map +1 -0
- package/dist/chunk-CGHORL6G.js +579 -0
- package/dist/chunk-CGHORL6G.js.map +1 -0
- package/dist/chunk-CXANAIZU.js +530 -0
- package/dist/chunk-CXANAIZU.js.map +1 -0
- package/dist/chunk-CZQHCKKG.js +1 -0
- package/dist/chunk-CZQHCKKG.js.map +1 -0
- package/dist/chunk-DKNHAICT.js +133 -0
- package/dist/chunk-DKNHAICT.js.map +1 -0
- package/dist/chunk-DM4OMPWK.js +584 -0
- package/dist/chunk-DM4OMPWK.js.map +1 -0
- package/dist/chunk-DMSNO6ZB.js +452 -0
- package/dist/chunk-DMSNO6ZB.js.map +1 -0
- package/dist/chunk-E5OZPDIW.js +229 -0
- package/dist/chunk-E5OZPDIW.js.map +1 -0
- package/dist/chunk-EVYY4X5A.js +509 -0
- package/dist/chunk-EVYY4X5A.js.map +1 -0
- package/dist/chunk-FDFD67UO.js +1 -0
- package/dist/chunk-FDFD67UO.js.map +1 -0
- package/dist/chunk-FMPF42Q4.js +13 -0
- package/dist/chunk-FMPF42Q4.js.map +1 -0
- package/dist/chunk-FR6RGA3B.js +1277 -0
- package/dist/chunk-FR6RGA3B.js.map +1 -0
- package/dist/chunk-FW23JYNQ.js +454 -0
- package/dist/chunk-FW23JYNQ.js.map +1 -0
- package/dist/chunk-GBCENOLN.js +1575 -0
- package/dist/chunk-GBCENOLN.js.map +1 -0
- package/dist/chunk-HL7HUJIX.js +1 -0
- package/dist/chunk-HL7HUJIX.js.map +1 -0
- package/dist/chunk-HULCUY35.js +2508 -0
- package/dist/chunk-HULCUY35.js.map +1 -0
- package/dist/chunk-IHTWQEDR.js +169 -0
- package/dist/chunk-IHTWQEDR.js.map +1 -0
- package/dist/chunk-IJRR6YAI.js +128 -0
- package/dist/chunk-IJRR6YAI.js.map +1 -0
- package/dist/chunk-JGFRAFDL.js +221 -0
- package/dist/chunk-JGFRAFDL.js.map +1 -0
- package/dist/chunk-KIIXR252.js +211 -0
- package/dist/chunk-KIIXR252.js.map +1 -0
- package/dist/chunk-KN3H5CNT.js +11 -0
- package/dist/chunk-KN3H5CNT.js.map +1 -0
- package/dist/chunk-KPG3DGLA.js +1 -0
- package/dist/chunk-KPG3DGLA.js.map +1 -0
- package/dist/chunk-KRNQ6RGQ.js +1 -0
- package/dist/chunk-KRNQ6RGQ.js.map +1 -0
- package/dist/chunk-LBAJK24K.js +1071 -0
- package/dist/chunk-LBAJK24K.js.map +1 -0
- package/dist/chunk-MLTPJMH6.js +417 -0
- package/dist/chunk-MLTPJMH6.js.map +1 -0
- package/dist/chunk-N3SZ7BMH.js +95 -0
- package/dist/chunk-N3SZ7BMH.js.map +1 -0
- package/dist/chunk-NDUD3IMO.js +540 -0
- package/dist/chunk-NDUD3IMO.js.map +1 -0
- package/dist/chunk-NY2PYHNC.js +873 -0
- package/dist/chunk-NY2PYHNC.js.map +1 -0
- package/dist/chunk-O3MT7DYI.js +225 -0
- package/dist/chunk-O3MT7DYI.js.map +1 -0
- package/dist/chunk-OCUDSN63.js +2386 -0
- package/dist/chunk-OCUDSN63.js.map +1 -0
- package/dist/chunk-OIWU3NYV.js +199 -0
- package/dist/chunk-OIWU3NYV.js.map +1 -0
- package/dist/chunk-OO5BM6CJ.js +1153 -0
- package/dist/chunk-OO5BM6CJ.js.map +1 -0
- package/dist/chunk-OQUIJT7A.js +1 -0
- package/dist/chunk-OQUIJT7A.js.map +1 -0
- package/dist/chunk-P5LBT622.js +105 -0
- package/dist/chunk-P5LBT622.js.map +1 -0
- package/dist/chunk-PKGQG5QQ.js +519 -0
- package/dist/chunk-PKGQG5QQ.js.map +1 -0
- package/dist/chunk-PKPO3JTZ.js +561 -0
- package/dist/chunk-PKPO3JTZ.js.map +1 -0
- package/dist/chunk-PL5UDIQ5.js +118 -0
- package/dist/chunk-PL5UDIQ5.js.map +1 -0
- package/dist/chunk-PZWISPIQ.js +432 -0
- package/dist/chunk-PZWISPIQ.js.map +1 -0
- package/dist/chunk-Q3EYOCZB.js +510 -0
- package/dist/chunk-Q3EYOCZB.js.map +1 -0
- package/dist/chunk-QMBYUVRL.js +15 -0
- package/dist/chunk-QMBYUVRL.js.map +1 -0
- package/dist/chunk-RAGGHLCV.js +200 -0
- package/dist/chunk-RAGGHLCV.js.map +1 -0
- package/dist/chunk-RGL53X5G.js +574 -0
- package/dist/chunk-RGL53X5G.js.map +1 -0
- package/dist/chunk-RJOG4IJU.js +1039 -0
- package/dist/chunk-RJOG4IJU.js.map +1 -0
- package/dist/chunk-SOOKUYVM.js +403 -0
- package/dist/chunk-SOOKUYVM.js.map +1 -0
- package/dist/chunk-T5BN5KG7.js +1 -0
- package/dist/chunk-T5BN5KG7.js.map +1 -0
- package/dist/chunk-TP7244Y6.js +207 -0
- package/dist/chunk-TP7244Y6.js.map +1 -0
- package/dist/chunk-TSBFTJKM.js +57 -0
- package/dist/chunk-TSBFTJKM.js.map +1 -0
- package/dist/chunk-URQ2CBBF.js +143 -0
- package/dist/chunk-URQ2CBBF.js.map +1 -0
- package/dist/chunk-W2BOPXTI.js +1 -0
- package/dist/chunk-W2BOPXTI.js.map +1 -0
- package/dist/chunk-WKSWLSCX.js +207 -0
- package/dist/chunk-WKSWLSCX.js.map +1 -0
- package/dist/chunk-Y52CS6YA.js +88 -0
- package/dist/chunk-Y52CS6YA.js.map +1 -0
- package/dist/chunk-YCBUWK77.js +92 -0
- package/dist/chunk-YCBUWK77.js.map +1 -0
- package/dist/chunk-YJ4U2D2C.js +314 -0
- package/dist/chunk-YJ4U2D2C.js.map +1 -0
- package/dist/chunk-Z4YXAUDN.js +239 -0
- package/dist/chunk-Z4YXAUDN.js.map +1 -0
- package/dist/chunk-Z6EGP5D7.js +92 -0
- package/dist/chunk-Z6EGP5D7.js.map +1 -0
- package/dist/compat/index.cjs +3083 -2
- package/dist/compat/index.cjs.map +1 -1
- package/dist/compat/index.d.cts +116 -1
- package/dist/compat/index.d.ts +116 -1
- package/dist/compat/index.js +175 -2
- package/dist/compat/index.js.map +1 -1
- package/dist/compat/jotai/index.cjs +130 -2
- package/dist/compat/jotai/index.cjs.map +1 -1
- package/dist/compat/jotai/index.d.cts +2 -1
- package/dist/compat/jotai/index.d.ts +2 -1
- package/dist/compat/jotai/index.js +7 -2
- package/dist/compat/jotai/index.js.map +1 -1
- package/dist/compat/nanostores/index.cjs +186 -2
- package/dist/compat/nanostores/index.cjs.map +1 -1
- package/dist/compat/nanostores/index.d.cts +2 -1
- package/dist/compat/nanostores/index.d.ts +2 -1
- package/dist/compat/nanostores/index.js +21 -2
- package/dist/compat/nanostores/index.js.map +1 -1
- package/dist/compat/nestjs/index.cjs +2224 -2
- package/dist/compat/nestjs/index.cjs.map +1 -1
- package/dist/compat/nestjs/index.d.cts +10 -1
- package/dist/compat/nestjs/index.d.ts +10 -1
- package/dist/compat/nestjs/index.js +77 -2
- package/dist/compat/nestjs/index.js.map +1 -1
- package/dist/compat/react/index.cjs +95 -2
- package/dist/compat/react/index.cjs.map +1 -1
- package/dist/compat/react/index.d.cts +2 -1
- package/dist/compat/react/index.d.ts +2 -1
- package/dist/compat/react/index.js +11 -2
- package/dist/compat/react/index.js.map +1 -1
- package/dist/compat/solid/index.cjs +82 -2
- package/dist/compat/solid/index.cjs.map +1 -1
- package/dist/compat/solid/index.d.cts +2 -1
- package/dist/compat/solid/index.d.ts +2 -1
- package/dist/compat/solid/index.js +11 -2
- package/dist/compat/solid/index.js.map +1 -1
- package/dist/compat/svelte/index.cjs +85 -2
- package/dist/compat/svelte/index.cjs.map +1 -1
- package/dist/compat/svelte/index.d.cts +2 -1
- package/dist/compat/svelte/index.d.ts +2 -1
- package/dist/compat/svelte/index.js +11 -2
- package/dist/compat/svelte/index.js.map +1 -1
- package/dist/compat/vue/index.cjs +100 -2
- package/dist/compat/vue/index.cjs.map +1 -1
- package/dist/compat/vue/index.d.cts +3 -1
- package/dist/compat/vue/index.d.ts +3 -1
- package/dist/compat/vue/index.js +11 -2
- package/dist/compat/vue/index.js.map +1 -1
- package/dist/compat/zustand/index.cjs +50 -2
- package/dist/compat/zustand/index.cjs.map +1 -1
- package/dist/compat/zustand/index.d.cts +2 -1
- package/dist/compat/zustand/index.d.ts +2 -1
- package/dist/compat/zustand/index.js +7 -2
- package/dist/compat/zustand/index.js.map +1 -1
- package/dist/distill-De6Rnn15.d.cts +48 -0
- package/dist/distill-De6Rnn15.d.ts +48 -0
- package/dist/external-register-CWyroXb_.d.cts +138 -0
- package/dist/external-register-CWyroXb_.d.ts +138 -0
- package/dist/fallback-Bx46zqky.d.cts +243 -0
- package/dist/fallback-pIWW8A2d.d.ts +243 -0
- package/dist/guarded-execution-BcdtxeBk.d.ts +207 -0
- package/dist/guarded-execution-C-3hnP6A.d.cts +207 -0
- package/dist/index-5SU_O78r.d.cts +754 -0
- package/dist/index-B6pxYJzO.d.cts +36 -0
- package/dist/index-B6pxYJzO.d.ts +36 -0
- package/dist/index-BFsng6v1.d.cts +44 -0
- package/dist/index-BFsng6v1.d.ts +44 -0
- package/dist/index-Bg-LwEt-.d.cts +45 -0
- package/dist/index-Bg-LwEt-.d.ts +45 -0
- package/dist/index-Brp888t0.d.cts +127 -0
- package/dist/index-Brp888t0.d.ts +127 -0
- package/dist/index-CDfk6jHN.d.cts +37 -0
- package/dist/index-CDfk6jHN.d.ts +37 -0
- package/dist/index-CEXCtYYJ.d.ts +754 -0
- package/dist/index-DLAxYaN5.d.cts +169 -0
- package/dist/index-DLAxYaN5.d.ts +169 -0
- package/dist/index-DeWbQzMe.d.cts +34 -0
- package/dist/index-DeWbQzMe.d.ts +34 -0
- package/dist/index-dX9IzPqj.d.cts +86 -0
- package/dist/index-dX9IzPqj.d.ts +86 -0
- package/dist/index.cjs +25950 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +56 -42
- package/dist/index.d.ts +56 -42
- package/dist/index.js +849 -0
- package/dist/index.js.map +1 -1
- package/dist/layout-types-B5aiHYgk.d.cts +72 -0
- package/dist/layout-types-B5aiHYgk.d.ts +72 -0
- package/dist/memory-composers-BryDrRBX.d.cts +529 -0
- package/dist/memory-composers-CVQqPYEV.d.ts +529 -0
- package/dist/observable-BXQoW1P-.d.cts +36 -0
- package/dist/observable-BXQoW1P-.d.ts +36 -0
- package/dist/pipeline-graph-Ce47CB6Y.d.cts +145 -0
- package/dist/pipeline-graph-DXCwY9vG.d.ts +145 -0
- package/dist/presets/ai/index.cjs +4377 -0
- package/dist/presets/ai/index.cjs.map +1 -0
- package/dist/presets/ai/index.d.cts +98 -0
- package/dist/presets/ai/index.d.ts +98 -0
- package/dist/presets/ai/index.js +54 -0
- package/dist/presets/ai/index.js.map +1 -0
- package/dist/presets/harness/index.cjs +5929 -0
- package/dist/presets/harness/index.cjs.map +1 -0
- package/dist/presets/harness/index.d.cts +566 -0
- package/dist/presets/harness/index.d.ts +566 -0
- package/dist/presets/harness/index.js +71 -0
- package/dist/presets/harness/index.js.map +1 -0
- package/dist/presets/index.cjs +9782 -0
- package/dist/presets/index.cjs.map +1 -0
- package/dist/presets/index.d.cts +28 -0
- package/dist/presets/index.d.ts +28 -0
- package/dist/presets/index.js +129 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/inspect/index.cjs +1087 -0
- package/dist/presets/inspect/index.cjs.map +1 -0
- package/dist/presets/inspect/index.d.cts +172 -0
- package/dist/presets/inspect/index.d.ts +172 -0
- package/dist/presets/inspect/index.js +21 -0
- package/dist/presets/inspect/index.js.map +1 -0
- package/dist/presets/resilience/index.cjs +1593 -0
- package/dist/presets/resilience/index.cjs.map +1 -0
- package/dist/presets/resilience/index.d.cts +205 -0
- package/dist/presets/resilience/index.d.ts +205 -0
- package/dist/presets/resilience/index.js +18 -0
- package/dist/presets/resilience/index.js.map +1 -0
- package/dist/rate-limiter-CEALq4N1.d.ts +559 -0
- package/dist/rate-limiter-DpVbSYdH.d.cts +559 -0
- package/dist/reactive-layout-fswlBUvX.d.cts +195 -0
- package/dist/reactive-layout-fswlBUvX.d.ts +195 -0
- package/dist/retry-BDbRZ_gx.d.ts +125 -0
- package/dist/retry-DWuhjvsA.d.cts +125 -0
- package/dist/solutions/index.cjs +8200 -0
- package/dist/solutions/index.cjs.map +1 -0
- package/dist/solutions/index.d.cts +23 -0
- package/dist/solutions/index.d.ts +23 -0
- package/dist/solutions/index.js +55 -0
- package/dist/solutions/index.js.map +1 -0
- package/dist/spawnable-5mDY501F.d.cts +746 -0
- package/dist/spawnable-D3lR0oQu.d.ts +746 -0
- package/dist/status-U-rUI79b.d.cts +84 -0
- package/dist/status-U-rUI79b.d.ts +84 -0
- package/dist/timeout-U5O4ESK3.js +12 -0
- package/dist/timeout-U5O4ESK3.js.map +1 -0
- package/dist/types-BB5Lw-pB.d.cts +442 -0
- package/dist/types-BB5Lw-pB.d.ts +442 -0
- package/dist/types-CJWIMJiZ.d.ts +548 -0
- package/dist/types-vCq7ShIm.d.cts +548 -0
- package/dist/utils/ai/browser.cjs +2169 -0
- package/dist/utils/ai/browser.cjs.map +1 -0
- package/dist/utils/ai/browser.d.cts +129 -0
- package/dist/utils/ai/browser.d.ts +129 -0
- package/dist/utils/ai/browser.js +255 -0
- package/dist/utils/ai/browser.js.map +1 -0
- package/dist/utils/ai/index.cjs +8468 -0
- package/dist/utils/ai/index.cjs.map +1 -0
- package/dist/utils/ai/index.d.cts +1777 -0
- package/dist/utils/ai/index.d.ts +1777 -0
- package/dist/utils/ai/index.js +173 -0
- package/dist/utils/ai/index.js.map +1 -0
- package/dist/utils/ai/node.cjs +648 -0
- package/dist/utils/ai/node.cjs.map +1 -0
- package/dist/utils/ai/node.d.cts +57 -0
- package/dist/utils/ai/node.d.ts +57 -0
- package/dist/utils/ai/node.js +84 -0
- package/dist/utils/ai/node.js.map +1 -0
- package/dist/utils/cqrs/index.cjs +1036 -0
- package/dist/utils/cqrs/index.cjs.map +1 -0
- package/dist/utils/cqrs/index.d.cts +438 -0
- package/dist/utils/cqrs/index.d.ts +438 -0
- package/dist/utils/cqrs/index.js +18 -0
- package/dist/utils/cqrs/index.js.map +1 -0
- package/dist/utils/demo-shell/index.cjs +865 -0
- package/dist/utils/demo-shell/index.cjs.map +1 -0
- package/dist/utils/demo-shell/index.d.cts +90 -0
- package/dist/utils/demo-shell/index.d.ts +90 -0
- package/dist/utils/demo-shell/index.js +13 -0
- package/dist/utils/demo-shell/index.js.map +1 -0
- package/dist/utils/domain-templates/index.cjs +732 -0
- package/dist/utils/domain-templates/index.cjs.map +1 -0
- package/dist/utils/domain-templates/index.d.cts +214 -0
- package/dist/utils/domain-templates/index.d.ts +214 -0
- package/dist/utils/domain-templates/index.js +17 -0
- package/dist/utils/domain-templates/index.js.map +1 -0
- package/dist/utils/graphspec/index.cjs +1174 -0
- package/dist/utils/graphspec/index.cjs.map +1 -0
- package/dist/utils/graphspec/index.d.cts +449 -0
- package/dist/utils/graphspec/index.d.ts +449 -0
- package/dist/utils/graphspec/index.js +35 -0
- package/dist/utils/graphspec/index.js.map +1 -0
- package/dist/utils/harness/index.cjs +656 -0
- package/dist/utils/harness/index.cjs.map +1 -0
- package/dist/utils/harness/index.d.cts +542 -0
- package/dist/utils/harness/index.d.ts +542 -0
- package/dist/utils/harness/index.js +56 -0
- package/dist/utils/harness/index.js.map +1 -0
- package/dist/utils/index.cjs +17609 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +96 -0
- package/dist/utils/index.d.ts +96 -0
- package/dist/utils/index.js +514 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/inspect/index.cjs +807 -0
- package/dist/utils/inspect/index.cjs.map +1 -0
- package/dist/utils/inspect/index.d.cts +123 -0
- package/dist/utils/inspect/index.d.ts +123 -0
- package/dist/utils/inspect/index.js +30 -0
- package/dist/utils/inspect/index.js.map +1 -0
- package/dist/utils/job-queue/index.cjs +717 -0
- package/dist/utils/job-queue/index.cjs.map +1 -0
- package/dist/utils/job-queue/index.d.cts +200 -0
- package/dist/utils/job-queue/index.d.ts +200 -0
- package/dist/utils/job-queue/index.js +18 -0
- package/dist/utils/job-queue/index.js.map +1 -0
- package/dist/utils/memory/index.cjs +1451 -0
- package/dist/utils/memory/index.cjs.map +1 -0
- package/dist/utils/memory/index.d.cts +582 -0
- package/dist/utils/memory/index.d.ts +582 -0
- package/dist/utils/memory/index.js +19 -0
- package/dist/utils/memory/index.js.map +1 -0
- package/dist/utils/messaging/index.cjs +666 -0
- package/dist/utils/messaging/index.cjs.map +1 -0
- package/dist/utils/messaging/index.d.cts +562 -0
- package/dist/utils/messaging/index.d.ts +562 -0
- package/dist/utils/messaging/index.js +50 -0
- package/dist/utils/messaging/index.js.map +1 -0
- package/dist/utils/orchestration/index.cjs +876 -0
- package/dist/utils/orchestration/index.cjs.map +1 -0
- package/dist/utils/orchestration/index.d.cts +233 -0
- package/dist/utils/orchestration/index.d.ts +233 -0
- package/dist/utils/orchestration/index.js +19 -0
- package/dist/utils/orchestration/index.js.map +1 -0
- package/dist/utils/process/index.cjs +743 -0
- package/dist/utils/process/index.cjs.map +1 -0
- package/dist/utils/process/index.d.cts +411 -0
- package/dist/utils/process/index.d.ts +411 -0
- package/dist/utils/process/index.js +14 -0
- package/dist/utils/process/index.js.map +1 -0
- package/dist/utils/reactive-layout/index.cjs +1607 -0
- package/dist/utils/reactive-layout/index.cjs.map +1 -0
- package/dist/utils/reactive-layout/index.d.cts +492 -0
- package/dist/utils/reactive-layout/index.d.ts +492 -0
- package/dist/utils/reactive-layout/index.js +52 -0
- package/dist/utils/reactive-layout/index.js.map +1 -0
- package/dist/utils/reduction/index.cjs +203 -0
- package/dist/utils/reduction/index.cjs.map +1 -0
- package/dist/utils/reduction/index.d.cts +102 -0
- package/dist/utils/reduction/index.d.ts +102 -0
- package/dist/utils/reduction/index.js +14 -0
- package/dist/utils/reduction/index.js.map +1 -0
- package/dist/utils/resilience/index.cjs +1617 -0
- package/dist/utils/resilience/index.cjs.map +1 -0
- package/dist/utils/resilience/index.d.cts +9 -0
- package/dist/utils/resilience/index.d.ts +9 -0
- package/dist/utils/resilience/index.js +44 -0
- package/dist/utils/resilience/index.js.map +1 -0
- package/dist/utils/surface/index.cjs +1070 -0
- package/dist/utils/surface/index.cjs.map +1 -0
- package/dist/utils/surface/index.d.cts +240 -0
- package/dist/utils/surface/index.d.ts +240 -0
- package/dist/utils/surface/index.js +30 -0
- package/dist/utils/surface/index.js.map +1 -0
- package/dist/utils/topology-view/index.cjs +620 -0
- package/dist/utils/topology-view/index.cjs.map +1 -0
- package/dist/utils/topology-view/index.d.cts +68 -0
- package/dist/utils/topology-view/index.d.ts +68 -0
- package/dist/utils/topology-view/index.js +11 -0
- package/dist/utils/topology-view/index.js.map +1 -0
- package/package.json +293 -237
- package/dist/core/index.cjs +0 -21
- package/dist/core/index.cjs.map +0 -1
- package/dist/core/index.d.cts +0 -1
- package/dist/core/index.d.ts +0 -1
- package/dist/core/index.js +0 -3
- package/dist/core/index.js.map +0 -1
- package/dist/extra/browser.cjs +0 -21
- package/dist/extra/browser.cjs.map +0 -1
- package/dist/extra/browser.d.cts +0 -1
- package/dist/extra/browser.d.ts +0 -1
- package/dist/extra/browser.js +0 -3
- package/dist/extra/browser.js.map +0 -1
- package/dist/extra/index.cjs +0 -21
- package/dist/extra/index.cjs.map +0 -1
- package/dist/extra/index.d.cts +0 -1
- package/dist/extra/index.d.ts +0 -1
- package/dist/extra/index.js +0 -3
- package/dist/extra/index.js.map +0 -1
- package/dist/extra/node.cjs +0 -21
- package/dist/extra/node.cjs.map +0 -1
- package/dist/extra/node.d.cts +0 -1
- package/dist/extra/node.d.ts +0 -1
- package/dist/extra/node.js +0 -3
- package/dist/extra/node.js.map +0 -1
- package/dist/extra/operators.cjs +0 -21
- package/dist/extra/operators.cjs.map +0 -1
- package/dist/extra/operators.d.cts +0 -1
- package/dist/extra/operators.d.ts +0 -1
- package/dist/extra/operators.js +0 -3
- package/dist/extra/operators.js.map +0 -1
- package/dist/extra/reactive.cjs +0 -21
- package/dist/extra/reactive.cjs.map +0 -1
- package/dist/extra/reactive.d.cts +0 -1
- package/dist/extra/reactive.d.ts +0 -1
- package/dist/extra/reactive.js +0 -3
- package/dist/extra/reactive.js.map +0 -1
- package/dist/extra/render/index.cjs +0 -21
- package/dist/extra/render/index.cjs.map +0 -1
- package/dist/extra/render/index.d.cts +0 -1
- package/dist/extra/render/index.d.ts +0 -1
- package/dist/extra/render/index.js +0 -3
- package/dist/extra/render/index.js.map +0 -1
- package/dist/extra/sources.cjs +0 -21
- package/dist/extra/sources.cjs.map +0 -1
- package/dist/extra/sources.d.cts +0 -1
- package/dist/extra/sources.d.ts +0 -1
- package/dist/extra/sources.js +0 -3
- package/dist/extra/sources.js.map +0 -1
- package/dist/extra/storage-browser.cjs +0 -21
- package/dist/extra/storage-browser.cjs.map +0 -1
- package/dist/extra/storage-browser.d.cts +0 -1
- package/dist/extra/storage-browser.d.ts +0 -1
- package/dist/extra/storage-browser.js +0 -3
- package/dist/extra/storage-browser.js.map +0 -1
- package/dist/extra/storage-core.cjs +0 -21
- package/dist/extra/storage-core.cjs.map +0 -1
- package/dist/extra/storage-core.d.cts +0 -1
- package/dist/extra/storage-core.d.ts +0 -1
- package/dist/extra/storage-core.js +0 -3
- package/dist/extra/storage-core.js.map +0 -1
- package/dist/extra/storage-node.cjs +0 -21
- package/dist/extra/storage-node.cjs.map +0 -1
- package/dist/extra/storage-node.d.cts +0 -1
- package/dist/extra/storage-node.d.ts +0 -1
- package/dist/extra/storage-node.js +0 -3
- package/dist/extra/storage-node.js.map +0 -1
- package/dist/extra/storage-tiers-browser.cjs +0 -21
- package/dist/extra/storage-tiers-browser.cjs.map +0 -1
- package/dist/extra/storage-tiers-browser.d.cts +0 -1
- package/dist/extra/storage-tiers-browser.d.ts +0 -1
- package/dist/extra/storage-tiers-browser.js +0 -3
- package/dist/extra/storage-tiers-browser.js.map +0 -1
- package/dist/extra/storage-tiers-node.cjs +0 -21
- package/dist/extra/storage-tiers-node.cjs.map +0 -1
- package/dist/extra/storage-tiers-node.d.cts +0 -1
- package/dist/extra/storage-tiers-node.d.ts +0 -1
- package/dist/extra/storage-tiers-node.js +0 -3
- package/dist/extra/storage-tiers-node.js.map +0 -1
- package/dist/extra/storage-tiers.cjs +0 -21
- package/dist/extra/storage-tiers.cjs.map +0 -1
- package/dist/extra/storage-tiers.d.cts +0 -1
- package/dist/extra/storage-tiers.d.ts +0 -1
- package/dist/extra/storage-tiers.js +0 -3
- package/dist/extra/storage-tiers.js.map +0 -1
- package/dist/extra/storage-wal.cjs +0 -21
- package/dist/extra/storage-wal.cjs.map +0 -1
- package/dist/extra/storage-wal.d.cts +0 -1
- package/dist/extra/storage-wal.d.ts +0 -1
- package/dist/extra/storage-wal.js +0 -3
- package/dist/extra/storage-wal.js.map +0 -1
- package/dist/graph/index.cjs +0 -21
- package/dist/graph/index.cjs.map +0 -1
- package/dist/graph/index.d.cts +0 -1
- package/dist/graph/index.d.ts +0 -1
- package/dist/graph/index.js +0 -3
- package/dist/graph/index.js.map +0 -1
- package/dist/patterns/ai/browser.cjs +0 -21
- package/dist/patterns/ai/browser.cjs.map +0 -1
- package/dist/patterns/ai/browser.d.cts +0 -1
- package/dist/patterns/ai/browser.d.ts +0 -1
- package/dist/patterns/ai/browser.js +0 -3
- package/dist/patterns/ai/browser.js.map +0 -1
- package/dist/patterns/ai/index.cjs +0 -21
- package/dist/patterns/ai/index.cjs.map +0 -1
- package/dist/patterns/ai/index.d.cts +0 -1
- package/dist/patterns/ai/index.d.ts +0 -1
- package/dist/patterns/ai/index.js +0 -3
- package/dist/patterns/ai/index.js.map +0 -1
- package/dist/patterns/ai/node.cjs +0 -21
- package/dist/patterns/ai/node.cjs.map +0 -1
- package/dist/patterns/ai/node.d.cts +0 -1
- package/dist/patterns/ai/node.d.ts +0 -1
- package/dist/patterns/ai/node.js +0 -3
- package/dist/patterns/ai/node.js.map +0 -1
- package/dist/patterns/cqrs/index.cjs +0 -21
- package/dist/patterns/cqrs/index.cjs.map +0 -1
- package/dist/patterns/cqrs/index.d.cts +0 -1
- package/dist/patterns/cqrs/index.d.ts +0 -1
- package/dist/patterns/cqrs/index.js +0 -3
- package/dist/patterns/cqrs/index.js.map +0 -1
- package/dist/patterns/demo-shell/index.cjs +0 -21
- package/dist/patterns/demo-shell/index.cjs.map +0 -1
- package/dist/patterns/demo-shell/index.d.cts +0 -1
- package/dist/patterns/demo-shell/index.d.ts +0 -1
- package/dist/patterns/demo-shell/index.js +0 -3
- package/dist/patterns/demo-shell/index.js.map +0 -1
- package/dist/patterns/domain-templates/index.cjs +0 -21
- package/dist/patterns/domain-templates/index.cjs.map +0 -1
- package/dist/patterns/domain-templates/index.d.cts +0 -1
- package/dist/patterns/domain-templates/index.d.ts +0 -1
- package/dist/patterns/domain-templates/index.js +0 -3
- package/dist/patterns/domain-templates/index.js.map +0 -1
- package/dist/patterns/graphspec/index.cjs +0 -21
- package/dist/patterns/graphspec/index.cjs.map +0 -1
- package/dist/patterns/graphspec/index.d.cts +0 -1
- package/dist/patterns/graphspec/index.d.ts +0 -1
- package/dist/patterns/graphspec/index.js +0 -3
- package/dist/patterns/graphspec/index.js.map +0 -1
- package/dist/patterns/harness/index.cjs +0 -21
- package/dist/patterns/harness/index.cjs.map +0 -1
- package/dist/patterns/harness/index.d.cts +0 -1
- package/dist/patterns/harness/index.d.ts +0 -1
- package/dist/patterns/harness/index.js +0 -3
- package/dist/patterns/harness/index.js.map +0 -1
- package/dist/patterns/inspect/index.cjs +0 -21
- package/dist/patterns/inspect/index.cjs.map +0 -1
- package/dist/patterns/inspect/index.d.cts +0 -1
- package/dist/patterns/inspect/index.d.ts +0 -1
- package/dist/patterns/inspect/index.js +0 -3
- package/dist/patterns/inspect/index.js.map +0 -1
- package/dist/patterns/job-queue/index.cjs +0 -21
- package/dist/patterns/job-queue/index.cjs.map +0 -1
- package/dist/patterns/job-queue/index.d.cts +0 -1
- package/dist/patterns/job-queue/index.d.ts +0 -1
- package/dist/patterns/job-queue/index.js +0 -3
- package/dist/patterns/job-queue/index.js.map +0 -1
- package/dist/patterns/memory/index.cjs +0 -21
- package/dist/patterns/memory/index.cjs.map +0 -1
- package/dist/patterns/memory/index.d.cts +0 -1
- package/dist/patterns/memory/index.d.ts +0 -1
- package/dist/patterns/memory/index.js +0 -3
- package/dist/patterns/memory/index.js.map +0 -1
- package/dist/patterns/messaging/index.cjs +0 -21
- package/dist/patterns/messaging/index.cjs.map +0 -1
- package/dist/patterns/messaging/index.d.cts +0 -1
- package/dist/patterns/messaging/index.d.ts +0 -1
- package/dist/patterns/messaging/index.js +0 -3
- package/dist/patterns/messaging/index.js.map +0 -1
- package/dist/patterns/orchestration/index.cjs +0 -21
- package/dist/patterns/orchestration/index.cjs.map +0 -1
- package/dist/patterns/orchestration/index.d.cts +0 -1
- package/dist/patterns/orchestration/index.d.ts +0 -1
- package/dist/patterns/orchestration/index.js +0 -3
- package/dist/patterns/orchestration/index.js.map +0 -1
- package/dist/patterns/process/index.cjs +0 -21
- package/dist/patterns/process/index.cjs.map +0 -1
- package/dist/patterns/process/index.d.cts +0 -1
- package/dist/patterns/process/index.d.ts +0 -1
- package/dist/patterns/process/index.js +0 -3
- package/dist/patterns/process/index.js.map +0 -1
- package/dist/patterns/reactive-layout/index.cjs +0 -21
- package/dist/patterns/reactive-layout/index.cjs.map +0 -1
- package/dist/patterns/reactive-layout/index.d.cts +0 -1
- package/dist/patterns/reactive-layout/index.d.ts +0 -1
- package/dist/patterns/reactive-layout/index.js +0 -3
- package/dist/patterns/reactive-layout/index.js.map +0 -1
- package/dist/patterns/reduction/index.cjs +0 -21
- package/dist/patterns/reduction/index.cjs.map +0 -1
- package/dist/patterns/reduction/index.d.cts +0 -1
- package/dist/patterns/reduction/index.d.ts +0 -1
- package/dist/patterns/reduction/index.js +0 -3
- package/dist/patterns/reduction/index.js.map +0 -1
- package/dist/patterns/surface/index.cjs +0 -21
- package/dist/patterns/surface/index.cjs.map +0 -1
- package/dist/patterns/surface/index.d.cts +0 -1
- package/dist/patterns/surface/index.d.ts +0 -1
- package/dist/patterns/surface/index.js +0 -3
- package/dist/patterns/surface/index.js.map +0 -1
- package/dist/patterns/topology-view/index.cjs +0 -21
- package/dist/patterns/topology-view/index.cjs.map +0 -1
- package/dist/patterns/topology-view/index.d.cts +0 -1
- package/dist/patterns/topology-view/index.d.ts +0 -1
- package/dist/patterns/topology-view/index.js +0 -3
- package/dist/patterns/topology-view/index.js.map +0 -1
- package/dist/testing/index.cjs +0 -21
- package/dist/testing/index.cjs.map +0 -1
- package/dist/testing/index.d.cts +0 -1
- package/dist/testing/index.d.ts +0 -1
- package/dist/testing/index.js +0 -3
- package/dist/testing/index.js.map +0 -1
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
import { M as MeasurementAdapter, P as PreparedSegment, d as LineBreaksResult, C as CharPosition, L as LayoutCursor, I as Interval } from '../../reactive-layout-fswlBUvX.cjs';
|
|
2
|
+
export { a as LayoutLine, b as LayoutNextLineContext, c as LayoutNextLineResult, 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-fswlBUvX.cjs';
|
|
3
|
+
import { Node } from '@graphrefly/pure-ts/core';
|
|
4
|
+
import { Graph } from '@graphrefly/pure-ts/graph';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* MeasurementAdapter implementations (roadmap §7.1 — pluggable backends).
|
|
8
|
+
*
|
|
9
|
+
* All adapters implement {@link MeasurementAdapter} from `reactive-layout.ts`.
|
|
10
|
+
* Sync constructors, sync `measureSegment()` — no async, no polling.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
type CliMeasureAdapterOptions = {
|
|
14
|
+
/** Pixel width per terminal cell (default: 8). */
|
|
15
|
+
cellPx?: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Monospace terminal measurement adapter.
|
|
19
|
+
*
|
|
20
|
+
* Width = cell count × `cellPx`. CJK / fullwidth characters count as 2 cells.
|
|
21
|
+
* No external dependencies. Works in any JS environment.
|
|
22
|
+
*/
|
|
23
|
+
declare class CliMeasureAdapter implements MeasurementAdapter {
|
|
24
|
+
private readonly cellPx;
|
|
25
|
+
constructor(opts?: CliMeasureAdapterOptions);
|
|
26
|
+
measureSegment(text: string, _font: string): {
|
|
27
|
+
width: number;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
type PrecomputedAdapterOptions = {
|
|
31
|
+
/**
|
|
32
|
+
* Pre-computed metrics: `{ font: { segment: widthPx } }`.
|
|
33
|
+
* Outer key is the CSS font string; inner key is the text segment.
|
|
34
|
+
*/
|
|
35
|
+
metrics: Record<string, Record<string, number>>;
|
|
36
|
+
/**
|
|
37
|
+
* Fallback when a segment is not found in the metrics map.
|
|
38
|
+
* - `"per-char"`: sum individual character widths from the same font map (default)
|
|
39
|
+
* - `"error"`: throw an error for unknown segments
|
|
40
|
+
*/
|
|
41
|
+
fallback?: "per-char" | "error";
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Pre-computed measurement adapter for SSR / snapshot replay.
|
|
45
|
+
*
|
|
46
|
+
* Reads from a static metrics object — zero measurement at runtime.
|
|
47
|
+
* Ideal for server-side rendering or replaying snapshotted layouts.
|
|
48
|
+
*/
|
|
49
|
+
declare class PrecomputedAdapter implements MeasurementAdapter {
|
|
50
|
+
private readonly metrics;
|
|
51
|
+
private readonly fallback;
|
|
52
|
+
constructor(opts: PrecomputedAdapterOptions);
|
|
53
|
+
measureSegment(text: string, font: string): {
|
|
54
|
+
width: number;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
type CanvasMeasureAdapterOptions = {
|
|
58
|
+
/** Emoji width correction factor (default: 1, no correction). */
|
|
59
|
+
emojiCorrection?: number;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Browser measurement adapter using `OffscreenCanvas.measureText()`.
|
|
63
|
+
*
|
|
64
|
+
* Lazily creates an OffscreenCanvas and 2D context on first call.
|
|
65
|
+
* Requires a browser environment with OffscreenCanvas support.
|
|
66
|
+
*/
|
|
67
|
+
declare class CanvasMeasureAdapter implements MeasurementAdapter {
|
|
68
|
+
private ctx;
|
|
69
|
+
private currentFont;
|
|
70
|
+
private readonly emojiCorrection;
|
|
71
|
+
constructor(opts?: CanvasMeasureAdapterOptions);
|
|
72
|
+
private getContext;
|
|
73
|
+
measureSegment(text: string, font: string): {
|
|
74
|
+
width: number;
|
|
75
|
+
};
|
|
76
|
+
clearCache(): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Canvas API subset expected from `@napi-rs/canvas` or `skia-canvas`.
|
|
80
|
+
* Passed via dependency injection — no dynamic import, no polling.
|
|
81
|
+
*/
|
|
82
|
+
type CanvasModule = {
|
|
83
|
+
createCanvas(width: number, height: number): {
|
|
84
|
+
getContext(type: "2d"): {
|
|
85
|
+
font: string;
|
|
86
|
+
measureText(text: string): {
|
|
87
|
+
width: number;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Node.js measurement adapter using an injected canvas module.
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* import * as canvas from "@napi-rs/canvas";
|
|
97
|
+
* const adapter = new NodeCanvasMeasureAdapter(canvas);
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* Works with `@napi-rs/canvas`, `skia-canvas`, or any module exposing
|
|
101
|
+
* `createCanvas(w, h).getContext("2d").measureText(text)`.
|
|
102
|
+
*/
|
|
103
|
+
declare class NodeCanvasMeasureAdapter implements MeasurementAdapter {
|
|
104
|
+
private ctx;
|
|
105
|
+
private currentFont;
|
|
106
|
+
private readonly canvasModule;
|
|
107
|
+
constructor(canvasModule: CanvasModule);
|
|
108
|
+
private getContext;
|
|
109
|
+
measureSegment(text: string, font: string): {
|
|
110
|
+
width: number;
|
|
111
|
+
};
|
|
112
|
+
clearCache(): void;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* SVG measurement adapter — extracts dimensions from `viewBox` attribute
|
|
116
|
+
* or explicit `width`/`height` attributes in the SVG string.
|
|
117
|
+
*
|
|
118
|
+
* Pure arithmetic: parses the SVG string for dimension attributes.
|
|
119
|
+
* No DOM required. Works in any JS environment.
|
|
120
|
+
*
|
|
121
|
+
* Browser users who need `getBBox()` should pre-measure and pass explicit
|
|
122
|
+
* `viewBox` on the content block instead.
|
|
123
|
+
*/
|
|
124
|
+
declare class SvgBoundsAdapter {
|
|
125
|
+
measureSvg(content: string): {
|
|
126
|
+
width: number;
|
|
127
|
+
height: number;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Image measurement adapter — returns pre-registered dimensions by src key.
|
|
132
|
+
*
|
|
133
|
+
* Sync-only: dimensions must be provided upfront via the `sizes` map.
|
|
134
|
+
* No I/O, no polling, no async. For browser use, pre-measure via
|
|
135
|
+
* `Image.onload` and pass natural dimensions on the content block directly,
|
|
136
|
+
* or register them here.
|
|
137
|
+
*
|
|
138
|
+
* ```ts
|
|
139
|
+
* const adapter = new ImageSizeAdapter({
|
|
140
|
+
* "hero.png": { width: 1200, height: 630 },
|
|
141
|
+
* "logo.svg": { width: 120, height: 40 },
|
|
142
|
+
* });
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
declare class ImageSizeAdapter {
|
|
146
|
+
private readonly sizes;
|
|
147
|
+
constructor(sizes: Record<string, {
|
|
148
|
+
width: number;
|
|
149
|
+
height: number;
|
|
150
|
+
}>);
|
|
151
|
+
measureImage(src: string): {
|
|
152
|
+
width: number;
|
|
153
|
+
height: number;
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* Reactive multi-content block layout engine (roadmap §7.1 — mixed content).
|
|
159
|
+
*
|
|
160
|
+
* Extends the text-only `reactiveLayout` with support for image and SVG blocks.
|
|
161
|
+
* Pure-arithmetic layout over measured child sizes — no DOM, no async.
|
|
162
|
+
*
|
|
163
|
+
* Graph shape:
|
|
164
|
+
* ```
|
|
165
|
+
* Graph("reactive-block-layout")
|
|
166
|
+
* ├── node([], { initial: "blocks" }) — ContentBlock[] input
|
|
167
|
+
* ├── node([], { initial: "max-width" }) — container constraint
|
|
168
|
+
* ├── node([], { initial: "gap" }) — vertical gap between blocks (px)
|
|
169
|
+
* ├── derived("measured-blocks") — blocks → MeasuredBlock[] (per-type measurement)
|
|
170
|
+
* ├── derived("block-flow") — measured-blocks + max-width + gap → PositionedBlock[]
|
|
171
|
+
* ├── derived("total-height") — block-flow → total height
|
|
172
|
+
* └── meta: { block-count, layout-time-ns }
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
/** Pluggable measurement backend for SVG content. */
|
|
177
|
+
interface SvgMeasurer {
|
|
178
|
+
measureSvg(content: string): {
|
|
179
|
+
width: number;
|
|
180
|
+
height: number;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
/** Pluggable measurement backend for image content. */
|
|
184
|
+
interface ImageMeasurer {
|
|
185
|
+
measureImage(src: string): {
|
|
186
|
+
width: number;
|
|
187
|
+
height: number;
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/** Adapters map for `reactiveBlockLayout`. */
|
|
191
|
+
type BlockAdapters = {
|
|
192
|
+
/** Text measurement adapter (required — delegates to `reactiveLayout` internals). */
|
|
193
|
+
text: MeasurementAdapter;
|
|
194
|
+
/** SVG measurement (optional — required only if SVG blocks are present). */
|
|
195
|
+
svg?: SvgMeasurer;
|
|
196
|
+
/** Image measurement (optional — required only if image blocks without explicit dimensions are present). */
|
|
197
|
+
image?: ImageMeasurer;
|
|
198
|
+
};
|
|
199
|
+
/** A content block — text, image, or SVG. */
|
|
200
|
+
type ContentBlock = {
|
|
201
|
+
type: "text";
|
|
202
|
+
text: string;
|
|
203
|
+
font?: string;
|
|
204
|
+
lineHeight?: number;
|
|
205
|
+
} | {
|
|
206
|
+
type: "image";
|
|
207
|
+
src: string;
|
|
208
|
+
/** Natural width in px. Required if no ImageMeasurer adapter is provided. */
|
|
209
|
+
naturalWidth?: number;
|
|
210
|
+
/** Natural height in px. Required if no ImageMeasurer adapter is provided. */
|
|
211
|
+
naturalHeight?: number;
|
|
212
|
+
} | {
|
|
213
|
+
type: "svg";
|
|
214
|
+
content: string;
|
|
215
|
+
/** Explicit viewBox dimensions. Required if no SvgMeasurer adapter is provided. */
|
|
216
|
+
viewBox?: {
|
|
217
|
+
width: number;
|
|
218
|
+
height: number;
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* A block after measurement — knows its natural dimensions.
|
|
223
|
+
*
|
|
224
|
+
* **Equality note:** The reactive `measured-blocks` node uses dimension-only equality
|
|
225
|
+
* (`type`, `width`, `height`, `index`). Inner text layout data (`textSegments`,
|
|
226
|
+
* `textLineBreaks`, `textCharPositions`) is NOT compared for change detection.
|
|
227
|
+
* If you need text-level reactivity, use `reactiveLayout()` directly per text block.
|
|
228
|
+
*/
|
|
229
|
+
type MeasuredBlock = {
|
|
230
|
+
index: number;
|
|
231
|
+
type: "text" | "image" | "svg";
|
|
232
|
+
width: number;
|
|
233
|
+
height: number;
|
|
234
|
+
/** For text blocks: the inner layout results. */
|
|
235
|
+
textSegments?: PreparedSegment[];
|
|
236
|
+
textLineBreaks?: LineBreaksResult;
|
|
237
|
+
textCharPositions?: CharPosition[];
|
|
238
|
+
};
|
|
239
|
+
/** A block after flow — positioned in the container. */
|
|
240
|
+
type PositionedBlock = MeasuredBlock & {
|
|
241
|
+
x: number;
|
|
242
|
+
y: number;
|
|
243
|
+
};
|
|
244
|
+
/** Options for `reactiveBlockLayout`. */
|
|
245
|
+
type ReactiveBlockLayoutOptions = {
|
|
246
|
+
adapters: BlockAdapters;
|
|
247
|
+
name?: string;
|
|
248
|
+
blocks?: ContentBlock[];
|
|
249
|
+
/** Container max width in px (clamped to ≥ 0 on init and `setMaxWidth`). */
|
|
250
|
+
maxWidth?: number;
|
|
251
|
+
/** Vertical gap between blocks in px (default 0). */
|
|
252
|
+
gap?: number;
|
|
253
|
+
/** Default font for text blocks that don't specify one. */
|
|
254
|
+
defaultFont?: string;
|
|
255
|
+
/** Default line height for text blocks that don't specify one. */
|
|
256
|
+
defaultLineHeight?: number;
|
|
257
|
+
};
|
|
258
|
+
/** Result bundle from `reactiveBlockLayout`. */
|
|
259
|
+
type ReactiveBlockLayoutBundle = {
|
|
260
|
+
graph: Graph;
|
|
261
|
+
setBlocks: (blocks: ContentBlock[]) => void;
|
|
262
|
+
setMaxWidth: (maxWidth: number) => void;
|
|
263
|
+
setGap: (gap: number) => void;
|
|
264
|
+
measuredBlocks: Node<MeasuredBlock[]>;
|
|
265
|
+
blockFlow: Node<PositionedBlock[]>;
|
|
266
|
+
totalHeight: Node<number>;
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* Measure a single content block, returning natural (unconstrained) dimensions.
|
|
270
|
+
* Text blocks use the text layout pipeline; image/SVG use adapters or explicit dims.
|
|
271
|
+
*/
|
|
272
|
+
declare function measureBlock(block: ContentBlock, maxWidth: number, adapters: BlockAdapters, measureCache: Map<string, Map<string, number>>, defaultFont: string, defaultLineHeight: number, index: number): MeasuredBlock;
|
|
273
|
+
/**
|
|
274
|
+
* Measure all blocks in a content array.
|
|
275
|
+
*/
|
|
276
|
+
declare function measureBlocks(blocks: ContentBlock[], maxWidth: number, adapters: BlockAdapters, measureCache: Map<string, Map<string, number>>, defaultFont: string, defaultLineHeight: number): MeasuredBlock[];
|
|
277
|
+
/**
|
|
278
|
+
* Vertical stacking flow: blocks are placed top-to-bottom, left-aligned,
|
|
279
|
+
* separated by `gap` pixels. Pure arithmetic over measured sizes.
|
|
280
|
+
*/
|
|
281
|
+
declare function computeBlockFlow(measured: MeasuredBlock[], gap: number): PositionedBlock[];
|
|
282
|
+
/**
|
|
283
|
+
* Compute total height from positioned blocks.
|
|
284
|
+
*/
|
|
285
|
+
declare function computeTotalHeight(flow: PositionedBlock[]): number;
|
|
286
|
+
/**
|
|
287
|
+
* Create a reactive block layout graph for mixed content (text + image + SVG).
|
|
288
|
+
*
|
|
289
|
+
* ```
|
|
290
|
+
* Graph("reactive-block-layout")
|
|
291
|
+
* ├── node([], { initial: "blocks" }) — ContentBlock[] input
|
|
292
|
+
* ├── node([], { initial: "max-width" }) — container constraint
|
|
293
|
+
* ├── node([], { initial: "gap" }) — vertical gap (px)
|
|
294
|
+
* ├── derived("measured-blocks") — blocks + max-width → MeasuredBlock[]
|
|
295
|
+
* ├── derived("block-flow") — measured-blocks + gap → PositionedBlock[]
|
|
296
|
+
* ├── derived("total-height") — block-flow → number
|
|
297
|
+
* └── meta: { block-count, layout-time-ns }
|
|
298
|
+
* ```
|
|
299
|
+
*/
|
|
300
|
+
declare function reactiveBlockLayout(opts: ReactiveBlockLayoutOptions): ReactiveBlockLayoutBundle;
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Reactive flow layout — multi-column text flowing around shape obstacles
|
|
304
|
+
* (roadmap §7.1, extends `reactiveLayout`).
|
|
305
|
+
*
|
|
306
|
+
* Unlike `reactiveLayout` (single-column, one `maxWidth`) and
|
|
307
|
+
* `reactiveBlockLayout` (vertical stack of heterogeneous blocks), this engine
|
|
308
|
+
* lays out a single stream of text across **N columns** while wrapping around
|
|
309
|
+
* arbitrary **shape obstacles** (circles, rectangles). Each line's available
|
|
310
|
+
* width can differ from every other line's, enabling magazine-style editorial
|
|
311
|
+
* layouts — and the cursor carries seamlessly from column to column so text
|
|
312
|
+
* never duplicates or gaps at boundaries.
|
|
313
|
+
*
|
|
314
|
+
* ```
|
|
315
|
+
* Graph("reactive-flow-layout")
|
|
316
|
+
* ├── node([], { initial: "text" })
|
|
317
|
+
* ├── node([], { initial: "font" })
|
|
318
|
+
* ├── node([], { initial: "line-height" })
|
|
319
|
+
* ├── node([], { initial: "container" }) — { width, height, paddingX, paddingY }
|
|
320
|
+
* ├── node([], { initial: "columns" }) — { count, gap }
|
|
321
|
+
* ├── node([], { initial: "obstacles" }) — Obstacle[] (moves reactively — rAF-friendly)
|
|
322
|
+
* ├── derived("segments") — text + font → PreparedSegment[] (from reactiveLayout)
|
|
323
|
+
* ├── derived("flow-lines") — segments + container + columns + obstacles + line-height
|
|
324
|
+
* │ → PositionedLine[]
|
|
325
|
+
* └── meta: { line-count, layout-time-ns, overflow-segments }
|
|
326
|
+
* ```
|
|
327
|
+
*
|
|
328
|
+
* Obstacle positions change every frame; `flow-lines` re-runs per change, but
|
|
329
|
+
* `segments` stays cached (text hasn't changed). Callers drive obstacles via a
|
|
330
|
+
* reactive source like `fromRaf()` piped into a state node.
|
|
331
|
+
*/
|
|
332
|
+
|
|
333
|
+
/** A circle obstacle. Center `(cx, cy)`, radius `r`; text keeps `padding` distance. */
|
|
334
|
+
type CircleObstacle = {
|
|
335
|
+
kind: "circle";
|
|
336
|
+
cx: number;
|
|
337
|
+
cy: number;
|
|
338
|
+
r: number;
|
|
339
|
+
/** Horizontal padding between obstacle and wrapped text (default 0). */
|
|
340
|
+
hPad?: number;
|
|
341
|
+
/** Vertical padding — band overlap tolerance (default 0). */
|
|
342
|
+
vPad?: number;
|
|
343
|
+
};
|
|
344
|
+
/** A rectangle obstacle. Top-left `(x, y)`, size `(w, h)`. */
|
|
345
|
+
type RectObstacle = {
|
|
346
|
+
kind: "rect";
|
|
347
|
+
x: number;
|
|
348
|
+
y: number;
|
|
349
|
+
w: number;
|
|
350
|
+
h: number;
|
|
351
|
+
hPad?: number;
|
|
352
|
+
vPad?: number;
|
|
353
|
+
};
|
|
354
|
+
/** Union of built-in obstacle shapes. */
|
|
355
|
+
type Obstacle = CircleObstacle | RectObstacle;
|
|
356
|
+
/**
|
|
357
|
+
* Compute the horizontal interval occluded by a circle at vertical band
|
|
358
|
+
* `[bandTop, bandBottom]`, or `null` if no occlusion.
|
|
359
|
+
*
|
|
360
|
+
* Exported so consumers that render obstacle outlines in sync with the flow
|
|
361
|
+
* can reuse the same geometry the flow engine uses — no divergence.
|
|
362
|
+
*/
|
|
363
|
+
declare function circleIntervalForBand(o: CircleObstacle, bandTop: number, bandBottom: number): Interval | null;
|
|
364
|
+
/** Same as `circleIntervalForBand` for rectangles. */
|
|
365
|
+
declare function rectIntervalForBand(o: RectObstacle, bandTop: number, bandBottom: number): Interval | null;
|
|
366
|
+
type FlowContainer = {
|
|
367
|
+
width: number;
|
|
368
|
+
height: number;
|
|
369
|
+
paddingX?: number;
|
|
370
|
+
paddingY?: number;
|
|
371
|
+
};
|
|
372
|
+
type FlowColumns = {
|
|
373
|
+
count: number;
|
|
374
|
+
gap: number;
|
|
375
|
+
};
|
|
376
|
+
/** A single positioned line after flow layout. */
|
|
377
|
+
type PositionedLine = {
|
|
378
|
+
x: number;
|
|
379
|
+
y: number;
|
|
380
|
+
/** Natural measured width of the text content. */
|
|
381
|
+
width: number;
|
|
382
|
+
/** Width of the slot this line was placed in — use this as the DOM element's
|
|
383
|
+
* `width` when applying `text-align: justify` so the line stretches to the
|
|
384
|
+
* obstacle edge on both sides. */
|
|
385
|
+
slotWidth: number;
|
|
386
|
+
text: string;
|
|
387
|
+
/** Which column index this line belongs to (0-based). */
|
|
388
|
+
columnIndex: number;
|
|
389
|
+
/** `true` iff the slot's right edge was carved short by an obstacle (the
|
|
390
|
+
* slot sits to the LEFT of an obstacle). Renderers can right-align text
|
|
391
|
+
* in these slots so single-word lines still hug the obstacle — CSS
|
|
392
|
+
* `text-align: justify` can't stretch single-word lines, which otherwise
|
|
393
|
+
* produces a visible asymmetry vs. the slot on the other side of the
|
|
394
|
+
* obstacle (which is flush by default). */
|
|
395
|
+
flushToRight: boolean;
|
|
396
|
+
};
|
|
397
|
+
/** Options for `reactiveFlowLayout`. */
|
|
398
|
+
type ReactiveFlowLayoutOptions = {
|
|
399
|
+
adapter: MeasurementAdapter;
|
|
400
|
+
name?: string;
|
|
401
|
+
text?: string;
|
|
402
|
+
font?: string;
|
|
403
|
+
lineHeight?: number;
|
|
404
|
+
container?: FlowContainer;
|
|
405
|
+
columns?: FlowColumns;
|
|
406
|
+
obstacles?: Obstacle[];
|
|
407
|
+
/** Minimum slot width (px) below which a slot is discarded rather than squeezed. Default `20`. */
|
|
408
|
+
minSlotWidth?: number;
|
|
409
|
+
/**
|
|
410
|
+
* Vertical gap (px) inserted after a hard-break segment (the spacing
|
|
411
|
+
* between paragraphs). When unset (or explicitly set to `null`), tracks
|
|
412
|
+
* the current `lineHeight` reactively — one line-height of visible
|
|
413
|
+
* paragraph gap, matching dense editorial layouts. Set to `0` for
|
|
414
|
+
* paragraph-preserving layout that reclaims the break line; set larger
|
|
415
|
+
* (e.g. `2 * lineHeight`) for looser manuscript settings. Reactive —
|
|
416
|
+
* update via `setParagraphSpacing(n)` or restore to track-lineHeight
|
|
417
|
+
* mode via `setParagraphSpacing(null)`.
|
|
418
|
+
*/
|
|
419
|
+
paragraphSpacing?: number | null;
|
|
420
|
+
};
|
|
421
|
+
/** Result bundle from `reactiveFlowLayout`. */
|
|
422
|
+
type ReactiveFlowLayoutBundle = {
|
|
423
|
+
graph: Graph;
|
|
424
|
+
setText: (text: string) => void;
|
|
425
|
+
setFont: (font: string) => void;
|
|
426
|
+
setLineHeight: (lh: number) => void;
|
|
427
|
+
setContainer: (c: FlowContainer) => void;
|
|
428
|
+
setColumns: (c: FlowColumns) => void;
|
|
429
|
+
setObstacles: (o: Obstacle[]) => void;
|
|
430
|
+
setParagraphSpacing: (ps: number | null) => void;
|
|
431
|
+
segments: Node<PreparedSegment[]>;
|
|
432
|
+
flowLines: Node<PositionedLine[]>;
|
|
433
|
+
};
|
|
434
|
+
/** Result of `computeFlowLines`. */
|
|
435
|
+
type FlowLinesResult = {
|
|
436
|
+
/** Positioned lines in render order (columns inner-ordered top-to-bottom). */
|
|
437
|
+
lines: PositionedLine[];
|
|
438
|
+
/** Cursor position after the last line was placed. If
|
|
439
|
+
* `cursor.segmentIndex < segments.length`, the layout **truncated** — the
|
|
440
|
+
* container couldn't fit all text. */
|
|
441
|
+
cursor: LayoutCursor;
|
|
442
|
+
};
|
|
443
|
+
/** Optional tuning knobs for {@link computeFlowLines}. */
|
|
444
|
+
type ComputeFlowLinesOptions = {
|
|
445
|
+
/**
|
|
446
|
+
* Vertical gap (px) inserted after a hard-break segment (the spacing
|
|
447
|
+
* between paragraphs). Defaults to `lineHeight` — one line-height of
|
|
448
|
+
* visible paragraph gap, which matches dense editorial layouts. Set to
|
|
449
|
+
* `0` for paragraph-preserving layout that reclaims the break line;
|
|
450
|
+
* set larger (e.g. `2 * lineHeight`) for looser manuscript settings.
|
|
451
|
+
*/
|
|
452
|
+
paragraphSpacing?: number;
|
|
453
|
+
};
|
|
454
|
+
/**
|
|
455
|
+
* Lay out `segments` across N columns, wrapping each line around `obstacles`.
|
|
456
|
+
* Pure function — no reactive wiring. Exported for testing and for consumers
|
|
457
|
+
* who want to run flow layout outside a Graph.
|
|
458
|
+
*
|
|
459
|
+
* `carveTextLineSlots` guarantees left-to-right-ordered, non-overlapping slots,
|
|
460
|
+
* so this function does not sort them.
|
|
461
|
+
*/
|
|
462
|
+
declare function computeFlowLines(segments: PreparedSegment[], container: FlowContainer, columns: FlowColumns, obstacles: Obstacle[], lineHeight: number, minSlotWidth: number, opts?: ComputeFlowLinesOptions): FlowLinesResult;
|
|
463
|
+
/**
|
|
464
|
+
* Create a reactive flow-layout graph: N columns of text wrapping around
|
|
465
|
+
* shape obstacles. Re-runs only the dependent derived nodes on any input
|
|
466
|
+
* change. Obstacle movement (e.g. rAF-driven) invalidates `flow-lines` only;
|
|
467
|
+
* `segments` stays cached as long as `text`/`font` don't change.
|
|
468
|
+
*
|
|
469
|
+
* @example
|
|
470
|
+
* ```ts
|
|
471
|
+
* import { fromRaf, reactiveFlowLayout } from "@graphrefly/graphrefly-ts";
|
|
472
|
+
*
|
|
473
|
+
* const flow = reactiveFlowLayout({
|
|
474
|
+
* adapter: new CanvasMeasureAdapter(),
|
|
475
|
+
* text: longEssay,
|
|
476
|
+
* font: "18px serif",
|
|
477
|
+
* lineHeight: 26,
|
|
478
|
+
* container: { width: 900, height: 600, paddingX: 40, paddingY: 40 },
|
|
479
|
+
* columns: { count: 2, gap: 32 },
|
|
480
|
+
* obstacles: [{ kind: "circle", cx: 450, cy: 300, r: 80 }],
|
|
481
|
+
* });
|
|
482
|
+
*
|
|
483
|
+
* // Animate the obstacle via rAF:
|
|
484
|
+
* fromRaf().subscribe(([[, t]]) => {
|
|
485
|
+
* const x = 450 + 120 * Math.sin((t as number) * 0.001);
|
|
486
|
+
* flow.setObstacles([{ kind: "circle", cx: x, cy: 300, r: 80 }]);
|
|
487
|
+
* });
|
|
488
|
+
* ```
|
|
489
|
+
*/
|
|
490
|
+
declare function reactiveFlowLayout(opts: ReactiveFlowLayoutOptions): ReactiveFlowLayoutBundle;
|
|
491
|
+
|
|
492
|
+
export { type BlockAdapters, CanvasMeasureAdapter, type CanvasMeasureAdapterOptions, type CanvasModule, CharPosition, type CircleObstacle, CliMeasureAdapter, type CliMeasureAdapterOptions, type ComputeFlowLinesOptions, type ContentBlock, type FlowColumns, type FlowContainer, type FlowLinesResult, type ImageMeasurer, ImageSizeAdapter, Interval, LayoutCursor, LineBreaksResult, type MeasuredBlock, MeasurementAdapter, NodeCanvasMeasureAdapter, type Obstacle, type PositionedBlock, type PositionedLine, PrecomputedAdapter, type PrecomputedAdapterOptions, PreparedSegment, type ReactiveBlockLayoutBundle, type ReactiveBlockLayoutOptions, type ReactiveFlowLayoutBundle, type ReactiveFlowLayoutOptions, type RectObstacle, SvgBoundsAdapter, type SvgMeasurer, circleIntervalForBand, computeBlockFlow, computeFlowLines, computeTotalHeight, measureBlock, measureBlocks, reactiveBlockLayout, reactiveFlowLayout, rectIntervalForBand };
|