@fluxo-dev/shell 25.3.8 โ 25.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.esm.js +1551 -574
- package/package.json +12 -12
- package/src/index.d.ts +2 -1
- package/src/lib/components/message-receiver-modal.d.ts +11 -0
- package/src/lib/components/routes/main-routes.d.ts +6 -1
- package/src/lib/components/send-message-modal.d.ts +21 -0
- package/src/lib/hooks/use-session-hub.d.ts +22 -0
package/index.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import React__default, { useState, useEffect, Suspense, useRef, useCallback as useCallback$1, forwardRef, createElement as createElement$2, useMemo as useMemo$1,
|
|
3
|
+
import React__default, { useState, useEffect, Suspense, useRef, useCallback as useCallback$1, forwardRef, createElement as createElement$2, useContext, useMemo as useMemo$1, createContext, useLayoutEffect, memo, isValidElement, cloneElement, useImperativeHandle, lazy } from 'react';
|
|
4
4
|
import { useSelector, connect, Provider } from 'react-redux';
|
|
5
|
-
import { Navigate, Outlet, useNavigate, useLocation, Link, useOutlet, matchPath,
|
|
6
|
-
import { useFlxNavigate, DataCard, SessionIdContext, TabActiveContext, IconFactory, ShellConfigProvider, useShellLayout, ShellPage, NoData, ConfirmModal, CronGenerator, Datagrid, RichTextEditorInput, ErrorPage as ErrorPage$1,
|
|
5
|
+
import { Navigate, Outlet, useNavigate, useLocation, Link, useOutlet, matchPath, useSearchParams, createBrowserRouter, RouterProvider } from 'react-router-dom';
|
|
6
|
+
import { useFlxNavigate, DataCard, SessionIdContext, TabActiveContext, IconFactory, ShellConfigProvider, useShellLayout, ShellPage, NoData, ConfirmModal, CronGenerator, Datagrid, RichTextEditorInput, ErrorPage as ErrorPage$1, WaitData } from '@fluxo-dev/ui-components';
|
|
7
7
|
import { ModuleLoader } from '@fluxo-dev/shell-mfe';
|
|
8
8
|
import { Text, Box, TextInput, Popover, Stack, UnstyledButton, Group, Highlight, ActionIcon, useMantineTheme, AppShell, Burger, Badge, Drawer, NavLink, Avatar, Center, Button, Divider, Modal, FocusTrap, Tabs, ScrollArea, ThemeIcon, Tooltip, Anchor, Space, useMantineColorScheme, Collapse, Menu, rem, Loader, Overlay, Grid, PasswordInput, Paper, Alert, Title, Card, ColorSwatch, FileButton, NumberInput, ColorInput, Checkbox, Switch, Select, Radio, LoadingOverlay, Chip, Image as Image$1, Table, SegmentedControl, MultiSelect, Code, Portal, useDirection, px as px$1, parseThemeColor, rgba as rgba$1, Breadcrumbs, TagsInput, Textarea, Accordion, useCombobox, Combobox, InputBase, Slider, MantineProvider } from '@mantine/core';
|
|
9
9
|
import { MinimalStateViewer, RavifyProvider, JobsViewer } from '@fluxo-dev/shell-ravify';
|
|
@@ -11170,8 +11170,8 @@ const createReactComponent = (type, iconName, iconNamePascal, iconNode) => {
|
|
|
11170
11170
|
*/
|
|
11171
11171
|
|
|
11172
11172
|
|
|
11173
|
-
const __iconNode$
|
|
11174
|
-
const IconAlertCircle = createReactComponent("outline", "alert-circle", "AlertCircle", __iconNode$
|
|
11173
|
+
const __iconNode$1H = [["path", { "d": "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 8v4", "key": "svg-1" }], ["path", { "d": "M12 16h.01", "key": "svg-2" }]];
|
|
11174
|
+
const IconAlertCircle = createReactComponent("outline", "alert-circle", "AlertCircle", __iconNode$1H);
|
|
11175
11175
|
|
|
11176
11176
|
/**
|
|
11177
11177
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11181,8 +11181,8 @@ const IconAlertCircle = createReactComponent("outline", "alert-circle", "AlertCi
|
|
|
11181
11181
|
*/
|
|
11182
11182
|
|
|
11183
11183
|
|
|
11184
|
-
const __iconNode$
|
|
11185
|
-
const
|
|
11184
|
+
const __iconNode$1G = [["path", { "d": "M12.802 2.165l5.575 2.389c.48 .206 .863 .589 1.07 1.07l2.388 5.574c.22 .512 .22 1.092 0 1.604l-2.389 5.575c-.206 .48 -.589 .863 -1.07 1.07l-5.574 2.388c-.512 .22 -1.092 .22 -1.604 0l-5.575 -2.389a2.036 2.036 0 0 1 -1.07 -1.07l-2.388 -5.574a2.036 2.036 0 0 1 0 -1.604l2.389 -5.575c.206 -.48 .589 -.863 1.07 -1.07l5.574 -2.388a2.036 2.036 0 0 1 1.604 0z", "key": "svg-0" }], ["path", { "d": "M12 8v4", "key": "svg-1" }], ["path", { "d": "M12 16h.01", "key": "svg-2" }]];
|
|
11185
|
+
const IconAlertOctagon = createReactComponent("outline", "alert-octagon", "AlertOctagon", __iconNode$1G);
|
|
11186
11186
|
|
|
11187
11187
|
/**
|
|
11188
11188
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11192,8 +11192,8 @@ const IconAlertTriangle = createReactComponent("outline", "alert-triangle", "Ale
|
|
|
11192
11192
|
*/
|
|
11193
11193
|
|
|
11194
11194
|
|
|
11195
|
-
const __iconNode$
|
|
11196
|
-
const
|
|
11195
|
+
const __iconNode$1F = [["path", { "d": "M12 9v4", "key": "svg-0" }], ["path", { "d": "M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z", "key": "svg-1" }], ["path", { "d": "M12 16h.01", "key": "svg-2" }]];
|
|
11196
|
+
const IconAlertTriangle = createReactComponent("outline", "alert-triangle", "AlertTriangle", __iconNode$1F);
|
|
11197
11197
|
|
|
11198
11198
|
/**
|
|
11199
11199
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11203,8 +11203,8 @@ const IconApi = createReactComponent("outline", "api", "Api", __iconNode$1z);
|
|
|
11203
11203
|
*/
|
|
11204
11204
|
|
|
11205
11205
|
|
|
11206
|
-
const __iconNode$
|
|
11207
|
-
const
|
|
11206
|
+
const __iconNode$1E = [["path", { "d": "M4 13h5", "key": "svg-0" }], ["path", { "d": "M12 16v-8h3a2 2 0 0 1 2 2v1a2 2 0 0 1 -2 2h-3", "key": "svg-1" }], ["path", { "d": "M20 8v8", "key": "svg-2" }], ["path", { "d": "M9 16v-5.5a2.5 2.5 0 0 0 -5 0v5.5", "key": "svg-3" }]];
|
|
11207
|
+
const IconApi = createReactComponent("outline", "api", "Api", __iconNode$1E);
|
|
11208
11208
|
|
|
11209
11209
|
/**
|
|
11210
11210
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11214,8 +11214,8 @@ const IconApps = createReactComponent("outline", "apps", "Apps", __iconNode$1y);
|
|
|
11214
11214
|
*/
|
|
11215
11215
|
|
|
11216
11216
|
|
|
11217
|
-
const __iconNode$
|
|
11218
|
-
const
|
|
11217
|
+
const __iconNode$1D = [["path", { "d": "M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-0" }], ["path", { "d": "M4 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-1" }], ["path", { "d": "M14 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-2" }], ["path", { "d": "M14 7l6 0", "key": "svg-3" }], ["path", { "d": "M17 4l0 6", "key": "svg-4" }]];
|
|
11218
|
+
const IconApps = createReactComponent("outline", "apps", "Apps", __iconNode$1D);
|
|
11219
11219
|
|
|
11220
11220
|
/**
|
|
11221
11221
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11225,8 +11225,8 @@ const IconArrowDown = createReactComponent("outline", "arrow-down", "ArrowDown",
|
|
|
11225
11225
|
*/
|
|
11226
11226
|
|
|
11227
11227
|
|
|
11228
|
-
const __iconNode$
|
|
11229
|
-
const
|
|
11228
|
+
const __iconNode$1C = [["path", { "d": "M12 5l0 14", "key": "svg-0" }], ["path", { "d": "M18 13l-6 6", "key": "svg-1" }], ["path", { "d": "M6 13l6 6", "key": "svg-2" }]];
|
|
11229
|
+
const IconArrowDown = createReactComponent("outline", "arrow-down", "ArrowDown", __iconNode$1C);
|
|
11230
11230
|
|
|
11231
11231
|
/**
|
|
11232
11232
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11236,8 +11236,8 @@ const IconArrowLeft = createReactComponent("outline", "arrow-left", "ArrowLeft",
|
|
|
11236
11236
|
*/
|
|
11237
11237
|
|
|
11238
11238
|
|
|
11239
|
-
const __iconNode$
|
|
11240
|
-
const
|
|
11239
|
+
const __iconNode$1B = [["path", { "d": "M5 12l14 0", "key": "svg-0" }], ["path", { "d": "M5 12l6 6", "key": "svg-1" }], ["path", { "d": "M5 12l6 -6", "key": "svg-2" }]];
|
|
11240
|
+
const IconArrowLeft = createReactComponent("outline", "arrow-left", "ArrowLeft", __iconNode$1B);
|
|
11241
11241
|
|
|
11242
11242
|
/**
|
|
11243
11243
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11247,8 +11247,8 @@ const IconArrowRight = createReactComponent("outline", "arrow-right", "ArrowRigh
|
|
|
11247
11247
|
*/
|
|
11248
11248
|
|
|
11249
11249
|
|
|
11250
|
-
const __iconNode$
|
|
11251
|
-
const
|
|
11250
|
+
const __iconNode$1A = [["path", { "d": "M5 12l14 0", "key": "svg-0" }], ["path", { "d": "M13 18l6 -6", "key": "svg-1" }], ["path", { "d": "M13 6l6 6", "key": "svg-2" }]];
|
|
11251
|
+
const IconArrowRight = createReactComponent("outline", "arrow-right", "ArrowRight", __iconNode$1A);
|
|
11252
11252
|
|
|
11253
11253
|
/**
|
|
11254
11254
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11258,8 +11258,8 @@ const IconArrowUp = createReactComponent("outline", "arrow-up", "ArrowUp", __ico
|
|
|
11258
11258
|
*/
|
|
11259
11259
|
|
|
11260
11260
|
|
|
11261
|
-
const __iconNode$
|
|
11262
|
-
const
|
|
11261
|
+
const __iconNode$1z = [["path", { "d": "M12 5l0 14", "key": "svg-0" }], ["path", { "d": "M18 11l-6 -6", "key": "svg-1" }], ["path", { "d": "M6 11l6 -6", "key": "svg-2" }]];
|
|
11262
|
+
const IconArrowUp = createReactComponent("outline", "arrow-up", "ArrowUp", __iconNode$1z);
|
|
11263
11263
|
|
|
11264
11264
|
/**
|
|
11265
11265
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11269,8 +11269,8 @@ const IconAt = createReactComponent("outline", "at", "At", __iconNode$1t);
|
|
|
11269
11269
|
*/
|
|
11270
11270
|
|
|
11271
11271
|
|
|
11272
|
-
const __iconNode$
|
|
11273
|
-
const
|
|
11272
|
+
const __iconNode$1y = [["path", { "d": "M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0", "key": "svg-0" }], ["path", { "d": "M16 12v1.5a2.5 2.5 0 0 0 5 0v-1.5a9 9 0 1 0 -5.5 8.28", "key": "svg-1" }]];
|
|
11273
|
+
const IconAt = createReactComponent("outline", "at", "At", __iconNode$1y);
|
|
11274
11274
|
|
|
11275
11275
|
/**
|
|
11276
11276
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11280,8 +11280,8 @@ const IconBoxModel = createReactComponent("outline", "box-model", "BoxModel", __
|
|
|
11280
11280
|
*/
|
|
11281
11281
|
|
|
11282
11282
|
|
|
11283
|
-
const __iconNode$
|
|
11284
|
-
const
|
|
11283
|
+
const __iconNode$1x = [["path", { "d": "M10 5a2 2 0 1 1 4 0a7 7 0 0 1 4 6v3a4 4 0 0 0 2 3h-16a4 4 0 0 0 2 -3v-3a7 7 0 0 1 4 -6", "key": "svg-0" }], ["path", { "d": "M9 17v1a3 3 0 0 0 6 0v-1", "key": "svg-1" }]];
|
|
11284
|
+
const IconBell = createReactComponent("outline", "bell", "Bell", __iconNode$1x);
|
|
11285
11285
|
|
|
11286
11286
|
/**
|
|
11287
11287
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11291,8 +11291,8 @@ const IconBoxMultiple = createReactComponent("outline", "box-multiple", "BoxMult
|
|
|
11291
11291
|
*/
|
|
11292
11292
|
|
|
11293
11293
|
|
|
11294
|
-
const __iconNode$
|
|
11295
|
-
const
|
|
11294
|
+
const __iconNode$1w = [["path", { "d": "M8 8h8v8h-8z", "key": "svg-0" }], ["path", { "d": "M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z", "key": "svg-1" }], ["path", { "d": "M16 16l3.3 3.3", "key": "svg-2" }], ["path", { "d": "M16 8l3.3 -3.3", "key": "svg-3" }], ["path", { "d": "M8 8l-3.3 -3.3", "key": "svg-4" }], ["path", { "d": "M8 16l-3.3 3.3", "key": "svg-5" }]];
|
|
11295
|
+
const IconBoxModel = createReactComponent("outline", "box-model", "BoxModel", __iconNode$1w);
|
|
11296
11296
|
|
|
11297
11297
|
/**
|
|
11298
11298
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11302,8 +11302,8 @@ const IconBrain = createReactComponent("outline", "brain", "Brain", __iconNode$1
|
|
|
11302
11302
|
*/
|
|
11303
11303
|
|
|
11304
11304
|
|
|
11305
|
-
const __iconNode$
|
|
11306
|
-
const
|
|
11305
|
+
const __iconNode$1v = [["path", { "d": "M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2", "key": "svg-1" }]];
|
|
11306
|
+
const IconBoxMultiple = createReactComponent("outline", "box-multiple", "BoxMultiple", __iconNode$1v);
|
|
11307
11307
|
|
|
11308
11308
|
/**
|
|
11309
11309
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11313,8 +11313,8 @@ const IconBrandOpenai = createReactComponent("outline", "brand-openai", "BrandOp
|
|
|
11313
11313
|
*/
|
|
11314
11314
|
|
|
11315
11315
|
|
|
11316
|
-
const __iconNode$
|
|
11317
|
-
const
|
|
11316
|
+
const __iconNode$1u = [["path", { "d": "M15.5 13a3.5 3.5 0 0 0 -3.5 3.5v1a3.5 3.5 0 0 0 7 0v-1.8", "key": "svg-0" }], ["path", { "d": "M8.5 13a3.5 3.5 0 0 1 3.5 3.5v1a3.5 3.5 0 0 1 -7 0v-1.8", "key": "svg-1" }], ["path", { "d": "M17.5 16a3.5 3.5 0 0 0 0 -7h-.5", "key": "svg-2" }], ["path", { "d": "M19 9.3v-2.8a3.5 3.5 0 0 0 -7 0", "key": "svg-3" }], ["path", { "d": "M6.5 16a3.5 3.5 0 0 1 0 -7h.5", "key": "svg-4" }], ["path", { "d": "M5 9.3v-2.8a3.5 3.5 0 0 1 7 0v10", "key": "svg-5" }]];
|
|
11317
|
+
const IconBrain = createReactComponent("outline", "brain", "Brain", __iconNode$1u);
|
|
11318
11318
|
|
|
11319
11319
|
/**
|
|
11320
11320
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11324,8 +11324,8 @@ const IconBug = createReactComponent("outline", "bug", "Bug", __iconNode$1o);
|
|
|
11324
11324
|
*/
|
|
11325
11325
|
|
|
11326
11326
|
|
|
11327
|
-
const __iconNode$
|
|
11328
|
-
const
|
|
11327
|
+
const __iconNode$1t = [["path", { "d": "M11.217 19.384a3.501 3.501 0 0 0 6.783 -1.217v-5.167l-6 -3.35", "key": "svg-0" }], ["path", { "d": "M5.214 15.014a3.501 3.501 0 0 0 4.446 5.266l4.34 -2.534v-6.946", "key": "svg-1" }], ["path", { "d": "M6 7.63c-1.391 -.236 -2.787 .395 -3.534 1.689a3.474 3.474 0 0 0 1.271 4.745l4.263 2.514l6 -3.348", "key": "svg-2" }], ["path", { "d": "M12.783 4.616a3.501 3.501 0 0 0 -6.783 1.217v5.067l6 3.45", "key": "svg-3" }], ["path", { "d": "M18.786 8.986a3.501 3.501 0 0 0 -4.446 -5.266l-4.34 2.534v6.946", "key": "svg-4" }], ["path", { "d": "M18 16.302c1.391 .236 2.787 -.395 3.534 -1.689a3.474 3.474 0 0 0 -1.271 -4.745l-4.308 -2.514l-5.955 3.42", "key": "svg-5" }]];
|
|
11328
|
+
const IconBrandOpenai = createReactComponent("outline", "brand-openai", "BrandOpenai", __iconNode$1t);
|
|
11329
11329
|
|
|
11330
11330
|
/**
|
|
11331
11331
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11335,8 +11335,8 @@ const IconBuilding = createReactComponent("outline", "building", "Building", __i
|
|
|
11335
11335
|
*/
|
|
11336
11336
|
|
|
11337
11337
|
|
|
11338
|
-
const __iconNode$
|
|
11339
|
-
const
|
|
11338
|
+
const __iconNode$1s = [["path", { "d": "M18.364 19.364a9 9 0 1 0 -12.728 0", "key": "svg-0" }], ["path", { "d": "M15.536 16.536a5 5 0 1 0 -7.072 0", "key": "svg-1" }], ["path", { "d": "M12 13m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }]];
|
|
11339
|
+
const IconBroadcast = createReactComponent("outline", "broadcast", "Broadcast", __iconNode$1s);
|
|
11340
11340
|
|
|
11341
11341
|
/**
|
|
11342
11342
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11346,8 +11346,8 @@ const IconCalendar = createReactComponent("outline", "calendar", "Calendar", __i
|
|
|
11346
11346
|
*/
|
|
11347
11347
|
|
|
11348
11348
|
|
|
11349
|
-
const __iconNode$
|
|
11350
|
-
const
|
|
11349
|
+
const __iconNode$1r = [["path", { "d": "M9 9v-1a3 3 0 0 1 6 0v1", "key": "svg-0" }], ["path", { "d": "M8 9h8a6 6 0 0 1 1 3v3a5 5 0 0 1 -10 0v-3a6 6 0 0 1 1 -3", "key": "svg-1" }], ["path", { "d": "M3 13l4 0", "key": "svg-2" }], ["path", { "d": "M17 13l4 0", "key": "svg-3" }], ["path", { "d": "M12 20l0 -6", "key": "svg-4" }], ["path", { "d": "M4 19l3.35 -2", "key": "svg-5" }], ["path", { "d": "M20 19l-3.35 -2", "key": "svg-6" }], ["path", { "d": "M4 7l3.75 2.4", "key": "svg-7" }], ["path", { "d": "M20 7l-3.75 2.4", "key": "svg-8" }]];
|
|
11350
|
+
const IconBug = createReactComponent("outline", "bug", "Bug", __iconNode$1r);
|
|
11351
11351
|
|
|
11352
11352
|
/**
|
|
11353
11353
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11357,8 +11357,8 @@ const IconCategory = createReactComponent("outline", "category", "Category", __i
|
|
|
11357
11357
|
*/
|
|
11358
11358
|
|
|
11359
11359
|
|
|
11360
|
-
const __iconNode$
|
|
11361
|
-
const
|
|
11360
|
+
const __iconNode$1q = [["path", { "d": "M3 21l18 0", "key": "svg-0" }], ["path", { "d": "M9 8l1 0", "key": "svg-1" }], ["path", { "d": "M9 12l1 0", "key": "svg-2" }], ["path", { "d": "M9 16l1 0", "key": "svg-3" }], ["path", { "d": "M14 8l1 0", "key": "svg-4" }], ["path", { "d": "M14 12l1 0", "key": "svg-5" }], ["path", { "d": "M14 16l1 0", "key": "svg-6" }], ["path", { "d": "M5 21v-16a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v16", "key": "svg-7" }]];
|
|
11361
|
+
const IconBuilding = createReactComponent("outline", "building", "Building", __iconNode$1q);
|
|
11362
11362
|
|
|
11363
11363
|
/**
|
|
11364
11364
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11368,8 +11368,8 @@ const IconCheck = createReactComponent("outline", "check", "Check", __iconNode$1
|
|
|
11368
11368
|
*/
|
|
11369
11369
|
|
|
11370
11370
|
|
|
11371
|
-
const __iconNode$
|
|
11372
|
-
const
|
|
11371
|
+
const __iconNode$1p = [["path", { "d": "M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z", "key": "svg-0" }], ["path", { "d": "M16 3v4", "key": "svg-1" }], ["path", { "d": "M8 3v4", "key": "svg-2" }], ["path", { "d": "M4 11h16", "key": "svg-3" }], ["path", { "d": "M11 15h1", "key": "svg-4" }], ["path", { "d": "M12 15v3", "key": "svg-5" }]];
|
|
11372
|
+
const IconCalendar = createReactComponent("outline", "calendar", "Calendar", __iconNode$1p);
|
|
11373
11373
|
|
|
11374
11374
|
/**
|
|
11375
11375
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11379,8 +11379,8 @@ const IconChecks = createReactComponent("outline", "checks", "Checks", __iconNod
|
|
|
11379
11379
|
*/
|
|
11380
11380
|
|
|
11381
11381
|
|
|
11382
|
-
const __iconNode$
|
|
11383
|
-
const
|
|
11382
|
+
const __iconNode$1o = [["path", { "d": "M4 4h6v6h-6z", "key": "svg-0" }], ["path", { "d": "M14 4h6v6h-6z", "key": "svg-1" }], ["path", { "d": "M4 14h6v6h-6z", "key": "svg-2" }], ["path", { "d": "M17 17m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0", "key": "svg-3" }]];
|
|
11383
|
+
const IconCategory = createReactComponent("outline", "category", "Category", __iconNode$1o);
|
|
11384
11384
|
|
|
11385
11385
|
/**
|
|
11386
11386
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11390,8 +11390,8 @@ const IconChevronDown = createReactComponent("outline", "chevron-down", "Chevron
|
|
|
11390
11390
|
*/
|
|
11391
11391
|
|
|
11392
11392
|
|
|
11393
|
-
const __iconNode$
|
|
11394
|
-
const
|
|
11393
|
+
const __iconNode$1n = [["path", { "d": "M5 12l5 5l10 -10", "key": "svg-0" }]];
|
|
11394
|
+
const IconCheck = createReactComponent("outline", "check", "Check", __iconNode$1n);
|
|
11395
11395
|
|
|
11396
11396
|
/**
|
|
11397
11397
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11401,8 +11401,8 @@ const IconChevronLeft = createReactComponent("outline", "chevron-left", "Chevron
|
|
|
11401
11401
|
*/
|
|
11402
11402
|
|
|
11403
11403
|
|
|
11404
|
-
const __iconNode$
|
|
11405
|
-
const
|
|
11404
|
+
const __iconNode$1m = [["path", { "d": "M7 12l5 5l10 -10", "key": "svg-0" }], ["path", { "d": "M2 12l5 5m5 -5l5 -5", "key": "svg-1" }]];
|
|
11405
|
+
const IconChecks = createReactComponent("outline", "checks", "Checks", __iconNode$1m);
|
|
11406
11406
|
|
|
11407
11407
|
/**
|
|
11408
11408
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11412,8 +11412,8 @@ const IconChevronRight = createReactComponent("outline", "chevron-right", "Chevr
|
|
|
11412
11412
|
*/
|
|
11413
11413
|
|
|
11414
11414
|
|
|
11415
|
-
const __iconNode$
|
|
11416
|
-
const
|
|
11415
|
+
const __iconNode$1l = [["path", { "d": "M6 9l6 6l6 -6", "key": "svg-0" }]];
|
|
11416
|
+
const IconChevronDown = createReactComponent("outline", "chevron-down", "ChevronDown", __iconNode$1l);
|
|
11417
11417
|
|
|
11418
11418
|
/**
|
|
11419
11419
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11423,8 +11423,8 @@ const IconChevronUp = createReactComponent("outline", "chevron-up", "ChevronUp",
|
|
|
11423
11423
|
*/
|
|
11424
11424
|
|
|
11425
11425
|
|
|
11426
|
-
const __iconNode$
|
|
11427
|
-
const
|
|
11426
|
+
const __iconNode$1k = [["path", { "d": "M15 6l-6 6l6 6", "key": "svg-0" }]];
|
|
11427
|
+
const IconChevronLeft = createReactComponent("outline", "chevron-left", "ChevronLeft", __iconNode$1k);
|
|
11428
11428
|
|
|
11429
11429
|
/**
|
|
11430
11430
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11434,8 +11434,8 @@ const IconCircleOff = createReactComponent("outline", "circle-off", "CircleOff",
|
|
|
11434
11434
|
*/
|
|
11435
11435
|
|
|
11436
11436
|
|
|
11437
|
-
const __iconNode$
|
|
11438
|
-
const
|
|
11437
|
+
const __iconNode$1j = [["path", { "d": "M9 6l6 6l-6 6", "key": "svg-0" }]];
|
|
11438
|
+
const IconChevronRight = createReactComponent("outline", "chevron-right", "ChevronRight", __iconNode$1j);
|
|
11439
11439
|
|
|
11440
11440
|
/**
|
|
11441
11441
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11445,8 +11445,8 @@ const IconClearAll = createReactComponent("outline", "clear-all", "ClearAll", __
|
|
|
11445
11445
|
*/
|
|
11446
11446
|
|
|
11447
11447
|
|
|
11448
|
-
const __iconNode$
|
|
11449
|
-
const
|
|
11448
|
+
const __iconNode$1i = [["path", { "d": "M6 15l6 -6l6 6", "key": "svg-0" }]];
|
|
11449
|
+
const IconChevronUp = createReactComponent("outline", "chevron-up", "ChevronUp", __iconNode$1i);
|
|
11450
11450
|
|
|
11451
11451
|
/**
|
|
11452
11452
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11456,8 +11456,8 @@ const IconCloudOff = createReactComponent("outline", "cloud-off", "CloudOff", __
|
|
|
11456
11456
|
*/
|
|
11457
11457
|
|
|
11458
11458
|
|
|
11459
|
-
const __iconNode$
|
|
11460
|
-
const
|
|
11459
|
+
const __iconNode$1h = [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M9 12l2 2l4 -4", "key": "svg-1" }]];
|
|
11460
|
+
const IconCircleCheck = createReactComponent("outline", "circle-check", "CircleCheck", __iconNode$1h);
|
|
11461
11461
|
|
|
11462
11462
|
/**
|
|
11463
11463
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11467,8 +11467,8 @@ const IconCloud = createReactComponent("outline", "cloud", "Cloud", __iconNode$1
|
|
|
11467
11467
|
*/
|
|
11468
11468
|
|
|
11469
11469
|
|
|
11470
|
-
const __iconNode$
|
|
11471
|
-
const
|
|
11470
|
+
const __iconNode$1g = [["path", { "d": "M20.042 16.045a9 9 0 0 0 -12.087 -12.087m-2.318 1.677a9 9 0 1 0 12.725 12.73", "key": "svg-0" }], ["path", { "d": "M3 3l18 18", "key": "svg-1" }]];
|
|
11471
|
+
const IconCircleOff = createReactComponent("outline", "circle-off", "CircleOff", __iconNode$1g);
|
|
11472
11472
|
|
|
11473
11473
|
/**
|
|
11474
11474
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11478,8 +11478,8 @@ const IconCode = createReactComponent("outline", "code", "Code", __iconNode$1a);
|
|
|
11478
11478
|
*/
|
|
11479
11479
|
|
|
11480
11480
|
|
|
11481
|
-
const __iconNode$
|
|
11482
|
-
const
|
|
11481
|
+
const __iconNode$1f = [["path", { "d": "M8 6h12", "key": "svg-0" }], ["path", { "d": "M6 12h12", "key": "svg-1" }], ["path", { "d": "M4 18h12", "key": "svg-2" }]];
|
|
11482
|
+
const IconClearAll = createReactComponent("outline", "clear-all", "ClearAll", __iconNode$1f);
|
|
11483
11483
|
|
|
11484
11484
|
/**
|
|
11485
11485
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11489,8 +11489,8 @@ const IconCopy = createReactComponent("outline", "copy", "Copy", __iconNode$19);
|
|
|
11489
11489
|
*/
|
|
11490
11490
|
|
|
11491
11491
|
|
|
11492
|
-
const __iconNode$
|
|
11493
|
-
const
|
|
11492
|
+
const __iconNode$1e = [["path", { "d": "M9.58 5.548c.24 -.11 .492 -.207 .752 -.286c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486c0 .957 -.383 1.824 -1.003 2.454m-2.997 1.033h-11.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.13 -.582 .37 -1.128 .7 -1.62", "key": "svg-0" }], ["path", { "d": "M3 3l18 18", "key": "svg-1" }]];
|
|
11493
|
+
const IconCloudOff = createReactComponent("outline", "cloud-off", "CloudOff", __iconNode$1e);
|
|
11494
11494
|
|
|
11495
11495
|
/**
|
|
11496
11496
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11500,8 +11500,8 @@ const IconDashboard = createReactComponent("outline", "dashboard", "Dashboard",
|
|
|
11500
11500
|
*/
|
|
11501
11501
|
|
|
11502
11502
|
|
|
11503
|
-
const __iconNode$
|
|
11504
|
-
const
|
|
11503
|
+
const __iconNode$1d = [["path", { "d": "M6.657 18c-2.572 0 -4.657 -2.007 -4.657 -4.483c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486c0 1.927 -1.551 3.487 -3.465 3.487h-11.878", "key": "svg-0" }]];
|
|
11504
|
+
const IconCloud = createReactComponent("outline", "cloud", "Cloud", __iconNode$1d);
|
|
11505
11505
|
|
|
11506
11506
|
/**
|
|
11507
11507
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11511,8 +11511,8 @@ const IconDatabase = createReactComponent("outline", "database", "Database", __i
|
|
|
11511
11511
|
*/
|
|
11512
11512
|
|
|
11513
11513
|
|
|
11514
|
-
const __iconNode$
|
|
11515
|
-
const
|
|
11514
|
+
const __iconNode$1c = [["path", { "d": "M7 8l-4 4l4 4", "key": "svg-0" }], ["path", { "d": "M17 8l4 4l-4 4", "key": "svg-1" }], ["path", { "d": "M14 4l-4 16", "key": "svg-2" }]];
|
|
11515
|
+
const IconCode = createReactComponent("outline", "code", "Code", __iconNode$1c);
|
|
11516
11516
|
|
|
11517
11517
|
/**
|
|
11518
11518
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11522,8 +11522,8 @@ const IconDeviceFloppy = createReactComponent("outline", "device-floppy", "Devic
|
|
|
11522
11522
|
*/
|
|
11523
11523
|
|
|
11524
11524
|
|
|
11525
|
-
const __iconNode$
|
|
11526
|
-
const
|
|
11525
|
+
const __iconNode$1b = [["path", { "d": "M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z", "key": "svg-0" }], ["path", { "d": "M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1", "key": "svg-1" }]];
|
|
11526
|
+
const IconCopy = createReactComponent("outline", "copy", "Copy", __iconNode$1b);
|
|
11527
11527
|
|
|
11528
11528
|
/**
|
|
11529
11529
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11533,8 +11533,8 @@ const IconDeviceLaptop = createReactComponent("outline", "device-laptop", "Devic
|
|
|
11533
11533
|
*/
|
|
11534
11534
|
|
|
11535
11535
|
|
|
11536
|
-
const __iconNode$
|
|
11537
|
-
const
|
|
11536
|
+
const __iconNode$1a = [["path", { "d": "M12 13m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-0" }], ["path", { "d": "M13.45 11.55l2.05 -2.05", "key": "svg-1" }], ["path", { "d": "M6.4 20a9 9 0 1 1 11.2 0z", "key": "svg-2" }]];
|
|
11537
|
+
const IconDashboard = createReactComponent("outline", "dashboard", "Dashboard", __iconNode$1a);
|
|
11538
11538
|
|
|
11539
11539
|
/**
|
|
11540
11540
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11544,8 +11544,8 @@ const IconDotsVertical = createReactComponent("outline", "dots-vertical", "DotsV
|
|
|
11544
11544
|
*/
|
|
11545
11545
|
|
|
11546
11546
|
|
|
11547
|
-
const __iconNode$
|
|
11548
|
-
const
|
|
11547
|
+
const __iconNode$19 = [["path", { "d": "M12 6m-8 0a8 3 0 1 0 16 0a8 3 0 1 0 -16 0", "key": "svg-0" }], ["path", { "d": "M4 6v6a8 3 0 0 0 16 0v-6", "key": "svg-1" }], ["path", { "d": "M4 12v6a8 3 0 0 0 16 0v-6", "key": "svg-2" }]];
|
|
11548
|
+
const IconDatabase = createReactComponent("outline", "database", "Database", __iconNode$19);
|
|
11549
11549
|
|
|
11550
11550
|
/**
|
|
11551
11551
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11555,8 +11555,8 @@ const IconDownload = createReactComponent("outline", "download", "Download", __i
|
|
|
11555
11555
|
*/
|
|
11556
11556
|
|
|
11557
11557
|
|
|
11558
|
-
const __iconNode$
|
|
11559
|
-
const
|
|
11558
|
+
const __iconNode$18 = [["path", { "d": "M6 4h10l4 4v10a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2", "key": "svg-0" }], ["path", { "d": "M12 14m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-1" }], ["path", { "d": "M14 4l0 4l-6 0l0 -4", "key": "svg-2" }]];
|
|
11559
|
+
const IconDeviceFloppy = createReactComponent("outline", "device-floppy", "DeviceFloppy", __iconNode$18);
|
|
11560
11560
|
|
|
11561
11561
|
/**
|
|
11562
11562
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11566,8 +11566,8 @@ const IconEdit = createReactComponent("outline", "edit", "Edit", __iconNode$12);
|
|
|
11566
11566
|
*/
|
|
11567
11567
|
|
|
11568
11568
|
|
|
11569
|
-
const __iconNode$
|
|
11570
|
-
const
|
|
11569
|
+
const __iconNode$17 = [["path", { "d": "M3 19l18 0", "key": "svg-0" }], ["path", { "d": "M5 6m0 1a1 1 0 0 1 1 -1h12a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-12a1 1 0 0 1 -1 -1z", "key": "svg-1" }]];
|
|
11570
|
+
const IconDeviceLaptop = createReactComponent("outline", "device-laptop", "DeviceLaptop", __iconNode$17);
|
|
11571
11571
|
|
|
11572
11572
|
/**
|
|
11573
11573
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11577,8 +11577,8 @@ const IconExternalLink = createReactComponent("outline", "external-link", "Exter
|
|
|
11577
11577
|
*/
|
|
11578
11578
|
|
|
11579
11579
|
|
|
11580
|
-
const __iconNode$
|
|
11581
|
-
const
|
|
11580
|
+
const __iconNode$16 = [["path", { "d": "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-0" }], ["path", { "d": "M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-1" }], ["path", { "d": "M12 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }]];
|
|
11581
|
+
const IconDotsVertical = createReactComponent("outline", "dots-vertical", "DotsVertical", __iconNode$16);
|
|
11582
11582
|
|
|
11583
11583
|
/**
|
|
11584
11584
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11588,8 +11588,8 @@ const IconEye = createReactComponent("outline", "eye", "Eye", __iconNode$10);
|
|
|
11588
11588
|
*/
|
|
11589
11589
|
|
|
11590
11590
|
|
|
11591
|
-
const __iconNode
|
|
11592
|
-
const
|
|
11591
|
+
const __iconNode$15 = [["path", { "d": "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2", "key": "svg-0" }], ["path", { "d": "M7 11l5 5l5 -5", "key": "svg-1" }], ["path", { "d": "M12 4l0 12", "key": "svg-2" }]];
|
|
11592
|
+
const IconDownload = createReactComponent("outline", "download", "Download", __iconNode$15);
|
|
11593
11593
|
|
|
11594
11594
|
/**
|
|
11595
11595
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11599,8 +11599,8 @@ const IconFilePlus = createReactComponent("outline", "file-plus", "FilePlus", __
|
|
|
11599
11599
|
*/
|
|
11600
11600
|
|
|
11601
11601
|
|
|
11602
|
-
const __iconNode$
|
|
11603
|
-
const
|
|
11602
|
+
const __iconNode$14 = [["path", { "d": "M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1", "key": "svg-0" }], ["path", { "d": "M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z", "key": "svg-1" }], ["path", { "d": "M16 5l3 3", "key": "svg-2" }]];
|
|
11603
|
+
const IconEdit = createReactComponent("outline", "edit", "Edit", __iconNode$14);
|
|
11604
11604
|
|
|
11605
11605
|
/**
|
|
11606
11606
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11610,8 +11610,8 @@ const IconFileReport = createReactComponent("outline", "file-report", "FileRepor
|
|
|
11610
11610
|
*/
|
|
11611
11611
|
|
|
11612
11612
|
|
|
11613
|
-
const __iconNode$
|
|
11614
|
-
const
|
|
11613
|
+
const __iconNode$13 = [["path", { "d": "M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6", "key": "svg-0" }], ["path", { "d": "M11 13l9 -9", "key": "svg-1" }], ["path", { "d": "M15 4h5v5", "key": "svg-2" }]];
|
|
11614
|
+
const IconExternalLink = createReactComponent("outline", "external-link", "ExternalLink", __iconNode$13);
|
|
11615
11615
|
|
|
11616
11616
|
/**
|
|
11617
11617
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11621,8 +11621,8 @@ const IconFileSearch = createReactComponent("outline", "file-search", "FileSearc
|
|
|
11621
11621
|
*/
|
|
11622
11622
|
|
|
11623
11623
|
|
|
11624
|
-
const __iconNode$
|
|
11625
|
-
const
|
|
11624
|
+
const __iconNode$12 = [["path", { "d": "M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0", "key": "svg-0" }], ["path", { "d": "M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6", "key": "svg-1" }]];
|
|
11625
|
+
const IconEye = createReactComponent("outline", "eye", "Eye", __iconNode$12);
|
|
11626
11626
|
|
|
11627
11627
|
/**
|
|
11628
11628
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11632,8 +11632,8 @@ const IconFile = createReactComponent("outline", "file", "File", __iconNode$Y);
|
|
|
11632
11632
|
*/
|
|
11633
11633
|
|
|
11634
11634
|
|
|
11635
|
-
const __iconNode$
|
|
11636
|
-
const
|
|
11635
|
+
const __iconNode$11 = [["path", { "d": "M14 3v4a1 1 0 0 0 1 1h4", "key": "svg-0" }], ["path", { "d": "M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z", "key": "svg-1" }], ["path", { "d": "M12 11l0 6", "key": "svg-2" }], ["path", { "d": "M9 14l6 0", "key": "svg-3" }]];
|
|
11636
|
+
const IconFilePlus = createReactComponent("outline", "file-plus", "FilePlus", __iconNode$11);
|
|
11637
11637
|
|
|
11638
11638
|
/**
|
|
11639
11639
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11643,8 +11643,8 @@ const IconFolderPlus = createReactComponent("outline", "folder-plus", "FolderPlu
|
|
|
11643
11643
|
*/
|
|
11644
11644
|
|
|
11645
11645
|
|
|
11646
|
-
const __iconNode$
|
|
11647
|
-
const
|
|
11646
|
+
const __iconNode$10 = [["path", { "d": "M17 17m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0", "key": "svg-0" }], ["path", { "d": "M17 13v4h4", "key": "svg-1" }], ["path", { "d": "M12 3v4a1 1 0 0 0 1 1h4", "key": "svg-2" }], ["path", { "d": "M11.5 21h-6.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v2m0 3v4", "key": "svg-3" }]];
|
|
11647
|
+
const IconFileReport = createReactComponent("outline", "file-report", "FileReport", __iconNode$10);
|
|
11648
11648
|
|
|
11649
11649
|
/**
|
|
11650
11650
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11654,8 +11654,8 @@ const IconFolderUp = createReactComponent("outline", "folder-up", "FolderUp", __
|
|
|
11654
11654
|
*/
|
|
11655
11655
|
|
|
11656
11656
|
|
|
11657
|
-
const __iconNode
|
|
11658
|
-
const
|
|
11657
|
+
const __iconNode$$ = [["path", { "d": "M14 3v4a1 1 0 0 0 1 1h4", "key": "svg-0" }], ["path", { "d": "M12 21h-5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v4.5", "key": "svg-1" }], ["path", { "d": "M16.5 17.5m-2.5 0a2.5 2.5 0 1 0 5 0a2.5 2.5 0 1 0 -5 0", "key": "svg-2" }], ["path", { "d": "M18.5 19.5l2.5 2.5", "key": "svg-3" }]];
|
|
11658
|
+
const IconFileSearch = createReactComponent("outline", "file-search", "FileSearch", __iconNode$$);
|
|
11659
11659
|
|
|
11660
11660
|
/**
|
|
11661
11661
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11665,8 +11665,8 @@ const IconFolderX = createReactComponent("outline", "folder-x", "FolderX", __ico
|
|
|
11665
11665
|
*/
|
|
11666
11666
|
|
|
11667
11667
|
|
|
11668
|
-
const __iconNode$
|
|
11669
|
-
const
|
|
11668
|
+
const __iconNode$_ = [["path", { "d": "M14 3v4a1 1 0 0 0 1 1h4", "key": "svg-0" }], ["path", { "d": "M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z", "key": "svg-1" }]];
|
|
11669
|
+
const IconFile = createReactComponent("outline", "file", "File", __iconNode$_);
|
|
11670
11670
|
|
|
11671
11671
|
/**
|
|
11672
11672
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11676,8 +11676,8 @@ const IconFolder = createReactComponent("outline", "folder", "Folder", __iconNod
|
|
|
11676
11676
|
*/
|
|
11677
11677
|
|
|
11678
11678
|
|
|
11679
|
-
const __iconNode$
|
|
11680
|
-
const
|
|
11679
|
+
const __iconNode$Z = [["path", { "d": "M12 19h-7a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2h4l3 3h7a2 2 0 0 1 2 2v3.5", "key": "svg-0" }], ["path", { "d": "M16 19h6", "key": "svg-1" }], ["path", { "d": "M19 16v6", "key": "svg-2" }]];
|
|
11680
|
+
const IconFolderPlus = createReactComponent("outline", "folder-plus", "FolderPlus", __iconNode$Z);
|
|
11681
11681
|
|
|
11682
11682
|
/**
|
|
11683
11683
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11687,8 +11687,8 @@ const IconGitMerge = createReactComponent("outline", "git-merge", "GitMerge", __
|
|
|
11687
11687
|
*/
|
|
11688
11688
|
|
|
11689
11689
|
|
|
11690
|
-
const __iconNode$
|
|
11691
|
-
const
|
|
11690
|
+
const __iconNode$Y = [["path", { "d": "M12 19h-7a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2h4l3 3h7a2 2 0 0 1 2 2v3.5", "key": "svg-0" }], ["path", { "d": "M19 22v-6", "key": "svg-1" }], ["path", { "d": "M22 19l-3 -3l-3 3", "key": "svg-2" }]];
|
|
11691
|
+
const IconFolderUp = createReactComponent("outline", "folder-up", "FolderUp", __iconNode$Y);
|
|
11692
11692
|
|
|
11693
11693
|
/**
|
|
11694
11694
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11698,8 +11698,8 @@ const IconGridDots = createReactComponent("outline", "grid-dots", "GridDots", __
|
|
|
11698
11698
|
*/
|
|
11699
11699
|
|
|
11700
11700
|
|
|
11701
|
-
const __iconNode$
|
|
11702
|
-
const
|
|
11701
|
+
const __iconNode$X = [["path", { "d": "M13.5 19h-8.5a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2h4l3 3h7a2 2 0 0 1 2 2v4", "key": "svg-0" }], ["path", { "d": "M22 22l-5 -5", "key": "svg-1" }], ["path", { "d": "M17 22l5 -5", "key": "svg-2" }]];
|
|
11702
|
+
const IconFolderX = createReactComponent("outline", "folder-x", "FolderX", __iconNode$X);
|
|
11703
11703
|
|
|
11704
11704
|
/**
|
|
11705
11705
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11709,8 +11709,8 @@ const IconGripVertical = createReactComponent("outline", "grip-vertical", "GripV
|
|
|
11709
11709
|
*/
|
|
11710
11710
|
|
|
11711
11711
|
|
|
11712
|
-
const __iconNode$
|
|
11713
|
-
const
|
|
11712
|
+
const __iconNode$W = [["path", { "d": "M5 4h4l3 3h7a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-11a2 2 0 0 1 2 -2", "key": "svg-0" }]];
|
|
11713
|
+
const IconFolder = createReactComponent("outline", "folder", "Folder", __iconNode$W);
|
|
11714
11714
|
|
|
11715
11715
|
/**
|
|
11716
11716
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11720,8 +11720,8 @@ const IconH6 = createReactComponent("outline", "h-6", "H6", __iconNode$Q);
|
|
|
11720
11720
|
*/
|
|
11721
11721
|
|
|
11722
11722
|
|
|
11723
|
-
const __iconNode$
|
|
11724
|
-
const
|
|
11723
|
+
const __iconNode$V = [["path", { "d": "M7 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-0" }], ["path", { "d": "M7 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-1" }], ["path", { "d": "M17 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-2" }], ["path", { "d": "M7 8l0 8", "key": "svg-3" }], ["path", { "d": "M7 8a4 4 0 0 0 4 4h4", "key": "svg-4" }]];
|
|
11724
|
+
const IconGitMerge = createReactComponent("outline", "git-merge", "GitMerge", __iconNode$V);
|
|
11725
11725
|
|
|
11726
11726
|
/**
|
|
11727
11727
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11731,8 +11731,8 @@ const IconHome = createReactComponent("outline", "home", "Home", __iconNode$P);
|
|
|
11731
11731
|
*/
|
|
11732
11732
|
|
|
11733
11733
|
|
|
11734
|
-
const __iconNode$
|
|
11735
|
-
const
|
|
11734
|
+
const __iconNode$U = [["path", { "d": "M5 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-0" }], ["path", { "d": "M12 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-1" }], ["path", { "d": "M19 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }], ["path", { "d": "M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-3" }], ["path", { "d": "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-4" }], ["path", { "d": "M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-5" }], ["path", { "d": "M5 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-6" }], ["path", { "d": "M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-7" }], ["path", { "d": "M19 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-8" }]];
|
|
11735
|
+
const IconGridDots = createReactComponent("outline", "grid-dots", "GridDots", __iconNode$U);
|
|
11736
11736
|
|
|
11737
11737
|
/**
|
|
11738
11738
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11742,8 +11742,8 @@ const IconId = createReactComponent("outline", "id", "Id", __iconNode$O);
|
|
|
11742
11742
|
*/
|
|
11743
11743
|
|
|
11744
11744
|
|
|
11745
|
-
const __iconNode$
|
|
11746
|
-
const
|
|
11745
|
+
const __iconNode$T = [["path", { "d": "M9 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-0" }], ["path", { "d": "M9 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-1" }], ["path", { "d": "M9 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }], ["path", { "d": "M15 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-3" }], ["path", { "d": "M15 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-4" }], ["path", { "d": "M15 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-5" }]];
|
|
11746
|
+
const IconGripVertical = createReactComponent("outline", "grip-vertical", "GripVertical", __iconNode$T);
|
|
11747
11747
|
|
|
11748
11748
|
/**
|
|
11749
11749
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11753,8 +11753,8 @@ const IconInfoCircle = createReactComponent("outline", "info-circle", "InfoCircl
|
|
|
11753
11753
|
*/
|
|
11754
11754
|
|
|
11755
11755
|
|
|
11756
|
-
const __iconNode$
|
|
11757
|
-
const
|
|
11756
|
+
const __iconNode$S = [["path", { "d": "M19 14a2 2 0 1 0 0 4a2 2 0 0 0 0 -4z", "key": "svg-0" }], ["path", { "d": "M21 12a2 2 0 1 0 -4 0v4", "key": "svg-1" }], ["path", { "d": "M4 6v12", "key": "svg-2" }], ["path", { "d": "M12 6v12", "key": "svg-3" }], ["path", { "d": "M11 18h2", "key": "svg-4" }], ["path", { "d": "M3 18h2", "key": "svg-5" }], ["path", { "d": "M4 12h8", "key": "svg-6" }], ["path", { "d": "M3 6h2", "key": "svg-7" }], ["path", { "d": "M11 6h2", "key": "svg-8" }]];
|
|
11757
|
+
const IconH6 = createReactComponent("outline", "h-6", "H6", __iconNode$S);
|
|
11758
11758
|
|
|
11759
11759
|
/**
|
|
11760
11760
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11764,8 +11764,8 @@ const IconInfoSquare = createReactComponent("outline", "info-square", "InfoSquar
|
|
|
11764
11764
|
*/
|
|
11765
11765
|
|
|
11766
11766
|
|
|
11767
|
-
const __iconNode$
|
|
11768
|
-
const
|
|
11767
|
+
const __iconNode$R = [["path", { "d": "M5 12l-2 0l9 -9l9 9l-2 0", "key": "svg-0" }], ["path", { "d": "M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7", "key": "svg-1" }], ["path", { "d": "M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6", "key": "svg-2" }]];
|
|
11768
|
+
const IconHome = createReactComponent("outline", "home", "Home", __iconNode$R);
|
|
11769
11769
|
|
|
11770
11770
|
/**
|
|
11771
11771
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11775,8 +11775,8 @@ const IconKey = createReactComponent("outline", "key", "Key", __iconNode$L);
|
|
|
11775
11775
|
*/
|
|
11776
11776
|
|
|
11777
11777
|
|
|
11778
|
-
const __iconNode$
|
|
11779
|
-
const
|
|
11778
|
+
const __iconNode$Q = [["path", { "d": "M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v10a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z", "key": "svg-0" }], ["path", { "d": "M9 10m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0", "key": "svg-1" }], ["path", { "d": "M15 8l2 0", "key": "svg-2" }], ["path", { "d": "M15 12l2 0", "key": "svg-3" }], ["path", { "d": "M7 16l10 0", "key": "svg-4" }]];
|
|
11779
|
+
const IconId = createReactComponent("outline", "id", "Id", __iconNode$Q);
|
|
11780
11780
|
|
|
11781
11781
|
/**
|
|
11782
11782
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11786,8 +11786,8 @@ const IconLayoutList = createReactComponent("outline", "layout-list", "LayoutLis
|
|
|
11786
11786
|
*/
|
|
11787
11787
|
|
|
11788
11788
|
|
|
11789
|
-
const __iconNode$
|
|
11790
|
-
const
|
|
11789
|
+
const __iconNode$P = [["path", { "d": "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 9h.01", "key": "svg-1" }], ["path", { "d": "M11 12h1v4h1", "key": "svg-2" }]];
|
|
11790
|
+
const IconInfoCircle = createReactComponent("outline", "info-circle", "InfoCircle", __iconNode$P);
|
|
11791
11791
|
|
|
11792
11792
|
/**
|
|
11793
11793
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11797,8 +11797,8 @@ const IconLink = createReactComponent("outline", "link", "Link", __iconNode$J);
|
|
|
11797
11797
|
*/
|
|
11798
11798
|
|
|
11799
11799
|
|
|
11800
|
-
const __iconNode$
|
|
11801
|
-
const
|
|
11800
|
+
const __iconNode$O = [["path", { "d": "M12 9h.01", "key": "svg-0" }], ["path", { "d": "M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14z", "key": "svg-1" }], ["path", { "d": "M11 12h1v4h1", "key": "svg-2" }]];
|
|
11801
|
+
const IconInfoSquare = createReactComponent("outline", "info-square", "InfoSquare", __iconNode$O);
|
|
11802
11802
|
|
|
11803
11803
|
/**
|
|
11804
11804
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11808,8 +11808,8 @@ const IconLockAccessOff = createReactComponent("outline", "lock-access-off", "Lo
|
|
|
11808
11808
|
*/
|
|
11809
11809
|
|
|
11810
11810
|
|
|
11811
|
-
const __iconNode$
|
|
11812
|
-
const
|
|
11811
|
+
const __iconNode$N = [["path", { "d": "M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z", "key": "svg-0" }], ["path", { "d": "M15 9h.01", "key": "svg-1" }]];
|
|
11812
|
+
const IconKey = createReactComponent("outline", "key", "Key", __iconNode$N);
|
|
11813
11813
|
|
|
11814
11814
|
/**
|
|
11815
11815
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11819,8 +11819,8 @@ const IconLockAccess = createReactComponent("outline", "lock-access", "LockAcces
|
|
|
11819
11819
|
*/
|
|
11820
11820
|
|
|
11821
11821
|
|
|
11822
|
-
const __iconNode$
|
|
11823
|
-
const
|
|
11822
|
+
const __iconNode$M = [["path", { "d": "M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M4 15l16 0", "key": "svg-1" }]];
|
|
11823
|
+
const IconLayoutBottombar = createReactComponent("outline", "layout-bottombar", "LayoutBottombar", __iconNode$M);
|
|
11824
11824
|
|
|
11825
11825
|
/**
|
|
11826
11826
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11830,8 +11830,8 @@ const IconLockCheck = createReactComponent("outline", "lock-check", "LockCheck",
|
|
|
11830
11830
|
*/
|
|
11831
11831
|
|
|
11832
11832
|
|
|
11833
|
-
const __iconNode$
|
|
11834
|
-
const
|
|
11833
|
+
const __iconNode$L = [["path", { "d": "M4 4m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M4 14m0 2a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2z", "key": "svg-1" }]];
|
|
11834
|
+
const IconLayoutList = createReactComponent("outline", "layout-list", "LayoutList", __iconNode$L);
|
|
11835
11835
|
|
|
11836
11836
|
/**
|
|
11837
11837
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11841,8 +11841,8 @@ const IconLockOpen = createReactComponent("outline", "lock-open", "LockOpen", __
|
|
|
11841
11841
|
*/
|
|
11842
11842
|
|
|
11843
11843
|
|
|
11844
|
-
const __iconNode$
|
|
11845
|
-
const
|
|
11844
|
+
const __iconNode$K = [["path", { "d": "M9 15l6 -6", "key": "svg-0" }], ["path", { "d": "M11 6l.463 -.536a5 5 0 0 1 7.071 7.072l-.534 .464", "key": "svg-1" }], ["path", { "d": "M13 18l-.397 .534a5.068 5.068 0 0 1 -7.127 0a4.972 4.972 0 0 1 0 -7.071l.524 -.463", "key": "svg-2" }]];
|
|
11845
|
+
const IconLink = createReactComponent("outline", "link", "Link", __iconNode$K);
|
|
11846
11846
|
|
|
11847
11847
|
/**
|
|
11848
11848
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11852,8 +11852,8 @@ const IconLock = createReactComponent("outline", "lock", "Lock", __iconNode$E);
|
|
|
11852
11852
|
*/
|
|
11853
11853
|
|
|
11854
11854
|
|
|
11855
|
-
const __iconNode$
|
|
11856
|
-
const
|
|
11855
|
+
const __iconNode$J = [["path", { "d": "M4 8v-2c0 -.554 .225 -1.055 .588 -1.417", "key": "svg-0" }], ["path", { "d": "M4 16v2a2 2 0 0 0 2 2h2", "key": "svg-1" }], ["path", { "d": "M16 4h2a2 2 0 0 1 2 2v2", "key": "svg-2" }], ["path", { "d": "M16 20h2c.55 0 1.05 -.222 1.41 -.582", "key": "svg-3" }], ["path", { "d": "M15 11a1 1 0 0 1 1 1m-.29 3.704a1 1 0 0 1 -.71 .296h-6a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h2", "key": "svg-4" }], ["path", { "d": "M10 11v-1m1.182 -2.826a2 2 0 0 1 2.818 1.826v1", "key": "svg-5" }], ["path", { "d": "M3 3l18 18", "key": "svg-6" }]];
|
|
11856
|
+
const IconLockAccessOff = createReactComponent("outline", "lock-access-off", "LockAccessOff", __iconNode$J);
|
|
11857
11857
|
|
|
11858
11858
|
/**
|
|
11859
11859
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11863,8 +11863,8 @@ const IconLogout = createReactComponent("outline", "logout", "Logout", __iconNod
|
|
|
11863
11863
|
*/
|
|
11864
11864
|
|
|
11865
11865
|
|
|
11866
|
-
const __iconNode$
|
|
11867
|
-
const
|
|
11866
|
+
const __iconNode$I = [["path", { "d": "M4 8v-2a2 2 0 0 1 2 -2h2", "key": "svg-0" }], ["path", { "d": "M4 16v2a2 2 0 0 0 2 2h2", "key": "svg-1" }], ["path", { "d": "M16 4h2a2 2 0 0 1 2 2v2", "key": "svg-2" }], ["path", { "d": "M16 20h2a2 2 0 0 0 2 -2v-2", "key": "svg-3" }], ["path", { "d": "M8 11m0 1a1 1 0 0 1 1 -1h6a1 1 0 0 1 1 1v3a1 1 0 0 1 -1 1h-6a1 1 0 0 1 -1 -1z", "key": "svg-4" }], ["path", { "d": "M10 11v-2a2 2 0 1 1 4 0v2", "key": "svg-5" }]];
|
|
11867
|
+
const IconLockAccess = createReactComponent("outline", "lock-access", "LockAccess", __iconNode$I);
|
|
11868
11868
|
|
|
11869
11869
|
/**
|
|
11870
11870
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11874,8 +11874,8 @@ const IconMailCode = createReactComponent("outline", "mail-code", "MailCode", __
|
|
|
11874
11874
|
*/
|
|
11875
11875
|
|
|
11876
11876
|
|
|
11877
|
-
const __iconNode$
|
|
11878
|
-
const
|
|
11877
|
+
const __iconNode$H = [["path", { "d": "M11.5 21h-4.5a2 2 0 0 1 -2 -2v-6a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v.5", "key": "svg-0" }], ["path", { "d": "M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0", "key": "svg-1" }], ["path", { "d": "M8 11v-4a4 4 0 1 1 8 0v4", "key": "svg-2" }], ["path", { "d": "M15 19l2 2l4 -4", "key": "svg-3" }]];
|
|
11878
|
+
const IconLockCheck = createReactComponent("outline", "lock-check", "LockCheck", __iconNode$H);
|
|
11879
11879
|
|
|
11880
11880
|
/**
|
|
11881
11881
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11885,8 +11885,8 @@ const IconMail = createReactComponent("outline", "mail", "Mail", __iconNode$B);
|
|
|
11885
11885
|
*/
|
|
11886
11886
|
|
|
11887
11887
|
|
|
11888
|
-
const __iconNode$
|
|
11889
|
-
const
|
|
11888
|
+
const __iconNode$G = [["path", { "d": "M5 11m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M12 16m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-1" }], ["path", { "d": "M8 11v-5a4 4 0 0 1 8 0", "key": "svg-2" }]];
|
|
11889
|
+
const IconLockOpen = createReactComponent("outline", "lock-open", "LockOpen", __iconNode$G);
|
|
11890
11890
|
|
|
11891
11891
|
/**
|
|
11892
11892
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11896,8 +11896,8 @@ const IconMenu2 = createReactComponent("outline", "menu-2", "Menu2", __iconNode$
|
|
|
11896
11896
|
*/
|
|
11897
11897
|
|
|
11898
11898
|
|
|
11899
|
-
const __iconNode$
|
|
11900
|
-
const
|
|
11899
|
+
const __iconNode$F = [["path", { "d": "M5 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-6z", "key": "svg-0" }], ["path", { "d": "M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0", "key": "svg-1" }], ["path", { "d": "M8 11v-4a4 4 0 1 1 8 0v4", "key": "svg-2" }]];
|
|
11900
|
+
const IconLock = createReactComponent("outline", "lock", "Lock", __iconNode$F);
|
|
11901
11901
|
|
|
11902
11902
|
/**
|
|
11903
11903
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11907,8 +11907,8 @@ const IconMenu = createReactComponent("outline", "menu", "Menu", __iconNode$z);
|
|
|
11907
11907
|
*/
|
|
11908
11908
|
|
|
11909
11909
|
|
|
11910
|
-
const __iconNode$
|
|
11911
|
-
const
|
|
11910
|
+
const __iconNode$E = [["path", { "d": "M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2", "key": "svg-0" }], ["path", { "d": "M9 12h12l-3 -3", "key": "svg-1" }], ["path", { "d": "M18 15l3 -3", "key": "svg-2" }]];
|
|
11911
|
+
const IconLogout = createReactComponent("outline", "logout", "Logout", __iconNode$E);
|
|
11912
11912
|
|
|
11913
11913
|
/**
|
|
11914
11914
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11918,8 +11918,8 @@ const IconNetwork = createReactComponent("outline", "network", "Network", __icon
|
|
|
11918
11918
|
*/
|
|
11919
11919
|
|
|
11920
11920
|
|
|
11921
|
-
const __iconNode$
|
|
11922
|
-
const
|
|
11921
|
+
const __iconNode$D = [["path", { "d": "M11 19h-6a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v6", "key": "svg-0" }], ["path", { "d": "M3 7l9 6l9 -6", "key": "svg-1" }], ["path", { "d": "M20 21l2 -2l-2 -2", "key": "svg-2" }], ["path", { "d": "M17 17l-2 2l2 2", "key": "svg-3" }]];
|
|
11922
|
+
const IconMailCode = createReactComponent("outline", "mail-code", "MailCode", __iconNode$D);
|
|
11923
11923
|
|
|
11924
11924
|
/**
|
|
11925
11925
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11929,8 +11929,8 @@ const IconPassword = createReactComponent("outline", "password", "Password", __i
|
|
|
11929
11929
|
*/
|
|
11930
11930
|
|
|
11931
11931
|
|
|
11932
|
-
const __iconNode$
|
|
11933
|
-
const
|
|
11932
|
+
const __iconNode$C = [["path", { "d": "M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10z", "key": "svg-0" }], ["path", { "d": "M3 7l9 6l9 -6", "key": "svg-1" }]];
|
|
11933
|
+
const IconMail = createReactComponent("outline", "mail", "Mail", __iconNode$C);
|
|
11934
11934
|
|
|
11935
11935
|
/**
|
|
11936
11936
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11940,8 +11940,8 @@ const IconPlayerPause = createReactComponent("outline", "player-pause", "PlayerP
|
|
|
11940
11940
|
*/
|
|
11941
11941
|
|
|
11942
11942
|
|
|
11943
|
-
const __iconNode$
|
|
11944
|
-
const
|
|
11943
|
+
const __iconNode$B = [["path", { "d": "M4 6l16 0", "key": "svg-0" }], ["path", { "d": "M4 12l16 0", "key": "svg-1" }], ["path", { "d": "M4 18l16 0", "key": "svg-2" }]];
|
|
11944
|
+
const IconMenu2 = createReactComponent("outline", "menu-2", "Menu2", __iconNode$B);
|
|
11945
11945
|
|
|
11946
11946
|
/**
|
|
11947
11947
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11951,8 +11951,8 @@ const IconPlayerPlay = createReactComponent("outline", "player-play", "PlayerPla
|
|
|
11951
11951
|
*/
|
|
11952
11952
|
|
|
11953
11953
|
|
|
11954
|
-
const __iconNode$
|
|
11955
|
-
const
|
|
11954
|
+
const __iconNode$A = [["path", { "d": "M4 8l16 0", "key": "svg-0" }], ["path", { "d": "M4 16l16 0", "key": "svg-1" }]];
|
|
11955
|
+
const IconMenu = createReactComponent("outline", "menu", "Menu", __iconNode$A);
|
|
11956
11956
|
|
|
11957
11957
|
/**
|
|
11958
11958
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11962,8 +11962,8 @@ const IconPlugConnectedX = createReactComponent("outline", "plug-connected-x", "
|
|
|
11962
11962
|
*/
|
|
11963
11963
|
|
|
11964
11964
|
|
|
11965
|
-
const __iconNode$
|
|
11966
|
-
const
|
|
11965
|
+
const __iconNode$z = [["path", { "d": "M8 9h8", "key": "svg-0" }], ["path", { "d": "M8 13h6", "key": "svg-1" }], ["path", { "d": "M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z", "key": "svg-2" }]];
|
|
11966
|
+
const IconMessage = createReactComponent("outline", "message", "Message", __iconNode$z);
|
|
11967
11967
|
|
|
11968
11968
|
/**
|
|
11969
11969
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11973,8 +11973,8 @@ const IconPlugConnected = createReactComponent("outline", "plug-connected", "Plu
|
|
|
11973
11973
|
*/
|
|
11974
11974
|
|
|
11975
11975
|
|
|
11976
|
-
const __iconNode$
|
|
11977
|
-
const
|
|
11976
|
+
const __iconNode$y = [["path", { "d": "M12 10v4", "key": "svg-0" }], ["path", { "d": "M10 13l4 -2", "key": "svg-1" }], ["path", { "d": "M10 11l4 2", "key": "svg-2" }], ["path", { "d": "M5 10v4", "key": "svg-3" }], ["path", { "d": "M3 13l4 -2", "key": "svg-4" }], ["path", { "d": "M3 11l4 2", "key": "svg-5" }], ["path", { "d": "M19 10v4", "key": "svg-6" }], ["path", { "d": "M17 13l4 -2", "key": "svg-7" }], ["path", { "d": "M17 11l4 2", "key": "svg-8" }]];
|
|
11977
|
+
const IconPassword = createReactComponent("outline", "password", "Password", __iconNode$y);
|
|
11978
11978
|
|
|
11979
11979
|
/**
|
|
11980
11980
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11984,8 +11984,8 @@ const IconPlus = createReactComponent("outline", "plus", "Plus", __iconNode$s);
|
|
|
11984
11984
|
*/
|
|
11985
11985
|
|
|
11986
11986
|
|
|
11987
|
-
const __iconNode$
|
|
11988
|
-
const
|
|
11987
|
+
const __iconNode$x = [["path", { "d": "M6 5m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v12a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z", "key": "svg-0" }], ["path", { "d": "M14 5m0 1a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v12a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1z", "key": "svg-1" }]];
|
|
11988
|
+
const IconPlayerPause = createReactComponent("outline", "player-pause", "PlayerPause", __iconNode$x);
|
|
11989
11989
|
|
|
11990
11990
|
/**
|
|
11991
11991
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -11995,8 +11995,8 @@ const IconPrinter = createReactComponent("outline", "printer", "Printer", __icon
|
|
|
11995
11995
|
*/
|
|
11996
11996
|
|
|
11997
11997
|
|
|
11998
|
-
const __iconNode$
|
|
11999
|
-
const
|
|
11998
|
+
const __iconNode$w = [["path", { "d": "M7 4v16l13 -8z", "key": "svg-0" }]];
|
|
11999
|
+
const IconPlayerPlay = createReactComponent("outline", "player-play", "PlayerPlay", __iconNode$w);
|
|
12000
12000
|
|
|
12001
12001
|
/**
|
|
12002
12002
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12006,8 +12006,8 @@ const IconRefresh = createReactComponent("outline", "refresh", "Refresh", __icon
|
|
|
12006
12006
|
*/
|
|
12007
12007
|
|
|
12008
12008
|
|
|
12009
|
-
const __iconNode$
|
|
12010
|
-
const
|
|
12009
|
+
const __iconNode$v = [["path", { "d": "M20 16l-4 4", "key": "svg-0" }], ["path", { "d": "M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5z", "key": "svg-1" }], ["path", { "d": "M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5z", "key": "svg-2" }], ["path", { "d": "M3 21l2.5 -2.5", "key": "svg-3" }], ["path", { "d": "M18.5 5.5l2.5 -2.5", "key": "svg-4" }], ["path", { "d": "M10 11l-2 2", "key": "svg-5" }], ["path", { "d": "M13 14l-2 2", "key": "svg-6" }], ["path", { "d": "M16 16l4 4", "key": "svg-7" }]];
|
|
12010
|
+
const IconPlugConnectedX = createReactComponent("outline", "plug-connected-x", "PlugConnectedX", __iconNode$v);
|
|
12011
12011
|
|
|
12012
12012
|
/**
|
|
12013
12013
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12017,8 +12017,8 @@ const IconRobot = createReactComponent("outline", "robot", "Robot", __iconNode$p
|
|
|
12017
12017
|
*/
|
|
12018
12018
|
|
|
12019
12019
|
|
|
12020
|
-
const __iconNode$
|
|
12021
|
-
const
|
|
12020
|
+
const __iconNode$u = [["path", { "d": "M7 12l5 5l-1.5 1.5a3.536 3.536 0 1 1 -5 -5l1.5 -1.5z", "key": "svg-0" }], ["path", { "d": "M17 12l-5 -5l1.5 -1.5a3.536 3.536 0 1 1 5 5l-1.5 1.5z", "key": "svg-1" }], ["path", { "d": "M3 21l2.5 -2.5", "key": "svg-2" }], ["path", { "d": "M18.5 5.5l2.5 -2.5", "key": "svg-3" }], ["path", { "d": "M10 11l-2 2", "key": "svg-4" }], ["path", { "d": "M13 14l-2 2", "key": "svg-5" }]];
|
|
12021
|
+
const IconPlugConnected = createReactComponent("outline", "plug-connected", "PlugConnected", __iconNode$u);
|
|
12022
12022
|
|
|
12023
12023
|
/**
|
|
12024
12024
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12028,8 +12028,8 @@ const IconSearch = createReactComponent("outline", "search", "Search", __iconNod
|
|
|
12028
12028
|
*/
|
|
12029
12029
|
|
|
12030
12030
|
|
|
12031
|
-
const __iconNode$
|
|
12032
|
-
const
|
|
12031
|
+
const __iconNode$t = [["path", { "d": "M12 5l0 14", "key": "svg-0" }], ["path", { "d": "M5 12l14 0", "key": "svg-1" }]];
|
|
12032
|
+
const IconPlus = createReactComponent("outline", "plus", "Plus", __iconNode$t);
|
|
12033
12033
|
|
|
12034
12034
|
/**
|
|
12035
12035
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12039,8 +12039,8 @@ const IconSend = createReactComponent("outline", "send", "Send", __iconNode$n);
|
|
|
12039
12039
|
*/
|
|
12040
12040
|
|
|
12041
12041
|
|
|
12042
|
-
const __iconNode$
|
|
12043
|
-
const
|
|
12042
|
+
const __iconNode$s = [["path", { "d": "M17 17h2a2 2 0 0 0 2 -2v-4a2 2 0 0 0 -2 -2h-14a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2", "key": "svg-0" }], ["path", { "d": "M17 9v-4a2 2 0 0 0 -2 -2h-6a2 2 0 0 0 -2 2v4", "key": "svg-1" }], ["path", { "d": "M7 13m0 2a2 2 0 0 1 2 -2h6a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-6a2 2 0 0 1 -2 -2z", "key": "svg-2" }]];
|
|
12043
|
+
const IconPrinter = createReactComponent("outline", "printer", "Printer", __iconNode$s);
|
|
12044
12044
|
|
|
12045
12045
|
/**
|
|
12046
12046
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12050,8 +12050,8 @@ const IconServer = createReactComponent("outline", "server", "Server", __iconNod
|
|
|
12050
12050
|
*/
|
|
12051
12051
|
|
|
12052
12052
|
|
|
12053
|
-
const __iconNode$
|
|
12054
|
-
const
|
|
12053
|
+
const __iconNode$r = [["path", { "d": "M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4", "key": "svg-0" }], ["path", { "d": "M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4", "key": "svg-1" }]];
|
|
12054
|
+
const IconRefresh = createReactComponent("outline", "refresh", "Refresh", __iconNode$r);
|
|
12055
12055
|
|
|
12056
12056
|
/**
|
|
12057
12057
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12061,8 +12061,8 @@ const IconSettings = createReactComponent("outline", "settings", "Settings", __i
|
|
|
12061
12061
|
*/
|
|
12062
12062
|
|
|
12063
12063
|
|
|
12064
|
-
const __iconNode$
|
|
12065
|
-
const
|
|
12064
|
+
const __iconNode$q = [["path", { "d": "M6 4m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v4a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z", "key": "svg-0" }], ["path", { "d": "M12 2v2", "key": "svg-1" }], ["path", { "d": "M9 12v9", "key": "svg-2" }], ["path", { "d": "M15 12v9", "key": "svg-3" }], ["path", { "d": "M5 16l4 -2", "key": "svg-4" }], ["path", { "d": "M15 14l4 2", "key": "svg-5" }], ["path", { "d": "M9 18h6", "key": "svg-6" }], ["path", { "d": "M10 8v.01", "key": "svg-7" }], ["path", { "d": "M14 8v.01", "key": "svg-8" }]];
|
|
12065
|
+
const IconRobot = createReactComponent("outline", "robot", "Robot", __iconNode$q);
|
|
12066
12066
|
|
|
12067
12067
|
/**
|
|
12068
12068
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12072,8 +12072,8 @@ const IconShieldCheck = createReactComponent("outline", "shield-check", "ShieldC
|
|
|
12072
12072
|
*/
|
|
12073
12073
|
|
|
12074
12074
|
|
|
12075
|
-
const __iconNode$
|
|
12076
|
-
const
|
|
12075
|
+
const __iconNode$p = [["path", { "d": "M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0", "key": "svg-0" }], ["path", { "d": "M21 21l-6 -6", "key": "svg-1" }]];
|
|
12076
|
+
const IconSearch = createReactComponent("outline", "search", "Search", __iconNode$p);
|
|
12077
12077
|
|
|
12078
12078
|
/**
|
|
12079
12079
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12083,8 +12083,8 @@ const IconShieldLock = createReactComponent("outline", "shield-lock", "ShieldLoc
|
|
|
12083
12083
|
*/
|
|
12084
12084
|
|
|
12085
12085
|
|
|
12086
|
-
const __iconNode$
|
|
12087
|
-
const
|
|
12086
|
+
const __iconNode$o = [["path", { "d": "M10 14l11 -11", "key": "svg-0" }], ["path", { "d": "M21 3l-6.5 18a.55 .55 0 0 1 -1 0l-3.5 -7l-7 -3.5a.55 .55 0 0 1 0 -1l18 -6.5", "key": "svg-1" }]];
|
|
12087
|
+
const IconSend = createReactComponent("outline", "send", "Send", __iconNode$o);
|
|
12088
12088
|
|
|
12089
12089
|
/**
|
|
12090
12090
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12094,8 +12094,8 @@ const IconShieldOff = createReactComponent("outline", "shield-off", "ShieldOff",
|
|
|
12094
12094
|
*/
|
|
12095
12095
|
|
|
12096
12096
|
|
|
12097
|
-
const __iconNode$
|
|
12098
|
-
const
|
|
12097
|
+
const __iconNode$n = [["path", { "d": "M3 4m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z", "key": "svg-0" }], ["path", { "d": "M3 12m0 3a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v2a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3z", "key": "svg-1" }], ["path", { "d": "M7 8l0 .01", "key": "svg-2" }], ["path", { "d": "M7 16l0 .01", "key": "svg-3" }]];
|
|
12098
|
+
const IconServer = createReactComponent("outline", "server", "Server", __iconNode$n);
|
|
12099
12099
|
|
|
12100
12100
|
/**
|
|
12101
12101
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12105,8 +12105,8 @@ const IconShield = createReactComponent("outline", "shield", "Shield", __iconNod
|
|
|
12105
12105
|
*/
|
|
12106
12106
|
|
|
12107
12107
|
|
|
12108
|
-
const __iconNode$
|
|
12109
|
-
const
|
|
12108
|
+
const __iconNode$m = [["path", { "d": "M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z", "key": "svg-0" }], ["path", { "d": "M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0", "key": "svg-1" }]];
|
|
12109
|
+
const IconSettings = createReactComponent("outline", "settings", "Settings", __iconNode$m);
|
|
12110
12110
|
|
|
12111
12111
|
/**
|
|
12112
12112
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12116,8 +12116,8 @@ const IconSparkles = createReactComponent("outline", "sparkles", "Sparkles", __i
|
|
|
12116
12116
|
*/
|
|
12117
12117
|
|
|
12118
12118
|
|
|
12119
|
-
const __iconNode$
|
|
12120
|
-
const
|
|
12119
|
+
const __iconNode$l = [["path", { "d": "M11.46 20.846a12 12 0 0 1 -7.96 -14.846a12 12 0 0 0 8.5 -3a12 12 0 0 0 8.5 3a12 12 0 0 1 -.09 7.06", "key": "svg-0" }], ["path", { "d": "M15 19l2 2l4 -4", "key": "svg-1" }]];
|
|
12120
|
+
const IconShieldCheck = createReactComponent("outline", "shield-check", "ShieldCheck", __iconNode$l);
|
|
12121
12121
|
|
|
12122
12122
|
/**
|
|
12123
12123
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12127,8 +12127,8 @@ const IconTemplate = createReactComponent("outline", "template", "Template", __i
|
|
|
12127
12127
|
*/
|
|
12128
12128
|
|
|
12129
12129
|
|
|
12130
|
-
const __iconNode$
|
|
12131
|
-
const
|
|
12130
|
+
const __iconNode$k = [["path", { "d": "M12 3a12 12 0 0 0 8.5 3a12 12 0 0 1 -8.5 15a12 12 0 0 1 -8.5 -15a12 12 0 0 0 8.5 -3", "key": "svg-0" }], ["path", { "d": "M12 11m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-1" }], ["path", { "d": "M12 12l0 2.5", "key": "svg-2" }]];
|
|
12131
|
+
const IconShieldLock = createReactComponent("outline", "shield-lock", "ShieldLock", __iconNode$k);
|
|
12132
12132
|
|
|
12133
12133
|
/**
|
|
12134
12134
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12138,8 +12138,8 @@ const IconTerminal = createReactComponent("outline", "terminal", "Terminal", __i
|
|
|
12138
12138
|
*/
|
|
12139
12139
|
|
|
12140
12140
|
|
|
12141
|
-
const __iconNode$
|
|
12142
|
-
const
|
|
12141
|
+
const __iconNode$j = [["path", { "d": "M17.67 17.667a12 12 0 0 1 -5.67 3.333a12 12 0 0 1 -8.5 -15c.794 .036 1.583 -.006 2.357 -.124m3.128 -.926a11.997 11.997 0 0 0 3.015 -1.95a12 12 0 0 0 8.5 3a12 12 0 0 1 -1.116 9.376", "key": "svg-0" }], ["path", { "d": "M3 3l18 18", "key": "svg-1" }]];
|
|
12142
|
+
const IconShieldOff = createReactComponent("outline", "shield-off", "ShieldOff", __iconNode$j);
|
|
12143
12143
|
|
|
12144
12144
|
/**
|
|
12145
12145
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12149,8 +12149,8 @@ const IconTextCaption = createReactComponent("outline", "text-caption", "TextCap
|
|
|
12149
12149
|
*/
|
|
12150
12150
|
|
|
12151
12151
|
|
|
12152
|
-
const __iconNode$
|
|
12153
|
-
const
|
|
12152
|
+
const __iconNode$i = [["path", { "d": "M12 3a12 12 0 0 0 8.5 3a12 12 0 0 1 -8.5 15a12 12 0 0 1 -8.5 -15a12 12 0 0 0 8.5 -3", "key": "svg-0" }]];
|
|
12153
|
+
const IconShield = createReactComponent("outline", "shield", "Shield", __iconNode$i);
|
|
12154
12154
|
|
|
12155
12155
|
/**
|
|
12156
12156
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12160,8 +12160,8 @@ const IconTrash = createReactComponent("outline", "trash", "Trash", __iconNode$c
|
|
|
12160
12160
|
*/
|
|
12161
12161
|
|
|
12162
12162
|
|
|
12163
|
-
const __iconNode$
|
|
12164
|
-
const
|
|
12163
|
+
const __iconNode$h = [["path", { "d": "M16 18a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm0 -12a2 2 0 0 1 2 2a2 2 0 0 1 2 -2a2 2 0 0 1 -2 -2a2 2 0 0 1 -2 2zm-7 12a6 6 0 0 1 6 -6a6 6 0 0 1 -6 -6a6 6 0 0 1 -6 6a6 6 0 0 1 6 6z", "key": "svg-0" }]];
|
|
12164
|
+
const IconSparkles = createReactComponent("outline", "sparkles", "Sparkles", __iconNode$h);
|
|
12165
12165
|
|
|
12166
12166
|
/**
|
|
12167
12167
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12171,8 +12171,8 @@ const IconUpload = createReactComponent("outline", "upload", "Upload", __iconNod
|
|
|
12171
12171
|
*/
|
|
12172
12172
|
|
|
12173
12173
|
|
|
12174
|
-
const __iconNode$
|
|
12175
|
-
const
|
|
12174
|
+
const __iconNode$g = [["path", { "d": "M4 4m0 1a1 1 0 0 1 1 -1h14a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-14a1 1 0 0 1 -1 -1z", "key": "svg-0" }], ["path", { "d": "M4 12m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-1" }], ["path", { "d": "M14 12l6 0", "key": "svg-2" }], ["path", { "d": "M14 16l6 0", "key": "svg-3" }], ["path", { "d": "M14 20l6 0", "key": "svg-4" }]];
|
|
12175
|
+
const IconTemplate = createReactComponent("outline", "template", "Template", __iconNode$g);
|
|
12176
12176
|
|
|
12177
12177
|
/**
|
|
12178
12178
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12182,8 +12182,8 @@ const IconUserCheck = createReactComponent("outline", "user-check", "UserCheck",
|
|
|
12182
12182
|
*/
|
|
12183
12183
|
|
|
12184
12184
|
|
|
12185
|
-
const __iconNode$
|
|
12186
|
-
const
|
|
12185
|
+
const __iconNode$f = [["path", { "d": "M5 7l5 5l-5 5", "key": "svg-0" }], ["path", { "d": "M12 19l7 0", "key": "svg-1" }]];
|
|
12186
|
+
const IconTerminal = createReactComponent("outline", "terminal", "Terminal", __iconNode$f);
|
|
12187
12187
|
|
|
12188
12188
|
/**
|
|
12189
12189
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12193,8 +12193,8 @@ const IconUserCircle = createReactComponent("outline", "user-circle", "UserCircl
|
|
|
12193
12193
|
*/
|
|
12194
12194
|
|
|
12195
12195
|
|
|
12196
|
-
const __iconNode$
|
|
12197
|
-
const
|
|
12196
|
+
const __iconNode$e = [["path", { "d": "M4 15h16", "key": "svg-0" }], ["path", { "d": "M4 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z", "key": "svg-1" }], ["path", { "d": "M4 20h12", "key": "svg-2" }]];
|
|
12197
|
+
const IconTextCaption = createReactComponent("outline", "text-caption", "TextCaption", __iconNode$e);
|
|
12198
12198
|
|
|
12199
12199
|
/**
|
|
12200
12200
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12204,8 +12204,8 @@ const IconUserPlus = createReactComponent("outline", "user-plus", "UserPlus", __
|
|
|
12204
12204
|
*/
|
|
12205
12205
|
|
|
12206
12206
|
|
|
12207
|
-
const __iconNode$
|
|
12208
|
-
const
|
|
12207
|
+
const __iconNode$d = [["path", { "d": "M4 7l16 0", "key": "svg-0" }], ["path", { "d": "M10 11l0 6", "key": "svg-1" }], ["path", { "d": "M14 11l0 6", "key": "svg-2" }], ["path", { "d": "M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12", "key": "svg-3" }], ["path", { "d": "M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3", "key": "svg-4" }]];
|
|
12208
|
+
const IconTrash = createReactComponent("outline", "trash", "Trash", __iconNode$d);
|
|
12209
12209
|
|
|
12210
12210
|
/**
|
|
12211
12211
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12215,8 +12215,8 @@ const IconUserStar = createReactComponent("outline", "user-star", "UserStar", __
|
|
|
12215
12215
|
*/
|
|
12216
12216
|
|
|
12217
12217
|
|
|
12218
|
-
const __iconNode$
|
|
12219
|
-
const
|
|
12218
|
+
const __iconNode$c = [["path", { "d": "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2", "key": "svg-0" }], ["path", { "d": "M7 9l5 -5l5 5", "key": "svg-1" }], ["path", { "d": "M12 4l0 12", "key": "svg-2" }]];
|
|
12219
|
+
const IconUpload = createReactComponent("outline", "upload", "Upload", __iconNode$c);
|
|
12220
12220
|
|
|
12221
12221
|
/**
|
|
12222
12222
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12226,8 +12226,8 @@ const IconUser = createReactComponent("outline", "user", "User", __iconNode$6);
|
|
|
12226
12226
|
*/
|
|
12227
12227
|
|
|
12228
12228
|
|
|
12229
|
-
const __iconNode$
|
|
12230
|
-
const
|
|
12229
|
+
const __iconNode$b = [["path", { "d": "M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0", "key": "svg-0" }], ["path", { "d": "M6 21v-2a4 4 0 0 1 4 -4h4", "key": "svg-1" }], ["path", { "d": "M15 19l2 2l4 -4", "key": "svg-2" }]];
|
|
12230
|
+
const IconUserCheck = createReactComponent("outline", "user-check", "UserCheck", __iconNode$b);
|
|
12231
12231
|
|
|
12232
12232
|
/**
|
|
12233
12233
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12237,8 +12237,8 @@ const IconUsersGroup = createReactComponent("outline", "users-group", "UsersGrou
|
|
|
12237
12237
|
*/
|
|
12238
12238
|
|
|
12239
12239
|
|
|
12240
|
-
const __iconNode$
|
|
12241
|
-
const
|
|
12240
|
+
const __iconNode$a = [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 10m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0", "key": "svg-1" }], ["path", { "d": "M6.168 18.849a4 4 0 0 1 3.832 -2.849h4a4 4 0 0 1 3.834 2.855", "key": "svg-2" }]];
|
|
12241
|
+
const IconUserCircle = createReactComponent("outline", "user-circle", "UserCircle", __iconNode$a);
|
|
12242
12242
|
|
|
12243
12243
|
/**
|
|
12244
12244
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12248,8 +12248,74 @@ const IconUsers = createReactComponent("outline", "users", "Users", __iconNode$4
|
|
|
12248
12248
|
*/
|
|
12249
12249
|
|
|
12250
12250
|
|
|
12251
|
-
const __iconNode$
|
|
12252
|
-
const
|
|
12251
|
+
const __iconNode$9 = [["path", { "d": "M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0", "key": "svg-0" }], ["path", { "d": "M16 19h6", "key": "svg-1" }], ["path", { "d": "M19 16v6", "key": "svg-2" }], ["path", { "d": "M6 21v-2a4 4 0 0 1 4 -4h4", "key": "svg-3" }]];
|
|
12252
|
+
const IconUserPlus = createReactComponent("outline", "user-plus", "UserPlus", __iconNode$9);
|
|
12253
|
+
|
|
12254
|
+
/**
|
|
12255
|
+
* @license @tabler/icons-react v3.36.0 - MIT
|
|
12256
|
+
*
|
|
12257
|
+
* This source code is licensed under the MIT license.
|
|
12258
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12259
|
+
*/
|
|
12260
|
+
|
|
12261
|
+
|
|
12262
|
+
const __iconNode$8 = [["path", { "d": "M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0", "key": "svg-0" }], ["path", { "d": "M6 21v-2a4 4 0 0 1 4 -4h.5", "key": "svg-1" }], ["path", { "d": "M17.8 20.817l-2.172 1.138a.392 .392 0 0 1 -.568 -.41l.415 -2.411l-1.757 -1.707a.389 .389 0 0 1 .217 -.665l2.428 -.352l1.086 -2.193a.392 .392 0 0 1 .702 0l1.086 2.193l2.428 .352a.39 .39 0 0 1 .217 .665l-1.757 1.707l.414 2.41a.39 .39 0 0 1 -.567 .411l-2.172 -1.138z", "key": "svg-2" }]];
|
|
12263
|
+
const IconUserStar = createReactComponent("outline", "user-star", "UserStar", __iconNode$8);
|
|
12264
|
+
|
|
12265
|
+
/**
|
|
12266
|
+
* @license @tabler/icons-react v3.36.0 - MIT
|
|
12267
|
+
*
|
|
12268
|
+
* This source code is licensed under the MIT license.
|
|
12269
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12270
|
+
*/
|
|
12271
|
+
|
|
12272
|
+
|
|
12273
|
+
const __iconNode$7 = [["path", { "d": "M8 7a4 4 0 1 0 8 0a4 4 0 0 0 -8 0", "key": "svg-0" }], ["path", { "d": "M6 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2", "key": "svg-1" }]];
|
|
12274
|
+
const IconUser = createReactComponent("outline", "user", "User", __iconNode$7);
|
|
12275
|
+
|
|
12276
|
+
/**
|
|
12277
|
+
* @license @tabler/icons-react v3.36.0 - MIT
|
|
12278
|
+
*
|
|
12279
|
+
* This source code is licensed under the MIT license.
|
|
12280
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12281
|
+
*/
|
|
12282
|
+
|
|
12283
|
+
|
|
12284
|
+
const __iconNode$6 = [["path", { "d": "M10 13a2 2 0 1 0 4 0a2 2 0 0 0 -4 0", "key": "svg-0" }], ["path", { "d": "M8 21v-1a2 2 0 0 1 2 -2h4a2 2 0 0 1 2 2v1", "key": "svg-1" }], ["path", { "d": "M15 5a2 2 0 1 0 4 0a2 2 0 0 0 -4 0", "key": "svg-2" }], ["path", { "d": "M17 10h2a2 2 0 0 1 2 2v1", "key": "svg-3" }], ["path", { "d": "M5 5a2 2 0 1 0 4 0a2 2 0 0 0 -4 0", "key": "svg-4" }], ["path", { "d": "M3 13v-1a2 2 0 0 1 2 -2h2", "key": "svg-5" }]];
|
|
12285
|
+
const IconUsersGroup = createReactComponent("outline", "users-group", "UsersGroup", __iconNode$6);
|
|
12286
|
+
|
|
12287
|
+
/**
|
|
12288
|
+
* @license @tabler/icons-react v3.36.0 - MIT
|
|
12289
|
+
*
|
|
12290
|
+
* This source code is licensed under the MIT license.
|
|
12291
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12292
|
+
*/
|
|
12293
|
+
|
|
12294
|
+
|
|
12295
|
+
const __iconNode$5 = [["path", { "d": "M9 7m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0", "key": "svg-0" }], ["path", { "d": "M3 21v-2a4 4 0 0 1 4 -4h4a4 4 0 0 1 4 4v2", "key": "svg-1" }], ["path", { "d": "M16 3.13a4 4 0 0 1 0 7.75", "key": "svg-2" }], ["path", { "d": "M21 21v-2a4 4 0 0 0 -3 -3.85", "key": "svg-3" }]];
|
|
12296
|
+
const IconUsers = createReactComponent("outline", "users", "Users", __iconNode$5);
|
|
12297
|
+
|
|
12298
|
+
/**
|
|
12299
|
+
* @license @tabler/icons-react v3.36.0 - MIT
|
|
12300
|
+
*
|
|
12301
|
+
* This source code is licensed under the MIT license.
|
|
12302
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12303
|
+
*/
|
|
12304
|
+
|
|
12305
|
+
|
|
12306
|
+
const __iconNode$4 = [["path", { "d": "M5 4c-2.5 5 -2.5 10 0 16m14 -16c2.5 5 2.5 10 0 16m-10 -11h1c1 0 1 1 2.016 3.527c.984 2.473 .984 3.473 1.984 3.473h1", "key": "svg-0" }], ["path", { "d": "M8 16c1.5 0 3 -2 4 -3.5s2.5 -3.5 4 -3.5", "key": "svg-1" }]];
|
|
12307
|
+
const IconVariable = createReactComponent("outline", "variable", "Variable", __iconNode$4);
|
|
12308
|
+
|
|
12309
|
+
/**
|
|
12310
|
+
* @license @tabler/icons-react v3.36.0 - MIT
|
|
12311
|
+
*
|
|
12312
|
+
* This source code is licensed under the MIT license.
|
|
12313
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12314
|
+
*/
|
|
12315
|
+
|
|
12316
|
+
|
|
12317
|
+
const __iconNode$3 = [["path", { "d": "M12 3c-3.866 0 -7 3.272 -7 7v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1 -1v-10c0 -3.728 -3.134 -7 -7 -7z", "key": "svg-0" }], ["path", { "d": "M5 13l14 0", "key": "svg-1" }], ["path", { "d": "M12 3l0 18", "key": "svg-2" }]];
|
|
12318
|
+
const IconWindow = createReactComponent("outline", "window", "Window", __iconNode$3);
|
|
12253
12319
|
|
|
12254
12320
|
/**
|
|
12255
12321
|
* @license @tabler/icons-react v3.36.0 - MIT
|
|
@@ -12334,7 +12400,6 @@ function SearchBar(props) {
|
|
|
12334
12400
|
const searchPosition = (_d = (_c = props.shellUi.search) === null || _c === void 0 ? void 0 : _c.searchPosition) !== null && _d !== void 0 ? _d : ShellUISearchPosition.Left;
|
|
12335
12401
|
const isCenterPosition = searchPosition === ShellUISearchPosition.Center;
|
|
12336
12402
|
// Dimensioni diverse in base alla posizione
|
|
12337
|
-
const searchWidth = isCenterPosition ? 800 : 280;
|
|
12338
12403
|
const searchSize = isCenterPosition ? 'sm' : 'sm';
|
|
12339
12404
|
const iconSize = isCenterPosition ? 18 : 18;
|
|
12340
12405
|
// Carica le actions dal menu come fa lo Spotlight, mantenendo i gruppi
|
|
@@ -12455,6 +12520,10 @@ function SearchBar(props) {
|
|
|
12455
12520
|
if (searchType === ShellUISearchType.Spotlight) {
|
|
12456
12521
|
return jsx(Box, {
|
|
12457
12522
|
visibleFrom: 'sm',
|
|
12523
|
+
style: isCenterPosition ? {
|
|
12524
|
+
width: '100%',
|
|
12525
|
+
maxWidth: '800px'
|
|
12526
|
+
} : undefined,
|
|
12458
12527
|
children: jsx(TextInput, {
|
|
12459
12528
|
disabled: props.disabled,
|
|
12460
12529
|
size: searchSize,
|
|
@@ -12464,7 +12533,7 @@ function SearchBar(props) {
|
|
|
12464
12533
|
size: iconSize
|
|
12465
12534
|
}),
|
|
12466
12535
|
rightSectionWidth: isCenterPosition ? 0 : 90,
|
|
12467
|
-
w:
|
|
12536
|
+
w: isCenterPosition ? '100%' : 280,
|
|
12468
12537
|
rightSection: rightSection,
|
|
12469
12538
|
styles: {
|
|
12470
12539
|
input: {
|
|
@@ -12495,6 +12564,10 @@ function SearchBar(props) {
|
|
|
12495
12564
|
// Dropdown Type (nuovo)
|
|
12496
12565
|
return jsx(Box, {
|
|
12497
12566
|
visibleFrom: 'sm',
|
|
12567
|
+
style: isCenterPosition ? {
|
|
12568
|
+
width: '100%',
|
|
12569
|
+
maxWidth: '800px'
|
|
12570
|
+
} : undefined,
|
|
12498
12571
|
children: jsxs(Popover, {
|
|
12499
12572
|
opened: dropdownOpened,
|
|
12500
12573
|
onChange: setDropdownOpened,
|
|
@@ -12520,7 +12593,7 @@ function SearchBar(props) {
|
|
|
12520
12593
|
size: iconSize
|
|
12521
12594
|
}),
|
|
12522
12595
|
rightSectionWidth: isCenterPosition ? 0 : 90,
|
|
12523
|
-
w:
|
|
12596
|
+
w: isCenterPosition ? '100%' : 280,
|
|
12524
12597
|
rightSection: rightSection,
|
|
12525
12598
|
styles: {
|
|
12526
12599
|
input: {
|
|
@@ -12747,7 +12820,7 @@ function FrontendSwitch(props) {
|
|
|
12747
12820
|
}
|
|
12748
12821
|
|
|
12749
12822
|
function AppBar(props) {
|
|
12750
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
12823
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
12751
12824
|
const {
|
|
12752
12825
|
userInfo
|
|
12753
12826
|
} = useSelector(state => state.user);
|
|
@@ -12836,14 +12909,19 @@ function AppBar(props) {
|
|
|
12836
12909
|
children: jsx(Stack, {
|
|
12837
12910
|
gap: 0,
|
|
12838
12911
|
children: jsxs(Group, {
|
|
12839
|
-
px:
|
|
12840
|
-
justify: 'space-between',
|
|
12912
|
+
px: 'md',
|
|
12841
12913
|
wrap: "nowrap",
|
|
12914
|
+
gap: "md",
|
|
12842
12915
|
style: {
|
|
12843
12916
|
height: '48px',
|
|
12844
|
-
backgroundColor: (_b = (_a = props.previewMode) === null || _a === void 0 ? void 0 : _a.headerColor) !== null && _b !== void 0 ? _b : fluxoTheme.colors['brand'][7]
|
|
12917
|
+
backgroundColor: (_b = (_a = props.previewMode) === null || _a === void 0 ? void 0 : _a.headerColor) !== null && _b !== void 0 ? _b : fluxoTheme.colors['brand'][7],
|
|
12918
|
+
display: 'flex',
|
|
12919
|
+
justifyContent: ((_d = (_c = props.shellUi.search) === null || _c === void 0 ? void 0 : _c.searchPosition) !== null && _d !== void 0 ? _d : ShellUISearchPosition.Left) === ShellUISearchPosition.Center ? 'flex-start' : 'space-between'
|
|
12845
12920
|
},
|
|
12846
12921
|
children: [jsxs(Group, {
|
|
12922
|
+
style: {
|
|
12923
|
+
flexShrink: 0
|
|
12924
|
+
},
|
|
12847
12925
|
children: [(props.shellUi.navigation === ShellUINavigation.Sidebar || props.shellUi.navigation === ShellUINavigation.SidebarMinimal || isMobile) && jsx(Burger, {
|
|
12848
12926
|
tabIndex: -1,
|
|
12849
12927
|
disabled: props.previewMode !== undefined,
|
|
@@ -12857,20 +12935,23 @@ function AppBar(props) {
|
|
|
12857
12935
|
tabIndex: -1,
|
|
12858
12936
|
to: props.previewMode ? '' : '/',
|
|
12859
12937
|
style: {
|
|
12860
|
-
maxHeight: (
|
|
12938
|
+
maxHeight: (_f = (_e = props.previewMode) === null || _e === void 0 ? void 0 : _e.logoHeight) !== null && _f !== void 0 ? _f : configuration.logoHeight
|
|
12861
12939
|
},
|
|
12862
12940
|
children: jsx("img", {
|
|
12863
|
-
src: ((
|
|
12941
|
+
src: ((_g = props.previewMode) === null || _g === void 0 ? void 0 : _g.logo) ? props.previewMode.logo : configuration.logo,
|
|
12864
12942
|
style: {
|
|
12865
|
-
maxHeight: (
|
|
12943
|
+
maxHeight: (_j = (_h = props.previewMode) === null || _h === void 0 ? void 0 : _h.logoHeight) !== null && _j !== void 0 ? _j : configuration.logoHeight
|
|
12866
12944
|
}
|
|
12867
12945
|
})
|
|
12868
12946
|
})]
|
|
12869
|
-
}), ((
|
|
12947
|
+
}), ((_l = (_k = props.shellUi.search) === null || _k === void 0 ? void 0 : _k.searchPosition) !== null && _l !== void 0 ? _l : ShellUISearchPosition.Left) === ShellUISearchPosition.Center && jsx(Box, {
|
|
12870
12948
|
style: {
|
|
12871
|
-
|
|
12872
|
-
|
|
12873
|
-
|
|
12949
|
+
flex: '1 1 auto',
|
|
12950
|
+
display: 'flex',
|
|
12951
|
+
justifyContent: 'center',
|
|
12952
|
+
minWidth: 0,
|
|
12953
|
+
maxWidth: '800px',
|
|
12954
|
+
margin: '0 auto'
|
|
12874
12955
|
},
|
|
12875
12956
|
children: jsx(SearchBar, {
|
|
12876
12957
|
disabled: props.previewMode !== undefined,
|
|
@@ -12878,6 +12959,9 @@ function AppBar(props) {
|
|
|
12878
12959
|
})
|
|
12879
12960
|
}), jsxs(Group, {
|
|
12880
12961
|
wrap: "nowrap",
|
|
12962
|
+
style: {
|
|
12963
|
+
flexShrink: 0
|
|
12964
|
+
},
|
|
12881
12965
|
children: [developmentMode && jsx(Badge, {
|
|
12882
12966
|
tabIndex: -1,
|
|
12883
12967
|
color: 'red',
|
|
@@ -12940,7 +13024,7 @@ function AppBar(props) {
|
|
|
12940
13024
|
})
|
|
12941
13025
|
})
|
|
12942
13026
|
})]
|
|
12943
|
-
}), (((
|
|
13027
|
+
}), (((_o = (_m = props.shellUi.search) === null || _m === void 0 ? void 0 : _m.searchPosition) !== null && _o !== void 0 ? _o : ShellUISearchPosition.Left) === ShellUISearchPosition.Left || ((_q = (_p = props.shellUi.search) === null || _p === void 0 ? void 0 : _p.searchPosition) !== null && _q !== void 0 ? _q : ShellUISearchPosition.Left) === ShellUISearchPosition.Right) && jsx(SearchBar, {
|
|
12944
13028
|
disabled: props.previewMode !== undefined,
|
|
12945
13029
|
shellUi: props.shellUi
|
|
12946
13030
|
}), jsxs(Popover, {
|
|
@@ -12957,7 +13041,7 @@ function AppBar(props) {
|
|
|
12957
13041
|
color: "cyan",
|
|
12958
13042
|
radius: "xl",
|
|
12959
13043
|
size: 32,
|
|
12960
|
-
children: [(
|
|
13044
|
+
children: [(_r = userInfo === null || userInfo === void 0 ? void 0 : userInfo.FirstName) === null || _r === void 0 ? void 0 : _r.substr(0, 1), (_s = userInfo === null || userInfo === void 0 ? void 0 : userInfo.LastName) === null || _s === void 0 ? void 0 : _s.substr(0, 1)]
|
|
12961
13045
|
})
|
|
12962
13046
|
}), jsx(Popover.Dropdown, {
|
|
12963
13047
|
w: 300,
|
|
@@ -12971,7 +13055,7 @@ function AppBar(props) {
|
|
|
12971
13055
|
color: "cyan",
|
|
12972
13056
|
radius: "xl",
|
|
12973
13057
|
size: 64,
|
|
12974
|
-
children: [(
|
|
13058
|
+
children: [(_t = userInfo === null || userInfo === void 0 ? void 0 : userInfo.FirstName) === null || _t === void 0 ? void 0 : _t.substr(0, 1), (_u = userInfo === null || userInfo === void 0 ? void 0 : userInfo.LastName) === null || _u === void 0 ? void 0 : _u.substr(0, 1)]
|
|
12975
13059
|
}), jsxs(Text, {
|
|
12976
13060
|
children: [userInfo === null || userInfo === void 0 ? void 0 : userInfo.FirstName, " ", userInfo === null || userInfo === void 0 ? void 0 : userInfo.LastName]
|
|
12977
13061
|
})]
|
|
@@ -13594,141 +13678,6 @@ const CloseSessionConfirmationModal = ({
|
|
|
13594
13678
|
});
|
|
13595
13679
|
};
|
|
13596
13680
|
|
|
13597
|
-
/**
|
|
13598
|
-
* Hook to manage SessionHub WebSocket connection lifecycle
|
|
13599
|
-
* @param shouldConnect - When true, starts the connection. Use this to delay connection until FluxoClient is initialized
|
|
13600
|
-
*/
|
|
13601
|
-
const useSessionHub = (shouldConnect = true) => {
|
|
13602
|
-
const isConnecting = useRef(false);
|
|
13603
|
-
const hasStartedRef = useRef(false);
|
|
13604
|
-
const [isConnected, setIsConnected] = useState(false);
|
|
13605
|
-
const hasBeenConnectedOnce = useRef(false); // Flag per tracciare se si รจ mai connesso
|
|
13606
|
-
// Funzione per avviare la connessione
|
|
13607
|
-
const startConnection = useCallback$1(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
13608
|
-
if (isConnecting.current || hasStartedRef.current) return;
|
|
13609
|
-
isConnecting.current = true;
|
|
13610
|
-
try {
|
|
13611
|
-
yield FluxoClientSys.Instance.sessionHub.start();
|
|
13612
|
-
console.info('โ
SessionHub connection started from useSessionHub hook');
|
|
13613
|
-
// Registra l'handler per ForceLogout subito dopo la connessione
|
|
13614
|
-
FluxoClientSys.Instance.sessionHub.on('ForceLogout', data => {
|
|
13615
|
-
console.warn('๐จ Force logout received from server:', data);
|
|
13616
|
-
FluxoClientSys.Instance.auth.logout();
|
|
13617
|
-
});
|
|
13618
|
-
console.info('๐ง ForceLogout handler registered');
|
|
13619
|
-
hasStartedRef.current = true;
|
|
13620
|
-
setIsConnected(true);
|
|
13621
|
-
hasBeenConnectedOnce.current = true; // Segna che ci siamo connessi almeno una volta
|
|
13622
|
-
} catch (error) {
|
|
13623
|
-
console.error('โ Failed to start SessionHub connection', error);
|
|
13624
|
-
setIsConnected(false);
|
|
13625
|
-
} finally {
|
|
13626
|
-
isConnecting.current = false;
|
|
13627
|
-
}
|
|
13628
|
-
}), []);
|
|
13629
|
-
// Funzione per fermare la connessione
|
|
13630
|
-
const stopConnection = useCallback$1(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
13631
|
-
if (!hasStartedRef.current) return;
|
|
13632
|
-
try {
|
|
13633
|
-
yield FluxoClientSys.Instance.sessionHub.stop();
|
|
13634
|
-
console.info('๐ SessionHub connection stopped');
|
|
13635
|
-
hasStartedRef.current = false;
|
|
13636
|
-
setIsConnected(false);
|
|
13637
|
-
} catch (error) {
|
|
13638
|
-
console.error('โ Failed to stop SessionHub connection', error);
|
|
13639
|
-
}
|
|
13640
|
-
}), []);
|
|
13641
|
-
useEffect(() => {
|
|
13642
|
-
// Start connection when shouldConnect becomes true
|
|
13643
|
-
if (shouldConnect && !hasStartedRef.current && !isConnecting.current) {
|
|
13644
|
-
startConnection();
|
|
13645
|
-
}
|
|
13646
|
-
// Stop connection when shouldConnect becomes false (e.g., user logout)
|
|
13647
|
-
if (!shouldConnect && hasStartedRef.current) {
|
|
13648
|
-
stopConnection();
|
|
13649
|
-
}
|
|
13650
|
-
// Cleanup on unmount
|
|
13651
|
-
return () => {
|
|
13652
|
-
if (hasStartedRef.current) {
|
|
13653
|
-
const cleanup = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
13654
|
-
try {
|
|
13655
|
-
yield FluxoClientSys.Instance.sessionHub.stop();
|
|
13656
|
-
console.info('๐ SessionHub connection stopped (component unmount)');
|
|
13657
|
-
hasStartedRef.current = false;
|
|
13658
|
-
} catch (error) {
|
|
13659
|
-
console.error('โ Failed to stop SessionHub on unmount', error);
|
|
13660
|
-
}
|
|
13661
|
-
});
|
|
13662
|
-
cleanup();
|
|
13663
|
-
}
|
|
13664
|
-
};
|
|
13665
|
-
}, [shouldConnect, startConnection, stopConnection]);
|
|
13666
|
-
// Monitora lo stato della connessione ogni 2 secondi
|
|
13667
|
-
useEffect(() => {
|
|
13668
|
-
const checkConnection = () => {
|
|
13669
|
-
const connected = FluxoClientSys.Instance.sessionHub.isConnected;
|
|
13670
|
-
setIsConnected(connected);
|
|
13671
|
-
// Se si connette, segna che ci siamo connessi almeno una volta
|
|
13672
|
-
if (connected) {
|
|
13673
|
-
hasBeenConnectedOnce.current = true;
|
|
13674
|
-
}
|
|
13675
|
-
};
|
|
13676
|
-
const interval = setInterval(checkConnection, 2000);
|
|
13677
|
-
checkConnection(); // Check subito
|
|
13678
|
-
return () => clearInterval(interval);
|
|
13679
|
-
}, []);
|
|
13680
|
-
// Cleanup finale: disconnetti quando il componente viene smontato
|
|
13681
|
-
useEffect(() => {
|
|
13682
|
-
return () => {
|
|
13683
|
-
if (hasStartedRef.current) {
|
|
13684
|
-
const cleanup = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
13685
|
-
try {
|
|
13686
|
-
yield FluxoClientSys.Instance.sessionHub.stop();
|
|
13687
|
-
console.info('SessionHub connection stopped (component unmount)');
|
|
13688
|
-
} catch (error) {
|
|
13689
|
-
console.error('Failed to stop SessionHub connection', error);
|
|
13690
|
-
}
|
|
13691
|
-
});
|
|
13692
|
-
cleanup();
|
|
13693
|
-
}
|
|
13694
|
-
};
|
|
13695
|
-
}, []);
|
|
13696
|
-
// Esponi metodi utili
|
|
13697
|
-
const on = useCallback$1((eventName, handler) => {
|
|
13698
|
-
FluxoClientSys.Instance.sessionHub.on(eventName, handler);
|
|
13699
|
-
}, []);
|
|
13700
|
-
const off = useCallback$1((eventName, handler) => {
|
|
13701
|
-
FluxoClientSys.Instance.sessionHub.off(eventName, handler);
|
|
13702
|
-
}, []);
|
|
13703
|
-
const invoke = useCallback$1((methodName, ...args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13704
|
-
return yield FluxoClientSys.Instance.sessionHub.invoke(methodName, ...args);
|
|
13705
|
-
}), []);
|
|
13706
|
-
const send = useCallback$1((methodName, ...args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13707
|
-
yield FluxoClientSys.Instance.sessionHub.send(methodName, ...args);
|
|
13708
|
-
}), []);
|
|
13709
|
-
const getState = useCallback$1(() => {
|
|
13710
|
-
return FluxoClientSys.Instance.sessionHub.state;
|
|
13711
|
-
}, []);
|
|
13712
|
-
const getConnectionId = useCallback$1(() => {
|
|
13713
|
-
return FluxoClientSys.Instance.sessionHub.connectionId;
|
|
13714
|
-
}, []);
|
|
13715
|
-
// Memoizza l'oggetto restituito per evitare re-render inutili del ScreenSharingProvider
|
|
13716
|
-
return useMemo$1(() => ({
|
|
13717
|
-
on,
|
|
13718
|
-
off,
|
|
13719
|
-
invoke,
|
|
13720
|
-
send,
|
|
13721
|
-
getState,
|
|
13722
|
-
getConnectionId,
|
|
13723
|
-
connectionId: FluxoClientSys.Instance.sessionHub.connectionId,
|
|
13724
|
-
isConnected: () => isConnected,
|
|
13725
|
-
connected: isConnected,
|
|
13726
|
-
reconnect: startConnection,
|
|
13727
|
-
disconnect: stopConnection,
|
|
13728
|
-
hasBeenConnectedOnce: hasBeenConnectedOnce.current
|
|
13729
|
-
}), [on, off, invoke, send, getState, getConnectionId, isConnected, startConnection, stopConnection]);
|
|
13730
|
-
};
|
|
13731
|
-
|
|
13732
13681
|
/**
|
|
13733
13682
|
* Hook personalizzato per tracciare i cambiamenti di pagina e titolo
|
|
13734
13683
|
* e inviare gli aggiornamenti al server via SessionHub
|
|
@@ -13797,9 +13746,13 @@ function AppContent(props) {
|
|
|
13797
13746
|
// Hook personalizzati per gestire le diverse responsabilitร
|
|
13798
13747
|
useDocumentTitleManager(props.withMultipleSessions, sessionContext);
|
|
13799
13748
|
useScrollPositionManager(props.withMultipleSessions, currentSessionId);
|
|
13800
|
-
const sessionHub = useSessionHub(false);
|
|
13801
13749
|
// Traccia i cambiamenti di pagina e titolo e invia gli aggiornamenti al server
|
|
13802
|
-
usePageTracker
|
|
13750
|
+
// Wrapper per adattare sessionHub al tipo richiesto da usePageTracker
|
|
13751
|
+
const sessionHubWrapper = useMemo$1(() => ({
|
|
13752
|
+
isConnected: () => FluxoClientSys.Instance.sessionHub.isConnected,
|
|
13753
|
+
invoke: FluxoClientSys.Instance.sessionHub.invoke.bind(FluxoClientSys.Instance.sessionHub)
|
|
13754
|
+
}), []);
|
|
13755
|
+
usePageTracker(sessionHubWrapper);
|
|
13803
13756
|
// FIX #1: Stabilizza le funzioni del sessionContext per evitare ricreazioni del listener
|
|
13804
13757
|
const stableSessionContext = useMemo$1(() => ({
|
|
13805
13758
|
addOrSwitchToSession: sessionContext.addOrSwitchToSession
|
|
@@ -13894,6 +13847,7 @@ function AppContent(props) {
|
|
|
13894
13847
|
children: [props.withMultipleSessions ? jsxs(Tabs, {
|
|
13895
13848
|
variant: 'none',
|
|
13896
13849
|
value: currentSessionId,
|
|
13850
|
+
keepMounted: true,
|
|
13897
13851
|
onChange: value => value && sessionContext.setCurrentSession(value),
|
|
13898
13852
|
children: [jsx(Box, {
|
|
13899
13853
|
style: {
|
|
@@ -14730,7 +14684,6 @@ function FooterBar(props) {
|
|
|
14730
14684
|
hasDeveloperAccess,
|
|
14731
14685
|
hasDataAnalystAccess
|
|
14732
14686
|
} = useAppSelector(state => state.layout);
|
|
14733
|
-
const sessionHub = useSessionHub(false);
|
|
14734
14687
|
const [wsPopoverOpened, setWsPopoverOpened] = useState(false);
|
|
14735
14688
|
const [isWsConnected, setIsWsConnected] = useState(false);
|
|
14736
14689
|
const [connectionId, setConnectionId] = useState(null);
|
|
@@ -14744,7 +14697,7 @@ function FooterBar(props) {
|
|
|
14744
14697
|
// Monitora lo stato della connessione WebSocket
|
|
14745
14698
|
useEffect(() => {
|
|
14746
14699
|
const checkConnection = () => {
|
|
14747
|
-
const connected = sessionHub.isConnected
|
|
14700
|
+
const connected = FluxoClientSys.Instance.sessionHub.isConnected;
|
|
14748
14701
|
setIsWsConnected(connected);
|
|
14749
14702
|
if (connected) {
|
|
14750
14703
|
// Ottieni il connection ID
|
|
@@ -14761,17 +14714,17 @@ function FooterBar(props) {
|
|
|
14761
14714
|
// Controlla periodicamente ogni 2 secondi
|
|
14762
14715
|
const interval = setInterval(checkConnection, 2000);
|
|
14763
14716
|
return () => clearInterval(interval);
|
|
14764
|
-
}, [
|
|
14717
|
+
}, []);
|
|
14765
14718
|
useEffect(() => {
|
|
14766
14719
|
if (idle) FluxoStateDispatcher.dispatchSetUserIdle();else FluxoStateDispatcher.dispatchUnsetUserIdle();
|
|
14767
14720
|
}, [idle]);
|
|
14768
14721
|
// Invia l'aggiornamento dell'attivitร utente al server quando cambia lo stato idle
|
|
14769
14722
|
useEffect(() => {
|
|
14770
14723
|
if (!isWsConnected) return; // Non inviare se non siamo connessi
|
|
14771
|
-
sessionHub.invoke('UpdateUserActivity', !userIdle).catch(error => {
|
|
14724
|
+
FluxoClientSys.Instance.sessionHub.invoke('UpdateUserActivity', !userIdle).catch(error => {
|
|
14772
14725
|
console.error('Failed to update user activity:', error);
|
|
14773
14726
|
});
|
|
14774
|
-
}, [userIdle, isWsConnected
|
|
14727
|
+
}, [userIdle, isWsConnected]);
|
|
14775
14728
|
[{
|
|
14776
14729
|
title: 'Home',
|
|
14777
14730
|
href: '#'
|
|
@@ -15669,7 +15622,7 @@ function Navbar(props) {
|
|
|
15669
15622
|
id: 'fluxo-shell-sidebar',
|
|
15670
15623
|
zIndex: 197,
|
|
15671
15624
|
style: props.shellUi.navigation === ShellUINavigation.Sidebar || props.shellUi.navigation === ShellUINavigation.SidebarMinimal ? {
|
|
15672
|
-
borderTopLeftRadius: '
|
|
15625
|
+
borderTopLeftRadius: '12px',
|
|
15673
15626
|
overflow: 'visible'
|
|
15674
15627
|
} : undefined,
|
|
15675
15628
|
children: jsx(AppShell.Section, {
|
|
@@ -20050,11 +20003,20 @@ function AppLayout({
|
|
|
20050
20003
|
const [currentShellUI, setCurrentShellUI] = useState(ui);
|
|
20051
20004
|
const isMobile = useMediaQuery('(max-width: 992px)');
|
|
20052
20005
|
// Monitora lo stato della connessione WebSocket
|
|
20053
|
-
const
|
|
20054
|
-
const
|
|
20055
|
-
|
|
20056
|
-
|
|
20057
|
-
|
|
20006
|
+
const [connected, setConnected] = useState(false);
|
|
20007
|
+
const [hasBeenConnectedOnce, setHasBeenConnectedOnce] = useState(false);
|
|
20008
|
+
useEffect(() => {
|
|
20009
|
+
const checkConnection = () => {
|
|
20010
|
+
const isConnected = FluxoClientSys.Instance.sessionHub.isConnected;
|
|
20011
|
+
setConnected(isConnected);
|
|
20012
|
+
if (isConnected) {
|
|
20013
|
+
setHasBeenConnectedOnce(true);
|
|
20014
|
+
}
|
|
20015
|
+
};
|
|
20016
|
+
const interval = setInterval(checkConnection, 2000);
|
|
20017
|
+
checkConnection();
|
|
20018
|
+
return () => clearInterval(interval);
|
|
20019
|
+
}, []);
|
|
20058
20020
|
// Mostra l'overlay solo se la connessione รจ stata persa DOPO essere stata stabilita
|
|
20059
20021
|
const showDisconnectionOverlay = !connected && hasBeenConnectedOnce;
|
|
20060
20022
|
// Blocca lo scroll quando l'overlay รจ visibile
|
|
@@ -20090,7 +20052,7 @@ function AppLayout({
|
|
|
20090
20052
|
return jsx(ShellUIContext.Provider, {
|
|
20091
20053
|
value: currentShellUI,
|
|
20092
20054
|
children: jsx(ScreenSharingProvider, {
|
|
20093
|
-
sessionHub: sessionHub,
|
|
20055
|
+
sessionHub: FluxoClientSys.Instance.sessionHub,
|
|
20094
20056
|
children: jsxs(WithShellSessionProvider, {
|
|
20095
20057
|
withMultipleSessions: (_a = currentShellUI.withMultipleSessions) !== null && _a !== void 0 ? _a : false,
|
|
20096
20058
|
children: [jsx(WithRavifyProvider, {
|
|
@@ -20101,16 +20063,16 @@ function AppLayout({
|
|
|
20101
20063
|
className: currentShellUI.navigation === ShellUINavigation.Sidebar || currentShellUI.navigation === ShellUINavigation.SidebarMinimal ? 'flxShellAppShellV2' : 'flxShellAppShellV1',
|
|
20102
20064
|
styles: {
|
|
20103
20065
|
main: {
|
|
20104
|
-
backgroundColor: '#fafbff'
|
|
20066
|
+
backgroundColor: '#fafbff',
|
|
20067
|
+
paddingLeft: currentShellUI.navigation === ShellUINavigation.None || currentShellUI.navigation === ShellUINavigation.Topbar ? 0 : undefined
|
|
20105
20068
|
}
|
|
20106
20069
|
},
|
|
20107
20070
|
navbar: {
|
|
20108
20071
|
width: currentShellUI.navigation === ShellUINavigation.SidebarMinimal ? navbarOpened ? 248 : 80 : 248,
|
|
20109
20072
|
breakpoint: 'sm',
|
|
20110
20073
|
collapsed: {
|
|
20111
|
-
mobile: !navbarOpened,
|
|
20112
|
-
|
|
20113
|
-
desktop: !navbarOpened && currentShellUI.navigation === ShellUINavigation.Sidebar // Su desktop, nascosta solo con Sidebar normale
|
|
20074
|
+
mobile: currentShellUI.navigation === ShellUINavigation.None ? true : !navbarOpened,
|
|
20075
|
+
desktop: currentShellUI.navigation === ShellUINavigation.None ? true : !navbarOpened && currentShellUI.navigation === ShellUINavigation.Sidebar
|
|
20114
20076
|
}
|
|
20115
20077
|
},
|
|
20116
20078
|
header: {
|
|
@@ -60665,23 +60627,319 @@ const ScreenViewerModal = ({
|
|
|
60665
60627
|
});
|
|
60666
60628
|
};
|
|
60667
60629
|
|
|
60630
|
+
/**
|
|
60631
|
+
* Modal per inviare messaggi agli utenti connessi
|
|
60632
|
+
*/
|
|
60633
|
+
const SendMessageModal = ({
|
|
60634
|
+
opened,
|
|
60635
|
+
onClose,
|
|
60636
|
+
mode,
|
|
60637
|
+
targetId,
|
|
60638
|
+
targetName,
|
|
60639
|
+
availableUsers: _availableUsers = [],
|
|
60640
|
+
sessionHub,
|
|
60641
|
+
onMessageSent
|
|
60642
|
+
}) => {
|
|
60643
|
+
var _a, _b;
|
|
60644
|
+
const [message, setMessage] = useState('');
|
|
60645
|
+
const [messageType, setMessageType] = useState('Informazioni');
|
|
60646
|
+
const [displayType, setDisplayType] = useState('Modal');
|
|
60647
|
+
const [selectedUserIds, setSelectedUserIds] = useState([]);
|
|
60648
|
+
const [isSending, setIsSending] = useState(false);
|
|
60649
|
+
const [error, setError] = useState(null);
|
|
60650
|
+
// Configurazione tipi di visualizzazione con icone
|
|
60651
|
+
const displayTypeConfig = {
|
|
60652
|
+
'Modal': {
|
|
60653
|
+
icon: jsx(IconWindow, {
|
|
60654
|
+
size: 16
|
|
60655
|
+
}),
|
|
60656
|
+
color: 'blue',
|
|
60657
|
+
label: 'Modale'
|
|
60658
|
+
},
|
|
60659
|
+
'Toast': {
|
|
60660
|
+
icon: jsx(IconMessage, {
|
|
60661
|
+
size: 16
|
|
60662
|
+
}),
|
|
60663
|
+
color: 'teal',
|
|
60664
|
+
label: 'Toast'
|
|
60665
|
+
},
|
|
60666
|
+
'NotificationBar': {
|
|
60667
|
+
icon: jsx(IconLayoutBottombar, {
|
|
60668
|
+
size: 16
|
|
60669
|
+
}),
|
|
60670
|
+
color: 'cyan',
|
|
60671
|
+
label: 'Notification Bar'
|
|
60672
|
+
}
|
|
60673
|
+
};
|
|
60674
|
+
const displayTypeOptions = Object.entries(displayTypeConfig).map(([value, config]) => ({
|
|
60675
|
+
value,
|
|
60676
|
+
label: config.label
|
|
60677
|
+
}));
|
|
60678
|
+
// Configurazione tipi di messaggio con icone
|
|
60679
|
+
const messageTypeConfig = {
|
|
60680
|
+
'Informazioni': {
|
|
60681
|
+
icon: jsx(IconInfoCircle, {
|
|
60682
|
+
size: 16
|
|
60683
|
+
}),
|
|
60684
|
+
color: 'blue',
|
|
60685
|
+
label: 'Informazioni'
|
|
60686
|
+
},
|
|
60687
|
+
'Successo': {
|
|
60688
|
+
icon: jsx(IconCircleCheck, {
|
|
60689
|
+
size: 16
|
|
60690
|
+
}),
|
|
60691
|
+
color: 'green',
|
|
60692
|
+
label: 'Successo'
|
|
60693
|
+
},
|
|
60694
|
+
'Avviso': {
|
|
60695
|
+
icon: jsx(IconAlertCircle, {
|
|
60696
|
+
size: 16
|
|
60697
|
+
}),
|
|
60698
|
+
color: 'yellow',
|
|
60699
|
+
label: 'Avviso'
|
|
60700
|
+
},
|
|
60701
|
+
'Critico': {
|
|
60702
|
+
icon: jsx(IconAlertOctagon, {
|
|
60703
|
+
size: 16
|
|
60704
|
+
}),
|
|
60705
|
+
color: 'red',
|
|
60706
|
+
label: 'Critico'
|
|
60707
|
+
},
|
|
60708
|
+
'Errore': {
|
|
60709
|
+
icon: jsx(IconX, {
|
|
60710
|
+
size: 16
|
|
60711
|
+
}),
|
|
60712
|
+
color: 'red',
|
|
60713
|
+
label: 'Errore'
|
|
60714
|
+
},
|
|
60715
|
+
'Alert': {
|
|
60716
|
+
icon: jsx(IconBell, {
|
|
60717
|
+
size: 16
|
|
60718
|
+
}),
|
|
60719
|
+
color: 'orange',
|
|
60720
|
+
label: 'Alert'
|
|
60721
|
+
},
|
|
60722
|
+
'Notifica': {
|
|
60723
|
+
icon: jsx(IconMail, {
|
|
60724
|
+
size: 16
|
|
60725
|
+
}),
|
|
60726
|
+
color: 'grape',
|
|
60727
|
+
label: 'Notifica'
|
|
60728
|
+
}
|
|
60729
|
+
};
|
|
60730
|
+
const messageTypeOptions = Object.entries(messageTypeConfig).map(([value, config]) => ({
|
|
60731
|
+
value,
|
|
60732
|
+
label: config.label
|
|
60733
|
+
}));
|
|
60734
|
+
const handleSend = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
60735
|
+
if (!message.trim()) {
|
|
60736
|
+
setError('Il messaggio non puรฒ essere vuoto');
|
|
60737
|
+
return;
|
|
60738
|
+
}
|
|
60739
|
+
// Validazione per modalitร multiple-users
|
|
60740
|
+
if (mode === 'multiple-users' && selectedUserIds.length === 0) {
|
|
60741
|
+
setError('Seleziona almeno un utente');
|
|
60742
|
+
return;
|
|
60743
|
+
}
|
|
60744
|
+
setIsSending(true);
|
|
60745
|
+
setError(null);
|
|
60746
|
+
try {
|
|
60747
|
+
if (mode === 'broadcast') {
|
|
60748
|
+
yield sessionHub.invoke('SendBroadcastMessage', messageType, displayType, message);
|
|
60749
|
+
} else if (mode === 'user' && targetId) {
|
|
60750
|
+
yield sessionHub.invoke('SendMessageToUser', targetId, messageType, displayType, message);
|
|
60751
|
+
} else if (mode === 'session' && targetId) {
|
|
60752
|
+
yield sessionHub.invoke('SendMessageToSession', targetId, messageType, displayType, message);
|
|
60753
|
+
} else if (mode === 'multiple-users') {
|
|
60754
|
+
// Invia il messaggio a tutti gli utenti selezionati
|
|
60755
|
+
const promises = selectedUserIds.map(userId => sessionHub.invoke('SendMessageToUser', userId, messageType, displayType, message));
|
|
60756
|
+
yield Promise.all(promises);
|
|
60757
|
+
console.info(`โ
Messaggio inviato a ${selectedUserIds.length} utenti`, selectedUserIds);
|
|
60758
|
+
}
|
|
60759
|
+
console.info(`โ
Messaggio inviato - Modalitร : ${mode}, Tipo: ${messageType}, Display: ${displayType}`);
|
|
60760
|
+
// Reset form
|
|
60761
|
+
setMessage('');
|
|
60762
|
+
setMessageType('Informazioni');
|
|
60763
|
+
setDisplayType('Modal');
|
|
60764
|
+
setSelectedUserIds([]);
|
|
60765
|
+
// Callback
|
|
60766
|
+
onMessageSent === null || onMessageSent === void 0 ? void 0 : onMessageSent();
|
|
60767
|
+
onClose();
|
|
60768
|
+
} catch (err) {
|
|
60769
|
+
console.error('โ Errore invio messaggio:', err);
|
|
60770
|
+
setError((err === null || err === void 0 ? void 0 : err.message) || 'Errore durante l\'invio del messaggio');
|
|
60771
|
+
} finally {
|
|
60772
|
+
setIsSending(false);
|
|
60773
|
+
}
|
|
60774
|
+
});
|
|
60775
|
+
const getTitle = () => {
|
|
60776
|
+
switch (mode) {
|
|
60777
|
+
case 'broadcast':
|
|
60778
|
+
return 'Invia messaggio a tutti gli utenti';
|
|
60779
|
+
case 'user':
|
|
60780
|
+
return `Invia messaggio a ${targetName || 'utente'}`;
|
|
60781
|
+
case 'session':
|
|
60782
|
+
return 'Invia messaggio alla sessione';
|
|
60783
|
+
case 'multiple-users':
|
|
60784
|
+
return 'Invia messaggio a utenti specifici';
|
|
60785
|
+
default:
|
|
60786
|
+
return 'Invia messaggio';
|
|
60787
|
+
}
|
|
60788
|
+
};
|
|
60789
|
+
const getDescription = () => {
|
|
60790
|
+
switch (mode) {
|
|
60791
|
+
case 'broadcast':
|
|
60792
|
+
return 'Questo messaggio verrร inviato a tutti gli utenti connessi all\'applicazione';
|
|
60793
|
+
case 'user':
|
|
60794
|
+
return `Questo messaggio verrร inviato a tutte le sessioni attive di ${targetName || 'questo utente'}`;
|
|
60795
|
+
case 'session':
|
|
60796
|
+
return 'Questo messaggio verrร inviato solo a questa specifica sessione';
|
|
60797
|
+
case 'multiple-users':
|
|
60798
|
+
return `Seleziona gli utenti a cui vuoi inviare il messaggio${selectedUserIds.length > 0 ? ` (${selectedUserIds.length} selezionati)` : ''}`;
|
|
60799
|
+
default:
|
|
60800
|
+
return '';
|
|
60801
|
+
}
|
|
60802
|
+
};
|
|
60803
|
+
return jsx(Modal, {
|
|
60804
|
+
opened: opened,
|
|
60805
|
+
onClose: onClose,
|
|
60806
|
+
centered: true,
|
|
60807
|
+
title: jsx(Text, {
|
|
60808
|
+
fw: 600,
|
|
60809
|
+
size: "lg",
|
|
60810
|
+
children: getTitle()
|
|
60811
|
+
}),
|
|
60812
|
+
size: "lg",
|
|
60813
|
+
padding: "md",
|
|
60814
|
+
children: jsxs(Stack, {
|
|
60815
|
+
gap: "md",
|
|
60816
|
+
children: [jsx(Alert, {
|
|
60817
|
+
icon: jsx(IconAlertTriangle, {
|
|
60818
|
+
size: 16
|
|
60819
|
+
}),
|
|
60820
|
+
color: "blue",
|
|
60821
|
+
variant: "light",
|
|
60822
|
+
children: getDescription()
|
|
60823
|
+
}), mode === 'multiple-users' && jsx(MultiSelect, {
|
|
60824
|
+
label: "Seleziona utenti",
|
|
60825
|
+
placeholder: "Cerca e seleziona gli utenti...",
|
|
60826
|
+
value: selectedUserIds,
|
|
60827
|
+
onChange: setSelectedUserIds,
|
|
60828
|
+
data: _availableUsers,
|
|
60829
|
+
searchable: true,
|
|
60830
|
+
clearable: true,
|
|
60831
|
+
required: true,
|
|
60832
|
+
description: `${selectedUserIds.length} utenti selezionati`,
|
|
60833
|
+
error: error && selectedUserIds.length === 0 ? 'Seleziona almeno un utente' : undefined
|
|
60834
|
+
}), jsx(Select, {
|
|
60835
|
+
label: "Tipo di messaggio",
|
|
60836
|
+
placeholder: "Seleziona il tipo",
|
|
60837
|
+
value: messageType,
|
|
60838
|
+
onChange: value => setMessageType(value),
|
|
60839
|
+
data: messageTypeOptions,
|
|
60840
|
+
required: true,
|
|
60841
|
+
leftSection: (_a = messageTypeConfig[messageType]) === null || _a === void 0 ? void 0 : _a.icon,
|
|
60842
|
+
renderOption: ({
|
|
60843
|
+
option
|
|
60844
|
+
}) => {
|
|
60845
|
+
const config = messageTypeConfig[option.value];
|
|
60846
|
+
return jsxs(Group, {
|
|
60847
|
+
gap: "sm",
|
|
60848
|
+
children: [jsx(Text, {
|
|
60849
|
+
c: config.color,
|
|
60850
|
+
children: config.icon
|
|
60851
|
+
}), jsx(Text, {
|
|
60852
|
+
children: config.label
|
|
60853
|
+
})]
|
|
60854
|
+
});
|
|
60855
|
+
}
|
|
60856
|
+
}), jsx(Select, {
|
|
60857
|
+
label: "Modalit\u00E0 di visualizzazione",
|
|
60858
|
+
placeholder: "Seleziona la modalit\u00E0",
|
|
60859
|
+
value: displayType,
|
|
60860
|
+
onChange: value => setDisplayType(value),
|
|
60861
|
+
data: displayTypeOptions,
|
|
60862
|
+
required: true,
|
|
60863
|
+
leftSection: (_b = displayTypeConfig[displayType]) === null || _b === void 0 ? void 0 : _b.icon,
|
|
60864
|
+
renderOption: ({
|
|
60865
|
+
option
|
|
60866
|
+
}) => {
|
|
60867
|
+
const config = displayTypeConfig[option.value];
|
|
60868
|
+
return jsxs(Group, {
|
|
60869
|
+
gap: "sm",
|
|
60870
|
+
children: [jsx(Text, {
|
|
60871
|
+
c: config.color,
|
|
60872
|
+
children: config.icon
|
|
60873
|
+
}), jsx(Text, {
|
|
60874
|
+
children: config.label
|
|
60875
|
+
})]
|
|
60876
|
+
});
|
|
60877
|
+
}
|
|
60878
|
+
}), jsx(Textarea, {
|
|
60879
|
+
label: "Messaggio",
|
|
60880
|
+
placeholder: "Scrivi il messaggio da inviare...",
|
|
60881
|
+
value: message,
|
|
60882
|
+
onChange: e => setMessage(e.currentTarget.value),
|
|
60883
|
+
minRows: 4,
|
|
60884
|
+
maxRows: 8,
|
|
60885
|
+
required: true,
|
|
60886
|
+
error: error
|
|
60887
|
+
}), jsxs(Group, {
|
|
60888
|
+
justify: "space-between",
|
|
60889
|
+
children: [jsxs(Text, {
|
|
60890
|
+
size: "xs",
|
|
60891
|
+
c: "dimmed",
|
|
60892
|
+
children: [mode === 'broadcast' && 'Il messaggio sarร visibile a tutti', mode === 'user' && targetId && `Target User ID: ${targetId}`, mode === 'session' && targetId && `Target Connection ID: ${targetId.substring(0, 8)}...`, mode === 'multiple-users' && selectedUserIds.length > 0 && `Invio a ${selectedUserIds.length} utenti`]
|
|
60893
|
+
}), jsxs(Group, {
|
|
60894
|
+
gap: "sm",
|
|
60895
|
+
children: [jsx(Button, {
|
|
60896
|
+
variant: "subtle",
|
|
60897
|
+
color: "gray",
|
|
60898
|
+
onClick: onClose,
|
|
60899
|
+
disabled: isSending,
|
|
60900
|
+
children: "Annulla"
|
|
60901
|
+
}), jsx(Button, {
|
|
60902
|
+
leftSection: jsx(IconSend, {
|
|
60903
|
+
size: 16
|
|
60904
|
+
}),
|
|
60905
|
+
onClick: handleSend,
|
|
60906
|
+
loading: isSending,
|
|
60907
|
+
color: mode === 'broadcast' ? 'orange' : mode === 'multiple-users' ? 'grape' : 'blue',
|
|
60908
|
+
disabled: mode === 'multiple-users' && selectedUserIds.length === 0,
|
|
60909
|
+
children: isSending && mode === 'multiple-users' ? `Invio... (${selectedUserIds.length})` : 'Invia messaggio'
|
|
60910
|
+
})]
|
|
60911
|
+
})]
|
|
60912
|
+
})]
|
|
60913
|
+
})
|
|
60914
|
+
});
|
|
60915
|
+
};
|
|
60916
|
+
|
|
60668
60917
|
function ConnectedUsers() {
|
|
60669
60918
|
const [connectedUsers, setConnectedUsers] = useState([]);
|
|
60670
60919
|
const [expandedUsers, setExpandedUsers] = useState(new Set());
|
|
60671
60920
|
const [searchQuery, setSearchQuery] = useState('');
|
|
60672
60921
|
const [currentConnectionId, setCurrentConnectionId] = useState('');
|
|
60673
60922
|
const [currentDeviceId, setCurrentDeviceId] = useState('');
|
|
60923
|
+
const [loading, setLoading] = useState(true);
|
|
60674
60924
|
// Screen sharing modal state
|
|
60675
60925
|
const [screenViewerOpened, setScreenViewerOpened] = useState(false);
|
|
60676
60926
|
const [selectedConnection, setSelectedConnection] = useState(null);
|
|
60927
|
+
// Send message modal state
|
|
60928
|
+
const [sendMessageOpened, setSendMessageOpened] = useState(false);
|
|
60929
|
+
const [messageMode, setMessageMode] = useState('broadcast');
|
|
60930
|
+
const [messageTarget, setMessageTarget] = useState(null);
|
|
60931
|
+
const [availableUsersForMultipleSelect, setAvailableUsersForMultipleSelect] = useState([]);
|
|
60677
60932
|
// Confirm modal state for force logout
|
|
60678
60933
|
const [showForceLogoutModal, setShowForceLogoutModal] = useState(false);
|
|
60679
60934
|
const [deviceToDisconnect, setDeviceToDisconnect] = useState(null);
|
|
60680
|
-
//
|
|
60681
|
-
const
|
|
60935
|
+
// Debounce timer per evitare troppi refresh consecutivi
|
|
60936
|
+
const [updateDebounceTimer, setUpdateDebounceTimer] = useState(null);
|
|
60682
60937
|
// Memoizza la funzione di caricamento per poterla usare nell'event handler
|
|
60683
|
-
const loadConnectedUsers = useCallback$1(() => __awaiter(this,
|
|
60938
|
+
const loadConnectedUsers = useCallback$1((...args_1) => __awaiter(this, [...args_1], void 0, function* (showLoader = true) {
|
|
60684
60939
|
try {
|
|
60940
|
+
if (showLoader) {
|
|
60941
|
+
setLoading(true);
|
|
60942
|
+
}
|
|
60685
60943
|
const users = yield FluxoClientSys.Instance.sessionHub.getConnectedUsers();
|
|
60686
60944
|
setConnectedUsers(users);
|
|
60687
60945
|
// Ottieni il connection ID corrente
|
|
@@ -60701,27 +60959,64 @@ function ConnectedUsers() {
|
|
|
60701
60959
|
message: 'Impossibile caricare gli utenti connessi',
|
|
60702
60960
|
color: 'red'
|
|
60703
60961
|
});
|
|
60962
|
+
} finally {
|
|
60963
|
+
if (showLoader) {
|
|
60964
|
+
setLoading(false);
|
|
60965
|
+
}
|
|
60704
60966
|
}
|
|
60705
60967
|
}), []);
|
|
60706
60968
|
// Carica gli utenti connessi all'avvio
|
|
60707
60969
|
useEffect(() => {
|
|
60708
60970
|
loadConnectedUsers();
|
|
60709
60971
|
}, [loadConnectedUsers]);
|
|
60972
|
+
// Aggiorna la lista di utenti disponibili per la selezione multipla
|
|
60973
|
+
useEffect(() => {
|
|
60974
|
+
// Raggruppa gli utenti per userId per evitare duplicati
|
|
60975
|
+
const grouped = connectedUsers.reduce((acc, user) => {
|
|
60976
|
+
const existing = acc.find(u => u.userId === user.userId);
|
|
60977
|
+
if (existing) {
|
|
60978
|
+
// Unisci le sessioni
|
|
60979
|
+
existing.sessions = [...existing.sessions, ...user.sessions];
|
|
60980
|
+
existing.count = existing.sessions.length;
|
|
60981
|
+
} else {
|
|
60982
|
+
acc.push(Object.assign({}, user));
|
|
60983
|
+
}
|
|
60984
|
+
return acc;
|
|
60985
|
+
}, []);
|
|
60986
|
+
const usersList = grouped.map(user => ({
|
|
60987
|
+
value: user.userId,
|
|
60988
|
+
label: `${user.userName} (${user.count} ${user.count === 1 ? 'sessione' : 'sessioni'})`
|
|
60989
|
+
}));
|
|
60990
|
+
setAvailableUsersForMultipleSelect(usersList);
|
|
60991
|
+
}, [connectedUsers]);
|
|
60710
60992
|
// Ascolta l'evento OnConnectedUsersChanged e ricarica automaticamente la lista
|
|
60711
60993
|
useEffect(() => {
|
|
60712
60994
|
const handleConnectedUsersChanged = () => {
|
|
60713
|
-
console.info('๐ฅ Connected users changed,
|
|
60714
|
-
|
|
60995
|
+
console.info('๐ฅ Connected users changed, scheduling reload...');
|
|
60996
|
+
// Cancella il timer precedente se esiste
|
|
60997
|
+
if (updateDebounceTimer) {
|
|
60998
|
+
clearTimeout(updateDebounceTimer);
|
|
60999
|
+
}
|
|
61000
|
+
// Imposta un nuovo timer con debounce di 500ms
|
|
61001
|
+
const timer = setTimeout(() => {
|
|
61002
|
+
console.info('๐ฅ Executing debounced reload...');
|
|
61003
|
+
loadConnectedUsers(false); // false = non mostrare il loader
|
|
61004
|
+
}, 500);
|
|
61005
|
+
setUpdateDebounceTimer(timer);
|
|
60715
61006
|
};
|
|
60716
61007
|
// Registra l'event handler
|
|
60717
|
-
sessionHub.on('OnConnectedUsersChanged', handleConnectedUsersChanged);
|
|
61008
|
+
FluxoClientSys.Instance.sessionHub.on('OnConnectedUsersChanged', handleConnectedUsersChanged);
|
|
60718
61009
|
console.info('๐ง Listening for OnConnectedUsersChanged events');
|
|
60719
61010
|
// Cleanup
|
|
60720
61011
|
return () => {
|
|
60721
|
-
sessionHub.off('OnConnectedUsersChanged', handleConnectedUsersChanged);
|
|
61012
|
+
FluxoClientSys.Instance.sessionHub.off('OnConnectedUsersChanged', handleConnectedUsersChanged);
|
|
60722
61013
|
console.info('๐งน Stopped listening for OnConnectedUsersChanged events');
|
|
61014
|
+
// Pulisci il timer se esiste
|
|
61015
|
+
if (updateDebounceTimer) {
|
|
61016
|
+
clearTimeout(updateDebounceTimer);
|
|
61017
|
+
}
|
|
60723
61018
|
};
|
|
60724
|
-
}, [
|
|
61019
|
+
}, [loadConnectedUsers, updateDebounceTimer]);
|
|
60725
61020
|
const toggleUserExpand = userId => {
|
|
60726
61021
|
const newExpanded = new Set(expandedUsers);
|
|
60727
61022
|
if (newExpanded.has(userId)) {
|
|
@@ -60778,7 +61073,7 @@ function ConnectedUsers() {
|
|
|
60778
61073
|
// Funzione per disconnettere forzatamente una sessione
|
|
60779
61074
|
const handleForceLogout = (deviceId, userName) => __awaiter(this, void 0, void 0, function* () {
|
|
60780
61075
|
try {
|
|
60781
|
-
yield sessionHub.invoke('ForceLogout', deviceId);
|
|
61076
|
+
yield FluxoClientSys.Instance.sessionHub.invoke('ForceLogout', deviceId);
|
|
60782
61077
|
showNotification({
|
|
60783
61078
|
title: 'Disconnessione avviata',
|
|
60784
61079
|
message: `Tutte le sessioni di ${userName} sul dispositivo sono state disconnesse`,
|
|
@@ -60793,92 +61088,182 @@ function ConnectedUsers() {
|
|
|
60793
61088
|
});
|
|
60794
61089
|
}
|
|
60795
61090
|
});
|
|
61091
|
+
// Funzioni per aprire la modale di invio messaggi
|
|
61092
|
+
const openBroadcastMessage = () => {
|
|
61093
|
+
setMessageMode('broadcast');
|
|
61094
|
+
setMessageTarget(null);
|
|
61095
|
+
setSendMessageOpened(true);
|
|
61096
|
+
};
|
|
61097
|
+
const openMultipleUsersMessage = () => {
|
|
61098
|
+
setMessageMode('multiple-users');
|
|
61099
|
+
setMessageTarget(null);
|
|
61100
|
+
setSendMessageOpened(true);
|
|
61101
|
+
};
|
|
61102
|
+
const openUserMessage = (userId, userName) => {
|
|
61103
|
+
setMessageMode('user');
|
|
61104
|
+
setMessageTarget({
|
|
61105
|
+
id: userId,
|
|
61106
|
+
name: userName
|
|
61107
|
+
});
|
|
61108
|
+
setSendMessageOpened(true);
|
|
61109
|
+
};
|
|
61110
|
+
const openSessionMessage = (connectionId, userName) => {
|
|
61111
|
+
setMessageMode('session');
|
|
61112
|
+
setMessageTarget({
|
|
61113
|
+
id: connectionId,
|
|
61114
|
+
name: userName
|
|
61115
|
+
});
|
|
61116
|
+
setSendMessageOpened(true);
|
|
61117
|
+
};
|
|
61118
|
+
const handleMessageSent = () => {
|
|
61119
|
+
showNotification({
|
|
61120
|
+
title: 'Messaggio inviato',
|
|
61121
|
+
message: 'Il messaggio รจ stato inviato con successo',
|
|
61122
|
+
color: 'green'
|
|
61123
|
+
});
|
|
61124
|
+
};
|
|
60796
61125
|
return jsxs(Stack, {
|
|
60797
61126
|
gap: "md",
|
|
60798
61127
|
children: [jsxs(Group, {
|
|
60799
61128
|
gap: "md",
|
|
61129
|
+
grow: true,
|
|
60800
61130
|
children: [jsx(Card, {
|
|
60801
61131
|
withBorder: true,
|
|
60802
|
-
padding: "
|
|
60803
|
-
|
|
60804
|
-
flex: 1
|
|
60805
|
-
},
|
|
60806
|
-
children: jsxs(Group, {
|
|
61132
|
+
padding: "lg",
|
|
61133
|
+
children: jsxs(Stack, {
|
|
60807
61134
|
gap: "xs",
|
|
60808
|
-
children: [
|
|
60809
|
-
|
|
60810
|
-
|
|
60811
|
-
|
|
60812
|
-
|
|
61135
|
+
children: [jsxs(Group, {
|
|
61136
|
+
gap: "sm",
|
|
61137
|
+
justify: "space-between",
|
|
61138
|
+
children: [jsx(IconUserCircle, {
|
|
61139
|
+
size: 28,
|
|
61140
|
+
style: {
|
|
61141
|
+
color: 'var(--mantine-color-blue-6)'
|
|
61142
|
+
}
|
|
61143
|
+
}), loading ? jsx(Loader, {
|
|
61144
|
+
size: "xs"
|
|
61145
|
+
}) : jsx(Badge, {
|
|
61146
|
+
color: "blue",
|
|
61147
|
+
variant: "light",
|
|
61148
|
+
size: "lg",
|
|
61149
|
+
children: groupedUsers.length
|
|
61150
|
+
})]
|
|
60813
61151
|
}), jsxs("div", {
|
|
60814
61152
|
children: [jsx(Text, {
|
|
60815
|
-
size: "
|
|
61153
|
+
size: "sm",
|
|
60816
61154
|
c: "dimmed",
|
|
61155
|
+
fw: 500,
|
|
60817
61156
|
children: "Utenti connessi"
|
|
60818
|
-
}), jsx(Text, {
|
|
60819
|
-
size: "
|
|
60820
|
-
|
|
60821
|
-
children:
|
|
61157
|
+
}), !loading && jsx(Text, {
|
|
61158
|
+
size: "xs",
|
|
61159
|
+
c: "dimmed",
|
|
61160
|
+
children: "Utenti unici attivi"
|
|
60822
61161
|
})]
|
|
60823
61162
|
})]
|
|
60824
61163
|
})
|
|
60825
61164
|
}), jsx(Card, {
|
|
60826
61165
|
withBorder: true,
|
|
60827
|
-
padding: "
|
|
60828
|
-
|
|
60829
|
-
flex: 1
|
|
60830
|
-
},
|
|
60831
|
-
children: jsxs(Group, {
|
|
61166
|
+
padding: "lg",
|
|
61167
|
+
children: jsxs(Stack, {
|
|
60832
61168
|
gap: "xs",
|
|
60833
|
-
children: [
|
|
60834
|
-
|
|
60835
|
-
|
|
60836
|
-
|
|
60837
|
-
|
|
61169
|
+
children: [jsxs(Group, {
|
|
61170
|
+
gap: "sm",
|
|
61171
|
+
justify: "space-between",
|
|
61172
|
+
children: [jsx(IconPlugConnected, {
|
|
61173
|
+
size: 28,
|
|
61174
|
+
style: {
|
|
61175
|
+
color: 'var(--mantine-color-teal-6)'
|
|
61176
|
+
}
|
|
61177
|
+
}), loading ? jsx(Loader, {
|
|
61178
|
+
size: "xs"
|
|
61179
|
+
}) : jsx(Badge, {
|
|
61180
|
+
color: "teal",
|
|
61181
|
+
variant: "light",
|
|
61182
|
+
size: "lg",
|
|
61183
|
+
children: getTotalSessions()
|
|
61184
|
+
})]
|
|
60838
61185
|
}), jsxs("div", {
|
|
60839
61186
|
children: [jsx(Text, {
|
|
60840
|
-
size: "
|
|
61187
|
+
size: "sm",
|
|
60841
61188
|
c: "dimmed",
|
|
61189
|
+
fw: 500,
|
|
60842
61190
|
children: "Sessioni totali"
|
|
60843
|
-
}), jsx(Text, {
|
|
60844
|
-
size: "
|
|
60845
|
-
|
|
60846
|
-
children:
|
|
61191
|
+
}), !loading && jsx(Text, {
|
|
61192
|
+
size: "xs",
|
|
61193
|
+
c: "dimmed",
|
|
61194
|
+
children: "Connessioni WebSocket attive"
|
|
60847
61195
|
})]
|
|
60848
61196
|
})]
|
|
60849
61197
|
})
|
|
60850
61198
|
}), jsx(Card, {
|
|
60851
61199
|
withBorder: true,
|
|
60852
|
-
padding: "
|
|
60853
|
-
|
|
60854
|
-
flex: 1
|
|
60855
|
-
},
|
|
60856
|
-
children: jsxs(Group, {
|
|
61200
|
+
padding: "lg",
|
|
61201
|
+
children: jsxs(Stack, {
|
|
60857
61202
|
gap: "xs",
|
|
60858
|
-
children: [
|
|
60859
|
-
|
|
60860
|
-
|
|
60861
|
-
|
|
60862
|
-
|
|
60863
|
-
|
|
60864
|
-
|
|
60865
|
-
|
|
60866
|
-
|
|
60867
|
-
|
|
60868
|
-
})
|
|
60869
|
-
|
|
60870
|
-
|
|
61203
|
+
children: [jsxs(Group, {
|
|
61204
|
+
gap: "sm",
|
|
61205
|
+
justify: "space-between",
|
|
61206
|
+
children: [jsx(IconDeviceLaptop, {
|
|
61207
|
+
size: 28,
|
|
61208
|
+
style: {
|
|
61209
|
+
color: 'var(--mantine-color-indigo-6)'
|
|
61210
|
+
}
|
|
61211
|
+
}), loading ? jsx(Loader, {
|
|
61212
|
+
size: "xs"
|
|
61213
|
+
}) : jsx(Badge, {
|
|
61214
|
+
color: "indigo",
|
|
61215
|
+
variant: "light",
|
|
61216
|
+
size: "lg",
|
|
60871
61217
|
children: groupedUsers.reduce((acc, user) => {
|
|
60872
61218
|
const devices = new Set(user.sessions.map(s => s.deviceId || 'unknown'));
|
|
60873
61219
|
return acc + devices.size;
|
|
60874
61220
|
}, 0)
|
|
60875
61221
|
})]
|
|
61222
|
+
}), jsxs("div", {
|
|
61223
|
+
children: [jsx(Text, {
|
|
61224
|
+
size: "sm",
|
|
61225
|
+
c: "dimmed",
|
|
61226
|
+
fw: 500,
|
|
61227
|
+
children: "Dispositivi totali"
|
|
61228
|
+
}), !loading && jsx(Text, {
|
|
61229
|
+
size: "xs",
|
|
61230
|
+
c: "dimmed",
|
|
61231
|
+
children: "Dispositivi unici registrati"
|
|
61232
|
+
})]
|
|
60876
61233
|
})]
|
|
60877
61234
|
})
|
|
60878
61235
|
})]
|
|
60879
61236
|
}), jsx(DataCard, {
|
|
60880
61237
|
title: "Utenti connessi",
|
|
60881
61238
|
padded: false,
|
|
61239
|
+
elements: [jsx(Tooltip, {
|
|
61240
|
+
label: "Invia messaggio a tutti gli utenti connessi",
|
|
61241
|
+
children: jsx(Button, {
|
|
61242
|
+
leftSection: jsx(IconBroadcast, {
|
|
61243
|
+
size: 16
|
|
61244
|
+
}),
|
|
61245
|
+
variant: "light",
|
|
61246
|
+
color: "orange",
|
|
61247
|
+
size: "xs",
|
|
61248
|
+
onClick: openBroadcastMessage,
|
|
61249
|
+
children: "Messaggio Broadcast"
|
|
61250
|
+
})
|
|
61251
|
+
}, "broadcast-btn"), jsx(Space, {
|
|
61252
|
+
w: 16
|
|
61253
|
+
}), jsx(Tooltip, {
|
|
61254
|
+
label: "Invia messaggio a utenti specifici selezionati",
|
|
61255
|
+
children: jsx(Button, {
|
|
61256
|
+
leftSection: jsx(IconUsersGroup, {
|
|
61257
|
+
size: 16
|
|
61258
|
+
}),
|
|
61259
|
+
variant: "light",
|
|
61260
|
+
color: "grape",
|
|
61261
|
+
size: "xs",
|
|
61262
|
+
onClick: openMultipleUsersMessage,
|
|
61263
|
+
disabled: groupedUsers.length === 0,
|
|
61264
|
+
children: "Messaggio a Utenti Multipli"
|
|
61265
|
+
})
|
|
61266
|
+
}, "multiple-users-btn")],
|
|
60882
61267
|
children: jsxs(Stack, {
|
|
60883
61268
|
gap: 0,
|
|
60884
61269
|
children: [jsx(Box, {
|
|
@@ -60902,14 +61287,29 @@ function ConnectedUsers() {
|
|
|
60902
61287
|
value: searchQuery,
|
|
60903
61288
|
onChange: e => setSearchQuery(e.currentTarget.value)
|
|
60904
61289
|
})
|
|
60905
|
-
}),
|
|
61290
|
+
}), loading ? jsx(Box, {
|
|
61291
|
+
p: 60,
|
|
61292
|
+
children: jsx(Center, {
|
|
61293
|
+
children: jsxs(Stack, {
|
|
61294
|
+
gap: "md",
|
|
61295
|
+
align: "center",
|
|
61296
|
+
children: [jsx(Loader, {
|
|
61297
|
+
size: "lg"
|
|
61298
|
+
}), jsx(Text, {
|
|
61299
|
+
size: "sm",
|
|
61300
|
+
c: "dimmed",
|
|
61301
|
+
children: "Caricamento utenti connessi..."
|
|
61302
|
+
})]
|
|
61303
|
+
})
|
|
61304
|
+
})
|
|
61305
|
+
}) : filteredUsers.length === 0 ? jsx(Box, {
|
|
60906
61306
|
p: 40,
|
|
60907
61307
|
children: jsx(NoData, {
|
|
60908
61308
|
icon: jsx(IconUsers, {
|
|
60909
61309
|
size: 48
|
|
60910
61310
|
}),
|
|
60911
61311
|
iconSize: 48,
|
|
60912
|
-
message: searchQuery ? "Nessun risultato" : "Nessun utente connesso"
|
|
61312
|
+
message: searchQuery ? "Nessun risultato trovato" : "Nessun utente connesso"
|
|
60913
61313
|
})
|
|
60914
61314
|
}) : jsx(Table.ScrollContainer, {
|
|
60915
61315
|
minWidth: 800,
|
|
@@ -60938,6 +61338,12 @@ function ConnectedUsers() {
|
|
|
60938
61338
|
textAlign: 'center'
|
|
60939
61339
|
},
|
|
60940
61340
|
children: "Sessioni"
|
|
61341
|
+
}), jsx(Table.Th, {
|
|
61342
|
+
w: 100,
|
|
61343
|
+
style: {
|
|
61344
|
+
textAlign: 'center'
|
|
61345
|
+
},
|
|
61346
|
+
children: "Azioni"
|
|
60941
61347
|
})]
|
|
60942
61348
|
})
|
|
60943
61349
|
}), jsx(Table.Tbody, {
|
|
@@ -60946,7 +61352,8 @@ function ConnectedUsers() {
|
|
|
60946
61352
|
return jsxs(Fragment, {
|
|
60947
61353
|
children: [jsxs(Table.Tr, {
|
|
60948
61354
|
style: {
|
|
60949
|
-
cursor: 'pointer'
|
|
61355
|
+
cursor: 'pointer',
|
|
61356
|
+
transition: 'background-color 0.15s ease'
|
|
60950
61357
|
},
|
|
60951
61358
|
onClick: () => toggleUserExpand(user.userId),
|
|
60952
61359
|
children: [jsx(Table.Td, {
|
|
@@ -60999,46 +61406,64 @@ function ConnectedUsers() {
|
|
|
60999
61406
|
children: [user.count, " ", user.count === 1 ? 'sessione' : 'sessioni']
|
|
61000
61407
|
})
|
|
61001
61408
|
})
|
|
61409
|
+
}), jsx(Table.Td, {
|
|
61410
|
+
children: jsx(Center, {
|
|
61411
|
+
children: jsx(Tooltip, {
|
|
61412
|
+
label: "Invia messaggio a tutte le sessioni dell'utente",
|
|
61413
|
+
children: jsx(ActionIcon, {
|
|
61414
|
+
size: "sm",
|
|
61415
|
+
variant: "light",
|
|
61416
|
+
color: "blue",
|
|
61417
|
+
onClick: e => {
|
|
61418
|
+
e.stopPropagation();
|
|
61419
|
+
openUserMessage(user.userId, user.userName);
|
|
61420
|
+
},
|
|
61421
|
+
children: jsx(IconSend, {
|
|
61422
|
+
size: 16
|
|
61423
|
+
})
|
|
61424
|
+
})
|
|
61425
|
+
})
|
|
61426
|
+
})
|
|
61002
61427
|
})]
|
|
61003
61428
|
}, user.userId), expandedUsers.has(user.userId) && jsx(Table.Tr, {
|
|
61004
61429
|
children: jsx(Table.Td, {
|
|
61005
|
-
colSpan:
|
|
61430
|
+
colSpan: 6,
|
|
61006
61431
|
style: {
|
|
61007
61432
|
backgroundColor: 'var(--mantine-color-gray-0)',
|
|
61008
61433
|
padding: 0
|
|
61009
61434
|
},
|
|
61010
61435
|
children: jsx(Box, {
|
|
61011
|
-
p: "
|
|
61436
|
+
p: "lg",
|
|
61012
61437
|
children: jsx(Stack, {
|
|
61013
|
-
gap: "
|
|
61014
|
-
children: Array.from(groupSessionsByDevice(user.sessions)).map(([deviceId, deviceSessions]) => {
|
|
61438
|
+
gap: "lg",
|
|
61439
|
+
children: Array.from(groupSessionsByDevice(user.sessions)).map(([deviceId, deviceSessions], index, array) => {
|
|
61015
61440
|
const isCurrentDevice = deviceId === currentDeviceId;
|
|
61016
61441
|
return jsxs(Box, {
|
|
61017
61442
|
children: [jsxs(Group, {
|
|
61018
|
-
gap:
|
|
61019
|
-
mb:
|
|
61443
|
+
gap: 8,
|
|
61444
|
+
mb: 12,
|
|
61020
61445
|
justify: "space-between",
|
|
61021
61446
|
children: [jsxs(Group, {
|
|
61022
|
-
gap:
|
|
61447
|
+
gap: 8,
|
|
61023
61448
|
children: [jsx(IconDeviceLaptop, {
|
|
61024
|
-
size:
|
|
61449
|
+
size: 16,
|
|
61025
61450
|
style: {
|
|
61026
61451
|
color: 'var(--mantine-color-indigo-6)'
|
|
61027
61452
|
}
|
|
61028
61453
|
}), jsxs(Text, {
|
|
61029
|
-
size: "
|
|
61454
|
+
size: "sm",
|
|
61030
61455
|
fw: 600,
|
|
61031
61456
|
c: "dimmed",
|
|
61032
61457
|
children: ["Dispositivo: ", getDeviceIdShort(deviceId)]
|
|
61033
61458
|
}), jsxs(Badge, {
|
|
61034
|
-
size: "
|
|
61459
|
+
size: "sm",
|
|
61035
61460
|
color: "indigo",
|
|
61036
61461
|
variant: "dot",
|
|
61037
61462
|
children: [deviceSessions.length, " ", deviceSessions.length === 1 ? 'sessione' : 'sessioni']
|
|
61038
61463
|
}), isCurrentDevice && jsx(Badge, {
|
|
61039
61464
|
color: "blue",
|
|
61040
61465
|
variant: "filled",
|
|
61041
|
-
size: "
|
|
61466
|
+
size: "sm",
|
|
61042
61467
|
children: "Il tuo dispositivo"
|
|
61043
61468
|
})]
|
|
61044
61469
|
}), !isCurrentDevice && jsx(Tooltip, {
|
|
@@ -61062,45 +61487,57 @@ function ConnectedUsers() {
|
|
|
61062
61487
|
})
|
|
61063
61488
|
})]
|
|
61064
61489
|
}), jsxs(Table, {
|
|
61065
|
-
withTableBorder: true,
|
|
61066
61490
|
withColumnBorders: true,
|
|
61491
|
+
style: {
|
|
61492
|
+
tableLayout: 'fixed',
|
|
61493
|
+
width: '100%'
|
|
61494
|
+
},
|
|
61067
61495
|
children: [jsx(Table.Thead, {
|
|
61068
61496
|
children: jsxs(Table.Tr, {
|
|
61069
61497
|
children: [jsx(Table.Th, {
|
|
61070
|
-
|
|
61498
|
+
style: {
|
|
61499
|
+
width: '40px'
|
|
61500
|
+
},
|
|
61071
61501
|
children: jsx(Center, {
|
|
61072
|
-
children: jsx(
|
|
61502
|
+
children: jsx(IconPlugConnected, {
|
|
61073
61503
|
size: 12
|
|
61074
61504
|
})
|
|
61075
61505
|
})
|
|
61076
61506
|
}), jsx(Table.Th, {
|
|
61077
|
-
|
|
61078
|
-
|
|
61079
|
-
|
|
61507
|
+
style: {
|
|
61508
|
+
width: '100px'
|
|
61509
|
+
},
|
|
61510
|
+
children: "ID"
|
|
61080
61511
|
}), jsx(Table.Th, {
|
|
61081
|
-
|
|
61512
|
+
style: {
|
|
61513
|
+
width: '110px'
|
|
61514
|
+
},
|
|
61082
61515
|
children: "Indirizzo IP"
|
|
61083
61516
|
}), jsx(Table.Th, {
|
|
61084
|
-
|
|
61517
|
+
style: {
|
|
61518
|
+
width: '110px'
|
|
61519
|
+
},
|
|
61085
61520
|
children: "Browser"
|
|
61086
61521
|
}), jsx(Table.Th, {
|
|
61087
|
-
|
|
61522
|
+
style: {
|
|
61523
|
+
width: '150px'
|
|
61524
|
+
},
|
|
61088
61525
|
children: "Pagina Corrente"
|
|
61089
61526
|
}), jsx(Table.Th, {
|
|
61090
|
-
w: 100,
|
|
61091
61527
|
style: {
|
|
61528
|
+
width: '60px',
|
|
61092
61529
|
textAlign: 'center'
|
|
61093
61530
|
},
|
|
61094
61531
|
children: "Attivit\u00E0"
|
|
61095
61532
|
}), jsx(Table.Th, {
|
|
61096
|
-
w: 100,
|
|
61097
61533
|
style: {
|
|
61534
|
+
width: '60px',
|
|
61098
61535
|
textAlign: 'center'
|
|
61099
61536
|
},
|
|
61100
61537
|
children: "Stato"
|
|
61101
61538
|
}), jsx(Table.Th, {
|
|
61102
|
-
w: 64,
|
|
61103
61539
|
style: {
|
|
61540
|
+
width: '80px',
|
|
61104
61541
|
textAlign: 'center'
|
|
61105
61542
|
},
|
|
61106
61543
|
children: "Azioni"
|
|
@@ -61220,41 +61657,60 @@ function ConnectedUsers() {
|
|
|
61220
61657
|
})
|
|
61221
61658
|
}), jsx(Table.Td, {
|
|
61222
61659
|
children: jsx(Center, {
|
|
61223
|
-
children:
|
|
61224
|
-
|
|
61225
|
-
children: jsx(
|
|
61226
|
-
|
|
61227
|
-
|
|
61228
|
-
|
|
61229
|
-
|
|
61230
|
-
|
|
61231
|
-
|
|
61660
|
+
children: jsxs(Group, {
|
|
61661
|
+
gap: 8,
|
|
61662
|
+
children: [isCurrentConnection ? jsx(Tooltip, {
|
|
61663
|
+
label: "Non puoi visualizzare il tuo schermo",
|
|
61664
|
+
children: jsx(ActionIcon, {
|
|
61665
|
+
size: "xs",
|
|
61666
|
+
variant: "light",
|
|
61667
|
+
color: "gray",
|
|
61668
|
+
disabled: true,
|
|
61669
|
+
children: jsx(IconEye, {
|
|
61670
|
+
size: 14
|
|
61671
|
+
})
|
|
61232
61672
|
})
|
|
61233
|
-
})
|
|
61234
|
-
|
|
61235
|
-
|
|
61236
|
-
|
|
61237
|
-
|
|
61238
|
-
|
|
61239
|
-
|
|
61240
|
-
|
|
61241
|
-
|
|
61242
|
-
|
|
61243
|
-
|
|
61244
|
-
|
|
61245
|
-
|
|
61246
|
-
|
|
61247
|
-
|
|
61248
|
-
|
|
61249
|
-
|
|
61673
|
+
}) : jsx(Tooltip, {
|
|
61674
|
+
label: "Visualizza schermo",
|
|
61675
|
+
children: jsx(ActionIcon, {
|
|
61676
|
+
size: "xs",
|
|
61677
|
+
variant: "light",
|
|
61678
|
+
color: "gray",
|
|
61679
|
+
onClick: e => {
|
|
61680
|
+
e.stopPropagation();
|
|
61681
|
+
setSelectedConnection({
|
|
61682
|
+
connectionId: session.wsConnectionId,
|
|
61683
|
+
userName: session.userName
|
|
61684
|
+
});
|
|
61685
|
+
setScreenViewerOpened(true);
|
|
61686
|
+
},
|
|
61687
|
+
children: jsx(IconEye, {
|
|
61688
|
+
size: 14
|
|
61689
|
+
})
|
|
61250
61690
|
})
|
|
61251
|
-
})
|
|
61691
|
+
}), jsx(Tooltip, {
|
|
61692
|
+
label: "Invia messaggio a questa sessione",
|
|
61693
|
+
children: jsx(ActionIcon, {
|
|
61694
|
+
size: "xs",
|
|
61695
|
+
variant: "light",
|
|
61696
|
+
color: "blue",
|
|
61697
|
+
onClick: e => {
|
|
61698
|
+
e.stopPropagation();
|
|
61699
|
+
openSessionMessage(session.wsConnectionId, session.userName);
|
|
61700
|
+
},
|
|
61701
|
+
children: jsx(IconSend, {
|
|
61702
|
+
size: 14
|
|
61703
|
+
})
|
|
61704
|
+
})
|
|
61705
|
+
})]
|
|
61252
61706
|
})
|
|
61253
61707
|
})
|
|
61254
61708
|
})]
|
|
61255
61709
|
}, idx);
|
|
61256
61710
|
})
|
|
61257
61711
|
})]
|
|
61712
|
+
}), index < array.length - 1 && jsx(Divider, {
|
|
61713
|
+
my: "md"
|
|
61258
61714
|
})]
|
|
61259
61715
|
}, deviceId);
|
|
61260
61716
|
})
|
|
@@ -61274,6 +61730,15 @@ function ConnectedUsers() {
|
|
|
61274
61730
|
connectionId: selectedConnection === null || selectedConnection === void 0 ? void 0 : selectedConnection.connectionId,
|
|
61275
61731
|
userName: selectedConnection === null || selectedConnection === void 0 ? void 0 : selectedConnection.userName,
|
|
61276
61732
|
sessionHub: FluxoClientSys.Instance.sessionHub
|
|
61733
|
+
}), jsx(SendMessageModal, {
|
|
61734
|
+
opened: sendMessageOpened,
|
|
61735
|
+
onClose: () => setSendMessageOpened(false),
|
|
61736
|
+
mode: messageMode,
|
|
61737
|
+
targetId: messageTarget === null || messageTarget === void 0 ? void 0 : messageTarget.id,
|
|
61738
|
+
targetName: messageTarget === null || messageTarget === void 0 ? void 0 : messageTarget.name,
|
|
61739
|
+
availableUsers: availableUsersForMultipleSelect,
|
|
61740
|
+
sessionHub: FluxoClientSys.Instance.sessionHub,
|
|
61741
|
+
onMessageSent: handleMessageSent
|
|
61277
61742
|
}), jsx(ConfirmModal, {
|
|
61278
61743
|
open: showForceLogoutModal,
|
|
61279
61744
|
title: "Conferma disconnessione",
|
|
@@ -64594,7 +65059,7 @@ function McpServerManagement() {
|
|
|
64594
65059
|
function Settings(props) {
|
|
64595
65060
|
const [currentTab, setCurrentTab] = useState('ui');
|
|
64596
65061
|
const [apiRestDoc, setApiRestDoc] = useState();
|
|
64597
|
-
const navigate =
|
|
65062
|
+
const navigate = useFlxNavigate();
|
|
64598
65063
|
const {
|
|
64599
65064
|
hasAdminAccess,
|
|
64600
65065
|
hasDeveloperAccess,
|
|
@@ -64606,6 +65071,9 @@ function Settings(props) {
|
|
|
64606
65071
|
} = useAppSelector(state => state.layout.systemSettings);
|
|
64607
65072
|
const [showBiEditorModal, setShowBiEditorModal] = useState(false);
|
|
64608
65073
|
const isClosingRef = useRef(false);
|
|
65074
|
+
const {
|
|
65075
|
+
headerHeight
|
|
65076
|
+
} = useShellLayout();
|
|
64609
65077
|
//useDocumentTitle('Amministrazione');
|
|
64610
65078
|
// Intercetta il refresh e il cambio tab del browser
|
|
64611
65079
|
useEffect(() => {
|
|
@@ -64829,7 +65297,7 @@ function Settings(props) {
|
|
|
64829
65297
|
items: [{
|
|
64830
65298
|
key: 'bi',
|
|
64831
65299
|
title: jsx(Text, {
|
|
64832
|
-
children: "BI
|
|
65300
|
+
children: "BI Designer"
|
|
64833
65301
|
}),
|
|
64834
65302
|
onClick: () => {
|
|
64835
65303
|
//window.location.hash = 'bi';
|
|
@@ -65017,7 +65485,11 @@ function Settings(props) {
|
|
|
65017
65485
|
children: "KOREBI"
|
|
65018
65486
|
})]
|
|
65019
65487
|
}),
|
|
65020
|
-
onClick: () => navigate('/korebi-ide'
|
|
65488
|
+
onClick: () => navigate('/korebi-ide', {
|
|
65489
|
+
state: {
|
|
65490
|
+
title: "Korebi IDE"
|
|
65491
|
+
}
|
|
65492
|
+
}),
|
|
65021
65493
|
disabled: false,
|
|
65022
65494
|
icon: jsx(IconCode, {
|
|
65023
65495
|
size: 18
|
|
@@ -65092,32 +65564,27 @@ function Settings(props) {
|
|
|
65092
65564
|
children: jsx(EmailTemplate, {})
|
|
65093
65565
|
}) : jsx(ErrorPage$1, {});
|
|
65094
65566
|
case 'apidoc':
|
|
65095
|
-
return hasAdminAccess || hasDeveloperAccess ? jsx(
|
|
65096
|
-
|
|
65097
|
-
|
|
65098
|
-
|
|
65099
|
-
|
|
65100
|
-
|
|
65101
|
-
|
|
65102
|
-
|
|
65103
|
-
|
|
65104
|
-
|
|
65105
|
-
|
|
65106
|
-
http: {
|
|
65107
|
-
basic: {
|
|
65108
|
-
username: "",
|
|
65109
|
-
password: ""
|
|
65110
|
-
},
|
|
65111
|
-
bearer: {
|
|
65112
|
-
token: localStorage.getItem('access-token')
|
|
65113
|
-
}
|
|
65567
|
+
return hasAdminAccess || hasDeveloperAccess ? jsx(ApiReferenceReact, {
|
|
65568
|
+
configuration: {
|
|
65569
|
+
showDeveloperTools: 'never',
|
|
65570
|
+
darkMode: false,
|
|
65571
|
+
customCss: `.darklight-reference {display: none !important} aside {height: calc(100vh - 178px) !important; top: ${headerHeight + 40}px !important; } .open-api-client-button {display: none !important}`,
|
|
65572
|
+
hideDarkModeToggle: true,
|
|
65573
|
+
forceDarkModeState: 'light',
|
|
65574
|
+
authentication: {
|
|
65575
|
+
http: {
|
|
65576
|
+
bearer: {
|
|
65577
|
+
token: localStorage.getItem('access-token')
|
|
65114
65578
|
}
|
|
65115
|
-
},
|
|
65116
|
-
spec: {
|
|
65117
|
-
url: FluxoClientSys.Instance.clientConfig.fluxoInstanceUrl.replace('/api', '') + '/openapi/v1.json'
|
|
65118
65579
|
}
|
|
65119
|
-
}
|
|
65120
|
-
|
|
65580
|
+
},
|
|
65581
|
+
sources: [{
|
|
65582
|
+
url: FluxoClientSys.Instance.clientConfig.fluxoInstanceUrl.replace('/api', '') + '/openapi/v1.json',
|
|
65583
|
+
agent: {
|
|
65584
|
+
disabled: true
|
|
65585
|
+
}
|
|
65586
|
+
}]
|
|
65587
|
+
}
|
|
65121
65588
|
}) : jsx(ErrorPage$1, {});
|
|
65122
65589
|
/*return apiRestDoc ? (
|
|
65123
65590
|
<DataCard title={'Documentazione API REST'}>
|
|
@@ -65224,42 +65691,47 @@ function Settings(props) {
|
|
|
65224
65691
|
});
|
|
65225
65692
|
}
|
|
65226
65693
|
|
|
65227
|
-
|
|
65228
|
-
|
|
65229
|
-
|
|
65230
|
-
|
|
65231
|
-
|
|
65232
|
-
|
|
65233
|
-
|
|
65234
|
-
|
|
65235
|
-
|
|
65236
|
-
|
|
65237
|
-
|
|
65238
|
-
|
|
65239
|
-
|
|
65240
|
-
|
|
65241
|
-
|
|
65242
|
-
|
|
65243
|
-
|
|
65244
|
-
|
|
65245
|
-
|
|
65246
|
-
|
|
65247
|
-
|
|
65248
|
-
|
|
65249
|
-
|
|
65250
|
-
children:
|
|
65251
|
-
})
|
|
65252
|
-
|
|
65253
|
-
|
|
65254
|
-
|
|
65255
|
-
|
|
65256
|
-
|
|
65694
|
+
const KIde = /*#__PURE__*/lazy(() => import('@fluxo-dev/shell-korebi').then(({
|
|
65695
|
+
KorebiIde
|
|
65696
|
+
}) => ({
|
|
65697
|
+
default: KorebiIde
|
|
65698
|
+
})));
|
|
65699
|
+
/**
|
|
65700
|
+
* Genera le routes principali come RouteObject[] invece di componente wrapper
|
|
65701
|
+
* Questo evita il remount dei componenti quando si switcha tra sessioni
|
|
65702
|
+
*/
|
|
65703
|
+
function generateMainRoutes(props, hasAdminAccess, hasDeveloperAccess, hasDataAnalystAccess) {
|
|
65704
|
+
const routes = [];
|
|
65705
|
+
if (props.isAdminFrontend && (hasDeveloperAccess || hasDataAnalystAccess || hasAdminAccess)) {
|
|
65706
|
+
routes.push({
|
|
65707
|
+
path: 'settings',
|
|
65708
|
+
element: jsx(Settings, {
|
|
65709
|
+
slots: props.fluxoShellProps.slots,
|
|
65710
|
+
pluginEndpoint: props.pluginEndpoint,
|
|
65711
|
+
frontends: props.frontends
|
|
65712
|
+
})
|
|
65713
|
+
}, {
|
|
65714
|
+
path: 'korebi-ide',
|
|
65715
|
+
element: jsx(Suspense, {
|
|
65716
|
+
fallback: jsx("div", {
|
|
65717
|
+
children: "Loading..."
|
|
65718
|
+
}),
|
|
65719
|
+
children: jsx(KIde, {})
|
|
65720
|
+
})
|
|
65721
|
+
}, {
|
|
65722
|
+
path: 'ravify/jobs-viewer',
|
|
65723
|
+
element: jsx(JobsViewer, {})
|
|
65724
|
+
});
|
|
65725
|
+
}
|
|
65726
|
+
if (props.fluxoShellProps.ui.security.showMyProfile) {
|
|
65727
|
+
routes.push({
|
|
65257
65728
|
path: 'me',
|
|
65258
65729
|
element: jsx(UserProfile, {
|
|
65259
65730
|
slots: props.fluxoShellProps.slots
|
|
65260
65731
|
})
|
|
65261
|
-
})
|
|
65262
|
-
}
|
|
65732
|
+
});
|
|
65733
|
+
}
|
|
65734
|
+
return routes;
|
|
65263
65735
|
}
|
|
65264
65736
|
|
|
65265
65737
|
function ForgotPassword(props) {
|
|
@@ -76907,6 +77379,519 @@ var dxReportingIt = {
|
|
|
76907
77379
|
"ASPxReportsStringId.ReportDesigner_FieldList_AddDataSource": "Aggiungi origine dati"
|
|
76908
77380
|
};
|
|
76909
77381
|
|
|
77382
|
+
/**
|
|
77383
|
+
* Hook to manage SessionHub WebSocket connection lifecycle
|
|
77384
|
+
* @param shouldConnect - When true, starts the connection. Use this to delay connection until FluxoClient is initialized
|
|
77385
|
+
*/
|
|
77386
|
+
const useSessionHub = (shouldConnect = true) => {
|
|
77387
|
+
const isConnecting = useRef(false);
|
|
77388
|
+
const hasStartedRef = useRef(false);
|
|
77389
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
77390
|
+
const hasBeenConnectedOnce = useRef(false); // Flag per tracciare se si รจ mai connesso
|
|
77391
|
+
// Funzione per avviare la connessione
|
|
77392
|
+
const startConnection = useCallback$1(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
77393
|
+
if (isConnecting.current || hasStartedRef.current) return;
|
|
77394
|
+
isConnecting.current = true;
|
|
77395
|
+
try {
|
|
77396
|
+
yield FluxoClientSys.Instance.sessionHub.start();
|
|
77397
|
+
console.info('โ
SessionHub connection started from useSessionHub hook');
|
|
77398
|
+
// Registra l'handler per ForceLogout subito dopo la connessione
|
|
77399
|
+
FluxoClientSys.Instance.sessionHub.on('ForceLogout', data => {
|
|
77400
|
+
console.warn('๐จ Force logout received from server:', data);
|
|
77401
|
+
FluxoClientSys.Instance.auth.logout();
|
|
77402
|
+
});
|
|
77403
|
+
console.info('๐ง ForceLogout handler registered');
|
|
77404
|
+
hasStartedRef.current = true;
|
|
77405
|
+
setIsConnected(true);
|
|
77406
|
+
hasBeenConnectedOnce.current = true; // Segna che ci siamo connessi almeno una volta
|
|
77407
|
+
} catch (error) {
|
|
77408
|
+
console.error('โ Failed to start SessionHub connection', error);
|
|
77409
|
+
setIsConnected(false);
|
|
77410
|
+
} finally {
|
|
77411
|
+
isConnecting.current = false;
|
|
77412
|
+
}
|
|
77413
|
+
}), []);
|
|
77414
|
+
// Funzione per fermare la connessione
|
|
77415
|
+
const stopConnection = useCallback$1(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
77416
|
+
if (!hasStartedRef.current) return;
|
|
77417
|
+
try {
|
|
77418
|
+
yield FluxoClientSys.Instance.sessionHub.stop();
|
|
77419
|
+
console.info('๐ SessionHub connection stopped');
|
|
77420
|
+
hasStartedRef.current = false;
|
|
77421
|
+
setIsConnected(false);
|
|
77422
|
+
} catch (error) {
|
|
77423
|
+
console.error('โ Failed to stop SessionHub connection', error);
|
|
77424
|
+
}
|
|
77425
|
+
}), []);
|
|
77426
|
+
useEffect(() => {
|
|
77427
|
+
// Start connection when shouldConnect becomes true
|
|
77428
|
+
if (shouldConnect && !hasStartedRef.current && !isConnecting.current) {
|
|
77429
|
+
startConnection();
|
|
77430
|
+
}
|
|
77431
|
+
// Stop connection when shouldConnect becomes false (e.g., user logout)
|
|
77432
|
+
if (!shouldConnect && hasStartedRef.current) {
|
|
77433
|
+
stopConnection();
|
|
77434
|
+
}
|
|
77435
|
+
// Cleanup on unmount
|
|
77436
|
+
return () => {
|
|
77437
|
+
if (hasStartedRef.current) {
|
|
77438
|
+
const cleanup = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
77439
|
+
try {
|
|
77440
|
+
yield FluxoClientSys.Instance.sessionHub.stop();
|
|
77441
|
+
console.info('๐ SessionHub connection stopped (component unmount)');
|
|
77442
|
+
hasStartedRef.current = false;
|
|
77443
|
+
} catch (error) {
|
|
77444
|
+
console.error('โ Failed to stop SessionHub on unmount', error);
|
|
77445
|
+
}
|
|
77446
|
+
});
|
|
77447
|
+
cleanup();
|
|
77448
|
+
}
|
|
77449
|
+
};
|
|
77450
|
+
}, [shouldConnect, startConnection, stopConnection]);
|
|
77451
|
+
// Monitora lo stato della connessione ogni 2 secondi
|
|
77452
|
+
useEffect(() => {
|
|
77453
|
+
const checkConnection = () => {
|
|
77454
|
+
const connected = FluxoClientSys.Instance.sessionHub.isConnected;
|
|
77455
|
+
setIsConnected(connected);
|
|
77456
|
+
// Se si connette, segna che ci siamo connessi almeno una volta
|
|
77457
|
+
if (connected) {
|
|
77458
|
+
hasBeenConnectedOnce.current = true;
|
|
77459
|
+
}
|
|
77460
|
+
};
|
|
77461
|
+
const interval = setInterval(checkConnection, 2000);
|
|
77462
|
+
checkConnection(); // Check subito
|
|
77463
|
+
return () => clearInterval(interval);
|
|
77464
|
+
}, []);
|
|
77465
|
+
// Cleanup finale: disconnetti quando il componente viene smontato
|
|
77466
|
+
useEffect(() => {
|
|
77467
|
+
return () => {
|
|
77468
|
+
if (hasStartedRef.current) {
|
|
77469
|
+
const cleanup = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
77470
|
+
try {
|
|
77471
|
+
yield FluxoClientSys.Instance.sessionHub.stop();
|
|
77472
|
+
console.info('SessionHub connection stopped (component unmount)');
|
|
77473
|
+
} catch (error) {
|
|
77474
|
+
console.error('Failed to stop SessionHub connection', error);
|
|
77475
|
+
}
|
|
77476
|
+
});
|
|
77477
|
+
cleanup();
|
|
77478
|
+
}
|
|
77479
|
+
};
|
|
77480
|
+
}, []);
|
|
77481
|
+
// Esponi metodi utili
|
|
77482
|
+
const on = useCallback$1((eventName, handler) => {
|
|
77483
|
+
FluxoClientSys.Instance.sessionHub.on(eventName, handler);
|
|
77484
|
+
}, []);
|
|
77485
|
+
const off = useCallback$1((eventName, handler) => {
|
|
77486
|
+
FluxoClientSys.Instance.sessionHub.off(eventName, handler);
|
|
77487
|
+
}, []);
|
|
77488
|
+
const invoke = useCallback$1((methodName, ...args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77489
|
+
return yield FluxoClientSys.Instance.sessionHub.invoke(methodName, ...args);
|
|
77490
|
+
}), []);
|
|
77491
|
+
const send = useCallback$1((methodName, ...args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77492
|
+
yield FluxoClientSys.Instance.sessionHub.send(methodName, ...args);
|
|
77493
|
+
}), []);
|
|
77494
|
+
const getState = useCallback$1(() => {
|
|
77495
|
+
return FluxoClientSys.Instance.sessionHub.state;
|
|
77496
|
+
}, []);
|
|
77497
|
+
const getConnectionId = useCallback$1(() => {
|
|
77498
|
+
return FluxoClientSys.Instance.sessionHub.connectionId;
|
|
77499
|
+
}, []);
|
|
77500
|
+
// ============================================================================
|
|
77501
|
+
// METODI MESSAGING REALTIME
|
|
77502
|
+
// ============================================================================
|
|
77503
|
+
/**
|
|
77504
|
+
* Invia un messaggio broadcast a tutte le sessioni connesse all'applicazione
|
|
77505
|
+
* @param messageType - Tipo del messaggio (es: "Critico", "Informazioni", "Avviso")
|
|
77506
|
+
* @param message - Contenuto testuale del messaggio
|
|
77507
|
+
* @throws HubException in caso di errori
|
|
77508
|
+
*/
|
|
77509
|
+
const sendBroadcastMessage = useCallback$1((messageType, message) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77510
|
+
try {
|
|
77511
|
+
yield FluxoClientSys.Instance.sessionHub.invoke('SendBroadcastMessage', messageType, message);
|
|
77512
|
+
console.info(`๐ข Broadcast message sent - Type: ${messageType}`);
|
|
77513
|
+
} catch (error) {
|
|
77514
|
+
console.error('โ Failed to send broadcast message', error);
|
|
77515
|
+
throw error;
|
|
77516
|
+
}
|
|
77517
|
+
}), []);
|
|
77518
|
+
/**
|
|
77519
|
+
* Invia un messaggio a una singola sessione specifica
|
|
77520
|
+
* @param targetConnectionId - ID della connessione WebSocket destinataria
|
|
77521
|
+
* @param messageType - Tipo del messaggio (es: "Critico", "Informazioni", "Avviso")
|
|
77522
|
+
* @param message - Contenuto testuale del messaggio
|
|
77523
|
+
* @throws HubException "Sessione non trovata" se il connectionId non esiste
|
|
77524
|
+
*/
|
|
77525
|
+
const sendMessageToSession = useCallback$1((targetConnectionId, messageType, message) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77526
|
+
try {
|
|
77527
|
+
yield FluxoClientSys.Instance.sessionHub.invoke('SendMessageToSession', targetConnectionId, messageType, message);
|
|
77528
|
+
console.info(`๐จ Message sent to session ${targetConnectionId} - Type: ${messageType}`);
|
|
77529
|
+
} catch (error) {
|
|
77530
|
+
console.error(`โ Failed to send message to session ${targetConnectionId}`, error);
|
|
77531
|
+
throw error;
|
|
77532
|
+
}
|
|
77533
|
+
}), []);
|
|
77534
|
+
/**
|
|
77535
|
+
* Invia un messaggio a tutte le sessioni di uno specifico utente
|
|
77536
|
+
* @param targetUserId - ID dell'utente destinatario
|
|
77537
|
+
* @param messageType - Tipo del messaggio (es: "Critico", "Informazioni", "Avviso")
|
|
77538
|
+
* @param message - Contenuto testuale del messaggio
|
|
77539
|
+
* @throws HubException "Nessuna sessione trovata per l'utente specificato"
|
|
77540
|
+
*/
|
|
77541
|
+
const sendMessageToUser = useCallback$1((targetUserId, messageType, message) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77542
|
+
try {
|
|
77543
|
+
yield FluxoClientSys.Instance.sessionHub.invoke('SendMessageToUser', targetUserId, messageType, message);
|
|
77544
|
+
console.info(`๐ค Message sent to user ${targetUserId} - Type: ${messageType}`);
|
|
77545
|
+
} catch (error) {
|
|
77546
|
+
console.error(`โ Failed to send message to user ${targetUserId}`, error);
|
|
77547
|
+
throw error;
|
|
77548
|
+
}
|
|
77549
|
+
}), []);
|
|
77550
|
+
/**
|
|
77551
|
+
* Registra un listener per l'evento ReceiveMessage
|
|
77552
|
+
* @param handler - Funzione da chiamare quando arriva un messaggio
|
|
77553
|
+
* @returns Funzione per rimuovere il listener
|
|
77554
|
+
*/
|
|
77555
|
+
const onReceiveMessage = useCallback$1(handler => {
|
|
77556
|
+
FluxoClientSys.Instance.sessionHub.on('ReceiveMessage', handler);
|
|
77557
|
+
console.info('๐ง ReceiveMessage handler registered');
|
|
77558
|
+
// Ritorna una funzione per rimuovere il listener
|
|
77559
|
+
return () => {
|
|
77560
|
+
FluxoClientSys.Instance.sessionHub.off('ReceiveMessage', handler);
|
|
77561
|
+
console.info('๐ ReceiveMessage handler removed');
|
|
77562
|
+
};
|
|
77563
|
+
}, []);
|
|
77564
|
+
// ============================================================================
|
|
77565
|
+
// FINE METODI MESSAGING REALTIME
|
|
77566
|
+
// ============================================================================
|
|
77567
|
+
// Memoizza l'oggetto restituito per evitare re-render inutili del ScreenSharingProvider
|
|
77568
|
+
return useMemo$1(() => ({
|
|
77569
|
+
// Metodi base
|
|
77570
|
+
on,
|
|
77571
|
+
off,
|
|
77572
|
+
invoke,
|
|
77573
|
+
send,
|
|
77574
|
+
getState,
|
|
77575
|
+
getConnectionId,
|
|
77576
|
+
connectionId: FluxoClientSys.Instance.sessionHub.connectionId,
|
|
77577
|
+
isConnected: () => isConnected,
|
|
77578
|
+
connected: isConnected,
|
|
77579
|
+
reconnect: startConnection,
|
|
77580
|
+
disconnect: stopConnection,
|
|
77581
|
+
hasBeenConnectedOnce: hasBeenConnectedOnce.current,
|
|
77582
|
+
// Metodi messaging realtime
|
|
77583
|
+
sendBroadcastMessage,
|
|
77584
|
+
sendMessageToSession,
|
|
77585
|
+
sendMessageToUser,
|
|
77586
|
+
onReceiveMessage
|
|
77587
|
+
}), [on, off, invoke, send, getState, getConnectionId, isConnected, startConnection, stopConnection, sendBroadcastMessage, sendMessageToSession, sendMessageToUser, onReceiveMessage]);
|
|
77588
|
+
};
|
|
77589
|
+
|
|
77590
|
+
// Funzioni helper per icone e colori (fuori dal componente)
|
|
77591
|
+
const getIcon = type => {
|
|
77592
|
+
switch (type) {
|
|
77593
|
+
case 'Critico':
|
|
77594
|
+
return jsx(IconAlertCircle, {
|
|
77595
|
+
size: 20
|
|
77596
|
+
});
|
|
77597
|
+
case 'Errore':
|
|
77598
|
+
return jsx(IconAlertTriangle, {
|
|
77599
|
+
size: 20
|
|
77600
|
+
});
|
|
77601
|
+
case 'Avviso':
|
|
77602
|
+
return jsx(IconAlertTriangle, {
|
|
77603
|
+
size: 20
|
|
77604
|
+
});
|
|
77605
|
+
case 'Successo':
|
|
77606
|
+
return jsx(IconCircleCheck, {
|
|
77607
|
+
size: 20
|
|
77608
|
+
});
|
|
77609
|
+
case 'Informazioni':
|
|
77610
|
+
default:
|
|
77611
|
+
return jsx(IconInfoCircle, {
|
|
77612
|
+
size: 20
|
|
77613
|
+
});
|
|
77614
|
+
}
|
|
77615
|
+
};
|
|
77616
|
+
const getColor = type => {
|
|
77617
|
+
switch (type) {
|
|
77618
|
+
case 'Critico':
|
|
77619
|
+
return 'red';
|
|
77620
|
+
case 'Errore':
|
|
77621
|
+
return 'red';
|
|
77622
|
+
case 'Avviso':
|
|
77623
|
+
return 'yellow';
|
|
77624
|
+
case 'Successo':
|
|
77625
|
+
return 'green';
|
|
77626
|
+
case 'Informazioni':
|
|
77627
|
+
return 'blue';
|
|
77628
|
+
case 'Alert':
|
|
77629
|
+
return 'orange';
|
|
77630
|
+
default:
|
|
77631
|
+
return 'gray';
|
|
77632
|
+
}
|
|
77633
|
+
};
|
|
77634
|
+
// Chiave localStorage per persistere i messaggi
|
|
77635
|
+
const MESSAGES_STORAGE_KEY = 'fluxo_persisted_messages';
|
|
77636
|
+
/**
|
|
77637
|
+
* Modal per visualizzare i messaggi ricevuti dal server
|
|
77638
|
+
* Supporta 3 modalitร di visualizzazione:
|
|
77639
|
+
* - Modal: apre un modal tradizionale
|
|
77640
|
+
* - Toast: notifica bottom-right che resta aperta finchรฉ l'utente non la chiude
|
|
77641
|
+
* - NotificationBar: barra full-width fixed top che resta aperta finchรฉ l'utente non la chiude
|
|
77642
|
+
*
|
|
77643
|
+
* I messaggi sono persistiti in localStorage e ricompaiono al refresh della pagina
|
|
77644
|
+
*/
|
|
77645
|
+
const MessageReceiverModal = () => {
|
|
77646
|
+
const [currentMessage, setCurrentMessage] = useState(null);
|
|
77647
|
+
const [opened, setOpened] = useState(false);
|
|
77648
|
+
// Funzione per ottenere i messaggi da localStorage
|
|
77649
|
+
const getMessagesFromStorage = useCallback$1(() => {
|
|
77650
|
+
try {
|
|
77651
|
+
const stored = localStorage.getItem(MESSAGES_STORAGE_KEY);
|
|
77652
|
+
return stored ? JSON.parse(stored) : [];
|
|
77653
|
+
} catch (error) {
|
|
77654
|
+
console.error('Errore lettura messaggi da localStorage:', error);
|
|
77655
|
+
return [];
|
|
77656
|
+
}
|
|
77657
|
+
}, []);
|
|
77658
|
+
// Funzione per rimuovere un messaggio da localStorage
|
|
77659
|
+
const removeMessageFromStorage = useCallback$1(messageId => {
|
|
77660
|
+
try {
|
|
77661
|
+
const existingMessages = getMessagesFromStorage();
|
|
77662
|
+
const filtered = existingMessages.filter(msg => msg.id !== messageId);
|
|
77663
|
+
localStorage.setItem(MESSAGES_STORAGE_KEY, JSON.stringify(filtered));
|
|
77664
|
+
console.log('โ
Messaggio rimosso da localStorage:', messageId);
|
|
77665
|
+
} catch (error) {
|
|
77666
|
+
console.error('Errore rimozione messaggio da localStorage:', error);
|
|
77667
|
+
}
|
|
77668
|
+
}, [getMessagesFromStorage]);
|
|
77669
|
+
// Funzione per salvare un messaggio in localStorage
|
|
77670
|
+
const saveMessageToStorage = useCallback$1(message => {
|
|
77671
|
+
try {
|
|
77672
|
+
const existingMessages = getMessagesFromStorage();
|
|
77673
|
+
const persistedMessage = Object.assign(Object.assign({}, message), {
|
|
77674
|
+
id: `${message.timestamp}-${Math.random().toString(36).substr(2, 9)}`
|
|
77675
|
+
});
|
|
77676
|
+
existingMessages.push(persistedMessage);
|
|
77677
|
+
localStorage.setItem(MESSAGES_STORAGE_KEY, JSON.stringify(existingMessages));
|
|
77678
|
+
return persistedMessage.id;
|
|
77679
|
+
} catch (error) {
|
|
77680
|
+
console.error('Errore salvataggio messaggio in localStorage:', error);
|
|
77681
|
+
return null;
|
|
77682
|
+
}
|
|
77683
|
+
}, [getMessagesFromStorage]);
|
|
77684
|
+
// Funzione per mostrare una notifica (Toast o NotificationBar)
|
|
77685
|
+
const showNotification = useCallback$1((data, messageId, position, isBar = false) => {
|
|
77686
|
+
notifications.show({
|
|
77687
|
+
id: messageId,
|
|
77688
|
+
// Usa l'ID univoco
|
|
77689
|
+
title: data.messageType,
|
|
77690
|
+
message: data.message,
|
|
77691
|
+
color: getColor(data.messageType),
|
|
77692
|
+
icon: getIcon(data.messageType),
|
|
77693
|
+
autoClose: false,
|
|
77694
|
+
// Tutti i messaggi devono essere chiusi manualmente
|
|
77695
|
+
withCloseButton: true,
|
|
77696
|
+
position,
|
|
77697
|
+
styles: isBar ? {
|
|
77698
|
+
root: {
|
|
77699
|
+
width: '100%',
|
|
77700
|
+
maxWidth: '100%',
|
|
77701
|
+
margin: 0,
|
|
77702
|
+
borderRadius: 0
|
|
77703
|
+
}
|
|
77704
|
+
} : undefined,
|
|
77705
|
+
onClose: () => {
|
|
77706
|
+
// Rimuovi da localStorage quando viene chiuso
|
|
77707
|
+
removeMessageFromStorage(messageId);
|
|
77708
|
+
}
|
|
77709
|
+
});
|
|
77710
|
+
}, [removeMessageFromStorage]);
|
|
77711
|
+
// Ripristina i messaggi persistiti al mount
|
|
77712
|
+
useEffect(() => {
|
|
77713
|
+
const persistedMessages = getMessagesFromStorage();
|
|
77714
|
+
console.log('๐ฆ Ripristino messaggi persistiti:', persistedMessages.length);
|
|
77715
|
+
let firstModalShown = false;
|
|
77716
|
+
persistedMessages.forEach(msg => {
|
|
77717
|
+
if (msg.displayType === 'Modal') {
|
|
77718
|
+
// Per i modal, mostra solo il primo (gli altri verranno mostrati dopo)
|
|
77719
|
+
if (!firstModalShown) {
|
|
77720
|
+
setCurrentMessage(msg);
|
|
77721
|
+
setOpened(true);
|
|
77722
|
+
firstModalShown = true;
|
|
77723
|
+
}
|
|
77724
|
+
} else if (msg.displayType === 'Toast') {
|
|
77725
|
+
showNotification(msg, msg.id, 'bottom-right');
|
|
77726
|
+
} else if (msg.displayType === 'NotificationBar') {
|
|
77727
|
+
showNotification(msg, msg.id, 'top-center', true);
|
|
77728
|
+
} else {
|
|
77729
|
+
// Fallback
|
|
77730
|
+
showNotification(msg, msg.id, 'bottom-right');
|
|
77731
|
+
}
|
|
77732
|
+
});
|
|
77733
|
+
}, [getMessagesFromStorage, showNotification]);
|
|
77734
|
+
useEffect(() => {
|
|
77735
|
+
const handleReceiveMessage = data => {
|
|
77736
|
+
console.log('๐ฉ Messaggio ricevuto:', data);
|
|
77737
|
+
// Salva il messaggio in localStorage
|
|
77738
|
+
const messageId = saveMessageToStorage(data);
|
|
77739
|
+
if (!messageId) return;
|
|
77740
|
+
// Crea il messaggio persistito con ID
|
|
77741
|
+
const persistedMsg = Object.assign(Object.assign({}, data), {
|
|
77742
|
+
id: messageId
|
|
77743
|
+
});
|
|
77744
|
+
// Gestisci in base al displayType
|
|
77745
|
+
if (data.displayType === 'Modal') {
|
|
77746
|
+
// Mostra il modal tradizionale
|
|
77747
|
+
setCurrentMessage(persistedMsg);
|
|
77748
|
+
setOpened(true);
|
|
77749
|
+
} else if (data.displayType === 'Toast') {
|
|
77750
|
+
// Toast: notifica bottom-right che resta aperta finchรฉ l'utente non la chiude
|
|
77751
|
+
showNotification(data, messageId, 'bottom-right');
|
|
77752
|
+
} else if (data.displayType === 'NotificationBar') {
|
|
77753
|
+
// NotificationBar: barra full-width fixed top che resta aperta
|
|
77754
|
+
showNotification(data, messageId, 'top-center', true);
|
|
77755
|
+
} else {
|
|
77756
|
+
// Fallback: mostra come Toast
|
|
77757
|
+
showNotification(data, messageId, 'bottom-right');
|
|
77758
|
+
}
|
|
77759
|
+
// Riproduci suono/notifica browser (opzionale)
|
|
77760
|
+
if ('Notification' in window && Notification.permission === 'granted') {
|
|
77761
|
+
new Notification(`${data.messageType}: ${data.message.substring(0, 50)}...`);
|
|
77762
|
+
}
|
|
77763
|
+
};
|
|
77764
|
+
// Registra l'event handler direttamente su FluxoClientSys
|
|
77765
|
+
FluxoClientSys.Instance.sessionHub.on('ReceiveMessage', handleReceiveMessage);
|
|
77766
|
+
console.info('๐ง MessageReceiverModal: ReceiveMessage handler registered');
|
|
77767
|
+
return () => {
|
|
77768
|
+
FluxoClientSys.Instance.sessionHub.off('ReceiveMessage', handleReceiveMessage);
|
|
77769
|
+
console.info('๐ MessageReceiverModal: ReceiveMessage handler removed');
|
|
77770
|
+
};
|
|
77771
|
+
}, [saveMessageToStorage, showNotification]);
|
|
77772
|
+
// Richiedi permesso notifiche all'avvio (opzionale)
|
|
77773
|
+
useEffect(() => {
|
|
77774
|
+
if ('Notification' in window && Notification.permission === 'default') {
|
|
77775
|
+
Notification.requestPermission();
|
|
77776
|
+
}
|
|
77777
|
+
}, []);
|
|
77778
|
+
const handleClose = () => {
|
|
77779
|
+
// Rimuovi il messaggio da localStorage quando viene chiuso
|
|
77780
|
+
if (currentMessage === null || currentMessage === void 0 ? void 0 : currentMessage.id) {
|
|
77781
|
+
removeMessageFromStorage(currentMessage.id);
|
|
77782
|
+
}
|
|
77783
|
+
setOpened(false);
|
|
77784
|
+
setCurrentMessage(null);
|
|
77785
|
+
// Controlla se ci sono altri messaggi Modal da mostrare
|
|
77786
|
+
const remainingMessages = getMessagesFromStorage();
|
|
77787
|
+
const nextModal = remainingMessages.find(msg => msg.displayType === 'Modal');
|
|
77788
|
+
if (nextModal) {
|
|
77789
|
+
setCurrentMessage(nextModal);
|
|
77790
|
+
setOpened(true);
|
|
77791
|
+
}
|
|
77792
|
+
};
|
|
77793
|
+
if (!currentMessage) return null;
|
|
77794
|
+
const isCritical = currentMessage.messageType === 'Critico';
|
|
77795
|
+
return jsx(Modal, {
|
|
77796
|
+
opened: opened,
|
|
77797
|
+
onClose: handleClose,
|
|
77798
|
+
centered: true,
|
|
77799
|
+
title: jsxs(Group, {
|
|
77800
|
+
gap: "sm",
|
|
77801
|
+
children: [getIcon(currentMessage.messageType), jsx(Text, {
|
|
77802
|
+
fw: 500,
|
|
77803
|
+
size: "md",
|
|
77804
|
+
children: currentMessage.messageType
|
|
77805
|
+
})]
|
|
77806
|
+
}),
|
|
77807
|
+
size: "md",
|
|
77808
|
+
closeOnClickOutside: !isCritical,
|
|
77809
|
+
closeOnEscape: !isCritical,
|
|
77810
|
+
withCloseButton: !isCritical,
|
|
77811
|
+
overlayProps: {
|
|
77812
|
+
backgroundOpacity: 0.55,
|
|
77813
|
+
blur: 8
|
|
77814
|
+
},
|
|
77815
|
+
children: jsxs(Stack, {
|
|
77816
|
+
gap: "md",
|
|
77817
|
+
children: [jsx(Alert, {
|
|
77818
|
+
icon: getIcon(currentMessage.messageType),
|
|
77819
|
+
color: getColor(currentMessage.messageType),
|
|
77820
|
+
variant: "light",
|
|
77821
|
+
styles: {
|
|
77822
|
+
root: {
|
|
77823
|
+
border: `1px solid var(--mantine-color-${getColor(currentMessage.messageType)}-3)`
|
|
77824
|
+
}
|
|
77825
|
+
},
|
|
77826
|
+
children: jsx(Text, {
|
|
77827
|
+
size: "sm",
|
|
77828
|
+
style: {
|
|
77829
|
+
whiteSpace: 'pre-wrap',
|
|
77830
|
+
lineHeight: 1.6
|
|
77831
|
+
},
|
|
77832
|
+
children: currentMessage.message
|
|
77833
|
+
})
|
|
77834
|
+
}), jsx(Divider, {}), jsx(Box, {
|
|
77835
|
+
p: "xs",
|
|
77836
|
+
style: {
|
|
77837
|
+
backgroundColor: 'var(--mantine-color-gray-0)',
|
|
77838
|
+
borderRadius: '4px',
|
|
77839
|
+
border: '1px solid var(--mantine-color-gray-2)'
|
|
77840
|
+
},
|
|
77841
|
+
children: jsxs(Group, {
|
|
77842
|
+
gap: "md",
|
|
77843
|
+
justify: "space-between",
|
|
77844
|
+
children: [jsxs(Box, {
|
|
77845
|
+
children: [jsx(Text, {
|
|
77846
|
+
size: "xs",
|
|
77847
|
+
c: "dimmed",
|
|
77848
|
+
fw: 500,
|
|
77849
|
+
children: "Ricevuto il"
|
|
77850
|
+
}), jsx(Text, {
|
|
77851
|
+
size: "xs",
|
|
77852
|
+
fw: 500,
|
|
77853
|
+
children: new Date(currentMessage.timestamp).toLocaleString('it-IT', {
|
|
77854
|
+
day: '2-digit',
|
|
77855
|
+
month: '2-digit',
|
|
77856
|
+
year: 'numeric',
|
|
77857
|
+
hour: '2-digit',
|
|
77858
|
+
minute: '2-digit'
|
|
77859
|
+
})
|
|
77860
|
+
})]
|
|
77861
|
+
}), currentMessage.targetUserId && jsxs(Box, {
|
|
77862
|
+
style: {
|
|
77863
|
+
textAlign: 'right'
|
|
77864
|
+
},
|
|
77865
|
+
children: [jsx(Text, {
|
|
77866
|
+
size: "xs",
|
|
77867
|
+
c: "dimmed",
|
|
77868
|
+
fw: 500,
|
|
77869
|
+
children: "User ID"
|
|
77870
|
+
}), jsx(Text, {
|
|
77871
|
+
size: "xs",
|
|
77872
|
+
fw: 500,
|
|
77873
|
+
ff: "monospace",
|
|
77874
|
+
children: currentMessage.targetUserId
|
|
77875
|
+
})]
|
|
77876
|
+
})]
|
|
77877
|
+
})
|
|
77878
|
+
}), jsx(Group, {
|
|
77879
|
+
justify: "flex-end",
|
|
77880
|
+
gap: "sm",
|
|
77881
|
+
children: jsx(Button, {
|
|
77882
|
+
variant: isCritical ? 'filled' : 'light',
|
|
77883
|
+
color: getColor(currentMessage.messageType),
|
|
77884
|
+
onClick: handleClose,
|
|
77885
|
+
leftSection: isCritical ? undefined : jsx(IconX, {
|
|
77886
|
+
size: 16
|
|
77887
|
+
}),
|
|
77888
|
+
children: isCritical ? 'Ho capito' : 'Chiudi'
|
|
77889
|
+
})
|
|
77890
|
+
})]
|
|
77891
|
+
})
|
|
77892
|
+
});
|
|
77893
|
+
};
|
|
77894
|
+
|
|
76910
77895
|
var ShellUINavigation;
|
|
76911
77896
|
(function (ShellUINavigation) {
|
|
76912
77897
|
ShellUINavigation[ShellUINavigation["Sidebar"] = 1] = "Sidebar";
|
|
@@ -77202,15 +78187,14 @@ function FluxoShell(props) {
|
|
|
77202
78187
|
children: [{
|
|
77203
78188
|
index: true,
|
|
77204
78189
|
element: flxFrontend.dashboardComponent
|
|
77205
|
-
},
|
|
77206
|
-
|
|
77207
|
-
|
|
77208
|
-
|
|
77209
|
-
|
|
77210
|
-
|
|
77211
|
-
|
|
77212
|
-
|
|
77213
|
-
}, ...generateRoutesFromEmbeddedModules(flxFrontend, 'protected'), ...generateRoutesFromDeployedApps(flxFrontend, res.apps), ...generateRoutesFromJitApps(flxFrontend)]
|
|
78190
|
+
},
|
|
78191
|
+
// Espande le routes di MainRoutes direttamente qui per evitare il wrapper
|
|
78192
|
+
...generateMainRoutes({
|
|
78193
|
+
fluxoShellProps: props,
|
|
78194
|
+
isAdminFrontend: flxFrontend.id === 'admin',
|
|
78195
|
+
pluginEndpoint: props.pluginEndpoint,
|
|
78196
|
+
frontends: props.frontends
|
|
78197
|
+
}, res.hasAdminAccess || false, res.hasDeveloperAccess || false, res.hasDataAnalystAccess || false), ...generateRoutesFromEmbeddedModules(flxFrontend, 'protected'), ...generateRoutesFromDeployedApps(flxFrontend, res.apps), ...generateRoutesFromJitApps(flxFrontend)]
|
|
77214
78198
|
}, {
|
|
77215
78199
|
path: '*',
|
|
77216
78200
|
element: jsx(ErrorPage, {})
|
|
@@ -77394,13 +78378,13 @@ function SessionHubManager({
|
|
|
77394
78378
|
return null; // Componente invisibile, gestisce solo la logica
|
|
77395
78379
|
}
|
|
77396
78380
|
function AppInner(props) {
|
|
77397
|
-
return
|
|
78381
|
+
return jsxs(React__default.Suspense, {
|
|
77398
78382
|
fallback: jsx(Fragment, {
|
|
77399
78383
|
children: "..."
|
|
77400
78384
|
}),
|
|
77401
|
-
children: jsx(RouterProvider, {
|
|
78385
|
+
children: [jsx(MessageReceiverModal, {}), jsx(RouterProvider, {
|
|
77402
78386
|
router: props.router
|
|
77403
|
-
})
|
|
78387
|
+
})]
|
|
77404
78388
|
});
|
|
77405
78389
|
}
|
|
77406
78390
|
|
|
@@ -77413,7 +78397,6 @@ function LockedResource({
|
|
|
77413
78397
|
onResourceUnlocked,
|
|
77414
78398
|
readOnlyMode = false
|
|
77415
78399
|
}) {
|
|
77416
|
-
const sessionHub = useSessionHub(false);
|
|
77417
78400
|
const [resourceIsAlreadyLocked, setResourceIsAlreadyLocked] = useState(false);
|
|
77418
78401
|
const [isLoading, setIsLoading] = useState(true);
|
|
77419
78402
|
const [error, setError] = useState(null);
|
|
@@ -77435,7 +78418,7 @@ function LockedResource({
|
|
|
77435
78418
|
}, [onResourceLocked, onResourceUnlocked]);
|
|
77436
78419
|
// Funzione per eseguire il lock check
|
|
77437
78420
|
const performLockCheck = React__default.useCallback((showLoader = true) => {
|
|
77438
|
-
if (!sessionHub || !sessionHub.isConnected
|
|
78421
|
+
if (!FluxoClientSys.Instance.sessionHub || !FluxoClientSys.Instance.sessionHub.isConnected) {
|
|
77439
78422
|
return;
|
|
77440
78423
|
}
|
|
77441
78424
|
// Mostra il loader solo se richiesto (primo check)
|
|
@@ -77443,11 +78426,11 @@ function LockedResource({
|
|
|
77443
78426
|
setIsLoading(true);
|
|
77444
78427
|
}
|
|
77445
78428
|
setError(null);
|
|
77446
|
-
sessionHub.invoke('LockResource', resourceId, componentId.current).then(res => {
|
|
77447
|
-
var _a, _b
|
|
78429
|
+
FluxoClientSys.Instance.sessionHub.invoke('LockResource', resourceId, componentId.current).then(res => {
|
|
78430
|
+
var _a, _b;
|
|
77448
78431
|
const isLocked = res.isAlreadyLocked;
|
|
77449
|
-
const currentWsConnectionId =
|
|
77450
|
-
const lockingWsConnectionId = (
|
|
78432
|
+
const currentWsConnectionId = FluxoClientSys.Instance.sessionHub.connectionId;
|
|
78433
|
+
const lockingWsConnectionId = (_a = res.session) === null || _a === void 0 ? void 0 : _a.wsConnectionId;
|
|
77451
78434
|
// Verifica se la risorsa รจ bloccata dalla stessa sessione WebSocket
|
|
77452
78435
|
const isSameSession = isLocked && currentWsConnectionId && lockingWsConnectionId && currentWsConnectionId === lockingWsConnectionId;
|
|
77453
78436
|
setResourceIsAlreadyLocked(isLocked);
|
|
@@ -77455,7 +78438,7 @@ function LockedResource({
|
|
|
77455
78438
|
setIsLoading(false);
|
|
77456
78439
|
setHasCheckedOnce(true);
|
|
77457
78440
|
// Salva l'username dell'utente che ha bloccato la risorsa
|
|
77458
|
-
if (isLocked && ((
|
|
78441
|
+
if (isLocked && ((_b = res.session) === null || _b === void 0 ? void 0 : _b.userName)) {
|
|
77459
78442
|
setLockedByUser(res.session.userName);
|
|
77460
78443
|
} else {
|
|
77461
78444
|
setLockedByUser(null);
|
|
@@ -77476,7 +78459,7 @@ function LockedResource({
|
|
|
77476
78459
|
onResourceLockedRef.current();
|
|
77477
78460
|
}
|
|
77478
78461
|
});
|
|
77479
|
-
}, [
|
|
78462
|
+
}, [resourceId]);
|
|
77480
78463
|
// Lock della risorsa all'avvio
|
|
77481
78464
|
useEffect(() => {
|
|
77482
78465
|
performLockCheck(true); // Mostra il loader al primo check
|
|
@@ -77484,12 +78467,12 @@ function LockedResource({
|
|
|
77484
78467
|
// Monitora lo stato di connessione e ri-esegui il check quando si riconnette
|
|
77485
78468
|
useEffect(() => {
|
|
77486
78469
|
// Aspetta che il primo check sia completato prima di monitorare la connessione
|
|
77487
|
-
if (!
|
|
77488
|
-
const currentConnectionState = sessionHub.isConnected
|
|
78470
|
+
if (!hasCheckedOnce) return;
|
|
78471
|
+
const currentConnectionState = FluxoClientSys.Instance.sessionHub.isConnected;
|
|
77489
78472
|
setIsConnected(currentConnectionState);
|
|
77490
78473
|
// Polling per monitorare lo stato di connessione
|
|
77491
78474
|
const interval = setInterval(() => {
|
|
77492
|
-
const newConnectionState = sessionHub.isConnected
|
|
78475
|
+
const newConnectionState = FluxoClientSys.Instance.sessionHub.isConnected;
|
|
77493
78476
|
// Solo se passa da disconnesso a connesso, ri-esegui il check
|
|
77494
78477
|
if (newConnectionState && !isConnected) {
|
|
77495
78478
|
console.log('๐ SessionHub riconnesso, ri-verifico il lock della risorsa:', resourceId);
|
|
@@ -77498,23 +78481,17 @@ function LockedResource({
|
|
|
77498
78481
|
setIsConnected(newConnectionState);
|
|
77499
78482
|
}, 2000);
|
|
77500
78483
|
return () => clearInterval(interval);
|
|
77501
|
-
}, [
|
|
77502
|
-
// Ref per sessionHub per evitare di catturarlo nella closure
|
|
77503
|
-
const sessionHubRef = useRef(sessionHub);
|
|
77504
|
-
useEffect(() => {
|
|
77505
|
-
sessionHubRef.current = sessionHub;
|
|
77506
|
-
}, [sessionHub]);
|
|
78484
|
+
}, [isConnected, performLockCheck, resourceId, hasCheckedOnce]);
|
|
77507
78485
|
// Unlock della risorsa alla cleanup (solo al vero unmount)
|
|
77508
78486
|
useEffect(() => {
|
|
77509
78487
|
// Salva i valori al mount per usarli nel cleanup
|
|
77510
78488
|
const currentResourceId = resourceId;
|
|
77511
78489
|
const currentComponentId = componentId.current;
|
|
77512
78490
|
return () => {
|
|
77513
|
-
// Usa
|
|
77514
|
-
|
|
77515
|
-
if (currentSessionHub && currentSessionHub.isConnected()) {
|
|
78491
|
+
// Usa FluxoClientSys.Instance.sessionHub direttamente
|
|
78492
|
+
if (FluxoClientSys.Instance.sessionHub && FluxoClientSys.Instance.sessionHub.isConnected) {
|
|
77516
78493
|
console.log('๐ Unlock risorsa al unmount:', currentResourceId, currentComponentId);
|
|
77517
|
-
|
|
78494
|
+
FluxoClientSys.Instance.sessionHub.invoke('UnlockResource', currentResourceId, currentComponentId).catch(err => {
|
|
77518
78495
|
console.error('Error unlocking resource:', err);
|
|
77519
78496
|
});
|
|
77520
78497
|
}
|
|
@@ -77691,4 +78668,4 @@ function LockedResource({
|
|
|
77691
78668
|
});
|
|
77692
78669
|
}
|
|
77693
78670
|
|
|
77694
|
-
export { FluxoShell, FrontendSwitch, LockedResource, ScreenSharingProvider, ScreenSharingWidget, ShellSessionContext, ShellUINavigation, ShellUISearchPosition, ShellUISearchType, useScreenSharingContext, useSessionHub };
|
|
78671
|
+
export { FluxoShell, FrontendSwitch, LockedResource, MessageReceiverModal, ScreenSharingProvider, ScreenSharingWidget, ShellSessionContext, ShellUINavigation, ShellUISearchPosition, ShellUISearchType, useScreenSharingContext, useSessionHub };
|