@melt-js/tpl-vue2-admin-ele 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/hel_dist/hel-meta.json +52 -52
  2. package/hel_dist/hel_userChunk_1.js +1 -1
  3. package/hel_dist/index.html +1 -1
  4. package/hel_dist/static/css/{chunk-de514d9e.195f0b8d.css → chunk-16db41d4.9e55fc5f.css} +1 -1
  5. package/hel_dist/static/css/chunk-bc100a10.1311b2f3.css +1 -0
  6. package/hel_dist/static/js/{app.727de200.js → app.263fc370.js} +1 -1
  7. package/hel_dist/static/js/chunk-16db41d4.1c095d0f.js +1 -0
  8. package/hel_dist/static/js/{chunk-2420f532.7ee68dca.js → chunk-2420f532.87fa8a7a.js} +1 -1
  9. package/hel_dist/static/js/{chunk-2d0c8bf7.2d1e02b6.js → chunk-2d0c8bf7.ed8bdde3.js} +1 -1
  10. package/hel_dist/static/js/{chunk-2d0cfaef.bf980c5a.js → chunk-2d0cfaef.24c21e21.js} +1 -1
  11. package/hel_dist/static/js/{chunk-2d0d0f79.e56bc7f2.js → chunk-2d0d0f79.beb2e72e.js} +1 -1
  12. package/hel_dist/static/js/{chunk-2d0e4b0c.e79c3e18.js → chunk-2d0e4b0c.a483302f.js} +1 -1
  13. package/hel_dist/static/js/{chunk-2d0e4e1f.229eb61b.js → chunk-2d0e4e1f.84facb68.js} +1 -1
  14. package/hel_dist/static/js/{chunk-2d0e944c.908ed759.js → chunk-2d0e944c.4dd146d5.js} +1 -1
  15. package/hel_dist/static/js/{chunk-2d2104c6.4df72a51.js → chunk-2d2104c6.78e80d97.js} +1 -1
  16. package/hel_dist/static/js/{chunk-2d226cab.70b60624.js → chunk-2d226cab.1ef817ba.js} +1 -1
  17. package/hel_dist/static/js/{chunk-2d229205.a4a53980.js → chunk-2d229205.2b5e7966.js} +1 -1
  18. package/hel_dist/static/js/{chunk-3063e94a.8ee5f7c8.js → chunk-3063e94a.31cba904.js} +1 -1
  19. package/hel_dist/static/js/{chunk-7ba44fd1.9a083fea.js → chunk-307f1e2c.c224f496.js} +6 -6
  20. package/hel_dist/static/js/{chunk-5eaa4e8c.5cd89550.js → chunk-5eaa4e8c.9d0cdf8b.js} +1 -1
  21. package/hel_dist/static/js/{chunk-6d379bf5.08c3ac91.js → chunk-6d379bf5.7ef823c5.js} +1 -1
  22. package/hel_dist/static/js/chunk-6f88f402.5000f5a4.js +1 -0
  23. package/hel_dist/static/js/{chunk-7e81d64a.c8790900.js → chunk-7e81d64a.c006fe4a.js} +1 -1
  24. package/hel_dist/static/js/{chunk-9f5abb9e.d2e58d92.js → chunk-9f5abb9e.f0d084c2.js} +1 -1
  25. package/hel_dist/static/js/chunk-bc100a10.f760a9b9.js +1 -0
  26. package/hel_dist/static/js/{chunk-elementUI.46360cea.js → chunk-elementUI.00540946.js} +1 -1
  27. package/hel_dist/static/js/{chunk-libs.8b02320e.js → chunk-libs.777d85b4.js} +1 -1
  28. package/package.json +1 -1
  29. package/src/components/Screenfull/index.vue +204 -0
  30. package/src/components/index.js +1 -0
  31. package/src/entrance/libTypes.ts +1 -0
  32. package/src/layout/components/AppMain.vue +89 -40
  33. package/src/utils/fullscreen.js +128 -0
  34. package/hel_dist/static/css/chunk-67ce6001.3f0a3a92.css +0 -1
  35. package/hel_dist/static/js/chunk-67ce6001.a09628e2.js +0 -1
  36. package/hel_dist/static/js/chunk-d51ae07a.c91d50de.js +0 -1
  37. package/hel_dist/static/js/chunk-de514d9e.5b88281d.js +0 -1
  38. /package/hel_dist/static/css/{chunk-7ba44fd1.85e72a0e.css → chunk-307f1e2c.85e72a0e.css} +0 -0
