diff --git a/package-lock.json b/package-lock.json index 187b3b80280c6a042bb6e23bdce71660baab471c..1b1fa08522687a7c708bb77de3f02bc7dfeb905a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,6 +46,7 @@ "sass-loader": "^13.1.0", "style-loader": "^2.0.0", "svg-inline-loader": "^0.8.2", + "terser-webpack-plugin": "^5.3.6", "ts-loader": "^9.2.6", "ts-node": "^10.7.0", "typescript": "^4.8.2", diff --git a/package.json b/package.json index 96958c8ef2dca7361e3cf251c198d45aac6d7dfb..a55a1099a498ed3db23c9b2c0680cab9ccc611d4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@verdi8/blob-analysis-lab-demo", "version": "1.0.0", - "description": "Un projet temporaire qick'n'dirty de démo d'analyse de photos de blobs", + "description": "Un projet éphémère d'analyse de photos de blobs", "private": true, "scripts": { "serve": "webpack serve --open --config webpack.staging.js", @@ -48,6 +48,7 @@ "sass-loader": "^13.1.0", "style-loader": "^2.0.0", "svg-inline-loader": "^0.8.2", + "terser-webpack-plugin": "^5.3.6", "ts-loader": "^9.2.6", "ts-node": "^10.7.0", "typescript": "^4.8.2", diff --git a/src/assets/images/here.svg b/src/assets/images/here.svg index 274305f3d202269641a637c019faebc298c04ccd..89a04e90471771fdbe05e653521cc61933d7bd0a 100644 --- a/src/assets/images/here.svg +++ b/src/assets/images/here.svg @@ -1,18 +1,6 @@ <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 131.05070243472312 88.27716039866368"> - <!-- svg-source:excalidraw --> + <!-- arrow by excalidraw --> - <defs> - <style> - @font-face { - font-family: "Virgil"; - src: url("https://excalidraw.com/Virgil.woff2"); - } - @font-face { - font-family: "Cascadia"; - src: url("https://excalidraw.com/Cascadia.woff2"); - } - </style> - </defs> <rect x="0" y="0" width="131.05070243472312" height="88.27716039866368" fill="none"></rect> <g stroke-linecap="round"> <g transform="translate(44.48445506720407 42.18917581060259) rotate(0 36.96977789509731 -15.50219226513667)"> @@ -29,7 +17,7 @@ </g> </g> <g transform="translate(10 52.27716039866368) rotate(0 34.5 13)"> - <text x="34.5" y="19" font-family="Virgil, Segoe UI Emoji" font-size="20px" text-anchor="middle" fill="black" + <text x="34.5" y="19" font-family="Indie Flower" font-size="20px" text-anchor="middle" fill="black" style="white-space: pre;" direction="ltr">départ </text> </g> diff --git a/src/bootstrap.scss b/src/bootstrap.scss new file mode 100644 index 0000000000000000000000000000000000000000..190b850031bb87ccc20634ff3a31bd443b950517 --- /dev/null +++ b/src/bootstrap.scss @@ -0,0 +1,53 @@ +// Optimisation de bootstrap : voir https://getbootstrap.com/docs/5.2/customize/optimize/ + +@import "~bootstrap/scss/mixins/banner"; +@include bsBanner(""); + +// scss-docs-start import-stack +// Configuration +@import "~bootstrap/scss/functions"; +@import "~bootstrap/scss/variables"; +@import "~bootstrap/scss/maps"; +@import "~bootstrap/scss/mixins"; +@import "~bootstrap/scss/utilities"; + + +// Layout & components +@import "~bootstrap/scss/root"; +@import "~bootstrap/scss/reboot"; +@import "~bootstrap/scss/type"; +@import "~bootstrap/scss/images"; +@import "~bootstrap/scss/containers"; +@import "~bootstrap/scss/grid"; +//@import "~bootstrap/scss/tables"; +@import "~bootstrap/scss/forms"; +@import "~bootstrap/scss/buttons"; +@import "~bootstrap/scss/transitions"; +@import "~bootstrap/scss/dropdown"; +@import "~bootstrap/scss/button-group"; +@import "~bootstrap/scss/nav"; +@import "~bootstrap/scss/navbar"; +//@import "~bootstrap/scss/card"; +@import "~bootstrap/scss/accordion"; +//@import "~bootstrap/scss/breadcrumb"; +//@import "~bootstrap/scss/pagination"; +@import "~bootstrap/scss/badge"; +@import "~bootstrap/scss/alert"; +//@import "~bootstrap/scss/progress"; +@import "~bootstrap/scss/list-group"; +//@import "~bootstrap/scss/close"; +//@import "~bootstrap/scss/toasts"; +@import "~bootstrap/scss/modal"; +//@import "~bootstrap/scss/tooltip"; +//@import "~bootstrap/scss/popover"; +//@import "~bootstrap/scss/carousel"; +@import "~bootstrap/scss/spinners"; +//@import "~bootstrap/scss/offcanvas"; +@import "~bootstrap/scss/placeholders"; + +// Helpers +@import "~bootstrap/scss/helpers"; + +// Utilities +@import "~bootstrap/scss/utilities/api"; +// scss-docs-end import-stack diff --git a/src/data/coords/coords.tsx b/src/data/coords/coords.tsx index 4169b90a954d68cc45d5d11d2138f4600c841b03..e387a32f941e691298bfefaff25fe83be0487f9b 100644 --- a/src/data/coords/coords.tsx +++ b/src/data/coords/coords.tsx @@ -1,5 +1,4 @@ import * as paper from "paper"; -import {PathCoords} from "./pathCoords"; /** diff --git a/src/data/coords/transform/toEllipseFitter.ts b/src/data/coords/transform/toEllipseFitter.ts index 62f08d140ceacc7a378bd47034339e29970e1062..f6e6de913735f5cfae6e197d8e911ec4af80e262 100644 --- a/src/data/coords/transform/toEllipseFitter.ts +++ b/src/data/coords/transform/toEllipseFitter.ts @@ -5,10 +5,10 @@ import {EllipseCoords} from "../ellipseCoords"; import {Coords} from "../coords"; import * as paper from "paper"; import {types} from "sass"; -import Color = types.Color; import {Transformation} from "./transformation"; import {PathCoords} from "../pathCoords"; import {ImageDataWrapper} from "../../../render/ImageDataWrapper"; + const HALFPI : number= 1.5707963267949; /** diff --git a/src/data/coords/transform/transformation.ts b/src/data/coords/transform/transformation.ts index 95310366a03e433243251c944b16c3c1cdd28e0d..ec7485071e3995eb7eb28f562936ed27dc1c05cc 100644 --- a/src/data/coords/transform/transformation.ts +++ b/src/data/coords/transform/transformation.ts @@ -1,4 +1,3 @@ - import {Coords} from "../coords"; /** diff --git a/src/data/coords/vectorCoords.ts b/src/data/coords/vectorCoords.ts index 40025b1fe177ccbd57a741d45000850f6884a862..c04540ddbe8acc0758cfdb3b7dc1fe3431c49b86 100644 --- a/src/data/coords/vectorCoords.ts +++ b/src/data/coords/vectorCoords.ts @@ -1,4 +1,3 @@ - import * as paper from "paper"; import {Coords} from "./coords"; diff --git a/src/index.tsx b/src/index.tsx index c2d1eebc7dafc5080a310a4a4233a39e1bbbedd1..8311ebe7f9cd1a3c6f53c16c10026cfa8205ac3d 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,25 +1,23 @@ - import "./lab.scss" // Init de font-awesome // Voir https://fontawesome.com/v6/docs/apis/javascript/methods#dom-i2svg-params -import { dom, library } from '@fortawesome/fontawesome-svg-core'; -import { fas } from '@fortawesome/free-solid-svg-icons'; -import { far } from '@fortawesome/free-regular-svg-icons'; +import {dom, library} from '@fortawesome/fontawesome-svg-core'; +import {fas} from '@fortawesome/free-solid-svg-icons'; +import {far} from '@fortawesome/free-regular-svg-icons'; +// Init de paper.js +import * as paper from "paper"; +import * as ReactDOM from 'react-dom'; +import * as React from 'react'; +import {Lab} from './lab'; + library.add(fas, far); dom.i2svg(); dom.watch(); -// Init de paper.js -import * as paper from "paper"; - // Create an empty project and a view for the canvas: paper.install(window); -import * as ReactDOM from 'react-dom'; -import * as React from 'react'; -import { Lab } from './lab'; - ReactDOM.render( <React.StrictMode> <Lab /> diff --git a/src/instruments/blobMask.ts b/src/instruments/blobMask.ts index 28027502328cc7ab74fcf678ee752e0b542ea0d3..ff696f1c3a167f59b88a9643f8bdd07ed618a4ba 100644 --- a/src/instruments/blobMask.ts +++ b/src/instruments/blobMask.ts @@ -119,6 +119,9 @@ export class BlobMask extends AbstractInstrument<PathCoords> implements Instrume * Déplacement de la souris */ private onMouseDrag(event : paper.MouseEvent) : boolean { + if(event.modifiers) { + + } if(!this.active) { return true; } diff --git a/src/instruments/instrument.ts b/src/instruments/instrument.ts index bc1d9f953fdb7bbb1962f01ebe69745766cccf9a..ee05178ac921160843fcbf718e7f784357b1d27c 100644 --- a/src/instruments/instrument.ts +++ b/src/instruments/instrument.ts @@ -1,8 +1,7 @@ import * as paper from "paper"; -import {DEBUG_MODE, Lab} from "../lab"; +import {Lab} from "../lab"; import {Coords} from "../data/coords/coords"; import {PaperUtils} from "../utils/paperUtils"; -import {ToEllipseFitter} from "../data/coords/transform/toEllipseFitter"; /** * Un instrument d'analyse diff --git a/src/lab.scss b/src/lab.scss index d58673717e012d850cbe619a8f62ca6947ef336a..4ea8d7c959b5725ce04f3cd3a2b6469f5665288f 100644 --- a/src/lab.scss +++ b/src/lab.scss @@ -4,5 +4,7 @@ //$font-size-base: 0.9rem; @import "~bootswatch/dist/flatly/variables"; -@import "~bootstrap/scss/bootstrap"; -@import "~bootswatch/dist/flatly/bootswatch"; \ No newline at end of file +@import "bootstrap"; +@import "~bootswatch/dist/flatly/bootswatch"; + +@import url("https://fonts.googleapis.com/css2?family=Indie+Flower"); diff --git a/src/lab.tsx b/src/lab.tsx index fba2715c0176dabd9c5a6c3dbeac54fc51bd1549..342dbbd648c1839e79b05d7415fd358f3207bdbd 100644 --- a/src/lab.tsx +++ b/src/lab.tsx @@ -14,7 +14,6 @@ import {PathCoords} from "./data/coords/pathCoords"; import {DownloadStep} from "./ui/steps/downloadStep"; import {PaperUtils} from "./utils/paperUtils"; import {EllipseCoords} from "./data/coords/ellipseCoords"; -import Here from "./assets/images/here.svg"; import {Welcome} from "./ui/welcome"; /** diff --git a/src/ui/steps/stepManager.tsx b/src/ui/steps/stepManager.tsx index cdbff7048cf9cc51015f3191e187b571e9ef577b..fd120f2d058c926836c939b538b08708fa5a0362 100644 --- a/src/ui/steps/stepManager.tsx +++ b/src/ui/steps/stepManager.tsx @@ -3,7 +3,7 @@ */ import {Step, StepState} from "./step"; import * as React from "react"; -import {ReactElement, RefObject} from "react"; +import {ReactElement} from "react"; import {ArrayUtils} from "../../utils/arrayUtils"; import {Accordion} from "react-bootstrap"; diff --git a/webpack.common.js b/webpack.common.js index 0ee829ba3a1408d4bb53d11ca9f318ad7a26fb4c..f5f2f2b597eddbcb2005ffec8b86a73e6ca5b305 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -12,14 +12,14 @@ module.exports = { use: 'ts-loader', exclude: /node_modules/, }, - // { - // test: /\.svg$/, - // use: 'svg-inline-loader?classPrefix=true' - // }, { test: /\.svg$/, use: ['@svgr/webpack'], }, + { + test: /\.woff(2)?$/, + type: 'asset/inline', + }, { test: /\.(css|scss)$/, use: [ @@ -40,7 +40,7 @@ module.exports = { ] }, resolve: { - extensions: ['.css', '.js', '.ts', '.tsx'] + extensions: ['.js', '.ts', '.tsx'] }, plugins: [ new webpackCommonJs.DefinePlugin({ diff --git a/webpack.production.js b/webpack.production.js index d27822e7ad9451bb05959bec2cad9717b4f6e9ce..cdf1dcdc0be9ca63d95d851f5cd15dba2753b4a6 100644 --- a/webpack.production.js +++ b/webpack.production.js @@ -2,6 +2,7 @@ const { merge } = require('webpack-merge'); const webpack = require('webpack'); const common = require('./webpack.common'); +const TerserPlugin = require("terser-webpack-plugin"); module.exports = merge(common, { mode: 'production', @@ -10,6 +11,10 @@ module.exports = merge(common, { }) ], + optimization: { + minimize: true, + minimizer: [new TerserPlugin()], + }, performance: { maxAssetSize: 3000000, // ~3Mo maxEntrypointSize: 3000000, // ~3Mo