pollination-react-io 1.24.0 → 1.24.2

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.
@@ -1,9 +1,8 @@
1
- import type { UserPrivate } from '@pollination-solutions/pollination-sdk';
1
+ import type { Project, RecipeInterface, UserPrivate } from '@pollination-solutions/pollination-sdk';
2
2
  import { CSSProperties } from 'react';
3
3
  import { APIClient } from '../hooks';
4
+ import { Account } from '../SelectAccount/SelectAccount.types';
4
5
  export declare type CreateStudyProps = {
5
- authUser?: UserPrivate;
6
- client?: APIClient;
7
6
  style?: CSSProperties;
8
7
  controlledRecipeInputs?: {
9
8
  [index: string]: {
@@ -11,5 +10,10 @@ export declare type CreateStudyProps = {
11
10
  hidden?: boolean;
12
11
  };
13
12
  };
13
+ defaultAccount?: Account;
14
+ defaultProject?: Project;
15
+ defaultRecipe?: RecipeInterface;
14
16
  createStudySuccess?: (accountName: string, projectName: string, studyId: string) => void;
17
+ authUser?: UserPrivate;
18
+ client?: APIClient;
15
19
  };
@@ -1,6 +1,6 @@
1
1
  export interface RadioListProps {
2
2
  items: string[];
3
3
  name: string;
4
- defaultValue: string;
5
- onChange: (any: any) => void;
4
+ onChange: (val: any) => void;
5
+ value?: string;
6
6
  }
@@ -3,7 +3,7 @@ export declare function checkDotNet(): boolean;
3
3
  export declare function checkRuby(): boolean;
4
4
  export declare function checkPollinationPanel(): boolean;
5
5
  export declare function sendMessageDotNet(message: PanelMessageIn): PanelMessageIn;
6
- export declare function sendMessageRuby(message: PanelMessageIn): PanelMessageIn;
6
+ export declare function sendMessageRuby(message?: PanelMessageIn): any;
7
7
  export declare function getHost(key?: string, defaultValue?: 'web' | 'rhino' | 'revit' | 'sketchup'): 'web' | 'rhino' | 'revit' | 'sketchup';
8
8
  export declare const recipeLinkFromSource: (source: string) => string;
9
9
  export declare function formatBytes(bytes: any, decimals?: number): string;
@@ -8702,6 +8702,8 @@ var ComboBox = React__default.forwardRef(function ComboBox(_a, ref) {
8702
8702
  borderBottomLeftRadius: isOpen ? 0 : 4,
8703
8703
  flex: 12,
8704
8704
  lineHeight: '1.5rem',
8705
+ }, onReset: function () {
8706
+ selectItem(undefined);
8705
8707
  } }, inputProps), { onFocus: function () {
8706
8708
  openMenu();
8707
8709
  }, type: hidden ? 'hidden' : undefined })))),
