@odigos/ui-kit 0.0.34 → 0.0.35

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/eslint.config.mjs +17 -0
  3. package/lib/components/data-card/index.d.ts +2 -1
  4. package/lib/components.js +8 -9
  5. package/lib/constants/strings/index.d.ts +6 -0
  6. package/lib/constants.js +1 -2
  7. package/lib/containers/data-flow/helpers/build-action-nodes.d.ts +7 -1
  8. package/lib/containers/data-flow/helpers/build-destination-nodes.d.ts +7 -1
  9. package/lib/containers/data-flow/helpers/build-rule-nodes.d.ts +7 -1
  10. package/lib/containers/destination-modal/choose-destination/destinations-list/index.d.ts +1 -1
  11. package/lib/containers/destination-modal/choose-destination/index.d.ts +2 -2
  12. package/lib/containers.js +189 -83
  13. package/lib/functions.js +6 -7
  14. package/lib/hooks/index.d.ts +1 -0
  15. package/lib/hooks/useSessionStorage.d.ts +5 -0
  16. package/lib/hooks.js +4 -5
  17. package/lib/icons.js +7 -7
  18. package/lib/{index-Cq8NT9Hr.js → index-9R2N835W.js} +1 -1
  19. package/lib/{index--RecCPGA.js → index-BDqd3uNm.js} +1 -1
  20. package/lib/{index-Bd8ZAEvq.js → index-BVj4fOL3.js} +1 -1
  21. package/lib/{index-CnZlllYu.js → index-BlZKWuxe.js} +7 -1
  22. package/lib/{index-ChYtqgBW.js → index-CCX1HLUr.js} +2 -2
  23. package/lib/{index-CIKkezVt.js → index-CEWs8CTN.js} +1 -1
  24. package/lib/{index-DJGe2YeC.js → index-CKOBXat_.js} +332 -226
  25. package/lib/{index-a_WA-82O.js → index-CyG_tD3y.js} +2 -2
  26. package/lib/{index-ovjVbVQq.js → index-DmCjUtBQ.js} +4 -5
  27. package/lib/{index-BWZT-ipR.js → index-DqaI44fJ.js} +1 -1
  28. package/lib/{index-BZq0yNL-.js → index-THrvNIPj.js} +30 -27
  29. package/lib/{index-BBjwRlta.js → index-dLZvpGw3.js} +5 -12
  30. package/lib/mock-data/sources/index.d.ts +2 -0
  31. package/lib/snippets.js +8 -9
  32. package/lib/store.js +1 -1
  33. package/lib/theme.js +1 -1
  34. package/lib/types/common/index.d.ts +6 -0
  35. package/lib/types.js +8 -1
  36. package/lib/{useSourceSelectionFormData-DBNf1uEe.js → useSourceSelectionFormData-DqSNROtZ.js} +34 -16
  37. package/lib/{useTransition-dZ92VxT2.js → useTransition-D9f1CP9n.js} +1 -1
  38. package/package.json +11 -14
  39. package/lib/index-mOgS3e5E.js +0 -101
package/lib/containers.js CHANGED
@@ -1,24 +1,23 @@
1
1
  import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, memo, useContext, createContext, useCallback, useLayoutEffect, Fragment } from 'react';
2
2
  import styled, { css } from 'styled-components';
3
- import { T as Theme, h as usePendingStore, g as useNotificationStore, b as useDrawerStore, c as useEntityStore, A as ACTION_OPTIONS, k as getActionIcon, f as useModalStore, d as useFilterStore, M as MONITORS_OPTIONS, s as styleInject, i as useSelectedStore, e as useInstrumentStore, m as getInstrumentationRuleIcon, a as useDataStreamStore, l as getEntityId, j as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, u as useDarkMode } from './index-DJGe2YeC.js';
4
- import { a as DISPLAY_TITLES, B as BUTTON_TEXTS, F as FORM_ALERTS } from './index-mOgS3e5E.js';
3
+ import { k as DISPLAY_TITLES, T as Theme, h as usePendingStore, g as useNotificationStore, b as useDrawerStore, B as BUTTON_TEXTS, c as useEntityStore, A as ACTION_OPTIONS, l as getActionIcon, f as useModalStore, F as FORM_ALERTS, d as useFilterStore, M as MONITORS_OPTIONS, t as styleInject, i as useSelectedStore, e as useInstrumentStore, n as getInstrumentationRuleIcon, a as useDataStreamStore, m as getEntityId, S as STORAGE_KEYS, j as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, u as useDarkMode } from './index-CKOBXat_.js';
5
4
  import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, SignalType, HeadersCollectionKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType } from './types.js';
