import * as React from "react"; import { Step as IStep, Sequence } from "./interfaces"; import { execSequence } from "../devices/actions"; import { editCurrentSequence, saveSequence, deleteSequence, nullSequence } from "./actions"; import { stepTiles, StepTile } from "./step_tiles"; import { Everything } from "../interfaces"; import { ColorPicker } from "./color_picker"; import { t } from "i18next"; let Oops: StepTile = (_) => { return
Whoops! Not a valid message_type
; }; let StepList = ({sequence, sequences, dispatch}: { sequence: Sequence, sequences: Sequence[], dispatch: Function }) => { return (
{sequence.steps.map((step: IStep, inx: number) => { let Step = stepTiles[step.message_type] || Oops; return ; })}
); }; let handleNameUpdate = (dispatch: Function) => (event: React.SyntheticEvent) => { let name: string = (event.target as any)["value"] || ""; // Typescript workaround. dispatch(editCurrentSequence({ name })); }; let save = function (dispatch: Function, sequence: Sequence) { return (e: React.SyntheticEvent) => dispatch(saveSequence(sequence)); }; let destroy = function (dispatch: Function, sequence: Sequence, inx: number) { return () => dispatch(deleteSequence(inx)); }; let performSeq = (dispatch: Function, sequence: Sequence) => (e: React.FormEvent) => { dispatch(execSequence(sequence)); }; export function SequenceEditorWidget({sequences, dispatch}: Everything) { let inx = sequences.current; let sequence: Sequence = sequences.all[inx] || nullSequence(); return (
{t("Sequence Editor")}
{t(`Use this widget to edit sequences. Coming soon: drag and drop steps, custom step names, sequence cloning, and inheritable step properties!`)}
{ dispatch(editCurrentSequence({color})); } } />
{}
{t("DRAG ACTIONS HERE") }
); }