{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-theresa/src/components/widgets/lively-dialog.js"],"names":["Morph","pt","Dialog","initialize","registerButtons","get","addEventListener","evt","keyCode","onPromptEntered","onClose","onCancel","onOk","resolve","remove","confirm","msg","innerHTML","Promise","reject","dialog","w","lively","findWindow","document","activeElement","getAddOnRoot","createElement","scope","body","components","openIn","bounds","getBoundingClientRect","setPosition","window","innerWidth","width","innerHeight","height","style","position","ext","getExtent","appendChild","x","y","prompt","value","undefined","focus","result","display"],"mappings":";;;;;;AACOA,W;;AACCC,Q,wBAAAA,E;;;;;;AAEO,YAAMC,MAAN,6DAAqBF,KAArB,CAA2B;;AAExCG,qBAAa;AACX,eAAKC,eAAL;AACA,eAAKC,GAAL,CAAS,SAAT,EAAoBC,gBAApB,CAAqC,OAArC,EAA+CC,GAAD,IAAS;AACrD,gBAAIA,IAAIC,OAAJ,IAAe,EAAnB,EAAuB;AAAE;AACvB,mBAAKC,eAAL,CAAqBF,GAArB;AACD;AACF,WAJD;AAKD;;AAEDG,kBAAU;AACR,eAAKC,QAAL;AACD;AACDC,eAAO;AACL,eAAKC,OAAL,IAAgB,KAAKA,OAAL,CAAa,IAAb,CAAhB;AACA,eAAKC,MAAL;AACD;;AAEDH,mBAAW;AACT,eAAKE,OAAL,IAAgB,KAAKA,OAAL,CAAa,KAAb,CAAhB;AACA,eAAKC,MAAL;AACD;;AAEDL,wBAAgBF,GAAhB,EAAqB;AACnB,eAAKM,OAAL,IAAgB,KAAKA,OAAL,CAAa,IAAb,CAAhB;AACA,eAAKC,MAAL;AACD;;AAED,cAAMC,OAAN,CAAcC,GAAd,EAAmB;AACjB,eAAKX,GAAL,CAAS,UAAT,EAAqBY,SAArB,GAAiCD,GAAjC;AACA,iBAAO,IAAIE,OAAJ,CAAY,CAACL,OAAD,EAAUM,MAAV,KAAqB;AACtC,iBAAKN,OAAL,GAAeA,OAAf;AACD,WAFM,CAAP;AAGD;;AAED,qBAAaO,MAAb,GAAsB;AACpB,cAAIC,IAAKC,OAAOC,UAAP,CAAkBC,SAASC,aAA3B,CAAT;AACA,cAAIJ,KAAK,CAACA,EAAEK,YAAZ,EAA0BL,IAAI,IAAJ,CAFN,CAEgB;;AAEpC,cAAID,SAASI,SAASG,aAAT,CAAuB,eAAvB,CAAb;;AAEA,cAAIC,QAAQP,IAAIA,EAAEK,YAAF,EAAJ,GAAuBF,SAASK,IAA5C;AACA,gBAAMP,OAAOQ,UAAP,CAAkBC,MAAlB,CAAyBH,KAAzB,EAAgCR,MAAhC,CAAN;;AAEA,cAAIY,SAASZ,OAAOa,qBAAP,EAAb;AACA,cAAI,CAACZ,CAAL,EAAQ;AACN;AACAC,mBAAOY,WAAP,CAAmBd,MAAnB,EACE,uDAAGe,OAAOC,UAAP,GAAoB,CAApB,GAAwBJ,OAAOK,KAAP,GAAe,CAA1C,EACEF,OAAOG,WAAP,GAAqB,CAArB,GAAyBN,OAAOO,MAAP,GAAgB,CAD3C,CADF;AAGAnB,mBAAOoB,KAAP,CAAaC,QAAb,GAAwB,OAAxB;AACD,WAND,MAMO;AACL,gBAAIC,MAAMpB,OAAOqB,SAAP,CAAiBtB,CAAjB,CAAV;AACAA,cAAEK,YAAF,GAAiBkB,WAAjB,CAA6BxB,MAA7B;AACAE,mBAAOY,WAAP,CAAmBd,MAAnB,EACE,uDAAGsB,IAAIG,CAAJ,GAAQ,CAAR,GAAYb,OAAOK,KAAP,GAAe,CAA9B,EACGK,IAAII,CAAJ,GAAQ,CAAR,GAAYd,OAAOO,MAAP,GAAgB,CAD/B,CADF;AAID;;AAGD,iBAAOnB,MAAP;AACD;;AAED,qBAAa2B,MAAb,CAAoB/B,GAApB,EAAyBgC,KAAzB,EAAgC;AAC9B,cAAI5B,SAAS,MAAM,KAAKA,MAAL,EAAnB;AACA,cAAI4B,UAAUC,SAAd,EACE7B,OAAOf,GAAP,CAAW,SAAX,EAAsB2C,KAAtB,GAA8BA,KAA9B;;AAEF5B,iBAAOf,GAAP,CAAW,SAAX,EAAsB6C,KAAtB;AACA,cAAIC,SAAS,MAAM/B,OAAOL,OAAP,CAAeC,GAAf,CAAnB;AACA,cAAImC,UAAU,KAAd,EAAqB,OAAOF,SAAP;AACrB,iBAAQ7B,OAAOf,GAAP,CAAW,SAAX,EAAsB2C,KAA9B;AACD;;AAGD,qBAAajC,OAAb,CAAqBC,GAArB,EAA0B;AACxB,cAAII,SAAS,MAAM,KAAKA,MAAL,EAAnB;AACAA,iBAAOf,GAAP,CAAW,SAAX,EAAsBmC,KAAtB,CAA4BY,OAA5B,GAAsC,MAAtC;AACAhC,iBAAOf,GAAP,CAAW,KAAX,EAAkB6C,KAAlB;AACA,iBAAO9B,OAAOL,OAAP,CAAeC,GAAf,CAAP;AACD;AAlFuC;;yBAArBd,M","file":"lively-dialog.js","sourcesContent":["\nimport Morph from \"src/components/widgets/lively-morph.js\"\nimport {pt} from 'src/client/graphics.js'\n\nexport default class Dialog extends Morph {\n\n  initialize() {\n    this.registerButtons();\n    this.get(\"#prompt\").addEventListener(\"keyup\", (evt) => {\n      if (evt.keyCode == 13) { // ENTER\n        this.onPromptEntered(evt);\n      }\n    })\n  }\n  \n  onClose() {\n    this.onCancel()\n  }\n  onOk() {\n    this.resolve && this.resolve(true)\n    this.remove()\n  }\n  \n  onCancel() {\n    this.resolve && this.resolve(false)\n    this.remove()\n  }\n  \n  onPromptEntered(evt) {\n    this.resolve && this.resolve(true)\n    this.remove()\n  }\n  \n  async confirm(msg) {\n    this.get(\"#message\").innerHTML = msg\n    return new Promise((resolve, reject) => {\n      this.resolve = resolve\n    })\n  }\n\n  static async dialog() {\n    var w  = lively.findWindow(document.activeElement) \n    if (w && !w.getAddOnRoot) w = null; // we did not find a window...\n    \n    var dialog = document.createElement(\"lively-dialog\")\n    \n    var scope = w ? w.getAddOnRoot() : document.body\n    await lively.components.openIn(scope, dialog)\n    \n    var bounds = dialog.getBoundingClientRect()\n    if (!w) {\n      // center in fixed \n      lively.setPosition(dialog, \n        pt(window.innerWidth / 2 - bounds.width / 2, \n          window.innerHeight / 2 - bounds.height / 2))\n      dialog.style.position = \"fixed\"      \n    } else {\n      var ext = lively.getExtent(w);\n      w.getAddOnRoot().appendChild(dialog)\n      lively.setPosition(dialog, \n        pt(ext.x / 2 - bounds.width / 2, \n           ext.y / 2 - bounds.height / 2))\n\n    }\n    \n    \n    return dialog\n  }\n  \n  static async prompt(msg, value) {\n    var dialog = await this.dialog()\n    if (value !== undefined)\n      dialog.get(\"#prompt\").value = value\n    \n    dialog.get(\"#prompt\").focus()\n    var result = await dialog.confirm(msg)\n    if (result == false) return undefined\n    return  dialog.get(\"#prompt\").value\n  }\n\n  \n  static async confirm(msg) {\n    var dialog = await this.dialog()\n    dialog.get(\"#prompt\").style.display = \"none\"\n    dialog.get(\"#ok\").focus()\n    return dialog.confirm(msg)  \n  }\n}"]}