pollination-react-io 1.43.0 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,4 +15,5 @@ export interface StudyCardProps {
15
15
  enableClick?: boolean;
16
16
  getValue?: (any: any) => any;
17
17
  defaultTab?: JobTabs;
18
+ enableLink?: boolean;
18
19
  }
@@ -1,5 +1,9 @@
1
1
  import React from 'react';
2
2
  import { RunCardProps } from './RunCard.types';
3
3
  import './RunCard.scss';
4
+ /**
5
+ * Note it is a @deprecated component
6
+ * use RunCard from Cards.
7
+ */
4
8
  export declare const RunCard: React.FC<RunCardProps>;
5
9
  export default RunCard;
@@ -1,5 +1,9 @@
1
1
  import React from 'react';
2
2
  import { StudyCardProps } from './StudyCard.types';
3
3
  import './StudyCard.scss';
4
+ /**
5
+ * Note it is a @deprecated component
6
+ * use StudyCard from Cards.
7
+ */
4
8
  export declare const StudyCard: React.FC<StudyCardProps>;
5
9
  export default StudyCard;
@@ -48487,14 +48487,14 @@ var formatDuration$1 = function (duration) {
48487
48487
  var StudyCard = function (_a) {
48488
48488
  var _b;
48489
48489
  var _c, _d, _e, _f;
48490
- var projectName = _a.projectName, projectOwner = _a.projectOwner, _study = _a.study, style = _a.style, authUser = _a.authUser, client = _a.client, enableClick = _a.enableClick, _g = _a.getValue, getValue = _g === void 0 ? function (tab) { } : _g, _h = _a.defaultTab, defaultTab = _h === void 0 ? '' : _h;
48490
+ var projectName = _a.projectName, projectOwner = _a.projectOwner, _study = _a.study, style = _a.style, authUser = _a.authUser, client = _a.client, enableClick = _a.enableClick, _g = _a.getValue, getValue = _g === void 0 ? function (tab) { } : _g, _h = _a.defaultTab, defaultTab = _h === void 0 ? '' : _h, _j = _a.enableLink, enableLink = _j === void 0 ? false : _j;
48491
48491
  // Fetch _study
48492
- var _j = useJobs(client), fetchJob = _j.fetchJob, getDuration = _j.getDuration, statusMap = _j.statusMap;
48492
+ var _k = useJobs(client), fetchJob = _k.fetchJob, getDuration = _k.getDuration, statusMap = _k.statusMap;
48493
48493
  var listRuns = useRuns(client).listRuns;
48494
- var _k = useWindowDimensions(), width = _k.width; _k.height;
48495
- var _l = useState(false), open = _l[0], setOpen = _l[1];
48494
+ var _l = useWindowDimensions(), width = _l.width; _l.height;
48495
+ var _m = useState(false), open = _m[0], setOpen = _m[1];
48496
48496
  // From job to run
48497
- var _m = useSWR(authUser && _study ? [projectOwner, projectName, _study.id] : undefined, fetchJob, {
48497
+ var _o = useSWR(authUser && _study ? [projectOwner, projectName, _study.id] : undefined, fetchJob, {
48498
48498
  revalidateOnFocus: false,
48499
48499
  refreshInterval: !_study || _study.status.finished_at ? undefined : 5000,
48500
48500
  fallbackData: _study,
@@ -48515,7 +48515,7 @@ var StudyCard = function (_a) {
48515
48515
  })
48516
48516
  .catch(function () { setRun(undefined); });
48517
48517
  }
48518
- }), study = _m.data; _m.error; _m.isValidating;
48518
+ }), study = _o.data; _o.error; _o.isValidating;
48519
48519
  var total = useMemo(function () {
48520
48520
  if (!study)
48521
48521
  return undefined;
@@ -48538,8 +48538,8 @@ var StudyCard = function (_a) {
48538
48538
  }
48539
48539
  return study.status.status.toLocaleLowerCase();
48540
48540
  }, [study]);
