@lvce-editor/extension-detail-view 3.48.0 → 3.50.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,7 @@ 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.';
30
33
  const OpenImageInNewTab = 'Open Image in New Tab';
31
34
  const OpenInNewTab = 'Open in New Tab';
32
35
  const ProgrammingLanguages$1 = 'Programming Languages';
@@ -34,7 +37,6 @@ const Resources$1 = 'Resources';
34
37
  const SaveImageAs = 'Save Image as';
35
38
  const Schema = 'Schema';
36
39
  const ScrollToTop$1 = 'Scroll to top';
37
- const NoReadmeFound = 'No Readme Found.';
38
40
  const Selector = 'Selector';
39
41
  const SetColorTheme$1 = 'Set Color Theme';
40
42
  const Settings$1 = 'Settings';
@@ -57,6 +59,12 @@ const resources = () => {
57
59
  const copy = () => {
58
60
  return i18nString(Copy);
59
61
  };
62
+ const copyImage$1 = () => {
63
+ return i18nString(CopyImage);
64
+ };
65
+ const copyImageUrl$1 = () => {
66
+ return i18nString(CopyImageUrl);
67
+ };
60
68
  const changelog = () => {
61
69
  return i18nString(Changelog$2);
62
70
  };
@@ -78,7 +86,7 @@ const openInNewTab = () => {
78
86
  const label = () => {
79
87
  return i18nString(Label);
80
88
  };
81
- const openImageInNewTab = () => {
89
+ const openImageInNewTab$1 = () => {
82
90
  return i18nString(OpenImageInNewTab);
83
91
  };
84
92
  const saveImageAs = () => {
@@ -671,6 +679,7 @@ const HandleClickSize = 'handleClickSize';
671
679
  const HandleClickUninstall = 'handleClickUninstall';
672
680
  const HandleFeaturesClick = 'handleFeaturesClick';
673
681
  const HandleIconError = 'handleIconError';
682
+ const HandleImageContextMenu = 'handleImageContextMenu';
674
683
  const HandleReadmeContextMenu = 'handleReadmeContextMenu';
675
684
  const HandleReadmeScroll = 'handleReadmeScroll';
676
685
  const HandleTabsClick = 'handleTabsClick';
@@ -779,6 +788,9 @@ const {
779
788
  invoke: invoke$3,
780
789
  invokeAndTransfer: invokeAndTransfer$3,
781
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
+ };
782
794
  const setColorTheme$2 = async id => {
783
795
  // @ts-ignore
784
796
  return invoke$3(/* ColorTheme.setColorTheme */'ColorTheme.setColorTheme', /* colorThemeId */id);
@@ -793,6 +805,13 @@ const sendMessagePortToFileSystemWorker$2 = async (port, rpcId) => {
793
805
  // @ts-ignore
794
806
  await invokeAndTransfer$3('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
795
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
+ };
796
815
  const getAllExtensions$2 = async () => {
797
816
  return invoke$3('ExtensionManagement.getAllExtensions');
798
817
  };
@@ -819,6 +838,7 @@ const RendererWorker = {
819
838
  __proto__: null,
820
839
  getAllExtensions: getAllExtensions$2,
821
840
  getExtension: getExtension$3,
841
+ invoke: invoke$3,
822
842
  openExtensionSearch: openExtensionSearch$2,
823
843
  openNativeFolder: openNativeFolder$1,
824
844
  sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$2,
@@ -826,7 +846,11 @@ const RendererWorker = {
826
846
  set: set$3$1,
827
847
  setColorTheme: setColorTheme$2,
828
848
  setExtensionsSearchValue: setExtensionsSearchValue$1,
829
- uninstallExtension: uninstallExtension$1};
849
+ showContextMenu: showContextMenu$1,
850
+ uninstallExtension: uninstallExtension$1,
851
+ writeClipBoardImage: writeClipBoardImage$1,
852
+ writeClipBoardText: writeClipBoardText$1
853
+ };
830
854
 
831
855
  const {
832
856
  set: set$4,
@@ -1929,7 +1953,7 @@ const send = (transport, method, ...params) => {
1929
1953
  const message = create$4(method, params);
1930
1954
  transport.send(message);
1931
1955
  };
1932
- const invoke$1 = (ipc, method, ...params) => {
1956
+ const invoke$2 = (ipc, method, ...params) => {
1933
1957
  return invokeHelper(ipc, method, params, false);
1934
1958
  };
1935
1959
  const invokeAndTransfer = (ipc, method, ...params) => {
@@ -1962,7 +1986,7 @@ const createRpc = ipc => {
1962
1986
  send(ipc, method, ...params);
1963
1987
  },
1964
1988
  invoke(method, ...params) {
1965
- return invoke$1(ipc, method, ...params);
1989
+ return invoke$2(ipc, method, ...params);
1966
1990
  },
1967
1991
  invokeAndTransfer(method, ...params) {
1968
1992
  return invokeAndTransfer(ipc, method, ...params);
@@ -2136,16 +2160,81 @@ const terminate = () => {
2136
2160
  globalThis.close();
2137
2161
  };
2138
2162
 
2139
- const copyImage = state => {
2163
+ const {
2164
+ getAllExtensions: getAllExtensions$1,
2165
+ getExtension: getExtension$2,
2166
+ invoke: invoke$1,
2167
+ openExtensionSearch: openExtensionSearch$1,
2168
+ openNativeFolder,
2169
+ writeClipBoardText,
2170
+ sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$1,
2171
+ sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$1,
2172
+ set: set$2,
2173
+ setColorTheme: setColorTheme$1,
2174
+ setExtensionsSearchValue,
2175
+ showContextMenu,
2176
+ uninstallExtension,
2177
+ writeClipBoardImage
2178
+ } = RendererWorker;
2179
+ const openUrl$1 = async uri => {
2180
+ // @ts-ignore
2181
+ await invoke$1('Open.openUrl', uri);
2182
+ };
2183
+
2184
+ const writeClipboardImage = async blob => {
2185
+ await writeClipBoardImage(blob);
2186
+ };
2187
+ const writeText = async text => {
2188
+ await writeClipBoardText(text);
2189
+ };
2190
+
2191
+ const {
2192
+ set: set$1,
2193
+ exists,
2194
+ readFile: readFile$1,
2195
+ invoke
2196
+ } = FileSystemWorker;
2197
+ const readFileAsBlob = async uri => {
2198
+ // TODO maybe readAsObjectUrl?
2199
+ // @ts-ignore
2200
+ return invoke('FileSystem.readFileAsBlob', uri);
2201
+ };
2202
+
2203
+ const getImageCopyUrl = iconSrc => {
2204
+ // TODO support gitpod url prefixes
2205
+ // @ts-ignore
2206
+ const prefix = `${location.protocol}//${location.host}`;
2207
+ const absoluteIconSrc = `${prefix}${iconSrc}`;
2208
+ return absoluteIconSrc;
2209
+ };
2210
+
2211
+ const copyImage = async state => {
2212
+ const {
2213
+ iconSrc
2214
+ } = state;
2215
+ const absoluteIconSrc = getImageCopyUrl(iconSrc);
2216
+ const blob = await readFileAsBlob(absoluteIconSrc);
2217
+ await writeClipboardImage(blob);
2218
+ return state;
2219
+ };
2220
+
2221
+ const copyImageUrl = async state => {
2222
+ const {
2223
+ iconSrc
2224
+ } = state;
2225
+ const absoluteIconSrc = getImageCopyUrl(iconSrc);
2226
+ await writeText(absoluteIconSrc);
2140
2227
  return state;
2141
2228
  };
2142
2229
 
2143
2230
  const {
2144
2231
  get,
2145
- set: set$2,
2232
+ set,
2146
2233
  dispose: dispose$1,
2147
2234
  wrapCommand,
2148
- wrapGetter
2235
+ wrapGetter,
2236
+ getCommandIds,
2237
+ registerCommands
2149
2238
  } = create$1();
2150
2239
 
2151
2240
  const create = (uid, uri, x, y, width, height, platform, assetDir) => {
@@ -2160,6 +2249,7 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
2160
2249
  categories: [],
2161
2250
  changelogScrollTop: 0,
2162
2251
  changelogVirtualDom: [],
2252
+ extensionUri: '',
2163
2253
  commands: [],
2164
2254
  hasReadme: false,
2165
2255
  description: '',
@@ -2198,7 +2288,7 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
2198
2288
  width,
2199
2289
  readmeUrl: ''
2200
2290
  };
2201
- set$2(uid, state, state);
2291
+ set(uid, state, state);
2202
2292
  };
2203
2293
 
2204
2294
  const isEqual$2 = (oldState, newState) => {
@@ -2242,12 +2332,6 @@ const dispose = uid => {
2242
2332
  dispose$1(uid);
2243
2333
  };
2244
2334
 
2245
- const commandIds = ['copyImage', 'getMenuEntries', 'handleClickCategory', 'handleClickDisable', 'handleClickScrollToTop', 'handleClickSetColorTheme', 'handleClickSettings', 'handleClickSize', 'handleClickUninstall', 'handleFeaturesClick', 'handleIconError', 'handleScroll', 'handleTabsClick', 'handleWheel', 'renderEventListeners', 'resize', 'saveState', 'selectTab', 'terminate'];
2246
-
2247
- const getCommandIds = () => {
2248
- return commandIds;
2249
- };
2250
-
2251
2335
  const None = 0;
2252
2336
 
2253
2337
  const getCopyMenuEntry = () => ({
@@ -2263,7 +2347,7 @@ const getImageMenuEntries = props => {
2263
2347
  }
2264
2348
  return [{
2265
2349
  id: 'openImageInNewTab',
2266
- label: openImageInNewTab(),
2350
+ label: openImageInNewTab$1(),
2267
2351
  flags: None,
2268
2352
  command: 'Open.openUrl',
2269
2353
  args: [props.url || '']
@@ -2291,18 +2375,32 @@ const getLinkMenuEntries = props => {
2291
2375
 
2292
2376
  const getMenuEntries = props => [...getLinkMenuEntries(props), ...getImageMenuEntries(props), getCopyMenuEntry()];
2293
2377
 
2294
- const {
2295
- getAllExtensions: getAllExtensions$1,
2296
- getExtension: getExtension$2,
2297
- openExtensionSearch: openExtensionSearch$1,
2298
- openNativeFolder,
2299
- sendMessagePortToFileSystemWorker: sendMessagePortToFileSystemWorker$1,
2300
- sendMessagePortToMarkdownWorker: sendMessagePortToMarkdownWorker$1,
2301
- set: set$1,
2302
- setColorTheme: setColorTheme$1,
2303
- setExtensionsSearchValue,
2304
- uninstallExtension
2305
- } = RendererWorker;
2378
+ const ExtensionDetailIconContextMenu = 4091;
2379
+
2380
+ const getMenus = () => {
2381
+ return [{
2382
+ id: ExtensionDetailIconContextMenu,
2383
+ entries: [{
2384
+ id: 'openImageInNewTab',
2385
+ label: openImageInNewTab$1(),
2386
+ flags: None,
2387
+ command: 'ExtensionDetail.openImageInNewTab',
2388
+ args: []
2389
+ }, {
2390
+ id: 'copyImage',
2391
+ label: copyImage$1(),
2392
+ flags: None,
2393
+ command: 'ExtensionDetail.copyImage',
2394
+ args: []
2395
+ }, {
2396
+ id: 'copyImageUrl',
2397
+ label: copyImageUrl$1(),
2398
+ flags: None,
2399
+ command: 'ExtensionDetail.copyImageUrl',
2400
+ args: []
2401
+ }]
2402
+ }];
2403
+ };
2306
2404
 
2307
2405
  const openExtensionSearch = async searchValue => {
2308
2406
  await openExtensionSearch$1();
@@ -2437,6 +2535,15 @@ const handleIconError = state => {
2437
2535
  };
2438
2536
  };
2439
2537
 
2538
+ const show = async (menuId, x, y) => {
2539
+ await showContextMenu(x, y, menuId);
2540
+ };
2541
+
2542
+ const handleImageContextMenu = async (state, eventX, eventY) => {
2543
+ await show(ExtensionDetailIconContextMenu, eventX, eventY);
2544
+ return state;
2545
+ };
2546
+
2440
2547
  const handleScroll = (state, scrollTop, scrollSource = Script) => {
2441
2548
  const newScrollTop = Math.max(0, scrollTop);
2442
2549
  return {
@@ -2446,13 +2553,6 @@ const handleScroll = (state, scrollTop, scrollSource = Script) => {
2446
2553
  };
2447
2554
  };
2448
2555
 
2449
- const {
2450
- set,
2451
- exists,
2452
- readFile: readFile$1,
2453
- invoke
2454
- } = FileSystemWorker;
2455
-
2456
2556
  const readFile = async uri => {
2457
2557
  return readFile$1(uri);
2458
2558
  };
@@ -2621,7 +2721,7 @@ const createFileSystemWorkerRpc = async () => {
2621
2721
 
2622
2722
  const initializeFileSystemWorker = async () => {
2623
2723
  const rpc = await createFileSystemWorkerRpc();
2624
- set(rpc);
2724
+ set$1(rpc);
2625
2725
  };
2626
2726
 
2627
2727
  const sendMessagePortToMarkdownWorker = async port => {
@@ -3156,6 +3256,7 @@ const loadContent = async (state, platform, savedState) => {
3156
3256
  displaySize,
3157
3257
  extension,
3158
3258
  extensionId,
3259
+ extensionUri,
3159
3260
  extensionVersion,
3160
3261
  features,
3161
3262
  folderSize,
@@ -3181,6 +3282,19 @@ const loadContent2 = async (state, savedState) => {
3181
3282
  return loadContent(state, state.platform, savedState);
3182
3283
  };
3183
3284
 
3285
+ const openUrl = async uri => {
3286
+ await openUrl$1(uri);
3287
+ };
3288
+
3289
+ const openImageInNewTab = async state => {
3290
+ const {
3291
+ iconSrc
3292
+ } = state;
3293
+ const absoluteIconSrc = getImageCopyUrl(iconSrc);
3294
+ await openUrl(absoluteIconSrc);
3295
+ return state;
3296
+ };
3297
+
3184
3298
  const getChangelogVirtualDom = changelogDom => {
3185
3299
  // const notImplemented = ExtensionDetailStrings.notImplemented()
3186
3300
  // TODO set tabpanel role
@@ -3481,8 +3595,9 @@ const getExtensionDetailIconVirtualDom = iconSrc => {
3481
3595
  type: VirtualDomElements.Img,
3482
3596
  className: ExtensionDetailIcon,
3483
3597
  alt: '',
3484
- draggable: false,
3485
3598
  childCount: 0,
3599
+ draggable: false,
3600
+ onContextMenu: HandleImageContextMenu,
3486
3601
  src: iconSrc
3487
3602
  };
3488
3603
  };
@@ -3664,7 +3779,7 @@ const render2 = (uid, diffResult) => {
3664
3779
  oldState,
3665
3780
  newState
3666
3781
  } = get(uid);
3667
- set$2(uid, newState, newState);
3782
+ set(uid, newState, newState);
3668
3783
  const commands = applyRender(oldState, newState, diffResult);
3669
3784
  return commands;
3670
3785
  };
@@ -3679,6 +3794,10 @@ const renderEventListeners = () => {
3679
3794
  }, {
3680
3795
  name: HandleReadmeContextMenu,
3681
3796
  params: ['handleReadmeContextMenu', 'event.clientX', 'event.clientY', 'event.target.href', 'event.target.src']
3797
+ }, {
3798
+ name: HandleImageContextMenu,
3799
+ params: ['handleImageContextMenu', 'event.clientX', 'event.clientY'],
3800
+ preventDefault: true
3682
3801
  }, {
3683
3802
  name: HandleReadmeScroll,
3684
3803
  params: ['handleScroll', 'event.target.scrollTop', User],
@@ -3735,11 +3854,13 @@ const saveState = state => {
3735
3854
 
3736
3855
  const commandMap = {
3737
3856
  'ExtensionDetail.copyImage': wrapCommand(copyImage),
3857
+ 'ExtensionDetail.copyImageUrl': wrapCommand(copyImageUrl),
3738
3858
  'ExtensionDetail.create': create,
3739
3859
  'ExtensionDetail.diff2': diff2,
3740
3860
  'ExtensionDetail.dispose': dispose,
3741
3861
  'ExtensionDetail.getCommandIds': getCommandIds,
3742
3862
  'ExtensionDetail.getMenuEntries': getMenuEntries,
3863
+ 'ExtensionDetail.getMenus': getMenus,
3743
3864
  'ExtensionDetail.handleClickCategory': wrapCommand(handleClickCategory),
3744
3865
  'ExtensionDetail.handleClickDisable': wrapCommand(handleClickDisable),
3745
3866
  'ExtensionDetail.handleClickScrollToTop': wrapCommand(handleClickScrollToTop),
@@ -3749,11 +3870,13 @@ const commandMap = {
3749
3870
  'ExtensionDetail.handleClickUninstall': wrapCommand(handleClickUninstall),
3750
3871
  'ExtensionDetail.handleFeaturesClick': wrapCommand(handleClickFeatures),
3751
3872
  'ExtensionDetail.handleIconError': wrapCommand(handleIconError),
3873
+ 'ExtensionDetail.handleImageContextMenu': wrapCommand(handleImageContextMenu),
3752
3874
  'ExtensionDetail.handleScroll': wrapCommand(handleScroll),
3753
3875
  'ExtensionDetail.handleTabsClick': wrapCommand(handleTabsClick),
3754
3876
  'ExtensionDetail.handleWheel': wrapCommand(handleScroll),
3755
3877
  // deprecated
3756
3878
  'ExtensionDetail.loadContent2': wrapCommand(loadContent2),
3879
+ 'ExtensionDetail.openImageInNewTab': wrapCommand(openImageInNewTab),
3757
3880
  'ExtensionDetail.render2': render2,
3758
3881
  'ExtensionDetail.renderEventListeners': renderEventListeners,
3759
3882
  'ExtensionDetail.resize': wrapCommand(resize),
@@ -3765,10 +3888,11 @@ const commandMap = {
3765
3888
  };
3766
3889
 
3767
3890
  const listen = async () => {
3891
+ registerCommands(commandMap);
3768
3892
  const rpc = await WebWorkerRpcClient.create({
3769
3893
  commandMap: commandMap
3770
3894
  });
3771
- set$1(rpc);
3895
+ set$2(rpc);
3772
3896
  };
3773
3897
 
3774
3898
  const main = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-detail-view",
3
- "version": "3.48.0",
3
+ "version": "3.50.0",
4
4
  "description": "Extension Detail View Worker",
5
5
  "license": "MIT",
6
6
  "author": "Lvce Editor",