pixel-react 1.4.4 → 1.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/lib/components/Editor/Editor.d.ts +1 -2
  3. package/lib/components/Editor/types.d.ts +1 -5
  4. package/lib/components/MachineInputField/types.d.ts +1 -0
  5. package/lib/components/SequentialConnectingBranch/SequentialConnectingBranch.d.ts +1 -1
  6. package/lib/components/SequentialConnectingBranch/types.d.ts +7 -4
  7. package/lib/index.d.ts +44 -17
  8. package/lib/index.esm.js +5214 -613
  9. package/lib/index.esm.js.map +1 -1
  10. package/lib/index.js +5214 -612
  11. package/lib/index.js.map +1 -1
  12. package/lib/utils/getSequentialPayload/getSequentialPayload.d.ts +2 -2
  13. package/lib/utils/getSequentialPayload/types.d.ts +2 -4
  14. package/package.json +2 -2
  15. package/src/assets/icons/add_file.svg +4 -13
  16. package/src/assets/icons/eye_open_icon.svg +10 -0
  17. package/src/assets/icons/windows.svg +8 -4
  18. package/src/components/Checkbox/Checkbox.scss +1 -1
  19. package/src/components/Editor/Editor.tsx +224 -191
  20. package/src/components/Editor/types.ts +1 -5
  21. package/src/components/Icon/iconList.ts +2 -0
  22. package/src/components/MachineInputField/MachineInputField.scss +4 -2
  23. package/src/components/MachineInputField/MachineInputField.tsx +2 -0
  24. package/src/components/MachineInputField/types.ts +1 -0
  25. package/src/components/MenuOption/MenuOption.tsx +3 -4
  26. package/src/components/MultiSelect/MultiSelect.scss +50 -45
  27. package/src/components/MultiSelect/MultiSelect.tsx +1 -1
  28. package/src/components/Select/components/Dropdown.tsx +22 -8
  29. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.scss +34 -32
  30. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.stories.tsx +34 -40
  31. package/src/components/SequentialConnectingBranch/SequentialConnectingBranch.tsx +27 -100
  32. package/src/components/SequentialConnectingBranch/components/Branches/Branches.scss +5 -5
  33. package/src/components/SequentialConnectingBranch/components/Branches/Branches.tsx +5 -3
  34. package/src/components/SequentialConnectingBranch/types.ts +7 -4
  35. package/src/components/Tooltip/Tooltip.scss +1 -0
  36. package/src/components/Tooltip/Tooltip.tsx +1 -2
  37. package/src/index.ts +3 -1
  38. package/src/utils/getSequentialPayload/getSequentialPayload.stories.tsx +2 -5
  39. package/src/utils/getSequentialPayload/getSequentialPayload.ts +11 -24
  40. package/src/utils/getSequentialPayload/types.ts +3 -6
@@ -70,7 +70,7 @@ const OptionCard = ({
70
70
  };
71
71
  case 'down':
72
72
  return {
73
- top: menuPosition.bottom,
73
+ top: menuPosition.bottom - 5,
74
74
  left: menuPosition.rightSpaceAvailable + 12,
75
75
  };
76
76
  case 'left':
@@ -131,13 +131,12 @@ const MenuOption = ({
131
131
  fromBottom: 0,
132
132
  rightSpaceAvailable: 0,
133
133
  });
134
- useEffect(() => {
135
- calculateDims();
136
- });
134
+
137
135
  const closeDropDown = () => setIsClicked(false);
138
136
 
139
137
  const onIconClickHandler = () => {
140
138
  onClick();
139
+ calculateDims();
141
140
  setIsClicked((prev) => !prev);
142
141
  };
143
142
 
@@ -79,59 +79,64 @@
79
79
  top: -6px;
80
80
  pointer-events: none;
81
81
  }
