package model

type State struct {
	FontSize        float64    `json:"fontSize"`
	DragStrokeStyle string     `json:"dragStrokeStyle"`
	ShowGrid        bool       `json:"showGrid"`
	StrokeStyle     string     `json:"strokeStyle"`
	BackgroundColor string     `json:"backgroundColor"`
	GridConfig      GridConfig `json:"gridConfig"`
	ScrollY         float64    `json:"scrollY"`
	FillStyle       string     `json:"fillStyle"`
	Readonly        bool       `json:"readonly"`
	Scale           float64    `json:"scale"`
	ScrollStep      float64    `json:"scrollStep"`
	FontFamily      string     `json:"fontFamily"`
	ScrollX         float64    `json:"scrollX"`
}

type GridConfig struct {
	Size        float64 `json:"size"`
	StrokeStyle string  `json:"strokeStyle"`
	LineWidth   float64 `json:"lineWidth"`
}

type Element struct {
	GroupId string       `json:"groupId"`
	Height  float64      `json:"height"`
	Ratio   float64      `json:"ratio"`
	Rotate  float64      `json:"rotate"`
	Style   ElementStyle `json:"style"`
	Type    string       `json:"type"`
	Url     string       `json:"url"`
	Width   float64      `json:"width"`
	X       float64      `json:"x"`
	Y       float64      `json:"y"`
}

type ElementStyle struct {
	StrokeStyle string  `json:"strokeStyle"`
	FillStyle   string  `json:"fillStyle"`
	LineWidth   float64 `json:"lineWidth"`
	LineDash    float64 `json:"lineDash"`
	GlobalAlpha float64 `json:"globalAlpha"`
}

type Data struct {
	State    State     `json:"state"`
	Elements []Element `json:"elements"`
}

type Root struct {
	Name string `json:"name"`
	Type bool   `json:"type"`
	Data Data   `json:"data"`
}