48541
- var _o = useState(), run = _o[0], setRun = _o[1];
48542
- var _p = useState(getDuration(study)), duration = _p[0], setDuration = _p[1];
48541
+ var _p = useState(), run = _p[0], setRun = _p[1];
48542
+ var _q = useState(getDuration(study)), duration = _q[0], setDuration = _q[1];
48543
48543
  useEffect(function () {
48544
48544
  setRun(undefined);
48545
48545
  if (!study)
@@ -48569,7 +48569,7 @@ var StudyCard = function (_a) {
48569
48569
  recipe: false,
48570
48570
  info: false
48571
48571
  };
48572
- var _q = useState(__assign(__assign({}, initialValues), (_b = {}, _b[defaultTab] = true, _b))), hover = _q[0], setHover = _q[1];
48572
+ var _r = useState(__assign(__assign({}, initialValues), (_b = {}, _b[defaultTab] = true, _b))), hover = _r[0], setHover = _r[1];
48573
48573
  var toggleHover = useCallback(function (id, value) {
48574
48574
  if (value === void 0) { value = false; }
48575
48575
  setHover(function (prevHover) {
@@ -48596,84 +48596,98 @@ var StudyCard = function (_a) {
48596
48596
  else ;
48597
48597
  } },
48598
48598
  React__default.createElement("div", { className: 'item1' },
48599
- React__default.createElement("a", { className: 'link', style: { marginRight: '0.75rem' }, onMouseOver: function (e) { return toggleHover('account', true); }, onMouseLeave: function (e) { return toggleHover('account', false); }, href: study && "/".concat(study.owner.name) },
48599
+ React__default.createElement("a", { className: 'link', style: { marginRight: '0.75rem' }, title: 'Go to account page', onMouseOver: function (e) { return toggleHover('account', true); }, onMouseLeave: function (e) { return toggleHover('account', false); }, href: study && "/".concat(study.owner.name) },
48600
48600
  React__default.createElement(Avatar, { src: study ? study.owner.picture_url : '', size: 32, color: hover.account ? '#40a9ff' : undefined })),
48601
48601
  React__default.createElement("span", { style: { marginRight: '0.75rem' } }, "/"),
48602
- React__default.createElement("a", { className: 'link', href: projectName && "/".concat(projectOwner, "/projects/").concat(projectName), onMouseOver: function (e) { return toggleHover('project', true); }, onMouseLeave: function (e) { return toggleHover('project', false); }, style: hover.project ? { color: '#40a9ff' } : {} }, projectName !== null && projectName !== void 0 ? projectName : '--')),
48602
+ React__default.createElement("a", { className: 'link', href: projectName && "/".concat(projectOwner, "/projects/").concat(projectName), title: 'Go to project page', onMouseOver: function (e) { return toggleHover('project', true); }, onMouseLeave: function (e) { return toggleHover('project', false); }, style: hover.project ? { color: '#40a9ff' } : {} }, projectName !== null && projectName !== void 0 ? projectName : '--')),
48603
48603
  React__default.createElement("div", { className: 'item2' },
48604
48604
  (study && !run) && total == 1 && React__default.createElement(LoadingOutlined$1, null),
48605
48605
  study && run &&
48606
48606
  React__default.createElement("div", null,
48607
- React__default.createElement(InfoCircleOutlined$1, { className: 'link', onClick: function (e) {
48608
- e.stopPropagation();
48609
- document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "/runs/").concat(run.id, "?tab=details");
48610
- }, onMouseOver: function (e) {
48611
- toggleHover('detailsOver', true);
48612
- }, onMouseLeave: function (e) {
48613
- toggleHover('detailsOver', false);
48614
- }, style: { marginRight: '0.75rem',
48615
- color: "".concat((hover.details || hover.detailsOver) ? '#40a9ff' : '#000') } }),
48616
- React__default.createElement(FolderOutlined$1, { className: 'link', onClick: function (e) {
48617
- e.stopPropagation();
48618
- document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "/runs/").concat(run.id, "?tab=workspace&path=runs/").concat(run.id, "/workspace");
48619
- }, onMouseOver: function (e) {
48620
- toggleHover('workspaceOver', true);
48621
- }, onMouseLeave: function (e) {
48622
- toggleHover('workspaceOver', false);
48623
- }, style: { marginRight: '0.75rem',
48624
- color: "".concat((hover.workspace || hover.workspaceOver) ? '#40a9ff' : '#000') } }),
48625
- React__default.createElement(PartitionOutlined$1, { className: 'link', onClick: function (e) {
48626
- e.stopPropagation();
48627
- document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "/runs/").concat(run.id, "?tab=debug");
48628
- }, onMouseOver: function (e) {
48629
- toggleHover('debugOver', true);
48630
- }, onMouseLeave: function (e) {
48631
- toggleHover('debugOver', false);
48632
- }, style: { color: "".concat((hover.debug || hover.debugOver) ? '#40a9ff' : '#000') } })),
48607
+ React__default.createElement("span", { title: 'Go to run page' },
48608
+ React__default.createElement(InfoCircleOutlined$1, { className: 'link', onClick: function (e) {
48609
+ e.stopPropagation();
48610
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "/runs/").concat(run.id, "?tab=details");
48611
+ }, onMouseOver: function (e) {
48612
+ toggleHover('detailsOver', true);
48613
+ }, onMouseLeave: function (e) {
48614
+ toggleHover('detailsOver', false);
48615
+ }, style: { marginRight: '0.75rem',
48616
+ color: "".concat((hover.details || hover.detailsOver) ? '#40a9ff' : '#000') } })),
48617
+ React__default.createElement("span", { title: 'Go to workspace page' },
48618
+ React__default.createElement(FolderOutlined$1, { className: 'link', onClick: function (e) {
48619
+ e.stopPropagation();
48620
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "/runs/").concat(run.id, "?tab=workspace&path=runs/").concat(run.id, "/workspace");
48621
+ }, onMouseOver: function (e) {
48622
+ toggleHover('workspaceOver', true);
48623
+ }, onMouseLeave: function (e) {
48624
+ toggleHover('workspaceOver', false);
48625
+ }, style: { marginRight: '0.75rem',
48626
+ color: "".concat((hover.workspace || hover.workspaceOver) ? '#40a9ff' : '#000') } })),
48627
+ React__default.createElement("span", { title: 'Go to debug page' },
48628
+ React__default.createElement(PartitionOutlined$1, { className: 'link', onClick: function (e) {
48629
+ e.stopPropagation();
48630
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "/runs/").concat(run.id, "?tab=debug");
48631
+ }, onMouseOver: function (e) {
48632
+ toggleHover('debugOver', true);
48633
+ }, onMouseLeave: function (e) {
48634
+ toggleHover('debugOver', false);
48635
+ }, style: { color: "".concat((hover.debug || hover.debugOver) ? '#40a9ff' : '#000') } }))),
48633
48636
  (study && total > 1) &&
