pollination-react-io 1.28.6 → 1.30.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.
@@ -9,4 +9,6 @@ export declare type FilePreviewProps = {
9
9
  inputProps?: HTMLProps<HTMLInputElement>;
10
10
  onPreviewChange?: (...any: any) => void;
11
11
  client?: APIClient;
12
+ enableFilePicker?: boolean;
13
+ localPath?: string;
12
14
  };
@@ -2,4 +2,5 @@ import { PanelMessageOut } from './types';
2
2
  export declare const usePollinationPanel: () => {
3
3
  getFileBase64: (key?: any, accept?: any) => PanelMessageOut;
4
4
  saveFileBase64: (key: string, file: File | Blob, subFolder: string, fileName: string) => Promise<PanelMessageOut>;
5
+ fromFileToBase64: (filePath: string) => PanelMessageOut;
5
6
  };
@@ -37948,9 +37948,15 @@ var usePollinationPanel = function () {
37948
37948
  return;
37949
37949
  return panel.GetArtifactAsBase64(key, accept);
37950
37950
  }, [panel]);
37951
+ var fromFileToBase64 = useCallback(function (filePath) {
37952
+ if (!panel)
37953
+ return;
37954
+ return panel.FromFileToBase64(filePath);
37955
+ }, [panel]);
37951
37956
  return {
37952
37957
  getFileBase64: getFileBase64,
37953
- saveFileBase64: saveFileBase64
37958
+ saveFileBase64: saveFileBase64,
37959
+ fromFileToBase64: fromFileToBase64
37954
37960
  };
37955
37961
  };
37956
37962
 
