@ecency/render-helper 2.2.10 → 2.2.11

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecency/render-helper",
3
- "version": "2.2.10",
3
+ "version": "2.2.11",
4
4
  "description": "Markdown+Html Render helper",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -12,6 +12,7 @@ export const ALLOWED_ATTRIBUTES: XSSWhiteList = {
12
12
  'data-community',
13
13
  'data-filter',
14
14
  'data-embed-src',
15
+ 'data-youtube',
15
16
  'data-video-href',
16
17
  'data-proposal',
17
18
  'class',
@@ -70,7 +70,7 @@ describe('Markdown2Html', () => {
70
70
  last_update: '2019-05-10T09:15:21',
71
71
  body: 'https://www.youtube.com/watch?v=qK3d1eoH-Qs'
72
72
  }
73
- const expected = '<p><a class="markdown-video-link markdown-video-link-youtube" data-embed-src="https://www.youtube.com/embed/qK3d1eoH-Qs?autoplay=1"><img class="no-replace video-thumbnail" src="https://images.ecency.com/p/S5Eokt4BcQdk7EHeT1aYjzebg2hC7hkthT45eMZRVYW6mkGBWKemLWWzXbRhNG7Z3h1qjGS.png?format=match&amp;mode=fit" /><span class="markdown-video-play"></span></a></p>'
73
+ const expected = '<p><a class="markdown-video-link markdown-video-link-youtube" data-embed-src="https://www.youtube.com/embed/qK3d1eoH-Qs?autoplay=1" data-youtube="qK3d1eoH-Qs"><img class="no-replace video-thumbnail" src="https://images.ecency.com/p/S5Eokt4BcQdk7EHeT1aYjzebg2hC7hkthT45eMZRVYW6mkGBWKemLWWzXbRhNG7Z3h1qjGS.png?format=match&amp;mode=fit" /><span class="markdown-video-play"></span></a></p>'
74
74
 
75
75
  expect(markdown2Html(input)).toBe(expected)
76
76
  })
@@ -447,7 +447,7 @@ describe('Markdown2Html', () => {
447
447
  last_update: '2019-05-10T09:15:21',
448
448
  body: 'https://youtu.be/_-6hJ8sltdI'
449
449
  }
450
- const expected = '<p><a class="markdown-video-link markdown-video-link-youtube" data-embed-src="https://www.youtube.com/embed/_-6hJ8sltdI?autoplay=1"><img class="no-replace video-thumbnail" src="https://images.ecency.com/p/S5Eokt4BcQdk7EHeT1aYjzebg2hC7hkthT45eEGc5AMBA14JMjkkxrUAj3mV5QR9D6zfstr.png?format=match&amp;mode=fit" /><span class="markdown-video-play"></span></a></p>'
450
+ const expected = '<p><a class="markdown-video-link markdown-video-link-youtube" data-embed-src="https://www.youtube.com/embed/_-6hJ8sltdI?autoplay=1" data-youtube="_-6hJ8sltdI"><img class="no-replace video-thumbnail" src="https://images.ecency.com/p/S5Eokt4BcQdk7EHeT1aYjzebg2hC7hkthT45eEGc5AMBA14JMjkkxrUAj3mV5QR9D6zfstr.png?format=match&amp;mode=fit" /><span class="markdown-video-play"></span></a></p>'
451
451
 
452
452
  expect(markdown2Html(input)).toBe(expected)
453
453
  })
@@ -412,8 +412,9 @@ export function a(el: HTMLElement, forApp: boolean, webp: boolean): void {
412
412
  const embedSrc = `https://www.youtube.com/embed/${vid}?autoplay=1`
413
413
 
414
414
  el.textContent = ''
415
-
416
- el.setAttribute('data-embed-src', embedSrc)
415
+
416
+ el.setAttribute('data-embed-src', embedSrc);
417
+ el.setAttribute('data-youtube', vid);
417
418
 
418
419
  const thumbImg = el.ownerDocument.createElement('img')
419
420
  thumbImg.setAttribute('class', 'no-replace video-thumbnail')
@@ -664,6 +665,14 @@ export function a(el: HTMLElement, forApp: boolean, webp: boolean): void {
664
665
 
665
666
  if (forApp) {
666
667
  el.setAttribute('data-href', href)
668
+ const match = href.match(YOUTUBE_REGEX)
669
+ if (match) {
670
+ const e = YOUTUBE_REGEX.exec(href)
671
+ if (e[1]) {
672
+ const vid = e[1]
673
+ el.setAttribute('data-youtube', vid);
674
+ }
675
+ }
667
676
  el.removeAttribute('href')
668
677
  } else {
669
678
  const externalRegex =/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
@@ -34,7 +34,7 @@ export function text(node: HTMLElement, forApp: boolean, webp: boolean): void {
34
34
  const thumbnail = proxifyImageSrc(`https://img.youtube.com/vi/${vid.split('?')[0]}/hqdefault.jpg`, 0, 0, webp ? 'webp' : 'match')
35
35
  const embedSrc = `https://www.youtube.com/embed/${vid}?autoplay=1`
36
36
 
37
- const attrs = `class="markdown-video-link markdown-video-link-youtube" data-embed-src="${embedSrc}"`
37
+ const attrs = `class="markdown-video-link markdown-video-link-youtube" data-embed-src="${embedSrc}" data-youtube="${vid}"`
38
38
 
39
39
  const thumbImg = node.ownerDocument.createElement('img')
40
40
  thumbImg.setAttribute('class', 'no-replace video-thumbnail')