@astryxdesign/core 0.7.7-canary.f4edef8 → 0.7.7-canary.f9ac85f
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GestureHost.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureHost.ts"],"names":[],"mappings":"AAoIA,OAAO,EAEL,YAAY,EAGZ,KAAK,mBAAmB,EACxB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAC,iBAAiB,EAAgB,MAAM,qBAAqB,CAAC;AAC1E,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAqBhD,OAAO,KAAK,EAEV,YAAY,EAIZ,aAAa,EAGd,MAAM,SAAS,CAAC;AAgDjB,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtC,4DAA4D;IAC5D,YAAY,CAAC,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACnD;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAClD;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"GestureHost.d.ts","sourceRoot":"","sources":["../../src/gestures/GestureHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -291,6 +291,28 @@ function absorbedDebt(debt, moved) {
|
|
|
291
291
|
return Math.sign(debt) * Math.max(0, Math.abs(debt) - Math.abs(moved) / 2);
|
|
292
292
|
}
|
|
293
293
|
|
|
294
|
+
/**
|
|
295
|
+
* A stall held a bunched wheel's frames back, and the move just before it took
|
|
296
|
+
* their time. So the wheel joins that move's reading. It can restore what the
|
|
297
|
+
* late move lowered, but never passes the speed before it.
|
|
298
|
+
*/
|
|
299
|
+
function joinReading(f, trueX, trueY) {
|
|
300
|
+
if (f.readSpan <= 0) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
f.speedX = joinedSpeed(f.speedX, (trueX - f.readFromX) / f.readSpan, f.priorSpeedX);
|
|
304
|
+
f.speedY = joinedSpeed(f.speedY, (trueY - f.readFromY) / f.readSpan, f.priorSpeedY);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* A joined reading, held to the speed before the late move. It only ever
|
|
309
|
+
* raises the current speed, in the current direction.
|
|
310
|
+
*/
|
|
311
|
+
function joinedSpeed(current, reading, prior) {
|
|
312
|
+
const held = Math.sign(reading) * Math.min(Math.abs(reading), Math.abs(prior));
|
|
313
|
+
return held * current >= 0 && Math.abs(held) > Math.abs(current) ? held : current;
|
|
314
|
+
}
|
|
315
|
+
|
|
294
316
|
/**
|
|
295
317
|
* `target` where it is ahead of `shown` in the direction of `speed`, else
|
|
296
318
|
* `shown`: a reconcile that never steps back.
|
|
@@ -1827,9 +1849,22 @@ export class GestureHost {
|
|
|
1827
1849
|
}
|
|
1828
1850
|
if (this.wheelSegment?.decaying === true) {
|
|
1829
1851
|
// Undecided: the real deltas wait for the splitter while the
|
|
1830
|
-
// fingers' last speed carries the pan on.
|
|
1852
|
+
// fingers' last speed carries the pan on. A held wheel with its own
|
|
1853
|
+
// frame ends the reading a stall's bunch joins.
|
|
1831
1854
|
f.heldX += dx;
|
|
1832
1855
|
f.heldY += dy;
|
|
1856
|
+
if (this.wheelSegment.bunched) {
|
|
1857
|
+
// A raised speed moves on from where the pan is shown, so the
|
|
1858
|
+
// position never jumps inside the bunch.
|
|
1859
|
+
const since = time - f.lastMove;
|
|
1860
|
+
const speedX = f.speedX;
|
|
1861
|
+
const speedY = f.speedY;
|
|
1862
|
+
joinReading(f, f.trueX - f.heldX, f.trueY - f.heldY);
|
|
1863
|
+
f.baseX += (speedX - f.speedX) * since;
|
|
1864
|
+
f.baseY += (speedY - f.speedY) * since;
|
|
1865
|
+
} else {
|
|
1866
|
+
f.readSpan = 0;
|
|
1867
|
+
}
|
|
1833
1868
|
this.followProvisionally(gesture, f, time);
|
|
1834
1869
|
return;
|
|
1835
1870
|
}
|
|
@@ -1842,10 +1877,18 @@ export class GestureHost {
|
|
|
1842
1877
|
const debtY = absorbedDebt(gesture.y - beforeY, dy);
|
|
1843
1878
|
const trueX = beforeX - dx;
|
|
1844
1879
|
const trueY = beforeY - dy;
|
|
1845
|
-
// A wheel the splitter reads as one stall's merge
|
|
1846
|
-
//
|
|
1880
|
+
// A wheel the splitter reads as one stall's merge has no speed of its
|
|
1881
|
+
// own. It joins the reading of the move before its bunch, whose
|
|
1882
|
+
// interval holds its time.
|
|
1847
1883
|
const elapsed = time - f.lastMove;
|
|
1848
|
-
if (
|
|
1884
|
+
if (this.wheelSegment?.bunched === true) {
|
|
1885
|
+
joinReading(f, trueX, trueY);
|
|
1886
|
+
} else if (elapsed > 0) {
|
|
1887
|
+
f.priorSpeedX = f.speedX;
|
|
1888
|
+
f.priorSpeedY = f.speedY;
|
|
1889
|
+
f.readFromX = f.trueX;
|
|
1890
|
+
f.readFromY = f.trueY;
|
|
1891
|
+
f.readSpan = elapsed;
|
|
1849
1892
|
f.speedX = (trueX - f.trueX) / elapsed;
|
|
1850
1893
|
f.speedY = (trueY - f.trueY) / elapsed;
|
|
1851
1894
|
}
|
|
@@ -1980,7 +2023,12 @@ export class GestureHost {
|
|
|
1980
2023
|
baseX: kept.x,
|
|
1981
2024
|
baseY: kept.y,
|
|
1982
2025
|
speedX: 0,
|
|
1983
|
-
speedY: 0
|
|
2026
|
+
speedY: 0,
|
|
2027
|
+
readFromX: kept.x,
|
|
2028
|
+
readFromY: kept.y,
|
|
2029
|
+
readSpan: 0,
|
|
2030
|
+
priorSpeedX: 0,
|
|
2031
|
+
priorSpeedY: 0
|
|
1984
2032
|
};
|
|
1985
2033
|
}
|
|
1986
2034
|
this.arena.began(kind === 'pan' ? [{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astryxdesign/core",
|
|
3
|
-
"version": "0.7.7-canary.
|
|
3
|
+
"version": "0.7.7-canary.f9ac85f",
|
|
4
4
|
"displayName": "Astryx Core",
|
|
5
5
|
"description": "The component library. Accessible, themeable React components with built-in spacing, dark mode, and StyleX styling.",
|
|
6
6
|
"author": "Meta Open Source",
|
|
@@ -865,9 +865,9 @@
|
|
|
865
865
|
"react-dom": ">=19.0.0"
|
|
866
866
|
},
|
|
867
867
|
"devDependencies": {
|
|
868
|
-
"@astryxdesign/a11y-spec": "0.7.7-canary.
|
|
869
|
-
"@astryxdesign/cli": "0.7.7-canary.
|
|
870
|
-
"@astryxdesign/interaction-harness": "0.7.7-canary.
|
|
868
|
+
"@astryxdesign/a11y-spec": "0.7.7-canary.f9ac85f",
|
|
869
|
+
"@astryxdesign/cli": "0.7.7-canary.f9ac85f",
|
|
870
|
+
"@astryxdesign/interaction-harness": "0.7.7-canary.f9ac85f",
|
|
871
871
|
"@babel/cli": "^7.29.7",
|
|
872
872
|
"@babel/core": "^7.29.7",
|
|
873
873
|
"@babel/preset-react": "^7.29.7",
|
|
@@ -475,6 +475,16 @@ interface WheelFollow {
|
|
|
475
475
|
/** The fingers' speed at that move, content px per ms. */
|
|
476
476
|
speedX: number;
|
|
477
477
|
speedY: number;
|
|
478
|
+
/**
|
|
479
|
+
* The reading behind that speed: the fingers' travel where it began, and
|
|
480
|
+
* its interval in ms.
|
|
481
|
+
*/
|
|
482
|
+
readFromX: number;
|
|
483
|
+
readFromY: number;
|
|
484
|
+
readSpan: number;
|
|
485
|
+
/** The fingers' speed before that reading, content px per ms. */
|
|
486
|
+
priorSpeedX: number;
|
|
487
|
+
priorSpeedY: number;
|
|
478
488
|
}
|
|
479
489
|
|
|
480
490
|
/**
|
|
@@ -503,6 +513,39 @@ function absorbedDebt(debt: number, moved: number): number {
|
|
|
503
513
|
return Math.sign(debt) * Math.max(0, Math.abs(debt) - Math.abs(moved) / 2);
|
|
504
514
|
}
|
|
505
515
|
|
|
516
|
+
/**
|
|
517
|
+
* A stall held a bunched wheel's frames back, and the move just before it took
|
|
518
|
+
* their time. So the wheel joins that move's reading. It can restore what the
|
|
519
|
+
* late move lowered, but never passes the speed before it.
|
|
520
|
+
*/
|
|
521
|
+
function joinReading(f: WheelFollow, trueX: number, trueY: number): void {
|
|
522
|
+
if (f.readSpan <= 0) {
|
|
523
|
+
return;
|
|
524
|
+
}
|
|
525
|
+
f.speedX = joinedSpeed(
|
|
526
|
+
f.speedX,
|
|
527
|
+
(trueX - f.readFromX) / f.readSpan,
|
|
528
|
+
f.priorSpeedX,
|
|
529
|
+
);
|
|
530
|
+
f.speedY = joinedSpeed(
|
|
531
|
+
f.speedY,
|
|
532
|
+
(trueY - f.readFromY) / f.readSpan,
|
|
533
|
+
f.priorSpeedY,
|
|
534
|
+
);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* A joined reading, held to the speed before the late move. It only ever
|
|
539
|
+
* raises the current speed, in the current direction.
|
|
540
|
+
*/
|
|
541
|
+
function joinedSpeed(current: number, reading: number, prior: number): number {
|
|
542
|
+
const held =
|
|
543
|
+
Math.sign(reading) * Math.min(Math.abs(reading), Math.abs(prior));
|
|
544
|
+
return held * current >= 0 && Math.abs(held) > Math.abs(current)
|
|
545
|
+
? held
|
|
546
|
+
: current;
|
|
547
|
+
}
|
|
548
|
+
|
|
506
549
|
/**
|
|
507
550
|
* `target` where it is ahead of `shown` in the direction of `speed`, else
|
|
508
551
|
* `shown`: a reconcile that never steps back.
|
|
@@ -2276,9 +2319,22 @@ export class GestureHost {
|
|
|
2276
2319
|
}
|
|
2277
2320
|
if (this.wheelSegment?.decaying === true) {
|
|
2278
2321
|
// Undecided: the real deltas wait for the splitter while the
|
|
2279
|
-
// fingers' last speed carries the pan on.
|
|
2322
|
+
// fingers' last speed carries the pan on. A held wheel with its own
|
|
2323
|
+
// frame ends the reading a stall's bunch joins.
|
|
2280
2324
|
f.heldX += dx;
|
|
2281
2325
|
f.heldY += dy;
|
|
2326
|
+
if (this.wheelSegment.bunched) {
|
|
2327
|
+
// A raised speed moves on from where the pan is shown, so the
|
|
2328
|
+
// position never jumps inside the bunch.
|
|
2329
|
+
const since = time - f.lastMove;
|
|
2330
|
+
const speedX = f.speedX;
|
|
2331
|
+
const speedY = f.speedY;
|
|
2332
|
+
joinReading(f, f.trueX - f.heldX, f.trueY - f.heldY);
|
|
2333
|
+
f.baseX += (speedX - f.speedX) * since;
|
|
2334
|
+
f.baseY += (speedY - f.speedY) * since;
|
|
2335
|
+
} else {
|
|
2336
|
+
f.readSpan = 0;
|
|
2337
|
+
}
|
|
2282
2338
|
this.followProvisionally(gesture, f, time);
|
|
2283
2339
|
return;
|
|
2284
2340
|
}
|
|
@@ -2291,10 +2347,18 @@ export class GestureHost {
|
|
|
2291
2347
|
const debtY = absorbedDebt(gesture.y - beforeY, dy);
|
|
2292
2348
|
const trueX = beforeX - dx;
|
|
2293
2349
|
const trueY = beforeY - dy;
|
|
2294
|
-
// A wheel the splitter reads as one stall's merge
|
|
2295
|
-
//
|
|
2350
|
+
// A wheel the splitter reads as one stall's merge has no speed of its
|
|
2351
|
+
// own. It joins the reading of the move before its bunch, whose
|
|
2352
|
+
// interval holds its time.
|
|
2296
2353
|
const elapsed = time - f.lastMove;
|
|
2297
|
-
if (
|
|
2354
|
+
if (this.wheelSegment?.bunched === true) {
|
|
2355
|
+
joinReading(f, trueX, trueY);
|
|
2356
|
+
} else if (elapsed > 0) {
|
|
2357
|
+
f.priorSpeedX = f.speedX;
|
|
2358
|
+
f.priorSpeedY = f.speedY;
|
|
2359
|
+
f.readFromX = f.trueX;
|
|
2360
|
+
f.readFromY = f.trueY;
|
|
2361
|
+
f.readSpan = elapsed;
|
|
2298
2362
|
f.speedX = (trueX - f.trueX) / elapsed;
|
|
2299
2363
|
f.speedY = (trueY - f.trueY) / elapsed;
|
|
2300
2364
|
}
|
|
@@ -2445,6 +2509,11 @@ export class GestureHost {
|
|
|
2445
2509
|
baseY: kept.y,
|
|
2446
2510
|
speedX: 0,
|
|
2447
2511
|
speedY: 0,
|
|
2512
|
+
readFromX: kept.x,
|
|
2513
|
+
readFromY: kept.y,
|
|
2514
|
+
readSpan: 0,
|
|
2515
|
+
priorSpeedX: 0,
|
|
2516
|
+
priorSpeedY: 0,
|
|
2448
2517
|
};
|
|
2449
2518
|
}
|
|
2450
2519
|
this.arena.began(
|