6
- import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, A as AddButton$1, U as Stepper, I as IconButton, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-BZq0yNL-.js';
5
+ import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, A as AddButton$1, U as Stepper, I as IconButton, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-THrvNIPj.js';
7
6
  import { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
8
- import { i as CheckCircledIcon, O as OdigosLogo } from './index-Bd8ZAEvq.js';
9
- import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index--RecCPGA.js';
10
- import { u as useActionFormData, a as useClickNode, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, e as useSourceFormData, f as useSourceSelectionFormData } from './useSourceSelectionFormData-DBNf1uEe.js';
11
- import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-dZ92VxT2.js';
12
- import { E as EditIcon } from './index-BWZT-ipR.js';
13
- import { T as TrashIcon, S as SearchIcon, P as PlusIcon$1, f as CheckIcon, A as ArrowIcon, a as CopyIcon, g as CrossIcon } from './index-CIKkezVt.js';
14
- import { D as DeleteWarning, C as CancelWarning } from './index-a_WA-82O.js';
15
- import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-ChYtqgBW.js';
16
- import { f as filterActions, i as getConditionsBooleans, n as getEntityLabel, m as getEntityIcon, x as sleep$1, p as getPlatformIcon, q as getPlatformLabel, h as formatBytes, k as getContainersIcons, r as getValueForRange, l as getDestinationIcon, w as mapExportedSignals, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, v as mapDestinationFieldsForDisplay, c as compareCondition, t as getYamlFieldsForDestination, d as deepClone, o as getMetricForEntity, s as getWorkloadId, j as getContainersInstrumentedCount, u as isOverTime } from './index-BBjwRlta.js';
7
+ import { i as CheckCircledIcon, O as OdigosLogo } from './index-BVj4fOL3.js';
8
+ import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-BDqd3uNm.js';
9
+ import { u as useActionFormData, a as useClickNode, e as useSessionStorage, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-DqSNROtZ.js';
10
+ import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-D9f1CP9n.js';
11
+ import { E as EditIcon } from './index-DqaI44fJ.js';
12
+ import { T as TrashIcon, S as SearchIcon, P as PlusIcon$1, f as CheckIcon, A as ArrowIcon, a as CopyIcon, g as CrossIcon } from './index-CEWs8CTN.js';
13
+ import { D as DeleteWarning, C as CancelWarning } from './index-CyG_tD3y.js';
14
+ import { m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-CCX1HLUr.js';
15
+ import { f as filterActions, i as getConditionsBooleans, n as getEntityLabel, m as getEntityIcon, w as sleep$1, p as getPlatformIcon, q as getPlatformLabel, h as formatBytes, k as getContainersIcons, r as getValueForRange, l as getDestinationIcon, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, v as mapDestinationFieldsForDisplay, c as compareCondition, t as getYamlFieldsForDestination, d as deepClone, o as getMetricForEntity, s as getWorkloadId, j as getContainersInstrumentedCount, u as isOverTime } from './index-dLZvpGw3.js';
17
16
  import { createPortal } from 'react-dom';
18
- import { N as NoteBackToSummary, E as EditButton } from './index-ovjVbVQq.js';
17
+ import { m as mapExportedSignals } from './index-BlZKWuxe.js';
18
+ import { N as NoteBackToSummary, E as EditButton } from './index-DmCjUtBQ.js';
19
19
  import { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
20
- import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-Cq8NT9Hr.js';
21
- import './index-CnZlllYu.js';
20
+ import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-9R2N835W.js';
22
21
 
23
22
  const buildCard$3 = (action) => {
24
23
  const { type, spec: { actionName, notes, signals, disabled, collectContainerAttributes, collectReplicaSetAttributes, collectWorkloadId, collectClusterId, labelsAttributes, annotationsAttributes, clusterAttributes, attributeNamesToDelete, renames, piiCategories, fallbackSamplingRatio, samplingPercentage, endpointsFilters, servicesNameFilters, attributeFilters, }, } = action;
@@ -13146,7 +13145,7 @@ const nodeConfig = {
13146
13145
  framePadding: 12,
13147
13146
  };
13148
13147
 
13149
- const { framePadding: framePadding$3 } = nodeConfig;
13148
+ const { framePadding: framePadding$5 } = nodeConfig;
13150
13149
  const Container$h = styled.div `
13151
13150
  position: relative;
13152
13151
  z-index: 1;
@@ -13158,7 +13157,7 @@ const Container$h = styled.div `
13158
13157
  overflow-x: hidden;
13159
13158
  `;
13160
13159
  const BaseNodeWrapper = styled.div `
13161
- margin: ${framePadding$3}px 0;
13160
+ margin: ${framePadding$5}px 0;
13162
13161
  `;
13163
13162
  const BottomOverlay = styled.div `
13164
13163
  position: fixed;
@@ -13390,7 +13389,7 @@ const Flow = ({ nodes, edges, onNodesChange, onEdgesChange }) => {
13390
13389
  } })))));
13391
13390
  };
13392
13391
 
