@lvce-editor/extension-detail-view 3.49.0 → 3.52.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.
@@ -16,6 +16,8 @@ const Changelog$2 = 'Changelog';
16
16
  const Commands$1 = 'Commands';
17
17
  const ContentSecurityPolicy = 'ContentSecurityPolicy';
18
18
  const Copy = 'Copy';
19
+ const CopyImage = 'Copy Image';
20
+ const CopyImageUrl = 'Copy Image Url';
19
21
  const Details$1 = 'Details';
20
22
  const Disable$1 = 'Disable';
21
23
  const Elements = 'Elements';
@@ -27,6 +29,8 @@ const JsonValidation$1 = 'Json Validation';
27
29
  const Label = 'Label';
28
30
  const Marketplace = 'Marketplace';
29
31
  const None$2 = 'None';
32
+ const NoReadmeFound = 'No Readme Found.';
33
+ const EmptyCommandsArray = 'The extension contributed an empty commands array.';
30
34
  const OpenImageInNewTab = 'Open Image in New Tab';
31
35
  const OpenInNewTab = 'Open in New Tab';
32
36
  const ProgrammingLanguages$1 = 'Programming Languages';
@@ -34,7 +38,6 @@ const Resources$1 = 'Resources';
34
38
  const SaveImageAs = 'Save Image as';
35
39
  const Schema = 'Schema';
36
40
  const ScrollToTop$1 = 'Scroll to top';
37
- const NoReadmeFound = 'No Readme Found.';
38
41
  const Selector = 'Selector';
39
42
  const SetColorTheme$1 = 'Set Color Theme';
40
43
  const Settings$1 = 'Settings';
