@codefrydev/svg-engine 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,28 @@
1
+ import React$1 from 'react';
2
+ import { R as RendererProps, E as ElementRenderer } from './types-BTYLCn9x.cjs';
3
+ export { a as Element, b as ElementType, P as Preset, T as ToolCategory, c as ToolDef } from './types-BTYLCn9x.cjs';
4
+
5
+ declare const Renderer: React$1.FC<RendererProps>;
6
+
7
+ declare const GRID_SIZE = 20;
8
+ declare const snap: (val: number, gridSize?: number) => number;
9
+ declare const distance: (x1: number, y1: number, x2: number, y2: number) => number;
10
+ declare const angleDeg: (x1: number, y1: number, x2: number, y2: number) => number;
11
+ declare const getBounds: (x1: number, y1: number, x2: number, y2: number) => {
12
+ minX: number;
13
+ minY: number;
14
+ maxX: number;
15
+ maxY: number;
16
+ width: number;
17
+ height: number;
18
+ };
19
+ declare const getMouseCoords: (svg: SVGSVGElement, e: MouseEvent | React.MouseEvent) => {
20
+ x: number;
21
+ y: number;
22
+ };
23
+
24
+ declare const registerRenderer: (type: string, renderer: ElementRenderer) => void;
25
+ declare const getRenderer: (type: string) => ElementRenderer | undefined;
26
+ declare const hasRenderer: (type: string) => boolean;
27
+
28
+ export { GRID_SIZE, Renderer, RendererProps, angleDeg, distance, getBounds, getMouseCoords, getRenderer, hasRenderer, registerRenderer, snap };
@@ -0,0 +1,28 @@
1
+ import React$1 from 'react';
2
+ import { R as RendererProps, E as ElementRenderer } from './types-BTYLCn9x.js';
3
+ export { a as Element, b as ElementType, P as Preset, T as ToolCategory, c as ToolDef } from './types-BTYLCn9x.js';
4
+
5
+ declare const Renderer: React$1.FC<RendererProps>;
6
+
7
+ declare const GRID_SIZE = 20;
8
+ declare const snap: (val: number, gridSize?: number) => number;
9
+ declare const distance: (x1: number, y1: number, x2: number, y2: number) => number;
10
+ declare const angleDeg: (x1: number, y1: number, x2: number, y2: number) => number;
11
+ declare const getBounds: (x1: number, y1: number, x2: number, y2: number) => {
12
+ minX: number;
13
+ minY: number;
14
+ maxX: number;
15
+ maxY: number;
16
+ width: number;
17
+ height: number;
18
+ };
19
+ declare const getMouseCoords: (svg: SVGSVGElement, e: MouseEvent | React.MouseEvent) => {
20
+ x: number;
21
+ y: number;
22
+ };
23
+
24
+ declare const registerRenderer: (type: string, renderer: ElementRenderer) => void;
25
+ declare const getRenderer: (type: string) => ElementRenderer | undefined;
26
+ declare const hasRenderer: (type: string) => boolean;
27
+
28
+ export { GRID_SIZE, Renderer, RendererProps, angleDeg, distance, getBounds, getMouseCoords, getRenderer, hasRenderer, registerRenderer, snap };
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ import {
2
+ GRID_SIZE,
3
+ Renderer,
4
+ angleDeg,
5
+ distance,
6
+ getBounds,
7
+ getMouseCoords,
8
+ getRenderer,
9
+ hasRenderer,
10
+ registerRenderer,
11
+ snap
12
+ } from "./chunk-KRCGD3CL.js";
13
+ export {
14
+ GRID_SIZE,
15
+ Renderer,
16
+ angleDeg,
17
+ distance,
18
+ getBounds,
19
+ getMouseCoords,
20
+ getRenderer,
21
+ hasRenderer,
22
+ registerRenderer,
23
+ snap
24
+ };
@@ -0,0 +1,100 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ type ElementType = "select" | "point" | "text" | "line" | "string" | "surface" | "cart" | "disk" | "com" | "particle" | "pivot" | "dashed" | "dashed_line" | "vector" | "ray" | "ground" | "table_edge" | "block" | "sphere" | "shell" | "cylinder" | "slab" | "semicircle" | "quarter_circle" | "cone" | "curved_wedge" | "incline" | "ladder" | "spring" | "pulley" | "rod" | "hinge" | "arc" | "arc_arrow" | "container" | "pipe" | "liquid" | "orbit" | "wire" | "resistor" | "capacitor" | "inductor" | "diode" | "battery" | "meter_v" | "meter_a" | "piston_cylinder" | "heat_engine" | "conduction_rod" | "pv_axes" | "thermo_process" | "carnot_cycle" | "maxwell_boltzmann" | "diatomic_gas" | "random_walk" | "lens_convex" | "lens_concave" | "mirror_concave" | "mirror_convex" | "prism" | "glass_slab" | "slit_double" | "slit_single" | "photon" | "nucleus" | "wedge" | "dimension" | "axes" | "pole_piece" | "b_field_line" | "b_field_curve" | "bezier" | "b_region_in" | "b_region_out" | "current_wire" | "bar_magnet" | "coil" | "meter" | "ac_source" | "axes_3d" | "charge_pos" | "charge_neg" | "dipole" | "charged_plate_pos" | "charged_plate_neg" | "gaussian_sphere" | "gaussian_cylinder" | "mirror_plane" | "energy_level" | "circle" | "ellipse" | "rectangle" | "angle" | "parabola_v" | "parabola_h" | "hyperbola" | "modulus" | "exponential" | "logarithmic" | "sine_wave" | "step_function" | "shaded_area" | "atom" | "charge_plus" | "charge_minus" | "benzene" | "cyclohexane" | "cyclopentane" | "cyclobutane" | "cyclopropane" | "radical" | "lone_pair"
4
+ /** Rotation preset / reference/Rotation.html */
5
+ | "point_mass" | "block_mass" | "com_indicator" | "system_boundary" | "dashed_path" | "rocket" | "uniform_rod" | "solid_disk" | "hoop_ring" | "rolling_body" | "inclined_wedge" | "curve_arrow"
6
+ /** reference/WaveOcillation.html */
7
+ | "mass_box" | "pendulum" | "phasor" | "damped_wave" | "vane_liquid" | "torsion_pendulum" | "standing_wave" | "wave_pulse" | "shm_graph" | "energy_graph" | "strobe_shm" | "wall" | "tuning_fork" | "speaker" | "wavefronts" | "mach_cone" | "beats_graph";
8
+ interface ElementData {
9
+ id: number | string;
10
+ type: ElementType | string;
11
+ x1: number;
12
+ y1: number;
13
+ x2: number;
14
+ y2: number;
15
+ label?: string;
16
+ value?: string;
17
+ color?: string;
18
+ strokeWidth?: number;
19
+ fontSize?: number;
20
+ fillOpacity?: number;
21
+ lineStyle?: "solid" | "dashed" | "dotted" | string;
22
+ curveHeight?: number;
23
+ /** Quadratic/cubic-style control points (e.g. bezier tool). */
24
+ cps?: {
25
+ x: number;
26
+ y: number;
27
+ }[];
28
+ showArrow?: boolean;
29
+ compression?: number;
30
+ showHeat?: boolean;
31
+ engineType?: "engine" | "refrigerator" | string;
32
+ efficiency?: number;
33
+ processType?: "isotherm" | "adiabatic" | "isobaric" | "isochoric" | string;
34
+ t1?: number;
35
+ t2?: number;
36
+ showRotations?: boolean;
37
+ steps?: number;
38
+ rotation?: number;
39
+ /** Modern physics / energy level diagrams (reference/ElectroStatics.html). */
40
+ energy?: string;
41
+ /** P–V axes labels (reference/thermo.html). */
42
+ xLabel?: string;
43
+ yLabel?: string;
44
+ /** Point mass, COM marker, pivot scale (reference/Rotation.html). */
45
+ size?: number;
46
+ showVelocity?: boolean;
47
+ showOmega?: boolean;
48
+ /** Spring coil count (reference/Rotation.html spring path). */
49
+ coils?: number;
50
+ /** Wave / SHM (reference/WaveOcillation.html). */
51
+ amplitude?: number;
52
+ loops?: number;
53
+ graphType?: "x" | "v" | "a" | "all" | string;
54
+ domain?: "time" | "position" | string;
55
+ damping?: number;
56
+ frequency?: number;
57
+ beatFreq?: number;
58
+ velocityRatio?: number;
59
+ rings?: number;
60
+ machNumber?: number;
61
+ showForces?: boolean;
62
+ showProjection?: boolean;
63
+ [key: string]: unknown;
64
+ }
65
+ interface RenderContext {
66
+ isSelected?: boolean;
67
+ isGhost?: boolean;
68
+ viewMode?: boolean;
69
+ }
70
+ type ElementRenderer = (element: ElementData, context: RenderContext) => ReactNode;
71
+ interface RendererProps {
72
+ elements: ElementData[];
73
+ selectedId?: number | string | null;
74
+ drawing?: ElementData | null;
75
+ viewMode?: boolean;
76
+ showGrid?: boolean;
77
+ gridSize?: number;
78
+ className?: string;
79
+ svgRef?: React.RefObject<SVGSVGElement | null>;
80
+ onBackgroundMouseDown?: (e: React.MouseEvent) => void;
81
+ onBackgroundMouseMove?: (e: React.MouseEvent) => void;
82
+ onBackgroundMouseUp?: (e: React.MouseEvent) => void;
83
+ onBackgroundMouseLeave?: (e: React.MouseEvent) => void;
84
+ onElementMouseDown?: (e: React.MouseEvent, element: ElementData) => void;
85
+ }
86
+ interface ToolDef {
87
+ id: string;
88
+ name: string;
89
+ }
90
+ interface ToolCategory {
91
+ name: string;
92
+ tools: ToolDef[];
93
+ }
94
+ interface Preset {
95
+ name: string;
96
+ elements: ElementData[];
97
+ toolCategories: ToolCategory[];
98
+ }
99
+
100
+ export type { ElementRenderer as E, Preset as P, RendererProps as R, ToolCategory as T, ElementData as a, ElementType as b, ToolDef as c };
@@ -0,0 +1,100 @@
1
+ import { ReactNode } from 'react';
2
+
3
+ type ElementType = "select" | "point" | "text" | "line" | "string" | "surface" | "cart" | "disk" | "com" | "particle" | "pivot" | "dashed" | "dashed_line" | "vector" | "ray" | "ground" | "table_edge" | "block" | "sphere" | "shell" | "cylinder" | "slab" | "semicircle" | "quarter_circle" | "cone" | "curved_wedge" | "incline" | "ladder" | "spring" | "pulley" | "rod" | "hinge" | "arc" | "arc_arrow" | "container" | "pipe" | "liquid" | "orbit" | "wire" | "resistor" | "capacitor" | "inductor" | "diode" | "battery" | "meter_v" | "meter_a" | "piston_cylinder" | "heat_engine" | "conduction_rod" | "pv_axes" | "thermo_process" | "carnot_cycle" | "maxwell_boltzmann" | "diatomic_gas" | "random_walk" | "lens_convex" | "lens_concave" | "mirror_concave" | "mirror_convex" | "prism" | "glass_slab" | "slit_double" | "slit_single" | "photon" | "nucleus" | "wedge" | "dimension" | "axes" | "pole_piece" | "b_field_line" | "b_field_curve" | "bezier" | "b_region_in" | "b_region_out" | "current_wire" | "bar_magnet" | "coil" | "meter" | "ac_source" | "axes_3d" | "charge_pos" | "charge_neg" | "dipole" | "charged_plate_pos" | "charged_plate_neg" | "gaussian_sphere" | "gaussian_cylinder" | "mirror_plane" | "energy_level" | "circle" | "ellipse" | "rectangle" | "angle" | "parabola_v" | "parabola_h" | "hyperbola" | "modulus" | "exponential" | "logarithmic" | "sine_wave" | "step_function" | "shaded_area" | "atom" | "charge_plus" | "charge_minus" | "benzene" | "cyclohexane" | "cyclopentane" | "cyclobutane" | "cyclopropane" | "radical" | "lone_pair"
4
+ /** Rotation preset / reference/Rotation.html */
5
+ | "point_mass" | "block_mass" | "com_indicator" | "system_boundary" | "dashed_path" | "rocket" | "uniform_rod" | "solid_disk" | "hoop_ring" | "rolling_body" | "inclined_wedge" | "curve_arrow"
6
+ /** reference/WaveOcillation.html */
7
+ | "mass_box" | "pendulum" | "phasor" | "damped_wave" | "vane_liquid" | "torsion_pendulum" | "standing_wave" | "wave_pulse" | "shm_graph" | "energy_graph" | "strobe_shm" | "wall" | "tuning_fork" | "speaker" | "wavefronts" | "mach_cone" | "beats_graph";
8
+ interface ElementData {
9
+ id: number | string;
10
+ type: ElementType | string;
11
+ x1: number;
12
+ y1: number;
13
+ x2: number;
14
+ y2: number;
15
+ label?: string;
16
+ value?: string;
17
+ color?: string;
18
+ strokeWidth?: number;
19
+ fontSize?: number;
20
+ fillOpacity?: number;
21
+ lineStyle?: "solid" | "dashed" | "dotted" | string;
22
+ curveHeight?: number;
23
+ /** Quadratic/cubic-style control points (e.g. bezier tool). */
24
+ cps?: {
25
+ x: number;
26
+ y: number;
27
+ }[];
28
+ showArrow?: boolean;
29
+ compression?: number;
30
+ showHeat?: boolean;
31
+ engineType?: "engine" | "refrigerator" | string;
32
+ efficiency?: number;
33
+ processType?: "isotherm" | "adiabatic" | "isobaric" | "isochoric" | string;
34
+ t1?: number;
35
+ t2?: number;
36
+ showRotations?: boolean;
37
+ steps?: number;
38
+ rotation?: number;
39
+ /** Modern physics / energy level diagrams (reference/ElectroStatics.html). */
40
+ energy?: string;
41
+ /** P–V axes labels (reference/thermo.html). */
42
+ xLabel?: string;
43
+ yLabel?: string;
44
+ /** Point mass, COM marker, pivot scale (reference/Rotation.html). */
45
+ size?: number;
46
+ showVelocity?: boolean;
47
+ showOmega?: boolean;
48
+ /** Spring coil count (reference/Rotation.html spring path). */
49
+ coils?: number;
50
+ /** Wave / SHM (reference/WaveOcillation.html). */
51
+ amplitude?: number;
52
+ loops?: number;
53
+ graphType?: "x" | "v" | "a" | "all" | string;
54
+ domain?: "time" | "position" | string;
55
+ damping?: number;
56
+ frequency?: number;
57
+ beatFreq?: number;
58
+ velocityRatio?: number;
59
+ rings?: number;
60
+ machNumber?: number;
61
+ showForces?: boolean;
62
+ showProjection?: boolean;
63
+ [key: string]: unknown;
64
+ }
65
+ interface RenderContext {
66
+ isSelected?: boolean;
67
+ isGhost?: boolean;
68
+ viewMode?: boolean;
69
+ }
70
+ type ElementRenderer = (element: ElementData, context: RenderContext) => ReactNode;
71
+ interface RendererProps {
72
+ elements: ElementData[];
73
+ selectedId?: number | string | null;
74
+ drawing?: ElementData | null;
75
+ viewMode?: boolean;
76
+ showGrid?: boolean;
77
+ gridSize?: number;
78
+ className?: string;
79
+ svgRef?: React.RefObject<SVGSVGElement | null>;
80
+ onBackgroundMouseDown?: (e: React.MouseEvent) => void;
81
+ onBackgroundMouseMove?: (e: React.MouseEvent) => void;
82
+ onBackgroundMouseUp?: (e: React.MouseEvent) => void;
83
+ onBackgroundMouseLeave?: (e: React.MouseEvent) => void;
84
+ onElementMouseDown?: (e: React.MouseEvent, element: ElementData) => void;
85
+ }
86
+ interface ToolDef {
87
+ id: string;
88
+ name: string;
89
+ }
90
+ interface ToolCategory {
91
+ name: string;
92
+ tools: ToolDef[];
93
+ }
94
+ interface Preset {
95
+ name: string;
96
+ elements: ElementData[];
97
+ toolCategories: ToolCategory[];
98
+ }
99
+
100
+ export type { ElementRenderer as E, Preset as P, RendererProps as R, ToolCategory as T, ElementData as a, ElementType as b, ToolDef as c };