@lvce-editor/extension-detail-view 3.0.0 → 3.1.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.
@@ -846,8 +846,6 @@ const WebWorkerRpcClient = {
846
846
  create
847
847
  };
848
848
 
849
- const Document = 'document';
850
-
851
849
  const ExtensionDetail = 'ExtensionDetail';
852
850
  const ExtensionDetailDescription = 'ExtensionDetailDescription';
853
851
  const ExtensionDetailHeader = 'ExtensionDetailHeader';
@@ -857,182 +855,145 @@ const ExtensionDetailName = 'ExtensionDetailName';
857
855
  const Markdown = 'Markdown';
858
856
  const Viewlet = 'Viewlet';
859
857
 
860
- const HandleReadmeContextMenu = 'handleReadmeContextMenu';
861
-
862
- const Div$1 = 4;
863
- const H1$1 = 5;
864
- const Span$1 = 8;
865
- const Text$1 = 12;
866
- const Img$1 = 17;
867
- const H2$1 = 22;
868
- const H3$1 = 23;
869
- const H4$1 = 24;
870
- const H5$1 = 25;
871
- const Article$1 = 27;
872
- const Aside$1 = 28;
873
- const Footer$1 = 29;
874
- const Header$1 = 30;
875
- const Nav$1 = 40;
876
- const Section$1 = 41;
877
- const Search$1 = 42;
878
- const Dd$1 = 43;
879
- const Dl$1 = 44;
880
- const Figcaption$1 = 45;
881
- const Figure$1 = 46;
882
- const Hr$1 = 47;
883
- const Li$1 = 48;
884
- const Ol$1 = 49;
885
- const P$1 = 50;
886
- const Pre$1 = 51;
887
- const A$1 = 53;
888
- const Abbr$1 = 54;
889
- const Br$1 = 55;
890
- const Cite$1 = 56;
891
- const Data$1 = 57;
892
- const Time$1 = 58;
893
- const Tfoot$1 = 59;
894
-
895
- const text = data => {
896
- return {
897
- type: Text$1,
898
- text: data,
899
- childCount: 0
900
- };
901
- };
858
+ const Document = 'document';
859
+ const TabList = 'tablist';
860
+ const Tab = 'tab';
902
861
 
903
- const getExtensionDetailHeaderVirtualDom = extensionDetail => {
904
- const {
905
- name,
906
- iconSrc,
907
- description
908
- } = extensionDetail;
909
- const dom = [{
910
- type: Div$1,
911
- className: ExtensionDetailHeader,
912
- childCount: 2
913
- }, {
914
- type: Img$1,
915
- className: ExtensionDetailIcon,
916
- alt: '',
917
- draggable: false,
918
- childCount: 0,
919
- src: iconSrc
920
- }, {
921
- type: Div$1,
922
- className: ExtensionDetailHeaderDetails,
923
- childCount: 2
924
- }, {
925
- type: Div$1,
926
- className: ExtensionDetailName,
927
- childCount: 1
928
- }, text(name), {
929
- type: Div$1,
930
- className: ExtensionDetailDescription,
931
- childCount: 1
932
- }, text(description)];
933
- return dom;
934
- };
862
+ const HandleReadmeContextMenu = 'handleReadmeContextMenu';
935
863
 
936
864
  const allowedMarkdownAttributes = ['src', 'id', 'className', 'title', 'alt', 'href', 'target', 'rel'];
937
865
 
