JSFiddle - React, Tailwind, and code Playground

HTML

<code lang="html">
<html>
<head>
<title>Заголовок статьи</title>
<meta name="description" content="Описание статьи" />
<meta property="og:image" content="https://img.ru/img.jpg" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">

    <div class="part-example">
    <p>Share:
        <button class="btn btn-default social_share" data-type="vk">VK.com</button>
        <button class="btn btn-default social_share" data-type="telegram">Telegram</button>
        <button class="btn btn-default social_share" data-type="wa">WhatsApp</button>
    </p>
    </div>


</div>

</body>
</html>

JavaScript

(function (factory) {
  var registeredInModuleLoader;
  if (typeof define === 'function' && define.amd) {
    define(factory);
    registeredInModuleLoader = true;
  }
  if (typeof exports === 'object') {
    module.exports = factory();
    registeredInModuleLoader = true;
  }
  if (!registeredInModuleLoader) {
    return window.JSShare = factory();
  }
}(function () {

  /**
   * indexOf for old browsers
   */
  if (!('indexOf' in Array.prototype)) {
    Array.prototype.indexOf = function(find, i /*opt*/) {
      if (i === undefined) i = 0;
      if (i < 0) i += this.length;
      if (i < 0) i = 0;
      for (var n = this.length; i < n; i++)
        if (i in this && this[i] === find)
          return i;
      return -1;
    };
  }

  /**
   * Object Extending Functionality
   */
  function _extend(out) {
    out = out || {};
    for (var i = 1; i < arguments.length; i++) {
      if (!arguments[i]) {
        continue;
      }
      for (var key in arguments[i]) {
        if (arguments[i].hasOwnProperty(key)) {
          out[key] = arguments[i][key];
        }
      }
    }
    return out;
  }

  /**
   * Get data-attributes
   */
  function _getData(el, defaultOptions) {
    var data = {};
    for (var key in defaultOptions) {
      if (defaultOptions.hasOwnProperty(key)) {
        var value = el.getAttribute('data-' + key);
        if (value !== null && typeof value != 'undefined') {
          data[key] = value;
        }
      }
    }
    return data;
  }

  /**
   * Open a popup window with sharing info
   * @param url
   * @param _options
   * @returns {Window}
   * @private
   */
  function _popup (url, _options) {
    return window.open(url, '', 'toolbar=0,status=0,scrollbars=1,width=' + _options.popup_width + ',height=' + _options.popup_height);
  }

  /**
   * Get URL for sharing based on options
   * @param options
   * @returns {string | *}
   * @private
   */
  function _getURL(options) {
    if (options.url === '') {
      options.url =...