Thomas G. Lopes
commited on
Commit
·
9129dc5
1
Parent(s):
1c8490e
fix auto resize on programmatic event
Browse files
src/lib/components/inference-playground/message.svelte
CHANGED
@@ -6,6 +6,7 @@
|
|
6 |
import { images } from "$lib/state/images.svelte";
|
7 |
import { PipelineTag, type ConversationMessage } from "$lib/types.js";
|
8 |
import { copyToClipboard } from "$lib/utils/copy.js";
|
|
|
9 |
import { FileUpload } from "melt/builders";
|
10 |
import { fade } from "svelte/transition";
|
11 |
import IconCopy from "~icons/carbon/copy";
|
@@ -14,7 +15,6 @@
|
|
14 |
import IconCustom from "../icon-custom.svelte";
|
15 |
import LocalToasts from "../local-toasts.svelte";
|
16 |
import ImgPreview from "./img-preview.svelte";
|
17 |
-
import { AsyncQueue } from "$lib/utils/queue.js";
|
18 |
|
19 |
type Props = {
|
20 |
conversation: ConversationClass;
|
|
|
6 |
import { images } from "$lib/state/images.svelte";
|
7 |
import { PipelineTag, type ConversationMessage } from "$lib/types.js";
|
8 |
import { copyToClipboard } from "$lib/utils/copy.js";
|
9 |
+
import { AsyncQueue } from "$lib/utils/queue.js";
|
10 |
import { FileUpload } from "melt/builders";
|
11 |
import { fade } from "svelte/transition";
|
12 |
import IconCopy from "~icons/carbon/copy";
|
|
|
15 |
import IconCustom from "../icon-custom.svelte";
|
16 |
import LocalToasts from "../local-toasts.svelte";
|
17 |
import ImgPreview from "./img-preview.svelte";
|
|
|
18 |
|
19 |
type Props = {
|
20 |
conversation: ConversationClass;
|
src/lib/spells/textarea-autosize.svelte.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
import { extract } from "./extract.svelte.js";
|
2 |
import { useResizeObserver, watch } from "runed";
|
3 |
import { onDestroy, tick } from "svelte";
|
4 |
import type { Attachment } from "svelte/attachments";
|
5 |
import { on } from "svelte/events";
|
|
|
6 |
|
7 |
export interface TextareaAutosizeOptions {
|
8 |
/** Function called when the textarea size changes. */
|
@@ -159,6 +159,20 @@ export class TextareaAutosize {
|
|
159 |
attachment: Attachment<HTMLTextAreaElement> = node => {
|
160 |
this.element = node;
|
161 |
this.input = node.value;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
const removeListener = on(node, "input", _ => {
|
163 |
this.input = node.value;
|
164 |
});
|
|
|
|
|
1 |
import { useResizeObserver, watch } from "runed";
|
2 |
import { onDestroy, tick } from "svelte";
|
3 |
import type { Attachment } from "svelte/attachments";
|
4 |
import { on } from "svelte/events";
|
5 |
+
import { extract } from "./extract.svelte.js";
|
6 |
|
7 |
export interface TextareaAutosizeOptions {
|
8 |
/** Function called when the textarea size changes. */
|
|
|
159 |
attachment: Attachment<HTMLTextAreaElement> = node => {
|
160 |
this.element = node;
|
161 |
this.input = node.value;
|
162 |
+
|
163 |
+
// Detect programmatic changes
|
164 |
+
const desc = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, "value")!;
|
165 |
+
Object.defineProperty(node, "value", {
|
166 |
+
get: desc.get,
|
167 |
+
set: v => {
|
168 |
+
const cleanup = $effect.root(() => {
|
169 |
+
this.input = v;
|
170 |
+
});
|
171 |
+
cleanup();
|
172 |
+
desc.set?.call(node, v);
|
173 |
+
},
|
174 |
+
});
|
175 |
+
|
176 |
const removeListener = on(node, "input", _ => {
|
177 |
this.input = node.value;
|
178 |
});
|