diff --git a/src/Linkification/Embedding.coffee b/src/Linkification/Embedding.coffee index b24f25862..0666a5ef3 100644 --- a/src/Linkification/Embedding.coffee +++ b/src/Linkification/Embedding.coffee @@ -1,6 +1,6 @@ Embedding = init: -> - return unless Conf['Embedding'] or Conf['Link Title'] + return unless Conf['Embedding'] or Conf['Link Title'] or Conf['Cover Preview'] @types = {} @types[type.key] = type for type in @ordered_types @@ -22,21 +22,28 @@ Embedding = return events: (post) -> - return unless Conf['Embedding'] - i = 0 - items = $$ '.embedder', post.nodes.comment - while el = items[i++] - $.on el, 'click', Embedding.cb.click - Embedding.cb.toggle.call el if $.hasClass el, 'embedded' - return + if Conf['Embedding'] + i = 0 + items = $$ '.embedder', post.nodes.comment + while el = items[i++] + $.on el, 'click', Embedding.cb.click + Embedding.cb.toggle.call el if $.hasClass el, 'embedded' + if Conf['Cover Preview'] + i = 0 + items = $$ '.linkify', post.nodes.comment + while el = items[i++] + data = Embedding.services el + Embedding.preview data + return process: (link, post) -> - return unless Conf['Embedding'] or Conf['Link Title'] + return unless Conf['Embedding'] or Conf['Link Title'] or Conf['Cover Preview'] return if $.x 'ancestor::pre', link if data = Embedding.services link data.post = post Embedding.embed data if Conf['Embedding'] Embedding.title data if Conf['Link Title'] + Embedding.preview data if Conf['Cover Preview'] services: (link) -> {href} = link @@ -119,6 +126,23 @@ Embedding = $.extend data.link, <%= html('[${data.key}] Title Link Blocked (are you using NoScript?)') %> return + preview: (data) -> + {key, uid, link} = data + return if not (service = Embedding.types[key].preview) + $.on link, 'mouseover', (e) -> + src = service.url uid + {height} = service + el = $.el 'img', + src: src + id: 'ihover' + $.add d.body, el + UI.hover + root: link + el: el + latestEvent: e + endEvents: 'mouseout click' + height: height + cb: click: (e) -> e.preventDefault() @@ -427,4 +451,7 @@ Embedding = for item in data.items when item.id is uid return item.snippet.title 'Not Found' + preview: + url: (uid) -> "https://img.youtube.com/vi/#{uid}/0.jpg" + height: 360 ] diff --git a/src/config/Config.coffee b/src/config/Config.coffee index 376907478..274c13326 100644 --- a/src/config/Config.coffee +++ b/src/config/Config.coffee @@ -136,6 +136,11 @@ Config = 'Replace the link of a supported site with its actual title.' 1 ] + 'Cover Preview': [ + true + 'Show preview of supported links on hover.' + 1 + ] 'Embedding': [ true 'Embed supported services. Note: Some services don\'t work on HTTPS.'