{"version":3,"file":"gist-simple.cjs","sources":["../src/utils/extend.js","../src/utils/deferred.js","../src/utils/load-jsonp.js","../src/utils/load-css.js","../src/defaults.js","../src/core.js"],"sourcesContent":["/**\n * Extend like jQuery.extend\n *\n * @param {Object} out - output object.\n * @param {...any} args - additional objects to extend.\n *\n * @returns {Object}\n */\nexport default function extend(out, ...args) {\n  out = out || {};\n\n  Object.keys(args).forEach((i) => {\n    if (!args[i]) {\n      return;\n    }\n    Object.keys(args[i]).forEach((key) => {\n      out[key] = args[i][key];\n    });\n  });\n\n  return out;\n}\n","// Deferred\n// thanks http://stackoverflow.com/questions/18096715/implement-deferred-object-without-using-jquery\nfunction Deferred() {\n  this.doneCallbacks = [];\n  this.failCallbacks = [];\n}\n\nDeferred.prototype = {\n  execute(list, args) {\n    let i = list.length;\n    // eslint-disable-next-line no-param-reassign\n    args = Array.prototype.slice.call(args);\n\n    while (i) {\n      i -= 1;\n      list[i].apply(null, args);\n    }\n  },\n  resolve(...args) {\n    this.execute(this.doneCallbacks, args);\n  },\n  reject(...args) {\n    this.execute(this.failCallbacks, args);\n  },\n  done(callback) {\n    this.doneCallbacks.push(callback);\n  },\n  fail(callback) {\n    this.failCallbacks.push(callback);\n  },\n};\n\nexport default Deferred;\n","/**\n * Load JSONP url with callback.\n *\n * @thanks https://gist.github.com/gf3/132080/110d1b68d7328d7bfe7e36617f7df85679a08968\n */\nconst NAME_FLAG = '__gist_simple_jsonp__';\n\nexport default function loadJSONP(url, params) {\n  const { data = {}, beforeSend, success } = params;\n\n  window[NAME_FLAG] = (window[NAME_FLAG] || 0) + 1;\n\n  // Add callback function name.\n  data.callback = `${NAME_FLAG}_cb_${window[NAME_FLAG]}`;\n\n  // Add params to URL.\n  Object.keys(data).forEach((k) => {\n    if (url.match(/\\?/)) {\n      url += `&${k}=${data[k]}`;\n    } else {\n      url += `?${k}=${data[k]}`;\n    }\n  });\n\n  if (beforeSend && !beforeSend()) {\n    return;\n  }\n\n  // Create script\n  let script = document.createElement('script');\n  script.type = 'text/javascript';\n  script.src = url;\n\n  // Setup handler\n  window[data.callback] = function (response) {\n    success.call(window, response);\n    document.head.removeChild(script);\n    script = null;\n    delete window[data.callback];\n  };\n\n  // Load JSON\n  document.head.appendChild(script);\n}\n","/**\n * Load CSS with callback\n */\nconst LOADED_FLAG = '__gist_simple_css_loaded__';\n\nexport default function loadCSS(url, callback, doc = document) {\n  // Already exists.\n  let el = doc.body.querySelector(`link[href=\"${url}\"]`);\n\n  if (!el) {\n    el = doc.createElement('link');\n\n    el.href = url;\n    el.rel = 'stylesheet';\n    el.type = 'text/css';\n\n    doc.head.appendChild(el);\n  }\n\n  if (callback) {\n    // Is loaded already.\n    if (el[LOADED_FLAG]) {\n      callback(el);\n      return;\n    }\n\n    // Add listener.\n    el.addEventListener(\n      'load',\n      () => {\n        el[LOADED_FLAG] = true;\n\n        callback(el);\n      },\n      false\n    );\n  }\n}\n","export default {\n  id: '',\n  theme: 'system',\n  file: '',\n  caption: '',\n  lines: '',\n  linesExpanded: false,\n  highlightLines: '',\n  showFooter: true,\n  showLineNumbers: true,\n  enableCache: true,\n\n  onInit: null, // () => {}\n  onInitEnd: null, // () => {}\n  onDestroy: null, // () => {}\n  onDestroyEnd: null, // () => {}\n  onAjaxBeforeSend: null, // () => {}\n  onAjaxSuccess: null, // (response) => {}\n  onAjaxLoaded: null, // () => {}\n};\n","import extend from './utils/extend';\nimport Deferred from './utils/deferred';\nimport loadJSONP from './utils/load-jsonp';\nimport loadCSS from './utils/load-css';\nimport iconArrow from './icons/arrow.svg';\nimport defaults from './defaults';\n\nconst cache = {};\nlet instanceID = 0;\n\nconst loadingIcon = '<span class=\"gist-simple-loading-icon\"><i></i><i></i><i></i></span>';\n\n// Gist Simple class\nclass GistSimple {\n  constructor(container, userOptions) {\n    const self = this;\n\n    self.instanceID = instanceID;\n\n    instanceID += 1;\n\n    self.$container = container;\n\n    self.defaults = { ...defaults };\n\n    // prepare data-options\n    const dataOptions = self.$container.dataset || {};\n    const pureDataOptions = {};\n    Object.keys(dataOptions).forEach((key) => {\n      if (key && typeof self.defaults[key] !== 'undefined') {\n        pureDataOptions[key] = dataOptions[key];\n      }\n    });\n\n    self.options = extend({}, self.defaults, pureDataOptions, userOptions);\n    self.pureOptions = extend({}, self.options);\n\n    // prepare 'true' and 'false' strings to boolean\n    Object.keys(self.options).forEach((key) => {\n      if (self.options[key] === 'true') {\n        self.options[key] = true;\n      } else if (self.options[key] === 'false') {\n        self.options[key] = false;\n      }\n    });\n\n    self.init();\n  }\n\n  init() {\n    const self = this;\n    const { options } = self;\n    const url = `https://gist.github.com/${options.id}.json`;\n    const { lines } = options;\n    const data = {};\n\n    // call onInit event\n    if (self.options.onInit) {\n      self.options.onInit.call(self);\n    }\n\n    if (options.file) {\n      data.file = options.file;\n    }\n\n    self.$container.classList.add('gist-simple');\n\n    if (options.theme === 'dark' || options.theme === 'system') {\n      self.$container.classList.add(`gist-simple-${options.theme}`);\n    }\n\n    // if the id doesn't exist, then ignore the code block\n    if (!options.id) {\n      self.insertContent('Gist ID is required', true);\n      return;\n    }\n\n    const cacheUrl = url + options.file;\n    const enableCache = options.enableCache || cache[cacheUrl];\n\n    // show preloader.\n    self.insertContent(loadingIcon, true);\n\n    function insertGist(response) {\n      // reference to div\n      const $responseDiv = document.createElement('div');\n      $responseDiv.innerHTML = response.div;\n\n      // remove id for uniqueness constraints\n      if ($responseDiv.firstChild) {\n        $responseDiv.firstChild.removeAttribute('id');\n      }\n\n      self.insertContent($responseDiv.innerHTML);\n\n      // highlight lines\n      self.highlightLines(options.highlightLines);\n\n      // show only specific lines\n      self.showSpecificLines(lines, options.linesExpanded);\n\n      // show caption\n      self.showCaption(options.caption);\n\n      // remove footer\n      if (!options.showFooter) {\n        self.removeFooter();\n      }\n\n      // remove line numbers\n      if (!options.showLineNumbers) {\n        self.removeLineNumbers();\n      }\n\n      // call onAjaxLoaded event\n      if (self.options.onAjaxLoaded) {\n        self.options.onAjaxLoaded.call(self, response);\n      }\n    }\n\n    function successCallback(response) {\n      // the html payload is in the div property\n      if (response && response.div) {\n        let { stylesheet } = response;\n\n        // github returns /assets/embed-id.css now, but let's be sure about that\n        if (stylesheet) {\n          // github passes down html instead of a url for the stylesheet now\n          // parse off the href\n          if (stylesheet.indexOf('<link') === 0) {\n            stylesheet = stylesheet.replace(/\\\\/g, '').match(/href=\"([^\\s]*)\"/);\n            [stylesheet] = stylesheet;\n          } else if (stylesheet.indexOf('http') !== 0) {\n            // add leading slash if missing\n            if (stylesheet.indexOf('/') !== 0) {\n              stylesheet = `/${stylesheet}`;\n            }\n            stylesheet = `https://gist.github.com${stylesheet}`;\n          }\n\n          // Insert gist only after CSS loaded.\n          loadCSS(\n            stylesheet,\n            () => {\n              insertGist(response);\n            },\n            self.$container.ownerDocument\n          );\n        } else {\n          insertGist(response);\n        }\n      } else {\n        self.insertContent(`Failed loading gist ${url}`, true);\n      }\n    }\n\n    function errorCallBack(textStatus) {\n      self.insertContent(`Failed loading gist ${url}: ${textStatus}`, true);\n    }\n\n    // request the json version of this gist\n    loadJSONP(url, {\n      data,\n      beforeSend() {\n        // call onAjaxBeforeSend event\n        if (self.options.onAjaxBeforeSend) {\n          self.options.onAjaxBeforeSend.call(self);\n        }\n\n        // option to enable caching of the gists\n        if (enableCache) {\n          if (cache[cacheUrl]) {\n            // Cached response.\n            if (cache[cacheUrl].div) {\n              successCallback(cache[cacheUrl]);\n\n              return false;\n            }\n\n            // loading the response from cache and preventing the ajax call\n            cache[cacheUrl].done((response) => {\n              successCallback(response);\n            });\n            cache[cacheUrl].fail((errorStatus) => {\n              errorCallBack(errorStatus);\n            });\n\n            return false;\n          }\n\n          // saving the promise for the requested json as a proxy for the actual response\n          cache[cacheUrl] = new Deferred();\n        }\n        return true;\n      },\n      success(response) {\n        // call onAjaxSuccess event\n        if (self.options.onAjaxSuccess) {\n          self.options.onAjaxSuccess.call(self, response);\n        }\n\n        if (enableCache) {\n          if (cache[cacheUrl] && cache[cacheUrl].resolve) {\n            cache[cacheUrl].resolve(response);\n            cache[cacheUrl] = response;\n          }\n        }\n\n        successCallback(response);\n      },\n      error(textStatus) {\n        errorCallBack(textStatus);\n      },\n    });\n\n    // call onInitEnd event\n    if (self.options.onInitEnd) {\n      self.options.onInitEnd.call(self);\n    }\n  }\n\n  destroy() {\n    const self = this;\n\n    // call onDestroy event\n    if (self.options.onDestroy) {\n      self.options.onDestroy.call(self);\n    }\n\n    // remove content\n    self.$container.innerHTML = '';\n\n    // delete GistSimple instance from container\n    delete self.$container.GistSimple;\n\n    // call onDestroyEnd event\n    if (self.options.onDestroyEnd) {\n      self.options.onDestroyEnd.call(self);\n    }\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  chunkBy(items, predicate) {\n    if (items.length === 0) {\n      return [];\n    }\n\n    return items.slice(1).reduce(\n      (chunked, item) => {\n        if (predicate(item)) {\n          chunked.push([item]);\n        } else {\n          chunked.push(chunked.pop().concat([item]));\n        }\n\n        return chunked;\n      },\n      [items.slice(0, 1)]\n    );\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  getLineNumbers(lineRangeString) {\n    const lineNumbers = [];\n    let range;\n    let lineNumberSections;\n\n    if (typeof lineRangeString === 'number') {\n      lineNumbers.push(lineRangeString);\n    } else {\n      lineNumberSections = lineRangeString.split(',');\n\n      for (let i = 0; i < lineNumberSections.length; i += 1) {\n        range = lineNumberSections[i].split('-');\n        if (range.length === 2) {\n          for (let j = parseInt(range[0], 10); j <= range[1]; j += 1) {\n            lineNumbers.push(j);\n          }\n        } else if (range.length === 1) {\n          lineNumbers.push(parseInt(range[0], 10));\n        }\n      }\n    }\n    return lineNumbers;\n  }\n\n  // insert content.\n  insertContent(content, wrapper = false) {\n    if (wrapper) {\n      content = `<div class=\"gist-simple-wrap\">${content}</div>`;\n    }\n\n    this.$container.innerHTML = content;\n  }\n\n  // highlight lines.\n  highlightLines(lines) {\n    if (!lines) {\n      return;\n    }\n    const highlightLineNumbers = this.getLineNumbers(lines);\n\n    // we need to set the line-data td to 100% so the highlight expands the whole line\n    this.$container.querySelectorAll('td.line-data').forEach((el) => {\n      el.style.width = '100%';\n    });\n\n    // find all .js-file-line tds (actual code lines) that match the highlightLines and add the highlight class\n    this.$container.querySelectorAll('.js-file-line').forEach((el, index) => {\n      if (highlightLineNumbers.indexOf(index + 1) !== -1) {\n        el.classList.add('gist-simple-highlighted-line');\n      }\n    });\n  }\n\n  // show only specific lines.\n  // value example: \"2\", \"1-5\", \"1,4\", \"1,4,6-8\"\n  showSpecificLines(lines, linesExpanded) {\n    if (!lines) {\n      return;\n    }\n\n    const lineNumbers = this.getLineNumbers(lines);\n    const collapsableLineNumbers = [];\n\n    // find all trs containing code lines that don't exist in the line param\n    this.$container.querySelectorAll('.js-file-line').forEach((el, index) => {\n      if (lineNumbers.indexOf(index + 1) === -1) {\n        if (linesExpanded) {\n          collapsableLineNumbers.push(index + 1);\n\n          el.parentNode.style.display = 'none';\n        } else {\n          el.parentNode.remove();\n        }\n      }\n    });\n\n    // option to expand highlight lines and collapse hidden lines\n    if (linesExpanded) {\n      const collapsableBlocks = this.chunkBy(\n        collapsableLineNumbers,\n        (line) => !collapsableLineNumbers.includes(line - 1)\n      );\n\n      collapsableBlocks.forEach((block) => {\n        const firstLine = block[0];\n        const lineBeforeFirstLine = firstLine - 1;\n        const lastLine = block[block.length - 1];\n\n        const $collapsibleIcon = document.createElement('a');\n        $collapsibleIcon.setAttribute('lines', block.join());\n        $collapsibleIcon.style.display = 'block';\n        $collapsibleIcon.style.cursor = 'pointer';\n        $collapsibleIcon.innerHTML = iconArrow;\n\n        $collapsibleIcon.addEventListener('click', (event) => {\n          event.preventDefault();\n\n          $collapsibleIcon\n            .closest('table.highlight')\n            .querySelectorAll('tr[style*=\"display: none\"] td[data-line-number]')\n            .forEach(function ($element) {\n              const foundLines = $collapsibleIcon.getAttribute('lines').split(',');\n              const lineNumber = $element.getAttribute('data-line-number');\n\n              if (foundLines.indexOf(lineNumber) === -1) {\n                return;\n              }\n\n              $element.parentNode.style.display = '';\n            });\n\n          $collapsibleIcon.closest('tr').remove();\n        });\n\n        const lineNumberElement = `\n          <td class=\"blob-num js-line-number collapsed\"><!-- Icon Here --></td>\n        `;\n\n        const lineCodeElement = `\n          <td class=\"blob-code blob-code-inner js-file-line collapsed\">... Lines ${firstLine} - ${lastLine}</td>\n        `;\n\n        const $lineElement = document.createElement('tr');\n        $lineElement.innerHTML = lineNumberElement + lineCodeElement;\n        $lineElement.querySelector('td:first-child').append($collapsibleIcon);\n\n        const $line = this.$container.querySelector(\n          `.js-line-number[data-line-number=\"${\n            lineBeforeFirstLine === 0 ? 1 : lineBeforeFirstLine\n          }\"]`\n        );\n\n        if ($line) {\n          if (lineBeforeFirstLine === 0) {\n            $line.parentElement.before($lineElement);\n          } else {\n            $line.parentElement.after($lineElement);\n          }\n        }\n      });\n    }\n  }\n\n  // show caption.\n  showCaption(caption) {\n    if (!caption) {\n      return;\n    }\n\n    const tbody = this.$container.querySelector('table tbody');\n    const $row = document.createElement('tr');\n    const $captionColumn = document.createElement('td');\n\n    $row.classList.add('gist-simple-caption');\n    $captionColumn.innerHTML = caption;\n\n    const $rowBorder = document.createElement('td');\n\n    $row.append($rowBorder);\n    $row.append($captionColumn);\n    tbody.prepend($row);\n  }\n\n  // remove footer.\n  removeFooter() {\n    this.$container.querySelector('.gist-meta').remove();\n\n    // present a uniformed border when footer is hidden\n    this.$container.querySelector('.gist-data').style.borderBottom = '0px';\n    this.$container.querySelector('.gist-file').style.borderBottom = '1px solid #ddd';\n  }\n\n  // remove line numbers.\n  removeLineNumbers() {\n    this.$container.querySelectorAll('.js-line-number').forEach((el) => {\n      el.remove();\n    });\n    this.$container.querySelector('table.highlight').style.width = '100%';\n  }\n}\n\n// global definition\nconst gistSimple = function (items, options, ...args) {\n  // check for dom element\n  // thanks: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n  if (\n    typeof HTMLElement === 'object'\n      ? items instanceof HTMLElement\n      : items &&\n        typeof items === 'object' &&\n        items !== null &&\n        items.nodeType === 1 &&\n        typeof items.nodeName === 'string'\n  ) {\n    items = [items];\n  }\n\n  const len = items.length;\n  let k = 0;\n  let ret;\n\n  for (k; k < len; k += 1) {\n    if (typeof options === 'object' || typeof options === 'undefined') {\n      if (!items[k].GistSimple) {\n        items[k].GistSimple = new GistSimple(items[k], options);\n      }\n    } else if (items[k].GistSimple) {\n      // eslint-disable-next-line prefer-spread\n      ret = items[k].GistSimple[options].apply(items[k].GistSimple, args);\n    }\n    if (typeof ret !== 'undefined') {\n      return ret;\n    }\n  }\n\n  return items;\n};\ngistSimple.constructor = GistSimple;\n\nexport default gistSimple;\n"],"names":["extend","out","args","Object","keys","forEach","i","key","Deferred","doneCallbacks","failCallbacks","prototype","execute","list","length","Array","slice","call","apply","resolve","reject","done","callback","push","fail","NAME_FLAG","loadJSONP","url","params","data","beforeSend","success","window","k","match","script","document","createElement","type","src","response","head","removeChild","appendChild","LOADED_FLAG","loadCSS","doc","el","body","querySelector","href","rel","addEventListener","id","theme","file","caption","lines","linesExpanded","highlightLines","showFooter","showLineNumbers","enableCache","onInit","onInitEnd","onDestroy","onDestroyEnd","onAjaxBeforeSend","onAjaxSuccess","onAjaxLoaded","cache","instanceID","loadingIcon","GistSimple","constructor","container","userOptions","self","$container","defaults","dataOptions","dataset","pureDataOptions","options","pureOptions","init","classList","add","insertContent","cacheUrl","insertGist","$responseDiv","innerHTML","div","firstChild","removeAttribute","showSpecificLines","showCaption","removeFooter","removeLineNumbers","successCallback","stylesheet","indexOf","replace","ownerDocument","errorCallBack","textStatus","errorStatus","error","destroy","chunkBy","items","predicate","reduce","chunked","item","pop","concat","getLineNumbers","lineRangeString","lineNumbers","range","lineNumberSections","split","j","parseInt","content","wrapper","highlightLineNumbers","querySelectorAll","style","width","index","collapsableLineNumbers","parentNode","display","remove","collapsableBlocks","line","includes","block","firstLine","lineBeforeFirstLine","lastLine","$collapsibleIcon","setAttribute","join","cursor","iconArrow","event","preventDefault","closest","$element","foundLines","getAttribute","lineNumber","lineNumberElement","lineCodeElement","$lineElement","append","$line","parentElement","before","after","tbody","$row","$captionColumn","$rowBorder","prepend","borderBottom","gistSimple","HTMLElement","nodeType","nodeName","len","ret"],"mappings":"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"}