{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-function-completion/src/babylonian-programming-editor/annotations/annotation.js"],"names":["LocationConverter","Annotation","constructor","editor","location","deleteCallback","_marker","_makeMarker","_widget","_deleteCallback","marker","markText","from","to","className","kind","startStyle","endStyle","inclusiveLeft","inclusiveRight","_babylonian","_makeWidget","Error","syncIndentation","indentation","ch","clear","find","locationAsKey","markerToKey","__proto__","name","toLowerCase","_serialize","serializeForSave","serializeForWorker","load","serialized"],"mappings":";;;;;;AAAOA,uB;;;;;;;;;;;;;;;;;;AAGQ,YAAMC,UAAN,CAAiB;AAC9BC,oBAAYC,MAAZ,EAAoBC,QAApB,EAA8BC,cAA9B,EAA8C;AAC5C,eAAKC,OAAL,GAAe,KAAKC,WAAL,CAAiBJ,MAAjB,EAAyBC,QAAzB,CAAf;AACA,eAAKI,OAAL,GAAe,IAAf;AACA,eAAKC,eAAL,GAAuB,MAAM;AAC3BJ,2BAAe,IAAf;AACD,WAFD;AAGD;;AAEDE,oBAAYJ,MAAZ,EAAoBC,QAApB,EAA8B;AAC5B,gBAAMM,SAASP,OAAOQ,QAAP,CACbP,SAASQ,IADI,EAEbR,SAASS,EAFI,EAGb;AACEC,uBAAY,UAAS,KAAKC,IAAK,EADjC;AAEEC,wBAAY,OAFd;AAGEC,sBAAU,KAHZ;AAIEC,2BAAe,KAJjB;AAKEC,4BAAgB;AALlB,WAHa,CAAf;AAWAT,iBAAOU,WAAP,GAAqB,IAArB;AACA,iBAAOV,MAAP;AACD;;AAEDW,oBAAYlB,MAAZ,EAAoBC,QAApB,EAA8B;AAC5B,gBAAM,IAAIkB,KAAJ,CAAU,wCAAV,CAAN;AACD;;AAEDC,0BAAkB;AAChB,cAAG,KAAKnB,QAAR,EAAkB;AAChB,iBAAKI,OAAL,CAAagB,WAAb,GAA2B,KAAKpB,QAAL,CAAcQ,IAAd,CAAmBa,EAA9C;AACD;AACF;;AAEDC,gBAAQ;AACN,cAAG,KAAKpB,OAAR,EAAiB;AACf,iBAAKA,OAAL,CAAaoB,KAAb;AACD;AACD,cAAG,KAAKlB,OAAR,EAAiB;AACf,iBAAKA,OAAL,CAAakB,KAAb;AACD;AACF;;AAED,YAAItB,QAAJ,GAAe;AACb,iBAAO,KAAKE,OAAL,CAAaqB,IAAb,EAAP;AACD;;AAED,YAAIC,aAAJ,GAAoB;AAClB,cAAG,KAAKxB,QAAR,EAAkB;AAChB,mBAAOJ,kBAAkB6B,WAAlB,CAA8B,KAAKzB,QAAnC,CAAP;AACD;AACF;;AAED,YAAIW,IAAJ,GAAW;AACT,iBAAO,KAAKe,SAAL,CAAe5B,WAAf,CAA2B6B,IAA3B,CAAgCC,WAAhC,EAAP;AACD;;AAEDC,qBAAa;AACX,iBAAO;AACLlB,kBAAM,KAAKA,IADN;AAELX,sBAAU,KAAKwB;AAFV,WAAP;AAID;;AAEDM,2BAAmB;AACjB,iBAAO,KAAKD,UAAL,EAAP;AACD;;AAEDE,6BAAqB;AACnB,iBAAO,KAAKF,UAAL,EAAP;AACD;;AAEDG,aAAKC,UAAL,EAAiB;AACf,gBAAM,IAAIf,KAAJ,CAAU,wCAAV,CAAN;AACD;AA3E6B;;yBAAXrB,U","file":"annotation.js","sourcesContent":["import LocationConverter from \"../utils/location-converter.js\";\n\n\nexport default class Annotation {\n  constructor(editor, location, deleteCallback) {\n    this._marker = this._makeMarker(editor, location);\n    this._widget = null;\n    this._deleteCallback = () => {\n      deleteCallback(this);\n    };\n  }\n  \n  _makeMarker(editor, location) {\n    const marker = editor.markText(\n      location.from,\n      location.to,\n      {\n        className: `marker ${this.kind}`,\n        startStyle: \"start\",\n        endStyle: \"end\",\n        inclusiveLeft: false,\n        inclusiveRight: true\n      }\n    );\n    marker._babylonian = true;\n    return marker;\n  }\n  \n  _makeWidget(editor, location) {\n    throw new Error(\"Annotation should not be used directly\");\n  }\n\n  syncIndentation() {\n    if(this.location) {\n      this._widget.indentation = this.location.from.ch;\n    }\n  }\n  \n  clear() {\n    if(this._marker) {\n      this._marker.clear();\n    }\n    if(this._widget) {\n      this._widget.clear();\n    }\n  }\n  \n  get location() {\n    return this._marker.find();\n  }\n  \n  get locationAsKey() {\n    if(this.location) {\n      return LocationConverter.markerToKey(this.location);\n    }\n  }\n\n  get kind() {\n    return this.__proto__.constructor.name.toLowerCase();\n  }\n  \n  _serialize() {\n    return {\n      kind: this.kind,\n      location: this.locationAsKey\n    };\n  }\n  \n  serializeForSave() {\n    return this._serialize();\n  }\n  \n  serializeForWorker() {\n    return this._serialize();\n  }\n  \n  load(serialized) {\n    throw new Error(\"Annotation should not be used directly\");\n  }\n}"]}