{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-mpm-debugging/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","customizeCB","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":"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","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(customizeCB) {\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    if (customizeCB) customizeCB(dialog)\n    \n    return dialog\n  }\n  \n  static async prompt(msg, value, customizeCB) {\n    var dialog = await this.dialog(customizeCB)\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, customizeCB) {\n    var dialog = await this.dialog(customizeCB)\n    dialog.get(\"#prompt\").style.display = \"none\"\n    dialog.get(\"#ok\").focus()\n    return dialog.confirm(msg)  \n  }\n}"]}