From 7070b7207214571e3116234b2bbfff9b81bfff3e Mon Sep 17 00:00:00 2001 From: Bert Verhelst Date: Wed, 28 Aug 2024 21:36:52 +0200 Subject: [PATCH] feat: add save and load buttons to save/load to json file --- src/components/Button.tsx | 5 +- src/components/Toolbar.tsx | 28 +++++++++- src/components/icon.tsx | 6 +++ src/entities/ArcEntity.ts | 52 ++++++++++++++++-- src/entities/CircleEntity.ts | 51 ++++++++++++++++-- src/entities/{Entitity.ts => Entity.ts} | 22 +++++++- src/entities/LineEntity.ts | 39 ++++++++++++-- src/entities/PointEntity.ts | 62 +++++++++++++++++---- src/entities/RectangleEntity.ts | 57 ++++++++++++++++++-- src/entities/SelectionRectangleEntity.ts | 16 ++++-- src/helpers/draw-functions.ts | 2 +- src/helpers/export-entities-to-json.ts | 21 ++++++++ src/helpers/export-entities-to-svg.ts | 2 +- src/helpers/find-closest-entity.ts | 2 +- src/helpers/get-draw-guides.ts | 2 +- src/helpers/get-intersection-points.ts | 2 +- src/helpers/import-entities-from-json.ts | 68 ++++++++++++++++++++++++ src/helpers/tools/eraser-tool.ts | 8 +-- src/state.ts | 2 +- 19 files changed, 406 insertions(+), 41 deletions(-) rename src/entities/{Entitity.ts => Entity.ts} (57%) create mode 100644 src/helpers/export-entities-to-json.ts create mode 100644 src/helpers/import-entities-from-json.ts diff --git a/src/components/Button.tsx b/src/components/Button.tsx index c62f078..03d9d7c 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -1,4 +1,4 @@ -import { FC } from 'react'; +import { FC, ReactNode } from 'react'; import { Icon, IconName } from './icon.tsx'; interface ButtonProps { @@ -7,6 +7,7 @@ interface ButtonProps { icon?: IconName; active?: boolean; onClick?: () => void; + children?: ReactNode; className?: string; } @@ -16,6 +17,7 @@ export const Button: FC = ({ icon, onClick, active = false, + children, className, }) => { return ( @@ -31,6 +33,7 @@ export const Button: FC = ({ > {icon && } {label && {label}} + {children} ); diff --git a/src/components/Toolbar.tsx b/src/components/Toolbar.tsx index 4a7b544..65988ac 100644 --- a/src/components/Toolbar.tsx +++ b/src/components/Toolbar.tsx @@ -16,6 +16,9 @@ import { import { StateVariable } from '../helpers/undo-stack.ts'; import { exportEntitiesToSvgFile } from '../helpers/export-entities-to-svg.ts'; import { exportEntitiesToPngFile } from '../helpers/export-entities-to-png.ts'; +import { exportEntitiesToJsonFile } from '../helpers/export-entities-to-json.ts'; +import { importEntitiesFromJsonFile } from '../helpers/import-entities-from-json.ts'; +import { noop } from 'es-toolkit'; interface ToolbarProps {} @@ -149,12 +152,33 @@ export const Toolbar: FC = () => { +