{"version":3,"names":["CodeMirrorCodeProvider","loc","range","fileEnding","replaceFileEndingWith","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"],"sources":["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}"],"mappings":"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"}