@lightningtv/solid 0.0.9 → 0.0.10

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 (62) hide show
  1. package/dist/{source → src}/Text.jsx +1 -0
  2. package/dist/src/Text.jsx.map +1 -0
  3. package/dist/{source → src}/View.jsx +1 -0
  4. package/dist/src/View.jsx.map +1 -0
  5. package/dist/{types → src}/activeElement.d.ts +1 -1
  6. package/dist/{source → src}/activeElement.js +1 -0
  7. package/dist/src/activeElement.js.map +1 -0
  8. package/dist/{types → src}/index.d.ts +3 -4
  9. package/dist/{source → src}/index.js +4 -4
  10. package/dist/src/index.js.map +1 -0
  11. package/dist/src/jsx-runtime.js +2 -0
  12. package/dist/src/jsx-runtime.js.map +1 -0
  13. package/dist/{source → src}/primitives/announcer/announcer.js +1 -0
  14. package/dist/src/primitives/announcer/announcer.js.map +1 -0
  15. package/dist/{source → src}/primitives/announcer/index.js +1 -0
  16. package/dist/src/primitives/announcer/index.js.map +1 -0
  17. package/dist/{source → src}/primitives/announcer/speech.js +1 -0
  18. package/dist/src/primitives/announcer/speech.js.map +1 -0
  19. package/dist/{source → src}/primitives/createInfiniteItems.js +1 -0
  20. package/dist/src/primitives/createInfiniteItems.js.map +1 -0
  21. package/dist/{types → src}/primitives/createSpriteMap.d.ts +1 -0
  22. package/dist/{source → src}/primitives/createSpriteMap.js +1 -0
  23. package/dist/src/primitives/createSpriteMap.js.map +1 -0
  24. package/dist/{source → src}/primitives/index.js +1 -0
  25. package/dist/src/primitives/index.js.map +1 -0
  26. package/dist/{source → src}/primitives/portal.jsx +1 -0
  27. package/dist/src/primitives/portal.jsx.map +1 -0
  28. package/dist/{source → src}/primitives/useFocusManager.js +1 -0
  29. package/dist/src/primitives/useFocusManager.js.map +1 -0
  30. package/dist/{source → src}/primitives/useMouse.js +26 -12
  31. package/dist/src/primitives/useMouse.js.map +1 -0
  32. package/dist/{source → src}/primitives/withPadding.js +1 -0
  33. package/dist/src/primitives/withPadding.js.map +1 -0
  34. package/dist/src/render.d.ts +22 -0
  35. package/dist/{source → src}/render.js +1 -0
  36. package/dist/src/render.js.map +1 -0
  37. package/dist/{source → src}/solidOpts.js +1 -0
  38. package/dist/src/solidOpts.js.map +1 -0
  39. package/dist/{source → src}/utils.js +1 -0
  40. package/dist/src/utils.js.map +1 -0
  41. package/dist/tsconfig.tsbuildinfo +1 -0
  42. package/package.json +12 -8
  43. package/src/index.ts +6 -7
  44. package/src/primitives/useMouse.ts +32 -14
  45. package/dist/esm/index.js +0 -1013
  46. package/dist/esm/index.js.map +0 -1
  47. package/dist/source/jsx-runtime.js +0 -1
  48. package/dist/types/render.d.ts +0 -22
  49. /package/dist/{types → src}/Text.d.ts +0 -0
  50. /package/dist/{types → src}/View.d.ts +0 -0
  51. /package/dist/{types → src}/jsx-runtime.d.ts +0 -0
  52. /package/dist/{types → src}/primitives/announcer/announcer.d.ts +0 -0
  53. /package/dist/{types → src}/primitives/announcer/index.d.ts +0 -0
  54. /package/dist/{types → src}/primitives/announcer/speech.d.ts +0 -0
  55. /package/dist/{types → src}/primitives/createInfiniteItems.d.ts +0 -0
  56. /package/dist/{types → src}/primitives/index.d.ts +0 -0
  57. /package/dist/{types → src}/primitives/portal.d.ts +0 -0
  58. /package/dist/{types → src}/primitives/useFocusManager.d.ts +0 -0
  59. /package/dist/{types → src}/primitives/useMouse.d.ts +0 -0
  60. /package/dist/{types → src}/primitives/withPadding.d.ts +0 -0
  61. /package/dist/{types → src}/solidOpts.d.ts +0 -0
  62. /package/dist/{types → src}/utils.d.ts +0 -0
@@ -74,27 +74,45 @@ function getChildrenByPosition(
74
74
  x: number,
75
75
  y: number,
76
76
  ): ElementNode[] {
77
- let result: ElementNode[] = [node];
77
+ const result: ElementNode[] = [];
78
78
  const precision = Config.rendererOptions?.deviceLogicalPixelRatio || 1;
79
79
 
80
- for (let i = 0; i < node.children.length; i++) {
81
- const child = node.children[i];
82
- if (child instanceof ElementNode) {
80
+ // Queue for BFS
81
+ let queue: ElementNode[] = [node];
82
+
83
+ while (queue.length > 0) {
84
+ // Process nodes at the current level
85
+ const currentLevelNodes: ElementNode[] = [];
86
+
87
+ for (const currentNode of queue) {
83
88
  if (
84
- child.alpha !== 0 &&
89
+ currentNode.alpha !== 0 &&
85
90
  testCollision(
86
91
  x,
87
92
  y,
88
- (child.lng as MainOnlyNode).coreNode.absX * precision,
89
- (child.lng as MainOnlyNode).coreNode.absY * precision,
90
- child.width! * precision,
91
- child.height! * precision,
93
+ (currentNode.lng as MainOnlyNode).coreNode.absX * precision,
94
+ (currentNode.lng as MainOnlyNode).coreNode.absY * precision,
95
+ currentNode.width! * precision,
96
+ currentNode.height! * precision,
92
97
  )
93
98
  ) {
94
- // continue searching tree
95
- result = [...result, ...getChildrenByPosition(child, x, y)];
99
+ currentLevelNodes.push(currentNode);
96
100
  }
97
101
  }
102
+
103
+ const size = currentLevelNodes.length;
104
+ if (size === 0) {
105
+ break;
106
+ } else if (size > 1) {
107
+ // Find the node with the highest zIndex
108
+ currentLevelNodes.sort((a, b) => (a.zIndex || 0) - (b.zIndex || 0));
109
+ }
110
+
111
+ const highestZIndexNode = currentLevelNodes[0] as ElementNode;
112
+ result.push(highestZIndexNode);
113
+ if (!highestZIndexNode.isTextNode()) {
114
+ queue = highestZIndexNode.children as ElementNode[];
115
+ }
98
116
  }
99
117
 
100
118
  return result;
@@ -107,9 +125,9 @@ export function useMouse(myApp: ElementNode = rootNode): void {
107
125
  makeEventListener(window, 'click', handleClick);
108
126
  createEffect(() => {
109
127
  if (scheduled()) {
110
- const result = getChildrenByPosition(myApp, pos.x, pos.y)
111
- .filter((el) => (el.focus || el.onFocus || el.onEnter) && !el.skipFocus)
112
- .sort((a, b) => (a.zIndex || 0) - (b.zIndex || 0));
128
+ const result = getChildrenByPosition(myApp, pos.x, pos.y).filter(
129
+ (el) => (el.focus || el.onFocus || el.onEnter) && !el.skipFocus,
130
+ );
113
131
 
114
132
  if (result.length) {
115
133
  let activeElm = result[result.length - 1];