A React component for embedding Ligo code snippets on a page. # Quick start 1. Install package `yarn add @ligolang/compact-ligo-ide` 2. Add `CompactLigoIde` component to a page ```jsx import { Code, Language } from "@ligolang/compact-ligo-ide"; const App = () => { const codeWithConfig = `(*_* name: CameLigo Contract dryRun: entrypoint: main parameters: Increment 2 storage: 0 *_*) // variant defining pseudo multi-entrypoint actions type action is | Increment of int | Decrement of int function add (const a : int ; const b : int) : int is block { skip } with a + b function subtract (const a : int ; const b : int) : int is block { skip } with a - b // real entrypoint that re-routes the flow based // on the action provided function main (const p : action ; const s : int) : (list(operation) * int) is block { skip } with ((nil : list(operation)), case p of | Increment(n) -> add(s, n) | Decrement(n) -> subtract(s, n) end)`; const editor = { title: 'Smart Contract', language: Language.CameLigo }; const compile = { entrypoint: 'main' }; const dryRun = { entrypoint: 'main', parameters: 'Increment 1', storage: '0' }; const deploy = { entrypoint: 'main', storage: '0' }; const evaluateFunction = { entrypoint: 'add', parameters: '5, 3' }; return {codeWithConfig} }; ``` 3. Apply styling ```css ``` # Configuration Compact Ligo IDE can be configured via component parameters and/or by passing configuration as a child. The example above illustrastes how to do so. ## Available configuration ```js interface CompactLigoIdeProps { editor?: Partial; compile?: Partial; dryRun?: Partial; deploy?: Partial; evaluateFunction?: Partial; evaluateValue?: Partial; result?: string; webIdeUrl?: string; theme?: "dark" | "light"; children?: string; } interface EditorConfig { language: Language; code: string; dirty: boolean; title: string; } interface CompileConfig { entrypoint: string; } interface DryRunConfig { entrypoint: string; parameters: string; storage: string; } interface DeployConfig { entrypoint: string; storage: string; } interface EvaluateFunctionConfig { entrypoint: string; parameters: string; } interface EvaluateValueConfig { entrypoint: string; } ``` Alternatively, the component can be configured by passing the configuration like so: ``` (*_* name: PascaLIGO Contract language: pascaligo compile: entrypoint: main dryRun: entrypoint: main parameters: Increment (1) storage: 0 deploy: entrypoint: main storage: 0 evaluateValue: entrypoint: "" evaluateFunction: entrypoint: add parameters: (5, 6) *_*) // variant defining pseudo multi-entrypoint actions type action is | Increment of int | Decrement of int function add (const a : int ; const b : int) : int is block { skip } with a + b function subtract (const a : int ; const b : int) : int is block { skip } with a - b // real entrypoint that re-routes the flow based // on the action provided function main (const p : action ; const s : int) : (list(operation) * int) is block { skip } with ((nil : list(operation)), case p of | Increment(n) -> add(s, n) | Decrement(n) -> subtract(s, n) end) ``` # Contribute ## Starting dev server 1. Install dependencies with `yarn install` 2. Run `yarn start` 3. Open http://localhost:1234 in a browser ## Build package Run `yarn build`. ## Publish package Run `npm publish --access=public`.