gradio / js /imageeditor /ImageEditor.stories.svelte
mindmime's picture
Upload folder using huggingface_hub
a03b3ba verified
<script lang="ts">
import { Meta, Template, Story } from "@storybook/addon-svelte-csf";
import ImageEditor from "./Index.svelte";
import { format } from "svelte-i18n";
import { get } from "svelte/store";
import { userEvent, within } from "@storybook/testing-library";
</script>
<Meta title="Components/Image Editor" component={ImageEditor} />
<Template let:args>
<div
class="image-container"
style="width: 500px; position: relative;border-radius: var(--radius-lg);overflow: hidden;"
>
<ImageEditor i18n={get(format)} {...args} />
</div>
</Template>
<Story
name="Default Image Editor"
args={{
sources: ["webcam", "upload"],
type: "pil",
interactive: "true",
brush: {
default_size: "auto",
colors: ["#ff0000", "#00ff00", "#0000ff"],
default_color: "#ff0000",
color_mode: "defaults"
},
eraser: {
default_size: "auto"
}
}}
/>
<Story
name="Image Editor Interactions"
args={{
value: {
path: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
url: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
orig_name: "cheetah.jpg"
},
type: "pil",
sources: ["upload", "webcam"],
interactive: "true",
brush: {
default_size: "auto",
colors: ["#ff0000", "#00ff00", "#0000ff"],
default_color: "#ff0000",
color_mode: "defaults"
},
eraser: {
default_size: "auto"
}
}}
play={async ({ canvasElement }) => {
const canvas = within(canvasElement);
const drawButton = canvas.getAllByLabelText("Draw button")[0];
userEvent.click(drawButton);
const drawCanvas = document.getElementsByTagName("canvas")[0];
if (!drawCanvas) {
throw new Error("Could not find canvas");
}
await new Promise((r) => setTimeout(r, 1000));
await userEvent.pointer({
keys: "[MouseLeft>]",
target: drawCanvas,
coords: { clientX: 300, clientY: 100 }
});
await userEvent.pointer({
keys: "[MouseLeft>]",
target: drawCanvas,
coords: { clientX: 300, clientY: 100 }
});
await userEvent.pointer({
keys: "[MouseLeft>]",
target: drawCanvas,
coords: { clientX: 300, clientY: 100 }
});
await userEvent.pointer({
target: drawCanvas,
coords: { clientX: 300, clientY: 300 }
});
await userEvent.pointer({
target: drawCanvas,
coords: { clientX: 300, clientY: 300 }
});
await userEvent.pointer({
target: drawCanvas,
coords: { clientX: 100, clientY: 100 }
});
await userEvent.click(canvas.getByLabelText("Color button"));
var availableColors = document.querySelectorAll(
"button.color:not(.empty):not(.selected):not(.hidden)"
);
await userEvent.click(availableColors[0]);
await userEvent.keyboard("{Escape}");
await userEvent.pointer({
keys: "[MouseLeft>]",
target: drawCanvas,
coords: { clientX: 50, clientY: 50 }
});
await userEvent.pointer({
keys: "[MouseLeft>]",
target: drawCanvas,
coords: { clientX: 100, clientY: 100 }
});
await userEvent.pointer({
target: drawCanvas,
coords: { clientX: 100, clientY: 300 }
});
await userEvent.pointer({
target: drawCanvas,
coords: { clientX: 300, clientY: 300 }
});
await userEvent.pointer({
target: drawCanvas,
coords: { clientX: 100, clientY: 100 }
});
await userEvent.click(canvas.getByLabelText("Transform button"));
const bottomCropHandle =
document.getElementsByClassName("handle corner b")[0];
await userEvent.pointer({
keys: "[MouseLeft>]",
target: bottomCropHandle,
coords: { clientX: 1000, clientY: 200 }
});
await userEvent.pointer({
target: bottomCropHandle,
coords: { clientX: 500, clientY: 0 }
});
await userEvent.pointer({
keys: "[MouseLeft>]",
target: bottomCropHandle,
coords: { clientX: 500, clientY: 0 }
});
await userEvent.pointer({
keys: "[MouseLeft>]",
coords: { clientX: 500, clientY: 0 }
});
await userEvent.pointer({
target: drawCanvas,
coords: { clientX: 100, clientY: 300 }
});
userEvent.tripleClick(drawCanvas);
await new Promise((r) => setTimeout(r, 1000));
userEvent.click(canvas.getByLabelText("Show Layers"));
await new Promise((r) => setTimeout(r, 1000));
userEvent.click(canvas.getByLabelText("Add Layer"));
await userEvent.click(canvas.getByLabelText("Image button"));
await userEvent.click(canvas.getByLabelText("Undo"));
await userEvent.click(canvas.getByLabelText("Redo"));
}}
/>