From 93dd6c53f14979ec92144ffb55606ad83eac5af6 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Thu, 8 Feb 2024 15:32:45 -0700 Subject: add function box initial component --- src/scenes/doctor.tsx | 3 +- src/scenes/first_box.tsx | 153 +++++++---------------------------------------- 2 files changed, 22 insertions(+), 134 deletions(-) (limited to 'src/scenes') diff --git a/src/scenes/doctor.tsx b/src/scenes/doctor.tsx index 642b83e..4b6c483 100644 --- a/src/scenes/doctor.tsx +++ b/src/scenes/doctor.tsx @@ -1,10 +1,9 @@ -import { Txt, makeScene2D } from "@motion-canvas/2d"; +import { makeScene2D } from "@motion-canvas/2d"; import { Direction, beginSlide, createRef, slideTransition, - waitFor, } from "@motion-canvas/core"; import { CodeBlock, insert } from "@motion-canvas/2d/lib/components/CodeBlock"; import { theme } from "../theme"; diff --git a/src/scenes/first_box.tsx b/src/scenes/first_box.tsx index 4927157..5508a41 100644 --- a/src/scenes/first_box.tsx +++ b/src/scenes/first_box.tsx @@ -1,156 +1,45 @@ -import { - Img, - Rect, - Node, - Video, - makeScene2D, - Txt, - Line, - LineSegment, -} from "@motion-canvas/2d"; +import { makeScene2D } from "@motion-canvas/2d"; import { Direction, beginSlide, createRef, - map, slideTransition, - tween, all, waitFor, } from "@motion-canvas/core"; -import { CodeBlock } from "@motion-canvas/2d/lib/components/CodeBlock"; -import { theme } from "../theme"; - -const fibonacciFn = (n: number): number => { - if (n <= 2) { - return 1; - } - return fibonacciFn(n - 1) + fibonacciFn(n - 2); -}; +import { FunctionBox } from "../components/function_box"; -const fibonacci = ` -const fibonacci = (n: number): number => { - if (n <= 2) { - return 1; - } - return fibonacci(n - 1) + fibonacci(n - 2); -}; -` - .split("\n") - .filter((x) => x.trim()) - .join("\n"); +const add = `(a: number, b: number) => { + return a + b; +}`; export default makeScene2D(function* (view) { - const block = createRef(); - const node = createRef(); - const rect = createRef(); + const functionBox = createRef(); - const boxMoji = createRef(); - const inSegment = createRef(); - const outSegment = createRef(); - const input = createRef(); - const output = createRef(); + view.add(); - yield* view.add( - <> - - - - - - - 😴 - - - - - - , - ); - - yield boxMoji().position(rect().middle()); yield* slideTransition(Direction.Left); yield* beginSlide("Black Box"); - const padding = 100; - const left = rect().left(); - const right = rect().right(); - yield* all( - inSegment().points([left.addX(-padding), left], 0.5), - outSegment().points([right, right.addX(padding)], 0.5), - ); - yield input().position(left.addX(-padding)); - yield output().position(right); - for (const i of [1, 2, 3]) { - yield* all( - input().opacity(1, 0.5), - input().text(i.toString(), 0.5), - input().position(left.addX(-padding - 20), 0.5), - ); - - yield* beginSlide("Input " + i); + for (const [a, b] of [ + [-1, 2], + [3, 4], + [5, 6], + ] as [number, number][]) { + const inputId = "(" + [a, b].join(",") + ")"; - yield* input().position(left, 0.5); - yield* all(input().opacity(0, 0.2), boxMoji().text("👷‍♀️⚙️", 0.2)); - yield* waitFor(0.5); + yield* all(functionBox().reset(0.25)); + yield* functionBox().setInputs([{ val: a }, { val: b }], 0.5); - const result = fibonacciFn(i); - yield* all( - output().opacity(1, 0.5), - output().text(result.toString(), 0.5), - output().position(right, 0.5), - ); + yield* beginSlide("Add Inputs " + inputId); - yield* all(boxMoji().text("😴", 0.2)); + yield* functionBox().propogateInput(0.5); + yield* waitFor(0.3); + yield* functionBox().propogateOutput(0.5); - yield* beginSlide("Output " + i); + yield* beginSlide("Propogate Outputs of " + inputId); + yield* beginSlide("Propogate Outputs of 1" + inputId); } - - yield* all( - boxMoji().opacity(0, 0.2), - block().fontSize(30, 1), - node().opacity(1, 1), - ); - - yield* beginSlide("Revealing"); }); -- cgit v1.2.3-70-g09d2