Files

46 lines
5.1 KiB
Plaintext

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<WebStudioCanvas>;subject:interface-ref<WebStudioPlaceable>;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<value Input, object Result implements WebStudioPlaceable> id "studio:create-placed" : record {canvas:interface-ref<WebStudioCanvas>;seed:Input;presentation:string;layout:Layout;} -> atom-ref<WebStudioCanvasPlacement> execution transaction targets [JavaScript,server] requires {
interface factory id "factory" : WebStudioFactory<Input,Result> using [create.call];
interface canvas id "canvas" : WebStudioCanvas using [place.call] from input;
};
function createCanvas id "studio:create-canvas" : string -> atom-ref<WebStudioCanvas> execution transaction targets [JavaScript,server] requires {creation canvas id "canvas" : WebStudioCanvas input record {name:string;};};
function createRoot id "studio:create-root" : unit -> atom-ref<WebStudioCanvas> execution transaction targets [server] requires {creation canvas id "canvas" : WebStudioCanvas input record {name:string;};};
operation canPresent<object Subject> 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<WebStudioPlaceable>;presentation:string;layout:Layout;} -> atom-ref<WebStudioCanvasPlacement> 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<WebStudioCanvasPlacement> 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<interface WebStudioCanvas>.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;}
}