@gui-chat-plugin/music 1.0.0 → 1.2.0

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.
package/dist/style.css CHANGED
@@ -1,3 +1,3 @@
1
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
2
2
  @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-600:oklch(55.8% .288 302.321);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.end{inset-inline-end:var(--spacing)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.contents{display:contents}.flex{display:flex}.h-\[600px\]{height:600px}.h-full{height:100%}.min-h-full{min-height:100%}.w-20{width:calc(var(--spacing) * 20)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[200px\]{max-width:200px}.flex-1{flex:1}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-600{border-color:var(--color-gray-600)}.border-indigo-200{border-color:var(--color-indigo-200)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.text-gray-200{color:var(--color-gray-200)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-indigo-700{color:var(--color-indigo-700)}.text-purple-600{color:var(--color-purple-600)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.hover\:bg-indigo-200:hover{background-color:var(--color-indigo-200)}}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-300:disabled{background-color:var(--color-gray-300)}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
3
3
  /*$vite$:1*/
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./samples-msJuWhn1.cjs`);let l=require(`vue`),u=require(`opensheetmusicdisplay`),d=require(`@isamu/osmd-audio-player`);d=s(d);let f=require(`jspdf`),p=require(`svg2pdf.js`);var m={class:`w-full h-full overflow-y-auto`},h={class:`min-h-full flex flex-col p-4`},g={key:0,class:`mb-4 text-center`},_={class:`text-2xl font-bold text-gray-900`},v={class:`mb-4 flex gap-2 items-center justify-center`},y=[`disabled`],b={class:`text-xl`},x=[`disabled`],S={class:`flex items-center gap-2`},C=(0,l.defineComponent)({__name:`View`,props:{selectedResult:{},sendTextMessage:{type:Function}},setup(e){let t=e,n=(0,l.ref)(null),r=null,i=null,a=(0,l.ref)(!1),o=(0,l.ref)(!1),s=(0,l.ref)(!1),c=(0,l.ref)(200),C=(0,l.ref)(!1),w=(0,l.ref)(!1),T=async()=>{if(!(!n.value||!t.selectedResult.data?.musicXML))try{n.value.innerHTML=``,a.value=!1,o.value=!1,r=new u.OpenSheetMusicDisplay(n.value,{autoResize:!0,backend:`svg`,drawTitle:!1,followCursor:!0}),await r.load(t.selectedResult.data.musicXML),await r.render(),i||=new d.default,await i.loadScore(r);let e=r.Sheet?.SourceMeasures?.[0]?.TempoExpressions;if(e&&e.length>0){let t=e[0],n=t.TempoInBpm||t.tempoInBpm;n&&(c.value=n)}i.on(`iteration`,e=>{!C.value&&e&&e.length===0&&(i.stop(),o.value=!1)}),a.value=!0}catch(e){console.error(`Error rendering music:`,e),n.value&&(n.value.innerHTML=`<div class="text-red-500">Error rendering sheet music: ${e instanceof Error?e.message:`Unknown error`}</div>`)}},E=async()=>{if(!n.value||!a.value)return;let e=n.value.querySelector(`svg`);if(e){s.value=!0;try{let n=e.viewBox.baseVal.width||e.clientWidth,r=e.viewBox.baseVal.height||e.clientHeight,i=new f.jsPDF({orientation:n>r?`landscape`:`portrait`,unit:`pt`,format:`a4`}),a=i.internal.pageSize.getWidth(),o=i.internal.pageSize.getHeight(),s=Math.min(a/n,o/r),c=n*s,l=r*s;await(0,p.svg2pdf)(e,i,{x:(a-c)/2,y:(o-l)/2,width:c,height:l});let u=`${(t.selectedResult.title||`sheet-music`).replace(/[^a-zA-Z0-9]/g,`_`)}.pdf`;i.save(u)}catch(e){console.error(`Error exporting PDF:`,e)}finally{s.value=!1}}},D=async()=>{!i||!a.value||(i.setBpm(Math.max(30,Math.min(300,c.value))),i.metronomeVolume=w.value?.7:0,i.isLooping=C.value,await i.play(),o.value=!0)},O=()=>{i&&(i.stop(),o.value=!1)};return(0,l.watch)(c,()=>{i&&i.setBpm(Math.max(30,Math.min(300,c.value)))}),(0,l.watch)(C,()=>{i&&(i.isLooping=C.value)}),(0,l.watch)(w,()=>{i&&(i.metronomeVolume=w.value?.7:0)}),(0,l.onMounted)(()=>{T()}),(0,l.watch)(()=>t.selectedResult.data?.musicXML,()=>{T()}),(0,l.onUnmounted)(()=>{i&&i.stop()}),(t,r)=>((0,l.openBlock)(),(0,l.createElementBlock)(`div`,m,[(0,l.createElementVNode)(`div`,h,[e.selectedResult.title?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,g,[(0,l.createElementVNode)(`h2`,_,(0,l.toDisplayString)(e.selectedResult.title),1)])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`div`,v,[(0,l.createElementVNode)(`button`,{onClick:r[0]||=e=>o.value?O():D(),disabled:!a.value,class:(0,l.normalizeClass)([`px-4 py-2 text-white rounded disabled:bg-gray-300 disabled:cursor-not-allowed flex items-center gap-1`,o.value?`bg-red-500`:`bg-blue-500`])},[(0,l.createElementVNode)(`span`,b,(0,l.toDisplayString)(o.value?`⏹`:`▶`),1),(0,l.createTextVNode)(` `+(0,l.toDisplayString)(o.value?`Stop`:`Play`),1)],10,y),(0,l.createElementVNode)(`button`,{onClick:E,disabled:!a.value||s.value,class:`px-4 py-2 text-white bg-green-600 rounded disabled:bg-gray-300 disabled:cursor-not-allowed flex items-center gap-1`},[r[2]||=(0,l.createElementVNode)(`span`,{class:`text-xl`},`⬇`,-1),(0,l.createTextVNode)(` `+(0,l.toDisplayString)(s.value?`Exporting...`:`PDF`),1)],8,x),(0,l.createElementVNode)(`label`,S,[r[3]||=(0,l.createTextVNode)(` Tempo `,-1),(0,l.withDirectives)((0,l.createElementVNode)(`input`,{"onUpdate:modelValue":r[1]||=e=>c.value=e,type:`number`,min:`30`,max:`300`,class:`w-20 px-2 py-1 border border-gray-300 rounded`},null,512),[[l.vModelText,c.value,void 0,{number:!0}]]),r[4]||=(0,l.createTextVNode)(` bpm `,-1)])]),(0,l.createElementVNode)(`div`,{ref_key:`musicContainer`,ref:n,class:`flex-1 flex items-center justify-center bg-white rounded-lg p-4`},null,512)])]))}}),w={class:`text-center p-4 bg-purple-50 rounded`},T={key:0,class:`text-xs text-gray-600 mt-1 truncate`},E=(0,l.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){return(t,n)=>((0,l.openBlock)(),(0,l.createElementBlock)(`div`,w,[n[0]||=(0,l.createElementVNode)(`div`,{class:`text-purple-600 font-medium`},`🎵 Sheet Music`,-1),e.result.title?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,T,(0,l.toDisplayString)(e.result.title),1)):(0,l.createCommentVNode)(``,!0)]))}}),D={toolDefinition:c.r,execute:c.n,generatingMessage:`Rendering sheet music...`,isEnabled:()=>!0,viewComponent:C,previewComponent:E,samples:c.t},O={plugin:D};exports.TOOL_DEFINITION=c.r,exports.default=O,exports.executeMusic=c.n,exports.plugin=D;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./samples-msJuWhn1.cjs`);let l=require(`vue`),u=require(`opensheetmusicdisplay`),d=require(`@isamu/osmd-audio-player`);d=s(d,1);let f=require(`jspdf`),p=require(`svg2pdf.js`);var m={class:`w-full h-full overflow-y-auto`},h={class:`min-h-full flex flex-col p-4`},g={key:0,class:`mb-4 text-center`},_={class:`text-2xl font-bold text-gray-900`},v={class:`mb-4 flex gap-2 items-center justify-center`},y=[`disabled`],b={class:`text-xl`},x=[`disabled`],S={class:`flex items-center gap-2`},C=(0,l.defineComponent)({__name:`View`,props:{selectedResult:{},sendTextMessage:{type:Function}},setup(e){let t=e,n=(0,l.ref)(null),r=null,i=null,a=(0,l.ref)(!1),o=(0,l.ref)(!1),s=(0,l.ref)(!1),c=(0,l.ref)(200),C=(0,l.ref)(!1),w=(0,l.ref)(!1),T=async()=>{if(!(!n.value||!t.selectedResult.data?.musicXML))try{n.value.innerHTML=``,a.value=!1,o.value=!1,r=new u.OpenSheetMusicDisplay(n.value,{autoResize:!0,backend:`svg`,drawTitle:!1,followCursor:!0}),await r.load(t.selectedResult.data.musicXML),await r.render(),i||=new d.default,await i.loadScore(r);let e=r.Sheet?.SourceMeasures?.[0]?.TempoExpressions;if(e&&e.length>0){let t=e[0],n=t.TempoInBpm||t.tempoInBpm;n&&(c.value=n)}i.on(`iteration`,e=>{!C.value&&e&&e.length===0&&(i.stop(),o.value=!1)}),a.value=!0}catch(e){console.error(`Error rendering music:`,e),n.value&&(n.value.innerHTML=`<div class="text-red-500">Error rendering sheet music: ${e instanceof Error?e.message:`Unknown error`}</div>`)}},E=async()=>{if(!n.value||!a.value)return;let e=n.value.querySelector(`svg`);if(e){s.value=!0;try{let n=e.viewBox.baseVal.width||e.clientWidth,r=e.viewBox.baseVal.height||e.clientHeight,i=new f.jsPDF({orientation:n>r?`landscape`:`portrait`,unit:`pt`,format:`a4`}),a=i.internal.pageSize.getWidth(),o=i.internal.pageSize.getHeight(),s=Math.min(a/n,o/r),c=n*s,l=r*s;await(0,p.svg2pdf)(e,i,{x:(a-c)/2,y:(o-l)/2,width:c,height:l});let u=`${(t.selectedResult.title||`sheet-music`).replace(/[^a-zA-Z0-9]/g,`_`)}.pdf`;i.save(u)}catch(e){console.error(`Error exporting PDF:`,e)}finally{s.value=!1}}},D=async()=>{!i||!a.value||(i.setBpm(Math.max(30,Math.min(300,c.value))),i.metronomeVolume=w.value?.7:0,i.isLooping=C.value,await i.play(),o.value=!0)},O=()=>{i&&(i.stop(),o.value=!1)};return(0,l.watch)(c,()=>{i&&i.setBpm(Math.max(30,Math.min(300,c.value)))}),(0,l.watch)(C,()=>{i&&(i.isLooping=C.value)}),(0,l.watch)(w,()=>{i&&(i.metronomeVolume=w.value?.7:0)}),(0,l.onMounted)(()=>{T()}),(0,l.watch)(()=>t.selectedResult.data?.musicXML,()=>{T()}),(0,l.onUnmounted)(()=>{i&&i.stop()}),(t,r)=>((0,l.openBlock)(),(0,l.createElementBlock)(`div`,m,[(0,l.createElementVNode)(`div`,h,[e.selectedResult.title?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,g,[(0,l.createElementVNode)(`h2`,_,(0,l.toDisplayString)(e.selectedResult.title),1)])):(0,l.createCommentVNode)(``,!0),(0,l.createElementVNode)(`div`,v,[(0,l.createElementVNode)(`button`,{onClick:r[0]||=e=>o.value?O():D(),disabled:!a.value,class:(0,l.normalizeClass)([`px-4 py-2 text-white rounded disabled:bg-gray-300 disabled:cursor-not-allowed flex items-center gap-1`,o.value?`bg-red-500`:`bg-blue-500`])},[(0,l.createElementVNode)(`span`,b,(0,l.toDisplayString)(o.value?`⏹`:`▶`),1),(0,l.createTextVNode)(` `+(0,l.toDisplayString)(o.value?`Stop`:`Play`),1)],10,y),(0,l.createElementVNode)(`button`,{onClick:E,disabled:!a.value||s.value,class:`px-4 py-2 text-white bg-green-600 rounded disabled:bg-gray-300 disabled:cursor-not-allowed flex items-center gap-1`},[r[2]||=(0,l.createElementVNode)(`span`,{class:`text-xl`},`⬇`,-1),(0,l.createTextVNode)(` `+(0,l.toDisplayString)(s.value?`Exporting...`:`PDF`),1)],8,x),(0,l.createElementVNode)(`label`,S,[r[3]||=(0,l.createTextVNode)(` Tempo `,-1),(0,l.withDirectives)((0,l.createElementVNode)(`input`,{"onUpdate:modelValue":r[1]||=e=>c.value=e,type:`number`,min:`30`,max:`300`,class:`w-20 px-2 py-1 border border-gray-300 rounded`},null,512),[[l.vModelText,c.value,void 0,{number:!0}]]),r[4]||=(0,l.createTextVNode)(` bpm `,-1)])]),(0,l.createElementVNode)(`div`,{ref_key:`musicContainer`,ref:n,class:`flex-1 flex items-center justify-center bg-white rounded-lg p-4`},null,512)])]))}}),w={class:`text-center p-4 bg-purple-50 rounded`},T={key:0,class:`text-xs text-gray-600 mt-1 truncate`},E=(0,l.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){return(t,n)=>((0,l.openBlock)(),(0,l.createElementBlock)(`div`,w,[n[0]||=(0,l.createElementVNode)(`div`,{class:`text-purple-600 font-medium`},`🎵 Sheet Music`,-1),e.result.title?((0,l.openBlock)(),(0,l.createElementBlock)(`div`,T,(0,l.toDisplayString)(e.result.title),1)):(0,l.createCommentVNode)(``,!0)]))}}),D={toolDefinition:c.r,execute:c.n,generatingMessage:`Rendering sheet music...`,isEnabled:()=>!0,viewComponent:C,previewComponent:E,samples:c.t},O={plugin:D};exports.TOOL_DEFINITION=c.r,exports.default=O,exports.executeMusic=c.n,exports.plugin=D;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gui-chat-plugin/music",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "MusicXML sheet music plugin for GUI Chat",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -41,25 +41,25 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@isamu/osmd-audio-player": "^1.0.0",
44
- "gui-chat-protocol": "^0.0.4",
44
+ "gui-chat-protocol": "^0.3.3",
45
45
  "jspdf": "^4.2.1",
