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:
53
network-poc/frontend/node_modules/csso/lib/restructure/2-initialMergeRuleset.js
generated
vendored
Normal file
53
network-poc/frontend/node_modules/csso/lib/restructure/2-initialMergeRuleset.js
generated
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
import { walk } from 'css-tree';
|
||||
import {
|
||||
unsafeToSkipNode,
|
||||
isEqualSelectors,
|
||||
isEqualDeclarations,
|
||||
addSelectors,
|
||||
hasSimilarSelectors
|
||||
} from './utils.js';
|
||||
|
||||
function processRule(node, item, list) {
|
||||
const selectors = node.prelude.children;
|
||||
const declarations = node.block.children;
|
||||
|
||||
list.prevUntil(item.prev, function(prev) {
|
||||
// skip non-ruleset node if safe
|
||||
if (prev.type !== 'Rule') {
|
||||
return unsafeToSkipNode.call(selectors, prev);
|
||||
}
|
||||
|
||||
const prevSelectors = prev.prelude.children;
|
||||
const prevDeclarations = prev.block.children;
|
||||
|
||||
// try to join rulesets with equal pseudo signature
|
||||
if (node.pseudoSignature === prev.pseudoSignature) {
|
||||
// try to join by selectors
|
||||
if (isEqualSelectors(prevSelectors, selectors)) {
|
||||
prevDeclarations.appendList(declarations);
|
||||
list.remove(item);
|
||||
return true;
|
||||
}
|
||||
|
||||
// try to join by declarations
|
||||
if (isEqualDeclarations(declarations, prevDeclarations)) {
|
||||
addSelectors(prevSelectors, selectors);
|
||||
list.remove(item);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// go to prev ruleset if has no selector similarities
|
||||
return hasSimilarSelectors(selectors, prevSelectors);
|
||||
});
|
||||
}
|
||||
|
||||
// NOTE: direction should be left to right, since rulesets merge to left
|
||||
// ruleset. When direction right to left unmerged rulesets may prevent lookup
|
||||
// TODO: remove initial merge
|
||||
export default function initialMergeRule(ast) {
|
||||
walk(ast, {
|
||||
visit: 'Rule',
|
||||
enter: processRule
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user