@lvce-editor/extension-detail-view 3.50.0 → 3.53.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/README.md CHANGED
@@ -14,3 +14,7 @@ npm test
14
14
  ## Gitpod
15
15
 
16
16
  [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/lvce-editor/extension-detail-view)
17
+
18
+ ## Credits
19
+
20
+ The extension detail view is based on VSCode's extension detail view.
@@ -11,6 +11,7 @@ const i18nString = (key, placeholders = emptyObject) => {
11
11
  };
12
12
 
13
13
  const ActivationEvents$1 = 'Activation Events';
14
+ const RuntimeStatus$1 = 'Runtime Status';
14
15
  const Categories$1 = 'Categories';
15
16
  const Changelog$2 = 'Changelog';
16
17
  const Commands$1 = 'Commands';
@@ -28,8 +29,9 @@ const Installation = 'Installation';
28
29
  const JsonValidation$1 = 'Json Validation';
29
30
  const Label = 'Label';
30
31
  const Marketplace = 'Marketplace';
31
- const None$2 = 'None';
32
+ const None$3 = 'None';
32
33
  const NoReadmeFound = 'No Readme Found.';
34
+ const EmptyCommandsArray = 'The extension contributed an empty commands array.';
33
35
  const OpenImageInNewTab = 'Open Image in New Tab';
34
36
  const OpenInNewTab = 'Open in New Tab';
35
37
  const ProgrammingLanguages$1 = 'Programming Languages';
@@ -78,7 +80,7 @@ const features$1 = () => {
78
80
  return i18nString(Features$2);
79
81
  };
80
82
  const none = () => {
81
- return i18nString(None$2);
83
+ return i18nString(None$3);
82
84
  };
