@odigos/ui-kit 0.0.63 → 0.0.64
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/CHANGELOG.md +7 -0
- package/lib/components/key-value-input-list/index.d.ts +2 -0
- package/lib/components/toggle/index.d.ts +1 -1
- package/lib/components.js +10 -10
- package/lib/constants.js +1 -1
- package/lib/containers/system-settings/index.d.ts +8 -0
- package/lib/containers/system-settings/settings/collector-gateway-settings.d.ts +4 -0
- package/lib/containers/system-settings/settings/collector-node-settings.d.ts +4 -0
- package/lib/containers/system-settings/settings/options.d.ts +7 -0
- package/lib/containers/system-settings/settings/other-settings.d.ts +4 -0
- package/lib/containers/system-settings/settings/styled.d.ts +2 -0
- package/lib/containers/system-settings/settings/types.d.ts +5 -0
- package/lib/containers/system-settings/settings/ui-settings.d.ts +4 -0
- package/lib/containers/system-settings/settings/user-instrumnetation-envs-settings.d.ts +4 -0
- package/lib/containers.js +12 -12
- package/lib/functions.js +6 -6
- package/lib/hooks.js +4 -4
- package/lib/icons/common/gear-icon/index.d.ts +2 -0
- package/lib/icons/common/index.d.ts +1 -0
- package/lib/icons.js +15 -7
- package/lib/{index-61caa474.js → index-13d8ebb2.js} +71 -75
- package/lib/{index-58440c5c.js → index-23b2865d.js} +2 -2
- package/lib/{index-50101bec.js → index-4e685db0.js} +1 -1
- package/lib/{index-eb03f43f.js → index-53f817d1.js} +2 -2
- package/lib/{index-ec555530.js → index-5e5f7bda.js} +6 -1
- package/lib/{index-bd48e6e2.js → index-8dad36e5.js} +1 -1
- package/lib/{index-1fcb0269.js → index-b44c0701.js} +2 -9
- package/lib/{index-9e56485b.js → index-cfdd4195.js} +5 -10
- package/lib/{index-56ab40b8.js → index-d78c60e1.js} +9 -2
- package/lib/{index-acc7c7dd.js → index-ff8fcc81.js} +2 -2
- package/lib/mock-data/config/index.d.ts +2 -0
- package/lib/mock-data/index.d.ts +1 -0
- package/lib/snippets.js +8 -8
- package/lib/store.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/types/config/index.d.ts +89 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types.js +43 -1
- package/lib/{useTransition-750816e0.js → useTransition-985cc4a8.js} +23 -10
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.64](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.63...ui-kit-v0.0.64) (2025-07-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add drawer for "system settings" ([#261](https://github.com/odigos-io/ui-kit/issues/261)) ([cd3eb2e](https://github.com/odigos-io/ui-kit/commit/cd3eb2e986ffdf4796c4d98423405cfa7f1bfc2c))
|
|
9
|
+
|
|
3
10
|
## [0.0.63](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.62...ui-kit-v0.0.63) (2025-07-21)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -9,10 +9,12 @@ interface KeyValueInputsListProps {
|
|
|
9
9
|
onChange?: (validKeyValuePairs: Row[]) => void;
|
|
10
10
|
title?: string;
|
|
11
11
|
tooltip?: string;
|
|
12
|
+
disabled?: boolean;
|
|
12
13
|
required?: boolean;
|
|
13
14
|
errorMessage?: string;
|
|
14
15
|
keyPlaceholder?: string;
|
|
15
16
|
valuePlaceholder?: string;
|
|
17
|
+
inputMaxWidth?: number;
|
|
16
18
|
}
|
|
17
19
|
declare const KeyValueInputsList: FC<KeyValueInputsListProps>;
|
|
18
20
|
export { KeyValueInputsList, type KeyValueInputsListProps };
|
package/lib/components.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { B as Button } from './index-
|
|
2
|
-
export { A as AutocompleteInput, a as Badge, a6 as CenterThis, C as Checkbox, b as Code, c as ConditionDetails, D as DataCard, e as DataCardFieldTypes, d as DataCardFields, f as DataFinger, g as DataTab, h as DescribeRow, i as Divider, j as DocsButton, k as Drawer, m as DrawerFooter, l as DrawerHeader, n as Dropdown, E as ExtendArrow, F as FadeLoader, o as FieldError, p as FieldLabel, a5 as FlexColumn, a4 as FlexRow, H as Header, I as IconButton, q as IconGroup, r as IconTitleBadge, s as IconWrapped, t as IconsNav, u as ImageControlled, v as Input, w as InputList, x as InputTable, y as InteractiveTable, K as KeyValueInputsList, M as Modal, a9 as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, a8 as Overlay, P as Popup, O as PopupForm, S as ScrollX, Q as SectionTitle, R as Segment, U as SelectionButton, V as SkeletonLoader, W as Status, X as Stepper, Y as TabList, aa as TableContainer, ab as TableTitleWrap, ac as TableWrap, Z as Tag, _ as Text, $ as TextArea, a0 as Toggle, T as ToggleCodeComponent, a1 as Tooltip, a2 as TraceLoader, a7 as VerticalScroll, a3 as WarningModal } from './index-
|
|
3
|
-
export { C as CancelWarning, D as DeleteWarning } from './index-
|
|
1
|
+
import { B as Button } from './index-13d8ebb2.js';
|
|
2
|
+
export { A as AutocompleteInput, a as Badge, a6 as CenterThis, C as Checkbox, b as Code, c as ConditionDetails, D as DataCard, e as DataCardFieldTypes, d as DataCardFields, f as DataFinger, g as DataTab, h as DescribeRow, i as Divider, j as DocsButton, k as Drawer, m as DrawerFooter, l as DrawerHeader, n as Dropdown, E as ExtendArrow, F as FadeLoader, o as FieldError, p as FieldLabel, a5 as FlexColumn, a4 as FlexRow, H as Header, I as IconButton, q as IconGroup, r as IconTitleBadge, s as IconWrapped, t as IconsNav, u as ImageControlled, v as Input, w as InputList, x as InputTable, y as InteractiveTable, K as KeyValueInputsList, M as Modal, a9 as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, a8 as Overlay, P as Popup, O as PopupForm, S as ScrollX, Q as SectionTitle, R as Segment, U as SelectionButton, V as SkeletonLoader, W as Status, X as Stepper, Y as TabList, aa as TableContainer, ab as TableTitleWrap, ac as TableWrap, Z as Tag, _ as Text, $ as TextArea, a0 as Toggle, T as ToggleCodeComponent, a1 as Tooltip, a2 as TraceLoader, a7 as VerticalScroll, a3 as WarningModal } from './index-13d8ebb2.js';
|
|
3
|
+
export { C as CancelWarning, D as DeleteWarning } from './index-53f817d1.js';
|
|
4
4
|
import React, { createContext, Component, createElement } from 'react';
|
|
5
|
-
import { T as Theme } from './index-
|
|
6
|
-
import './types.js';
|
|
7
|
-
import './index-1fcb0269.js';
|
|
8
|
-
import './index-58440c5c.js';
|
|
5
|
+
import { T as Theme } from './index-8dad36e5.js';
|
|
9
6
|
import 'styled-components';
|
|
10
|
-
import './index-
|
|
11
|
-
import './
|
|
7
|
+
import './index-b44c0701.js';
|
|
8
|
+
import './types.js';
|
|
9
|
+
import './index-5e5f7bda.js';
|
|
10
|
+
import './index-23b2865d.js';
|
|
11
|
+
import './index-4e685db0.js';
|
|
12
12
|
import 'react-dom';
|
|
13
|
-
import './useTransition-
|
|
13
|
+
import './useTransition-985cc4a8.js';
|
|
14
14
|
|
|
15
15
|
const ErrorBoundaryContext = createContext(null);
|
|
16
16
|
|
package/lib/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, a as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, b as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-
|
|
1
|
+
export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, a as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, b as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-8dad36e5.js';
|
|
2
2
|
export { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import './types.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { OdigosConfig } from '@/types';
|
|
3
|
+
interface SystemSettingsProps {
|
|
4
|
+
settings: OdigosConfig;
|
|
5
|
+
onSave: (payload: OdigosConfig) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const SystemSettings: FC<SystemSettingsProps>;
|
|
8
|
+
export { SystemSettings, type SystemSettingsProps };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DropdownOption } from '@/components';
|
|
2
|
+
import { AgentEnvVarsInjectionMethod, MountMethod, Profile, ProgrammingLanguages, UiMode } from '@/types';
|
|
3
|
+
export declare const UI_MODE_OPTIONS: DropdownOption<UiMode>[];
|
|
4
|
+
export declare const INSTRUMENTATION_LANG_OPTIONS: DropdownOption<ProgrammingLanguages>[];
|
|
5
|
+
export declare const MOUNT_METHOD_OPTIONS: DropdownOption<MountMethod>[];
|
|
6
|
+
export declare const AGENT_ENV_VARS_INJECTION_METHOD_OPTIONS: DropdownOption<AgentEnvVarsInjectionMethod>[];
|
|
7
|
+
export declare const PROFILE_OPTIONS: DropdownOption<Profile>[];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const Card: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
2
|
+
export declare const CardTitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("@/components").TextProps, never>> & string & Omit<import("react").FC<import("@/components").TextProps>, keyof import("react").Component<any, {}, any>>;
|
package/lib/containers.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, Fragment, useCallback, Children } from 'react';
|
|
2
2
|
import styled, { css } from 'styled-components';
|
|
3
|
-
import { b as DISPLAY_TITLES, T as Theme, U as usePendingStore, V as useNotificationStore, O as useDrawerStore, B as BUTTON_TEXTS, W as useEntityStore, A as ACTION_OPTIONS, g as getActionIcon, z as useModalStore, F as FORM_ALERTS, X as useFilterStore, D as DISPLAY_LANGUAGES, M as MONITORS_OPTIONS, d as getInstrumentationRuleIcon, Y as useDataStreamStore, Z as useInstrumentStore, c as getEntityId, S as STORAGE_KEYS, a as DEFAULT_DATA_STREAM_NAME, _ as useSetupStore, e as getProgrammingLanguageIcon, I as INSTRUMENTATION_RULE_OPTIONS, $ as useSelectedStore,
|
|
3
|
+
import { b as DISPLAY_TITLES, T as Theme, U as usePendingStore, V as useNotificationStore, O as useDrawerStore, B as BUTTON_TEXTS, W as useEntityStore, A as ACTION_OPTIONS, g as getActionIcon, z as useModalStore, F as FORM_ALERTS, X as useFilterStore, D as DISPLAY_LANGUAGES, M as MONITORS_OPTIONS, d as getInstrumentationRuleIcon, Y as useDataStreamStore, Z as useInstrumentStore, c as getEntityId, S as STORAGE_KEYS, a as DEFAULT_DATA_STREAM_NAME, _ as useSetupStore, e as getProgrammingLanguageIcon, I as INSTRUMENTATION_RULE_OPTIONS, $ as useSelectedStore, k as ImageErrorIcon, a0 as useDarkMode } from './index-8dad36e5.js';
|
|
4
4
|
import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, EdgeTypes, AddNodeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind } from './types.js';
|
|
5
|
-
import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, $ as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a5 as FlexColumn, M as Modal, N as NavigationButtons, a9 as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a4 as FlexRow, a1 as Tooltip, s as IconWrapped, G as MonitorsIcons, aa as TableContainer, ab as TableTitleWrap, r as IconTitleBadge, ac as TableWrap, y as InteractiveTable, a6 as CenterThis, J as NoDataFound, a2 as TraceLoader, a as Badge, E as ExtendArrow, a7 as VerticalScroll, U as SelectionButton, B as Button, n as Dropdown, ad as nodeConfig, ae as useNodesState, af as useEdgesState, ag as Flow, ah as applyNodeChanges, P as Popup, a0 as Toggle, I as IconButton, ai as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, aj as MarkerType, t as IconsNav, ak as CopyText, h as DescribeRow, al as PodContainer, am as SourceContainer, q as IconGroup, O as PopupForm } from './index-
|
|
6
|
-
import { i as isEmpty, s as safeJsonParse } from './index-
|
|
7
|
-
import { C as CheckCircledIcon, O as OdigosLogo } from './index-
|
|
8
|
-
import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-
|
|
5
|
+
import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, $ as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a5 as FlexColumn, M as Modal, N as NavigationButtons, a9 as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a4 as FlexRow, a1 as Tooltip, s as IconWrapped, G as MonitorsIcons, aa as TableContainer, ab as TableTitleWrap, r as IconTitleBadge, ac as TableWrap, y as InteractiveTable, a6 as CenterThis, J as NoDataFound, a2 as TraceLoader, a as Badge, E as ExtendArrow, a7 as VerticalScroll, U as SelectionButton, B as Button, n as Dropdown, ad as nodeConfig, ae as useNodesState, af as useEdgesState, ag as Flow, ah as applyNodeChanges, P as Popup, a0 as Toggle, I as IconButton, ai as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, aj as MarkerType, t as IconsNav, ak as CopyText, h as DescribeRow, al as PodContainer, am as SourceContainer, q as IconGroup, O as PopupForm } from './index-13d8ebb2.js';
|
|
6
|
+
import { i as isEmpty, s as safeJsonParse, d as deepClone } from './index-5e5f7bda.js';
|
|
7
|
+
import { C as CheckCircledIcon, O as OdigosLogo } from './index-4e685db0.js';
|
|
8
|
+
import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-d78c60e1.js';
|
|
9
9
|
import { useActionFormData, useSessionStorage, useDataStreamFormData, useDestinationFormData, useClickNotification, useSourceFormData, useSourceSelectionFormData } from './hooks.js';
|
|
10
|
-
import { u as useKeyDown, a as useOnClickOutside, b as useContainerSize, c as useClickNode, d as usePopup, e as useInstrumentationRuleFormData, f as useTransition, g as useTimeAgo, h as useCopy, i as useGenericForm } from './useTransition-
|
|
11
|
-
import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon,
|
|
12
|
-
import { D as DeleteWarning, C as CancelWarning } from './index-
|
|
13
|
-
import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, h as splitCamelString, c as capitalizeFirstLetter, i as isStringABoolean, p as parseBooleanFromString } from './index-
|
|
14
|
-
import { f as filterActions,
|
|
10
|
+
import { u as useKeyDown, a as useOnClickOutside, b as useContainerSize, c as useClickNode, d as usePopup, e as useInstrumentationRuleFormData, f as useTransition, g as useTimeAgo, h as useCopy, i as useGenericForm } from './useTransition-985cc4a8.js';
|
|
11
|
+
import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-b44c0701.js';
|
|
12
|
+
import { D as DeleteWarning, C as CancelWarning } from './index-53f817d1.js';
|
|
13
|
+
import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, h as splitCamelString, c as capitalizeFirstLetter, i as isStringABoolean, p as parseBooleanFromString } from './index-23b2865d.js';
|
|
14
|
+
import { f as filterActions, l as getEntityLabel, k as getEntityIcon, v as sleep, n as getPlatformIcon, o as getPlatformLabel, g as formatBytes, i as getContainersIcons, p as getValueForRange, j as getDestinationIcon, e as filterSourcesByStream, d as filterSources, b as filterDestinationsByStream, a as filterDestinations, u as mapDestinationFieldsForDisplay, c as compareCondition, r as getYamlFieldsForDestination, m as getMetricForEntity, q as getWorkloadId, s as hasUnhealthyInstances, h as getContainersInstrumentedCount, t as isOverTime } from './index-cfdd4195.js';
|
|
15
15
|
import { m as mapExportedSignals } from './index-6a6bea6e.js';
|
|
16
16
|
import { NoteBackToSummary, EditButton } from './snippets.js';
|
|
17
17
|
import { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
|
|
18
|
-
import { a6 as RulesIcon,
|
|
18
|
+
import { a6 as RulesIcon, a3 as SourcesIcon, a5 as ActionsIcon, a4 as DestinationsIcon } from './index-ff8fcc81.js';
|
|
19
19
|
import 'react-dom';
|
|
20
20
|
|
|
21
21
|
const buildCard$3 = (action) => {
|
|
@@ -4710,7 +4710,7 @@ const SystemOverview = ({ tokens, saveToken, fetchDescribeOdigos }) => {
|
|
|
4710
4710
|
const [isOpen, setIsOpen] = useState(false);
|
|
4711
4711
|
const toggleOpen = () => setIsOpen((prev) => !prev);
|
|
4712
4712
|
return (React.createElement(React.Fragment, null,
|
|
4713
|
-
React.createElement(IconButton, { key:
|
|
4713
|
+
React.createElement(IconButton, { key: TITLE_TEXT, onClick: toggleOpen, tooltip: TITLE_TEXT },
|
|
4714
4714
|
React.createElement(TerminalIcon, { size: 18 })),
|
|
4715
4715
|
React.createElement(Drawer, { width: DRAWER_WIDTH, isOpen: isOpen, onClose: toggleOpen, header: {
|
|
4716
4716
|
icons: [TerminalIcon],
|
package/lib/functions.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isStringABoolean, d as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, e as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, h as splitCamelString } from './index-
|
|
2
|
-
export { c as compareCondition,
|
|
3
|
-
export {
|
|
1
|
+
export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isStringABoolean, d as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, e as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, h as splitCamelString } from './index-23b2865d.js';
|
|
2
|
+
export { c as compareCondition, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, d as filterSources, e as filterSourcesByStream, g as formatBytes, i as getContainersIcons, h as getContainersInstrumentedCount, j as getDestinationIcon, k as getEntityIcon, l as getEntityLabel, m as getMetricForEntity, n as getPlatformIcon, o as getPlatformLabel, p as getValueForRange, q as getWorkloadId, r as getYamlFieldsForDestination, s as hasUnhealthyInstances, t as isOverTime, u as mapDestinationFieldsForDisplay, v as sleep } from './index-cfdd4195.js';
|
|
3
|
+
export { d as deepClone, i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
|
|
4
|
+
export { g as getActionIcon, c as getEntityId, d as getInstrumentationRuleIcon, e as getProgrammingLanguageIcon } from './index-8dad36e5.js';
|
|
4
5
|
export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
|
|
5
6
|
import { ProgrammingLanguages, EntityTypes } from './types.js';
|
|
6
|
-
export { i as isEmpty, s as safeJsonParse } from './index-ec555530.js';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'styled-components';
|
|
9
|
-
import './index-
|
|
10
|
-
import './index-
|
|
9
|
+
import './index-4e685db0.js';
|
|
10
|
+
import './index-ff8fcc81.js';
|
|
11
11
|
|
|
12
12
|
const cleanObjectEmptyStringsValues = (obj) => {
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
package/lib/hooks.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ActionKeyTypes, ActionType, StatusType, EntityTypes, FieldTypes } from './types.js';
|
|
2
|
-
import { V as useNotificationStore, F as FORM_ALERTS, O as useDrawerStore, W as useEntityStore, Y as useDataStreamStore, _ as useSetupStore } from './index-
|
|
2
|
+
import { V as useNotificationStore, F as FORM_ALERTS, O as useDrawerStore, W as useEntityStore, Y as useDataStreamStore, _ as useSetupStore } from './index-8dad36e5.js';
|
|
3
3
|
import { useState, useEffect, useMemo } from 'react';
|
|
4
4
|
import 'styled-components';
|
|
5
|
-
import { i as isEmpty, s as safeJsonParse } from './index-
|
|
6
|
-
import { i as useGenericForm } from './useTransition-
|
|
7
|
-
export { c as useClickNode, b as useContainerSize, h as useCopy, e as useInstrumentationRuleFormData, u as useKeyDown, a as useOnClickOutside, d as usePopup, g as useTimeAgo, f as useTransition } from './useTransition-
|
|
5
|
+
import { i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
|
|
6
|
+
import { i as useGenericForm } from './useTransition-985cc4a8.js';
|
|
7
|
+
export { c as useClickNode, b as useContainerSize, h as useCopy, e as useInstrumentationRuleFormData, u as useKeyDown, a as useOnClickOutside, d as usePopup, g as useTimeAgo, f as useTransition } from './useTransition-985cc4a8.js';
|
|
8
8
|
import { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
|
|
9
9
|
|
|
10
10
|
const INITIAL$2 = {
|
|
@@ -9,6 +9,7 @@ export * from './edited-icon';
|
|
|
9
9
|
export * from './extend-arrow-icon';
|
|
10
10
|
export * from './filter-icon';
|
|
11
11
|
export * from './folder-icon';
|
|
12
|
+
export * from './gear-icon';
|
|
12
13
|
export * from './image-error-icon';
|
|
13
14
|
export * from './key-icon';
|
|
14
15
|
export * from './list-icon';
|
package/lib/icons.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { T as Theme } from './index-
|
|
2
|
-
export {
|
|
3
|
-
export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-
|
|
4
|
-
export { C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-
|
|
5
|
-
export { A as ArrowIcon, h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-1fcb0269.js';
|
|
1
|
+
import { T as Theme } from './index-8dad36e5.js';
|
|
2
|
+
export { h as AddClusterInfoIcon, n as CPlusPlusLogo, o as CSharpLogo, C as CodeAttributesIcon, l as CustomInstrumentationIcon, i as DeleteAttributeIcon, p as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, k as ImageErrorIcon, J as JavaLogo, f as K8sLogo, K as KafkaLogo, q as MysqlLogo, N as NginxLogo, r as NodejsLogo, m as PayloadCollectionIcon, s as PhpLogo, P as PiiMaskingIcon, t as PostgresLogo, u as PythonLogo, v as RedisLogo, R as RenameAttributeIcon, w as RubyLogo, x as RustLogo, j as SamplerIcon, y as SwiftLogo } from './index-8dad36e5.js';
|
|
3
|
+
export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-4e685db0.js';
|
|
4
|
+
export { A as ArrowIcon, C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-d78c60e1.js';
|
|
6
5
|
import React from 'react';
|
|
7
|
-
export {
|
|
6
|
+
export { h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-b44c0701.js';
|
|
7
|
+
export { a5 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, i as AwsCloudwatchLogo, S as AwsS3Logo, a1 as AwsXrayLogo, c as AxiomLogo, d as BetterStackLogo, B as BlobStorageLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, a4 as DestinationsIcon, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, F as GigapipeLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, a2 as NamespacesIcon, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, O as OpenTelemetryLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, R as QuickwitLogo, a6 as RulesIcon, T as SeqLogo, U as SignozLogo, a3 as SourcesIcon, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo, a7 as VmLogo } from './index-ff8fcc81.js';
|
|
8
8
|
import './types.js';
|
|
9
9
|
import 'styled-components';
|
|
10
10
|
|
|
@@ -36,6 +36,14 @@ const FolderIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }
|
|
|
36
36
|
React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M1.5 7.96504C1.5 6.28488 1.5 5.4448 1.82698 4.80307C2.1146 4.23858 2.57354 3.77964 3.13803 3.49202C3.77976 3.16504 4.61984 3.16504 6.3 3.16504H6.53667C6.88887 3.16504 7.06498 3.16504 7.22483 3.21358C7.36634 3.25656 7.49799 3.32702 7.61225 3.42093C7.74131 3.527 7.83899 3.67353 8.03436 3.96658L8.46564 4.6135C8.66101 4.90655 8.75869 5.05308 8.88775 5.15915C9.00201 5.25306 9.13366 5.32352 9.27517 5.36649C9.43502 5.41504 9.61113 5.41504 9.96333 5.41504H11.7C13.3802 5.41504 14.2202 5.41504 14.862 5.74202C15.4265 6.02964 15.8854 6.48858 16.173 7.05307C16.5 7.6948 16.5 8.53488 16.5 10.215V11.865C16.5 13.5452 16.5 14.3853 16.173 15.027C15.8854 15.5915 15.4265 16.0504 14.862 16.3381C14.2202 16.665 13.3802 16.665 11.7 16.665H6.3C4.61984 16.665 3.77976 16.665 3.13803 16.3381C2.57354 16.0504 2.1146 15.5915 1.82698 15.027C1.5 14.3853 1.5 13.5452 1.5 11.865V7.96504Z' })));
|
|
37
37
|
};
|
|
38
38
|
|
|
39
|
+
const GearIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
|
|
40
|
+
const theme = Theme.useTheme();
|
|
41
|
+
const fill = f || theme.text.secondary;
|
|
42
|
+
return (React.createElement("svg", { width: size, height: size, viewBox: '0 0 24 24', xmlns: 'http://www.w3.org/2000/svg', fill: 'none', style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
|
|
43
|
+
React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M10.3982 4.27916C10.7851 2.57361 13.2149 2.57361 13.6018 4.27916L13.6531 4.50528C13.9038 5.61045 15.1719 6.13573 16.1306 5.53151L16.3268 5.40789C17.8064 4.47545 19.5246 6.19363 18.5921 7.6732L18.4685 7.86935C17.8643 8.82809 18.3895 10.0962 19.4947 10.3469L19.7208 10.3982C21.4264 10.7851 21.4264 13.2149 19.7208 13.6018L19.4947 13.6531C18.3895 13.9038 17.8643 15.1719 18.4685 16.1306L18.5921 16.3268C19.5246 17.8064 17.8064 19.5246 16.3268 18.5921L16.1306 18.4685C15.1719 17.8643 13.9038 18.3895 13.6531 19.4947L13.6018 19.7208C13.2149 21.4264 10.7851 21.4264 10.3982 19.7208L10.3469 19.4947C10.0962 18.3895 8.82809 17.8643 7.86935 18.4685L7.6732 18.5921C6.19363 19.5246 4.47545 17.8064 5.40789 16.3268L5.53151 16.1306C6.13573 15.1719 5.61045 13.9038 4.50528 13.6531L4.27916 13.6018C2.57361 13.2149 2.57361 10.7851 4.27916 10.3982L4.50528 10.3469C5.61045 10.0962 6.13573 8.82809 5.53151 7.86935L5.40789 7.6732C4.47544 6.19363 6.19363 4.47545 7.6732 5.40789L7.86935 5.53151C8.82809 6.13573 10.0962 5.61045 10.3469 4.50528L10.3982 4.27916Z' }),
|
|
44
|
+
React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M10.9909 12C10.9909 11.4477 11.4478 11 12 11C12.5523 11 13.0092 11.4477 13.0092 12C13.0092 12.5523 12.5523 13 12 13C11.4478 13 10.9909 12.5523 10.9909 12Z' })));
|
|
45
|
+
};
|
|
46
|
+
|
|
39
47
|
const RefreshArrowsIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
|
|
40
48
|
const theme = Theme.useTheme();
|
|
41
49
|
const fill = f || theme.text.secondary;
|
|
@@ -167,4 +175,4 @@ const ErrorRoundIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth =
|
|
|
167
175
|
React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M7 8.33673V6.00339M7 10.3055V10.3061M12.25 7.97266C12.25 10.8722 9.89949 13.2227 7 13.2227C4.1005 13.2227 1.75 10.8721 1.75 7.97265C1.75 5.07316 4.10051 2.72266 7 2.72266C9.8995 2.72266 12.25 5.07316 12.25 7.97266Z' })));
|
|
168
176
|
};
|
|
169
177
|
|
|
170
|
-
export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, TraceViewIcon, UserGroupIcon, UserSettingsIcon };
|
|
178
|
+
export { AvatarIcon, CodeBracketsIcon, CommandIcon, ConnectionsIcon, ErrorRoundIcon, FolderIcon, GearIcon, GoogleCloudStorageLogo, LightOffIcon, LightOnIcon, MinusCircledIcon, MoonIcon, PlusCircledIcon, RefreshArrowsIcon, RefreshRightArrowIcon, RotateArrowsIcon, SentryLogo, ServiceMapIcon, SunIcon, TraceViewIcon, UserGroupIcon, UserSettingsIcon };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef, forwardRef, useMemo, createElement, useCallback, Fragment, createContext, memo, useContext, useLayoutEffect } from 'react';
|
|
2
|
-
import { T as Theme, B as BUTTON_TEXTS,
|
|
3
|
-
import { StatusType, OtherStatus, EntityTypes, NodeTypes, AddNodeTypes, EdgeTypes, ProgrammingLanguages, IntrumentationStatus, SortDirection, InputTypes, FieldTypes } from './types.js';
|
|
4
|
-
import { M as MinusIcon$1, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, P as PlusIcon$1, a as CopyIcon, E as EditIcon, b as EditedIcon, e as SortArrowsIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, i as CrossIcon, S as SearchIcon, T as TrashIcon, A as ArrowIcon } from './index-1fcb0269.js';
|
|
5
|
-
import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isStringABoolean, p as parseBooleanFromString, d as isValidVersion, h as splitCamelString, e as parseJsonStringToPrettyString, n as numbersOnly } from './index-58440c5c.js';
|
|
2
|
+
import { T as Theme, B as BUTTON_TEXTS, k as ImageErrorIcon, M as MONITORS_OPTIONS, a1 as styleInject, U as usePendingStore, $ as useSelectedStore, Z as useInstrumentStore, Q as useActiveNodeStore, V as useNotificationStore, b as DISPLAY_TITLES, L as LANGUAGE_OPTIONS, F as FORM_ALERTS, D as DISPLAY_LANGUAGES, e as getProgrammingLanguageIcon } from './index-8dad36e5.js';
|
|
6
3
|
import styled, { css } from 'styled-components';
|
|
7
|
-
import {
|
|
4
|
+
import { M as MinusIcon$1, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, P as PlusIcon$1, a as CopyIcon, E as EditIcon, b as EditedIcon, e as SortArrowsIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, i as CrossIcon, S as SearchIcon, T as TrashIcon } from './index-b44c0701.js';
|
|
5
|
+
import { StatusType, OtherStatus, EntityTypes, NodeTypes, AddNodeTypes, EdgeTypes, ProgrammingLanguages, IntrumentationStatus, SortDirection, InputTypes, FieldTypes } from './types.js';
|
|
6
|
+
import { s as safeJsonParse, i as isEmpty } from './index-5e5f7bda.js';
|
|
7
|
+
import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isStringABoolean, p as parseBooleanFromString, d as isValidVersion, h as splitCamelString, e as parseJsonStringToPrettyString, n as numbersOnly } from './index-23b2865d.js';
|
|
8
8
|
import ReactDOM, { createPortal } from 'react-dom';
|
|
9
|
-
import { d as usePopup, h as useCopy, c as useClickNode, i as useGenericForm, b as useContainerSize, f as useTransition, u as useKeyDown, a as useOnClickOutside } from './useTransition-
|
|
10
|
-
import { I as InfoIcon } from './index-
|
|
9
|
+
import { d as usePopup, h as useCopy, c as useClickNode, i as useGenericForm, b as useContainerSize, f as useTransition, u as useKeyDown, a as useOnClickOutside } from './useTransition-985cc4a8.js';
|
|
10
|
+
import { I as InfoIcon } from './index-4e685db0.js';
|
|
11
11
|
|
|
12
12
|
const TextWrapper$2 = styled.div `
|
|
13
13
|
color: ${({ $color, theme }) => $color || theme.text.secondary};
|
|
@@ -39,7 +39,7 @@ const AutocompleteContainer = styled.div `
|
|
|
39
39
|
position: relative;
|
|
40
40
|
width: 100%;
|
|
41
41
|
`;
|
|
42
|
-
const InputWrapper$
|
|
42
|
+
const InputWrapper$3 = styled.div `
|
|
43
43
|
width: calc(100% - 16px);
|
|
44
44
|
display: flex;
|
|
45
45
|
align-items: center;
|
|
@@ -187,7 +187,7 @@ const AutocompleteInput = ({ placeholder = 'Type to search...', options, selecte
|
|
|
187
187
|
return;
|
|
188
188
|
};
|
|
189
189
|
return (React.createElement(AutocompleteContainer, { style: style },
|
|
190
|
-
React.createElement(InputWrapper$
|
|
190
|
+
React.createElement(InputWrapper$3, { "$hasError": !!errorMessage },
|
|
191
191
|
Icon && React.createElement(Icon, null),
|
|
192
192
|
React.createElement(StyledInput$1, { type: 'text', value: query, placeholder: placeholder, onChange: handleChange, onKeyDown: handleKeyDown, disabled: disabled, onBlur: () => !disabled && setShowOptions(false), onFocus: () => !disabled && setShowOptions(true), ...props })),
|
|
193
193
|
showOptions && filteredOptions.length ? (React.createElement(OptionsList, null, filteredOptions.map((option) => (React.createElement(OptionItem, { key: option.type || option.label, option: option, onClick: handleOptionClick }))))) : null,
|
|
@@ -17391,7 +17391,7 @@ const Title$6 = styled(Text) `
|
|
|
17391
17391
|
white-space: nowrap;
|
|
17392
17392
|
text-overflow: ellipsis;
|
|
17393
17393
|
`;
|
|
17394
|
-
const ActionButton$
|
|
17394
|
+
const ActionButton$3 = styled(Button$4) `
|
|
17395
17395
|
gap: 8px;
|
|
17396
17396
|
`;
|
|
17397
17397
|
const CloseButton = styled(Button$4) ``;
|
|
@@ -17412,7 +17412,7 @@ const DrawerHeader = ({ onClose, icons, iconSrcs, title, titleTooltip, replaceTi
|
|
|
17412
17412
|
renderReplaceTitleWith() || (React.createElement(Tooltip, { text: titleTooltip, withIcon: true }, title && React.createElement(Title$6, null, title)))),
|
|
17413
17413
|
React.createElement(SectionItemsWrapper, { "$gap": 2 },
|
|
17414
17414
|
actions,
|
|
17415
|
-
actionButtons.map((btn, i) => (React.createElement(ActionButton$
|
|
17415
|
+
actionButtons.map((btn, i) => (React.createElement(ActionButton$3, { key: `header-action-button-${i}`, ...btn }))),
|
|
17416
17416
|
React.createElement(CloseButton, { "data-id": 'drawer-close', variant: 'secondary', onClick: onClose },
|
|
17417
17417
|
React.createElement(XIcon, { size: 12 })))),
|
|
17418
17418
|
React.createElement(TabList, { tabs: tabs, hideBorder: true })));
|
|
@@ -17529,7 +17529,7 @@ const Container$g = styled.div `
|
|
|
17529
17529
|
position: relative;
|
|
17530
17530
|
width: 100%;
|
|
17531
17531
|
`;
|
|
17532
|
-
const InputWrapper$
|
|
17532
|
+
const InputWrapper$2 = styled.div `
|
|
17533
17533
|
width: 100%;
|
|
17534
17534
|
display: flex;
|
|
17535
17535
|
align-items: center;
|
|
@@ -17540,7 +17540,6 @@ const InputWrapper$1 = styled.div `
|
|
|
17540
17540
|
border: 1px solid ${({ theme }) => theme.colors.border};
|
|
17541
17541
|
${({ $disabled }) => $disabled &&
|
|
17542
17542
|
css `
|
|
17543
|
-
background-color: ${({ theme }) => theme.colors.border};
|
|
17544
17543
|
cursor: not-allowed;
|
|
17545
17544
|
opacity: 0.6;
|
|
17546
17545
|
`}
|
|
@@ -17562,6 +17561,8 @@ const InputWrapper$1 = styled.div `
|
|
|
17562
17561
|
const StyledInput = styled.input `
|
|
17563
17562
|
padding-left: ${({ $hasIcon }) => ($hasIcon ? '0' : '16px')};
|
|
17564
17563
|
flex: 1;
|
|
17564
|
+
min-width: 150px;
|
|
17565
|
+
width: 100%;
|
|
17565
17566
|
border: none;
|
|
17566
17567
|
outline: none;
|
|
17567
17568
|
background: none;
|
|
@@ -17578,8 +17579,8 @@ const StyledInput = styled.input `
|
|
|
17578
17579
|
line-height: 22px; /* 157.143% */
|
|
17579
17580
|
}
|
|
17580
17581
|
&:disabled {
|
|
17581
|
-
background-color: ${({ theme }) => theme.colors.border};
|
|
17582
17582
|
cursor: not-allowed;
|
|
17583
|
+
opacity: 0.6;
|
|
17583
17584
|
}
|
|
17584
17585
|
&::-webkit-inner-spin-button,
|
|
17585
17586
|
&::-webkit-outer-spin-button {
|
|
@@ -17628,7 +17629,7 @@ const Input = ({ icon: Icon, buttonLabel, onButtonClick, hasError, errorMessage,
|
|
|
17628
17629
|
};
|
|
17629
17630
|
return (React.createElement(Container$g, null,
|
|
17630
17631
|
React.createElement(FieldLabel, { title: title, required: required, tooltip: tooltip }),
|
|
17631
|
-
React.createElement(InputWrapper$
|
|
17632
|
+
React.createElement(InputWrapper$2, { "$disabled": props.disabled, "$hasError": hasError || !!errorMessage, "$isActive": !!props.autoFocus },
|
|
17632
17633
|
isSecret ? (React.createElement(IconWrapperClickable, { onClick: () => setRevealSecret((prev) => !prev) }, revealSecret ? React.createElement(EyeClosedIcon, { size: 14, fill: theme.text.grey }) : React.createElement(EyeOpenIcon, { size: 14, fill: theme.text.grey }))) : Icon ? (React.createElement(IconWrapper$2, null,
|
|
17633
17634
|
React.createElement(Icon, { size: 14, fill: theme.text.grey }))) : null,
|
|
17634
17635
|
React.createElement(StyledInput, { "data-id": name, type: revealSecret ? InputTypes.Text : type === InputTypes.Number ? InputTypes.Text : type, "$hasIcon": !!Icon || isSecret, name: name, value: value, onChange: handleInputChange, onKeyDown: handleKeyDown, ...props }),
|
|
@@ -17918,11 +17919,9 @@ const RowWrapper$1 = styled.div `
|
|
|
17918
17919
|
align-items: center;
|
|
17919
17920
|
gap: 16px;
|
|
17920
17921
|
`;
|
|
17921
|
-
const
|
|
17922
|
-
|
|
17923
|
-
|
|
17924
|
-
cursor: ${({ disabled }) => (disabled ? 'not-allowed' : 'pointer')};
|
|
17925
|
-
opacity: ${({ disabled }) => (disabled ? 0.5 : 1)};
|
|
17922
|
+
const ActionButton$2 = styled(IconButton) `
|
|
17923
|
+
cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};
|
|
17924
|
+
opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};
|
|
17926
17925
|
`;
|
|
17927
17926
|
const INITIAL_ROW$1 = '';
|
|
17928
17927
|
const InputList = ({ initialValues = [], value, onChange, title, tooltip, required, errorMessage }) => {
|
|
@@ -17943,23 +17942,28 @@ const InputList = ({ initialValues = [], value, onChange, title, tooltip, requir
|
|
|
17943
17942
|
onChange(validRows);
|
|
17944
17943
|
}
|
|
17945
17944
|
}, [validRows, onChange]);
|
|
17946
|
-
const
|
|
17945
|
+
const handleChange = (val, idx) => {
|
|
17947
17946
|
setRows((prev) => {
|
|
17948
17947
|
const payload = [...prev];
|
|
17949
|
-
payload
|
|
17948
|
+
payload[idx] = val;
|
|
17950
17949
|
return payload;
|
|
17951
17950
|
});
|
|
17952
17951
|
};
|
|
17953
|
-
const
|
|
17954
|
-
setRows((prev) => prev.filter((_, i) => i !== idx));
|
|
17955
|
-
};
|
|
17956
|
-
const handleInputChange = (val, idx) => {
|
|
17952
|
+
const handleAdd = () => {
|
|
17957
17953
|
setRows((prev) => {
|
|
17958
17954
|
const payload = [...prev];
|
|
17959
|
-
payload
|
|
17955
|
+
payload.push(INITIAL_ROW$1);
|
|
17960
17956
|
return payload;
|
|
17961
17957
|
});
|
|
17962
17958
|
};
|
|
17959
|
+
const handleDelete = (idx) => {
|
|
17960
|
+
if (isMinRows) {
|
|
17961
|
+
handleChange('', idx);
|
|
17962
|
+
}
|
|
17963
|
+
else {
|
|
17964
|
+
setRows((prev) => prev.filter((_, i) => i !== idx));
|
|
17965
|
+
}
|
|
17966
|
+
};
|
|
17963
17967
|
// Check if any input field is empty
|
|
17964
17968
|
const isMinRows = rows.length <= 1;
|
|
17965
17969
|
const isAddButtonDisabled = rows.some((input) => input.trim() === '');
|
|
@@ -17969,19 +17973,13 @@ const InputList = ({ initialValues = [], value, onChange, title, tooltip, requir
|
|
|
17969
17973
|
React.createElement(ListContainer$2, null, rows.map((val, idx) => {
|
|
17970
17974
|
const isLast = idx === rows.length - 1;
|
|
17971
17975
|
return (React.createElement(RowWrapper$1, { key: `input-list-${idx}` },
|
|
17972
|
-
React.createElement(Input, { value: val, onChange: (e) =>
|
|
17973
|
-
React.createElement(
|
|
17974
|
-
|
|
17975
|
-
|
|
17976
|
-
}
|
|
17977
|
-
else {
|
|
17978
|
-
handleDeleteInput(idx);
|
|
17979
|
-
}
|
|
17980
|
-
} },
|
|
17976
|
+
React.createElement(Input, { value: val, onChange: (e) => handleChange(e.target.value, idx), hasError: !!errorMessage, autoFocus: isEmpty(val) && !isMinRows && isLast }),
|
|
17977
|
+
idx === rows.length - 1 && (React.createElement(ActionButton$2, { withBorder: true, size: 30, "$disabled": isAddButtonDisabled, onClick: isAddButtonDisabled ? undefined : () => handleAdd() },
|
|
17978
|
+
React.createElement(PlusIcon$1, null))),
|
|
17979
|
+
React.createElement(ActionButton$2, { size: 30, "$disabled": isDelButtonDisabled, onClick: isDelButtonDisabled ? undefined : () => handleDelete(idx) },
|
|
17981
17980
|
React.createElement(TrashIcon, null))));
|
|
17982
17981
|
})),
|
|
17983
|
-
!!errorMessage && React.createElement(FieldError, null, errorMessage)
|
|
17984
|
-
React.createElement(AddButton$1, { onClick: handleAddInput, disabled: isAddButtonDisabled })));
|
|
17982
|
+
!!errorMessage && React.createElement(FieldError, null, errorMessage)));
|
|
17985
17983
|
};
|
|
17986
17984
|
|
|
17987
17985
|
const ColumnsToFields = ({ col, colIdx, row, rowIdx, rowsLength, maxWidth, handleChange, errorMessage, limitFieldsPerRow }) => {
|
|
@@ -18010,7 +18008,7 @@ const Container$b = styled.div `
|
|
|
18010
18008
|
flex-direction: column;
|
|
18011
18009
|
width: 100%;
|
|
18012
18010
|
`;
|
|
18013
|
-
const DeleteButton
|
|
18011
|
+
const DeleteButton = styled.button `
|
|
18014
18012
|
margin-top: ${({ $marginTop }) => $marginTop};
|
|
18015
18013
|
background: none;
|
|
18016
18014
|
border: none;
|
|
@@ -18110,7 +18108,7 @@ const InputTable = ({ columns, initialValues = [], value, onChange, errorMessage
|
|
|
18110
18108
|
matrixColumns.map((cols, colIdx) => (React.createElement("tr", { key: `input-table-matrix-${rowIdx}-${colIdx}` },
|
|
18111
18109
|
cols.map((obj, colIdx) => (React.createElement(ColumnsToFields, { key: `input-table-row-${rowIdx}-col-${colIdx}`, col: obj, colIdx: colIdx, row: row, rowIdx: rowIdx, rowsLength: rows.length, maxWidth: maxWidth, limitFieldsPerRow: limitFieldsPerRow, errorMessage: errorMessage, handleChange: handleChange }))),
|
|
18112
18110
|
colIdx === 0 && (React.createElement("td", null,
|
|
18113
|
-
React.createElement(DeleteButton
|
|
18111
|
+
React.createElement(DeleteButton, { "$marginTop": limitFieldsPerRow ? '24px' : '0', onClick: () => handleDeleteRow(rowIdx) },
|
|
18114
18112
|
React.createElement(TrashIcon, null)))))))))))),
|
|
18115
18113
|
!!errorMessage && React.createElement(FieldError, null, errorMessage),
|
|
18116
18114
|
React.createElement(AddButton$1, { onClick: handleAddRow, disabled: isAddButtonDisabled })));
|
|
@@ -18129,21 +18127,21 @@ const ListContainer$1 = styled.div `
|
|
|
18129
18127
|
const RowWrapper = styled.div `
|
|
18130
18128
|
display: flex;
|
|
18131
18129
|
align-items: center;
|
|
18132
|
-
gap:
|
|
18130
|
+
gap: 8px;
|
|
18133
18131
|
`;
|
|
18134
|
-
const
|
|
18135
|
-
|
|
18136
|
-
|
|
18137
|
-
|
|
18138
|
-
|
|
18139
|
-
|
|
18132
|
+
const InputWrapper$1 = styled.div `
|
|
18133
|
+
width: 100%;
|
|
18134
|
+
max-width: ${({ $maxWidth }) => ($maxWidth ? `${$maxWidth}px` : 'unset')};
|
|
18135
|
+
`;
|
|
18136
|
+
const ActionButton$1 = styled(IconButton) `
|
|
18137
|
+
cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};
|
|
18138
|
+
opacity: ${({ $disabled }) => ($disabled ? 0.5 : 1)};
|
|
18140
18139
|
`;
|
|
18141
18140
|
const INITIAL_ROW = {
|
|
18142
18141
|
key: '',
|
|
18143
18142
|
value: '',
|
|
18144
18143
|
};
|
|
18145
|
-
const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title, tooltip, required, errorMessage, keyPlaceholder = '
|
|
18146
|
-
const theme = Theme.useTheme();
|
|
18144
|
+
const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title, tooltip, disabled, required, errorMessage, keyPlaceholder = 'Key', valuePlaceholder = 'Value', inputMaxWidth = 300, }) => {
|
|
18147
18145
|
const [rows, setRows] = useState(value || initialKeyValuePairs);
|
|
18148
18146
|
useEffect(() => {
|
|
18149
18147
|
if (!rows.length)
|
|
@@ -18161,46 +18159,45 @@ const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title,
|
|
|
18161
18159
|
onChange(validRows);
|
|
18162
18160
|
}
|
|
18163
18161
|
}, [validRows, onChange]);
|
|
18164
|
-
const
|
|
18162
|
+
const handleChange = (key, val, idx) => {
|
|
18165
18163
|
setRows((prev) => {
|
|
18166
18164
|
const payload = [...prev];
|
|
18167
|
-
payload
|
|
18165
|
+
payload[idx][key] = val;
|
|
18168
18166
|
return payload;
|
|
18169
18167
|
});
|
|
18170
18168
|
};
|
|
18171
|
-
const
|
|
18172
|
-
setRows((prev) => prev.filter((_, i) => i !== idx));
|
|
18173
|
-
};
|
|
18174
|
-
const handleChange = (key, val, idx) => {
|
|
18169
|
+
const handleAddRow = () => {
|
|
18175
18170
|
setRows((prev) => {
|
|
18176
18171
|
const payload = [...prev];
|
|
18177
|
-
payload
|
|
18172
|
+
payload.push({ ...INITIAL_ROW });
|
|
18178
18173
|
return payload;
|
|
18179
18174
|
});
|
|
18180
18175
|
};
|
|
18176
|
+
const handleDeleteRow = (idx) => {
|
|
18177
|
+
if (isMinRows) {
|
|
18178
|
+
handleChange('key', '', idx);
|
|
18179
|
+
handleChange('value', '', idx);
|
|
18180
|
+
}
|
|
18181
|
+
else {
|
|
18182
|
+
setRows((prev) => prev.filter((_, i) => i !== idx));
|
|
18183
|
+
}
|
|
18184
|
+
};
|
|
18181
18185
|
// Check if any key or value field is empty
|
|
18182
18186
|
const isMinRows = rows.length <= 1;
|
|
18183
|
-
const isAddButtonDisabled = rows.some(({ key, value }) => key.trim() === '' || value.trim() === '');
|
|
18184
|
-
const isDelButtonDisabled = isMinRows && isAddButtonDisabled;
|
|
18187
|
+
const isAddButtonDisabled = disabled || rows.some(({ key, value }) => key.trim() === '' || value.trim() === '');
|
|
18188
|
+
const isDelButtonDisabled = disabled || (isMinRows && isAddButtonDisabled);
|
|
18185
18189
|
return (React.createElement(Container$a, null,
|
|
18186
18190
|
React.createElement(FieldLabel, { title: title, required: required, tooltip: tooltip }),
|
|
18187
18191
|
React.createElement(ListContainer$1, null, rows.map(({ key, value }, idx) => (React.createElement(RowWrapper, { key: `key-value-input-list-${idx}` },
|
|
18188
|
-
React.createElement(
|
|
18189
|
-
|
|
18190
|
-
|
|
18191
|
-
|
|
18192
|
-
React.createElement(
|
|
18193
|
-
|
|
18194
|
-
|
|
18195
|
-
handleChange('value', '', idx);
|
|
18196
|
-
}
|
|
18197
|
-
else {
|
|
18198
|
-
handleDeleteRow(idx);
|
|
18199
|
-
}
|
|
18200
|
-
} },
|
|
18192
|
+
React.createElement(InputWrapper$1, { "$maxWidth": inputMaxWidth },
|
|
18193
|
+
React.createElement(Input, { placeholder: keyPlaceholder, disabled: disabled, value: key, onChange: (e) => handleChange('key', e.target.value, idx), hasError: !!errorMessage && (!required || (required && !key)), autoFocus: isEmpty(value) && !isMinRows && idx === rows.length - 1 })),
|
|
18194
|
+
React.createElement(InputWrapper$1, { "$maxWidth": idx === rows.length - 1 ? inputMaxWidth - 38 : inputMaxWidth },
|
|
18195
|
+
React.createElement(Input, { placeholder: valuePlaceholder, disabled: disabled, value: value, onChange: (e) => handleChange('value', e.target.value, idx), hasError: !!errorMessage && (!required || (required && isEmpty(value))), autoFocus: false })),
|
|
18196
|
+
idx === rows.length - 1 && (React.createElement(ActionButton$1, { withBorder: true, size: 30, "$disabled": isAddButtonDisabled, onClick: isAddButtonDisabled ? undefined : () => handleAddRow() },
|
|
18197
|
+
React.createElement(PlusIcon$1, null))),
|
|
18198
|
+
React.createElement(ActionButton$1, { size: 30, "$disabled": isDelButtonDisabled, onClick: isDelButtonDisabled ? undefined : () => handleDeleteRow(idx) },
|
|
18201
18199
|
React.createElement(TrashIcon, null)))))),
|
|
18202
|
-
!!errorMessage && React.createElement(FieldError, null, errorMessage)
|
|
18203
|
-
React.createElement(AddButton$1, { onClick: handleAddRow, disabled: isAddButtonDisabled })));
|
|
18200
|
+
!!errorMessage && React.createElement(FieldError, null, errorMessage)));
|
|
18204
18201
|
};
|
|
18205
18202
|
|
|
18206
18203
|
const Container$9 = styled.div `
|
|
@@ -18849,8 +18846,7 @@ const Toggle = ({ title, tooltip, initialValue = false, onChange, disabled, allo
|
|
|
18849
18846
|
};
|
|
18850
18847
|
return (React.createElement(Container$2, { "$disabled": disabled, onClick: handleToggle },
|
|
18851
18848
|
!flipHorizontally && React.createElement(ToggleSwitch, { "$disabled": disabled, "$isActive": isActive }),
|
|
18852
|
-
React.createElement(Tooltip, { text: tooltip, withIcon: true },
|
|
18853
|
-
React.createElement(Text, { size: 14 }, title)),
|
|
18849
|
+
(title || tooltip) && (React.createElement(Tooltip, { text: tooltip, withIcon: true }, title && React.createElement(Text, { size: 14 }, title))),
|
|
18854
18850
|
flipHorizontally && React.createElement(ToggleSwitch, { "$disabled": disabled, "$isActive": isActive })));
|
|
18855
18851
|
};
|
|
18856
18852
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StatusType, OtherStatus, SignalType } from './types.js';
|
|
2
2
|
import 'react';
|
|
3
|
-
import './index-
|
|
3
|
+
import './index-8dad36e5.js';
|
|
4
4
|
import 'styled-components';
|
|
5
|
-
import { L as LogsIcon, M as MetricsIcon, T as TracesIcon, C as CheckCircledIcon, E as ErrorTriangleIcon, W as WarningTriangleIcon, I as InfoIcon, O as OdigosLogo } from './index-
|
|
5
|
+
import { L as LogsIcon, M as MetricsIcon, T as TracesIcon, C as CheckCircledIcon, E as ErrorTriangleIcon, W as WarningTriangleIcon, I as InfoIcon, O as OdigosLogo } from './index-4e685db0.js';
|
|
6
6
|
|
|
7
7
|
const capitalizeFirstLetter = (string) => {
|
|
8
8
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { a3 as WarningModal } from './index-
|
|
2
|
+
import { a3 as WarningModal } from './index-13d8ebb2.js';
|
|
3
3
|
import { StatusType, EntityTypes } from './types.js';
|
|
4
|
-
import './index-
|
|
4
|
+
import './index-8dad36e5.js';
|
|
5
5
|
import 'styled-components';
|
|
6
6
|
|
|
7
7
|
const CancelWarning = ({ isOpen, noOverlay, name, onApprove, onDeny }) => {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2
|
+
const deepClone = (item) => {
|
|
3
|
+
return JSON.parse(JSON.stringify(item));
|
|
4
|
+
};
|
|
5
|
+
|
|
1
6
|
function safeJsonParse(val, fallback) {
|
|
2
7
|
if (!val)
|
|
3
8
|
return fallback;
|
|
@@ -31,4 +36,4 @@ const isEmpty = (val) => {
|
|
|
31
36
|
}
|
|
32
37
|
};
|
|
33
38
|
|
|
34
|
-
export { isEmpty as i, safeJsonParse as s };
|
|
39
|
+
export { deepClone as d, isEmpty as i, safeJsonParse as s };
|
|
@@ -1911,4 +1911,4 @@ var animations = /*#__PURE__*/Object.freeze({
|
|
|
1911
1911
|
|
|
1912
1912
|
const Theme = { Provider, useTheme, opacity, animations };
|
|
1913
1913
|
|
|
1914
|
-
export { useSelectedStore as $, ACTION_OPTIONS as A, BUTTON_TEXTS as B, CodeAttributesIcon as C, DISPLAY_LANGUAGES as D, ElixirLogo as E, FORM_ALERTS as F, GoLogo as G, HeadersCollectionIcon as H, INSTRUMENTATION_RULE_OPTIONS as I, JavaLogo as J,
|
|
1914
|
+
export { useSelectedStore as $, ACTION_OPTIONS as A, BUTTON_TEXTS as B, CodeAttributesIcon as C, DISPLAY_LANGUAGES as D, ElixirLogo as E, FORM_ALERTS as F, GoLogo as G, HeadersCollectionIcon as H, INSTRUMENTATION_RULE_OPTIONS as I, JavaLogo as J, KafkaLogo as K, LANGUAGE_OPTIONS as L, MONITORS_OPTIONS as M, NginxLogo as N, useDrawerStore as O, PiiMaskingIcon as P, useActiveNodeStore as Q, RenameAttributeIcon as R, STORAGE_KEYS as S, Theme as T, usePendingStore as U, useNotificationStore as V, useEntityStore as W, useFilterStore as X, useDataStreamStore as Y, useInstrumentStore as Z, useSetupStore as _, DEFAULT_DATA_STREAM_NAME as a, useDarkMode as a0, styleInject as a1, DISPLAY_TITLES as b, getEntityId as c, getInstrumentationRuleIcon as d, getProgrammingLanguageIcon as e, K8sLogo as f, getActionIcon as g, AddClusterInfoIcon as h, DeleteAttributeIcon as i, SamplerIcon as j, ImageErrorIcon as k, CustomInstrumentationIcon as l, PayloadCollectionIcon as m, CPlusPlusLogo as n, CSharpLogo as o, DotnetLogo as p, MysqlLogo as q, NodejsLogo as r, PhpLogo as s, PostgresLogo as t, PythonLogo as u, RedisLogo as v, RubyLogo as w, RustLogo as x, SwiftLogo as y, useModalStore as z };
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { T as Theme } from './index-
|
|
3
|
-
|
|
4
|
-
const ArrowIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
|
|
5
|
-
const theme = Theme.useTheme();
|
|
6
|
-
const fill = f || theme.text.secondary;
|
|
7
|
-
return (React.createElement("svg", { width: size * (9 / 13.5), height: size, viewBox: '0 0 9 13.5', xmlns: 'http://www.w3.org/2000/svg', fill: fill, style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
|
|
8
|
-
React.createElement("path", { d: 'M0.616717 8.03169L0.616717 5.70699L16.1519 5.70699L16.1519 8.03169L0.616717 8.03169ZM8.11144 -2.81613L9.7262 -1.10502L1.45534 6.87054L9.7262 14.9097L8.17631 16.6208L-1.19268 7.5802L-1.19268 6.1921L8.11144 -2.81613Z' })));
|
|
9
|
-
};
|
|
2
|
+
import { T as Theme } from './index-8dad36e5.js';
|
|
10
3
|
|
|
11
4
|
const CodeIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
|
|
12
5
|
const theme = Theme.useTheme();
|
|
@@ -142,4 +135,4 @@ const CrossIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 })
|
|
|
142
135
|
React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M4 12L8 8M8 8L12 4M8 8L4 4M8 8L12 12' })));
|
|
143
136
|
};
|
|
144
137
|
|
|
145
|
-
export {
|
|
138
|
+
export { CodeIcon as C, EditIcon as E, ListIcon as L, MinusIcon as M, NoDataIcon as N, PlusIcon as P, SearchIcon as S, TrashIcon as T, XIcon as X, CopyIcon as a, EditedIcon as b, ExtendArrowIcon as c, NotebookIcon as d, SortArrowsIcon as e, EyeClosedIcon as f, EyeOpenIcon as g, CheckIcon as h, CrossIcon as i };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { StatusType, DestinationTypes, EntityTypes, PlatformType } from './types.js';
|
|
2
|
-
import { a as DEFAULT_DATA_STREAM_NAME, e as getProgrammingLanguageIcon,
|
|
2
|
+
import { a as DEFAULT_DATA_STREAM_NAME, e as getProgrammingLanguageIcon, K as KafkaLogo, f as K8sLogo } from './index-8dad36e5.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'styled-components';
|
|
5
|
-
import { A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo,
|
|
6
|
-
import { O as OdigosLogo } from './index-
|
|
7
|
-
import { s as safeJsonParse } from './index-
|
|
5
|
+
import { A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AxiomLogo, B as BlobStorageLogo, d as BetterStackLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, i as AwsCloudwatchLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, O as OpenTelemetryLogo, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, F as GigapipeLogo, R as QuickwitLogo, S as AwsS3Logo, T as SeqLogo, U as SignozLogo, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo, a1 as AwsXrayLogo, a2 as NamespacesIcon, a3 as SourcesIcon, a4 as DestinationsIcon, a5 as ActionsIcon, a6 as RulesIcon, a7 as VmLogo } from './index-ff8fcc81.js';
|
|
6
|
+
import { O as OdigosLogo } from './index-4e685db0.js';
|
|
7
|
+
import { s as safeJsonParse } from './index-5e5f7bda.js';
|
|
8
8
|
|
|
9
9
|
const compareCondition = (renderCondition, fields) => {
|
|
10
10
|
if (!renderCondition || !renderCondition.length)
|
|
@@ -38,11 +38,6 @@ const compareCondition = (renderCondition, fields) => {
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
|
-
const deepClone = (item) => {
|
|
43
|
-
return JSON.parse(JSON.stringify(item));
|
|
44
|
-
};
|
|
45
|
-
|
|
46
41
|
const filterActions = (actions, filters) => {
|
|
47
42
|
let filtered = [...actions];
|
|
48
43
|
if (!!filters.monitors?.length)
|
|
@@ -327,4 +322,4 @@ const mapDestinationFieldsForDisplay = (destination, yamlFields) => {
|
|
|
327
322
|
|
|
328
323
|
const sleep = async (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
329
324
|
|
|
330
|
-
export { filterDestinations as a, filterDestinationsByStream as b, compareCondition as c,
|
|
325
|
+
export { filterDestinations as a, filterDestinationsByStream as b, compareCondition as c, filterSources as d, filterSourcesByStream as e, filterActions as f, formatBytes as g, getContainersInstrumentedCount as h, getContainersIcons as i, getDestinationIcon as j, getEntityIcon as k, getEntityLabel as l, getMetricForEntity as m, getPlatformIcon as n, getPlatformLabel as o, getValueForRange as p, getWorkloadId as q, getYamlFieldsForDestination as r, hasUnhealthyInstances as s, isOverTime as t, mapDestinationFieldsForDisplay as u, sleep as v };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { T as Theme } from './index-
|
|
2
|
+
import { T as Theme } from './index-8dad36e5.js';
|
|
3
3
|
|
|
4
4
|
const OdigosLogoText = ({ size = 16, fill: f, rotate = 0, onClick }) => {
|
|
5
5
|
const theme = Theme.useTheme();
|
|
@@ -21,6 +21,13 @@ const OdigosLogoText = ({ size = 16, fill: f, rotate = 0, onClick }) => {
|
|
|
21
21
|
React.createElement("path", { d: 'M36.6756 64.0307C43.4071 64.0307 48.8641 58.5737 48.8641 51.8422C48.8641 45.1108 43.4071 39.6538 36.6756 39.6538C29.9441 39.6538 24.4872 45.1108 24.4872 51.8422C24.4872 58.5737 29.9441 64.0307 36.6756 64.0307Z' }))));
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
const ArrowIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
|
|
25
|
+
const theme = Theme.useTheme();
|
|
26
|
+
const fill = f || theme.text.secondary;
|
|
27
|
+
return (React.createElement("svg", { width: size * (9 / 13.5), height: size, viewBox: '0 0 9 13.5', xmlns: 'http://www.w3.org/2000/svg', fill: fill, style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
|
|
28
|
+
React.createElement("path", { d: 'M0.616717 8.03169L0.616717 5.70699L16.1519 5.70699L16.1519 8.03169L0.616717 8.03169ZM8.11144 -2.81613L9.7262 -1.10502L1.45534 6.87054L9.7262 14.9097L8.17631 16.6208L-1.19268 7.5802L-1.19268 6.1921L8.11144 -2.81613Z' })));
|
|
29
|
+
};
|
|
30
|
+
|
|
24
31
|
const FilterIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
|
|
25
32
|
const theme = Theme.useTheme();
|
|
26
33
|
const fill = f || theme.text.secondary;
|
|
@@ -97,4 +104,4 @@ const CrossCircledIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth
|
|
|
97
104
|
React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M6.75049 10.0005L8.75049 8.00049M8.75049 8.00049L10.7505 6.00049M8.75049 8.00049L6.75049 6.00049M8.75049 8.00049L10.7505 10.0005M8.75039 14.1004C5.38145 14.1004 2.65039 11.3693 2.65039 8.00039C2.65039 4.63145 5.38145 1.90039 8.75039 1.90039C12.1193 1.90039 14.8504 4.63145 14.8504 8.00039C14.8504 11.3693 12.1193 14.1004 8.75039 14.1004Z' })));
|
|
98
105
|
};
|
|
99
106
|
|
|
100
|
-
export { CrossCircledIcon as C, DataStreamsIcon as D, FilterIcon as F, KeyIcon as K, NotificationIcon as N, OdigosLogoText as O, RefreshLeftArrowIcon as R, SlackLogo as S, TerminalIcon as T, UserIcon as U, OverviewIcon as a };
|
|
107
|
+
export { ArrowIcon as A, CrossCircledIcon as C, DataStreamsIcon as D, FilterIcon as F, KeyIcon as K, NotificationIcon as N, OdigosLogoText as O, RefreshLeftArrowIcon as R, SlackLogo as S, TerminalIcon as T, UserIcon as U, OverviewIcon as a };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { T as Theme } from './index-
|
|
2
|
+
import { T as Theme } from './index-8dad36e5.js';
|
|
3
3
|
|
|
4
4
|
const VmLogo = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1 }) => {
|
|
5
5
|
const theme = Theme.useTheme();
|
|
@@ -680,4 +680,4 @@ const SourcesIcon = ({ size = 16, fill: f, rotate = 0, onClick, strokeWidth = 1
|
|
|
680
680
|
React.createElement("path", { stroke: fill, strokeWidth: strokeWidth, strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M13.3332 3.8V8M13.3332 3.8C13.3332 4.79411 10.9454 5.6 7.99984 5.6C5.05432 5.6 2.6665 4.79411 2.6665 3.8M13.3332 3.8C13.3332 2.80589 10.9454 2 7.99984 2C5.05432 2 2.6665 2.80589 2.6665 3.8M13.3332 8V12.0875C13.3332 13.1437 10.9454 14 7.99984 14C5.05432 14 2.6665 13.1437 2.6665 12.0875V8M13.3332 8C13.3332 8.99413 10.9454 9.8 7.99984 9.8C5.05432 9.8 2.6665 8.99413 2.6665 8M2.6665 8V3.8M10.6665 7.33333H10.6732M10.6665 11.3333H10.6732' })));
|
|
681
681
|
};
|
|
682
682
|
|
|
683
|
-
export {
|
|
683
|
+
export { UptraceLogo as $, AlaudaLogo as A, BlobStorageLogo as B, CauselyLogo as C, Dash0Logo as D, ElasticApmLogo as E, GigapipeLogo as F, GoogleCloudPlatformLogo as G, HoneycombLogo as H, InstanaLogo as I, JaegerLogo as J, KloudmateLogo as K, Last9Logo as L, MiddlewareLogo as M, NewRelicLogo as N, OpenTelemetryLogo as O, PrometheusLogo as P, QrynLogo as Q, QuickwitLogo as R, AwsS3Logo as S, SeqLogo as T, SignozLogo as U, SplunkLogo as V, SumoLogicLogo as W, TelemetryHubLogo as X, TempoLogo as Y, TingyunLogo as Z, TraceloopLogo as _, AlibabaCloudLogo as a, VictoriaMetricsLogo as a0, AwsXrayLogo as a1, NamespacesIcon as a2, SourcesIcon as a3, DestinationsIcon as a4, ActionsIcon as a5, RulesIcon as a6, VmLogo as a7, AppDynamicsLogo as b, AxiomLogo as c, BetterStackLogo as d, BonreeLogo as e, ChecklyLogo as f, ChronosphereLogo as g, ClickhouseLogo as h, AwsCloudwatchLogo as i, CoralogixLogo as j, DatadogLogo as k, DynatraceLogo as l, ElasticSearchLogo as m, GrafanaLogo as n, GreptimeLogo as o, GroundcoverLogo as p, HyperDxLogo as q, LightstepLogo as r, LogzioLogo as s, LokiLogo as t, LumigoLogo as u, ObserveLogo as v, OneUptimeLogo as w, OpenObserveLogo as x, OpsVerseLogo as y, OracleLogo as z };
|
package/lib/mock-data/index.d.ts
CHANGED
package/lib/snippets.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { B as Button, _ as Text, L as NotificationNote } from './index-
|
|
2
|
-
export { ai as AddButton, an as AddNode, ao as BaseNode, ak as CopyText, ap as EdgedNode, ag as Flow, aq as FrameNode, ar as HeaderNode, aw as LabeledEdge, as as MapItemNode, at as NoDataNode, al as PodContainer, au as ScrollNode, av as SkeletonNode, am as SourceContainer, ad as nodeConfig } from './index-
|
|
1
|
+
import { B as Button, _ as Text, L as NotificationNote } from './index-13d8ebb2.js';
|
|
2
|
+
export { ai as AddButton, an as AddNode, ao as BaseNode, ak as CopyText, ap as EdgedNode, ag as Flow, aq as FrameNode, ar as HeaderNode, aw as LabeledEdge, as as MapItemNode, at as NoDataNode, al as PodContainer, au as ScrollNode, av as SkeletonNode, am as SourceContainer, ad as nodeConfig } from './index-13d8ebb2.js';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-
|
|
5
|
-
import { E as EditIcon } from './index-
|
|
4
|
+
import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-8dad36e5.js';
|
|
5
|
+
import { E as EditIcon } from './index-b44c0701.js';
|
|
6
6
|
import { StatusType } from './types.js';
|
|
7
7
|
import 'styled-components';
|
|
8
|
-
import { I as InfoIcon } from './index-
|
|
9
|
-
import './index-
|
|
10
|
-
import './index-
|
|
8
|
+
import { I as InfoIcon } from './index-4e685db0.js';
|
|
9
|
+
import './index-5e5f7bda.js';
|
|
10
|
+
import './index-23b2865d.js';
|
|
11
11
|
import 'react-dom';
|
|
12
|
-
import './useTransition-
|
|
12
|
+
import './useTransition-985cc4a8.js';
|
|
13
13
|
|
|
14
14
|
const EditButton = ({ label, onClick, variant = 'tertiary', ...props }) => {
|
|
15
15
|
const theme = Theme.useTheme();
|
package/lib/store.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Q as useActiveNodeStore, a0 as useDarkMode, Y as useDataStreamStore, O as useDrawerStore, W as useEntityStore, X as useFilterStore, Z as useInstrumentStore, z as useModalStore, V as useNotificationStore, U as usePendingStore, $ as useSelectedStore, _ as useSetupStore } from './index-
|
|
1
|
+
export { Q as useActiveNodeStore, a0 as useDarkMode, Y as useDataStreamStore, O as useDrawerStore, W as useEntityStore, X as useFilterStore, Z as useInstrumentStore, z as useModalStore, V as useNotificationStore, U as usePendingStore, $ as useSelectedStore, _ as useSetupStore } from './index-8dad36e5.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import './types.js';
|
|
4
4
|
import 'styled-components';
|
package/lib/theme.js
CHANGED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ProgrammingLanguages } from '..';
|
|
2
|
+
export declare enum UiMode {
|
|
3
|
+
Default = "default",
|
|
4
|
+
ReadOnly = "readonly"
|
|
5
|
+
}
|
|
6
|
+
export declare enum Profile {
|
|
7
|
+
CodeAttributes = "code-attributes",
|
|
8
|
+
FullPayloadCollection = "full-payload-collection",
|
|
9
|
+
DbPayloadCollection = "db-payload-collection",
|
|
10
|
+
QueryOperationDetector = "query-operation-detector",
|
|
11
|
+
AllowConcurrentAgents = "allow_concurrent_agents",
|
|
12
|
+
JavaEbpfInstrumentations = "java-ebpf-instrumentations",
|
|
13
|
+
JavaNativeInstrumentations = "java-native-instrumentations",
|
|
14
|
+
SizeS = "size_s",
|
|
15
|
+
SizeM = "size_m",
|
|
16
|
+
SizeL = "size_l"
|
|
17
|
+
}
|
|
18
|
+
export declare enum MountMethod {
|
|
19
|
+
VirtualDevice = "VirtualDevice",
|
|
20
|
+
HostPath = "HostPath"
|
|
21
|
+
}
|
|
22
|
+
export declare enum AgentEnvVarsInjectionMethod {
|
|
23
|
+
Loader = "loader",
|
|
24
|
+
PodManifest = "pod-manifest",
|
|
25
|
+
LoaderFallbackToPodManifest = "loader-fallback-to-pod-manifest"
|
|
26
|
+
}
|
|
27
|
+
export interface CollectorNode {
|
|
28
|
+
collectorOwnMetricsPort: number;
|
|
29
|
+
requestMemoryMiB: number;
|
|
30
|
+
limitMemoryMiB: number;
|
|
31
|
+
requestCPUm: number;
|
|
32
|
+
limitCPUm: number;
|
|
33
|
+
memoryLimiterLimitMiB: number;
|
|
34
|
+
memoryLimiterSpikeLimitMiB: number;
|
|
35
|
+
goMemLimitMiB: number;
|
|
36
|
+
k8sNodeLogsDirectory: string;
|
|
37
|
+
}
|
|
38
|
+
export interface CollectorGateway extends Omit<CollectorNode, 'collectorOwnMetricsPort' | 'k8sNodeLogsDirectory'> {
|
|
39
|
+
minReplicas: number;
|
|
40
|
+
maxReplicas: number;
|
|
41
|
+
}
|
|
42
|
+
export interface UserInstrumentationEnvsLanguage {
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
env: {
|
|
45
|
+
[key: string]: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export interface UserInstrumentationEnvs {
|
|
49
|
+
languages: {
|
|
50
|
+
[key in ProgrammingLanguages]?: UserInstrumentationEnvsLanguage;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export interface RolloutConfiguration {
|
|
54
|
+
automaticRolloutDisabled: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface OidcConfiguration {
|
|
57
|
+
tenantUrl: string;
|
|
58
|
+
clientId: string;
|
|
59
|
+
clientSecret: string;
|
|
60
|
+
}
|
|
61
|
+
export interface OdigosConfig {
|
|
62
|
+
telemetryEnabled: boolean;
|
|
63
|
+
openshiftEnabled: boolean;
|
|
64
|
+
karpenterEnabled: boolean;
|
|
65
|
+
psp: boolean;
|
|
66
|
+
allowConcurrentAgents: boolean;
|
|
67
|
+
skipWebhookIssuerCreation: boolean;
|
|
68
|
+
uiMode: UiMode;
|
|
69
|
+
uiPaginationLimit: number;
|
|
70
|
+
centralBackendURL: string;
|
|
71
|
+
oidc?: OidcConfiguration;
|
|
72
|
+
clusterName: string;
|
|
73
|
+
imagePrefix: string;
|
|
74
|
+
ignoredNamespaces: string[];
|
|
75
|
+
ignoredContainers: string[];
|
|
76
|
+
profiles: Profile[];
|
|
77
|
+
mountMethod: MountMethod;
|
|
78
|
+
agentEnvVarsInjectionMethod: AgentEnvVarsInjectionMethod;
|
|
79
|
+
customContainerRuntimeSocketPath: string;
|
|
80
|
+
odigletHealthProbeBindPort: number;
|
|
81
|
+
rollbackDisabled: boolean;
|
|
82
|
+
rollbackGraceTime: string;
|
|
83
|
+
rollbackStabilityWindow: string;
|
|
84
|
+
nodeSelector?: Record<string, string>;
|
|
85
|
+
rollout?: RolloutConfiguration;
|
|
86
|
+
collectorNode?: CollectorNode;
|
|
87
|
+
collectorGateway?: CollectorGateway;
|
|
88
|
+
userInstrumentationEnvs?: UserInstrumentationEnvs;
|
|
89
|
+
}
|
package/lib/types/index.d.ts
CHANGED
package/lib/types.js
CHANGED
|
@@ -178,6 +178,48 @@ var SortDirection;
|
|
|
178
178
|
SortDirection["Descending"] = "desc";
|
|
179
179
|
})(SortDirection || (SortDirection = {}));
|
|
180
180
|
|
|
181
|
+
var UiMode;
|
|
182
|
+
(function (UiMode) {
|
|
183
|
+
UiMode["Default"] = "default";
|
|
184
|
+
UiMode["ReadOnly"] = "readonly";
|
|
185
|
+
})(UiMode || (UiMode = {}));
|
|
186
|
+
var Profile;
|
|
187
|
+
(function (Profile) {
|
|
188
|
+
// CategoryAttributes = 'category-attributes',
|
|
189
|
+
Profile["CodeAttributes"] = "code-attributes";
|
|
190
|
+
// CopyScope = 'copy-scope',
|
|
191
|
+
// HostnameAsPodname = 'hostname-as-podname',
|
|
192
|
+
Profile["FullPayloadCollection"] = "full-payload-collection";
|
|
193
|
+
Profile["DbPayloadCollection"] = "db-payload-collection";
|
|
194
|
+
Profile["QueryOperationDetector"] = "query-operation-detector";
|
|
195
|
+
// Semconv = 'semconv',
|
|
196
|
+
// ReduceSpanNameCardinality = 'reduce-span-name-cardinality',
|
|
197
|
+
Profile["AllowConcurrentAgents"] = "allow_concurrent_agents";
|
|
198
|
+
Profile["JavaEbpfInstrumentations"] = "java-ebpf-instrumentations";
|
|
199
|
+
Profile["JavaNativeInstrumentations"] = "java-native-instrumentations";
|
|
200
|
+
// LegacyDotnetInstrumentation = 'legacy-dotnet-instrumentation',
|
|
201
|
+
// MountMethodK8sHostPath = 'mount-method-k8s-host-path',
|
|
202
|
+
// MountMethodK8sVirtualDevice = 'mount-method-k8s-virtual-device',
|
|
203
|
+
// PodManifestEnvVarInjection = 'pod-manifest-env-var-injection',
|
|
204
|
+
// DisableGin = 'disable-gin',
|
|
205
|
+
// SmallBatches = 'small-batches',
|
|
206
|
+
Profile["SizeS"] = "size_s";
|
|
207
|
+
Profile["SizeM"] = "size_m";
|
|
208
|
+
Profile["SizeL"] = "size_l";
|
|
209
|
+
})(Profile || (Profile = {}));
|
|
210
|
+
var MountMethod;
|
|
211
|
+
(function (MountMethod) {
|
|
212
|
+
MountMethod["VirtualDevice"] = "VirtualDevice";
|
|
213
|
+
MountMethod["HostPath"] = "HostPath";
|
|
214
|
+
// InitContainer = 'InitContainer',
|
|
215
|
+
})(MountMethod || (MountMethod = {}));
|
|
216
|
+
var AgentEnvVarsInjectionMethod;
|
|
217
|
+
(function (AgentEnvVarsInjectionMethod) {
|
|
218
|
+
AgentEnvVarsInjectionMethod["Loader"] = "loader";
|
|
219
|
+
AgentEnvVarsInjectionMethod["PodManifest"] = "pod-manifest";
|
|
220
|
+
AgentEnvVarsInjectionMethod["LoaderFallbackToPodManifest"] = "loader-fallback-to-pod-manifest";
|
|
221
|
+
})(AgentEnvVarsInjectionMethod || (AgentEnvVarsInjectionMethod = {}));
|
|
222
|
+
|
|
181
223
|
var NodeTypes;
|
|
182
224
|
(function (NodeTypes) {
|
|
183
225
|
NodeTypes["Header"] = "header";
|
|
@@ -321,4 +363,4 @@ var K8sResourceKind;
|
|
|
321
363
|
K8sResourceKind["CronJob"] = "CronJob";
|
|
322
364
|
})(K8sResourceKind || (K8sResourceKind = {}));
|
|
323
365
|
|
|
324
|
-
export { ActionCategory, ActionKeyTypes, ActionType, AddNodeTypes, BooleanOperation, CodeAttributesKeyTypes, Crud, CustomInstrumentationsKeyTypes, DestinationTypes, EdgeTypes, EntityTypes, FieldTypes, HeadersCollectionKeyTypes, InputTypes, InstrumentationRuleType, IntrumentationStatus, JsonOperation, K8sResourceKind, NodeTypes, NumberOperation, OtherEntityTypes, OtherStatus, PayloadCollectionKeyTypes, PlatformType, ProgrammingLanguages, SignalType, SortDirection, StatusType, StringOperation, Tier };
|
|
366
|
+
export { ActionCategory, ActionKeyTypes, ActionType, AddNodeTypes, AgentEnvVarsInjectionMethod, BooleanOperation, CodeAttributesKeyTypes, Crud, CustomInstrumentationsKeyTypes, DestinationTypes, EdgeTypes, EntityTypes, FieldTypes, HeadersCollectionKeyTypes, InputTypes, InstrumentationRuleType, IntrumentationStatus, JsonOperation, K8sResourceKind, MountMethod, NodeTypes, NumberOperation, OtherEntityTypes, OtherStatus, PayloadCollectionKeyTypes, PlatformType, Profile, ProgrammingLanguages, SignalType, SortDirection, StatusType, StringOperation, Tier, UiMode };
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-
|
|
1
|
+
import { z as useModalStore, O as useDrawerStore, Q as useActiveNodeStore } from './index-8dad36e5.js';
|
|
2
2
|
import { AddNodeTypes, EntityTypes, PayloadCollectionKeyTypes, CodeAttributesKeyTypes, CustomInstrumentationsKeyTypes } from './types.js';
|
|
3
3
|
import React, { useState, useMemo, useRef, useEffect, useCallback } from 'react';
|
|
4
4
|
import styled from 'styled-components';
|
|
5
|
+
import { d as deepClone } from './index-5e5f7bda.js';
|
|
5
6
|
|
|
6
7
|
const useGenericForm = (initialFormData) => {
|
|
7
8
|
function copyInitial() {
|
|
@@ -17,16 +18,28 @@ const useGenericForm = (initialFormData) => {
|
|
|
17
18
|
if (key) {
|
|
18
19
|
// this is for cases where the form contains objects such as "exportedSignals",
|
|
19
20
|
// the object's child is targeted with a "." for example: "exportedSignals.logs"
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
...prev,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
const splittedKeys = key.toString().split('.');
|
|
22
|
+
if (splittedKeys.length === 1) {
|
|
23
|
+
setFormData((prev) => ({ ...prev, [key]: val }));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
setFormData((prev) => {
|
|
27
|
+
const payload = deepClone(prev);
|
|
28
|
+
let current = payload;
|
|
29
|
+
// Navigate to the parent of the final key, creating objects as needed
|
|
30
|
+
for (let i = 0; i < splittedKeys.length - 1; i++) {
|
|
31
|
+
const key = splittedKeys[i];
|
|
32
|
+
if (!current[key] || typeof current[key] !== 'object') {
|
|
33
|
+
current[key] = {};
|
|
34
|
+
}
|
|
35
|
+
current = current[key];
|
|
27
36
|
}
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
// Set the final value
|
|
38
|
+
const finalKey = splittedKeys[splittedKeys.length - 1];
|
|
39
|
+
current[finalKey] = val;
|
|
40
|
+
return payload;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
30
43
|
}
|
|
31
44
|
else if (obj) {
|
|
32
45
|
setFormData({ ...obj });
|