@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 = 'handleClickCategory';
2381
- const HandleClickDisable = 'handleClickDisable';
2382
- const HandleClickEnable = 'handleClickEnable';
2383
- const HandleClickScrollToTop = 'handleClickScrollToTop';
2384
- const HandleClickSetColorTheme = 'handleClickSetColorTheme';
2385
- const HandleClickSettings = 'handleClickSettings';
2386
- const HandleClickSize = 'handleClickSize';
2387
- const HandleClickUninstall = 'handleClickUninstall';
2388
- const HandleFeaturesClick = 'handleFeaturesClick';
2389
- const HandleIconError = 'handleIconError';
2390
- const HandleImageContextMenu = 'handleImageContextMenu';
2391
- const HandleReadmeContextMenu = 'handleReadmeContextMenu';
2392
- const HandleReadmeScroll = 'handleReadmeScroll';
2393
- const HandleTabsClick = '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 = `/markdown/${markdownHash}`;
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
- title
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: 'Markdown'
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', 'event.target.name']
4760
+ params: ['handleClickCategory', TargetName]
4725
4761
  }, {
4726
4762
  name: HandleIconError,
4727
4763
  params: ['handleIconError']
4728
4764
  }, {
4729
4765
  name: HandleReadmeContextMenu,
4730
- params: ['handleReadmeContextMenu', 'event.clientX', 'event.clientY', 'event.target.href', 'event.target.src']
4766
+ params: ['handleReadmeContextMenu', ClientX, ClientY, 'event.target.href', 'event.target.src']
4731
4767
  }, {
4732
4768
  name: HandleImageContextMenu,
4733
- params: ['handleImageContextMenu', 'event.clientX', 'event.clientY'],
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', 'event.target.name']
4777
+ params: ['handleTabsClick', TargetName]
4742
4778
  }, {
4743
4779
  name: HandleFeaturesClick,
4744
- params: ['handleFeaturesClick', 'event.target.name']
4780
+ params: ['handleFeaturesClick', TargetName]
4745
4781
  }, {
4746
4782
  name: HandleClickSize,
4747
- params: ['handleClickSize', 'event.target.name']
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.0",
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
  }