MCPcopy
hub / github.com/midrender/revideo / CodeBlock

Class CodeBlock

packages/2d/src/lib/components/CodeBlock.ts:49–469  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47 */
48@nodeName('CodeBlock')
49export class CodeBlock extends Shape {
50 private static initialized = createComputedAsync(
51 () => ready().then(() => true),
52 false,
53 );
54
55 @initial('tsx')
56 @signal()
57 public declare readonly language: SimpleSignal<string, this>;
58
59 @initial('')
60 @parser(function (this: CodeBlock, value: Code): CodeTree {
61 return typeof value === 'string'
62 ? {
63 language: this.language(),
64 spans: [value],
65 nodes: [],
66 }
67 : value;
68 })
69 @signal()
70 public declare readonly code: Signal<Code, CodeTree, this>;
71
72 @initial(undefined)
73 @signal()
74 public declare readonly theme: Signal<CodeStyle | null, CodeStyle, this>;
75
76 @initial(lines(0, Infinity))
77 @signal()
78 public declare readonly selection: SimpleSignal<CodeRange[], this>;
79
80 protected *tweenSelection(
81 value: CodeRange[],
82 duration: number,
83 timingFunction: TimingFunction,
84 ): ThreadGenerator {
85 this.oldSelection = this.selection();
86 this.selection(value);
87 this.selectionProgress(0);
88 yield* this.selectionProgress(1, duration, timingFunction);
89 this.selectionProgress(null);
90 this.oldSelection = null;
91 }
92
93 @initial(0.32)
94 @signal()
95 public declare readonly unselectedOpacity: SimpleSignal<number, this>;
96
97 private codeProgress = createSignal<number | null>(null);
98 private selectionProgress = createSignal<number | null>(null);
99 private oldSelection: CodeRange[] | null = null;
100 private diffed: MorphToken[] | null = null;
101 private currentLineCount = 0;
102 private newLineCount = 0;
103
104 protected getLineCountOfTokenArray(tokens: Token[]): number {
105 let count = 0;
106

Callers

nothing calls this directly

Calls 8

createComputedAsyncFunction · 0.90
initialFunction · 0.90
signalFunction · 0.90
parserFunction · 0.90
createSignalFunction · 0.90
computedFunction · 0.90
threadableFunction · 0.90
linesFunction · 0.70

Tested by

no test coverage detected