82
- .ff-multiselect-chip-container {
82
+ .ff-multiselect-chip-parent-container{
83
+ width: 100%;
83
84
  display: flex;
84
- flex-wrap: wrap;
85
- align-items: center;
86
- gap: 5px;
87
- .ff-multiselect-chip {
88
- @include flex-center;
89
- box-sizing: border-box;
90
- border: 0.5px solid #f1ebf2;
91
- padding: 0 1px 0 4px;
92
- gap: 4px;
93
- height: 16px;
94
- border-radius: 15px;
95
- .ff-multiselect-chip-label {
96
- @extend .fontXs;
97
- line-height: 14px;
98
- color: var(--tooltip-bg-color);
99
- &.label-padding {
100
- padding: 5px 2px;
85
+ justify-content: space-between;
86
+ .ff-multiselect-chip-container {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ align-items: center;
90
+ gap: 5px;
91
+ .ff-multiselect-chip {
92
+ @include flex-center;
93
+ box-sizing: border-box;
94
+ border: 0.5px solid #f1ebf2;
95
+ padding: 0 1px 0 4px;
96
+ gap: 4px;
97
+ height: 16px;
98
+ border-radius: 15px;
99
+ .ff-multiselect-chip-label {
100
+ @extend .fontXs;
101
+ line-height: 14px;
102
+ color: var(--tooltip-bg-color);
103
+ &.label-padding {
104
+ padding: 5px 2px;
105
+ }
106
+ }
107
+ .ff-multiselect-chip-close-icon {
108
+ color: var(--brand-color);
109
+ cursor: pointer;
101
110
  }
102
111
  }
103
- .ff-multiselect-chip-close-icon {
104
- color: var(--brand-color);
105
- cursor: pointer;
106
- }
107
- }
108
- .ff-multiselect-input-container {
109
- flex: 1;
110
- min-width: 20px;
111
- input {
112
- width: 100%;
113
- min-width: 30px;
114
- max-width: calc(100% - 0px);
115
- padding: 2px;
116
- box-sizing: border-box;
117
- border: none;
118
- font-size: 12px;
119
- &:focus {
120
- outline: none;
112
+ .ff-multiselect-input-container {
113
+ flex: 1;
114
+ min-width: 20px;
115
+ input {
116
+ width: 100%;
117
+ min-width: 30px;
118
+ max-width: calc(100% - 0px);
119
+ padding: 2px;
120
+ box-sizing: border-box;
121
+ border: none;
122
+ font-size: 12px;
123
+ &:focus {
124
+ outline: none;
125
+ }
121
126
  }
122
127
  }
123
128
  }
129
+ .ff-multiselect-more-chip {
130
+ display: flex;
131
+ align-items: center;
132
+ width: 16px;
133
+ @extend .fontSm;
134
+ font-weight: 600;
135
+ line-height: 16px;
136
+ color: var(--brand-color);
137
+ }
124
138
  }
125
139
  }
126
- .ff-multiselect-more-chip {
127
- display: flex;
128
- align-items: center;
129
- width: 16px;
130
- @extend .fontSm;
131
- font-weight: 600;
132
- line-height: 16px;
133
- color: var(--brand-color);
134
- }
135
140
  &__toggle {
136
141
  display: flex;
137
142
  align-items: center;
@@ -355,7 +355,7 @@ const MultiSelect = ({
355
355
  )}
356
356
 
357
357
  {!withSelectButton && (
358
- <div>
358
+ <div className='ff-multiselect-chip-parent-container'>
359
359
  <div className="ff-multiselect-chip-container">
360
360
  {displayCount ? (
361
361
  <>
@@ -1,4 +1,4 @@
1
- import { type FC, useContext, useRef } from 'react';
1
+ import React, { type FC, useContext, useRef } from 'react';
2
2
  import { dropdownDefaultCSSData, DropdownProps } from './types';
3
3
  import './Dropdown.scss';
4
4
  import { checkEmpty } from '../../../utils/checkEmpty/checkEmpty';
@@ -65,6 +65,23 @@ const Dropdown: FC<DropdownProps> = ({
65
65
  };
66
66
  };
67
67
 
68
+ const getOptionLabel = (label: any) => {
69
+ if (React.isValidElement(label)) {
70
+ console.log('test');
71
+ return label;
72
+ }
73
+ console.log('test112');
74
+ return (
75
+ <Typography
76
+ as="div"
77
+ lineHeight="30px"
78
+ color="var(--ff-select-text-color)"
79
+ >
80
+ {label}
81
+ </Typography>
82
+ );
83
+ };
84
+
68
85
  return (
69
86
  <div
70
87
  className={classNames('ff-select-dropdown-wrapper', currentTheme)}
@@ -73,10 +90,7 @@ const Dropdown: FC<DropdownProps> = ({
73
90
  >
74
91
  {!checkEmpty(options) ? (
75
92
  options.map((option) => (
76
- <Typography
77
- key={ffid()}
78
- as="div"
79
- lineHeight="30px"
93
+ <div
80
94
  className={classNames(
81
95
  'ff-select-dropdown-option',
82
96
  {
@@ -85,14 +99,14 @@ const Dropdown: FC<DropdownProps> = ({
85
99
  },
86
100
  currentTheme
87
101
  )}
88
- color="var(--ff-select-text-color)"
102
+ key={ffid()}
89
103
  onClick={() => {
90
104
  if ('disable' in option && option['disable']) return;
91
105
  onSelectOptionSelector(option);
92
106
  }}
93
107
  >
94
- {getLabel(option, labelAccessor)}
95
- </Typography>
108
+ {getOptionLabel(getLabel(option, labelAccessor))}
109
+ </div>
96
110
  ))
97
111
  ) : (
98
112
  <Typography
@@ -1,3 +1,23 @@
1
+ @mixin item-center {
2
+ display: flex;
3
+ align-items: center;
4
+ }
5
+
6
+ @mixin circle($size, $color) {
7
+ width: $size;
8
+ height: $size;
9
+ border-radius: 50%;
10
+ background-color: $color;
11
+ }
12
+
13
+ @mixin arrow($color, $width, $height) {
14
+ width: $width;
15
+ height: $height;
16
+ background-color: $color;
17
+ clip-path: polygon(100% 50%, 0 100%, 0 0);
18
+ position: absolute;
19
+ }
20
+
1
21
  .ff-sequential-connecting-branch-wrapper {
2
22
  .ff-connecting-select-branch-wrapper {
3
23
  height: 66px;
@@ -15,40 +35,29 @@
15
35
  }
16
36
 
17
37
  .ff-select-branch-arrow {
38
+ @include item-center;
18
39
  position: relative;
19
- display: flex;
20
- align-items: center;
21
40
 
22
41
  .ff-branch-arrow-wrapper {
42
+ margin: 0;
23
43
  width: 40px;
24
44
  border-top: 1px solid var(--ff-connecting-branch-color);
25
- margin-top: 4px;
26
45
  position: relative;
27
46
 
28
47
  .ff-branch-arrow {
29
- width: 6px;
30
- height: 6px;
31
- background-color: var(--ff-connecting-branch-color);
32
- clip-path: polygon(100% 50%, 0 100%, 0 0);
33
- position: absolute;
48
+ @include arrow(var(--ff-connecting-branch-color), 6px, 6px);
34
49
  right: -1px;
35
50
  top: -3px;
36
51
  }
37
52
  }
38
53
 
39
54
  .ff-select-branch-point {
40
- width: 5px;
41
- height: 5px;
42
- border-radius: 50%;
43
- background-color: var(--ff-connecting-branch-color);
55
+ @include circle(5px, var(--ff-connecting-branch-color));
44
56
  position: absolute;
45
57
  left: -3px;
46
58
  z-index: 102;
47
59
  top: 50%;
48
- }
49
-
50
- .branch-button {
51
- margin-top: 4px;
60
+ transform: translateY(-50%);
52
61
  }
53
62
  }
54
63
 
@@ -57,21 +66,19 @@
57
66
  height: 38px;
58
67
 
59
68
  .ff-select-branch-point {
69
+ @include circle(5px, var(--ff-connecting-branch-color));
60
70
  position: absolute;
61
- height: 5px;
62
- width: 5px;
63
- background-color: var(--ff-connecting-branch-color);
64
- border-radius: 50%;
65
- top: 50%;
66
71
  left: -2px;
67
72
  z-index: 102;
73
+ top: 50%;
74
+ transform: translateY(-50%);
68
75
  }
69
76
 
70
77
  .ff-select-branch-arrow {
71
- width: 0px;
78
+ width: 0;
72
79
  height: 62px;
73
80
  top: calc(50% + 1px);
74
- border-left: 1px solid var(--ff-connecting-branch-color);
81
+ border-left: 1px solid var(--ff-connecting-branch-color);
75
82
  z-index: 102;
76
83
  }
77
84
  }
@@ -80,21 +87,16 @@
80
87
  .ff-select-scope-datalist {
81
88
  box-sizing: border-box;
82
89
  width: 240px;
83
- margin-top: 4px;
84
- padding: 0px 4px;
85
90
  display: flex;
86
91
  justify-content: space-between;
87
92
 
88
93
  .ff-scope-wrapper {
89
- display: flex;
90
-
91
- .ff-scope-text {
92
- margin-left: 4px;
93
- }
94
+ @include item-center;
95
+ margin-right: 12px;
94
96
  }
95
97
 
96
98
  .ff-datalist-wrapper {
97
- display: flex;
99
+ @include item-center;
98
100
 
99
101
  .ff-dataset-icon,
100
102
  .ff-run-delete-icon,
@@ -103,7 +105,7 @@
103
105
  }
104
106
 
105
107
  .ff-datalist-text {
106
- margin: 0px 12px 0px 4px;
108
+ margin: 0 12px 0 0;
107
109
  }
108
110
  }
109
111
  }
@@ -1,6 +1,6 @@
1
1
  import type { Meta, StoryObj } from '@storybook/react';
2
2
  import SequentialConnectingBranch from './SequentialConnectingBranch';
3
- import {ffid} from '../../utils/ffID/ffid';
3
+ import { useState } from 'react';
4
4
 
5
5
  const meta: Meta<typeof SequentialConnectingBranch> = {
6
6
  title: 'Components/SequentialConnectingBranch',
@@ -14,48 +14,42 @@ const meta: Meta<typeof SequentialConnectingBranch> = {
14
14
  type Story = StoryObj<typeof SequentialConnectingBranch>;
15
15
 
16
16
  export const Primary: Story = {
17
- args: {
18
- machineInstances: [
17
+ render: () => {
18
+ const machineList = [
19
19
  {
20
- id: ffid(),
21
- runCount: 1,
22
- clientId: 'flinko-client-win-98ddb98f-2349-43ce-869e-c2d5350741a4',
23
- executionEnv: 'Local',
24
- browserName: 'Google Chrome',
25
- browserVersion: '111.0.5563.112',
26
- systemUrl: '',
27
- machineInfo: {
28
- osName: 'Windows 11 Pro',
29
- osVersion: '10.0.22621',
30
- hostName: 'TYSS-Kumuda',
31
- },
32
- deviceInfo: [],
33
- headless: false,
34
- peVariableSetId: 'UUID',
35
- globalVariableSetId: 'UUID',
36
- testDataSetId: 'UUID',
20
+ label: 'FFE 123',
21
+ value: 'FFE 123',
37
22
  },
38
- ],
39
- machineInstance: {
40
- id: ffid(),
41
- runCount: 1,
42
- clientId: 'flinko-client-win-98ddb98f-2349-43ce-869e-c2d5350741a4',
43
- executionEnv: 'Local',
44
- browserName: 'Google Chrome',
45
- browserVersion: '111.0.5563.112',
46
- systemUrl: '',
47
- machineInfo: {
48
- osName: 'Windows 11 Pro',
49
- osVersion: '10.0.22621',
50
- hostName: 'TYSS-Kumuda',
23
+ {
24
+ label: 'FFE 234',
25
+ value: 'FFE 234',
26
+ },
27
+ {
28
+ label: 'FFE 345',
29
+ value: 'FFE 345',
30
+ },
31
+ {
32
+ label: 'FFE 456',
33
+ value: 'FFE 456',
51
34
  },
52
- deviceInfo: [],
53
- headless: false,
54
- peVariableSetId: 'UUID',
55
- globalVariableSetId: 'UUID',
56
- testDataSetId: 'UUID',
57
- },
58
- selectedMachine: 'test',
35
+ ];
36
+ const [selectedMachine, setSelectedMachine] = useState({});
37
+ const [machineInstances, setMachineInstances] = useState<any>([]);
38
+ return (
39
+ <>
40
+ <SequentialConnectingBranch
41
+ machineOptionsList={machineList}
42
+ machineInstances={machineInstances}
43
+ selectedMachine={selectedMachine}
44
+ onHandleSelect={(option) => {
45
+ setSelectedMachine(option);
46
+ }}
47
+ onAddBrowserInstance={() => {
48
+ setMachineInstances([...machineInstances, {}]);
49
+ }}
50
+ />
51
+ </>
52
+ );
59
53
  },
60
54
  };
61
55
 
@@ -7,102 +7,36 @@ import Typography from '../Typography';
7
7
  import './SequentialConnectingBranch.scss';
8
8
  import { useEffect, useRef, useState } from 'react';
9
9
  import ConnectingBranches from './components/ConnectingBranches/ConnectingBranches';
10
- import DatasetListModal from './components/DatasetListModal/DatasetListModal';
11
- import AddBrowserModal from './components/AddBrowserModal/AddBrowserModal';
12
10
  import { ExecutionContext, SequentialConnectingBranchProps } from './types';
13
- import { Option } from '../Select/types';
14
- import { ffid } from '../../utils/ffID/ffid';
15
11
 
16
12
  const SequentialConnectingBranch = ({
17
13
  machineInstances = [],
18
14
  machineColumnWidth = 180,
19
15
  machineColumnCount = 1,
20
- machineInstance,
21
- selectedMachine = '',
16
+ selectedMachine = {},
22
17
  machineOptionsList = [],
23
- onMachineSelectionChange = () => {},
18
+ onHandleSelect = () => {},
19
+ onAddBrowserInstance = () => {},
20
+ onAddRunBrowserInstance = () => {},
21
+ onDeleteBrowserInstance = () => {},
24
22
  }: SequentialConnectingBranchProps) => {
25
23
  const dataListRef = useRef<HTMLButtonElement>(null);
26
24
  const selectButtonRef = useRef<HTMLButtonElement>(null);
27
25
  const defaultMachineColumnCount = Math.max(machineColumnCount, 1);
28
26
  const defaultMachineColumnWidth = Math.max(machineColumnWidth, 180);
29
27
 
30
- const isBrowserDetails = checkEmpty(machineInstances);
31
- const [datasetListModal, setDatasetListModal] = useState(
32
- !!selectedMachine && isBrowserDetails
33
- );
34
- const [addBrowserModal, setAddBrowserModal] = useState(false);
35
28
  const [machineBranchInstances, setMachineBranchInstances] = useState<
36
29
  ExecutionContext[] | {}[]
37
- >(machineInstances);
38
-
39
- // TODO: DEMO PURPOSE AND WILL BE REMOVED IN THE FUTURE
40
- const onHandleSelect = (option: Option) => {
41
- setDatasetListModal(true);
42
- onMachineSelectionChange(option);
43
- };
44
-
45
- // TODO: DEMO PURPOSE AND WILL BE REMOVED IN THE FUTURE
46
- const onUpdateDatasetList = () => {
47
- setDatasetListModal(false);
48
- setAddBrowserModal(true);
49
- };
50
-
51
- // TODO: DEMO PURPOSE AND WILL BE REMOVED IN THE FUTURE
52
- const onUpdateAddBrowser = () => {
53
- setAddBrowserModal(false);
54
- setDatasetListModal(false);
55
- };
56
-
57
- // TODO: DEMO PURPOSE AND WILL BE REMOVED IN THE FUTURE
58
- const onAddBrowser = () => {
59
- const newMachineInstance = { ...machineInstance, id: ffid() };
60
- setMachineBranchInstances((prevInstances) => [
61
- ...prevInstances.slice(0, -1),
62
- newMachineInstance,
63
- {},
64
- ]);
65
- };
66
-
67
- // TODO: DEMO PURPOSE AND WILL BE REMOVED IN THE FUTURE
68
- const onDeleteBrowser = (id: string, runCount: number) => {
69
- const machineInstance = machineBranchInstances.filter((instance) => {
70
- if ('id' in instance && 'runCount' in instance) {
71
- return instance.id !== id || instance.runCount !== runCount;
72
- }
73
- return true;
74
- });
75
- setMachineBranchInstances(machineInstance);
76
- };
77
-
78
- // TODO: DEMO PURPOSE AND WILL BE REMOVED IN THE FUTURE
79
- const onAddRunBrowser = (id: string) => {
80
- const index = machineBranchInstances.findLastIndex(
81
- (instance) => 'id' in instance && instance.id === id
82
- );
30
+ >([]);
83
31
 
84
- if (index !== -1) {
85
- const existingMachineInstance = machineBranchInstances[index];
86
-
87
- if (existingMachineInstance && 'runCount' in existingMachineInstance) {
88
- const newRunInstance = {
89
- ...existingMachineInstance,
90
- runCount: (existingMachineInstance.runCount ?? 0) + 1,
91
- };
92
-
93
- setMachineBranchInstances((prevInstances) => [
94
- ...prevInstances.slice(0, index + 1),
95
- newRunInstance,
96
- ...prevInstances.slice(index + 1),
97
- ]);
98
- }
99
- }
100
- };
32
+ const isMachineInstances = checkEmpty(machineInstances);
33
+ const isMachineSelected = checkEmpty(selectedMachine);
101
34
 
102
35
  useEffect(() => {
103
- setMachineBranchInstances([...machineBranchInstances, {}]);
104
- }, []);
105
-
36
+ setMachineBranchInstances([...machineInstances, {}]);
37
+ }, [machineInstances]);
38
+ console.log(machineInstances, 'machineInstances');
39
+ console.log(machineBranchInstances, 'machineBranchInstances');
106
40
  return (
107
41
  <div className="ff-sequential-connecting-branch-wrapper">
108
42
  <div className="ff-connecting-select-branch-wrapper">
@@ -114,21 +48,25 @@ const SequentialConnectingBranch = ({
114
48
  label="Choose Machine"
115
49
  showLabel={true}
116
50
  className="ff-sequential-select-branch"
51
+ width={'240px'}
52
+ selectedOption={selectedMachine}
53
+ valueAccessor={'name'}
117
54
  />
118
- {/* {isBrowserDetails && !!selectedMachine && ( */}
119
- {!!selectedMachine && (
55
+ {!isMachineSelected && (
120
56
  <div
121
57
  className={classNames({
122
- 'ff-select-branch-arrow': isBrowserDetails,
123
- 'ff-select-branch-arrow-down': !isBrowserDetails,
58
+ 'ff-select-branch-arrow': isMachineInstances,
59
+ 'ff-select-branch-arrow-down': !isMachineInstances,
124
60
  })}
125
61
  >
126
62
  <div className="ff-select-branch-point"></div>
127
63
  <div className="ff-select-branch-arrow">
128
64
  <div className="ff-branch-arrow-wrapper">
129
- {isBrowserDetails && <div className="ff-branch-arrow"></div>}
65
+ {isMachineInstances && (
66
+ <div className="ff-branch-arrow"></div>
67
+ )}
130
68
  </div>
131
- {addBrowserModal && (
69
+ {isMachineInstances && (
132
70
  <>
133
71
  <Button
134
72
  variant="tertiary"
@@ -136,12 +74,7 @@ const SequentialConnectingBranch = ({
136
74
  size="small"
137
75
  className="branch-button"
138
76
  ref={selectButtonRef}
139
- onClick={onAddBrowser}
140
- />
141
-
142
- <AddBrowserModal
143
- ref={selectButtonRef}
144
- onUpdateAddBrowser={onUpdateAddBrowser}
77
+ onClick={onAddBrowserInstance}
145
78
  />
146
79
  </>
147
80
  )}
@@ -168,12 +101,6 @@ const SequentialConnectingBranch = ({
168
101
  className="ff-dataset-icon"
169
102
  ref={dataListRef}
170
103
  />
171
- {datasetListModal && (
172
- <DatasetListModal
173
- ref={dataListRef}
174
- onUpdateDatasetList={onUpdateDatasetList}
175
- />
176
- )}
177
104
  <Typography
178
105
  as="span"
179
106
  fontSize={12}
@@ -191,14 +118,14 @@ const SequentialConnectingBranch = ({
191
118
  </div>
192
119
  </div>
193
120
  <div className="ff-sequential-branches-wrapper">
194
- {!isBrowserDetails && (
121
+ {!isMachineInstances && (
195
122
  <ConnectingBranches
196
123
  machineBranchInstances={machineBranchInstances}
197
124
  machineColumnCount={defaultMachineColumnCount}
198
125
  machineColumnWidth={defaultMachineColumnWidth}
199
- onAddBrowser={onAddBrowser}
200
- onDeleteBrowser={onDeleteBrowser}
201
- onAddRunBrowser={onAddRunBrowser}
126
+ onAddBrowser={onAddBrowserInstance}
127
+ onDeleteBrowser={onDeleteBrowserInstance}
128
+ onAddRunBrowser={onAddRunBrowserInstance}
202
129
  />
203
130
  )}
204
131
  </div>
@@ -40,14 +40,14 @@
40
40
  @mixin branch-arrow(
41
41
  $clip: polygon(0 0, 0% 100%, 100% 50%),
42
42
  $horizontal-pos: right,
43
- $offset: -1px
43
+ $offset: -2px
44
44
  ) {
45
45
  position: absolute;
46
46
  height: 5px;
47
47
  width: 5px;
48
48
  background-color: var(--ff-connecting-branch-color);
49
49
  clip-path: $clip;
50
- top: calc(25% - 4px);
50
+ top: calc(25% - 3px);
51
51
  #{$horizontal-pos}: $offset;
52
52
  z-index: 2;
53
53
  }
@@ -138,12 +138,12 @@
138
138
  }
139
139
 
140
140
  .ff-connecting-branch-point-reverse {
141
- @include branch-point($position: left, $offset: -4px);
141
+ @include branch-point($position: left, $offset: -2px);
142
142
  }
143
143
  }
144
144
 
145
145
  .ff-connecting-branch-middle-arrow {
146
- height: 0px;
146
+ height: 0;
147
147
  width: 100%;
148
148
  margin-top: calc(50% - 3px);
149
149
  position: relative;
@@ -180,5 +180,5 @@
180
180
 
181
181
  .ff-connecting-branch-grid-reverse {
182
182
  direction: rtl;
183
- margin: 0px 0px 16px 0px;
183
+ margin: 0 0 16px 0;
184
184
  }
@@ -91,7 +91,9 @@ const Branches = ({
91
91
  executionEnv = 'Local',
92
92
  browserName = 'Local',
93
93
  browserVersion = '1',
94
- runCount = 0,
94
+ numberOfRuns = 'numberOfRuns' in machineInstance
95
+ ? machineInstance.numberOfRuns
96
+ : 0,
95
97
  id = '',
96
98
  } = machineInstance as ExecutionContext;
97
99
  return (
@@ -107,7 +109,7 @@ const Branches = ({
107
109
  ></div>
108
110
  <MachineInputField
109
111
  width={`${machineColumnWidth}px`}
110
- runCount={runCount}
112
+ runCount={numberOfRuns}
111
113
  key={ffid()}
112
114
  options={[
113
115
  { label: executionEnv, type: executionEnv },
@@ -144,7 +146,7 @@ const Branches = ({
144
146
  <Icon
145
147
  name="delete"
146
148
  className="ff-connecting-delete-icon"
147
- onClick={() => onDeleteBrowser(id, runCount)}
149
+ onClick={() => onDeleteBrowser(id, numberOfRuns)}
148
150
  color="var(--ff-connecting-branch-delete-color)"
149
151
  />
150
152
  </div>