@@ -14380,7 +14382,7 @@ Dropzone.propTypes = {
14380
14382
  * @property {Function} open Open the native file selection dialog
14381
14383
  */
14382
14384
 
14383
- var initialState$1 = {
14385
+ var initialState = {
14384
14386
  isFocused: false,
14385
14387
  isFileDialogActive: false,
14386
14388
  isDragActive: false,
@@ -14515,7 +14517,7 @@ function useDropzone() {
14515
14517
  var rootRef = useRef(null);
14516
14518
  var inputRef = useRef(null);
14517
14519
 
14518
- var _useReducer = useReducer(reducer, initialState$1),
14520
+ var _useReducer = useReducer(reducer, initialState),
14519
14521
  _useReducer2 = _slicedToArray(_useReducer, 2),
14520
14522
  state = _useReducer2[0],
14521
14523
  dispatch = _useReducer2[1];
@@ -14965,7 +14967,7 @@ function reducer(state, action) {
14965
14967
  });
14966
14968
 
14967
14969
  case "openDialog":
14968
- return _objectSpread(_objectSpread({}, initialState$1), {}, {
14970
+ return _objectSpread(_objectSpread({}, initialState), {}, {
14969
14971
  isFileDialogActive: true
14970
14972
  });
14971
14973
 
@@ -14988,7 +14990,7 @@ function reducer(state, action) {
14988
14990
  });
14989
14991
 
14990
14992
  case "reset":
14991
- return _objectSpread({}, initialState$1);
14993
+ return _objectSpread({}, initialState);
14992
14994
 
14993
14995
  default:
14994
14996
  return state;
@@ -15593,14 +15595,24 @@ var css_248z$9 = ":root {\n --background: #FFFAEE;\n --primary: #1890ff;\n --
15593
15595
  styleInject(css_248z$9);
15594
15596
 
15595
15597
  var RadioList = function (_a) {
15596
- var items = _a.items, name = _a.name, defaultValue = _a.defaultValue, onChange = _a.onChange;
15597
- return (React__default.createElement($f99a8c78507165f7$export$be92b6f5f03c0fe9, { defaultValue: defaultValue, style: {
15598
+ var items = _a.items, name = _a.name, onChange = _a.onChange, value = _a.value;
15599
+ var _b = useState(value), val = _b[0], setVal = _b[1];
15600
+ useEffect(function () {
15601
+ setVal(value);
15602
+ }, [value]);
15603
+ useEffect(function () {
15604
+ onChange && onChange(val);
15605
+ }, [onChange, val]);
15606
+ var handleChange = function (value) {
15607
+ setVal(value);
15608
+ };
15609
+ return (React__default.createElement($f99a8c78507165f7$export$be92b6f5f03c0fe9, { value: val, style: {
15598
15610
  display: 'flex',
15599
15611
  gap: 10,
15600
15612
  flexDirection: 'column',
15601
15613
  padding: '16px 8px',
15602
15614
  borderTop: '1px solid var(--primary)',
15603
- }, name: name, onChange: onChange },
15615
+ }, name: name, onValueChange: handleChange },
15604
15616
  React__default.createElement(React__default.Fragment, null, items.map(function (item, i) {
15605
15617
  return (React__default.createElement("div", { key: "".concat(item, "-").concat(i), style: {
15606
15618
  display: 'flex',
@@ -37772,48 +37784,40 @@ function checkRuby() {
37772
37784
  function checkPollinationPanel() {
37773
37785
  try {
37774
37786
  if (typeof window.parent.chrome === 'undefined') {
37775
- console.error('[POLLINATION-DEBUG]: chrome not found.');
37776
- return false;
37787
+ throw new Error('[POLLINATION-DEBUG]: chrome not found.');
37777
37788
  }
37778
37789
  }
37779
37790
  catch (_a) {
37780
- console.error('[POLLINATION-DEBUG]: chrome not found.');
37781
- return false;
37791
+ throw new Error('[POLLINATION-DEBUG]: chrome not found.');
37782
37792
  }
37783
37793
  try {
37784
37794
  if (typeof window.parent.chrome.webview === 'undefined') {
37785
- console.error('[POLLINATION-DEBUG]: webview not found.');
37786
- return false;
37795
+ throw new Error('[POLLINATION-DEBUG]: webview not found.');
37787
37796
  }
37788
37797
  }
37789
37798
  catch (_b) {
37790
- console.error('[POLLINATION-DEBUG]: webview not found.');
37791
- return false;
37799
+ throw new Error('[POLLINATION-DEBUG]: webview not found.');
37792
37800
  }
37793
37801
  try {
37794
37802
  if (typeof window.parent.chrome.webview.hostObjects === 'undefined') {
37795
- console.error('[POLLINATION-DEBUG]: webview.hostObjects not found.');
37796
- return false;
37803
+ throw new Error('[POLLINATION-DEBUG]: webview.hostObjects not found.');
37797
37804
  }
37798
37805
  }
37799
37806
  catch (_c) {
37800
- console.error('[POLLINATION-DEBUG]: webview.hostObjects not found.');
37801
- return false;
37807
+ throw new Error('[POLLINATION-DEBUG]: webview.hostObjects not found.');
37802
37808
  }
37803
37809
  try {
37804
37810
  if (typeof window.parent.chrome.webview.hostObjects.sync === 'undefined') {
37805
- console.error('[POLLINATION-DEBUG]: webview.hostObjects.sync not found.');
37806
- return false;
37811
+ throw new Error('[POLLINATION-DEBUG]: webview.hostObjects.sync not found.');
37807
37812
  }
37808
37813
  }
37809
37814
  catch (_d) {
37810
- console.error('[POLLINATION-DEBUG]: webview.hostObjects.sync not found.');
37811
- return false;
37815
+ throw new Error('[POLLINATION-DEBUG]: webview.hostObjects.sync not found.');
37812
37816
  }
37813
37817
  return true;
37814
37818
  }
37815
37819
  function sendMessageDotNet(message) {
37816
- if (!checkDotNet())
37820
+ if (!checkPollinationPanel())
37817
37821
  ;
37818
37822
  // const json = JSON.stringify(message)
37819
37823
  var json = message;
@@ -37829,10 +37833,9 @@ function sendMessageDotNet(message) {
37829
37833
  return message;
37830
37834
  }
37831
37835
  function sendMessageRuby(message) {
37832
- if (!checkRuby())
37836
+ if (!checkPollinationPanel())
37833
37837
  ;
37834
- console.error('[POLLINATION-DEBUG]: sendMesssageRuby not yet implemented');
37835
- return message;
37838
+ throw new Error('[POLLINATION-DEBUG]: sendMesssageRuby not yet implemented');
37836
37839
  }
37837
37840
  // not sure if this will work from Streamlit?
37838
37841
  function getHost(key, defaultValue) {
@@ -37872,16 +37875,22 @@ function blobToBase64(blob) {
37872
37875
  if (typeof reader.result !== 'string') {
37873
37876
  return;
37874
37877
  }
37875
- resolve(btoa(reader.result));
37878
+ resolve(reader.result.split(',')[1]);
37876
37879
  };
37877
- reader.readAsText(blob);
37880
+ reader.readAsDataURL(blob);
37878
37881
  })];
37879
37882
  });
37880
37883
  });
37881
37884
  }
37882
37885
  var usePollinationPanel = function () {
37883
37886
  var panel = useMemo(function () {
37884
- return checkPollinationPanel() ? window.parent.chrome.webview.hostObjects.sync.study : false;
37887
+ try {
37888
+ checkPollinationPanel();
37889
+ }
37890
+ catch (_a) {
37891
+ return false;
37892
+ }
37893
+ return window.parent.chrome.webview.hostObjects.sync.study;
37885
37894
  }, []);
37886
37895
  var saveFileBase64 = useCallback(function (key, file, subFolder, fileName) { return __awaiter$1(void 0, void 0, void 0, function () {
37887
37896
  var base64;
@@ -38089,14 +38098,16 @@ var useCreateStudy = function (accountName, projectName, client) {
38089
38098
  var input = recipe.inputs.find(function (i) { return i.name === d[0]; });
38090
38099
  return processEntryLocal(d, input, cloudProjectName);
38091
38100
  }))
38092
- .then(function (jobArguments) { return ({
38093
- type: 'Job',
38094
- api_version: 'v1beta1',
38095
- name: name,
38096
- description: description,
38097
- source: recipe.source,
38098
- arguments: [jobArguments]
38099
- }); }).catch(function (err) {
38101
+ .then(function (jobArguments) {
38102
+ return ({
38103
+ type: 'Job',
38104
+ api_version: 'v1beta1',
38105
+ name: name,
38106
+ description: description,
38107
+ source: recipe.source,
38108
+ arguments: [jobArguments]
38109
+ });
38110
+ }).catch(function (err) {
38100
38111
  var data = err.response.data;
38101
38112
  console.error(data.detail);
38102
38113
  })];
@@ -38114,7 +38125,6 @@ var useCreateStudy = function (accountName, projectName, client) {
38114
38125
  console.log(jobInfo);
38115
38126
  response = window.parent.chrome.webview.hostObjects.study.RunSimulation(JSON.stringify(jobInfo))
38116
38127
  .then(function (value) {
38117
- console.log(value);
38118
38128
  onSuccess && onSuccess(cloudProjectOwner, cloudProjectName, value);
38119
38129
  }, function (reason) {
38120
38130
  console.error(reason);
@@ -40651,7 +40661,8 @@ var SelectCloudArtifacts = function (_a) {
40651
40661
  }, [selArtifact]);
40652
40662
  useEffect(function () {
40653
40663
  // nonmemoized value from react-hook-form or other parent causes infinite rerendering
40654
- if (lodash_isequal(valueRef.current, selArtifact)) {
40664
+ if (lodash_isequal(valueRef.current, selArtifact) ||
40665
+ (!valueRef.current && !selArtifact)) {
40655
40666
  return;
40656
40667
  }
40657
40668
  // if selection is a folder instead of an artifact
@@ -40781,7 +40792,7 @@ var SelectLocalArtifactNative = function (_a) {
40781
40792
  }
40782
40793
  catch (error) {
40783
40794
  // common error is incorrect fileMatchPattern
40784
- console.log(error);
40795
+ console.error(error);
40785
40796
  }
40786
40797
  if (res && typeof res.data === 'string') {
40787
40798
  setSelPath(res.data);
@@ -44039,8 +44050,8 @@ var RecipeInputsForm = function (_a) {
44039
44050
  var host = getHost();
44040
44051
  var _f = useForm({
44041
44052
  resolver: Oe(schema),
44042
- mode: 'all'
44043
- }), control = _f.control, register = _f.register, handleSubmit = _f.handleSubmit, reset = _f.reset, resetField = _f.resetField, _g = _f.formState, errors = _g.errors, isValid = _g.isValid; _g.isSubmitting;
44053
+ mode: 'all',
44054
+ }), control = _f.control, register = _f.register, handleSubmit = _f.handleSubmit, reset = _f.reset, resetField = _f.resetField, _g = _f.formState, errors = _g.errors, isValid = _g.isValid, isSubmitSuccessful = _g.isSubmitSuccessful;
44044
44055
  var _onSubmit = function (_data) {
44045
44056
  var data = __assign({}, _data);
44046
44057
  // strip study name
@@ -44054,7 +44065,7 @@ var RecipeInputsForm = function (_a) {
44054
44065
  if (val === inputDefaults.get(key)) {
44055
44066
  delete data[key];
44056
44067
  }
44057
- if (!inputDefaults.get(key) && !data[key]) {
44068
+ if (!inputDefaults.get(key) && !data[key] && data[key] !== 0) {
44058
44069
  delete data[key];
44059
44070
  }
44060
44071
  });
@@ -44062,6 +44073,14 @@ var RecipeInputsForm = function (_a) {
44062
44073
  setLoading(true);
44063
44074
  onSubmit(studyName, data, 'description', localConfig)
44064
44075
  .finally(function () {
44076
+ // @ts-ignore
44077
+ var defaults = recipe.inputs.map(function (input) {
44078
+ var _a;
44079
+ var _b;
44080
+ return (_a = {}, _a[input.name] = (_b = input.default) !== null && _b !== void 0 ? _b : '', _a);
44081
+ });
44082
+ defaults.push({ 'study-name': '' });
44083
+ // console.log(defaults)
44065
44084
  reset();
44066
44085
  setLoading(false);
44067
44086
  });
@@ -44082,7 +44101,7 @@ var RecipeInputsForm = function (_a) {
44082
44101
  gap: 20
44083
44102
  } },
44084
44103
  React__default.createElement(FormInput, { name: 'study-name', description: 'Study name is a required field.', errorMessage: errors['study-name'] ? (_b = errors['study-name']) === null || _b === void 0 ? void 0 : _b.message : undefined },
44085
- React__default.createElement(TextInput, { inputProps: __assign({ form: recipe.metadata.name }, register('study-name')), reset: function () { return resetField('study-name'); } })),
44104
+ React__default.createElement(TextInput, { inputProps: __assign({ form: recipe.metadata.name }, register('study-name')) })),
44086
44105
  host !== 'web' &&
44087
44106
  React__default.createElement(ConfigureLocalRun, { onChange: function (localConfig) { return setLocalConfig(localConfig); }, defaultVal: localConfig }),
44088
44107
  React__default.createElement(Tabs, { forceRenderTabPanel: true },
@@ -44116,11 +44135,7 @@ var RecipeInputsForm = function (_a) {
44116
44135
  var _a;
44117
44136
  switch (input.type) {
44118
44137
  case 'DAGFileInput':
44119
- return React__default.createElement(Controller
44120
- // @ts-ignore
44121
- , {
44122
- // @ts-ignore
44123
- name: input.name, control: control, defaultValue: defaultValue, render: function (_a) {
44138
+ return React__default.createElement(Controller, { name: input.name, control: control, defaultValue: defaultValue, render: function (_a) {
44124
44139
  var _b = _a.field, value = _b.value, onChange = _b.onChange, field = __rest(_b, ["value", "onChange"]);
44125
44140
  return (React__default.createElement(ComboFileSelector, { projectOwner: projectOwner, projectName: projectName, defaultOption: input.extensions &&
44126
44141
  input.extensions.includes('hbjson') &&
@@ -44128,17 +44143,13 @@ var RecipeInputsForm = function (_a) {
44128
44143
  get_model: input.extensions.includes('hbjson') && host !== 'web',
44129
44144
  get_local: host !== 'web',
44130
44145
  get_file: host === 'web'
44131
- }, value: value, onChange: onChange, client: client, inputProps: __assign(__assign({}, field), { accept: input.extensions.map(function (e) { return ".".concat(e); }).join(', ') }), hidden: hidden }));
44146
+ }, value: value, onChange: onChange, inputProps: __assign(__assign({}, field), { accept: input.extensions.map(function (e) { return ".".concat(e); }).join(', ') }), hidden: hidden, client: client }));
44132
44147
  } });
44133
44148
  case 'DAGStringInput':
44134
44149
  return typeof ((_a = input.spec) === null || _a === void 0 ? void 0 : _a.enum) !== 'undefined' ?
44135
- React__default.createElement(Controller
44136
- // @ts-ignore
44137
- , {
44138
- // @ts-ignore
44139
- name: input.name, control: control, render: function (_a) {
44140
- var onChange = _a.field.onChange;
44141
- return (React__default.createElement(RadioList, { items: input.spec.enum, name: input.name, defaultValue: defaultValue, onChange: onChange }));
44150
+ React__default.createElement(Controller, { name: input.name, control: control, defaultValue: defaultValue, render: function (_a) {
44151
+ var _b = _a.field, onChange = _b.onChange, value = _b.value; __rest(_b, ["onChange", "value"]);
44152
+ return (React__default.createElement(RadioList, { items: input.spec.enum, name: input.name, onChange: onChange, value: value }));
44142
44153
  } }) :
44143
44154
  React__default.createElement(TextInput, { inputProps: __assign(__assign({}, inputProps), { defaultValue: defaultValue }), hidden: hidden, reset: handleReset });
44144
44155
  case 'DAGNumberInput':
@@ -44164,7 +44175,7 @@ var RecipeInputsForm = function (_a) {
44164
44175
  // @ts-ignore
44165
44176
  React__default.createElement("li", { key: key, style: { color: 'red', fontSize: '0.8rem', listStyle: 'none' } }, "".concat(key, " ").concat(val.message, ".")));
44166
44177
  }))) :
44167
- 'Recipe input isn\'t valid yet.' },
44178
+ isSubmitSuccessful ? 'Study has been successfully submitted.' : 'Study input isn\'t valid.' },
44168
44179
  React__default.createElement(Button, { type: 'submit', form: recipe.metadata.name, disabled: !isValid || loading, style: {
44169
44180
  width: 'fit-content',
44170
44181
  }, loading: loading }, "Create Study"))))));
@@ -44173,11 +44184,6 @@ var RecipeInputsForm = function (_a) {
44173
44184
  var css_248z$3 = ".react-tabs {\n -webkit-tap-highlight-color: transparent;\n}\n\n.react-tabs__tab-list {\n border-bottom: 1px solid #aaa;\n margin: 0 0 10px;\n padding: 0;\n}\n\n.react-tabs__tab {\n display: inline-block;\n border: 1px solid transparent;\n border-bottom: none;\n bottom: -1px;\n position: relative;\n list-style: none;\n padding: 6px 12px;\n cursor: pointer;\n}\n\n.react-tabs__tab--selected {\n background: #fff;\n border-color: #aaa;\n color: black;\n border-radius: 5px 5px 0 0;\n}\n\n.react-tabs__tab--disabled {\n color: GrayText;\n cursor: default;\n}\n\n.react-tabs__tab:focus {\n outline: none;\n}\n\n.react-tabs__tab:focus:after {\n content: '';\n position: absolute;\n height: 5px;\n left: -4px;\n right: -4px;\n bottom: -5px;\n background: #fff;\n}\n\n.react-tabs__tab-panel {\n display: none;\n}\n\n.react-tabs__tab-panel--selected {\n display: block;\n}\n";
44174
44185
  styleInject(css_248z$3);
44175
44186
 
44176
- var initialState = {
44177
- account: undefined,
44178
- project: undefined,
44179
- recipe: undefined,
44180
- };
44181
44187
  var defaultStyle = {
44182
44188
  display: 'flex',
44183
44189
  flexDirection: 'column',
@@ -44185,27 +44191,20 @@ var defaultStyle = {
44185
44191
  };
44186
44192
  var CreateStudy = function (_a) {
44187
44193
  var _b;
44188
- var authUser = _a.authUser, client = _a.client, style = _a.style, controlledRecipeInputs = _a.controlledRecipeInputs, createStudySuccess = _a.createStudySuccess;
44194
+ var style = _a.style, controlledRecipeInputs = _a.controlledRecipeInputs, defaultAccount = _a.defaultAccount, defaultProject = _a.defaultProject, defaultRecipe = _a.defaultRecipe, createStudySuccess = _a.createStudySuccess, authUser = _a.authUser, client = _a.client;
44189
44195
  var _c = useState(0), activeTabIndex = _c[0], setActiveTabIndex = _c[1];
44190
- var _d = useState(initialState), state = _d[0], setState = _d[1];
44191
- var setSelAccount = useCallback(function (account) {
44192
- setState(function (state) { return (__assign(__assign({}, state), { account: account, project: undefined })); });
44193
- }, []);
44194
- var setSelProject = useCallback(function (project) {
44195
- setState(function (state) { return (__assign(__assign({}, state), { project: project, recipe: undefined })); });
44196
- }, []);
44197
- var setSelRecipe = useCallback(function (recipe) {
44198
- setState(function (state) { return (__assign(__assign({}, state), { recipe: recipe })); });
44199
- }, []);
44196
+ var _d = useState(defaultAccount), selAccount = _d[0], setSelAccount = _d[1];
44197
+ var _e = useState(defaultProject), selProject = _e[0], setSelProject = _e[1];
44198
+ var _f = useState(defaultRecipe), selRecipe = _f[0], setSelRecipe = _f[1];
44200
44199
  // @ts-ignore
44201
- var projectOwner = !state || !state.account ? undefined : ((_b = state.account.username) !== null && _b !== void 0 ? _b : state.account.account_name);
44202
- var projectSlug = !state || !state.project ? undefined : state.project.slug.split('/')[1];
44203
- var _e = useCreateStudy(projectOwner, projectSlug, client), host = _e.host, createStudy = _e.createStudy, createLocalStudy = _e.createLocalStudy;
44200
+ var projectOwner = selAccount ? ((_b = selAccount.username) !== null && _b !== void 0 ? _b : selAccount.account_name) : undefined;
44201
+ var projectSlug = selProject ? selProject.slug.split('/')[1] : undefined;
44202
+ var _g = useCreateStudy(projectOwner, projectSlug, client), host = _g.host, createStudy = _g.createStudy, createLocalStudy = _g.createLocalStudy;
44204
44203
  useEffect(function () {
44205
- if (!state.recipe)
44204
+ if (!selRecipe)
44206
44205
  return;
44207
44206
  setActiveTabIndex(1);
44208
- }, [state.recipe]);
44207
+ }, [selRecipe]);
44209
44208
  var basePath = useMemo(function () {
44210
44209
  return client.config.basePath.replace('api', 'app');
44211
44210
  }, [client]);
@@ -44217,19 +44216,19 @@ var CreateStudy = function (_a) {
44217
44216
  window.open("".concat(basePath, "/").concat(accountName, "/projects/").concat(projectName, "/studies/").concat(studyId));
44218
44217
  }, [basePath]);
44219
44218
  var handleCreateStudy = useCallback(function (name, data, description, localConfig) {
44220
- if (!state || !state.recipe || !state.recipe.source) {
44219
+ if (!selRecipe) {
44221
44220
  return new Promise(function (resolve, reject) { return resolve(); });
44222
44221
  }
44223
44222
  var handleSuccess = createStudySuccess !== null && createStudySuccess !== void 0 ? createStudySuccess : handleCreateStudySuccess;
44224
44223
  // don't attempt navigation if the study is a local study
44225
44224
  var handleWebSuccess = localConfig && localConfig.isLocalJob ? handleSuccess : undefined;
44226
44225
  if (host !== 'web') {
44227
- return createLocalStudy({ name: name, recipe: state.recipe, description: description }, data, localConfig, handleWebSuccess);
44226
+ return createLocalStudy({ name: name, recipe: selRecipe, description: description }, data, localConfig, handleWebSuccess);
44228
44227
  }
44229
44228
  else {
44230
- return createStudy({ name: name, recipe: state.recipe, description: description }, data, handleWebSuccess);
44229
+ return createStudy({ name: name, recipe: selRecipe, description: description }, data, handleWebSuccess);
44231
44230
  }
44232
- }, [state, host, createLocalStudy, createStudy, createStudySuccess, handleCreateStudySuccess]);
44231
+ }, [createLocalStudy, createStudy, createStudySuccess, handleCreateStudySuccess, host, selRecipe]);
44233
44232
  return (React__default.createElement("div", { "data-testid": "CreateProject", style: __assign(__assign({}, defaultStyle), style) },
44234
44233
  React__default.createElement(Tabs, { selectedIndex: activeTabIndex, onSelect: function (index) { return setActiveTabIndex(index); }, forceRenderTabPanel: true },
44235
44234
  React__default.createElement("div", { style: {
@@ -44242,7 +44241,7 @@ var CreateStudy = function (_a) {
44242
44241
  flex: 1
44243
44242
  } },
44244
44243
  React__default.createElement(Tab, null, "Select Recipe"),
44245
- state.recipe &&
44244
+ selRecipe &&
44246
44245
  React__default.createElement(Tab, null, "Recipe Inputs"))),
44247
44246
  React__default.createElement(TabPanel, { style: {
44248
44247
  padding: '8px 8px'
@@ -44252,14 +44251,14 @@ var CreateStudy = function (_a) {
44252
44251
  flexDirection: 'column',
44253
44252
  gap: 8
44254
44253
  } },
44255
- React__default.createElement(Label, { label: state.account ? state.account.name : 'Account' },
44256
- React__default.createElement(SelectAccount, { authUser: authUser, client: client, onChange: setSelAccount })),
44257
- React__default.createElement(Label, { label: state.project ? state.project.name : 'Project' },
44258
- React__default.createElement(SelectProject, { authUser: authUser, client: client, onChange: setSelProject, projectOwner: projectOwner })),
44259
- React__default.createElement(Label, { label: state.recipe && state.recipe.metadata ?
44260
- state.recipe.metadata.name : 'Recipe' },
44261
- React__default.createElement(SelectRecipe, { authUser: authUser, client: client, projectOwner: projectOwner, projectName: state.project ? state === null || state === void 0 ? void 0 : state.project.name : undefined, onChange: setSelRecipe })))),
44262
- state.recipe &&
44254
+ React__default.createElement(Label, { label: selAccount ? selAccount.name : 'Account' },
44255
+ React__default.createElement(SelectAccount, { authUser: authUser, client: client, onChange: setSelAccount, value: selAccount })),
44256
+ React__default.createElement(Label, { label: selProject ? selProject.name : 'Project' },
44257
+ React__default.createElement(SelectProject, { authUser: authUser, client: client, onChange: setSelProject, projectOwner: projectOwner, value: selProject })),
44258
+ React__default.createElement(Label, { label: selRecipe && selRecipe.metadata ?
44259
+ selRecipe.metadata.name : 'Recipe' },
44260
+ React__default.createElement(SelectRecipe, { authUser: authUser, client: client, projectOwner: projectOwner, projectName: selProject ? selProject.name : undefined, onChange: setSelRecipe, value: selRecipe })))),
44261
+ selRecipe &&
44263
44262
  React__default.createElement(React__default.Fragment, null,
44264
44263
  React__default.createElement(TabPanel, { style: {
44265
44264
  padding: 8
@@ -44269,14 +44268,14 @@ var CreateStudy = function (_a) {
44269
44268
  flexDirection: 'column',
44270
44269
  gap: 24
44271
44270
  } },
44272
- state.recipe &&
44271
+ selRecipe &&
44273
44272
  React__default.createElement("h5", { style: {
44274
44273
  marginBottom: 0
44275
- } }, state.recipe.metadata.name
44274
+ } }, selRecipe.metadata.name
44276
44275
  .split('-')
44277
44276
  .map(function (v) { return v.charAt(0).toUpperCase() + v.slice(1); })
44278
44277
  .join(' ')),
44279
- React__default.createElement(RecipeInputsForm, { client: client, projectOwner: projectOwner, projectName: projectSlug, recipe: state.recipe, onSubmit: handleCreateStudy, controlledValues: controlledRecipeInputs })))))));
44278
+ React__default.createElement(RecipeInputsForm, { client: client, projectOwner: projectOwner, projectName: projectSlug, recipe: selRecipe, onSubmit: handleCreateStudy, controlledValues: controlledRecipeInputs })))))));
44280
44279
  };
44281
44280
 
44282
44281
  // Generated with util/create-component.js