@cratis/components 0.1.16 → 0.1.17

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 (82) hide show
  1. package/dist/cjs/PivotViewer/PivotViewer.css +16 -16
  2. package/dist/cjs/PivotViewer/PivotViewer.js +10 -3
  3. package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
  4. package/dist/cjs/PivotViewer/components/PivotCanvas.js +32 -49
  5. package/dist/cjs/PivotViewer/components/PivotCanvas.js.map +1 -1
  6. package/dist/cjs/PivotViewer/components/Toolbar.js +1 -1
  7. package/dist/cjs/PivotViewer/components/Toolbar.js.map +1 -1
  8. package/dist/cjs/PivotViewer/components/pivot/animation.js +4 -3
  9. package/dist/cjs/PivotViewer/components/pivot/animation.js.map +1 -1
  10. package/dist/cjs/PivotViewer/components/pivot/groups.js +151 -0
  11. package/dist/cjs/PivotViewer/components/pivot/groups.js.map +1 -0
  12. package/dist/cjs/PivotViewer/components/pivot/sprites.js +1 -15
  13. package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +1 -1
  14. package/dist/cjs/PivotViewer/components/pivot/visibility.js +50 -7
  15. package/dist/cjs/PivotViewer/components/pivot/visibility.js.map +1 -1
  16. package/dist/cjs/PivotViewer/engine/layout.js +11 -7
  17. package/dist/cjs/PivotViewer/engine/layout.js.map +1 -1
  18. package/dist/cjs/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  19. package/dist/cjs/PivotViewer/hooks/usePanning.js +8 -4
  20. package/dist/cjs/PivotViewer/hooks/usePanning.js.map +1 -1
  21. package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js +4 -3
  22. package/dist/cjs/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  23. package/dist/cjs/PivotViewer/utils/animations.js +11 -3
  24. package/dist/cjs/PivotViewer/utils/animations.js.map +1 -1
  25. package/dist/cjs/PivotViewer/utils/cardPosition.js +0 -3
  26. package/dist/cjs/PivotViewer/utils/cardPosition.js.map +1 -1
  27. package/dist/cjs/PivotViewer/utils/constants.js +2 -2
  28. package/dist/cjs/PivotViewer/utils/constants.js.map +1 -1
  29. package/dist/esm/PivotViewer/PivotViewer.css +16 -16
  30. package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -1
  31. package/dist/esm/PivotViewer/PivotViewer.js +11 -4
  32. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  33. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -1
  34. package/dist/esm/PivotViewer/components/PivotCanvas.js +33 -50
  35. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  36. package/dist/esm/PivotViewer/components/Toolbar.js +1 -1
  37. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  38. package/dist/esm/PivotViewer/components/pivot/animation.d.ts.map +1 -1
  39. package/dist/esm/PivotViewer/components/pivot/animation.js +4 -3
  40. package/dist/esm/PivotViewer/components/pivot/animation.js.map +1 -1
  41. package/dist/esm/PivotViewer/components/pivot/groups.d.ts +6 -0
  42. package/dist/esm/PivotViewer/components/pivot/groups.d.ts.map +1 -0
  43. package/dist/esm/PivotViewer/components/pivot/groups.js +129 -0
  44. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -0
  45. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts.map +1 -1
  46. package/dist/esm/PivotViewer/components/pivot/sprites.js +2 -15
  47. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  48. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts +4 -0
  49. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts.map +1 -1
  50. package/dist/esm/PivotViewer/components/pivot/visibility.js +50 -7
  51. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  52. package/dist/esm/PivotViewer/engine/layout.js +11 -7
  53. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  54. package/dist/esm/PivotViewer/engine/types.d.ts +1 -0
  55. package/dist/esm/PivotViewer/engine/types.d.ts.map +1 -1
  56. package/dist/esm/PivotViewer/hooks/useCurrentFilters.js.map +1 -1
  57. package/dist/esm/PivotViewer/hooks/useFilteredData.d.ts +1 -1
  58. package/dist/esm/PivotViewer/hooks/useFilteredData.js +4 -4
  59. package/dist/esm/PivotViewer/hooks/useFilteredData.js.map +1 -1
  60. package/dist/esm/PivotViewer/hooks/usePanning.d.ts.map +1 -1
  61. package/dist/esm/PivotViewer/hooks/usePanning.js +8 -4
  62. package/dist/esm/PivotViewer/hooks/usePanning.js.map +1 -1
  63. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.d.ts.map +1 -1
  64. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js +4 -3
  65. package/dist/esm/PivotViewer/hooks/useViewModeScrollHandling.js.map +1 -1
  66. package/dist/esm/PivotViewer/utils/animations.d.ts.map +1 -1
  67. package/dist/esm/PivotViewer/utils/animations.js +11 -3
  68. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  69. package/dist/esm/PivotViewer/utils/cardPosition.js +1 -4
  70. package/dist/esm/PivotViewer/utils/cardPosition.js.map +1 -1
  71. package/dist/esm/PivotViewer/utils/constants.d.ts +4 -4
  72. package/dist/esm/PivotViewer/utils/constants.d.ts.map +1 -1
  73. package/dist/esm/PivotViewer/utils/constants.js +2 -2
  74. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  75. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +1 -1
  77. package/dist/cjs/PivotViewer/components/pivot/buckets.js +0 -124
  78. package/dist/cjs/PivotViewer/components/pivot/buckets.js.map +0 -1
  79. package/dist/esm/PivotViewer/components/pivot/buckets.d.ts +0 -6
  80. package/dist/esm/PivotViewer/components/pivot/buckets.d.ts.map +0 -1
  81. package/dist/esm/PivotViewer/components/pivot/buckets.js +0 -102
  82. package/dist/esm/PivotViewer/components/pivot/buckets.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/components",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "",