48634
48637
  React__default.createElement("div", null,
48635
- React__default.createElement(InfoCircleOutlined$1, { className: 'link', onClick: function (e) {
48636
- e.stopPropagation();
48637
- getValue(JobTabs.details);
48638
- toggleHover(JobTabs.workspace, false);
48639
- toggleHover(JobTabs.details, true);
48640
- }, onMouseOver: function (e) {
48641
- toggleHover('detailsOver', true);
48642
- }, onMouseLeave: function (e) {
48643
- toggleHover('detailsOver', false);
48644
- }, style: { marginRight: '0.75rem',
48645
- color: "".concat((hover.details || hover.detailsOver)
48646
- ? '#40a9ff' : '#000') } }),
48647
- React__default.createElement(FolderOutlined$1, { className: 'link', onClick: function (e) {
48648
- e.stopPropagation();
48649
- getValue(JobTabs.workspace);
48650
- toggleHover(JobTabs.workspace, true);
48651
- toggleHover(JobTabs.details, false);
48652
- }, onMouseOver: function (e) {
48653
- toggleHover('workspaceOver', true);
48654
- }, onMouseLeave: function (e) {
48655
- toggleHover('workspaceOver', false);
48656
- }, style: { marginRight: '0.75rem',
48657
- color: "".concat((hover.workspace || hover.workspaceOver)
48658
- ? '#40a9ff' : '#000') } }))),
48638
+ React__default.createElement("span", { title: 'Go to study page' },
48639
+ React__default.createElement(InfoCircleOutlined$1, { className: 'link', onClick: function (e) {
48640
+ e.stopPropagation();
48641
+ if (enableLink) {
48642
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "?tab=details");
48643
+ }
48644
+ else {
48645
+ getValue(JobTabs.details);
48646
+ toggleHover(JobTabs.workspace, false);
48647
+ toggleHover(JobTabs.details, true);
48648
+ }
48649
+ }, onMouseOver: function (e) {
48650
+ toggleHover('detailsOver', true);
48651
+ }, onMouseLeave: function (e) {
48652
+ toggleHover('detailsOver', false);
48653
+ }, style: { marginRight: '0.75rem',
48654
+ color: "".concat((hover.details || hover.detailsOver)
48655
+ ? '#40a9ff' : '#000') } })),
48656
+ React__default.createElement("span", { title: 'Go to workspace page' },
48657
+ React__default.createElement(FolderOutlined$1, { className: 'link', onClick: function (e) {
48658
+ e.stopPropagation();
48659
+ if (enableLink) {
48660
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(study.id, "?tab=workspace");
48661
+ }
48662
+ else {
48663
+ getValue(JobTabs.workspace);
48664
+ toggleHover(JobTabs.workspace, true);
48665
+ toggleHover(JobTabs.details, false);
48666
+ }
48667
+ }, onMouseOver: function (e) {
48668
+ toggleHover('workspaceOver', true);
48669
+ }, onMouseLeave: function (e) {
48670
+ toggleHover('workspaceOver', false);
48671
+ }, style: { color: "".concat((hover.workspace || hover.workspaceOver)
48672
+ ? '#40a9ff' : '#000') } })))),
48659
48673
  React__default.createElement("div", { className: 'item3' },
48660
48674
  React__default.createElement("div", null,
48661
48675
  study ? (_e = study.spec.name) !== null && _e !== void 0 ? _e : "Study: ".concat(study.id) : '--',
48662
48676
  study && total > 1 && "(#".concat(total, ")"),
48663
- React__default.createElement("button", { style: { all: 'unset', margin: '0 0 0 8px' }, onMouseOver: function (e) { return toggleHover('info', true); }, onMouseLeave: function (e) { return toggleHover('info', false); }, onClick: function (e) {
48677
+ React__default.createElement("button", { style: { all: 'unset', margin: '0 0 0 8px', cursor: 'pointer' }, onMouseOver: function (e) { return toggleHover('info', true); }, onMouseLeave: function (e) { return toggleHover('info', false); }, onClick: function (e) {
48664
48678
  e.stopPropagation();
48665
48679
  setOpen(function (prev) { return !prev; });
48666
48680
  } },
48667
48681
  React__default.createElement(InfoCircle$1, { size: 14, style: hover.info ? { color: '#40a9ff' } : {} })))),
48668
- React__default.createElement("div", { className: 'item4' }, study ? dayjs_min(study.status.started_at).format('[on] MMM DD YYYY') : '--'),
48682
+ React__default.createElement("div", { className: 'item4', title: study && dayjs_min(study.status.started_at).format('[on] MMM DD YYYY [at] hh:mm') }, study ? dayjs_min(study.status.started_at).format('[on] MMM DD YYYY') : '--'),
48669
48683
  React__default.createElement("div", { className: 'item5' },
48670
48684
  React__default.createElement("span", { style: { marginRight: '0.75rem' } },
48671
48685
  React__default.createElement(Avatar, { src: study ? study.author.picture_url : '', size: 24, color: hover.author ? '#40a9ff' : undefined })),
48672
- React__default.createElement("a", { className: 'link', href: study ? "/".concat(study.author.name) : '', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('author', true); }, onMouseLeave: function (e) { return toggleHover('author', false); }, style: hover.author ? { color: '#40a9ff' } : {} }, study ? ((_f = study.author.display_name) !== null && _f !== void 0 ? _f : study.author.name) : '--')),
48686
+ React__default.createElement("a", { className: 'link', href: study ? "/".concat(study.author.name) : '', title: 'Go to author page', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('author', true); }, onMouseLeave: function (e) { return toggleHover('author', false); }, style: hover.author ? { color: '#40a9ff' } : {} }, study ? ((_f = study.author.display_name) !== null && _f !== void 0 ? _f : study.author.name) : '--')),
48673
48687
  React__default.createElement("div", { className: 'item6' },
48674
48688
  React__default.createElement("span", { style: { marginRight: '0.75rem' } },
48675
48689
  React__default.createElement(Avatar, { src: study ? study.recipe.metadata.icon : '', size: 24, color: hover.recipe ? '#40a9ff' : undefined })),
48676
- React__default.createElement("a", { className: 'link', href: study ? recipeLinkFromSource(study.recipe.source) : '', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('recipe', true); }, onMouseLeave: function (e) { return toggleHover('recipe', false); }, style: hover.recipe ? { color: '#40a9ff' } : {} }, study ? study.recipe.metadata.name : '--'),
48690
+ React__default.createElement("a", { className: 'link', href: study ? recipeLinkFromSource(study.recipe.source) : '', title: 'Go to recipe page', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('recipe', true); }, onMouseLeave: function (e) { return toggleHover('recipe', false); }, style: hover.recipe ? { color: '#40a9ff' } : {} }, study ? study.recipe.metadata.name : '--'),
48677
48691
  study && React__default.createElement("span", { className: 'light-text' },
48678
48692
  " ",
48679
48693
  study.recipe.metadata.tag)),
@@ -48684,10 +48698,10 @@ var StudyCard = function (_a) {
48684
48698
  "".concat(run.meta.progress.completed, " / ").concat(run.meta.progress.total, " steps"),
48685
48699
  (study && total > 1) && width > 600 &&
48686
48700
  "".concat(study.status.runs_completed, " / ").concat(total, " runs"))),
