From 96f3ba12109fe513864793cac0eb34a36a3bb8b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Thu, 14 Mar 2024 08:11:27 +0100
Subject: [PATCH] [ivette] move search field

---
 ivette/src/ivette/index.tsx                   | 22 +++++++++----------
 .../Actions.tsx => ivette/search.tsx}         |  2 +-
 ivette/src/ivette/state.tsx                   |  2 +-
 ivette/src/renderer/Application.tsx           |  4 ++--
 ivette/webpack.renderer.js                    |  2 --
 5 files changed, 15 insertions(+), 17 deletions(-)
 rename ivette/src/{renderer/Actions.tsx => ivette/search.tsx} (99%)

diff --git a/ivette/src/ivette/index.tsx b/ivette/src/ivette/index.tsx
index 4fc977e5bfe..f49cdcf7f6d 100644
--- a/ivette/src/ivette/index.tsx
+++ b/ivette/src/ivette/index.tsx
@@ -33,8 +33,8 @@ import React from 'react';
 import { DEVEL } from 'dome';
 import { Label } from 'dome/controls/labels';
 import { DefineElement } from 'dome/layout/dispatch';
-import * as State from 'ivette/state';
-import * as Mode from 'ivette@mode';
+import * as State from './state';
+import * as Search from './search';
 
 /* -------------------------------------------------------------------------- */
 /* --- Items                                                              --- */
@@ -258,21 +258,21 @@ export interface ModeProps {
   onEnter?: (pattern: string) => void; // Enter key for search field
 }
 
-export function registerMode(m: ModeProps): void { Mode.registerMode(m); }
-export function updateMode(m: ModeProps): void { Mode.updateMode(m); }
-export function removeMode(id: string): void { Mode.removeMode(id); }
-export function selectMode(id: string): void { Mode.selectMode(id); }
-export function focusMode(id: string): void { Mode.focusMode(id); }
+export function registerMode(m: ModeProps): void { Search.registerMode(m); }
+export function updateMode(m: ModeProps): void { Search.updateMode(m); }
+export function removeMode(id: string): void { Search.removeMode(id); }
+export function selectMode(id: string): void { Search.selectMode(id); }
+export function focusMode(id: string): void { Search.focusMode(id); }
 export function useMode(m: ModeProps): void {
   React.useEffect(() => {
     const id = m.id;
-    const m0 = Mode.findMode(id);
-    Mode.registerMode({ ...m0, ...m });
+    const m0 = Search.findMode(id);
+    Search.registerMode({ ...m0, ...m });
     return () => {
       if (m0 !== undefined)
-        Mode.registerMode(m0);
+        Search.registerMode(m0);
       else
-        Mode.removeMode(id);
+        Search.removeMode(id);
     };
   }, [m]);
 }
diff --git a/ivette/src/renderer/Actions.tsx b/ivette/src/ivette/search.tsx
similarity index 99%
rename from ivette/src/renderer/Actions.tsx
rename to ivette/src/ivette/search.tsx
index 41ffe90652f..8e46e518e77 100644
--- a/ivette/src/renderer/Actions.tsx
+++ b/ivette/src/ivette/search.tsx
@@ -159,7 +159,7 @@ function lookupHints(hs: Hint[], pattern: string): Toolbar.Hint[]
   return hs.filter((h) => lookupHint(h, p)).map(toHint);
 }
 
-export function SearchAction(): JSX.Element {
+export function SearchField(): JSX.Element {
   const [mode] = useGlobalState(allModes);
   const currMode = mode.id;
   const userMode = React.useRef('');
diff --git a/ivette/src/ivette/state.tsx b/ivette/src/ivette/state.tsx
index 19b5ab6e9fb..a2a171553ba 100644
--- a/ivette/src/ivette/state.tsx
+++ b/ivette/src/ivette/state.tsx
@@ -75,4 +75,4 @@ export function useChildren<A extends ElementProps>(
   return React.Children.toArray(elements.map((e) => e.children));
 }
 
-/* --------------------------------------------------------------------------*/
+/* -------------------------------------------------------------------------- */
diff --git a/ivette/src/renderer/Application.tsx b/ivette/src/renderer/Application.tsx
index 090c4923b53..7a6c3d7b47a 100644
--- a/ivette/src/renderer/Application.tsx
+++ b/ivette/src/renderer/Application.tsx
@@ -32,10 +32,10 @@ import { Vfill } from 'dome/layout/boxes';
 import { LSplit } from 'dome/layout/splitters';
 import * as Toolbar from 'dome/frame/toolbars';
 import * as Sidebar from './Sidebar';
-import * as Actions from './Actions';
 import * as Controller from './Controller';
 import * as Lab from './Laboratory';
 import * as State from 'ivette/state';
+import * as Search from 'ivette/search';
 import { TOOLBAR, STATUSBAR } from 'ivette';
 import * as IvettePrefs from 'ivette/prefs';
 import './loader';
@@ -71,7 +71,7 @@ export default function Application(): JSX.Element {
         <Toolbar.Filler />
         <IvettePrefs.ThemeSwitchTool />
         <IvettePrefs.FontTools />
-        <Actions.SearchAction />
+        <Search.SearchField />
         <Toolbar.Button
           icon="ITEMS.GRID"
           title="Customize Main View"
diff --git a/ivette/webpack.renderer.js b/ivette/webpack.renderer.js
index d4bfd28832f..71825528a92 100644
--- a/ivette/webpack.renderer.js
+++ b/ivette/webpack.renderer.js
@@ -51,8 +51,6 @@ module.exports = {
     alias: {
       'frama-c/api':  path.resolve( __dirname , 'src/frama-c/api/generated' ),
       'frama-c':      path.resolve( __dirname , 'src/frama-c' ),
-      'ivette@lab':   path.resolve( __dirname , 'src/renderer/Laboratory' ),
-      'ivette@mode':  path.resolve( __dirname , 'src/renderer/Actions' ),
       'ivette':       path.resolve( __dirname , 'src/ivette' ),
       'dome/misc':    path.resolve( DOME , 'misc' ),
       'dome/system':  path.resolve( DOME , 'misc/system.ts' ),
-- 
GitLab