mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-12 06:06:37 +03:00
Add Svelte-native live mode adapter (#179)
* Fix live preview state for framework components * Complete stateful live preview coverage * Record Svelte manual validation * Fix Svelte live mode adapter * Fix live Steer apply flow * Fix Svelte live variant refresh recovery * Fix live exit bar teardown * Consolidate Svelte live DeepSeek sweep * Reconcile Svelte live browser after main rebase * Fix live accept review regressions * Fix carbonize column-zero indentation * Fix live poll lease expiry flake * Fix Svelte shader preview capture
This commit is contained in:
@@ -21,6 +21,11 @@ import {
|
||||
buildCssAuthoring,
|
||||
buildCssSelectorPrefixExamples,
|
||||
} from './live-wrap.mjs';
|
||||
import {
|
||||
buildSvelteComponentCssAuthoring,
|
||||
scaffoldSvelteComponentInsertSession,
|
||||
shouldUseSvelteComponentInjection,
|
||||
} from './live-svelte-component.mjs';
|
||||
|
||||
const INSERT_POSITIONS = new Set(['before', 'after']);
|
||||
|
||||
@@ -192,6 +197,41 @@ Output (JSON):
|
||||
const styleMode = detectStyleMode(targetFile);
|
||||
const isJsx = commentSyntax.open === '{/*';
|
||||
const spliceIndex = computeInsertLine(startLine, endLine, position);
|
||||
const relTargetFile = path.relative(process.cwd(), targetFile).split(path.sep).join('/');
|
||||
|
||||
if (shouldUseSvelteComponentInjection(targetFile)) {
|
||||
const session = scaffoldSvelteComponentInsertSession({
|
||||
id,
|
||||
count,
|
||||
sourceFile: relTargetFile,
|
||||
insertLine: spliceIndex + 1,
|
||||
position,
|
||||
anchorStartLine: startLine + 1,
|
||||
anchorEndLine: endLine + 1,
|
||||
anchorLines: lines.slice(startLine, endLine + 1),
|
||||
cwd: process.cwd(),
|
||||
});
|
||||
console.log(JSON.stringify({
|
||||
mode: 'insert',
|
||||
position,
|
||||
file: session.manifestFile,
|
||||
sourceFile: relTargetFile,
|
||||
previewMode: 'svelte-component',
|
||||
componentDir: session.componentDir,
|
||||
propContract: session.propContract,
|
||||
insertLine: 1,
|
||||
sourceInsertLine: spliceIndex + 1,
|
||||
anchorStartLine: startLine + 1,
|
||||
anchorEndLine: endLine + 1,
|
||||
commentSyntax,
|
||||
styleMode: 'svelte-component',
|
||||
styleTag: null,
|
||||
cssSelectorPrefixExamples: [],
|
||||
cssAuthoring: buildSvelteComponentCssAuthoring(count),
|
||||
}));
|
||||
return;
|
||||
}
|
||||
|
||||
const indent = lines[spliceIndex]?.match(/^(\s*)/)?.[1]
|
||||
?? lines[startLine]?.match(/^(\s*)/)?.[1]
|
||||
?? '';
|
||||
@@ -216,7 +256,7 @@ Output (JSON):
|
||||
console.log(JSON.stringify({
|
||||
mode: 'insert',
|
||||
position,
|
||||
file: path.relative(process.cwd(), targetFile),
|
||||
file: relTargetFile,
|
||||
insertLine: insertLine + 1,
|
||||
commentSyntax,
|
||||
styleMode: styleMode.mode,
|
||||
|
||||
Reference in New Issue
Block a user