refactor: isolate old and preview versions, add lint rule
This commit is contained in:
@@ -0,0 +1,184 @@
|
||||
import {
|
||||
AppWindow,
|
||||
Binary,
|
||||
Blend,
|
||||
CalendarDays,
|
||||
ClipboardPaste,
|
||||
Circle,
|
||||
Contrast,
|
||||
Crop,
|
||||
Crosshair,
|
||||
Dices,
|
||||
Droplet,
|
||||
Droplets,
|
||||
Eye,
|
||||
FileImage,
|
||||
FileOutput,
|
||||
FilePlus2,
|
||||
Film,
|
||||
FlipHorizontal2,
|
||||
Focus,
|
||||
Frame,
|
||||
Grid3x3,
|
||||
Hammer,
|
||||
Hash,
|
||||
Image as ImageIcon,
|
||||
Info,
|
||||
Layers,
|
||||
Link2,
|
||||
Maximize2,
|
||||
Minimize2,
|
||||
Moon,
|
||||
PaintBucket,
|
||||
Palette,
|
||||
Rainbow,
|
||||
Repeat2,
|
||||
RotateCw,
|
||||
Ruler,
|
||||
Scaling,
|
||||
Scan,
|
||||
Scissors,
|
||||
SearchCheck,
|
||||
FaceSlightlySmiling,
|
||||
Square,
|
||||
Stamp,
|
||||
Star,
|
||||
Sun,
|
||||
Type,
|
||||
WavesHorizontal,
|
||||
ZoomIn,
|
||||
ZoomOut,
|
||||
} from "@lucide/svelte";
|
||||
|
||||
export const TOOL_ICONS: Record<string, typeof AppWindow> = {
|
||||
"resize-png": Scaling,
|
||||
"crop-png": Crop,
|
||||
"rotate-png": RotateCw,
|
||||
"flip-png": FlipHorizontal2,
|
||||
"grayscale-png": Contrast,
|
||||
"invert-colors-png": Blend,
|
||||
"adjust-brightness-contrast-png": Sun,
|
||||
"convert-png-to-jpg": FileImage,
|
||||
"convert-png-to-webp": FileImage,
|
||||
"remove-color-from-png": Scissors,
|
||||
"png-info": Info,
|
||||
"jpg-to-png": FileImage,
|
||||
"webp-to-png": FileImage,
|
||||
"gif-to-png": Film,
|
||||
"bmp-to-png": FileImage,
|
||||
"ico-to-png": AppWindow,
|
||||
"png-to-bmp": FileOutput,
|
||||
"png-to-base64": Binary,
|
||||
"base64-to-png": ClipboardPaste,
|
||||
"png-to-data-uri": Link2,
|
||||
"data-uri-to-png": ClipboardPaste,
|
||||
"png-to-hex": Hash,
|
||||
"hex-to-png": Hash,
|
||||
"change-png-opacity": Droplet,
|
||||
"sepia-png": Palette,
|
||||
"change-png-hue": Rainbow,
|
||||
"extract-channel-png": Layers,
|
||||
"swap-channels-png": Repeat2,
|
||||
"black-and-white-png": Contrast,
|
||||
"posterize-png": Layers,
|
||||
"two-colors-png": Blend,
|
||||
"invert-alpha-png": Droplets,
|
||||
"remove-alpha-channel-png": Square,
|
||||
"set-alpha-channel-png": Droplet,
|
||||
"extract-alpha-mask-png": Layers,
|
||||
"round-corners-png": Frame,
|
||||
"add-padding-png": Maximize2,
|
||||
"add-border-png": Frame,
|
||||
"fit-on-background-png": ImageIcon,
|
||||
"tile-png": Grid3x3,
|
||||
"center-by-alpha-png": Crosshair,
|
||||
"create-empty-png": FilePlus2,
|
||||
"single-color-png": PaintBucket,
|
||||
"random-noise-png": Dices,
|
||||
"linear-gradient-png": Sun,
|
||||
"png-is-grayscale": SearchCheck,
|
||||
"png-is-transparent": Eye,
|
||||
"png-orientation": Ruler,
|
||||
"blur-png": Droplets,
|
||||
"sharpen-png": Focus,
|
||||
"remove-background-png": Scissors,
|
||||
"add-stroke-png": Square,
|
||||
"add-text-png": Type,
|
||||
"date-stamp-png": CalendarDays,
|
||||
"png-to-hsl": Blend,
|
||||
"png-to-hsv": Droplet,
|
||||
"png-to-hsi": Focus,
|
||||
"png-to-cmyk": PaintBucket,
|
||||
"png-to-ycbcr": Layers,
|
||||
"png-to-lab": Ruler,
|
||||
"show-transparent-png": Eye,
|
||||
"show-grayscale-pixels-png": Contrast,
|
||||
"show-color-pixels-png": Rainbow,
|
||||
"light-pixel-mask-png": Sun,
|
||||
"dark-pixel-mask-png": Moon,
|
||||
"unique-color-mask-png": Dices,
|
||||
"extract-color-from-png": Focus,
|
||||
"quantize-png": Contrast,
|
||||
"decrease-color-count-png": Scaling,
|
||||
"custom-palette-png": Palette,
|
||||
"dithering-png": Dices,
|
||||
"feather-edges-png": Droplets,
|
||||
"clean-edges-png": Scissors,
|
||||
"pixelate-png": Grid3x3,
|
||||
"randomize-pixels-png": Dices,
|
||||
"add-noise-png": Hash,
|
||||
"silhouette-png": Contrast,
|
||||
"trim-empty-space-png": Crop,
|
||||
"change-canvas-size-png": Frame,
|
||||
"change-aspect-ratio-png": Scaling,
|
||||
"swap-orientation-png": RotateCw,
|
||||
"symmetric-copy-png": FlipHorizontal2,
|
||||
"compress-png": Minimize2,
|
||||
"reduce-to-size-png": Scaling,
|
||||
"png-file-size": Info,
|
||||
"png-to-bytes": Binary,
|
||||
"bytes-to-png": Binary,
|
||||
"png-to-rgb-values": Hash,
|
||||
"rgb-values-to-png": Hash,
|
||||
"verify-is-png": SearchCheck,
|
||||
"text-to-png": Type,
|
||||
"emoji-to-png": FaceSlightlySmiling,
|
||||
"placeholder-png": Frame,
|
||||
"color-spectrum-png": Rainbow,
|
||||
"random-colors-png": Dices,
|
||||
"draw-grid-png": Grid3x3,
|
||||
"circle-mask-png": Circle,
|
||||
"square-mask-png": Square,
|
||||
"star-mask-png": Star,
|
||||
"wavy-mask-png": WavesHorizontal,
|
||||
"watermark-tile-png": Stamp,
|
||||
"watermark-image-png": FileImage,
|
||||
"color-wheel-png": Rainbow,
|
||||
"complementary-png": Contrast,
|
||||
"triadic-png": Hash,
|
||||
"tetradic-png": Grid3x3,
|
||||
"analogous-png": Blend,
|
||||
"monochromatic-png": Droplets,
|
||||
"shades-png": Sun,
|
||||
"mix-colors-png": PaintBucket,
|
||||
"blend-two-png": Layers,
|
||||
"step-colors-png": Scaling,
|
||||
"sort-colors-png": SearchCheck,
|
||||
"find-contour-png": Scan,
|
||||
"make-thicker-png": ZoomIn,
|
||||
"make-thinner-png": ZoomOut,
|
||||
"harden-alpha-png": Sun,
|
||||
"despeckle-alpha-png": SearchCheck,
|
||||
"close-holes-png": Hammer,
|
||||
"skew-png": Repeat2,
|
||||
"rotate-free-png": RotateCw,
|
||||
"zoom-png": ZoomIn,
|
||||
"shift-png": Crosshair,
|
||||
"vignette-png": Sun,
|
||||
"jpeg-artifacts-png": Layers,
|
||||
"gamma-png": Contrast,
|
||||
"auto-contrast-png": Contrast,
|
||||
"temperature-png": Sun,
|
||||
"tint-png": Droplet,
|
||||
"svg-to-png": FileImage,
|
||||
};
|
||||
@@ -1,5 +1,4 @@
|
||||
import type { CategoryId } from "./categories";
|
||||
import type { ToolSchema } from "./registry-schema";
|
||||
import type { CategoryId } from "./categories";
|
||||
import type { OutputMime } from "./core/io";
|
||||
import type { PixelImage } from "./core/types";
|
||||
|
||||
@@ -63,7 +62,6 @@ export type ToolEntry<P = Record<string, unknown>> = {
|
||||
category: CategoryId;
|
||||
sourceMode?: SourceMode;
|
||||
params: ParamDef[];
|
||||
schema?: ToolSchema<P>;
|
||||
run?: (img: PixelImage, params: P) => Promise<PixelImage> | PixelImage;
|
||||
generate?: (params: P) => Promise<PixelImage> | PixelImage;
|
||||
toText?: (img: PixelImage, params: P) => Promise<string> | string;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import type { ToolEntry } from "../registry";
|
||||
import { ToolError } from "../core/errors";
|
||||
import { field, toolSchema } from "../registry-schema";
|
||||
import {
|
||||
colorMask,
|
||||
extractAlphaMask,
|
||||
@@ -33,16 +32,6 @@ import {
|
||||
import type { Position9 } from "../core/textdraw";
|
||||
import { num, str } from "../registry-helpers";
|
||||
|
||||
interface AddStrokeParams {
|
||||
color: string;
|
||||
thickness: number;
|
||||
}
|
||||
|
||||
const addStrokeSchema = toolSchema<AddStrokeParams>({
|
||||
color: field.color({ default: "#ff0000" }),
|
||||
thickness: field.slider({ min: 1, max: 10, step: 1, default: 3 }),
|
||||
});
|
||||
|
||||
export function alphaEntries(): ToolEntry[] {
|
||||
return [
|
||||
{
|
||||
@@ -412,7 +401,6 @@ export function alphaEntries(): ToolEntry[] {
|
||||
description:
|
||||
"Adds a colored ring outline around the opaque content with the chosen thickness.",
|
||||
category: "alpha",
|
||||
schema: addStrokeSchema,
|
||||
params: [
|
||||
{
|
||||
id: "color",
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import type { ToolEntry } from "../registry";
|
||||
import { ToolError } from "../core/errors";
|
||||
import { field, toolSchema } from "../registry-schema";
|
||||
import {
|
||||
crop,
|
||||
expandCanvas,
|
||||
@@ -25,16 +24,6 @@ import {
|
||||
} from "../core/affine";
|
||||
import { num, str } from "../registry-helpers";
|
||||
|
||||
interface AddBorderParams {
|
||||
thickness: number;
|
||||
color: string;
|
||||
}
|
||||
|
||||
const addBorderSchema = toolSchema<AddBorderParams>({
|
||||
thickness: field.number({ min: 1, max: 500, step: 1, default: 5 }),
|
||||
color: field.color({ default: "#000000" }),
|
||||
});
|
||||
|
||||
export function geometryEntries(): ToolEntry[] {
|
||||
return [
|
||||
{
|
||||
@@ -241,7 +230,6 @@ export function geometryEntries(): ToolEntry[] {
|
||||
description:
|
||||
"Draws a colored frame of the chosen thickness around the image.",
|
||||
category: "geometry",
|
||||
schema: addBorderSchema,
|
||||
params: [
|
||||
{
|
||||
id: "thickness",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import { PREVIEW_GROUPS, PREVIEW_TOTAL } from "$lib/preview/catalog";
|
||||
import { TOOL_ICONS } from "$lib/tools/tool-icons";
|
||||
import { TOOL_ICONS } from "$lib/preview/tool-icons";
|
||||
import CatalogHeader from "$lib/components/kit/CatalogHeader.svelte";
|
||||
import CatalogToolbar from "$lib/components/kit/CatalogToolbar.svelte";
|
||||
import CatalogGroup from "$lib/components/kit/CatalogGroup.svelte";
|
||||
|
||||
Reference in New Issue
Block a user