13393
- const { nodeHeight: nodeHeight$3, framePadding: framePadding$2 } = nodeConfig;
13392
+ const { nodeHeight: nodeHeight$5, framePadding: framePadding$4 } = nodeConfig;
13394
13393
  const createEdge = (edgeId, params) => {
13395
13394
  const { theme, label, isMultiTarget, isError, animated } = params || {};
13396
13395
  const [sourceNodeId, targetNodeId] = edgeId.split('-to-');
@@ -13411,8 +13410,8 @@ const buildEdges = ({ theme, nodes, metrics, containerHeight }) => {
13411
13410
  if (nodeType === NodeTypes.Edged && entityType === EntityTypes.Source) {
13412
13411
  const { namespace, name, kind } = entityId;
13413
13412
  const metric = metrics?.sources.find((m) => m.kind === kind && m.name === name && m.namespace === namespace);
13414
- const topLimit = -80 / 2 + framePadding$2;
13415
- const bottomLimit = Math.floor(containerHeight / nodeHeight$3) * nodeHeight$3 - (nodeHeight$3 / 2 + framePadding$2);
13413
+ const topLimit = -80 / 2 + framePadding$4;
13414
+ const bottomLimit = Math.floor(containerHeight / nodeHeight$5) * nodeHeight$5 - (nodeHeight$5 / 2 + framePadding$4);
13416
13415
  if (position.y >= topLimit && position.y <= bottomLimit) {
13417
13416
  edges.push(createEdge(`${nodeId}-to-${actionNodeId}`, {
13418
13417
  theme,
@@ -13437,7 +13436,7 @@ const buildEdges = ({ theme, nodes, metrics, containerHeight }) => {
13437
13436
  return edges;
13438
13437
  };
13439
13438
 
13440
- const { nodeWidth: nodeWidth$4 } = nodeConfig;
13439
+ const { nodeWidth: nodeWidth$4, nodeHeight: nodeHeight$4, framePadding: framePadding$3 } = nodeConfig;
13441
13440
  const mapToNodeData$3 = (entity) => {
13442
13441
  return {
13443
13442
  nodeWidth: nodeWidth$4,
@@ -13451,7 +13450,7 @@ const mapToNodeData$3 = (entity) => {
13451
13450
  raw: entity,
13452
13451
  };
13453
13452
  };
13454
- const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
13453
+ const buildRuleNodes = ({ loading, entities, positions, unfilteredCount, containerHeight, onScroll }) => {
13455
13454
  const nodes = [];
13456
13455
  const position = positions[EntityTypes.InstrumentationRule];
13457
13456
  nodes.push({
@@ -13470,13 +13469,38 @@ const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
13470
13469
  },
13471
13470
  });
13472
13471
  if (!!entities.length) {
13472
+ nodes.push({
13473
+ id: `${EntityTypes.InstrumentationRule}-${NodeTypes.Scroll}`,
13474
+ type: NodeTypes.Scroll,
13475
+ position: {
13476
+ x: position['x'],
13477
+ y: position['y']() - framePadding$3,
13478
+ },
13479
+ style: {
13480
+ zIndex: 1,
13481
+ },
13482
+ data: {
13483
+ nodeWidth: nodeWidth$4,
13484
+ nodeHeight: containerHeight - nodeHeight$4 + framePadding$3 * 2,
13485
+ items: entities.map((rule, idx) => ({
13486
+ id: `${EntityTypes.InstrumentationRule}-${idx}`,
13487
+ data: mapToNodeData$3(rule),
13488
+ })),
13489
+ onScroll,
13490
+ },
13491
+ });
13473
13492
  entities.forEach((rule, idx) => {
13474
13493
  nodes.push({
13475
- id: `${EntityTypes.InstrumentationRule}-${idx}`,
13476
- type: NodeTypes.Base,
13494
+ id: `${EntityTypes.InstrumentationRule}-${idx}-hidden`,
13495
+ type: NodeTypes.Edged,
13496
+ extent: 'parent',
13497
+ parentId: `${EntityTypes.InstrumentationRule}-${NodeTypes.Scroll}`,
13477
13498
  position: {
13478
- x: position['x'],
13479
- y: position['y'](idx),
13499
+ x: framePadding$3,
13500
+ y: position['y'](idx) - (nodeHeight$4 - framePadding$3 / 2),
13501
+ },
13502
+ style: {
13503
+ zIndex: -1,
13480
13504
  },
13481
13505
  data: mapToNodeData$3(rule),
13482
13506
  });
@@ -13514,7 +13538,7 @@ const buildRuleNodes = ({ loading, entities, positions, unfilteredCount }) => {
13514
13538
  return nodes;
13515
13539
  };
13516
13540
 
13517
- const { nodeWidth: nodeWidth$3, nodeHeight: nodeHeight$2, framePadding: framePadding$1 } = nodeConfig;
13541
+ const { nodeWidth: nodeWidth$3, nodeHeight: nodeHeight$3, framePadding: framePadding$2 } = nodeConfig;
13518
13542
  const mapToNodeData$2 = (entity) => {
13519
13543
  const { hasDisableds, priorotizedStatus } = getConditionsBooleans(entity.conditions || []);
13520
13544
  return {
@@ -13531,7 +13555,7 @@ const mapToNodeData$2 = (entity) => {
13531
13555
  raw: entity,
13532
13556
  };
13533
13557
  };
13534
- const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) => {
13558
+ const buildActionNodes = ({ loading, entities, positions, unfilteredCount, containerHeight, onScroll }) => {
13535
13559
  const nodes = [];
13536
13560
  const position = positions[EntityTypes.Action];
13537
13561
  nodes.push({
@@ -13551,30 +13575,53 @@ const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) =>
13551
13575
  });
13552
13576
  if (!!entities.length) {
13553
13577
  nodes.push({
13554
- id: `${EntityTypes.Action}-${NodeTypes.Frame}`,
13555
- type: NodeTypes.Frame,
13578
+ id: `${EntityTypes.Action}-${NodeTypes.Scroll}`,
13579
+ type: NodeTypes.Scroll,
13556
13580
  position: {
13557
- x: position['x'] - framePadding$1,
13558
- y: position['y']() - framePadding$1,
13581
+ x: position['x'],
13582
+ y: position['y']() - framePadding$2,
13583
+ },
13584
+ style: {
13585
+ zIndex: 1,
13559
13586
  },
13560
13587
  data: {
13561
- nodeWidth: nodeWidth$3 + 2 * framePadding$1,
13562
- nodeHeight: nodeHeight$2 * entities.length + framePadding$1,
13588
+ nodeWidth: nodeWidth$3,
13589
+ nodeHeight: containerHeight - nodeHeight$3 + framePadding$2 * 2,
13590
+ items: entities.map((action, idx) => ({
13591
+ id: `${EntityTypes.Action}-${idx}`,
13592
+ data: mapToNodeData$2(action),
13593
+ })),
13594
+ onScroll,
13563
13595
  },
13564
13596
  });
13565
13597
  entities.forEach((action, idx) => {
13566
13598
  nodes.push({
13567
- id: `${EntityTypes.Action}-${idx}`,
13568
- type: NodeTypes.Base,
13599
+ id: `${EntityTypes.Action}-${idx}-hidden`,
13600
+ type: NodeTypes.Edged,
13569
13601
  extent: 'parent',
13570
- parentId: `${EntityTypes.Action}-${NodeTypes.Frame}`,
13602
+ parentId: `${EntityTypes.Action}-${NodeTypes.Scroll}`,
13571
13603
  position: {
13572
- x: framePadding$1,
13573
- y: position['y'](idx) - (nodeHeight$2 - framePadding$1),
13604
+ x: framePadding$2,
13605
+ y: position['y'](idx) - (nodeHeight$3 - framePadding$2 / 2),
13606
+ },
13607
+ style: {
13608
+ zIndex: -1,
13574
13609
  },
13575
13610
  data: mapToNodeData$2(action),
13576
13611
  });
13577
13612
  });
13613
+ nodes.push({
13614
+ id: `${EntityTypes.Action}-${NodeTypes.Frame}`,
13615
+ type: NodeTypes.Frame,
13616
+ position: {
13617
+ x: position['x'] - framePadding$2,
13618
+ y: position['y']() - framePadding$2,
13619
+ },
13620
+ data: {
13621
+ nodeWidth: nodeWidth$3 + 2 * framePadding$2,
13622
+ nodeHeight: Math.min(containerHeight, nodeHeight$3 * entities.length + framePadding$2),
13623
+ },
13624
+ });
13578
13625
  }
13579
13626
  else if (loading) {
13580
13627
  nodes.push({
@@ -13608,12 +13655,12 @@ const buildActionNodes = ({ loading, entities, positions, unfilteredCount }) =>
13608
13655
  return nodes;
13609
13656
  };
13610
13657
 
13611
- const { nodeWidth: nodeWidth$2, nodeHeight: nodeHeight$1, framePadding } = nodeConfig;
13658
+ const { nodeWidth: nodeWidth$2, nodeHeight: nodeHeight$2, framePadding: framePadding$1 } = nodeConfig;
13612
13659
  const mapToNodeData$1 = (entity) => {
13613
13660
  const { priorotizedStatus, hasDisableds } = getConditionsBooleans(entity.conditions || []);
13614
13661
  return {
13615
13662
  nodeWidth: nodeWidth$2,
13616
- nodeHeight: nodeHeight$1, // for edged node
13663
+ nodeHeight: nodeHeight$2, // for edged node
13617
13664
  id: {
13618
13665
  namespace: entity.namespace,
13619
13666
  name: entity.name,
@@ -13655,14 +13702,14 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
13655
13702
  type: NodeTypes.Scroll,
13656
13703
  position: {
13657
13704
  x: position['x'],
13658
- y: position['y']() - framePadding,
13705
+ y: position['y']() - framePadding$1,
13659
13706
  },
13660
13707
  style: {
13661
13708
  zIndex: 1,
13662
13709
  },
13663
13710
  data: {
13664
13711
  nodeWidth: nodeWidth$2,
13665
- nodeHeight: containerHeight - nodeHeight$1 + framePadding * 2,
13712
+ nodeHeight: containerHeight - nodeHeight$2 + framePadding$1 * 2,
13666
13713
  items: entities.map((source, idx) => ({
13667
13714
  id: `${EntityTypes.Source}-${idx}`,
13668
13715
  data: mapToNodeData$1(source),
@@ -13677,8 +13724,8 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
13677
13724
  extent: 'parent',
13678
13725
  parentId: `${EntityTypes.Source}-${NodeTypes.Scroll}`,
13679
13726
  position: {
13680
- x: framePadding,
13681
- y: position['y'](idx) - (nodeHeight$1 - framePadding / 2),
13727
+ x: framePadding$1,
13728
+ y: position['y'](idx) - (nodeHeight$2 - framePadding$1 / 2),
13682
13729
  },
13683
13730
  style: {
13684
13731
  zIndex: -1,
@@ -13719,11 +13766,11 @@ const buildSourceNodes = ({ loading, entities, positions, unfilteredCount, conta
13719
13766
  return nodes;
13720
13767
  };
13721
13768
 
13722
- const { nodeWidth: nodeWidth$1, nodeHeight } = nodeConfig;
13769
+ const { nodeWidth: nodeWidth$1, nodeHeight: nodeHeight$1 } = nodeConfig;
13723
13770
  const getNodePositions = ({ containerWidth }) => {
13724
13771
  const startX = 24;
13725
13772
  const endX = (containerWidth <= 1500 ? 1500 : containerWidth) - nodeWidth$1 - startX;
13726
- const getY = (idx) => nodeHeight * ((idx || 0) + 1);
13773
+ const getY = (idx) => nodeHeight$1 * ((idx || 0) + 1);
13727
13774
  const positions = {
13728
13775
  [EntityTypes.Namespace]: {
13729
13776
  x: 0,
@@ -13755,7 +13802,7 @@ const getNodePositions = ({ containerWidth }) => {
13755
13802
  return positions;
13756
13803
  };
13757
13804
 
13758
- const { nodeWidth } = nodeConfig;
13805
+ const { nodeWidth, nodeHeight, framePadding } = nodeConfig;
13759
13806
  const mapToNodeData = (entity) => {
13760
13807
  const { hasDisableds, priorotizedStatus } = getConditionsBooleans(entity.conditions || []);
13761
13808
  const { icon, iconSrc } = getDestinationIcon(entity.destinationType.type);
@@ -13773,7 +13820,7 @@ const mapToNodeData = (entity) => {
13773
13820
  raw: entity,
13774
13821
  };
13775
13822
  };
13776
- const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount }) => {
13823
+ const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount, containerHeight, onScroll }) => {
13777
13824
  const nodes = [];
13778
13825
  const position = positions[EntityTypes.Destination];
13779
13826
  nodes.push({
@@ -13792,13 +13839,38 @@ const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount }
13792
13839
  },
13793
13840
  });
13794
13841
  if (!!entities.length) {
13842
+ nodes.push({
13843
+ id: `${EntityTypes.Destination}-${NodeTypes.Scroll}`,
13844
+ type: NodeTypes.Scroll,
13845
+ position: {
13846
+ x: position['x'],
13847
+ y: position['y']() - framePadding,
13848
+ },
13849
+ style: {
13850
+ zIndex: 1,
13851
+ },
13852
+ data: {
13853
+ nodeWidth,
13854
+ nodeHeight: containerHeight - nodeHeight + framePadding * 2,
13855
+ items: entities.map((destination, idx) => ({
13856
+ id: `${EntityTypes.Destination}-${idx}`,
13857
+ data: mapToNodeData(destination),
13858
+ })),
13859
+ onScroll,
13860
+ },
13861
+ });
13795
13862
  entities.forEach((destination, idx) => {
13796
13863
  nodes.push({
13797
- id: `${EntityTypes.Destination}-${idx}`,
13798
- type: NodeTypes.Base,
13864
+ id: `${EntityTypes.Destination}-${idx}-hidden`,
13865
+ type: NodeTypes.Edged,
13866
+ extent: 'parent',
13867
+ parentId: `${EntityTypes.Destination}-${NodeTypes.Scroll}`,
13799
13868
  position: {
13800
- x: position['x'],
13801
- y: position['y'](idx),
13869
+ x: framePadding,
13870
+ y: position['y'](idx) - (nodeHeight - framePadding / 2),
13871
+ },
13872
+ style: {
13873
+ zIndex: -1,
13802
13874
  },
13803
13875
  data: mapToNodeData(destination),
13804
13876
  });
@@ -13890,28 +13962,34 @@ const DataFlow = ({ heightToRemove, metrics }) => {
13890
13962
  loading: destinationsLoading,
13891
13963
  unfilteredCount: destinationsByStream.length,
13892
13964
  positions,
13965
+ containerHeight,
13966
+ onScroll: ({ scrollTop }) => handleNodesScrolled(destinationNodes, EntityTypes.Destination, scrollTop),
13893
13967
  });
13894
13968
  handleNodesChanged(destinationNodes, EntityTypes.Destination);
13895
- }, [selectedStreamName, destinations, destinationsLoading, positions[EntityTypes.Destination], filters]);
13969
+ }, [selectedStreamName, destinations, destinationsLoading, positions[EntityTypes.Destination], filters, containerHeight]);
13896
13970
  useEffect(() => {
13897
13971
  const actionNodes = buildActionNodes({
13898
13972
  entities: filterActions(actions, filters),
13899
13973
  loading: actionsLoading,
13900
13974
  unfilteredCount: actions.length,
13901
13975
  positions,
13976
+ containerHeight,
13977
+ onScroll: ({ scrollTop }) => handleNodesScrolled(actionNodes, EntityTypes.Action, scrollTop),
13902
13978
  });
13903
13979
  handleNodesChanged(actionNodes, EntityTypes.Action);
13904
- }, [actions, actionsLoading, positions[EntityTypes.Action], filters]);
13980
+ }, [actions, actionsLoading, positions[EntityTypes.Action], filters, containerHeight]);
13905
13981
  useEffect(() => {
13906
- // note: rules do not have filters yet
13907
13982
  const ruleNodes = buildRuleNodes({
13983
+ // note: rules do not have filters yet
13908
13984
  entities: instrumentationRules,
13909
13985
  loading: instrumentationRulesLoading,
13910
13986
  unfilteredCount: instrumentationRules.length,
13911
13987
  positions,
13988
+ containerHeight,
13989
+ onScroll: ({ scrollTop }) => handleNodesScrolled(ruleNodes, EntityTypes.InstrumentationRule, scrollTop),
13912
13990
  });
13913
13991
  handleNodesChanged(ruleNodes, EntityTypes.InstrumentationRule);
13914
- }, [instrumentationRules, instrumentationRulesLoading, positions[EntityTypes.InstrumentationRule]]);
13992
+ }, [instrumentationRules, instrumentationRulesLoading, positions[EntityTypes.InstrumentationRule], containerHeight]);
13915
13993
  return (React.createElement(Container$e, { ref: containerRef, "$heightToRemove": heightToRemove },
13916
13994
  React.createElement(Flow, { nodes: nodes, edges: edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange })));
13917
13995
  };
@@ -14082,6 +14160,7 @@ const Filters$1 = () => {
14082
14160
  const theme = Theme.useTheme();
14083
14161
  const { namespaces, sources } = useEntityStore();
14084
14162
  const { selectedStreamName } = useDataStreamStore();
14163
+ const { getItemSS, setItemSS, removeItemSS } = useSessionStorage();
14085
14164
  const { namespaces: namespaceFilters, kinds, monitors, languages, errors, onlyErrors, setAll, clearAll, getEmptyState } = useFilterStore();
14086
14165
  const sourcesByStream = useMemo(() => filterSourcesByStream(sources, selectedStreamName), [sources, selectedStreamName]);
14087
14166
  // We need local state, because we want to keep the filters in the store only when the user clicks on apply
@@ -14089,6 +14168,10 @@ const Filters$1 = () => {
14089
14168
  const [filterCount, setFilterCount] = useState(getFilterCount(filters));
14090
14169
  const [focused, setFocused] = useState(false);
14091
14170
  const toggleFocused = () => setFocused((prev) => !prev);
14171
+ useEffect(() => {
14172
+ const storedFilters = getItemSS(STORAGE_KEYS.OVERVIEW_FILTERS, getEmptyState());
14173
+ setAll(storedFilters);
14174
+ }, []);
14092
14175
  useEffect(() => {
14093
14176
  if (!focused) {
14094
14177
  const payload = { namespaces: namespaceFilters, kinds, monitors, languages, errors, onlyErrors };
@@ -14097,17 +14180,13 @@ const Filters$1 = () => {
14097
14180
  }
14098
14181
  }, [focused, namespaceFilters, kinds, monitors, errors, onlyErrors]);
14099
14182
  const onApply = () => {
14100
- // TODO: remove trycatch after debugging
14101
- try {
14102
- setAll(filters);
14103
- setFilterCount(getFilterCount(filters));
14104
- setFocused(false);
14105
- }
14106
- catch (error) {
14107
- console.error(error);
14108
- }
14183
+ setItemSS(STORAGE_KEYS.OVERVIEW_FILTERS, filters);
14184
+ setAll(filters);
14185
+ setFilterCount(getFilterCount(filters));
14186
+ setFocused(false);
14109
14187
  };
14110
14188
  const onReset = () => {
14189
+ removeItemSS(STORAGE_KEYS.OVERVIEW_FILTERS);
14111
14190
  clearAll();
14112
14191
  setFilters(getEmptyState());
14113
14192
  setFilterCount(0);
@@ -14443,10 +14522,6 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
14443
14522
  setAutoFilled(didAutoFill);
14444
14523
  }
14445
14524
  }, [dynamicFields, isFormDirty]);
14446
- const dirtyForm = () => {
14447
- setIsFormDirty(true);
14448
- setConnection(undefined);
14449
- };
14450
14525
  const supportedMonitors = useMemo(() => {
14451
14526
  const { logs, metrics, traces } = supportedSignals || {};
14452
14527
  const arr = [];
@@ -14468,7 +14543,11 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
14468
14543
  if (traces)
14469
14544
  arr.push(SignalType.Traces);
14470
14545
  return arr;
14471
- }, [formData['exportedSignals']]);
14546
+ }, [formData]);
14547
+ const dirtyForm = () => {
14548
+ setIsFormDirty(true);
14549
+ setConnection(undefined);
14550
+ };
14472
14551
  const handleSelectedSignals = (signals) => {
14473
14552
  dirtyForm();
14474
14553
  handleFormChange('exportedSignals', {
@@ -14600,7 +14679,7 @@ const ListsWrapper = styled.div `
14600
14679
  flex-direction: column;
14601
14680
  gap: 12px;
14602
14681
  `;
14603
- const DestinationsList = ({ items, onSelectOption, onSelectConfigured }) => {
14682
+ const DestinationsList = ({ items, onSelectNew, onSelectConfigured }) => {
14604
14683
  const { configuredDestinationsUpdateOnly } = useSetupStore();
14605
14684
  return items.map((category) => {
14606
14685
  const isAlreadyExisting = category.name === DESTINATION_CATEGORIES['EXISTS']['TITLE'];
@@ -14611,7 +14690,7 @@ const DestinationsList = ({ items, onSelectOption, onSelectConfigured }) => {
14611
14690
  const key = `select-${category.name.replaceAll(' ', '')}-destination-${item.type}`;
14612
14691
  const isChecked = item.selected || configuredDestinationsUpdateOnly.some((dest) => dest.id === item.id);
14613
14692
  const monitors = Object.keys(item.supportedSignals).filter((signal) => item.supportedSignals[signal].supported);
14614
- const onClick = isAlreadyExisting ? () => onSelectConfigured(item.id) : () => onSelectOption(item);
14693
+ const onClick = isAlreadyExisting ? () => onSelectConfigured(item.id) : () => onSelectNew(item);
14615
14694
  const { icon, iconSrc } = getDestinationIcon(item.type);
14616
14695
  return (React.createElement(DataTab, { key: key, "data-id": key, title: item.displayName, hoverText: BUTTON_TEXTS.SELECT, onClick: onClick, iconProps: { icon, iconSrc }, visualProps: { monitors, monitorsWithLabels: true }, checkboxProps: {
14617
14696
  withCheckbox: isAlreadyExisting,
@@ -14679,7 +14758,7 @@ const createConfiguredItems = (destinations, selectedStreamName, configuredDesti
14679
14758
  },
14680
14759
  };
14681
14760
  });
14682
- const ChooseDestinationBody = ({ hidden, categories, potentialDestinations, onSelectOption, onSelectConfigured }) => {
14761
+ const ChooseDestinationBody = ({ hidden, categories, potentialDestinations, onSelectNew, onSelectConfigured }) => {
14683
14762
  const { destinations } = useEntityStore();
14684
14763
  const { selectedStreamName } = useDataStreamStore();
14685
14764
  const { configuredDestinations, configuredDestinationsUpdateOnly } = useSetupStore();
@@ -14712,7 +14791,7 @@ const ChooseDestinationBody = ({ hidden, categories, potentialDestinations, onSe
14712
14791
  return { ...category, items: filteredItems };
14713
14792
  })
14714
14793
  .filter(({ items }) => !!items.length); // Filter out empty categories
14715
- }, [categories, potentialDestinations, destinations, search, selectedCategory, selectedMonitors, selectedStreamName, configuredDestinations]);
14794
+ }, [categories, potentialDestinations, destinations, search, selectedCategory, selectedMonitors, selectedStreamName, configuredDestinations, configuredDestinationsUpdateOnly]);
14716
14795
  if (hidden)
14717
14796
  return null;
14718
14797
  return (React.createElement(Container$9, null,
@@ -14726,7 +14805,7 @@ const ChooseDestinationBody = ({ hidden, categories, potentialDestinations, onSe
14726
14805
  React.createElement(Divider, null),
14727
14806
  !filteredDestinations.length ? (React.createElement(NoDataFoundWrapper, null,
14728
14807
  React.createElement(NoDataFound, { title: 'No destinations found' }))) : (React.createElement(ListsContainer, null,
14729
- React.createElement(DestinationsList, { items: filteredDestinations, onSelectOption: onSelectOption, onSelectConfigured: onSelectConfigured })))));
14808
+ React.createElement(DestinationsList, { items: filteredDestinations, onSelectNew: (dest) => onSelectNew(dest, selectedMonitors), onSelectConfigured: onSelectConfigured })))));
14730
14809
  };
14731
14810
 
14732
14811
  const Container$8 = styled.div `
@@ -14810,10 +14889,17 @@ const DestinationModal = ({ isOnboarding, categories, potentialDestinations, cre
14810
14889
  resetFormData();
14811
14890
  setSelectedItem(undefined);
14812
14891
  };
14813
- const handleSelectOption = (item) => {
14892
+ const handleSelectNew = (item, selectedMonitors) => {
14814
14893
  resetFormData();
14815
14894
  handleFormChange('type', item?.type || '');
14816
14895
  handleFormChange('currentStreamName', selectedStreamName);
14896
+ const exportedSignals = {
14897
+ logs: false,
14898
+ metrics: false,
14899
+ traces: false,
14900
+ };
14901
+ selectedMonitors.filter((monitor) => item.supportedSignals[monitor].supported).forEach((monitor) => (exportedSignals[monitor] = true));
14902
+ handleFormChange('exportedSignals', exportedSignals);
14817
14903
  setYamlFields(item?.fields || []);
14818
14904
  setSelectedItem(item);
14819
14905
  };
@@ -14859,7 +14945,7 @@ const DestinationModal = ({ isOnboarding, categories, potentialDestinations, cre
14859
14945
  { stepNumber: 2, title: DISPLAY_TITLES.CONNECTION },
14860
14946
  ] })),
14861
14947
  React.createElement(ModalBody, { style: { margin: '32px 24px 12px 24px' } },
14862
- React.createElement(ChooseDestinationBody, { hidden: selectedItem !== undefined, categories: categories, potentialDestinations: potentialDestinations, onSelectOption: handleSelectOption, onSelectConfigured: handleSelectConfigured }),
14948
+ React.createElement(ChooseDestinationBody, { hidden: selectedItem !== undefined, categories: categories, potentialDestinations: potentialDestinations, onSelectNew: handleSelectNew, onSelectConfigured: handleSelectConfigured }),
14863
14949
  selectedItem && (React.createElement(DestinationForm, { categoryItem: selectedItem, formData: formData, formErrors: formErrors, handleFormChange: handleFormChange, dynamicFields: dynamicFields, setDynamicFields: setDynamicFields, validateForm: validateForm, testConnection: testConnection }))))));
14864
14950
  };
14865
14951
 
@@ -15975,6 +16061,11 @@ const buildCard = (source) => {
15975
16061
  { title: DISPLAY_TITLES.NAMESPACE, value: namespace },
15976
16062
  { title: DISPLAY_TITLES.KIND, value: kind },
15977
16063
  { title: DISPLAY_TITLES.NAME, value: name, tooltip: 'K8s resource name' },
16064
+ { type: DataCardFieldTypes.Divider },
16065
+ {
16066
+ type: DataCardFieldTypes.CopyText,
16067
+ value: `kubectl get ${kind} ${name} -n ${namespace}`,
16068
+ },
15978
16069
  ];
15979
16070
  return arr;
15980
16071
  };
@@ -16026,12 +16117,27 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource }) =>
16026
16117
  loadFormWithDrawerItem(found);
16027
16118
  return found;
16028
16119
  }, [isOpen, drawerEntityId, sourcesByStream]);
16120
+ const containersData = useMemo(() => {
16121
+ const isDisabled = thisItem?.conditions?.some(({ status }) => status === OtherStatus.Disabled);
16122
+ const runtimeCondition = thisItem?.conditions?.find(({ type }) => type === 'RuntimeDetection');
16123
+ const mappedContainers = thisItem?.containers?.map((container) => {
16124
+ const value = {
16125
+ ...container,
16126
+ isDisabled,
16127
+ };
16128
+ return {
16129
+ type: DataCardFieldTypes.SourceContainer,
16130
+ value: JSON.stringify(value),
16131
+ };
16132
+ }) || [];
16133
+ return {
16134
+ description: runtimeCondition?.message,
16135
+ isLoading: runtimeCondition?.status === OtherStatus.Loading,
16136
+ items: mappedContainers,
16137
+ };
16138
+ }, [thisItem]);
16029
16139
  if (!thisItem)
16030
16140
  return null;
16031
- const containersData = thisItem.containers?.map((container) => ({
16032
- type: DataCardFieldTypes.SourceContainer,
16033
- value: JSON.stringify(container),
16034
- })) || [];
16035
16141
  const handleEdit = (bool) => {
16036
16142
  setIsEditing(typeof bool === 'boolean' ? bool : true);
16037
16143
  };
@@ -16075,7 +16181,7 @@ const SourceDrawer = ({ persistSources, updateSource, fetchDescribeSource }) =>
16075
16181
  } }))) : (React.createElement(DataContainer$1, null,
16076
16182
  React.createElement(ConditionDetails, { conditions: thisItem.conditions || [] }),
16077
16183
  React.createElement(DataCard, { title: DISPLAY_TITLES.SOURCE_DETAILS, data: !!thisItem ? buildCard(thisItem) : [] }),
16078
- React.createElement(DataCard, { title: DISPLAY_TITLES.DETECTED_CONTAINERS, titleBadge: containersData.length, description: DISPLAY_TITLES.DETECTED_CONTAINERS_DESCRIPTION, data: containersData })))) : (React.createElement(Describe$1, { source: thisItem, fetchDescribeSource: fetchDescribeSource }))));
16184
+ React.createElement(DataCard, { title: DISPLAY_TITLES.DETECTED_CONTAINERS, titleBadge: containersData.isLoading ? OtherStatus.Loading : containersData.items.length, description: containersData.description || DISPLAY_TITLES.DETECTED_CONTAINERS_DESCRIPTION, data: containersData.items })))) : (React.createElement(Describe$1, { source: thisItem, fetchDescribeSource: fetchDescribeSource }))));
16079
16185
  };
16080
16186
 
16081
16187
  const ActionsRow = styled(FlexRow) `
package/lib/functions.js CHANGED
@@ -1,14 +1,13 @@
1
- export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, n as numbersOnly, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-ChYtqgBW.js';
2
- export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, i as getConditionsBooleans, k as getContainersIcons, j as getContainersInstrumentedCount, l as getDestinationIcon, m as getEntityIcon, n as getEntityLabel, o as getMetricForEntity, p as getPlatformIcon, q as getPlatformLabel, r as getValueForRange, s as getWorkloadId, t as getYamlFieldsForDestination, u as isOverTime, v as mapDestinationFieldsForDisplay, w as mapExportedSignals, x as sleep } from './index-BBjwRlta.js';
3
- export { k as getActionIcon, l as getEntityId, m as getInstrumentationRuleIcon } from './index-DJGe2YeC.js';
4
- export { g as getIdFromSseTarget, i as isLegalK8sLabel } from './index-CnZlllYu.js';
1
+ export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getMonitorIcon, a as getProgrammingLanguageIcon, b as getStatusIcon, m as mapConditions, n as numbersOnly, p as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, d as splitCamelString } from './index-CCX1HLUr.js';
2
+ export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, i as getConditionsBooleans, k as getContainersIcons, j as getContainersInstrumentedCount, l as getDestinationIcon, m as getEntityIcon, n as getEntityLabel, o as getMetricForEntity, p as getPlatformIcon, q as getPlatformLabel, r as getValueForRange, s as getWorkloadId, t as getYamlFieldsForDestination, u as isOverTime, v as mapDestinationFieldsForDisplay, w as sleep } from './index-dLZvpGw3.js';
3
+ export { l as getActionIcon, m as getEntityId, n as getInstrumentationRuleIcon } from './index-CKOBXat_.js';
4
+ export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-BlZKWuxe.js';
5
5
  import { EntityTypes } from './types.js';
6
6
  export { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
7
7
  import 'react';
8
8
  import 'styled-components';
9
- import './index-Bd8ZAEvq.js';
10
- import './index-mOgS3e5E.js';
11
- import './index-Cq8NT9Hr.js';
9
+ import './index-BVj4fOL3.js';
10
+ import './index-9R2N835W.js';
12
11
 
13
12
  const cleanObjectEmptyStringsValues = (obj) => {
14
13
  const cleanArray = (arr) => arr.filter((item) => {
@@ -9,6 +9,7 @@ export * from './useGenericForm';
9
9
  export * from './useInstrumentationRuleFormData';
10
10
  export * from './useKeyDown';
11
11
  export * from './useOnClickOutside';
12
+ export * from './useSessionStorage';
12
13
  export * from './useSourceFormData';
13
14
  export * from './useSourceSelectionFormData';
14
15
  export * from './useTimeAgo';
@@ -0,0 +1,5 @@
1
+ export declare const useSessionStorage: () => {
2
+ getItemSS: (key: string, defaultValue: any) => any;
3
+ setItemSS: (key: string, value: any) => void;
4
+ removeItemSS: (key: string) => void;
5
+ };
package/lib/hooks.js CHANGED
@@ -1,9 +1,8 @@
1
- export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSourceFormData, f as useSourceSelectionFormData } from './useSourceSelectionFormData-DBNf1uEe.js';
2
- export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-dZ92VxT2.js';
1
+ export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSessionStorage, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-DqSNROtZ.js';
2
+ export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-D9f1CP9n.js';
3
3
  import './types.js';
4
- import './index-DJGe2YeC.js';
4
+ import './index-CKOBXat_.js';
5
5
  import 'react';
6
6
  import 'styled-components';
7
- import './index-mOgS3e5E.js';
8
7
  import './index-BV85P9UP.js';
9
- import './index-CnZlllYu.js';
8
+ import './index-BlZKWuxe.js';