{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/client/morphic/component-creator.js"],"names":["componentLoader","preferences","moment","Strings","selectorMatchesTree","collectAppliedCssRules","saveTemplate","createTemplate","handle","htmlBeautify","System","import","lively4url","then","obj","html_beautify","el","info","window","prompt","replace","toLowerCase","now","Date","getFullYear","getMonth","getDate","categories","split","map","cat","trim","tags","tag","rootElement","template","document","createElement","id","fragment","content","combinedStyle","styleElement","innerHTML","appendChild","clone","cloneNode","serializer","XMLSerializer","templateString","serializeToString","completeHTML","RegExp","templateEditor","createComponent","openInWindow","w","setURL","setText","style","left","top","jsonEditor","JSON","stringify","styles","styleSheets","i","length","styleSheet","cssRules","j","rule","selector","selectorText","indexOf","cssText","push","join","matches","children","ComponentCreator","visitURL","container","url","followPath","editFile","focus","copyTemplate","dir","component","type","filename","classname","ea","toUpperCaseFirst","lively","files","existFile","notify","templatejs_src","loadFile","saveFile","createEntry","input","path","getPath","value","leght","Error","match","components","resetTemplatePathCache","createUI","div","placeholder","button","addEventListener","e","errorMsg","message","color","select","listComponentsUI","opts","parse","statFile","testdir","tests","contents","name","list","_","sortBy","filter","forEach","li","span","textContent","a","href","onclick","evt","preventDefault","classFile","find","classLink","testFile","testLink","updateComponentsUI","context","Array","from","querySelectorAll","html","fixLinks","imgFile","img","src","result"],"mappings":";;;;;;;;;;;;;;;AAAYA,qB;;AACLC,iB;;AACAC,Y;;AACAC,a;;;;;;;;;;;AAoHEC,8D;;;;;;;;;;;;;AAvBAC,iE;;;;;;;;;;;;;AA/BAC,uD;;;;;;;;;;;;;oCA1BQC,+C;;;;;;;;;;;;;;4BA7BDC,uC;;;;;;;;;;;;;;AAVJR,0D;;;;;;;;;;;;;AACLC,sD;;;;;;;;;;;;;AACAC,iD;;;;;;;;;;;;;AACAC,kD;;;;;;;;;AAEP,UAAIM,+EAAJ;;;;;;;AAAIA,uD;;;;;;;AACJC,aAAOC,MAAP,CAAcC,aAAa,gCAA3B,EAA6DC,IAA7D,CAAkE,UAASC,GAAT,EAAa;AAC3E,2EAAeA,IAAIC,aAAnB;AACH,OAFD;;AAIO,eAASP,MAAT,CAAgBQ,EAAhB,EAAoB;AACzB;AACA,YAAIC,OAAO,EAAX;AACAA,aAAK,MAAL,IAAeC,OAAOC,MAAP,CAAc,mCAAd,CAAf;AACA,YAAI,CAACF,KAAK,MAAL,CAAL,EAAmB;AACjB;AACD;;AAED;AACAA,aAAK,UAAL,IAAmB,YAAYA,KAAK,MAAL,EAAaG,OAAb,CAAqB,KAArB,EAA4B,GAA5B,EAAiCC,WAAjC,EAA/B;AACAJ,aAAK,aAAL,IAAsBC,OAAOC,MAAP,CAAc,cAAd,KAAiC,EAAvD;AACAF,aAAK,QAAL,IAAiBC,OAAOC,MAAP,CAAc,SAAd,KAA4B,EAA7C;AACA,YAAIG,MAAM,IAAIC,IAAJ,EAAV;AACA;AACAN,aAAK,cAAL,IAAuBK,IAAIE,WAAJ,KAAoB,GAApB,IAA2BF,IAAIG,QAAJ,KAAiB,CAA5C,IAAiD,GAAjD,GAAuDH,IAAII,OAAJ,EAA9E;;AAEA,YAAIC,aAAaT,OAAOC,MAAP,CAAc,+BAAd,KAAkD,EAAnE;AACA;AACAF,aAAK,YAAL,IAAqBU,WAAWC,KAAX,CAAiB,GAAjB,EAAsBC,GAAtB,CAA2BC,GAAD,IAAS;AAAE,iBAAOA,IAAIC,IAAJ,GAAWV,WAAX,EAAP;AAAkC,SAAvE,CAArB;;AAEA,YAAIW,OAAOd,OAAOC,MAAP,CAAc,yBAAd,KAA4C,EAAvD;AACA;AACAF,aAAK,MAAL,IAAee,KAAKJ,KAAL,CAAW,GAAX,EAAgBC,GAAhB,CAAqBI,GAAD,IAAS;AAAE,iBAAOA,IAAIF,IAAJ,GAAWV,WAAX,EAAP;AAAkC,SAAjE,CAAf;;AAEAJ,aAAK,UAAL,IAAmBA,KAAK,UAAL,IAAmB,OAAtC;;AAEAV,uBAAeS,EAAf,EAAmBC,IAAnB;AACD;;;;AAEO,eAASV,cAAT,CAAwB2B,WAAxB,EAAqCjB,IAArC,EAA2C;AACjD,YAAIkB,8BAAWC,SAASC,aAAT,CAAuB,UAAvB,CAAX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAJ;AACAF,iBAASG,EAAT,GAAcrB,KAAK,UAAL,CAAd;;AAEA,YAAIsB,WAAWJ,SAASK,OAAxB;;AAEA;AACA;AACA;AACA,YAAIC,gBAAgBpC,uBAAuB6B,WAAvB,CAApB;;AAEA;AACAO,yBAAiB,kCAAjB;;AAEA;AACA,YAAIC,kCAAeN,SAASC,aAAT,CAAuB,OAAvB,CAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAJ;AACAK,qBAAaC,SAAb,GAAyBF,aAAzB;AACAF,iBAASK,WAAT,CAAqBF,YAArB;;AAEA;AACA,YAAIG,QAAQX,YAAYY,SAAZ,CAAsB,IAAtB,CAAZ;AACAP,iBAASK,WAAT,CAAqBC,KAArB;;AAEA,eAAOvC,aAAa6B,QAAb,EAAuBlB,IAAvB,CAAP;AACD;;;;AAED,eAASX,YAAT,CAAsB6B,QAAtB,EAAgClB,IAAhC,EAAsC;AACpC,YAAI8B,aAAa,IAAIC,aAAJ,EAAjB;;AAEA,YAAIC,iBAAiBF,WAAWG,iBAAX,CAA6Bf,QAA7B,CAArB;AACA;AACA,YAAIgB,eAAgBF,cAAD,CAAiB7B,OAAjB,CAAyB,IAAIgC,MAAJ,CAAW,MAAX,EAAmB,GAAnB,CAAzB,EAAiD,GAAjD,EAAsDhC,OAAtD,CAA8D,IAAIgC,MAAJ,CAAW,MAAX,EAAmB,GAAnB,CAA9D,EAAuF,GAAvF,CAAnB;;AAEA;AACA,YAAI,OAAO3C,YAAP,KAAwB,UAA5B,EAAwC;AACtC0C,yBAAe1C,aAAa0C,YAAb,CAAf;AACD;;AAED,YAAIE,iBAAiBrD,gBAAgBsD,eAAhB,CAAgC,eAAhC,CAArB;AACAtD,wBAAgBuD,YAAhB,CAA6BF,cAA7B,EAA6CxC,IAA7C,CAAmD2C,CAAD,IAAO;AACvDH,yBAAeI,MAAf,CAAsB7C,aAAa,aAAb,GAA6BuB,SAASG,EAAtC,GAA2C,OAAjE;AACAe,yBAAeK,OAAf,CAAuBP,YAAvB;AACAK,YAAEG,KAAF,CAAQC,IAAR,GAAe,KAAf;AACAJ,YAAEG,KAAF,CAAQE,GAAR,GAAc,KAAd;AACD,SALD;;AAOA,YAAIC,aAAa9D,gBAAgBsD,eAAhB,CAAgC,eAAhC,CAAjB;AACAtD,wBAAgBuD,YAAhB,CAA6BO,UAA7B,EAAyCjD,IAAzC,CAA+C2C,CAAD,IAAO;AACnDM,qBAAWL,MAAX,CAAkB7C,aAAa,aAAb,GAA6BuB,SAASG,EAAtC,GAA2C,OAA7D;AACAwB,qBAAWJ,OAAX,CAAmBK,KAAKC,SAAL,CAAe/C,IAAf,EAAqB,IAArB,EAA2B,CAA3B,CAAnB;AACAuC,YAAEG,KAAF,CAAQC,IAAR,GAAe,OAAf;AACAJ,YAAEG,KAAF,CAAQE,GAAR,GAAe,OAAf;AACD,SALD;;AAOA,eAAOV,YAAP;AACD;;AAED,eAAS9C,sBAAT,CAAgC6B,WAAhC,EAA6C;AAC3C,YAAIO,gBAAgB,EAApB;AACA,YAAIwB,SAAS7B,SAAS8B,WAAtB;AACA,aAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIF,OAAOG,MAA3B,EAAmCD,GAAnC,EAAwC;AACtC,cAAIE,aAAaJ,OAAOE,CAAP,CAAjB;AACA,cAAI,CAACE,WAAWC,QAAhB,EAA0B;AACxB;AACD;AACD,eAAK,IAAIC,IAAI,CAAb,EAAgBA,IAAIF,WAAWC,QAAX,CAAoBF,MAAxC,EAAgDG,GAAhD,EAAqD;AACnD,gBAAIC,OAAOH,WAAWC,QAAX,CAAoBC,CAApB,CAAX;AACA,gBAAIE,WAAWD,KAAKE,YAApB;AACA;AACA,gBAAItE,oBAAoBqE,QAApB,EAA8BvC,WAA9B,CAAJ,EAAgD;AAC9C,kBAAIO,cAAckC,OAAd,CAAsBH,KAAKI,OAA3B,KAAuC,CAAC,CAA5C,EAA+C;AAC7CnC,8BAAcoC,IAAd,CAAmBL,KAAKI,OAAxB;AACD;AACF;AACF;AACF;;AAED,eAAOnC,cAAcqC,IAAd,CAAmB,IAAnB,CAAP;AACD;;AAED,eAAS1E,mBAAT,CAA6BqE,QAA7B,EAAuCvC,WAAvC,EAAoD;AAClD;;AAEA;AACA,YAAIA,YAAY6C,OAAZ,CAAoBN,QAApB,CAAJ,EAAmC;AACjC,iBAAO,IAAP;AACD;;AAED;AACA,aAAK,IAAIN,IAAI,CAAb,EAAgBA,IAAIjC,YAAY8C,QAAZ,CAAqBZ,MAAzC,EAAiDD,GAAjD,EAAsD;AACpD,cAAI/D,oBAAoBqE,QAApB,EAA8BvC,YAAY8C,QAAZ,CAAqBb,CAArB,CAA9B,CAAJ,EAA4D;AAC1D,mBAAO,IAAP;AACD;AACF;;AAED;AACA,eAAO,KAAP;AACD;;AAEc,YAAMc,gBAAN,CAAuB;;AAEpC,qBAAaC,QAAb,CAAsBC,SAAtB,EAAiCC,GAAjC,EAAsC;AACpCD,oBAAUE,UAAV,CAAqBD,GAArB;AACA,gBAAMD,UAAUG,QAAV,CAAmBF,GAAnB,CAAN;AACAD,oBAAUI,KAAV;AACD;;AAED,qBAAaC,YAAb,CAA0BC,GAA1B,EAA+BC,SAA/B,EAA0CC,IAA1C,EAAgD;AAC9C,cAAIC,WAAWF,YAAY,GAAZ,GAAkBC,IAAjC;AACA,cAAIE,YAAYH,UAAU9D,KAAV,CAAgB,GAAhB,EAAqBC,GAArB,CAAyBiE,MAAM3F,QAAQ4F,gBAAR,CAAyBD,EAAzB,CAA/B,EAA6DhB,IAA7D,CAAkE,EAAlE,CAAhB;AACA,cAAIM,MAAMK,MAAO,GAAP,GAAaG,QAAvB;AACA,cAAI,MAAMI,OAAOC,KAAP,CAAaC,SAAb,CAAuBd,GAAvB,CAAV,EAAuC;AACrCY,mBAAOG,MAAP,CAAc,sBAAsBf,GAAtB,GAA4B,8BAA1C;AACD,WAFD,MAEO;AACL,gBAAIgB,iBAAiB,MAAMJ,OAAOC,KAAP,CAAaI,QAAb,CAAsBzF,aAAa,sBAAb,GAAsC+E,IAA5D,CAA3B;AACAS,6BAAiBA,eAAehF,OAAf,CAAuB,qBAAvB,EAA8CyE,SAA9C,CAAjB;AACAO,6BAAiBA,eAAehF,OAAf,CAAuB,kBAAvB,EAA2CsE,SAA3C,CAAjB;AACA,kBAAMM,OAAOC,KAAP,CAAaK,QAAb,CAAsBlB,GAAtB,EAA2BgB,cAA3B,CAAN;AACD;AACF;;AAED,qBAAaG,WAAb,CAAyBpB,SAAzB,EAAoCqB,KAApC,EAA2C;AACzC,cAAIC,OAAO,KAAKtB,UAAUuB,OAAV,EAAhB;AACA,cAAIjB,MAAMgB,KAAKrF,OAAL,CAAa,QAAb,EAAsB,EAAtB,CAAV;AACA,cAAIsE,YAAYc,MAAMG,KAAtB;AACA,cAAI,CAACjB,SAAD,IAAcA,UAAUkB,KAAV,IAAmB,CAArC,EAAwC;AACtC,kBAAM,IAAIC,KAAJ,CAAU,qCAAV,CAAN;AACA;AACD;AACD,cAAI,CAACnB,UAAUoB,KAAV,CAAgB,GAAhB,CAAL,EAA2B;AACzB,kBAAM,IAAID,KAAJ,CAAU,mDAAV,CAAN;AACD;;AAGD,gBAAM,KAAKrB,YAAL,CAAkBC,GAAlB,EAAuBC,SAAvB,EAAkC,IAAlC,CAAN;AACA,gBAAM,KAAKF,YAAL,CAAkBC,GAAlB,EAAuBC,SAAvB,EAAkC,MAAlC,CAAN;AACAM,iBAAOe,UAAP,CAAkBC,sBAAlB;;AAEA,eAAK9B,QAAL,CAAcC,SAAd,EAAyBM,MAAM,GAAN,GAAYC,SAAZ,GAAwB,KAAjD;AACD;;AAED,qBAAcuB,QAAd,CAAuB9B,SAAvB,EAAkC;AAChC,cAAI+B,yBAAO9E,SAASC,aAAT,CAAuB,KAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,cAAImE,2BAAQpE,SAASC,aAAT,CAAuB,OAAvB,CAAR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACAmE,gBAAMW,WAAN,GAAoB,sBAApB;AACAD,cAAItE,WAAJ,CAAgB4D,KAAhB;AACA,cAAIY,4BAAShF,SAASC,aAAT,CAAuB,QAAvB,CAAT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA+E,iBAAOC,gBAAP,CAAwB,OAAxB,EAAiC,YAAY;AAC3C,gBAAI;AACF,oBAAM,KAAKd,WAAL,CAAiBpB,SAAjB,EAA4BqB,KAA5B,CAAN;AACD,aAFD,CAEE,OAAMc,CAAN,EAAS;AACTC,uBAAS5E,SAAT,GAAqB,KAAK2E,EAAEE,OAA5B;AACD;AACF,WAND;AAOAJ,iBAAOzE,SAAP,GAAmB,QAAnB;AACAuE,cAAItE,WAAJ,CAAgBwE,MAAhB;;AAEA,cAAIG,8BAAWnF,SAASC,aAAT,CAAuB,KAAvB,CAAX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACAkF,mBAAS5D,KAAT,CAAe8D,KAAf,GAAuB,KAAvB;AACAP,cAAItE,WAAJ,CAAgB2E,QAAhB;;AAEAf,gBAAMjB,KAAN;AACAiB,gBAAMkB,MAAN;AACA,iBAAOR,GAAP;AACD;;AAED,qBAAaS,gBAAb,CAA8BxC,SAA9B,EAAyC;AACvC,cAAG,CAACA,SAAD,IAAc,CAACA,UAAUuB,OAA5B,EAAqC;AACnC,mBAAO,4BAAP;AACD;AACD,cAAID,OAAO,KAAKtB,UAAUuB,OAAV,EAAhB;AACA,cAAIjB,MAAMgB,KAAKrF,OAAL,CAAa,QAAb,EAAsB,EAAtB,CAAV;AACA,cAAIwG,OAAO7D,KAAK8D,KAAL,EAAW,MAAM7B,OAAOC,KAAP,CAAa6B,QAAb,CAAsBrC,GAAtB,CAAjB,EAAX;AACA,cAAIsC,UAAUnH,aAAa,kBAA3B;AACA,cAAIoH,QAAQjE,KAAK8D,KAAL,EAAW,MAAM7B,OAAOC,KAAP,CAAa6B,QAAb,CAAsBC,OAAtB,CAAjB,GAAiDE,QAAjD,CAA0DpG,GAA1D,CAA8DiE,MAAMA,GAAGoC,IAAvE,CAAZ;;AAEA,cAAIC,0BAAO/F,SAASC,aAAT,CAAuB,IAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA+F,YAAEC,MAAF,CAAST,KAAKK,QAAd,EAAwBnC,MAAMA,GAAGoC,IAAjC,EACGI,MADH,CACUxC,MAAMA,GAAGoC,IAAH,CAAQpB,KAAR,CAAc,OAAd,KAA0BhB,GAAGoC,IAAH,KAAY,YADtD,EAEGK,OAFH,CAEWzC,MAAM;AACb,gBAAI0C,wBAAKpG,SAASC,aAAT,CAAuB,IAAvB,CAAL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;;AAEA,gBAAIoG,0BAAOrG,SAASC,aAAT,CAAuB,MAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACAoG,iBAAKC,WAAL,GAAmB5C,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAAyB,GAAzB,CAAnB;AACAoH,eAAG5F,WAAH,CAAe6F,IAAf;;AAEA,gBAAIE,uBAAIvG,SAASC,aAAT,CAAuB,GAAvB,CAAJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACAsG,cAAEhG,SAAF,GAAc,MAAd;AACAgG,cAAEC,IAAF,GAAS9C,GAAGoC,IAAZ;AACAS,cAAEE,OAAF,GAAaC,GAAD,IAAS;AACnBA,kBAAIC,cAAJ;AACA5D,wBAAUE,UAAV,CAAqBI,MAAM,GAAN,GAAYK,GAAGoC,IAApC;AACA,qBAAO,IAAP;AACD,aAJD;AAKAM,eAAG5F,WAAH,CAAe+F,CAAf;;AAEA,gBAAIF,0BAAOrG,SAASC,aAAT,CAAuB,MAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACAoG,iBAAKC,WAAL,GAAmB,GAAnB;AACAF,eAAG5F,WAAH,CAAe6F,IAAf;;AAEA,gBAAIO,YAAalD,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAAyB,KAAzB,CAAjB;AACA,gBAAIwG,KAAKK,QAAL,CAAcgB,IAAd,CAAmBnD,MAAMA,GAAGoC,IAAH,IAAWc,SAApC,CAAJ,EAAoD;AAClD,kBAAIE,+BAAY9G,SAASC,aAAT,CAAuB,GAAvB,CAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAJ;AACA6G,wBAAUvG,SAAV,GAAsB,IAAtB;AACAuG,wBAAUN,IAAV,GAAiBI,SAAjB;AACAE,wBAAUL,OAAV,GAAqBC,GAAD,IAAS;AAC3BA,oBAAIC,cAAJ;AACA5D,0BAAUE,UAAV,CAAqBI,MAAM,GAAN,GAAYuD,SAAjC;AACA,uBAAO,IAAP;AACD,eAJD;AAKAR,iBAAG5F,WAAH,CAAesG,SAAf;AACD;;AAED,gBAAIT,0BAAOrG,SAASC,aAAT,CAAuB,MAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACAoG,iBAAKC,WAAL,GAAmB,GAAnB;AACAF,eAAG5F,WAAH,CAAe6F,IAAf;;AAEA,gBAAIU,WAAYrD,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAAyB,UAAzB,CAAhB;AACA,gBAAI4G,MAAMrD,OAAN,CAAcwE,QAAd,MAA4B,CAAC,CAAjC,EAAoC;AAClC,kBAAIC,8BAAWhH,SAASC,aAAT,CAAuB,GAAvB,CAAX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAJ;AACA+G,uBAASzG,SAAT,GAAqB,MAArB;AACAyG,uBAASR,IAAT,GAAgBO,QAAhB;AACAC,uBAASP,OAAT,GAAoBC,GAAD,IAAS;AAC1BA,oBAAIC,cAAJ;AACA5D,0BAAUE,UAAV,CAAqB0C,UAAU,GAAV,GAAgBoB,QAArC;AACA,uBAAO,IAAP;AACD,eAJD;AAKAX,iBAAG5F,WAAH,CAAewG,QAAf;AACD;;AAEDjB,iBAAKvF,WAAL,CAAiB4F,EAAjB;AACD,WAtDH;AAuDA,iBAAOL,IAAP;AACD;;AAED,qBAAckB,kBAAd,CAAiClE,SAAjC,EAA4CmE,OAA5C,EAAqD;AACnD,cAAI,CAACnE,SAAD,IAAc,CAACA,UAAUuB,OAA7B,EAAsC;AACpC,mBAAO,4BAAP;AACD;AACD,cAAID,OAAO,KAAKtB,UAAUuB,OAAV,EAAhB;AACA,cAAIjB,MAAMgB,KAAKrF,OAAL,CAAa,QAAb,EAAuB,EAAvB,CAAV;AACA,cAAIwG,OAAO7D,KAAK8D,KAAL,EAAY,MAAM7B,OAAOC,KAAP,CAAa6B,QAAb,CAAsBrC,GAAtB,CAAlB,EAAX;AACA,cAAIsC,UAAUnH,aAAa,kBAA3B;AACA,cAAIoH,QAAQjE,KAAK8D,KAAL,EAAY,MAAM7B,OAAOC,KAAP,CAAa6B,QAAb,CAAsBC,OAAtB,CAAlB,GAAmDE,QAAnD,CAA4DpG,GAA5D,CAAgEiE,MAAMA,GAAGoC,IAAzE,CAAZ;;AAEA,cAAIC,0BAAO/F,SAASC,aAAT,CAAuB,KAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA+F,YAAEC,MAAF,CAAST,KAAKK,QAAd,EAAwBnC,MAAMA,GAAGoC,IAAjC,EAAuCI,MAAvC,CAA8CxC,MAAMA,GAAGoC,IAAH,CAAQpB,KAAR,CAAc,OAAd,KAA0BhB,GAAGoC,IAAH,KAAY,YAA1F,EAAwGK,OAAxG,CAAgHzC,MAAM;;AAEpH,gBAAIoC,OAAOpC,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAAyB,EAAzB,CAAX;;AAEA,gBAAIoH,KAAKe,MAAMC,IAAN,CAAWF,QAAQG,gBAAR,CAAyB,cAAzB,CAAX,EAAqDR,IAArD,CAA0DnD,MAAMA,GAAG4C,WAAH,CAAe5B,KAAf,CAAqB,IAAI1D,MAAJ,CAAW8E,OAAO,OAAlB,CAArB,CAAhE,CAAT;AACA,gBAAI,CAACM,EAAL,EAAS;AACP;AACAL,mBAAKO,WAAL,IAAoB,QAAO5C,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAA0B,GAA1B,CAAP,GAAwC,iBAA5D;AACA;AACD,aAJD,MAIO;AACL;AACD;;AAEDoH,eAAG5F,WAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA4F,eAAG5F,WAAH,wDAAyB,YAAYsF,IAArC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACAM,eAAG5F,WAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,gBAAI+F,2DAAa7C,GAAGoC,IAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACAS,cAAEE,OAAF,GAAYC,OAAO;AACjBA,kBAAIC,cAAJ;AACA5D,wBAAUE,UAAV,CAAqBI,MAAM,GAAN,GAAYK,GAAGoC,IAApC;AACA,qBAAO,IAAP;AACD,aAJD;AAKAM,eAAG5F,WAAH,CAAe+F,CAAf;;AAEAH,eAAG5F,WAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA,gBAAIoG,YAAYlD,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAA0B,KAA1B,CAAhB;AACA,gBAAIwG,KAAKK,QAAL,CAAcgB,IAAd,CAAmBnD,MAAMA,GAAGoC,IAAH,IAAWc,SAApC,CAAJ,EAAoD;AAClD,kBAAIE,+BAAY9G,SAASC,aAAT,CAAuB,GAAvB,CAAZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAJ;AACA6G,wBAAUvG,SAAV,GAAsB,IAAtB;AACAuG,wBAAUN,IAAV,GAAiBI,SAAjB;AACA;AACA;AACA;AACA;AACA;AACAR,iBAAG5F,WAAH,CAAesG,SAAf;AACD;;AAEDlD,mBAAO0D,IAAP,CAAYC,QAAZ,CAAqBnB,GAAGiB,gBAAH,CAAoB,GAApB,CAArB,EAA+ChE,GAA/C,EAAoDL,OAAOD,UAAUE,UAAV,CAAqBD,GAArB,CAA3D;;AAGA,gBAAIqD,0BAAOrG,SAASC,aAAT,CAAuB,MAAvB,CAAP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAJ;AACAoG,iBAAKC,WAAL,GAAmB,GAAnB;AACAF,eAAG5F,WAAH,CAAe6F,IAAf;;AAEA,gBAAIU,WAAWrD,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAA0B,UAA1B,CAAf;AACA,gBAAI4G,MAAMrD,OAAN,CAAcwE,QAAd,MAA4B,CAAC,CAAjC,EAAoC;AAClC,kBAAIC,8BAAWhH,SAASC,aAAT,CAAuB,GAAvB,CAAX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAJ;AACA+G,uBAASzG,SAAT,GAAqB,MAArB;AACAyG,uBAASR,IAAT,GAAgBO,QAAhB;AACAC,uBAASP,OAAT,GAAmBC,OAAO;AACxBA,oBAAIC,cAAJ;AACA5D,0BAAUE,UAAV,CAAqB0C,UAAU,GAAV,GAAgBoB,QAArC;AACA,uBAAO,IAAP;AACD,eAJD;AAKAX,iBAAG5F,WAAH,CAAewG,QAAf;AACD;AACAZ,eAAG5F,WAAH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,gBAAIgH,UAAU9D,GAAGoC,IAAH,CAAQ9G,OAAR,CAAgB,QAAhB,EAA0B,MAA1B,CAAd;AACD,gBAAIwG,KAAKK,QAAL,CAAcgB,IAAd,CAAmBnD,MAAMA,GAAGoC,IAAH,IAAW0B,OAApC,CAAJ,EAAkD;AAChD,kBAAIC,yBAAMzH,SAASC,aAAT,CAAuB,KAAvB,CAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAJ;AACAwH,kBAAIlH,SAAJ,GAAgB,EAAhB;AACAkH,kBAAIC,GAAJ,GAAUrE,MAAMmE,OAAhB;AACA;AACA;AACA;AACA;AACA;AACApB,iBAAG5F,WAAH,CAAeiH,GAAf;AACD;AAEF,WA1ED;;AA4EA,cAAIE,mEAAe5B,IAAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACA,iBAAO4B,MAAP;AACD;AAjOmC;;yBAAjB9E,gB;;;;;;;;6BAAAA,iD","file":"component-creator.js","sourcesContent":["import * as componentLoader from \"./component-loader.js\";\nimport preferences from '../preferences.js';\nimport moment from \"src/external/moment.js\";\nimport Strings from \"src/client/strings.js\"\n\nvar htmlBeautify;\nSystem.import(lively4url + \"/src/external/beautify-html.js\").then(function(obj){\n    htmlBeautify = obj.html_beautify;\n});\n\nexport function handle(el) {\n  // collect information about the component\n  var info = {};\n  info[\"name\"] = window.prompt(\"unique name (may contain spaces):\");\n  if (!info[\"name\"]) {\n    return;\n  }\n\n  // create html-tag by replacing spaces with '-' and lowercasing\n  info[\"html-tag\"] = \"lively-\" + info[\"name\"].replace(/\\s/g, \"-\").toLowerCase();\n  info[\"description\"] = window.prompt(\"Description:\") || \"\";\n  info[\"author\"] = window.prompt(\"Author:\") || \"\";\n  var now = new Date();\n  // note that getMonth() returns value [0..11]\n  info[\"date-changed\"] = now.getFullYear() + \"-\" + (now.getMonth() + 1) + \"-\" + now.getDate();\n\n  var categories = window.prompt(\"Categories (comma separated):\") || \"\";\n  // split by ',' and remove leading and trailing white-spaces\n  info[\"categories\"] = categories.split(\",\").map((cat) => { return cat.trim().toLowerCase(); });\n\n  var tags = window.prompt(\"Tags (comma separated):\") || \"\";\n  // split by ',' and remove leading and trailing white-spaces\n  info[\"tags\"] = tags.split(\",\").map((tag) => { return tag.trim().toLowerCase(); });\n\n  info[\"template\"] = info[\"html-tag\"] + \".html\";\n\n  createTemplate(el, info);\n}\n\nexport  function createTemplate(rootElement, info) {\n  var template = document.createElement(\"template\");\n  template.id = info[\"html-tag\"];\n\n  var fragment = template.content;\n\n  // collect styles\n  // Maybe we should not filter rules due to dynamically\n  // assigned classes?\n  var combinedStyle = collectAppliedCssRules(rootElement);\n\n  // the host should be displayed as inline-block to have the correct width and height\n  combinedStyle += \"\\n:host {display: inline-block;}\"\n\n  // apply style\n  var styleElement = document.createElement(\"style\");\n  styleElement.innerHTML = combinedStyle;\n  fragment.appendChild(styleElement);\n\n  // clone root\n  var clone = rootElement.cloneNode(true);\n  fragment.appendChild(clone);\n\n  return saveTemplate(template, info);\n}\n\nfunction saveTemplate(template, info) {\n  var serializer = new XMLSerializer();\n\n  var templateString = serializer.serializeToString(template);\n  // fix some bad escaping\n  var completeHTML = (templateString).replace(new RegExp(\"&lt;\", \"g\"),\"<\").replace(new RegExp(\"&gt;\", \"g\") ,\">\");\n\n  // beautify\n  if (typeof htmlBeautify === \"function\") {\n    completeHTML = htmlBeautify(completeHTML);\n  }\n\n  var templateEditor = componentLoader.createComponent(\"lively-editor\");\n  componentLoader.openInWindow(templateEditor).then((w) => {\n    templateEditor.setURL(lively4url + \"/templates/\" + template.id + \".html\");\n    templateEditor.setText(completeHTML);\n    w.style.left = \"0px\";\n    w.style.top = \"0px\";\n  });\n\n  var jsonEditor = componentLoader.createComponent(\"lively-editor\");\n  componentLoader.openInWindow(jsonEditor).then((w) => {\n    jsonEditor.setURL(lively4url + \"/templates/\" + template.id + \".json\");\n    jsonEditor.setText(JSON.stringify(info, null, 2));\n    w.style.left = \"100px\";\n    w.style.top =  \"100px\";\n  });\n\n  return completeHTML;\n}\n\nfunction collectAppliedCssRules(rootElement) {\n  var combinedStyle = [];\n  var styles = document.styleSheets;\n  for (var i = 0; i < styles.length; i++) {\n    var styleSheet = styles[i];\n    if (!styleSheet.cssRules) {\n      continue;\n    }\n    for (var j = 0; j < styleSheet.cssRules.length; j++) {\n      var rule = styleSheet.cssRules[j];\n      var selector = rule.selectorText;\n      // just add those rule that match an element in the subtree\n      if (selectorMatchesTree(selector, rootElement)) {\n        if (combinedStyle.indexOf(rule.cssText) == -1) {\n          combinedStyle.push(rule.cssText);\n        }\n      }\n    }\n  }\n\n  return combinedStyle.join(\"\\n\");\n}\n\nfunction selectorMatchesTree(selector, rootElement) {\n  // conservative css rule collection for now\n\n  // if root matches selector, we are done\n  if (rootElement.matches(selector)) {\n    return true;\n  }\n\n  // if not, check all children\n  for (var i = 0; i < rootElement.children.length; i++) {\n    if (selectorMatchesTree(selector, rootElement.children[i])) {\n      return true;\n    }\n  }\n\n  // if we reach this, none of the tree nodes matches the selector\n  return false;\n}\n\nexport default class ComponentCreator {\n\n  static async visitURL(container, url) {\n    container.followPath(url)\n    await container.editFile(url)\n    container.focus()\n  }\n\n  static async copyTemplate(dir, component, type) {\n    var filename = component + \".\" + type\n    var classname = component.split(/-/).map(ea => Strings.toUpperCaseFirst(ea)).join(\"\")\n    var url = dir  + \"/\" + filename\n    if (await lively.files.existFile(url)) {\n      lively.notify(\"Could not create \" + url + \", beacuse it already exists!\")\n    } else {\n      var templatejs_src = await lively.files.loadFile(lively4url + \"/templates/template.\" + type)\n      templatejs_src = templatejs_src.replace(/\\$\\$TEMPLATE_CLASS/g, classname)\n      templatejs_src = templatejs_src.replace(/\\$\\$TEMPLATE_ID/g, component)\n      await lively.files.saveFile(url, templatejs_src)\n    }\n  }\n\n  static async createEntry(container, input) {\n    var path = \"\" + container.getPath();\n    var dir = path.replace(/[^/]*$/,\"\");\n    var component = input.value\n    if (!component || component.leght == 0) {\n      throw new Error(\"please specify a web component name\")      \n      return\n    }\n    if (!component.match(/-/)) {\n      throw new Error(\"we components must have a '-' (dash) in it's name\")\n    }\n  \n    \n    await this.copyTemplate(dir, component, \"js\")\n    await this.copyTemplate(dir, component, \"html\")\n    lively.components.resetTemplatePathCache()\n\n    this.visitURL(container, dir + \"/\" + component + \".js\")\n  }\n\n  static  async createUI(container) { \n    var div  = document.createElement(\"div\");\n    var input = document.createElement(\"input\");\n    input.placeholder = \"lively-new-component\";\n    div.appendChild(input);\n    var button = document.createElement(\"button\");\n    button.addEventListener(\"click\", async () => {\n      try {\n        await this.createEntry(container, input)\n      } catch(e) {\n        errorMsg.innerHTML = \"\" + e.message\n      }\n    });\n    button.innerHTML = \"create\";\n    div.appendChild(button);\n\n    var errorMsg = document.createElement(\"div\")\n    errorMsg.style.color = \"red\"\n    div.appendChild(errorMsg)\n    \n    input.focus();\n    input.select();\n    return div;\n  }\n  \n  static async listComponentsUI(container) {\n    if(!container || !container.getPath) {\n      return \"no container as parentPath\";\n    }\n    var path = \"\" + container.getPath();\n    var dir = path.replace(/[^/]*$/,\"\")\n    var opts = JSON.parse(await lively.files.statFile(dir))\n    var testdir = lively4url + \"/test/templates/\"\n    var tests = JSON.parse(await lively.files.statFile(testdir)).contents.map(ea => ea.name)\n\n    var list = document.createElement(\"ul\")\n    _.sortBy(opts.contents, ea => ea.name)\n      .filter(ea => ea.name.match(/html$/) && ea.name !== \"index.html\")\n      .forEach(ea => {\n        var li = document.createElement(\"li\")\n\n        var span = document.createElement(\"span\")\n        span.textContent = ea.name.replace(/\\.html/,\" \")\n        li.appendChild(span)\n\n        var a = document.createElement(\"a\")\n        a.innerHTML = \"html\"\n        a.href = ea.name\n        a.onclick = (evt) => {\n          evt.preventDefault()\n          container.followPath(dir + \"/\" + ea.name)\n          return true\n        }\n        li.appendChild(a)\n\n        var span = document.createElement(\"span\")\n        span.textContent = \" \"\n        li.appendChild(span)\n\n        var classFile =  ea.name.replace(/\\.html/,\".js\")\n        if (opts.contents.find(ea => ea.name == classFile)) {\n          var classLink = document.createElement(\"a\")\n          classLink.innerHTML = \"js\"\n          classLink.href = classFile\n          classLink.onclick = (evt) => {\n            evt.preventDefault()\n            container.followPath(dir + \"/\" + classFile)\n            return true\n          }\n          li.appendChild(classLink)\n        }\n\n        var span = document.createElement(\"span\")\n        span.textContent = \" \"\n        li.appendChild(span)\n\n        var testFile =  ea.name.replace(/\\.html/,\"-test.js\")\n        if (tests.indexOf(testFile) !== -1) {\n          var testLink = document.createElement(\"a\")\n          testLink.innerHTML = \"test\"\n          testLink.href = testFile\n          testLink.onclick = (evt) => {\n            evt.preventDefault()\n            container.followPath(testdir + \"/\" + testFile)\n            return true\n          }\n          li.appendChild(testLink)\n        }\n\n        list.appendChild(li)\n      })\n    return list\n  }\n  \n  static async  updateComponentsUI(container, context) {\n    if (!container || !container.getPath) {\n      return \"no container as parentPath\";\n    }\n    var path = \"\" + container.getPath();\n    var dir = path.replace(/[^/]*$/, \"\");\n    var opts = JSON.parse((await lively.files.statFile(dir)));\n    var testdir = lively4url + \"/test/templates/\";\n    var tests = JSON.parse((await lively.files.statFile(testdir))).contents.map(ea => ea.name);\n\n    var list = document.createElement(\"pre\")\n    _.sortBy(opts.contents, ea => ea.name).filter(ea => ea.name.match(/html$/) && ea.name !== \"index.html\").forEach(ea => {\n\n      var name = ea.name.replace(/\\.html/,\"\")\n\n      var li = Array.from(context.querySelectorAll(\"li.component\")).find(ea => ea.textContent.match(new RegExp(name + \"( |$)\")))\n      if (!li) {\n        // and here we go.... return markdown source... to be added manually \n        list.textContent += \" - \" +ea.name.replace(/\\.html/, \" \") + ' {.component}\\n'\n        return\n      } else {\n        // console.log(\"INDEX Markdown: found \" + name)\n      }\n\n      li.appendChild((<span> </span>));\n\n      li.appendChild((<a href={\"open://\" + name}>open</a>));\n      li.appendChild((<span> </span>));\n\n      var a = <a href={ea.name}>html</a>;\n      a.onclick = evt => {\n        evt.preventDefault();\n        container.followPath(dir + \"/\" + ea.name);\n        return true;\n      };\n      li.appendChild(a);\n\n      li.appendChild((<span> </span>));\n\n      var classFile = ea.name.replace(/\\.html/, \".js\");\n      if (opts.contents.find(ea => ea.name == classFile)) {\n        var classLink = document.createElement(\"a\");\n        classLink.innerHTML = \"js\";\n        classLink.href = classFile;\n        // classLink.onclick = evt => {\n        //   evt.preventDefault();\n        //   container.followPath(dir + \"/\" + classFile);\n        //   return true;\n        // };\n        li.appendChild(classLink);\n      }\n\n      lively.html.fixLinks(li.querySelectorAll(\"a\"), dir, url => container.followPath(url) )\n\n\n      var span = document.createElement(\"span\");\n      span.textContent = \" \";\n      li.appendChild(span);\n\n      var testFile = ea.name.replace(/\\.html/, \"-test.js\");\n      if (tests.indexOf(testFile) !== -1) {\n        var testLink = document.createElement(\"a\");\n        testLink.innerHTML = \"test\";\n        testLink.href = testFile;\n        testLink.onclick = evt => {\n          evt.preventDefault();\n          container.followPath(testdir + \"/\" + testFile);\n          return true;\n        };\n        li.appendChild(testLink);\n      }\n       li.appendChild(<br></br>);\n       var imgFile = ea.name.replace(/\\.html/, \".png\");\n      if (opts.contents.find(ea => ea.name == imgFile)) {\n        var img = document.createElement(\"img\");\n        img.innerHTML = \"\";\n        img.src = dir + imgFile;\n        // img.onclick = evt => {\n        //   evt.preventDefault();\n        //   container.followPath(dir + \"/\" + classFile);\n        //   return true;\n        // };\n        li.appendChild(img);\n      }\n\n    });\n\n    var result = <div>{list}</div>\n    return result\n  }\n}\n\n"]}