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