From b113a6c92b88431709b6fe0d3e3983bae33930fe Mon Sep 17 00:00:00 2001
From: Laurent Knoll <laurent.knoll@orange.com>
Date: Tue, 18 Oct 2022 17:54:00 +0200
Subject: [PATCH] Optimisation (bof bof) du packaging. Optimisation des
 imports.

---
 package-lock.json                            |  1 +
 package.json                                 |  3 +-
 src/assets/images/here.svg                   | 16 +-----
 src/bootstrap.scss                           | 53 ++++++++++++++++++++
 src/data/coords/coords.tsx                   |  1 -
 src/data/coords/transform/toEllipseFitter.ts |  2 +-
 src/data/coords/transform/transformation.ts  |  1 -
 src/data/coords/vectorCoords.ts              |  1 -
 src/index.tsx                                | 20 ++++----
 src/instruments/blobMask.ts                  |  3 ++
 src/instruments/instrument.ts                |  3 +-
 src/lab.scss                                 |  6 ++-
 src/lab.tsx                                  |  1 -
 src/ui/steps/stepManager.tsx                 |  2 +-
 webpack.common.js                            | 10 ++--
 webpack.production.js                        |  5 ++
 16 files changed, 87 insertions(+), 41 deletions(-)
 create mode 100644 src/bootstrap.scss

diff --git a/package-lock.json b/package-lock.json
index 187b3b8..1b1fa08 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 96958c8..a55a109 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 274305f..89a04e9 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 0000000..190b850
--- /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 4169b90..e387a32 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 62f08d1..f6e6de9 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 9531036..ec74850 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 40025b1..c04540d 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 c2d1eeb..8311ebe 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 2802750..ff696f1 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 bc1d9f9..ee05178 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 d586737..4ea8d7c 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 fba2715..342dbbd 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 cdbff70..fd120f2 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 0ee829b..f5f2f2b 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 d27822e..cdf1dcd 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
-- 
GitLab