{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/components/widgets/lively-code-occurence-selection.js"],"names":["Morph","FileIndex","_","OccurenceSelectionMenu","setAdditionalInput","name","initialValue","get","style","display","innerHTML","focus","value","getAdditionalInput","initialize","registerButtons","setTitle","title","windowTitle","clearLog","s","codeOccurencesList","selectItems","items","initialSelectionState","map","elem","index","id","item","document","createElement","addEventListener","event","selectItem","target","appendChild","Promise","resolve","reject","showSearchResult","url","lineAndColumn","editor","setURL","loadFile","codeMirror","awaitEditor","setSelection","line","ch","column","selection","length","scrollIntoView","getCursor","selectedElement","children","selectedItem","find","gatherCheckedIds","querySelectorAll","filter","element","checked","disabled","onOkButton","selectedIds","parentElement","remove","onCancelButton","browseSearchResult","pattern","lively","openBrowser","undefined"],"mappings":";;;;;;;;;AAAOA,W;;AACAC,e;;AACAC,O;;;;;;;;;;;AAFAF,gD;;;;;;;;;;;;;AACAC,oD;;;;;;;;;;;;;AACAC,4C;;;;;;;AAEQ,YAAMC,sBAAN,SAAqCH,KAArC,CAA2C;;AAExDI,2BAAmBC,IAAnB,EAAyBC,eAAe,aAAxC,EAAuD;AACrD,eAAKC,GAAL,CAAS,kBAAT,EAA6BC,KAA7B,CAAmCC,OAAnC,GAA6C,MAA7C;AACA,eAAKF,GAAL,CAAS,kBAAT,EAA6BG,SAA7B,GAAyCL,OAAO,KAAKE,GAAL,CAAS,kBAAT,EAA6BG,SAA7E;AACA,eAAKH,GAAL,CAAS,uBAAT,EAAkCI,KAAlC;AACA,eAAKJ,GAAL,CAAS,uBAAT,EAAkCK,KAAlC,GAA0CN,YAA1C;AACD;;AAEDO,6BAAqB;AACnB,iBAAO,KAAKN,GAAL,CAAS,uBAAT,EAAkCK,KAAzC;AACD;;AAEDE,qBAAa;AACX,eAAKC,eAAL;AACD;;AAEDC,iBAASC,KAAT,EAAgB;AACd,eAAKC,WAAL,GAAmBD,KAAnB;AACD;;AAEDN,gBAAQ;AACN;AACD;AACDQ,iBAASC,CAAT,EAAY;AACV,eAAKC,kBAAL,CAAwBX,SAAxB,GAAoC,EAApC;AACD;;AAED,cAAMY,WAAN,CAAkBC,KAAlB,EAAyBC,qBAAzB,EAAgD;AAC9C,eAAKD,KAAL,GAAaA,KAAb;AACA,cAAI,CAACC,qBAAL,EAA4B;AAC1BA,oCAAwBD,MAAME,GAAN,CAAUC,QAAQ,KAAlB,CAAxB;AACD;AACDF,kCAAwBA,sBAAsBC,GAAtB,CAA0BC,QAAQA,OAAO,mBAAP,GAA6B,EAA/D,CAAxB;AACA,cAAIC,QAAQ,CAAZ;AACA,eAAK,IAAI,EAAEC,EAAF,EAAT,IAAmBL,KAAnB,EAA0B;AACxB,gBAAIM,0BAAOC,SAASC,aAAT,CAAuB,IAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACA;;;;;AAKAF,iBAAKnB,SAAL,GAAkB;0CACkBkB,EAAG,IAAGJ,sBAAsBG,OAAtB,CAA+B;YACnEC,EAAG;cAFT;AAIAC,iBAAKG,gBAAL,CAAsB,OAAtB,EAA+BC,SAAS;AACtC,mBAAKC,UAAL,CAAgBD,MAAME,MAAtB;AACD,aAFD;AAGA,iBAAKd,kBAAL,CAAwBe,WAAxB,CAAoCP,IAApC;AACD;AACD,iBAAO,IAAIQ,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,iBAAKD,OAAL,GAAeA,OAAf;AACD,WAFM,CAAP;AAGD;;AAED,cAAME,gBAAN,CAAuBC,GAAvB,EAA4BC,aAA5B,EAA2C;AACzC,cAAIC,SAAS,KAAKpC,GAAL,CAAS,SAAT,CAAb;;AAEAoC,iBAAOC,MAAP,CAAcH,GAAd;AACA,gBAAME,OAAOE,QAAP,EAAN;;AAEA,cAAIC,aAAa,MAAMH,OAAOI,WAAP,EAAvB;AACAD,qBAAWE,YAAX,CAAwB,EAAEC,MAAMP,cAAcO,IAAtB,EAA4BC,IAAIR,cAAcS,MAA9C,EAAxB,EAAgF,EAAEF,MAAMP,cAAcO,IAAtB,EAA4BC,IAAIR,cAAcS,MAAd,IAAwBT,cAAcU,SAAd,GAA0B,CAACV,cAAcU,SAAd,CAAwBC,MAAnD,GAA4D,CAApF,CAAhC,EAAhF;AACAP,qBAAWnC,KAAX;AACAmC,qBAAWQ,cAAX,CAA0BR,WAAWS,SAAX,EAA1B,EAAkD,GAAlD;AACD;;AAEDrB,mBAAWL,IAAX,EAAiB;AACf,gBAAM2B,kBAAkB3B,KAAKjB,KAAL,IAAciB,KAAK4B,QAAL,CAAc,CAAd,EAAiB7C,KAAvD;AACA,gBAAM8C,eAAe,KAAKnC,KAAL,CAAWoC,IAAX,CAAgB9B,QAAQA,KAAKD,EAAL,KAAY4B,eAApC,CAArB;AACA,eAAKhB,gBAAL,CAAsBkB,aAAajB,GAAnC,EAAwC,EAAEQ,MAAMS,aAAaT,IAArB,EAA2BE,QAAQO,aAAaR,EAAhD,EAAxC;AACD;;AAED,YAAI7B,kBAAJ,GAAyB;AACvB,iBAAO,KAAKd,GAAL,CAAS,qBAAT,CAAP;AACD;;AAEDqD,2BAAmB;AACjB,iBAAO,KAAKvC,kBAAL,CAAwBwC,gBAAxB,CAAyC,OAAzC,EAAkDC,MAAlD,CAAyDC,WAAWA,QAAQC,OAAR,IAAmB,CAACD,QAAQE,QAAhG,EAA0GxC,GAA1G,CAA8GsC,WAAW,KAAKxC,KAAL,CAAWoC,IAAX,CAAgB9B,QAAQA,KAAKD,EAAL,KAAYmC,QAAQnD,KAA5C,CAAzH,CAAP;AACD;;AAEDsD,qBAAa;AACX,cAAIC,cAAc,KAAKP,gBAAL,EAAlB;AACA,eAAKtB,OAAL,CAAa6B,WAAb;AACA,eAAKC,aAAL,CAAmBC,MAAnB;AACD;;AAEDC,yBAAiB;AACf,eAAKhC,OAAL,CAAa,EAAb;AACA,eAAK8B,aAAL,CAAmBC,MAAnB;AACD;;AAEDE,2BAAmB9B,GAAnB,EAAwB+B,OAAxB,EAAiC;AAC/B,iBAAOC,OAAOC,WAAP,CAAmBjC,GAAnB,EAAwB,IAAxB,EAA8B+B,OAA9B,EAAuCG,SAAvC,CAAP;AACD;AA/FuD;;yBAArCxE,sB;;;;;;;;6BAAAA,uD","file":"lively-code-occurence-selection.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\nimport FileIndex from \"src/client/fileindex.js\";\nimport _ from 'src/external/lodash/lodash.js';\n\nexport default class OccurenceSelectionMenu extends Morph {\n  \n  setAdditionalInput(name, initialValue = \"enter value\") {    \n    this.get(\"#additionalInput\").style.display = \"flex\";\n    this.get(\"#additionalInput\").innerHTML = name + this.get(\"#additionalInput\").innerHTML;\n    this.get(\"#additionalInputField\").focus();\n    this.get(\"#additionalInputField\").value = initialValue;\n  }\n  \n  getAdditionalInput() {\n    return this.get(\"#additionalInputField\").value;\n  }\n  \n  initialize() {\n    this.registerButtons();\n  }\n\n  setTitle(title) {\n    this.windowTitle = title;\n  }\n\n  focus() {\n    //this.get(\"#searchInput\").focus();\n  }\n  clearLog(s) {\n    this.codeOccurencesList.innerHTML = \"\";\n  }\n\n  async selectItems(items, initialSelectionState) {\n    this.items = items;\n    if (!initialSelectionState) {\n      initialSelectionState = items.map(elem => false);\n    }\n    initialSelectionState = initialSelectionState.map(elem => elem ? \" checked disabled\" : \"\");\n    let index = 0;\n    for (let { id } of items) {\n      let item = document.createElement(\"tr\");\n      /*let lineAndColumn = {\n        line: ea.line, \n        column: ea.column,\n        selection: ea.selection }\n      */\n      item.innerHTML = `<td class=\"accesssorName\">\n          <input type=\"checkbox\" value=\"${id}\"${initialSelectionState[index++]}>\n          ${id}\n        </td>`;\n      item.addEventListener(\"click\", event => {\n        this.selectItem(event.target);\n      });\n      this.codeOccurencesList.appendChild(item);\n    }\n    return new Promise((resolve, reject) => {\n      this.resolve = resolve;\n    });\n  }\n\n  async showSearchResult(url, lineAndColumn) {\n    var editor = this.get(\"#editor\");\n\n    editor.setURL(url);\n    await editor.loadFile();\n\n    var codeMirror = await editor.awaitEditor();\n    codeMirror.setSelection({ line: lineAndColumn.line, ch: lineAndColumn.column }, { line: lineAndColumn.line, ch: lineAndColumn.column + (lineAndColumn.selection ? +lineAndColumn.selection.length : 0) });\n    codeMirror.focus();\n    codeMirror.scrollIntoView(codeMirror.getCursor(), 250);\n  }\n\n  selectItem(item) {\n    const selectedElement = item.value || item.children[0].value;\n    const selectedItem = this.items.find(item => item.id === selectedElement);\n    this.showSearchResult(selectedItem.url, { line: selectedItem.line, column: selectedItem.ch });\n  }\n\n  get codeOccurencesList() {\n    return this.get(\"#CodeOccurencesList\");\n  }\n\n  gatherCheckedIds() {\n    return this.codeOccurencesList.querySelectorAll(\"input\").filter(element => element.checked && !element.disabled).map(element => this.items.find(item => item.id === element.value));\n  }\n\n  onOkButton() {\n    let selectedIds = this.gatherCheckedIds();\n    this.resolve(selectedIds);\n    this.parentElement.remove();\n  }\n\n  onCancelButton() {\n    this.resolve([]);\n    this.parentElement.remove();\n  }\n\n  browseSearchResult(url, pattern) {\n    return lively.openBrowser(url, true, pattern, undefined);\n  }\n}"]}