diff --git a/d2js/d2wasm/functions.go b/d2js/d2wasm/functions.go index 23e2f4c7e..d2aa115e9 100644 --- a/d2js/d2wasm/functions.go +++ b/d2js/d2wasm/functions.go @@ -232,13 +232,23 @@ func Compile(args []js.Value) (interface{}, error) { return nil, &WASMError{Message: err.Error(), Code: 500} } + mergedRenderOpts := RenderOptions{ + ThemeID: renderOpts.ThemeID, + DarkThemeID: renderOpts.DarkThemeID, + Sketch: renderOpts.Sketch, + Pad: renderOpts.Pad, + Center: renderOpts.Center, + ForceAppendix: input.Opts.ForceAppendix, + }; + input.FS["index"] = d2format.Format(g.AST) return CompileResponse{ FS: input.FS, Diagram: *diagram, Graph: *g, - }, nil + RenderOpts: mergedRenderOpts, + }, nil } func Render(args []js.Value) (interface{}, error) { diff --git a/d2js/d2wasm/types.go b/d2js/d2wasm/types.go index 615db1104..2437924d8 100644 --- a/d2js/d2wasm/types.go +++ b/d2js/d2wasm/types.go @@ -33,11 +33,10 @@ type BoardPositionResponse struct { type CompileRequest struct { FS map[string]string `json:"fs"` - Opts *RenderOptions `json:"options"` + Opts *CompileOptions `json:"options"` } type RenderOptions struct { - Layout *string `json:"layout"` Pad *int64 `json:"pad"` Sketch *bool `json:"sketch"` Center *bool `json:"center"` @@ -47,10 +46,16 @@ type RenderOptions struct { ForceAppendix *bool `json:"forceAppendix"` } +type CompileOptions struct { + RenderOptions + Layout *string `json:"layout"` +} + type CompileResponse struct { - FS map[string]string `json:"fs"` - Diagram d2target.Diagram `json:"diagram"` - Graph d2graph.Graph `json:"graph"` + FS map[string]string `json:"fs"` + Diagram d2target.Diagram `json:"diagram"` + Graph d2graph.Graph `json:"graph"` + RenderOpts RenderOptions `json:"renderOpts"` } type CompletionResponse struct { diff --git a/d2js/js/examples/customizable.html b/d2js/js/examples/customizable.html index fa9fcbf7f..e13fa60c1 100644 --- a/d2js/js/examples/customizable.html +++ b/d2js/js/examples/customizable.html @@ -1,241 +1,301 @@ -
- - - -