@@ -40029,8 +40035,13 @@ var useGetGeometry = function () {
40029
40035
  var host = getHost();
40030
40036
  var _a = useState(undefined), geometry = _a[0], setGeometry = _a[1];
40031
40037
  var geometryRef = useRef(undefined);
40038
+ var runPreview = function (identifier) {
40039
+ if (typeof window.parent.chrome.webview.hostObjects.sync.geometry.Mark === 'function') {
40040
+ window.parent.chrome.webview.hostObjects.sync.geometry.Mark(identifier);
40041
+ }
40042
+ };
40032
40043
  var setReturnVal = useCallback(function (_a, force) {
40033
- var data = _a.data;
40044
+ var data = _a.data; _a.identifier;
40034
40045
  var bytes = new TextEncoder().encode(data);
40035
40046
  if (!force && geometryRef.current) {
40036
40047
  if (!lodash_isequal(bytes, geometryRef.current)) {
@@ -40069,6 +40080,7 @@ var useGetGeometry = function () {
40069
40080
  };
40070
40081
  res = window.parent.chrome.webview.hostObjects.sync.geometry.Get(key, selection);
40071
40082
  if (res) {
40083
+ runPreview(res.identifier);
40072
40084
  setReturnVal(res, force);
40073
40085
  }
40074
40086
  }, [setReturnVal]);
@@ -47164,8 +47176,11 @@ var jszip_min = createCommonjsModule(function (module, exports) {
47164
47176
  var shortDebounce = useDebounce(200);
47165
47177
  var ICON_SIZE = 18;
47166
47178
  var FilePreview = function (_a) {
47167
- var projectOwner = _a.projectOwner, projectName = _a.projectName, jobId = _a.jobId, value = _a.value, client = _a.client, inputProps = _a.inputProps, onPreviewChange = _a.onPreviewChange // Use it for streamlit setComponentValue
47179
+ var projectOwner = _a.projectOwner, projectName = _a.projectName, jobId = _a.jobId, value = _a.value, // cloud controller
47180
+ client = _a.client, inputProps = _a.inputProps, onPreviewChange = _a.onPreviewChange, // Use it for streamlit setComponentValue
47181
+ enableFilePicker = _a.enableFilePicker, localPath = _a.localPath // local controller
47168
47182
  ;
47183
+ var fromFileToBase64 = usePollinationPanel().fromFileToBase64;
47169
47184
  var getExtension = function (fileName) {
47170
47185
  if (!fileName)
47171
47186
  return;
@@ -47174,13 +47189,14 @@ var FilePreview = function (_a) {
47174
47189
  return arr.at(arr.length - 1);
47175
47190
  }
47176
47191
  };
47192
+ var host = getHost();
47177
47193
  var _b = useState(value), selArtifact = _b[0], setSelArtifact = _b[1];
47194
+ var _c = useState(localPath), selFilePath = _c[0], setSelFilePath = _c[1];
47178
47195
  var downloadArtifact = useArtifacts(projectOwner, projectName, client).downloadArtifact;
47179
- var _c = useState(), preview = _c[0], setPreview = _c[1];
47180
- var _d = useState(), currBlob = _d[0], setCurrBlob = _d[1];
47181
- var _e = useState(getExtension(value === null || value === void 0 ? void 0 : value.file_name)), currFileExtension = _e[0], setCurrFileExtension = _e[1];
47196
+ var _d = useState(), preview = _d[0], setPreview = _d[1];
47197
+ var _e = useState(), currBlob = _e[0], setCurrBlob = _e[1];
47198
+ var _f = useState(getExtension((value === null || value === void 0 ? void 0 : value.file_name) || getExtension(localPath))), currFileExtension = _f[0], setCurrFileExtension = _f[1];
47182
47199
  var allowedFileTypes = ['application/zip', 'text/plain'];
47183
- var host = getHost();
47184
47200
  var parser = {
47185
47201
  'text/plain': function (blob) {
47186
47202
  var reader = new FileReader();
@@ -47220,13 +47236,70 @@ var FilePreview = function (_a) {
47220
47236
  }); });
47221
47237
  }
47222
47238
  };
47223
- // Internal onChange
47239
+ // Internal onChange cloud
47224
47240
  var onChange = useCallback(function (selArtifact) {
47225
- // console.log(selArtifact)
47226
47241
  setSelArtifact(selArtifact);
47227
47242
  !selArtifact && setPreview(undefined);
47228
47243
  !selArtifact && setCurrFileExtension(undefined);
47229
47244
  }, []);
47245
+ // Internal onChange local
47246
+ var onChangeLocal = useCallback(function (path) {
47247
+ setSelFilePath(path);
47248
+ !selFilePath && setPreview(undefined);
47249
+ !selFilePath && setCurrFileExtension(undefined);
47250
+ }, []);
47251
+ var base64AndFetch = function (path) {
47252
+ if (!path)
47253
+ return;
47254
+ var data = fromFileToBase64(path);
47255
+ var base64Data = data === null || data === void 0 ? void 0 : data.data;
47256
+ if (!base64Data)
47257
+ return;
47258
+ // bas64 mapping
47259
+ var t;
47260
+ switch (getExtension(path)) {
47261
+ case 'zip':
47262
+ t = 'application/zip';
47263
+ break;
47264
+ case 'vsf':
47265
+ t = 'text/plain';
47266
+ }
47267
+ fetchAndSet("data:".concat(t, ";base64,").concat(base64Data), path);
47268
+ };
47269
+ var fetchAndSet = function (url, path) {
47270
+ if (path === void 0) { path = undefined; }
47271
+ fetch(url)
47272
+ .then(function (response) { return response.blob()
47273
+ .then(function (blob) {
47274
+ var t = blob.type;
47275
+ if (!allowedFileTypes.includes(t)) {
47276
+ console.error("Cloud Artifact ".concat(t, " not supported."));
47277
+ setPreview(undefined);
47278
+ setCurrBlob(undefined);
47279
+ setCurrFileExtension(undefined);
47280
+ return;
47281
+ }
47282
+ switch (t) {
47283
+ case 'application/zip':
47284
+ parser['application/zip'](blob);
47285
+ break;
47286
+ case 'text/plain':
47287
+ parser['text/plain'](blob);
47288
+ break;
47289
+ default:
47290
+ setPreview(undefined);
47291
+ setCurrBlob(undefined);
47292
+ setCurrFileExtension(undefined);
47293
+ break;
47294
+ }
47295
+ setCurrBlob(blob);
47296
+ if (path) {
47297
+ setSelFilePath(path);
47298
+ }
47299
+ var ext = getExtension((selArtifact === null || selArtifact === void 0 ? void 0 : selArtifact.file_name) || path);
47300
+ setCurrFileExtension(ext);
47301
+ }); });
47302
+ };
47230
47303
  var download = function (blob, fileName) {
47231
47304
  var file = new File([blob], fileName);
47232
47305
  var a = document.createElement('a');
@@ -47239,54 +47312,31 @@ var FilePreview = function (_a) {
47239
47312
  a.click();
47240
47313
  };
47241
47314
  useEffect(function () {
47315
+ if (enableFilePicker) {
47316
+ base64AndFetch(selFilePath);
47317
+ return;
47318
+ }
47242
47319
  downloadArtifact(selArtifact === null || selArtifact === void 0 ? void 0 : selArtifact.key, jobId)
47243
- .then(function (url) {
47244
- fetch(url)
47245
- .then(function (response) { return response.blob()
47246
- .then(function (blob) {
47247
- var t = blob.type;
47248
- if (!allowedFileTypes.includes(t)) {
47249
- console.error("Cloud Artifact ".concat(t, " not supported."));
47250
- setPreview(undefined);
47251
- setCurrBlob(undefined);
47252
- setCurrFileExtension(undefined);
47253
- return;
47254
- }
47255
- switch (t) {
47256
- case 'application/zip':
47257
- parser['application/zip'](blob);
47258
- break;
47259
- case 'text/plain':
47260
- parser['text/plain'](blob);
47261
- break;
47262
- default:
47263
- setPreview(undefined);
47264
- setCurrBlob(undefined);
47265
- setCurrFileExtension(undefined);
47266
- break;
47267
- }
47268
- setCurrBlob(blob);
47269
- var ext = getExtension(selArtifact === null || selArtifact === void 0 ? void 0 : selArtifact.file_name);
47270
- setCurrFileExtension(ext);
47271
- }); });
47272
- });
47273
- }, [selArtifact, projectOwner, projectName]);
47320
+ .then(fetchAndSet);
47321
+ }, [selArtifact, selFilePath, projectOwner, projectName]);
47274
47322
  shortDebounce(function () {
47275
47323
  onPreviewChange && onPreviewChange(preview);
47276
47324
  }, [onPreviewChange, preview]);
47277
- // TODO: Add buttons latest part (e.g. download)
47278
47325
  return (React__default.createElement(React__default.Fragment, null,
47279
- !value && React__default.createElement(SelectCloudArtifacts, { projectOwner: projectOwner, projectName: projectName, value: selArtifact, hidden: false, client: client, jobId: jobId, fileNameMatch: typeof inputProps.accept === 'string'
47326
+ !value && !enableFilePicker && React__default.createElement(SelectCloudArtifacts, { projectOwner: projectOwner, projectName: projectName, value: selArtifact, hidden: false, client: client, jobId: jobId, fileNameMatch: typeof inputProps.accept === 'string'
47280
47327
  ? ".*(".concat(inputProps.accept.replace(/\./g, '').split(', ').join('$|'), "$)")
47281
47328
  : undefined, onChange: onChange }),
47282
- selArtifact &&
47329
+ !localPath && enableFilePicker && React__default.createElement(SelectLocalArtifactNative, { onChange: onChangeLocal, value: selFilePath, buttonLabel: "Select ".concat(inputProps.accept.split(',').length > 1 ?
47330
+ 'any of' : 'an', " ").concat(inputProps.accept, " ").concat(inputProps.accept.split(',').length > 1 ? 'file types' : 'file', "."), fileMatchPattern: "File types ".concat(inputProps.accept, "|*").concat(inputProps.accept.split(', ').join(';*')) }),
47331
+ (selArtifact || selFilePath) && //
47283
47332
  React__default.createElement(React__default.Fragment, null,
47333
+ (value || localPath) ? undefined : React__default.createElement("br", null),
47284
47334
  (host !== 'web' && currFileExtension === 'vsf'
47285
47335
  && typeof preview === 'string') &&
47286
- React__default.createElement(SendResults, { results: JSON.parse(preview), defaultKey: selArtifact.file_name, buttonLabel: 'Result Preview' }),
47336
+ React__default.createElement(SendResults, { results: JSON.parse(preview), defaultKey: (selArtifact === null || selArtifact === void 0 ? void 0 : selArtifact.file_name) || (selFilePath === null || selFilePath === void 0 ? void 0 : selFilePath.replace(/^.*[\\\/]/, '')), buttonLabel: 'Result Preview' }),
47287
47337
  (host !== 'web' && currFileExtension === 'zip') &&
47288
47338
  preview && typeof preview === 'string' &&
47289
- React__default.createElement(SendResults, { results: JSON.parse(preview), defaultKey: selArtifact.file_name, buttonLabel: 'Result Preview' }),
47339
+ React__default.createElement(SendResults, { results: JSON.parse(preview), defaultKey: (selArtifact === null || selArtifact === void 0 ? void 0 : selArtifact.file_name) || (selFilePath === null || selFilePath === void 0 ? void 0 : selFilePath.replace(/^.*[\\\/]/, '')), buttonLabel: 'Result Preview' }),
47290
47340
  (host === 'web') &&
47291
47341
  React__default.createElement(Button, { type: 'button', onClick: function () { return download(currBlob, selArtifact.file_name); }, disabled: !currBlob, style: {
47292
47342
  width: 'fit-content',