{"version":3,"sources":["https://lively-kernel.org/lively4/swt1-debugging/src/components/widgets/lively-code-mirror-code-provider.js"],"names":["loc","range","fileEnding","replaceFileEndingWith","CodeMirrorCodeProvider","constructor","livelyCodeMirror","codeMirror","code","value","text","focus","cursor","getCursor","location","selections","listSelections","map","ranges","length","anchor","asCM","head","setSelection","setSelections","scrollIntoView","from","to","scrollInfo","getScrollInfo","left","top","right","width","bottom","height","htmlURI","editor","lively","allParents","undefined","find","ele","tagName","jsURI","encodeURI","shadowRoot","querySelector"],"mappings":";;;;;;AAASA,S,UAAAA,G;AAAKC,W,UAAAA,K;AAAOC,gB,UAAAA,U;AAAYC,2B,UAAAA,qB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElB,YAAMC,sBAAN,CAA6B;;AAE1CC,oBAAYC,gBAAZ,EAA8BC,UAA9B,EAA0C;AACxC,eAAKA,UAAL,GAAkBA,UAAlB;AACA,eAAKD,gBAAL,GAAwBA,gBAAxB;AACD;;AAED,YAAIE,IAAJ,GAAW;AACT,iBAAO,KAAKF,gBAAL,CAAsBG,KAA7B;AACD;;AAED,YAAID,IAAJ,CAASE,IAAT,EAAe;AACb,eAAKJ,gBAAL,CAAsBG,KAAtB,GAA8BC,IAA9B;AACA,eAAKJ,gBAAL,CAAsBK,KAAtB;AACD;;AAED,YAAIC,MAAJ,GAAa;AACX,iBAAOZ,IAAI,KAAKO,UAAL,CAAgBM,SAAhB,EAAJ,CAAP;AACD;;AAED,YAAID,MAAJ,CAAWE,QAAX,EAAqB;AACnB,eAAKC,UAAL,GAAkB,CAACd,MAAM,CAACa,QAAD,EAAWA,QAAX,CAAN,CAAD,CAAlB;AACD;;AAED,YAAIC,UAAJ,GAAiB;AACf,iBAAO,KAAKR,UAAL,CAAgBS,cAAhB,GAAiCC,GAAjC,CAAqChB,KAArC,CAAP;AACD;;AAED;;;AAGA,YAAIc,UAAJ,CAAeG,MAAf,EAAuB;AACrB,cAAGA,OAAOC,MAAP,KAAkB,CAArB,EAAwB;AACxB,gBAAMJ,aAAaG,OAAOD,GAAP,CAAWhB,SAAS;AACrC,mBAAO,EAAEmB,QAAQnB,MAAMoB,IAAN,GAAa,CAAb,CAAV,EAA2BC,MAAMrB,MAAMoB,IAAN,GAAa,CAAb,CAAjC,EAAP;AACD,WAFkB,CAAnB;;AAIA;AACA,cAAIN,WAAWI,MAAX,IAAqB,CAAzB,EAA4B;AAC1B,iBAAKZ,UAAL,CAAgBgB,YAAhB,CAA6BR,WAAW,CAAX,EAAcK,MAA3C,EAAmDL,WAAW,CAAX,EAAcO,IAAjE;AACD,WAFD,MAEO;AACL,iBAAKf,UAAL,CAAgBiB,aAAhB,CAA8BT,UAA9B;AACD;AACD,eAAKR,UAAL,CAAgBkB,cAAhB,CAA+B,EAAEC,MAAMX,WAAW,CAAX,EAAcK,MAAtB,EAA8BO,IAAIZ,WAAW,CAAX,EAAcO,IAAhD,EAA/B,EAAuF,GAAvF;AACD;;AAED,YAAIM,UAAJ,GAAiB;AACf,iBAAO,KAAKrB,UAAL,CAAgBsB,aAAhB,EAAP;AACD;;AAED,YAAID,UAAJ,CAAeA,UAAf,EAA2B;AACzB,eAAKrB,UAAL,CAAgBkB,cAAhB,CAA+B;AAC7BK,kBAAMF,WAAWE,IADY;AAE7BC,iBAAKH,WAAWG,GAFa;AAG7BC,mBAAOJ,WAAWE,IAAX,GAAkBF,WAAWK,KAHP;AAI7BC,oBAAQN,WAAWG,GAAX,GAAiBH,WAAWO;AAJP,WAA/B,EAKG,GALH;AAMD;;AAED,YAAIC,OAAJ,GAAc;AACZ,cAAIC,SAASC,OAAOC,UAAP,CAAkB,KAAKjC,gBAAvB,EAAyCkC,SAAzC,EAAoD,IAApD,EAA0DC,IAA1D,CAA+DC,OAAOA,IAAIC,OAAJ,IAAeD,IAAIC,OAAJ,KAAgB,eAArG,CAAb;AACA,cAAIC,QAAQC,UAAUR,OAAOS,UAAP,CAAkBC,aAAlB,CAAgC,WAAhC,EAA6CtC,KAAvD,CAAZ;AACA,iBAAcN,qBAAP,aAA6B,MAA7B,CAAP;AACD;;AA/DyC;;yBAAvBC,sB","file":"lively-code-mirror-code-provider.js","sourcesContent":["import { loc, range, fileEnding, replaceFileEndingWith } from 'utils';\n\nexport default class CodeMirrorCodeProvider {\n\n  constructor(livelyCodeMirror, codeMirror) {\n    this.codeMirror = codeMirror;\n    this.livelyCodeMirror = livelyCodeMirror;\n  }\n\n  get code() {\n    return this.livelyCodeMirror.value;\n  }\n\n  set code(text) {\n    this.livelyCodeMirror.value = text;\n    this.livelyCodeMirror.focus();\n  }\n\n  get cursor() {\n    return loc(this.codeMirror.getCursor());\n  }\n\n  set cursor(location) {\n    this.selections = [range([location, location])];\n  }\n\n  get selections() {\n    return this.codeMirror.listSelections().map(range);\n  }\n\n  /** \n   * Select the text corresponding to the given nodes in the editor\n   */\n  set selections(ranges) {\n    if(ranges.length === 0) return;\n    const selections = ranges.map(range => {\n      return { anchor: range.asCM()[0], head: range.asCM()[1] };\n    });\n\n    // #TODO: include primary selection\n    if (selections.length == 1) {\n      this.codeMirror.setSelection(selections[0].anchor, selections[0].head);\n    } else {\n      this.codeMirror.setSelections(selections);\n    }\n    this.codeMirror.scrollIntoView({ from: selections[0].anchor, to: selections[0].head }, 120);\n  }\n\n  get scrollInfo() {\n    return this.codeMirror.getScrollInfo();\n  }\n\n  set scrollInfo(scrollInfo) {\n    this.codeMirror.scrollIntoView({\n      left: scrollInfo.left,\n      top: scrollInfo.top,\n      right: scrollInfo.left + scrollInfo.width,\n      bottom: scrollInfo.top + scrollInfo.height\n    }, 120);\n  }\n\n  get htmlURI() {\n    let editor = lively.allParents(this.livelyCodeMirror, undefined, true).find(ele => ele.tagName && ele.tagName === 'LIVELY-EDITOR');\n    let jsURI = encodeURI(editor.shadowRoot.querySelector(\"#filename\").value);\n    return jsURI::replaceFileEndingWith('html');\n  }\n\n}"]}