diff --git a/web/src/components/Homescript/HmsEditor/index.cjs b/web/src/components/Homescript/HmsEditor/index.cjs index 63d7f9eb..8fbd03d0 100644 --- a/web/src/components/Homescript/HmsEditor/index.cjs +++ b/web/src/components/Homescript/HmsEditor/index.cjs @@ -11,18 +11,18 @@ var lr = require('@lezer/lr'); const spec_Ident = {__proto__:null,import:14, type:18, templ:22, trigger:26, from:36, let:44, return:74, break:78, continue:82, loop:86, while:90, for:94, in:96, true:108, false:108, on:108, off:108, new:114, fn:118, null:128, none:130, exit:140, throw:140, assert:140, print:140, println:140, debug:140, as:204, if:208, else:210, match:214, try:220, catch:222, pub:228, impl:232, event:240}; const parser = lr.LRParser.deserialize({ version: 14, - states: "HbQ]QPOOOzQPO'#EvO!PQPO'#EwO!UQPO'#EyOOQO'#C`'#C`OOQO'#E|'#E|Q]QPOOO!ZQPO'#CaO!lQPO'#DPO!qQPO'#CqO!vQPO'#EpO!{QPO'#EqO#WQPO'#EsO#RQPO'#C`OOQO,5;b,5;bO#]QPO,5;cO#bQPO,5;eOOQO-E8z-E8zOOQO'#Cd'#CdO#mQPO'#CdO#rQPO'#CdO#wQPO'#CdO#|QPO,58{O$RQPO,58{O$aQPO,59kO$fQPO,59]O$nQPO,5;[OOQO,5;],5;]OOQO'#Eu'#EuO$sQPO,5;_OOQO,58z,58zO$xQPO'#F]O%ZQPO1G0}O%`QPO1G1PO%hQPO1G1POOQO1G1P1G1PO%hQPO1G1PO%pQQO'#EzOOQO'#Cf'#CfOOQO,59O,59OOOQO'#Ch'#ChOOQO'#Cj'#CjO%{QPO1G.gO&QQPO1G.gO&YQSO1G/VO&hQWO1G.wO&YQSO1G.wO'oQPO'#DjO'wQPO1G0vO(PQPO1G0yO(UQPO'#CwOOQO'#Cx'#CxO(ZQPO'#F`O(`QPO'#F`OOQO'#F^'#F^O(hQPO'#F^OOQO,5;w,5;wO(pQPO,5;wOOQO7+&i7+&iOOQO,5;q,5;qOOQO7+&k7+&kO(uQPO7+&kOOQO-E9T-E9TO(}QPO7+&kOOQO'#E{'#E{O&hQWO,5;fOOQO'#Co'#CoO)VQPO7+$RO)[QPO7+$RO)mQPO7+$RO)uQPO7+$RO&YQSO'#F[OOQO'#Cs'#CsO&YQSO'#CsO)zQPO7+$qO*PQWO'#DeO+wQWO7+$cO,OQPO'#DaOOQO'#Da'#DaOOQO'#Ds'#DsOOQO'#Dr'#DrOOQO'#Dv'#DvO&hQWO'#DuO,TQPO'#E`OOQO'#D`'#D`O&hQWO'#D`O,YQWO'#C}OOQO'#C|'#C|OOQO'#C{'#C{O,yQPO'#DfO$nQPO'#DhO&hQWO'#EgO&hQWO'#EjO-OQPO'#EmO-TQPO7+$cOOQO,5:U,5:UO-YQPO,5:UOOQO7+&b7+&bO&YQSO7+&bO-_QPO7+&eOOQO,59c,59cO&YQSO,5;zO-dQPO,5;zO-iQPO,5;xO-wQPO,5;xOOQO1G1c1G1cOOQO<bAN>bOOQO!$'Ky!$'KyO!-QQWO<SAN>SOOQO7+'W7+'WO!/iQWO7+'WO!/pQWO7+'WOOQOG24|G24|P!#zQWO'#FTOOQO7+&t7+&tOOQO<WO!o!mi~P>WO!e#nO!k#sO!s#sO!t#tO!u#tO!v#tO!w#uO!x#vO!y#uO#W#zOd!mii!mi!_!mi!n!mi!o!mi!p!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~O!q#rO!r#rO~P@iO!q!mi!r!mi~P@iO!e#nO!w#uO!x#vO!y#uO#W#zOd!mii!mi!_!mi!k!mi!n!mi!o!mi!p!mi!q!mi!r!mi!s!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~O!t#tO!u#tO!v#tO~PB}O!t!mi!u!mi!v!mi~PB}O!w#uO#W#zOd!mii!mi!_!mi!e!mi!k!mi!n!mi!o!mi!p!mi!q!mi!r!mi!s!mi!t!mi!u!mi!v!mi!x!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~O!y!mi~PEfO!y#uO~PEfO!e#nO!k#sO!n#oO!o#pO!p#qO!q#rO!r#rO!s#sO!t#tO!u#tO!v#tO!w#uO!x#vO!y#uO#W#zO~Od!mii!mi!_!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~PGwO!z#wO!{#wO!|#wO!}#wO#O#wO#P#wO#R#xOd#Qii#Qi!_#Qi#Y#Qi`#Qij#Qi!`#Qia#Qi_#Qi#`#Qi~PGwOj&RO~P*WO`&SO!`$XX~P*WO!`&UO~Oa&VO~P*WOd&WO~P*WOd&XOUzaXza_zaazafzaizamzanzauzawzayza{za}za!Pza!Uza!Zza!]za!_za!bza!cza!hza!kza!lza#[za#_za#bza~O!Q&ZO~O#}&[O~O`&]Oa$VX~Oa&_O~O#]&aOd#Zii#Zi!_#Zi!e#Zi!k#Zi!n#Zi!o#Zi!p#Zi!q#Zi!r#Zi!s#Zi!t#Zi!u#Zi!v#Zi!w#Zi!x#Zi!y#Zi!z#Zi!{#Zi!|#Zi!}#Zi#O#Zi#P#Zi#R#Zi#W#Zi#Y#Zi`#Zij#Zi!`#ZiU#ZiX#Zi_#Zia#Zif#Zim#Zin#Ziu#Ziw#Ziy#Zi{#Zi}#Zi!P#Zi!U#Zi!Z#Zi!]#Zi!b#Zi!c#Zi!h#Zi!l#Zi#[#Zi#_#Zi#b#Zi#`#Zi~OU&bO_!xOi!mOm!pOn!sO!U!oO!Z!{O!]!|O!_!wO!b!pO!c!pO!h!qO!k!sO!l!sO#[!}O#_#OO#b#PO~Oa&eO~P!#zOU&gO~Od&hO~P*WO`&iO!`&kO~Oa&mO!]YO#f%vO~OU!TOm!TO$T!SO~Od&oO~O`#taj#ta!`#ta~P*WOj&qO~P&hO!`$Xa~P&hO`&sO!`$Xa~Od&tOU|iX|i_|ia|if|ii|im|in|iu|iw|iy|i{|i}|i!P|i!U|i!Z|i!]|i!_|i!b|i!c|i!h|i!k|i!l|i#[|i#_|i#b|i~OU%gOm%gOa$Va~O`&xOa$Va~O_!xO#[!}O~O#`&|Oi!fX!_!fX!e!fX!k!fX!n!fX!o!fX!p!fX!q!fX!r!fX!s!fX!t!fX!u!fX!v!fX!w!fX!x!fX!y!fX!z!fX!{!fX!|!fX!}!fX#O!fX#P!fX#R!fX#W!fX#Y!fX~O#`&|O~P.^O`'OOa'QO~OU'SO~O`&iO!`'UO~Od'VO~O!`$Xi~P&hO`$Wia$Wi~P*WOU%gOm%gOa$Vi~O#`'[O~P.^Oa'^O~P!#zO`'_Oa'^O~O#}'aO~Od'bOU!OyX!Oy_!Oya!Oyf!Oyi!Oym!Oyn!Oyu!Oyw!Oyy!Oy{!Oy}!Oy!P!Oy!U!Oy!Z!Oy!]!Oy!_!Oy!b!Oy!c!Oy!h!Oy!k!Oy!l!Oy#[!Oy#_!Oy#b!Oy~OU%gOm%gO~O`'cO~P3pO`$Yia$Yi~P3pOa'fO~P!#zO`'iO~P3pO`$Yqa$Yq~P3pOP!u~", - goto: "8`$ZPPPP$[$`PP$dP$oP$rP$uPPPP$xP%UP%aPPP&S&YPP&c(f)g+T%U%]P%]P%]P%]P%]P%]PP%]+X,YP-XP-[-[P-[P.VPPPPP-[P.]/WP.]0RPP.]PPPPPPPPPPPPPPPPPP.]P1O1{.].]P.]P2vPP3tPP3tPP4o$`P$`P5Q5T$`P$`5[5e5h5n5t5z6Q6[6b6h6n6tPPPP7O7]7mP7pPP7x7{8T8WTTOUTSOUQfVQ{gV#d!f#f$rRwcRwdRweQ!ezQ$s#hQ%z$pR&p%{SSOUQkZT$V!x$XQ!l|Q#Q!OQ#i!iQ#j!kQ$h#UQ$j#XQ%V#{Q%r$gQ%x$kQ&`%mR'h'aX!Vo#Z$m%yW!Uo#Z$m%yR#Y!VQ!n}^#a!c%o&|'O'['_'gQ#m!mS$P!t&cQ$R!wQ$S!xQ$c!}Q$d#OQ$x#nQ$y#oQ$z#pQ${#qQ$|#rQ$}#sQ%O#tQ%P#uQ%Q#vQ%R#wQ%S#xQ%T#yQ%W$QQ%^$XQ%`$ZQ%e$_Q%q$fY%}$u&P&S&r&sQ&u&ZR&v&[!h!z}!c!m!t!w!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$Z$_$f$u%o&P&S&Z&[&c&r&s'O'_'gS$U!x$XQ'Z&|R'e'[!p!y}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gQ#T!QQ$e#PQ%d$^Q%l$bQ%n$cQ%s$hQ&Y%eQ&z&`Q&{&aQ'R&gR'W&uT$W!x$X!h!z}!c!m!t!w!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$Z$_$f$u%o&P&S&Z&[&c&r&s'O'_'gS$T!x$XQ'Y&|R'd'[!f!v}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u&P&S&Z&[&r&s&|'[W&d%o'O'_'gR&}&cR$O!o!q!p}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gQ!QjR$b!|!q!v}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'g!q!r}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'g!h!t}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u&P&S&Z&[&c&r&s&|'[X&c%o'O'_'g!n!v}!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gR#b!c!q!u}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'g!p!y}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gR&{&a!q!y}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gSSOUQkZQn]S%t$i%uR&n%vRm[SQOUR#V!RQt`X!]q!_#_#`R!cuQUORaUQ!g{R#g!gQ#[!XR$n#[Q$X!xR%_$XQ$v#mS&Q$v&TR&T%WQ&^%iR&y&^Q&j%rR'T&jQ'P&fR'`'PQ%u$iR&l%uQr`S!`r!aR!atg!j|!O!i!k#U#X#{$g$k%m'aQp_g!j|!O!i!k#U#X#{$g$k%m'aR!ZoQ!XoV$l#Z$m%yR%k$aQ%i$aV&w&]&x'XR%Y$QQ&f%oV']'O'_'g", + states: "HbQ]QPOOOzQPO'#EvO!PQPO'#EwO!UQPO'#EyOOQO'#C`'#C`OOQO'#E|'#E|Q]QPOOO!ZQPO'#CaO!lQPO'#DPO!qQPO'#CqO!vQPO'#EpO!{QPO'#EqO#WQPO'#EsO#RQPO'#C`OOQO,5;b,5;bO#]QPO,5;cO#bQPO,5;eOOQO-E8z-E8zOOQO'#Cd'#CdO#mQPO'#CdO#rQPO'#CdO#wQPO'#CdO#|QPO,58{O$RQPO,58{O$aQPO,59kO$fQPO,59]O$nQPO,5;[OOQO,5;],5;]OOQO'#Eu'#EuO$sQPO,5;_OOQO,58z,58zO$xQPO'#F]O%ZQPO1G0}O%`QPO1G1PO%hQPO1G1POOQO1G1P1G1PO%hQPO1G1PO%pQQO'#EzOOQO'#Cf'#CfOOQO,59O,59OOOQO'#Ch'#ChOOQO'#Cj'#CjO%{QPO1G.gO&QQPO1G.gO&YQSO1G/VO&hQWO1G.wO&YQSO1G.wO'oQPO'#DjO'wQPO1G0vO(PQPO1G0yO(UQPO'#CwOOQO'#Cx'#CxO(ZQPO'#F`O(`QPO'#F`OOQO'#F^'#F^O(hQPO'#F^OOQO,5;w,5;wO(pQPO,5;wOOQO7+&i7+&iOOQO,5;q,5;qOOQO7+&k7+&kO(uQPO7+&kOOQO-E9T-E9TO(}QPO7+&kOOQO'#E{'#E{O&hQWO,5;fOOQO'#Co'#CoO)VQPO7+$RO)[QPO7+$RO)mQPO7+$RO)uQPO7+$RO&YQSO'#F[OOQO'#Cs'#CsO&YQSO'#CsO)zQPO7+$qO*PQWO'#DeO+}QWO7+$cO,UQPO'#DaOOQO'#Da'#DaOOQO'#Ds'#DsOOQO'#Dr'#DrOOQO'#Dv'#DvO&hQWO'#DuO,ZQPO'#E`OOQO'#D`'#D`O&hQWO'#D`O,`QWO'#C}OOQO'#C|'#C|OOQO'#C{'#C{O-PQPO'#DfO$nQPO'#DhO&hQWO'#EgO&hQWO'#EjO-UQPO'#EmO-ZQPO7+$cOOQO,5:U,5:UO-`QPO,5:UOOQO7+&b7+&bO&YQSO7+&bO-eQPO7+&eOOQO,59c,59cO&YQSO,5;zO-jQPO,5;zO-oQPO,5;xO-}QPO,5;xOOQO1G1c1G1cOOQO<bAN>bOOQO!$'Ky!$'KyO!2yQWO<SAN>SOOQO7+'Y7+'YO!5bQWO7+'YO!5iQWO7+'YOOQOG24|G24|P!)mQWO'#FTOOQO7+&t7+&tOOQO< spec_Ident[value] || -1}], - tokenPrec: 2802 + tokenPrec: 3071 }); const HomescriptLanguage = language.LRLanguage.define({ diff --git a/web/src/components/Homescript/HmsEditor/index.js b/web/src/components/Homescript/HmsEditor/index.js index f9eb62f7..b609e69e 100644 --- a/web/src/components/Homescript/HmsEditor/index.js +++ b/web/src/components/Homescript/HmsEditor/index.js @@ -7,18 +7,18 @@ import { LRParser } from '@lezer/lr'; const spec_Ident = {__proto__:null,import:14, type:18, templ:22, trigger:26, from:36, let:44, return:74, break:78, continue:82, loop:86, while:90, for:94, in:96, true:108, false:108, on:108, off:108, new:114, fn:118, null:128, none:130, exit:140, throw:140, assert:140, print:140, println:140, debug:140, as:204, if:208, else:210, match:214, try:220, catch:222, pub:228, impl:232, event:240}; const parser = LRParser.deserialize({ version: 14, - states: "HbQ]QPOOOzQPO'#EvO!PQPO'#EwO!UQPO'#EyOOQO'#C`'#C`OOQO'#E|'#E|Q]QPOOO!ZQPO'#CaO!lQPO'#DPO!qQPO'#CqO!vQPO'#EpO!{QPO'#EqO#WQPO'#EsO#RQPO'#C`OOQO,5;b,5;bO#]QPO,5;cO#bQPO,5;eOOQO-E8z-E8zOOQO'#Cd'#CdO#mQPO'#CdO#rQPO'#CdO#wQPO'#CdO#|QPO,58{O$RQPO,58{O$aQPO,59kO$fQPO,59]O$nQPO,5;[OOQO,5;],5;]OOQO'#Eu'#EuO$sQPO,5;_OOQO,58z,58zO$xQPO'#F]O%ZQPO1G0}O%`QPO1G1PO%hQPO1G1POOQO1G1P1G1PO%hQPO1G1PO%pQQO'#EzOOQO'#Cf'#CfOOQO,59O,59OOOQO'#Ch'#ChOOQO'#Cj'#CjO%{QPO1G.gO&QQPO1G.gO&YQSO1G/VO&hQWO1G.wO&YQSO1G.wO'oQPO'#DjO'wQPO1G0vO(PQPO1G0yO(UQPO'#CwOOQO'#Cx'#CxO(ZQPO'#F`O(`QPO'#F`OOQO'#F^'#F^O(hQPO'#F^OOQO,5;w,5;wO(pQPO,5;wOOQO7+&i7+&iOOQO,5;q,5;qOOQO7+&k7+&kO(uQPO7+&kOOQO-E9T-E9TO(}QPO7+&kOOQO'#E{'#E{O&hQWO,5;fOOQO'#Co'#CoO)VQPO7+$RO)[QPO7+$RO)mQPO7+$RO)uQPO7+$RO&YQSO'#F[OOQO'#Cs'#CsO&YQSO'#CsO)zQPO7+$qO*PQWO'#DeO+wQWO7+$cO,OQPO'#DaOOQO'#Da'#DaOOQO'#Ds'#DsOOQO'#Dr'#DrOOQO'#Dv'#DvO&hQWO'#DuO,TQPO'#E`OOQO'#D`'#D`O&hQWO'#D`O,YQWO'#C}OOQO'#C|'#C|OOQO'#C{'#C{O,yQPO'#DfO$nQPO'#DhO&hQWO'#EgO&hQWO'#EjO-OQPO'#EmO-TQPO7+$cOOQO,5:U,5:UO-YQPO,5:UOOQO7+&b7+&bO&YQSO7+&bO-_QPO7+&eOOQO,59c,59cO&YQSO,5;zO-dQPO,5;zO-iQPO,5;xO-wQPO,5;xOOQO1G1c1G1cOOQO<bAN>bOOQO!$'Ky!$'KyO!-QQWO<SAN>SOOQO7+'W7+'WO!/iQWO7+'WO!/pQWO7+'WOOQOG24|G24|P!#zQWO'#FTOOQO7+&t7+&tOOQO<WO!o!mi~P>WO!e#nO!k#sO!s#sO!t#tO!u#tO!v#tO!w#uO!x#vO!y#uO#W#zOd!mii!mi!_!mi!n!mi!o!mi!p!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~O!q#rO!r#rO~P@iO!q!mi!r!mi~P@iO!e#nO!w#uO!x#vO!y#uO#W#zOd!mii!mi!_!mi!k!mi!n!mi!o!mi!p!mi!q!mi!r!mi!s!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~O!t#tO!u#tO!v#tO~PB}O!t!mi!u!mi!v!mi~PB}O!w#uO#W#zOd!mii!mi!_!mi!e!mi!k!mi!n!mi!o!mi!p!mi!q!mi!r!mi!s!mi!t!mi!u!mi!v!mi!x!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~O!y!mi~PEfO!y#uO~PEfO!e#nO!k#sO!n#oO!o#pO!p#qO!q#rO!r#rO!s#sO!t#tO!u#tO!v#tO!w#uO!x#vO!y#uO#W#zO~Od!mii!mi!_!mi!z!mi!{!mi!|!mi!}!mi#O!mi#P!mi#R!mi#Y!mi`!mij!mi!`!mia!mi_!mi#`!mi~PGwO!z#wO!{#wO!|#wO!}#wO#O#wO#P#wO#R#xOd#Qii#Qi!_#Qi#Y#Qi`#Qij#Qi!`#Qia#Qi_#Qi#`#Qi~PGwOj&RO~P*WO`&SO!`$XX~P*WO!`&UO~Oa&VO~P*WOd&WO~P*WOd&XOUzaXza_zaazafzaizamzanzauzawzayza{za}za!Pza!Uza!Zza!]za!_za!bza!cza!hza!kza!lza#[za#_za#bza~O!Q&ZO~O#}&[O~O`&]Oa$VX~Oa&_O~O#]&aOd#Zii#Zi!_#Zi!e#Zi!k#Zi!n#Zi!o#Zi!p#Zi!q#Zi!r#Zi!s#Zi!t#Zi!u#Zi!v#Zi!w#Zi!x#Zi!y#Zi!z#Zi!{#Zi!|#Zi!}#Zi#O#Zi#P#Zi#R#Zi#W#Zi#Y#Zi`#Zij#Zi!`#ZiU#ZiX#Zi_#Zia#Zif#Zim#Zin#Ziu#Ziw#Ziy#Zi{#Zi}#Zi!P#Zi!U#Zi!Z#Zi!]#Zi!b#Zi!c#Zi!h#Zi!l#Zi#[#Zi#_#Zi#b#Zi#`#Zi~OU&bO_!xOi!mOm!pOn!sO!U!oO!Z!{O!]!|O!_!wO!b!pO!c!pO!h!qO!k!sO!l!sO#[!}O#_#OO#b#PO~Oa&eO~P!#zOU&gO~Od&hO~P*WO`&iO!`&kO~Oa&mO!]YO#f%vO~OU!TOm!TO$T!SO~Od&oO~O`#taj#ta!`#ta~P*WOj&qO~P&hO!`$Xa~P&hO`&sO!`$Xa~Od&tOU|iX|i_|ia|if|ii|im|in|iu|iw|iy|i{|i}|i!P|i!U|i!Z|i!]|i!_|i!b|i!c|i!h|i!k|i!l|i#[|i#_|i#b|i~OU%gOm%gOa$Va~O`&xOa$Va~O_!xO#[!}O~O#`&|Oi!fX!_!fX!e!fX!k!fX!n!fX!o!fX!p!fX!q!fX!r!fX!s!fX!t!fX!u!fX!v!fX!w!fX!x!fX!y!fX!z!fX!{!fX!|!fX!}!fX#O!fX#P!fX#R!fX#W!fX#Y!fX~O#`&|O~P.^O`'OOa'QO~OU'SO~O`&iO!`'UO~Od'VO~O!`$Xi~P&hO`$Wia$Wi~P*WOU%gOm%gOa$Vi~O#`'[O~P.^Oa'^O~P!#zO`'_Oa'^O~O#}'aO~Od'bOU!OyX!Oy_!Oya!Oyf!Oyi!Oym!Oyn!Oyu!Oyw!Oyy!Oy{!Oy}!Oy!P!Oy!U!Oy!Z!Oy!]!Oy!_!Oy!b!Oy!c!Oy!h!Oy!k!Oy!l!Oy#[!Oy#_!Oy#b!Oy~OU%gOm%gO~O`'cO~P3pO`$Yia$Yi~P3pOa'fO~P!#zO`'iO~P3pO`$Yqa$Yq~P3pOP!u~", - goto: "8`$ZPPPP$[$`PP$dP$oP$rP$uPPPP$xP%UP%aPPP&S&YPP&c(f)g+T%U%]P%]P%]P%]P%]P%]PP%]+X,YP-XP-[-[P-[P.VPPPPP-[P.]/WP.]0RPP.]PPPPPPPPPPPPPPPPPP.]P1O1{.].]P.]P2vPP3tPP3tPP4o$`P$`P5Q5T$`P$`5[5e5h5n5t5z6Q6[6b6h6n6tPPPP7O7]7mP7pPP7x7{8T8WTTOUTSOUQfVQ{gV#d!f#f$rRwcRwdRweQ!ezQ$s#hQ%z$pR&p%{SSOUQkZT$V!x$XQ!l|Q#Q!OQ#i!iQ#j!kQ$h#UQ$j#XQ%V#{Q%r$gQ%x$kQ&`%mR'h'aX!Vo#Z$m%yW!Uo#Z$m%yR#Y!VQ!n}^#a!c%o&|'O'['_'gQ#m!mS$P!t&cQ$R!wQ$S!xQ$c!}Q$d#OQ$x#nQ$y#oQ$z#pQ${#qQ$|#rQ$}#sQ%O#tQ%P#uQ%Q#vQ%R#wQ%S#xQ%T#yQ%W$QQ%^$XQ%`$ZQ%e$_Q%q$fY%}$u&P&S&r&sQ&u&ZR&v&[!h!z}!c!m!t!w!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$Z$_$f$u%o&P&S&Z&[&c&r&s'O'_'gS$U!x$XQ'Z&|R'e'[!p!y}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gQ#T!QQ$e#PQ%d$^Q%l$bQ%n$cQ%s$hQ&Y%eQ&z&`Q&{&aQ'R&gR'W&uT$W!x$X!h!z}!c!m!t!w!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$Z$_$f$u%o&P&S&Z&[&c&r&s'O'_'gS$T!x$XQ'Y&|R'd'[!f!v}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u&P&S&Z&[&r&s&|'[W&d%o'O'_'gR&}&cR$O!o!q!p}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gQ!QjR$b!|!q!v}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'g!q!r}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'g!h!t}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u&P&S&Z&[&c&r&s&|'[X&c%o'O'_'g!n!v}!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gR#b!c!q!u}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'g!p!y}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gR&{&a!q!y}!c!m!t!w!x!}#O#n#o#p#q#r#s#t#u#v#w#x#y$Q$X$Z$_$f$u%o&P&S&Z&[&c&r&s&|'O'['_'gSSOUQkZQn]S%t$i%uR&n%vRm[SQOUR#V!RQt`X!]q!_#_#`R!cuQUORaUQ!g{R#g!gQ#[!XR$n#[Q$X!xR%_$XQ$v#mS&Q$v&TR&T%WQ&^%iR&y&^Q&j%rR'T&jQ'P&fR'`'PQ%u$iR&l%uQr`S!`r!aR!atg!j|!O!i!k#U#X#{$g$k%m'aQp_g!j|!O!i!k#U#X#{$g$k%m'aR!ZoQ!XoV$l#Z$m%yR%k$aQ%i$aV&w&]&x'XR%Y$QQ&f%oV']'O'_'g", + states: "HbQ]QPOOOzQPO'#EvO!PQPO'#EwO!UQPO'#EyOOQO'#C`'#C`OOQO'#E|'#E|Q]QPOOO!ZQPO'#CaO!lQPO'#DPO!qQPO'#CqO!vQPO'#EpO!{QPO'#EqO#WQPO'#EsO#RQPO'#C`OOQO,5;b,5;bO#]QPO,5;cO#bQPO,5;eOOQO-E8z-E8zOOQO'#Cd'#CdO#mQPO'#CdO#rQPO'#CdO#wQPO'#CdO#|QPO,58{O$RQPO,58{O$aQPO,59kO$fQPO,59]O$nQPO,5;[OOQO,5;],5;]OOQO'#Eu'#EuO$sQPO,5;_OOQO,58z,58zO$xQPO'#F]O%ZQPO1G0}O%`QPO1G1PO%hQPO1G1POOQO1G1P1G1PO%hQPO1G1PO%pQQO'#EzOOQO'#Cf'#CfOOQO,59O,59OOOQO'#Ch'#ChOOQO'#Cj'#CjO%{QPO1G.gO&QQPO1G.gO&YQSO1G/VO&hQWO1G.wO&YQSO1G.wO'oQPO'#DjO'wQPO1G0vO(PQPO1G0yO(UQPO'#CwOOQO'#Cx'#CxO(ZQPO'#F`O(`QPO'#F`OOQO'#F^'#F^O(hQPO'#F^OOQO,5;w,5;wO(pQPO,5;wOOQO7+&i7+&iOOQO,5;q,5;qOOQO7+&k7+&kO(uQPO7+&kOOQO-E9T-E9TO(}QPO7+&kOOQO'#E{'#E{O&hQWO,5;fOOQO'#Co'#CoO)VQPO7+$RO)[QPO7+$RO)mQPO7+$RO)uQPO7+$RO&YQSO'#F[OOQO'#Cs'#CsO&YQSO'#CsO)zQPO7+$qO*PQWO'#DeO+}QWO7+$cO,UQPO'#DaOOQO'#Da'#DaOOQO'#Ds'#DsOOQO'#Dr'#DrOOQO'#Dv'#DvO&hQWO'#DuO,ZQPO'#E`OOQO'#D`'#D`O&hQWO'#D`O,`QWO'#C}OOQO'#C|'#C|OOQO'#C{'#C{O-PQPO'#DfO$nQPO'#DhO&hQWO'#EgO&hQWO'#EjO-UQPO'#EmO-ZQPO7+$cOOQO,5:U,5:UO-`QPO,5:UOOQO7+&b7+&bO&YQSO7+&bO-eQPO7+&eOOQO,59c,59cO&YQSO,5;zO-jQPO,5;zO-oQPO,5;xO-}QPO,5;xOOQO1G1c1G1cOOQO<bAN>bOOQO!$'Ky!$'KyO!2yQWO<SAN>SOOQO7+'Y7+'YO!5bQWO7+'YO!5iQWO7+'YOOQOG24|G24|P!)mQWO'#FTOOQO7+&t7+&tOOQO< spec_Ident[value] || -1}], - tokenPrec: 2802 + tokenPrec: 3071 }); const HomescriptLanguage = LRLanguage.define({ diff --git a/web/src/pages/hmsEditor/App.svelte b/web/src/pages/hmsEditor/App.svelte index d0be85f6..6354c17d 100644 --- a/web/src/pages/hmsEditor/App.svelte +++ b/web/src/pages/hmsEditor/App.svelte @@ -31,10 +31,6 @@ // Specifies whether the argument prompt dialog should be open or closed let argumentsPromptOpen = false - // Specifies if additional linter information should be shown - // This raises the lint-level to `info` - let showLintInfo = true - // Is set to true when a script is linted or executed let requestLoading = false @@ -241,6 +237,11 @@ // Sends a `save` request to the server, also updates the GUI display of unsaved changes to saved async function saveCurrent() { + if (!currentExecRes.success) { + $createSnackbar("Cannot save broken code.") + return + } + if (!currentData.unsaved) return otherLoading = true try { @@ -339,7 +340,7 @@ let errs = res.errors // If hint and info diagnostics should be hidden, do it here - if (!showLintInfo) + if (!config.showInfo) errs = errs.filter(d => { if (d.diagnosticError !== null) { if (d.diagnosticError.kind <= 1) { @@ -567,8 +568,46 @@ let split: SplitInstance = null + interface EditorConfig { + leftHidden: boolean, + showInfo: boolean + } + + let config: EditorConfig = { + leftHidden: false, + showInfo: false, + } + let configLoaded = false + + + $: if (configLoaded) writeEditorConfig(config) + + const editorConfigKey = 'hmsEditorConfig' + + function loadEditorConfig(): EditorConfig { + let configRaw = localStorage.getItem(editorConfigKey) + if (!configRaw) { + const conf = { + leftHidden: false, + showInfo: false, + } + + writeEditorConfig(conf) + return conf + } + + return JSON.parse(configRaw) + } + + function writeEditorConfig(config: EditorConfig) { + localStorage.setItem(editorConfigKey, JSON.stringify(config)) + } + // Load the Homescript-list at the beginning onMount(async () => { + config = loadEditorConfig() + configLoaded = true + let onMobile = window.matchMedia("(max-width: 47rem)") onMobile.addEventListener("change", () => { registerMobile(onMobile) @@ -617,12 +656,18 @@ ], }) + if (config.leftHidden) + container.style.gridTemplateColumns = GRID_TEMPLATE_LEFT_HIDDEN + updateTerminalSizeAfterDrag('column', 3) } let container: HTMLDivElement = null + let container_left: HTMLDivElement = null const GUTTER_WIDTH = 5; + const GRID_TEMPLATE_LEFT_HIDDEN = '0rem 5px 9fr 5px 350px' + function registerMobile(mediaQuery: MediaQueryList) { // TODO: solve this! @@ -640,7 +685,7 @@ console.log("Register mobile...") split = Split({ - rowMinSizes: { 0: 30, 2: 50, 4: 55 }, + rowMinSizes: { 0: 50, 2: 50, 4: 55 }, gridTemplateRows: `1fr 8px 4fr 8px 1fr`, onDragStart: (direction, track) => { @@ -710,23 +755,42 @@ save + disabled={!currentData.unsaved}> + save +
-
- 0} - bind:currentData - bind:homescripts - {currentExecRes} - /> +
+
+ { config.leftHidden = !config.leftHidden; if (config.leftHidden) { container.style.gridTemplateColumns = GRID_TEMPLATE_LEFT_HIDDEN } else { container.style.gridTemplateColumns = '1fr 5px 9fr 5px 350px' } }} + > + menu + + + {#if !config.leftHidden} + + Files + + {/if} +
+ + {#if !config.leftHidden} + 0} + bind:currentData + bind:homescripts + {currentExecRes} + /> + {/if}
-
+
{#if homescriptsLoaded} @@ -734,7 +798,7 @@ on:lint={(e) => displayLintResult(e.detail)} bind:moduleName={currentData.data.data.data.id} bind:code={currentData.data.data.data.code} - {showLintInfo} + showLintInfo={config.showInfo} isDriver={currentData.data.data.data.type === 'DRIVER'} /> {/if} @@ -777,7 +841,7 @@
- + show info
@@ -795,7 +859,7 @@
- {#if currentExecRes !== undefined} + {#if (!currentExecRes || !currentExecRes.modeRun) && currentExecutionHandles === 0 } Start a program to use STDIN. @@ -933,6 +997,11 @@ $gutter-color1 2px, $gutter-color1 $gutter-width ); + + &.hidden { + background: none; + background-color: #282c34; + } } &__gutter-1 { @@ -969,6 +1038,33 @@ display: flex; flex-direction: column; + &.hidden { + background-color: #282c34; + } + + &__hide { + display: flex; + align-items: center; + padding: .25rem 0; + gap: .2.5rem; + + &.hidden { + width: 3rem; + z-index: 10; + justify-content: center; + background-color: rgba(0, 0, 0, 0.5); + border-radius: 50%; + width: 2.5rem; + height: 2rem; + transform: translateX(4px); + + /* backdrop-filter: blur(5px); */ + transition-property: transform background-color backdrop-filter; + transition-duration: 100ms; + transition-timing-function: ease-in-out; + } + } + @include mobile { overflow-y: auto; } diff --git a/web/src/pages/hmsEditor/EditorLeft.svelte b/web/src/pages/hmsEditor/EditorLeft.svelte index 5c0f9e13..d31b744f 100644 --- a/web/src/pages/hmsEditor/EditorLeft.svelte +++ b/web/src/pages/hmsEditor/EditorLeft.svelte @@ -1,7 +1,9 @@ -
- Files {#each workspaces as ws}
- + folder {ws.name} @@ -108,11 +108,16 @@ font-size: .8rem; line-height: 1em; background-color: var(--clr-height-1-2); + text-overflow: elipsis; + overflow: hidden; i { font-size: .9rem; } + &.disabled { + color: var(--clr-text-disabled); + } } } }