export default (() => { //此js已经被魔改,和原作者的OwO.js有所不同,CVer谨慎使用.. by inleft class OwO { constructor(option) { const defaultOption = { container: document.getElementsByClassName('OwO')[0], target: document.getElementsByTagName('textarea')[0], position: 'down', width: '100%', maxHeight: '250px', api: 'https://api.anotherhome.net/OwO/OwO.json' } for (let defaultKey in defaultOption) { if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) { option[defaultKey] = defaultOption[defaultKey] } } this.container = option.container this.target = option.target if (option.position === 'up') { this.container.classList.add('OwO-up') } if (option.jsonText != null && option.jsonText != undefined && option.jsonText != '') { this.odata = option.jsonText this.init(option) } else { const xhr = new XMLHttpRequest() xhr.onreadystatechange = () => { if (xhr.readyState === 4) { if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { this.odata = JSON.parse(xhr.responseText) this.init(option) } else { console.log('OwO data request was unsuccessful: ' + xhr.status) } } } xhr.open('get', option.api, true) xhr.send(null) } } init(option) { this.area = option.target this.packages = Object.keys(this.odata) // fill in HTML let html = `
` for (let i = 0; i < this.packages.length; i++) { html += ` ` } html += `
` this.container.innerHTML = html // bind event //this.logo = document.getElementsByClassName('OwO-logo')[0] //多个logo,获取当前容器下的子节点 by inleft this.logo = this.container.getElementsByClassName("OwO-logo")[0]; this.logo.addEventListener('click', e => { e.stopPropagation() this.toggle() }) this.container.getElementsByClassName('OwO-body')[0].addEventListener('click', e => { let target = null if (e.target.classList.contains('OwO-item')) { target = e.target } else if (e.target.parentNode.classList.contains('OwO-item')) { target = e.target.parentNode } if (target) { const cursorPos = this.area.selectionEnd let areaValue = this.area.value //this.area.value = areaValue.slice(0, cursorPos) + target.innerHTML + areaValue.slice(cursorPos); if (target.dataset.id == 'not-given') { this.area.value = areaValue.slice(0, cursorPos) + target.innerHTML + areaValue .slice( cursorPos) } else { this.area.value = areaValue.slice(0, cursorPos) + target.dataset.id + areaValue .slice( cursorPos) } this.area.focus() this.toggle() } }) this.packagesEle = this.container.getElementsByClassName('OwO-packages')[0] for (let i = 0; i < this.packagesEle.children.length; i++) { ; (index => { this.packagesEle.children[i].addEventListener('click', e => { e.stopPropagation() this.tab(index) }) })(i) } this.tab(0) } toggle() { if (this.container.classList.contains('OwO-open')) { this.container.classList.remove('OwO-open') } else { this.container.classList.add('OwO-open') } } tab(index) { const itemsShow = this.container.getElementsByClassName('OwO-items-show')[0] if (itemsShow) { itemsShow.classList.remove('OwO-items-show') } this.container.getElementsByClassName('OwO-items')[index].classList.add('OwO-items-show') const packageActive = this.container.getElementsByClassName('OwO-package-active')[0] if (packageActive) { packageActive.classList.remove('OwO-package-active') } this.packagesEle.getElementsByTagName('li')[index].classList.add('OwO-package-active') } } if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { module.exports = OwO } else { window.OwO = OwO } })()