48687
- React__default.createElement("div", { className: 'item9' },
48701
+ React__default.createElement("div", { className: 'item9', title: 'CPU usage' },
48688
48702
  React__default.createElement(Cpu$1, { size: 18, style: { marginRight: '0.15rem' } }),
48689
48703
  React__default.createElement("span", { className: 'light-text' }, study ? "".concat(formatDuration$1(dayjs_min.duration(study.resources_duration.cpu, 'seconds'))) : '--')),
48690
- React__default.createElement("div", { className: 'item10' },
48704
+ React__default.createElement("div", { className: 'item10', title: 'Duration of the simulation' },
48691
48705
  React__default.createElement(Clock$1, { size: 18, style: { marginRight: '0.15rem' } }),
48692
48706
  React__default.createElement("span", { className: 'light-text' }, study ? "".concat(formatDuration$1(duration)) : '--')),
48693
48707
  open && React__default.createElement(React__default.Fragment, null,
@@ -48789,69 +48803,72 @@ var RunCard = function (_a) {
48789
48803
  }
48790
48804
  } },
48791
48805
  React__default.createElement("div", { className: 'item1' },
48792
- React__default.createElement("a", { className: 'link', style: { marginRight: '0.75rem' }, onMouseOver: function (e) { return toggleHover('account', true); }, onMouseLeave: function (e) { return toggleHover('account', false); }, href: study && "/".concat(study.owner.name) },
48806
+ React__default.createElement("a", { className: 'link', style: { marginRight: '0.75rem' }, title: 'Go to account page', onMouseOver: function (e) { return toggleHover('account', true); }, onMouseLeave: function (e) { return toggleHover('account', false); }, href: study && "/".concat(study.owner.name) },
48793
48807
  React__default.createElement(Avatar, { src: study ? study.owner.picture_url : '', size: 32, color: hover.account ? '#40a9ff' : undefined })),
48794
48808
  React__default.createElement("span", { style: { marginRight: '0.75rem' } }, "/"),
48795
- React__default.createElement("a", { className: 'link', href: projectName && "/".concat(projectOwner, "/projects/").concat(projectName), onMouseOver: function (e) { return toggleHover('project', true); }, onMouseLeave: function (e) { return toggleHover('project', false); }, style: hover.project ? { color: '#40a9ff' } : {} }, projectName !== null && projectName !== void 0 ? projectName : '--')),
48809
+ React__default.createElement("a", { className: 'link', href: projectName && "/".concat(projectOwner, "/projects/").concat(projectName), title: 'Go to project page', onMouseOver: function (e) { return toggleHover('project', true); }, onMouseLeave: function (e) { return toggleHover('project', false); }, style: hover.project ? { color: '#40a9ff' } : {} }, projectName !== null && projectName !== void 0 ? projectName : '--')),
48796
48810
  React__default.createElement("div", { className: 'item2' },
48797
48811
  !study && run && React__default.createElement(LoadingOutlined$1, null),
48798
48812
  run && study &&
48799
48813
  React__default.createElement("div", null,
48800
- React__default.createElement(InfoCircleOutlined$1, { className: 'link', onClick: function (e) {
48801
- e.stopPropagation();
48802
- getValue(RunTabs.details);
48803
- toggleHover(RunTabs.workspace, false);
48804
- toggleHover(RunTabs.details, true);
48805
- toggleHover(RunTabs.debug, false);
48806
- }, onMouseOver: function (e) {
48807
- toggleHover('detailsOver', true);
48808
- }, onMouseLeave: function (e) {
48809
- toggleHover('detailsOver', false);
48810
- }, style: { marginRight: '0.75rem',
48811
- color: "".concat((hover.details || hover.detailsOver)
48812
- ? '#40a9ff' : '#000') } }),
48813
- React__default.createElement(FolderOutlined$1, { className: 'link', onClick: function (e) {
48814
- e.stopPropagation();
48815
- getValue(RunTabs.workspace);
48816
- toggleHover(RunTabs.workspace, true);
48817
- toggleHover(RunTabs.details, false);
48818
- toggleHover(RunTabs.debug, false);
48819
- }, onMouseOver: function (e) {
48820
- toggleHover('workspaceOver', true);
48821
- }, onMouseLeave: function (e) {
48822
- toggleHover('workspaceOver', false);
48823
- }, style: { marginRight: '0.75rem',
48824
- color: "".concat((hover.workspace || hover.workspaceOver)
48825
- ? '#40a9ff' : '#000') } }),
48826
- React__default.createElement(PartitionOutlined$1, { className: 'link', onClick: function (e) {
48827
- e.stopPropagation();
48828
- getValue(RunTabs.debug);
48829
- toggleHover(RunTabs.workspace, false);
48830
- toggleHover(RunTabs.details, false);
48831
- toggleHover(RunTabs.debug, true);
48832
- }, onMouseOver: function (e) {
48833
- toggleHover('debugOver', true);
48834
- }, onMouseLeave: function (e) {
48835
- toggleHover('debugOver', false);
48836
- }, style: { color: "".concat((hover.debug || hover.debugOver)
48837
- ? '#40a9ff' : '#000') } }))),
48814
+ React__default.createElement("span", { title: 'Go to run page' },
48815
+ React__default.createElement(InfoCircleOutlined$1, { onClick: function (e) {
48816
+ e.stopPropagation();
48817
+ getValue(RunTabs.details);
48818
+ toggleHover(RunTabs.workspace, false);
48819
+ toggleHover(RunTabs.details, true);
48820
+ toggleHover(RunTabs.debug, false);
48821
+ }, onMouseOver: function (e) {
48822
+ toggleHover('detailsOver', true);
48823
+ }, onMouseLeave: function (e) {
48824
+ toggleHover('detailsOver', false);
48825
+ }, style: { marginRight: '0.75rem',
48826
+ color: "".concat((hover.details || hover.detailsOver)
48827
+ ? '#40a9ff' : '#000') } })),
48828
+ React__default.createElement("span", { title: 'Go to workspace page' },
48829
+ React__default.createElement(FolderOutlined$1, { className: 'link', onClick: function (e) {
48830
+ e.stopPropagation();
48831
+ getValue(RunTabs.workspace);
48832
+ toggleHover(RunTabs.workspace, true);
48833
+ toggleHover(RunTabs.details, false);
48834
+ toggleHover(RunTabs.debug, false);
48835
+ }, onMouseOver: function (e) {
48836
+ toggleHover('workspaceOver', true);
48837
+ }, onMouseLeave: function (e) {
48838
+ toggleHover('workspaceOver', false);
48839
+ }, style: { marginRight: '0.75rem',
48840
+ color: "".concat((hover.workspace || hover.workspaceOver)
48841
+ ? '#40a9ff' : '#000') } })),
48842
+ React__default.createElement("span", { title: 'Go to debug page' },
48843
+ React__default.createElement(PartitionOutlined$1, { className: 'link', onClick: function (e) {
48844
+ e.stopPropagation();
48845
+ getValue(RunTabs.debug);
48846
+ toggleHover(RunTabs.workspace, false);
48847
+ toggleHover(RunTabs.details, false);
48848
+ toggleHover(RunTabs.debug, true);
48849
+ }, onMouseOver: function (e) {
48850
+ toggleHover('debugOver', true);
48851
+ }, onMouseLeave: function (e) {
48852
+ toggleHover('debugOver', false);
48853
+ }, style: { color: "".concat((hover.debug || hover.debugOver)
48854
+ ? '#40a9ff' : '#000') } })))),
48838
48855
  React__default.createElement("div", { className: 'item3' },
48839
48856
  React__default.createElement("div", null,
48840
48857
  study ? (_e = study.spec.name) !== null && _e !== void 0 ? _e : "Study: ".concat(study.id) : '--',
48841
- React__default.createElement("button", { style: { all: 'unset', margin: '0 0 0 8px' }, onMouseOver: function (e) { return toggleHover('info', true); }, onMouseLeave: function (e) { return toggleHover('info', false); }, onClick: function (e) {
48858
+ React__default.createElement("button", { style: { all: 'unset', margin: '0 0 0 8px', cursor: 'pointer' }, onMouseOver: function (e) { return toggleHover('info', true); }, onMouseLeave: function (e) { return toggleHover('info', false); }, onClick: function (e) {
48842
48859
  e.stopPropagation();
48843
48860
  setOpen(function (prev) { return !prev; });
48844
48861
  } },
48845
48862
  React__default.createElement(InfoCircle$1, { size: 14, style: hover.info ? { color: '#40a9ff' } : {} })))),
48846
- React__default.createElement("div", { className: 'item4' }, study ? dayjs_min(study.status.started_at).format('[on] MMM DD YYYY') : '--'),
48863
+ React__default.createElement("div", { className: 'item4', title: study && dayjs_min(study.status.started_at).format('[on] MMM DD YYYY [at] hh:mm') }, study ? dayjs_min(study.status.started_at).format('[on] MMM DD YYYY') : '--'),
48847
48864
  React__default.createElement("div", { className: 'item5' },
48848
48865
  React__default.createElement("span", { style: { marginRight: '0.75rem' } },
48849
48866
  React__default.createElement(Avatar, { color: hover.author ? '#40a9ff' : undefined, src: study ? study.author.picture_url : '', size: 24 })),
48850
- React__default.createElement("a", { className: 'link', href: study ? "/".concat(study.author.name) : '', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('author', true); }, onMouseLeave: function (e) { return toggleHover('author', false); }, style: hover.author ? { color: '#40a9ff' } : {} }, study ? ((_f = study.author.display_name) !== null && _f !== void 0 ? _f : study.author.name) : '--')),
48867
+ React__default.createElement("a", { className: 'link', href: study ? "/".concat(study.author.name) : '', title: 'Go to author page', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('author', true); }, onMouseLeave: function (e) { return toggleHover('author', false); }, style: hover.author ? { color: '#40a9ff' } : {} }, study ? ((_f = study.author.display_name) !== null && _f !== void 0 ? _f : study.author.name) : '--')),
48851
48868
  React__default.createElement("div", { className: 'item6' },
48852
48869
  React__default.createElement("span", { style: { marginRight: '0.75rem' } },
48853
48870
  React__default.createElement(Avatar, { color: hover.recipe ? '#40a9ff' : undefined, src: study ? study.recipe.metadata.icon : '', size: 24 })),
48854
- React__default.createElement("a", { className: 'link', href: study ? recipeLinkFromSource(study.recipe.source) : '', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('recipe', true); }, onMouseLeave: function (e) { return toggleHover('recipe', false); }, style: hover.recipe ? { color: '#40a9ff' } : {} }, study ? study.recipe.metadata.name : '--'),
48871
+ React__default.createElement("a", { className: 'link', href: study ? recipeLinkFromSource(study.recipe.source) : '', title: 'Go to recipe page', target: '_blank', rel: 'noreferrer', onMouseOver: function (e) { return toggleHover('recipe', true); }, onMouseLeave: function (e) { return toggleHover('recipe', false); }, style: hover.recipe ? { color: '#40a9ff' } : {} }, study ? study.recipe.metadata.name : '--'),
48855
48872
  study && React__default.createElement("span", { className: 'light-text' },
48856
48873
  " ",
48857
48874
  study.recipe.metadata.tag)),
