83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
import * as StableStudio from "@stability/stablestudio-plugin";
|
|
|
|
export const createPlugin = StableStudio.createPlugin<{
|
|
imagesGeneratedSoFar: number;
|
|
settings: {
|
|
exampleSetting: StableStudio.PluginSettingString;
|
|
};
|
|
}>(({ set, get }) => ({
|
|
imagesGeneratedSoFar: 0,
|
|
|
|
manifest: {
|
|
name: "Example Plugin",
|
|
author: "Bobby Joe",
|
|
link: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
|
|
icon: `${window.location.origin}/DummyImage.png`,
|
|
version: "1.2.3",
|
|
license: "MIT",
|
|
description: "An example plugin for StableStudio",
|
|
},
|
|
|
|
createStableDiffusionImages: async () => {
|
|
const image = await fetch(`${window.location.origin}/DummyImage.png`);
|
|
const blob = await image.blob();
|
|
const createdAt = new Date();
|
|
|
|
set(({ imagesGeneratedSoFar }) => ({
|
|
imagesGeneratedSoFar: imagesGeneratedSoFar + 4,
|
|
}));
|
|
|
|
return {
|
|
id: `${Math.random() * 10000000}`,
|
|
images: [
|
|
{
|
|
id: `${Math.random() * 10000000}`,
|
|
createdAt,
|
|
blob,
|
|
},
|
|
{
|
|
id: `${Math.random() * 10000000}`,
|
|
createdAt,
|
|
blob,
|
|
},
|
|
{
|
|
id: `${Math.random() * 10000000}`,
|
|
createdAt,
|
|
blob,
|
|
},
|
|
{
|
|
id: `${Math.random() * 10000000}`,
|
|
createdAt,
|
|
blob,
|
|
},
|
|
],
|
|
};
|
|
},
|
|
|
|
getStatus: () => {
|
|
const { imagesGeneratedSoFar } = get();
|
|
return {
|
|
indicator: "success",
|
|
text:
|
|
imagesGeneratedSoFar > 0
|
|
? `${imagesGeneratedSoFar} images generated`
|
|
: "Ready",
|
|
};
|
|
},
|
|
|
|
settings: {
|
|
exampleSetting: {
|
|
type: "string" as const,
|
|
default: "Hello, World!",
|
|
placeholder: "Example setting",
|
|
},
|
|
},
|
|
|
|
setSetting: (key, value) =>
|
|
set(({ settings }) => ({
|
|
settings: {
|
|
[key]: { ...settings[key], value: value as string },
|
|
},
|
|
})),
|
|
}));
|