{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-stable/src/babylonian-programming-editor/utils/location-converter.js"],"names":["LocationConverter","astToKey","loc","start","line","column","end","selectionToKey","anchor","head","ch","markerToKey","from","to","astToMarker","keyToMarker"],"mappings":";;;;;;;;AAAA;;;AAGe,YAAMA,iBAAN,CAAwB;;AAErC,eAAO,WAAP,CAAkB,YAAYC,QAA9B,CAAsC,MAAtC,CAA4C,qQAA5C,CAAkTC,GAAlT,EAAuT;AACrT,oBAAU,OAAM,OAAO,CACrBA,IAAIC,KAAJ,CAAUC,IADW,EACLF,IAAIC,KAAJ,CAAUE,MADL,EAErBH,IAAII,GAAJ,CAAQF,IAFa,EAEPF,IAAII,GAAJ,CAAQD,MAFD;AAAb;AAIX;;AAED,eAAOE,cAAP,CAAsBL,GAAtB,EAA2B;AACzB,cAAGA,IAAIM,MAAJ,CAAWJ,IAAX,GAAkBF,IAAIO,IAAJ,CAASL,IAA3B,IACAF,IAAIM,MAAJ,CAAWJ,IAAX,KAAoBF,IAAIO,IAAJ,CAASL,IAA7B,IAAqCF,IAAIM,MAAJ,CAAWE,EAAX,GAAgBR,IAAIO,IAAJ,CAASC,EADjE,EACsE;AACpE,mBAAO,CACLR,IAAIM,MAAJ,CAAWJ,IAAX,GAAgB,CADX,EACcF,IAAIM,MAAJ,CAAWE,EADzB,EAELR,IAAIO,IAAJ,CAASL,IAAT,GAAc,CAFT,EAEYF,IAAIO,IAAJ,CAASC,EAFrB,CAAP;AAID,WAND,MAMO;AACL,mBAAO,CACLR,IAAIO,IAAJ,CAASL,IAAT,GAAc,CADT,EACYF,IAAIO,IAAJ,CAASC,EADrB,EAELR,IAAIM,MAAJ,CAAWJ,IAAX,GAAgB,CAFX,EAEcF,IAAIM,MAAJ,CAAWE,EAFzB,CAAP;AAID;AAEF;;AAED,eAAOC,WAAP,CAAmBT,GAAnB,EAAwB;AACtB,iBAAO,CACLA,IAAIU,IAAJ,CAASR,IAAT,GAAc,CADT,EACYF,IAAIU,IAAJ,CAASF,EADrB,EAELR,IAAIW,EAAJ,CAAOT,IAAP,GAAY,CAFP,EAEUF,IAAIW,EAAJ,CAAOH,EAFjB,CAAP;AAID;;AAED,eAAOI,WAAP,CAAmBZ,GAAnB,EAAwB;AACtB,iBAAO;AACLU,kBAAM;AACJR,oBAAMF,IAAIC,KAAJ,CAAUC,IAAV,GAAe,CADjB;AAEJM,kBAAIR,IAAIC,KAAJ,CAAUE;AAFV,aADD;AAKLQ,gBAAI;AACFT,oBAAMF,IAAII,GAAJ,CAAQF,IAAR,GAAa,CADjB;AAEFM,kBAAIR,IAAII,GAAJ,CAAQD;AAFV;AALC,WAAP;AAUD;;AAED,eAAOU,WAAP,CAAmBb,GAAnB,EAAwB;AACtB,iBAAO;AACLU,kBAAM;AACJR,oBAAMF,IAAI,CAAJ,IAAO,CADT;AAEJQ,kBAAIR,IAAI,CAAJ;AAFA,aADD;AAKLW,gBAAI;AACFT,oBAAMF,IAAI,CAAJ,IAAO,CADX;AAEFQ,kBAAIR,IAAI,CAAJ;AAFF;AALC,WAAP;AAUD;AAxDoC;yBAAlBF,iB;;;;;;;;6BAAAA,kD","file":"location-converter.js","sourcesContent":["/**\n * Converts different location types\n */\nexport default class LocationConverter {\n\n  static /*slider:*//*example:*/astToKey/*{}*//*{\"id\":\"7029_704f_e0b8\",\"name\":{\"mode\":\"input\",\"value\":\"Normal\"},\"color\":\"hsl(220, 30%, 70%)\",\"values\":{\"loc\":{\"mode\":\"input\",\"value\":\"{start:{line:4,column:5},end:{line:6,column:7}}\"}},\"instanceId\":{\"mode\":\"input\",\"value\":\"\"},\"prescript\":\"\",\"postscript\":\"\"}*/(loc) {\n    /*probe:*/return/*{}*/ [\n      loc.start.line, loc.start.column,\n      loc.end.line, loc.end.column\n    ];\n  }\n\n  static selectionToKey(loc) {\n    if(loc.anchor.line < loc.head.line ||\n      (loc.anchor.line === loc.head.line && loc.anchor.ch < loc.head.ch)) {\n      return [\n        loc.anchor.line+1, loc.anchor.ch,\n        loc.head.line+1, loc.head.ch\n      ];\n    } else {\n      return [\n        loc.head.line+1, loc.head.ch,\n        loc.anchor.line+1, loc.anchor.ch\n      ];\n    }\n\n  }\n\n  static markerToKey(loc) {\n    return [\n      loc.from.line+1, loc.from.ch,\n      loc.to.line+1, loc.to.ch\n    ];\n  }\n\n  static astToMarker(loc) {\n    return {\n      from: {\n        line: loc.start.line-1,\n        ch: loc.start.column\n      },\n      to: {\n        line: loc.end.line-1,\n        ch: loc.end.column\n      }\n    };\n  }\n  \n  static keyToMarker(loc) {\n    return {\n      from: {\n        line: loc[0]-1,\n        ch: loc[1]\n      },\n      to: {\n        line: loc[2]-1,\n        ch: loc[3]\n      }\n    };\n  }\n}/* Context: {\"context\":{\"prescript\":\"\",\"postscript\":\"\"},\"customInstances\":[]} */"]}