{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-core/src/components/draft/lively-grail.js"],"names":["LivelyPaper","Grail","LivelyGrail","initialize","grail","SetThinningThreshold","SetCharacterCallback","character","justifications","get","innerHTML","Error","mousePos","evt","x","offset","left","y","canvas","getAttribute","top","screenPos","pos","onPointerDown","Object","values","lastPath","forEach","ea","remove","Init","lively","notify","ThinnedData","OnPenDown","onPointerMove","OnPenMove","onPointerUp","OnPenUp","strokes","undo","update","r","ContainingRect","x0","containingRect","paper","Path","strokeColor","add","y0","x1","y1"],"mappings":"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","file":"lively-grail.js","sourcesContent":["import LivelyPaper from 'templates/lively-paper.js';\n\nimport Grail from 'src/external/grail.js'\n\nexport default class LivelyGrail extends LivelyPaper {\n  \n\n  initialize() {\n    super.initialize();\n    this.grail = new Grail();\n\n    this.grail.SetThinningThreshold(0.15);\n    this.grail.SetCharacterCallback((character, justifications) => {\n    \t  this.get(\"#result\").innerHTML = \"recognized \" + character;\n    });\n    \n    \n    throw new Error(\"grr\")\n  }\n\n  mousePos(evt) {\n    return {x: (evt.x  - this.offset.left), \n      y: this.canvas.getAttribute(\"height\") - (evt.y - this.offset.top)};\n  }\n\n  screenPos(pos) {\n    // #TODO figure out how to transform the coordinates\n    return {x: this.canvas.getAttribute(\"width\") - pos.x, \n      y: pos.y};\n  }\n\n\n  onPointerDown(evt) {\n    Object.values(this.lastPath).forEach(ea => {\n      ea.remove()\n    })\n    \n    super.onPointerDown(evt)\n\n    this.grail.Init();\n    this.get(\"#result\").innerHTML = \"\"\n    lively.notify(\"Data \" + this.grail.ThinnedData())\n    var pos = this.mousePos(evt)\n    this.grail.OnPenDown(pos)\n  }\n  \n  \n  onPointerMove(evt) {\n    this.grail.OnPenMove(this.mousePos(evt))\n    return super.onPointerMove(evt)\n  }\n  \n  onPointerUp(evt) {\n    // this.update()\n    this.grail.OnPenUp(this.mousePos(evt))\n    super.onPointerUp(evt)\n    this.strokes.undo()\n\n  }\n  \n  update() {\n\n    var r = this.grail.ContainingRect();\n    lively.notify(\"r \" + r.x0)\n    \n    if (this.containingRect) {\n      this.containingRect.remove()\n    }\n    this.containingRect = new this.paper.Path()\n    this.containingRect.strokeColor = \"green\"\n    this.containingRect.add(this.screenPos({x: r.x0,  y: r.y0}))\n    this.containingRect.add(this.screenPos({x: r.x1,  y: r.y0}))\n    this.containingRect.add(this.screenPos({x: r.x1,  y: r.y1}))\n    this.containingRect.add(this.screenPos({x: r.x0,  y: r.y0}))\n    \n    // if (this.thinnedCurvature) {\n    //   this.thinnedCurvature.remove()\n    // }\n    // this.thinnedCurvature = new this.paper.Path()\n    // this.thinnedCurvature.strokeColor = \"red\"\n    // // lively.openInspector(\n    // //   this.grail.ThinnedCurvature())\n    // this.grail.ThinnedCurvature().forEach(ea => {\n    //   this.thinnedCurvature.add(ea.point)\n    // })\n  // grail.ThinnedData()\n\n  // grail.CornerData();\n  }\n}\n     \n      "]}