symbol JavaScript id "target:org.quixos.execution.javascript@1"; import interface WebStudioFactory; import interface WebStudioSearchable; import interface StandaloneView; import interface WebStudioCanvas; import interface WebStudioCanvasPlacement; import interface WebStudioPlaceable; external atom WebStudioCanvas id "atom:org.quixos.web-studio:canvas"; external atom WebStudioCanvasPlacement id "atom:org.quixos.web-studio:canvas-placement"; type Position=record {x:double;y:double;}; type Size=record {width:double;height:double;}; type Layout=record {x:double;y:double;width:double;height:double;z:int32;}; type PlacementSeed=record {canvas:interface-ref;subject:interface-ref;presentation:string;position:Position;size:Size;z:int32;}; package WebStudioCanvasRuntime id "package:org.quixos.web-studio:canvas-runtime" revision "package:org.quixos.web-studio:canvas-runtime@1" { function createPlaced id "studio:create-placed" : record {canvas:interface-ref;seed:Input;presentation:string;layout:Layout;} -> atom-ref execution transaction targets [JavaScript,server] requires { interface factory id "factory" : WebStudioFactory using [create.call]; interface canvas id "canvas" : WebStudioCanvas using [place.call] from input; }; function createCanvas id "studio:create-canvas" : string -> atom-ref execution transaction targets [JavaScript,server] requires {creation canvas id "canvas" : WebStudioCanvas input record {name:string;};}; function createRoot id "studio:create-root" : unit -> atom-ref execution transaction targets [server] requires {creation canvas id "canvas" : WebStudioCanvas input record {name:string;};}; operation canPresent id "studio:can-present" : string -> bool mode call execution snapshot targets [JavaScript,server] receiver object Subject requires {reflection catalog id "catalog" [presentations];}; operation place id "studio:place" : record {subject:interface-ref;presentation:string;layout:Layout;} -> atom-ref mode call execution transaction targets [JavaScript,server] receiver any requires { interface subject id "subject" : WebStudioPlaceable using [canPresent.call] from input; creation placement id "placement" : WebStudioCanvasPlacement input PlacementSeed; }; operation createAndPlace id "studio:create-and-place" : record {name:string;presentation:string;layout:Layout;} -> atom-ref mode call execution transaction targets [JavaScript,server] receiver any requires { interface subject id "subject" : WebStudioPlaceable using [canPresent.call] from input; creation canvas id "canvas" : WebStudioCanvas input record {name:string;}; creation placement id "placement" : WebStudioCanvasPlacement input PlacementSeed; }; module CanvasCard id "component:studio:canvas-card" implements StandaloneView.render; query TitleInputs id "studio:title-inputs" root WebStudioCanvas document "queries/title-inputs.graphql" operation "TitleInputs" {replica;} query TitleView id "studio:title-view" root WebStudioCanvas document "queries/title-view.graphql" operation "TitleView" {local from TitleInputs;watch;} query CanvasIndexInputs id "studio:canvas-index-inputs" root workspace WebStudioCanvas document "queries/canvas-index-inputs.graphql" operation "CanvasIndexInputs" {replica;} query CanvasIndex id "studio:canvas-index" root workspace WebStudioCanvas document "queries/canvas-index.graphql" operation "CanvasIndex" {local from CanvasIndexInputs;watch;} query PlaceableInputs id "studio:placeable-inputs" root WebStudioPlaceable document "queries/placeable-inputs.graphql" operation "PlaceableInputs" {replica;} query PlaceableView id "studio:placeable-view" root WebStudioPlaceable document "queries/placeable-view.graphql" operation "PlaceableView" {local from PlaceableInputs;watch;} query PlacementInputs id "studio:placement-inputs" root WebStudioCanvasPlacement document "queries/placement-inputs.graphql" operation "PlacementInputs" {replica;} query CanvasInputs id "studio:canvas-inputs" root WebStudioCanvas document "queries/canvas-inputs.graphql" operation "CanvasInputs" {replica;max rows 200;} query CanvasView id "studio:canvas-view" root WebStudioCanvas document "queries/canvas-view.graphql" operation "CanvasView" {local from CanvasInputs;max rows 200;watch;} query SearchInputs id "studio:search-inputs" root workspace WebStudioSearchable document "queries/search-inputs.graphql" operation "SearchInputs" {replica;} query Search id "studio:search" root workspace WebStudioSearchable document "queries/search.graphql" operation "Search" {local from SearchInputs;watch;} query LabelInputs id "studio:label-inputs" root workspace WebStudioSearchable document "queries/label-inputs.graphql" operation "LabelInputs" {replica;} query Labels id "studio:labels" root workspace WebStudioSearchable document "queries/labels.graphql" operation "Labels" {local from LabelInputs;watch;} }