@flighthq/interaction 0.2.1-next.841.373388f → 0.3.0-next.1032.e2b99fc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/contract.d.ts +16 -0
  2. package/dist/contract.d.ts.map +1 -0
  3. package/dist/contract.js +16 -0
  4. package/dist/contract.js.map +1 -0
  5. package/dist/cursorBackend.d.ts +1 -1
  6. package/dist/cursorBackend.d.ts.map +1 -1
  7. package/dist/displayHitTests.d.ts +1 -4
  8. package/dist/displayHitTests.d.ts.map +1 -1
  9. package/dist/displayHitTests.js +0 -9
  10. package/dist/displayHitTests.js.map +1 -1
  11. package/dist/displayObjectOverlap.d.ts +1 -1
  12. package/dist/displayObjectOverlap.d.ts.map +1 -1
  13. package/dist/displayObjectOverlap.js +2 -2
  14. package/dist/displayObjectOverlap.js.map +1 -1
  15. package/dist/enableInteractionGuards.d.ts +1 -1
  16. package/dist/enableInteractionGuards.d.ts.map +1 -1
  17. package/dist/enableInteractionGuards.js +3 -3
  18. package/dist/enableInteractionGuards.js.map +1 -1
  19. package/dist/focusManager.d.ts +1 -1
  20. package/dist/focusManager.d.ts.map +1 -1
  21. package/dist/focusManager.js +2 -2
  22. package/dist/focusManager.js.map +1 -1
  23. package/dist/hitTests.d.ts +1 -1
  24. package/dist/hitTests.d.ts.map +1 -1
  25. package/dist/hitTests.js +3 -3
  26. package/dist/hitTests.js.map +1 -1
  27. package/dist/index.d.ts +1 -15
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1 -15
  30. package/dist/index.js.map +1 -1
  31. package/dist/interactionManager.d.ts +1 -1
  32. package/dist/interactionManager.d.ts.map +1 -1
  33. package/dist/interactionManager.js +3 -3
  34. package/dist/interactionManager.js.map +1 -1
  35. package/dist/interactionSpatialIndex.d.ts +1 -1
  36. package/dist/interactionSpatialIndex.d.ts.map +1 -1
  37. package/dist/interactionSpatialIndex.js +2 -2
  38. package/dist/interactionSpatialIndex.js.map +1 -1
  39. package/dist/nodeInteractionState.d.ts +1 -1
  40. package/dist/nodeInteractionState.d.ts.map +1 -1
  41. package/dist/nodeInteractionState.js +1 -1
  42. package/dist/nodeInteractionState.js.map +1 -1
  43. package/dist/registerDefaultHitTests.d.ts.map +1 -1
  44. package/dist/registerDefaultHitTests.js +2 -5
  45. package/dist/registerDefaultHitTests.js.map +1 -1
  46. package/dist/registerShapeHitTest.js +5 -5
  47. package/dist/registerShapeHitTest.js.map +1 -1
  48. package/dist/{registerBitmapHitTest.d.ts → registerSpriteHitTest.d.ts} +4 -4
  49. package/dist/registerSpriteHitTest.d.ts.map +1 -0
  50. package/dist/registerSpriteHitTest.js +62 -0
  51. package/dist/registerSpriteHitTest.js.map +1 -0
  52. package/dist/registerTextHitTest.js +5 -5
  53. package/dist/registerTextHitTest.js.map +1 -1
  54. package/dist/spatialQuery.d.ts +1 -1
  55. package/dist/spatialQuery.d.ts.map +1 -1
  56. package/dist/spatialQuery.js +2 -2
  57. package/dist/spatialQuery.js.map +1 -1
  58. package/dist/spriteHitTests.d.ts +1 -1
  59. package/dist/spriteHitTests.d.ts.map +1 -1
  60. package/package.json +19 -14
  61. package/src/cursorBackend.test.ts +1 -1
  62. package/src/displayHitTests.test.ts +3 -42
  63. package/src/displayObjectOverlap.test.ts +3 -3
  64. package/src/enableInteractionGuards.test.ts +3 -3
  65. package/src/focusManager.test.ts +5 -5
  66. package/src/hitTests.test.ts +6 -6
  67. package/src/interactionManager.test.ts +11 -6
  68. package/src/interactionSpatialIndex.test.ts +5 -5
  69. package/src/nodeInteractionState.test.ts +2 -2
  70. package/src/registerDefaultHitTests.test.ts +5 -5
  71. package/src/registerShapeHitTest.test.ts +4 -4
  72. package/src/{registerBitmapHitTest.test.ts → registerSpriteHitTest.test.ts} +8 -8
  73. package/src/registerTextHitTest.test.ts +6 -6
  74. package/src/spatialQuery.test.ts +3 -3
  75. package/src/spriteHitTests.test.ts +5 -3
  76. package/dist/registerBitmapHitTest.d.ts.map +0 -1
  77. package/dist/registerBitmapHitTest.js +0 -55
  78. package/dist/registerBitmapHitTest.js.map +0 -1
