{"version":3,"sources":["jsdelivr-header.js","/npm/drawille-turtle@1.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,OAAS,QAAQ,YACjB,UAAY,QAAQ,cACpB,IAAE,IAAG,IAAE,IAAG,IAAE,IAAG,GAAE,GAAE,IAAE,KAAQ,KAE7B,WAAa,IACb,OAAS,GAAK,IAEpB,MAAM,eAAe,OAEnB,WAAA,CAAY,EAAG,GACb,QACA,KAAK,EAAI,OAAO,UAAU,GAAK,EAAI,KAAK,MAAQ,EAChD,KAAK,EAAI,OAAO,UAAU,GAAK,EAAI,KAAK,OAAS,EACjD,KAAK,SAAW,EAChB,KAAK,WAAY,CACnB,CAEA,KAAA,GACE,KAAK,WAAY,CACnB,CAEA,OAAA,GACE,KAAK,WAAY,CACnB,CAEA,OAAA,CAAQ,GACN,MAAM,EAAI,KAAK,EAAI,IAAI,KAAK,SAAW,QAAU,EAC3C,EAAI,KAAK,EAAI,IAAI,KAAK,SAAW,QAAU,EACjD,KAAK,KAAK,EAAG,EACf,CAEA,IAAA,CAAK,EAAG,GACF,KAAK,WACP,UAAU,KAAK,EAAG,KAAK,EAAG,EAAG,GAAG,CAAC,EAAG,IAAM,KAAK,IAAI,EAAG,KACxD,KAAK,EAAI,EACT,KAAK,EAAI,CACX,CAEA,KAAA,CAAM,GACJ,KAAK,UAAY,CACnB,CAEA,IAAA,CAAK,GACH,KAAK,UAAY,CACnB,CAEA,QAAA,CAAS,GACP,KAAK,SAAS,EAChB,CAEA,MAAA,CAAO,EAAQ,EA9CE,IA8CmB,GAClC,IAAK,EAAO,CACV,MAAM,EAAO,IAAI,GAhDJ,IAiDb,EAAQ,EAAK,IAAI,GAAK,IAAI,GAAU,EAAG,IAAM,CAC/C,CACA,IAAI,EAAK,EAAI,EAAU,EACnB,EAAK,EAAI,EACT,EAAI,EAAI,EAAS,IAAI,EAAK,QAC1B,EAAS,IACX,GAAK,EACL,GAAK,EACL,GAAM,GAER,KAAK,MAAM,GACX,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,IACzB,KAAK,QAAQ,GACb,KAAK,MAAM,GAEb,KAAK,KAAK,EACZ,EAGF,CACE,CAAC,KAAM,SACP,CAAC,KAAM,SACP,CAAC,KAAM,WACP,CAAC,OAAQ,WACT,CAAC,KAAM,WACP,CAAC,KAAM,QACP,CAAC,KAAM,SACP,CAAC,KAAM,QACP,CAAC,KAAM,YACP,CAAC,OAAQ,YACT,CAAC,MAAO,WACR,SAAQ,IACR,MAAO,EAAO,GAAM,EACpB,OAAO,UAAU,GAAS,OAAO,UAAU,EAAG,IAGhD,OAAO,QAAU","file":"/npm/drawille-turtle@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/drawille-turtle@1.0.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const Canvas = require(\"drawille\");\nconst bresenham = require(\"bresenham\");\nconst { abs, cos, min, PI, sin } = Math;\n\nconst fullCircle = 360;\nconst radian = PI / 180;\n\nclass Turtle extends Canvas {\n  // Turtle graphics interface http://en.wikipedia.org/wiki/Turtle_graphics\n  constructor(x, y) {\n    super();\n    this.x = Number.isInteger(x) ? x : this.width / 2;\n    this.y = Number.isInteger(y) ? y : this.height / 2;\n    this.rotation = 0;\n    this.isPendown = true;\n  }\n\n  penup() {\n    this.isPendown = false;\n  }\n\n  pendown() {\n    this.isPendown = true;\n  }\n\n  forward(step) {\n    const x = this.x + cos(this.rotation * radian) * step;\n    const y = this.y + sin(this.rotation * radian) * step;\n    this.move(x, y);\n  }\n\n  move(x, y) {\n    if (this.isPendown)\n      bresenham(this.x, this.y, x, y, (x, y) => this.set(x, y));\n    this.x = x;\n    this.y = y;\n  }\n\n  right(angle) {\n    this.rotation += angle;\n  }\n\n  left(angle) {\n    this.rotation -= angle;\n  }\n\n  backward(step) {\n    this.forward(-step);\n  }\n\n  circle(radius, extent = fullCircle, steps) {\n    if (!steps) {\n      const frac = abs(extent) / fullCircle;\n      steps = 1 + (min(11 + abs(radius) / 6, 59) * frac);\n    }\n    let w = (1 * extent) / steps;\n    let w2 = w / 2;\n    let l = 2 * radius * sin(w2 * radian);\n    if (radius < 0) {\n      l = -l;\n      w = -w;\n      w2 = -w2;\n    }\n    this.right(w2);\n    for (let i = 0; i < steps; i++) {\n      this.forward(l);\n      this.right(w);\n    }\n    this.left(w2);\n  }\n}\n\n[\n  [\"pu\", \"penup\"],\n  [\"up\", \"penup\"],\n  [\"pd\", \"pendown\"],\n  [\"down\", \"pendown\"],\n  [\"fd\", \"forward\"],\n  [\"mv\", \"move\"],\n  [\"rt\", \"right\"],\n  [\"lt\", \"left\"],\n  [\"bk\", \"backward\"],\n  [\"back\", \"backward\"],\n  [\"arc\", \"circle\"],\n].forEach(methods => {\n  const [alias, fn] = methods;\n  Turtle.prototype[alias] = Turtle.prototype[fn];\n});\n\nmodule.exports = Turtle;\n"]}