@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.
- package/dist/extensionDetailViewWorkerMain.js +240 -196
- package/package.json +1 -1
|
@@ -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
|
|
861
|
-
|
|
862
|
-
const
|
|
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
|
|
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
|
|
974
|
-
case H2:
|
|
975
|
-
return H2
|
|
976
|
-
case H3:
|
|
977
|
-
return H3
|
|
978
|
-
case H4:
|
|
979
|
-
return H4
|
|
980
|
-
case H5:
|
|
981
|
-
return H5
|
|
982
|
-
case Div:
|
|
983
|
-
return Div
|
|
984
|
-
case Article:
|
|
985
|
-
return Article
|
|
986
|
-
case Aside:
|
|
987
|
-
return Aside
|
|
988
|
-
case Footer:
|
|
989
|
-
return Footer
|
|
990
|
-
case Header:
|
|
991
|
-
return Header
|
|
992
|
-
case Nav:
|
|
993
|
-
return Nav
|
|
994
|
-
case Section:
|
|
995
|
-
return Section
|
|
996
|
-
case Search:
|
|
997
|
-
return Search
|
|
998
|
-
case Dd:
|
|
999
|
-
return Dd
|
|
1000
|
-
case Dl:
|
|
1001
|
-
return Dl
|
|
1002
|
-
case Figcaption:
|
|
1003
|
-
return Figcaption
|
|
1004
|
-
case Figure:
|
|
1005
|
-
return Figure
|
|
1006
|
-
case Hr:
|
|
1007
|
-
return Hr
|
|
1008
|
-
case Li:
|
|
1009
|
-
return Li
|
|
1010
|
-
case Ol:
|
|
1011
|
-
return Ol
|
|
1012
|
-
case P:
|
|
1013
|
-
return P
|
|
1014
|
-
case Pre:
|
|
1015
|
-
return Pre
|
|
1016
|
-
case A:
|
|
1017
|
-
return A
|
|
1018
|
-
case Abbr:
|
|
1019
|
-
return Abbr
|
|
1020
|
-
case Br:
|
|
1021
|
-
return Br
|
|
1022
|
-
case Cite:
|
|
1023
|
-
return Cite
|
|
1024
|
-
case Data:
|
|
1025
|
-
return Data
|
|
1026
|
-
case Time:
|
|
1027
|
-
return Time
|
|
1028
|
-
case Tfoot:
|
|
1029
|
-
return Tfoot
|
|
1030
|
-
case Img:
|
|
1031
|
-
return Img
|
|
1032
|
-
case Span:
|
|
1033
|
-
return Span
|
|
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
|
|
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
|
|
1408
|
-
|
|
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
|
|
1456
|
+
type: Div,
|
|
1411
1457
|
className: mergeClassNames(Viewlet, ExtensionDetail),
|
|
1412
|
-
childCount:
|
|
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
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
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(
|
|
1481
|
+
return i18nString(Copy);
|
|
1443
1482
|
};
|
|
1444
1483
|
const openInNewTab = () => {
|
|
1445
|
-
return i18nString(
|
|
1484
|
+
return i18nString(OpenInNewTab);
|
|
1446
1485
|
};
|
|
1447
1486
|
const openImageInNewTab = () => {
|
|
1448
|
-
return i18nString(
|
|
1487
|
+
return i18nString(OpenImageInNewTab);
|
|
1449
1488
|
};
|
|
1450
1489
|
const saveImageAs = () => {
|
|
1451
|
-
return i18nString(
|
|
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 () => {
|