@@ -57,6 +60,12 @@ const resources = () => {
57
60
  const copy = () => {
58
61
  return i18nString(Copy);
59
62
  };
63
+ const copyImage$1 = () => {
64
+ return i18nString(CopyImage);
65
+ };
66
+ const copyImageUrl$1 = () => {
67
+ return i18nString(CopyImageUrl);
68
+ };
60
69
  const changelog = () => {
61
70
  return i18nString(Changelog$2);
62
71
  };
@@ -78,7 +87,7 @@ const openInNewTab = () => {
78
87
  const label = () => {
79
88
  return i18nString(Label);
80
89
  };
81
- const openImageInNewTab = () => {
90
+ const openImageInNewTab$1 = () => {
82
91
  return i18nString(OpenImageInNewTab);
83
92
  };
84
93
  const saveImageAs = () => {
@@ -135,6 +144,9 @@ const scrollToTop = () => {
135
144
  const noReadmeFound = () => {
136
145
  return i18nString(NoReadmeFound);
137
146
  };
147
+ const emptyCommandsArray = () => {
148
+ return i18nString(EmptyCommandsArray);
149
+ };
138
150
 
139
151
  const getActivationEventsDetails = async extension => {
140
152
  const activationEvents = extension.activation || [];
@@ -345,6 +357,19 @@ const getCommandTableEntries = rows => {
345
357
  };
346
358
  };
347
359
 
360
+ const getFeatureCommandsEmptyVirtualDom = () => {
361
+ const heading = commands$1();
362
+ const emptyCommandsArray$1 = emptyCommandsArray();
363
+ return [{
364
+ type: VirtualDomElements.Div,
365
+ className: FeatureContent,
366
+ childCount: 2
367
+ }, ...getFeatureContentHeadingVirtualDom(heading), {
368
+ type: VirtualDomElements.P,
369
+ childCount: 1
370
+ }, text(emptyCommandsArray$1)];
371
+ };
372
+
348
373
  const getTableHeadingVirtualDom = heading => {
349
374
  return [{
350
375
  type: VirtualDomElements.Th,
@@ -422,6 +447,9 @@ const getTableVirtualDom = tableInfo => {
422
447
 
423
448
  // TODO have typed view-model
424
449
  const getFeatureCommandsVirtualDom = commands => {
450
+ if (commands.length === 0) {
451
+ return getFeatureCommandsEmptyVirtualDom();
452
+ }
425
453
  const heading = commands$1();
426
454
  const tableInfo = getCommandTableEntries(commands);
427
455
  return [{
@@ -740,9 +768,16 @@ const create$7 = rpcId => {
740
768
  }
741
769
  };
742
770
  };
771
+ const ExtensionHostWorker = 44;
743
772
  const RendererWorker$1 = 1;
744
773
  const FileSystemWorker$1 = 209;
745
774
  const MarkdownWorker$1 = 300;
775
+ const {
776
+ set: set$9} = create$7(ExtensionHostWorker);
777
+ const ExtensionHost = {
778
+ __proto__: null,
779
+ set: set$9
780
+ };
746
781
  const {
747
782
  invoke: invoke$7,
748
783
  set: set$7} = create$7(FileSystemWorker$1);
@@ -761,7 +796,7 @@ const FileSystemWorker = {
761
796
  set: set$7};
762
797
  const {
763
798
  invoke: invoke$5,
764
- set: set$5} = create$7(MarkdownWorker$1);
799
+ set: set$5$1} = create$7(MarkdownWorker$1);
765
800
  const getVirtualDom$1 = async html => {
766
801
  // @ts-ignore
767
802
  return invoke$5('Markdown.getVirtualDom', html);
@@ -774,7 +809,7 @@ const MarkdownWorker = {
774
809
  __proto__: null,
775
810
  getVirtualDom: getVirtualDom$1,
776
811
  render: render$1,
777
- set: set$5
812
+ set: set$5$1
778
813
  };
779
814
  const {
780
815
  invoke: invoke$3,
@@ -797,6 +832,17 @@ const sendMessagePortToFileSystemWorker$2 = async (port, rpcId) => {
797
832
  // @ts-ignore
798
833
  await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
799
834
  };
835
+ const sendMessagePortToExtensionHostWorker$2 = async (port, rpcId = 0) => {
836
+ const command = 'HandleMessagePort.handleMessagePort2';
837
+ await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, command, rpcId);
838
+ };
839
+ const writeClipBoardText$1 = async text => {
840
+ await invoke$3('ClipBoard.writeText', /* text */text);
841
+ };
842
+ const writeClipBoardImage$1 = async blob => {
843
+ // @ts-ignore
844
+ await invoke$3('ClipBoard.writeImage', /* text */blob);
845
+ };
800
846
  const getAllExtensions$2 = async () => {
801
847
  return invoke$3('ExtensionManagement.getAllExtensions');
802
848
  };
@@ -815,26 +861,35 @@ const openExtensionSearch$2 = async () => {
815
861
  // @ts-ignore
816
862
  return invoke$3('SideBar.openViewlet', 'Extensions');
817
863
  };
818
- const setExtensionsSearchValue$1 = async value => {
864
+ const setExtensionsSearchValue$1 = async searchValue => {
819
865
  // @ts-ignore
820
866
  return invoke$3('Extensions.handleInput', searchValue);
821
867
  };
868
+ const openUrl$2 = async uri => {
869
+ // @ts-ignore
870
+ await invoke$3('Open.openUrl', uri);
871
+ };
822
872
  const RendererWorker = {
823
873
  __proto__: null,
824
874
  getAllExtensions: getAllExtensions$2,
825
875
  getExtension: getExtension$3,
826
876
  openExtensionSearch: openExtensionSearch$2,
827
877
  openNativeFolder: openNativeFolder$1,
878
+ openUrl: openUrl$2,
879
+ sendMessagePortToExtensionHostWorker: sendMessagePortToExtensionHostWorker$2,
828
880
  sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$2,
829
881
  sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$2,
830
882
  set: set$3$1,
831
883
  setColorTheme: setColorTheme$2,
832
884
  setExtensionsSearchValue: setExtensionsSearchValue$1,
833
885
  showContextMenu: showContextMenu$1,
834
- uninstallExtension: uninstallExtension$1};
886
+ uninstallExtension: uninstallExtension$1,
887
+ writeClipBoardImage: writeClipBoardImage$1,
888
+ writeClipBoardText: writeClipBoardText$1
889
+ };
835
890
 
836
891
  const {
837
- set: set$4,
892
+ set: set$5,
838
893
  getVirtualDom,
839
894
  render
840
895
  } = MarkdownWorker;
@@ -1571,7 +1626,7 @@ const create$4 = (method, params) => {
1571
1626
  };
1572
1627
  };
1573
1628
  const callbacks = Object.create(null);
1574
- const set$3 = (id, fn) => {
1629
+ const set$4 = (id, fn) => {
1575
1630
  callbacks[id] = fn;
1576
1631
  };
1577
1632
  const get$1 = id => {
@@ -1590,7 +1645,7 @@ const registerPromise = () => {
1590
1645
  resolve,
1591
1646
  promise
1592
1647
  } = Promise.withResolvers();
1593
- set$3(id, resolve);
1648
+ set$4(id, resolve);
1594
1649
  return {
1595
1650
  id,
1596
1651
  promise
@@ -2141,13 +2196,73 @@ const terminate = () => {
2141
2196
  globalThis.close();
2142
2197
  };
2143
2198
 
2144
- const copyImage = state => {
2199
+ const {
2200
+ getAllExtensions: getAllExtensions$1,
2201
+ getExtension: getExtension$2,
2202
+ openExtensionSearch: openExtensionSearch$1,
2203
+ sendMessagePortToExtensionHostWorker: sendMessagePortToExtensionHostWorker$1,
2204
+ openNativeFolder,
2205
+ writeClipBoardText,
2206
+ sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$1,
2207
+ sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$1,
2208
+ set: set$3,
2209
+ setColorTheme: setColorTheme$1,
2210
+ setExtensionsSearchValue,
2211
+ showContextMenu,
2212
+ uninstallExtension,
2213
+ writeClipBoardImage,
2214
+ openUrl: openUrl$1
2215
+ } = RendererWorker;
2216
+
2217
+ const writeClipboardImage = async blob => {
2218
+ await writeClipBoardImage(blob);
2219
+ };
2220
+ const writeText = async text => {
2221
+ await writeClipBoardText(text);
2222
+ };
2223
+
2224
+ const {
2225
+ set: set$2,
2226
+ exists,
2227
+ readFile: readFile$1,
2228
+ invoke
2229
+ } = FileSystemWorker;
2230
+ const readFileAsBlob = async uri => {
2231
+ // TODO maybe readAsObjectUrl?
2232
+ // @ts-ignore
2233
+ return invoke('FileSystem.readFileAsBlob', uri);
2234
+ };
2235
+
2236
+ const getImageCopyUrl = iconSrc => {
2237
+ // TODO support gitpod url prefixes
2238
+ // @ts-ignore
2239
+ const prefix = `${location.protocol}//${location.host}`;
2240
+ const absoluteIconSrc = `${prefix}${iconSrc}`;
2241
+ return absoluteIconSrc;
2242
+ };
2243
+
2244
+ const copyImage = async state => {
2245
+ const {
2246
+ iconSrc
2247
+ } = state;
2248
+ const absoluteIconSrc = getImageCopyUrl(iconSrc);
2249
+ const blob = await readFileAsBlob(absoluteIconSrc);
2250
+ await writeClipboardImage(blob);
2251
+ return state;
2252
+ };
2253
+
2254
+ const copyImageUrl = async state => {
2255
+ const {
2256
+ iconSrc
2257
+ } = state;
2258
+ const absoluteIconSrc = getImageCopyUrl(iconSrc);
2259
+ await writeText(absoluteIconSrc);
2145
2260
  return state;
2146
2261
  };
2147
2262
 
2148
2263
  const {
2149
2264
  get,
2150
- set: set$2,
2265
+ set: set$1,
2151
2266
  dispose: dispose$1,
2152
2267
  wrapCommand,
2153
2268
  wrapGetter,
@@ -2157,6 +2272,8 @@ const {
2157
2272
 
2158
2273
  const create = (uid, uri, x, y, width, height, platform, assetDir) => {
2159
2274
  const state = {
2275
+ wasActivatedByEvent: '',
2276
+ status: '',
2160
2277
  uid,
2161
2278
  activationEvents: [],
2162
2279
  assetDir: assetDir || '',
@@ -2167,6 +2284,7 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
2167
2284
  categories: [],
2168
2285
  changelogScrollTop: 0,
2169
2286
  changelogVirtualDom: [],
2287
+ extensionUri: '',
2170
2288
  commands: [],
2171
2289
  hasReadme: false,
2172
2290
  description: '',
@@ -2205,7 +2323,7 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
2205
2323
  width,
2206
2324
  readmeUrl: ''
2207
2325
  };
2208
- set$2(uid, state, state);
2326
+ set$1(uid, state, state);
2209
2327
  };
2210
2328
 
2211
2329
  const isEqual$2 = (oldState, newState) => {
@@ -2264,7 +2382,7 @@ const getImageMenuEntries = props => {
2264
2382
  }
2265
2383
  return [{
2266
2384
  id: 'openImageInNewTab',
2267
- label: openImageInNewTab(),
2385
+ label: openImageInNewTab$1(),
2268
2386
  flags: None,
2269
2387
  command: 'Open.openUrl',
2270
2388
  args: [props.url || '']
@@ -2297,24 +2415,28 @@ const ExtensionDetailIconContextMenu = 4091;
2297
2415
  const getMenus = () => {
2298
2416
  return [{
2299
2417
  id: ExtensionDetailIconContextMenu,
2300
- entries: []
2418
+ entries: [{
2419
+ id: 'openImageInNewTab',
2420
+ label: openImageInNewTab$1(),
2421
+ flags: None,
2422
+ command: 'ExtensionDetail.openImageInNewTab',
2423
+ args: []
2424
+ }, {
2425
+ id: 'copyImage',
2426
+ label: copyImage$1(),
2427
+ flags: None,
2428
+ command: 'ExtensionDetail.copyImage',
2429
+ args: []
2430
+ }, {
2431
+ id: 'copyImageUrl',
2432
+ label: copyImageUrl$1(),
2433
+ flags: None,
2434
+ command: 'ExtensionDetail.copyImageUrl',
2435
+ args: []
2436
+ }]
2301
2437
  }];
2302
2438
  };
2303
2439
 
2304
- const {
2305
- getAllExtensions: getAllExtensions$1,
2306
- getExtension: getExtension$2,
2307
- openExtensionSearch: openExtensionSearch$1,
2308
- openNativeFolder,
2309
- sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$1,
2310
- sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$1,
2311
- set: set$1,
2312
- setColorTheme: setColorTheme$1,
2313
- setExtensionsSearchValue,
2314
- uninstallExtension,
2315
- showContextMenu
2316
- } = RendererWorker;
2317
-
2318
2440
  const openExtensionSearch = async searchValue => {
2319
2441
  await openExtensionSearch$1();
2320
2442
  await setExtensionsSearchValue(searchValue);
@@ -2449,7 +2571,7 @@ const handleIconError = state => {
2449
2571
  };
2450
2572
 
2451
2573
  const show = async (menuId, x, y) => {
2452
- await showContextMenu(menuId, x, y);
2574
+ await showContextMenu(x, y, menuId);
2453
2575
  };
2454
2576
 
2455
2577
  const handleImageContextMenu = async (state, eventX, eventY) => {
@@ -2466,13 +2588,6 @@ const handleScroll = (state, scrollTop, scrollSource = Script) => {
2466
2588
  };
2467
2589
  };
2468
2590
 
2469
- const {
2470
- set,
2471
- exists,
2472
- readFile: readFile$1,
2473
- invoke
2474
- } = FileSystemWorker;
2475
-
2476
2591
  const readFile = async uri => {
2477
2592
  return readFile$1(uri);
2478
2593
  };
@@ -2623,6 +2738,30 @@ const handleTabsClick = (state, name) => {
2623
2738
  return selectTab(state, name);
2624
2739
  };
2625
2740
 
2741
+ const sendMessagePortToExtensionHostWorker = async port => {
2742
+ await sendMessagePortToExtensionHostWorker$1(port, 0);
2743
+ };
2744
+
2745
+ const createExtensionHostWorkerRpc = async () => {
2746
+ try {
2747
+ const rpc = await TransferMessagePortRpcParent.create({
2748
+ commandMap: {},
2749
+ send: sendMessagePortToExtensionHostWorker
2750
+ });
2751
+ return rpc;
2752
+ } catch (error) {
2753
+ throw new VError(error, `Failed to create extension host rpc`);
2754
+ }
2755
+ };
2756
+
2757
+ const {
2758
+ set} = ExtensionHost;
2759
+
2760
+ const initializeExtensionHostWorker = async () => {
2761
+ const rpc = await createExtensionHostWorkerRpc();
2762
+ set(rpc);
2763
+ };
2764
+
2626
2765
  const sendMessagePortToFileSystemWorker = async port => {
2627
2766
  await sendMessagePortToFileSystemWorker$1(port, 0);
2628
2767
  };
@@ -2641,7 +2780,7 @@ const createFileSystemWorkerRpc = async () => {
2641
2780
 
2642
2781
  const initializeFileSystemWorker = async () => {
2643
2782
  const rpc = await createFileSystemWorkerRpc();
2644
- set(rpc);
2783
+ set$2(rpc);
2645
2784
  };
2646
2785
 
2647
2786
  const sendMessagePortToMarkdownWorker = async port => {
@@ -2662,11 +2801,11 @@ const createMarkdownWorkerRpc = async () => {
2662
2801
 
2663
2802
  const initializeMarkdownWorker = async () => {
2664
2803
  const rpc = await createMarkdownWorkerRpc();
2665
- set$4(rpc);
2804
+ set$5(rpc);
2666
2805
  };
2667
2806
 
2668
2807
  const initialize = async () => {
2669
- await Promise.all([initializeMarkdownWorker(), initializeFileSystemWorker()]);
2808
+ await Promise.all([initializeMarkdownWorker(), initializeFileSystemWorker(), initializeExtensionHostWorker()]);
2670
2809
  };
2671
2810
 
2672
2811
  const existsFile = async uri => {
@@ -3176,6 +3315,7 @@ const loadContent = async (state, platform, savedState) => {
3176
3315
  displaySize,
3177
3316
  extension,
3178
3317
  extensionId,
3318
+ extensionUri,
3179
3319
  extensionVersion,
3180
3320
  features,
3181
3321
  folderSize,
@@ -3201,6 +3341,19 @@ const loadContent2 = async (state, savedState) => {
3201
3341
  return loadContent(state, state.platform, savedState);
3202
3342
  };
3203
3343
 
3344
+ const openUrl = async uri => {
3345
+ await openUrl$1(uri);
3346
+ };
3347
+
3348
+ const openImageInNewTab = async state => {
3349
+ const {
3350
+ iconSrc
3351
+ } = state;
3352
+ const absoluteIconSrc = getImageCopyUrl(iconSrc);
3353
+ await openUrl(absoluteIconSrc);
3354
+ return state;
3355
+ };
3356
+
3204
3357
  const getChangelogVirtualDom = changelogDom => {
3205
3358
  // const notImplemented = ExtensionDetailStrings.notImplemented()
3206
3359
  // TODO set tabpanel role
@@ -3685,7 +3838,7 @@ const render2 = (uid, diffResult) => {
3685
3838
  oldState,
3686
3839
  newState
3687
3840
  } = get(uid);
3688
- set$2(uid, newState, newState);
3841
+ set$1(uid, newState, newState);
3689
3842
  const commands = applyRender(oldState, newState, diffResult);
3690
3843
  return commands;
3691
3844
  };
@@ -3760,12 +3913,13 @@ const saveState = state => {
3760
3913
 
3761
3914
  const commandMap = {
3762
3915
  'ExtensionDetail.copyImage': wrapCommand(copyImage),
3763
- 'ExtensionDetail.getMenus': getMenus,
3916
+ 'ExtensionDetail.copyImageUrl': wrapCommand(copyImageUrl),
3764
3917
  'ExtensionDetail.create': create,
3765
3918
  'ExtensionDetail.diff2': diff2,
3766
3919
  'ExtensionDetail.dispose': dispose,
3767
3920
  'ExtensionDetail.getCommandIds': getCommandIds,
3768
3921
  'ExtensionDetail.getMenuEntries': getMenuEntries,
3922
+ 'ExtensionDetail.getMenus': getMenus,
3769
3923
  'ExtensionDetail.handleClickCategory': wrapCommand(handleClickCategory),
3770
3924
  'ExtensionDetail.handleClickDisable': wrapCommand(handleClickDisable),
3771
3925
  'ExtensionDetail.handleClickScrollToTop': wrapCommand(handleClickScrollToTop),
@@ -3775,14 +3929,15 @@ const commandMap = {
3775
3929
  'ExtensionDetail.handleClickUninstall': wrapCommand(handleClickUninstall),
3776
3930
  'ExtensionDetail.handleFeaturesClick': wrapCommand(handleClickFeatures),
3777
3931
  'ExtensionDetail.handleIconError': wrapCommand(handleIconError),
3932
+ 'ExtensionDetail.handleImageContextMenu': wrapCommand(handleImageContextMenu),
3778
3933
  'ExtensionDetail.handleScroll': wrapCommand(handleScroll),
3779
3934
  'ExtensionDetail.handleTabsClick': wrapCommand(handleTabsClick),
3780
3935
  'ExtensionDetail.handleWheel': wrapCommand(handleScroll),
3781
3936
  // deprecated
3782
3937
  'ExtensionDetail.loadContent2': wrapCommand(loadContent2),
3938
+ 'ExtensionDetail.openImageInNewTab': wrapCommand(openImageInNewTab),
3783
3939
  'ExtensionDetail.render2': render2,
3784
3940
  'ExtensionDetail.renderEventListeners': renderEventListeners,
3785
- 'ExtensionDetail.handleImageContextMenu': wrapCommand(handleImageContextMenu),
3786
3941
  'ExtensionDetail.resize': wrapCommand(resize),
3787
3942
  // @ts-ignore
3788
3943
  'ExtensionDetail.saveState': wrapGetter(saveState),
@@ -3796,7 +3951,7 @@ const listen = async () => {
3796
3951
  const rpc = await WebWorkerRpcClient.create({
3797
3952
  commandMap: commandMap
3798
3953
  });
3799
- set$1(rpc);
3954
+ set$3(rpc);
3800
3955
  };
3801
3956
 
3802
3957
  const main = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-detail-view",
3
- "version": "3.49.0",
3
+ "version": "3.52.0",
4
4
  "description": "Extension Detail View Worker",
5
5
  "license": "MIT",
6
6
  "author": "Lvce Editor",