@lvce-editor/extension-detail-view 5.4.0 → 5.6.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
@@ -11,10 +11,6 @@ npm ci &&
11
11
  npm test
12
12
  ```
13
13
 
14
- ## Gitpod
15
-
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
14
  ## Credits
19
15
 
20
16
  The extension detail view is based on VSCode's extension detail view.
@@ -331,6 +331,8 @@ const ExtensionDetailIconContextMenu$3 = 4091;
331
331
 
332
332
  const None$2 = 0;
333
333
 
334
+ const Web$1 = 1;
335
+
334
336
  const DebugWorker = 55;
335
337
  const ExtensionHostWorker = 44;
336
338
  const FileSystemWorker$1 = 209;
@@ -358,6 +360,8 @@ const ButtonPrimary = 'ButtonPrimary';
358
360
  const Categories = 'Categories';
359
361
  const Category = 'Category';
360
362
  const Changelog$1 = 'Changelog';
363
+ const MaskIcon = 'MaskIcon';
364
+ const ResourceIcon = 'ResourceIcon';
361
365
  const Code$1 = 'Code';
362
366
  const DefaultMarkdown = 'DefaultMarkdown';
363
367
  const DefinitionListItem = 'DefinitionListItem';
@@ -567,15 +571,21 @@ const getCellCodeVirtualDom = (value, props) => {
567
571
  }, text(value)];
568
572
  };
569
573
 
574
+ const getTitleProps = title => {
575
+ if (title) {
576
+ return {
577
+ title
578
+ };
579
+ }
580
+ return {};
581
+ };
570
582
  const getCellLinkVirtualDom = (value, props) => {
571
583
  const tdClassName = props?.className ? `${TableCell} ${props.className}` : TableCell;
572
584
  return [{
573
585
  type: Td,
574
586
  className: tdClassName,
575
587
  childCount: 1,
576
- ...(props?.title ? {
577
- title: props.title
578
- } : {})
588
+ ...getTitleProps(props?.title)
579
589
  }, {
580
590
  type: A,
581
591
  className: Link$1,
@@ -3365,13 +3375,9 @@ const {
3365
3375
 
3366
3376
  const create = (uid, uri, x, y, width, height, platform, assetDir) => {
3367
3377
  const state = {
3368
- wasActivatedByEvent: '',
3369
- activationTime: 0,
3370
- importTime: 0,
3371
- disabled: false,
3372
- status: 0,
3373
- uid,
3378
+ activationEntries: [],
3374
3379
  activationEvents: [],
3380
+ activationTime: 0,
3375
3381
  assetDir: assetDir || '',
3376
3382
  badge: '',
3377
3383
  baseUrl: '',
@@ -3380,52 +3386,57 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
3380
3386
  categories: [],
3381
3387
  changelogScrollTop: 0,
3382
3388
  changelogVirtualDom: [],
3383
- extensionUri: '',
3384
3389
  commands: [],
3385
- hasReadme: false,
3386
3390
  description: '',
3387
3391
  detailsVirtualDom: [],
3392
+ disabled: false,
3388
3393
  displaySize: '',
3389
3394
  downloadCount: 'n/a',
3390
- installationEntries: [],
3391
3395
  extension: {},
3392
3396
  extensionId: '',
3397
+ extensionUri: '',
3393
3398
  extensionVersion: '',
3394
3399
  features: [],
3395
3400
  featuresVirtualDom: [],
3396
3401
  focus: 0,
3397
3402
  folderSize: 0,
3398
3403
  hasColorTheme: false,
3404
+ hasReadme: false,
3399
3405
  iconSrc: '',
3406
+ importTime: 0,
3407
+ installationEntries: [],
3400
3408
  jsonValidation: [],
3409
+ locationProtocol: '',
3410
+ marketplaceEntries: [],
3401
3411
  name: '',
3412
+ paddingLeft: 0,
3413
+ paddingRight: 0,
3402
3414
  platform,
3403
3415
  programmingLanguages: [],
3404
3416
  rating: 'n/a',
3405
3417
  readmeScrollTop: 0,
3418
+ readmeUrl: '',
3406
3419
  resources: [],
3407
3420
  scrollSource: 0,
3408
3421
  scrollToTopButtonEnabled: false,
3409
- marketplaceEntries: [],
3410
3422
  selectedFeature: '',
3411
3423
  selectedTab: '',
3412
3424
  settings: [],
3413
3425
  settingsButtonEnabled: false,
3414
3426
  showAdditionalDetailsBreakpoint: 700,
3427
+ showSideBar: true,
3428
+ sideBarWidth: 0,
3415
3429
  sizeOnDisk: 0,
3416
3430
  sizeValue: 0,
3431
+ status: 0,
3417
3432
  tabs: [],
3418
3433
  themesMarkdownDom: [],
3434
+ uid,
3419
3435
  uri,
3436
+ wasActivatedByEvent: '',
3420
3437
  webViews: [],
3421
3438
  width,
3422
- readmeUrl: '',
3423
- paddingLeft: 0,
3424
- paddingRight: 0,
3425
- showSideBar: true,
3426
- sideBarWidth: 0,
3427
- locationProtocol: '',
3428
- activationEntries: []
3439
+ showSizeLink: false
3429
3440
  };
3430
3441
  set(uid, state, state);
3431
3442
  };
@@ -3439,7 +3450,7 @@ const isEqual$2 = (oldState, newState) => {
3439
3450
  };
3440
3451
 
3441
3452
  const isEqual$1 = (oldState, newState) => {
3442
- return oldState.activationEvents === newState.activationEvents && oldState.badge === newState.badge && oldState.buttons === newState.buttons && oldState.categories === newState.categories && oldState.changelogVirtualDom === newState.changelogVirtualDom && oldState.commands === newState.commands && oldState.description === newState.description && oldState.detailsVirtualDom === newState.detailsVirtualDom && oldState.disabled === newState.disabled && oldState.displaySize === newState.displaySize && oldState.extensionId === newState.extensionId && oldState.extensionVersion === newState.extensionVersion && oldState.features === newState.features && oldState.jsonValidation === newState.jsonValidation && oldState.resources === newState.resources && oldState.selectedFeature === newState.selectedFeature && oldState.selectedTab === newState.selectedTab && oldState.settings === newState.settings && oldState.showSideBar === newState.showSideBar && oldState.sizeValue === newState.sizeValue && oldState.themesMarkdownDom === newState.themesMarkdownDom && oldState.webViews === newState.webViews;
3453
+ return oldState.activationEvents === newState.activationEvents && oldState.badge === newState.badge && oldState.buttons === newState.buttons && oldState.categories === newState.categories && oldState.changelogVirtualDom === newState.changelogVirtualDom && oldState.commands === newState.commands && oldState.description === newState.description && oldState.detailsVirtualDom === newState.detailsVirtualDom && oldState.disabled === newState.disabled && oldState.displaySize === newState.displaySize && oldState.extensionId === newState.extensionId && oldState.extensionVersion === newState.extensionVersion && oldState.features === newState.features && oldState.installationEntries === newState.installationEntries && oldState.jsonValidation === newState.jsonValidation && oldState.resources === newState.resources && oldState.selectedFeature === newState.selectedFeature && oldState.selectedTab === newState.selectedTab && oldState.settings === newState.settings && oldState.showSideBar === newState.showSideBar && oldState.sizeValue === newState.sizeValue && oldState.themesMarkdownDom === newState.themesMarkdownDom && oldState.webViews === newState.webViews;
3443
3454
  };
3444
3455
 
3445
3456
  const User = 1;
@@ -4057,6 +4068,53 @@ const handleTabsClick = (state, name) => {
4057
4068
  return selectTab(state, name);
4058
4069
  };
4059
4070
 
4071
+ const getSizeEntries = (showSizeLink, displaySize, extensionUri) => {
4072
+ if (!showSizeLink) {
4073
+ return [];
4074
+ }
4075
+ return [{
4076
+ key: size(),
4077
+ value: displaySize,
4078
+ onClick: HandleClickSize,
4079
+ title: extensionUri
4080
+ }];
4081
+ };
4082
+
4083
+ const getInstallationEntries = (displaySize, extensionId, extensionVersion, extensionUri, showSizeLink) => {
4084
+ const entries = [{
4085
+ key: identifier(),
4086
+ value: extensionId,
4087
+ odd: true,
4088
+ code: true
4089
+ }, {
4090
+ key: version(),
4091
+ value: extensionVersion,
4092
+ code: true
4093
+ }, {
4094
+ key: lastUpdated(),
4095
+ value: 'n/a',
4096
+ // TODO get this from somewhere
4097
+ odd: true
4098
+ }, ...getSizeEntries(showSizeLink, displaySize, extensionUri)];
4099
+ return entries;
4100
+ };
4101
+
4102
+ const hideSizeLink = state => {
4103
+ const {
4104
+ displaySize,
4105
+ extensionId,
4106
+ extensionVersion,
4107
+ extensionUri
4108
+ } = state;
4109
+ const newShowSizeLink = false;
4110
+ const installationEntries = getInstallationEntries(displaySize, extensionId, extensionVersion, extensionUri, newShowSizeLink);
4111
+ return {
4112
+ ...state,
4113
+ installationEntries,
4114
+ showSizeLink: newShowSizeLink
4115
+ };
4116
+ };
4117
+
4060
4118
  const sendMessagePortToExtensionHostWorker = async port => {
4061
4119
  await sendMessagePortToExtensionHostWorker$1(port, 0);
4062
4120
  };
@@ -4508,30 +4566,6 @@ const getFolderSize = async uri => {
4508
4566
  }
4509
4567
  };
4510
4568
 
4511
- const getInstallationEntries = (displaySize, extensionId, extensionVersion, extensionUri) => {
4512
- const entries = [{
4513
- key: identifier(),
4514
- value: extensionId,
4515
- odd: true,
4516
- code: true
4517
- }, {
4518
- key: version(),
4519
- value: extensionVersion,
4520
- code: true
4521
- }, {
4522
- key: lastUpdated(),
4523
- value: 'n/a',
4524
- // TODO get this from somewhere
4525
- odd: true
4526
- }, {
4527
- key: size(),
4528
- value: displaySize,
4529
- onClick: HandleClickSize,
4530
- title: extensionUri
4531
- }];
4532
- return entries;
4533
- };
4534
-
4535
4569
  const getMarketplaceEntries = isBuiltin => {
4536
4570
  if (isBuiltin) {
4537
4571
  return [];
@@ -4546,6 +4580,11 @@ const getMarketplaceEntries = isBuiltin => {
4546
4580
  }];
4547
4581
  };
4548
4582
 
4583
+ const getLicenseLink = extension => {
4584
+ // TODO
4585
+ return '#';
4586
+ };
4587
+
4549
4588
  const getRepositoryLinkRaw = extension => {
4550
4589
  if (extension && hasProperty(extension, 'repository') && typeof extension.repository === 'string') {
4551
4590
  return extension.repository; // TODO watch out for javascript: or other invalid links or path traversal
@@ -4573,36 +4612,41 @@ const getResources = (isBuiltin, extension) => {
4573
4612
  return [];
4574
4613
  }
4575
4614
  const repositoryLink = getRepositoryLink(extension);
4615
+ const licenseLink = getLicenseLink();
4576
4616
  // TODO
4577
4617
  return [{
4578
4618
  label: marketplace(),
4579
- url: '#'
4619
+ url: '#',
4620
+ icon: 'LinkExternal'
4580
4621
  }, {
4581
4622
  label: issues(),
4582
- url: '#'
4623
+ url: '#',
4624
+ icon: 'LinkExternal'
4583
4625
  }, {
4584
4626
  label: repository(),
4585
- url: repositoryLink
4627
+ url: repositoryLink,
4628
+ icon: 'Repo'
4586
4629
  }, {
4587
4630
  label: license(),
4588
- url: '#'
4631
+ url: licenseLink,
4632
+ icon: 'LinkExternal'
4589
4633
  }];
4590
4634
  };
4591
4635
 
4592
- const loadSideBarContent = async (extensionId, extensionVersion, extensionUri, isBuiltin, extension) => {
4636
+ const loadSideBarContent = async (extensionId, extensionVersion, extensionUri, isBuiltin, extension, showSizeLink) => {
4593
4637
  const folderSize = await getFolderSize(extensionUri);
4594
4638
  const displaySize = getDisplaySize(folderSize);
4595
- const installationEntries = getInstallationEntries(displaySize, extensionId, extensionVersion, extensionUri);
4639
+ const installationEntries = getInstallationEntries(displaySize, extensionId, extensionVersion, extensionUri, showSizeLink);
4596
4640
  const marketplaceEntries = getMarketplaceEntries(isBuiltin);
4597
4641
  const categories = getCategories(extension);
4598
4642
  const resources = getResources(isBuiltin, extension);
4599
4643
  return {
4644
+ categories,
4645
+ displaySize,
4646
+ folderSize,
4600
4647
  installationEntries,
4601
4648
  marketplaceEntries,
4602
- displaySize,
4603
- categories,
4604
- resources,
4605
- folderSize
4649
+ resources
4606
4650
  };
4607
4651
  };
4608
4652
 
@@ -4702,6 +4746,7 @@ const loadContent = async (state, platform, savedState, isTest = false) => {
4702
4746
  const tabs = getTabs(selectedTab, hasReadme, hasFeatures, hasChangelog);
4703
4747
  const enabledTabs = tabs.filter(tab => tab.enabled);
4704
4748
  const sizeValue = getViewletSize(width || 0);
4749
+ const showSizeLink = platform !== Web$1;
4705
4750
  const {
4706
4751
  installationEntries,
4707
4752
  marketplaceEntries,
@@ -4709,7 +4754,7 @@ const loadContent = async (state, platform, savedState, isTest = false) => {
4709
4754
  categories,
4710
4755
  resources,
4711
4756
  folderSize
4712
- } = await loadSideBarContent(extensionId, extensionVersion, extensionUri, isBuiltin, extension);
4757
+ } = await loadSideBarContent(extensionId, extensionVersion, extensionUri, isBuiltin, extension, showSizeLink);
4713
4758
  const padding = getPadding(width);
4714
4759
  const sideBarWidth = getSideBarWidth(width);
4715
4760
  const showSideBar = sideBarWidth > 0;
@@ -4735,6 +4780,7 @@ const loadContent = async (state, platform, savedState, isTest = false) => {
4735
4780
  hasReadme,
4736
4781
  iconSrc,
4737
4782
  installationEntries,
4783
+ locationProtocol,
4738
4784
  marketplaceEntries,
4739
4785
  name,
4740
4786
  paddingLeft: padding,
@@ -4747,11 +4793,11 @@ const loadContent = async (state, platform, savedState, isTest = false) => {
4747
4793
  scrollToTopButtonEnabled: true,
4748
4794
  selectedTab,
4749
4795
  showSideBar,
4796
+ showSizeLink,
4750
4797
  sideBarWidth,
4751
4798
  sizeOnDisk: size,
4752
4799
  sizeValue,
4753
- tabs: enabledTabs,
4754
- locationProtocol
4800
+ tabs: enabledTabs
4755
4801
  };
4756
4802
  };
4757
4803
 
@@ -4927,6 +4973,38 @@ const getMoreInfoVirtualDom = items => {
4927
4973
  }, ...items.flatMap(getMoreInfoEntryVirtualDom)];
4928
4974
  };
4929
4975
 
4976
+ const getIconDom = icon => {
4977
+ if (!icon) {
4978
+ return [];
4979
+ }
4980
+ return [{
4981
+ type: Div,
4982
+ className: ResourceIcon,
4983
+ childCount: 1
4984
+ }, {
4985
+ type: Div,
4986
+ className: mergeClassNames(MaskIcon, `MaskIcon${icon}`),
4987
+ childCount: 0
4988
+ }];
4989
+ };
4990
+ const getResourceLinkVirtualDom = resource => {
4991
+ const {
4992
+ label,
4993
+ url,
4994
+ icon
4995
+ } = resource;
4996
+ const iconDom = getIconDom(icon);
4997
+ const iconDomCount = iconDom.length > 0 ? 1 : 0;
4998
+ return [{
4999
+ type: A,
5000
+ className: Resource,
5001
+ childCount: 1 + iconDomCount,
5002
+ target: '_blank',
5003
+ rel: 'noopener noreferrer',
5004
+ href: url
5005
+ }, ...iconDom, text(label)];
5006
+ };
5007
+
4930
5008
  const resourceNode = {
4931
5009
  // TODO use link with url
4932
5010
  type: Div,
@@ -4939,14 +5017,7 @@ const getResourceVirtualDom = resource => {
4939
5017
  url
4940
5018
  } = resource;
4941
5019
  if (url && url !== '#') {
4942
- return [{
4943
- type: A,
4944
- className: Resource,
4945
- childCount: 1,
4946
- target: '_blank',
4947
- rel: 'noopener noreferrer',
4948
- href: url
4949
- }, text(label)];
5020
+ return getResourceLinkVirtualDom(resource);
4950
5021
  }
4951
5022
  return [resourceNode, text(label)];
4952
5023
  };
@@ -5439,6 +5510,7 @@ const commandMap = {
5439
5510
  'ExtensionDetail.handleTabsClick': wrapCommand(handleTabsClick),
5440
5511
  'ExtensionDetail.handleWheel': wrapCommand(handleScroll),
5441
5512
  // deprecated
5513
+ 'ExtensionDetail.hideSizeLink': wrapCommand(hideSizeLink),
5442
5514
  'ExtensionDetail.initialize': initialize,
5443
5515
  'ExtensionDetail.loadContent2': wrapCommand(loadContent2),
5444
5516
  'ExtensionDetail.openImageInNewTab': wrapCommand(openImageInNewTab),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-detail-view",
3
- "version": "5.4.0",
3
+ "version": "5.6.0",
4
4
  "description": "Extension Detail View Worker",
5
5
  "repository": {
6
6
  "type": "git",