From a5b48236db75dfa8980079c318a302b5bee1dfd8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr>
Date: Thu, 14 Mar 2024 07:49:28 +0100
Subject: [PATCH] [ivette] move extensions

---
 ivette/src/ivette/index.tsx                        | 14 +++++++-------
 .../{renderer/Extensions.tsx => ivette/state.tsx}  |  0
 ivette/src/renderer/Application.tsx                |  6 +++---
 ivette/src/renderer/Laboratory.tsx                 | 14 +++++++-------
 ivette/src/renderer/Sidebar.tsx                    |  4 ++--
 ivette/webpack.renderer.js                         |  1 -
 6 files changed, 19 insertions(+), 20 deletions(-)
 rename ivette/src/{renderer/Extensions.tsx => ivette/state.tsx} (100%)

diff --git a/ivette/src/ivette/index.tsx b/ivette/src/ivette/index.tsx
index 906278b5568..4fc977e5bfe 100644
--- a/ivette/src/ivette/index.tsx
+++ b/ivette/src/ivette/index.tsx
@@ -33,7 +33,7 @@ import React from 'react';
 import { DEVEL } from 'dome';
 import { Label } from 'dome/controls/labels';
 import { DefineElement } from 'dome/layout/dispatch';
-import * as Ext from 'ivette@ext';
+import * as State from 'ivette/state';
 import * as Mode from 'ivette@mode';
 
 /* -------------------------------------------------------------------------- */
