import './index';

import { $$ } from '../../../infra-sk/modules/dom';
import { WasmFiddle } from '../wasm-fiddle-sk/wasm-fiddle-sk';

const pk = $$<WasmFiddle>('pathkit-fiddle')!;
pk.content = `// canvas and PathKit are globally available
let firstPath = PathKit.FromSVGString('M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z');

let secondPath = PathKit.NewPath();
// Acts somewhat like the Canvas API, except can be chained
secondPath.moveTo(1, 1)
          .lineTo(20, 1)
          .lineTo(10, 30)
          .closePath();

// Join the two paths together (mutating firstPath in the process)
firstPath.op(secondPath, PathKit.PathOp.INTERSECT);

// Draw directly to Canvas
let ctx = canvas.getContext('2d');
ctx.strokeStyle = '#CC0000';
ctx.fillStyle = '#000000';
ctx.scale(20, 20);
ctx.beginPath();
firstPath.toCanvas(ctx);
ctx.fill();
ctx.stroke();


// clean up WASM memory
// See http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/embind.html?highlight=memory#memory-management
firstPath.delete();
secondPath.delete();`;
