@applemusic-like-lyrics/vue 0.0.10 → 0.0.11

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.
@@ -4,7 +4,10 @@ declare const _default: import("vue").DefineComponent<{
4
4
  type: import("vue").PropType<boolean>;
5
5
  };
6
6
  alignAnchor: {
7
- type: import("vue").PropType<number | "top" | "bottom">;
7
+ type: import("vue").PropType<"top" | "bottom" | "center">;
8
+ };
9
+ alignPosition: {
10
+ type: import("vue").PropType<number>;
8
11
  };
9
12
  enableSpring: {
10
13
  type: import("vue").PropType<boolean>;
@@ -27,6 +30,11 @@ declare const _default: import("vue").DefineComponent<{
27
30
  lineScaleSpringParams: {
28
31
  type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
29
32
  };
33
+ bottomLine: {
34
+ type: import("vue").PropType<import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
35
+ [key: string]: any;
36
+ }>[]>;
37
+ };
30
38
  }, {
31
39
  lyricPlayer: import("vue").Ref<LyricPlayer | undefined>;
32
40
  wrapperEl: import("vue").Ref<HTMLDivElement | undefined>;
@@ -35,7 +43,10 @@ declare const _default: import("vue").DefineComponent<{
35
43
  type: import("vue").PropType<boolean>;
36
44
  };
37
45
  alignAnchor: {
38
- type: import("vue").PropType<number | "top" | "bottom">;
46
+ type: import("vue").PropType<"top" | "bottom" | "center">;
47
+ };
48
+ alignPosition: {
49
+ type: import("vue").PropType<number>;
39
50
  };
40
51
  enableSpring: {
41
52
  type: import("vue").PropType<boolean>;
@@ -58,5 +69,10 @@ declare const _default: import("vue").DefineComponent<{
58
69
  lineScaleSpringParams: {
59
70
  type: import("vue").PropType<Partial<import("@applemusic-like-lyrics/core/dist/utils/spring").SpringParams>>;
60
71
  };
72
+ bottomLine: {
73
+ type: import("vue").PropType<import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
74
+ [key: string]: any;
75
+ }>[]>;
76
+ };
61
77
  }>>, {}, {}>;
62
78
  export default _default;
package/dist/amll-vue.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),u=require("@applemusic-like-lyrics/core"),m=a.defineComponent({__name:"LyricPlayer",props:{disabled:{type:Boolean},alignAnchor:{},enableSpring:{type:Boolean},enableBlur:{type:Boolean},lyricLines:{},currentTime:{},linePosXSpringParams:{},linePosYSpringParams:{},lineScaleSpringParams:{}},setup(c,{expose:s}){const n=c,l=a.ref(),r=a.ref();return a.onMounted(()=>{l.value&&(r.value=new u.LyricPlayer,l.value.appendChild(r.value.getElement()))}),a.onUnmounted(()=>{r.value&&r.value.dispose()}),a.watchEffect(e=>{if(!n.disabled){let t=!1,i=-1;const o=f=>{var p;t||(i===-1&&(i=f),(p=r.value)==null||p.update(f-i),i=f,requestAnimationFrame(o))};requestAnimationFrame(o),e(()=>{t=!0})}}),a.watchEffect(()=>{var e;n.alignAnchor&&((e=r.value)==null||e.setAlignAnchor(n.alignAnchor))}),a.watchEffect(()=>{var e;n.enableSpring&&((e=r.value)==null||e.setEnableSpring(n.enableSpring))}),a.watchEffect(()=>{var e;n.enableBlur&&((e=r.value)==null||e.setEnableBlur(n.enableBlur))}),a.watchEffect(()=>{var e;n.lyricLines&&((e=r.value)==null||e.setLyricLines(n.lyricLines))}),a.watchEffect(()=>{var e;n.currentTime&&((e=r.value)==null||e.setCurrentTime(n.currentTime))}),a.watchEffect(()=>{var e;n.linePosXSpringParams&&((e=r.value)==null||e.setLinePosXSpringParams(n.linePosXSpringParams))}),a.watchEffect(()=>{var e;n.linePosYSpringParams&&((e=r.value)==null||e.setLinePosYSpringParams(n.linePosYSpringParams))}),a.watchEffect(()=>{var e;n.lineScaleSpringParams&&((e=r.value)==null||e.setLineScaleSpringParams(n.lineScaleSpringParams))}),s({lyricPlayer:r,wrapperEl:l}),(e,t)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"wrapperRef",ref:l},null,512))}}),d=a.defineComponent({__name:"BackgroundRender",props:{albumImageUrl:{},fps:{},playing:{type:Boolean},flowSpeed:{},renderScale:{}},setup(c,{expose:s}){const n=c,l=a.ref(),r=a.ref();return a.onMounted(()=>{if(l.value){r.value=new u.BackgroundRender;const e=r.value.getElement();e.style.width="100%",e.style.height="100%",l.value.appendChild(e)}}),a.onUnmounted(()=>{r.value&&r.value.dispose()}),a.watchEffect(()=>{var e;n.albumImageUrl&&((e=r.value)==null||e.setAlbumImage(n.albumImageUrl))}),a.watchEffect(()=>{var e;n.fps&&((e=r.value)==null||e.setFPS(n.fps))}),a.watchEffect(()=>{var e,t;n.playing?(e=r.value)==null||e.pause():(t=r.value)==null||t.resume()}),a.watchEffect(()=>{var e;n.flowSpeed&&((e=r.value)==null||e.setFlowSpeed(n.flowSpeed))}),a.watchEffect(()=>{var e;n.renderScale&&((e=r.value)==null||e.setRenderScale(n.renderScale))}),s({bgRender:r,wrapperEl:l}),(e,t)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"wrapperRef",ref:l},null,512))}});exports.BackgroundRender=d;exports.LyricPlayer=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),p=require("@applemusic-like-lyrics/core"),m=a.defineComponent({inheritAttrs:!1,__name:"LyricPlayer",props:{disabled:{type:Boolean},alignAnchor:{},alignPosition:{},enableSpring:{type:Boolean},enableBlur:{type:Boolean},lyricLines:{},currentTime:{},linePosXSpringParams:{},linePosYSpringParams:{},lineScaleSpringParams:{},bottomLine:{}},setup(c,{expose:s}){const n=c,l=a.ref(),r=a.ref();return a.onMounted(()=>{l.value&&(r.value=new p.LyricPlayer,l.value.appendChild(r.value.getElement()))}),a.onUnmounted(()=>{r.value&&r.value.dispose()}),a.watchEffect(e=>{if(!n.disabled){let t=!1,i=-1;const o=f=>{var u;t||(i===-1&&(i=f),(u=r.value)==null||u.update(f-i),i=f,requestAnimationFrame(o))};requestAnimationFrame(o),e(()=>{t=!0})}}),a.watchEffect(()=>{var e;n.alignAnchor&&((e=r.value)==null||e.setAlignAnchor(n.alignAnchor))}),a.watchEffect(()=>{var e;n.alignPosition&&((e=r.value)==null||e.setAlignPosition(n.alignPosition))}),a.watchEffect(()=>{var e;n.enableSpring&&((e=r.value)==null||e.setEnableSpring(n.enableSpring))}),a.watchEffect(()=>{var e;n.enableBlur&&((e=r.value)==null||e.setEnableBlur(n.enableBlur))}),a.watchEffect(()=>{var e;n.lyricLines&&((e=r.value)==null||e.setLyricLines(n.lyricLines))}),a.watchEffect(()=>{var e;n.currentTime&&((e=r.value)==null||e.setCurrentTime(n.currentTime))}),a.watchEffect(()=>{var e;n.linePosXSpringParams&&((e=r.value)==null||e.setLinePosXSpringParams(n.linePosXSpringParams))}),a.watchEffect(()=>{var e;n.linePosYSpringParams&&((e=r.value)==null||e.setLinePosYSpringParams(n.linePosYSpringParams))}),a.watchEffect(()=>{var e;n.lineScaleSpringParams&&((e=r.value)==null||e.setLineScaleSpringParams(n.lineScaleSpringParams))}),s({lyricPlayer:r,wrapperEl:l}),(e,t)=>{var i,o;return a.openBlock(),a.createElementBlock(a.Fragment,null,[a.createElementVNode("div",a.mergeProps({ref_key:"wrapperRef",ref:l},e.$attrs),null,16),(i=r.value)!=null&&i.getBottomLineElement()&&n.bottomLine?(a.openBlock(),a.createBlock(a.Teleport,{key:0,to:(o=r.value)==null?void 0:o.getBottomLineElement()},null,8,["to"])):a.createCommentVNode("",!0)],64)}}}),g=a.defineComponent({__name:"BackgroundRender",props:{albumImageUrl:{},fps:{},playing:{type:Boolean},flowSpeed:{},renderScale:{}},setup(c,{expose:s}){const n=c,l=a.ref(),r=a.ref();return a.onMounted(()=>{if(l.value){r.value=new p.BackgroundRender;const e=r.value.getElement();e.style.width="100%",e.style.height="100%",l.value.appendChild(e)}}),a.onUnmounted(()=>{r.value&&r.value.dispose()}),a.watchEffect(()=>{var e;n.albumImageUrl&&((e=r.value)==null||e.setAlbumImage(n.albumImageUrl))}),a.watchEffect(()=>{var e;n.fps&&((e=r.value)==null||e.setFPS(n.fps))}),a.watchEffect(()=>{var e,t;n.playing?(e=r.value)==null||e.pause():(t=r.value)==null||t.resume()}),a.watchEffect(()=>{var e;n.flowSpeed&&((e=r.value)==null||e.setFlowSpeed(n.flowSpeed))}),a.watchEffect(()=>{var e;n.renderScale&&((e=r.value)==null||e.setRenderScale(n.renderScale))}),s({bgRender:r,wrapperEl:l}),(e,t)=>(a.openBlock(),a.createElementBlock("div",{ref_key:"wrapperRef",ref:l},null,512))}});exports.BackgroundRender=g;exports.LyricPlayer=m;
2
2
  //# sourceMappingURL=amll-vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"amll-vue.js","sources":["../src/LyricPlayer.vue","../src/BackgroundRender.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { LyricPlayer } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect, toRaw } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerRef } from \".\";\n\nconst props = defineProps<LyricPlayerProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\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)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.enableSpring)\n playerRef.value?.setEnableSpring(props.enableSpring);\n});\n\nwatchEffect(() => {\n if (props.enableBlur)\n playerRef.value?.setEnableBlur(props.enableBlur);\n});\n\nwatchEffect(() => {\n if (props.lyricLines)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams)\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","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","props","canceled","lastTime","onFrame","time","_a","__expose","bgRenderRef","BackgroundRender","el","_b"],"mappings":"oaAUMA,EAAaC,EAAAA,MACbC,EAAYD,EAAAA,MAElBE,OAAAA,EAAAA,UAAU,IAAM,CACRH,EAAW,QACDE,EAAA,MAAQ,IAAIE,EAAAA,YACtBJ,EAAW,MAAM,YAAYE,EAAU,MAAM,YAAY,EAC7D,CACH,EAEDG,EAAAA,YAAY,IAAM,CACVH,EAAU,OACVA,EAAU,MAAM,SACpB,CACH,EAEDI,EAAA,YAAaC,GAAc,CACnB,GAAA,CAACC,EAAM,SAAU,CACjB,IAAIC,EAAW,GACXC,EAAW,GACT,MAAAC,EAAWC,GAAiB,OAC1BH,IACAC,IAAa,KACFA,EAAAE,IAELC,EAAAX,EAAA,QAAA,MAAAW,EAAO,OAAOD,EAAOF,GACpBA,EAAAE,EACX,sBAAsBD,CAAO,EAAA,EAEjC,sBAAsBA,CAAO,EAC7BJ,EAAU,IAAM,CACDE,EAAA,EAAA,CACd,CACL,CAAA,CACH,EAEDH,EAAAA,YAAY,IAAM,OACVE,EAAM,eACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,eAAeL,EAAM,aAAW,CACxD,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,gBACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,gBAAgBL,EAAM,cAAY,CAC1D,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,cACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,cAAcL,EAAM,YAAU,CACtD,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,cACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,cAAcL,EAAM,YAAU,CACtD,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,eACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,eAAeL,EAAM,aAAW,CACxD,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,wBACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,wBAAwBL,EAAM,sBAAoB,CAC1E,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,wBACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,wBAAwBL,EAAM,sBAAoB,CAC1E,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,yBACIK,EAAAX,EAAA,QAAA,MAAAW,EAAO,yBAAyBL,EAAM,uBAAqB,CAC5E,EAE4BM,EAAA,CACzB,YAAaZ,EACb,UAAWF,CAAA,CACd,8PC/EKA,EAAaC,EAAAA,MACbc,EAAcd,EAAAA,MAEpBE,OAAAA,EAAAA,UAAU,IAAM,CACZ,GAAIH,EAAW,MAAO,CACNe,EAAA,MAAQ,IAAIC,EAAAA,iBAClB,MAAAC,EAAKF,EAAY,MAAM,WAAW,EACxCE,EAAG,MAAM,MAAQ,OACjBA,EAAG,MAAM,OAAS,OACPjB,EAAA,MAAM,YAAYiB,CAAE,CACnC,CAAA,CACH,EAEDZ,EAAAA,YAAY,IAAM,CACVU,EAAY,OACZA,EAAY,MAAM,SACtB,CACH,EAEDT,EAAAA,YAAY,IAAM,OACVE,EAAM,iBACMK,EAAAE,EAAA,QAAA,MAAAF,EAAO,cAAcL,EAAM,eAAa,CAC3D,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,OACMK,EAAAE,EAAA,QAAA,MAAAF,EAAO,OAAOL,EAAM,KAAG,CAC1C,EAEDF,EAAAA,YAAY,IAAM,SACVE,EAAM,SACNK,EAAAE,EAAY,QAAZ,MAAAF,EAAmB,SAEnBK,EAAAH,EAAY,QAAZ,MAAAG,EAAmB,QAAO,CACjC,EAEDZ,EAAAA,YAAY,IAAM,OACVE,EAAM,aACMK,EAAAE,EAAA,QAAA,MAAAF,EAAO,aAAaL,EAAM,WAAS,CACtD,EAEDF,EAAAA,YAAY,IAAM,OACVE,EAAM,eACMK,EAAAE,EAAA,QAAA,MAAAF,EAAO,eAAeL,EAAM,aAAW,CAC1D,EAEiCM,EAAA,CAC9B,SAAUC,EACV,UAAWf,CAAA,CACd"}
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 } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect, toRaw } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerRef } from \".\";\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst props = defineProps<LyricPlayerProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\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)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.alignPosition)\n playerRef.value?.setAlignPosition(props.alignPosition);\n});\n\nwatchEffect(() => {\n if (props.enableSpring)\n playerRef.value?.setEnableSpring(props.enableSpring);\n});\n\nwatchEffect(() => {\n if (props.enableBlur)\n playerRef.value?.setEnableBlur(props.enableBlur);\n});\n\nwatchEffect(() => {\n if (props.lyricLines)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams)\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","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","props","canceled","lastTime","onFrame","time","_a","__expose","bgRenderRef","BackgroundRender","el","_b"],"mappings":"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"}
package/dist/amll-vue.mjs CHANGED
@@ -1,68 +1,83 @@
1
- import { defineComponent as m, ref as p, onMounted as d, onUnmounted as g, watchEffect as n, openBlock as v, createElementBlock as S } from "vue";
2
- import { LyricPlayer as P, BackgroundRender as y } from "@applemusic-like-lyrics/core";
3
- const _ = /* @__PURE__ */ m({
1
+ import { defineComponent as g, ref as s, onMounted as d, onUnmounted as v, watchEffect as r, openBlock as m, createElementBlock as P, Fragment as S, createElementVNode as y, mergeProps as b, createBlock as B, Teleport as L, createCommentVNode as w } from "vue";
2
+ import { LyricPlayer as h, BackgroundRender as _ } from "@applemusic-like-lyrics/core";
3
+ const A = /* @__PURE__ */ g({
4
+ inheritAttrs: !1,
4
5
  __name: "LyricPlayer",
5
6
  props: {
6
7
  disabled: { type: Boolean },
7
8
  alignAnchor: {},
9
+ alignPosition: {},
8
10
  enableSpring: { type: Boolean },
9
11
  enableBlur: { type: Boolean },
10
12
  lyricLines: {},
11
13
  currentTime: {},
12
14
  linePosXSpringParams: {},
13
15
  linePosYSpringParams: {},
14
- lineScaleSpringParams: {}
16
+ lineScaleSpringParams: {},
17
+ bottomLine: {}
15
18
  },
16
- setup(t, { expose: o }) {
17
- const a = t, l = p(), r = p();
19
+ setup(p, { expose: u }) {
20
+ const a = p, l = s(), n = s();
18
21
  return d(() => {
19
- l.value && (r.value = new P(), l.value.appendChild(r.value.getElement()));
20
- }), g(() => {
21
- r.value && r.value.dispose();
22
- }), n((e) => {
22
+ l.value && (n.value = new h(), l.value.appendChild(n.value.getElement()));
23
+ }), v(() => {
24
+ n.value && n.value.dispose();
25
+ }), r((e) => {
23
26
  if (!a.disabled) {
24
- let i = !1, s = -1;
25
- const c = (u) => {
27
+ let i = !1, t = -1;
28
+ const o = (c) => {
26
29
  var f;
27
- i || (s === -1 && (s = u), (f = r.value) == null || f.update(u - s), s = u, requestAnimationFrame(c));
30
+ i || (t === -1 && (t = c), (f = n.value) == null || f.update(c - t), t = c, requestAnimationFrame(o));
28
31
  };
29
- requestAnimationFrame(c), e(() => {
32
+ requestAnimationFrame(o), e(() => {
30
33
  i = !0;
31
34
  });
32
35
  }
33
- }), n(() => {
36
+ }), r(() => {
34
37
  var e;
35
- a.alignAnchor && ((e = r.value) == null || e.setAlignAnchor(a.alignAnchor));
36
- }), n(() => {
38
+ a.alignAnchor && ((e = n.value) == null || e.setAlignAnchor(a.alignAnchor));
39
+ }), r(() => {
37
40
  var e;
38
- a.enableSpring && ((e = r.value) == null || e.setEnableSpring(a.enableSpring));
39
- }), n(() => {
41
+ a.alignPosition && ((e = n.value) == null || e.setAlignPosition(a.alignPosition));
42
+ }), r(() => {
40
43
  var e;
41
- a.enableBlur && ((e = r.value) == null || e.setEnableBlur(a.enableBlur));
42
- }), n(() => {
44
+ a.enableSpring && ((e = n.value) == null || e.setEnableSpring(a.enableSpring));
45
+ }), r(() => {
43
46
  var e;
44
- a.lyricLines && ((e = r.value) == null || e.setLyricLines(a.lyricLines));
45
- }), n(() => {
47
+ a.enableBlur && ((e = n.value) == null || e.setEnableBlur(a.enableBlur));
48
+ }), r(() => {
46
49
  var e;
47
- a.currentTime && ((e = r.value) == null || e.setCurrentTime(a.currentTime));
48
- }), n(() => {
50
+ a.lyricLines && ((e = n.value) == null || e.setLyricLines(a.lyricLines));
51
+ }), r(() => {
49
52
  var e;
50
- a.linePosXSpringParams && ((e = r.value) == null || e.setLinePosXSpringParams(a.linePosXSpringParams));
51
- }), n(() => {
53
+ a.currentTime && ((e = n.value) == null || e.setCurrentTime(a.currentTime));
54
+ }), r(() => {
52
55
  var e;
53
- a.linePosYSpringParams && ((e = r.value) == null || e.setLinePosYSpringParams(a.linePosYSpringParams));
54
- }), n(() => {
56
+ a.linePosXSpringParams && ((e = n.value) == null || e.setLinePosXSpringParams(a.linePosXSpringParams));
57
+ }), r(() => {
55
58
  var e;
56
- a.lineScaleSpringParams && ((e = r.value) == null || e.setLineScaleSpringParams(a.lineScaleSpringParams));
57
- }), o({
58
- lyricPlayer: r,
59
+ a.linePosYSpringParams && ((e = n.value) == null || e.setLinePosYSpringParams(a.linePosYSpringParams));
60
+ }), r(() => {
61
+ var e;
62
+ a.lineScaleSpringParams && ((e = n.value) == null || e.setLineScaleSpringParams(a.lineScaleSpringParams));
63
+ }), u({
64
+ lyricPlayer: n,
59
65
  wrapperEl: l
60
- }), (e, i) => (v(), S("div", {
61
- ref_key: "wrapperRef",
62
- ref: l
63
- }, null, 512));
66
+ }), (e, i) => {
67
+ var t, o;
68
+ return m(), P(S, null, [
69
+ y("div", b({
70
+ ref_key: "wrapperRef",
71
+ ref: l
72
+ }, e.$attrs), null, 16),
73
+ (t = n.value) != null && t.getBottomLineElement() && a.bottomLine ? (m(), B(L, {
74
+ key: 0,
75
+ to: (o = n.value) == null ? void 0 : o.getBottomLineElement()
76
+ }, null, 8, ["to"])) : w("", !0)
77
+ ], 64);
78
+ };
64
79
  }
65
- }), B = /* @__PURE__ */ m({
80
+ }), k = /* @__PURE__ */ g({
66
81
  __name: "BackgroundRender",
67
82
  props: {
68
83
  albumImageUrl: {},
@@ -71,42 +86,42 @@ const _ = /* @__PURE__ */ m({
71
86
  flowSpeed: {},
72
87
  renderScale: {}
73
88
  },
74
- setup(t, { expose: o }) {
75
- const a = t, l = p(), r = p();
89
+ setup(p, { expose: u }) {
90
+ const a = p, l = s(), n = s();
76
91
  return d(() => {
77
92
  if (l.value) {
78
- r.value = new y();
79
- const e = r.value.getElement();
93
+ n.value = new _();
94
+ const e = n.value.getElement();
80
95
  e.style.width = "100%", e.style.height = "100%", l.value.appendChild(e);
81
96
  }
82
- }), g(() => {
83
- r.value && r.value.dispose();
84
- }), n(() => {
97
+ }), v(() => {
98
+ n.value && n.value.dispose();
99
+ }), r(() => {
85
100
  var e;
86
- a.albumImageUrl && ((e = r.value) == null || e.setAlbumImage(a.albumImageUrl));
87
- }), n(() => {
101
+ a.albumImageUrl && ((e = n.value) == null || e.setAlbumImage(a.albumImageUrl));
102
+ }), r(() => {
88
103
  var e;
89
- a.fps && ((e = r.value) == null || e.setFPS(a.fps));
90
- }), n(() => {
104
+ a.fps && ((e = n.value) == null || e.setFPS(a.fps));
105
+ }), r(() => {
91
106
  var e, i;
92
- a.playing ? (e = r.value) == null || e.pause() : (i = r.value) == null || i.resume();
93
- }), n(() => {
107
+ a.playing ? (e = n.value) == null || e.pause() : (i = n.value) == null || i.resume();
108
+ }), r(() => {
94
109
  var e;
95
- a.flowSpeed && ((e = r.value) == null || e.setFlowSpeed(a.flowSpeed));
96
- }), n(() => {
110
+ a.flowSpeed && ((e = n.value) == null || e.setFlowSpeed(a.flowSpeed));
111
+ }), r(() => {
97
112
  var e;
98
- a.renderScale && ((e = r.value) == null || e.setRenderScale(a.renderScale));
99
- }), o({
100
- bgRender: r,
113
+ a.renderScale && ((e = n.value) == null || e.setRenderScale(a.renderScale));
114
+ }), u({
115
+ bgRender: n,
101
116
  wrapperEl: l
102
- }), (e, i) => (v(), S("div", {
117
+ }), (e, i) => (m(), P("div", {
103
118
  ref_key: "wrapperRef",
104
119
  ref: l
105
120
  }, null, 512));
106
121
  }
107
122
  });
108
123
  export {
109
- B as BackgroundRender,
110
- _ as LyricPlayer
124
+ k as BackgroundRender,
125
+ A as LyricPlayer
111
126
  };
112
127
  //# sourceMappingURL=amll-vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"amll-vue.mjs","sources":["../src/LyricPlayer.vue","../src/BackgroundRender.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\"></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { LyricPlayer } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect, toRaw } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerRef } from \".\";\n\nconst props = defineProps<LyricPlayerProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\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)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.enableSpring)\n playerRef.value?.setEnableSpring(props.enableSpring);\n});\n\nwatchEffect(() => {\n if (props.enableBlur)\n playerRef.value?.setEnableBlur(props.enableBlur);\n});\n\nwatchEffect(() => {\n if (props.lyricLines)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams)\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","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","props","canceled","lastTime","onFrame","time","_a","__expose","bgRenderRef","BackgroundRender","el","_b"],"mappings":";;;;;;;;;;;;;;;;iBAUMA,IAAaC,KACbC,IAAYD;AAElB,WAAAE,EAAU,MAAM;AACZ,MAAIH,EAAW,UACDE,EAAA,QAAQ,IAAIE,KACtBJ,EAAW,MAAM,YAAYE,EAAU,MAAM,YAAY;AAAA,IAC7D,CACH,GAEDG,EAAY,MAAM;AACd,MAAIH,EAAU,SACVA,EAAU,MAAM;IACpB,CACH,GAEDI,EAAY,CAACC,MAAc;AACnB,UAAA,CAACC,EAAM,UAAU;AACjB,YAAIC,IAAW,IACXC,IAAW;AACT,cAAAC,IAAU,CAACC,MAAiB;;AAC1B,UAAAH,MACAC,MAAa,OACFA,IAAAE,KAELC,IAAAX,EAAA,UAAA,QAAAW,EAAO,OAAOD,IAAOF,IACpBA,IAAAE,GACX,sBAAsBD,CAAO;AAAA,QAAA;AAEjC,8BAAsBA,CAAO,GAC7BJ,EAAU,MAAM;AACD,UAAAE,IAAA;AAAA,QAAA,CACd;AAAA,MACL;AAAA,IAAA,CACH,GAEDH,EAAY,MAAM;;AACd,MAAIE,EAAM,iBACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,eAAeL,EAAM;AAAA,IAAW,CACxD,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,kBACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,gBAAgBL,EAAM;AAAA,IAAY,CAC1D,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,gBACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,cAAcL,EAAM;AAAA,IAAU,CACtD,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,gBACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,cAAcL,EAAM;AAAA,IAAU,CACtD,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,iBACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,eAAeL,EAAM;AAAA,IAAW,CACxD,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,0BACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,wBAAwBL,EAAM;AAAA,IAAoB,CAC1E,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,0BACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,wBAAwBL,EAAM;AAAA,IAAoB,CAC1E,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,2BACIK,IAAAX,EAAA,UAAA,QAAAW,EAAO,yBAAyBL,EAAM;AAAA,IAAqB,CAC5E,GAE4BM,EAAA;AAAA,MACzB,aAAaZ;AAAA,MACb,WAAWF;AAAA,IAAA,CACd;;;;;;;;;;;;;;;iBC/EKA,IAAaC,KACbc,IAAcd;AAEpB,WAAAE,EAAU,MAAM;AACZ,UAAIH,EAAW,OAAO;AACN,QAAAe,EAAA,QAAQ,IAAIC;AAClB,cAAAC,IAAKF,EAAY,MAAM,WAAW;AACxC,QAAAE,EAAG,MAAM,QAAQ,QACjBA,EAAG,MAAM,SAAS,QACPjB,EAAA,MAAM,YAAYiB,CAAE;AAAA,MACnC;AAAA,IAAA,CACH,GAEDZ,EAAY,MAAM;AACd,MAAIU,EAAY,SACZA,EAAY,MAAM;IACtB,CACH,GAEDT,EAAY,MAAM;;AACd,MAAIE,EAAM,mBACMK,IAAAE,EAAA,UAAA,QAAAF,EAAO,cAAcL,EAAM;AAAA,IAAa,CAC3D,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,SACMK,IAAAE,EAAA,UAAA,QAAAF,EAAO,OAAOL,EAAM;AAAA,IAAG,CAC1C,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,WACNK,IAAAE,EAAY,UAAZ,QAAAF,EAAmB,WAEnBK,IAAAH,EAAY,UAAZ,QAAAG,EAAmB;AAAA,IAAO,CACjC,GAEDZ,EAAY,MAAM;;AACd,MAAIE,EAAM,eACMK,IAAAE,EAAA,UAAA,QAAAF,EAAO,aAAaL,EAAM;AAAA,IAAS,CACtD,GAEDF,EAAY,MAAM;;AACd,MAAIE,EAAM,iBACMK,IAAAE,EAAA,UAAA,QAAAF,EAAO,eAAeL,EAAM;AAAA,IAAW,CAC1D,GAEiCM,EAAA;AAAA,MAC9B,UAAUC;AAAA,MACV,WAAWf;AAAA,IAAA,CACd;;;;;;"}
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 } from \"@applemusic-like-lyrics/core\";\nimport { onMounted, onUnmounted, ref, watchEffect, toRaw } from \"vue\";\nimport type { LyricPlayerProps, LyricPlayerRef } from \".\";\n\ndefineOptions({\n inheritAttrs: false,\n});\n\nconst props = defineProps<LyricPlayerProps>();\nconst wrapperRef = ref<HTMLDivElement>();\nconst playerRef = ref<LyricPlayer>();\n\nonMounted(() => {\n if (wrapperRef.value) {\n playerRef.value = new LyricPlayer();\n wrapperRef.value.appendChild(playerRef.value.getElement());\n }\n});\n\nonUnmounted(() => {\n if (playerRef.value) {\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)\n playerRef.value?.setAlignAnchor(props.alignAnchor);\n});\n\nwatchEffect(() => {\n if (props.alignPosition)\n playerRef.value?.setAlignPosition(props.alignPosition);\n});\n\nwatchEffect(() => {\n if (props.enableSpring)\n playerRef.value?.setEnableSpring(props.enableSpring);\n});\n\nwatchEffect(() => {\n if (props.enableBlur)\n playerRef.value?.setEnableBlur(props.enableBlur);\n});\n\nwatchEffect(() => {\n if (props.lyricLines)\n playerRef.value?.setLyricLines(props.lyricLines);\n});\n\nwatchEffect(() => {\n if (props.currentTime)\n playerRef.value?.setCurrentTime(props.currentTime);\n});\n\nwatchEffect(() => {\n if (props.linePosXSpringParams)\n playerRef.value?.setLinePosXSpringParams(props.linePosXSpringParams);\n});\n\nwatchEffect(() => {\n if (props.linePosYSpringParams)\n playerRef.value?.setLinePosYSpringParams(props.linePosYSpringParams);\n});\n\nwatchEffect(() => {\n if (props.lineScaleSpringParams)\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","onMounted","LyricPlayer","onUnmounted","watchEffect","onCleanup","props","canceled","lastTime","onFrame","time","_a","__expose","bgRenderRef","BackgroundRender","el","_b"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { spring, LyricLine, LyricPlayer as CoreLyricPlayer, BackgroundRender as CoreBackgroundRender } from "@applemusic-like-lyrics/core";
2
- import type { Ref } from "vue";
2
+ import type { Ref, VNode } from "vue";
3
3
  import LyricPlayer from "./LyricPlayer.vue";
4
4
  import BackgroundRender from "./BackgroundRender.vue";
5
5
  export { LyricPlayer, BackgroundRender };
@@ -14,13 +14,20 @@ export interface LyricPlayerProps {
14
14
  */
15
15
  disabled?: boolean;
16
16
  /**
17
- * 设置歌词行的对齐方式,如果为 `undefined` 则默认为 `top`
17
+ * 设置歌词行的对齐方式,如果为 `undefined` 则默认为 `center`
18
18
  *
19
- * - 设置成 `top` 的话歌词将会向组件顶部对齐
20
- * - 设置成 `bottom` 的话歌词将会向组件底部对齐
21
- * - 设置成 [0.0-1.0] 之间任意数字的话则会根据当前组件高度从顶部向下位移为对齐位置垂直居中对齐
19
+ * - 设置成 `top` 的话将会向目标歌词行的顶部对齐
20
+ * - 设置成 `bottom` 的话将会向目标歌词行的底部对齐
21
+ * - 设置成 `center` 的话将会向目标歌词行的垂直中心对齐
22
22
  */
23
- alignAnchor?: "top" | "bottom" | number;
23
+ alignAnchor?: "top" | "bottom" | "center";
24
+ /**
25
+ * 设置默认的歌词行对齐位置,相对于整个歌词播放组件的大小位置,如果为 `undefined`
26
+ * 则默认为 `0.5`
27
+ *
28
+ * 可以设置一个 `[0.0-1.0]` 之间的任意数字,代表组件高度由上到下的比例位置
29
+ */
30
+ alignPosition?: number;
24
31
  /**
25
32
  * 设置是否使用物理弹簧算法实现歌词动画效果,默认启用
26
33
  *
@@ -60,6 +67,12 @@ export interface LyricPlayerProps {
60
67
  * @param params 需要设置的弹簧属性,提供的属性将会覆盖原来的属性,未提供的属性将会保持原样
61
68
  */
62
69
  lineScaleSpringParams?: Partial<spring.SpringParams>;
70
+ /**
71
+ * 在一个特殊的底栏元素内加入指定元素,默认是空白的,可以往内部添加任意元素
72
+ *
73
+ * 这个元素始终在歌词的底部,可以用于显示歌曲创作者等信息
74
+ */
75
+ bottomLine?: VNode[];
63
76
  }
64
77
  /**
65
78
  * 歌词播放组件的引用
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@applemusic-like-lyrics/vue",
3
3
  "packageManager": "yarn@3.6.1",
4
- "version": "0.0.10",
4
+ "version": "0.0.11",
5
5
  "description": "AMLL 组件库的 Vue 绑定",
6
6
  "repository": {
7
7
  "url": "https://github.com/Steve-xmh/applemusic-like-lyrics.git",
@@ -27,17 +27,26 @@
27
27
  }
28
28
  },
29
29
  "dependencies": {
30
- "@applemusic-like-lyrics/core": "^0.0.10"
30
+ "@applemusic-like-lyrics/core": "^0.0.11"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "vue": "*"
34
34
  },
35
35
  "devDependencies": {
36
+ "@pixi/app": "^7.2.4",
37
+ "@pixi/core": "^7.2.4",
38
+ "@pixi/display": "^7.2.4",
39
+ "@pixi/filter-blur": "^7.2.4",
40
+ "@pixi/filter-color-matrix": "^7.2.4",
41
+ "@pixi/sprite": "^7.2.4",
36
42
  "@vitejs/plugin-vue": "^4.2.3",
37
43
  "@vue/tsconfig": "^0.4.0",
44
+ "jss": "^10.10.0",
45
+ "jss-preset-default": "^10.10.0",
38
46
  "rome": "^12.1.3",
39
47
  "typedoc": "^0.24.8",
40
48
  "typedoc-plugin-markdown": "^3.15.3",
49
+ "typescript": "^5.1.6",
41
50
  "vite": "^4.4.7",
42
51
  "vite-plugin-dts": "^3.3.1",
43
52
  "vue": "^3.3.4"