{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-synctool/src/components/widgets/lively-dialog.js"],"names":["Morph","pt","Dialog","initialize","registerButtons","get","addEventListener","evt","keyCode","onPromptEntered","onClose","onCancel","onOk","resolve","remove","confirm","msgOrElement","HTMLElement","innerHTML","appendChild","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","x","y","prompt","msg","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(msgOrElement) {\n    if (msgOrElement instanceof HTMLElement) {\n      this.get(\"#message\").innerHTML = \"\"\n      this.get(\"#message\").appendChild(msgOrElement)\n    } else {\n      this.get(\"#message\").innerHTML = msgOrElement\n    }\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}"]}