938
- const Div = 'div';
939
- const H1 = 'h1';
940
- const H2 = 'h2';
941
- const H3 = 'h3';
942
- const H4 = 'h4';
943
- const H5 = 'h5';
944
- const Img = 'img';
945
- const Span = 'span';
946
- const Article = 'article';
947
- const Aside = 'aside';
948
- const Footer = 'footer';
949
- const Header = 'header';
950
- const Nav = 'nav';
951
- const Section = 'section';
952
- const Search = 'search';
953
- const Dd = 'dd';
954
- const Dl = 'dl';
955
- const Figcaption = 'figcaption';
956
- const Figure = 'figure';
957
- const Hr = 'hr';
958
- const Li = 'li';
959
- const Ol = 'ol';
960
- const P = 'p';
961
- const Pre = 'pre';
962
- const A = 'a';
963
- const Abbr = 'abbr';
964
- const Br = 'br';
965
- const Cite = 'cite';
966
- const Data = 'data';
967
- const Time = 'time';
968
- const Tfoot = 'tfoot';
866
+ const Div$1 = 'div';
867
+ const H1$1 = 'h1';
868
+ const H2$1 = 'h2';
869
+ const H3$1 = 'h3';
870
+ const H4$1 = 'h4';
871
+ const H5$1 = 'h5';
872
+ const Img$1 = 'img';
873
+ const Span$1 = 'span';
874
+ const Article$1 = 'article';
875
+ const Aside$1 = 'aside';
876
+ const Footer$1 = 'footer';
877
+ const Header$1 = 'header';
878
+ const Nav$1 = 'nav';
879
+ const Section$1 = 'section';
880
+ const Search$1 = 'search';
881
+ const Dd$1 = 'dd';
882
+ const Dl$1 = 'dl';
883
+ const Figcaption$1 = 'figcaption';
884
+ const Figure$1 = 'figure';
885
+ const Hr$1 = 'hr';
886
+ const Li$1 = 'li';
887
+ const Ol$1 = 'ol';
888
+ const P$1 = 'p';
889
+ const Pre$1 = 'pre';
890
+ const A$1 = 'a';
891
+ const Abbr$1 = 'abbr';
892
+ const Br$1 = 'br';
893
+ const Cite$1 = 'cite';
894
+ const Data$1 = 'data';
895
+ const Time$1 = 'time';
896
+ const Tfoot$1 = 'tfoot';
897
+
898
+ const Div = 4;
899
+ const H1 = 5;
900
+ const Span = 8;
901
+ const Text$1 = 12;
902
+ const Img = 17;
903
+ const H2 = 22;
904
+ const H3 = 23;
905
+ const H4 = 24;
906
+ const H5 = 25;
907
+ const Article = 27;
908
+ const Aside = 28;
909
+ const Footer = 29;
910
+ const Header = 30;
911
+ const Nav = 40;
912
+ const Section = 41;
913
+ const Search = 42;
914
+ const Dd = 43;
915
+ const Dl = 44;
916
+ const Figcaption = 45;
917
+ const Figure = 46;
918
+ const Hr = 47;
919
+ const Li = 48;
920
+ const Ol = 49;
921
+ const P = 50;
922
+ const Pre = 51;
923
+ const A = 53;
924
+ const Abbr = 54;
925
+ const Br = 55;
926
+ const Cite = 56;
927
+ const Data = 57;
928
+ const Time = 58;
929
+ const Tfoot = 59;
969
930
 
970
931
  const getVirtualDomTag = text => {
971
932
  switch (text) {
972
- case H1:
973
- return H1$1;
974
- case H2:
975
- return H2$1;
976
- case H3:
977
- return H3$1;
978
- case H4:
979
- return H4$1;
980
- case H5:
981
- return H5$1;
982
- case Div:
983
- return Div$1;
984
- case Article:
985
- return Article$1;
986
- case Aside:
987
- return Aside$1;
988
- case Footer:
989
- return Footer$1;
990
- case Header:
991
- return Header$1;
992
- case Nav:
993
- return Nav$1;
994
- case Section:
995
- return Section$1;
996
- case Search:
997
- return Search$1;
998
- case Dd:
999
- return Dd$1;
1000
- case Dl:
1001
- return Dl$1;
1002
- case Figcaption:
1003
- return Figcaption$1;
1004
- case Figure:
1005
- return Figure$1;
1006
- case Hr:
1007
- return Hr$1;
1008
- case Li:
1009
- return Li$1;
1010
- case Ol:
1011
- return Ol$1;
1012
- case P:
1013
- return P$1;
1014
- case Pre:
1015
- return Pre$1;
1016
- case A:
1017
- return A$1;
1018
- case Abbr:
1019
- return Abbr$1;
1020
- case Br:
1021
- return Br$1;
1022
- case Cite:
1023
- return Cite$1;
1024
- case Data:
1025
- return Data$1;
1026
- case Time:
1027
- return Time$1;
1028
- case Tfoot:
1029
- return Tfoot$1;
1030
- case Img:
1031
- return Img$1;
1032
- case Span:
1033
- return Span$1;
933
+ case H1$1:
934
+ return H1;
935
+ case H2$1:
936
+ return H2;
937
+ case H3$1:
938
+ return H3;
939
+ case H4$1:
940
+ return H4;
941
+ case H5$1:
942
+ return H5;
943
+ case Div$1:
944
+ return Div;
945
+ case Article$1:
946
+ return Article;
947
+ case Aside$1:
948
+ return Aside;
949
+ case Footer$1:
950
+ return Footer;
951
+ case Header$1:
952
+ return Header;
953
+ case Nav$1:
954
+ return Nav;
955
+ case Section$1:
956
+ return Section;
957
+ case Search$1:
958
+ return Search;
959
+ case Dd$1:
960
+ return Dd;
961
+ case Dl$1:
962
+ return Dl;
963
+ case Figcaption$1:
964
+ return Figcaption;
965
+ case Figure$1:
966
+ return Figure;
967
+ case Hr$1:
968
+ return Hr;
969
+ case Li$1:
970
+ return Li;
971
+ case Ol$1:
972
+ return Ol;
973
+ case P$1:
974
+ return P;
975
+ case Pre$1:
976
+ return Pre;
977
+ case A$1:
978
+ return A;
979
+ case Abbr$1:
980
+ return Abbr;
981
+ case Br$1:
982
+ return Br;
983
+ case Cite$1:
984
+ return Cite;
985
+ case Data$1:
986
+ return Data;
987
+ case Time$1:
988
+ return Time;
989
+ case Tfoot$1:
990
+ return Tfoot;
991
+ case Img$1:
992
+ return Img;
993
+ case Span$1:
994
+ return Span;
1034
995
  default:
1035
- return Div$1;
996
+ return Div;
1036
997
  }
1037
998
  };
