@lvce-editor/extension-detail-view 3.40.0 → 3.42.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.
@@ -729,7 +729,19 @@ const create$7 = rpcId => {
729
729
  };
730
730
  };
731
731
  const RendererWorker$1 = 1;
732
+ const FileSystemWorker$1 = 209;
732
733
  const MarkdownWorker$1 = 300;
734
+ const {
735
+ invoke: invoke$7,
736
+ set: set$7} = create$7(FileSystemWorker$1);
737
+ const readFile$1$1 = async uri => {
738
+ return invoke$7('FileSystem.readFile', uri);
739
+ };
740
+ const FileSystemWorker = {
741
+ __proto__: null,
742
+ invoke: invoke$7,
743
+ readFile: readFile$1$1,
744
+ set: set$7};
733
745
  const {
734
746
  invoke: invoke$5,
735
747
  set: set$5} = create$7(MarkdownWorker$1);
@@ -760,16 +772,14 @@ const sendMessagePortToMarkdownWorker$2 = async (port, rpcId) => {
760
772
  // @ts-ignore
761
773
  await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToMarkdownWorker', port, command, rpcId);
762
774
  };
763
- const readFile$2 = async uri => {
764
- return invoke$3('FileSystem.readFile', uri);
775
+ const sendMessagePortToFileSystemWorker$2 = async (port, rpcId) => {
776
+ const command = 'FileSystem.handleMessagePort';
777
+ // @ts-ignore
778
+ await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
765
779
  };
766
780
  const getAllExtensions$2 = async () => {
767
781
  return invoke$3('ExtensionManagement.getAllExtensions');
768
782
  };
769
- const getFolderSize$2 = async uri => {
770
- // @ts-ignore
771
- return await invoke$3('FileSystem.getFolderSize', uri);
772
- };
773
783
  const getExtension$3 = async id => {
774
784
  // @ts-ignore
775
785
  return invoke$3('ExtensionManagement.getExtension', id);
@@ -785,16 +795,15 @@ const RendererWorker = {
785
795
  __proto__: null,
786
796
  getAllExtensions: getAllExtensions$2,
787
797
  getExtension: getExtension$3,
788
- getFolderSize: getFolderSize$2,
789
798
  openNativeFolder: openNativeFolder$1,
790
- readFile: readFile$2,
799
+ sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$2,
791
800
  sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$2,
792
801
  set: set$3$1,
793
802
  setColorTheme: setColorTheme$2,
794
803
  uninstallExtension: uninstallExtension$1};
795
804
 
796
805
  const {
797
- set: set$3,
806
+ set: set$4,
798
807
  getVirtualDom,
799
808
  render
800
809
  } = MarkdownWorker;
@@ -1531,7 +1540,7 @@ const create$4 = (method, params) => {
1531
1540
  };
1532
1541
  };
1533
1542
  const callbacks = Object.create(null);
1534
- const set$2 = (id, fn) => {
1543
+ const set$3 = (id, fn) => {
1535
1544
  callbacks[id] = fn;
1536
1545
  };
1537
1546
  const get$1 = id => {
@@ -1550,7 +1559,7 @@ const registerPromise = () => {
1550
1559
  resolve,
1551
1560
  promise
1552
1561
  } = Promise.withResolvers();
1553
- set$2(id, resolve);
1562
+ set$3(id, resolve);
1554
1563
  return {
1555
1564
  id,
1556
1565
  promise
@@ -1894,7 +1903,7 @@ const send = (transport, method, ...params) => {
1894
1903
  const message = create$4(method, params);
1895
1904
  transport.send(message);
1896
1905
  };
1897
- const invoke = (ipc, method, ...params) => {
1906
+ const invoke$1 = (ipc, method, ...params) => {
1898
1907
  return invokeHelper(ipc, method, params, false);
1899
1908
  };
1900
1909
  const invokeAndTransfer = (ipc, method, ...params) => {
@@ -1927,7 +1936,7 @@ const createRpc = ipc => {
1927
1936
  send(ipc, method, ...params);
1928
1937
  },
1929
1938
  invoke(method, ...params) {
1930
- return invoke(ipc, method, ...params);
1939
+ return invoke$1(ipc, method, ...params);
1931
1940
  },
1932
1941
  invokeAndTransfer(method, ...params) {
1933
1942
  return invokeAndTransfer(ipc, method, ...params);
@@ -2085,7 +2094,7 @@ const copyImage = state => {
2085
2094
 
2086
2095
  const {
2087
2096
  get,
2088
- set: set$1,
2097
+ set: set$2,
2089
2098
  dispose: dispose$1,
2090
2099
  wrapCommand
2091
2100
  } = create$1();
@@ -2136,9 +2145,10 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
2136
2145
  themesMarkdownDom: [],
2137
2146
  uri,
2138
2147
  webViews: [],
2139
- width
2148
+ width,
2149
+ readmeUrl: ''
2140
2150
  };
2141
- set$1(uid, state, state);
2151
+ set$2(uid, state, state);
2142
2152
  };
2143
2153
 
2144
2154
  const isEqual$2 = (oldState, newState) => {
@@ -2153,7 +2163,7 @@ const User = 1;
2153
2163
  const Script = 2;
2154
2164
 
2155
2165
  const isEqual = (oldState, newState) => {
2156
- return newState.scrollSource === Script || oldState.readmeScrollTop === newState.readmeScrollTop;
2166
+ return newState.scrollSource === User || oldState.readmeScrollTop === newState.readmeScrollTop;
2157
2167
  };
2158
2168
 
2159
2169
  const RenderFocus = 2;
@@ -2182,7 +2192,7 @@ const dispose = uid => {
2182
2192
  dispose$1(uid);
2183
2193
  };
2184
2194
 
2185
- const commandIds = ['copyImage', 'getMenuEntries', 'handleClickCategory', 'handleClickDisable', 'handleClickScrollToTop', 'handleClickSettings', 'handleClickSetColorTheme', 'handleClickSize', 'handleClickUninstall', 'handleFeaturesClick', 'handleIconError', 'handleTabsClick', 'handleWheel', 'renderEventListeners', 'resize', 'saveState', 'selectTab', 'terminate'];
2195
+ const commandIds = ['copyImage', 'getMenuEntries', 'handleClickCategory', 'handleClickDisable', 'handleClickScrollToTop', 'handleClickSetColorTheme', 'handleClickSettings', 'handleClickSize', 'handleClickUninstall', 'handleFeaturesClick', 'handleIconError', 'handleScroll', 'handleTabsClick', 'handleWheel', 'renderEventListeners', 'resize', 'saveState', 'selectTab', 'terminate'];
2186
2196
 
2187
2197
  const getCommandIds = () => {
2188
2198
  return commandIds;
@@ -2291,13 +2301,12 @@ const handleClickScrollToTop = state => {
2291
2301
  const {
2292
2302
  getAllExtensions: getAllExtensions$1,
2293
2303
  getExtension: getExtension$2,
2294
- getFolderSize: getFolderSize$1,
2295
2304
  openNativeFolder,
2296
- readFile: readFile$1,
2297
- set,
2305
+ set: set$1,
2298
2306
  setColorTheme: setColorTheme$1,
2299
2307
  uninstallExtension,
2300
- sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$1
2308
+ sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$1,
2309
+ sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$1
2301
2310
  } = RendererWorker;
2302
2311
 
2303
2312
  const setColorTheme = id => {
@@ -2367,15 +2376,21 @@ const handleIconError = state => {
2367
2376
  };
2368
2377
  };
2369
2378
 
2370
- const handleScroll = (state, scrollTop) => {
2379
+ const handleScroll = (state, scrollTop, scrollSource = Script) => {
2371
2380
  const newScrollTop = Math.max(0, scrollTop);
2372
2381
  return {
2373
2382
  ...state,
2374
2383
  readmeScrollTop: newScrollTop,
2375
- scrollSource: User
2384
+ scrollSource
2376
2385
  };
2377
2386
  };
2378
2387
 
2388
+ const {
2389
+ set,
2390
+ readFile: readFile$1,
2391
+ invoke
2392
+ } = FileSystemWorker;
2393
+
2379
2394
  const readFile = async uri => {
2380
2395
  return readFile$1(uri);
2381
2396
  };
@@ -2409,17 +2424,25 @@ const loadChangelogContent = async path => {
2409
2424
  const selectTabChangelog = async state => {
2410
2425
  const {
2411
2426
  extension,
2412
- baseUrl
2427
+ baseUrl,
2428
+ tabs
2413
2429
  } = state;
2414
2430
  const changelogContent = await loadChangelogContent(extension.path); // TODO use uri
2415
2431
  const changelogMarkdownHtml = await renderMarkdown(changelogContent, {
2416
2432
  baseUrl
2417
2433
  });
2418
2434
  const changelogDom = await getMarkdownVirtualDom(changelogMarkdownHtml);
2435
+ const newTabs = tabs.map(tab => {
2436
+ return {
2437
+ ...tab,
2438
+ selected: tab.name === Changelog
2439
+ };
2440
+ });
2419
2441
  return {
2420
2442
  ...state,
2421
2443
  selectedTab: Changelog,
2422
- changelogVirtualDom: changelogDom
2444
+ changelogVirtualDom: changelogDom,
2445
+ tabs: newTabs
2423
2446
  };
2424
2447
  };
2425
2448
 
@@ -2427,9 +2450,8 @@ const selectTabDefault = async state => {
2427
2450
  return state;
2428
2451
  };
2429
2452
 
2430
- const loadReadmeContent = async path => {
2453
+ const loadReadmeContent = async readmeUrl => {
2431
2454
  try {
2432
- const readmeUrl = join(path, 'README.md');
2433
2455
  const readmeContent = await readFile(readmeUrl);
2434
2456
  return readmeContent;
2435
2457
  } catch (error) {
@@ -2445,18 +2467,26 @@ const loadReadmeContent = async path => {
2445
2467
 
2446
2468
  const selectTabDetails = async state => {
2447
2469
  const {
2448
- extension,
2449
- baseUrl
2470
+ baseUrl,
2471
+ readmeUrl,
2472
+ tabs
2450
2473
  } = state;
2451
- const readmeContent = await loadReadmeContent(extension.path);
2474
+ const readmeContent = await loadReadmeContent(readmeUrl);
2452
2475
  const readmeHtml = await renderMarkdown(readmeContent, {
2453
2476
  baseUrl
2454
2477
  });
2455
2478
  const detailsDom = await getMarkdownVirtualDom(readmeHtml);
2479
+ const newTabs = tabs.map(tab => {
2480
+ return {
2481
+ ...tab,
2482
+ selected: tab.name === Details
2483
+ };
2484
+ });
2456
2485
  return {
2457
2486
  ...state,
2458
2487
  selectedTab: Details,
2459
- detailsVirtualDom: detailsDom
2488
+ detailsVirtualDom: detailsDom,
2489
+ tabs: newTabs
2460
2490
  };
2461
2491
  };
2462
2492
 
@@ -2465,7 +2495,8 @@ const selectTabFeatures = async state => {
2465
2495
  extension,
2466
2496
  baseUrl,
2467
2497
  selectedFeature,
2468
- features
2498
+ features,
2499
+ tabs
2469
2500
  } = state;
2470
2501
  if (features.length === 0) {
2471
2502
  return state;
@@ -2473,10 +2504,17 @@ const selectTabFeatures = async state => {
2473
2504
  const actualSelectedFeature = selectedFeature || Theme;
2474
2505
  const fn = getFeatureDetailsHandler(actualSelectedFeature);
2475
2506
  const partialNewState = await fn(extension, baseUrl);
2507
+ const newTabs = tabs.map(tab => {
2508
+ return {
2509
+ ...tab,
2510
+ selected: tab.name === Features
2511
+ };
2512
+ });
2476
2513
  return {
2477
2514
  ...state,
2478
2515
  selectedTab: Features,
2479
2516
  selectedFeature: features[0].id || '',
2517
+ tabs: newTabs,
2480
2518
  ...partialNewState
2481
2519
  };
2482
2520
  };
@@ -2503,6 +2541,27 @@ const handleTabsClick = (state, name) => {
2503
2541
  return selectTab(state, name);
2504
2542
  };
2505
2543
 
2544
+ const sendMessagePortToFileSystemWorker = async port => {
2545
+ await sendMessagePortToFileSystemWorker$1(port, 0);
2546
+ };
2547
+
2548
+ const createFileSystemWorkerRpc = async () => {
2549
+ try {
2550
+ const rpc = await TransferMessagePortRpcParent.create({
2551
+ commandMap: {},
2552
+ send: sendMessagePortToFileSystemWorker
2553
+ });
2554
+ return rpc;
2555
+ } catch (error) {
2556
+ throw new VError(error, `Failed to create file system worker rpc`);
2557
+ }
2558
+ };
2559
+
2560
+ const initializeFileSystemWorker = async () => {
2561
+ const rpc = await createFileSystemWorkerRpc();
2562
+ set(rpc);
2563
+ };
2564
+
2506
2565
  const sendMessagePortToMarkdownWorker = async port => {
2507
2566
  await sendMessagePortToMarkdownWorker$1(port, 0);
2508
2567
  };
@@ -2521,12 +2580,16 @@ const createMarkdownWorkerRpc = async () => {
2521
2580
 
2522
2581
  const initializeMarkdownWorker = async () => {
2523
2582
  const rpc = await createMarkdownWorkerRpc();
2524
- set$3(rpc);
2583
+ set$4(rpc);
2525
2584
  };
2526
2585
 
2527
2586
  const initialize = async () => {
2528
- await initializeMarkdownWorker();
2529
- // TODO create connection to file system worker
2587
+ await Promise.all([initializeMarkdownWorker(), initializeFileSystemWorker()]);
2588
+ };
2589
+
2590
+ const existsFile = async uri => {
2591
+ // TODO ask file system worker
2592
+ return true;
2530
2593
  };
2531
2594
 
2532
2595
  const Web = 1;
@@ -2584,6 +2647,150 @@ const getBaseUrl = (extensionPath, platform) => {
2584
2647
  }
2585
2648
  };
2586
2649
 
2650
+ const getExtensionDetailButtons = (hasColorTheme, isBuiltin) => {
2651
+ const allActions = [{
2652
+ label: setColorTheme$3(),
2653
+ onClick: HandleClickSetColorTheme,
2654
+ enabled: hasColorTheme,
2655
+ name: SetColorTheme
2656
+ }, {
2657
+ label: disable(),
2658
+ onClick: HandleClickDisable,
2659
+ enabled: true,
2660
+ name: Disable
2661
+ }, {
2662
+ label: uninstall(),
2663
+ onClick: HandleClickUninstall,
2664
+ enabled: !isBuiltin,
2665
+ name: Uninstall
2666
+ }];
2667
+ return allActions;
2668
+ };
2669
+
2670
+ const getExtensionIdFromUri = uri => {
2671
+ const id = uri.slice('extension-detail://'.length);
2672
+ return id;
2673
+ };
2674
+
2675
+ const getTabs = (selectedTab, hasReadme, hasFeatures, hasChangelog) => {
2676
+ const tabs = [{
2677
+ label: details(),
2678
+ name: Details,
2679
+ selected: selectedTab === Details,
2680
+ enabled: hasReadme
2681
+ }, {
2682
+ label: features$1(),
2683
+ name: Features,
2684
+ selected: selectedTab === Features,
2685
+ enabled: hasFeatures
2686
+ }, {
2687
+ label: changelog(),
2688
+ name: Changelog,
2689
+ selected: selectedTab === Changelog,
2690
+ enabled: hasChangelog
2691
+ }];
2692
+ return tabs;
2693
+ };
2694
+
2695
+ const Small = 1;
2696
+ const Normal = 2;
2697
+ const Large = 3;
2698
+
2699
+ const getViewletSize = width => {
2700
+ if (width < 180) {
2701
+ return Small;
2702
+ }
2703
+ if (width < 768) {
2704
+ return Normal;
2705
+ }
2706
+ return Large;
2707
+ };
2708
+
2709
+ const isLanguageBasicsExtension = extension => {
2710
+ return extension.name && extension.name.startsWith('Language Basics');
2711
+ };
2712
+
2713
+ const isThemeExtension = extension => {
2714
+ return extension.name && extension.name.endsWith(' Theme');
2715
+ };
2716
+
2717
+ const getIcon = (extension, platform, assetDir) => {
2718
+ if (!extension) {
2719
+ return extensionDefaultIcon(assetDir);
2720
+ }
2721
+ if (!extension.path || !extension.icon) {
2722
+ if (isLanguageBasicsExtension(extension)) {
2723
+ return extensionLanguageBasics(assetDir);
2724
+ }
2725
+ if (isThemeExtension(extension)) {
2726
+ return extensionTheme(assetDir);
2727
+ }
2728
+ return extensionDefaultIcon(assetDir);
2729
+ }
2730
+ if (platform === Remote || platform === Electron) {
2731
+ if (extension.builtin) {
2732
+ return `${assetDir}/extensions/${extension.id}/${extension.icon}`;
2733
+ }
2734
+ return `/remote/${extension.path}/${extension.icon}`; // TODO support windows paths
2735
+ }
2736
+ return '';
2737
+ };
2738
+
2739
+ const getDescription = extension => {
2740
+ if (!extension || !extension.description) {
2741
+ return 'n/a';
2742
+ }
2743
+ return extension.description;
2744
+ };
2745
+
2746
+ const getName = extension => {
2747
+ if (extension && extension.name) {
2748
+ return extension.name;
2749
+ }
2750
+ if (extension && extension.id) {
2751
+ return extension.id;
2752
+ }
2753
+ return 'n/a';
2754
+ };
2755
+
2756
+ const getBadge = (builtin, badgeEnabled) => {
2757
+ if (builtin && badgeEnabled) {
2758
+ return 'builtin';
2759
+ }
2760
+ return '';
2761
+ };
2762
+
2763
+ const hasColorThemes = extension => {
2764
+ return Boolean(extension && extension.colorThemes && extension.colorThemes.length > 0);
2765
+ };
2766
+
2767
+ const loadHeaderContent = (state, platform, extension) => {
2768
+ const {
2769
+ assetDir,
2770
+ builtinExtensionsBadgeEnabled
2771
+ } = state;
2772
+ const iconSrc = getIcon(extension, platform, assetDir);
2773
+ const description = getDescription(extension);
2774
+ const name = getName(extension);
2775
+ const extensionUri = extension.uri || extension.path;
2776
+ const extensionId = extension?.id || 'n/a';
2777
+ const extensionVersion = extension?.version || 'n/a';
2778
+ const hasColorTheme = hasColorThemes(extension);
2779
+ const isBuiltin = extension?.builtin;
2780
+ const badge = getBadge(isBuiltin, builtinExtensionsBadgeEnabled);
2781
+ return {
2782
+ badge,
2783
+ description,
2784
+ extension,
2785
+ extensionId,
2786
+ extensionUri,
2787
+ extensionVersion,
2788
+ hasColorTheme,
2789
+ iconSrc,
2790
+ name
2791
+ };
2792
+ };
2793
+
2587
2794
  const getCategories = () => {
2588
2795
  // TODO
2589
2796
  return [{
@@ -2685,37 +2892,22 @@ const getDisplaySize = size => {
2685
2892
  });
2686
2893
  };
2687
2894
 
2688
- const getExtensionDetailButtons = (hasColorTheme, isBuiltin) => {
2689
- const allActions = [{
2690
- label: setColorTheme$3(),
2691
- onClick: HandleClickSetColorTheme,
2692
- enabled: hasColorTheme,
2693
- name: SetColorTheme
2694
- }, {
2695
- label: disable(),
2696
- onClick: HandleClickDisable,
2697
- enabled: true,
2698
- name: Disable
2699
- }, {
2700
- label: uninstall(),
2701
- onClick: HandleClickUninstall,
2702
- enabled: !isBuiltin,
2703
- name: Uninstall
2704
- }];
2705
- return allActions;
2706
- };
2707
-
2708
- const getExtensionIdFromUri = uri => {
2709
- const id = uri.slice('extension-detail://'.length);
2710
- return id;
2895
+ const supportsFileSize = uri => {
2896
+ if (uri.startsWith('http:') || uri.startsWith('https://')) {
2897
+ return false;
2898
+ }
2899
+ return true;
2711
2900
  };
2712
-
2713
2901
  const getFolderSize = async uri => {
2714
2902
  if (!uri) {
2715
2903
  throw new VError(`uri is required`);
2716
2904
  }
2905
+ if (!supportsFileSize(uri)) {
2906
+ return 0;
2907
+ }
2717
2908
  try {
2718
- return await getFolderSize$1(uri);
2909
+ // @ts-ignore
2910
+ return await invoke('FileSystem.getFolderSize', uri);
2719
2911
  } catch {
2720
2912
  return 0;
2721
2913
  }
@@ -2778,122 +2970,20 @@ const getResources = isBuiltin => {
2778
2970
  }];
2779
2971
  };
2780
2972
 
2781
- const getTabs = (selectedTab, hasReadme, hasFeatures, hasChangelog) => {
2782
- const tabs = [{
2783
- label: details(),
2784
- name: Details,
2785
- selected: selectedTab === Details,
2786
- enabled: hasReadme
2787
- }, {
2788
- label: features$1(),
2789
- name: Features,
2790
- selected: selectedTab === Features,
2791
- enabled: hasFeatures
2792
- }, {
2793
- label: changelog(),
2794
- name: Changelog,
2795
- selected: selectedTab === Changelog,
2796
- enabled: hasChangelog
2797
- }];
2798
- return tabs;
2799
- };
2800
-
2801
- const Small = 1;
2802
- const Normal = 2;
2803
- const Large = 3;
2804
-
2805
- const getViewletSize = width => {
2806
- if (width < 180) {
2807
- return Small;
2808
- }
2809
- if (width < 768) {
2810
- return Normal;
2811
- }
2812
- return Large;
2813
- };
2814
-
2815
- const isLanguageBasicsExtension = extension => {
2816
- return extension.name && extension.name.startsWith('Language Basics');
2817
- };
2818
-
2819
- const isThemeExtension = extension => {
2820
- return extension.name && extension.name.endsWith(' Theme');
2821
- };
2822
-
2823
- const getIcon = (extension, platform, assetDir) => {
2824
- if (!extension) {
2825
- return extensionDefaultIcon(assetDir);
2826
- }
2827
- if (!extension.path || !extension.icon) {
2828
- if (isLanguageBasicsExtension(extension)) {
2829
- return extensionLanguageBasics(assetDir);
2830
- }
2831
- if (isThemeExtension(extension)) {
2832
- return extensionTheme(assetDir);
2833
- }
2834
- return extensionDefaultIcon(assetDir);
2835
- }
2836
- if (platform === Remote || platform === Electron) {
2837
- if (extension.builtin) {
2838
- return `${assetDir}/extensions/${extension.id}/${extension.icon}`;
2839
- }
2840
- return `/remote/${extension.path}/${extension.icon}`; // TODO support windows paths
2841
- }
2842
- return '';
2843
- };
2844
-
2845
- const getDescription = extension => {
2846
- if (!extension || !extension.description) {
2847
- return 'n/a';
2848
- }
2849
- return extension.description;
2850
- };
2851
-
2852
- const getName = extension => {
2853
- if (extension && extension.name) {
2854
- return extension.name;
2855
- }
2856
- if (extension && extension.id) {
2857
- return extension.id;
2858
- }
2859
- return 'n/a';
2860
- };
2861
-
2862
- const getBadge = (builtin, badgeEnabled) => {
2863
- if (builtin && badgeEnabled) {
2864
- return 'builtin';
2865
- }
2866
- return '';
2867
- };
2868
-
2869
- const hasColorThemes = extension => {
2870
- return Boolean(extension && extension.colorThemes && extension.colorThemes.length > 0);
2871
- };
2872
-
2873
- const loadHeaderContent = (state, platform, extension) => {
2874
- const {
2875
- assetDir,
2876
- builtinExtensionsBadgeEnabled
2877
- } = state;
2878
- const iconSrc = getIcon(extension, platform, assetDir);
2879
- const description = getDescription(extension);
2880
- const name = getName(extension);
2881
- const extensionUri = extension.uri || extension.path;
2882
- const extensionId = extension?.id || 'n/a';
2883
- const extensionVersion = extension?.version || 'n/a';
2884
- const hasColorTheme = hasColorThemes(extension);
2885
- const isBuiltin = extension?.builtin;
2886
- const badge = getBadge(isBuiltin, builtinExtensionsBadgeEnabled);
2973
+ const loadSideBarContent = async (extensionId, extensionVersion, extensionUri, isBuiltin) => {
2974
+ const folderSize = await getFolderSize(extensionUri);
2975
+ const displaySize = getDisplaySize(folderSize);
2976
+ const installationEntries = getInstallationEntries(displaySize, extensionId, extensionVersion, extensionUri);
2977
+ const marketplaceEntries = getMarketplaceEntries(isBuiltin);
2978
+ const categories = getCategories();
2979
+ const resources = getResources(isBuiltin);
2887
2980
  return {
2888
- badge,
2889
- description,
2890
- extension,
2891
- extensionId,
2892
- extensionUri,
2893
- extensionVersion,
2894
- hasColorTheme,
2895
- iconSrc,
2896
- name
2981
+ installationEntries,
2982
+ marketplaceEntries,
2983
+ displaySize,
2984
+ categories,
2985
+ resources,
2986
+ folderSize
2897
2987
  };
2898
2988
  };
2899
2989
 
@@ -2959,7 +3049,11 @@ const loadContent = async (state, platform, savedState) => {
2959
3049
  iconSrc,
2960
3050
  name
2961
3051
  } = headerData;
2962
- const readmeContent = await loadReadmeContent(extension.path);
3052
+ const readmeUrl = join(extension.path, 'README.md');
3053
+ join(extension.path, 'CHANGELOG.md');
3054
+ const hasReadme = await existsFile();
3055
+ const hasChangelog = await existsFile();
3056
+ const readmeContent = await loadReadmeContent(readmeUrl);
2963
3057
  const baseUrl = getBaseUrl(extension.path, platform);
2964
3058
  const readmeHtml = await renderMarkdown(readmeContent, {
2965
3059
  baseUrl
@@ -2979,17 +3073,17 @@ const loadContent = async (state, platform, savedState) => {
2979
3073
  } = restoreState(savedState);
2980
3074
  const features = getFeatures(selectedFeature || Theme, extension);
2981
3075
  const hasFeatures = features.length > 0;
2982
- const hasReadme = true; // TODO
2983
- const hasChangelog = true; // TODO
2984
3076
  const tabs = getTabs(selectedTab, hasReadme, hasFeatures, hasChangelog);
2985
3077
  const enabledTabs = tabs.filter(tab => tab.enabled);
2986
- const folderSize = await getFolderSize(extensionUri);
2987
- const displaySize = getDisplaySize(folderSize);
2988
- const installationEntries = getInstallationEntries(displaySize, extensionId, extensionVersion, extensionUri);
2989
- const marketplaceEntries = getMarketplaceEntries(isBuiltin);
2990
- const categories = getCategories();
2991
- const resources = getResources(isBuiltin);
2992
3078
  const sizeValue = getViewletSize(width || 0);
3079
+ const {
3080
+ installationEntries,
3081
+ marketplaceEntries,
3082
+ displaySize,
3083
+ categories,
3084
+ resources,
3085
+ folderSize
3086
+ } = await loadSideBarContent(extensionId, extensionVersion, extensionUri, isBuiltin);
2993
3087
  return {
2994
3088
  ...state,
2995
3089
  badge,
@@ -3010,10 +3104,11 @@ const loadContent = async (state, platform, savedState) => {
3010
3104
  iconSrc,
3011
3105
  name,
3012
3106
  readmeScrollTop,
3107
+ readmeUrl,
3013
3108
  resources,
3109
+ scrollSource: Script,
3014
3110
  scrollToTopButtonEnabled: true,
3015
3111
  secondEntries: marketplaceEntries,
3016
- scrollSource: Script,
3017
3112
  selectedTab,
3018
3113
  sizeOnDisk: size,
3019
3114
  sizeValue,
@@ -3481,7 +3576,7 @@ const render2 = (uid, diffResult) => {
3481
3576
  oldState,
3482
3577
  newState
3483
3578
  } = get(uid);
3484
- set$1(uid, newState, newState);
3579
+ set$2(uid, newState, newState);
3485
3580
  const commands = applyRender(oldState, newState, diffResult);
3486
3581
  return commands;
3487
3582
  };
@@ -3498,7 +3593,8 @@ const renderEventListeners = () => {
3498
3593
  params: ['handleReadmeContextMenu', 'event.clientX', 'event.clientY', 'event.target.href', 'event.target.src']
3499
3594
  }, {
3500
3595
  name: HandleReadmeScroll,
3501
- params: ['handleScroll', 'event.target.scrollTop'],
3596
+ // @ts-ignore
3597
+ params: ['handleScroll', 'event.target.scrollTop', User],
3502
3598
  passive: true
3503
3599
  }, {
3504
3600
  name: HandleTabsClick,
@@ -3587,7 +3683,7 @@ const listen = async () => {
3587
3683
  const rpc = await WebWorkerRpcClient.create({
3588
3684
  commandMap: commandMap
3589
3685
  });
3590
- set(rpc);
3686
+ set$1(rpc);
3591
3687
  };
3592
3688
 
3593
3689
  const main = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-detail-view",
3
- "version": "3.40.0",
3
+ "version": "3.42.0",
4
4
  "description": "Extension Detail View Worker",
5
5
  "license": "MIT",
6
6
  "author": "Lvce Editor",