@deephaven/file-explorer 0.22.3-beta.15 → 0.22.3-beta.21

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,6 @@
1
1
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
-
3
2
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
-
5
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
4
  import React, { PureComponent } from 'react';
8
5
  import PropTypes from 'prop-types';
9
6
  import classNames from 'classnames';
@@ -18,37 +15,26 @@ import "./NewItemModal.css";
18
15
  import FileExistsError from "./FileExistsError.js";
19
16
  import FileNotFoundError from "./FileNotFoundError.js";
20
17
  var log = Log.module('NewItemModal');
21
-
22
18
  class NewItemModal extends PureComponent {
23
19
  static getValidationMessage(err) {
24
20
  if (err instanceof FileExistsError && err.info.type === 'directory') {
25
21
  return 'Error: Cannot overwrite existing directory';
26
22
  }
27
-
28
23
  return "".concat(err);
29
24
  }
30
-
31
25
  static handleError(err) {
32
26
  if (!PromiseUtils.isCanceled(err)) {
33
27
  log.error(err);
34
28
  }
35
29
  }
36
-
37
30
  constructor(props) {
38
31
  super(props);
39
-
40
32
  _defineProperty(this, "inputRef", /*#__PURE__*/React.createRef());
41
-
42
33
  _defineProperty(this, "cancelableValidatePromise", void 0);
43
-
44
34
  _defineProperty(this, "cancelableExistingItemPromise", void 0);
45
-
46
35
  _defineProperty(this, "pending", new Pending());
47
-
48
36
  _defineProperty(this, "pathMap", new Map());
49
-
50
37
  _defineProperty(this, "isInitialLoad", true);
51
-
52
38
  this.handleModalSubmit = this.handleModalSubmit.bind(this);
53
39
  this.handleModalOpened = this.handleModalOpened.bind(this);
54
40
  this.handleSelect = this.handleSelect.bind(this);
@@ -73,7 +59,6 @@ class NewItemModal extends PureComponent {
73
59
  value: FileUtils.getBaseName(defaultValue)
74
60
  };
75
61
  }
76
-
77
62
  componentDidUpdate(prevProps, prevState) {
78
63
  var {
79
64
  isOpen
@@ -85,33 +70,26 @@ class NewItemModal extends PureComponent {
85
70
  value,
86
71
  path
87
72
  } = this.state;
88
-
89
73
  if (!prevIsOpen && isOpen) {
90
74
  this.resetValue();
91
75
  this.isInitialLoad = true;
92
76
  }
93
-
94
77
  if (prevIsOpen && isOpen) {
95
78
  if (!this.isInitialLoad && (path !== prevState.path || value !== prevState.value)) {
96
79
  this.updateValidationStatus(path, value);
97
80
  }
98
-
99
81
  this.isInitialLoad = false;
100
82
  }
101
83
  }
102
-
103
84
  componentWillUnmount() {
104
85
  this.pending.cancel();
105
-
106
86
  if (this.cancelableValidatePromise) {
107
87
  this.cancelableValidatePromise.cancel();
108
88
  }
109
-
110
89
  if (this.cancelableExistingItemPromise) {
111
90
  this.cancelableExistingItemPromise.cancel();
112
91
  }
113
92
  }
114
-
115
93
  resetValue() {
116
94
  var {
117
95
  defaultValue
@@ -125,31 +103,24 @@ class NewItemModal extends PureComponent {
125
103
  isSubmitting: false
126
104
  });
127
105
  }
128
-
129
106
  getValidationPromise(path, name) {
130
107
  var checkExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
131
-
132
108
  if (this.cancelableValidatePromise) {
133
109
  this.cancelableValidatePromise.cancel();
134
110
  }
135
-
136
111
  this.cancelableValidatePromise = PromiseUtils.makeCancelable(this.validateName(path, name, checkExisting));
137
112
  return this.cancelableValidatePromise;
138
113
  }
139
-
140
114
  validateName(path, name, checkExisting) {
141
115
  var _this = this;
142
-
143
116
  return _asyncToGenerator(function* () {
144
117
  FileUtils.validateName(name);
145
118
  var {
146
119
  defaultValue,
147
120
  storage
148
121
  } = _this.props;
149
-
150
122
  if (checkExisting) {
151
123
  var value = "".concat(path).concat(name);
152
-
153
124
  if (value !== defaultValue) {
154
125
  try {
155
126
  var existingFile = yield storage.info(value);
@@ -157,8 +128,8 @@ class NewItemModal extends PureComponent {
157
128
  } catch (e) {
158
129
  if (!(e instanceof FileNotFoundError)) {
159
130
  throw e;
160
- } // There is no existing file, ignore
161
-
131
+ }
132
+ // There is no existing file, ignore
162
133
  }
163
134
  }
164
135
  }
@@ -166,7 +137,6 @@ class NewItemModal extends PureComponent {
166
137
  return name;
167
138
  })();
168
139
  }
169
-
170
140
  updateValidationStatus(path, newName) {
171
141
  this.getValidationPromise(path, newName).then(() => {
172
142
  this.setState({
@@ -174,15 +144,12 @@ class NewItemModal extends PureComponent {
174
144
  });
175
145
  }).catch(this.handleValidationError).catch(NewItemModal.handleError);
176
146
  }
177
-
178
147
  handleModalOpened() {
179
148
  this.focusRenameInput();
180
149
  }
181
-
182
150
  handleModalSubmit() {
183
151
  this.submitModal();
184
152
  }
185
-
186
153
  handleChange(event) {
187
154
  var {
188
155
  value
@@ -191,10 +158,8 @@ class NewItemModal extends PureComponent {
191
158
  value
192
159
  });
193
160
  }
194
-
195
161
  handleSelect(item) {
196
162
  log.debug('handleSelect', item);
197
-
198
163
  if (item.type === 'directory') {
199
164
  this.setState({
200
165
  path: FileUtils.makePath(item.filename)
@@ -210,15 +175,14 @@ class NewItemModal extends PureComponent {
210
175
  this.focusRenameInput();
211
176
  });
212
177
  }
213
- } // eslint-disable-next-line class-methods-use-this
214
-
178
+ }
215
179
 
180
+ // eslint-disable-next-line class-methods-use-this
216
181
  handleKeyDown(e) {
217
182
  var {
218
183
  key
219
184
  } = e;
220
185
  e.stopPropagation();
221
-
222
186
  switch (key) {
223
187
  case 'Enter':
224
188
  {
@@ -227,7 +191,6 @@ class NewItemModal extends PureComponent {
227
191
  this.submitModal();
228
192
  break;
229
193
  }
230
-
231
194
  case 'Escape':
232
195
  {
233
196
  e.preventDefault();
@@ -237,29 +200,24 @@ class NewItemModal extends PureComponent {
237
200
  onCancel();
238
201
  break;
239
202
  }
240
-
241
203
  default:
242
204
  }
243
205
  }
244
-
245
206
  handleValidationError(err) {
246
207
  if (!(err instanceof ValidationError)) {
247
208
  throw err;
248
209
  }
249
-
250
210
  log.debug('Validation error', err);
251
211
  this.setState({
252
212
  validationError: err
253
213
  });
254
214
  }
255
-
256
215
  handleOverwriteCancel() {
257
216
  this.setState({
258
217
  showOverwriteModal: false,
259
218
  isSubmitting: false
260
219
  });
261
220
  }
262
-
263
221
  handleOverwriteConfirm() {
264
222
  this.setState({
265
223
  showOverwriteModal: false
@@ -274,7 +232,6 @@ class NewItemModal extends PureComponent {
274
232
  log.debug('handleOverwriteConfirm', path, value);
275
233
  onSubmit("".concat(path).concat(value));
276
234
  }
277
-
278
235
  handleExtensionChangeCancel() {
279
236
  log.debug('handleExtensionChangeCancel');
280
237
  this.setState(_ref => {
@@ -290,7 +247,6 @@ class NewItemModal extends PureComponent {
290
247
  });
291
248
  this.submitModal(true);
292
249
  }
293
-
294
250
  handleExtensionChangeConfirm() {
295
251
  log.debug('handleExtensionChangeConfirm');
296
252
  this.setState({
@@ -298,14 +254,12 @@ class NewItemModal extends PureComponent {
298
254
  });
299
255
  this.submitModal(true);
300
256
  }
257
+
301
258
  /**
302
259
  * Focus rename input and select name part for files, select all text for folders
303
260
  */
304
-
305
-
306
261
  focusRenameInput() {
307
262
  var input = this.inputRef.current;
308
-
309
263
  if (input) {
310
264
  var {
311
265
  type
@@ -318,7 +272,6 @@ class NewItemModal extends PureComponent {
318
272
  input.setSelectionRange(0, selectionEnd > 0 ? selectionEnd : value.length);
319
273
  }
320
274
  }
321
-
322
275
  submitModal() {
323
276
  var skipExtensionCheck = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
324
277
  this.setState(_ref2 => {
@@ -333,7 +286,6 @@ class NewItemModal extends PureComponent {
333
286
  } = this.props;
334
287
  log.debug('submitModal', prevExtension, value);
335
288
  var newExtension = FileUtils.getExtension(value);
336
-
337
289
  if (notifyOnExtensionChange && !skipExtensionCheck && prevExtension !== null && prevExtension !== newExtension) {
338
290
  return {
339
291
  isSubmitting: false,
@@ -341,7 +293,6 @@ class NewItemModal extends PureComponent {
341
293
  newExtension
342
294
  };
343
295
  }
344
-
345
296
  this.getValidationPromise(path, value, true).then(newItemName => {
346
297
  var {
347
298
  onSubmit
@@ -358,7 +309,6 @@ class NewItemModal extends PureComponent {
358
309
  return;
359
310
  }
360
311
  }
361
-
362
312
  throw e;
363
313
  }).catch(e => {
364
314
  if (PromiseUtils.isCanceled(e)) {
@@ -366,7 +316,6 @@ class NewItemModal extends PureComponent {
366
316
  isSubmitting: false
367
317
  });
368
318
  }
369
-
370
319
  throw e;
371
320
  }).catch(this.handleValidationError).catch(NewItemModal.handleError);
372
321
  return {
@@ -376,23 +325,19 @@ class NewItemModal extends PureComponent {
376
325
  };
377
326
  });
378
327
  }
379
-
380
328
  handleBreadcrumbSelect(directoryPath) {
381
329
  this.setState({
382
330
  path: directoryPath
383
331
  });
384
332
  }
385
-
386
333
  renderPathButtons(path) {
387
334
  var pathAsList = path.split('/');
388
335
  pathAsList.pop();
389
336
  return pathAsList.map((basename, index) => {
390
337
  var directoryPath = '';
391
-
392
338
  for (var i = 0; i < index; i += 1) {
393
339
  directoryPath += "".concat(pathAsList[i], "/");
394
340
  }
395
-
396
341
  directoryPath += "".concat(basename, "/");
397
342
  return /*#__PURE__*/React.createElement(React.Fragment, {
398
343
  key: directoryPath
@@ -409,7 +354,6 @@ class NewItemModal extends PureComponent {
409
354
  }, basename), "/");
410
355
  });
411
356
  }
412
-
413
357
  render() {
414
358
  var {
415
359
  storage,
@@ -497,9 +441,7 @@ class NewItemModal extends PureComponent {
497
441
  confirmButtonText: "Use \"".concat(newExtensionText, "\"")
498
442
  }));
499
443
  }
500
-
501
444
  }
502
-
503
445
  _defineProperty(NewItemModal, "propTypes", {
504
446
  isOpen: PropTypes.bool,
505
447
  title: PropTypes.string.isRequired,
@@ -511,7 +453,6 @@ _defineProperty(NewItemModal, "propTypes", {
511
453
  storage: PropTypes.shape({}).isRequired,
512
454
  notifyOnExtensionChange: PropTypes.bool
513
455
  });
514
-
515
456
  _defineProperty(NewItemModal, "defaultProps", {
516
457
  isOpen: false,
517
458
  defaultValue: '/',
@@ -520,6 +461,5 @@ _defineProperty(NewItemModal, "defaultProps", {
520
461
  onSubmit: name => undefined,
521
462
  onCancel: () => undefined
522
463
  });
523
-
524
464
  export default NewItemModal;
525
465
  //# sourceMappingURL=NewItemModal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NewItemModal.js","names":["React","PureComponent","PropTypes","classNames","Modal","ModalBody","ModalFooter","ModalHeader","BasicModal","Button","Pending","PromiseUtils","ValidationError","Log","vsHome","FontAwesomeIcon","FileExplorer","FileUtils","FileExistsError","FileNotFoundError","log","module","NewItemModal","getValidationMessage","err","info","type","handleError","isCanceled","error","constructor","props","createRef","Map","handleModalSubmit","bind","handleModalOpened","handleSelect","handleChange","handleKeyDown","handleValidationError","handleOverwriteCancel","handleOverwriteConfirm","handleExtensionChangeCancel","handleExtensionChangeConfirm","handleBreadcrumbSelect","defaultValue","path","hasPath","getPath","state","isSubmitting","prevExtension","getExtension","showExtensionChangeModal","showOverwriteModal","value","getBaseName","componentDidUpdate","prevProps","prevState","isOpen","prevIsOpen","resetValue","isInitialLoad","updateValidationStatus","componentWillUnmount","pending","cancel","cancelableValidatePromise","cancelableExistingItemPromise","setState","validationError","undefined","getValidationPromise","name","checkExisting","makeCancelable","validateName","storage","existingFile","e","newName","then","catch","focusRenameInput","submitModal","event","target","item","debug","makePath","filename","basename","key","stopPropagation","preventDefault","onCancel","onSubmit","newValue","replaceExtension","input","inputRef","current","selectionEnd","length","lastIndexOf","focus","setSelectionRange","skipExtensionCheck","notifyOnExtensionChange","newExtension","newItemName","directoryPath","renderPathButtons","pathAsList","split","pop","map","index","i","render","placeholder","title","isDirectory","prevExtensionText","fileExtensionToString","newExtensionText","submitBtnLabel","nameInputLabel","bool","string","isRequired","oneOf","func","shape"],"sources":["../src/NewItemModal.tsx"],"sourcesContent":["import React, { ChangeEvent, KeyboardEvent, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n BasicModal,\n Button,\n} from '@deephaven/components';\nimport {\n CancelablePromise,\n Pending,\n PromiseUtils,\n ValidationError,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { vsHome } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport FileExplorer from './FileExplorer';\nimport FileStorage, { FileStorageItem, FileType } from './FileStorage';\nimport FileUtils from './FileUtils';\n\nimport './NewItemModal.scss';\nimport FileExistsError from './FileExistsError';\nimport FileNotFoundError from './FileNotFoundError';\n\nconst log = Log.module('NewItemModal');\n\nexport type NewItemModalProps = typeof NewItemModal.defaultProps & {\n isOpen: boolean;\n title: string;\n defaultValue: string;\n type: FileType;\n onSubmit: (name: string) => void;\n onCancel: () => void;\n placeholder: string;\n storage: FileStorage;\n notifyOnExtensionChange?: boolean;\n};\n\nexport type NewItemModalState = {\n path: string;\n isSubmitting: boolean;\n showExtensionChangeModal: boolean;\n showOverwriteModal: boolean;\n validationError?: ValidationError;\n value: string;\n prevExtension?: string;\n newExtension?: string;\n};\n\nclass NewItemModal extends PureComponent<NewItemModalProps, NewItemModalState> {\n static propTypes = {\n isOpen: PropTypes.bool,\n title: PropTypes.string.isRequired,\n defaultValue: PropTypes.string,\n type: PropTypes.oneOf(['file', 'directory']).isRequired,\n onSubmit: PropTypes.func,\n onCancel: PropTypes.func,\n placeholder: PropTypes.string,\n storage: PropTypes.shape({}).isRequired,\n notifyOnExtensionChange: PropTypes.bool,\n };\n\n static defaultProps = {\n isOpen: false,\n defaultValue: '/',\n notifyOnExtensionChange: false,\n placeholder: '',\n onSubmit: (name: string): void => undefined,\n onCancel: (): void => undefined,\n };\n\n static getValidationMessage(err: Error): string {\n if (err instanceof FileExistsError && err.info.type === 'directory') {\n return 'Error: Cannot overwrite existing directory';\n }\n return `${err}`;\n }\n\n static handleError(err: Error): void {\n if (!PromiseUtils.isCanceled(err)) {\n log.error(err);\n }\n }\n\n constructor(props: NewItemModalProps) {\n super(props);\n this.handleModalSubmit = this.handleModalSubmit.bind(this);\n this.handleModalOpened = this.handleModalOpened.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleValidationError = this.handleValidationError.bind(this);\n this.handleOverwriteCancel = this.handleOverwriteCancel.bind(this);\n this.handleOverwriteConfirm = this.handleOverwriteConfirm.bind(this);\n this.handleExtensionChangeCancel = this.handleExtensionChangeCancel.bind(\n this\n );\n this.handleExtensionChangeConfirm = this.handleExtensionChangeConfirm.bind(\n this\n );\n this.handleBreadcrumbSelect = this.handleBreadcrumbSelect.bind(this);\n\n const { defaultValue } = props;\n\n const path = FileUtils.hasPath(defaultValue)\n ? FileUtils.getPath(defaultValue)\n : '/';\n\n this.state = {\n isSubmitting: false,\n path,\n prevExtension: FileUtils.getExtension(defaultValue),\n showExtensionChangeModal: false,\n showOverwriteModal: false,\n value: FileUtils.getBaseName(defaultValue),\n };\n }\n\n componentDidUpdate(\n prevProps: NewItemModalProps,\n prevState: NewItemModalState\n ): void {\n const { isOpen } = this.props;\n const { isOpen: prevIsOpen } = prevProps;\n const { value, path } = this.state;\n if (!prevIsOpen && isOpen) {\n this.resetValue();\n this.isInitialLoad = true;\n }\n\n if (prevIsOpen && isOpen) {\n if (\n !this.isInitialLoad &&\n (path !== prevState.path || value !== prevState.value)\n ) {\n this.updateValidationStatus(path, value);\n }\n this.isInitialLoad = false;\n }\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n if (this.cancelableExistingItemPromise) {\n this.cancelableExistingItemPromise.cancel();\n }\n }\n\n private inputRef = React.createRef<HTMLInputElement>();\n\n private cancelableValidatePromise?: CancelablePromise<string>;\n\n private cancelableExistingItemPromise?: CancelablePromise<FileStorageItem | null>;\n\n private pending = new Pending();\n\n private pathMap = new Map();\n\n private isInitialLoad = true;\n\n resetValue(): void {\n const { defaultValue } = this.props as NewItemModalProps;\n const path = FileUtils.hasPath(defaultValue)\n ? FileUtils.getPath(defaultValue)\n : '/';\n this.setState({\n path,\n value: FileUtils.getBaseName(defaultValue),\n validationError: undefined,\n prevExtension: FileUtils.getExtension(defaultValue),\n isSubmitting: false,\n });\n }\n\n getValidationPromise(\n path: string,\n name: string,\n checkExisting = false\n ): CancelablePromise<string> {\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n this.cancelableValidatePromise = PromiseUtils.makeCancelable(\n this.validateName(path, name, checkExisting)\n );\n return this.cancelableValidatePromise;\n }\n\n async validateName(\n path: string,\n name: string,\n checkExisting: boolean\n ): Promise<string> {\n FileUtils.validateName(name);\n\n const { defaultValue, storage } = this.props;\n if (checkExisting) {\n const value = `${path}${name}`;\n if (value !== defaultValue) {\n try {\n const existingFile = await storage.info(value);\n throw new FileExistsError(existingFile);\n } catch (e) {\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n // There is no existing file, ignore\n }\n }\n }\n\n return name;\n }\n\n updateValidationStatus(path: string, newName: string): void {\n this.getValidationPromise(path, newName)\n .then(() => {\n this.setState({ validationError: undefined });\n })\n .catch(this.handleValidationError)\n .catch(NewItemModal.handleError);\n }\n\n handleModalOpened(): void {\n this.focusRenameInput();\n }\n\n handleModalSubmit(): void {\n this.submitModal();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value });\n }\n\n handleSelect(item: FileStorageItem): void {\n log.debug('handleSelect', item);\n if (item.type === 'directory') {\n this.setState({ path: FileUtils.makePath(item.filename) });\n } else {\n // Use selected item name and folder and focus the input\n const value = item.basename;\n const path = FileUtils.getPath(item.filename);\n this.setState({ value, path }, () => {\n this.focusRenameInput();\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleKeyDown(e: KeyboardEvent): void {\n const { key } = e;\n e.stopPropagation();\n\n switch (key) {\n case 'Enter': {\n // Prevent form submit event\n e.preventDefault();\n this.submitModal();\n break;\n }\n case 'Escape': {\n e.preventDefault();\n const { onCancel } = this.props;\n onCancel();\n break;\n }\n default:\n }\n }\n\n handleValidationError(err: Error): void {\n if (!(err instanceof ValidationError)) {\n throw err;\n }\n log.debug('Validation error', err);\n this.setState({ validationError: err });\n }\n\n handleOverwriteCancel(): void {\n this.setState({\n showOverwriteModal: false,\n isSubmitting: false,\n });\n }\n\n handleOverwriteConfirm(): void {\n this.setState({ showOverwriteModal: false });\n const { onSubmit } = this.props;\n const { path, value } = this.state;\n log.debug('handleOverwriteConfirm', path, value);\n onSubmit(`${path}${value}`);\n }\n\n handleExtensionChangeCancel(): void {\n log.debug('handleExtensionChangeCancel');\n this.setState(({ value, prevExtension }) => {\n const newValue = FileUtils.replaceExtension(value, prevExtension);\n return {\n showExtensionChangeModal: false,\n value: newValue,\n };\n });\n\n this.submitModal(true);\n }\n\n handleExtensionChangeConfirm(): void {\n log.debug('handleExtensionChangeConfirm');\n this.setState({ showExtensionChangeModal: false });\n this.submitModal(true);\n }\n\n /**\n * Focus rename input and select name part for files, select all text for folders\n */\n focusRenameInput(): void {\n const input = this.inputRef.current;\n if (input) {\n const { type } = this.props;\n const { value } = input;\n const selectionEnd =\n type === 'directory' ? value.length : value.lastIndexOf('.');\n input.focus();\n input.setSelectionRange(\n 0,\n selectionEnd > 0 ? selectionEnd : value.length\n );\n }\n }\n\n submitModal(skipExtensionCheck = false): void {\n this.setState(({ prevExtension, value, path }) => {\n const { notifyOnExtensionChange, type } = this.props;\n log.debug('submitModal', prevExtension, value);\n const newExtension = FileUtils.getExtension(value);\n if (\n notifyOnExtensionChange &&\n !skipExtensionCheck &&\n prevExtension !== null &&\n prevExtension !== newExtension\n ) {\n return {\n isSubmitting: false,\n showExtensionChangeModal: true,\n newExtension,\n };\n }\n\n this.getValidationPromise(path, value, true)\n .then((newItemName: string) => {\n const { onSubmit } = this.props;\n onSubmit(`${path}${value}`);\n })\n .catch(e => {\n // Don't allow using existing names for folders\n // For files, prompt if they want to overwrite existing file\n if (e instanceof FileExistsError) {\n if (type !== 'directory' && e.info.type !== 'directory') {\n this.setState({ showOverwriteModal: true });\n return;\n }\n }\n throw e;\n })\n .catch(e => {\n if (PromiseUtils.isCanceled(e)) {\n this.setState({ isSubmitting: false });\n }\n throw e;\n })\n .catch(this.handleValidationError)\n .catch(NewItemModal.handleError);\n\n return {\n isSubmitting: true,\n showExtensionChangeModal: false,\n newExtension: undefined,\n };\n });\n }\n\n handleBreadcrumbSelect(directoryPath: string): void {\n this.setState({ path: directoryPath });\n }\n\n renderPathButtons(path: string): React.ReactNode {\n const pathAsList = path.split('/');\n pathAsList.pop();\n return pathAsList.map((basename, index) => {\n let directoryPath = '';\n for (let i = 0; i < index; i += 1) {\n directoryPath += `${pathAsList[i]}/`;\n }\n directoryPath += `${basename}/`;\n\n return (\n <React.Fragment key={directoryPath}>\n <Button\n kind=\"ghost\"\n className=\"directory-breadcrumbs\"\n onClick={() => this.handleBreadcrumbSelect(directoryPath)}\n aria-label={index === 0 ? 'Home' : undefined}\n icon={\n index === 0 ? (\n <FontAwesomeIcon icon={vsHome} transform=\"right-1.6\" />\n ) : undefined\n }\n tooltip={index === 0 ? 'Home' : undefined}\n >\n {basename}\n </Button>\n /\n </React.Fragment>\n );\n });\n }\n\n render(): React.ReactNode {\n const { storage, isOpen, onCancel, placeholder, title, type } = this.props;\n const {\n isSubmitting,\n path,\n showExtensionChangeModal,\n showOverwriteModal,\n validationError,\n value,\n prevExtension,\n newExtension,\n } = this.state;\n\n const isDirectory = type === 'directory';\n const prevExtensionText = FileUtils.fileExtensionToString(prevExtension);\n const newExtensionText = FileUtils.fileExtensionToString(newExtension);\n const submitBtnLabel = isDirectory ? 'Create' : 'Save';\n const nameInputLabel = isDirectory ? 'New folder name' : 'Save file as';\n\n return (\n <>\n <Modal\n isOpen={isOpen}\n toggle={onCancel}\n onOpened={this.handleModalOpened}\n className=\"modal-dialog-centered new-file-modal theme-bg-dark\"\n >\n <ModalHeader toggle={onCancel}>{title}</ModalHeader>\n <ModalBody>\n <form>\n <div className=\"d-flex flex-column new-file-modal-content\">\n <div className=\"flex-grow-0 mb-4\">\n <label htmlFor=\"file-name-input\">{nameInputLabel}</label>\n <input\n id=\"file-name-input\"\n type=\"text\"\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n className={classNames('form-control', {\n 'is-invalid': validationError,\n })}\n value={value}\n placeholder={placeholder}\n ref={this.inputRef}\n onKeyDown={this.handleKeyDown}\n onChange={this.handleChange}\n />\n {validationError && (\n <div className=\"invalid-feedback\">\n {NewItemModal.getValidationMessage(validationError)}\n </div>\n )}\n </div>\n <div className=\"flex-grow-0\">\n <label>Directory: /</label>\n {this.renderPathButtons(path)}\n </div>\n <div className=\"flex-grow-1 file-explorer-container\">\n <FileExplorer\n onSelect={this.handleSelect}\n storage={storage}\n focusedPath={path}\n />\n </div>\n </div>\n </form>\n </ModalBody>\n\n <ModalFooter>\n <Button kind=\"secondary\" onClick={onCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n disabled={isSubmitting}\n onClick={this.handleModalSubmit}\n >\n {submitBtnLabel}\n </Button>\n </ModalFooter>\n </Modal>\n <BasicModal\n isOpen={showOverwriteModal}\n headerText=\"Confirm overwrite\"\n bodyText=\"File with this name already exists, are you sure you want to overwrite it?\"\n onCancel={this.handleOverwriteCancel}\n onConfirm={this.handleOverwriteConfirm}\n cancelButtonText=\"Cancel\"\n confirmButtonText=\"Overwrite\"\n />\n <BasicModal\n isOpen={showExtensionChangeModal}\n headerText=\"Confirm extension change\"\n bodyText={`Are you sure you want to change extension from \"${prevExtensionText}\" to \"${newExtensionText}\"?`}\n onCancel={this.handleExtensionChangeCancel}\n onConfirm={this.handleExtensionChangeConfirm}\n cancelButtonText={`Keep \"${prevExtensionText}\"`}\n confirmButtonText={`Use \"${newExtensionText}\"`}\n />\n </>\n );\n }\n}\n\nexport default NewItemModal;\n"],"mappings":"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"}
1
+ {"version":3,"file":"NewItemModal.js","names":["React","PureComponent","PropTypes","classNames","Modal","ModalBody","ModalFooter","ModalHeader","BasicModal","Button","Pending","PromiseUtils","ValidationError","Log","vsHome","FontAwesomeIcon","FileExplorer","FileUtils","FileExistsError","FileNotFoundError","log","module","NewItemModal","getValidationMessage","err","info","type","handleError","isCanceled","error","constructor","props","createRef","Map","handleModalSubmit","bind","handleModalOpened","handleSelect","handleChange","handleKeyDown","handleValidationError","handleOverwriteCancel","handleOverwriteConfirm","handleExtensionChangeCancel","handleExtensionChangeConfirm","handleBreadcrumbSelect","defaultValue","path","hasPath","getPath","state","isSubmitting","prevExtension","getExtension","showExtensionChangeModal","showOverwriteModal","value","getBaseName","componentDidUpdate","prevProps","prevState","isOpen","prevIsOpen","resetValue","isInitialLoad","updateValidationStatus","componentWillUnmount","pending","cancel","cancelableValidatePromise","cancelableExistingItemPromise","setState","validationError","undefined","getValidationPromise","name","checkExisting","makeCancelable","validateName","storage","existingFile","e","newName","then","catch","focusRenameInput","submitModal","event","target","item","debug","makePath","filename","basename","key","stopPropagation","preventDefault","onCancel","onSubmit","newValue","replaceExtension","input","inputRef","current","selectionEnd","length","lastIndexOf","focus","setSelectionRange","skipExtensionCheck","notifyOnExtensionChange","newExtension","newItemName","directoryPath","renderPathButtons","pathAsList","split","pop","map","index","i","render","placeholder","title","isDirectory","prevExtensionText","fileExtensionToString","newExtensionText","submitBtnLabel","nameInputLabel","bool","string","isRequired","oneOf","func","shape"],"sources":["../src/NewItemModal.tsx"],"sourcesContent":["import React, { ChangeEvent, KeyboardEvent, PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n BasicModal,\n Button,\n} from '@deephaven/components';\nimport {\n CancelablePromise,\n Pending,\n PromiseUtils,\n ValidationError,\n} from '@deephaven/utils';\nimport Log from '@deephaven/log';\nimport { vsHome } from '@deephaven/icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport FileExplorer from './FileExplorer';\nimport FileStorage, { FileStorageItem, FileType } from './FileStorage';\nimport FileUtils from './FileUtils';\n\nimport './NewItemModal.scss';\nimport FileExistsError from './FileExistsError';\nimport FileNotFoundError from './FileNotFoundError';\n\nconst log = Log.module('NewItemModal');\n\nexport type NewItemModalProps = typeof NewItemModal.defaultProps & {\n isOpen: boolean;\n title: string;\n defaultValue: string;\n type: FileType;\n onSubmit: (name: string) => void;\n onCancel: () => void;\n placeholder: string;\n storage: FileStorage;\n notifyOnExtensionChange?: boolean;\n};\n\nexport type NewItemModalState = {\n path: string;\n isSubmitting: boolean;\n showExtensionChangeModal: boolean;\n showOverwriteModal: boolean;\n validationError?: ValidationError;\n value: string;\n prevExtension?: string;\n newExtension?: string;\n};\n\nclass NewItemModal extends PureComponent<NewItemModalProps, NewItemModalState> {\n static propTypes = {\n isOpen: PropTypes.bool,\n title: PropTypes.string.isRequired,\n defaultValue: PropTypes.string,\n type: PropTypes.oneOf(['file', 'directory']).isRequired,\n onSubmit: PropTypes.func,\n onCancel: PropTypes.func,\n placeholder: PropTypes.string,\n storage: PropTypes.shape({}).isRequired,\n notifyOnExtensionChange: PropTypes.bool,\n };\n\n static defaultProps = {\n isOpen: false,\n defaultValue: '/',\n notifyOnExtensionChange: false,\n placeholder: '',\n onSubmit: (name: string): void => undefined,\n onCancel: (): void => undefined,\n };\n\n static getValidationMessage(err: Error): string {\n if (err instanceof FileExistsError && err.info.type === 'directory') {\n return 'Error: Cannot overwrite existing directory';\n }\n return `${err}`;\n }\n\n static handleError(err: Error): void {\n if (!PromiseUtils.isCanceled(err)) {\n log.error(err);\n }\n }\n\n constructor(props: NewItemModalProps) {\n super(props);\n this.handleModalSubmit = this.handleModalSubmit.bind(this);\n this.handleModalOpened = this.handleModalOpened.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleValidationError = this.handleValidationError.bind(this);\n this.handleOverwriteCancel = this.handleOverwriteCancel.bind(this);\n this.handleOverwriteConfirm = this.handleOverwriteConfirm.bind(this);\n this.handleExtensionChangeCancel = this.handleExtensionChangeCancel.bind(\n this\n );\n this.handleExtensionChangeConfirm = this.handleExtensionChangeConfirm.bind(\n this\n );\n this.handleBreadcrumbSelect = this.handleBreadcrumbSelect.bind(this);\n\n const { defaultValue } = props;\n\n const path = FileUtils.hasPath(defaultValue)\n ? FileUtils.getPath(defaultValue)\n : '/';\n\n this.state = {\n isSubmitting: false,\n path,\n prevExtension: FileUtils.getExtension(defaultValue),\n showExtensionChangeModal: false,\n showOverwriteModal: false,\n value: FileUtils.getBaseName(defaultValue),\n };\n }\n\n componentDidUpdate(\n prevProps: NewItemModalProps,\n prevState: NewItemModalState\n ): void {\n const { isOpen } = this.props;\n const { isOpen: prevIsOpen } = prevProps;\n const { value, path } = this.state;\n if (!prevIsOpen && isOpen) {\n this.resetValue();\n this.isInitialLoad = true;\n }\n\n if (prevIsOpen && isOpen) {\n if (\n !this.isInitialLoad &&\n (path !== prevState.path || value !== prevState.value)\n ) {\n this.updateValidationStatus(path, value);\n }\n this.isInitialLoad = false;\n }\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n if (this.cancelableExistingItemPromise) {\n this.cancelableExistingItemPromise.cancel();\n }\n }\n\n private inputRef = React.createRef<HTMLInputElement>();\n\n private cancelableValidatePromise?: CancelablePromise<string>;\n\n private cancelableExistingItemPromise?: CancelablePromise<FileStorageItem | null>;\n\n private pending = new Pending();\n\n private pathMap = new Map();\n\n private isInitialLoad = true;\n\n resetValue(): void {\n const { defaultValue } = this.props as NewItemModalProps;\n const path = FileUtils.hasPath(defaultValue)\n ? FileUtils.getPath(defaultValue)\n : '/';\n this.setState({\n path,\n value: FileUtils.getBaseName(defaultValue),\n validationError: undefined,\n prevExtension: FileUtils.getExtension(defaultValue),\n isSubmitting: false,\n });\n }\n\n getValidationPromise(\n path: string,\n name: string,\n checkExisting = false\n ): CancelablePromise<string> {\n if (this.cancelableValidatePromise) {\n this.cancelableValidatePromise.cancel();\n }\n this.cancelableValidatePromise = PromiseUtils.makeCancelable(\n this.validateName(path, name, checkExisting)\n );\n return this.cancelableValidatePromise;\n }\n\n async validateName(\n path: string,\n name: string,\n checkExisting: boolean\n ): Promise<string> {\n FileUtils.validateName(name);\n\n const { defaultValue, storage } = this.props;\n if (checkExisting) {\n const value = `${path}${name}`;\n if (value !== defaultValue) {\n try {\n const existingFile = await storage.info(value);\n throw new FileExistsError(existingFile);\n } catch (e) {\n if (!(e instanceof FileNotFoundError)) {\n throw e;\n }\n // There is no existing file, ignore\n }\n }\n }\n\n return name;\n }\n\n updateValidationStatus(path: string, newName: string): void {\n this.getValidationPromise(path, newName)\n .then(() => {\n this.setState({ validationError: undefined });\n })\n .catch(this.handleValidationError)\n .catch(NewItemModal.handleError);\n }\n\n handleModalOpened(): void {\n this.focusRenameInput();\n }\n\n handleModalSubmit(): void {\n this.submitModal();\n }\n\n handleChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n this.setState({ value });\n }\n\n handleSelect(item: FileStorageItem): void {\n log.debug('handleSelect', item);\n if (item.type === 'directory') {\n this.setState({ path: FileUtils.makePath(item.filename) });\n } else {\n // Use selected item name and folder and focus the input\n const value = item.basename;\n const path = FileUtils.getPath(item.filename);\n this.setState({ value, path }, () => {\n this.focusRenameInput();\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleKeyDown(e: KeyboardEvent): void {\n const { key } = e;\n e.stopPropagation();\n\n switch (key) {\n case 'Enter': {\n // Prevent form submit event\n e.preventDefault();\n this.submitModal();\n break;\n }\n case 'Escape': {\n e.preventDefault();\n const { onCancel } = this.props;\n onCancel();\n break;\n }\n default:\n }\n }\n\n handleValidationError(err: Error): void {\n if (!(err instanceof ValidationError)) {\n throw err;\n }\n log.debug('Validation error', err);\n this.setState({ validationError: err });\n }\n\n handleOverwriteCancel(): void {\n this.setState({\n showOverwriteModal: false,\n isSubmitting: false,\n });\n }\n\n handleOverwriteConfirm(): void {\n this.setState({ showOverwriteModal: false });\n const { onSubmit } = this.props;\n const { path, value } = this.state;\n log.debug('handleOverwriteConfirm', path, value);\n onSubmit(`${path}${value}`);\n }\n\n handleExtensionChangeCancel(): void {\n log.debug('handleExtensionChangeCancel');\n this.setState(({ value, prevExtension }) => {\n const newValue = FileUtils.replaceExtension(value, prevExtension);\n return {\n showExtensionChangeModal: false,\n value: newValue,\n };\n });\n\n this.submitModal(true);\n }\n\n handleExtensionChangeConfirm(): void {\n log.debug('handleExtensionChangeConfirm');\n this.setState({ showExtensionChangeModal: false });\n this.submitModal(true);\n }\n\n /**\n * Focus rename input and select name part for files, select all text for folders\n */\n focusRenameInput(): void {\n const input = this.inputRef.current;\n if (input) {\n const { type } = this.props;\n const { value } = input;\n const selectionEnd =\n type === 'directory' ? value.length : value.lastIndexOf('.');\n input.focus();\n input.setSelectionRange(\n 0,\n selectionEnd > 0 ? selectionEnd : value.length\n );\n }\n }\n\n submitModal(skipExtensionCheck = false): void {\n this.setState(({ prevExtension, value, path }) => {\n const { notifyOnExtensionChange, type } = this.props;\n log.debug('submitModal', prevExtension, value);\n const newExtension = FileUtils.getExtension(value);\n if (\n notifyOnExtensionChange &&\n !skipExtensionCheck &&\n prevExtension !== null &&\n prevExtension !== newExtension\n ) {\n return {\n isSubmitting: false,\n showExtensionChangeModal: true,\n newExtension,\n };\n }\n\n this.getValidationPromise(path, value, true)\n .then((newItemName: string) => {\n const { onSubmit } = this.props;\n onSubmit(`${path}${value}`);\n })\n .catch(e => {\n // Don't allow using existing names for folders\n // For files, prompt if they want to overwrite existing file\n if (e instanceof FileExistsError) {\n if (type !== 'directory' && e.info.type !== 'directory') {\n this.setState({ showOverwriteModal: true });\n return;\n }\n }\n throw e;\n })\n .catch(e => {\n if (PromiseUtils.isCanceled(e)) {\n this.setState({ isSubmitting: false });\n }\n throw e;\n })\n .catch(this.handleValidationError)\n .catch(NewItemModal.handleError);\n\n return {\n isSubmitting: true,\n showExtensionChangeModal: false,\n newExtension: undefined,\n };\n });\n }\n\n handleBreadcrumbSelect(directoryPath: string): void {\n this.setState({ path: directoryPath });\n }\n\n renderPathButtons(path: string): React.ReactNode {\n const pathAsList = path.split('/');\n pathAsList.pop();\n return pathAsList.map((basename, index) => {\n let directoryPath = '';\n for (let i = 0; i < index; i += 1) {\n directoryPath += `${pathAsList[i]}/`;\n }\n directoryPath += `${basename}/`;\n\n return (\n <React.Fragment key={directoryPath}>\n <Button\n kind=\"ghost\"\n className=\"directory-breadcrumbs\"\n onClick={() => this.handleBreadcrumbSelect(directoryPath)}\n aria-label={index === 0 ? 'Home' : undefined}\n icon={\n index === 0 ? (\n <FontAwesomeIcon icon={vsHome} transform=\"right-1.6\" />\n ) : undefined\n }\n tooltip={index === 0 ? 'Home' : undefined}\n >\n {basename}\n </Button>\n /\n </React.Fragment>\n );\n });\n }\n\n render(): React.ReactNode {\n const { storage, isOpen, onCancel, placeholder, title, type } = this.props;\n const {\n isSubmitting,\n path,\n showExtensionChangeModal,\n showOverwriteModal,\n validationError,\n value,\n prevExtension,\n newExtension,\n } = this.state;\n\n const isDirectory = type === 'directory';\n const prevExtensionText = FileUtils.fileExtensionToString(prevExtension);\n const newExtensionText = FileUtils.fileExtensionToString(newExtension);\n const submitBtnLabel = isDirectory ? 'Create' : 'Save';\n const nameInputLabel = isDirectory ? 'New folder name' : 'Save file as';\n\n return (\n <>\n <Modal\n isOpen={isOpen}\n toggle={onCancel}\n onOpened={this.handleModalOpened}\n className=\"modal-dialog-centered new-file-modal theme-bg-dark\"\n >\n <ModalHeader toggle={onCancel}>{title}</ModalHeader>\n <ModalBody>\n <form>\n <div className=\"d-flex flex-column new-file-modal-content\">\n <div className=\"flex-grow-0 mb-4\">\n <label htmlFor=\"file-name-input\">{nameInputLabel}</label>\n <input\n id=\"file-name-input\"\n type=\"text\"\n autoComplete=\"off\"\n autoCapitalize=\"none\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n className={classNames('form-control', {\n 'is-invalid': validationError,\n })}\n value={value}\n placeholder={placeholder}\n ref={this.inputRef}\n onKeyDown={this.handleKeyDown}\n onChange={this.handleChange}\n />\n {validationError && (\n <div className=\"invalid-feedback\">\n {NewItemModal.getValidationMessage(validationError)}\n </div>\n )}\n </div>\n <div className=\"flex-grow-0\">\n <label>Directory: /</label>\n {this.renderPathButtons(path)}\n </div>\n <div className=\"flex-grow-1 file-explorer-container\">\n <FileExplorer\n onSelect={this.handleSelect}\n storage={storage}\n focusedPath={path}\n />\n </div>\n </div>\n </form>\n </ModalBody>\n\n <ModalFooter>\n <Button kind=\"secondary\" onClick={onCancel}>\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n disabled={isSubmitting}\n onClick={this.handleModalSubmit}\n >\n {submitBtnLabel}\n </Button>\n </ModalFooter>\n </Modal>\n <BasicModal\n isOpen={showOverwriteModal}\n headerText=\"Confirm overwrite\"\n bodyText=\"File with this name already exists, are you sure you want to overwrite it?\"\n onCancel={this.handleOverwriteCancel}\n onConfirm={this.handleOverwriteConfirm}\n cancelButtonText=\"Cancel\"\n confirmButtonText=\"Overwrite\"\n />\n <BasicModal\n isOpen={showExtensionChangeModal}\n headerText=\"Confirm extension change\"\n bodyText={`Are you sure you want to change extension from \"${prevExtensionText}\" to \"${newExtensionText}\"?`}\n onCancel={this.handleExtensionChangeCancel}\n onConfirm={this.handleExtensionChangeConfirm}\n cancelButtonText={`Keep \"${prevExtensionText}\"`}\n confirmButtonText={`Use \"${newExtensionText}\"`}\n />\n </>\n );\n }\n}\n\nexport default NewItemModal;\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["FileExplorer","default","FileExistsError","FileNotFoundError","SHORTCUTS","NewItemModal","FileExplorerToolbar","FileUtils"],"sources":["../src/index.ts"],"sourcesContent":["import FileExplorer from './FileExplorer';\n\nexport * from './FileExplorer';\nexport * from './FileListContainer';\nexport * from './FileList';\nexport * from './FileStorage';\nexport { default as FileExistsError } from './FileExistsError';\nexport { default as FileNotFoundError } from './FileNotFoundError';\nexport { default as SHORTCUTS } from './FileExplorerShortcuts';\nexport { default as NewItemModal } from './NewItemModal';\nexport { default as FileExplorerToolbar } from './FileExplorerToolbar';\nexport { default as FileUtils } from './FileUtils';\n\nexport default FileExplorer;\n"],"mappings":"OAAOA,Y;;;;;SAMEC,OAAO,IAAIC,e;SACXD,OAAO,IAAIE,iB;SACXF,OAAO,IAAIG,S;SACXH,OAAO,IAAII,Y;SACXJ,OAAO,IAAIK,mB;SACXL,OAAO,IAAIM,S;AAEpB,eAAeP,YAAf"}
1
+ {"version":3,"file":"index.js","names":["FileExplorer","default","FileExistsError","FileNotFoundError","SHORTCUTS","NewItemModal","FileExplorerToolbar","FileUtils"],"sources":["../src/index.ts"],"sourcesContent":["import FileExplorer from './FileExplorer';\n\nexport * from './FileExplorer';\nexport * from './FileListContainer';\nexport * from './FileList';\nexport * from './FileStorage';\nexport { default as FileExistsError } from './FileExistsError';\nexport { default as FileNotFoundError } from './FileNotFoundError';\nexport { default as SHORTCUTS } from './FileExplorerShortcuts';\nexport { default as NewItemModal } from './NewItemModal';\nexport { default as FileExplorerToolbar } from './FileExplorerToolbar';\nexport { default as FileUtils } from './FileUtils';\n\nexport default FileExplorer;\n"],"mappings":"OAAOA,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,SAMVC,OAAO,IAAIC,eAAe;AAAA,SAC1BD,OAAO,IAAIE,iBAAiB;AAAA,SAC5BF,OAAO,IAAIG,SAAS;AAAA,SACpBH,OAAO,IAAII,YAAY;AAAA,SACvBJ,OAAO,IAAIK,mBAAmB;AAAA,SAC9BL,OAAO,IAAIM,SAAS;AAE7B,eAAeP,YAAY"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/file-explorer",
3
- "version": "0.22.3-beta.15+d3ecd9d",
3
+ "version": "0.22.3-beta.21+6d63afd",
4
4
  "description": "Deephaven File Explorer React component",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -22,11 +22,11 @@
22
22
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
23
23
  },
24
24
  "dependencies": {
25
- "@deephaven/components": "^0.22.3-beta.15+d3ecd9d",
26
- "@deephaven/icons": "^0.22.3-beta.15+d3ecd9d",
27
- "@deephaven/log": "^0.22.3-beta.15+d3ecd9d",
28
- "@deephaven/storage": "^0.22.3-beta.15+d3ecd9d",
29
- "@deephaven/utils": "^0.22.3-beta.15+d3ecd9d",
25
+ "@deephaven/components": "^0.22.3-beta.21+6d63afd",
26
+ "@deephaven/icons": "^0.22.3-beta.21+6d63afd",
27
+ "@deephaven/log": "^0.22.3-beta.21+6d63afd",
28
+ "@deephaven/storage": "^0.22.3-beta.21+6d63afd",
29
+ "@deephaven/utils": "^0.22.3-beta.21+6d63afd",
30
30
  "@fortawesome/fontawesome-svg-core": "^6.1.1",
31
31
  "@fortawesome/react-fontawesome": "^0.1.18",
32
32
  "classnames": "^2.3.1",
@@ -37,7 +37,7 @@
37
37
  "react": "^17.0.0"
38
38
  },
39
39
  "devDependencies": {
40
- "@deephaven/tsconfig": "^0.22.3-beta.15+d3ecd9d"
40
+ "@deephaven/tsconfig": "^0.22.3-beta.21+6d63afd"
41
41
  },
42
42
  "files": [
43
43
  "dist"
@@ -45,5 +45,5 @@
45
45
  "publishConfig": {
46
46
  "access": "public"
47
47
  },
48
- "gitHead": "d3ecd9db8abcd25c5e233aba5ea7861eb758c3f6"
48
+ "gitHead": "6d63afd124485605d545e0104d0cb437eb8993ab"
49
49
  }