1038
999
 
@@ -1061,7 +1022,7 @@ const CommentStart = 21;
1061
1022
 
1062
1023
  const isSelfClosingTag = tag => {
1063
1024
  switch (tag) {
1064
- case Img:
1025
+ case Img$1:
1065
1026
  return true;
1066
1027
  default:
1067
1028
  return false;
@@ -1326,6 +1287,14 @@ const tokenizeHtml = text => {
1326
1287
  return tokens;
1327
1288
  };
1328
1289
 
1290
+ const text = data => {
1291
+ return {
1292
+ type: Text$1,
1293
+ text: data,
1294
+ childCount: 0
1295
+ };
1296
+ };
1297
+
1329
1298
  const parseHtml = (html, allowedAttributes) => {
1330
1299
  string(html);
1331
1300
  array(allowedAttributes);
@@ -1395,6 +1364,75 @@ const getVirtualDomChildCount = markdownDom => {
1395
1364
  return stack.length;
1396
1365
  };
1397
1366
 
1367
+ const getExtensionDetailContentVirtualDom = sanitizedReadmeHtml => {
1368
+ const markdownDom = getMarkdownVirtualDom(sanitizedReadmeHtml);
1369
+ const childCount = getVirtualDomChildCount(markdownDom);
1370
+ const dom = [{
1371
+ type: Div,
1372
+ className: Markdown,
1373
+ role: Document,
1374
+ onContextMenu: HandleReadmeContextMenu,
1375
+ childCount
1376
+ }, ...markdownDom];
1377
+ return dom;
1378
+ };
1379
+
1380
+ const getExtensionDetailHeaderVirtualDom = extensionDetail => {
1381
+ const {
1382
+ name,
1383
+ iconSrc,
1384
+ description
1385
+ } = extensionDetail;
1386
+ const dom = [{
1387
+ type: Div,
1388
+ className: ExtensionDetailHeader,
1389
+ childCount: 2
1390
+ }, {
1391
+ type: Img,
1392
+ className: ExtensionDetailIcon,
1393
+ alt: '',
1394
+ draggable: false,
1395
+ childCount: 0,
1396
+ src: iconSrc
1397
+ }, {
1398
+ type: Div,
1399
+ className: ExtensionDetailHeaderDetails,
1400
+ childCount: 2
1401
+ }, {
1402
+ type: Div,
1403
+ className: ExtensionDetailName,
1404
+ childCount: 1
1405
+ }, text(name), {
1406
+ type: Div,
1407
+ className: ExtensionDetailDescription,
1408
+ childCount: 1
1409
+ }, text(description)];
1410
+ return dom;
1411
+ };
1412
+
1413
+ const getTabVirtualDom = tab => {
1414
+ const {
1415
+ label,
1416
+ selected
1417
+ } = tab;
1418
+ const className = selected ? 'ExtensionDetailTab ExtensionDetailTabSelected' : 'ExtensionDetailTab';
1419
+ return [{
1420
+ type: Div,
1421
+ role: Tab,
1422
+ className,
1423
+ childCount: 1
1424
+ }, text(label)];
1425
+ };
1426
+
1427
+ const getTabsVirtualDom = tabs => {
1428
+ return [{
1429
+ type: Div,
1430
+ className: 'ExtensionDetailTabs',
1431
+ childCount: tabs.length,
1432
+ role: TabList
1433
+ }, ...tabs.flatMap(getTabVirtualDom)];
1434
+ };
1435
+
1398
1436
  const joinBySpace = (...items) => {
1399
1437
  return items.join(' ');
1400
1438
  };
@@ -1404,19 +1442,21 @@ const mergeClassNames = (...classNames) => {
1404
1442
  };
1405
1443
 
1406
1444
  const getExtensionDetailVirtualDom = (extensionDetail, sanitizedReadmeHtml) => {
1407
- const markdownDom = getMarkdownVirtualDom(sanitizedReadmeHtml);
1408
- const childCount = getVirtualDomChildCount(markdownDom);
1445
+ const tabs = [{
1446
+ label: 'Details',
1447
+ selected: true
1448
+ }, {
1449
+ label: 'Features',
1450
+ selected: false
1451
+ }, {
1452
+ label: 'Changelog',
1453
+ selected: false
1454
+ }];
1409
1455
  const dom = [{
1410
- type: Div$1,
1456
+ type: Div,
1411
1457
  className: mergeClassNames(Viewlet, ExtensionDetail),
1412
- childCount: childCount + 1
1413
- }, ...getExtensionDetailHeaderVirtualDom(extensionDetail), {
1414
- type: Div$1,
1415
- className: Markdown,
1416
- role: Document,
1417
- onContextMenu: HandleReadmeContextMenu,
1418
- childCount
1419
- }, ...markdownDom];
1458
+ childCount: 3
1459
+ }, ...getExtensionDetailHeaderVirtualDom(extensionDetail), ...getTabsVirtualDom(tabs), ...getExtensionDetailContentVirtualDom(sanitizedReadmeHtml)];
1420
1460
  return dom;
1421
1461
  };
1422
1462
 
@@ -1432,23 +1472,22 @@ const i18nString = (key, placeholders = emptyObject) => {
1432
1472
  return key.replaceAll(RE_PLACEHOLDER, replacer);
1433
1473
  };
1434
1474
 
1435
- const UiStrings = {
1436
- Copy: 'Copy',
1437
- OpenInNewTab: 'Open in New Tab',
1438
- OpenImageInNewTab: 'Open Image in New Tab',
1439
- SaveImageAs: 'Save Image as'
1440
- };
1475
+ const Copy = 'Copy';
1476
+ const OpenInNewTab = 'Open in New Tab';
1477
+ const OpenImageInNewTab = 'Open Image in New Tab';
1478
+ const SaveImageAs = 'Save Image as';
1479
+
1441
1480
  const copy = () => {
1442
- return i18nString(UiStrings.Copy);
1481
+ return i18nString(Copy);
1443
1482
  };
1444
1483
  const openInNewTab = () => {
1445
- return i18nString(UiStrings.OpenInNewTab);
1484
+ return i18nString(OpenInNewTab);
1446
1485
  };
1447
1486
  const openImageInNewTab = () => {
1448
- return i18nString(UiStrings.OpenImageInNewTab);
1487
+ return i18nString(OpenImageInNewTab);
1449
1488
  };
1450
1489
  const saveImageAs = () => {
1451
- return i18nString(UiStrings.SaveImageAs);
1490
+ return i18nString(SaveImageAs);
1452
1491
  };
1453
1492
 
1454
1493
  const None = 0;
@@ -4169,12 +4208,17 @@ const loadContent = async (state, platform) => {
4169
4208
  };
4170
4209
  };
4171
4210
 
4211
+ const terminate = () => {
4212
+ globalThis.close();
4213
+ };
4214
+
4172
4215
  const commandMap = {
4173
- 'RenderMarkdown.renderMarkdown': renderMarkdown,
4174
- 'HandleIconError.handleIconError': handleIconError,
4175
- 'ExtensionDetail.loadContent': loadContent,
4176
4216
  'ExtensionDetail.getMenuEntries': getMenuEntries,
4177
- 'ExtensionDetail.getVirtualDom': getExtensionDetailVirtualDom
4217
+ 'ExtensionDetail.getVirtualDom': getExtensionDetailVirtualDom,
4218
+ 'ExtensionDetail.loadContent': loadContent,
4219
+ 'ExtensionDetail.terminate': terminate,
4220
+ 'HandleIconError.handleIconError': handleIconError,
4221
+ 'RenderMarkdown.renderMarkdown': renderMarkdown
4178
4222
  };
4179
4223
 
4180
4224
  const listen = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/extension-detail-view",
3
- "version": "3.0.0",
3
+ "version": "3.1.0",
4
4
  "description": "Extension Detail View Worker",
5
5
  "main": "dist/extensionDetailViewWorkerMain.js",
6
6
  "type": "module",