Frontend uudelleenrakennettu: Astro-komponentit, Wasm pääsäikeessä, ei Workeria

Vanha frontend siirretty temp/. Uusi rakenne:
- StatusBar.astro, Terminal.astro, Editor.astro, Guide.astro
- global.css erillinen
- Wasm pääsäikeessä (ei Worker — yksinkertainen, debugattava)
- Tab-completion, dropdown, projektikortti, Monaco, GUIDE.md
- Ei tokenisointia eikä koodilaboratoriota

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jaakko Vanhala
2026-04-09 20:17:39 +03:00
parent e3fdb91ac5
commit a8c4af0975
9617 changed files with 996171 additions and 5349 deletions

View File

@@ -0,0 +1,60 @@
'use strict';
const lang = require('./lang.cjs');
const selectorList = {
parse() {
return this.createSingleNodeList(
this.SelectorList()
);
}
};
const selector = {
parse() {
return this.createSingleNodeList(
this.Selector()
);
}
};
const identList = {
parse() {
return this.createSingleNodeList(
this.Identifier()
);
}
};
const langList = {
parse: lang.parseLanguageRangeList
};
const nth = {
parse() {
return this.createSingleNodeList(
this.Nth()
);
}
};
const pseudo = {
'dir': identList,
'has': selectorList,
'lang': langList,
'matches': selectorList,
'is': selectorList,
'-moz-any': selectorList,
'-webkit-any': selectorList,
'where': selectorList,
'not': selectorList,
'nth-child': nth,
'nth-last-child': nth,
'nth-last-of-type': nth,
'nth-of-type': nth,
'slotted': selector,
'host': selector,
'host-context': selector
};
module.exports = pseudo;

View File

@@ -0,0 +1,37 @@
'use strict';
const types = require('../../tokenizer/types.cjs');
function parseLanguageRangeList() {
const children = this.createList();
this.skipSC();
loop: while (!this.eof) {
switch (this.tokenType) {
case types.Ident:
children.push(this.Identifier());
break;
case types.String:
children.push(this.String());
break;
case types.Comma:
children.push(this.Operator());
break;
case types.RightParenthesis:
break loop;
default:
this.error('Identifier, string or comma is expected');
}
this.skipSC();
}
return children;
}
exports.parseLanguageRangeList = parseLanguageRangeList;