Joywork/js/likely.js

4 lines
17 KiB
JavaScript
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
//! Likely 2.0 by Ilya Birman, ilyabirman.net
//! Rewritten sans jQuery by Evgeny Steblinsky, volter9.github.io
//! Inspired by Social Likes by Artem Sapegin, http://sapegin.me
!function t(e,i,n){function o(s,c){if(!i[s]){if(!e[s]){var u="function"==typeof require&&require;if(!c&&u)return u(s,!0);if(r)return r(s,!0);throw new Error("Cannot find module '"+s+"'")}var a=i[s]={exports:{}};e[s][0].call(a.exports,function(t){var i=e[s][1][t];return o(i?i:t)},a,a.exports,t,e,i,n)}return i[s].exports}for(var r="function"==typeof require&&require,s=0;s<n.length;s++)o(n[s]);return o}({1:[function(t,e){function i(t,e){this.widget=t,this.options=s.merge(e),this.init()}var n=t("./promises"),o=t("./services"),r=t("./config"),s=t("./utils"),c=t("./dom"),u="left={left},top={top},width={width},height={height},personalbar=0,toolbar=0,scrollbars=1,resizable=1";spanHTML='<span class="{className}">{content}</span>',linkHTML='<a href="{href}"></a>',i.prototype={init:function(){this.detectService(),this.detectParams(),this.initHtml(),setTimeout(this.initCounter.bind(this),0)},update:function(t){var e="."+r.prefix+"counter";counters=c.findAll(e,this.widget),s.extend(this.options,s.merge({forceUpdate:!1},t)),s.toArray(counters).forEach(function(t){t.parentNode.removeChild(t)}),this.initCounter()},detectService:function(){var t=this.widget.dataset.service;if(!t){for(var e=this.widget.className.split(" "),i=0;i<e.length&&!(e[i]in o);i++);t=e[i]}t&&(this.service=t,s.extend(this.options,o[t]))},detectParams:function(){var t=this.widget.dataset;if(t.counter){var e=parseInt(t.counter,10);isNaN(e)?this.options.counterUrl=t.counter:this.options.counterNumber=e}t.title&&(this.options.title=t.title),t.url&&(this.options.url=t.url)},initHtml:function(){var t=this.options,e=this.widget,i=e.innerHTML;t.clickUrl?this.widget=e=this.createLink(e,t):e.addEventListener("click",this.click.bind(this)),e.classList.remove(this.service),e.className+=" "+this.getElementClassNames("widget");var n=s.template(spanHTML,{className:this.getElementClassNames("button"),content:i}),o=s.template(spanHTML,{className:this.getElementClassNames("icon"),content:c.wrapSVG(t.svgi)});e.innerHTML=o+n},createLink:function(t,e){var i=s.makeUrl(e.clickUrl,{url:e.url,title:e.title}),n=c.createNode(s.template(linkHTML,{href:i}));return this.cloneDataAttrs(t,n),t.parentNode.replaceChild(n,t),n},initCounter:function(){this.options.counters&&this.options.counterNumber?this.updateCounter(this.options.counterNumber):n.fetch(this.service,this.options.url,{counterUrl:this.options.counterUrl,forceUpdate:this.options.forceUpdate}).always(this.updateCounter.bind(this))},cloneDataAttrs:function(t,e){var i=t.dataset;for(var n in t)i.hasOwnProperty(n)&&(e.dataset[n]=t[n])},getElementClassNames:function(t){return s.likelyClass(t,this.service)},updateCounter:function(t){t=parseInt(t,10)||0;var e={className:this.getElementClassNames("counter"),content:t};t||this.options.zeroes||(e.className+=" "+r.prefix+"counter_empty",e.content=""),this.widget.appendChild(c.createNode(s.template(spanHTML,e)))},click:function(t){var e=this.options,i="function"==typeof e.click?e.click.call(this,t):!0;if(i){var n=s.makeUrl(e.popupUrl,{url:e.url,title:e.title});this.openPopup(this.addAdditionalParamsToUrl(n),{width:e.popupWidth,height:e.popupHeight})}return!1},addAdditionalParamsToUrl:function(t){var e=s.query(s.merge(this.widget.dataset,this.options.data)),i=-1===t.indexOf("?")?"?":"&";return""===e?t:t+i+e},openPopup:function(t,e){var i=Math.round(screen.width/2-e.width/2),n=0;screen.height>e.height&&(n=Math.round(screen.height/3-e.height/2));var o=window.open(t,"sl_"+this.service,s.template(u,{height:e.height,width:e.width,left:i,top:n}));return o?void this.watchWindow(o):location.href=t},watchWindow:function(t){if(t){var e=function(){t.closed&&clearInterval(i)};t.focus();var i=setInterval(e.bind(this),this.options.popupCheckInterval)}}},e.exports=i},{"./config":2,"./dom":3,"./promises":7,"./services":8,"./utils":10}],2:[function(t,e){e.exports={name:"likely",prefix:"likely__",secure:"https:"===window.location.protocol,protocol:"https:"===window.location.protocol?"https:":"http:"}},{}],3:[function(t,e){function i(t){return'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0