@lvce-editor/activity-bar-worker 7.18.1 → 7.19.1

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.
@@ -2164,6 +2164,69 @@ const getMenuEntryIds = () => {
2164
2164
  return [ActivityBar$3, ActivityBarAdditionalViews, Settings$1, ACCOUNT_MENU_ID, ACCOUNT_SUBMENU_ID];
2165
2165
  };
2166
2166
 
2167
+ const getActiveViewIds = items => {
2168
+ return items.filter(item => item.flags & Selected).map(item => item.id);
2169
+ };
2170
+
2171
+ const Account = 'Account';
2172
+ const DebugAlt2 = 'DebugAlt2';
2173
+ const Extensions$1 = 'Extensions';
2174
+ const Files = 'Files';
2175
+ const References$1 = 'References';
2176
+ const Search$1 = 'Search';
2177
+ const SettingsGear = 'SettingsGear';
2178
+ const SourceControl$1 = 'SourceControl';
2179
+ const Ellipsis = 'Ellipsis';
2180
+
2181
+ const getFilteredActivityBarItems = (items, height, itemHeight) => {
2182
+ const enabledItems = items.filter(item => item.flags & Enabled);
2183
+ const numberOfVisibleItems = getNumberOfVisibleItems({
2184
+ height,
2185
+ itemHeight
2186
+ });
2187
+ if (numberOfVisibleItems >= enabledItems.length) {
2188
+ return enabledItems;
2189
+ }
2190
+ const showMoreItem = {
2191
+ flags: Button,
2192
+ icon: Ellipsis,
2193
+ id: 'Additional Views',
2194
+ keyShortcuts: '',
2195
+ title: additionalViews()
2196
+ };
2197
+ return [...enabledItems.slice(0, numberOfVisibleItems - 2), showMoreItem, enabledItems.at(-1)];
2198
+ };
2199
+
2200
+ const setFlag = (item, flag, enabled) => {
2201
+ return {
2202
+ ...item,
2203
+ flags: enabled ? item.flags | flag : item.flags & ~flag
2204
+ };
2205
+ };
2206
+
2207
+ const markActiveViews = (items, activeViewIds) => {
2208
+ const activeViews = new Set(activeViewIds);
2209
+ return items.map(item => setFlag(item, Selected, activeViews.has(item.id)));
2210
+ };
2211
+
2212
+ const handleActiveViewStateChange = (state, id, visible) => {
2213
+ const {
2214
+ activityBarItems,
2215
+ height,
2216
+ itemHeight
2217
+ } = state;
2218
+ const activeViewIds = getActiveViewIds(activityBarItems);
2219
+ const withoutView = activeViewIds.filter(activeViewId => activeViewId !== id);
2220
+ const newActiveViewIds = visible ? [...withoutView, id] : withoutView;
2221
+ const newActivityBarItems = markActiveViews(activityBarItems, newActiveViewIds);
2222
+ const filteredItems = getFilteredActivityBarItems(newActivityBarItems, height, itemHeight);
2223
+ return {
2224
+ ...state,
2225
+ activityBarItems: newActivityBarItems,
2226
+ filteredItems
2227
+ };
2228
+ };
2229
+
2167
2230
  const getBadgeText = badgeCount => {
2168
2231
  if (badgeCount <= 999) {
2169
2232
  return badgeCount ? String(badgeCount) : '';
@@ -2306,35 +2369,6 @@ const findIndex = (activityBarItems, id) => {
2306
2369
  return -1;
2307
2370
  };
2308
2371
 
2309
- const Account = 'Account';
2310
- const DebugAlt2 = 'DebugAlt2';
2311
- const Extensions$1 = 'Extensions';
2312
- const Files = 'Files';
2313
- const References$1 = 'References';
2314
- const Search$1 = 'Search';
2315
- const SettingsGear = 'SettingsGear';
2316
- const SourceControl$1 = 'SourceControl';
2317
- const Ellipsis = 'Ellipsis';
2318
-
2319
- const getFilteredActivityBarItems = (items, height, itemHeight) => {
2320
- const enabledItems = items.filter(item => item.flags & Enabled);
2321
- const numberOfVisibleItems = getNumberOfVisibleItems({
2322
- height,
2323
- itemHeight
2324
- });
2325
- if (numberOfVisibleItems >= enabledItems.length) {
2326
- return enabledItems;
2327
- }
2328
- const showMoreItem = {
2329
- flags: Button,
2330
- icon: Ellipsis,
2331
- id: 'Additional Views',
2332
- keyShortcuts: '',
2333
- title: additionalViews()
2334
- };
2335
- return [...enabledItems.slice(0, numberOfVisibleItems - 2), showMoreItem, enabledItems.at(-1)];
2336
- };
2337
-
2338
2372
  const getSideBarChange = (sideBarVisible, currentViewletId, viewletId) => {
2339
2373
  if (sideBarVisible) {
2340
2374
  if (currentViewletId === viewletId) {
@@ -2354,20 +2388,6 @@ const getSideBarChange = (sideBarVisible, currentViewletId, viewletId) => {
2354
2388
  };
2355
2389
  };
2356
2390
 
2357
- const setFlag = (item, flag, enabled) => {
2358
- return {
2359
- ...item,
2360
- flags: enabled ? item.flags | flag : item.flags & ~flag
2361
- };
2362
- };
2363
-
2364
- const markSelected = (items, selectedIndex) => {
2365
- return items.map((item, index) => {
2366
- const isSelected = index === selectedIndex;
2367
- return setFlag(item, Selected, isSelected);
2368
- });
2369
- };
2370
-
2371
2391
  const toggle = async id => {
2372
2392
  await invoke('Layout.toggleSideBarView', id);
2373
2393
  };
@@ -2380,10 +2400,24 @@ const handleClickOther = async (state, viewletId) => {
2380
2400
  itemHeight,
2381
2401
  sideBarVisible
2382
2402
  } = state;
2403
+ const activeViewIds = getActiveViewIds(activityBarItems);
2404
+ const selectedItem = activityBarItems.find(item => item.id === viewletId);
2383
2405
  const sideBarChange = getSideBarChange(sideBarVisible, currentViewletId, viewletId);
2384
2406
  await toggle(viewletId);
2407
+ if (selectedItem?.preferredLocation === 'preview') {
2408
+ const isActive = activeViewIds.includes(viewletId);
2409
+ const newActiveViewIds = isActive ? activeViewIds.filter(id => id !== viewletId) : [...activeViewIds, viewletId];
2410
+ const newActivityBarItems = markActiveViews(activityBarItems, newActiveViewIds);
2411
+ const filteredItems = getFilteredActivityBarItems(newActivityBarItems, height, itemHeight);
2412
+ return {
2413
+ ...state,
2414
+ activityBarItems: newActivityBarItems,
2415
+ filteredItems
2416
+ };
2417
+ }
2418
+ const withoutCurrentSideBarView = activeViewIds.filter(id => id !== currentViewletId);
2385
2419
  if (sideBarChange.type === 'hide') {
2386
- const newActivityBarItems = markSelected(activityBarItems, -1);
2420
+ const newActivityBarItems = markActiveViews(activityBarItems, withoutCurrentSideBarView);
2387
2421
  const filteredItems = getFilteredActivityBarItems(newActivityBarItems, height, itemHeight);
2388
2422
  return {
2389
2423
  ...state,
@@ -2394,7 +2428,8 @@ const handleClickOther = async (state, viewletId) => {
2394
2428
  };
2395
2429
  }
2396
2430
  const selectedIndex = findIndex(activityBarItems, viewletId);
2397
- const newActivityBarItems = markSelected(activityBarItems, selectedIndex);
2431
+ const newActiveViewIds = [...withoutCurrentSideBarView, viewletId];
2432
+ const newActivityBarItems = markActiveViews(activityBarItems, newActiveViewIds);
2398
2433
  const filteredItems = getFilteredActivityBarItems(newActivityBarItems, height, itemHeight);
2399
2434
  return {
2400
2435
  ...state,
@@ -2543,6 +2578,9 @@ const toActivityBarItem = view => {
2543
2578
  icon,
2544
2579
  id: view.id,
2545
2580
  keyShortcuts: '',
2581
+ ...(view.preferredLocation === 'preview' && {
2582
+ preferredLocation: 'preview'
2583
+ }),
2546
2584
  title: view.title || view.id
2547
2585
  };
2548
2586
  if (customIconClass && customIconUrl) {
@@ -2633,16 +2671,29 @@ const getContributedViews = async platform => {
2633
2671
  }
2634
2672
  };
2635
2673
 
2674
+ const resolveActiveViewIds = (state, newItems) => {
2675
+ const {
2676
+ activityBarItems,
2677
+ selectedIndex
2678
+ } = state;
2679
+ const activeViewIds = getActiveViewIds(activityBarItems);
2680
+ if (activeViewIds.length > 0 || selectedIndex === -1) {
2681
+ return activeViewIds;
2682
+ }
2683
+ const selectedItem = activityBarItems[selectedIndex] || newItems[selectedIndex];
2684
+ return selectedItem ? [selectedItem.id] : [];
2685
+ };
2686
+
2636
2687
  const handleExtensionsChanged = async state => {
2637
2688
  const {
2638
2689
  height,
2639
2690
  itemHeight,
2640
- platform,
2641
- selectedIndex
2691
+ platform
2642
2692
  } = state;
2643
2693
  const contributedViews = await getContributedViews(platform);
2644
2694
  const items = getActivityBarItems(state, contributedViews);
2645
- const itemsWithSelected = markSelected(items, selectedIndex);
2695
+ const activeViewIds = resolveActiveViewIds(state, items);
2696
+ const itemsWithSelected = markActiveViews(items, activeViewIds);
2646
2697
  const activityBarItems = await updateItemsWithBadgeCount(itemsWithSelected);
2647
2698
  const filteredItems = getFilteredActivityBarItems(activityBarItems, height, itemHeight);
2648
2699
  return {
@@ -2710,8 +2761,7 @@ const handleSettingsChanged = async state => {
2710
2761
  accountEnabled: currentAccountEnabled,
2711
2762
  height,
2712
2763
  itemHeight,
2713
- platform,
2714
- selectedIndex
2764
+ platform
2715
2765
  } = state;
2716
2766
  const [accountEnabled, contributedViews, sidebarLocation] = await Promise.all([getAccountEnabled(currentAccountEnabled), getContributedViews(platform), getSideBarPosition()]);
2717
2767
  const newState = {
@@ -2719,7 +2769,8 @@ const handleSettingsChanged = async state => {
2719
2769
  accountEnabled
2720
2770
  };
2721
2771
  const items = getActivityBarItems(newState, contributedViews);
2722
- const itemsWithSelected = markSelected(items, selectedIndex);
2772
+ const activeViewIds = resolveActiveViewIds(state, items);
2773
+ const itemsWithSelected = markActiveViews(items, activeViewIds);
2723
2774
  const activityBarItems = await updateItemsWithBadgeCount(itemsWithSelected);
2724
2775
  const filteredItems = getFilteredActivityBarItems(activityBarItems, height, itemHeight);
2725
2776
  return {
@@ -2739,9 +2790,8 @@ const getSideBarVisible = async () => {
2739
2790
  }
2740
2791
  };
2741
2792
 
2742
- const clearItem = item => {
2743
- const withoutSelected = setFlag(item, Selected, false);
2744
- return setFlag(withoutSelected, Focused, false);
2793
+ const clearFocus = item => {
2794
+ return setFlag(item, Focused, false);
2745
2795
  };
2746
2796
  const enableReferencesItem = (items, id) => {
2747
2797
  if (id !== References) {
@@ -2757,10 +2807,12 @@ const handleSideBarStateChange = async (state, id, sideBarVisibleOverride) => {
2757
2807
  height,
2758
2808
  itemHeight
2759
2809
  } = state;
2810
+ const activeViewIds = getActiveViewIds(activityBarItems);
2760
2811
  const resolvedId = id === undefined ? currentViewletId : id;
2761
2812
  const sideBarVisible = typeof sideBarVisibleOverride === 'boolean' ? sideBarVisibleOverride : await getSideBarVisible();
2813
+ const withoutCurrentSideBarView = activeViewIds.filter(activeViewId => activeViewId !== currentViewletId && activeViewId !== resolvedId);
2762
2814
  if (!sideBarVisible) {
2763
- const itemsCleared = activityBarItems.map(clearItem);
2815
+ const itemsCleared = markActiveViews(activityBarItems.map(clearFocus), withoutCurrentSideBarView);
2764
2816
  const filteredItems = getFilteredActivityBarItems(itemsCleared, height, itemHeight);
2765
2817
  return {
2766
2818
  ...state,
@@ -2773,7 +2825,8 @@ const handleSideBarStateChange = async (state, id, sideBarVisibleOverride) => {
2773
2825
  }
2774
2826
  const enabledItems = enableReferencesItem(activityBarItems, resolvedId);
2775
2827
  const selectedIndex = findIndex(enabledItems, resolvedId);
2776
- const newActivityBarItems = markSelected(enabledItems, selectedIndex);
2828
+ const newActiveViewIds = selectedIndex === -1 ? withoutCurrentSideBarView : [...withoutCurrentSideBarView, resolvedId];
2829
+ const newActivityBarItems = markActiveViews(enabledItems, newActiveViewIds);
2777
2830
  const filteredItems = getFilteredActivityBarItems(newActivityBarItems, height, itemHeight);
2778
2831
  return {
2779
2832
  ...state,
@@ -2865,13 +2918,14 @@ const loadContent = async state => {
2865
2918
  const items = getActivityBarItems(newState, contributedViews);
2866
2919
  const index = items.findIndex(item => item.id === activeView);
2867
2920
  const selectedIndex = sideBarVisible ? index : -1;
2868
- const itemsWithSelected = markSelected(items, selectedIndex);
2921
+ const activeViewIds = sideBarVisible && index !== -1 ? [activeView] : [];
2922
+ const itemsWithSelected = markActiveViews(items, activeViewIds);
2869
2923
  const activityBarItems = await updateItemsWithBadgeCount(itemsWithSelected);
2870
2924
  const filteredItems = getFilteredActivityBarItems(activityBarItems, height, itemHeight);
2871
2925
  return {
2872
2926
  ...newState,
2873
2927
  activityBarItems,
2874
- currentViewletId: Explorer,
2928
+ currentViewletId: activeView || Explorer,
2875
2929
  filteredItems,
2876
2930
  initial: false,
2877
2931
  selectedIndex,
@@ -3627,15 +3681,15 @@ const selectCurrent = async state => {
3627
3681
  const setAccountEnabled = (state, enabled) => {
3628
3682
  const {
3629
3683
  height,
3630
- itemHeight,
3631
- selectedIndex
3684
+ itemHeight
3632
3685
  } = state;
3633
3686
  const newState = {
3634
3687
  ...state,
3635
3688
  accountEnabled: enabled
3636
3689
  };
3637
3690
  const newActivityBarItems = getActivityBarItems(newState);
3638
- const markedItems = markSelected(newActivityBarItems, selectedIndex);
3691
+ const activeViewIds = resolveActiveViewIds(state, newActivityBarItems);
3692
+ const markedItems = markActiveViews(newActivityBarItems, activeViewIds);
3639
3693
  const filteredItems = getFilteredActivityBarItems(markedItems, height, itemHeight);
3640
3694
  return {
3641
3695
  ...newState,
@@ -3726,6 +3780,7 @@ const commandMap = {
3726
3780
  'ActivityBar.getKeyBindings': getKeyBindings,
3727
3781
  'ActivityBar.getMenuEntries': wrapGetter(getMenuEntries),
3728
3782
  'ActivityBar.getMenuEntryIds': getMenuEntryIds,
3783
+ 'ActivityBar.handleActiveViewStateChange': wrapCommand(handleActiveViewStateChange),
3729
3784
  'ActivityBar.handleBadgeCountChange': wrapCommand(handleBadgeCountChange),
3730
3785
  'ActivityBar.handleBlur': wrapCommand(handleBlur),
3731
3786
  'ActivityBar.handleClick': wrapCommand(handleClick),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/activity-bar-worker",
3
- "version": "7.18.1",
3
+ "version": "7.19.1",
4
4
  "description": "Explorer Worker",
5
5
  "repository": {
6
6
  "type": "git",