{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-constraints/src/components/demo/lively-ball.js"],"names":["Morph","pt","LivelyBall","initialize","a","v","b","s","step","path","simulate","t","render","p","lively","getExtent","parentElement","y","setPosition","x","lastTime","startTime","push","isInBody","time","Date","now","window","requestAnimationFrame","livelyExample","parent","container","document","createElement","style","position","backgroundColor","setExtent","ball","create","components","openIn","appendChild","div","id","livelyMigrate","other"],"mappings":";;;;;;;;;AAAOA,W;;AACCC,Q,wBAAAA,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,YAAMC,UAAN,SAAyBF,KAAzB,CAA+B;;AAE5C,cAAMG,UAAN,GAAmB;AACjB,eAAKC,CAAL,GAAS,KAAKA,CAAL,IAAU,CAAC,CAApB;AACA,eAAKC,CAAL,GAAS,KAAKC,CAAL,IAAU,CAAnB;AACA,eAAKC,CAAL,GAAS,KAAKA,CAAL,IAAU,GAAnB;AACA,eAAKC,IAAL;AACA,eAAKC,IAAL,GAAY,KAAKA,IAAL,IAAa,EAAzB;AACD;;AAEDC,iBAASC,CAAT,EAAY;AACV,eAAKN,CAAL,GAAS,KAAKA,CAAL,GAAS,KAAKD,CAAL,GAASO,CAA3B;AACA,eAAKJ,CAAL,GAAS,KAAKA,CAAL,GAAS,KAAKF,CAAL,GAASM,CAA3B;AACA,cAAI,KAAKJ,CAAL,GAAS,CAAb,EAAgB;AACd,iBAAKA,CAAL,GAAS,CAAT;AACA,iBAAKF,CAAL,GAAS,KAAKA,CAAL,GAAS,CAAC,GAAnB;AACD;AACF;;AAGDO,eAAOD,CAAP,EAAU;AACR;AACA,cAAIE,IAAIZ,GAAG,EAAH,EAAOa,OAAOC,SAAP,CAAiB,KAAKC,aAAtB,EAAqCC,CAArC,GAAyC,KAAKV,CAA9C,GAAkDO,OAAOC,SAAP,CAAiB,IAAjB,EAAuBE,CAAhF,CAAR;AACAH,iBAAOI,WAAP,CAAmB,IAAnB,EAAyBL,CAAzB;AACAA,YAAEM,CAAF,GAAO,CAAC,KAAKC,QAAL,GAAgB,KAAKC,SAAtB,IAAmC,IAA1C;AACA,eAAKZ,IAAL,CAAUa,IAAV,CAAeT,CAAf;AACD;;AAEDL,eAAO;AACL,cAAI,CAACM,OAAOS,QAAP,CAAgB,IAAhB,CAAL,EAA4B;AAC5B;AACA,cAAIC,OAAOC,KAAKC,GAAL,EAAX;AACA,cAAI,KAAKN,QAAT,EAAmB;AACjB,gBAAIT,IAAI,CAACa,OAAO,KAAKJ,QAAb,IAAyB,IAAjC;AACA,iBAAKV,QAAL,CAAcC,CAAd;AACA,iBAAKC,MAAL;AACD,WAJD,MAIO;AACL,iBAAKS,SAAL,GAAiBG,IAAjB;AACD;AACDG,iBAAOC,qBAAP,CAA6B,MAAM,KAAKpB,IAAL,EAAnC;AACA,eAAKY,QAAL,GAAgBI,IAAhB;AACD;;AAGD;AACA,qBAAaK,aAAb,CAA2BC,MAA3B,EAAmC;AACjC,cAAIC,+BAAYC,SAASC,aAAT,CAAuB,KAAvB,CAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACAF,oBAAUG,KAAV,CAAgBC,QAAhB,GAA2B,UAA3B;AACAJ,oBAAUG,KAAV,CAAgBE,eAAhB,GAAkC,WAAlC;AACA;AACAtB,iBAAOuB,SAAP,CAAiBN,SAAjB,EAA4B9B,GAAG,GAAH,EAAO,GAAP,CAA5B;AACA,cAAIqC,OAAO,KAAKC,MAAL,EAAX;AACA,gBAAMzB,OAAO0B,UAAP,CAAkBC,MAAlB,CAAyBV,SAAzB,EAAoCO,IAApC,CAAN;AACAA,eAAKT;AACL;AACA;AACA;AACA;AACA;AACA;AANA,aAOA,IAAIC,MAAJ,EAAYA,OAAOY,WAAP,CAAmBX,SAAnB;AACZ,iBAAOA,SAAP;AACD;;AAED,eAAOQ,MAAP,GAAe;AACb,oCAAOP,SAASC,aAAT,CAAuB,aAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACD;;AAEDJ,wBAAgB;AACdf,iBAAOuB,SAAP,CAAiB,IAAjB,EAAuBpC,GAAG,EAAH,EAAM,EAAN,CAAvB;;AAEA,cAAI0C,yBAAMX,SAASC,aAAT,CAAuB,KAAvB,CAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACAU,cAAIC,EAAJ,GAAS,KAAT;AACA,eAAK5B,aAAL,CAAmB0B,WAAnB,CAA+BC,GAA/B;AACD;;AAEDE,sBAAcC,KAAd,EAAqB;AACnB,eAAK1C,CAAL,GAAS0C,MAAM1C,CAAf;AACA,eAAKG,CAAL,GAASuC,MAAMvC,CAAf;AACA,eAAKF,CAAL,GAASyC,MAAMzC,CAAf;AAED;;AAjF2C;;yBAAzBH,U","file":"lively-ball.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\nimport {pt}  from 'src/client/graphics.js'\n\n\nexport default class LivelyBall extends Morph {\n  \n  async initialize() {\n    this.a = this.a || -1\n    this.v = this.b || 0\n    this.s = this.s || 300\n    this.step()\n    this.path = this.path || []\n  }\n  \n  simulate(t) {\n    this.v = this.v + this.a * t\n    this.s = this.s + this.v * t\n    if (this.s < 0) {\n      this.s = 0\n      this.v = this.v * -0.9;\n    }   \n  }\n \n\n  render(t) {\n    // console.log(\"A\")\n    var p = pt(20, lively.getExtent(this.parentElement).y - this.s - lively.getExtent(this).y)\n    lively.setPosition(this, p)  \n    p.x  = (this.lastTime - this.startTime) * 0.01    \n    this.path.push(p)\n  }\n  \n  step() {\n    if (!lively.isInBody(this)) return;\n    // console.log(\"B\")\n    var time = Date.now()\n    if (this.lastTime) {\n      var t = (time - this.lastTime) * 0.01\n      this.simulate(t)\n      this.render()\n    } else {\n      this.startTime = time \n    }\n    window.requestAnimationFrame(() => this.step()); \n    this.lastTime = time\n  }\n  \n  \n  // LivelyBall.livelyExample(document.body)\n  static async livelyExample(parent) {\n    var container = document.createElement(\"div\");\n    container.style.position = \"absolute\"\n    container.style.backgroundColor = \"lightgray\"\n    // container.innerHTML = \"<button id='reset'>reset</button>\"\n    lively.setExtent(container, pt(150,400))\n    var ball = this.create()\n    await lively.components.openIn(container, ball)\n    ball.livelyExample()\n    // container.querySelector(\"#reset\").addEventListener(\"click\", () => { \n    //   ball.s = 200;\n    //   ball.v = 0;\n    //   ball.path = [];\n    //   ball.livelyExample()\n    // })\n    if (parent) parent.appendChild(container)\n    return container\n  }\n  \n  static create(){\n    return document.createElement(\"lively-ball\")\n  }\n  \n  livelyExample() {\n    lively.setExtent(this, pt(30,30)) \n    \n    var div = document.createElement(\"div\")\n    div.id = \"log\"\n    this.parentElement.appendChild(div)\n  }\n  \n  livelyMigrate(other) {\n    this.a = other.a\n    this.s = other.s\n    this.v = other.v\n    \n  }\n  \n}"]}