@graphrefly/graphrefly 0.47.2 → 0.48.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/dist/base/composition/index.cjs +4 -3
- package/dist/base/composition/index.cjs.map +1 -1
- package/dist/base/composition/index.d.cts +14 -5
- package/dist/base/composition/index.d.ts +14 -5
- package/dist/base/composition/index.js +8 -8
- package/dist/base/index.cjs +152 -78
- package/dist/base/index.cjs.map +1 -1
- package/dist/base/index.d.cts +2 -2
- package/dist/base/index.d.ts +2 -2
- package/dist/base/index.js +75 -70
- package/dist/base/io/index.cjs +31 -17
- package/dist/base/io/index.cjs.map +1 -1
- package/dist/base/io/index.d.cts +32 -5
- package/dist/base/io/index.d.ts +32 -5
- package/dist/base/io/index.js +1 -1
- package/dist/base/mutation/index.cjs +21 -0
- package/dist/base/mutation/index.cjs.map +1 -1
- package/dist/base/mutation/index.d.cts +23 -1
- package/dist/base/mutation/index.d.ts +23 -1
- package/dist/base/mutation/index.js +3 -1
- package/dist/base/sources/browser/index.cjs +5 -3
- package/dist/base/sources/browser/index.cjs.map +1 -1
- package/dist/base/sources/browser/index.d.cts +20 -2
- package/dist/base/sources/browser/index.d.ts +20 -2
- package/dist/base/sources/browser/index.js +5 -3
- package/dist/base/sources/browser/index.js.map +1 -1
- package/dist/base/sources/event/index.cjs +28 -0
- package/dist/base/sources/event/index.cjs.map +1 -1
- package/dist/base/sources/event/index.d.cts +67 -3
- package/dist/base/sources/event/index.d.ts +67 -3
- package/dist/base/sources/event/index.js +4 -1
- package/dist/base/sources/index.cjs +75 -37
- package/dist/base/sources/index.cjs.map +1 -1
- package/dist/base/sources/index.d.cts +1 -1
- package/dist/base/sources/index.d.ts +1 -1
- package/dist/base/sources/index.js +5 -2
- package/dist/{chunk-R6ZCSXKX.js → chunk-23MAWVOJ.js} +3 -3
- package/dist/{chunk-MS3WPRJR.js → chunk-3REMCHSS.js} +6 -6
- package/dist/chunk-3REMCHSS.js.map +1 -0
- package/dist/{chunk-CEVNQ74M.js → chunk-3YGXPUHW.js} +2 -2
- package/dist/{chunk-CEVNQ74M.js.map → chunk-3YGXPUHW.js.map} +1 -1
- package/dist/{chunk-6ZLCPUXS.js → chunk-46X2EFQH.js} +15 -4
- package/dist/chunk-46X2EFQH.js.map +1 -0
- package/dist/{chunk-NY2PYHNC.js → chunk-5UY3PNFY.js} +12 -5
- package/dist/chunk-5UY3PNFY.js.map +1 -0
- package/dist/{chunk-FQSQONOU.js → chunk-65OM4XLQ.js} +49 -3
- package/dist/chunk-65OM4XLQ.js.map +1 -0
- package/dist/{chunk-3PSLNJDU.js → chunk-6DQYBIHW.js} +314 -49
- package/dist/chunk-6DQYBIHW.js.map +1 -0
- package/dist/{chunk-LDCSZ72P.js → chunk-6YBER5UP.js} +3 -3
- package/dist/{chunk-LDCSZ72P.js.map → chunk-6YBER5UP.js.map} +1 -1
- package/dist/{chunk-3O3NKZJW.js → chunk-7T7WLEPM.js} +24 -3
- package/dist/chunk-7T7WLEPM.js.map +1 -0
- package/dist/{chunk-PKPO3JTZ.js → chunk-AQAKDE7F.js} +29 -11
- package/dist/chunk-AQAKDE7F.js.map +1 -0
- package/dist/{chunk-6MRSX3YK.js → chunk-B5Y5GPD5.js} +2 -2
- package/dist/{chunk-BXGZFGZ4.js → chunk-C5QD5DQX.js} +22 -1
- package/dist/chunk-C5QD5DQX.js.map +1 -0
- package/dist/{chunk-4XCHZRUJ.js → chunk-D5YGR4TP.js} +58 -7
- package/dist/chunk-D5YGR4TP.js.map +1 -0
- package/dist/{chunk-NPRP3MCV.js → chunk-DHDCOOJU.js} +2 -2
- package/dist/chunk-DHDCOOJU.js.map +1 -0
- package/dist/{chunk-VP3TIUDF.js → chunk-DVTDF5OI.js} +2 -2
- package/dist/{chunk-OXD5LFQP.js → chunk-G7H6PN7P.js} +2 -2
- package/dist/{chunk-EL5VHUGK.js → chunk-GGKHHG5Y.js} +32 -18
- package/dist/chunk-GGKHHG5Y.js.map +1 -0
- package/dist/{chunk-446I4EGD.js → chunk-J5TBZFBD.js} +2 -2
- package/dist/{chunk-7AVQIGF6.js → chunk-K4ZYJ4EM.js} +554 -460
- package/dist/chunk-K4ZYJ4EM.js.map +1 -0
- package/dist/{chunk-QFE5BQH7.js → chunk-LTSI7ULC.js} +2 -2
- package/dist/{chunk-5GVURVIG.js → chunk-MMHGYX44.js} +12 -2
- package/dist/{chunk-5GVURVIG.js.map → chunk-MMHGYX44.js.map} +1 -1
- package/dist/{chunk-KRFGO5QH.js → chunk-MQMTRKY3.js} +118 -43
- package/dist/chunk-MQMTRKY3.js.map +1 -0
- package/dist/{chunk-42FQ27MQ.js → chunk-MTODGQBR.js} +44 -179
- package/dist/chunk-MTODGQBR.js.map +1 -0
- package/dist/{chunk-FVINAAKA.js → chunk-NBK6QQMG.js} +14 -13
- package/dist/{chunk-FVINAAKA.js.map → chunk-NBK6QQMG.js.map} +1 -1
- package/dist/{chunk-KNU73RZW.js → chunk-NSA5K5G2.js} +2 -2
- package/dist/{chunk-MLTPJMH6.js → chunk-QQYULEZL.js} +2 -2
- package/dist/chunk-QSW4DFKE.js +31 -0
- package/dist/chunk-QSW4DFKE.js.map +1 -0
- package/dist/{chunk-VAZXUK6G.js → chunk-SUNCHMML.js} +2 -2
- package/dist/{chunk-EP4WVQLX.js → chunk-T2U6N3FV.js} +6 -6
- package/dist/{chunk-T7SP3EYR.js → chunk-T5URUIIY.js} +33 -24
- package/dist/chunk-T5URUIIY.js.map +1 -0
- package/dist/{chunk-VNXAF2KE.js → chunk-TPTZZV25.js} +6 -6
- package/dist/chunk-TPTZZV25.js.map +1 -0
- package/dist/{chunk-IOJDYUA7.js → chunk-V46JWFGV.js} +6 -5
- package/dist/chunk-V46JWFGV.js.map +1 -0
- package/dist/{chunk-WGDEBIP4.js → chunk-X6ESZDR6.js} +5 -6
- package/dist/chunk-X6ESZDR6.js.map +1 -0
- package/dist/{chunk-N65E26UL.js → chunk-XEWV254I.js} +2 -2
- package/dist/{chunk-N65E26UL.js.map → chunk-XEWV254I.js.map} +1 -1
- package/dist/{chunk-PTWADEH3.js → chunk-YBJVKMTM.js} +34 -14
- package/dist/chunk-YBJVKMTM.js.map +1 -0
- package/dist/{chunk-DDTS7F5O.js → chunk-ZW32BPXV.js} +12 -3
- package/dist/chunk-ZW32BPXV.js.map +1 -0
- package/dist/compat/index.cjs +51 -4
- package/dist/compat/index.cjs.map +1 -1
- package/dist/compat/index.d.cts +1 -1
- package/dist/compat/index.d.ts +1 -1
- package/dist/compat/index.js +6 -6
- package/dist/compat/nestjs/index.cjs +51 -4
- package/dist/compat/nestjs/index.cjs.map +1 -1
- package/dist/compat/nestjs/index.d.cts +1 -1
- package/dist/compat/nestjs/index.d.ts +1 -1
- package/dist/compat/nestjs/index.js +3 -3
- package/dist/{fallback-Bx46zqky.d.cts → fallback-BROR6ZhO.d.cts} +1 -1
- package/dist/{fallback-pIWW8A2d.d.ts → fallback-DO80aM_3.d.ts} +1 -1
- package/dist/{index-B_p8tnvf.d.cts → index-D1z3XcF9.d.cts} +1 -0
- package/dist/{index-_HDSmPyp.d.ts → index-DZ6yua0Q.d.ts} +1 -0
- package/dist/index.cjs +2215 -1676
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +169 -146
- package/dist/index.js.map +1 -1
- package/dist/presets/ai/index.cjs +46 -0
- package/dist/presets/ai/index.cjs.map +1 -1
- package/dist/presets/ai/index.js +12 -12
- package/dist/presets/harness/index.cjs +130 -18
- package/dist/presets/harness/index.cjs.map +1 -1
- package/dist/presets/harness/index.d.cts +15 -5
- package/dist/presets/harness/index.d.ts +15 -5
- package/dist/presets/harness/index.js +22 -22
- package/dist/presets/index.cjs +222 -53
- package/dist/presets/index.cjs.map +1 -1
- package/dist/presets/index.d.cts +2 -2
- package/dist/presets/index.d.ts +2 -2
- package/dist/presets/index.js +45 -45
- package/dist/presets/inspect/index.cjs +63 -14
- package/dist/presets/inspect/index.cjs.map +1 -1
- package/dist/presets/inspect/index.d.cts +1 -1
- package/dist/presets/inspect/index.d.ts +1 -1
- package/dist/presets/inspect/index.js +6 -6
- package/dist/presets/resilience/index.cjs +29 -21
- package/dist/presets/resilience/index.cjs.map +1 -1
- package/dist/presets/resilience/index.d.cts +12 -8
- package/dist/presets/resilience/index.d.ts +12 -8
- package/dist/presets/resilience/index.js +3 -3
- package/dist/{rate-limiter-DpVbSYdH.d.cts → rate-limiter-DC26FM8J.d.cts} +10 -1
- package/dist/{rate-limiter-CEALq4N1.d.ts → rate-limiter-DyWpwpQP.d.ts} +10 -1
- package/dist/{reactive-layout-fswlBUvX.d.ts → reactive-layout-BBBWH0V_.d.cts} +85 -4
- package/dist/{reactive-layout-fswlBUvX.d.cts → reactive-layout-BBBWH0V_.d.ts} +85 -4
- package/dist/solutions/index.cjs +168 -47
- package/dist/solutions/index.cjs.map +1 -1
- package/dist/solutions/index.d.cts +2 -2
- package/dist/solutions/index.d.ts +2 -2
- package/dist/solutions/index.js +28 -28
- package/dist/{spawnable-5mDY501F.d.cts → spawnable-B2IlW60f.d.cts} +23 -2
- package/dist/{spawnable-D3lR0oQu.d.ts → spawnable-tttFz2Nh.d.ts} +23 -2
- package/dist/testing/index.cjs +94 -0
- package/dist/testing/index.cjs.map +1 -0
- package/dist/testing/index.d.cts +59 -0
- package/dist/testing/index.d.ts +59 -0
- package/dist/testing/index.js +73 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/utils/ai/browser.cjs.map +1 -1
- package/dist/utils/ai/browser.d.cts +2 -2
- package/dist/utils/ai/browser.d.ts +2 -2
- package/dist/utils/ai/browser.js +6 -6
- package/dist/utils/ai/browser.js.map +1 -1
- package/dist/utils/ai/index.cjs +250 -166
- package/dist/utils/ai/index.cjs.map +1 -1
- package/dist/utils/ai/index.d.cts +108 -12
- package/dist/utils/ai/index.d.ts +108 -12
- package/dist/utils/ai/index.js +21 -19
- package/dist/utils/ai/node.cjs.map +1 -1
- package/dist/utils/ai/node.d.cts +5 -5
- package/dist/utils/ai/node.d.ts +5 -5
- package/dist/utils/ai/node.js +2 -2
- package/dist/utils/ai/node.js.map +1 -1
- package/dist/utils/cqrs/index.cjs +29 -3
- package/dist/utils/cqrs/index.cjs.map +1 -1
- package/dist/utils/cqrs/index.d.cts +12 -7
- package/dist/utils/cqrs/index.d.ts +12 -7
- package/dist/utils/cqrs/index.js +2 -2
- package/dist/utils/demo-shell/index.cjs +45 -19
- package/dist/utils/demo-shell/index.cjs.map +1 -1
- package/dist/utils/demo-shell/index.d.cts +1 -1
- package/dist/utils/demo-shell/index.d.ts +1 -1
- package/dist/utils/demo-shell/index.js +2 -2
- package/dist/utils/domain-templates/index.cjs.map +1 -1
- package/dist/utils/domain-templates/index.js +3 -3
- package/dist/utils/graphspec/index.cjs.map +1 -1
- package/dist/utils/graphspec/index.js +3 -3
- package/dist/utils/index.cjs +1642 -1225
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.cts +7 -7
- package/dist/utils/index.d.ts +7 -7
- package/dist/utils/index.js +72 -54
- package/dist/utils/inspect/index.cjs +52 -4
- package/dist/utils/inspect/index.cjs.map +1 -1
- package/dist/utils/inspect/index.d.cts +32 -3
- package/dist/utils/inspect/index.d.ts +32 -3
- package/dist/utils/inspect/index.js +4 -4
- package/dist/utils/job-queue/index.cjs +46 -9
- package/dist/utils/job-queue/index.cjs.map +1 -1
- package/dist/utils/job-queue/index.d.cts +33 -3
- package/dist/utils/job-queue/index.d.ts +33 -3
- package/dist/utils/job-queue/index.js +2 -2
- package/dist/utils/memory/index.cjs +556 -462
- package/dist/utils/memory/index.cjs.map +1 -1
- package/dist/utils/memory/index.d.cts +203 -24
- package/dist/utils/memory/index.d.ts +203 -24
- package/dist/utils/memory/index.js +10 -2
- package/dist/utils/messaging/index.cjs.map +1 -1
- package/dist/utils/messaging/index.d.cts +4 -3
- package/dist/utils/messaging/index.d.ts +4 -3
- package/dist/utils/messaging/index.js +2 -2
- package/dist/utils/orchestration/index.cjs +9 -0
- package/dist/utils/orchestration/index.cjs.map +1 -1
- package/dist/utils/orchestration/index.js +3 -3
- package/dist/utils/process/index.cjs +32 -2
- package/dist/utils/process/index.cjs.map +1 -1
- package/dist/utils/process/index.d.cts +4 -3
- package/dist/utils/process/index.d.ts +4 -3
- package/dist/utils/process/index.js +2 -2
- package/dist/utils/reactive-layout/index.cjs +184 -55
- package/dist/utils/reactive-layout/index.cjs.map +1 -1
- package/dist/utils/reactive-layout/index.d.cts +128 -3
- package/dist/utils/reactive-layout/index.d.ts +128 -3
- package/dist/utils/reactive-layout/index.js +16 -8
- package/dist/utils/reduction/index.cjs.map +1 -1
- package/dist/utils/reduction/index.js +2 -2
- package/dist/utils/resilience/index.cjs +29 -20
- package/dist/utils/resilience/index.cjs.map +1 -1
- package/dist/utils/resilience/index.d.cts +1 -1
- package/dist/utils/resilience/index.d.ts +1 -1
- package/dist/utils/resilience/index.js +2 -2
- package/dist/utils/surface/index.cjs.map +1 -1
- package/dist/utils/surface/index.js +4 -4
- package/package.json +15 -3
- package/dist/chunk-3O3NKZJW.js.map +0 -1
- package/dist/chunk-3PSLNJDU.js.map +0 -1
- package/dist/chunk-42FQ27MQ.js.map +0 -1
- package/dist/chunk-4XCHZRUJ.js.map +0 -1
- package/dist/chunk-6ZLCPUXS.js.map +0 -1
- package/dist/chunk-7AVQIGF6.js.map +0 -1
- package/dist/chunk-BXGZFGZ4.js.map +0 -1
- package/dist/chunk-DDTS7F5O.js.map +0 -1
- package/dist/chunk-EL5VHUGK.js.map +0 -1
- package/dist/chunk-FQSQONOU.js.map +0 -1
- package/dist/chunk-IOJDYUA7.js.map +0 -1
- package/dist/chunk-KRFGO5QH.js.map +0 -1
- package/dist/chunk-MS3WPRJR.js.map +0 -1
- package/dist/chunk-NPRP3MCV.js.map +0 -1
- package/dist/chunk-NY2PYHNC.js.map +0 -1
- package/dist/chunk-PKPO3JTZ.js.map +0 -1
- package/dist/chunk-PTWADEH3.js.map +0 -1
- package/dist/chunk-T7SP3EYR.js.map +0 -1
- package/dist/chunk-VNXAF2KE.js.map +0 -1
- package/dist/chunk-W2BOPXTI.js +0 -1
- package/dist/chunk-W2BOPXTI.js.map +0 -1
- package/dist/chunk-WGDEBIP4.js.map +0 -1
- /package/dist/{chunk-R6ZCSXKX.js.map → chunk-23MAWVOJ.js.map} +0 -0
- /package/dist/{chunk-6MRSX3YK.js.map → chunk-B5Y5GPD5.js.map} +0 -0
- /package/dist/{chunk-VP3TIUDF.js.map → chunk-DVTDF5OI.js.map} +0 -0
- /package/dist/{chunk-OXD5LFQP.js.map → chunk-G7H6PN7P.js.map} +0 -0
- /package/dist/{chunk-446I4EGD.js.map → chunk-J5TBZFBD.js.map} +0 -0
- /package/dist/{chunk-QFE5BQH7.js.map → chunk-LTSI7ULC.js.map} +0 -0
- /package/dist/{chunk-KNU73RZW.js.map → chunk-NSA5K5G2.js.map} +0 -0
- /package/dist/{chunk-MLTPJMH6.js.map → chunk-QQYULEZL.js.map} +0 -0
- /package/dist/{chunk-VAZXUK6G.js.map → chunk-SUNCHMML.js.map} +0 -0
- /package/dist/{chunk-EP4WVQLX.js.map → chunk-T2U6N3FV.js.map} +0 -0
|
@@ -2,8 +2,8 @@ import {
|
|
|
2
2
|
processInstanceKeyOf,
|
|
3
3
|
processManager,
|
|
4
4
|
processStateKeyOf
|
|
5
|
-
} from "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
5
|
+
} from "../../chunk-46X2EFQH.js";
|
|
6
|
+
import "../../chunk-C5QD5DQX.js";
|
|
7
7
|
import "../../chunk-N6MNJNHB.js";
|
|
8
8
|
import "../../chunk-AZDQPQ3V.js";
|
|
9
9
|
export {
|
|
@@ -23,9 +23,12 @@ __export(reactive_layout_exports, {
|
|
|
23
23
|
CanvasMeasureAdapter: () => CanvasMeasureAdapter,
|
|
24
24
|
CliMeasureAdapter: () => CliMeasureAdapter,
|
|
25
25
|
ImageSizeAdapter: () => ImageSizeAdapter,
|
|
26
|
+
InjectedMeasureAdapter: () => InjectedMeasureAdapter,
|
|
27
|
+
IntlSegmentAdapter: () => IntlSegmentAdapter,
|
|
26
28
|
NodeCanvasMeasureAdapter: () => NodeCanvasMeasureAdapter,
|
|
27
29
|
PrecomputedAdapter: () => PrecomputedAdapter,
|
|
28
30
|
SvgBoundsAdapter: () => SvgBoundsAdapter,
|
|
31
|
+
_resetDefaultSegmentAdapterForTests: () => _resetDefaultSegmentAdapterForTests,
|
|
29
32
|
analyzeAndMeasure: () => analyzeAndMeasure,
|
|
30
33
|
carveTextLineSlots: () => carveTextLineSlots,
|
|
31
34
|
circleIntervalForBand: () => circleIntervalForBand,
|
|
@@ -34,6 +37,7 @@ __export(reactive_layout_exports, {
|
|
|
34
37
|
computeFlowLines: () => computeFlowLines,
|
|
35
38
|
computeLineBreaks: () => computeLineBreaks,
|
|
36
39
|
computeTotalHeight: () => computeTotalHeight,
|
|
40
|
+
getDefaultSegmentAdapter: () => getDefaultSegmentAdapter,
|
|
37
41
|
layoutNextLine: () => layoutNextLine,
|
|
38
42
|
measureBlock: () => measureBlock,
|
|
39
43
|
measureBlocks: () => measureBlocks,
|
|
@@ -164,6 +168,39 @@ function countCells(text) {
|
|
|
164
168
|
}
|
|
165
169
|
|
|
166
170
|
// src/utils/reactive-layout/measurement-adapters.ts
|
|
171
|
+
var IntlSegmentAdapter = class {
|
|
172
|
+
wordSeg = null;
|
|
173
|
+
graphemeSeg = null;
|
|
174
|
+
constructor() {
|
|
175
|
+
if (typeof Intl === "undefined" || typeof Intl.Segmenter !== "function") {
|
|
176
|
+
throw new TypeError(
|
|
177
|
+
"IntlSegmentAdapter: Intl.Segmenter is not available in this runtime (Hermes / older embedded JS engines). Pass a custom SegmentAdapter via `reactiveLayout({ segmentAdapter })` \u2014 see the SegmentAdapter JSDoc for the polyfill recipe (e.g. `intl-segmenter-polyfill` or `@formatjs/intl-segmenter`)."
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
segmentWords(text) {
|
|
182
|
+
if (this.wordSeg === null) {
|
|
183
|
+
this.wordSeg = new Intl.Segmenter(void 0, { granularity: "word" });
|
|
184
|
+
}
|
|
185
|
+
return this.wordSeg.segment(text);
|
|
186
|
+
}
|
|
187
|
+
segmentGraphemes(text) {
|
|
188
|
+
if (this.graphemeSeg === null) {
|
|
189
|
+
this.graphemeSeg = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
190
|
+
}
|
|
191
|
+
return this.graphemeSeg.segment(text);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
var _defaultSegmentAdapter = null;
|
|
195
|
+
function getDefaultSegmentAdapter() {
|
|
196
|
+
if (_defaultSegmentAdapter === null) {
|
|
197
|
+
_defaultSegmentAdapter = new IntlSegmentAdapter();
|
|
198
|
+
}
|
|
199
|
+
return _defaultSegmentAdapter;
|
|
200
|
+
}
|
|
201
|
+
function _resetDefaultSegmentAdapterForTests() {
|
|
202
|
+
_defaultSegmentAdapter = null;
|
|
203
|
+
}
|
|
167
204
|
var CliMeasureAdapter = class {
|
|
168
205
|
cellPx;
|
|
169
206
|
constructor(opts) {
|
|
@@ -173,6 +210,33 @@ var CliMeasureAdapter = class {
|
|
|
173
210
|
return { width: countCells(text) * this.cellPx };
|
|
174
211
|
}
|
|
175
212
|
};
|
|
213
|
+
var InjectedMeasureAdapter = class {
|
|
214
|
+
fn;
|
|
215
|
+
cache;
|
|
216
|
+
constructor(fn, opts) {
|
|
217
|
+
if (typeof fn !== "function") {
|
|
218
|
+
throw new TypeError(
|
|
219
|
+
"InjectedMeasureAdapter: a synchronous (text, font) => widthPx function is required"
|
|
220
|
+
);
|
|
221
|
+
}
|
|
222
|
+
this.fn = fn;
|
|
223
|
+
this.cache = opts?.cache ? /* @__PURE__ */ new Map() : null;
|
|
224
|
+
}
|
|
225
|
+
measureSegment(text, font) {
|
|
226
|
+
if (this.cache) {
|
|
227
|
+
const key = `${font}\0${text}`;
|
|
228
|
+
const hit = this.cache.get(key);
|
|
229
|
+
if (hit !== void 0) return { width: hit };
|
|
230
|
+
const w = this.fn(text, font);
|
|
231
|
+
this.cache.set(key, w);
|
|
232
|
+
return { width: w };
|
|
233
|
+
}
|
|
234
|
+
return { width: this.fn(text, font) };
|
|
235
|
+
}
|
|
236
|
+
clearCache() {
|
|
237
|
+
this.cache?.clear();
|
|
238
|
+
}
|
|
239
|
+
};
|
|
176
240
|
var PrecomputedAdapterKeyError = class extends Error {
|
|
177
241
|
name = "KeyError";
|
|
178
242
|
};
|
|
@@ -392,10 +456,9 @@ var leftStickyPunctuation = /* @__PURE__ */ new Set([
|
|
|
392
456
|
function normalizeWhitespace(text) {
|
|
393
457
|
return text.replace(/[\t\n\r\f ]+/g, " ").replace(/^ | $/g, "");
|
|
394
458
|
}
|
|
395
|
-
function segmentText(normalized) {
|
|
396
|
-
const wordSegmenter = new Intl.Segmenter(void 0, { granularity: "word" });
|
|
459
|
+
function segmentText(normalized, segmentAdapter) {
|
|
397
460
|
const pieces = [];
|
|
398
|
-
for (const s of
|
|
461
|
+
for (const s of segmentAdapter.segmentWords(normalized)) {
|
|
399
462
|
const text = s.segment;
|
|
400
463
|
const isWordLike = s.isWordLike ?? false;
|
|
401
464
|
const texts = [];
|
|
@@ -431,13 +494,11 @@ function segmentText(normalized) {
|
|
|
431
494
|
}
|
|
432
495
|
return pieces;
|
|
433
496
|
}
|
|
434
|
-
function analyzeAndMeasure(text, font, adapter, cache, stats) {
|
|
497
|
+
function analyzeAndMeasure(text, font, adapter, cache, stats, segmentAdapter) {
|
|
435
498
|
const normalized = normalizeWhitespace(text);
|
|
436
499
|
if (normalized.length === 0) return [];
|
|
437
|
-
const
|
|
438
|
-
const
|
|
439
|
-
granularity: "grapheme"
|
|
440
|
-
});
|
|
500
|
+
const segAdapter = segmentAdapter ?? getDefaultSegmentAdapter();
|
|
501
|
+
const pieces = segmentText(normalized, segAdapter);
|
|
441
502
|
const rawTexts = [];
|
|
442
503
|
const rawKinds = [];
|
|
443
504
|
const rawWordLike = [];
|
|
@@ -502,7 +563,7 @@ function analyzeAndMeasure(text, font, adapter, cache, stats) {
|
|
|
502
563
|
}
|
|
503
564
|
if (isCJK(t)) {
|
|
504
565
|
let unitText = "";
|
|
505
|
-
for (const gs of
|
|
566
|
+
for (const gs of segAdapter.segmentGraphemes(t)) {
|
|
506
567
|
const grapheme = gs.segment;
|
|
507
568
|
if (unitText.length > 0 && kinsokuStart.has(grapheme)) {
|
|
508
569
|
unitText += grapheme;
|
|
@@ -534,7 +595,7 @@ function analyzeAndMeasure(text, font, adapter, cache, stats) {
|
|
|
534
595
|
let graphemeWidths = null;
|
|
535
596
|
if (mergedWordLike[i] && t.length > 1) {
|
|
536
597
|
const gWidths = [];
|
|
537
|
-
for (const gs of
|
|
598
|
+
for (const gs of segAdapter.segmentGraphemes(t)) {
|
|
538
599
|
gWidths.push(measureCached(gs.segment));
|
|
539
600
|
}
|
|
540
601
|
if (gWidths.length > 1) {
|
|
@@ -545,10 +606,11 @@ function analyzeAndMeasure(text, font, adapter, cache, stats) {
|
|
|
545
606
|
}
|
|
546
607
|
return segments;
|
|
547
608
|
}
|
|
548
|
-
function computeLineBreaks(segments, maxWidth, adapter, font, cache) {
|
|
609
|
+
function computeLineBreaks(segments, maxWidth, adapter, font, cache, segmentAdapter) {
|
|
549
610
|
if (segments.length === 0) {
|
|
550
611
|
return { lines: [], lineCount: 0 };
|
|
551
612
|
}
|
|
613
|
+
const segAdapter = segmentAdapter ?? getDefaultSegmentAdapter();
|
|
552
614
|
const lines = [];
|
|
553
615
|
let lineW = 0;
|
|
554
616
|
let hasContent = false;
|
|
@@ -574,10 +636,7 @@ function computeLineBreaks(segments, maxWidth, adapter, font, cache) {
|
|
|
574
636
|
const seg = segments[i];
|
|
575
637
|
if (seg.kind === "soft-hyphen" || seg.kind === "hard-break") continue;
|
|
576
638
|
if (i === lineStartSeg && lineStartGrapheme > 0 && seg.graphemeWidths) {
|
|
577
|
-
const
|
|
578
|
-
granularity: "grapheme"
|
|
579
|
-
});
|
|
580
|
-
const graphemes = [...graphemeSegmenter2.segment(seg.text)].map((g) => g.segment);
|
|
639
|
+
const graphemes = [...segAdapter.segmentGraphemes(seg.text)].map((g) => g.segment);
|
|
581
640
|
text += graphemes.slice(lineStartGrapheme).join("");
|
|
582
641
|
} else {
|
|
583
642
|
text += seg.text;
|
|
@@ -585,10 +644,7 @@ function computeLineBreaks(segments, maxWidth, adapter, font, cache) {
|
|
|
585
644
|
}
|
|
586
645
|
if (endGrapheme > 0 && endSeg < segments.length) {
|
|
587
646
|
const seg = segments[endSeg];
|
|
588
|
-
const
|
|
589
|
-
granularity: "grapheme"
|
|
590
|
-
});
|
|
591
|
-
const graphemes = [...graphemeSegmenter2.segment(seg.text)].map((g) => g.segment);
|
|
647
|
+
const graphemes = [...segAdapter.segmentGraphemes(seg.text)].map((g) => g.segment);
|
|
592
648
|
const startG = lineStartSeg === endSeg ? lineStartGrapheme : 0;
|
|
593
649
|
text += graphemes.slice(startG, endGrapheme).join("");
|
|
594
650
|
}
|
|
@@ -719,26 +775,19 @@ function computeLineBreaks(segments, maxWidth, adapter, font, cache) {
|
|
|
719
775
|
function canBreakAfter(kind) {
|
|
720
776
|
return kind === "space" || kind === "zero-width-break" || kind === "soft-hyphen";
|
|
721
777
|
}
|
|
722
|
-
|
|
723
|
-
function graphemeSegmenter() {
|
|
724
|
-
if (_graphemeSegmenter === null) {
|
|
725
|
-
_graphemeSegmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
726
|
-
}
|
|
727
|
-
return _graphemeSegmenter;
|
|
728
|
-
}
|
|
729
|
-
function sliceSegmentText(seg, startG, endG) {
|
|
778
|
+
function sliceSegmentText(seg, startG, endG, segmentAdapter) {
|
|
730
779
|
if (startG === 0 && endG < 0) return seg.text;
|
|
731
|
-
const graphemes = [...
|
|
780
|
+
const graphemes = [...segmentAdapter.segmentGraphemes(seg.text)].map((g) => g.segment);
|
|
732
781
|
const stop = endG < 0 ? graphemes.length : endG;
|
|
733
782
|
return graphemes.slice(startG, stop).join("");
|
|
734
783
|
}
|
|
735
|
-
function buildLineText(segments, startSeg, startG, endSeg, endG, appendHyphen) {
|
|
784
|
+
function buildLineText(segments, startSeg, startG, endSeg, endG, appendHyphen, segmentAdapter) {
|
|
736
785
|
let text = "";
|
|
737
786
|
for (let i = startSeg; i < endSeg; i++) {
|
|
738
787
|
const seg = segments[i];
|
|
739
788
|
if (seg.kind === "soft-hyphen" || seg.kind === "hard-break") continue;
|
|
740
789
|
if (i === startSeg && startG > 0) {
|
|
741
|
-
text += sliceSegmentText(seg, startG, -1);
|
|
790
|
+
text += sliceSegmentText(seg, startG, -1, segmentAdapter);
|
|
742
791
|
} else {
|
|
743
792
|
text += seg.text;
|
|
744
793
|
}
|
|
@@ -746,7 +795,7 @@ function buildLineText(segments, startSeg, startG, endSeg, endG, appendHyphen) {
|
|
|
746
795
|
if (endG > 0 && endSeg < segments.length) {
|
|
747
796
|
const seg = segments[endSeg];
|
|
748
797
|
const from = startSeg === endSeg ? startG : 0;
|
|
749
|
-
text += sliceSegmentText(seg, from, endG);
|
|
798
|
+
text += sliceSegmentText(seg, from, endG, segmentAdapter);
|
|
750
799
|
}
|
|
751
800
|
if (appendHyphen) text += "-";
|
|
752
801
|
return text;
|
|
@@ -772,6 +821,7 @@ function resolveHyphenWidth(ctx) {
|
|
|
772
821
|
function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
773
822
|
let i = cursor.segmentIndex;
|
|
774
823
|
const initialG = cursor.graphemeIndex;
|
|
824
|
+
const segAdapter = ctx?.segmentAdapter ?? getDefaultSegmentAdapter();
|
|
775
825
|
if (i >= segments.length) return null;
|
|
776
826
|
if (initialG === 0) {
|
|
777
827
|
while (i < segments.length) {
|
|
@@ -837,7 +887,15 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
837
887
|
if (seg.graphemeWidths) {
|
|
838
888
|
const overflowed = consumeBreakable(startSeg, startG, seg.graphemeWidths);
|
|
839
889
|
if (overflowed) {
|
|
840
|
-
const text2 = buildLineText(
|
|
890
|
+
const text2 = buildLineText(
|
|
891
|
+
segments,
|
|
892
|
+
startSeg,
|
|
893
|
+
startG,
|
|
894
|
+
lineEndSeg,
|
|
895
|
+
lineEndG,
|
|
896
|
+
false,
|
|
897
|
+
segAdapter
|
|
898
|
+
);
|
|
841
899
|
return {
|
|
842
900
|
text: text2,
|
|
843
901
|
width: lineW,
|
|
@@ -860,7 +918,8 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
860
918
|
startG,
|
|
861
919
|
lineEndSeg,
|
|
862
920
|
lineEndG,
|
|
863
|
-
endsAtSoftHyphen2
|
|
921
|
+
endsAtSoftHyphen2,
|
|
922
|
+
segAdapter
|
|
864
923
|
);
|
|
865
924
|
return {
|
|
866
925
|
text: text2,
|
|
@@ -881,7 +940,15 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
881
940
|
if (w > slotWidth && seg.graphemeWidths) {
|
|
882
941
|
const overflowed = consumeBreakable(i, 0, seg.graphemeWidths);
|
|
883
942
|
if (overflowed) {
|
|
884
|
-
const text2 = buildLineText(
|
|
943
|
+
const text2 = buildLineText(
|
|
944
|
+
segments,
|
|
945
|
+
startSeg,
|
|
946
|
+
startG,
|
|
947
|
+
lineEndSeg,
|
|
948
|
+
lineEndG,
|
|
949
|
+
false,
|
|
950
|
+
segAdapter
|
|
951
|
+
);
|
|
885
952
|
return {
|
|
886
953
|
text: text2,
|
|
887
954
|
width: lineW,
|
|
@@ -915,7 +982,8 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
915
982
|
startG,
|
|
916
983
|
lineEndSeg,
|
|
917
984
|
lineEndG,
|
|
918
|
-
endsAtSoftHyphen2
|
|
985
|
+
endsAtSoftHyphen2,
|
|
986
|
+
segAdapter
|
|
919
987
|
);
|
|
920
988
|
return {
|
|
921
989
|
text: text3,
|
|
@@ -931,7 +999,8 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
931
999
|
startG,
|
|
932
1000
|
pendingBreakSeg,
|
|
933
1001
|
pendingBreakG,
|
|
934
|
-
pendingBreakSoftHyphen
|
|
1002
|
+
pendingBreakSoftHyphen,
|
|
1003
|
+
segAdapter
|
|
935
1004
|
);
|
|
936
1005
|
return {
|
|
937
1006
|
text: text3,
|
|
@@ -941,7 +1010,15 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
941
1010
|
};
|
|
942
1011
|
}
|
|
943
1012
|
if (w > slotWidth && seg.graphemeWidths) {
|
|
944
|
-
const text3 = buildLineText(
|
|
1013
|
+
const text3 = buildLineText(
|
|
1014
|
+
segments,
|
|
1015
|
+
startSeg,
|
|
1016
|
+
startG,
|
|
1017
|
+
lineEndSeg,
|
|
1018
|
+
lineEndG,
|
|
1019
|
+
false,
|
|
1020
|
+
segAdapter
|
|
1021
|
+
);
|
|
945
1022
|
return {
|
|
946
1023
|
text: text3,
|
|
947
1024
|
width: lineW,
|
|
@@ -949,7 +1026,15 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
949
1026
|
end: { segmentIndex: lineEndSeg, graphemeIndex: lineEndG }
|
|
950
1027
|
};
|
|
951
1028
|
}
|
|
952
|
-
const text2 = buildLineText(
|
|
1029
|
+
const text2 = buildLineText(
|
|
1030
|
+
segments,
|
|
1031
|
+
startSeg,
|
|
1032
|
+
startG,
|
|
1033
|
+
lineEndSeg,
|
|
1034
|
+
lineEndG,
|
|
1035
|
+
false,
|
|
1036
|
+
segAdapter
|
|
1037
|
+
);
|
|
953
1038
|
return {
|
|
954
1039
|
text: text2,
|
|
955
1040
|
width: lineW,
|
|
@@ -967,7 +1052,15 @@ function layoutNextLine(segments, cursor, slotWidth, ctx) {
|
|
|
967
1052
|
}
|
|
968
1053
|
if (!hasContent) return null;
|
|
969
1054
|
const endsAtSoftHyphen = lineEndSeg > 0 && segments[lineEndSeg - 1]?.kind === "soft-hyphen";
|
|
970
|
-
const text = buildLineText(
|
|
1055
|
+
const text = buildLineText(
|
|
1056
|
+
segments,
|
|
1057
|
+
startSeg,
|
|
1058
|
+
startG,
|
|
1059
|
+
lineEndSeg,
|
|
1060
|
+
lineEndG,
|
|
1061
|
+
endsAtSoftHyphen,
|
|
1062
|
+
segAdapter
|
|
1063
|
+
);
|
|
971
1064
|
return {
|
|
972
1065
|
text,
|
|
973
1066
|
width: lineW + (endsAtSoftHyphen ? hyphenWidth : 0),
|
|
@@ -996,11 +1089,9 @@ function carveTextLineSlots(base, blocked, minSlotWidth = 0) {
|
|
|
996
1089
|
}
|
|
997
1090
|
return slots;
|
|
998
1091
|
}
|
|
999
|
-
function computeCharPositions(lineBreaks, segments, lineHeight) {
|
|
1092
|
+
function computeCharPositions(lineBreaks, segments, lineHeight, segmentAdapter) {
|
|
1000
1093
|
const positions = [];
|
|
1001
|
-
const
|
|
1002
|
-
granularity: "grapheme"
|
|
1003
|
-
});
|
|
1094
|
+
const segAdapter = segmentAdapter ?? getDefaultSegmentAdapter();
|
|
1004
1095
|
for (let lineIdx = 0; lineIdx < lineBreaks.lines.length; lineIdx++) {
|
|
1005
1096
|
const line = lineBreaks.lines[lineIdx];
|
|
1006
1097
|
const y = lineIdx * lineHeight;
|
|
@@ -1011,7 +1102,7 @@ function computeCharPositions(lineBreaks, segments, lineHeight) {
|
|
|
1011
1102
|
if (si >= line.endSegment && line.endGrapheme === 0) break;
|
|
1012
1103
|
continue;
|
|
1013
1104
|
}
|
|
1014
|
-
const graphemes = [...
|
|
1105
|
+
const graphemes = [...segAdapter.segmentGraphemes(seg.text)].map((g) => g.segment);
|
|
1015
1106
|
if (graphemes.length === 0) continue;
|
|
1016
1107
|
const startG = si === line.startSegment ? line.startGrapheme : 0;
|
|
1017
1108
|
let endG;
|
|
@@ -1032,7 +1123,8 @@ function computeCharPositions(lineBreaks, segments, lineHeight) {
|
|
|
1032
1123
|
return positions;
|
|
1033
1124
|
}
|
|
1034
1125
|
function reactiveLayout(opts) {
|
|
1035
|
-
const { adapter, name = "reactive-layout" } = opts;
|
|
1126
|
+
const { adapter, segmentAdapter: segmentAdapterOpt, name = "reactive-layout" } = opts;
|
|
1127
|
+
const segmentAdapter = segmentAdapterOpt ?? getDefaultSegmentAdapter();
|
|
1036
1128
|
const g = new import_graph.Graph(name);
|
|
1037
1129
|
const measureCache = /* @__PURE__ */ new Map();
|
|
1038
1130
|
const textNode = (0, import_core2.node)([], { name: "text", initial: opts.text ?? "" });
|
|
@@ -1070,7 +1162,8 @@ function reactiveLayout(opts) {
|
|
|
1070
1162
|
fontVal,
|
|
1071
1163
|
adapter,
|
|
1072
1164
|
measureCache,
|
|
1073
|
-
measureStats
|
|
1165
|
+
measureStats,
|
|
1166
|
+
segmentAdapter
|
|
1074
1167
|
);
|
|
1075
1168
|
const elapsed = (0, import_core2.monotonicNs)() - t0;
|
|
1076
1169
|
const lookups = measureStats.hits + measureStats.misses;
|
|
@@ -1123,7 +1216,8 @@ function reactiveLayout(opts) {
|
|
|
1123
1216
|
data[1],
|
|
1124
1217
|
adapter,
|
|
1125
1218
|
data[2],
|
|
1126
|
-
measureCache
|
|
1219
|
+
measureCache,
|
|
1220
|
+
segmentAdapter
|
|
1127
1221
|
)
|
|
1128
1222
|
);
|
|
1129
1223
|
},
|
|
@@ -1165,7 +1259,8 @@ function reactiveLayout(opts) {
|
|
|
1165
1259
|
computeCharPositions(
|
|
1166
1260
|
data[0],
|
|
1167
1261
|
data[1],
|
|
1168
|
-
data[2]
|
|
1262
|
+
data[2],
|
|
1263
|
+
segmentAdapter
|
|
1169
1264
|
)
|
|
1170
1265
|
);
|
|
1171
1266
|
},
|
|
@@ -1212,9 +1307,24 @@ function measureBlock(block, maxWidth, adapters, measureCache, defaultFont, defa
|
|
|
1212
1307
|
case "text": {
|
|
1213
1308
|
const font = block.font ?? defaultFont;
|
|
1214
1309
|
const lineHeight = block.lineHeight ?? defaultLineHeight;
|
|
1215
|
-
const
|
|
1216
|
-
const
|
|
1217
|
-
|
|
1310
|
+
const segAdapter = adapters.segment ?? getDefaultSegmentAdapter();
|
|
1311
|
+
const segments = analyzeAndMeasure(
|
|
1312
|
+
block.text,
|
|
1313
|
+
font,
|
|
1314
|
+
adapters.text,
|
|
1315
|
+
measureCache,
|
|
1316
|
+
void 0,
|
|
1317
|
+
segAdapter
|
|
1318
|
+
);
|
|
1319
|
+
const lineBreaks = computeLineBreaks(
|
|
1320
|
+
segments,
|
|
1321
|
+
maxWidth,
|
|
1322
|
+
adapters.text,
|
|
1323
|
+
font,
|
|
1324
|
+
measureCache,
|
|
1325
|
+
segAdapter
|
|
1326
|
+
);
|
|
1327
|
+
const charPositions = computeCharPositions(lineBreaks, segments, lineHeight, segAdapter);
|
|
1218
1328
|
const height = lineBreaks.lineCount * lineHeight;
|
|
1219
1329
|
let width = 0;
|
|
1220
1330
|
for (const line of lineBreaks.lines) {
|
|
@@ -1432,6 +1542,7 @@ function obstacleIntervalForBand(o, bandTop, bandBottom) {
|
|
|
1432
1542
|
}
|
|
1433
1543
|
function computeFlowLines(segments, container, columns, obstacles, lineHeight, minSlotWidth, opts) {
|
|
1434
1544
|
const paragraphSpacing = opts?.paragraphSpacing ?? lineHeight;
|
|
1545
|
+
const segmentAdapterCtx = opts?.segmentAdapter;
|
|
1435
1546
|
const lines = [];
|
|
1436
1547
|
let cursor = { segmentIndex: 0, graphemeIndex: 0 };
|
|
1437
1548
|
if (segments.length === 0 || columns.count <= 0 || lineHeight <= 0) {
|
|
@@ -1464,7 +1575,12 @@ function computeFlowLines(segments, container, columns, obstacles, lineHeight, m
|
|
|
1464
1575
|
for (let si = 0; si < slots.length; si++) {
|
|
1465
1576
|
const slot = slots[si];
|
|
1466
1577
|
const slotW = slot.right - slot.left;
|
|
1467
|
-
const line = layoutNextLine(
|
|
1578
|
+
const line = layoutNextLine(
|
|
1579
|
+
segments,
|
|
1580
|
+
cursor,
|
|
1581
|
+
slotW,
|
|
1582
|
+
segmentAdapterCtx ? { segmentAdapter: segmentAdapterCtx } : void 0
|
|
1583
|
+
);
|
|
1468
1584
|
if (line === null) {
|
|
1469
1585
|
return { lines, cursor };
|
|
1470
1586
|
}
|
|
@@ -1496,7 +1612,13 @@ function computeFlowLines(segments, container, columns, obstacles, lineHeight, m
|
|
|
1496
1612
|
return { lines, cursor };
|
|
1497
1613
|
}
|
|
1498
1614
|
function reactiveFlowLayout(opts) {
|
|
1499
|
-
const {
|
|
1615
|
+
const {
|
|
1616
|
+
adapter,
|
|
1617
|
+
segmentAdapter: segmentAdapterOpt,
|
|
1618
|
+
name = "reactive-flow-layout",
|
|
1619
|
+
minSlotWidth = 20
|
|
1620
|
+
} = opts;
|
|
1621
|
+
const segmentAdapter = segmentAdapterOpt ?? getDefaultSegmentAdapter();
|
|
1500
1622
|
const g = new import_graph3.Graph(name);
|
|
1501
1623
|
const measureCache = /* @__PURE__ */ new Map();
|
|
1502
1624
|
const textNode = (0, import_core4.node)([], { name: "text", initial: opts.text ?? "" });
|
|
@@ -1522,7 +1644,14 @@ function reactiveFlowLayout(opts) {
|
|
|
1522
1644
|
const textVal = b0 != null && b0.length > 0 ? b0.at(-1) : ctx.prevData[0];
|
|
1523
1645
|
const b1 = data[1];
|
|
1524
1646
|
const fontVal = b1 != null && b1.length > 0 ? b1.at(-1) : ctx.prevData[1];
|
|
1525
|
-
const result = analyzeAndMeasure(
|
|
1647
|
+
const result = analyzeAndMeasure(
|
|
1648
|
+
textVal,
|
|
1649
|
+
fontVal,
|
|
1650
|
+
adapter,
|
|
1651
|
+
measureCache,
|
|
1652
|
+
void 0,
|
|
1653
|
+
segmentAdapter
|
|
1654
|
+
);
|
|
1526
1655
|
actions.emit(result);
|
|
1527
1656
|
const flush = () => {
|
|
1528
1657
|
measureCache.clear();
|
|
@@ -1548,7 +1677,7 @@ function reactiveFlowLayout(opts) {
|
|
|
1548
1677
|
data[3],
|
|
1549
1678
|
data[4],
|
|
1550
1679
|
minSlotWidth,
|
|
1551
|
-
{ paragraphSpacing: effectiveSpacing }
|
|
1680
|
+
{ paragraphSpacing: effectiveSpacing, segmentAdapter }
|
|
1552
1681
|
);
|
|
1553
1682
|
const elapsed = (0, import_core4.monotonicNs)() - t0;
|
|
1554
1683
|
const overflow = Math.max(0, segments.length - cursor.segmentIndex);
|