46
46
  "svg2pdf.js": "^2.7.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@eslint/js": "^10.0.1",
50
- "@tailwindcss/vite": "^4.2.2",
51
- "@typescript-eslint/eslint-plugin": "^8.58.0",
52
- "@typescript-eslint/parser": "^8.58.0",
50
+ "@tailwindcss/vite": "^4.2.4",
51
+ "@typescript-eslint/eslint-plugin": "^8.59.2",
52
+ "@typescript-eslint/parser": "^8.59.2",
53
53
  "@vitejs/plugin-vue": "^6.0.5",
54
- "eslint": "^10.2.0",
55
- "eslint-plugin-vue": "^10.8.0",
56
- "globals": "^17.4.0",
57
- "tailwindcss": "^4.2.2",
58
- "typescript": "~6.0.2",
59
- "vite": "^8.0.3",
60
- "vue": "^3.5.31",
54
+ "eslint": "^10.3.0",
55
+ "eslint-plugin-vue": "^10.9.1",
56
+ "globals": "^17.6.0",
57
+ "tailwindcss": "^4.2.4",
58
+ "typescript": "~6.0.3",
59
+ "vite": "^8.0.11",
60
+ "vue": "^3.5.34",
61
61
  "vue-eslint-parser": "^10.4.0",
62
- "vue-tsc": "^3.2.6"
62
+ "vue-tsc": "^3.2.8"
63
63
  },
64
64
  "keywords": [
65
65
  "guichat",