From 8d03da50b3cd2f7cf831334e1ffb8f076f22794a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr> Date: Fri, 17 Jul 2020 15:13:19 +0200 Subject: [PATCH] [dome] link & lint --- ivette/.eslintrc.js | 2 +- ivette/src/dome/src/renderer/data/json.ts | 2 +- ivette/src/dome/src/renderer/data/settings.ts | 31 +++++++++++-------- ivette/src/dome/src/renderer/data/states.ts | 21 +++++++------ ivette/src/dome/template/webpack.renderer.js | 2 +- ivette/webpack.renderer.js | 2 +- 6 files changed, 34 insertions(+), 26 deletions(-) diff --git a/ivette/.eslintrc.js b/ivette/.eslintrc.js index 616c6cfcd37..7c42af4153f 100644 --- a/ivette/.eslintrc.js +++ b/ivette/.eslintrc.js @@ -17,7 +17,7 @@ module.exports = { }, settings: { // Electron is in devDependencies because of its special build system - "import/core-modules": [ "electron" ] + "import/core-modules": [ 'electron', 'react-hot-loader' ] }, rules: { "react/display-name": "off", diff --git a/ivette/src/dome/src/renderer/data/json.ts b/ivette/src/dome/src/renderer/data/json.ts index c9e6752c925..f6ce22153b9 100644 --- a/ivette/src/dome/src/renderer/data/json.ts +++ b/ivette/src/dome/src/renderer/data/json.ts @@ -445,7 +445,7 @@ export function jKey<K>(kd: K): Loose<key<K>> { /** Decoder for `index<K>` numbers. */ export function jIndex<K>(kd: K): Loose<index<K>> { - return (js: json) => typeof js === 'number' ? forge(kd, js) : undefined; + return (js: json) => (typeof js === 'number' ? forge(kd, js) : undefined); } export type dict<A> = { [key: string]: A }; diff --git a/ivette/src/dome/src/renderer/data/settings.ts b/ivette/src/dome/src/renderer/data/settings.ts index 3cf6d7cd231..51ef3fcd73e 100644 --- a/ivette/src/dome/src/renderer/data/settings.ts +++ b/ivette/src/dome/src/renderer/data/settings.ts @@ -62,26 +62,30 @@ export class GlobalSettings<A> { /** Boolean settings with `true` default. */ export class GTrue extends GlobalSettings<boolean> { - constructor(name: string) { super(name, JSON.jBoolean, JSON.identity, true); } + constructor(name: string) { + super(name, JSON.jBoolean, JSON.identity, true); + } } /** Boolean settings with `false` default. */ export class GFalse extends GlobalSettings<boolean> { - constructor(name: string) { super(name, JSON.jBoolean, JSON.identity, false); } + constructor(name: string) { + super(name, JSON.jBoolean, JSON.identity, false); + } } /** Numeric settings (default is zero unless specified). */ export class GNumber extends GlobalSettings<number> { - constructor(name: string, defaultValue: number = 0) { + constructor(name: string, defaultValue = 0) { super(name, JSON.jNumber, JSON.identity, defaultValue); - }; + } } /** String settings (default is `""` unless specified). */ export class GString extends GlobalSettings<string> { - constructor(name: string, defaultValue: string = '') { + constructor(name: string, defaultValue = '') { super(name, JSON.jString, JSON.identity, defaultValue); - }; + } } /** Smart constructor for optional (JSON serializable) data. */ @@ -111,8 +115,8 @@ export class GObject<A extends JSON.json> extends GlobalSettings<A> { // --- Generic Settings (private) // -------------------------------------------------------------------------- -type patch = { key: string, value: JSON.json }; -type driver = { evt: string, ipc: string, broadcast: boolean }; +type patch = { key: string; value: JSON.json }; +type driver = { evt: string; ipc: string; broadcast: boolean }; class Driver { @@ -161,7 +165,8 @@ class Driver { } }); SysEmitter.emit(this.evt); - }); + }, + ); } // --- Closing Events ipcRenderer.on('dome.ipc.closing', () => { @@ -241,7 +246,7 @@ function useSettings<A>( const event = D.evt; const callback = () => setValue(loader()); SysEmitter.on(event, callback); - return () => { SysEmitter.off(event, callback); } + return () => { SysEmitter.off(event, callback); }; } return undefined; }); @@ -251,7 +256,7 @@ function useSettings<A>( setValue(newValue); if (K) D.save(K, S.encoder(newValue)); } - }, [S, D, K]); + }, [S, D, K, value]); return [value, updateValue]; } @@ -304,7 +309,7 @@ export function useWindowSettings<A extends JSON.json>( return useSettings({ decoder, encoder: JSON.identity, - defaultValue + defaultValue, }, WindowDriver, key); } @@ -318,7 +323,7 @@ export function useWindowSettingsData<A>( return useSettings({ decoder, encoder, - defaultValue + defaultValue, }, WindowDriver, key); } diff --git a/ivette/src/dome/src/renderer/data/states.ts b/ivette/src/dome/src/renderer/data/states.ts index 22da71e1398..030a2180b90 100644 --- a/ivette/src/dome/src/renderer/data/states.ts +++ b/ivette/src/dome/src/renderer/data/states.ts @@ -16,17 +16,17 @@ import isEqual from 'react-fast-compare'; // --- State utilities // -------------------------------------------------------------------------- -/** Alias to `[state,setState]` returned values*/ +/** Alias to `[state,setState]` returned values */ export type State<A> = [A, (newValue: A) => void]; /** State field of an object state. */ -export function key<A, K extends keyof A>( +export function keyOf<A, K extends keyof A>( state: State<A>, key: K, ): State<A[K]> { const [props, setProps] = state; return [props[key], (value: A[K]) => { - const newProps = Object.assign({}, props); + const newProps = { ...props }; newProps[key] = value; setProps(newProps); }]; @@ -35,12 +35,12 @@ export function key<A, K extends keyof A>( /** State index of an array state. */ export function index<A>( state: State<A[]>, - index: number, + idx: number, ): State<A> { const [array, setArray] = state; - return [array[index], (value: A) => { + return [array[idx], (value: A) => { const newArray = array.slice(); - newArray[index] = value; + newArray[idx] = value; setArray(newArray); }]; } @@ -48,13 +48,16 @@ export function index<A>( /** Log state updates in the console. */ export function debug<A>(msg: string, st: State<A>): State<A> { const [value, setValue] = st; - return [value, (v) => { console.log(msg, v); setValue(v); }]; + return [value, (v) => { + setValue(v); + console.log(msg, v); // eslint-disable-line no-console + }]; } /** Purely local value. No hook, no events, just a ref. */ export function local<A>(init: A): State<A> { const ref = { current: init }; - return [ref.current, (v) => ref.current = v]; + return [ref.current, (v) => { ref.current = v; }]; } // -------------------------------------------------------------------------- @@ -109,6 +112,6 @@ export function useGlobalState<A>(s: GlobalState<A>): State<A> { return () => s.off(setCurrent); }, [s]); return [current, s.setValue]; -}; +} // -------------------------------------------------------------------------- diff --git a/ivette/src/dome/template/webpack.renderer.js b/ivette/src/dome/template/webpack.renderer.js index 5cba35d887a..10183ca7561 100644 --- a/ivette/src/dome/template/webpack.renderer.js +++ b/ivette/src/dome/template/webpack.renderer.js @@ -25,7 +25,7 @@ module.exports = { '@plugins': path.resolve( __dirname , 'src/plugins' ), 'dome/misc': path.resolve( DOME , 'src/misc' ), 'dome/system': path.resolve( DOME , 'src/misc/system.js' ), - 'dome$': path.resolve( DOME , 'src/renderer/dome.js' ), + 'dome$': path.resolve( DOME , 'src/renderer/dome.ts' ), 'dome': path.resolve( DOME , 'src/renderer' ), 'react-dom': '@hot-loader/react-dom' } diff --git a/ivette/webpack.renderer.js b/ivette/webpack.renderer.js index e35b929d476..b5801647467 100644 --- a/ivette/webpack.renderer.js +++ b/ivette/webpack.renderer.js @@ -31,7 +31,7 @@ module.exports = { '@plugins': path.resolve( __dirname , 'src/plugins' ), 'dome/misc': path.resolve( DOME , 'src/misc' ), 'dome/system': path.resolve( DOME , 'src/misc/system.js' ), - 'dome$': path.resolve( DOME , 'src/renderer/dome.js' ), + 'dome$': path.resolve( DOME , 'src/renderer/dome.ts' ), 'dome': path.resolve( DOME , 'src/renderer' ), 'react-dom': '@hot-loader/react-dom' } -- GitLab