{"version":3,"sources":["jsdelivr-header.js","/npm/index-sidebar@0.1.1/index.js"],"names":[],"mappings":"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","file":"/npm/index-sidebar@0.1.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/index-sidebar@0.1.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (factory) {\r\n\r\n\tif (typeof module === 'object' && module.export) {\r\n\t\tmodule.export = factory()\r\n\t} else if (typeof define === 'function' && (define.amd || define.cmd)) {\r\n\t\tdefine([], factory)\r\n\t} else if (typeof window !== 'undefined') {\r\n\t\twindow.IndexSidebar = factory()\r\n\t}\r\n\r\n})(function () {\r\n\r\nvar defaultOptions = {\r\n\tchars: '*ABCDEFGHIJKLMNOPQRSTUVWXYZ#',\r\n\tisAdjust: true,\r\n\toffsetTop: 70,\r\n\toffsetBottom: 10,\r\n\tlineScale: 0.7,\r\n\tcharOffsetX: 80,\r\n\tcharOffsetY: 20\r\n}\r\n\r\nfunction IndexSidebar(options) {\r\n\toptions = options || {}\r\n\r\n\tfor (var k in defaultOptions) {\r\n\t\tif (defaultOptions.hasOwnProperty(k)) {\r\n\t\t\toptions[k] = options[k] || defaultOptions[k]\r\n\t\t}\r\n\t}\r\n\r\n\tthis.options = options\r\n\tthis.initialize(options)\r\n}\r\n\r\nIndexSidebar.prototype.initialize = function (options) {\r\n\r\n\tvar chars = options.chars\r\n\tvar el =  document.createElement('div')\r\n\tel.className = 'index-sidebar-container'\r\n\tel.innerHTML = this.render(chars)\r\n\tdocument.body.appendChild(el)\r\n\r\n\tthis.el = el\r\n\tthis.elChar = el.querySelector('.current-char')\r\n\tthis.chars = chars\r\n\tif (options.isAdjust) {\r\n\t\tthis.adjust(options)\r\n\t}\r\n\tthis.initEvents(options)\r\n}\r\n\r\nIndexSidebar.prototype.render = function (chars) {\r\n\treturn (\r\n\t\t'<span class=\"current-char\"></span>' +\r\n\t\t'<ul>' +\r\n\t\t\t[].map.call(chars, function (ch) {\r\n\t\t\t\treturn '<li>' + ch + '</li>'\r\n\t\t\t}).join('') +\r\n\t\t'</ul>'\r\n\t)\r\n}\r\n\r\nIndexSidebar.prototype.initEvents = function (options) {\r\n\tvar view = this\r\n\tvar el = this.el\r\n\tvar elChar = this.elChar\r\n\tvar chars = this.chars\r\n\r\n\tvar boxRect = el.getBoundingClientRect()\r\n\tvar boxHeight = boxRect.height\r\n\tvar boxClientTop = boxRect.top\r\n\r\n\tvar charOffsetX = options.charOffsetX\r\n\tvar charOffsetY = options.charOffsetY\r\n\r\n\tvar touching = false\r\n\tvar lastChar\r\n\r\n\t// touch events\r\n\tif ('ontouchstart' in document) {\r\n\t\tel.addEventListener('touchstart', function (e) {\r\n\t\t\tif (!touching) {\r\n\t\t\t\te.preventDefault()\r\n\t\t\t\tvar t = e.touches[0]\r\n\t\t\t\tstart(t.clientX, t.clientY)\r\n\t\t\t}\r\n\t\t}, false)\r\n\t\tdocument.addEventListener('touchmove', function handler(e) {\r\n\t\t\tif (touching) {\r\n\t\t\t\te.preventDefault()\r\n\t\t\t\tvar t = e.touches[0]\r\n\t\t\t\tmove(t.clientX, t.clientY)\r\n\t\t\t}\r\n\t\t}, false)\r\n\t\tdocument.addEventListener('touchend', function (e) {\r\n\t\t\tif (touching) {\r\n\t\t\t\te.preventDefault()\r\n\t\t\t\tend()\r\n\t\t\t}\r\n\t\t}, false)\r\n\t}\r\n\t// mouse events\r\n\telse {\r\n\t\tel.addEventListener('mousedown', function (e) {\r\n\t\t\tif (!touching) {\r\n\t\t\t\te.preventDefault()\r\n\t\t\t\tstart(e.clientX, e.clientY)\r\n\t\t\t}\r\n\t\t})\r\n\t\tdocument.addEventListener('mousemove', function (e) {\r\n\t\t\tif (touching) {\r\n\t\t\t\te.preventDefault()\r\n\t\t\t\tmove(e.clientX, e.clientY)\r\n\t\t\t}\r\n\t\t})\r\n\t\tdocument.addEventListener('mouseup', function (e) {\r\n\t\t\tif (touching) {\r\n\t\t\t\te.preventDefault()\r\n\t\t\t\tend()\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tfunction start(clientX, clientY) {\r\n\t\ttouching = true\r\n\t\telChar.style.display = 'block'\r\n\t\tmove(clientX, clientY)\r\n\t}\r\n\r\n\tfunction move(clientX, clientY) {\r\n\t\tvar offset = calcRelativePosition(clientY)\r\n\t\tvar percent = offset / boxHeight\r\n\t\tvar ch = getPositionChar(percent)\r\n\r\n\t\tupdateChar(clientX, clientY, ch)\r\n\t}\r\n\r\n\tfunction end() {\r\n\t\ttouching = false\r\n\t\telChar.style.display = 'none'\r\n\t}\r\n\r\n\tfunction updateChar(clientX, clientY, ch) {\r\n\t\tvar x = Math.max(clientX, charOffsetX)\r\n\t\tvar yMin = boxClientTop\r\n\t\tvar yMax = window.innerHeight - charOffsetY\r\n\t\tvar y = Math.min(Math.max(clientY, yMin), yMax)\r\n\r\n\t\telChar.textContent = ch\r\n\t\telChar.style.left = x + 'px'\r\n\t\telChar.style.top = y + 'px'\r\n\r\n\t\tif (ch && lastChar !== ch) {\r\n\t\t\tlastChar = ch\r\n\t\t\tview.trigger('charChange', ch)\r\n\t\t}\r\n\t}\r\n\r\n\tfunction calcRelativePosition(clientY) {\r\n\t\tvar y = clientY - boxClientTop\r\n\t\tif (y < 0) {\r\n\t\t\ty = 0\r\n\t\t} else if (y > boxHeight) {\r\n\t\t\ty = boxHeight\r\n\t\t}\r\n\t\treturn y\r\n\t}\r\n\r\n\t// yPercent {Number} in range of [0, 1]\r\n\tfunction getPositionChar(yPercent) {\r\n\t\tvar min = 1\r\n\t\tvar max = chars.length\r\n\t\tvar index = Math.ceil(yPercent * max)\r\n\t\tif (index < min) {\r\n\t\t\tindex = min\r\n\t\t} else if (index > max) {\r\n\t\t\tindex = max\r\n\t\t}\r\n\t\treturn chars[index - 1]\r\n\t}\r\n}\r\n\r\nIndexSidebar.prototype.adjust = function (options) {\r\n\tvar charCount = options.chars.length\r\n\r\n\tvar expectHeight = window.innerHeight - options.offsetTop - options.offsetBottom\r\n\tvar expectLineHeight = expectHeight / charCount\r\n\tvar expectFontSize = expectLineHeight * options.lineScale\r\n\r\n\tvar style = this.el.querySelector('ul').style\r\n\tstyle.lineHeight = expectLineHeight + 'px'\r\n\tstyle.fontSize = expectFontSize + 'px'\r\n}\r\n\r\n/* Event Emitter API */\r\n\r\nIndexSidebar.prototype.trigger = function (event, data) {\r\n\tvar listeners = this._listeners && this._listeners[event]\r\n\tif (listeners) {\r\n\t\tlisteners.forEach(function (listener) {\r\n\t\t\tlistener(data)\r\n\t\t})\r\n\t}\r\n}\r\n\r\nIndexSidebar.prototype.on = function (event, callback) {\r\n\tthis._listeners = this._listeners || {}\r\n\tvar listeners = this._listeners[event] || (this._listeners[event] = [])\r\n\tlisteners.push(callback)\r\n}\r\n\r\nIndexSidebar.prototype.off = function (event, callback) {\r\n\tvar listeners = this._listeners && this._listeners[event]\r\n\tif (listeners) {\r\n\t\tvar i = listeners.indexOf(callback)\r\n\t\tif (i > -1) {\r\n\t\t\tlisteners.splice(i, 1)\r\n\t\t\tif (listeners.length === 0) {\r\n\t\t\t\tthis._listeners[event] = null\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nreturn IndexSidebar\r\n\r\n})"]}