5
5
  "author": "Cratis",
6
6
  "license": "MIT",
@@ -1,124 +0,0 @@
1
- 'use strict';
2
-
3
- var PIXI = require('pixi.js');
4
-
5
- function _interopNamespaceDefault(e) {
6
- var n = Object.create(null);
7
- if (e) {
8
- Object.keys(e).forEach(function (k) {
9
- if (k !== 'default') {
10
- var d = Object.getOwnPropertyDescriptor(e, k);
11
- Object.defineProperty(n, k, d.get ? d : {
12
- enumerable: true,
13
- get: function () { return e[k]; }
14
- });
15
- }
16
- });
17
- }
18
- n.default = e;
19
- return Object.freeze(n);
20
- }
21
-
22
- var PIXI__namespace = /*#__PURE__*/_interopNamespaceDefault(PIXI);
23
-
24
- function updateBucketBackgrounds(bucketsContainer, container, grouping, layout, zoomLevel, cardColors, viewMode) {
25
- if (!bucketsContainer)
26
- return;
27
- if (!container || grouping.groups.length === 0 || viewMode === 'collection') {
28
- for (const child of bucketsContainer.children) {
29
- if (child.name !== 'highlight') {
30
- child.visible = false;
31
- }
32
- }
33
- return;
34
- }
35
- const worldHeight = layout.totalHeight || container.clientHeight;
36
- const backgroundGraphics = bucketsContainer.children.filter(c => c.name !== 'highlight');
37
- let bgIndex = 0;
38
- for (let index = 0; index < grouping.groups.length; index++) {
39
- const group = grouping.groups[index];
40
- let minX = Infinity;
41
- let maxX = -Infinity;
42
- for (let j = 0; j < group.ids.length; j++) {
43
- const id = group.ids[j];
44
- const pos = layout.positions.get(id);
45
- if (pos) {
46
- minX = Math.min(minX, pos.x);
47
- maxX = Math.max(maxX, pos.x);
48
- }
49
- }
50
- if (minX === Infinity)
51
- continue;
52
- const bucketWidths = layout.bucketWidths || [];
53
- const widthFromLayout = bucketWidths[index];
54
- const width = widthFromLayout && widthFromLayout > 0 ? widthFromLayout : (maxX - minX) || 0;
55
- if (index % 2 === 0 && width > 0) {
56
- let bg;
57
- if (bgIndex < backgroundGraphics.length) {
58
- bg = backgroundGraphics[bgIndex];
59
- bg.clear();
60
- }
61
- else {
62
- bg = new PIXI__namespace.Graphics();
63
- const highlightIndex = bucketsContainer.children.findIndex(c => c.name === 'highlight');
64
- if (highlightIndex >= 0) {
65
- bucketsContainer.addChildAt(bg, highlightIndex);
66
- }
67
- else {
68
- bucketsContainer.addChild(bg);
69
- }
70
- }
71
- bg.rect(minX, 0, width, worldHeight);
72
- bg.fill(cardColors.base);
73
- bg.alpha = 0.15;
74
- bg.visible = true;
75
- bgIndex++;
76
- }
77
- }
78
- for (let i = bgIndex; i < backgroundGraphics.length; i++) {
79
- backgroundGraphics[i].visible = false;
80
- }
81
- }
82
- function updateHighlight(bucketsContainer, container, grouping, layout, hoveredGroupIndex, cardWidth, zoomLevel) {
83
- if (!bucketsContainer || !container || grouping.groups.length === 0)
84
- return;
85
- let highlight = bucketsContainer.children.find(child => child.name === 'highlight');
86
- if (!highlight) {
87
- highlight = new PIXI__namespace.Graphics();
88
- highlight.name = 'highlight';
89
- bucketsContainer.addChild(highlight);
90
- }
91
- highlight.clear();
92
- if (hoveredGroupIndex === null || hoveredGroupIndex < 0) {
93
- highlight.visible = false;
94
- return;
95
- }
96
- const group = grouping.groups[hoveredGroupIndex];
97
- if (!group || group.ids.length === 0) {
98
- highlight.visible = false;
99
- return;
100
- }
101
- let minX = Infinity;
102
- let maxX = -Infinity;
103
- for (let j = 0; j < group.ids.length; j++) {
104
- const id = group.ids[j];
105
- const pos = layout.positions.get(id);
106
- if (pos) {
107
- minX = Math.min(minX, pos.x);
108
- maxX = Math.max(maxX, pos.x + cardWidth);
109
- }
110
- }
111
- if (minX === Infinity) {
112
- highlight.visible = false;
113
- return;
114
- }
115
- const worldHeight = layout.totalHeight || container.clientHeight;
116
- highlight.rect(minX, 0, maxX - minX, worldHeight);
117
- highlight.fill(0xffffff);
118
- highlight.alpha = 0.05;
119
- highlight.visible = true;
120
- }
121
-
122
- exports.updateBucketBackgrounds = updateBucketBackgrounds;
123
- exports.updateHighlight = updateHighlight;
124
- //# sourceMappingURL=buckets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buckets.js","sources":["../../../../../PivotViewer/components/pivot/buckets.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport * as PIXI from 'pixi.js';\nimport type { CardColors } from './constants';\nimport type { GroupingResult, LayoutResult } from '../../engine/types';\n\nexport function updateBucketBackgrounds(\n bucketsContainer: PIXI.Container | null,\n container: HTMLDivElement | null,\n grouping: GroupingResult,\n layout: LayoutResult,\n zoomLevel: number,\n cardColors: CardColors,\n viewMode: string,\n) {\n if (!bucketsContainer) return;\n\n // keep parameter referenced to avoid unused param lint when callers pass zoomLevel\n void zoomLevel;\n\n if (!container || grouping.groups.length === 0 || viewMode === 'collection') {\n // If we shouldn't show anything, hide all existing backgrounds\n // We keep the highlight if it exists\n for (const child of bucketsContainer.children) {\n if ((child as unknown as { name?: string }).name !== 'highlight') {\n child.visible = false;\n }\n }\n return;\n }\n\n // Use layout's total height if available so backgrounds match sprite positions\n const worldHeight = layout.totalHeight || container.clientHeight;\n\n // Get existing background graphics (excluding highlight)\n const backgroundGraphics = bucketsContainer.children.filter(c => (c as unknown as { name?: string }).name !== 'highlight') as PIXI.Graphics[];\n let bgIndex = 0;\n\n // Instead of re-deriving bucket geometry from constants, compute bucket bounds\n // directly from the positions stored in the layout so backgrounds align exactly.\n for (let index = 0; index < grouping.groups.length; index++) {\n const group = grouping.groups[index];\n let minX = Infinity;\n let maxX = -Infinity;\n\n for (let j = 0; j < group.ids.length; j++) {\n const id = group.ids[j];\n const pos = layout.positions.get(id);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x);\n }\n }\n\n if (minX === Infinity) continue;\n\n // Prefer explicit bucket width from layout when available\n const bucketWidths = layout.bucketWidths || [];\n const widthFromLayout = bucketWidths[index];\n const width = widthFromLayout && widthFromLayout > 0 ? widthFromLayout : (maxX - minX) || 0;\n\n if (index % 2 === 0 && width > 0) {\n let bg: PIXI.Graphics;\n\n if (bgIndex < backgroundGraphics.length) {\n bg = backgroundGraphics[bgIndex];\n bg.clear();\n } else {\n bg = new PIXI.Graphics();\n // Insert before highlight if it exists, otherwise at end\n const highlightIndex = bucketsContainer.children.findIndex(c => (c as unknown as { name?: string }).name === 'highlight');\n if (highlightIndex >= 0) {\n bucketsContainer.addChildAt(bg, highlightIndex);\n } else {\n bucketsContainer.addChild(bg);\n }\n }\n\n bg.rect(minX, 0, width, worldHeight);\n bg.fill(cardColors.base);\n bg.alpha = 0.15;\n bg.visible = true;\n bgIndex++;\n }\n }\n\n // Hide unused background graphics\n for (let i = bgIndex; i < backgroundGraphics.length; i++) {\n backgroundGraphics[i].visible = false;\n }\n}\n\nexport function updateHighlight(\n bucketsContainer: PIXI.Container | null,\n container: HTMLDivElement | null,\n grouping: GroupingResult,\n layout: LayoutResult,\n hoveredGroupIndex: number | null,\n cardWidth: number,\n zoomLevel: number,\n) {\n if (!bucketsContainer || !container || grouping.groups.length === 0) return;\n\n // `zoomLevel` is part of the signature for future use; reference it\n // to avoid unused-parameter lint errors when callers pass it.\n void zoomLevel;\n\n let highlight = bucketsContainer.children.find(child => (child as unknown as { name?: string }).name === 'highlight') as PIXI.Graphics;\n\n if (!highlight) {\n highlight = new PIXI.Graphics();\n (highlight as unknown as { name: string }).name = 'highlight';\n bucketsContainer.addChild(highlight);\n }\n\n highlight.clear();\n\n if (hoveredGroupIndex === null || hoveredGroupIndex < 0) {\n highlight.visible = false;\n return;\n }\n\n const group = grouping.groups[hoveredGroupIndex];\n if (!group || group.ids.length === 0) {\n highlight.visible = false;\n return;\n }\n\n let minX = Infinity;\n let maxX = -Infinity;\n\n for (let j = 0; j < group.ids.length; j++) {\n const id = group.ids[j];\n const pos = layout.positions.get(id);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x + cardWidth);\n }\n }\n\n if (minX === Infinity) {\n highlight.visible = false;\n return;\n }\n\n const worldHeight = layout.totalHeight || container.clientHeight;\n highlight.rect(minX, 0, maxX - minX, worldHeight);\n highlight.fill(0xffffff);\n highlight.alpha = 0.05;\n highlight.visible = true;\n}\n"],"names":["PIXI"],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import * as PIXI from 'pixi.js';
2
- import type { CardColors } from './constants';
3
- import type { GroupingResult, LayoutResult } from '../../engine/types';
4
- export declare function updateBucketBackgrounds(bucketsContainer: PIXI.Container | null, container: HTMLDivElement | null, grouping: GroupingResult, layout: LayoutResult, zoomLevel: number, cardColors: CardColors, viewMode: string): void;
5
- export declare function updateHighlight(bucketsContainer: PIXI.Container | null, container: HTMLDivElement | null, grouping: GroupingResult, layout: LayoutResult, hoveredGroupIndex: number | null, cardWidth: number, zoomLevel: number): void;
6
- //# sourceMappingURL=buckets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buckets.d.ts","sourceRoot":"","sources":["../../../../../PivotViewer/components/pivot/buckets.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvE,wBAAgB,uBAAuB,CACrC,gBAAgB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,EACvC,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,QA6EjB;AAED,wBAAgB,eAAe,CAC7B,gBAAgB,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,EACvC,SAAS,EAAE,cAAc,GAAG,IAAI,EAChC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,QAmDlB"}
@@ -1,102 +0,0 @@
1
- import * as PIXI from 'pixi.js';
2
-
3
- function updateBucketBackgrounds(bucketsContainer, container, grouping, layout, zoomLevel, cardColors, viewMode) {
4
- if (!bucketsContainer)
5
- return;
6
- if (!container || grouping.groups.length === 0 || viewMode === 'collection') {
7
- for (const child of bucketsContainer.children) {
8
- if (child.name !== 'highlight') {
9
- child.visible = false;
10
- }
11
- }
12
- return;
13
- }
14
- const worldHeight = layout.totalHeight || container.clientHeight;
15
- const backgroundGraphics = bucketsContainer.children.filter(c => c.name !== 'highlight');
16
- let bgIndex = 0;
17
- for (let index = 0; index < grouping.groups.length; index++) {
18
- const group = grouping.groups[index];
19
- let minX = Infinity;
20
- let maxX = -Infinity;
21
- for (let j = 0; j < group.ids.length; j++) {
22
- const id = group.ids[j];
23
- const pos = layout.positions.get(id);
24
- if (pos) {
25
- minX = Math.min(minX, pos.x);
26
- maxX = Math.max(maxX, pos.x);
27
- }
28
- }
29
- if (minX === Infinity)
30
- continue;
31
- const bucketWidths = layout.bucketWidths || [];
32
- const widthFromLayout = bucketWidths[index];
33
- const width = widthFromLayout && widthFromLayout > 0 ? widthFromLayout : (maxX - minX) || 0;
34
- if (index % 2 === 0 && width > 0) {
35
- let bg;
36
- if (bgIndex < backgroundGraphics.length) {
37
- bg = backgroundGraphics[bgIndex];
38
- bg.clear();
39
- }
40
- else {
41
- bg = new PIXI.Graphics();
42
- const highlightIndex = bucketsContainer.children.findIndex(c => c.name === 'highlight');
43
- if (highlightIndex >= 0) {
44
- bucketsContainer.addChildAt(bg, highlightIndex);
45
- }
46
- else {
47
- bucketsContainer.addChild(bg);
48
- }
49
- }
50
- bg.rect(minX, 0, width, worldHeight);
51
- bg.fill(cardColors.base);
52
- bg.alpha = 0.15;
53
- bg.visible = true;
54
- bgIndex++;
55
- }
56
- }
57
- for (let i = bgIndex; i < backgroundGraphics.length; i++) {
58
- backgroundGraphics[i].visible = false;
59
- }
60
- }
61
- function updateHighlight(bucketsContainer, container, grouping, layout, hoveredGroupIndex, cardWidth, zoomLevel) {
62
- if (!bucketsContainer || !container || grouping.groups.length === 0)
63
- return;
64
- let highlight = bucketsContainer.children.find(child => child.name === 'highlight');
65
- if (!highlight) {
66
- highlight = new PIXI.Graphics();
67
- highlight.name = 'highlight';
68
- bucketsContainer.addChild(highlight);
69
- }
70
- highlight.clear();
71
- if (hoveredGroupIndex === null || hoveredGroupIndex < 0) {
72
- highlight.visible = false;
73
- return;
74
- }
75
- const group = grouping.groups[hoveredGroupIndex];
76
- if (!group || group.ids.length === 0) {
77
- highlight.visible = false;
78
- return;
79
- }
80
- let minX = Infinity;
81
- let maxX = -Infinity;
82
- for (let j = 0; j < group.ids.length; j++) {
83
- const id = group.ids[j];
84
- const pos = layout.positions.get(id);
85
- if (pos) {
86
- minX = Math.min(minX, pos.x);
87
- maxX = Math.max(maxX, pos.x + cardWidth);
88
- }
89
- }
90
- if (minX === Infinity) {
91
- highlight.visible = false;
92
- return;
93
- }
94
- const worldHeight = layout.totalHeight || container.clientHeight;
95
- highlight.rect(minX, 0, maxX - minX, worldHeight);
96
- highlight.fill(0xffffff);
97
- highlight.alpha = 0.05;
98
- highlight.visible = true;
99
- }
100
-
101
- export { updateBucketBackgrounds, updateHighlight };
102
- //# sourceMappingURL=buckets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buckets.js","sources":["../../../../../PivotViewer/components/pivot/buckets.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport * as PIXI from 'pixi.js';\nimport type { CardColors } from './constants';\nimport type { GroupingResult, LayoutResult } from '../../engine/types';\n\nexport function updateBucketBackgrounds(\n bucketsContainer: PIXI.Container | null,\n container: HTMLDivElement | null,\n grouping: GroupingResult,\n layout: LayoutResult,\n zoomLevel: number,\n cardColors: CardColors,\n viewMode: string,\n) {\n if (!bucketsContainer) return;\n\n // keep parameter referenced to avoid unused param lint when callers pass zoomLevel\n void zoomLevel;\n\n if (!container || grouping.groups.length === 0 || viewMode === 'collection') {\n // If we shouldn't show anything, hide all existing backgrounds\n // We keep the highlight if it exists\n for (const child of bucketsContainer.children) {\n if ((child as unknown as { name?: string }).name !== 'highlight') {\n child.visible = false;\n }\n }\n return;\n }\n\n // Use layout's total height if available so backgrounds match sprite positions\n const worldHeight = layout.totalHeight || container.clientHeight;\n\n // Get existing background graphics (excluding highlight)\n const backgroundGraphics = bucketsContainer.children.filter(c => (c as unknown as { name?: string }).name !== 'highlight') as PIXI.Graphics[];\n let bgIndex = 0;\n\n // Instead of re-deriving bucket geometry from constants, compute bucket bounds\n // directly from the positions stored in the layout so backgrounds align exactly.\n for (let index = 0; index < grouping.groups.length; index++) {\n const group = grouping.groups[index];\n let minX = Infinity;\n let maxX = -Infinity;\n\n for (let j = 0; j < group.ids.length; j++) {\n const id = group.ids[j];\n const pos = layout.positions.get(id);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x);\n }\n }\n\n if (minX === Infinity) continue;\n\n // Prefer explicit bucket width from layout when available\n const bucketWidths = layout.bucketWidths || [];\n const widthFromLayout = bucketWidths[index];\n const width = widthFromLayout && widthFromLayout > 0 ? widthFromLayout : (maxX - minX) || 0;\n\n if (index % 2 === 0 && width > 0) {\n let bg: PIXI.Graphics;\n\n if (bgIndex < backgroundGraphics.length) {\n bg = backgroundGraphics[bgIndex];\n bg.clear();\n } else {\n bg = new PIXI.Graphics();\n // Insert before highlight if it exists, otherwise at end\n const highlightIndex = bucketsContainer.children.findIndex(c => (c as unknown as { name?: string }).name === 'highlight');\n if (highlightIndex >= 0) {\n bucketsContainer.addChildAt(bg, highlightIndex);\n } else {\n bucketsContainer.addChild(bg);\n }\n }\n\n bg.rect(minX, 0, width, worldHeight);\n bg.fill(cardColors.base);\n bg.alpha = 0.15;\n bg.visible = true;\n bgIndex++;\n }\n }\n\n // Hide unused background graphics\n for (let i = bgIndex; i < backgroundGraphics.length; i++) {\n backgroundGraphics[i].visible = false;\n }\n}\n\nexport function updateHighlight(\n bucketsContainer: PIXI.Container | null,\n container: HTMLDivElement | null,\n grouping: GroupingResult,\n layout: LayoutResult,\n hoveredGroupIndex: number | null,\n cardWidth: number,\n zoomLevel: number,\n) {\n if (!bucketsContainer || !container || grouping.groups.length === 0) return;\n\n // `zoomLevel` is part of the signature for future use; reference it\n // to avoid unused-parameter lint errors when callers pass it.\n void zoomLevel;\n\n let highlight = bucketsContainer.children.find(child => (child as unknown as { name?: string }).name === 'highlight') as PIXI.Graphics;\n\n if (!highlight) {\n highlight = new PIXI.Graphics();\n (highlight as unknown as { name: string }).name = 'highlight';\n bucketsContainer.addChild(highlight);\n }\n\n highlight.clear();\n\n if (hoveredGroupIndex === null || hoveredGroupIndex < 0) {\n highlight.visible = false;\n return;\n }\n\n const group = grouping.groups[hoveredGroupIndex];\n if (!group || group.ids.length === 0) {\n highlight.visible = false;\n return;\n }\n\n let minX = Infinity;\n let maxX = -Infinity;\n\n for (let j = 0; j < group.ids.length; j++) {\n const id = group.ids[j];\n const pos = layout.positions.get(id);\n if (pos) {\n minX = Math.min(minX, pos.x);\n maxX = Math.max(maxX, pos.x + cardWidth);\n }\n }\n\n if (minX === Infinity) {\n highlight.visible = false;\n return;\n }\n\n const worldHeight = layout.totalHeight || container.clientHeight;\n highlight.rect(minX, 0, maxX - minX, worldHeight);\n highlight.fill(0xffffff);\n highlight.alpha = 0.05;\n highlight.visible = true;\n}\n"],"names":[],"mappings":"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"}