@@ -1,55 +0,0 @@
1
- import { inverseMatrixTransformPointXY } from '@flighthq/geometry';
2
- import { getNodeWorldMatrix } from '@flighthq/node';
3
- import { createSurfaceFromImageResource, getSurfacePixelChannel } from '@flighthq/surface';
4
- import { BitmapKind, ImageChannel } from '@flighthq/types';
5
- import { hitTestGraphLocalBounds, registerHitTestPrecise } from './hitTests';
6
- /**
7
- * Opt-in exact hit provider for bitmaps: the `*Precise` queries then hit a Bitmap only where its pixel
8
- * alpha meets `alphaThreshold` (0..255). Within the node's bounds but where the pixels aren't readable
9
- * (no image, a GPU-only texture, or a headless environment that can't rasterize), it falls back to a
10
- * bounds hit rather than throwing — best-available precision for that instance.
11
- *
12
- * Importing this module is the opt-in — it pulls `@flighthq/surface`, so the base interaction bundle
13
- * stays free of it (tree-shaken unless referenced).
14
- */
15
- export function registerBitmapHitTest(alphaThreshold = 1) {
16
- registerHitTestPrecise(BitmapKind, (source, x, y) => hitTestBitmapAlpha(source, x, y, alphaThreshold));
17
- }
18
- // Returns 0 on a hit (opaque pixel, or bounds fallback when pixels are unreadable), -1 on a miss.
19
- function hitTestBitmapAlpha(source, x, y, alphaThreshold) {
20
- if (!hitTestGraphLocalBounds(source, x, y))
21
- return -1;
22
- const bitmap = source;
23
- const image = bitmap.data.image;
24
- if (image === null)
25
- return 0;
26
- const surface = surfaceForImage(image);
27
- if (surface === null)
28
- return 0;
29
- inverseMatrixTransformPointXY(bitmapAlphaLocalPoint, getNodeWorldMatrix(source), x, y);
30
- const rect = bitmap.data.sourceRectangle;
31
- const px = Math.floor(bitmapAlphaLocalPoint.x + (rect !== null ? rect.x : 0));
32
- const py = Math.floor(bitmapAlphaLocalPoint.y + (rect !== null ? rect.y : 0));
33
- if (px < 0 || py < 0 || px >= surface.width || py >= surface.height)
34
- return -1;
35
- return getSurfacePixelChannel(surface, px, py, ImageChannel.Alpha) >= alphaThreshold ? 0 : -1;
36
- }
37
- function surfaceForImage(image) {
38
- const cached = surfaceCache.get(image);
39
- if (cached !== undefined)
40
- return cached;
41
- let surface = null;
42
- try {
43
- surface = createSurfaceFromImageResource(image);
44
- }
45
- catch {
46
- surface = null;
47
- }
48
- // Cache only successes so an image that is not yet readable is retried later.
49
- if (surface !== null)
50
- surfaceCache.set(image, surface);
51
- return surface;
52
- }
53
- const bitmapAlphaLocalPoint = { x: 0, y: 0 };
54
- const surfaceCache = new WeakMap();
55
- //# sourceMappingURL=registerBitmapHitTest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registerBitmapHitTest.js","sourceRoot":"","sources":["../src/registerBitmapHitTest.ts"],"names":[],"mappings":"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"}