@applemusic-like-lyrics/vue 0.0.15 → 0.1.1

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.
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue"),d=require("@applemusic-like-lyrics/core"),E=n.defineComponent({inheritAttrs:!1,__name:"LyricPlayer",props:{disabled:{type:Boolean},playing:{type:Boolean},alignAnchor:{},alignPosition:{},enableSpring:{type:Boolean},enableBlur:{type:Boolean},enableScale:{type:Boolean},hidePassedLines:{type:Boolean},lyricLines:{},currentTime:{},linePosXSpringParams:{},linePosYSpringParams:{},lineScaleSpringParams:{},bottomLine:{}},emits:["line-click","line-contextmenu"],setup(u,{expose:f,emit:i}){const l=u,r=i,t=n.ref(),a=n.ref(),v=e=>r("line-click",e),m=e=>r("line-contextmenu",e);return n.onMounted(()=>{t.value&&(a.value=new d.LyricPlayer,t.value.appendChild(a.value.getElement()),a.value.addEventListener("line-click",v),a.value.addEventListener("line-contextmenu",m))}),n.onUnmounted(()=>{a.value&&(a.value.removeEventListener("line-click",v),a.value.removeEventListener("line-contextmenu",m),a.value.dispose())}),n.watchEffect(e=>{if(!l.disabled){let o=!1,s=-1;const c=p=>{var g;o||(s===-1&&(s=p),(g=a.value)==null||g.update(p-s),s=p,requestAnimationFrame(c))};requestAnimationFrame(c),e(()=>{o=!0})}}),n.watchEffect(()=>{var e,o,s;l.playing!==void 0?l.playing?(e=a.value)==null||e.resume():(o=a.value)==null||o.pause():(s=a.value)==null||s.resume()}),n.watchEffect(()=>{var e;l.alignAnchor!==void 0&&((e=a.value)==null||e.setAlignAnchor(l.alignAnchor))}),n.watchEffect(()=>{var e;l.hidePassedLines!==void 0&&((e=a.value)==null||e.setHidePassedLines(l.hidePassedLines))}),n.watchEffect(()=>{var e;l.alignPosition!==void 0&&((e=a.value)==null||e.setAlignPosition(l.alignPosition))}),n.watchEffect(()=>{var e,o;l.enableSpring!==void 0?(e=a.value)==null||e.setEnableSpring(l.enableSpring):(o=a.value)==null||o.setEnableSpring(!0)}),n.watchEffect(()=>{var e,o;l.enableBlur!==void 0?(e=a.value)==null||e.setEnableBlur(l.enableBlur):(o=a.value)==null||o.setEnableBlur(!0)}),n.watchEffect(()=>{var e,o;l.enableScale!==void 0?(e=a.value)==null||e.setEnableScale(l.enableScale):(o=a.value)==null||o.setEnableScale(!0)}),n.watchEffect(()=>{var e;l.lyricLines!==void 0&&((e=a.value)==null||e.setLyricLines(l.lyricLines))}),n.watchEffect(()=>{var e;l.currentTime!==void 0&&((e=a.value)==null||e.setCurrentTime(l.currentTime))}),n.watchEffect(()=>{var e;l.linePosXSpringParams!==void 0&&((e=a.value)==null||e.setLinePosXSpringParams(l.linePosXSpringParams))}),n.watchEffect(()=>{var e;l.linePosYSpringParams!==void 0&&((e=a.value)==null||e.setLinePosYSpringParams(l.linePosYSpringParams))}),n.watchEffect(()=>{var e;l.lineScaleSpringParams!==void 0&&((e=a.value)==null||e.setLineScaleSpringParams(l.lineScaleSpringParams))}),f({lyricPlayer:a,wrapperEl:t}),(e,o)=>{var s,c;return n.openBlock(),n.createElementBlock(n.Fragment,null,[n.createElementVNode("div",n.mergeProps({ref_key:"wrapperRef",ref:t},e.$attrs),null,16),(s=a.value)!=null&&s.getBottomLineElement()&&l.bottomLine?(n.openBlock(),n.createBlock(n.Teleport,{key:0,to:(c=a.value)==null?void 0:c.getBottomLineElement()},null,8,["to"])):n.createCommentVNode("",!0)],64)}}}),y=n.defineComponent({__name:"BackgroundRender",props:{album:{},albumIsVideo:{type:Boolean},fps:{},playing:{type:Boolean},flowSpeed:{},hasLyric:{type:Boolean},lowFreqVolume:{},renderScale:{},renderer:{type:Function}},setup(u,{expose:f}){const i=u,l=n.ref(),r=n.ref();return n.onMounted(()=>{if(l.value){r.value=d.BackgroundRender.new(i.renderer??d.EplorRenderer);const t=r.value.getElement();t.style.width="100%",t.style.height="100%",l.value.appendChild(t)}}),n.onUnmounted(()=>{r.value&&r.value.dispose()}),n.watchEffect(()=>{var t;i.album&&((t=r.value)==null||t.setAlbum(i.album,i.albumIsVideo))}),n.watchEffect(()=>{var t;i.fps&&((t=r.value)==null||t.setFPS(i.fps))}),n.watchEffect(()=>{var t,a;i.playing?(t=r.value)==null||t.pause():(a=r.value)==null||a.resume()}),n.watchEffect(()=>{var t;i.flowSpeed&&((t=r.value)==null||t.setFlowSpeed(i.flowSpeed))}),n.watchEffect(()=>{var t;i.renderScale&&((t=r.value)==null||t.setRenderScale(i.renderScale))}),n.watchEffect(()=>{var t;i.lowFreqVolume&&((t=r.value)==null||t.setLowFreqVolume(i.lowFreqVolume))}),n.watchEffect(()=>{var t;i.hasLyric!==void 0&&((t=r.value)==null||t.setHasLyric(i.hasLyric??!0))}),f({bgRender:r,wrapperEl:l}),(t,a)=>(n.openBlock(),n.createElementBlock("div",{ref_key:"wrapperRef",ref:l},null,512))}});exports.BackgroundRender=y;exports.LyricPlayer=E;
2
+ //# sourceMappingURL=amll-vue.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amll-vue.cjs","sources":["../src/LyricPlayer.vue","../src/BackgroundRender.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" v-bind=\"$attrs\"></div>\n <Teleport v-if=\"playerRef?.getBottomLineElement() && props.bottomLine\" :to=\"playerRef?.getBottomLineElement()\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { LyricPlayer, type LyricLineMouseEvent } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerEmits, LyricPlayerRef } from \".\";\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst props = defineProps<LyricPlayerProps>();\nconst emits = defineEmits<LyricPlayerEmits>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nconst lineClickHandler = (e: Event) =>\n emits(\"line-click\", e as LyricLineMouseEvent);\nconst lineContextMenuHandler = (e: Event) =>\n emits(\"line-contextmenu\", e as LyricLineMouseEvent);\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n playerRef.value.addEventListener(\"line-click\", lineClickHandler);\n playerRef.value.addEventListener(\"line-contextmenu\", lineContextMenuHandler);\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\n playerRef.value.removeEventListener(\"line-click\", lineClickHandler);\n playerRef.value.removeEventListener(\"line-contextmenu\", lineContextMenuHandler);\n playerRef.value.dispose();\n }\n});\n\nwatchEffect((onCleanup) => {\n if (!props.disabled) {\n let canceled = false;\n let lastTime = -1;\n const onFrame = (time: number) => {\n if (canceled) return;\n if (lastTime === -1) {\n lastTime = time;\n }\n playerRef.value?.update(time - lastTime);\n lastTime = time;\n requestAnimationFrame(onFrame);\n };\n requestAnimationFrame(onFrame);\n onCleanup(() => {\n canceled = true;\n });\n }\n});\n\nwatchEffect(() => {\n if (props.playing !== undefined) {\n if (props.playing) {\n playerRef.value?.resume();\n } else {\n playerRef.value?.pause();\n }\n } else playerRef.value?.resume();\n});\n\nwatchEffect(() => {\n if (props.alignAnchor !== undefined)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.hidePassedLines !== undefined)\n playerRef.value?.setHidePassedLines(props.hidePassedLines);\n});\n\nwatchEffect(() => {\n if (props.alignPosition !== undefined)\n playerRef.value?.setAlignPosition(props.alignPosition);\n});\n\nwatchEffect(() => {\n if (props.enableSpring !== undefined)\n playerRef.value?.setEnableSpring(props.enableSpring);\n else\n playerRef.value?.setEnableSpring(true);\n});\n\nwatchEffect(() => {\n if (props.enableBlur !== undefined)\n playerRef.value?.setEnableBlur(props.enableBlur);\n else\n playerRef.value?.setEnableBlur(true);\n});\n\nwatchEffect(() => {\n if (props.enableScale !== undefined)\n playerRef.value?.setEnableScale(props.enableScale);\n else\n playerRef.value?.setEnableScale(true);\n});\n\nwatchEffect(() => {\n if (props.lyricLines !== undefined)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime !== undefined)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams !== undefined)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams !== undefined)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams !== undefined)\n playerRef.value?.setLineScaleSpringParams(props.lineScaleSpringParams);\n});\n\ndefineExpose<LyricPlayerRef>({\n lyricPlayer: playerRef,\n wrapperEl: wrapperRef,\n});\n\n</script>","<template>\n <div ref=\"wrapperRef\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { AbstractBaseRenderer, BackgroundRender, EplorRenderer } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { BackgroundRenderProps, BackgroundRenderRef } from \".\";\n\nconst props = defineProps<BackgroundRenderProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst bgRenderRef = ref<AbstractBaseRenderer>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n bgRenderRef.value = BackgroundRender.new(props.renderer ?? EplorRenderer);\n const el = bgRenderRef.value.getElement();\n el.style.width = \"100%\";\n el.style.height = \"100%\";\n wrapperRef.value.appendChild(el);\n }\n});\n\nonUnmounted(() => {\n if (bgRenderRef.value) {\n bgRenderRef.value.dispose();\n }\n});\n\nwatchEffect(() => {\n if (props.album)\n bgRenderRef.value?.setAlbum(props.album, props.albumIsVideo);\n});\n\nwatchEffect(() => {\n if (props.fps)\n bgRenderRef.value?.setFPS(props.fps);\n});\n\nwatchEffect(() => {\n if (props.playing)\n bgRenderRef.value?.pause();\n else\n bgRenderRef.value?.resume();\n});\n\nwatchEffect(() => {\n if (props.flowSpeed)\n bgRenderRef.value?.setFlowSpeed(props.flowSpeed);\n});\n\nwatchEffect(() => {\n if (props.renderScale)\n bgRenderRef.value?.setRenderScale(props.renderScale);\n});\n\nwatchEffect(() => {\n if (props.lowFreqVolume)\n bgRenderRef.value?.setLowFreqVolume(props.lowFreqVolume);\n});\n\nwatchEffect(() => {\n if (props.hasLyric !== undefined)\n bgRenderRef.value?.setHasLyric(props.hasLyric ?? true);\n});\n\ndefineExpose<BackgroundRenderRef>({\n bgRender: bgRenderRef,\n wrapperEl: wrapperRef,\n});\n\n</script>"],"names":["props","__props","emits","__emit","wrapperRef","ref","playerRef","lineClickHandler","lineContextMenuHandler","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","canceled","lastTime","onFrame","time","_a","_b","_c","__expose","bgRenderRef","BackgroundRender","EplorRenderer","el"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"amll-vue.js","sources":["../src/LyricPlayer.vue","../src/BackgroundRender.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" v-bind=\"$attrs\"></div>\n <Teleport v-if=\"playerRef?.getBottomLineElement() && props.bottomLine\" :to=\"playerRef?.getBottomLineElement()\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { LyricPlayer, type LyricLineMouseEvent } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerEmits, LyricPlayerRef } from \".\";\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst props = defineProps<LyricPlayerProps>();\nconst emits = defineEmits<LyricPlayerEmits>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nconst lineClickHandler = (e: Event) =>\n emits(\"line-click\", e as LyricLineMouseEvent);\nconst lineContextMenuHandler = (e: Event) =>\n emits(\"line-contextmenu\", e as LyricLineMouseEvent);\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n playerRef.value.addEventListener(\"line-click\", lineClickHandler);\n playerRef.value.addEventListener(\"line-contextmenu\", lineContextMenuHandler);\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\n playerRef.value.removeEventListener(\"line-click\", lineClickHandler);\n playerRef.value.removeEventListener(\"line-contextmenu\", lineContextMenuHandler);\n playerRef.value.dispose();\n }\n});\n\nwatchEffect((onCleanup) => {\n if (!props.disabled) {\n let canceled = false;\n let lastTime = -1;\n const onFrame = (time: number) => {\n if (canceled) return;\n if (lastTime === -1) {\n lastTime = time;\n }\n playerRef.value?.update(time - lastTime);\n lastTime = time;\n requestAnimationFrame(onFrame);\n };\n requestAnimationFrame(onFrame);\n onCleanup(() => {\n canceled = true;\n });\n }\n});\n\nwatchEffect(() => {\n if (props.alignAnchor !== undefined)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.hidePassedLines !== undefined)\n playerRef.value?.setHidePassedLines(props.hidePassedLines);\n});\n\nwatchEffect(() => {\n if (props.alignPosition !== undefined)\n playerRef.value?.setAlignPosition(props.alignPosition);\n});\n\nwatchEffect(() => {\n if (props.enableSpring !== undefined)\n playerRef.value?.setEnableSpring(props.enableSpring);\n else\n playerRef.value?.setEnableSpring(true);\n});\n\nwatchEffect(() => {\n if (props.enableBlur !== undefined)\n playerRef.value?.setEnableBlur(props.enableBlur);\n else\n playerRef.value?.setEnableBlur(true);\n});\n\nwatchEffect(() => {\n if (props.enableScale !== undefined)\n playerRef.value?.setEnableScale(props.enableScale);\n else\n playerRef.value?.setEnableScale(true);\n});\n\nwatchEffect(() => {\n if (props.lyricLines !== undefined)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime !== undefined)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams !== undefined)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams !== undefined)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams !== undefined)\n playerRef.value?.setLineScaleSpringParams(props.lineScaleSpringParams);\n});\n\ndefineExpose<LyricPlayerRef>({\n lyricPlayer: playerRef,\n wrapperEl: wrapperRef,\n});\n\n</script>","<template>\n <div ref=\"wrapperRef\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { BackgroundRender } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { BackgroundRenderProps, BackgroundRenderRef } from \".\";\n\nconst props = defineProps<BackgroundRenderProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst bgRenderRef = ref<BackgroundRender>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n bgRenderRef.value = new BackgroundRender();\n const el = bgRenderRef.value.getElement();\n el.style.width = \"100%\";\n el.style.height = \"100%\";\n wrapperRef.value.appendChild(el);\n }\n});\n\nonUnmounted(() => {\n if (bgRenderRef.value) {\n bgRenderRef.value.dispose();\n }\n});\n\nwatchEffect(() => {\n if (props.albumImageUrl)\n bgRenderRef.value?.setAlbumImage(props.albumImageUrl);\n});\n\nwatchEffect(() => {\n if (props.fps)\n bgRenderRef.value?.setFPS(props.fps);\n});\n\nwatchEffect(() => {\n if (props.playing)\n bgRenderRef.value?.pause();\n else\n bgRenderRef.value?.resume();\n});\n\nwatchEffect(() => {\n if (props.flowSpeed)\n bgRenderRef.value?.setFlowSpeed(props.flowSpeed);\n});\n\nwatchEffect(() => {\n if (props.renderScale)\n bgRenderRef.value?.setRenderScale(props.renderScale);\n});\n\ndefineExpose<BackgroundRenderRef>({\n bgRender: bgRenderRef,\n wrapperEl: wrapperRef,\n});\n\n</script>"],"names":["wrapperRef","ref","playerRef","lineClickHandler","e","emits","lineContextMenuHandler","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","props","canceled","lastTime","onFrame","time","_a","_b","__expose","bgRenderRef","BackgroundRender","el"],"mappings":"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"}
1
+ {"version":3,"file":"amll-vue.js","sources":["../src/LyricPlayer.vue","../src/BackgroundRender.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" v-bind=\"$attrs\"></div>\n <Teleport v-if=\"playerRef?.getBottomLineElement() && props.bottomLine\" :to=\"playerRef?.getBottomLineElement()\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { LyricPlayer, type LyricLineMouseEvent } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerEmits, LyricPlayerRef } from \".\";\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst props = defineProps<LyricPlayerProps>();\nconst emits = defineEmits<LyricPlayerEmits>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nconst lineClickHandler = (e: Event) =>\n emits(\"line-click\", e as LyricLineMouseEvent);\nconst lineContextMenuHandler = (e: Event) =>\n emits(\"line-contextmenu\", e as LyricLineMouseEvent);\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n playerRef.value.addEventListener(\"line-click\", lineClickHandler);\n playerRef.value.addEventListener(\"line-contextmenu\", lineContextMenuHandler);\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\n playerRef.value.removeEventListener(\"line-click\", lineClickHandler);\n playerRef.value.removeEventListener(\"line-contextmenu\", lineContextMenuHandler);\n playerRef.value.dispose();\n }\n});\n\nwatchEffect((onCleanup) => {\n if (!props.disabled) {\n let canceled = false;\n let lastTime = -1;\n const onFrame = (time: number) => {\n if (canceled) return;\n if (lastTime === -1) {\n lastTime = time;\n }\n playerRef.value?.update(time - lastTime);\n lastTime = time;\n requestAnimationFrame(onFrame);\n };\n requestAnimationFrame(onFrame);\n onCleanup(() => {\n canceled = true;\n });\n }\n});\n\nwatchEffect(() => {\n if (props.playing !== undefined) {\n if (props.playing) {\n playerRef.value?.resume();\n } else {\n playerRef.value?.pause();\n }\n } else playerRef.value?.resume();\n});\n\nwatchEffect(() => {\n if (props.alignAnchor !== undefined)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.hidePassedLines !== undefined)\n playerRef.value?.setHidePassedLines(props.hidePassedLines);\n});\n\nwatchEffect(() => {\n if (props.alignPosition !== undefined)\n playerRef.value?.setAlignPosition(props.alignPosition);\n});\n\nwatchEffect(() => {\n if (props.enableSpring !== undefined)\n playerRef.value?.setEnableSpring(props.enableSpring);\n else\n playerRef.value?.setEnableSpring(true);\n});\n\nwatchEffect(() => {\n if (props.enableBlur !== undefined)\n playerRef.value?.setEnableBlur(props.enableBlur);\n else\n playerRef.value?.setEnableBlur(true);\n});\n\nwatchEffect(() => {\n if (props.enableScale !== undefined)\n playerRef.value?.setEnableScale(props.enableScale);\n else\n playerRef.value?.setEnableScale(true);\n});\n\nwatchEffect(() => {\n if (props.lyricLines !== undefined)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime !== undefined)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams !== undefined)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams !== undefined)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams !== undefined)\n playerRef.value?.setLineScaleSpringParams(props.lineScaleSpringParams);\n});\n\ndefineExpose<LyricPlayerRef>({\n lyricPlayer: playerRef,\n wrapperEl: wrapperRef,\n});\n\n</script>","<template>\n <div ref=\"wrapperRef\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { AbstractBaseRenderer, BackgroundRender, EplorRenderer } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { BackgroundRenderProps, BackgroundRenderRef } from \".\";\n\nconst props = defineProps<BackgroundRenderProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst bgRenderRef = ref<AbstractBaseRenderer>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n bgRenderRef.value = BackgroundRender.new(props.renderer ?? EplorRenderer);\n const el = bgRenderRef.value.getElement();\n el.style.width = \"100%\";\n el.style.height = \"100%\";\n wrapperRef.value.appendChild(el);\n }\n});\n\nonUnmounted(() => {\n if (bgRenderRef.value) {\n bgRenderRef.value.dispose();\n }\n});\n\nwatchEffect(() => {\n if (props.album)\n bgRenderRef.value?.setAlbum(props.album, props.albumIsVideo);\n});\n\nwatchEffect(() => {\n if (props.fps)\n bgRenderRef.value?.setFPS(props.fps);\n});\n\nwatchEffect(() => {\n if (props.playing)\n bgRenderRef.value?.pause();\n else\n bgRenderRef.value?.resume();\n});\n\nwatchEffect(() => {\n if (props.flowSpeed)\n bgRenderRef.value?.setFlowSpeed(props.flowSpeed);\n});\n\nwatchEffect(() => {\n if (props.renderScale)\n bgRenderRef.value?.setRenderScale(props.renderScale);\n});\n\nwatchEffect(() => {\n if (props.lowFreqVolume)\n bgRenderRef.value?.setLowFreqVolume(props.lowFreqVolume);\n});\n\nwatchEffect(() => {\n if (props.hasLyric !== undefined)\n bgRenderRef.value?.setHasLyric(props.hasLyric ?? true);\n});\n\ndefineExpose<BackgroundRenderRef>({\n bgRender: bgRenderRef,\n wrapperEl: wrapperRef,\n});\n\n</script>"],"names":["props","__props","emits","__emit","wrapperRef","ref","playerRef","lineClickHandler","lineContextMenuHandler","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","canceled","lastTime","onFrame","time","_a","_b","_c","__expose","bgRenderRef","BackgroundRender","EplorRenderer","el"],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@applemusic-like-lyrics/vue",
3
3
  "packageManager": "yarn@3.6.1",
4
- "version": "0.0.15",
4
+ "version": "0.1.1",
5
5
  "description": "AMLL 组件库的 Vue 绑定",
6
6
  "repository": {
7
7
  "url": "https://github.com/Steve-xmh/applemusic-like-lyrics.git",
8
8
  "directory": "packages/vue",
9
9
  "type": "git"
10
10
  },
11
+ "type": "module",
11
12
  "license": "GPL-3.0",
12
13
  "files": [
13
14
  "dist"
@@ -15,16 +16,17 @@
15
16
  "scripts": {
16
17
  "build": "vite build",
17
18
  "build:dev": "vite build",
18
- "fmt": "rome format --write ./src",
19
+ "fmt": "biome format --write ./src",
19
20
  "dev": "vite dev"
20
21
  },
21
22
  "main": "./dist/amll-vue.cjs",
22
- "module": "./dist/amll-vue.mjs",
23
+ "module": "./dist/amll-vue.js",
23
24
  "typings": "./dist/index.d.ts",
24
25
  "exports": {
25
26
  ".": {
26
- "import": "./dist/amll-vue.mjs",
27
- "require": "./dist/amll-vue.cjs"
27
+ "import": "./dist/amll-vue.js",
28
+ "require": "./dist/amll-vue.cjs",
29
+ "types": "./dist/index.d.ts"
28
30
  }
29
31
  },
30
32
  "dependencies": {
@@ -34,6 +36,7 @@
34
36
  "vue": "*"
35
37
  },
36
38
  "devDependencies": {
39
+ "@biomejs/biome": "1.5.3",
37
40
  "@pixi/app": "^7.2.4",
38
41
  "@pixi/core": "^7.2.4",
39
42
  "@pixi/display": "^7.2.4",
@@ -44,7 +47,6 @@
44
47
  "@vue/tsconfig": "^0.4.0",
45
48
  "jss": "^10.10.0",
46
49
  "jss-preset-default": "^10.10.0",
47
- "rome": "^12.1.3",
48
50
  "typedoc": "^0.25.2",
49
51
  "typedoc-plugin-markdown": "^3.16.0",
50
52
  "typescript": "^5.2.2",
@@ -1,38 +0,0 @@
1
- import { BackgroundRender } from "@applemusic-like-lyrics/core";
2
- declare const _default: import("vue").DefineComponent<{
3
- albumImageUrl: {
4
- type: import("vue").PropType<string>;
5
- };
6
- fps: {
7
- type: import("vue").PropType<number>;
8
- };
9
- playing: {
10
- type: import("vue").PropType<boolean>;
11
- };
12
- flowSpeed: {
13
- type: import("vue").PropType<number>;
14
- };
15
- renderScale: {
16
- type: import("vue").PropType<number>;
17
- };
18
- }, {
19
- bgRender?: import("vue").Ref<BackgroundRender | undefined> | undefined;
20
- wrapperEl: import("vue").Ref<HTMLDivElement | undefined>;
21
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
22
- albumImageUrl: {
23
- type: import("vue").PropType<string>;
24
- };
25
- fps: {
26
- type: import("vue").PropType<number>;
27
- };
28
- playing: {
29
- type: import("vue").PropType<boolean>;
30
- };
31
- flowSpeed: {
32
- type: import("vue").PropType<number>;
33
- };
34
- renderScale: {
35
- type: import("vue").PropType<number>;
36
- };
37
- }>>, {}, {}>;
38
- export default _default;
@@ -1,96 +0,0 @@
1
- import { LyricPlayer, type LyricLineMouseEvent } from "@applemusic-like-lyrics/core";
2
- declare const _default: import("vue").DefineComponent<{
3
- disabled: {
4
- type: import("vue").PropType<boolean>;
5
- };
6
- alignAnchor: {
7
- type: import("vue").PropType<"top" | "bottom" | "center">;
8
- };
9
- alignPosition: {
10
- type: import("vue").PropType<number>;
11
- };
12
- enableSpring: {
13
- type: import("vue").PropType<boolean>;
14
- };
15
- enableBlur: {
16
- type: import("vue").PropType<boolean>;
17
- };
18
- enableScale: {
19
- type: import("vue").PropType<boolean>;
20
- };
21
- hidePassedLines: {
22
- type: import("vue").PropType<boolean>;
23
- };
24
- lyricLines: {
25
- type: import("vue").PropType<import("@applemusic-like-lyrics/core").LyricLine[]>;
26
- };
27
- currentTime: {
28
- type: import("vue").PropType<number>;
29
- };
30
- linePosXSpringParams: {
31
- type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
32
- };
33
- linePosYSpringParams: {
34
- type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
35
- };
36
- lineScaleSpringParams: {
37
- type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
38
- };
39
- bottomLine: {
40
- type: import("vue").PropType<import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
41
- [key: string]: any;
42
- }>[]>;
43
- };
44
- }, {
45
- lyricPlayer: import("vue").Ref<LyricPlayer | undefined>;
46
- wrapperEl: import("vue").Ref<HTMLDivElement | undefined>;
47
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
48
- "line-click": (line: LyricLineMouseEvent) => void;
49
- "line-contextmenu": (line: LyricLineMouseEvent) => void;
50
- }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
51
- disabled: {
52
- type: import("vue").PropType<boolean>;
53
- };
54
- alignAnchor: {
55
- type: import("vue").PropType<"top" | "bottom" | "center">;
56
- };
57
- alignPosition: {
58
- type: import("vue").PropType<number>;
59
- };
60
- enableSpring: {
61
- type: import("vue").PropType<boolean>;
62
- };
63
- enableBlur: {
64
- type: import("vue").PropType<boolean>;
65
- };
66
- enableScale: {
67
- type: import("vue").PropType<boolean>;
68
- };
69
- hidePassedLines: {
70
- type: import("vue").PropType<boolean>;
71
- };
72
- lyricLines: {
73
- type: import("vue").PropType<import("@applemusic-like-lyrics/core").LyricLine[]>;
74
- };
75
- currentTime: {
76
- type: import("vue").PropType<number>;
77
- };
78
- linePosXSpringParams: {
79
- type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
80
- };
81
- linePosYSpringParams: {
82
- type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
83
- };
84
- lineScaleSpringParams: {
85
- type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
86
- };
87
- bottomLine: {
88
- type: import("vue").PropType<import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
89
- [key: string]: any;
90
- }>[]>;
91
- };
92
- }>> & {
93
- "onLine-click"?: ((line: LyricLineMouseEvent) => any) | undefined;
94
- "onLine-contextmenu"?: ((line: LyricLineMouseEvent) => any) | undefined;
95
- }, {}, {}>;
96
- export default _default;
package/dist/amll-vue.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),v=require("@applemusic-like-lyrics/core"),g=a.defineComponent({inheritAttrs:!1,__name:"LyricPlayer",props:{disabled:{type:Boolean},alignAnchor:{},alignPosition:{},enableSpring:{type:Boolean},enableBlur:{type:Boolean},enableScale:{type:Boolean},hidePassedLines:{type:Boolean},lyricLines:{},currentTime:{},linePosXSpringParams:{},linePosYSpringParams:{},lineScaleSpringParams:{},bottomLine:{}},emits:["line-click","line-contextmenu"],setup(u,{expose:f,emit:i}){const l=u,t=a.ref(),e=a.ref(),c=n=>i("line-click",n),d=n=>i("line-contextmenu",n);return a.onMounted(()=>{t.value&&(e.value=new v.LyricPlayer,t.value.appendChild(e.value.getElement()),e.value.addEventListener("line-click",c),e.value.addEventListener("line-contextmenu",d))}),a.onUnmounted(()=>{e.value&&(e.value.removeEventListener("line-click",c),e.value.removeEventListener("line-contextmenu",d),e.value.dispose())}),a.watchEffect(n=>{if(!l.disabled){let r=!1,o=-1;const s=p=>{var m;r||(o===-1&&(o=p),(m=e.value)==null||m.update(p-o),o=p,requestAnimationFrame(s))};requestAnimationFrame(s),n(()=>{r=!0})}}),a.watchEffect(()=>{var n;l.alignAnchor!==void 0&&((n=e.value)==null||n.setAlignAnchor(l.alignAnchor))}),a.watchEffect(()=>{var n;l.hidePassedLines!==void 0&&((n=e.value)==null||n.setHidePassedLines(l.hidePassedLines))}),a.watchEffect(()=>{var n;l.alignPosition!==void 0&&((n=e.value)==null||n.setAlignPosition(l.alignPosition))}),a.watchEffect(()=>{var n,r;l.enableSpring!==void 0?(n=e.value)==null||n.setEnableSpring(l.enableSpring):(r=e.value)==null||r.setEnableSpring(!0)}),a.watchEffect(()=>{var n,r;l.enableBlur!==void 0?(n=e.value)==null||n.setEnableBlur(l.enableBlur):(r=e.value)==null||r.setEnableBlur(!0)}),a.watchEffect(()=>{var n,r;l.enableScale!==void 0?(n=e.value)==null||n.setEnableScale(l.enableScale):(r=e.value)==null||r.setEnableScale(!0)}),a.watchEffect(()=>{var n;l.lyricLines!==void 0&&((n=e.value)==null||n.setLyricLines(l.lyricLines))}),a.watchEffect(()=>{var n;l.currentTime!==void 0&&((n=e.value)==null||n.setCurrentTime(l.currentTime))}),a.watchEffect(()=>{var n;l.linePosXSpringParams!==void 0&&((n=e.value)==null||n.setLinePosXSpringParams(l.linePosXSpringParams))}),a.watchEffect(()=>{var n;l.linePosYSpringParams!==void 0&&((n=e.value)==null||n.setLinePosYSpringParams(l.linePosYSpringParams))}),a.watchEffect(()=>{var n;l.lineScaleSpringParams!==void 0&&((n=e.value)==null||n.setLineScaleSpringParams(l.lineScaleSpringParams))}),f({lyricPlayer:e,wrapperEl:t}),(n,r)=>{var o,s;return a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("div",a.mergeProps({ref_key:"wrapperRef",ref:t},n.$attrs),null,16),(o=e.value)!=null&&o.getBottomLineElement()&&l.bottomLine?(a.openBlock(),a.createBlock(a.Teleport,{key:0,to:(s=e.value)==null?void 0:s.getBottomLineElement()},null,8,["to"])):a.createCommentVNode("",!0)],64)}}}),S=a.defineComponent({__name:"BackgroundRender",props:{albumImageUrl:{},fps:{},playing:{type:Boolean},flowSpeed:{},renderScale:{}},setup(u,{expose:f}){const i=u,l=a.ref(),t=a.ref();return a.onMounted(()=>{if(l.value){t.value=new v.BackgroundRender;const e=t.value.getElement();e.style.width="100%",e.style.height="100%",l.value.appendChild(e)}}),a.onUnmounted(()=>{t.value&&t.value.dispose()}),a.watchEffect(()=>{var e;i.albumImageUrl&&((e=t.value)==null||e.setAlbumImage(i.albumImageUrl))}),a.watchEffect(()=>{var e;i.fps&&((e=t.value)==null||e.setFPS(i.fps))}),a.watchEffect(()=>{var e,c;i.playing?(e=t.value)==null||e.pause():(c=t.value)==null||c.resume()}),a.watchEffect(()=>{var e;i.flowSpeed&&((e=t.value)==null||e.setFlowSpeed(i.flowSpeed))}),a.watchEffect(()=>{var e;i.renderScale&&((e=t.value)==null||e.setRenderScale(i.renderScale))}),f({bgRender:t,wrapperEl:l}),(e,c)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"wrapperRef",ref:l},null,512))}});exports.BackgroundRender=S;exports.LyricPlayer=g;
2
- //# sourceMappingURL=amll-vue.js.map
package/dist/amll-vue.mjs DELETED
@@ -1,136 +0,0 @@
1
- import { defineComponent as S, ref as c, onMounted as P, onUnmounted as y, watchEffect as a, openBlock as v, createElementBlock as b, Fragment as L, createElementVNode as B, mergeProps as E, createBlock as h, Teleport as k, createCommentVNode as w } from "vue";
2
- import { LyricPlayer as _, BackgroundRender as R } from "@applemusic-like-lyrics/core";
3
- const C = /* @__PURE__ */ S({
4
- inheritAttrs: !1,
5
- __name: "LyricPlayer",
6
- props: {
7
- disabled: { type: Boolean },
8
- alignAnchor: {},
9
- alignPosition: {},
10
- enableSpring: { type: Boolean },
11
- enableBlur: { type: Boolean },
12
- enableScale: { type: Boolean },
13
- hidePassedLines: { type: Boolean },
14
- lyricLines: {},
15
- currentTime: {},
16
- linePosXSpringParams: {},
17
- linePosYSpringParams: {},
18
- lineScaleSpringParams: {},
19
- bottomLine: {}
20
- },
21
- emits: ["line-click", "line-contextmenu"],
22
- setup(p, { expose: d, emit: r }) {
23
- const l = p, i = c(), e = c(), o = (n) => r("line-click", n), f = (n) => r("line-contextmenu", n);
24
- return P(() => {
25
- i.value && (e.value = new _(), i.value.appendChild(e.value.getElement()), e.value.addEventListener("line-click", o), e.value.addEventListener("line-contextmenu", f));
26
- }), y(() => {
27
- e.value && (e.value.removeEventListener("line-click", o), e.value.removeEventListener("line-contextmenu", f), e.value.dispose());
28
- }), a((n) => {
29
- if (!l.disabled) {
30
- let t = !1, s = -1;
31
- const u = (m) => {
32
- var g;
33
- t || (s === -1 && (s = m), (g = e.value) == null || g.update(m - s), s = m, requestAnimationFrame(u));
34
- };
35
- requestAnimationFrame(u), n(() => {
36
- t = !0;
37
- });
38
- }
39
- }), a(() => {
40
- var n;
41
- l.alignAnchor !== void 0 && ((n = e.value) == null || n.setAlignAnchor(l.alignAnchor));
42
- }), a(() => {
43
- var n;
44
- l.hidePassedLines !== void 0 && ((n = e.value) == null || n.setHidePassedLines(l.hidePassedLines));
45
- }), a(() => {
46
- var n;
47
- l.alignPosition !== void 0 && ((n = e.value) == null || n.setAlignPosition(l.alignPosition));
48
- }), a(() => {
49
- var n, t;
50
- l.enableSpring !== void 0 ? (n = e.value) == null || n.setEnableSpring(l.enableSpring) : (t = e.value) == null || t.setEnableSpring(!0);
51
- }), a(() => {
52
- var n, t;
53
- l.enableBlur !== void 0 ? (n = e.value) == null || n.setEnableBlur(l.enableBlur) : (t = e.value) == null || t.setEnableBlur(!0);
54
- }), a(() => {
55
- var n, t;
56
- l.enableScale !== void 0 ? (n = e.value) == null || n.setEnableScale(l.enableScale) : (t = e.value) == null || t.setEnableScale(!0);
57
- }), a(() => {
58
- var n;
59
- l.lyricLines !== void 0 && ((n = e.value) == null || n.setLyricLines(l.lyricLines));
60
- }), a(() => {
61
- var n;
62
- l.currentTime !== void 0 && ((n = e.value) == null || n.setCurrentTime(l.currentTime));
63
- }), a(() => {
64
- var n;
65
- l.linePosXSpringParams !== void 0 && ((n = e.value) == null || n.setLinePosXSpringParams(l.linePosXSpringParams));
66
- }), a(() => {
67
- var n;
68
- l.linePosYSpringParams !== void 0 && ((n = e.value) == null || n.setLinePosYSpringParams(l.linePosYSpringParams));
69
- }), a(() => {
70
- var n;
71
- l.lineScaleSpringParams !== void 0 && ((n = e.value) == null || n.setLineScaleSpringParams(l.lineScaleSpringParams));
72
- }), d({
73
- lyricPlayer: e,
74
- wrapperEl: i
75
- }), (n, t) => {
76
- var s, u;
77
- return v(), b(L, null, [
78
- B("div", E({
79
- ref_key: "wrapperRef",
80
- ref: i
81
- }, n.$attrs), null, 16),
82
- (s = e.value) != null && s.getBottomLineElement() && l.bottomLine ? (v(), h(k, {
83
- key: 0,
84
- to: (u = e.value) == null ? void 0 : u.getBottomLineElement()
85
- }, null, 8, ["to"])) : w("", !0)
86
- ], 64);
87
- };
88
- }
89
- }), F = /* @__PURE__ */ S({
90
- __name: "BackgroundRender",
91
- props: {
92
- albumImageUrl: {},
93
- fps: {},
94
- playing: { type: Boolean },
95
- flowSpeed: {},
96
- renderScale: {}
97
- },
98
- setup(p, { expose: d }) {
99
- const r = p, l = c(), i = c();
100
- return P(() => {
101
- if (l.value) {
102
- i.value = new R();
103
- const e = i.value.getElement();
104
- e.style.width = "100%", e.style.height = "100%", l.value.appendChild(e);
105
- }
106
- }), y(() => {
107
- i.value && i.value.dispose();
108
- }), a(() => {
109
- var e;
110
- r.albumImageUrl && ((e = i.value) == null || e.setAlbumImage(r.albumImageUrl));
111
- }), a(() => {
112
- var e;
113
- r.fps && ((e = i.value) == null || e.setFPS(r.fps));
114
- }), a(() => {
115
- var e, o;
116
- r.playing ? (e = i.value) == null || e.pause() : (o = i.value) == null || o.resume();
117
- }), a(() => {
118
- var e;
119
- r.flowSpeed && ((e = i.value) == null || e.setFlowSpeed(r.flowSpeed));
120
- }), a(() => {
121
- var e;
122
- r.renderScale && ((e = i.value) == null || e.setRenderScale(r.renderScale));
123
- }), d({
124
- bgRender: i,
125
- wrapperEl: l
126
- }), (e, o) => (v(), b("div", {
127
- ref_key: "wrapperRef",
128
- ref: l
129
- }, null, 512));
130
- }
131
- });
132
- export {
133
- F as BackgroundRender,
134
- C as LyricPlayer
135
- };
136
- //# sourceMappingURL=amll-vue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"amll-vue.mjs","sources":["../src/LyricPlayer.vue","../src/BackgroundRender.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" v-bind=\"$attrs\"></div>\n <Teleport v-if=\"playerRef?.getBottomLineElement() && props.bottomLine\" :to=\"playerRef?.getBottomLineElement()\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { LyricPlayer, type LyricLineMouseEvent } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerEmits, LyricPlayerRef } from \".\";\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst props = defineProps<LyricPlayerProps>();\nconst emits = defineEmits<LyricPlayerEmits>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nconst lineClickHandler = (e: Event) =>\n emits(\"line-click\", e as LyricLineMouseEvent);\nconst lineContextMenuHandler = (e: Event) =>\n emits(\"line-contextmenu\", e as LyricLineMouseEvent);\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n playerRef.value.addEventListener(\"line-click\", lineClickHandler);\n playerRef.value.addEventListener(\"line-contextmenu\", lineContextMenuHandler);\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\n playerRef.value.removeEventListener(\"line-click\", lineClickHandler);\n playerRef.value.removeEventListener(\"line-contextmenu\", lineContextMenuHandler);\n playerRef.value.dispose();\n }\n});\n\nwatchEffect((onCleanup) => {\n if (!props.disabled) {\n let canceled = false;\n let lastTime = -1;\n const onFrame = (time: number) => {\n if (canceled) return;\n if (lastTime === -1) {\n lastTime = time;\n }\n playerRef.value?.update(time - lastTime);\n lastTime = time;\n requestAnimationFrame(onFrame);\n };\n requestAnimationFrame(onFrame);\n onCleanup(() => {\n canceled = true;\n });\n }\n});\n\nwatchEffect(() => {\n if (props.alignAnchor !== undefined)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.hidePassedLines !== undefined)\n playerRef.value?.setHidePassedLines(props.hidePassedLines);\n});\n\nwatchEffect(() => {\n if (props.alignPosition !== undefined)\n playerRef.value?.setAlignPosition(props.alignPosition);\n});\n\nwatchEffect(() => {\n if (props.enableSpring !== undefined)\n playerRef.value?.setEnableSpring(props.enableSpring);\n else\n playerRef.value?.setEnableSpring(true);\n});\n\nwatchEffect(() => {\n if (props.enableBlur !== undefined)\n playerRef.value?.setEnableBlur(props.enableBlur);\n else\n playerRef.value?.setEnableBlur(true);\n});\n\nwatchEffect(() => {\n if (props.enableScale !== undefined)\n playerRef.value?.setEnableScale(props.enableScale);\n else\n playerRef.value?.setEnableScale(true);\n});\n\nwatchEffect(() => {\n if (props.lyricLines !== undefined)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime !== undefined)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams !== undefined)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams !== undefined)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams !== undefined)\n playerRef.value?.setLineScaleSpringParams(props.lineScaleSpringParams);\n});\n\ndefineExpose<LyricPlayerRef>({\n lyricPlayer: playerRef,\n wrapperEl: wrapperRef,\n});\n\n</script>","<template>\n <div ref=\"wrapperRef\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { BackgroundRender } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect } from \"vue\";\nimport type { BackgroundRenderProps, BackgroundRenderRef } from \".\";\n\nconst props = defineProps<BackgroundRenderProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst bgRenderRef = ref<BackgroundRender>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n bgRenderRef.value = new BackgroundRender();\n const el = bgRenderRef.value.getElement();\n el.style.width = \"100%\";\n el.style.height = \"100%\";\n wrapperRef.value.appendChild(el);\n }\n});\n\nonUnmounted(() => {\n if (bgRenderRef.value) {\n bgRenderRef.value.dispose();\n }\n});\n\nwatchEffect(() => {\n if (props.albumImageUrl)\n bgRenderRef.value?.setAlbumImage(props.albumImageUrl);\n});\n\nwatchEffect(() => {\n if (props.fps)\n bgRenderRef.value?.setFPS(props.fps);\n});\n\nwatchEffect(() => {\n if (props.playing)\n bgRenderRef.value?.pause();\n else\n bgRenderRef.value?.resume();\n});\n\nwatchEffect(() => {\n if (props.flowSpeed)\n bgRenderRef.value?.setFlowSpeed(props.flowSpeed);\n});\n\nwatchEffect(() => {\n if (props.renderScale)\n bgRenderRef.value?.setRenderScale(props.renderScale);\n});\n\ndefineExpose<BackgroundRenderRef>({\n bgRender: bgRenderRef,\n wrapperEl: wrapperRef,\n});\n\n</script>"],"names":["wrapperRef","ref","playerRef","lineClickHandler","e","emits","lineContextMenuHandler","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","props","canceled","lastTime","onFrame","time","_a","_b","__expose","bgRenderRef","BackgroundRender","el"],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,151 +0,0 @@
1
- import type { spring, LyricLine, LyricPlayer as CoreLyricPlayer, BackgroundRender as CoreBackgroundRender, LyricLineMouseEvent } from "@applemusic-like-lyrics/core";
2
- import type { Ref, VNode } from "vue";
3
- import LyricPlayer from "./LyricPlayer.vue";
4
- import BackgroundRender from "./BackgroundRender.vue";
5
- export { LyricPlayer, BackgroundRender };
6
- /**
7
- * 歌词播放组件的属性
8
- */
9
- export interface LyricPlayerProps {
10
- /**
11
- * 是否禁用歌词播放组件,默认为 `false`,歌词组件启用后将会开始逐帧更新歌词的动画效果,并对传入的其他参数变更做出反馈。
12
- *
13
- * 如果禁用了歌词组件动画,你也可以通过引用取得原始渲染组件实例,手动逐帧调用其 `update` 函数来更新动画效果。
14
- */
15
- disabled?: boolean;
16
- /**
17
- * 设置歌词行的对齐方式,如果为 `undefined` 则默认为 `center`
18
- *
19
- * - 设置成 `top` 的话将会向目标歌词行的顶部对齐
20
- * - 设置成 `bottom` 的话将会向目标歌词行的底部对齐
21
- * - 设置成 `center` 的话将会向目标歌词行的垂直中心对齐
22
- */
23
- alignAnchor?: "top" | "bottom" | "center";
24
- /**
25
- * 设置默认的歌词行对齐位置,相对于整个歌词播放组件的大小位置,如果为 `undefined`
26
- * 则默认为 `0.5`
27
- *
28
- * 可以设置一个 `[0.0-1.0]` 之间的任意数字,代表组件高度由上到下的比例位置
29
- */
30
- alignPosition?: number;
31
- /**
32
- * 设置是否使用物理弹簧算法实现歌词动画效果,默认启用
33
- *
34
- * 如果启用,则会通过弹簧算法实时处理歌词位置,但是需要性能足够强劲的电脑方可流畅运行
35
- *
36
- * 如果不启用,则会回退到基于 `transition` 的过渡效果,对低性能的机器比较友好,但是效果会比较单一
37
- */
38
- enableSpring?: boolean;
39
- /**
40
- * 设置是否启用歌词行的模糊效果,默认为 `true`
41
- */
42
- enableBlur?: boolean;
43
- /**
44
- * 设置是否使用物理弹簧算法实现歌词动画效果,默认启用
45
- *
46
- * 如果启用,则会通过弹簧算法实时处理歌词位置,但是需要性能足够强劲的电脑方可流畅运行
47
- *
48
- * 如果不启用,则会回退到基于 `transition` 的过渡效果,对低性能的机器比较友好,但是效果会比较单一
49
- */
50
- enableScale?: boolean;
51
- /**
52
- * 设置是否隐藏已经播放过的歌词行,默认不隐藏
53
- */
54
- hidePassedLines?: boolean;
55
- /**
56
- * 设置当前播放歌词,要注意传入后这个数组内的信息不得修改,否则会发生错误
57
- */
58
- lyricLines?: LyricLine[];
59
- /**
60
- * 设置当前播放进度,单位为毫秒且**必须是整数**,此时将会更新内部的歌词进度信息
61
- * 内部会根据调用间隔和播放进度自动决定如何滚动和显示歌词,所以这个的调用频率越快越准确越好
62
- */
63
- currentTime?: number;
64
- /**
65
- * 设置所有歌词行在横坐标上的弹簧属性,包括重量、弹力和阻力。
66
- *
67
- * @param params 需要设置的弹簧属性,提供的属性将会覆盖原来的属性,未提供的属性将会保持原样
68
- */
69
- linePosXSpringParams?: Partial<spring.SpringParams>;
70
- /**
71
- * 设置所有歌词行在​纵坐标上的弹簧属性,包括重量、弹力和阻力。
72
- *
73
- * @param params 需要设置的弹簧属性,提供的属性将会覆盖原来的属性,未提供的属性将会保持原样
74
- */
75
- linePosYSpringParams?: Partial<spring.SpringParams>;
76
- /**
77
- * 设置所有歌词行在​缩放大小上的弹簧属性,包括重量、弹力和阻力。
78
- *
79
- * @param params 需要设置的弹簧属性,提供的属性将会覆盖原来的属性,未提供的属性将会保持原样
80
- */
81
- lineScaleSpringParams?: Partial<spring.SpringParams>;
82
- /**
83
- * 在一个特殊的底栏元素内加入指定元素,默认是空白的,可以往内部添加任意元素
84
- *
85
- * 这个元素始终在歌词的底部,可以用于显示歌曲创作者等信息
86
- */
87
- bottomLine?: VNode[];
88
- }
89
- export interface LyricPlayerEmits {
90
- /**
91
- * 当某个歌词行被左键点击时触发的事件
92
- * @param line 歌词行的事件对象,可以访问到对应的歌词行信息和歌词行索引
93
- */
94
- (e: "line-click", line: LyricLineMouseEvent): void;
95
- /**
96
- * 当某个歌词行被右键点击时触发的事件
97
- * @param line 歌词行的事件对象,可以访问到对应的歌词行信息和歌词行索引
98
- */
99
- (e: "line-contextmenu", line: LyricLineMouseEvent): void;
100
- }
101
- /**
102
- * 歌词播放组件的引用
103
- */
104
- export interface LyricPlayerRef {
105
- /**
106
- * 歌词播放实例
107
- */
108
- lyricPlayer: Ref<CoreLyricPlayer | undefined>;
109
- /**
110
- * 将歌词播放实例的元素包裹起来的 DIV 元素实例
111
- */
112
- wrapperEl: Ref<HTMLDivElement | undefined>;
113
- }
114
- /**
115
- * 背景渲染组件的属性
116
- */
117
- export interface BackgroundRenderProps {
118
- /**
119
- * 设置背景专辑图片
120
- */
121
- albumImageUrl?: string;
122
- /**
123
- * 设置当前背景动画帧率,如果为 `undefined` 则默认为 `30`
124
- */
125
- fps?: number;
126
- /**
127
- * 设置当前播放状态,如果为 `undefined` 则默认为 `true`
128
- */
129
- playing?: boolean;
130
- /**
131
- * 设置当前动画流动速度,如果为 `undefined` 则默认为 `2`
132
- */
133
- flowSpeed?: number;
134
- /**
135
- * 设置当前渲染缩放比例,如果为 `undefined` 则默认为 `0.5`
136
- */
137
- renderScale?: number;
138
- }
139
- /**
140
- * 背景渲染组件的引用
141
- */
142
- export interface BackgroundRenderRef {
143
- /**
144
- * 背景渲染实例引用
145
- */
146
- bgRender?: Ref<CoreBackgroundRender | undefined>;
147
- /**
148
- * 将背景渲染实例的元素包裹起来的 DIV 元素实例
149
- */
150
- wrapperEl: Ref<HTMLDivElement | undefined>;
151
- }