@lvce-editor/explorer-view 7.11.0 → 7.13.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.
- package/dist/explorerViewWorkerMain.js +139 -101
- package/package.json +1 -1
|
@@ -2509,6 +2509,50 @@ const acceptCreateFolder = async state => {
|
|
|
2509
2509
|
return acceptCreate(state, Directory);
|
|
2510
2510
|
};
|
|
2511
2511
|
|
|
2512
|
+
const getFocusedIndexCancel = (items, editingIndex) => {
|
|
2513
|
+
const newFocusedIndex = editingIndex >= items.length ? items.length - 1 : editingIndex;
|
|
2514
|
+
return newFocusedIndex;
|
|
2515
|
+
};
|
|
2516
|
+
|
|
2517
|
+
const normalizeDirentType = direntType => {
|
|
2518
|
+
if (direntType > DELTA_EDITING) {
|
|
2519
|
+
return direntType - DELTA_EDITING;
|
|
2520
|
+
}
|
|
2521
|
+
return direntType;
|
|
2522
|
+
};
|
|
2523
|
+
|
|
2524
|
+
const getNewDirentsForCancelRename = (items, editingIndex) => {
|
|
2525
|
+
const item = items[editingIndex];
|
|
2526
|
+
const newItems = [...items];
|
|
2527
|
+
newItems[editingIndex] = {
|
|
2528
|
+
...item,
|
|
2529
|
+
type: normalizeDirentType(item.type)
|
|
2530
|
+
};
|
|
2531
|
+
return newItems;
|
|
2532
|
+
};
|
|
2533
|
+
|
|
2534
|
+
const cancelEditRename = (state, keepFocus) => {
|
|
2535
|
+
const {
|
|
2536
|
+
editingIndex,
|
|
2537
|
+
items
|
|
2538
|
+
} = state;
|
|
2539
|
+
const newItems = getNewDirentsForCancelRename(items, editingIndex);
|
|
2540
|
+
const newFocusedIndex = getFocusedIndexCancel(items, editingIndex);
|
|
2541
|
+
return {
|
|
2542
|
+
...state,
|
|
2543
|
+
editingErrorMessage: '',
|
|
2544
|
+
editingIndex: -1,
|
|
2545
|
+
editingSelectionEnd: 0,
|
|
2546
|
+
editingSelectionStart: 0,
|
|
2547
|
+
editingType: None$5,
|
|
2548
|
+
editingValue: '',
|
|
2549
|
+
focus: List,
|
|
2550
|
+
focused: keepFocus,
|
|
2551
|
+
focusedIndex: newFocusedIndex,
|
|
2552
|
+
items: newItems
|
|
2553
|
+
};
|
|
2554
|
+
};
|
|
2555
|
+
|
|
2512
2556
|
const getUpdatedChildren = (children, oldItems, newUri) => {
|
|
2513
2557
|
const setSize = children.length;
|
|
2514
2558
|
return children.toSorted(compareDirent).map((child, index) => {
|
|
@@ -2596,6 +2640,9 @@ const acceptRename = async state => {
|
|
|
2596
2640
|
const oldUri = renamedDirent.path;
|
|
2597
2641
|
const dirname = dirname2(oldUri);
|
|
2598
2642
|
const newUri = join2(dirname, editingValue);
|
|
2643
|
+
if (oldUri === newUri) {
|
|
2644
|
+
return cancelEditRename(state, true);
|
|
2645
|
+
}
|
|
2599
2646
|
const operations = getFileOperationsRename(renamedDirent.path, editingValue);
|
|
2600
2647
|
const renameErrorMessage = await applyFileOperations(operations);
|
|
2601
2648
|
if (renameErrorMessage) {
|
|
@@ -2625,28 +2672,35 @@ const acceptRename = async state => {
|
|
|
2625
2672
|
};
|
|
2626
2673
|
};
|
|
2627
2674
|
|
|
2628
|
-
const
|
|
2675
|
+
const User = 1;
|
|
2676
|
+
const Script = 2;
|
|
2677
|
+
|
|
2678
|
+
const acceptEdit = async (state, inputSource = Script) => {
|
|
2629
2679
|
if (state.isReadonly) {
|
|
2630
2680
|
return state;
|
|
2631
2681
|
}
|
|
2632
2682
|
const {
|
|
2633
|
-
editingType
|
|
2683
|
+
editingType,
|
|
2684
|
+
inputSource: currentInputSource
|
|
2634
2685
|
} = state;
|
|
2686
|
+
let newState;
|
|
2635
2687
|
switch (editingType) {
|
|
2636
2688
|
case CreateFile:
|
|
2637
|
-
|
|
2689
|
+
newState = await acceptCreateFile(state);
|
|
2690
|
+
break;
|
|
2638
2691
|
case CreateFolder:
|
|
2639
|
-
|
|
2692
|
+
newState = await acceptCreateFolder(state);
|
|
2693
|
+
break;
|
|
2640
2694
|
case Rename$1:
|
|
2641
|
-
|
|
2695
|
+
newState = await acceptRename(state);
|
|
2696
|
+
break;
|
|
2642
2697
|
default:
|
|
2643
2698
|
return state;
|
|
2644
2699
|
}
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
return newFocusedIndex;
|
|
2700
|
+
return {
|
|
2701
|
+
...newState,
|
|
2702
|
+
inputSource: currentInputSource === User ? inputSource : currentInputSource
|
|
2703
|
+
};
|
|
2650
2704
|
};
|
|
2651
2705
|
|
|
2652
2706
|
const isNormalItem = item => {
|
|
@@ -2673,45 +2727,6 @@ const cancelEditCreate = async (state, keepFocus) => {
|
|
|
2673
2727
|
};
|
|
2674
2728
|
};
|
|
2675
2729
|
|
|
2676
|
-
const normalizeDirentType = direntType => {
|
|
2677
|
-
if (direntType > DELTA_EDITING) {
|
|
2678
|
-
return direntType - DELTA_EDITING;
|
|
2679
|
-
}
|
|
2680
|
-
return direntType;
|
|
2681
|
-
};
|
|
2682
|
-
|
|
2683
|
-
const getNewDirentsForCancelRename = (items, editingIndex) => {
|
|
2684
|
-
const item = items[editingIndex];
|
|
2685
|
-
const newItems = [...items];
|
|
2686
|
-
newItems[editingIndex] = {
|
|
2687
|
-
...item,
|
|
2688
|
-
type: normalizeDirentType(item.type)
|
|
2689
|
-
};
|
|
2690
|
-
return newItems;
|
|
2691
|
-
};
|
|
2692
|
-
|
|
2693
|
-
const cancelEditRename = (state, keepFocus) => {
|
|
2694
|
-
const {
|
|
2695
|
-
editingIndex,
|
|
2696
|
-
items
|
|
2697
|
-
} = state;
|
|
2698
|
-
const newItems = getNewDirentsForCancelRename(items, editingIndex);
|
|
2699
|
-
const newFocusedIndex = getFocusedIndexCancel(items, editingIndex);
|
|
2700
|
-
return {
|
|
2701
|
-
...state,
|
|
2702
|
-
editingErrorMessage: '',
|
|
2703
|
-
editingIndex: -1,
|
|
2704
|
-
editingSelectionEnd: 0,
|
|
2705
|
-
editingSelectionStart: 0,
|
|
2706
|
-
editingType: None$5,
|
|
2707
|
-
editingValue: '',
|
|
2708
|
-
focus: List,
|
|
2709
|
-
focused: keepFocus,
|
|
2710
|
-
focusedIndex: newFocusedIndex,
|
|
2711
|
-
items: newItems
|
|
2712
|
-
};
|
|
2713
|
-
};
|
|
2714
|
-
|
|
2715
2730
|
const cancelEditInternal = async (state, keepFocus) => {
|
|
2716
2731
|
const {
|
|
2717
2732
|
editingType
|
|
@@ -2723,7 +2738,14 @@ const cancelEditInternal = async (state, keepFocus) => {
|
|
|
2723
2738
|
};
|
|
2724
2739
|
|
|
2725
2740
|
const cancelEdit = async state => {
|
|
2726
|
-
|
|
2741
|
+
const {
|
|
2742
|
+
inputSource
|
|
2743
|
+
} = state;
|
|
2744
|
+
const newState = await cancelEditInternal(state, true);
|
|
2745
|
+
return {
|
|
2746
|
+
...newState,
|
|
2747
|
+
inputSource: inputSource === User ? Script : inputSource
|
|
2748
|
+
};
|
|
2727
2749
|
};
|
|
2728
2750
|
|
|
2729
2751
|
const cancelTypeAhead = state => {
|
|
@@ -3509,17 +3531,14 @@ const diffTrees = (oldTree, newTree, patches, path) => {
|
|
|
3509
3531
|
};
|
|
3510
3532
|
|
|
3511
3533
|
const removeTrailingNavigationPatches = patches => {
|
|
3512
|
-
|
|
3513
|
-
|
|
3514
|
-
for (let i = patches.length - 1; i >= 0; i--) {
|
|
3515
|
-
const patch = patches[i];
|
|
3534
|
+
while (patches.length > 0) {
|
|
3535
|
+
const patch = patches.at(-1);
|
|
3516
3536
|
if (patch.type !== NavigateChild && patch.type !== NavigateParent && patch.type !== NavigateSibling) {
|
|
3517
|
-
lastNonNavigationIndex = i;
|
|
3518
3537
|
break;
|
|
3519
3538
|
}
|
|
3539
|
+
patches.pop();
|
|
3520
3540
|
}
|
|
3521
|
-
|
|
3522
|
-
return lastNonNavigationIndex === -1 ? [] : patches.slice(0, lastNonNavigationIndex + 1);
|
|
3541
|
+
return patches;
|
|
3523
3542
|
};
|
|
3524
3543
|
|
|
3525
3544
|
const diffTree = (oldNodes, newNodes) => {
|
|
@@ -3650,7 +3669,7 @@ const enqueueCommand = async (id, command) => {
|
|
|
3650
3669
|
}
|
|
3651
3670
|
};
|
|
3652
3671
|
const hasSameVisibleExplorerItemInputs = (oldState, newState) => {
|
|
3653
|
-
return oldState.items === newState.items && oldState.minLineY === newState.minLineY && oldState.height === newState.height && oldState.itemHeight === newState.itemHeight && oldState.focusedIndex === newState.focusedIndex && oldState.editingIndex === newState.editingIndex && oldState.editingIcon === newState.editingIcon && oldState.cutItems === newState.cutItems && oldState.editingErrorMessage === newState.editingErrorMessage && oldState.dropTargets === newState.dropTargets && oldState.fileIconCache === newState.fileIconCache && oldState.decorations === newState.decorations && oldState.useChevrons === newState.useChevrons && oldState.sourceControlIgnoredUris === newState.sourceControlIgnoredUris;
|
|
3672
|
+
return oldState.items === newState.items && oldState.minLineY === newState.minLineY && oldState.height === newState.height && oldState.itemHeight === newState.itemHeight && oldState.focusedIndex === newState.focusedIndex && oldState.editingIndex === newState.editingIndex && oldState.editingSessionId === newState.editingSessionId && oldState.editingIcon === newState.editingIcon && oldState.cutItems === newState.cutItems && oldState.editingErrorMessage === newState.editingErrorMessage && oldState.dropTargets === newState.dropTargets && oldState.fileIconCache === newState.fileIconCache && oldState.decorations === newState.decorations && oldState.useChevrons === newState.useChevrons && oldState.sourceControlIgnoredUris === newState.sourceControlIgnoredUris;
|
|
3654
3673
|
};
|
|
3655
3674
|
const maybeUpdateGitIgnoredUris = async (oldState, newState) => {
|
|
3656
3675
|
if (oldState.items === newState.items || oldState.sourceControlIgnoredUris !== newState.sourceControlIgnoredUris) {
|
|
@@ -3697,6 +3716,9 @@ const wrapListItemCommandInternal = (fn, queued) => {
|
|
|
3697
3716
|
const intermediate = get(id);
|
|
3698
3717
|
set(id, intermediate.oldState, updatedState, intermediate.scheduledState);
|
|
3699
3718
|
if (hasSameVisibleExplorerItemInputs(intermediate.newState, updatedState)) {
|
|
3719
|
+
if (updatedState.inputSource === User) {
|
|
3720
|
+
set(id, intermediate.oldState, updatedState);
|
|
3721
|
+
}
|
|
3700
3722
|
return;
|
|
3701
3723
|
}
|
|
3702
3724
|
const maxLineY = getExplorerMaxLineY(minLineY, height, itemHeight, items.length);
|
|
@@ -3755,6 +3777,7 @@ const create = (id, uri, x, y, width, height, args, parentUid, platform = 0, ass
|
|
|
3755
3777
|
editingIndex: -1,
|
|
3756
3778
|
editingSelectionEnd: 0,
|
|
3757
3779
|
editingSelectionStart: 0,
|
|
3780
|
+
editingSessionId: 0,
|
|
3758
3781
|
editingType: None$5,
|
|
3759
3782
|
editingValue: '',
|
|
3760
3783
|
errorCode: '',
|
|
@@ -4734,6 +4757,7 @@ const newDirent = async (state, editingType, editingIcon = '') => {
|
|
|
4734
4757
|
// TODO do it like vscode, select position between folders and files
|
|
4735
4758
|
const {
|
|
4736
4759
|
editingIndex,
|
|
4760
|
+
editingSessionId,
|
|
4737
4761
|
excluded,
|
|
4738
4762
|
focusedIndex,
|
|
4739
4763
|
items,
|
|
@@ -4750,6 +4774,7 @@ const newDirent = async (state, editingType, editingIcon = '') => {
|
|
|
4750
4774
|
...state,
|
|
4751
4775
|
editingIcon,
|
|
4752
4776
|
editingIndex: newEditingIndex,
|
|
4777
|
+
editingSessionId: editingSessionId + 1,
|
|
4753
4778
|
editingType,
|
|
4754
4779
|
editingValue: '',
|
|
4755
4780
|
focus: Input$1,
|
|
@@ -5351,7 +5376,7 @@ const isEqual = (a, b) => {
|
|
|
5351
5376
|
};
|
|
5352
5377
|
|
|
5353
5378
|
const handleDragOverIndex = (state, index) => {
|
|
5354
|
-
if (state.isReadonly) {
|
|
5379
|
+
if (state.isReadonly && state.root !== '') {
|
|
5355
5380
|
return state;
|
|
5356
5381
|
}
|
|
5357
5382
|
const {
|
|
@@ -5370,7 +5395,7 @@ const handleDragOverIndex = (state, index) => {
|
|
|
5370
5395
|
const handleDragOver = (state, x, y) => {
|
|
5371
5396
|
number(x);
|
|
5372
5397
|
number(y);
|
|
5373
|
-
if (state.isReadonly) {
|
|
5398
|
+
if (state.isReadonly && state.root !== '') {
|
|
5374
5399
|
return state;
|
|
5375
5400
|
}
|
|
5376
5401
|
const index = getIndexFromPosition(state, x, y);
|
|
@@ -5629,7 +5654,7 @@ const loadContent = async (state, savedState) => {
|
|
|
5629
5654
|
// TODO path separator could be restored from saved state
|
|
5630
5655
|
const [pathSeparator, isReadonly$1] = await Promise.all([getPathSeparator(root),
|
|
5631
5656
|
// TODO only load path separator once
|
|
5632
|
-
isReadonly(root)]);
|
|
5657
|
+
root === '' ? false : isReadonly(root)]);
|
|
5633
5658
|
const restoredDirents = await restoreExpandedState(savedState, root, pathSeparator, excluded);
|
|
5634
5659
|
const rawDeltaY = getRestoredDeltaY(savedState);
|
|
5635
5660
|
const maxDeltaY = Math.max(restoredDirents.length * itemHeight - height, 0);
|
|
@@ -5924,7 +5949,7 @@ const getModule = isElectron => {
|
|
|
5924
5949
|
return handleDrop$2;
|
|
5925
5950
|
};
|
|
5926
5951
|
const handleDropRoot = async (state, fileHandles, files, paths) => {
|
|
5927
|
-
if (state.isReadonly) {
|
|
5952
|
+
if (state.isReadonly && state.root !== '') {
|
|
5928
5953
|
return state;
|
|
5929
5954
|
}
|
|
5930
5955
|
const isElectron = state.platform === Electron;
|
|
@@ -6038,7 +6063,7 @@ const getFilePaths = async (files, platform) => {
|
|
|
6038
6063
|
};
|
|
6039
6064
|
|
|
6040
6065
|
const handleDrop = async (state, x, y, fileIds, fileList) => {
|
|
6041
|
-
if (state.isReadonly) {
|
|
6066
|
+
if (state.isReadonly && state.root !== '') {
|
|
6042
6067
|
return state;
|
|
6043
6068
|
}
|
|
6044
6069
|
try {
|
|
@@ -6096,19 +6121,23 @@ const handleIconThemeChange = state => {
|
|
|
6096
6121
|
return updateIcons(state);
|
|
6097
6122
|
};
|
|
6098
6123
|
|
|
6099
|
-
const handleInputBlur = async state => {
|
|
6124
|
+
const handleInputBlur = async (state, editingSessionId) => {
|
|
6100
6125
|
const {
|
|
6101
6126
|
editingErrorMessage,
|
|
6102
6127
|
editingIndex,
|
|
6128
|
+
editingSessionId: currentEditingSessionId,
|
|
6103
6129
|
editingValue
|
|
6104
6130
|
} = state;
|
|
6105
6131
|
if (editingIndex === -1) {
|
|
6106
6132
|
return state;
|
|
6107
6133
|
}
|
|
6134
|
+
if (editingSessionId !== undefined && editingSessionId !== String(currentEditingSessionId)) {
|
|
6135
|
+
return state;
|
|
6136
|
+
}
|
|
6108
6137
|
if (editingErrorMessage || !editingValue) {
|
|
6109
6138
|
return cancelEditInternal(state, false);
|
|
6110
6139
|
}
|
|
6111
|
-
return acceptEdit(state);
|
|
6140
|
+
return acceptEdit(state, User);
|
|
6112
6141
|
};
|
|
6113
6142
|
|
|
6114
6143
|
const handleInputClick = state => {
|
|
@@ -6661,14 +6690,12 @@ const getRenameSelectionRange = name => {
|
|
|
6661
6690
|
};
|
|
6662
6691
|
};
|
|
6663
6692
|
|
|
6664
|
-
const User = 1;
|
|
6665
|
-
const Script = 2;
|
|
6666
|
-
|
|
6667
6693
|
const renameDirent = async state => {
|
|
6668
6694
|
if (state.isReadonly) {
|
|
6669
6695
|
return state;
|
|
6670
6696
|
}
|
|
6671
6697
|
const {
|
|
6698
|
+
editingSessionId,
|
|
6672
6699
|
focusedIndex,
|
|
6673
6700
|
icons,
|
|
6674
6701
|
items,
|
|
@@ -6689,6 +6716,7 @@ const renameDirent = async state => {
|
|
|
6689
6716
|
editingIndex: focusedIndex,
|
|
6690
6717
|
editingSelectionEnd: end,
|
|
6691
6718
|
editingSelectionStart: start,
|
|
6719
|
+
editingSessionId: editingSessionId + 1,
|
|
6692
6720
|
editingType: Rename$1,
|
|
6693
6721
|
editingValue: item.name,
|
|
6694
6722
|
focus: Input$1,
|
|
@@ -6909,6 +6937,18 @@ const HandlePointerDown = 14;
|
|
|
6909
6937
|
const HandleWheel = 15;
|
|
6910
6938
|
const HandleDoubleClick = 16;
|
|
6911
6939
|
|
|
6940
|
+
const Focusable = 0;
|
|
6941
|
+
|
|
6942
|
+
const welcomeNode = {
|
|
6943
|
+
childCount: 2,
|
|
6944
|
+
className: Welcome,
|
|
6945
|
+
type: Div
|
|
6946
|
+
};
|
|
6947
|
+
const welcomeMessageNode$1 = {
|
|
6948
|
+
childCount: 1,
|
|
6949
|
+
className: WelcomeMessage,
|
|
6950
|
+
type: P
|
|
6951
|
+
};
|
|
6912
6952
|
const getClassName$1 = dropTargets => {
|
|
6913
6953
|
const extraClassName = dropTargets === dropTargetFull ? ExplorerDropTarget : Empty;
|
|
6914
6954
|
return mergeClassNames(Viewlet, Explorer$1, extraClassName);
|
|
@@ -6921,17 +6961,9 @@ const getExplorerWelcomeVirtualDom = (isWide, dropTargets) => {
|
|
|
6921
6961
|
onDragLeave: HandleDragLeave,
|
|
6922
6962
|
onDragOver: HandleDragOver,
|
|
6923
6963
|
onDrop: HandleDrop,
|
|
6924
|
-
tabIndex:
|
|
6964
|
+
tabIndex: Focusable,
|
|
6925
6965
|
type: Div
|
|
6926
|
-
}, {
|
|
6927
|
-
childCount: 2,
|
|
6928
|
-
className: Welcome,
|
|
6929
|
-
type: Div
|
|
6930
|
-
}, {
|
|
6931
|
-
childCount: 1,
|
|
6932
|
-
className: WelcomeMessage,
|
|
6933
|
-
type: P
|
|
6934
|
-
}, text(youHaveNotYetOpenedAFolder()), {
|
|
6966
|
+
}, welcomeNode, welcomeMessageNode$1, text(youHaveNotYetOpenedAFolder()), {
|
|
6935
6967
|
childCount: 1,
|
|
6936
6968
|
className: mergeClassNames(Button$2, ButtonPrimary, isWide ? ButtonWide : ButtonNarrow),
|
|
6937
6969
|
name: OpenFolder,
|
|
@@ -6974,7 +7006,7 @@ const getInputClassName = hasEditingError => {
|
|
|
6974
7006
|
return ExplorerInputBox;
|
|
6975
7007
|
};
|
|
6976
7008
|
|
|
6977
|
-
const getInputDom = (isEditing, hasEditingError) => {
|
|
7009
|
+
const getInputDom = (isEditing, hasEditingError, editingSessionId) => {
|
|
6978
7010
|
if (!isEditing) {
|
|
6979
7011
|
return [];
|
|
6980
7012
|
}
|
|
@@ -6986,6 +7018,7 @@ const getInputDom = (isEditing, hasEditingError) => {
|
|
|
6986
7018
|
autocorrect: 'off',
|
|
6987
7019
|
childCount: 0,
|
|
6988
7020
|
className: getInputClassName(hasEditingError),
|
|
7021
|
+
'data-editingSessionId': editingSessionId,
|
|
6989
7022
|
id: 'ExplorerInput',
|
|
6990
7023
|
name: ExplorerInput,
|
|
6991
7024
|
onBlur: HandleInputBlur,
|
|
@@ -7021,7 +7054,7 @@ const getTitle = path => {
|
|
|
7021
7054
|
}
|
|
7022
7055
|
return path;
|
|
7023
7056
|
};
|
|
7024
|
-
const getExplorerItemVirtualDom = item => {
|
|
7057
|
+
const getExplorerItemVirtualDom = (item, editingSessionId = 0) => {
|
|
7025
7058
|
const {
|
|
7026
7059
|
ariaExpanded,
|
|
7027
7060
|
chevron,
|
|
@@ -7037,15 +7070,16 @@ const getExplorerItemVirtualDom = item => {
|
|
|
7037
7070
|
name,
|
|
7038
7071
|
path,
|
|
7039
7072
|
posInSet,
|
|
7073
|
+
selected,
|
|
7040
7074
|
setSize
|
|
7041
7075
|
} = item;
|
|
7042
7076
|
const chevronDom = getChevronVirtualDom(chevron);
|
|
7043
7077
|
return [{
|
|
7044
|
-
ariaDescription: '',
|
|
7045
7078
|
ariaExpanded,
|
|
7046
7079
|
ariaLabel: name,
|
|
7047
7080
|
ariaLevel: depth,
|
|
7048
7081
|
ariaPosInSet: posInSet,
|
|
7082
|
+
ariaSelected: selected ? 'true' : undefined,
|
|
7049
7083
|
ariaSetSize: setSize,
|
|
7050
7084
|
childCount: 2 + chevronDom.length,
|
|
7051
7085
|
className,
|
|
@@ -7055,7 +7089,7 @@ const getExplorerItemVirtualDom = item => {
|
|
|
7055
7089
|
role: TreeItem,
|
|
7056
7090
|
title: getTitle(path),
|
|
7057
7091
|
type: Div
|
|
7058
|
-
}, ...chevronDom, getFileIconVirtualDom(icon), ...getInputDom(isEditing, hasEditingError), ...getLabelDom(isEditing, name, isCut || isIgnored)];
|
|
7092
|
+
}, ...chevronDom, getFileIconVirtualDom(icon), ...getInputDom(isEditing, hasEditingError, editingSessionId), ...getLabelDom(isEditing, name, isCut || isIgnored)];
|
|
7059
7093
|
};
|
|
7060
7094
|
|
|
7061
7095
|
const getActiveDescendant = focusedIndex => {
|
|
@@ -7070,7 +7104,7 @@ const getClassName = (focused, focusedIndex, dropTarget) => {
|
|
|
7070
7104
|
const className = mergeClassNames(ListItems, extraClass1, extraClass2);
|
|
7071
7105
|
return className;
|
|
7072
7106
|
};
|
|
7073
|
-
const getListItemsVirtualDom = (visibleItems, focusedIndex, focused, dropTargets) => {
|
|
7107
|
+
const getListItemsVirtualDom = (visibleItems, focusedIndex, focused, dropTargets, editingSessionId = 0) => {
|
|
7074
7108
|
const dom = [{
|
|
7075
7109
|
ariaActiveDescendant: getActiveDescendant(focusedIndex),
|
|
7076
7110
|
ariaLabel: filesExplorer(),
|
|
@@ -7089,13 +7123,18 @@ const getListItemsVirtualDom = (visibleItems, focusedIndex, focused, dropTargets
|
|
|
7089
7123
|
onPointerDown: HandlePointerDown,
|
|
7090
7124
|
onWheel: HandleWheel,
|
|
7091
7125
|
role: Tree,
|
|
7092
|
-
tabIndex:
|
|
7126
|
+
tabIndex: Focusable,
|
|
7093
7127
|
type: Div
|
|
7094
7128
|
// onKeyDown: DomEventListenerFunctions.HandleListKeyDown,
|
|
7095
|
-
}, ...visibleItems.flatMap(getExplorerItemVirtualDom)];
|
|
7129
|
+
}, ...visibleItems.flatMap(item => getExplorerItemVirtualDom(item, editingSessionId))];
|
|
7096
7130
|
return dom;
|
|
7097
7131
|
};
|
|
7098
7132
|
|
|
7133
|
+
const welcomeMessageNode = {
|
|
7134
|
+
childCount: 1,
|
|
7135
|
+
className: WelcomeMessage,
|
|
7136
|
+
type: P
|
|
7137
|
+
};
|
|
7099
7138
|
const getParentNode$1 = childCount => {
|
|
7100
7139
|
return {
|
|
7101
7140
|
childCount,
|
|
@@ -7110,11 +7149,7 @@ const getLoadErrorVirtualDom = (loadErrorMessage, isWide, showOpenAnotherFolderB
|
|
|
7110
7149
|
childCount,
|
|
7111
7150
|
className: Welcome,
|
|
7112
7151
|
type: Div
|
|
7113
|
-
},
|
|
7114
|
-
childCount: 1,
|
|
7115
|
-
className: WelcomeMessage,
|
|
7116
|
-
type: P
|
|
7117
|
-
}, text(loadErrorMessage)];
|
|
7152
|
+
}, welcomeMessageNode, text(loadErrorMessage)];
|
|
7118
7153
|
const buttonDom = showOpenAnotherFolderButton ? [{
|
|
7119
7154
|
childCount: 1,
|
|
7120
7155
|
className: mergeClassNames(Button$2, ButtonPrimary, isWide ? ButtonWide : ButtonNarrow),
|
|
@@ -7126,6 +7161,11 @@ const getLoadErrorVirtualDom = (loadErrorMessage, isWide, showOpenAnotherFolderB
|
|
|
7126
7161
|
return [parentNode, ...errorDom, ...buttonDom];
|
|
7127
7162
|
};
|
|
7128
7163
|
|
|
7164
|
+
const scrollBarThumbNode = {
|
|
7165
|
+
childCount: 0,
|
|
7166
|
+
className: ScrollBarThumb,
|
|
7167
|
+
type: Div
|
|
7168
|
+
};
|
|
7129
7169
|
const getScrollBarVirtualDom = scrollBarHeight => {
|
|
7130
7170
|
const shouldShowScrollbar = scrollBarHeight > 0;
|
|
7131
7171
|
if (!shouldShowScrollbar) {
|
|
@@ -7135,11 +7175,7 @@ const getScrollBarVirtualDom = scrollBarHeight => {
|
|
|
7135
7175
|
childCount: 1,
|
|
7136
7176
|
className: mergeClassNames(ScrollBar, ScrollBarSmall),
|
|
7137
7177
|
type: Div
|
|
7138
|
-
},
|
|
7139
|
-
childCount: 0,
|
|
7140
|
-
className: ScrollBarThumb,
|
|
7141
|
-
type: Div
|
|
7142
|
-
}];
|
|
7178
|
+
}, scrollBarThumbNode];
|
|
7143
7179
|
};
|
|
7144
7180
|
|
|
7145
7181
|
const getParentNode = childCount => {
|
|
@@ -7160,7 +7196,7 @@ const getChildCount = (scrollBarDomLength, errorDomLength) => {
|
|
|
7160
7196
|
}
|
|
7161
7197
|
return childCount;
|
|
7162
7198
|
};
|
|
7163
|
-
const getExplorerVirtualDom = (visibleItems, focusedIndex, root, isWide, focused, dropTargets, height, contentHeight, editingErrorMessage, loadErrorMessage, showOpenAnotherFolderButton) => {
|
|
7199
|
+
const getExplorerVirtualDom = (visibleItems, focusedIndex, root, isWide, focused, dropTargets, height, contentHeight, editingErrorMessage, loadErrorMessage, showOpenAnotherFolderButton, editingSessionId = 0) => {
|
|
7164
7200
|
if (!root) {
|
|
7165
7201
|
return getExplorerWelcomeVirtualDom(isWide, dropTargets);
|
|
7166
7202
|
}
|
|
@@ -7172,7 +7208,7 @@ const getExplorerVirtualDom = (visibleItems, focusedIndex, root, isWide, focused
|
|
|
7172
7208
|
const errorDom = getErrorMessageDom(editingErrorMessage);
|
|
7173
7209
|
const childCount = getChildCount(scrollBarDom.length, errorDom.length);
|
|
7174
7210
|
const parentNode = getParentNode(childCount);
|
|
7175
|
-
const dom = [parentNode, ...getListItemsVirtualDom(visibleItems, focusedIndex, focused, dropTargets), ...scrollBarDom, ...errorDom];
|
|
7211
|
+
const dom = [parentNode, ...getListItemsVirtualDom(visibleItems, focusedIndex, focused, dropTargets, editingSessionId), ...scrollBarDom, ...errorDom];
|
|
7176
7212
|
return dom;
|
|
7177
7213
|
};
|
|
7178
7214
|
|
|
@@ -7201,6 +7237,7 @@ const renderItems = (oldState, newState) => {
|
|
|
7201
7237
|
const {
|
|
7202
7238
|
dropTargets,
|
|
7203
7239
|
editingErrorMessage,
|
|
7240
|
+
editingSessionId,
|
|
7204
7241
|
focused,
|
|
7205
7242
|
focusedIndex,
|
|
7206
7243
|
height,
|
|
@@ -7218,7 +7255,7 @@ const renderItems = (oldState, newState) => {
|
|
|
7218
7255
|
if (initial) {
|
|
7219
7256
|
return [SetDom2, newState.uid, []];
|
|
7220
7257
|
}
|
|
7221
|
-
const dom = getExplorerVirtualDom(visibleDirents, focusedIndex, root, isWide, focused, dropTargets, height, contentHeight, editingErrorMessage, loadErrorMessage, showOpenAnotherFolderButton);
|
|
7258
|
+
const dom = getExplorerVirtualDom(visibleDirents, focusedIndex, root, isWide, focused, dropTargets, height, contentHeight, editingErrorMessage, loadErrorMessage, showOpenAnotherFolderButton, editingSessionId);
|
|
7222
7259
|
return [SetDom2, newState.uid, dom];
|
|
7223
7260
|
};
|
|
7224
7261
|
|
|
@@ -7331,7 +7368,7 @@ const getActions = (root, isReadonly) => {
|
|
|
7331
7368
|
const getIconVirtualDom = (icon, type = Div) => {
|
|
7332
7369
|
return {
|
|
7333
7370
|
childCount: 0,
|
|
7334
|
-
className:
|
|
7371
|
+
className: mergeClassNames('MaskIcon', `MaskIcon${icon}`),
|
|
7335
7372
|
role: None,
|
|
7336
7373
|
type
|
|
7337
7374
|
};
|
|
@@ -7383,7 +7420,7 @@ const renderActions = uid => {
|
|
|
7383
7420
|
const renderEventListeners = () => {
|
|
7384
7421
|
return [{
|
|
7385
7422
|
name: HandleInputBlur,
|
|
7386
|
-
params: ['handleInputBlur']
|
|
7423
|
+
params: ['handleInputBlur', 'event.target.dataset.editingSessionId']
|
|
7387
7424
|
}, {
|
|
7388
7425
|
name: HandleListFocus,
|
|
7389
7426
|
params: ['handleFocus', IsTrusted, EventTargetClassName]
|
|
@@ -7747,7 +7784,8 @@ const updateEditingValue = async (state, value, inputSource = User) => {
|
|
|
7747
7784
|
...state,
|
|
7748
7785
|
editingErrorMessage,
|
|
7749
7786
|
editingIcon,
|
|
7750
|
-
editingValue: value
|
|
7787
|
+
editingValue: value,
|
|
7788
|
+
inputSource
|
|
7751
7789
|
};
|
|
7752
7790
|
};
|
|
7753
7791
|
|