@@ -61,7 +61,7 @@ export interface ContentProps extends ItemProps {
 /* -------------------------------------------------------------------------- */
 
 /** @ignore */
-export const GROUP = new Ext.ElementRack<ItemProps>();
+export const GROUP = new State.ElementRack<ItemProps>();
 
 /** Defines a group of components.
 
@@ -116,7 +116,7 @@ export interface ViewLayoutProps extends ItemProps {
 }
 
 /** @ignore */
-export const VIEW = new Ext.ElementRack<ViewLayoutProps>();
+export const VIEW = new State.ElementRack<ViewLayoutProps>();
 
 /** Register a new View. */
 export function registerView(view: ViewLayoutProps): void {
@@ -138,7 +138,7 @@ export interface ComponentProps extends ContentProps {
 }
 
 /** @ignore */
-export const COMPONENT = new Ext.ElementRack<ComponentProps>();
+export const COMPONENT = new State.ElementRack<ComponentProps>();
 
 /**
    Register the given Ivette Component.
@@ -210,13 +210,13 @@ export interface ToolProps {
 }
 
 /** @ignore */
-export const SIDEBAR = new Ext.ElementRack<SidebarProps>();
+export const SIDEBAR = new State.ElementRack<SidebarProps>();
 
 /** @ignore */
-export const TOOLBAR = new Ext.ElementRack<ToolProps>();
+export const TOOLBAR = new State.ElementRack<ToolProps>();
 
 /** @ignore */
-export const STATUSBAR = new Ext.ElementRack<ToolProps>();
+export const STATUSBAR = new State.ElementRack<ToolProps>();
 
 export function registerSidebar(sidebar: SidebarProps): void {
   SIDEBAR.register(sidebar);
diff --git a/ivette/src/renderer/Extensions.tsx b/ivette/src/ivette/state.tsx
similarity index 100%
rename from ivette/src/renderer/Extensions.tsx
rename to ivette/src/ivette/state.tsx
diff --git a/ivette/src/renderer/Application.tsx b/ivette/src/renderer/Application.tsx
index 8e55109e8a5..090c4923b53 100644
--- a/ivette/src/renderer/Application.tsx
+++ b/ivette/src/renderer/Application.tsx
@@ -35,7 +35,7 @@ import * as Sidebar from './Sidebar';
 import * as Actions from './Actions';
 import * as Controller from './Controller';
 import * as Lab from './Laboratory';
-import * as Ext from './Extensions';
+import * as State from 'ivette/state';
 import { TOOLBAR, STATUSBAR } from 'ivette';
 import * as IvettePrefs from 'ivette/prefs';
 import './loader';
@@ -52,8 +52,8 @@ export default function Application(): JSX.Element {
   const [viewbar, flipViewbar] =
     Dome.useFlipSettings('frama-c.viewbar.unfold', true);
 
-  const ToolBar = Ext.useChildren(TOOLBAR);
-  const StatusBar = Ext.useChildren(STATUSBAR);
+  const ToolBar = State.useChildren(TOOLBAR);
+  const StatusBar = State.useChildren(STATUSBAR);
 
   return (
     <Vfill>
diff --git a/ivette/src/renderer/Laboratory.tsx b/ivette/src/renderer/Laboratory.tsx
index 2a2cab5e855..b14654ec66c 100644
--- a/ivette/src/renderer/Laboratory.tsx
+++ b/ivette/src/renderer/Laboratory.tsx
@@ -37,7 +37,7 @@ import { Catch } from 'dome/errors';
 import { classes } from 'dome/misc/utils';
 import * as Ivette from 'ivette';
 import { compId, LayoutPosition, VIEW, COMPONENT, GROUP } from 'ivette';
-import * as Ext from './Extensions';
+import * as State from 'ivette/state';
 
 /* -------------------------------------------------------------------------- */
 /* --- LabView State                                                      --- */
@@ -804,7 +804,7 @@ const paneActions: Actions = { dock: true, undock: false, close: true };
 
 function Pane(props: PaneProps): JSX.Element | null {
   const { compId } = props;
-  const component = Ext.useElement(COMPONENT, compId);
+  const component = State.useElement(COMPONENT, compId);
   const onLayout = React.useCallback(
     (evt) => openLayoutMenu(compId, paneActions, evt),
     [compId]
@@ -920,7 +920,7 @@ function ViewItem(props: ViewItemProps): JSX.Element {
 }
 
 function ViewSection(): JSX.Element {
-  const views = Ext.useElements(VIEW);
+  const views = State.useElements(VIEW);
   const [{ tabs, tabKey, sideView, stack }] = States.useGlobalState(LAB);
   const items = views.map((view) => {
     const { id } = view;
@@ -1019,7 +1019,7 @@ interface GroupSectionProps extends Ivette.ItemProps {
 function GroupSection(props: GroupSectionProps): JSX.Element | null {
   const { id, label, title, filter } = props;
   const settings = 'ivette.sidebar.group.' + id;
-  const components = Ext.useElements(COMPONENT).filter(filter) ?? [];
+  const components = State.useElements(COMPONENT).filter(filter) ?? [];
   const [{ panels, docked, sideComp, stack }] = States.useGlobalState(LAB);
   const layout = stack[0] ?? defaultLayout;
   const items = components.map((comp) => {
@@ -1059,7 +1059,7 @@ const Sandbox: Ivette.ItemProps = {
 };
 
 function ViewBar(): JSX.Element {
-  const groups = Ext.useElements(GROUP);
+  const groups = State.useElements(GROUP);
   const allGroups = groups.concat(Sandbox);
 
   return (
@@ -1098,7 +1098,7 @@ interface DockItemProps {
 
 function DockItem(props: DockItemProps): JSX.Element | null {
   const { compId, visible, position } = props;
-  const comp = Ext.useElement(COMPONENT, compId);
+  const comp = State.useElement(COMPONENT, compId);
   if (comp === undefined) return null;
   const label = comp.label ?? compId;
   const icon = 'QSPLIT.' + position;
@@ -1167,7 +1167,7 @@ interface TabViewProps {
 function TabView(props: TabViewProps): JSX.Element | null {
   const { tab, tabKey } = props;
   const { viewId, custom, key } = tab;
-  const view = Ext.useElement(VIEW, viewId);
+  const view = State.useElement(VIEW, viewId);
   if (!view) return null;
   const selected = key === tabKey;
   const top = tab.stack[0] ?? defaultLayout;
diff --git a/ivette/src/renderer/Sidebar.tsx b/ivette/src/renderer/Sidebar.tsx
index 1e5a41d4b5d..f2da4a6c3fe 100644
--- a/ivette/src/renderer/Sidebar.tsx
+++ b/ivette/src/renderer/Sidebar.tsx
@@ -30,7 +30,7 @@ import { SideBar } from 'dome/frame/sidebars';
 import { Catch } from 'dome/errors';
 import { classes } from 'dome/misc/utils';
 import { SidebarProps, SIDEBAR } from 'ivette';
-import * as Ext from './Extensions';
+import * as State from 'ivette/state';
 
 /* -------------------------------------------------------------------------- */
 /* --- SideBar Selector                                                   --- */
@@ -89,7 +89,7 @@ export function Panel(): JSX.Element {
   const [selected, setSelected] =
     Dome.useStringSettings('ivette.sidebar.selected');
 
-  const sidebars = Ext.useElements(SIDEBAR);
+  const sidebars = State.useElements(SIDEBAR);
 
   // Ensures there is one selected sidebar
   React.useEffect(() => {
diff --git a/ivette/webpack.renderer.js b/ivette/webpack.renderer.js
index 454d3fb5427..d4bfd28832f 100644
--- a/ivette/webpack.renderer.js
+++ b/ivette/webpack.renderer.js
@@ -51,7 +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@ext':   path.resolve( __dirname , 'src/renderer/Extensions' ),
       'ivette@lab':   path.resolve( __dirname , 'src/renderer/Laboratory' ),
       'ivette@mode':  path.resolve( __dirname , 'src/renderer/Actions' ),
       'ivette':       path.resolve( __dirname , 'src/ivette' ),
-- 
GitLab