{"version":3,"file":"word-cloud.mjs","sources":["../../../../../../packages/components/demo/src/word-cloud.vue"],"sourcesContent":["<template>\n  <section class=\"cloud-bed\">\n    <div ref=\"cloudBox\" class=\"cloud-box\">\n      <span\n        v-for=\"(item, index) in state.dataList\"\n        :key=\"index\"\n        @click=\"methods.getDataInfo(item)\"\n      >\n        {{ item.name }}\n      </span>\n    </div>\n  </section>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, onUnmounted, reactive, ref } from 'vue'\n\ndefineOptions({\n  name: 'VWordCloud',\n})\n\nconst cloudBox = ref<HTMLDivElement>()\nconst tagContent = ref<HTMLSpanElement>()\n\nconst state = reactive({\n  timer: 50, // 球体转动速率\n  radius: 0, // 词云球体面积大小\n  dtr: Math.PI / 180, //鼠标滑过球体转动速度\n  active: false, // 默认加载是否开启转动\n  lasta: 0, // 上下转动\n  lastb: 0.5, // 左右转动\n  distr: true,\n  tspeed: 0, // 鼠标移动上去时球体转动\n  mouseX: 0,\n  mouseY: 0,\n  tagAttrList: [],\n  sinA: 0,\n  cosA: 0,\n  sinB: 0,\n  cosB: 0,\n  sinC: 0,\n  cosC: 0,\n  dataList: [\n    { name: '市容环境', value: '8' },\n    { name: '生活资源', value: '8' },\n    { name: '机动车乱停', value: '0' },\n    { name: '供气质量', value: '0' },\n    { name: '商业噪音', value: '6' },\n    { name: '乱搭乱建', value: '10' },\n    { name: '道路垃圾', value: '2' },\n    { name: '生活用水管理', value: '5' },\n    { name: '路面不洁', value: '7' },\n    { name: '烧烤油烟', value: '6' },\n    { name: '非法广告', value: '4' },\n    { name: '设施破损', value: '6' },\n    { name: '病虫害', value: '5' },\n    { name: '1111', value: '5' },\n    { name: '2222', value: '5' },\n    { name: '3333', value: '5' },\n    { name: '4444', value: '5' },\n    { name: '5555', value: '5' },\n  ],\n})\n\nconst methods = {\n  // 获取点击文本信息\n  getDataInfo(item: any) {},\n  initWordCloud() {\n    if (!cloudBox.value) {\n      return\n    }\n    tagContent.value = cloudBox.value.querySelectorAll('span')\n    if (tagContent.value) {\n      for (let i = 0; i < tagContent.value.length; i++) {\n        const tagObj = {\n          offsetWidth: 0,\n          offsetHeight: 0,\n        }\n        tagObj.offsetWidth = tagContent.value[i].offsetWidth\n        tagObj.offsetHeight = tagContent.value[i].offsetHeight\n        state.tagAttrList.push(tagObj)\n      }\n    }\n\n    methods.sineCosine(0, 0, 0)\n    methods.positionAll()\n    cloudBox.value.onmouseover = () => {\n      state.active = true\n    }\n    cloudBox.value.onmouseout = () => {\n      state.active = false\n    }\n    cloudBox.value.onmousemove = (ev) => {\n      const oEvent = ev\n      state.mouseX =\n        oEvent.clientX -\n        (cloudBox.value.offsetLeft + cloudBox.value.offsetWidth / 2)\n      state.mouseY =\n        oEvent.clientY -\n        (cloudBox.value.offsetTop + cloudBox.value.offsetHeight / 2)\n      state.mouseX /= 5\n      state.mouseY /= 5\n    }\n    // setInterval(state.update, state.timer);\n    // state.timer = requestAnimationFrame(state.update)\n  },\n  positionAll() {\n    let phi = 0\n    let theta = 0\n    const max = state.tagAttrList.length\n    const aTmp = []\n    const oFragment = document.createDocumentFragment()\n    //随机排序\n    for (let i = 0; i < tagContent.value.length; i++) {\n      aTmp.push(tagContent.value[i])\n    }\n    aTmp.sort(() => {\n      return Math.random() < 0.5 ? 1 : -1\n    })\n    for (const element of aTmp) {\n      oFragment.appendChild(element)\n    }\n    cloudBox.value.appendChild(oFragment)\n    for (let i = 1; i < max + 1; i++) {\n      if (state.distr) {\n        phi = Math.acos(-1 + (2 * i - 1) / max)\n        theta = Math.sqrt(max * Math.PI) * phi\n      } else {\n        z\n        phi = Math.random() * Math.PI\n        theta = Math.random() * (2 * Math.PI)\n      }\n      //坐标变换\n      state.tagAttrList[i - 1].cx =\n        state.radius * Math.cos(theta) * Math.sin(phi)\n      state.tagAttrList[i - 1].cy =\n        state.radius * Math.sin(theta) * Math.sin(phi) + 50\n      state.tagAttrList[i - 1].cz = state.radius * Math.cos(phi)\n      tagContent.value[i - 1].style.left = `${\n        state.tagAttrList[i - 1].cx +\n        cloudBox.value.offsetWidth / 2 -\n        state.tagAttrList[i - 1].offsetWidth / 2\n      }px`\n      tagContent.value[i - 1].style.top = `${\n        state.tagAttrList[i - 1].cy +\n        cloudBox.value.offsetHeight / 2 -\n        state.tagAttrList[i - 1].offsetHeight\n      }px`\n    }\n  },\n  update() {\n    let angleBasicA\n    let angleBasicB\n\n    if (state.active) {\n      angleBasicA =\n        (-Math.min(Math.max(-state.mouseY, -200), 200) / state.radius) *\n        state.tspeed\n      angleBasicB =\n        (Math.min(Math.max(-state.mouseX, -200), 200) / state.radius) *\n        state.tspeed\n    } else {\n      angleBasicA = state.lasta * 0.98\n      angleBasicB = state.lastb * 0.98\n    }\n\n    //默认转动是后是否需要停下\n    // lasta=a;\n    // lastb=b;\n\n    // if(Math.abs(a)<=0.01 && Math.abs(b)<=0.01)\n    // {\n    // return;\n    // }\n    methods.sineCosine(angleBasicA, angleBasicB, 0)\n    for (let j = 0; j < state.tagAttrList.length; j++) {\n      const rx1 = state.tagAttrList[j].cx\n      const ry1 =\n        state.tagAttrList[j].cy * state.cosA +\n        state.tagAttrList[j].cz * -state.sinA\n      const rz1 =\n        state.tagAttrList[j].cy * state.sinA +\n        state.tagAttrList[j].cz * state.cosA\n\n      const rx2 = rx1 * state.cosB + rz1 * state.sinB\n      const ry2 = ry1\n      const rz2 = rx1 * -state.sinB + rz1 * state.cosB\n\n      const rx3 = rx2 * state.cosC + ry2 * -state.sinC\n      const ry3 = rx2 * state.sinC + ry2 * state.cosC\n      const rz3 = rz2\n      state.tagAttrList[j].cx = rx3\n      state.tagAttrList[j].cy = ry3\n      state.tagAttrList[j].cz = rz3\n\n      const per = 350 / (350 + rz3)\n\n      state.tagAttrList[j].x = rx3 * per - 2\n      state.tagAttrList[j].y = ry3 * per\n      state.tagAttrList[j].scale = per\n      state.tagAttrList[j].alpha = per\n\n      state.tagAttrList[j].alpha = (state.tagAttrList[j].alpha - 0.6) * (10 / 6)\n    }\n    methods.doPosition()\n    methods.depthSort()\n    // state.timer = requestAnimationFrame(state.update)\n  },\n  doPosition() {\n    const len = cloudBox.value.offsetWidth / 2\n    const height = cloudBox.value.offsetHeight / 2\n    for (let i = 0; i < state.tagAttrList.length; i++) {\n      tagContent.value[i].style.left = `${\n        state.tagAttrList[i].cx + len - state.tagAttrList[i].offsetWidth / 2\n      }px`\n      tagContent.value[i].style.top = `${\n        state.tagAttrList[i].cy + height - state.tagAttrList[i].offsetHeight / 2\n      }px`\n      // tagContent.value[i].style.fontSize = Math.ceil(12 * state.tagAttrList[i].scale/2) + 8 + 'px';\n      tagContent.value[i].style.fontSize = `${\n        Math.ceil((12 * state.tagAttrList[i].scale) / 2) + 2\n      }px`\n      tagContent.value[i].style.filter = `alpha(opacity=${\n        100 * state.tagAttrList[i].alpha\n      })`\n      tagContent.value[i].style.opacity = state.tagAttrList[i].alpha\n    }\n  },\n  depthSort() {\n    const aTmp = []\n    for (let i = 0; i < tagContent.value.length; i++) {\n      aTmp.push(tagContent.value[i])\n    }\n    aTmp.sort((item1, item2) => item2.cz - item1.cz)\n    for (const i of aTmp) {\n      aTmp[i].style.zIndex = i\n    }\n  },\n  sineCosine(a: number, b: number, c: number) {\n    state.sinA = Math.sin(a * state.dtr)\n    state.cosA = Math.cos(a * state.dtr)\n    state.sinB = Math.sin(b * state.dtr)\n    state.cosB = Math.cos(b * state.dtr)\n    state.sinC = Math.sin(c * state.dtr)\n    state.cosC = Math.cos(c * state.dtr)\n  },\n}\n\nonMounted(() => {\n  nextTick(() => {\n    if (cloudBox.value) {\n      state.radius = cloudBox.value.offsetWidth / 2.5\n    }\n    methods.initWordCloud()\n  })\n})\n\nonUnmounted(() => {\n  // cancelAnimationFrame(state.timer)\n})\n</script>\n"],"names":[],"mappings":"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"}