83
85
  const openInNewTab = () => {
84
86
  return i18nString(OpenInNewTab);
@@ -113,6 +115,9 @@ const webViews = () => {
113
115
  const activationEvents = () => {
114
116
  return i18nString(ActivationEvents$1);
115
117
  };
118
+ const runtimeStatus = () => {
119
+ return i18nString(RuntimeStatus$1);
120
+ };
116
121
  const jsonValidation = () => {
117
122
  return i18nString(JsonValidation$1);
118
123
  };
@@ -143,6 +148,9 @@ const scrollToTop = () => {
143
148
  const noReadmeFound = () => {
144
149
  return i18nString(NoReadmeFound);
145
150
  };
151
+ const emptyCommandsArray = () => {
152
+ return i18nString(EmptyCommandsArray);
153
+ };
146
154
 
147
155
  const getActivationEventsDetails = async extension => {
148
156
  const activationEvents = extension.activation || [];
@@ -158,13 +166,13 @@ const featureActivationEventsEnabled = extension => {
158
166
  return Array.isArray(extension.activation);
159
167
  };
160
168
 
161
- const None$1 = 'none';
169
+ const None$2 = 'none';
162
170
  const Panel = 'panel';
163
171
  const Tab$1 = 'tab';
164
172
  const TabList = 'tablist';
165
173
  const AriaRoles = {
166
174
  __proto__: null,
167
- None: None$1,
175
+ None: None$2,
168
176
  Panel,
169
177
  Tab: Tab$1,
170
178
  TabList};
@@ -353,6 +361,19 @@ const getCommandTableEntries = rows => {
353
361
  };
354
362
  };
355
363
 
364
+ const getFeatureCommandsEmptyVirtualDom = () => {
365
+ const heading = commands$1();
366
+ const emptyCommandsArray$1 = emptyCommandsArray();
367
+ return [{
368
+ type: VirtualDomElements.Div,
369
+ className: FeatureContent,
370
+ childCount: 2
371
+ }, ...getFeatureContentHeadingVirtualDom(heading), {
372
+ type: VirtualDomElements.P,
373
+ childCount: 1
374
+ }, text(emptyCommandsArray$1)];
375
+ };
376
+
356
377
  const getTableHeadingVirtualDom = heading => {
357
378
  return [{
358
379
  type: VirtualDomElements.Th,
@@ -430,6 +451,9 @@ const getTableVirtualDom = tableInfo => {
430
451
 
431
452
  // TODO have typed view-model
432
453
  const getFeatureCommandsVirtualDom = commands => {
454
+ if (commands.length === 0) {
455
+ return getFeatureCommandsEmptyVirtualDom();
456
+ }
433
457
  const heading = commands$1();
434
458
  const tableInfo = getCommandTableEntries(commands);
435
459
  return [{
@@ -574,6 +598,266 @@ const getFeatureVirtualDomHandler = featureName => {
574
598
  return feature.getVirtualDom;
575
599
  };
576
600
 
601
+ const rpcs = Object.create(null);
602
+ const set$g = (id, rpc) => {
603
+ rpcs[id] = rpc;
604
+ };
605
+ const get$2 = id => {
606
+ return rpcs[id];
607
+ };
608
+
609
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
610
+
611
+ const create$7 = rpcId => {
612
+ return {
613
+ // @ts-ignore
614
+ invoke(method, ...params) {
615
+ const rpc = get$2(rpcId);
616
+ // @ts-ignore
617
+ return rpc.invoke(method, ...params);
618
+ },
619
+ // @ts-ignore
620
+ invokeAndTransfer(method, ...params) {
621
+ const rpc = get$2(rpcId);
622
+ // @ts-ignore
623
+ return rpc.invokeAndTransfer(method, ...params);
624
+ },
625
+ set(rpc) {
626
+ set$g(rpcId, rpc);
627
+ },
628
+ async dispose() {
629
+ const rpc = get$2(rpcId);
630
+ await rpc.dispose();
631
+ }
632
+ };
633
+ };
634
+ const ExtensionHostWorker = 44;
635
+ const RendererWorker$1 = 1;
636
+ const FileSystemWorker$1 = 209;
637
+ const MarkdownWorker$1 = 300;
638
+ const {
639
+ invoke: invoke$9,
640
+ set: set$9} = create$7(ExtensionHostWorker);
641
+ const ExtensionHost = {
642
+ __proto__: null,
643
+ invoke: invoke$9,
644
+ set: set$9
645
+ };
646
+ const {
647
+ invoke: invoke$7,
648
+ set: set$7} = create$7(FileSystemWorker$1);
649
+ const readFile$1$1 = async uri => {
650
+ return invoke$7('FileSystem.readFile', uri);
651
+ };
652
+ const exists$1 = async uri => {
653
+ // @ts-ignore
654
+ return invoke$7('FileSystem.exists', uri);
655
+ };
656
+ const FileSystemWorker = {
657
+ __proto__: null,
658
+ exists: exists$1,
659
+ invoke: invoke$7,
660
+ readFile: readFile$1$1,
661
+ set: set$7};
662
+ const {
663
+ invoke: invoke$5,
664
+ set: set$5$1} = create$7(MarkdownWorker$1);
665
+ const getVirtualDom$1 = async html => {
666
+ // @ts-ignore
667
+ return invoke$5('Markdown.getVirtualDom', html);
668
+ };
669
+ const render$1 = async (markdown, options) => {
670
+ // @ts-ignore
671
+ return invoke$5('Markdown.render', markdown, options);
672
+ };
673
+ const MarkdownWorker = {
674
+ __proto__: null,
675
+ getVirtualDom: getVirtualDom$1,
676
+ render: render$1,
677
+ set: set$5$1
678
+ };
679
+ const {
680
+ invoke: invoke$3,
681
+ invokeAndTransfer: invokeAndTransfer$3,
682
+ set: set$3$1} = create$7(RendererWorker$1);
683
+ const showContextMenu$1 = async (x, y, id, ...args) => {
684
+ return invoke$3('ContextMenu.show', x, y, id, ...args);
685
+ };
686
+ const setColorTheme$2 = async id => {
687
+ // @ts-ignore
688
+ return invoke$3(/* ColorTheme.setColorTheme */'ColorTheme.setColorTheme', /* colorThemeId */id);
689
+ };
690
+ const sendMessagePortToMarkdownWorker$2 = async (port, rpcId) => {
691
+ const command = 'Markdown.handleMessagePort';
692
+ // @ts-ignore
693
+ await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToMarkdownWorker', port, command, rpcId);
694
+ };
695
+ const sendMessagePortToFileSystemWorker$2 = async (port, rpcId) => {
696
+ const command = 'FileSystem.handleMessagePort';
697
+ // @ts-ignore
698
+ await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
699
+ };
700
+ const sendMessagePortToExtensionHostWorker$2 = async (port, rpcId = 0) => {
701
+ const command = 'HandleMessagePort.handleMessagePort2';
702
+ await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, command, rpcId);
703
+ };
704
+ const writeClipBoardText$1 = async text => {
705
+ await invoke$3('ClipBoard.writeText', /* text */text);
706
+ };
707
+ const writeClipBoardImage$1 = async blob => {
708
+ // @ts-ignore
709
+ await invoke$3('ClipBoard.writeImage', /* text */blob);
710
+ };
711
+ const getAllExtensions$2 = async () => {
712
+ return invoke$3('ExtensionManagement.getAllExtensions');
713
+ };
714
+ const getExtension$3 = async id => {
715
+ // @ts-ignore
716
+ return invoke$3('ExtensionManagement.getExtension', id);
717
+ };
718
+ const openNativeFolder$1 = async uri => {
719
+ // @ts-ignore
720
+ await invoke$3('OpenNativeFolder.openNativeFolder', uri);
721
+ };
722
+ const uninstallExtension$1 = async id => {
723
+ return invoke$3('ExtensionManagement.uninstall', id);
724
+ };
725
+ const openExtensionSearch$2 = async () => {
726
+ // @ts-ignore
727
+ return invoke$3('SideBar.openViewlet', 'Extensions');
728
+ };
729
+ const setExtensionsSearchValue$1 = async searchValue => {
730
+ // @ts-ignore
731
+ return invoke$3('Extensions.handleInput', searchValue);
732
+ };
733
+ const openUrl$2 = async uri => {
734
+ // @ts-ignore
735
+ await invoke$3('Open.openUrl', uri);
736
+ };
737
+ const RendererWorker = {
738
+ __proto__: null,
739
+ getAllExtensions: getAllExtensions$2,
740
+ getExtension: getExtension$3,
741
+ openExtensionSearch: openExtensionSearch$2,
742
+ openNativeFolder: openNativeFolder$1,
743
+ openUrl: openUrl$2,
744
+ sendMessagePortToExtensionHostWorker: sendMessagePortToExtensionHostWorker$2,
745
+ sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$2,
746
+ sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$2,
747
+ set: set$3$1,
748
+ setColorTheme: setColorTheme$2,
749
+ setExtensionsSearchValue: setExtensionsSearchValue$1,
750
+ showContextMenu: showContextMenu$1,
751
+ uninstallExtension: uninstallExtension$1,
752
+ writeClipBoardImage: writeClipBoardImage$1,
753
+ writeClipBoardText: writeClipBoardText$1
754
+ };
755
+
756
+ const {
757
+ set: set$5,
758
+ invoke: invoke$2
759
+ } = ExtensionHost;
760
+
761
+ const getRuntimeStatus = async extensionId => {
762
+ // TODO simplify api
763
+ // @ts-ignore
764
+ const status = await invoke$2('ExtensionHost.getRuntimeStatus', extensionId);
765
+ // @ts-ignore
766
+ return status;
767
+ };
768
+
769
+ const getRuntimeStatusDetails = async extension => {
770
+ const {
771
+ activationEvent,
772
+ status,
773
+ activationTime
774
+ } = await getRuntimeStatus(extension.id);
775
+ return {
776
+ wasActivatedByEvent: activationEvent,
777
+ activationTime,
778
+ status
779
+ };
780
+ };
781
+
782
+ const featureRuntimeStatusEnabled = extension => {
783
+ if (!extension || typeof extension !== 'object') {
784
+ return false;
785
+ }
786
+ if ('main' in extension || 'browser' in extension) {
787
+ return true;
788
+ }
789
+ return false;
790
+ };
791
+
792
+ const None$1 = 0;
793
+ const Importing = 1;
794
+ const Activating = 2;
795
+ const Activated = 3;
796
+ const Error$1 = 4;
797
+
798
+ const getStatusMessage = statusType => {
799
+ switch (statusType) {
800
+ case Activated:
801
+ return 'activated';
802
+ case None$1:
803
+ return 'none';
804
+ case Activating:
805
+ return 'Activating';
806
+ case Error$1:
807
+ return 'error';
808
+ case Importing:
809
+ return 'importing';
810
+ default:
811
+ return 'unknown';
812
+ }
813
+ };
814
+
815
+ const formatTime = time => {
816
+ return time.toFixed(2) + 'ms';
817
+ };
818
+ const getActivationTimeVirtualDom = activationTime => {
819
+ if (!activationTime) {
820
+ return [];
821
+ }
822
+ const formattedTime = formatTime(activationTime);
823
+ return [{
824
+ type: VirtualDomElements.P,
825
+ childCount: 2
826
+ }, text('Activation Time: '),
827
+ // i18n
828
+ text(formattedTime)];
829
+ };
830
+ const getStatusVirtualDom = status => {
831
+ const statusString = getStatusMessage(status);
832
+ return [{
833
+ type: VirtualDomElements.P,
834
+ childCount: 2
835
+ }, text(`Status: `),
836
+ // i18n
837
+ text(`${statusString}`)];
838
+ };
839
+ const getChildCount$1 = (status, activationTime) => {
840
+ let childCount = 1; // heading
841
+ childCount++; // status
842
+ if (activationTime) {
843
+ childCount++; // activation time
844
+ }
845
+ return childCount;
846
+ };
847
+ const getRuntimeStatusVirtualDom = state => {
848
+ const {
849
+ status,
850
+ activationTime
851
+ } = state;
852
+ const heading = runtimeStatus();
853
+ const childCount = getChildCount$1(status, activationTime);
854
+ return [{
855
+ type: VirtualDomElements.Div,
856
+ className: FeatureContent,
857
+ childCount: childCount
858
+ }, ...getFeatureContentHeadingVirtualDom(heading), ...getStatusVirtualDom(status), ...getActivationTimeVirtualDom(activationTime)];
859
+ };
860
+
577
861
  const getSettingsTableEntry = setting => {
578
862
  const {
579
863
  id,
@@ -692,6 +976,7 @@ const Disable = 'Disable';
692
976
  const Features = 'Features';
693
977
  const JsonValidation = 'JsonValidation';
694
978
  const ProgrammingLanguages = 'ProgrammingLanguages';
979
+ const RuntimeStatus = 'RuntimeStatus';
695
980
  const ScrollToTop = 'scrolltotop';
696
981
  const SetColorTheme = 'SetColorTheme';
697
982
  const Settings = 'Settings';
@@ -715,143 +1000,6 @@ const getScrollToTopVirtualDom = scrollToTopButtonEnabled => {
715
1000
  }];
716
1001
  };
717
1002
 
718
- const rpcs = Object.create(null);
719
- const set$g = (id, rpc) => {
720
- rpcs[id] = rpc;
721
- };
722
- const get$2 = id => {
723
- return rpcs[id];
724
- };
725
-
726
- /* eslint-disable @typescript-eslint/explicit-function-return-type */
727
-
728
- const create$7 = rpcId => {
729
- return {
730
- // @ts-ignore
731
- invoke(method, ...params) {
732
- const rpc = get$2(rpcId);
733
- // @ts-ignore
734
- return rpc.invoke(method, ...params);
735
- },
736
- // @ts-ignore
737
- invokeAndTransfer(method, ...params) {
738
- const rpc = get$2(rpcId);
739
- // @ts-ignore
740
- return rpc.invokeAndTransfer(method, ...params);
741
- },
742
- set(rpc) {
743
- set$g(rpcId, rpc);
744
- },
745
- async dispose() {
746
- const rpc = get$2(rpcId);
747
- await rpc.dispose();
748
- }
749
- };
750
- };
751
- const RendererWorker$1 = 1;
752
- const FileSystemWorker$1 = 209;
753
- const MarkdownWorker$1 = 300;
754
- const {
755
- invoke: invoke$7,
756
- set: set$7} = create$7(FileSystemWorker$1);
757
- const readFile$1$1 = async uri => {
758
- return invoke$7('FileSystem.readFile', uri);
759
- };
760
- const exists$1 = async uri => {
761
- // @ts-ignore
762
- return invoke$7('FileSystem.exists', uri);
763
- };
764
- const FileSystemWorker = {
765
- __proto__: null,
766
- exists: exists$1,
767
- invoke: invoke$7,
768
- readFile: readFile$1$1,
769
- set: set$7};
770
- const {
771
- invoke: invoke$5,
772
- set: set$5} = create$7(MarkdownWorker$1);
773
- const getVirtualDom$1 = async html => {
774
- // @ts-ignore
775
- return invoke$5('Markdown.getVirtualDom', html);
776
- };
777
- const render$1 = async (markdown, options) => {
778
- // @ts-ignore
779
- return invoke$5('Markdown.render', markdown, options);
780
- };
781
- const MarkdownWorker = {
782
- __proto__: null,
783
- getVirtualDom: getVirtualDom$1,
784
- render: render$1,
785
- set: set$5
786
- };
787
- const {
788
- invoke: invoke$3,
789
- invokeAndTransfer: invokeAndTransfer$3,
790
- set: set$3$1} = create$7(RendererWorker$1);
791
- const showContextMenu$1 = async (x, y, id, ...args) => {
792
- return invoke$3('ContextMenu.show', x, y, id, ...args);
793
- };
794
- const setColorTheme$2 = async id => {
795
- // @ts-ignore
796
- return invoke$3(/* ColorTheme.setColorTheme */'ColorTheme.setColorTheme', /* colorThemeId */id);
797
- };
798
- const sendMessagePortToMarkdownWorker$2 = async (port, rpcId) => {
799
- const command = 'Markdown.handleMessagePort';
800
- // @ts-ignore
801
- await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToMarkdownWorker', port, command, rpcId);
802
- };
803
- const sendMessagePortToFileSystemWorker$2 = async (port, rpcId) => {
804
- const command = 'FileSystem.handleMessagePort';
805
- // @ts-ignore
806
- await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
807
- };
808
- const writeClipBoardText$1 = async text => {
809
- await invoke$3('ClipBoard.writeText', /* text */text);
810
- };
811
- const writeClipBoardImage$1 = async blob => {
812
- // @ts-ignore
813
- await invoke$3('ClipBoard.writeImage', /* text */blob);
814
- };
815
- const getAllExtensions$2 = async () => {
816
- return invoke$3('ExtensionManagement.getAllExtensions');
817
- };
818
- const getExtension$3 = async id => {
819
- // @ts-ignore
820
- return invoke$3('ExtensionManagement.getExtension', id);
821
- };
822
- const openNativeFolder$1 = async uri => {
823
- // @ts-ignore
824
- await invoke$3('OpenNativeFolder.openNativeFolder', uri);
825
- };
826
- const uninstallExtension$1 = async id => {
827
- return invoke$3('ExtensionManagement.uninstall', id);
828
- };
829
- const openExtensionSearch$2 = async () => {
830
- // @ts-ignore
831
- return invoke$3('SideBar.openViewlet', 'Extensions');
832
- };
833
- const setExtensionsSearchValue$1 = async value => {
834
- // @ts-ignore
835
- return invoke$3('Extensions.handleInput', searchValue);
836
- };
837
- const RendererWorker = {
838
- __proto__: null,
839
- getAllExtensions: getAllExtensions$2,
840
- getExtension: getExtension$3,
841
- invoke: invoke$3,
842
- openExtensionSearch: openExtensionSearch$2,
843
- openNativeFolder: openNativeFolder$1,
844
- sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$2,
845
- sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$2,
846
- set: set$3$1,
847
- setColorTheme: setColorTheme$2,
848
- setExtensionsSearchValue: setExtensionsSearchValue$1,
849
- showContextMenu: showContextMenu$1,
850
- uninstallExtension: uninstallExtension$1,
851
- writeClipBoardImage: writeClipBoardImage$1,
852
- writeClipBoardText: writeClipBoardText$1
853
- };
854
-
855
1003
  const {
856
1004
  set: set$4,
857
1005
  getVirtualDom,
@@ -1114,6 +1262,13 @@ const registerAllFeatures = () => {
1114
1262
  getDetails: getActivationEventsDetails,
1115
1263
  getVirtualDom: getActivationEventsVirtualDom
1116
1264
  });
1265
+ register$1({
1266
+ id: RuntimeStatus,
1267
+ getLabel: runtimeStatus,
1268
+ isEnabled: featureRuntimeStatusEnabled,
1269
+ getDetails: getRuntimeStatusDetails,
1270
+ getVirtualDom: getRuntimeStatusVirtualDom
1271
+ });
1117
1272
  };
1118
1273
 
1119
1274
  const normalizeLine = line => {
@@ -1953,7 +2108,7 @@ const send = (transport, method, ...params) => {
1953
2108
  const message = create$4(method, params);
1954
2109
  transport.send(message);
1955
2110
  };
1956
- const invoke$2 = (ipc, method, ...params) => {
2111
+ const invoke$1 = (ipc, method, ...params) => {
1957
2112
  return invokeHelper(ipc, method, params, false);
1958
2113
  };
1959
2114
  const invokeAndTransfer = (ipc, method, ...params) => {
@@ -1986,7 +2141,7 @@ const createRpc = ipc => {
1986
2141
  send(ipc, method, ...params);
1987
2142
  },
1988
2143
  invoke(method, ...params) {
1989
- return invoke$2(ipc, method, ...params);
2144
+ return invoke$1(ipc, method, ...params);
1990
2145
  },
1991
2146
  invokeAndTransfer(method, ...params) {
1992
2147
  return invokeAndTransfer(ipc, method, ...params);
@@ -2163,8 +2318,8 @@ const terminate = () => {
2163
2318
  const {
2164
2319
  getAllExtensions: getAllExtensions$1,
2165
2320
  getExtension: getExtension$2,
2166
- invoke: invoke$1,
2167
2321
  openExtensionSearch: openExtensionSearch$1,
2322
+ sendMessagePortToExtensionHostWorker: sendMessagePortToExtensionHostWorker$1,
2168
2323
  openNativeFolder,
2169
2324
  writeClipBoardText,
2170
2325
  sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$1,
@@ -2174,12 +2329,9 @@ const {
2174
2329
  setExtensionsSearchValue,
2175
2330
  showContextMenu,
2176
2331
  uninstallExtension,
2177
- writeClipBoardImage
2332
+ writeClipBoardImage,
2333
+ openUrl: openUrl$1
2178
2334
  } = RendererWorker;
2179
- const openUrl$1 = async uri => {
2180
- // @ts-ignore
2181
- await invoke$1('Open.openUrl', uri);
2182
- };
2183
2335
 
2184
2336
  const writeClipboardImage = async blob => {
2185
2337
  await writeClipBoardImage(blob);
@@ -2239,6 +2391,9 @@ const {
2239
2391
 
2240
2392
  const create = (uid, uri, x, y, width, height, platform, assetDir) => {
2241
2393
  const state = {
2394
+ wasActivatedByEvent: '',
2395
+ activationTime: 0,
2396
+ status: 0,
2242
2397
  uid,
2243
2398
  activationEvents: [],
2244
2399
  assetDir: assetDir || '',
@@ -2703,6 +2858,27 @@ const handleTabsClick = (state, name) => {
2703
2858
  return selectTab(state, name);
2704
2859
  };
2705
2860
 
2861
+ const sendMessagePortToExtensionHostWorker = async port => {
2862
+ await sendMessagePortToExtensionHostWorker$1(port, 0);
2863
+ };
2864
+
2865
+ const createExtensionHostWorkerRpc = async () => {
2866
+ try {
2867
+ const rpc = await TransferMessagePortRpcParent.create({
2868
+ commandMap: {},
2869
+ send: sendMessagePortToExtensionHostWorker
2870
+ });
2871
+ return rpc;
2872
+ } catch (error) {
2873
+ throw new VError(error, `Failed to create extension host rpc`);
2874
+ }
2875
+ };
2876
+
2877
+ const initializeExtensionHostWorker = async () => {
2878
+ const rpc = await createExtensionHostWorkerRpc();
2879
+ set$5(rpc);
2880
+ };
2881
+
2706
2882
  const sendMessagePortToFileSystemWorker = async port => {
2707
2883
  await sendMessagePortToFileSystemWorker$1(port, 0);
2708
2884
  };
@@ -2746,7 +2922,7 @@ const initializeMarkdownWorker = async () => {
2746
2922
  };
2747
2923
 
2748
2924
  const initialize = async () => {
2749
- await Promise.all([initializeMarkdownWorker(), initializeFileSystemWorker()]);
2925
+ await Promise.all([initializeMarkdownWorker(), initializeFileSystemWorker(), initializeExtensionHostWorker()]);
2750
2926
  };
2751
2927
 
2752
2928
  const existsFile = async uri => {
@@ -3506,6 +3682,11 @@ const getFeatureListVirtualDom = features => {
3506
3682
  }, ...features.flatMap(getFeatureListItemVirtualDom)];
3507
3683
  };
3508
3684
 
3685
+ const sash = {
3686
+ type: VirtualDomElements.Div,
3687
+ className: mergeClassNames(Sash, SashVertical),
3688
+ childCount: 0
3689
+ };
3509
3690
  const getFeaturesVirtualDom = (features, selectedFeature, state) => {
3510
3691
  if (features.length === 0) {
3511
3692
  const none$1 = none();
@@ -3521,11 +3702,7 @@ const getFeaturesVirtualDom = (features, selectedFeature, state) => {
3521
3702
  type: VirtualDomElements.Div,
3522
3703
  className: Features$1,
3523
3704
  childCount: 3
3524
- }, ...getFeatureListVirtualDom(features), {
3525
- type: VirtualDomElements.Div,
3526
- className: mergeClassNames(Sash, SashVertical),
3527
- childCount: 0
3528
- }, ...featureVirtualDom];
3705
+ }, ...getFeatureListVirtualDom(features), sash, ...featureVirtualDom];
3529
3706
  };
3530
3707
 
3531
3708
  const getExtensionDetailContentVirtualDom = (sanitizedReadmeHtml, selectedTab, width, scrollToTopButtonEnabled, categories, resources, breakpoint, changelogDom, state) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-detail-view",
3
- "version": "3.50.0",
3
+ "version": "3.53.0",
4
4
  "description": "Extension Detail View Worker",
5
5
  "license": "MIT",
6
6
  "author": "Lvce Editor",