From 42502dcf364b44eac3f3ea92c3cef366c856c49c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Tue, 9 Jun 2020 09:24:22 +0200
Subject: [PATCH] [dome] use fast-react-compare

---
 ivette/.dome-pkg-app.lock                    |  2 +-
 ivette/package.json                          |  2 +-
 ivette/src/dome/src/renderer/data/compare.ts | 12 +++++++++++-
 ivette/src/dome/template/makefile.packages   |  1 +
 4 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/ivette/.dome-pkg-app.lock b/ivette/.dome-pkg-app.lock
index 7282f0cc447..f9677904486 100644
--- a/ivette/.dome-pkg-app.lock
+++ b/ivette/.dome-pkg-app.lock
@@ -1 +1 @@
-react@^16.8 react-dom source-map-support lodash react-virtualized react-draggable codemirror
+react@^16.8 react-dom source-map-support lodash react-virtualized react-draggable react-fast-compare codemirror
diff --git a/ivette/package.json b/ivette/package.json
index d77d420e120..c64081d369b 100644
--- a/ivette/package.json
+++ b/ivette/package.json
@@ -44,7 +44,6 @@
     "eslint-plugin-react-hooks": "^3.0.0",
     "html-loader": "1.0.0-alpha.0",
     "jsdoc": "^3.6.3",
-    "react-fast-compare": "^3.2.0",
     "react-hot-loader": "^4.12.20",
     "serve": "^11.3.0",
     "typedoc": "^0.17.6",
@@ -62,6 +61,7 @@
     "react-draggable": "^4.2.0",
     "react-virtualized": "^9.21.2",
     "source-map-support": "^0.5.16",
+    "react-fast-compare": "^3.2.0",
     "zeromq": "^6.0.0-beta.5"
   }
 }
diff --git a/ivette/src/dome/src/renderer/data/compare.ts b/ivette/src/dome/src/renderer/data/compare.ts
index 47c98b71a45..5f643b4cc85 100644
--- a/ivette/src/dome/src/renderer/data/compare.ts
+++ b/ivette/src/dome/src/renderer/data/compare.ts
@@ -8,6 +8,8 @@
    @module dome/data/compare
 */
 
+import FastCompare from 'react-fast-compare';
+
 /**
    Interface for comparison functions.
    These function shall fullfill the following contract:
@@ -22,11 +24,19 @@ export interface Order<A> {
   (x: A, y: A): number;
 }
 
+/**
+   Deep structural equality.
+   Provided by [react-fast-compare]().
+*/
+export const isEqual = FastCompare;
+
+/** Always returns 0. */
 export function equal(_x: any, _y: any): 0 { return 0; }
 
+/** Primitive comparison works on this type. */
 export type bignum = bigint | number;
 
-/** Non-NaN numbers and big-ints */
+/** Detect Non-NaN numbers and big-ints. */
 export function isBigNum(x: any): x is bignum {
   return typeof (x) === 'bigint' || (typeof (x) === 'number' && !Number.isNaN(x));
 }
diff --git a/ivette/src/dome/template/makefile.packages b/ivette/src/dome/template/makefile.packages
index 05b8cb03aec..34a494d7732 100644
--- a/ivette/src/dome/template/makefile.packages
+++ b/ivette/src/dome/template/makefile.packages
@@ -25,6 +25,7 @@ DOME_APP_PACKAGES= \
 	lodash \
 	react-virtualized \
 	react-draggable \
+	react-fast-compare \
 	codemirror
 
 # --------------------------------------------------------------------------
-- 
GitLab