@@ -1 +1 @@
1
- (window["helJsonp_tpl-vue2-admin-ele_1793870469932"]=window["helJsonp_tpl-vue2-admin-ele_1793870469932"]||[]).push([["chunk-3063e94a"],{"07eb":function(e,t,i){"use strict";i("daa4")},"5abf":function(e,t,i){"use strict";i("8300")},8300:function(e,t,i){},"8dfd":function(e,t,i){"use strict";i("d2ca")},d2ca:function(e,t,i){},d8ce:function(e,t,i){e.exports=i.p+"static/img/logo.82b9c7a5.png"},daa4:function(e,t,i){},f9eb:function(e,t,i){"use strict";i("3e81");var n=function(){var e=this,t=e._self._c;return t("div",{attrs:{id:"app"}},[t("img",{attrs:{alt:"Vue logo",src:i("d8ce")}}),t("h2",[e._v("name: "+e._s(e.name))]),t("HelloWorld",{attrs:{msg:"Welcome to view project hel-tpl-remote-vue-comp ( from unpkg deploy )"}})],1)},r=[],s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"hello"},[t("hr"),t("h1",[e._v(e._s(e.msg))]),t("h2",[e._v("I am a remote vue compoent8888")])])},a=[],o={name:"HelloWorld",components:{},props:{msg:String}},c=o,l=(i("07eb"),i("ad2c")),u=Object(l["a"])(c,s,a,!1,null,"6a70deaf",null),d=u.exports,h={name:"App",components:{HelloWorld:d},props:{name:String}},m=h,f=(i("5abf"),Object(l["a"])(m,n,r,!1,null,"1338c4ec",null)),g=f.exports,v=(i("55fc"),i("8d9c"),function(){var e=this,t=e._self._c;return t("div",{staticClass:"ranking-board"},[t("button",{staticClass:"help-btn",attrs:{type:"button",title:"使用说明"},on:{click:function(t){e.showHelp=!0}}},[e._v(" ? ")]),t("div",{staticClass:"ranking-board-container"},[t("div",{ref:"rankingContainer",staticClass:"ranking-container"},e._l(e.tiers,(function(i){return t("div",{key:i.id,staticClass:"tier",class:{"fixed-height":e.fixedHeight,"drag-over":e.dragOverTierId===i.id},attrs:{"data-tier-id":i.id}},[t("div",{staticClass:"tier-label",class:{editing:e.editingTierId===i.id},style:{backgroundColor:i.color},on:{click:function(t){return e.activateTier(i,t)}}},[t("input",{staticClass:"color-picker",attrs:{type:"color",title:"编辑颜色"},domProps:{value:i.color},on:{click:function(e){e.stopPropagation()},input:function(t){return e.onColorChange(i,t)}}}),t("button",{staticClass:"delete-tier-btn",attrs:{type:"button",title:"删除该评级"},on:{click:function(t){return t.stopPropagation(),e.removeTier(i)}}},[e._v(" × ")]),t("span",{ref:"tier-name-"+i.id,refInFor:!0,staticClass:"tier-name",attrs:{contenteditable:"true",spellcheck:"false"},domProps:{textContent:e._s(i.name)},on:{input:function(t){return e.onNameInput(i,t)},blur:function(t){return e.commitName(i)},keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.onNameEnter.apply(null,arguments))}}},[e._v(e._s(i.name))])]),t("div",{ref:"tier-content-"+i.id,refInFor:!0,staticClass:"tier-content",style:e.tierContentStyle(i)},e._l(i.images,(function(n){return t("div",{key:n.id,staticClass:"image-item",class:e.imageClass(i),style:e.imageStyle(i),attrs:{"data-image-id":n.id},on:{mousedown:function(t){return e.onPointerDown(t,"tier",i.id,n.id)},touchstart:function(t){return e.onPointerDown(t,"tier",i.id,n.id)}}},[t("img",{attrs:{src:n.src,alt:n.name,draggable:"false"}}),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showImageNames,expression:"showImageNames"}],staticClass:"image-name-overlay"},[e._v(e._s(n.name))])])})),0)])})),0),t("div",{staticClass:"image-gallery"},[e._l(e.gallery,(function(i){return t("div",{key:i.id,staticClass:"image-item",attrs:{"data-image-id":i.id},on:{mousedown:function(t){return e.onPointerDown(t,"gallery",null,i.id)},touchstart:function(t){return e.onPointerDown(t,"gallery",null,i.id)}}},[t("img",{attrs:{src:i.src,alt:i.name,draggable:"false"}}),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showImageNames,expression:"showImageNames"}],staticClass:"image-name-overlay"},[e._v(e._s(i.name))])])})),t("div",{staticClass:"upload-btn",class:{"drag-over":e.fileDragOver},attrs:{title:"点击或拖入图片"},on:{click:e.pickFiles,dragover:function(t){t.preventDefault(),e.fileDragOver=!0},dragleave:function(t){t.preventDefault(),e.fileDragOver=!1},drop:function(t){return t.preventDefault(),e.onFileDrop.apply(null,arguments)}}},[e._v(" + ")]),t("div",{staticClass:"delete-zone",class:{"drag-over":e.overDeleteZone},attrs:{title:"把图片拖到这里删除"}},[e._v(" - ")]),t("div",{staticClass:"button-container"},[t("div",{staticClass:"add-tier-btn",on:{click:e.addTier}},[e._v("+ 添加评级")]),t("div",{staticClass:"reset-tier-btn",on:{click:function(t){e.showReset=!0}}},[e._v("↻ 重置排行榜")])])],2),t("input",{ref:"fileInput",staticClass:"rb-file-input",attrs:{type:"file",accept:"image/*",multiple:""},on:{change:e.onFilesChange}})]),e.showHelp?t("div",{staticClass:"help-modal",on:{click:function(t){if(t.target!==t.currentTarget)return null;e.showHelp=!1}}},[t("div",{staticClass:"help-content"},[t("button",{staticClass:"close-help",attrs:{type:"button"},on:{click:function(t){e.showHelp=!1}}},[e._v("×")]),t("h2",[e._v("📝 使用说明")]),e._m(0),t("div",{staticClass:"toggle-container"},[t("label",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.showImageNames,expression:"showImageNames"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.showImageNames)?e._i(e.showImageNames,null)>-1:e.showImageNames},on:{change:function(t){var i=e.showImageNames,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=null,a=e._i(i,s);n.checked?a<0&&(e.showImageNames=i.concat([s])):a>-1&&(e.showImageNames=i.slice(0,a).concat(i.slice(a+1)))}else e.showImageNames=r}}}),t("span",{staticClass:"toggle-label"},[e._v("显示图片名称")])]),t("label",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.fixedHeight,expression:"fixedHeight"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.fixedHeight)?e._i(e.fixedHeight,null)>-1:e.fixedHeight},on:{change:function(t){var i=e.fixedHeight,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=null,a=e._i(i,s);n.checked?a<0&&(e.fixedHeight=i.concat([s])):a>-1&&(e.fixedHeight=i.slice(0,a).concat(i.slice(a+1)))}else e.fixedHeight=r}}}),t("span",{staticClass:"toggle-label"},[e._v("固定评级高度")])])]),t("div",{staticClass:"save-image-container"},[t("button",{staticClass:"save-image-btn",attrs:{type:"button"},on:{click:e.saveAsImage}},[e._v("💾 保存为图片")])])])]):e._e(),e.showReset?t("div",{staticClass:"reset-modal",on:{click:function(t){if(t.target!==t.currentTarget)return null;e.showReset=!1}}},[t("div",{staticClass:"reset-content"},[t("h3",[e._v("⚠️ 确认重置")]),e._m(1),t("div",{staticClass:"reset-buttons"},[t("button",{staticClass:"reset-confirm-btn",attrs:{type:"button"},on:{click:e.resetRanking}},[e._v("确认重置")]),t("button",{staticClass:"reset-cancel-btn",attrs:{type:"button"},on:{click:function(t){e.showReset=!1}}},[e._v("取消")])])])]):e._e(),e.previewSrc?t("div",{staticClass:"image-modal",on:{click:function(t){e.previewSrc=null}}},[t("img",{attrs:{src:e.previewSrc,alt:"放大的图片"}})]):e._e(),e.dragging?t("div",{staticClass:"drag-preview",style:e.dragPreviewStyle},[t("img",{attrs:{src:e.dragPreviewSrc,alt:""}})]):e._e(),e.toast?t("div",{staticClass:"rb-toast"},[e._v(e._s(e.toast))]):e._e()])}),p=[function(){var e=this,t=e._self._c;return t("ul",[t("li",[e._v('添加图片:点击"+"按钮或拖拽图片到该按钮区域')]),t("li",[e._v('删除图片:将图片拖拽到"-"区域删除')]),t("li",[e._v("放大图片:点击图片可放大,再次点击任意区域恢复")]),t("li",[e._v("编辑评级:点击评级名称可编辑文字")]),t("li",[e._v("编辑颜色:点击评级名称后右侧颜色按钮可编辑颜色")]),t("li",[e._v("删除评级:点击评级名称后右侧删除按钮可删除评级")]),t("li",[e._v('创建新评级:点击底部"+添加评级"按钮创建新的评级')])])},function(){var e=this,t=e._self._c;return t("p",[e._v("您确定要重置排行榜吗?"),t("br"),e._v("这将清除所有评级设置并移除所有图片,此操作无法撤销。")])}],w=(i("ac02"),i("bb8a"),i("3ffe"),i("8e76"),i("79e8"),i("1caa"),i("4419"),i("77fe"),i("134e"),i("2a80"),i("3600"),i("db44"),i("44ed"),i("061b"),i("811f"),i("44af"),i("ff94"),i("2232"),i("6961"),i("bbfa"),i("3ab9"),i("6036"),i("d77d"),i("594a"),i("6d2a"),i("cb8a"),i("13be"),i("9edb"),i("86be"),i("dfdc"),i("0ace"),i("747f"),i("3b37"),i("d0ba"),i("85b6"),i("ece3"),i("55df"),i("2fb8"),i("bc38"),i("3a61"),i("668e"),i("f95a"),i("8521"),i("4022"),i("c775"),i("82e5"),i("e149"),i("f47e"),i("bd97"),i("393a"),i("d28d"),i("d0af"),i("6bfb"),i("3e09"),i("fdbb"),i("9f4f"),i("4e06"),i("01ec"),i("322e"),i("8d5e"),i("65d2"),i("7fb4"),i("1d80"),i("5072"),i("4ede"),i("fa47"),i("e5bd"),i("d5e2"),i("3adf"),i("b3fd"),i("d5f9"),i("8099"),i("1502"),[{name:"夯",color:"#e74d5a"},{name:"顶级",color:"#ff9f43"},{name:"人上人",color:"#5a61e7"},{name:"NPC",color:"#2ed573"},{name:"拉完了",color:"#747d8c"}]),b="#808080",y=120,I=5,T=70,x="state",S="current",k=["https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js","https://unpkg.com/html2canvas@1.4.1/dist/html2canvas.min.js"];function C(e,t){var i="string"===typeof e?e.trim():"";if(!i)return t||b;if("#"===i.charAt(0))return i;var n=i.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)/);if(!n)return t||b;var r=function(e){var t=parseInt(e,10).toString(16);return 1===t.length?"0"+t:t};return"#"+r(n[1])+r(n[2])+r(n[3])}var _={name:"TierRanking",props:{persist:{type:Boolean,default:!0},storageKey:{type:String,default:"tier-ranking"},maxImageSize:{type:Number,default:800},imageQuality:{type:Number,default:.7},html2canvasUrl:{type:String,default:""}},data:function(){return{tiers:[],gallery:[],editingTierId:null,showHelp:!1,showReset:!1,previewSrc:null,showImageNames:!1,fixedHeight:!1,tierSizes:{},dragging:!1,dragPreviewSrc:"",dragPoint:{x:0,y:0},dragOverTierId:null,overDeleteZone:!1,fileDragOver:!1,toast:""}},computed:{dragPreviewStyle:function(){return{left:this.dragPoint.x-y/2+"px",top:this.dragPoint.y-y/2+"px"}}},watch:{fixedHeight:function(){var e=this;this.$nextTick((function(){e.fixedHeight?e.recalcSizes():e.tierSizes={}})),this.scheduleSave()},showImageNames:function(){this.scheduleSave()}},created:function(){this.imageSeq=0,this.tierSeq=0,this.nameDrafts={},this.pointer=null,this.pressTimer=null,this.saveTimer=null,this.resizeTimer=null,this.toastTimer=null,this.dbPromise=null,this.html2canvasPromise=null,this.tiers=this.createDefaultTiers()},mounted:function(){document.addEventListener("mousemove",this.onDocMouseMove),document.addEventListener("mouseup",this.onDocMouseUp),document.addEventListener("touchmove",this.onDocTouchMove,{passive:!1}),document.addEventListener("touchend",this.onDocTouchEnd),document.addEventListener("click",this.onDocClick),document.addEventListener("keydown",this.onKeydown),window.addEventListener("resize",this.onWindowResize),this.restoreState()},beforeDestroy:function(){document.removeEventListener("mousemove",this.onDocMouseMove),document.removeEventListener("mouseup",this.onDocMouseUp),document.removeEventListener("touchmove",this.onDocTouchMove),document.removeEventListener("touchend",this.onDocTouchEnd),document.removeEventListener("click",this.onDocClick),document.removeEventListener("keydown",this.onKeydown),window.removeEventListener("resize",this.onWindowResize),clearTimeout(this.pressTimer),clearTimeout(this.saveTimer),clearTimeout(this.resizeTimer),clearTimeout(this.toastTimer),this.dbPromise&&this.dbPromise.then((function(e){e&&e.close()})).catch((function(){}))},methods:{nextTierId:function(){return this.tierSeq+=1,"tier-"+this.tierSeq},nextImageId:function(){return this.imageSeq+=1,"img-"+this.imageSeq},createDefaultTiers:function(){var e=this;return w.map((function(t){return{id:e.nextTierId(),name:t.name,color:t.color,images:[]}}))},createImage:function(e,t){return{id:this.nextImageId(),src:e,name:t||"图片"}},getRefEl:function(e){var t=this.$refs[e];return Array.isArray(t)?t[0]||null:t||null},findImage:function(e){if(!e)return null;if("gallery"===e.kind)return this.gallery.find((function(t){return t.id===e.imageId}))||null;var t=this.tiers.find((function(t){return t.id===e.tierId}));return t&&t.images.find((function(t){return t.id===e.imageId}))||null},detachImage:function(e){if(!e)return null;if("gallery"===e.kind){var t=this.gallery.findIndex((function(t){return t.id===e.imageId}));return t<0?null:this.gallery.splice(t,1)[0]}var i=this.tiers.find((function(t){return t.id===e.tierId}));if(!i)return null;var n=i.images.findIndex((function(t){return t.id===e.imageId}));return n<0?null:i.images.splice(n,1)[0]},removeImage:function(e){var t=this.detachImage(e);t&&(this.fixedHeight&&this.$nextTick(this.recalcSizes),this.scheduleSave())},resolveInsertIndex:function(e,t){if(!t||!t.refId)return e.length;var i=e.findIndex((function(e){return e.id===t.refId}));return i<0?e.length:t.after?i+1:i},activateTier:function(e,t){this.editingTierId=e.id;var i=this.getRefEl("tier-name-"+e.id);i&&t&&t.target!==i&&this.$nextTick((function(){return i.focus()}))},onNameInput:function(e,t){this.nameDrafts[e.id]=t.target.textContent},commitName:function(e){var t=this.nameDrafts[e.id];if("string"===typeof t){delete this.nameDrafts[e.id];var i=t.replace(/\s+/g," ").trim()||"未命名";i!==e.name&&(e.name=i,this.scheduleSave())}},onNameEnter:function(e){e&&e.target&&e.target.blur&&e.target.blur()},onColorChange:function(e,t){e.color=C(t.target.value,b),this.scheduleSave()},addTier:function(){this.tiers.push({id:this.nextTierId(),name:"新评级"+(this.tiers.length+1),color:b,images:[]}),this.fixedHeight&&this.$nextTick(this.recalcSizes),this.scheduleSave()},removeTier:function(e){var t=this,i=this.tiers.findIndex((function(t){return t.id===e.id}));if(!(i<0)){var n=this.tiers[i].images.slice();this.tiers.splice(i,1),n.forEach((function(e){t.gallery.push(e)})),this.editingTierId===e.id&&(this.editingTierId=null),this.fixedHeight&&this.$nextTick(this.recalcSizes),this.scheduleSave()}},resetRanking:function(){this.gallery=[],this.tiers=this.createDefaultTiers(),this.editingTierId=null,this.showReset=!1,this.imageSeq=0,this.tierSizes={},this.scheduleSave()},pickFiles:function(){var e=this.$refs.fileInput;e&&(e.value="",e.click())},onFilesChange:function(e){var t=e.target,i=Array.from(t.files||[]);t.value="",this.ingestFiles(i)},onFileDrop:function(e){this.fileDragOver=!1;var t=e.dataTransfer,i=Array.from(t&&t.files||[]);this.ingestFiles(i)},ingestFiles:function(e){var t=this;e.filter((function(e){return e&&e.type&&0===e.type.indexOf("image/")})).forEach((function(e){var i=new FileReader;i.onload=function(i){t.compressImage(i.target.result).then((function(i){t.gallery.push(t.createImage(i,t.displayNameFromFile(e.name))),t.fixedHeight&&t.$nextTick(t.recalcSizes),t.scheduleSave()})).catch((function(e){console.error("[TierRanking] 图片处理失败:",e),t.showToast("图片处理失败:"+e.message)}))},i.onerror=function(){t.showToast("读取图片失败:"+e.name)},i.readAsDataURL(e)}))},displayNameFromFile:function(e){var t=e||"图片",i=t.lastIndexOf(".");return i>0&&(t=t.substring(0,i)),t||"图片"},compressImage:function(e){var t=this;return new Promise((function(i,n){var r=new Image;r.onload=function(){var e=document.createElement("canvas"),n=e.getContext("2d"),s=r.width,a=r.height,o=t.maxImageSize>0?t.maxImageSize:800;(s>o||a>o)&&(s>a?(a=Math.round(a/s*o),s=o):(s=Math.round(s/a*o),a=o)),e.width=s,e.height=a,n.drawImage(r,0,0,s,a),i(e.toDataURL("image/jpeg",t.imageQuality))},r.onerror=function(){return n(new Error("图片解码失败"))},r.src=e}))},onPointerDown:function(e,t,i,n){var r=this,s="touchstart"===e.type;if((s||0===e.button)&&(!s||1===e.touches.length)){var a=s?e.touches[0]:e,o=e.currentTarget;this.pointer={source:{kind:t,tierId:i,imageId:n},startX:a.clientX,startY:a.clientY,dragging:!1,element:o},clearTimeout(this.pressTimer),this.pressTimer=setTimeout((function(){r.pointer&&!r.pointer.dragging&&r.pointer.element&&r.pointer.element.classList.add("is-pressed")}),150),e.preventDefault()}},onDocMouseMove:function(e){this.pointer&&this.handlePointerMove(e.clientX,e.clientY)},onDocTouchMove:function(e){if(this.pointer){var t=e.touches[0];t&&(e.preventDefault(),this.handlePointerMove(t.clientX,t.clientY))}},handlePointerMove:function(e,t){var i=this.pointer;if(i){if(!i.dragging){var n=Math.abs(e-i.startX),r=Math.abs(t-i.startY);if(n<=5&&r<=5)return;i.dragging=!0,clearTimeout(this.pressTimer),this.pressTimer=null,i.element&&i.element.classList.remove("is-pressed");var s=this.findImage(i.source);this.dragPreviewSrc=s?s.src:"",this.dragging=!0}this.dragPoint={x:e,y:t},this.updateDropHighlight(e,t)}},updateDropHighlight:function(e,t){var i=this.elementAt(e,t);if(this.dragOverTierId=null,this.overDeleteZone=!1,i)if(i.closest(".delete-zone"))this.overDeleteZone=!0;else{var n=i.closest(".tier");n&&(this.dragOverTierId=n.getAttribute("data-tier-id"))}},onDocMouseUp:function(e){this.finishPointer(e.clientX,e.clientY)},onDocTouchEnd:function(e){if(this.pointer){var t=e.changedTouches[0];this.finishPointer(t?t.clientX:0,t?t.clientY:0)}},finishPointer:function(e,t){var i=this.pointer;if(i){this.pointer=null,clearTimeout(this.pressTimer),this.pressTimer=null,i.element&&i.element.classList.remove("is-pressed");var n=Math.abs(e-i.startX),r=Math.abs(t-i.startY);if(i.dragging)this.applyDrop(i.source,e,t),this.dragging=!1,this.dragPreviewSrc="",this.dragOverTierId=null,this.overDeleteZone=!1,this.fixedHeight&&this.$nextTick(this.recalcSizes);else if(n<5&&r<5){var s=this.findImage(i.source);s&&(this.previewSrc=s.src)}}},applyDrop:function(e,t,i){var n=this.elementAt(t,i);if(n)if(n.closest(".delete-zone"))this.removeImage(e);else{var r=n.closest(".tier");if(r){var s=r.getAttribute("data-tier-id"),a=this.tiers.find((function(e){return e.id===s}));if(!a)return;var o=this.resolveDropPoint(n,e.imageId,t);if(!o)return;var c=this.detachImage(e);if(!c)return;return a.images.splice(this.resolveInsertIndex(a.images,o),0,c),void this.scheduleSave()}if(n.closest(".image-gallery")){var l=this.resolveDropPoint(n,e.imageId,t);if(!l)return;var u=this.detachImage(e);if(!u)return;this.gallery.splice(this.resolveInsertIndex(this.gallery,l),0,u),this.scheduleSave()}}},resolveDropPoint:function(e,t,i){var n=e.closest(".image-item");if(!n)return{refId:null,after:!1};var r=n.getAttribute("data-image-id");if(!r)return{refId:null,after:!1};if(r===t)return null;var s=n.getBoundingClientRect();return{refId:r,after:i-s.left>s.width/2}},elementAt:function(e,t){return"undefined"!==typeof document&&document.elementFromPoint?document.elementFromPoint(e,t):null},recalcSizes:function(){var e=this;if(this.fixedHeight){var t={};this.tiers.forEach((function(i){if(i.images.length){var n=e.getRefEl("tier-content-"+i.id);if(n){var r=n.clientWidth-10,s=Math.floor(r/(y+I));if(s<=0)t[i.id]={mode:"multi-row",width:T};else if(i.images.length<=s)t[i.id]={mode:"single-row",width:y};else{var a=r-(i.images.length-1)*I,o=Math.floor(a/i.images.length);t[i.id]=o>=T?{mode:"adaptive",width:o}:{mode:"multi-row",width:T}}}}})),this.tierSizes=t}else Object.keys(this.tierSizes).length&&(this.tierSizes={})},imageClass:function(e){if(!this.fixedHeight)return null;var t=this.tierSizes[e.id];return t?t.mode:"single-row"},imageStyle:function(e){if(!this.fixedHeight)return null;var t=this.tierSizes[e.id];return t?{width:t.width+"px",height:t.width+"px"}:null},tierContentStyle:function(e){if(!this.fixedHeight)return null;var t=this.tierSizes[e.id];return{overflowY:t&&"multi-row"===t.mode?"auto":"hidden"}},onWindowResize:function(){var e=this;this.fixedHeight&&(clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout((function(){e.recalcSizes()}),100))},onDocClick:function(e){var t=this.$el,i=e.target;t&&i&&1===i.nodeType&&(t.contains(i)&&i.closest(".tier-label")||(this.editingTierId=null))},onKeydown:function(e){"Escape"===e.key&&(this.showHelp=!1,this.showReset=!1,this.previewSrc=null)},showToast:function(e){var t=this;this.toast=e,clearTimeout(this.toastTimer),this.toastTimer=setTimeout((function(){t.toast=""}),2400)},saveAsImage:function(){var e=this,t=this.$refs.rankingContainer;if(t){this.showHelp=!1;var i={scale:2,useCORS:!0,allowTaint:!0,backgroundColor:"#1a1a1a",scrollX:0,scrollY:0,windowWidth:document.documentElement.scrollWidth,windowHeight:document.documentElement.scrollHeight};this.loadHtml2Canvas().then((function(e){return e(t,i)})).then((function(t){var i=t.toDataURL("image/png"),n=e.dataURLToBlob(i),r=URL.createObjectURL(n),s=document.createElement("a");s.href=r,s.download="从夯到拉排行榜.png",document.body.appendChild(s),s.click(),document.body.removeChild(s),setTimeout((function(){return URL.revokeObjectURL(r)}),1e4),e.showToast("已保存为图片"),e.$emit("saved",i)})).catch((function(t){console.error("[TierRanking] 截图失败:",t),e.showToast("截图失败:"+(t&&t.message?t.message:t))}))}},loadHtml2Canvas:function(){var e=this;return window.html2canvas?Promise.resolve(window.html2canvas):(this.html2canvasPromise||(this.html2canvasPromise=this.loadScript(k[0]).catch((function(){return e.loadScript(k[1])})).then((function(){if(!window.html2canvas)throw new Error("html2canvas 加载后未生效");return window.html2canvas})).catch((function(t){throw e.html2canvasPromise=null,t}))),this.html2canvasPromise)},loadScript:function(e){return new Promise((function(t,i){var n=document.createElement("script");n.src=e,n.async=!0,n.onload=function(){return t()},n.onerror=function(){return i(new Error("脚本加载失败:"+e))},document.head.appendChild(n)}))},dataURLToBlob:function(e){var t=e.split(","),i=t[0].match(/:(.*?);/)[1],n=atob(t[1]),r=n.length,s=new Uint8Array(r);while(r--)s[r]=n.charCodeAt(r);return new Blob([s],{type:i})},getState:function(){return{tiers:this.tiers.map((function(e){return{name:e.name,color:e.color,images:e.images.map((function(e){return{src:e.src,name:e.name}}))}})),gallery:this.gallery.map((function(e){return{src:e.src,name:e.name}})),showImageNames:!!this.showImageNames,fixedHeight:!!this.fixedHeight}},applyState:function(e){var t=this;e&&(Array.isArray(e.tiers)&&e.tiers.length&&(this.tiers=e.tiers.map((function(e){return{id:t.nextTierId(),name:e.name||"未命名",color:C(e.color,b),images:(e.images||[]).filter((function(e){return e&&e.src})).map((function(e){return t.createImage(e.src,e.name)}))}}))),this.gallery=(e.gallery||[]).filter((function(e){return e&&e.src})).map((function(e){return t.createImage(e.src,e.name)})),this.showImageNames=!!e.showImageNames,this.fixedHeight=!!e.fixedHeight,this.$nextTick(this.recalcSizes))},openDB:function(){var e=this;return this.persist&&"undefined"!==typeof window&&window.indexedDB?(this.dbPromise||(this.dbPromise=new Promise((function(t,i){var n=window.indexedDB.open(e.storageKey+"-db",1);n.onupgradeneeded=function(e){var t=e.target.result;t.objectStoreNames.contains(x)||t.createObjectStore(x)},n.onsuccess=function(){return t(n.result)},n.onerror=function(){return i(n.error||new Error("IndexedDB 打开失败"))}}))),this.dbPromise):Promise.resolve(null)},restoreState:function(){var e=this;this.persist&&this.openDB().then((function(e){return e?new Promise((function(t,i){var n=e.transaction([x],"readonly").objectStore(x).get(S);n.onsuccess=function(){return t(n.result||null)},n.onerror=function(){return i(n.error)}})):null})).then((function(t){t&&e.applyState(t)})).catch((function(e){console.warn("[TierRanking] 恢复本地数据失败:",e)}))},scheduleSave:function(){var e=this;this.$emit("change",this.getState()),this.persist&&(clearTimeout(this.saveTimer),this.saveTimer=setTimeout((function(){e.saveState()}),300))},saveState:function(){var e=this,t=this.getState();this.openDB().then((function(e){if(e)return new Promise((function(i,n){var r=e.transaction([x],"readwrite"),s=r.objectStore(x).put(t,S);s.onsuccess=function(){return i()},s.onerror=function(){return n(s.error)}}))})).catch((function(t){console.warn("[TierRanking] 保存失败:",t),e.showToast("保存失败,可能是浏览器存储空间不足")}))},reset:function(){this.resetRanking()}}},D=_,P=(i("8dfd"),Object(l["a"])(D,v,p,!1,null,"a9fe0c4e",null)),H=P.exports;t["a"]={App:g,HelloWorld:d,TierRanking:H}}}]);
1
+ (window["helJsonp_tpl-vue2-admin-ele_1793872741491"]=window["helJsonp_tpl-vue2-admin-ele_1793872741491"]||[]).push([["chunk-3063e94a"],{"07eb":function(e,t,i){"use strict";i("daa4")},"5abf":function(e,t,i){"use strict";i("8300")},8300:function(e,t,i){},"8dfd":function(e,t,i){"use strict";i("d2ca")},d2ca:function(e,t,i){},d8ce:function(e,t,i){e.exports=i.p+"static/img/logo.82b9c7a5.png"},daa4:function(e,t,i){},f9eb:function(e,t,i){"use strict";i("3e81");var n=function(){var e=this,t=e._self._c;return t("div",{attrs:{id:"app"}},[t("img",{attrs:{alt:"Vue logo",src:i("d8ce")}}),t("h2",[e._v("name: "+e._s(e.name))]),t("HelloWorld",{attrs:{msg:"Welcome to view project hel-tpl-remote-vue-comp ( from unpkg deploy )"}})],1)},r=[],s=function(){var e=this,t=e._self._c;return t("div",{staticClass:"hello"},[t("hr"),t("h1",[e._v(e._s(e.msg))]),t("h2",[e._v("I am a remote vue compoent8888")])])},a=[],o={name:"HelloWorld",components:{},props:{msg:String}},c=o,l=(i("07eb"),i("ad2c")),u=Object(l["a"])(c,s,a,!1,null,"6a70deaf",null),d=u.exports,h={name:"App",components:{HelloWorld:d},props:{name:String}},m=h,f=(i("5abf"),Object(l["a"])(m,n,r,!1,null,"1338c4ec",null)),g=f.exports,v=(i("55fc"),i("8d9c"),function(){var e=this,t=e._self._c;return t("div",{staticClass:"ranking-board"},[t("button",{staticClass:"help-btn",attrs:{type:"button",title:"使用说明"},on:{click:function(t){e.showHelp=!0}}},[e._v(" ? ")]),t("div",{staticClass:"ranking-board-container"},[t("div",{ref:"rankingContainer",staticClass:"ranking-container"},e._l(e.tiers,(function(i){return t("div",{key:i.id,staticClass:"tier",class:{"fixed-height":e.fixedHeight,"drag-over":e.dragOverTierId===i.id},attrs:{"data-tier-id":i.id}},[t("div",{staticClass:"tier-label",class:{editing:e.editingTierId===i.id},style:{backgroundColor:i.color},on:{click:function(t){return e.activateTier(i,t)}}},[t("input",{staticClass:"color-picker",attrs:{type:"color",title:"编辑颜色"},domProps:{value:i.color},on:{click:function(e){e.stopPropagation()},input:function(t){return e.onColorChange(i,t)}}}),t("button",{staticClass:"delete-tier-btn",attrs:{type:"button",title:"删除该评级"},on:{click:function(t){return t.stopPropagation(),e.removeTier(i)}}},[e._v(" × ")]),t("span",{ref:"tier-name-"+i.id,refInFor:!0,staticClass:"tier-name",attrs:{contenteditable:"true",spellcheck:"false"},domProps:{textContent:e._s(i.name)},on:{input:function(t){return e.onNameInput(i,t)},blur:function(t){return e.commitName(i)},keydown:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:(t.preventDefault(),e.onNameEnter.apply(null,arguments))}}},[e._v(e._s(i.name))])]),t("div",{ref:"tier-content-"+i.id,refInFor:!0,staticClass:"tier-content",style:e.tierContentStyle(i)},e._l(i.images,(function(n){return t("div",{key:n.id,staticClass:"image-item",class:e.imageClass(i),style:e.imageStyle(i),attrs:{"data-image-id":n.id},on:{mousedown:function(t){return e.onPointerDown(t,"tier",i.id,n.id)},touchstart:function(t){return e.onPointerDown(t,"tier",i.id,n.id)}}},[t("img",{attrs:{src:n.src,alt:n.name,draggable:"false"}}),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showImageNames,expression:"showImageNames"}],staticClass:"image-name-overlay"},[e._v(e._s(n.name))])])})),0)])})),0),t("div",{staticClass:"image-gallery"},[e._l(e.gallery,(function(i){return t("div",{key:i.id,staticClass:"image-item",attrs:{"data-image-id":i.id},on:{mousedown:function(t){return e.onPointerDown(t,"gallery",null,i.id)},touchstart:function(t){return e.onPointerDown(t,"gallery",null,i.id)}}},[t("img",{attrs:{src:i.src,alt:i.name,draggable:"false"}}),t("div",{directives:[{name:"show",rawName:"v-show",value:e.showImageNames,expression:"showImageNames"}],staticClass:"image-name-overlay"},[e._v(e._s(i.name))])])})),t("div",{staticClass:"upload-btn",class:{"drag-over":e.fileDragOver},attrs:{title:"点击或拖入图片"},on:{click:e.pickFiles,dragover:function(t){t.preventDefault(),e.fileDragOver=!0},dragleave:function(t){t.preventDefault(),e.fileDragOver=!1},drop:function(t){return t.preventDefault(),e.onFileDrop.apply(null,arguments)}}},[e._v(" + ")]),t("div",{staticClass:"delete-zone",class:{"drag-over":e.overDeleteZone},attrs:{title:"把图片拖到这里删除"}},[e._v(" - ")]),t("div",{staticClass:"button-container"},[t("div",{staticClass:"add-tier-btn",on:{click:e.addTier}},[e._v("+ 添加评级")]),t("div",{staticClass:"reset-tier-btn",on:{click:function(t){e.showReset=!0}}},[e._v("↻ 重置排行榜")])])],2),t("input",{ref:"fileInput",staticClass:"rb-file-input",attrs:{type:"file",accept:"image/*",multiple:""},on:{change:e.onFilesChange}})]),e.showHelp?t("div",{staticClass:"help-modal",on:{click:function(t){if(t.target!==t.currentTarget)return null;e.showHelp=!1}}},[t("div",{staticClass:"help-content"},[t("button",{staticClass:"close-help",attrs:{type:"button"},on:{click:function(t){e.showHelp=!1}}},[e._v("×")]),t("h2",[e._v("📝 使用说明")]),e._m(0),t("div",{staticClass:"toggle-container"},[t("label",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.showImageNames,expression:"showImageNames"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.showImageNames)?e._i(e.showImageNames,null)>-1:e.showImageNames},on:{change:function(t){var i=e.showImageNames,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=null,a=e._i(i,s);n.checked?a<0&&(e.showImageNames=i.concat([s])):a>-1&&(e.showImageNames=i.slice(0,a).concat(i.slice(a+1)))}else e.showImageNames=r}}}),t("span",{staticClass:"toggle-label"},[e._v("显示图片名称")])]),t("label",[t("input",{directives:[{name:"model",rawName:"v-model",value:e.fixedHeight,expression:"fixedHeight"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.fixedHeight)?e._i(e.fixedHeight,null)>-1:e.fixedHeight},on:{change:function(t){var i=e.fixedHeight,n=t.target,r=!!n.checked;if(Array.isArray(i)){var s=null,a=e._i(i,s);n.checked?a<0&&(e.fixedHeight=i.concat([s])):a>-1&&(e.fixedHeight=i.slice(0,a).concat(i.slice(a+1)))}else e.fixedHeight=r}}}),t("span",{staticClass:"toggle-label"},[e._v("固定评级高度")])])]),t("div",{staticClass:"save-image-container"},[t("button",{staticClass:"save-image-btn",attrs:{type:"button"},on:{click:e.saveAsImage}},[e._v("💾 保存为图片")])])])]):e._e(),e.showReset?t("div",{staticClass:"reset-modal",on:{click:function(t){if(t.target!==t.currentTarget)return null;e.showReset=!1}}},[t("div",{staticClass:"reset-content"},[t("h3",[e._v("⚠️ 确认重置")]),e._m(1),t("div",{staticClass:"reset-buttons"},[t("button",{staticClass:"reset-confirm-btn",attrs:{type:"button"},on:{click:e.resetRanking}},[e._v("确认重置")]),t("button",{staticClass:"reset-cancel-btn",attrs:{type:"button"},on:{click:function(t){e.showReset=!1}}},[e._v("取消")])])])]):e._e(),e.previewSrc?t("div",{staticClass:"image-modal",on:{click:function(t){e.previewSrc=null}}},[t("img",{attrs:{src:e.previewSrc,alt:"放大的图片"}})]):e._e(),e.dragging?t("div",{staticClass:"drag-preview",style:e.dragPreviewStyle},[t("img",{attrs:{src:e.dragPreviewSrc,alt:""}})]):e._e(),e.toast?t("div",{staticClass:"rb-toast"},[e._v(e._s(e.toast))]):e._e()])}),p=[function(){var e=this,t=e._self._c;return t("ul",[t("li",[e._v('添加图片:点击"+"按钮或拖拽图片到该按钮区域')]),t("li",[e._v('删除图片:将图片拖拽到"-"区域删除')]),t("li",[e._v("放大图片:点击图片可放大,再次点击任意区域恢复")]),t("li",[e._v("编辑评级:点击评级名称可编辑文字")]),t("li",[e._v("编辑颜色:点击评级名称后右侧颜色按钮可编辑颜色")]),t("li",[e._v("删除评级:点击评级名称后右侧删除按钮可删除评级")]),t("li",[e._v('创建新评级:点击底部"+添加评级"按钮创建新的评级')])])},function(){var e=this,t=e._self._c;return t("p",[e._v("您确定要重置排行榜吗?"),t("br"),e._v("这将清除所有评级设置并移除所有图片,此操作无法撤销。")])}],w=(i("ac02"),i("bb8a"),i("3ffe"),i("8e76"),i("79e8"),i("1caa"),i("4419"),i("77fe"),i("134e"),i("2a80"),i("3600"),i("db44"),i("44ed"),i("061b"),i("811f"),i("44af"),i("ff94"),i("2232"),i("6961"),i("bbfa"),i("3ab9"),i("6036"),i("d77d"),i("594a"),i("6d2a"),i("cb8a"),i("13be"),i("9edb"),i("86be"),i("dfdc"),i("0ace"),i("747f"),i("3b37"),i("d0ba"),i("85b6"),i("ece3"),i("55df"),i("2fb8"),i("bc38"),i("3a61"),i("668e"),i("f95a"),i("8521"),i("4022"),i("c775"),i("82e5"),i("e149"),i("f47e"),i("bd97"),i("393a"),i("d28d"),i("d0af"),i("6bfb"),i("3e09"),i("fdbb"),i("9f4f"),i("4e06"),i("01ec"),i("322e"),i("8d5e"),i("65d2"),i("7fb4"),i("1d80"),i("5072"),i("4ede"),i("fa47"),i("e5bd"),i("d5e2"),i("3adf"),i("b3fd"),i("d5f9"),i("8099"),i("1502"),[{name:"夯",color:"#e74d5a"},{name:"顶级",color:"#ff9f43"},{name:"人上人",color:"#5a61e7"},{name:"NPC",color:"#2ed573"},{name:"拉完了",color:"#747d8c"}]),b="#808080",y=120,I=5,T=70,x="state",S="current",k=["https://cdn.jsdelivr.net/npm/html2canvas@1.4.1/dist/html2canvas.min.js","https://unpkg.com/html2canvas@1.4.1/dist/html2canvas.min.js"];function C(e,t){var i="string"===typeof e?e.trim():"";if(!i)return t||b;if("#"===i.charAt(0))return i;var n=i.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)/);if(!n)return t||b;var r=function(e){var t=parseInt(e,10).toString(16);return 1===t.length?"0"+t:t};return"#"+r(n[1])+r(n[2])+r(n[3])}var _={name:"TierRanking",props:{persist:{type:Boolean,default:!0},storageKey:{type:String,default:"tier-ranking"},maxImageSize:{type:Number,default:800},imageQuality:{type:Number,default:.7},html2canvasUrl:{type:String,default:""}},data:function(){return{tiers:[],gallery:[],editingTierId:null,showHelp:!1,showReset:!1,previewSrc:null,showImageNames:!1,fixedHeight:!1,tierSizes:{},dragging:!1,dragPreviewSrc:"",dragPoint:{x:0,y:0},dragOverTierId:null,overDeleteZone:!1,fileDragOver:!1,toast:""}},computed:{dragPreviewStyle:function(){return{left:this.dragPoint.x-y/2+"px",top:this.dragPoint.y-y/2+"px"}}},watch:{fixedHeight:function(){var e=this;this.$nextTick((function(){e.fixedHeight?e.recalcSizes():e.tierSizes={}})),this.scheduleSave()},showImageNames:function(){this.scheduleSave()}},created:function(){this.imageSeq=0,this.tierSeq=0,this.nameDrafts={},this.pointer=null,this.pressTimer=null,this.saveTimer=null,this.resizeTimer=null,this.toastTimer=null,this.dbPromise=null,this.html2canvasPromise=null,this.tiers=this.createDefaultTiers()},mounted:function(){document.addEventListener("mousemove",this.onDocMouseMove),document.addEventListener("mouseup",this.onDocMouseUp),document.addEventListener("touchmove",this.onDocTouchMove,{passive:!1}),document.addEventListener("touchend",this.onDocTouchEnd),document.addEventListener("click",this.onDocClick),document.addEventListener("keydown",this.onKeydown),window.addEventListener("resize",this.onWindowResize),this.restoreState()},beforeDestroy:function(){document.removeEventListener("mousemove",this.onDocMouseMove),document.removeEventListener("mouseup",this.onDocMouseUp),document.removeEventListener("touchmove",this.onDocTouchMove),document.removeEventListener("touchend",this.onDocTouchEnd),document.removeEventListener("click",this.onDocClick),document.removeEventListener("keydown",this.onKeydown),window.removeEventListener("resize",this.onWindowResize),clearTimeout(this.pressTimer),clearTimeout(this.saveTimer),clearTimeout(this.resizeTimer),clearTimeout(this.toastTimer),this.dbPromise&&this.dbPromise.then((function(e){e&&e.close()})).catch((function(){}))},methods:{nextTierId:function(){return this.tierSeq+=1,"tier-"+this.tierSeq},nextImageId:function(){return this.imageSeq+=1,"img-"+this.imageSeq},createDefaultTiers:function(){var e=this;return w.map((function(t){return{id:e.nextTierId(),name:t.name,color:t.color,images:[]}}))},createImage:function(e,t){return{id:this.nextImageId(),src:e,name:t||"图片"}},getRefEl:function(e){var t=this.$refs[e];return Array.isArray(t)?t[0]||null:t||null},findImage:function(e){if(!e)return null;if("gallery"===e.kind)return this.gallery.find((function(t){return t.id===e.imageId}))||null;var t=this.tiers.find((function(t){return t.id===e.tierId}));return t&&t.images.find((function(t){return t.id===e.imageId}))||null},detachImage:function(e){if(!e)return null;if("gallery"===e.kind){var t=this.gallery.findIndex((function(t){return t.id===e.imageId}));return t<0?null:this.gallery.splice(t,1)[0]}var i=this.tiers.find((function(t){return t.id===e.tierId}));if(!i)return null;var n=i.images.findIndex((function(t){return t.id===e.imageId}));return n<0?null:i.images.splice(n,1)[0]},removeImage:function(e){var t=this.detachImage(e);t&&(this.fixedHeight&&this.$nextTick(this.recalcSizes),this.scheduleSave())},resolveInsertIndex:function(e,t){if(!t||!t.refId)return e.length;var i=e.findIndex((function(e){return e.id===t.refId}));return i<0?e.length:t.after?i+1:i},activateTier:function(e,t){this.editingTierId=e.id;var i=this.getRefEl("tier-name-"+e.id);i&&t&&t.target!==i&&this.$nextTick((function(){return i.focus()}))},onNameInput:function(e,t){this.nameDrafts[e.id]=t.target.textContent},commitName:function(e){var t=this.nameDrafts[e.id];if("string"===typeof t){delete this.nameDrafts[e.id];var i=t.replace(/\s+/g," ").trim()||"未命名";i!==e.name&&(e.name=i,this.scheduleSave())}},onNameEnter:function(e){e&&e.target&&e.target.blur&&e.target.blur()},onColorChange:function(e,t){e.color=C(t.target.value,b),this.scheduleSave()},addTier:function(){this.tiers.push({id:this.nextTierId(),name:"新评级"+(this.tiers.length+1),color:b,images:[]}),this.fixedHeight&&this.$nextTick(this.recalcSizes),this.scheduleSave()},removeTier:function(e){var t=this,i=this.tiers.findIndex((function(t){return t.id===e.id}));if(!(i<0)){var n=this.tiers[i].images.slice();this.tiers.splice(i,1),n.forEach((function(e){t.gallery.push(e)})),this.editingTierId===e.id&&(this.editingTierId=null),this.fixedHeight&&this.$nextTick(this.recalcSizes),this.scheduleSave()}},resetRanking:function(){this.gallery=[],this.tiers=this.createDefaultTiers(),this.editingTierId=null,this.showReset=!1,this.imageSeq=0,this.tierSizes={},this.scheduleSave()},pickFiles:function(){var e=this.$refs.fileInput;e&&(e.value="",e.click())},onFilesChange:function(e){var t=e.target,i=Array.from(t.files||[]);t.value="",this.ingestFiles(i)},onFileDrop:function(e){this.fileDragOver=!1;var t=e.dataTransfer,i=Array.from(t&&t.files||[]);this.ingestFiles(i)},ingestFiles:function(e){var t=this;e.filter((function(e){return e&&e.type&&0===e.type.indexOf("image/")})).forEach((function(e){var i=new FileReader;i.onload=function(i){t.compressImage(i.target.result).then((function(i){t.gallery.push(t.createImage(i,t.displayNameFromFile(e.name))),t.fixedHeight&&t.$nextTick(t.recalcSizes),t.scheduleSave()})).catch((function(e){console.error("[TierRanking] 图片处理失败:",e),t.showToast("图片处理失败:"+e.message)}))},i.onerror=function(){t.showToast("读取图片失败:"+e.name)},i.readAsDataURL(e)}))},displayNameFromFile:function(e){var t=e||"图片",i=t.lastIndexOf(".");return i>0&&(t=t.substring(0,i)),t||"图片"},compressImage:function(e){var t=this;return new Promise((function(i,n){var r=new Image;r.onload=function(){var e=document.createElement("canvas"),n=e.getContext("2d"),s=r.width,a=r.height,o=t.maxImageSize>0?t.maxImageSize:800;(s>o||a>o)&&(s>a?(a=Math.round(a/s*o),s=o):(s=Math.round(s/a*o),a=o)),e.width=s,e.height=a,n.drawImage(r,0,0,s,a),i(e.toDataURL("image/jpeg",t.imageQuality))},r.onerror=function(){return n(new Error("图片解码失败"))},r.src=e}))},onPointerDown:function(e,t,i,n){var r=this,s="touchstart"===e.type;if((s||0===e.button)&&(!s||1===e.touches.length)){var a=s?e.touches[0]:e,o=e.currentTarget;this.pointer={source:{kind:t,tierId:i,imageId:n},startX:a.clientX,startY:a.clientY,dragging:!1,element:o},clearTimeout(this.pressTimer),this.pressTimer=setTimeout((function(){r.pointer&&!r.pointer.dragging&&r.pointer.element&&r.pointer.element.classList.add("is-pressed")}),150),e.preventDefault()}},onDocMouseMove:function(e){this.pointer&&this.handlePointerMove(e.clientX,e.clientY)},onDocTouchMove:function(e){if(this.pointer){var t=e.touches[0];t&&(e.preventDefault(),this.handlePointerMove(t.clientX,t.clientY))}},handlePointerMove:function(e,t){var i=this.pointer;if(i){if(!i.dragging){var n=Math.abs(e-i.startX),r=Math.abs(t-i.startY);if(n<=5&&r<=5)return;i.dragging=!0,clearTimeout(this.pressTimer),this.pressTimer=null,i.element&&i.element.classList.remove("is-pressed");var s=this.findImage(i.source);this.dragPreviewSrc=s?s.src:"",this.dragging=!0}this.dragPoint={x:e,y:t},this.updateDropHighlight(e,t)}},updateDropHighlight:function(e,t){var i=this.elementAt(e,t);if(this.dragOverTierId=null,this.overDeleteZone=!1,i)if(i.closest(".delete-zone"))this.overDeleteZone=!0;else{var n=i.closest(".tier");n&&(this.dragOverTierId=n.getAttribute("data-tier-id"))}},onDocMouseUp:function(e){this.finishPointer(e.clientX,e.clientY)},onDocTouchEnd:function(e){if(this.pointer){var t=e.changedTouches[0];this.finishPointer(t?t.clientX:0,t?t.clientY:0)}},finishPointer:function(e,t){var i=this.pointer;if(i){this.pointer=null,clearTimeout(this.pressTimer),this.pressTimer=null,i.element&&i.element.classList.remove("is-pressed");var n=Math.abs(e-i.startX),r=Math.abs(t-i.startY);if(i.dragging)this.applyDrop(i.source,e,t),this.dragging=!1,this.dragPreviewSrc="",this.dragOverTierId=null,this.overDeleteZone=!1,this.fixedHeight&&this.$nextTick(this.recalcSizes);else if(n<5&&r<5){var s=this.findImage(i.source);s&&(this.previewSrc=s.src)}}},applyDrop:function(e,t,i){var n=this.elementAt(t,i);if(n)if(n.closest(".delete-zone"))this.removeImage(e);else{var r=n.closest(".tier");if(r){var s=r.getAttribute("data-tier-id"),a=this.tiers.find((function(e){return e.id===s}));if(!a)return;var o=this.resolveDropPoint(n,e.imageId,t);if(!o)return;var c=this.detachImage(e);if(!c)return;return a.images.splice(this.resolveInsertIndex(a.images,o),0,c),void this.scheduleSave()}if(n.closest(".image-gallery")){var l=this.resolveDropPoint(n,e.imageId,t);if(!l)return;var u=this.detachImage(e);if(!u)return;this.gallery.splice(this.resolveInsertIndex(this.gallery,l),0,u),this.scheduleSave()}}},resolveDropPoint:function(e,t,i){var n=e.closest(".image-item");if(!n)return{refId:null,after:!1};var r=n.getAttribute("data-image-id");if(!r)return{refId:null,after:!1};if(r===t)return null;var s=n.getBoundingClientRect();return{refId:r,after:i-s.left>s.width/2}},elementAt:function(e,t){return"undefined"!==typeof document&&document.elementFromPoint?document.elementFromPoint(e,t):null},recalcSizes:function(){var e=this;if(this.fixedHeight){var t={};this.tiers.forEach((function(i){if(i.images.length){var n=e.getRefEl("tier-content-"+i.id);if(n){var r=n.clientWidth-10,s=Math.floor(r/(y+I));if(s<=0)t[i.id]={mode:"multi-row",width:T};else if(i.images.length<=s)t[i.id]={mode:"single-row",width:y};else{var a=r-(i.images.length-1)*I,o=Math.floor(a/i.images.length);t[i.id]=o>=T?{mode:"adaptive",width:o}:{mode:"multi-row",width:T}}}}})),this.tierSizes=t}else Object.keys(this.tierSizes).length&&(this.tierSizes={})},imageClass:function(e){if(!this.fixedHeight)return null;var t=this.tierSizes[e.id];return t?t.mode:"single-row"},imageStyle:function(e){if(!this.fixedHeight)return null;var t=this.tierSizes[e.id];return t?{width:t.width+"px",height:t.width+"px"}:null},tierContentStyle:function(e){if(!this.fixedHeight)return null;var t=this.tierSizes[e.id];return{overflowY:t&&"multi-row"===t.mode?"auto":"hidden"}},onWindowResize:function(){var e=this;this.fixedHeight&&(clearTimeout(this.resizeTimer),this.resizeTimer=setTimeout((function(){e.recalcSizes()}),100))},onDocClick:function(e){var t=this.$el,i=e.target;t&&i&&1===i.nodeType&&(t.contains(i)&&i.closest(".tier-label")||(this.editingTierId=null))},onKeydown:function(e){"Escape"===e.key&&(this.showHelp=!1,this.showReset=!1,this.previewSrc=null)},showToast:function(e){var t=this;this.toast=e,clearTimeout(this.toastTimer),this.toastTimer=setTimeout((function(){t.toast=""}),2400)},saveAsImage:function(){var e=this,t=this.$refs.rankingContainer;if(t){this.showHelp=!1;var i={scale:2,useCORS:!0,allowTaint:!0,backgroundColor:"#1a1a1a",scrollX:0,scrollY:0,windowWidth:document.documentElement.scrollWidth,windowHeight:document.documentElement.scrollHeight};this.loadHtml2Canvas().then((function(e){return e(t,i)})).then((function(t){var i=t.toDataURL("image/png"),n=e.dataURLToBlob(i),r=URL.createObjectURL(n),s=document.createElement("a");s.href=r,s.download="从夯到拉排行榜.png",document.body.appendChild(s),s.click(),document.body.removeChild(s),setTimeout((function(){return URL.revokeObjectURL(r)}),1e4),e.showToast("已保存为图片"),e.$emit("saved",i)})).catch((function(t){console.error("[TierRanking] 截图失败:",t),e.showToast("截图失败:"+(t&&t.message?t.message:t))}))}},loadHtml2Canvas:function(){var e=this;return window.html2canvas?Promise.resolve(window.html2canvas):(this.html2canvasPromise||(this.html2canvasPromise=this.loadScript(k[0]).catch((function(){return e.loadScript(k[1])})).then((function(){if(!window.html2canvas)throw new Error("html2canvas 加载后未生效");return window.html2canvas})).catch((function(t){throw e.html2canvasPromise=null,t}))),this.html2canvasPromise)},loadScript:function(e){return new Promise((function(t,i){var n=document.createElement("script");n.src=e,n.async=!0,n.onload=function(){return t()},n.onerror=function(){return i(new Error("脚本加载失败:"+e))},document.head.appendChild(n)}))},dataURLToBlob:function(e){var t=e.split(","),i=t[0].match(/:(.*?);/)[1],n=atob(t[1]),r=n.length,s=new Uint8Array(r);while(r--)s[r]=n.charCodeAt(r);return new Blob([s],{type:i})},getState:function(){return{tiers:this.tiers.map((function(e){return{name:e.name,color:e.color,images:e.images.map((function(e){return{src:e.src,name:e.name}}))}})),gallery:this.gallery.map((function(e){return{src:e.src,name:e.name}})),showImageNames:!!this.showImageNames,fixedHeight:!!this.fixedHeight}},applyState:function(e){var t=this;e&&(Array.isArray(e.tiers)&&e.tiers.length&&(this.tiers=e.tiers.map((function(e){return{id:t.nextTierId(),name:e.name||"未命名",color:C(e.color,b),images:(e.images||[]).filter((function(e){return e&&e.src})).map((function(e){return t.createImage(e.src,e.name)}))}}))),this.gallery=(e.gallery||[]).filter((function(e){return e&&e.src})).map((function(e){return t.createImage(e.src,e.name)})),this.showImageNames=!!e.showImageNames,this.fixedHeight=!!e.fixedHeight,this.$nextTick(this.recalcSizes))},openDB:function(){var e=this;return this.persist&&"undefined"!==typeof window&&window.indexedDB?(this.dbPromise||(this.dbPromise=new Promise((function(t,i){var n=window.indexedDB.open(e.storageKey+"-db",1);n.onupgradeneeded=function(e){var t=e.target.result;t.objectStoreNames.contains(x)||t.createObjectStore(x)},n.onsuccess=function(){return t(n.result)},n.onerror=function(){return i(n.error||new Error("IndexedDB 打开失败"))}}))),this.dbPromise):Promise.resolve(null)},restoreState:function(){var e=this;this.persist&&this.openDB().then((function(e){return e?new Promise((function(t,i){var n=e.transaction([x],"readonly").objectStore(x).get(S);n.onsuccess=function(){return t(n.result||null)},n.onerror=function(){return i(n.error)}})):null})).then((function(t){t&&e.applyState(t)})).catch((function(e){console.warn("[TierRanking] 恢复本地数据失败:",e)}))},scheduleSave:function(){var e=this;this.$emit("change",this.getState()),this.persist&&(clearTimeout(this.saveTimer),this.saveTimer=setTimeout((function(){e.saveState()}),300))},saveState:function(){var e=this,t=this.getState();this.openDB().then((function(e){if(e)return new Promise((function(i,n){var r=e.transaction([x],"readwrite"),s=r.objectStore(x).put(t,S);s.onsuccess=function(){return i()},s.onerror=function(){return n(s.error)}}))})).catch((function(t){console.warn("[TierRanking] 保存失败:",t),e.showToast("保存失败,可能是浏览器存储空间不足")}))},reset:function(){this.resetRanking()}}},D=_,P=(i("8dfd"),Object(l["a"])(D,v,p,!1,null,"a9fe0c4e",null)),H=P.exports;t["a"]={App:g,HelloWorld:d,TierRanking:H}}}]);