sb-edit
Version:
Import, edit, and export Scratch project files
214 lines (213 loc) • 6.43 kB
TypeScript
import _Block from "./Block";
export interface Base {
type: string;
value: unknown;
}
export interface Number extends Base {
type: "number";
value: number | string;
}
export interface String extends Base {
type: "string";
value: string;
}
export interface Boolean extends Base {
type: "boolean";
value: boolean;
}
export interface Angle extends Base {
type: "angle";
value: number;
}
export interface Color extends Base {
type: "color";
value: {
r: number;
g: number;
b: number;
};
}
export interface Broadcast extends Base {
type: "broadcast";
value: string;
}
export interface Variable extends Base {
type: "variable";
value: {
id: string;
name: string;
};
}
export interface List extends Base {
type: "list";
value: {
id: string;
name: string;
};
}
export interface Block extends Base {
type: "block";
value: _Block;
}
export interface Blocks extends Base {
type: "blocks";
value: _Block[] | null;
}
export interface Costume extends Base {
type: "costume";
value: string;
}
export interface Backdrop extends Base {
type: "backdrop";
value: string;
}
export interface GraphicEffect extends Base {
type: "graphicEffect";
value: "COLOR" | "FISHEYE" | "WHIRL" | "PIXELATE" | "MOSAIC" | "BRIGHTNESS" | "GHOST";
}
export interface Sound extends Base {
type: "sound";
value: string;
}
export interface SoundEffect extends Base {
type: "soundEffect";
value: "PITCH" | "PAN";
}
export interface GoToTarget extends Base {
type: "goToTarget";
value: string;
}
export interface PointTowardsTarget extends Base {
type: "pointTowardsTarget";
value: string;
}
export interface RotationStyle extends Base {
type: "rotationStyle";
value: "left-right" | "don't rotate" | "all around";
}
export interface ScrollAlignment extends Base {
type: "scrollAlignment";
value: string;
}
export interface PenColorParam extends Base {
type: "penColorParam";
value: "color" | "saturation" | "brightness" | "transparency";
}
export interface MusicDrum extends Base {
type: "musicDrum";
value: string;
}
export interface MusicInstrument extends Base {
type: "musicInstrument";
value: string;
}
export interface VideoSensingAttribute extends Base {
type: "videoSensingAttribute";
value: "motion" | "direction";
}
export interface VideoSensingSubject extends Base {
type: "videoSensingSubject";
value: "Stage" | "this sprite";
}
export interface VideoSensingVideoState extends Base {
type: "videoSensingVideoState";
value: "off" | "on" | "on-flipped";
}
export interface WeDo2MotorId extends Base {
type: "wedo2MotorId";
value: "motor" | "motor A" | "motor B" | "all motors";
}
export interface WeDo2MotorDirection extends Base {
type: "wedo2MotorDirection";
value: "this way" | "that way" | "reverse";
}
export interface WeDo2TiltDirection extends Base {
type: "wedo2TiltDirection";
value: "up" | "down" | "left" | "right";
}
export interface WeDo2TiltDirectionAny extends Base {
type: "wedo2TiltDirectionAny";
value: "up" | "down" | "left" | "right" | "any";
}
export interface WeDo2Op extends Base {
type: "wedo2Op";
value: "<" | ">";
}
export interface Key extends Base {
type: "key";
value: "space" | "up arrow" | "down arrow" | "right arrow" | "left arrow" | "any" | "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z" | "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9";
}
export interface GreaterThanMenu extends Base {
type: "greaterThanMenu";
value: "LOUDNESS" | "TIMER";
}
export interface StopMenu extends Base {
type: "stopMenu";
value: "all" | "this script" | "other scripts in sprite";
}
export interface Target extends Base {
type: "target";
value: string;
}
export interface CloneTarget extends Base {
type: "cloneTarget";
value: string;
}
export interface TouchingTarget extends Base {
type: "touchingTarget";
value: string;
}
export interface DistanceToMenu extends Base {
type: "distanceToMenu";
value: string;
}
export interface DragModeMenu extends Base {
type: "dragModeMenu";
value: "draggable" | "not draggable";
}
export interface PropertyOfMenu extends Base {
type: "propertyOfMenu";
value: string;
}
export interface CurrentMenu extends Base {
type: "currentMenu";
value: "YEAR" | "MONTH" | "DATE" | "DAYOFWEEK" | "HOUR" | "MINUTE" | "SECOND";
}
export interface MathopMenu extends Base {
type: "mathopMenu";
value: "abs" | "floor" | "ceiling" | "sqrt" | "sin" | "cos" | "tan" | "asin" | "acos" | "atan" | "ln" | "log" | "e ^" | "10 ^";
}
export interface FrontBackMenu extends Base {
type: "frontBackMenu";
value: "front" | "back";
}
export interface ForwardBackwardMenu extends Base {
type: "forwardBackwardMenu";
value: "forward" | "backward";
}
export interface CostumeNumberName extends Base {
type: "costumeNumberName";
value: "number" | "name";
}
export type CustomBlockArgument = {
type: "label";
name: string;
} | {
type: "numberOrString";
name: string;
defaultValue: string | number;
} | {
type: "boolean";
name: string;
defaultValue: boolean;
};
export interface CustomBlockArguments extends Base {
type: "customBlockArguments";
value: CustomBlockArgument[];
}
export interface CustomBlockInputValues extends Base {
type: "customBlockInputValues";
value: Array<Exclude<Any, CustomBlockInputValues>>;
}
export type FieldAny = Costume | Backdrop | GraphicEffect | Sound | SoundEffect | GoToTarget | PointTowardsTarget | RotationStyle | ScrollAlignment | PenColorParam | MusicDrum | MusicInstrument | VideoSensingAttribute | VideoSensingSubject | VideoSensingVideoState | WeDo2MotorId | WeDo2MotorDirection | WeDo2TiltDirection | WeDo2TiltDirectionAny | WeDo2Op | Key | GreaterThanMenu | StopMenu | Target | CloneTarget | TouchingTarget | DistanceToMenu | DragModeMenu | PropertyOfMenu | CurrentMenu | MathopMenu | FrontBackMenu | ForwardBackwardMenu | CostumeNumberName | Variable | List;
export type Any = Number | String | Boolean | Angle | Color | Broadcast | Block | Blocks | CustomBlockArguments | CustomBlockInputValues | FieldAny;