@lvce-editor/extension-detail-view 4.3.0 → 4.5.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.
|
@@ -251,6 +251,10 @@ const Ul = 60;
|
|
|
251
251
|
const Code$2 = 65;
|
|
252
252
|
const Dt = 67;
|
|
253
253
|
|
|
254
|
+
const ClientX = 'event.clientX';
|
|
255
|
+
const ClientY = 'event.clientY';
|
|
256
|
+
const TargetName = 'event.target.name';
|
|
257
|
+
|
|
254
258
|
const DebugWorker = 55;
|
|
255
259
|
const ExtensionHostWorker = 44;
|
|
256
260
|
const FileSystemWorker$1 = 209;
|
|
@@ -302,6 +306,7 @@ const FeaturesList = 'FeaturesList';
|
|
|
302
306
|
const FeatureWebView = 'FeatureWebView';
|
|
303
307
|
const Large$1 = 'Large';
|
|
304
308
|
const Link = 'Link';
|
|
309
|
+
const Markdown = 'Markdown';
|
|
305
310
|
const MoreInfo = 'MoreInfo';
|
|
306
311
|
const MoreInfoEntry = 'MoreInfoEntry';
|
|
307
312
|
const MoreInfoEntryKey = 'MoreInfoEntryKey';
|
|
@@ -2377,20 +2382,20 @@ const getSettingsVirtualDom = state => {
|
|
|
2377
2382
|
return getFeatureSettingsVirtualDom(state.settings);
|
|
2378
2383
|
};
|
|
2379
2384
|
|
|
2380
|
-
const HandleClickCategory =
|
|
2381
|
-
const HandleClickDisable =
|
|
2382
|
-
const HandleClickEnable =
|
|
2383
|
-
const HandleClickScrollToTop =
|
|
2384
|
-
const HandleClickSetColorTheme =
|
|
2385
|
-
const HandleClickSettings =
|
|
2386
|
-
const HandleClickSize =
|
|
2387
|
-
const HandleClickUninstall =
|
|
2388
|
-
const HandleFeaturesClick =
|
|
2389
|
-
const HandleIconError =
|
|
2390
|
-
const HandleImageContextMenu =
|
|
2391
|
-
const HandleReadmeContextMenu =
|
|
2392
|
-
const HandleReadmeScroll =
|
|
2393
|
-
const HandleTabsClick =
|
|
2385
|
+
const HandleClickCategory = 1;
|
|
2386
|
+
const HandleClickDisable = 2;
|
|
2387
|
+
const HandleClickEnable = 3;
|
|
2388
|
+
const HandleClickScrollToTop = 4;
|
|
2389
|
+
const HandleClickSetColorTheme = 5;
|
|
2390
|
+
const HandleClickSettings = 6;
|
|
2391
|
+
const HandleClickSize = 7;
|
|
2392
|
+
const HandleClickUninstall = 8;
|
|
2393
|
+
const HandleFeaturesClick = 9;
|
|
2394
|
+
const HandleIconError = 10;
|
|
2395
|
+
const HandleImageContextMenu = 11;
|
|
2396
|
+
const HandleReadmeContextMenu = 12;
|
|
2397
|
+
const HandleReadmeScroll = 13;
|
|
2398
|
+
const HandleTabsClick = 14;
|
|
2394
2399
|
|
|
2395
2400
|
const ActivationEvents = 'ActivationEvents';
|
|
2396
2401
|
const Changelog = 'Changelog';
|
|
@@ -2479,6 +2484,17 @@ const getThemeMarkdown = (themes, iconThemes, productIconThemes) => {
|
|
|
2479
2484
|
return markdown;
|
|
2480
2485
|
};
|
|
2481
2486
|
|
|
2487
|
+
const supportsNormalCacheKey = locationProtocol => {
|
|
2488
|
+
return locationProtocol === 'http:' || locationProtocol === 'https:';
|
|
2489
|
+
};
|
|
2490
|
+
const getMarkdownCacheKey = (hash, locationProtocol) => {
|
|
2491
|
+
if (supportsNormalCacheKey(locationProtocol)) {
|
|
2492
|
+
return `/markdown/${hash}`;
|
|
2493
|
+
}
|
|
2494
|
+
// workaround for electron bug
|
|
2495
|
+
return `https://markdown/${hash}`;
|
|
2496
|
+
};
|
|
2497
|
+
|
|
2482
2498
|
const hash = async content => {
|
|
2483
2499
|
const sourceBytes = new TextEncoder().encode(content);
|
|
2484
2500
|
const digest = await crypto.subtle.digest('SHA-256', sourceBytes);
|
|
@@ -2543,9 +2559,9 @@ const set$3 = async (key, value) => {
|
|
|
2543
2559
|
}));
|
|
2544
2560
|
};
|
|
2545
2561
|
|
|
2546
|
-
const renderMarkdownCached = async (markdown, options
|
|
2562
|
+
const renderMarkdownCached = async (markdown, options) => {
|
|
2547
2563
|
const markdownHash = await hash(markdown); // TODO hash options also
|
|
2548
|
-
const cacheKey =
|
|
2564
|
+
const cacheKey = getMarkdownCacheKey(markdownHash, options.locationProtocol);
|
|
2549
2565
|
const hasItem = await has(cacheKey);
|
|
2550
2566
|
if (hasItem) {
|
|
2551
2567
|
const value = await get$1(cacheKey);
|
|
@@ -2556,12 +2572,12 @@ const renderMarkdownCached = async (markdown, options = {}) => {
|
|
|
2556
2572
|
return html;
|
|
2557
2573
|
};
|
|
2558
2574
|
|
|
2559
|
-
const renderMarkdown = async (markdown, options
|
|
2575
|
+
const renderMarkdown = async (markdown, options) => {
|
|
2560
2576
|
const html = await renderMarkdownCached(markdown, options);
|
|
2561
2577
|
return html;
|
|
2562
2578
|
};
|
|
2563
2579
|
|
|
2564
|
-
const getThemeDetails = async (extension, baseUrl) => {
|
|
2580
|
+
const getThemeDetails = async (extension, baseUrl, locationProtocol) => {
|
|
2565
2581
|
const {
|
|
2566
2582
|
colorThemes,
|
|
2567
2583
|
iconThemes,
|
|
@@ -2569,7 +2585,8 @@ const getThemeDetails = async (extension, baseUrl) => {
|
|
|
2569
2585
|
} = extension;
|
|
2570
2586
|
const markdown = getThemeMarkdown(colorThemes || [], iconThemes || [], productIconThemes || []);
|
|
2571
2587
|
const rendered = await renderMarkdown(markdown, {
|
|
2572
|
-
baseUrl
|
|
2588
|
+
baseUrl,
|
|
2589
|
+
locationProtocol
|
|
2573
2590
|
});
|
|
2574
2591
|
const themesMarkdownDom = await getMarkdownVirtualDom(rendered);
|
|
2575
2592
|
return {
|
|
@@ -2995,7 +3012,8 @@ const create = (uid, uri, x, y, width, height, platform, assetDir) => {
|
|
|
2995
3012
|
paddingLeft: 0,
|
|
2996
3013
|
paddingRight: 0,
|
|
2997
3014
|
showSideBar: true,
|
|
2998
|
-
sideBarWidth: 0
|
|
3015
|
+
sideBarWidth: 0,
|
|
3016
|
+
locationProtocol: ''
|
|
2999
3017
|
};
|
|
3000
3018
|
set(uid, state, state);
|
|
3001
3019
|
};
|
|
@@ -3232,7 +3250,8 @@ const selectFeature = async (state, name) => {
|
|
|
3232
3250
|
const {
|
|
3233
3251
|
features,
|
|
3234
3252
|
extension,
|
|
3235
|
-
baseUrl
|
|
3253
|
+
baseUrl,
|
|
3254
|
+
locationProtocol
|
|
3236
3255
|
} = state;
|
|
3237
3256
|
const newFeatures = features.map(feature => {
|
|
3238
3257
|
if (feature.id === name) {
|
|
@@ -3247,7 +3266,7 @@ const selectFeature = async (state, name) => {
|
|
|
3247
3266
|
};
|
|
3248
3267
|
});
|
|
3249
3268
|
const fn = getFeatureDetailsHandler(name);
|
|
3250
|
-
const partialNewState = await fn(extension, baseUrl);
|
|
3269
|
+
const partialNewState = await fn(extension, baseUrl, locationProtocol);
|
|
3251
3270
|
return {
|
|
3252
3271
|
...state,
|
|
3253
3272
|
...partialNewState,
|
|
@@ -3408,11 +3427,13 @@ const selectTabChangelog = async state => {
|
|
|
3408
3427
|
const {
|
|
3409
3428
|
extension,
|
|
3410
3429
|
baseUrl,
|
|
3411
|
-
tabs
|
|
3430
|
+
tabs,
|
|
3431
|
+
locationProtocol
|
|
3412
3432
|
} = state;
|
|
3413
3433
|
const changelogContent = await loadChangelogContent(extension.path); // TODO use uri
|
|
3414
3434
|
const changelogMarkdownHtml = await renderMarkdown(changelogContent, {
|
|
3415
|
-
baseUrl
|
|
3435
|
+
baseUrl,
|
|
3436
|
+
locationProtocol
|
|
3416
3437
|
});
|
|
3417
3438
|
const changelogDom = await getMarkdownVirtualDom(changelogMarkdownHtml);
|
|
3418
3439
|
const newTabs = tabs.map(tab => {
|
|
@@ -3452,12 +3473,14 @@ const selectTabDetails = async state => {
|
|
|
3452
3473
|
const {
|
|
3453
3474
|
baseUrl,
|
|
3454
3475
|
readmeUrl,
|
|
3455
|
-
tabs
|
|
3476
|
+
tabs,
|
|
3477
|
+
locationProtocol
|
|
3456
3478
|
} = state;
|
|
3457
3479
|
const readmeContent = await loadReadmeContent(readmeUrl);
|
|
3458
3480
|
const readmeHtml = await renderMarkdown(readmeContent, {
|
|
3459
3481
|
baseUrl,
|
|
3460
|
-
linksExternal: true
|
|
3482
|
+
linksExternal: true,
|
|
3483
|
+
locationProtocol
|
|
3461
3484
|
});
|
|
3462
3485
|
const detailsDom = await getMarkdownVirtualDom(readmeHtml);
|
|
3463
3486
|
const newTabs = tabs.map(tab => {
|
|
@@ -3480,14 +3503,15 @@ const selectTabFeatures = async state => {
|
|
|
3480
3503
|
baseUrl,
|
|
3481
3504
|
selectedFeature,
|
|
3482
3505
|
features,
|
|
3483
|
-
tabs
|
|
3506
|
+
tabs,
|
|
3507
|
+
locationProtocol
|
|
3484
3508
|
} = state;
|
|
3485
3509
|
if (features.length === 0) {
|
|
3486
3510
|
return state;
|
|
3487
3511
|
}
|
|
3488
3512
|
const actualSelectedFeature = selectedFeature || Theme;
|
|
3489
3513
|
const fn = getFeatureDetailsHandler(actualSelectedFeature);
|
|
3490
|
-
const partialNewState = await fn(extension, baseUrl);
|
|
3514
|
+
const partialNewState = await fn(extension, baseUrl, locationProtocol);
|
|
3491
3515
|
const newTabs = tabs.map(tab => {
|
|
3492
3516
|
return {
|
|
3493
3517
|
...tab,
|
|
@@ -3972,6 +3996,7 @@ const getInstallationEntries = (displaySize, extensionId, extensionVersion, exte
|
|
|
3972
3996
|
}, {
|
|
3973
3997
|
key: lastUpdated(),
|
|
3974
3998
|
value: 'n/a',
|
|
3999
|
+
// TODO get this from somewhere
|
|
3975
4000
|
odd: true
|
|
3976
4001
|
}, {
|
|
3977
4002
|
key: size(),
|
|
@@ -4105,9 +4130,11 @@ const loadContent = async (state, platform, savedState, isTest = false) => {
|
|
|
4105
4130
|
const [hasReadme, hasChangelog] = await Promise.all([existsFile(readmeUrl), existsFile(changelogUrl)]);
|
|
4106
4131
|
const readmeContent = hasReadme ? await loadReadmeContent(readmeUrl) : noReadmeFound();
|
|
4107
4132
|
const baseUrl = getBaseUrl(extension.path, platform);
|
|
4133
|
+
const locationProtocol = location.protocol;
|
|
4108
4134
|
const readmeHtml = await renderMarkdown(readmeContent, {
|
|
4109
4135
|
baseUrl,
|
|
4110
|
-
linksExternal: true
|
|
4136
|
+
linksExternal: true,
|
|
4137
|
+
locationProtocol
|
|
4111
4138
|
});
|
|
4112
4139
|
const detailsVirtualDom = await getMarkdownVirtualDom(readmeHtml, {
|
|
4113
4140
|
scrollToTopEnabled: true
|
|
@@ -4175,7 +4202,8 @@ const loadContent = async (state, platform, savedState, isTest = false) => {
|
|
|
4175
4202
|
sideBarWidth,
|
|
4176
4203
|
sizeOnDisk: size,
|
|
4177
4204
|
sizeValue,
|
|
4178
|
-
tabs: enabledTabs
|
|
4205
|
+
tabs: enabledTabs,
|
|
4206
|
+
locationProtocol
|
|
4179
4207
|
};
|
|
4180
4208
|
};
|
|
4181
4209
|
|
|
@@ -4196,8 +4224,6 @@ const openImageInNewTab = async state => {
|
|
|
4196
4224
|
return state;
|
|
4197
4225
|
};
|
|
4198
4226
|
|
|
4199
|
-
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
4200
|
-
|
|
4201
4227
|
const createCss = object => {
|
|
4202
4228
|
const inner = Object.entries(object).map(([key, value]) => ` --${key}: ${value}px;`).join('\n');
|
|
4203
4229
|
const full = `:root {\n${inner}\n}`;
|
|
@@ -4298,6 +4324,14 @@ const getMoreInfoEntryValueTag = (onClick, code) => {
|
|
|
4298
4324
|
return Dd;
|
|
4299
4325
|
};
|
|
4300
4326
|
|
|
4327
|
+
const getExtraProps = title => {
|
|
4328
|
+
if (title) {
|
|
4329
|
+
return {
|
|
4330
|
+
title
|
|
4331
|
+
};
|
|
4332
|
+
}
|
|
4333
|
+
return {};
|
|
4334
|
+
};
|
|
4301
4335
|
const getMoreInfoEntryValueVirtualDom = item => {
|
|
4302
4336
|
const {
|
|
4303
4337
|
value,
|
|
@@ -4307,12 +4341,13 @@ const getMoreInfoEntryValueVirtualDom = item => {
|
|
|
4307
4341
|
} = item;
|
|
4308
4342
|
const type = getMoreInfoEntryValueTag(onClick, code);
|
|
4309
4343
|
const className = getMoreInfoEntryValueClassName(onClick, code);
|
|
4344
|
+
const extraProps = getExtraProps(title);
|
|
4310
4345
|
return [{
|
|
4311
4346
|
type,
|
|
4312
4347
|
className,
|
|
4313
4348
|
childCount: 1,
|
|
4314
4349
|
onClick,
|
|
4315
|
-
|
|
4350
|
+
...extraProps
|
|
4316
4351
|
}, text(value)];
|
|
4317
4352
|
};
|
|
4318
4353
|
|
|
@@ -4396,7 +4431,7 @@ const getDetailsVirtualDom = (sanitizedReadmeHtml, width, scrollToTopButtonEnabl
|
|
|
4396
4431
|
const contentDom = hasReadme ? sanitizedReadmeHtml : [{
|
|
4397
4432
|
type: Div,
|
|
4398
4433
|
childCount: 1,
|
|
4399
|
-
className:
|
|
4434
|
+
className: Markdown
|
|
4400
4435
|
}, text(noReadmeFound())];
|
|
4401
4436
|
const dom = [{
|
|
4402
4437
|
type: Div,
|
|
@@ -4718,19 +4753,20 @@ const render2 = (uid, diffResult) => {
|
|
|
4718
4753
|
return commands;
|
|
4719
4754
|
};
|
|
4720
4755
|
|
|
4756
|
+
// @ts-nocheck
|
|
4721
4757
|
const renderEventListeners = () => {
|
|
4722
4758
|
return [{
|
|
4723
4759
|
name: HandleClickCategory,
|
|
4724
|
-
params: ['handleClickCategory',
|
|
4760
|
+
params: ['handleClickCategory', TargetName]
|
|
4725
4761
|
}, {
|
|
4726
4762
|
name: HandleIconError,
|
|
4727
4763
|
params: ['handleIconError']
|
|
4728
4764
|
}, {
|
|
4729
4765
|
name: HandleReadmeContextMenu,
|
|
4730
|
-
params: ['handleReadmeContextMenu',
|
|
4766
|
+
params: ['handleReadmeContextMenu', ClientX, ClientY, 'event.target.href', 'event.target.src']
|
|
4731
4767
|
}, {
|
|
4732
4768
|
name: HandleImageContextMenu,
|
|
4733
|
-
params: ['handleImageContextMenu',
|
|
4769
|
+
params: ['handleImageContextMenu', ClientX, ClientY],
|
|
4734
4770
|
preventDefault: true
|
|
4735
4771
|
}, {
|
|
4736
4772
|
name: HandleReadmeScroll,
|
|
@@ -4738,13 +4774,13 @@ const renderEventListeners = () => {
|
|
|
4738
4774
|
passive: true
|
|
4739
4775
|
}, {
|
|
4740
4776
|
name: HandleTabsClick,
|
|
4741
|
-
params: ['handleTabsClick',
|
|
4777
|
+
params: ['handleTabsClick', TargetName]
|
|
4742
4778
|
}, {
|
|
4743
4779
|
name: HandleFeaturesClick,
|
|
4744
|
-
params: ['handleFeaturesClick',
|
|
4780
|
+
params: ['handleFeaturesClick', TargetName]
|
|
4745
4781
|
}, {
|
|
4746
4782
|
name: HandleClickSize,
|
|
4747
|
-
params: ['handleClickSize',
|
|
4783
|
+
params: ['handleClickSize', TargetName]
|
|
4748
4784
|
}, {
|
|
4749
4785
|
name: HandleClickDisable,
|
|
4750
4786
|
params: ['handleClickDisable']
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/extension-detail-view",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"description": "Extension Detail View Worker",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,5 +9,8 @@
|
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"author": "Lvce Editor",
|
|
11
11
|
"type": "module",
|
|
12
|
-
"main": "dist/extensionDetailViewWorkerMain.js"
|
|
12
|
+
"main": "dist/extensionDetailViewWorkerMain.js",
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@lvce-editor/constants": "^1.28.0"
|
|
15
|
+
}
|
|
13
16
|
}
|