Spaces:
Runtime error
Runtime error
Thomas G. Lopes
commited on
Commit
·
a0911b1
1
Parent(s):
7bfbc58
virtualization rules
Browse files
package.json
CHANGED
|
@@ -52,7 +52,7 @@
|
|
| 52 |
"highlight.js": "^11.10.0",
|
| 53 |
"jiti": "^2.4.2",
|
| 54 |
"jsdom": "^26.0.0",
|
| 55 |
-
"melt": "^0.40.
|
| 56 |
"openai": "^4.90.0",
|
| 57 |
"playwright": "^1.52.0",
|
| 58 |
"postcss": "^8.4.38",
|
|
|
|
| 52 |
"highlight.js": "^11.10.0",
|
| 53 |
"jiti": "^2.4.2",
|
| 54 |
"jsdom": "^26.0.0",
|
| 55 |
+
"melt": "^0.40.2",
|
| 56 |
"openai": "^4.90.0",
|
| 57 |
"playwright": "^1.52.0",
|
| 58 |
"postcss": "^8.4.38",
|
pnpm-lock.yaml
CHANGED
|
@@ -136,8 +136,8 @@ importers:
|
|
| 136 |
specifier: ^26.0.0
|
| 137 |
version: 26.1.0
|
| 138 |
melt:
|
| 139 |
-
specifier: ^0.40.
|
| 140 |
-
version: 0.40.
|
| 141 |
openai:
|
| 142 |
specifier: ^4.90.0
|
| 143 |
version: 4.90.0([email protected])([email protected])
|
|
@@ -2281,8 +2281,8 @@ packages:
|
|
| 2281 |
resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
|
| 2282 |
engines: {node: '>= 0.8'}
|
| 2283 |
|
| 2284 |
-
[email protected].
|
| 2285 |
-
resolution: {integrity: sha512-
|
| 2286 |
peerDependencies:
|
| 2287 |
'@floating-ui/dom': ^1.6.0
|
| 2288 |
svelte: ^5.30.1
|
|
@@ -5399,7 +5399,7 @@ snapshots:
|
|
| 5399 |
|
| 5400 | |
| 5401 |
|
| 5402 |
-
[email protected].
|
| 5403 |
dependencies:
|
| 5404 |
'@floating-ui/dom': 1.6.13
|
| 5405 |
dequal: 2.0.3
|
|
|
|
| 136 |
specifier: ^26.0.0
|
| 137 |
version: 26.1.0
|
| 138 |
melt:
|
| 139 |
+
specifier: ^0.40.2
|
| 140 |
+
version: 0.40.2(@floating-ui/[email protected])([email protected])
|
| 141 |
openai:
|
| 142 |
specifier: ^4.90.0
|
| 143 |
version: 4.90.0([email protected])([email protected])
|
|
|
|
| 2281 |
resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
|
| 2282 |
engines: {node: '>= 0.8'}
|
| 2283 |
|
| 2284 |
+
[email protected].2:
|
| 2285 |
+
resolution: {integrity: sha512-lmf17KdERiDZ4Fefx4B/nrvMptG8QqUexMuRlaxT9AlbX7zbjaqPfJz31ekRvkcw6pgYOuYmQPmhY6jlUDVqSw==}
|
| 2286 |
peerDependencies:
|
| 2287 |
'@floating-ui/dom': ^1.6.0
|
| 2288 |
svelte: ^5.30.1
|
|
|
|
| 5399 |
|
| 5400 | |
| 5401 |
|
| 5402 |
+
[email protected].2(@floating-ui/[email protected])([email protected]):
|
| 5403 |
dependencies:
|
| 5404 |
'@floating-ui/dom': 1.6.13
|
| 5405 |
dequal: 2.0.3
|
src/lib/components/inference-playground/model-selector-modal.svelte
CHANGED
|
@@ -92,14 +92,33 @@
|
|
| 92 |
onClose?.();
|
| 93 |
},
|
| 94 |
onNavigate(current, direction) {
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
|
|
|
|
|
|
| 98 |
if (direction === "next") {
|
|
|
|
|
|
|
|
|
|
| 99 |
}
|
| 100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
}
|
| 102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 103 |
},
|
| 104 |
});
|
| 105 |
$effect(() => {
|
|
|
|
| 92 |
onClose?.();
|
| 93 |
},
|
| 94 |
onNavigate(current, direction) {
|
| 95 |
+
if (current === "__custom__") return null;
|
| 96 |
+
const modelItems = allFilteredModels.filter(item => item.type === "model");
|
| 97 |
+
const currIdx = modelItems.findIndex(item => typeof item.content === "object" && item.content.id === current);
|
| 98 |
+
|
| 99 |
+
let nextIdx: number;
|
| 100 |
if (direction === "next") {
|
| 101 |
+
nextIdx = currIdx === -1 ? 0 : (currIdx + 1) % modelItems.length;
|
| 102 |
+
} else {
|
| 103 |
+
nextIdx = currIdx === -1 ? modelItems.length - 1 : (currIdx - 1 + modelItems.length) % modelItems.length;
|
| 104 |
}
|
| 105 |
+
|
| 106 |
+
const nextItem = modelItems[nextIdx];
|
| 107 |
+
if (!nextItem) return null;
|
| 108 |
+
|
| 109 |
+
// Scroll to the item
|
| 110 |
+
const allItems = allFilteredModels;
|
| 111 |
+
const actualIdx = allItems.findIndex(item => item === nextItem);
|
| 112 |
+
if (actualIdx !== -1) {
|
| 113 |
+
virtualScroll.scrollToIndex(actualIdx);
|
| 114 |
}
|
| 115 |
+
|
| 116 |
+
// Return the content for highlighting
|
| 117 |
+
return nextItem.content === "__custom__"
|
| 118 |
+
? "__custom__"
|
| 119 |
+
: typeof nextItem.content === "object"
|
| 120 |
+
? nextItem.content.id
|
| 121 |
+
: null;
|
| 122 |
},
|
| 123 |
});
|
| 124 |
$effect(() => {
|
src/lib/spells/virtual-scroll.svelte.ts
CHANGED
|
@@ -62,6 +62,34 @@ export class VirtualScroll {
|
|
| 62 |
}));
|
| 63 |
}
|
| 64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
#attachmentKey = createAttachmentKey();
|
| 66 |
get container() {
|
| 67 |
return {
|
|
|
|
| 62 |
}));
|
| 63 |
}
|
| 64 |
|
| 65 |
+
scrollToIndex(index: number) {
|
| 66 |
+
const { start, end } = this.visibleRange;
|
| 67 |
+
|
| 68 |
+
// Only scroll if the index is not currently visible
|
| 69 |
+
if (index >= start && index <= end) {
|
| 70 |
+
return; // Already visible, no need to scroll
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
let targetScrollTop: number;
|
| 74 |
+
|
| 75 |
+
if (index < start) {
|
| 76 |
+
// Scrolling up - position item at top with some buffer
|
| 77 |
+
targetScrollTop = (index - this.overscan) * this.itemHeight;
|
| 78 |
+
} else {
|
| 79 |
+
// Scrolling down - position item at bottom with some buffer
|
| 80 |
+
const visibleItems = Math.floor(this.#containerSize.height / this.itemHeight);
|
| 81 |
+
targetScrollTop = (index - visibleItems + 1 + this.overscan) * this.itemHeight;
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
const maxScrollTop = this.totalHeight - this.#containerSize.height;
|
| 85 |
+
this.#scrollTop = Math.max(0, Math.min(targetScrollTop, maxScrollTop));
|
| 86 |
+
|
| 87 |
+
// Update the actual scroll container
|
| 88 |
+
if (this.#containerEl) {
|
| 89 |
+
this.#containerEl.scrollTop = this.#scrollTop;
|
| 90 |
+
}
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
#attachmentKey = createAttachmentKey();
|
| 94 |
get container() {
|
| 95 |
return {
|