@@ -48859,10 +48876,10 @@ var RunCard = function (_a) {
48859
48876
  React__default.createElement("span", { className: 'status-label', style: { marginRight: '0.75rem' } }, study ? status : '--'),
48860
48877
  React__default.createElement("span", { className: 'light-text' }, study && run && width > 600 &&
48861
48878
  "".concat(run.meta.progress.completed, " / ").concat(run.meta.progress.total, " steps"))),
48862
- React__default.createElement("div", { className: 'item9' },
48879
+ React__default.createElement("div", { className: 'item9', title: 'CPU usage' },
48863
48880
  React__default.createElement(Cpu$1, { size: 18, style: { marginRight: '0.15rem' } }),
48864
48881
  React__default.createElement("span", { className: 'light-text' }, study ? "".concat(formatDuration(dayjs_min.duration(run.meta.resources_duration.cpu, 'seconds'))) : '--')),
48865
- React__default.createElement("div", { className: 'item10' },
48882
+ React__default.createElement("div", { className: 'item10', title: 'Duration of the simulation' },
48866
48883
  React__default.createElement(Clock$1, { size: 18, style: { marginRight: '0.15rem' } }),
48867
48884
  React__default.createElement("span", { className: 'light-text' }, study ? "".concat(formatDuration(duration)) : '--')),
48868
48885
  open && React__default.createElement(React__default.Fragment, null,
@@ -49168,7 +49185,7 @@ var RunDetails = function (_a) {
49168
49185
  React__default.createElement(RunContent, { title: 'Extra Inputs', inputData: extraInputs, projectName: projectName, projectOwner: projectOwner, studyId: run.status.job_id, runId: run.id || runId, client: client, style: style, getFileCard: getFileCard, getFolderCard: getFolderCard })));
49169
49186
  };
49170
49187
 
49171
- var css_248z = ":root {\n --background: #FFFAEE;\n --primary: #1890ff;\n --primary2: #40a9ff;\n --primary1: #cceefe;\n --primary0: #e6f7ff;\n --secondary: #fff566;\n --primary3: #000;\n --success: #46A758;\n --warning: #F76809;\n --danger: #FF4616;\n /* radix-ui/colors */\n --slate1: hsl(206, 30.0%, 98.8%);\n --slate2: hsl(210, 16.7%, 97.6%);\n --slate3: hsl(209, 13.3%, 95.3%);\n --slate4: hsl(209, 12.2%, 93.2%);\n --slate5: hsl(208, 11.7%, 91.1%);\n --slate6: hsl(208, 11.3%, 88.9%);\n --slate7: hsl(207, 11.1%, 85.9%);\n --slate8: hsl(205, 10.7%, 78.0%);\n --slate9: hsl(206, 6.0%, 56.1%);\n --slate10: hsl(206, 5.8%, 52.3%);\n --slate11: hsl(206, 6.0%, 43.5%);\n --slate12: hsl(206, 24.0%, 9.0%);\n}\n\n@keyframes spin {\n from {\n transform: rotate(0);\n }\n to {\n transform: rotate(360deg);\n }\n}\n.spin {\n animation: spin 1s linear 0s infinite;\n}\n\n@keyframes Animation {\n 0% {\n background-position: 200%;\n }\n 50% {\n background-position: 100%;\n }\n 100% {\n background-position: 0%;\n }\n}\n.loading {\n background: linear-gradient(45deg, transparent, var(--primary), 12%, transparent);\n background-size: 200%;\n animation: Animation 3s ease infinite;\n}\n\n@keyframes open {\n from {\n height: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n}\n@keyframes close {\n from {\n height: var(--radix-collapsible-content-height);\n }\n to {\n height: 0;\n }\n}\n.collapse-content {\n overflow: hidden;\n font-size: inherit;\n color: inherit;\n}\n\n.collapse-content[data-state=open] {\n animation: open 300ms ease-out;\n}\n\n.collapse-content[data-state=closed] {\n animation: close 300ms ease-out;\n}\n\n.run-count {\n grid-area: runcount;\n font-size: 1rem;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-status {\n grid-area: runstatus;\n text-align: right !important;\n font-size: 1rem;\n white-space: nowrap;\n}\n\n.run-details {\n grid-area: rundetails;\n font-size: 0.9rem;\n}\n\n.study-run-container {\n display: grid;\n grid-template-areas: \"runcount runcount runcount runstatus runstatus runstatus\" \"rundetails rundetails rundetails rundetails rundetails rundetails\";\n gap: 0.35rem;\n border: 0.1rem solid;\n align-items: center;\n padding: 0.75rem;\n transition: box-shadow 0.3s ease 0s, border-color 0.3s ease 0s;\n grid-template-rows: auto auto auto;\n border-radius: 6px;\n line-height: 1.5;\n}\n\n.study-run-container:hover {\n cursor: pointer;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 2px -2px, rgba(0, 0, 0, 0.12) 0px 3px 6px 0px, rgba(0, 0, 0, 0.09) 0px 5px 12px 4px;\n}\n\n.run-navigator {\n display: grid;\n grid-template-columns: min-content auto min-content;\n grid-auto-rows: auto;\n align-items: center;\n grid-gap: 1rem;\n}";
49188
+ var css_248z = ":root {\n --background: #FFFAEE;\n --primary: #1890ff;\n --primary2: #40a9ff;\n --primary1: #cceefe;\n --primary0: #e6f7ff;\n --secondary: #fff566;\n --primary3: #000;\n --success: #46A758;\n --warning: #F76809;\n --danger: #FF4616;\n /* radix-ui/colors */\n --slate1: hsl(206, 30.0%, 98.8%);\n --slate2: hsl(210, 16.7%, 97.6%);\n --slate3: hsl(209, 13.3%, 95.3%);\n --slate4: hsl(209, 12.2%, 93.2%);\n --slate5: hsl(208, 11.7%, 91.1%);\n --slate6: hsl(208, 11.3%, 88.9%);\n --slate7: hsl(207, 11.1%, 85.9%);\n --slate8: hsl(205, 10.7%, 78.0%);\n --slate9: hsl(206, 6.0%, 56.1%);\n --slate10: hsl(206, 5.8%, 52.3%);\n --slate11: hsl(206, 6.0%, 43.5%);\n --slate12: hsl(206, 24.0%, 9.0%);\n}\n\n@keyframes spin {\n from {\n transform: rotate(0);\n }\n to {\n transform: rotate(360deg);\n }\n}\n.spin {\n animation: spin 1s linear 0s infinite;\n}\n\n@keyframes Animation {\n 0% {\n background-position: 200%;\n }\n 50% {\n background-position: 100%;\n }\n 100% {\n background-position: 0%;\n }\n}\n.loading {\n background: linear-gradient(45deg, transparent, var(--primary), 12%, transparent);\n background-size: 200%;\n animation: Animation 3s ease infinite;\n}\n\n@keyframes open {\n from {\n height: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n}\n@keyframes close {\n from {\n height: var(--radix-collapsible-content-height);\n }\n to {\n height: 0;\n }\n}\n.collapse-content {\n overflow: hidden;\n font-size: inherit;\n color: inherit;\n}\n\n.collapse-content[data-state=open] {\n animation: open 300ms ease-out;\n}\n\n.collapse-content[data-state=closed] {\n animation: close 300ms ease-out;\n}\n\n.run-count {\n grid-area: runcount;\n font-size: 1rem;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.run-link {\n grid-area: runlink;\n text-align: right !important;\n font-size: 1rem;\n white-space: nowrap;\n}\n\n.run-details {\n grid-area: rundetails;\n font-size: 0.9rem;\n}\n\n.study-run-container {\n display: grid;\n grid-template-areas: \"runcount runcount runcount runlink runlink runlink\" \"rundetails rundetails rundetails rundetails rundetails rundetails\";\n gap: 0.35rem;\n border: 0.1rem solid;\n align-items: center;\n padding: 0.75rem;\n transition: box-shadow 0.3s ease 0s, border-color 0.3s ease 0s;\n grid-template-rows: 12px auto;\n border-radius: 6px;\n line-height: 1.5;\n}\n\n.study-run-container:hover {\n cursor: pointer;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 2px -2px, rgba(0, 0, 0, 0.12) 0px 3px 6px 0px, rgba(0, 0, 0, 0.09) 0px 5px 12px 4px;\n}\n\n.run-navigator {\n display: grid;\n grid-template-columns: min-content auto min-content min-content;\n grid-auto-rows: auto;\n align-items: center;\n grid-gap: 0.9rem;\n}\n\n.run-pg-input {\n margin: 0 4px 0 4px;\n padding: 8px 8px;\n text-align: center;\n color: rgba(0, 0, 0, 0.8509803922);\n width: min-content;\n border-radius: 2px;\n font-size: 12px;\n border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.container-scroll {\n display: inline-flex;\n flex-direction: row;\n overflow-x: auto;\n width: 100%;\n}\n\n::-webkit-scrollbar {\n height: 10px !important;\n}\n\n::-webkit-scrollbar-track {\n background: #f1f1f1;\n}\n\n::-webkit-scrollbar-thumb {\n background: #888;\n}\n\n::-webkit-scrollbar-thumb:hover {\n background: var(--primary);\n}";
49172
49189
  styleInject(css_248z);
49173
49190
 
49174
49191
  var RunRow = function (_a) {
@@ -49176,13 +49193,57 @@ var RunRow = function (_a) {
49176
49193
  var projectOwner = _a.projectOwner, projectName = _a.projectName, run = _a.run, index = _a.index, client = _a.client, authUser = _a.authUser, style = _a.style, getFileCard = _a.getFileCard, getFolderCard = _a.getFolderCard;
49177
49194
  var statusMap = useRuns(client).statusMap;
49178
49195
  var _d = useState(false), open = _d[0], setOpen = _d[1];
49196
+ /*
49197
+ * Manage hover
49198
+ */
49199
+ var initialValues = {
49200
+ detailsOver: false,
49201
+ workspaceOver: false,
49202
+ debugOver: false,
49203
+ };
49204
+ var _e = useState(initialValues), hover = _e[0], setHover = _e[1];
49205
+ var toggleHover = useCallback(function (id, value) {
49206
+ if (value === void 0) { value = false; }
49207
+ setHover(function (prevHover) {
49208
+ var _a;
49209
+ return (__assign(__assign({}, prevHover), (_a = {}, _a[id] = value, _a)));
49210
+ });
49211
+ }, [hover]);
49179
49212
  return React__default.createElement("div", { style: __assign(__assign({}, style), { margin: '10px 0 0 0', borderColor: (_c = (_b = statusMap[run.status.status]) === null || _b === void 0 ? void 0 : _b.color) !== null && _c !== void 0 ? _c : '#d0d7de' }), key: run.id, tabIndex: 0, role: 'button', onClick: function () { return setOpen(function (p) { return !p; }); }, className: 'study-run-container' },
49180
49213
  React__default.createElement("div", { className: 'run-count' },
49181
49214
  "# ",
49182
49215
  index),
49183
- React__default.createElement("div", { className: 'run-status' },
49184
- run.status.status,
49185
- " ", "".concat(run.meta.progress.completed, "/").concat(run.meta.progress.total, " steps")),
49216
+ run &&
49217
+ React__default.createElement("div", { className: 'run-link' },
49218
+ React__default.createElement("span", { title: 'Go to run page' },
49219
+ React__default.createElement(InfoCircleOutlined$1, { onClick: function (e) {
49220
+ e.stopPropagation();
49221
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(run.status.job_id, "/runs/").concat(run.id, "?tab=details");
49222
+ }, onMouseOver: function (e) {
49223
+ toggleHover('detailsOver', true);
49224
+ }, onMouseLeave: function (e) {
49225
+ toggleHover('detailsOver', false);
49226
+ }, style: { marginRight: '0.75rem',
49227
+ color: "".concat(hover.detailsOver ? '#40a9ff' : '#000') } })),
49228
+ React__default.createElement("span", { title: 'Go to workspace page' },
49229
+ React__default.createElement(FolderOutlined$1, { onClick: function (e) {
49230
+ e.stopPropagation();
49231
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(run.status.job_id, "/runs/").concat(run.id, "?tab=workspace&path=runs/").concat(run.id, "/workspace");
49232
+ }, onMouseOver: function (e) {
49233
+ toggleHover('workspaceOver', true);
49234
+ }, onMouseLeave: function (e) {
49235
+ toggleHover('workspaceOver', false);
49236
+ }, style: { marginRight: '0.75rem',
49237
+ color: "".concat(hover.workspaceOver ? '#40a9ff' : '#000') } })),
49238
+ React__default.createElement("span", { title: 'Go to debug page' },
49239
+ React__default.createElement(PartitionOutlined$1, { onClick: function (e) {
49240
+ e.stopPropagation();
49241
+ document.location = "/".concat(projectOwner, "/projects/").concat(projectName, "/studies/").concat(run.status.job_id, "/runs/").concat(run.id, "?tab=debug");
49242
+ }, onMouseOver: function (e) {
49243
+ toggleHover('debugOver', true);
49244
+ }, onMouseLeave: function (e) {
49245
+ toggleHover('debugOver', false);
49246
+ }, style: { color: "".concat(hover.debugOver ? '#40a9ff' : '#000') } }))),
49186
49247
  open && React__default.createElement("div", { className: 'run-details' },
49187
49248
  React__default.createElement(RunDetails, { projectOwner: projectOwner, projectName: projectName, run: run, authUser: authUser, client: client, getFileCard: getFileCard, getFolderCard: getFolderCard, style: style })));
49188
49249
  };
@@ -49197,6 +49258,11 @@ var RunTable = function (_a) {
49197
49258
  revalidateOnFocus: false,
49198
49259
  refreshInterval: study.status.finished_at ? 5000 : undefined,
49199
49260
  errorRetryCount: 3,
49261
+ onSuccess: function (run) {
49262
+ if (page > run.page_count) {
49263
+ setPage(run.page_count);
49264
+ }
49265
+ }
49200
49266
  }), data = _d.data, error = _d.error;
49201
49267
  if (error)
49202
49268
  return React__default.createElement("h1", null, "Error");
@@ -49208,19 +49274,33 @@ var RunTable = function (_a) {
49208
49274
  var btnStyle = {
49209
49275
  all: 'unset',
49210
49276
  cursor: 'pointer',
49211
- margin: '10px 0 0 0'
49277
+ border: '1px solid #d9d9d9',
49278
+ fontSize: '11px',
49279
+ color: '1px solid #d9d9d9',
49280
+ textAlign: 'center',
49281
+ padding: '8px 8px',
49282
+ borderRadius: '2px',
49283
+ margin: '10px 0 0 0',
49284
+ width: '16px',
49285
+ flexShrink: 0,
49212
49286
  };
49287
+ var btnPgStyle = function (k) { return (__assign(__assign({}, btnStyle), { border: data.page !== (k + 1) ? '1px solid #d9d9d9' : '1px solid var(--primary)', color: data.page !== (k + 1) ? '#000000d9' : 'var(--primary)', margin: '0 4px 0 4px' })); };
49213
49288
  return (React__default.createElement(React__default.Fragment, null,
49214
49289
  React__default.createElement("div", null,
49215
- data.resources.map(function (item, index) { return (React__default.createElement(RunRow, { key: "run-".concat(item.id), projectOwner: projectOwner, projectName: projectName, run: item, index: index + (page - 1) * perPage, client: client, authUser: authUser, style: style, getFileCard: getFileCard, getFolderCard: getFolderCard })); }),
49290
+ data.resources.map(function (item, index) { return (React__default.createElement(RunRow, { key: "run-".concat(item.id), projectOwner: projectOwner, projectName: projectName, run: item, index: (index + 1) + (page - 1) * perPage, client: client, authUser: authUser, style: style, getFileCard: getFileCard, getFolderCard: getFolderCard })); }),
49216
49291
  React__default.createElement("div", { className: 'run-navigator' },
49217
49292
  React__default.createElement("div", null,
49218
- React__default.createElement("button", { style: btnStyle, disabled: !data.resources, onClick: function () { return setPage(function (p) {
49293
+ React__default.createElement("button", { style: __assign(__assign({}, btnStyle), { cursor: "".concat(page - 1 < 1 ? 'not-allowed' : 'pointer') }), disabled: !data.resources, onClick: function () { return setPage(function (p) {
49219
49294
  return p - 1 > 1 ? p - 1 : 1;
49220
49295
  }); } },
49221
- React__default.createElement(ChevronLeft$1, { size: 24, color: page - 1 < 1 ? 'gray' : '#000' }))),
49296
+ React__default.createElement(ChevronLeft$1, null))),
49297
+ React__default.createElement("div", { style: { margin: '10px auto 0 auto' }, className: 'container-scroll' }, data.resources && Array.from(Array(data.page_count).keys()).map(function (k) {
49298
+ return (React__default.createElement("button", { key: "page-".concat(k), onClick: function (e) {
49299
+ setPage(k + 1);
49300
+ }, style: btnPgStyle(k) }, k + 1));
49301
+ })),
49222
49302
  React__default.createElement("div", { style: { margin: '10px auto 0 auto' } },
49223
- React__default.createElement("input", { onChange: function (e) {
49303
+ React__default.createElement("input", { title: 'Number of rows for page', onChange: function (e) {
49224
49304
  var val = parseInt(e.target.value);
49225
49305
  if (val > 100)
49226
49306
  val = 100; // Max 100
@@ -49229,16 +49309,10 @@ var RunTable = function (_a) {
49229
49309
  setTimeout(function () {
49230
49310
  setPerPage(val);
49231
49311
  }, 3000); // Refresh after 3s
49232
- }, style: {
49233
- padding: '5px 5px',
49234
- borderRadius: '6px',
49235
- width: '100px',
49236
- fontSize: '1rem',
49237
- border: '1px solid rgba(0, 0, 0, 0.125)',
49238
- }, type: 'number', min: 1, max: data.total_count, defaultValue: perPage })),
49312
+ }, className: 'run-pg-input', type: 'number', min: 1, max: data.total_count, defaultValue: perPage })),
49239
49313
  React__default.createElement("div", null,
49240
- React__default.createElement("button", { style: btnStyle, disabled: !data.next_page, onClick: function () { return setPage(function (p) { return p + 1; }); } },
49241
- React__default.createElement(ChevronRight$1, { size: 24, color: !data.next_page ? 'gray' : '#000' })))))));
49314
+ React__default.createElement("button", { style: __assign(__assign({}, btnStyle), { cursor: "".concat(page >= data.page_count ? 'not-allowed' : 'pointer') }), disabled: !data.next_page, onClick: function () { return setPage(function (p) { return p + 1; }); } },
49315
+ React__default.createElement(ChevronRight$1, null)))))));
49242
49316
  };
49243
49317
 
49244
49318
  export { APIClient, AuthUser, Avatar, Button, ComboBox, ComboFileSelector, ConditionalWrapper, ConfigureLocalRun, CreateStudy, Dropdown, FileInput, FilePreview, FormInput, GetGeometry, GetModel, InputDescription, Label, Logo, NumberInput, RadioList, RecipeInputsForm, RunCard, RunDetails, RunTable, SelectAccount, SelectCloudArtifacts, SelectLocalArtifacts, SelectProject, SelectRecipe, SelectRun, SelectStudy, SendGeometry, SendModel, SendResults, SettingsButton, StudyCard, TextInput, Tooltip, _defaultConfig, checkDotNet, checkPollinationPanel, checkRuby, formatBytes, getHost, recipeLinkFromSource, sendMessageDotNet, sendMessageRuby, useAPIClient, useArtifacts, useCreateStudy, useGetGeometry, useGetHbjson, useHbjsontoVTK, useJobs, useManageSettings, useRunCommand, useRuns, useSendHbjson, useSendMessage, useWindowDimensions };