From e2b56397bff22f8f7bc3ca9adbe1c02e7eadfc31 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Thu, 19 Dec 2024 08:47:51 +0700 Subject: [PATCH 01/28] Update README.md for 3d svg --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 96017bd..25cddb2 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ npm install circuit-to-svg ## Usage ```typescript -import { convertCircuitJsonToSchematicSvg, convertCircuitJsonToPcbSvg } from 'circuit-to-svg'; +import { convertCircuitJsonToSchematicSvg, convertCircuitJsonToPcbSvg, convertCircuitJsonTo3dSvg } from 'circuit-to-svg'; // For schematic circuits const schematicCircuitJson = [...]; // Your schematic circuit description @@ -38,6 +38,9 @@ const schematicSvg = convertCircuitJsonToSchematicSvg(schematicCircuitJson); // For PCB layouts const pcbCircuitJson = [...]; // Your PCB layout description const pcbSvg = convertCircuitJsonToPcbSvg(pcbCircuitJson); + +// For 3D graphic +const pcb3dSvg = convertCircuitJsonTo3dSvg(pcbCircuitJson); ``` ## API @@ -50,6 +53,10 @@ Converts a schematic circuit description to an SVG string. Converts a PCB layout description to an SVG string. +### `convertCircuitJsonTo3dSvg(circuitJson: AnyCircuitElement[]): string` + +Converts a PCB layout description to SVG string of the 3D image. By default it will be rendered in topdown view. + ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. From eaf17f5656fc290f838929feed09c14c495c3c5b Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 21 Dec 2024 14:52:30 +0700 Subject: [PATCH 02/28] =?UTF-8?q?first=20attempt=20using=20a=20hack=20but?= =?UTF-8?q?=20it's=20futile=20=F0=9F=98=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 292326 -> 350487 bytes .../convert-circuit-json-to-schematic-svg.tsx | 44 ++++++++++++++++++ lib/index.ts | 1 + package.json | 2 + .../schematic-resistor-capacitor.stories.tsx | 4 +- tsconfig.json | 4 +- 6 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 lib/3d/convert-circuit-json-to-schematic-svg.tsx diff --git a/bun.lockb b/bun.lockb index b27798e04438a6a4e738cfcc83e1b3fe1914d2b8..2e1db6dda5aaa6be217dd8ca6b14ca226041d65e 100755 GIT binary patch delta 90853 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 Xu(DJj&ynolqLWOoaC~3o=34&;8Q)9? diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx new file mode 100644 index 0000000..1274307 --- /dev/null +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -0,0 +1,44 @@ +import type { AnySoupElement } from "@tscircuit/soup" +import { CadViewer } from "@tscircuit/3d-viewer" +import { SVGRenderer } from "three-stdlib" +import { events, extend, createRoot, useThree, type Camera } from "@react-three/fiber" +import * as THREE from "three" + +interface Options { + width?: number + height?: number + camera: Camera +} + +// NOTE: this is not React component +export function convertCircuitJsonTo3dSvg( + soup: AnySoupElement[], + { width = 1200, height = 600, camera = { + position: [0, 0, 50], + } } = {} as Options, +): string { + extend({ + ...THREE, + Canvas: function(props: Record) { + console.log(props, props?.children) // but it got undefined, undefined + // return root + }, + Div: function() { return document.createElement("div") }, + }) + + const gl = new SVGRenderer() + gl.setSize(width, height) + + const Internal = () => { + const { scene, camera } = useThree() + gl.render(scene, camera) + return <> + } + const container = document.createElement("template") // @ts-ignore see https://github.com/pmndrs/react-three-fiber/blob/3acb4b041354e8084e7833c9254326ef6282cb5c/example/src/demos/SVGRenderer.tsx#L54 + const root = createRoot(container) + // @ts-ignore see https://r3f.docs.pmnd.rs/api/canvas#createroot + root.configure({ events, camera, size: { width, height }, gl }) + root.render() + setTimeout(() => console.log(container.outerHTML), 1000) + return gl.domElement.outerHTML +} diff --git a/lib/index.ts b/lib/index.ts index 2e355eb..84bfbb8 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,3 +1,4 @@ export * from "./pcb/convert-circuit-json-to-pcb-svg" export * from "./assembly/convert-circuit-json-to-assembly-svg" export * from "./sch/convert-circuit-json-to-schematic-svg" +export * from "./3d/convert-circuit-json-to-schematic-svg" diff --git a/package.json b/package.json index 6da9317..e9b4fc3 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "biome": "^0.3.3", "bun-match-svg": "^0.0.6", "circuit-json": "^0.0.111", + "circuit-to-svg": ".", "esbuild": "^0.20.2", "performance-now": "^2.1.0", "react": "^18.3.1", @@ -48,6 +49,7 @@ "schematic-symbols": "*" }, "dependencies": { + "@tscircuit/3d-viewer": "^0.0.59", "@tscircuit/footprinter": "^0.0.91", "@tscircuit/routing": "^1.3.5", "@tscircuit/soup-util": "^0.0.41", diff --git a/stories/schematic/schematic-resistor-capacitor.stories.tsx b/stories/schematic/schematic-resistor-capacitor.stories.tsx index 46879d4..d9ebb8a 100644 --- a/stories/schematic/schematic-resistor-capacitor.stories.tsx +++ b/stories/schematic/schematic-resistor-capacitor.stories.tsx @@ -1,4 +1,4 @@ -import { convertCircuitJsonToSchematicSvg } from "../../lib/index.js" +import { convertCircuitJsonToSchematicSvg, convertCircuitJsonToPcbSvg, convertCircuitJsonToAssemblySvg, convertCircuitJsonTo3dSvg } from "../../lib/index.js" const soup: any = [ { @@ -784,7 +784,7 @@ const soup: any = [ ] export const ResistorCapacitorSch = () => { - const result = convertCircuitJsonToSchematicSvg(soup) + const result = convertCircuitJsonTo3dSvg(soup) return
} diff --git a/tsconfig.json b/tsconfig.json index 8c5058c..aeab0ba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,8 +24,8 @@ "module": "preserve", "noEmit": true, "lib": [ - "es2022" - // "dom" + "es2022", + "dom" ] } } From f1d091244be34dc81bde2d9fdab57bfe6c7c4e00 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 21 Dec 2024 15:20:25 +0700 Subject: [PATCH 03/28] `bun add github:tscircuit/3d-viewer` (starting second attempt) --- bun.lockb | Bin 350487 -> 353603 bytes package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 2e1db6dda5aaa6be217dd8ca6b14ca226041d65e..279b5c602983d39a8883ffd3adee5c0b603de12b 100755 GIT binary patch delta 59816 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

;TV=?AJ6KKl`6}57ONZCgv^o3!Q@z` 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 Date: Sat, 21 Dec 2024 18:41:33 +0700 Subject: [PATCH 04/28] `cp ./node_modules/@tscircuit/3d-viewer/src/hooks/use-stls-from-geom.ts ./lib/3d/svg-object-fns/` --- lib/3d/svg-object-fns/use-stls-from-geom.ts | 55 +++++++++++++++++++++ lib/module.d.ts | 3 ++ 2 files changed, 58 insertions(+) create mode 100644 lib/3d/svg-object-fns/use-stls-from-geom.ts create mode 100644 lib/module.d.ts diff --git a/lib/3d/svg-object-fns/use-stls-from-geom.ts b/lib/3d/svg-object-fns/use-stls-from-geom.ts new file mode 100644 index 0000000..ae5f06c --- /dev/null +++ b/lib/3d/svg-object-fns/use-stls-from-geom.ts @@ -0,0 +1,55 @@ +import { useState, useEffect } from "react" +import stlSerializer from "@jscad/stl-serializer" +import { Geom3 } from "@jscad/modeling/src/geometries/types" + +function blobToBase64Url(blob: Blob): Promise { + return new Promise((resolve, reject) => { + const reader = new FileReader() + reader.onload = () => { + resolve(reader.result as string) + } + reader.onerror = reject + reader.readAsDataURL(blob) + }) +} + +type StlObj = { stlUrl: string; color: number[] } + +export const useStlsFromGeom = ( + geom: Geom3[] | Geom3 | null, +): { + stls: StlObj[] + loading: boolean +} => { + const [stls, setStls] = useState([]) + const [loading, setLoading] = useState(true) + + useEffect(() => { + if (!geom) return + const generateStls = async () => { + setLoading(true) + const geometries = Array.isArray(geom) ? geom : [geom] + + const stlPromises = geometries.map(async (g) => { + const rawData = stlSerializer.serialize({ binary: true }, [g]) + const blobData = new Blob(rawData) + const stlUrl = await blobToBase64Url(blobData) + return { stlUrl, color: g.color! } + }) + + try { + const generatedStls = await Promise.all(stlPromises) + setStls(generatedStls) + } catch (error) { + console.error("Error generating STLs:", error) + setStls([]) + } finally { + setLoading(false) + } + } + + generateStls() + }, [geom]) + + return { stls, loading } +} diff --git a/lib/module.d.ts b/lib/module.d.ts new file mode 100644 index 0000000..84075e3 --- /dev/null +++ b/lib/module.d.ts @@ -0,0 +1,3 @@ +declare module "@jscad/stl-serializer" { + export function serialize(options: any, objects: any[]): any[] +} From e0b6f2c570b38b42e610790be1324a06cf07659f Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 21 Dec 2024 18:50:22 +0700 Subject: [PATCH 05/28] refactor copied hooks --- lib/3d/svg-object-fns/use-stls-from-geom.ts | 57 ++++++++------------- 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/lib/3d/svg-object-fns/use-stls-from-geom.ts b/lib/3d/svg-object-fns/use-stls-from-geom.ts index ae5f06c..9aa1911 100644 --- a/lib/3d/svg-object-fns/use-stls-from-geom.ts +++ b/lib/3d/svg-object-fns/use-stls-from-geom.ts @@ -1,6 +1,5 @@ -import { useState, useEffect } from "react" import stlSerializer from "@jscad/stl-serializer" -import { Geom3 } from "@jscad/modeling/src/geometries/types" +import type { Geom3 } from "@jscad/modeling/src/geometries/types" function blobToBase64Url(blob: Blob): Promise { return new Promise((resolve, reject) => { @@ -15,41 +14,27 @@ function blobToBase64Url(blob: Blob): Promise { type StlObj = { stlUrl: string; color: number[] } -export const useStlsFromGeom = ( - geom: Geom3[] | Geom3 | null, -): { - stls: StlObj[] - loading: boolean -} => { - const [stls, setStls] = useState([]) - const [loading, setLoading] = useState(true) - - useEffect(() => { - if (!geom) return - const generateStls = async () => { - setLoading(true) - const geometries = Array.isArray(geom) ? geom : [geom] - - const stlPromises = geometries.map(async (g) => { - const rawData = stlSerializer.serialize({ binary: true }, [g]) - const blobData = new Blob(rawData) - const stlUrl = await blobToBase64Url(blobData) - return { stlUrl, color: g.color! } - }) - - try { - const generatedStls = await Promise.all(stlPromises) - setStls(generatedStls) - } catch (error) { - console.error("Error generating STLs:", error) - setStls([]) - } finally { - setLoading(false) - } +export const useStlsFromGeom = (geom: Geom3[] | Geom3): StlObj[] => { + let stls: StlObj[] = [] + + const generateStls = async () => { + const geometries = Array.isArray(geom) ? geom : [geom] + + const stlPromises = geometries.map(async (g) => { + const rawData = stlSerializer.serialize({ binary: true }, [g]) + const blobData = new Blob(rawData) + const stlUrl = await blobToBase64Url(blobData) + return { stlUrl, color: g.color! } + }) + + try { + stls = await Promise.all(stlPromises) + } catch (error) { + console.error("Error generating STLs:", error) } + } - generateStls() - }, [geom]) + generateStls() - return { stls, loading } + return stls } From 776d6ef1bc1675e2f695ad51e97dbb25b762312d Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 21 Dec 2024 18:52:13 +0700 Subject: [PATCH 06/28] `mv ./lib/3d/svg-object-fns/{use,create}-stls-from-geom.ts` --- .../{use-stls-from-geom.ts => create-stls-from-geom.ts} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename lib/3d/svg-object-fns/{use-stls-from-geom.ts => create-stls-from-geom.ts} (93%) diff --git a/lib/3d/svg-object-fns/use-stls-from-geom.ts b/lib/3d/svg-object-fns/create-stls-from-geom.ts similarity index 93% rename from lib/3d/svg-object-fns/use-stls-from-geom.ts rename to lib/3d/svg-object-fns/create-stls-from-geom.ts index 9aa1911..fbae6cc 100644 --- a/lib/3d/svg-object-fns/use-stls-from-geom.ts +++ b/lib/3d/svg-object-fns/create-stls-from-geom.ts @@ -14,7 +14,7 @@ function blobToBase64Url(blob: Blob): Promise { type StlObj = { stlUrl: string; color: number[] } -export const useStlsFromGeom = (geom: Geom3[] | Geom3): StlObj[] => { +export const createStlsFromGeom = (geom: Geom3[] | Geom3): StlObj[] => { let stls: StlObj[] = [] const generateStls = async () => { From af71a7a5fc739b97f6d89138ea1f0accf62ce752 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Thu, 26 Dec 2024 00:10:21 +0700 Subject: [PATCH 07/28] refactor convertCircuitJsonTo3dSvg() --- .../convert-circuit-json-to-schematic-svg.tsx | 87 ++++++++++++------- 1 file changed, 58 insertions(+), 29 deletions(-) diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 1274307..412bfc3 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -1,44 +1,73 @@ import type { AnySoupElement } from "@tscircuit/soup" -import { CadViewer } from "@tscircuit/3d-viewer" +import type { AnyCircuitElement } from "circuit-json" +import { createBoardGeomFromSoup } from "@tscircuit/3d-viewer/src/soup-to-3d" +import { STLModel } from "@tscircuit/3d-viewer/src/three-components/STLModel" +import { AnyCadComponent } from "@tscircuit/3d-viewer/src/AnyCadComponent" +import { su } from "@tscircuit/soup-util" +import { createStlsFromGeom } from "./svg-object-fns/create-stls-from-geom" import { SVGRenderer } from "three-stdlib" -import { events, extend, createRoot, useThree, type Camera } from "@react-three/fiber" +import { extend, createRoot, advance, flushSync } from "@react-three/fiber" +import { Grid } from "@react-three/drei" import * as THREE from "three" interface Options { width?: number height?: number - camera: Camera } -// NOTE: this is not React component export function convertCircuitJsonTo3dSvg( - soup: AnySoupElement[], - { width = 1200, height = 600, camera = { - position: [0, 0, 50], - } } = {} as Options, + soup: AnyCircuitElement[], + { width = 1200, height = 600 } = {} as Options, ): string { - extend({ - ...THREE, - Canvas: function(props: Record) { - console.log(props, props?.children) // but it got undefined, undefined - // return root - }, - Div: function() { return document.createElement("div") }, - }) + extend(THREE) + const boardGeom = createBoardGeomFromSoup(soup as AnySoupElement[]) + const boardStls = createStlsFromGeom(boardGeom) + const cad_components = su(soup).cad_component.list() const gl = new SVGRenderer() - gl.setSize(width, height) - - const Internal = () => { - const { scene, camera } = useThree() - gl.render(scene, camera) - return <> - } - const container = document.createElement("template") // @ts-ignore see https://github.com/pmndrs/react-three-fiber/blob/3acb4b041354e8084e7833c9254326ef6282cb5c/example/src/demos/SVGRenderer.tsx#L54 - const root = createRoot(container) - // @ts-ignore see https://r3f.docs.pmnd.rs/api/canvas#createroot - root.configure({ events, camera, size: { width, height }, gl }) - root.render() - setTimeout(() => console.log(container.outerHTML), 1000) + + // @ts-expect-error should be fine. see https://github.com/pmndrs/react-three-fiber/blob/3acb4b041354e8084e7833c9254326ef6282cb5c/example/src/demos/SVGRenderer.tsx#L54 + const root = createRoot({}) + .configure({ + gl, frameloop: "never", + scene: { up: [0, 0, 1] }, + camera: { position: [0, 0, 50], up: [0, 0, 1] }, + size: { width, height, top: 0, left: 0 }, + }) + + // ensure DOM updated immediately + flushSync(() => root.render(<> + + + + {boardStls.map(({ stlUrl, color }, index) => ( + + ))} + {cad_components.map((cad_component) => ( + + ))} + )) + advance(0) // manual rAF cuz `frameloop: "never"` + return gl.domElement.outerHTML } + + + From 5a399fc69306e5914c6a44df1c0c46fbcfe2cab3 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Thu, 9 Jan 2025 10:36:51 +0700 Subject: [PATCH 08/28] `cp ./node_modules/@tscircuit/3d-viewer/three-components/STLModel.tsx ./lib/3d/components/` --- lib/3d/components/STLModel.tsx | 33 +++++++++++++++++++ .../convert-circuit-json-to-schematic-svg.tsx | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 lib/3d/components/STLModel.tsx diff --git a/lib/3d/components/STLModel.tsx b/lib/3d/components/STLModel.tsx new file mode 100644 index 0000000..9363ab5 --- /dev/null +++ b/lib/3d/components/STLModel.tsx @@ -0,0 +1,33 @@ +import { useLoader } from "@react-three/fiber" +import { useRef } from "react" +import * as THREE from "three" +import { MTLLoader, OBJLoader, STLLoader } from "three-stdlib" + +export function STLModel({ + stlUrl, + mtlUrl, + color, + opacity = 1, +}: { + stlUrl: string + color?: any + mtlUrl?: string + opacity?: number +}) { + const geom = useLoader(STLLoader, stlUrl) + const mesh = useRef() + + // TODO handle mtl url + + return ( + + + + {/* */} + + ) +} diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 412bfc3..9317ab4 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -1,7 +1,7 @@ import type { AnySoupElement } from "@tscircuit/soup" import type { AnyCircuitElement } from "circuit-json" import { createBoardGeomFromSoup } from "@tscircuit/3d-viewer/src/soup-to-3d" -import { STLModel } from "@tscircuit/3d-viewer/src/three-components/STLModel" +import { STLModel } from "./components/STLModel" import { AnyCadComponent } from "@tscircuit/3d-viewer/src/AnyCadComponent" import { su } from "@tscircuit/soup-util" import { createStlsFromGeom } from "./svg-object-fns/create-stls-from-geom" From adc0e6edcb96d7edefa3a03df13096040058a7b4 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 12 Jan 2025 01:52:24 +0700 Subject: [PATCH 09/28] fix(STL): render ArrayBuffer[] instead of url string this fix missing green fr4 --- lib/3d/components/STLModel.tsx | 17 +++--- .../convert-circuit-json-to-schematic-svg.tsx | 9 ++-- .../svg-object-fns/create-stls-from-geom.ts | 54 +++++++++---------- lib/module.d.ts | 5 +- 4 files changed, 41 insertions(+), 44 deletions(-) diff --git a/lib/3d/components/STLModel.tsx b/lib/3d/components/STLModel.tsx index 9363ab5..6bb4b4d 100644 --- a/lib/3d/components/STLModel.tsx +++ b/lib/3d/components/STLModel.tsx @@ -1,23 +1,24 @@ -import { useLoader } from "@react-three/fiber" import { useRef } from "react" import * as THREE from "three" -import { MTLLoader, OBJLoader, STLLoader } from "three-stdlib" +import { STLLoader } from "three-stdlib" + +const stlLoader = new STLLoader() export function STLModel({ - stlUrl, - mtlUrl, + stlData, + mtlData, color, opacity = 1, }: { - stlUrl: string + stlData: ArrayBuffer color?: any - mtlUrl?: string + mtlData?: ArrayBuffer opacity?: number }) { - const geom = useLoader(STLLoader, stlUrl) + const geom = stlLoader.parse(stlData) const mesh = useRef() - // TODO handle mtl url + // TODO load MTL return ( diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 9317ab4..953c83e 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -49,10 +49,10 @@ export function convertCircuitJsonTo3dSvg( cellSize={1} sectionSize={10} /> - {boardStls.map(({ stlUrl, color }, index) => ( + {boardStls.map(({ hash, stlData, color }, index) => ( @@ -68,6 +68,3 @@ export function convertCircuitJsonTo3dSvg( return gl.domElement.outerHTML } - - - diff --git a/lib/3d/svg-object-fns/create-stls-from-geom.ts b/lib/3d/svg-object-fns/create-stls-from-geom.ts index fbae6cc..5f081ca 100644 --- a/lib/3d/svg-object-fns/create-stls-from-geom.ts +++ b/lib/3d/svg-object-fns/create-stls-from-geom.ts @@ -1,40 +1,36 @@ import stlSerializer from "@jscad/stl-serializer" import type { Geom3 } from "@jscad/modeling/src/geometries/types" -function blobToBase64Url(blob: Blob): Promise { - return new Promise((resolve, reject) => { - const reader = new FileReader() - reader.onload = () => { - resolve(reader.result as string) - } - reader.onerror = reject - reader.readAsDataURL(blob) - }) -} - -type StlObj = { stlUrl: string; color: number[] } +type StlObj = { hash: string; stlData: ArrayBuffer; color: number[] } export const createStlsFromGeom = (geom: Geom3[] | Geom3): StlObj[] => { - let stls: StlObj[] = [] + const geometries = Array.isArray(geom) ? geom : [geom] - const generateStls = async () => { - const geometries = Array.isArray(geom) ? geom : [geom] + const stls = geometries.map((g) => { + const rawData = stlSerializer.serialize({ binary: true }, [g]) + const stlData = join(rawData) + return { hash: hash(stlData), stlData, color: g.color! } + }) - const stlPromises = geometries.map(async (g) => { - const rawData = stlSerializer.serialize({ binary: true }, [g]) - const blobData = new Blob(rawData) - const stlUrl = await blobToBase64Url(blobData) - return { stlUrl, color: g.color! } - }) + return stls +} - try { - stls = await Promise.all(stlPromises) - } catch (error) { - console.error("Error generating STLs:", error) - } +function join(buffers: ArrayBuffer[]) { + const totalLength = buffers.reduce((sum, b) => sum + b.byteLength, 0) + const result = new Uint8Array(totalLength) + let offset = 0 + for (const buffer of buffers) { + result.set(new Uint8Array(buffer), offset) + offset += buffer.byteLength } + return result.buffer +} - generateStls() - - return stls +function hash(buffer: ArrayBuffer) { + const view = new Uint8Array(buffer) + let hash = 0 + for (let i = 0; i < view.length; i++) { + hash = (hash * 31 + view[i]!) >>> 0 + } + return hash.toString(16) } diff --git a/lib/module.d.ts b/lib/module.d.ts index 84075e3..6f3e51c 100644 --- a/lib/module.d.ts +++ b/lib/module.d.ts @@ -1,3 +1,6 @@ declare module "@jscad/stl-serializer" { - export function serialize(options: any, objects: any[]): any[] + export function serialize( + options: { binary: true }, + objects: any[], + ): ArrayBuffer[] } From 74d75cc53c53555ba59475e761efe52cee05a8ae Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 12 Jan 2025 01:56:43 +0700 Subject: [PATCH 10/28] zoom based on average board size --- lib/3d/convert-circuit-json-to-schematic-svg.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 953c83e..86c5fcf 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -24,14 +24,17 @@ export function convertCircuitJsonTo3dSvg( const boardStls = createStlsFromGeom(boardGeom) const cad_components = su(soup).cad_component.list() + const boards = soup.filter(e => e.type === "pcb_board") + const dimensions = boards.flatMap((b) => [b.width, b.height]) + const zoom = dimensions.reduce((prev, val) => prev + val, 0) / dimensions.length + const gl = new SVGRenderer() // @ts-expect-error should be fine. see https://github.com/pmndrs/react-three-fiber/blob/3acb4b041354e8084e7833c9254326ef6282cb5c/example/src/demos/SVGRenderer.tsx#L54 const root = createRoot({}) .configure({ gl, frameloop: "never", - scene: { up: [0, 0, 1] }, - camera: { position: [0, 0, 50], up: [0, 0, 1] }, + camera: { position: [0, 0, zoom] }, size: { width, height, top: 0, left: 0 }, }) From 8d15d2542291e5be5bfd1f0a9bc8cd9b2d039d79 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 12 Jan 2025 02:07:16 +0700 Subject: [PATCH 11/28] add story for convertCircuitJsonTo3dSvg() --- stories/3d/resistor-capacitor.stories.tsx | 42 +++++++++++++++++++ stories/pcb/net-label-not-overlap.stories.tsx | 6 +-- .../schematic-resistor-capacitor.stories.tsx | 4 +- 3 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 stories/3d/resistor-capacitor.stories.tsx diff --git a/stories/3d/resistor-capacitor.stories.tsx b/stories/3d/resistor-capacitor.stories.tsx new file mode 100644 index 0000000..f284bfb --- /dev/null +++ b/stories/3d/resistor-capacitor.stories.tsx @@ -0,0 +1,42 @@ +import { convertCircuitJsonTo3dSvg } from "../../lib/index.js" +import { Circuit } from "@tscircuit/core" + +const createCircuit = () => { + const circuit = new Circuit() + + circuit.add( + + + + ) + + return circuit.getCircuitJson() +} + +export const ResistorCapacitorPcb = () => { + const result = convertCircuitJsonTo3dSvg(createCircuit()) + + return

+} + +export default { + title: "", + component: ResistorCapacitorPcb +} diff --git a/stories/pcb/net-label-not-overlap.stories.tsx b/stories/pcb/net-label-not-overlap.stories.tsx index 3d6f26b..cd3ebf4 100644 --- a/stories/pcb/net-label-not-overlap.stories.tsx +++ b/stories/pcb/net-label-not-overlap.stories.tsx @@ -1,8 +1,4 @@ -import React, { useEffect, useState } from "react" -import { - circuitJsonToSchematicSvg, - convertCircuitJsonToPcbSvg, -} from "../../lib/index.js" +import { convertCircuitJsonToPcbSvg } from "../../lib/index.js" const soup: any = [ { diff --git a/stories/schematic/schematic-resistor-capacitor.stories.tsx b/stories/schematic/schematic-resistor-capacitor.stories.tsx index d9ebb8a..46879d4 100644 --- a/stories/schematic/schematic-resistor-capacitor.stories.tsx +++ b/stories/schematic/schematic-resistor-capacitor.stories.tsx @@ -1,4 +1,4 @@ -import { convertCircuitJsonToSchematicSvg, convertCircuitJsonToPcbSvg, convertCircuitJsonToAssemblySvg, convertCircuitJsonTo3dSvg } from "../../lib/index.js" +import { convertCircuitJsonToSchematicSvg } from "../../lib/index.js" const soup: any = [ { @@ -784,7 +784,7 @@ const soup: any = [ ] export const ResistorCapacitorSch = () => { - const result = convertCircuitJsonTo3dSvg(soup) + const result = convertCircuitJsonToSchematicSvg(soup) return
} From 5383b59f53cfb2fa47644cf7bfa73e895bd9cecf Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 12 Jan 2025 02:08:05 +0700 Subject: [PATCH 12/28] fix storybook error --- vite.config.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index bda0d56..bb2635e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,28 @@ import { defineConfig } from "vite" +import react from "@vitejs/plugin-react" import tsconfigPaths from "vite-tsconfig-paths" +import { resolve } from "node:path" export default defineConfig({ - plugins: [tsconfigPaths()], + // needed because most component in @tscircuit/3d-viewer doesn't use relative path for import statement + resolve: { alias: { "src/": "@tscircuit/3d-viewer/src/" } }, + + plugins: [react(), tsconfigPaths()], // transform react component in @tscircuit/3d-viewer + + // manually transform commonjs into esm (storybook/vite quirk) + optimizeDeps: { + esbuildOptions: { + target: "esnext", + format: "esm", + }, + include: [ + "jscad-fiber", + "jscad-planner", + "jscad-electronics", + "@jscad/modeling", + "@jscad/regl-renderer", + "@jscad/array-utils", + "@jscad/stl-serializer", + ], + }, }) From d9a2c592bbde3c9347b13224cf41bb4aeaf578ec Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Mon, 13 Jan 2025 12:03:03 +0700 Subject: [PATCH 13/28] add bun test for convertCircuitJsonTo3dSvg() --- bunfig.toml | 2 +- package.json | 1 + tests/3d/resistor-capacitor.test.tsx | 37 ++++++++++++++++++++++++++++ tests/polyfill.ts | 2 ++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 tests/3d/resistor-capacitor.test.tsx create mode 100644 tests/polyfill.ts diff --git a/bunfig.toml b/bunfig.toml index 25b636f..7f70de5 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -1,2 +1,2 @@ [test] -preload = ["./tests/fixtures/preload.ts"] \ No newline at end of file +preload = ["./tests/polyfill.ts", "./tests/fixtures/preload.ts"] diff --git a/package.json b/package.json index 4e85928..904ecc7 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@storybook/react": "^8.2.5", "@storybook/react-vite": "^8.2.5", "@storybook/test": "^8.2.5", + "@happy-dom/global-registrator": "^16.5.3", "@tscircuit/core": "^0.0.229", "@tscircuit/plop": "^0.0.10", "@types/bun": "^1.1.9", diff --git a/tests/3d/resistor-capacitor.test.tsx b/tests/3d/resistor-capacitor.test.tsx new file mode 100644 index 0000000..76d18d9 --- /dev/null +++ b/tests/3d/resistor-capacitor.test.tsx @@ -0,0 +1,37 @@ +import { expect, test } from "bun:test" +import { convertCircuitJsonTo3dSvg } from "lib" +import { getTestFixture } from "tests/fixtures/get-test-fixture" + + +const Components = ({ id = "", layer = "top" as "top" | "bottom" } = {}) => <> + + + + +test("simple resistor-capactior without trace", () => { + const { circuit } = getTestFixture() + + circuit.add( + + ) + + const svg = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) + expect(svg).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-without-trace") +}) + +test("simple resistor-capactior with trace", () => { + const { circuit } = getTestFixture() + + circuit.add( + + + ) + + const svg = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) + expect(svg).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-with-trace") +}) + + +}) diff --git a/tests/polyfill.ts b/tests/polyfill.ts new file mode 100644 index 0000000..c50bf8d --- /dev/null +++ b/tests/polyfill.ts @@ -0,0 +1,2 @@ +import { GlobalRegistrator } from "@happy-dom/global-registrator" +GlobalRegistrator.register() From 7f00494b6c5ce19b6569c36c6bfad457e9b2cd7d Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Wed, 15 Jan 2025 03:07:56 +0700 Subject: [PATCH 14/28] fix bun test by patching some npm dependencies --- package.json | 4 + patches/@react-three%2Ffiber@8.17.10.patch | 12 +++ patches/three-stdlib@2.35.2.patch | 79 +++++++++++++++++++ ...ple-resistor-capacitor-with-trace.snap.svg | 1 + ...-resistor-capacitor-without-trace.snap.svg | 1 + 5 files changed, 97 insertions(+) create mode 100644 patches/@react-three%2Ffiber@8.17.10.patch create mode 100644 patches/three-stdlib@2.35.2.patch create mode 100644 tests/3d/__snapshots__/simple-resistor-capacitor-with-trace.snap.svg create mode 100644 tests/3d/__snapshots__/simple-resistor-capacitor-without-trace.snap.svg diff --git a/package.json b/package.json index 904ecc7..9b919b8 100644 --- a/package.json +++ b/package.json @@ -57,5 +57,9 @@ "@types/node": "^22.5.5", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" + }, + "patchedDependencies": { + "three-stdlib@2.35.2": "patches/three-stdlib@2.35.2.patch", + "@react-three/fiber@8.17.10": "patches/@react-three%2Ffiber@8.17.10.patch" } } diff --git a/patches/@react-three%2Ffiber@8.17.10.patch b/patches/@react-three%2Ffiber@8.17.10.patch new file mode 100644 index 0000000..cc99b8c --- /dev/null +++ b/patches/@react-three%2Ffiber@8.17.10.patch @@ -0,0 +1,12 @@ +diff --git a/package.json b/package.json +index 25330f55a53ea507636022459695664fb9f4bd45..859f0946f4abb3a01d3746e2896b9522278553bc 100644 +--- a/package.json ++++ b/package.json +@@ -27,7 +27,6 @@ + "type": "opencollective", + "url": "https://opencollective.com/react-three-fiber" + }, +- "main": "dist/react-three-fiber.cjs.js", + "module": "dist/react-three-fiber.esm.js", + "types": "dist/react-three-fiber.cjs.d.ts", + "react-native": "native/dist/react-three-fiber-native.cjs.js", diff --git a/patches/three-stdlib@2.35.2.patch b/patches/three-stdlib@2.35.2.patch new file mode 100644 index 0000000..b6206e2 --- /dev/null +++ b/patches/three-stdlib@2.35.2.patch @@ -0,0 +1,79 @@ +diff --git a/index.cjs b/index.cjs +index 547f85cd7080b51b26bc2bb3a487ff4ef9a85f5d..88bb86d246f415594dded65007c03f986903f0ea 100644 +--- a/index.cjs ++++ b/index.cjs +@@ -204,7 +204,6 @@ const KMZLoader = require("./loaders/KMZLoader.cjs"); + const VRMLoader = require("./loaders/VRMLoader.cjs"); + const VRMLLoader = require("./loaders/VRMLLoader.cjs"); + const KTX2Loader = require("./loaders/KTX2Loader.cjs"); +-const LottieLoader = require("./loaders/LottieLoader.cjs"); + const TTFLoader = require("./loaders/TTFLoader.cjs"); + const RGBELoader = require("./loaders/RGBELoader.cjs"); + const AssimpLoader = require("./loaders/AssimpLoader.cjs"); +@@ -530,7 +529,6 @@ exports.KMZLoader = KMZLoader.KMZLoader; + exports.VRMLoader = VRMLoader.VRMLoader; + exports.VRMLLoader = VRMLLoader.VRMLLoader; + exports.KTX2Loader = KTX2Loader.KTX2Loader; +-exports.LottieLoader = LottieLoader.LottieLoader; + exports.TTFLoader = TTFLoader.TTFLoader; + exports.RGBELoader = RGBELoader.RGBELoader; + exports.AssimpLoader = AssimpLoader.AssimpLoader; +diff --git a/index.d.ts b/index.d.ts +index 9b30bc6f5f142f309e862c7f5eb80c3e640238b1..edc669e4e401b49f36e6aa399882df273f0cd717 100644 +--- a/index.d.ts ++++ b/index.d.ts +@@ -203,7 +203,6 @@ export * from './loaders/KMZLoader'; + export * from './loaders/VRMLoader'; + export * from './loaders/VRMLLoader'; + export * from './loaders/KTX2Loader'; +-export * from './loaders/LottieLoader'; + export * from './loaders/TTFLoader'; + export * from './loaders/RGBELoader'; + export * from './loaders/AssimpLoader'; +diff --git a/index.js b/index.js +index a457f0619459b0bc0076b2dfd56c5040cff3a063..8ec63e031281b1f226000a5719d1fe1ff454b256 100644 +--- a/index.js ++++ b/index.js +@@ -202,7 +202,6 @@ import { KMZLoader } from "./loaders/KMZLoader.js"; + import { VRMLoader } from "./loaders/VRMLoader.js"; + import { VRMLLoader } from "./loaders/VRMLLoader.js"; + import { KTX2Loader } from "./loaders/KTX2Loader.js"; +-import { LottieLoader } from "./loaders/LottieLoader.js"; + import { TTFLoader } from "./loaders/TTFLoader.js"; + import { RGBELoader } from "./loaders/RGBELoader.js"; + import { AssimpLoader } from "./loaders/AssimpLoader.js"; +@@ -401,7 +400,6 @@ export { + LineMaterial, + LineSegments2, + LineSegmentsGeometry, +- LottieLoader, + LuminosityHighPassShader, + LuminosityShader, + Lut, +diff --git a/libs/lottie.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs +deleted file mode 100644 +index 7d8aefea8e7830ebaef2d3f9ea5f48d30e9e0852..0000000000000000000000000000000000000000 +diff --git a/libs/lottie.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs.map +deleted file mode 100644 +index 12de44a8d95d72d5b155a21b3b716c8162772499..0000000000000000000000000000000000000000 +diff --git a/libs/lottie.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js +deleted file mode 100644 +index 9ade8c1378595d3d06077fd9f701ed8a5837f0b3..0000000000000000000000000000000000000000 +diff --git a/libs/lottie.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js.map +deleted file mode 100644 +index 0ea7ed76e0831e22f21b051d42c4fd1a842fbded..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs +deleted file mode 100644 +index 41b1339e75c0ae4fb08e22580e9bf951f301bd06..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs.map +deleted file mode 100644 +index 083b3ee89eeb470fbffb943fddddeffc1032ff89..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.d.ts b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.d.ts +deleted file mode 100644 +index 951cd679fff328cb4240544a312048d7fc730b4f..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js +deleted file mode 100644 +index 20cfe9afedc3d2a0e28e842dd08c6a18e3d2840b..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js.map +deleted file mode 100644 +index 2e878490e0404e12ac604f54b07b85402b37a1d5..0000000000000000000000000000000000000000 diff --git a/tests/3d/__snapshots__/simple-resistor-capacitor-with-trace.snap.svg b/tests/3d/__snapshots__/simple-resistor-capacitor-with-trace.snap.svg new file mode 100644 index 0000000..277bb02 --- /dev/null +++ b/tests/3d/__snapshots__/simple-resistor-capacitor-with-trace.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/3d/__snapshots__/simple-resistor-capacitor-without-trace.snap.svg b/tests/3d/__snapshots__/simple-resistor-capacitor-without-trace.snap.svg new file mode 100644 index 0000000..af88f5a --- /dev/null +++ b/tests/3d/__snapshots__/simple-resistor-capacitor-without-trace.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file From 0a4d5cf2857017e8bdeacc5af1eef8614316ea8e Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Wed, 15 Jan 2025 03:13:14 +0700 Subject: [PATCH 15/28] =?UTF-8?q?@react-three/drei=20can't=20be=20used=20i?= =?UTF-8?q?n=20bun=20(dunno=20why=20=F0=9F=A4=94)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/3d/convert-circuit-json-to-schematic-svg.tsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 86c5fcf..9b43771 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -7,7 +7,6 @@ import { su } from "@tscircuit/soup-util" import { createStlsFromGeom } from "./svg-object-fns/create-stls-from-geom" import { SVGRenderer } from "three-stdlib" import { extend, createRoot, advance, flushSync } from "@react-three/fiber" -import { Grid } from "@react-three/drei" import * as THREE from "three" interface Options { @@ -46,12 +45,6 @@ export function convertCircuitJsonTo3dSvg( decay={0} intensity={Math.PI / 4} /> - {boardStls.map(({ hash, stlData, color }, index) => ( Date: Wed, 15 Jan 2025 03:35:14 +0700 Subject: [PATCH 16/28] render both top and bottom layer by default --- .../convert-circuit-json-to-schematic-svg.tsx | 34 +++++++++++++------ stories/3d/resistor-capacitor.stories.tsx | 3 +- ...istor-capacitor-with-trace.bottom.snap.svg | 1 + ...resistor-capacitor-with-trace.top.snap.svg | 1 + ...or-capacitor-without-trace.bottom.snap.svg | 1 + ...istor-capacitor-without-trace.top.snap.svg | 1 + tests/3d/resistor-capacitor.test.tsx | 33 +++++++++++++++--- 7 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.bottom.snap.svg create mode 100644 tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.top.snap.svg create mode 100644 tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.bottom.snap.svg create mode 100644 tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.top.snap.svg diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 9b43771..ddcebf6 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -6,39 +6,40 @@ import { AnyCadComponent } from "@tscircuit/3d-viewer/src/AnyCadComponent" import { su } from "@tscircuit/soup-util" import { createStlsFromGeom } from "./svg-object-fns/create-stls-from-geom" import { SVGRenderer } from "three-stdlib" -import { extend, createRoot, advance, flushSync } from "@react-three/fiber" +import { extend, createRoot, flushSync, type RenderProps } from "@react-three/fiber" import * as THREE from "three" interface Options { width?: number height?: number + camera?: (RenderProps["camera"] | "top" | "bottom")[] } export function convertCircuitJsonTo3dSvg( soup: AnyCircuitElement[], - { width = 1200, height = 600 } = {} as Options, -): string { + { width = 1200, height = 600, camera } = {} as Options, +): string[] { extend(THREE) const boardGeom = createBoardGeomFromSoup(soup as AnySoupElement[]) const boardStls = createStlsFromGeom(boardGeom) const cad_components = su(soup).cad_component.list() + // @ts-expect-error e.layer still untyped + camera ??= soup.some(e => e.layer === "bottom") ? ["top", "bottom"] : ["top"] + const boards = soup.filter(e => e.type === "pcb_board") const dimensions = boards.flatMap((b) => [b.width, b.height]) const zoom = dimensions.reduce((prev, val) => prev + val, 0) / dimensions.length - const gl = new SVGRenderer() - // @ts-expect-error should be fine. see https://github.com/pmndrs/react-three-fiber/blob/3acb4b041354e8084e7833c9254326ef6282cb5c/example/src/demos/SVGRenderer.tsx#L54 const root = createRoot({}) .configure({ - gl, frameloop: "never", - camera: { position: [0, 0, zoom] }, + gl: new SVGRenderer, frameloop: "never", size: { width, height, top: 0, left: 0 }, }) // ensure DOM updated immediately - flushSync(() => root.render(<> + const state = flushSync(() => root.render(<> ))} - )) - advance(0) // manual rAF cuz `frameloop: "never"` + )).getState() - return gl.domElement.outerHTML + const svgs = Array(camera.length) + for (let i = 0; i < svgs.length; i++) { + switch (camera[i]) { + case "top": state.camera.position.z = zoom; break + case "bottom": + state.camera.position.z = -zoom + state.camera.rotateX(Math.PI) + break + } + state.advance(0) // manual rAF due to `frameloop: "never"` + svgs[i] = state.gl.domElement.outerHTML + } + return svgs } diff --git a/stories/3d/resistor-capacitor.stories.tsx b/stories/3d/resistor-capacitor.stories.tsx index f284bfb..3910bfc 100644 --- a/stories/3d/resistor-capacitor.stories.tsx +++ b/stories/3d/resistor-capacitor.stories.tsx @@ -20,6 +20,7 @@ const createCircuit = () => { /> { export const ResistorCapacitorPcb = () => { const result = convertCircuitJsonTo3dSvg(createCircuit()) - return
+ return
} export default { diff --git a/tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.bottom.snap.svg b/tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.bottom.snap.svg new file mode 100644 index 0000000..3a604e6 --- /dev/null +++ b/tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.bottom.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.top.snap.svg b/tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.top.snap.svg new file mode 100644 index 0000000..537b693 --- /dev/null +++ b/tests/3d/__snapshots__/double-layer-resistor-capacitor-with-trace.top.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.bottom.snap.svg b/tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.bottom.snap.svg new file mode 100644 index 0000000..58c3878 --- /dev/null +++ b/tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.bottom.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.top.snap.svg b/tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.top.snap.svg new file mode 100644 index 0000000..295eeb4 --- /dev/null +++ b/tests/3d/__snapshots__/double-layer-resistor-capacitor-without-trace.top.snap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/3d/resistor-capacitor.test.tsx b/tests/3d/resistor-capacitor.test.tsx index 76d18d9..f4daf54 100644 --- a/tests/3d/resistor-capacitor.test.tsx +++ b/tests/3d/resistor-capacitor.test.tsx @@ -17,8 +17,8 @@ test("simple resistor-capactior without trace", () => { ) - const svg = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) - expect(svg).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-without-trace") + const [top] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) + expect(top).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-without-trace") }) test("simple resistor-capactior with trace", () => { @@ -29,9 +29,34 @@ test("simple resistor-capactior with trace", () => { ) - const svg = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) - expect(svg).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-with-trace") + const [top] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) + expect(top).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-with-trace") }) +test("double-layer resistor-capactior without trace", () => { + const { circuit } = getTestFixture() + + circuit.add( + + + ) + + const [top, bottom] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) + expect(top).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-without-trace.top") + expect(bottom).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-without-trace.bottom") +}) + +test("double-layer resistor-capactior with trace", () => { + const { circuit } = getTestFixture() + + circuit.add( + + + + + ) + const [top, bottom] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) + expect(top).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-with-trace.top") + expect(bottom).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-with-trace.bottom") }) From d0f472b85510268d20c0b9d0af2703cc49a2b86d Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Wed, 15 Jan 2025 04:01:23 +0700 Subject: [PATCH 17/28] minor stuff (not important) * update toolchains * update lock file * pin github:tscircuit/3d-viewer to specific tag/version --- bun.lockb | Bin 353603 -> 355872 bytes package.json | 31 ++++++++++++++++--------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/bun.lockb b/bun.lockb index 279b5c602983d39a8883ffd3adee5c0b603de12b..4c2a41dc1a48f26a9389379c62a7ddbcabfa67d5 100755 GIT binary patch delta 77534 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 diff --git a/package.json b/package.json index 9b919b8..9345436 100644 --- a/package.json +++ b/package.json @@ -19,38 +19,39 @@ "license": "ISC", "devDependencies": { "@biomejs/biome": "^1.9.4", - "@chromatic-com/storybook": "^1.6.1", - "@storybook/addon-essentials": "^8.2.5", - "@storybook/addon-interactions": "^8.2.5", - "@storybook/addon-links": "^8.2.5", - "@storybook/addon-onboarding": "^8.2.5", - "@storybook/blocks": "^8.2.5", - "@storybook/react": "^8.2.5", - "@storybook/react-vite": "^8.2.5", - "@storybook/test": "^8.2.5", + "@chromatic-com/storybook": "^1.9.0", "@happy-dom/global-registrator": "^16.5.3", + "@storybook/addon-essentials": "^8.4.7", + "@storybook/addon-interactions": "^8.4.7", + "@storybook/addon-links": "^8.4.7", + "@storybook/addon-onboarding": "^8.4.7", + "@storybook/blocks": "^8.4.7", + "@storybook/react": "^8.4.7", + "@storybook/react-vite": "^8.4.7", + "@storybook/test": "^8.4.7", "@tscircuit/core": "^0.0.229", "@tscircuit/plop": "^0.0.10", "@types/bun": "^1.1.9", + "@vitejs/plugin-react": "^4.3.4", "biome": "^0.3.3", "bun-match-svg": "^0.0.6", - "circuit-json": "^0.0.111", + "circuit-json": "^0.0.126", "circuit-to-svg": ".", "esbuild": "^0.20.2", "performance-now": "^2.1.0", "react": "^18.3.1", - "schematic-symbols": "^0.0.99", - "storybook": "^8.2.5", + "schematic-symbols": "^0.0.111", + "storybook": "^8.4.7", "tsup": "^8.0.2", - "typescript": "^5.4.5", - "vite-tsconfig-paths": "^5.0.1" + "typescript": "^5.7.2", + "vite-tsconfig-paths": "^5.1.4" }, "peerDependencies": { "circuit-json": "*", "schematic-symbols": "*" }, "dependencies": { - "@tscircuit/3d-viewer": "github:tscircuit/3d-viewer", + "@tscircuit/3d-viewer": "github:tscircuit/3d-viewer#v0.0.81", "@tscircuit/footprinter": "^0.0.91", "@tscircuit/routing": "^1.3.5", "@tscircuit/soup-util": "^0.0.41", From 0549b054a389790d478e259e55028f6d7bd4b896 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 18 Jan 2025 03:09:04 +0700 Subject: [PATCH 18/28] remove all patches --- bun.lockb | Bin 355872 -> 355606 bytes lib/3d/components/STLModel.tsx | 4 +- .../convert-circuit-json-to-schematic-svg.tsx | 4 +- lib/module.d.ts | 6 +- package.json | 4 - patches/@react-three%2Ffiber@8.17.10.patch | 12 --- patches/three-stdlib@2.35.2.patch | 79 ------------------ 7 files changed, 9 insertions(+), 100 deletions(-) delete mode 100644 patches/@react-three%2Ffiber@8.17.10.patch delete mode 100644 patches/three-stdlib@2.35.2.patch diff --git a/bun.lockb b/bun.lockb index 4c2a41dc1a48f26a9389379c62a7ddbcabfa67d5..dc9cd14d4b1f4d50b48c098c06d0025375c67f66 100755 GIT binary patch delta 44 zcmZ2*M|9dP(FuM`Z8?nrtpSX!0Zgp{%v%FkGNKvl+IL2?Y~LBpdQ@Qg!r4qS0EU?n AI{*Lx delta 321 zcmbPsOLV~<(FuM`6LK2^S_2qc1DIL^n70P7WJEKbY~LBpvVCVX>rsLFg2a;KjMQTN zl8mC%RNdl|l$^{Y2O~XWQ#~U+upCT*Ls4pCa)~ZjovM*rT4qvek%NVvp}C%+0YoJO z6cjj?IA^$~xNzjMf<+{tG?z`OnTef(g+g&=Rcd~k4v>{tpOcxMm!HN3Qm9{Uw=!Qe z$j$T^cb2=JicbPm-vqe+;-X}|%)H`~#GD+xoc!eMw9K4Ty#TNeQe09C>=cYlkPU~L uJx_p0qhtcVQjl^>gU4U=k^1|MYND47OXCpf1&ZHYx=_3OcMYiz+Kq@ diff --git a/lib/3d/components/STLModel.tsx b/lib/3d/components/STLModel.tsx index 6bb4b4d..152cd05 100644 --- a/lib/3d/components/STLModel.tsx +++ b/lib/3d/components/STLModel.tsx @@ -1,6 +1,6 @@ import { useRef } from "react" -import * as THREE from "three" -import { STLLoader } from "three-stdlib" +import type * as THREE from "three" +import { STLLoader } from "../../../node_modules/three-stdlib/loaders/STLLoader.js" const stlLoader = new STLLoader() diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index ddcebf6..8a2d33e 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -5,8 +5,8 @@ import { STLModel } from "./components/STLModel" import { AnyCadComponent } from "@tscircuit/3d-viewer/src/AnyCadComponent" import { su } from "@tscircuit/soup-util" import { createStlsFromGeom } from "./svg-object-fns/create-stls-from-geom" -import { SVGRenderer } from "three-stdlib" -import { extend, createRoot, flushSync, type RenderProps } from "@react-three/fiber" +import { SVGRenderer } from "../../node_modules/three-stdlib/renderers/SVGRenderer.js" +import { extend, createRoot, flushSync, type RenderProps } from "@react-three/fiber/dist/react-three-fiber.esm.js" import * as THREE from "three" interface Options { diff --git a/lib/module.d.ts b/lib/module.d.ts index 6f3e51c..54ec704 100644 --- a/lib/module.d.ts +++ b/lib/module.d.ts @@ -2,5 +2,9 @@ declare module "@jscad/stl-serializer" { export function serialize( options: { binary: true }, objects: any[], - ): ArrayBuffer[] + ): ArrayBuffer[]; +} + +declare module "@react-three/fiber/dist/react-three-fiber.esm.js" { + export * from "@react-three/fiber"; } diff --git a/package.json b/package.json index 9345436..d249316 100644 --- a/package.json +++ b/package.json @@ -58,9 +58,5 @@ "@types/node": "^22.5.5", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" - }, - "patchedDependencies": { - "three-stdlib@2.35.2": "patches/three-stdlib@2.35.2.patch", - "@react-three/fiber@8.17.10": "patches/@react-three%2Ffiber@8.17.10.patch" } } diff --git a/patches/@react-three%2Ffiber@8.17.10.patch b/patches/@react-three%2Ffiber@8.17.10.patch deleted file mode 100644 index cc99b8c..0000000 --- a/patches/@react-three%2Ffiber@8.17.10.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/package.json b/package.json -index 25330f55a53ea507636022459695664fb9f4bd45..859f0946f4abb3a01d3746e2896b9522278553bc 100644 ---- a/package.json -+++ b/package.json -@@ -27,7 +27,6 @@ - "type": "opencollective", - "url": "https://opencollective.com/react-three-fiber" - }, -- "main": "dist/react-three-fiber.cjs.js", - "module": "dist/react-three-fiber.esm.js", - "types": "dist/react-three-fiber.cjs.d.ts", - "react-native": "native/dist/react-three-fiber-native.cjs.js", diff --git a/patches/three-stdlib@2.35.2.patch b/patches/three-stdlib@2.35.2.patch deleted file mode 100644 index b6206e2..0000000 --- a/patches/three-stdlib@2.35.2.patch +++ /dev/null @@ -1,79 +0,0 @@ -diff --git a/index.cjs b/index.cjs -index 547f85cd7080b51b26bc2bb3a487ff4ef9a85f5d..88bb86d246f415594dded65007c03f986903f0ea 100644 ---- a/index.cjs -+++ b/index.cjs -@@ -204,7 +204,6 @@ const KMZLoader = require("./loaders/KMZLoader.cjs"); - const VRMLoader = require("./loaders/VRMLoader.cjs"); - const VRMLLoader = require("./loaders/VRMLLoader.cjs"); - const KTX2Loader = require("./loaders/KTX2Loader.cjs"); --const LottieLoader = require("./loaders/LottieLoader.cjs"); - const TTFLoader = require("./loaders/TTFLoader.cjs"); - const RGBELoader = require("./loaders/RGBELoader.cjs"); - const AssimpLoader = require("./loaders/AssimpLoader.cjs"); -@@ -530,7 +529,6 @@ exports.KMZLoader = KMZLoader.KMZLoader; - exports.VRMLoader = VRMLoader.VRMLoader; - exports.VRMLLoader = VRMLLoader.VRMLLoader; - exports.KTX2Loader = KTX2Loader.KTX2Loader; --exports.LottieLoader = LottieLoader.LottieLoader; - exports.TTFLoader = TTFLoader.TTFLoader; - exports.RGBELoader = RGBELoader.RGBELoader; - exports.AssimpLoader = AssimpLoader.AssimpLoader; -diff --git a/index.d.ts b/index.d.ts -index 9b30bc6f5f142f309e862c7f5eb80c3e640238b1..edc669e4e401b49f36e6aa399882df273f0cd717 100644 ---- a/index.d.ts -+++ b/index.d.ts -@@ -203,7 +203,6 @@ export * from './loaders/KMZLoader'; - export * from './loaders/VRMLoader'; - export * from './loaders/VRMLLoader'; - export * from './loaders/KTX2Loader'; --export * from './loaders/LottieLoader'; - export * from './loaders/TTFLoader'; - export * from './loaders/RGBELoader'; - export * from './loaders/AssimpLoader'; -diff --git a/index.js b/index.js -index a457f0619459b0bc0076b2dfd56c5040cff3a063..8ec63e031281b1f226000a5719d1fe1ff454b256 100644 ---- a/index.js -+++ b/index.js -@@ -202,7 +202,6 @@ import { KMZLoader } from "./loaders/KMZLoader.js"; - import { VRMLoader } from "./loaders/VRMLoader.js"; - import { VRMLLoader } from "./loaders/VRMLLoader.js"; - import { KTX2Loader } from "./loaders/KTX2Loader.js"; --import { LottieLoader } from "./loaders/LottieLoader.js"; - import { TTFLoader } from "./loaders/TTFLoader.js"; - import { RGBELoader } from "./loaders/RGBELoader.js"; - import { AssimpLoader } from "./loaders/AssimpLoader.js"; -@@ -401,7 +400,6 @@ export { - LineMaterial, - LineSegments2, - LineSegmentsGeometry, -- LottieLoader, - LuminosityHighPassShader, - LuminosityShader, - Lut, -diff --git a/libs/lottie.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs -deleted file mode 100644 -index 7d8aefea8e7830ebaef2d3f9ea5f48d30e9e0852..0000000000000000000000000000000000000000 -diff --git a/libs/lottie.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs.map -deleted file mode 100644 -index 12de44a8d95d72d5b155a21b3b716c8162772499..0000000000000000000000000000000000000000 -diff --git a/libs/lottie.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js -deleted file mode 100644 -index 9ade8c1378595d3d06077fd9f701ed8a5837f0b3..0000000000000000000000000000000000000000 -diff --git a/libs/lottie.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js.map -deleted file mode 100644 -index 0ea7ed76e0831e22f21b051d42c4fd1a842fbded..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs -deleted file mode 100644 -index 41b1339e75c0ae4fb08e22580e9bf951f301bd06..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs.map -deleted file mode 100644 -index 083b3ee89eeb470fbffb943fddddeffc1032ff89..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.d.ts b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.d.ts -deleted file mode 100644 -index 951cd679fff328cb4240544a312048d7fc730b4f..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js -deleted file mode 100644 -index 20cfe9afedc3d2a0e28e842dd08c6a18e3d2840b..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js.map -deleted file mode 100644 -index 2e878490e0404e12ac604f54b07b85402b37a1d5..0000000000000000000000000000000000000000 From 54457ae223d7c90aa93f3f4667c81f41de62469c Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 18 Jan 2025 03:49:16 +0700 Subject: [PATCH 19/28] `bunx biome format . --fix` --- .../convert-circuit-json-to-schematic-svg.tsx | 78 +++++++++------- lib/module.d.ts | 4 +- stories/3d/resistor-capacitor.stories.tsx | 50 +++++----- tests/3d/resistor-capacitor.test.tsx | 91 +++++++++++++------ tsconfig.json | 5 +- 5 files changed, 136 insertions(+), 92 deletions(-) diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 8a2d33e..1146df8 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -6,7 +6,12 @@ import { AnyCadComponent } from "@tscircuit/3d-viewer/src/AnyCadComponent" import { su } from "@tscircuit/soup-util" import { createStlsFromGeom } from "./svg-object-fns/create-stls-from-geom" import { SVGRenderer } from "../../node_modules/three-stdlib/renderers/SVGRenderer.js" -import { extend, createRoot, flushSync, type RenderProps } from "@react-three/fiber/dist/react-three-fiber.esm.js" +import { + extend, + createRoot, + flushSync, + type RenderProps, +} from "@react-three/fiber/dist/react-three-fiber.esm.js" import * as THREE from "three" interface Options { @@ -25,47 +30,56 @@ export function convertCircuitJsonTo3dSvg( const cad_components = su(soup).cad_component.list() // @ts-expect-error e.layer still untyped - camera ??= soup.some(e => e.layer === "bottom") ? ["top", "bottom"] : ["top"] + camera ??= soup.some((e) => e.layer === "bottom") + ? ["top", "bottom"] + : ["top"] - const boards = soup.filter(e => e.type === "pcb_board") + const boards = soup.filter((e) => e.type === "pcb_board") const dimensions = boards.flatMap((b) => [b.width, b.height]) - const zoom = dimensions.reduce((prev, val) => prev + val, 0) / dimensions.length + const zoom = + dimensions.reduce((prev, val) => prev + val, 0) / dimensions.length // @ts-expect-error should be fine. see https://github.com/pmndrs/react-three-fiber/blob/3acb4b041354e8084e7833c9254326ef6282cb5c/example/src/demos/SVGRenderer.tsx#L54 - const root = createRoot({}) - .configure({ - gl: new SVGRenderer, frameloop: "never", - size: { width, height, top: 0, left: 0 }, - }) + const root = createRoot({}).configure({ + gl: new SVGRenderer(), + frameloop: "never", + size: { width, height, top: 0, left: 0 }, + }) // ensure DOM updated immediately - const state = flushSync(() => root.render(<> - - - {boardStls.map(({ hash, stlData, color }, index) => ( - - ))} - {cad_components.map((cad_component) => ( - - ))} - )).getState() + const state = flushSync(() => + root.render( + <> + + + {boardStls.map(({ hash, stlData, color }, index) => ( + + ))} + {cad_components.map((cad_component) => ( + + ))} + , + ), + ).getState() const svgs = Array(camera.length) for (let i = 0; i < svgs.length; i++) { switch (camera[i]) { - case "top": state.camera.position.z = zoom; break + case "top": + state.camera.position.z = zoom + break case "bottom": state.camera.position.z = -zoom state.camera.rotateX(Math.PI) diff --git a/lib/module.d.ts b/lib/module.d.ts index 54ec704..9110e9a 100644 --- a/lib/module.d.ts +++ b/lib/module.d.ts @@ -2,9 +2,9 @@ declare module "@jscad/stl-serializer" { export function serialize( options: { binary: true }, objects: any[], - ): ArrayBuffer[]; + ): ArrayBuffer[] } declare module "@react-three/fiber/dist/react-three-fiber.esm.js" { - export * from "@react-three/fiber"; + export * from "@react-three/fiber" } diff --git a/stories/3d/resistor-capacitor.stories.tsx b/stories/3d/resistor-capacitor.stories.tsx index 3910bfc..9fd1977 100644 --- a/stories/3d/resistor-capacitor.stories.tsx +++ b/stories/3d/resistor-capacitor.stories.tsx @@ -4,29 +4,31 @@ import { Circuit } from "@tscircuit/core" const createCircuit = () => { const circuit = new Circuit() - circuit.add( - - - - ) + circuit.add( + + + + + , + ) return circuit.getCircuitJson() } @@ -39,5 +41,5 @@ export const ResistorCapacitorPcb = () => { export default { title: "", - component: ResistorCapacitorPcb + component: ResistorCapacitorPcb, } diff --git a/tests/3d/resistor-capacitor.test.tsx b/tests/3d/resistor-capacitor.test.tsx index f4daf54..15a202a 100644 --- a/tests/3d/resistor-capacitor.test.tsx +++ b/tests/3d/resistor-capacitor.test.tsx @@ -2,61 +2,92 @@ import { expect, test } from "bun:test" import { convertCircuitJsonTo3dSvg } from "lib" import { getTestFixture } from "tests/fixtures/get-test-fixture" - -const Components = ({ id = "", layer = "top" as "top" | "bottom" } = {}) => <> - - - +const Components = ({ id = "", layer = "top" as "top" | "bottom" } = {}) => ( + <> + + + +) test("simple resistor-capactior without trace", () => { const { circuit } = getTestFixture() - circuit.add( - - ) + circuit.add( + + + , + ) const [top] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) - expect(top).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-without-trace") + expect(top).toMatchSvgSnapshot( + import.meta.dirname + "/simple-resistor-capacitor-without-trace", + ) }) test("simple resistor-capactior with trace", () => { const { circuit } = getTestFixture() - circuit.add( - - - ) + circuit.add( + + + + , + ) const [top] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) - expect(top).toMatchSvgSnapshot(import.meta.dirname + "/simple-resistor-capacitor-with-trace") + expect(top).toMatchSvgSnapshot( + import.meta.dirname + "/simple-resistor-capacitor-with-trace", + ) }) test("double-layer resistor-capactior without trace", () => { const { circuit } = getTestFixture() - circuit.add( - - - ) + circuit.add( + + + + , + ) const [top, bottom] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) - expect(top).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-without-trace.top") - expect(bottom).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-without-trace.bottom") + expect(top).toMatchSvgSnapshot( + import.meta.dirname + "/double-layer-resistor-capacitor-without-trace.top", + ) + expect(bottom).toMatchSvgSnapshot( + import.meta.dirname + + "/double-layer-resistor-capacitor-without-trace.bottom", + ) }) test("double-layer resistor-capactior with trace", () => { const { circuit } = getTestFixture() - circuit.add( - - - - - ) + circuit.add( + + + + + + , + ) const [top, bottom] = convertCircuitJsonTo3dSvg(circuit.getCircuitJson()) - expect(top).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-with-trace.top") - expect(bottom).toMatchSvgSnapshot(import.meta.dirname + "/double-layer-resistor-capacitor-with-trace.bottom") + expect(top).toMatchSvgSnapshot( + import.meta.dirname + "/double-layer-resistor-capacitor-with-trace.top", + ) + expect(bottom).toMatchSvgSnapshot( + import.meta.dirname + "/double-layer-resistor-capacitor-with-trace.bottom", + ) }) diff --git a/tsconfig.json b/tsconfig.json index aeab0ba..09ee7f1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,9 +23,6 @@ // We are not transpiling, so preserve our source code and do not emit files "module": "preserve", "noEmit": true, - "lib": [ - "es2022", - "dom" - ] + "lib": ["es2022", "dom"] } } From 7fb6d9da24aff2628affae225894ef9b74db8d1b Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 18 Jan 2025 03:58:13 +0700 Subject: [PATCH 20/28] `rm -r node_modules && bun install` --- bun.lockb | Bin 355606 -> 327683 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index dc9cd14d4b1f4d50b48c098c06d0025375c67f66..d43d91ec7c8b8f20bf1f40af1c1afa20a9bb43c9 100755 GIT binary patch delta 62628 zcmeFa33L=izxO{gFp>^N2|Kc@2&ildOdv2JtRbvn5s)=NAc3$YL_ov@5rrUXY_UK^ zK}A7DMMOYFMMXmd6_rO&QBhHF=TQ_~|DSJnO&%Wq-uvEr&VBDW?>Wxln{WL-U0q#W zRb5>(lQg%zTVqjC^_yEZzrR|jxOniqc@;0+IH+FtV|g?- zSHzX^sX5apwwN&~FqP7kuNK?o$83BivGR=x2Lfl}UQ8NL^6mv)bIdRSasF=GaIYG;s@s8}8h%eDw`=f%!d+DLY{DuWO0}GVE89P8+=N3b z`&eTB6@5aivv|w;OStxbhK=XogV#cDn$qJn)nMihbo$gtJsma znxPdN<^73OTsK_x`-Wrba7$_h0{kngQQI$XB(D7@-=N;2g#;#XXoeUjHkP1)%*9Dqvhu02Le6o z`}LSPBY!q^2y|%RAEp(qW|*EieMZj2K;TmHaVkZV8v4yL1lRdY$efmyn{#Dh)&*ox z{c7Mk@E;sd4OOGDe?lXOIoF~C#H#58O|z1K(`7FUHj)_cXOI zV@__)30J+3;AALT zaj8F4-zC<0yoRg7^)GR6313iHolqTF5!dk>wfEyM+W5zP8&~nM3FOc9i=7vT^olJb zznZB5_0#!(o8)`6gU@5noA5^Lb0@BgJ?2*vGmy(qHFk_cRsFWQ zvLJtUCZnXFKw~@*cp~Z_^Fds7iER(3_)W12uD&|n#k(3t7Jc9+iuT}?Su{I4FN;14 zjL(^v(}K~R+10;nma(JSmcz}?Z#jjF9d9u?cY)=*y7>q6X4e)u`E9$q9V;~`%(wN( zvHoEXzpKU(tL-1^>37YX?3@YN95yFEYpxFe16+OnN-zI>W@gULZZS1$UIzP#r{JpY zp)~(|E+%Fe6|L{>`>iAt5a*UgD$dRef+C7H%EshPhY=c@50r9 zLGm#Z6_v8HI_AQDemPGNYyZ5g$+_BZa&C(&vL;+A=VEIcc$Iur0`6sTmlR$<&@VE- zU_xGIepcYh41d>|IeAeOwXB_nO~T{fej8D-eH3p@8Zk+zFcGZE@Bn54cEZk zG|bO`Ev_~gHQe_MVqHI96RS-=#&y6N*8h4xX13UlrI-5${_~FGI73yiH?D%yM){r6 z3fELxakS6RAyy|WphZ=&Z{YIOF@C4a&THFVEi|)W`n(Ap8sC6-UendXc7;!N8`EpSa$XIcMltiS(0 zTzm^&r~}?{yeTTKVym?kI&1Tz)%V-AQpcS*X3GcYGAUr!?dit$yt{K0$XfBIl6c?o^t&i z*1@Z=!=%jo*|P$HKwefsz6Rl9wyR=2r}-7V1=ko_Ve?PS$@2;tGu@q1xxpo~X874B z;ySDCE!a3Ju?LcieHm6Vmwa%Ng);90oCjs>%GC@v5fyvUz>Uc=9ZpLeZ44kyo; z>D_PcBvwCXXXekCLsfpTad5F;&X>e0k2Oe(tjr-3vM;{QFJKo1YQs)qHFW#y{YB2B z#A?uUiPb}ol209S+Y-fv5t-nfLMpe`ZLyVvHpw=u-L$g z4WQV-i4Bn0xQO+Ctlwh;)egkM@{tuAII$5O8^N)WYDZjAY~XM%-UTw8k)VdWxy0|; z{OruUnQY6y#qY@xxGtnVuHSyMGxJ(Z$`1reiQ}1*ikjZ)_fRpe2D-|6U0ge!<*q%u zRpHkZqpgh7In(n3f$qc_NTZE^_;g&|@iVS`c@s1W0)a&Oa`ctWv8m;ZDDp{MoD@rp*n6Y`g|n z<;SY3~ zBc@t~MgOqPK0as0G%W;vT;m_0!&?77XBeg(GTI)SVS6If-{9Y6gcyJ1TH`03;eOwO9ky*oe9 z*eywHS{Qi1uSPnq_K3&T>`zg=M$Ja+x32f|Wlp(5g#>DE@UJ2VSG5ZAyhUALO)NjI z@@8uC;8jel_ARnLEoWL*i;3f_2Ic@%-^~1Z(@VeE{ifIh`GGmax=m%_s(5W&^TFh->AI2v8aM6RvE%la{QKKW zocRT0=os`zTI@rwi-=Vr?&#BI&dv|Cd&5nyc|oCOIn^t{ZXWxl-@)-dc|GLlbi9hE*X15<_yY}N&H!pwYJWU-r>>go6u9_V@?AN4V`pn#d$vM-ff9&&2W);o#Z?Ii` zVaQ(%kJaEP+tjz_Q@^Pe;<{?4TE7gZ@8|;(RoSqV0yMbX&-?-x*ows3mKkwI?iE>q zy`TH-)?0AxH*v;<*?D{-mzA&OUw)v8_D23F*q?ehch59&jJ3+obTKAN*vqZGGHN{_%5&b-5iQ*6411((i!`>YUf-RjpI5RrE{6)s?Pj7Brzx7#h2eVH+ zbLYD&{@A?cqL0qlyz-KpE8LQ_#%IPEG10_~|t1vjH(Bskk$nw*mO2rL=K92byUxTzhQ zQf%m-72UGWqM-}IZdr0PG$riDcZ!A{3cKmRBVo5#+s<&)fdyx{#n^pkxMkS)XSng5 zqoJmi+;l9nl3R@JtmKw;jylcb_^gJ9gdrhz3aHeDN!e$OR6<_!^-P)Bx)PmGc-NkP45y7y&dlsWA!V$WnH4- zxlA+N-GuF(Dw62xCZr~ZlNfaUz0`H2qF(BIQfXc)nW5vS7Ln@dvE8IbDHR%bmK&cM z4d2Hw=TZ|oK8&<7`8=n>pO{n3fV{2=;#c5IJ2d*9s1;2NaYP#{g zqoMqoZaVg4O}7|3x0YLm?W*O*r$?Q}jCS>0Rkx&bB$Qj*Ee37^`h%<_EfV^?wj19k z8fsm~O~x&b!ESRt1MsDapU_&oeQ}3lYl|DBqb6WbBlg`r zc8(k0FY45*>v#JZZb`?8GmuEf3%bg3U0t`VUo`Y`T{pge)H%BzjqM*OITE_2o?F~M z8hWChTZRp)@5T>^hOVvereoXcyT#ba`fk~PsME87UqP?T@DidoU2&A|PgOWoN8@pwLqM@D9Da@z!}F$26`N@H>0Y2LPwjpWkWd@>m!{^*i9T9ac&^Ggosn?6>**=8cr0_DL6Ho1_DEfXrmsH(3GZb z{4n|ps1XrzGkQ~IQ@40nG}N$}TZRp9=Ee_?hF3MCOjRKKDyg<^zmCaqe~{|QZsm>E zqq!SDA{tuM+)c;6Ywi|f$rrk1BcfsVLY)D-IUkdXvRlB-7!V0Jx=1HWJ2<0AX?#)9 zN0WjVx$z^Tp<@@h>DYxAyT#b-i`}x3(eRTO(<$!Wp2<#w7XB`^ydgQRg@ zo#m|q0X|1nBlVAjzG&^HkBvHQ+5`f_ylR&WiG-H4am&U=!%^Bf-R(CrIlP1vUDYeu z2{TuA_s_3$#OY0>kwsZsli~<2Bk+b`IK(W-l+!CY)TOOkoEdeB0Dj(#ACf8(w0D;$ zCp)2b{b%bI)7fxfE|BIaeuFx0Nk$|zBE>Bu%bh^g zjX_E$9w5>V-0YY-&g$a#qIdm=7ItyVrbe9v8d9?h6Jcf~G&0pq&y9v31om_LPwr*YI7Oi`H;X9p3T!3a~Ap6Kot&xnTF^l-~&M8lJMa8A1IT00oJ8hf)xLtpW%w$hG2SfsDJiaTU1+Hhr!E(j&Wfr{j5tGy)U~ua zL!zXw8-GPK^g&-Y{R$@1et`fD!nS>bBcX-;+%n*M!1623sZ5XAE=-GrQx$0@3C|&w z<}S}jcAg`}KP`8djq434Z;7;sGlWQc`{SyZ$e*c821cA`h%WXH&JEV7&V;U`#N_s;j7YfSWx79T{=Ax$-&-nSKaqwN z=Qt(e)M5tKwm5g+?xZ*yRPsh#qv3wHvcAZOIFoEdA6%YPk)Vsad_=NSaYSqa)*!u{ zNGCvPL@RAn(PUHzCdCo?N8;q1Dwq3(b0rY`SkM{@cX?i)l5YxdKsY{Doveo-{EWt5w~DC*SZW~6Pr1L&L-N1$e7 z(q{NRG}?{7HtL)NYE1j}8$8Cpk9aqX@ZChMy@B~UDfI@Uo9nOA*z$>kyWH@xZt>!1 zxF|Ca80juwoE(0S)Ce!tc6^N8L~5|dJ|;EVOQlTU%N8%So>ZpWZ)vBB6Jr}Ek(%sn z+)FCUOI?x`2#oboCFQB_NcqL}o20D?*LSK&!asg^GIw6>5E?bvEn6COZUrR!O~5#M zoyc#0_2Svt{>5j90g>8REf;at5OG)4=)EQ>j-VYuWjFDeq_`ZvpZr_SNFuuz{aZ$) zwq^3~LHSesZGIc}Ch|%&`_5v_5ZPW}D&9xbo&A`*8ITR8`uq8VbvTjshnf{jSy z&>ul%M7ly57mSklT)#|e#zfjP*Dby=8d{m_mfaW)zsfe22&@W&)5_!+nSP&e4qV$q6nU9$C8aZEUZy|ZBvO0%eRbBXSj(!t(umXw zew$oPX3 z^7FTxr-;`~!UKQ|zWc5Dl*^)==;F zKyvsqQhmMDCCg%|tIJbm<*AxCXryV6air3`)cW$&cjc+1<*}_r<*Cy0RFxZJTZfmY z){tVUr@EA!*7ym z>kZyBZu1w84EO<&;3aPF%_+_#SZnVf`<_e+-sYBVj)vcbwe`l(S;ntWMK_}`sUiVm zoR#atr24ay_u+yQx6-eVzqsy8#Den1WaldQ^nia*MARE^ns(Or@Opka(FeVs8Y^*q|^%j;;P{temnY0_fbS0 z{UftNzKuxNIScv6BhH@ksHAfwT>DOy$A^Ex%iP}EQ^F7X@$}^I7o@zKWAH-Pc`7A5 zd^Jtso&Bw(R61AAvZUZ@x9q8CT>M@B*~EGwoCaWcY)*EHN!e!L&iv22+_I;mPU_wM zb;YWk8|TeLy5{`V{u_3i_mOEZ&fWb?O1Re=9i8rUZXu$-#)b``Hxdr+fU$`HPPp_xgD`vmTMSRYYpx@^d;Q z;H?+t-WTvb>SYK%5DD)g;=aA3le_f!6sOlZ|J3}GDJ0UV(fBm?b3{y-naR$#q|_;# z##52FCink)^End$9oWnP_`LAW``z>xqRt+mE*9YQNU(;x`-K$evIqPT>Rk-sTZrg1 z8sSY+y3D9WG!j>3y?+&Zr{X?;pA%;RS0M|byNLL3iJQo~>)qm)qRzz|{13_)oUFU9 zBJ!J1Z@69{QY~0Dv+YNsuHJEUOG$b#cD9L&BH_72t=zpYBs&j~(uK{q1Y#X8M%@0Fd}+#X|hv7Dk)ZVXScY&D{tN^JY2r5b0nDTI;APjY?vyTqv7Bqw&~*fle&z}<^8@1 z;9dCP@BP$(WT)Mu{uwdIwj{;bz+ZfBd{m$Ohrbq7UxXu%Y25Vtwo@Dl|H@&u3qMQ5 zvXsJpu$&4p)3w~BmSCO<=ab^=0zQJ;Bu1V5j~~7y@~`N`CnHYd$Nk7(ybrSxIccx8 zL<7D3SjvWuKkgR4#)r|H{Y!`}yfvRh#PrY7^g&V@Gpu{L$sQ$2@_3^sV(rBk4raT~ z8!66{Ff}?==EnHN6K?Svd}O{Q*3Ihv(L^2Gg!JU_{iOW&{NIpL-*P!bSz15o7eYk0 zTu#)QZM-=f5s6ztq{_s4!FdbdU)I#ZN!aRtvc;vkI^v8Wvg3<2@$E!92;2A^<4qzJ zOVl9}7ux0@(!UbAEOA`t?G$GgR3m~Zrwg~J?fxEI9P=Zg$G5v>Z}SoBb~k>1G~DPZ zCJZ-We{y&_DHgw^o+?kB@pOz0Do@=-isdEwj*?;}NUHTSvDDo1)br)3xE-;r1Itq@ z%Tphfr{Q2tpj7J(5=tA@$W@L?>z6O zWAk>p#qUMKr8_k)_i{_kctNMB`C|18ZuXv;N4V9I;@gGH<#NGY?;p56ZNpS@2z3kd~ zA(2Ka*FPWeZXp`y)uBxpf8^lR!H~LKsnGERtLDB!{<>;{HeK zds1AVq+0CJI+UH98%gP|n=)^49$jLq5SmL26AgMIcLOz6rt-SlHor}RyK zK9Bb<*ZyzuS4Es;T{p3B#3><)64BheD|wwrH>^bOQ_reztBDd8C5QUH?UsEJb?yeJ z4lJa&c=r)?C#vM_T4TT8M&AA2=|`kXnPT~xbfdaotJ<*s5c`zfdhQ) zL3D=8H0Deo(%A9e)jvk0`?(i|eiiRE zdziuA=6$~^-UrZ5K9Nq%|1jfGqK@U!k3@c98Yf*2`TP0nrfZ1Wm*?DOBmW-z4Uwi) zeYC-8eBdt+ymhW~HIdratDy4?QIeNaABO)x)L!#O_`(mFzRliHuv6Sefxvunu+-qK z?l(l2d3$GY3+jHD267YnB!?H1@){@n4XIvUGqwBpv^A1*E0Ol396tK^{$n@&C+>8g z#7ZOKA|G+yc+@TaCF;BdR73jXuJSQ8q}~Rkl2UVXslOiy6&`boe~pHp1+pNGCWn4M z=EncV_itZtvI0&KDGe2FxyQJ-ec_h<#$hs z^_vxC@OQs4@xdTpbbsp)Fn^S16X`ts>*szO`ERg3CGrQ6u7`Tx`TKcOtuvZP`}s?! zJBU)ePWggVXE8mBA)K}iSrtnE3=3~B9+*U&ZIh%XgK>+@z%Ke zh?2{rx~Ke+?+?mMqP}eNKV#iU)SHO8FE3J|*3SX6tX8nIbIZ^E+57J=%ZN0N{cAk_ z7yrtOcT18Z75e_dF12ZeKELu&v{_y|m>j;3S9w~I4x-jbFS+723V6vYqIL>+$+bVt>b*|) z3J{vr+ujLRISd}p8C>2AFZ2L2v-grKV;3*-U2&?7<*Gmrqywp4B(@d3DA za^)L@RL)?emt64>j_(ynCwpK7t}_~m^g7*D&=`;Ut~k@ia#bt~iDz4%it9kRNH2Lc z#9;%K&~-}ab)9ejEmy(UBOS09DPCs%20RYkimIdaNZU6co!~=AuY_1aUcszu5Y%tr z1_F;E<$D}yzs*Q5x#A~~wm*sVI^9*D?I?_%MS96AqumO4{grFKJ$~DG2`?j{+?C;V z8~;~a6@A0zm#f9!K`Q56q?h~*^bykQBYgy(_xAhFI7hS8poB$r&fx`bpmJNYNe{Uw%4?AJzV8B#+C29;6?t97XbJdXv&W&cm!90 z`b}yT5Y-igdN!O#!dJa&78vx1a7heoweO4Oe~p+jt6r zKLZT|i0LnX^pdNf%W>^E#>V6Ds>FG?UUDV#Z7f$(e@mwQudwkP>vOe{mt5^JKWJxw z`GC5B+i)H5cAN2Z7rMi4zZ+M)h9ByIbqfCELibxPSMmWH%avSTXu*11HGa_g!?(=+-{0qFPAG%;{;@@05yzOW3Tupq?#{Ze?z=z1EtRL9?awR{s zv0QWV_g*~APw0$(wi!-$o!M`2ZTj8%A2#3VuF)P=t*wX5{`2iz?tryNy!Fa9n_S5R z8_QKpHC%_SiEBUo)q`Gg@pEi^x+`B@yS)LfxM9e<&v^-N$8+tD|C#FmO>927l1*)V zy6XVV;L3lI-7Xiu*v1!!?8POZt2Syk{I9t;x&0RptRdFTR`7IJm-Mz=u6+G*p@Ejm zb>!v+cD+48xmsq4jhE=a0!wkRWp;yH$>lbdD|r(? z&cyGqT(0D58_QMRT{f00z8lxYbB~Shwc870iNA7$o=U z(+}(3l=T*%7T^oJ;eXXN{{ANpsJef}5BWFz&<*AUuEF;kt})}#OlpyMHJ9~5-NMcS zsEMoL+E&wMkZXrpHkK={ZM}}=awY5WLltOXy^$cV(_QF1%W?nuKi>kmD%8xz|Cy^I z&27H_imTifDMAy zODmJWE}KoR_!XP2)bi6^Gxuw7%|q|v%5sPwwaku|!G>l}%V3rN_K&ziRrVC6sFFY1 zQh!s?y#C6S?{~JVwmM_QL0oYK{A|1`u5xSPdY$ej15ARirJha`fkU$``@)id3|V7Xj_i(Qc3{V<#KS6-RCSSFY_{ z*scSm+Wg&Y+}*}KalOi2HxDhehue%JY{ro|{{mzAp-CqjSHU^BZb-9mRd_b8*MH`! z*cEpFIX1ssya;B?mxSHiXFYJTWI3vummji7bKi!8s^a=E%-8Lo1cYrEOlh7tNq zn_!&T!w;{~Z)SrEc5%Jrif_{nxUpQWc%_ZyO5SOG4X*8Lt>0t)UR*D^#=v?T<9?@~ z2E2@lHCb)Jm3KQoRPa;QpT~^eM}9SA6T6>W`~vGutv9pV@j`F?+7h50 zTU)=xdRv=Ou4D&(Xx2=@Rd5$vJ)m48Io_S`6d&Uh@Y z17zWP$#r#3v)gA{E>{I+;W|LR<)^#QT)X{B>sQ%)<(>-A0j{+h{`+n^)(c+ly;o~V zIjU4E>#cFUnu)Xjf?iD8Gt-(O;UOiSn`|NBb}rU^}Fe}9QVLuktU`%8?! zzr^_aOANcdZphT&Eekb8@cR2pjKBI8MGLvpzr0XODb}*m`-s50^8NiKh8;@Y`jrOx zpL72$;s0QP)b39e)VlreFERf965}twtI+uS%MJfct_$SvFEN_yzQgOUTyNz6{u1Nw zFERf8I}5JAe+Pc7%jxegG5-D%gJDoh6Nhyr|Nau=?=LX|e}9Sb_m>#{XJCJSiJ>nu z^e**(;Y*CIKMx5mtI+Sew|@%XaDM5xP4~9h;(qbWv5Z#R_atv#vE}NvY3J;%{pE?h z)7nq|IrF8#g?(zyU(_;MedV|t){VP)OF`onAKZD%jh#n&pW6L?wth>ra=_f)Ep(Y_ zHX@i{77q{h!S)Rg4l@S?PIL|R37s7whXq!S0`wROsAWn<0@6kUP6*U7siOcV1=fuM)HTNi){g-U9Sx{&){X`Y9}5VN z0W>rjV*qjE09ynao8VZ$Hi4|Mfb+~If$U5`jd6e`CUYF1_ISW9fu<%g6HqEpkO^pR zb_&d$0BABEaFLlc9?)zeV81{M(|7{lfWYDjfL3Ooz>+LLyNQ4{X5mCY(j>qUflE!B zEWpu8!86URS;4-+cIL3a%E{#DF^L=zQ!)vVmQ9X_?+B%u7AJz0gB?ujWa!CkvaOp; zwq$c$V0{i?Xf~j;S(^9W96;Puz!rg26PyCrCXh7+(9LWT$j$}SmodR>`0h-JOOf|FS0-9Y3*e@{6G@b`IAh38I zV20Tzuw*`<-Iah@X5p29q^kf&1oBOr`GBJWE9L_V%wd6*3jjT?0?aWbR{_$l2AmL> zXHpjcP717B0GMx%3-G)7w8zze1!nElfZ;`ea3P@3WE2A876P^iEHuF)z&3%bBETZE zNg(?gK#hff#U^thp!OobE`jS!;x&L$fr4uQOU+J!xz_@kECMVuvlaoGEe7ltSZ*3$ z3pgOK_*%eCW}m>4>j3Q*14_)o#ek&i0Y?N})8;zBQGpfL0alp90xOpQdRz}MrsR4+ z+ETy?fmJ4T3E-r_x+Q=+%yEJB#ektp0jtg0rGVkf0O4Z5-6o?L5O)J$i@;hFTn5-C zkhKhOuh}G!y&O>E2EaO#c>|#KjeuPO517Q|fKq{i<$w)lr@-8s08MTLJY;6w2xxXQ zV86gd)A%O90fEIg0UkB`1eTNl+T9G;WES2GNV)}ZL}0UNQvx_Du%ZO8#T*t`=>mG( z0@!LwZULm-3OFIK-K4sJlLG5pz|-cq!1@({p|=8dn6XW~ad1+W}2h0bVt; zRsovb0oX6F*EGHza6n-3?SR+KK7l270@~dH*k=~r0Z3X6I3n%vwsKAOl0sGBi zft7awdaMS#V@g&7((VSF5IAU3?*g0@Sa%oTJ#$=O{Tjf~y8(yH+PeY6*8;+803Vu+ zHGsH#09ynOo8Vf&Hi4|QfKSXOf$Vz$HSPf%F`4%OYTpOgCGfdPycbX^P;f8cnAs^X zcO9U~eSj~`tos1X?g#7__}VmH2RI0l*1!SYYJ_K#%o+pG?VmK-zIT3`fpr@IznJ3!>mLFPeGu@QS^FSh z_``tkLx4X_#zTO(jesqHP%vmh4+k$Z+eES+hExce$3?Oqfz;T@PGOU|k)3Kk3fLu3 z$s|4kC>1Dp1mKvR0&^b&G5hHnLgp9C~C8BYS@wgI*XG&aGlfNcU3#MxsvK>(R6gdjElcTxWDKPhGK$E8c7nxa40h&Dn*e}q+G=3UzKw$CH zfL3Ooz>*z+cFzFXn1#;-hXpS&2W6L5IV@{$Iy{R-Oo=SX9Fui0sn1~@ z%_>>4IWFsDdOweKHfv>3b4r$CGInBJ%m!Ji3BG`JH6vu*%qCfPMX|DoK2#hePWq^|c>&gHl z&2fSCdjLaU1&lUpUj+=`3kdH4j5Qg10CBGYwg@m8?geZU$l42-U^WS4zYeJJ8X(JL zz6PlM24I)KWRv(hpj4pXbwG~UDKK{*pvfD6sbd9oR1pKPXS z{w6ldER^M$gR*?n<}GZtSt=_qhh&$l9^(OIMo#lHv%Xc}c zrDmtV-1l{s?*W#XS?>Xw9RlnZSZ*4>4>%yO_44*=~B0ZPomLx7|Y0Y?N} z)8+%fQGpd709Kg80xLfP^!N~9Ov#6Uw8MZC0;^2wM}U(8>plY9VU7!|{}?dzFkrP= zdl)eM6F~T5z}+U}V?f-efGq-RP4E-IHi4{90QZ_r0@+6ZH9iHbGntvvKP%J*-OUx7TaYqWiOlUvR6#vcUY;( zk?l4+Wo4$$aqLwyOSZ@CmhCl-|B1b3=E+_+`($sJ=HFxc%tG0l=Ai5?)8+@A=!sxL z-#SZPF1$bO`u#6o`R%F78*9E-T^Ee(~-uyL;Y#@$FZ1Id}J$jrNTHni|u07Ab7O?;S74~AESObbK)2%4uv z;=+*nXRuSy0VhO+=C1rp8%)HNf{2CP2|utT7}ajF1@pADE+ z1<=rJ7l^9@sGkUEY;qC-+XVIsoM-A(1!N}z7E}c^F}nq7R|T}F254&LRRfd?91>`5 znpX$Rtp-?L9dMC3DA24rpmPmC3$wHa;DEr_0P+L&VkNi_leY5^`a zt7-v`3j8L}&h)MgSXm3Ou{I!LP6?#d28^x)=wLR~0h|;_I0ukyMw|m!Uk9*5ptEu6 z0*0Rhm{u2%Vzvv!)dkeA2S_zJ^#I!h_6l?}b?O7M>j4(j2lOzz1!~s^v}ge6W#%;i zlnNXY=xv%e1k7y!Sl$rO#~c)B))3IS5ul%0+6Zt!;A?>arbA=El16~ljR6_vm_Slv zK)-VVgUzaQ0Y?RX6BufGp9ffZE@0z%fMMp8K-zhL(dPq3m<{IxP6{M60gN;wngG_H z57;3v+Bg>ghBpCBy8tlOY!`^T08qavAk*YD1#A=8D=@*-X$Ht{3Rut#kY#oY)NTf7 z(Ht<@%xexP6*wf2W13$GnA;q%{6fG~b5Nk!g@Dc%0j8Oy7lpLwI4qlCI$Vs+G$pcG z=9nzcq_)8F%_`Y!b6i$ndbh-`Fl%LV%qiJilhF#BXEw;LG{M%`d^19JmDwa)V4ODC z)h1I`Xtv9WOyVWjLX#uA#_W_WGIcJ+t~Ik{i_LD?b*6D!?0Pc~Go_d6MB8#2OHK23 zI?=W|(RP4k=Ab~cb~@4afaPXsd%yvKuLW*0JcXH#Zx2`<0hAb?*F?uh0R55xu341? zI4ba)zzWk_GwVvtr5if{j5#Hc)&VfOBVd);&=GJ_AR!rWhZ&I!Slr}Zh_iSK#LT>17=W$MJ4}q^^LW z-2t1;+U|g(0^uHjEheJ}U}ZPJ7J;oM*b|V}9gx)%u-$ADI4Mx07vO1=*$c3~2Vj@L z4wIM$7~T_5kOp|p>=cOW1!&S6u+z-y4cI2IU*JX4I319k23VX9*k$$!)b0&v*9Y*5 zS=a|qDsV(#w`tQCFgG2rqA%c8b6B8RA3%?OfW4-qAK-w%34zy5YJb3zzJPW80sG8x zfuw$bp#uPKnY9A|M+L$I0sBqHK)}lWfGq;=m|zAVZ2%xE18~r65;!SPV-VmylQ{^m zejs3%z#)@37%)5oP%s$qq1h=AHwe&V2;i`pH3YCtV86g8rtwff_F%x`p@1W1pFr&) zfOeMwJ~s<51C$CJ5jbYr3qY>Mo8tmW!vRAt2YheVUJf`a5FQCQVKPPnR*nE{5%|djM*-3<2V{)`oHCmPP72f* z&AQ>2kQqOkb;J6RkX<6bg-q2kT3d{Q6pYc@B4l0=i5m@RGL~Y3X4Y7W*(R`Gpn_>U z4v;+tuy`CGZ1xG%9t&uf38-WiW&%nDjtDrW&3M4vaex)$0hP^Rfo7S29uoiwrep%( zfWQfXvrXzmz>@KRbrS)J=D0x81i;WNKsB>A3vg5*JPA<4WK06AoCw$=P|E}-1Jbep zS(5>E%qD@80yVM$bxmeAVErV(E`jgEIk{u(~n^uCS_>u0fH<8|chY)%Ob&jXCU9*|-- zTn~uL2P7;3q?!>+xP5drn`GULvlQ!YGG#r?c3Dr8Sd8^DIkGgfvp6(hYxfovt_t4L zxuO|(V<;~C8Na@opht%f28BoQtB+@Ht^aB$65LwliO|JCx68&jcjb^~iVk?J%fI%0 zsR4gZzqRDi&_khrZ9fn+kKGY^i5)ANm3M?rhU=wpgsmLm6O~rcTyvp^Ek5=? zc`sVCb^4Q`Ybu1-Kg_B5wc}ZI&2-p3&xCk8Z8q%)HMLc|E@Z|%AF3Gs@kRclPL(x- zd^KbLPw9l*oR<7A(B7YHEPKVA^J?fi6?0nc*<=2nO3(?$PqF_$@ZvqD{|lkwa1R~@ z8?W*Qt4X%bd@)ozm=OC)H6&{}%hj$6IeK4b=>W^FOC`RK%p`OG#8$WsaaQZv_|7r{D z55^z04}thJ&3v}7Lg&KY|L|Y@_JQ{l75y!a{*+fQJyk`&4ys?}(;u_ywTVD^#Ony~ zdfYPoZdW~z@JKGZuYRqev1L!%eEJ3bP5$qM6$Z9isK2It%>JU-Hp}#T-w#=~-7@`2 z_XNvgk8{zV_GVe8C%W*@`)k!q%XZj(_4ogMEPK{t{PLpCw!ekX*^Fnwy1-P>^OmUv zVhtmS8(DRI#OufIsJp$vO*KN#Y-mCC) zyYo4O1xO8X)G|FIZVuAxnB7_Zd$mV+)S%5*pZH>=zSdc)uH1>dM=q$ZzlN!D4bkhi zWh&z2D-1LO>d&*)*I}S`XpBCzT~ZmQea=PGVCw&~0F)Ux56!gss#tbD>^hjnL{-b0 zkS@0Qs>4*l3(y_5TJGX*Wg6Y7GEz@5e|43Rd zJ={k7>MxLEPv|(`vP)nOkk$ZgVp-v(1dkKwb%BL#NymPrx2a`%{%Wz!rw8LG*&g+= z>>^wTj-YSp8;$sjVd|zN^n((-TH1UaNV|Fhk}iW*Kn)N*#I?j`>}fM5!!T;|sD-9E82peMabtnBT`5NOxE$cyg9!#&xEbGbfy$4X7ix0Dql~~|LGMDJ`az`Go#MoLGG>_J9Z)(6%QrolMIvc9DCWR60O#&H(*BdrG< zXfW#0Ju0w2>HyPVoCu>1-lJ|KmSx#|1L04S)@!oOmqFTCmTlP}*sm&>S5E8+OoIt3 zSUAOI90ChjHr2ABFg-I;uUyM6BmI;|m>(<~M*Os8`gMI3GaS{Xo4VpNVbnh`LVs_k z$91T0^h_aTyd0emQ&V1H3mi%MJj>?Te4}7ZVQSuaHs5H{dR~oM<4ViMkd8f-XTD`) zVS2JphWh_13&)YJKw7T_mSvKzL|V;uwPoW;S5{4V#paI*r1yIyz(dCUZkkB^B2sHC zv@DDC)l^y!AJ(&t3e}pEP@#p3Y{tp3i(qPvYc0zr{TykX8&yPuvCsS1=>rn_G? z7zGDzu}pWr>Xx}M9WD>m@EG^o6*glP%^JM2hnbGcDqLVDE~_vkSleu0R-skl7*1g< zTF3yp8tK_Ti;$i!aSbX$3s3>lFLTaDbI=t?Pq65UdZQjl528pz-B5Sb6ZJw}P$$$G z>G2!w(1qwNJ$2<(T4WE}i(W%zNJ}WKm>xloB0YuWL8KMa2J|q}N=YlDNl2@qu}Hss zo`!m(bfguL7C-~gVAKt1p|cy6p;t9a?jg|yX=T$Dbwk}z52UGDQ?sUG-T(DWyZ4b6 z9EZ@S=m7c*eSqFZAEJXu>kq9hK0;b|Xfd-Ny^FMn`3L&se15!#-a(rC^*q84>5h-k zVe~Qj#H?Okp>E-qB)>vhFnxpGMeiXE2@Nd`B@G=76)l2hqbtxHG#AZ7SD^(+>zq^+ zLArs%1YO;iS)>!>(NqFjP!({+tEEp>!9wa2Ra*RZIg(qAO~r=5|7S8XP_{O zY8pAoS!g}79zBTeM;nkH^rfZ7X7mKo)S#(AO9)+idUD`*=%46&q$Pvy>MQV-Xcf8@ zX@zhz($gsQq{@Xz>*z)DYxz-x7NcvB{-%5$J{FBZ6VPasiN>Q*XdIe|(oj#-3w1|5 zkp7@JiY`U1P)pPiwMFev8*~XuLXi-6mkuO4q0Xo^YLAkU)-ZYs?+NrHI*CppJ^6P( z`UiRk9WVtqSGcrL%bTUB7%fA~k(M_%p%S#3hPfNvj#i>u(QU{eEpN_3l~D)<(eH3g z#5Z8e(TzwqpCWV(x)yaoDTvjrsZ~-Tp-@lxnU3^Op6BV=6-W=8(z@z>dQ88${{!*Q zq<=xbB0W0kDEbO%xueHzEkh5W`_VddAF4xTlJQok2C9jwqiU!T;&E_=f$bEiRmCr4 z){}`JCcP2ehHgc=87xP-0cgU%5oyJt8^>VOA7vmdd$fkrGD&N+k!Up15@`?`hqO++ z4D~}=iVfGar?plxIz{jOg0yrwiGD(Np?lGN=mE3=J%}Dc52KA}Ai5q6K~Hc3ThNn8 z52YQ6dZTpI4>d#0(YdGs@&`^3l$K3eC_ab^H}K;H`r<`okRC5}7Sj7}Jr=DA zu0QUojq0FtPy?jp&RTR2x)-fMnMex+ErGP+(E@V<(xOs}39Ux7`1qYN|3E?Ye+WV!I@VMq%^E&jCF(^7W;`W_ue`_P-{E%Y|h+U!~M z9C{w@L@%LTNDu4MpTs@S$?VVxp*v7*E$+1FlWRd(fUZDVfo35sceU2eMOt4^K{-gv z((%LN^ z=`rW2D2lWmAA+=2*UGa$`X@Su-a!Y@>u3+!i(W%oK5Knf1yx0DQ9JejRtn#V^qI-! zs4;4Ux^f^bVYM#TYV=F=G5Q33ijJVq&>{2z`VhU3-bL@BmpDLmR0EA69*f4Iqv&(= z5z5w@wHN);4-G+GkUpE4#YU|l3(&>rH44#_?><1&&~<1Dx&!qmzaDMVm2?8Cj4GiM z?DGK9TV)sBVn(m5kX%?m@(MHu%|%zD`RFRN09}oKpt$+yE)Km4tw5Q?laT)Jgo@|~ z*a@@iX2s(`3 zMZa@Sf1m(kIfz220{RyA9XgI?qXLwN^3jdxCUgV38{JirZm3D^RpXX`)~GRRi1cQ) zEz)~Yz4vT~+M_=>_(SMUv=u#yw9LN&tv~}%XB0(0{?{9M9SwaU(*IO&J9>;N>Hn8# zhMJ=b(KoPPsDd8qR}1OgWdah@o62+8Us8v}s(Zc`^XIYgBGeScHpE=#9ZNq=o%JrU z5;}u|;?N@$_67%j5xtD`B*A*9K5BrjW`8ZhRDP@+`E!(U7rIk-wPqv|Bnmu8A-mBv zWLk(+ffv|Tn{9PaEmRZLMfFfMR2|hoi^yAtyxOiajqRg&rS74;)@zpH72m1g(o3R^ z+BP!1msO}$sQZj2#4c>r4K{*QtqYLmEY0$b(2o@L1=^0bAkFBHq8y~^Yw4sVlpyc?rQLs5xqen%Y>b6>5nz&0K`E zUGF^PZLI5RX@@RFm!P&tWoaL6Q#!WK>DwY4-WBKEUWh+Fs8G8wcE~h{ZqvPy_B#FWIzk4LE1$jxQRzd`=~dMc zrl8Bw2&DYkXfm3F#v>hL3>u9_sbfcyP)4;;CK`vvqAWBKO+Yzl5uzKsCHU3&0yGtA z-vTrZ<)S<^8|mIN6U{)=Q9jbP`RGbC56w}DSCE*Cu0lmf2U&4LoD778-|`lccGO?6~svsRacJ}K?--qr&Ytg;vLG%Dxk2au=ltpn%`w8KvHJkk!&Ar&wTJ&R(M z+d*22pckwwEyY?vWof|vg#L-XLSLX`=wtK|`Vf7<@x7(j`}hI$4*Cb`kM^Su=r!~z zDnq+bDbgia3-5_K+E^_1+5_ABC$9W&p?&BL^g8mc|2IjzjZ~1*H=%<_JJd$+p?8tC zYn%Kq`UD+CpP^6D5%f9I_Ain4KaRdb-=MFNDlD!%->UxwV;N(a6rY~{o>&$85&eKp zpi}5F>%Zf_pP>B8C;J-!Hbw2NK8b1Q6Dsp0(#?Vs2$S# zz%x+T>|9%+TA|i6TGyO~5|D%9P$i^Ar5Y<9*GCG9tE1ZJ|7+|z;Ho&D|Kr|)3Mjol z5D^<9JRa~AqkxLo5CJ82#Gu9&3)l-_tg*K+cCi~P_TD>U?+vkc#jdFM|IXdLJY(>e zzn^@wcQ>=Mv$M0avwH_P0JeZNU-XP7nGfWUrq4lv=c5m0_=sqp&SK_1V#YEX~80O(==|E+nE52 z2Uw@Ez#jm2aU8&U@jaK50d|S00Q=4kl#7A+z&wCybAcH^2Jj~^9he3%Kl>i@5HOR+ zYYr}E1DqUlxd>PYEC4crme8HC9oO3c!w!52t~UW$z#3pVuoPGZ`~|EARsyR4ezron zUyE`BAk%-5nb+aL#=jrR&sgAkfSFmKp%Ope46p*+AS=Kn_m2Oa!}VF<3~(BtW=qsj zX@(ek5l^b3JA81!X?QV!gFmO`d^B?j^pUt{TYdl@0q=k-zl;AAtg;EJXPkP=WRZB_B+g0AF#W$#UZPZ<_JRB@?)EE1)I7L(&3ebHEZp+Mq0f(j4f7>vli_z~kIjDHBn0gB?+_ zQ~rXoJ;3xNzzNSfpk$sq0N0)5jsL9yCITaY5kOaOOkc0qlX!F85MJQzM^@y5w$ z;4tpz1BQfiE1s>#J?EQSaJ>)ZUce6R|0Cht3?lT95=xGyjBhhp&X6VoGl4tc<(23r z$}7MQ;4*Lu*bYnqjh`I>T)}@BNy( z=Ayg@a8LPp9$?_Pjq6*=^LnUzSD`&Z`4D&j+y`9MXdU2Fm_pot2HpX0fag4YpWuRL z44bw#z=}M>{ZoLKJ*M$6RL1kyxaNib1xkL-y!lG`3gt_H>##y^aUFw_@417YfCAtn z@Bw%ad`)92{;?o~0)~>GeGi^uya0VcX^9>c2Y4Ft)aNNH9faYT2ym~z;u)KpUl9lZ z-Wf;3^)ON;yn|z*?=Ri`B0h0@CW>WDu6Fg31EKa^}#jEn39GEl?^wzW`beNdHON4#Hds>Typ|xxaPef z^Rj}0-^eof5z7e1b5DRBmmQDW(BnR>J}NUKzv)! z3yK_Sjlzvbz9i}_`{P;1^6e|uLmi!;)=!JEr%B9bOMh)q2bw&k8@O}nCdy6Byd8D> zPkm0X(nPR|UT#*~QL2wvTzDi>Gau21PS+KS>k~}joseImXN|*;V`uFUOj7lJ0U>@m zRS}e6Kb_t$NY&kpe7CA~P`KSz^)O*!F^WE~b{19_qt9DW+7>6rZE7EL&*HK!ZHiOw zLAA4Ht8)Kv`B(qu^olA1;w0HJ7=6! z2Wi@2CBlE{apq3Hg+|vtC79^^0{sTS_+2e%&UT332{PO@y~@2C<#$y({ti817Fg<{ z1)TL2umTst9&XO{Bpi>7e>H03Tat_9lRF2EMwdcqpOJgf{EU7zl8fqw|z8uz1 z);wlgmsjs9WF;AEXhE?8rRI^Oy4QZMb=gP>D@EaGO&dZ~_P zMvi%)U{z0d8#gebX3cjxBc-VgSwb^|Ed`~Qnjg2OSY7zvdsOc$*yA3azKTLYwt}$O@tP9|0|&2ATqtK@0CZPOinx02Uib7iY~2s42D9|AWPflDbO5-!i&8QT~1y!4?69jo?`5Rd>(Ya}yz>s$W1= zziO(1kj`^$$qM&Mp6}LumZa-gIy4MD08Pg@QHulWC{1g{ID?&kD(Eu0Stomw(3%0& z*pTy`XfHT5e?b=OQE|nxw{O?4>&_fnKYb96Hk{}UWC#wlbmP}mp>dAMBUGapj=CwJEPU~)qZPE zTLt=$<&FmX!Ch6oHKaYPj>0cw8hTjmqIYnYbxZbprAzwybCzJD^{d7PQI!XUXaBhp z1s?|AY;{C13G&nV1%ndkPB{=EM7opf5p{x>!CSt!nYD?5Lf1=+u7bY@d1ysvA;g1D zAAwz(m4@BX!u}67l>*OiLiB*MN~>C@(&TXzBk52^o>bFkg)dlp%yB8d$(Zjr9DC5P*(lPX(9phq>}!N%!9MU9`x^u^SW)X-&4x+vs|sSrsubb_gAhGrKh-ZiGP3U6h^0~&b!;CG zf0~EvMN`>d_7o3sY|`8VOY0dUpURHTo;Dn=uEvtF`BxcQoG8jU?s{rr8XB% z_|wi)knis%nrw_8k9$al%Zn-dPIr~M z4Clw&Mt`b(2Gjd{RV5BBN09RYH2DlBn3CFQ9zz!EH6rZ1Tf@^wc^V-ovn)|Zx!}~> z>*UG%!EN>ir|~D$;0VULhI;Ox@D!YP<@~DqpXQAMg{L4W{yOqKYv{ZKwK}Wz_}41^ zt@)5`I@8JXYF8StRc$Tx(%_kzlW2wg|8=7O_}2F-r%8QbuTovrk@g%kyr<~Vz;SuE zz~^4a6+O_0_n`1{w14IepFxX8Xd6Lc2ZISe=#5+KytcDlzCa*LTSW-tgfiL8LZBGh^#BHtqEQ-V}_-du+)z_ z{=C&qUZesfsm`Eqm~*@5-YC+sA_qVu`+j=tM?xO~D7991HpPcXCHY%RSMGil) zpl~F3Y%}F`o`oCdbUHsNrX_|_)K&Dj3pm)vJ>v_$EX=dRUPTI`!Fp9nD5YOjcM^t% z(!;A*WR%oH7#B)0*U)NTB}sX^$ueWq*SMCF>_AS$Ww&qHsheS{9-)b)niQ^*OY@i)+`+;AK#K;G-n->2Di$Z8JVFe_Pum*KP* zHB7}?m~AZI!CblobNkv7>?kG|aS6$6n_MV;s1Ef5-TM^i6~Qn4%sNWp zQtx!CrQ@7XNkoGp=wPlo%Bj3!q7s&a3O4x-U21Jov96(6Z|M@%Z{iV;QPWeGZalf$ zZ<8cOns+NBDe)$H`zDg6-$ZYZ)T7%svEQ6tUyc+v>XTz0?hPqO_XZSw3%&onfo#ns z1s3z3?L8ZU1tP?+Do3U14Jb7aU0L3MPJ>fGO1d5r*nYWruwTuF8T?o#`oBdyzX?>@prPQ(J(9dtc?hw-Kg%J! zdF=VdZC@R`WfZ&hXNmzw+97aQL&oxfg*^i^-D-(Esi2xx7290y=9lg!S-rd>uA(mX zGu*8{pm3cJ1%o^9Z!vv|VA2*(IM9ti$$`h+>sHylCA_wwPE~nPTLcO(CLLNH*gwxI z(^N2-h$jxFc(krLJ!NH2;sGb_0p>5C_(a-^g2{F~;V9|Qf;=A~Iu)T3)>7!IDxzT} zId0Q}dT`wza9}08-9jFnryW|w->9)S0!quf8P&5Ev=em&C7TqWNB$4=;3O5YifBbK z0Q3lbT(lkvM-h79B#RAxv=xmFd*1=C0Z0MBZWr_yyt}0w|p3#m;*EJUsJEp^=i` zj(ne@52X@ijt%9+w%Ugy?Tj2%5-AZJ`Y3Q8)T48lH-KW!$MvhaUVCRxPb(p4QYQMJ?jg;4k^qDoYX)hlN zg%ykKlsx8G2P211d(u9G^m^dnep}r>6X5&#_-7+W5-1#0$0X0LaAQn^l156~&XoF0 z{ZL<`i#%Ba!WNesGTg>h8V{`72$rC5bU1l;SFafp-y%yeWRZV%p*hc?*%EN@gxljg z`|3~e&JDqViOBZe)P+tz$H?sMLgEXxPH)y#ZY4hP>DPkE?Qx6kL3bP1HGo@DtF4Yq(dPIUV<*SSv^ z5}geWWG&pi4m~Lx976A&)as==O8=p^ygudT?wPw%w<|1S3Z;P&mYwbc%R1 zZ%w}=M#`vUO5nP)z+nrHF57A>4>J4hzL8@UC>#i{4et~gka2aNk+L_LR-vxuoFaW? zWS6$dVHM^WIUXfb9!uxXEm?+-ZN)&7ad#FNIqX4U&AKNp{CaW9Hmm^#i}<9F-)qzj z1qW;PAfwN#1!3=Y7&&4)m{xTy{uW%fFmtK0v;`nJsjtz?R;x?g`x0+1PF;WhvP~mHAK`;T*-=Gz#JyyuczOB?8u+MX9@*Hi=tPj`4|-Bj|7KspqkN;}`F6U@!i zjrFxtx; z|4yw^u`%J+j|`(yAJm;R-oxd&X8n4&wNv??@@pE&8rtDB`2$9@E;zUcD=xHHad=#o zyt$PYh^CNt3^2 z%;cHH?^Tl;mIl~sH07X?{}e9F89}a};CK4b6b)_u)~ZNzNR29b3r|MSX4KSYjFGd* z9RnW6UXJ_{rt}`m{}09}AV_s`IC*@AdWSG9Y}&AdSN#g=%wMI{g%2wnLW8l?ojIG1 zl|A8fuzjpYK6S;1YD}^Mz z$aO%XU=6vBy7bOebfv@`wX>*KO`byQi-|hn;uN~iW!@BWEspZ_6pAh`I-8i$uf@e- z!4XsCaA$cjqt7|*4bEr+Y zoko@xq7Hx1Aj|?(H)?4C-U>7Ug=WZfS@9ib@BgwqW#eebMyACfbnJAxZUN&oqPG^} zFiiz8vYN-AnYO4^evclEf%0oF`He{x+G8o2qLD+Eklv6!a?zHmltdQ`NNMErN}I5t z#lK2*CF=~BLBEs~qlDozD2q$zT38agHl=`4VxU{o+4AI_I?=UO#JYKFQITx}vkH_} z3Y{rQGfRn$^%LgEe8VsPT>ehq2pg#v{6Nq$yU7|?IR^}YiSfPIc z1zU-Yg$Z+LgcXeKDAeBGu;YjE%i zi`JfHQa(7`-hqST*O$dl=J{+1>j@6U1R>aQh-wpkkA*Tv)2}h=S|vSjAP9}IQNvHD zD3nPv>vewRw!&Y^G$ga6FU)8lI(P(xsK$ba4YWDFrPJ%0R=cFy(h*%Fnq(`wxJ?HG zr>jF6KkboG>?2OokgiCbkljtlTu8aLqO*QA7FrTj|l!Z+i zE}7oH{YxX|_G+5wi~($e(*<^gRwi?YY}kOskN*SDLdD3jvYOg;J@PW6y zF`TfTp7T3Y9HtF%h4Uzi>m8KCmuUa}3th4g*h4KGd9V>$Y><7k?t!GF6BS-3OB6|A z$SQ<+1RSY2yWwaaZvfNXV6M?Hmo?1wG4M<0ktwS?3euZxSX3(?)!`MH8~hmOc!Eak zq#uZo!|PAAhS|?`vt0+E0X|LQ__j$Fbm;iwO{wjodK+zpaD`yxOq(@gX9351p6(dp zv72QoJ~y&$tK7)Oj~-Vir_bAp zMym1$Og^#`#&4sY>md#kMr|X{(xRs@a~stzjX_$njrx@q(>4AcvZto}QNM8G67L~W2PHq0 zUx_=IV!V*g`Fdg$irmEp@aaHk3MGO=KOsd{XWzXk%k7-%y_a$niKEDTPNK9;rZrr5 zZ?YWA7XFpm^?C7fXN`4>%;%)K$mc$@W<}<65=T%nY0E(RC`h-5Dfg?M*DL=>2scV! zrBME{1DEQmQYe+{`k+@__ZP>{C9F!@zcbb?GM|&`BA?4aT}_esoW$XgoZ$uGMIIhV z3`M4M62(4+qEXlF5ma}AVrLduyC1ChsEJWAcN*q}KwF8*go+N7~?!0X)dHP`TnR$zeB`glf5zn2@RQkIQ zrFlL$gTiTJz1!XE`s~{xA3{qrr9AEO25&I6uYe+gUh-WtnqL#W_bexhnvSSyi>gl^ z&YIQK{{V+kC0O@AMB(KyQsco<8XPSLE#CFkA$N_e9XGr35cMgC^{0qad0w$GL$tK7 z92%@a*HFYnAI4X(+}6sDOXi)OzuDN&gd=j;51g7bXy4q-p@K;)o|FV{SCs5yPkw6O z{+KSh1nOX@{i+74QjbtxxacT`sPHR(6UvJ^zaLLp!!HKzIpdU7>X<09HhFu5c9$1D z4VH1BurSfVltYL#f(~YUDVv`^@|8x)Ngbk+EZG>tY+@V(Q$4a1#nO_Aoz#IU*~n&k zMAxmwsXMO(%2zeAk2uhvilWCq1%W$ICBLMBE_g34opC#=gVDa!ohH2>fC(K`7hyYwmNB1F1U-q25-~Hp$MgZ*G;If>8Wckz$-5*%02MM`t>XDO{-x)lz*AR!SP=#_f3k?qu~vC)KxD=2-$g*#m|+OdSamJ^ex&OhY|hp3GtO%I?FJ4$l~TF24y@BR2xspGj$wCcFE|9cOINFj z1OB&_dW1mMf7+48#)-B<{d<%T_V3H$_3uf)6(OBGy+tRgRb6x!rroE+>X-#Zrr7vM zPg&=Xrtr0#zIaO4MJCpuXjM^kt2*|Yjt}TFL<{8}kmFDAx+10`pN1hc$WzfF1TMPi zfgFt&b?w)8U}0-_*?BpD8~}yq{P3)fr+h-1aB9PwIE3F54=4u>$k~jN+wcmmH!OvE zc};dwYvtveS8Zvr)XE%6BE-unr(w$15#KJn_%l1AMoUXFM;9v*=*vL4pdk}x zyc)8ezZaACAv)FgL-f2R3|w?(#&xCj+Qmd#h*?D`v2arB45@}r)sg-P73< ze=;)4+TxFgAY*ZH8}mf|YPDzTw7OT8`J9kd;Ppw#L}j_6?jOm_K2()c9|y`06GfQd z`$xewkgeIGbB8r{g>xTSIU74ybRHLkuePOp&jBBy2dK)#(|~Zql7FXm1yBEHY8Qmx ziX^3W&H@s<0?06Y6QeIGjg!wQ>bH^2@X@AYx5A(kGbJ}+GppiW&=CHfrtJ&Ls0DwF z%U9y$ve3QvNB)9T({Svjgc?Cf5rnJxq^m9Z{BZi&n2;v7p85G0o$7)kNCD>*_yv;R4p>1(Ocp@`!%FSVP)ClCjV| zMoKm+&qZbT+hB19%NhNK+IvpEN-(k%faMHWLhU}wabo+dj?VR_cRgTa@dJgwXNjK_ z{`;DSx62wSla-$u?4=@~7GghZEux|&I7d_q&M_HKs*rlM5VdLFKTQmkjeJDiVMXbk z%{4)h@{*-ZiS99FE;$HRi{Jrc`HMMs2a!!{0nrf!*8~EZA?s*X3SDn1H(o&bSKru!hhr_@1soKwf_|=rYNy+U~ zI;u7w>SZyzu|x6`(E0H1TKwR}%~yK5yu&?rW0+HXsjv1yxk9XR1Q^n;X;{DNmr{P= z=J82ixZBQxVYa?i@t&U*p62~^l+Yl1Ngoqg0b$P{{VH5bJMu4vNL1hk%!ePklhnEC z_U{FBOzG7=84Bjq4&DB#UhBQ_zsm|79lQSXftc8(9dXY~|D8U+cd_o!;95`I+u?pm zx7Oo2)vKlPT`bebrM3v07EyLdvK|jOMtq%f((lD&mzNO=!=8>=Wz3G>&5u^-ckU>zb7YUv3xAv&Ft={dZ7uTMB#dKoB{<+yb%W-s8x$mdf_jGei6h7MUKbCklE#+&< zcXZ2gnJQ7Te7CRSmL09d8bXO*`u3>OXJD_6DHN66x08{DoIJcrd=q1s#tbQ!}j9Rv9#vC=tlV& zq9uh-6CLm;xo%AqJ-1wZCfbBj)v~5;+=%CvJHDp7%czl5(Bf#*DwIA?ERMgrW_p3D tcQY-U;cseAF&#|Jwq&<6y<)nhZ8y_0CRAyJsM)fpqp4s@3uX&5{tv?jW^@1m delta 77678 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 From e9aecd1965984fa0a765556593e31456b1acf8fa Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 18 Jan 2025 04:13:23 +0700 Subject: [PATCH 21/28] re-patch three-stdlib --- bun.lockb | Bin 327683 -> 327872 bytes package.json | 3 ++ patches/three-stdlib@2.35.2.patch | 79 ++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 patches/three-stdlib@2.35.2.patch diff --git a/bun.lockb b/bun.lockb index d43d91ec7c8b8f20bf1f40af1c1afa20a9bb43c9..c0a8020208e618b6bb840a4f7eb20ec685dd7e8b 100755 GIT binary patch delta 230 zcmZo}5IN8&GQp48fPu9!ur-jeHIS(_ka=n#i#lV^)=HL7|LO}8OOi8Ei}gz~ic(W` zi%U{+GLsyP^o&jQjP$^A3{X(uSmK=Fn&NWeKMPpo0+i;mDK#^(Q?O7d&a6t!PtyUi z5_2-s^YYWU81&2SR_2Qaxk)gvg7pBM0j9ZZii?u@GQp3z_&-ZyU~3>_Yaml=AoJ8f7Int#t(7dF{!L$)!ZZT_A~_E8 diff --git a/package.json b/package.json index d303db7..f189f17 100644 --- a/package.json +++ b/package.json @@ -58,5 +58,8 @@ "bun-types": "^1.1.40", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" + }, + "patchedDependencies": { + "three-stdlib@2.35.2": "patches/three-stdlib@2.35.2.patch", } } diff --git a/patches/three-stdlib@2.35.2.patch b/patches/three-stdlib@2.35.2.patch new file mode 100644 index 0000000..b6206e2 --- /dev/null +++ b/patches/three-stdlib@2.35.2.patch @@ -0,0 +1,79 @@ +diff --git a/index.cjs b/index.cjs +index 547f85cd7080b51b26bc2bb3a487ff4ef9a85f5d..88bb86d246f415594dded65007c03f986903f0ea 100644 +--- a/index.cjs ++++ b/index.cjs +@@ -204,7 +204,6 @@ const KMZLoader = require("./loaders/KMZLoader.cjs"); + const VRMLoader = require("./loaders/VRMLoader.cjs"); + const VRMLLoader = require("./loaders/VRMLLoader.cjs"); + const KTX2Loader = require("./loaders/KTX2Loader.cjs"); +-const LottieLoader = require("./loaders/LottieLoader.cjs"); + const TTFLoader = require("./loaders/TTFLoader.cjs"); + const RGBELoader = require("./loaders/RGBELoader.cjs"); + const AssimpLoader = require("./loaders/AssimpLoader.cjs"); +@@ -530,7 +529,6 @@ exports.KMZLoader = KMZLoader.KMZLoader; + exports.VRMLoader = VRMLoader.VRMLoader; + exports.VRMLLoader = VRMLLoader.VRMLLoader; + exports.KTX2Loader = KTX2Loader.KTX2Loader; +-exports.LottieLoader = LottieLoader.LottieLoader; + exports.TTFLoader = TTFLoader.TTFLoader; + exports.RGBELoader = RGBELoader.RGBELoader; + exports.AssimpLoader = AssimpLoader.AssimpLoader; +diff --git a/index.d.ts b/index.d.ts +index 9b30bc6f5f142f309e862c7f5eb80c3e640238b1..edc669e4e401b49f36e6aa399882df273f0cd717 100644 +--- a/index.d.ts ++++ b/index.d.ts +@@ -203,7 +203,6 @@ export * from './loaders/KMZLoader'; + export * from './loaders/VRMLoader'; + export * from './loaders/VRMLLoader'; + export * from './loaders/KTX2Loader'; +-export * from './loaders/LottieLoader'; + export * from './loaders/TTFLoader'; + export * from './loaders/RGBELoader'; + export * from './loaders/AssimpLoader'; +diff --git a/index.js b/index.js +index a457f0619459b0bc0076b2dfd56c5040cff3a063..8ec63e031281b1f226000a5719d1fe1ff454b256 100644 +--- a/index.js ++++ b/index.js +@@ -202,7 +202,6 @@ import { KMZLoader } from "./loaders/KMZLoader.js"; + import { VRMLoader } from "./loaders/VRMLoader.js"; + import { VRMLLoader } from "./loaders/VRMLLoader.js"; + import { KTX2Loader } from "./loaders/KTX2Loader.js"; +-import { LottieLoader } from "./loaders/LottieLoader.js"; + import { TTFLoader } from "./loaders/TTFLoader.js"; + import { RGBELoader } from "./loaders/RGBELoader.js"; + import { AssimpLoader } from "./loaders/AssimpLoader.js"; +@@ -401,7 +400,6 @@ export { + LineMaterial, + LineSegments2, + LineSegmentsGeometry, +- LottieLoader, + LuminosityHighPassShader, + LuminosityShader, + Lut, +diff --git a/libs/lottie.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs +deleted file mode 100644 +index 7d8aefea8e7830ebaef2d3f9ea5f48d30e9e0852..0000000000000000000000000000000000000000 +diff --git a/libs/lottie.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs.map +deleted file mode 100644 +index 12de44a8d95d72d5b155a21b3b716c8162772499..0000000000000000000000000000000000000000 +diff --git a/libs/lottie.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js +deleted file mode 100644 +index 9ade8c1378595d3d06077fd9f701ed8a5837f0b3..0000000000000000000000000000000000000000 +diff --git a/libs/lottie.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js.map +deleted file mode 100644 +index 0ea7ed76e0831e22f21b051d42c4fd1a842fbded..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs +deleted file mode 100644 +index 41b1339e75c0ae4fb08e22580e9bf951f301bd06..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs.map +deleted file mode 100644 +index 083b3ee89eeb470fbffb943fddddeffc1032ff89..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.d.ts b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.d.ts +deleted file mode 100644 +index 951cd679fff328cb4240544a312048d7fc730b4f..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js +deleted file mode 100644 +index 20cfe9afedc3d2a0e28e842dd08c6a18e3d2840b..0000000000000000000000000000000000000000 +diff --git a/loaders/LottieLoader.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js.map +deleted file mode 100644 +index 2e878490e0404e12ac604f54b07b85402b37a1d5..0000000000000000000000000000000000000000 From 6d1a01bdf171358e9db26b9c0fa75cffaae1732d Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sat, 18 Jan 2025 04:17:54 +0700 Subject: [PATCH 22/28] type :p --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f189f17..c377c5f 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,6 @@ "transformation-matrix": "^2.16.1" }, "patchedDependencies": { - "three-stdlib@2.35.2": "patches/three-stdlib@2.35.2.patch", + "three-stdlib@2.35.2": "patches/three-stdlib@2.35.2.patch" } } From d7d35791b0b070481706c17de0d722423f5fd4df Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 19 Jan 2025 07:09:11 +0700 Subject: [PATCH 23/28] (new) patch three-stdlib https://github.com/pmndrs/three-stdlib/pull/398 --- bun.lockb | Bin 327872 -> 327872 bytes patches/three-stdlib@2.35.2.patch | 116 ++++++++++-------------------- 2 files changed, 37 insertions(+), 79 deletions(-) diff --git a/bun.lockb b/bun.lockb index c0a8020208e618b6bb840a4f7eb20ec685dd7e8b..d4265cdb04aad49a9baeaccb8e7d20470491137c 100755 GIT binary patch delta 32 ocmX@mC~}}tq@jheg{g(Pg=Gq>2FJ_N7kO-nGvlT&OktV;0LYLGP5=M^ delta 32 ocmX@mC~}}tq@jheg{g(Pg=Gq>28XfjzNw!Jcb}WSFokIX0LaY@>;M1& diff --git a/patches/three-stdlib@2.35.2.patch b/patches/three-stdlib@2.35.2.patch index b6206e2..e5bf094 100644 --- a/patches/three-stdlib@2.35.2.patch +++ b/patches/three-stdlib@2.35.2.patch @@ -1,79 +1,37 @@ -diff --git a/index.cjs b/index.cjs -index 547f85cd7080b51b26bc2bb3a487ff4ef9a85f5d..88bb86d246f415594dded65007c03f986903f0ea 100644 ---- a/index.cjs -+++ b/index.cjs -@@ -204,7 +204,6 @@ const KMZLoader = require("./loaders/KMZLoader.cjs"); - const VRMLoader = require("./loaders/VRMLoader.cjs"); - const VRMLLoader = require("./loaders/VRMLLoader.cjs"); - const KTX2Loader = require("./loaders/KTX2Loader.cjs"); --const LottieLoader = require("./loaders/LottieLoader.cjs"); - const TTFLoader = require("./loaders/TTFLoader.cjs"); - const RGBELoader = require("./loaders/RGBELoader.cjs"); - const AssimpLoader = require("./loaders/AssimpLoader.cjs"); -@@ -530,7 +529,6 @@ exports.KMZLoader = KMZLoader.KMZLoader; - exports.VRMLoader = VRMLoader.VRMLoader; - exports.VRMLLoader = VRMLLoader.VRMLLoader; - exports.KTX2Loader = KTX2Loader.KTX2Loader; --exports.LottieLoader = LottieLoader.LottieLoader; - exports.TTFLoader = TTFLoader.TTFLoader; - exports.RGBELoader = RGBELoader.RGBELoader; - exports.AssimpLoader = AssimpLoader.AssimpLoader; -diff --git a/index.d.ts b/index.d.ts -index 9b30bc6f5f142f309e862c7f5eb80c3e640238b1..edc669e4e401b49f36e6aa399882df273f0cd717 100644 ---- a/index.d.ts -+++ b/index.d.ts -@@ -203,7 +203,6 @@ export * from './loaders/KMZLoader'; - export * from './loaders/VRMLoader'; - export * from './loaders/VRMLLoader'; - export * from './loaders/KTX2Loader'; --export * from './loaders/LottieLoader'; - export * from './loaders/TTFLoader'; - export * from './loaders/RGBELoader'; - export * from './loaders/AssimpLoader'; -diff --git a/index.js b/index.js -index a457f0619459b0bc0076b2dfd56c5040cff3a063..8ec63e031281b1f226000a5719d1fe1ff454b256 100644 ---- a/index.js -+++ b/index.js -@@ -202,7 +202,6 @@ import { KMZLoader } from "./loaders/KMZLoader.js"; - import { VRMLoader } from "./loaders/VRMLoader.js"; - import { VRMLLoader } from "./loaders/VRMLLoader.js"; - import { KTX2Loader } from "./loaders/KTX2Loader.js"; --import { LottieLoader } from "./loaders/LottieLoader.js"; - import { TTFLoader } from "./loaders/TTFLoader.js"; - import { RGBELoader } from "./loaders/RGBELoader.js"; - import { AssimpLoader } from "./loaders/AssimpLoader.js"; -@@ -401,7 +400,6 @@ export { - LineMaterial, - LineSegments2, - LineSegmentsGeometry, -- LottieLoader, - LuminosityHighPassShader, - LuminosityShader, - Lut, -diff --git a/libs/lottie.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs -deleted file mode 100644 -index 7d8aefea8e7830ebaef2d3f9ea5f48d30e9e0852..0000000000000000000000000000000000000000 -diff --git a/libs/lottie.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.cjs.map -deleted file mode 100644 -index 12de44a8d95d72d5b155a21b3b716c8162772499..0000000000000000000000000000000000000000 -diff --git a/libs/lottie.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js -deleted file mode 100644 -index 9ade8c1378595d3d06077fd9f701ed8a5837f0b3..0000000000000000000000000000000000000000 -diff --git a/libs/lottie.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/libs/lottie.js.map -deleted file mode 100644 -index 0ea7ed76e0831e22f21b051d42c4fd1a842fbded..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.cjs b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs -deleted file mode 100644 -index 41b1339e75c0ae4fb08e22580e9bf951f301bd06..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.cjs.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.cjs.map -deleted file mode 100644 -index 083b3ee89eeb470fbffb943fddddeffc1032ff89..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.d.ts b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.d.ts -deleted file mode 100644 -index 951cd679fff328cb4240544a312048d7fc730b4f..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.js b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js -deleted file mode 100644 -index 20cfe9afedc3d2a0e28e842dd08c6a18e3d2840b..0000000000000000000000000000000000000000 -diff --git a/loaders/LottieLoader.js.map b/home/wildan/.cache/.bun/install/cache/three-stdlib@2.35.2@@@1/loaders/LottieLoader.js.map -deleted file mode 100644 -index 2e878490e0404e12ac604f54b07b85402b37a1d5..0000000000000000000000000000000000000000 +diff --git a/libs/lottie.js b/libs/lottie.js +index 9ade8c1378595d3d06077fd9f701ed8a5837f0b3..d3efeb505809a869488796cb8cd277e1a4980d23 100644 +--- a/libs/lottie.js ++++ b/libs/lottie.js +@@ -1044,15 +1044,7 @@ const lottie = (() => { + }; + }(); + const ImagePreloader = function() { +- var proxyImage = function() { +- var canvas = createTag("canvas"); +- canvas.width = 1; +- canvas.height = 1; +- var ctx = canvas.getContext("2d"); +- ctx.fillStyle = "rgba(0,0,0,0)"; +- ctx.fillRect(0, 0, 1, 1); +- return canvas; +- }(); ++ var proxyImage + function imageLoaded() { + this.loadedAssets += 1; + if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { +@@ -1218,6 +1210,15 @@ const lottie = (() => { + } + } + function ImagePreloaderFactory() { ++ proxyImage = function() { ++ var canvas = createTag("canvas"); ++ canvas.width = 1; ++ canvas.height = 1; ++ var ctx = canvas.getContext("2d"); ++ ctx.fillStyle = "rgba(0,0,0,0)"; ++ ctx.fillRect(0, 0, 1, 1); ++ return canvas; ++ }(); + this._imageLoaded = imageLoaded.bind(this); + this._footageLoaded = footageLoaded.bind(this); + this.testImageLoaded = testImageLoaded.bind(this); From 626decfc62de8df39d2ab879f211de54148ec3ac Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 19 Jan 2025 07:34:17 +0700 Subject: [PATCH 24/28] export `circuit-to-svg/3d` --- lib/3d.ts | 1 + lib/index.ts | 1 - package.json | 11 ++++++++--- 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 lib/3d.ts diff --git a/lib/3d.ts b/lib/3d.ts new file mode 100644 index 0000000..0122fd5 --- /dev/null +++ b/lib/3d.ts @@ -0,0 +1 @@ +export * from "./3d/convert-circuit-json-to-schematic-svg" diff --git a/lib/index.ts b/lib/index.ts index 84bfbb8..2e355eb 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,4 +1,3 @@ export * from "./pcb/convert-circuit-json-to-pcb-svg" export * from "./assembly/convert-circuit-json-to-assembly-svg" export * from "./sch/convert-circuit-json-to-schematic-svg" -export * from "./3d/convert-circuit-json-to-schematic-svg" diff --git a/package.json b/package.json index c377c5f..fa7dfaa 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,17 @@ "type": "module", "version": "0.0.101", "description": "Convert Circuit JSON to SVG", - "main": "dist/index.js", + "exports": { + ".": "./dist/index.js", + "./3d": "./dist/3d.js" + }, "files": [ "dist" ], "scripts": { "start": "storybook dev -p 6006", "prepublish": "npm run build", - "build": "tsup-node ./lib/index.ts --format esm --dts --sourcemap", + "build": "tsup-node ./lib/{index,3d}.ts --format esm --dts --sourcemap", "format": "biome format . --write", "format:check": "biome format .", "storybook": "storybook dev -p 6006", @@ -49,8 +52,10 @@ "circuit-json": "*", "schematic-symbols": "*" }, + "optionalDependencies": { + "@tscircuit/3d-viewer": "github:tscircuit/3d-viewer#v0.0.81" + }, "dependencies": { - "@tscircuit/3d-viewer": "github:tscircuit/3d-viewer#v0.0.81", "@tscircuit/footprinter": "^0.0.91", "@tscircuit/routing": "^1.3.5", "@tscircuit/soup-util": "^0.0.41", From 28500dee6a2c7861df5413037f333cc49c27aeaf Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 19 Jan 2025 07:42:10 +0700 Subject: [PATCH 25/28] update import statement in ./tests/3d/ --- tests/3d/resistor-capacitor.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/3d/resistor-capacitor.test.tsx b/tests/3d/resistor-capacitor.test.tsx index 15a202a..c815778 100644 --- a/tests/3d/resistor-capacitor.test.tsx +++ b/tests/3d/resistor-capacitor.test.tsx @@ -1,5 +1,5 @@ import { expect, test } from "bun:test" -import { convertCircuitJsonTo3dSvg } from "lib" +import { convertCircuitJsonTo3dSvg } from "lib/3d" import { getTestFixture } from "tests/fixtures/get-test-fixture" const Components = ({ id = "", layer = "top" as "top" | "bottom" } = {}) => ( From 906c7410ae03338e3fd644951e8e08ab835cac2c Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 19 Jan 2025 07:45:42 +0700 Subject: [PATCH 26/28] cherry pick which THREE object being used as R3F element --- lib/3d/convert-circuit-json-to-schematic-svg.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 1146df8..51e91b8 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -12,7 +12,7 @@ import { flushSync, type RenderProps, } from "@react-three/fiber/dist/react-three-fiber.esm.js" -import * as THREE from "three" +import { Object3D, Group, Mesh, MeshStandardMaterial, AmbientLight, PointLight } from "three" interface Options { width?: number @@ -24,7 +24,8 @@ export function convertCircuitJsonTo3dSvg( soup: AnyCircuitElement[], { width = 1200, height = 600, camera } = {} as Options, ): string[] { - extend(THREE) + extend({ Object3D, Group, Mesh, MeshStandardMaterial, AmbientLight, PointLight }) + const boardGeom = createBoardGeomFromSoup(soup as AnySoupElement[]) const boardStls = createStlsFromGeom(boardGeom) const cad_components = su(soup).cad_component.list() From d0b489e818b4e8a80a4da2f95e963ef954070d27 Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Sun, 19 Jan 2025 07:47:32 +0700 Subject: [PATCH 27/28] `bunx biome format . --fix` --- .../convert-circuit-json-to-schematic-svg.tsx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/3d/convert-circuit-json-to-schematic-svg.tsx b/lib/3d/convert-circuit-json-to-schematic-svg.tsx index 51e91b8..a477144 100644 --- a/lib/3d/convert-circuit-json-to-schematic-svg.tsx +++ b/lib/3d/convert-circuit-json-to-schematic-svg.tsx @@ -12,7 +12,14 @@ import { flushSync, type RenderProps, } from "@react-three/fiber/dist/react-three-fiber.esm.js" -import { Object3D, Group, Mesh, MeshStandardMaterial, AmbientLight, PointLight } from "three" +import { + Object3D, + Group, + Mesh, + MeshStandardMaterial, + AmbientLight, + PointLight, +} from "three" interface Options { width?: number @@ -24,7 +31,14 @@ export function convertCircuitJsonTo3dSvg( soup: AnyCircuitElement[], { width = 1200, height = 600, camera } = {} as Options, ): string[] { - extend({ Object3D, Group, Mesh, MeshStandardMaterial, AmbientLight, PointLight }) + extend({ + Object3D, + Group, + Mesh, + MeshStandardMaterial, + AmbientLight, + PointLight, + }) const boardGeom = createBoardGeomFromSoup(soup as AnySoupElement[]) const boardStls = createStlsFromGeom(boardGeom) From fd2e2d7ca957a15c926054ea83a5a40dccc8a50c Mon Sep 17 00:00:00 2001 From: Fahmi Akbar Wildana Date: Mon, 27 Jan 2025 13:10:13 +0700 Subject: [PATCH 28/28] remove three-stdlib patches and update lockfile https://github.com/pmndrs/three-stdlib/pull/398#issuecomment-2600994066 --- bun.lockb | Bin 327872 -> 293635 bytes package.json | 3 --- patches/three-stdlib@2.35.2.patch | 37 ------------------------------ 3 files changed, 40 deletions(-) delete mode 100644 patches/three-stdlib@2.35.2.patch diff --git a/bun.lockb b/bun.lockb index d4265cdb04aad49a9baeaccb8e7d20470491137c..8e9a822211515822b972f2c973e2bb22a890d3cb 100755 GIT binary patch delta 79832 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 delta 99864 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 diff --git a/package.json b/package.json index fa7dfaa..5a2d18e 100644 --- a/package.json +++ b/package.json @@ -63,8 +63,5 @@ "bun-types": "^1.1.40", "svgson": "^5.3.1", "transformation-matrix": "^2.16.1" - }, - "patchedDependencies": { - "three-stdlib@2.35.2": "patches/three-stdlib@2.35.2.patch" } } diff --git a/patches/three-stdlib@2.35.2.patch b/patches/three-stdlib@2.35.2.patch deleted file mode 100644 index e5bf094..0000000 --- a/patches/three-stdlib@2.35.2.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/libs/lottie.js b/libs/lottie.js -index 9ade8c1378595d3d06077fd9f701ed8a5837f0b3..d3efeb505809a869488796cb8cd277e1a4980d23 100644 ---- a/libs/lottie.js -+++ b/libs/lottie.js -@@ -1044,15 +1044,7 @@ const lottie = (() => { - }; - }(); - const ImagePreloader = function() { -- var proxyImage = function() { -- var canvas = createTag("canvas"); -- canvas.width = 1; -- canvas.height = 1; -- var ctx = canvas.getContext("2d"); -- ctx.fillStyle = "rgba(0,0,0,0)"; -- ctx.fillRect(0, 0, 1, 1); -- return canvas; -- }(); -+ var proxyImage - function imageLoaded() { - this.loadedAssets += 1; - if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) { -@@ -1218,6 +1210,15 @@ const lottie = (() => { - } - } - function ImagePreloaderFactory() { -+ proxyImage = function() { -+ var canvas = createTag("canvas"); -+ canvas.width = 1; -+ canvas.height = 1; -+ var ctx = canvas.getContext("2d"); -+ ctx.fillStyle = "rgba(0,0,0,0)"; -+ ctx.fillRect(0, 0, 1, 1); -+ return canvas; -+ }(); - this._imageLoaded = imageLoaded.bind(this); - this._footageLoaded = footageLoaded.bind(this); - this.testImageLoaded = testImageLoaded.bind(this);