This commit is contained in:
2025-10-15 16:52:39 +02:00
parent 1015e9e18f
commit 1b35c4ccc1
26 changed files with 1078 additions and 433 deletions

View File

@ -90,32 +90,33 @@ export const csoundTooltip = hoverTooltip((view, pos) => {
const paramsList = document.createElement('div');
paramsList.className = 'csound-tooltip-params';
reference.parameters.slice(0, 5).forEach(param => {
reference.parameters.forEach(param => {
const paramItem = document.createElement('div');
paramItem.className = 'csound-tooltip-param';
const paramHeader = document.createElement('div');
paramHeader.className = 'csound-tooltip-param-header';
const paramName = document.createElement('span');
paramName.className = 'csound-tooltip-param-name';
paramName.textContent = param.name;
const paramDesc = document.createElement('span');
paramDesc.className = 'csound-tooltip-param-desc';
paramDesc.textContent = param.description.length > 60
? param.description.substring(0, 60) + '...'
: param.description;
const paramType = document.createElement('span');
paramType.className = 'csound-tooltip-param-type';
paramType.textContent = param.type;
paramItem.appendChild(paramName);
paramHeader.appendChild(paramName);
paramHeader.appendChild(paramType);
const paramDesc = document.createElement('div');
paramDesc.className = 'csound-tooltip-param-desc';
paramDesc.textContent = param.description;
paramItem.appendChild(paramHeader);
paramItem.appendChild(paramDesc);
paramsList.appendChild(paramItem);
});
if (reference.parameters.length > 5) {
const more = document.createElement('div');
more.className = 'csound-tooltip-more';
more.textContent = `... and ${reference.parameters.length - 5} more`;
paramsList.appendChild(more);
}
dom.appendChild(paramsList);
}
@ -126,114 +127,126 @@ export const csoundTooltip = hoverTooltip((view, pos) => {
export const csoundTooltipTheme = EditorView.theme({
'.cm-tooltip.cm-tooltip-hover': {
backgroundColor: 'rgba(0, 0, 0, 0.95)',
backgroundColor: 'var(--tooltip-bg)',
backdropFilter: 'blur(8px)',
color: '#ffffff',
fontSize: '12px',
fontFamily: 'monospace',
color: 'var(--color-text-primary)',
fontSize: 'var(--font-sm)',
fontFamily: 'var(--font-mono)',
padding: '0',
maxWidth: '500px',
border: '1px solid #3a3a3a',
maxHeight: '400px',
overflowY: 'auto',
border: '1px solid var(--tooltip-border)',
borderRadius: 'var(--radius-md)',
boxShadow: 'var(--shadow-lg)',
zIndex: '100'
},
'.csound-tooltip': {
padding: '10px 12px'
padding: 'var(--space-md) var(--space-lg)'
},
'.csound-tooltip-header': {
display: 'flex',
alignItems: 'center',
gap: '8px',
marginBottom: '6px',
paddingBottom: '6px',
borderBottom: '1px solid #3a3a3a'
gap: 'var(--space-sm)',
marginBottom: 'var(--space-sm)',
paddingBottom: 'var(--space-sm)',
borderBottom: '1px solid var(--color-border-subtle)'
},
'.csound-tooltip-title': {
fontWeight: '600',
color: '#646cff',
fontSize: '14px'
color: 'var(--color-accent-primary)',
fontSize: 'var(--font-md)'
},
'.csound-tooltip-type': {
fontSize: '10px',
color: '#9ca3af',
backgroundColor: 'rgba(255, 255, 255, 0.1)',
padding: '2px 6px',
textTransform: 'uppercase'
fontSize: 'var(--font-xs)',
color: 'var(--color-text-tertiary)',
backgroundColor: 'transparent',
padding: '0',
textTransform: 'lowercase'
},
'.csound-tooltip-description': {
color: '#e5e7eb',
lineHeight: '1.5',
marginBottom: '8px'
color: 'var(--color-text-secondary)',
lineHeight: 'var(--leading-relaxed)',
marginBottom: 'var(--space-md)',
fontSize: 'var(--font-sm)'
},
'.csound-tooltip-syntax-label': {
fontSize: '10px',
color: '#9ca3af',
marginTop: '8px',
marginBottom: '4px',
textTransform: 'uppercase',
fontSize: 'var(--font-xs)',
color: 'var(--color-text-tertiary)',
marginTop: 'var(--space-md)',
marginBottom: 'var(--space-xs)',
textTransform: 'lowercase',
fontWeight: '500'
},
'.csound-tooltip-syntax': {
backgroundColor: 'rgba(0, 0, 0, 0.4)',
color: '#fbbf24',
padding: '6px 8px',
fontSize: '11px',
fontFamily: 'monospace',
margin: '0 0 8px 0',
backgroundColor: 'var(--code-bg)',
color: 'var(--code-text)',
padding: 'var(--space-sm) 0 var(--space-sm) var(--space-sm)',
fontSize: 'var(--font-sm)',
fontFamily: 'var(--font-mono)',
margin: '0 0 var(--space-md) 0',
whiteSpace: 'pre-wrap',
lineHeight: '1.4',
border: '1px solid #2a2a2a'
lineHeight: 'var(--leading-normal)',
border: 'none',
borderLeft: '2px solid var(--code-border)'
},
'.csound-tooltip-rates': {
fontSize: '11px',
color: '#60a5fa',
marginBottom: '8px'
fontSize: 'var(--font-sm)',
color: 'var(--color-info)',
marginBottom: 'var(--space-md)'
},
'.csound-tooltip-params-label': {
fontSize: '10px',
color: '#9ca3af',
marginTop: '8px',
marginBottom: '4px',
textTransform: 'uppercase',
fontSize: 'var(--font-xs)',
color: 'var(--color-text-tertiary)',
marginTop: 'var(--space-md)',
marginBottom: 'var(--space-sm)',
textTransform: 'lowercase',
fontWeight: '500'
},
'.csound-tooltip-params': {
display: 'flex',
flexDirection: 'column',
gap: '4px'
gap: 'var(--space-md)'
},
'.csound-tooltip-param': {
display: 'flex',
gap: '6px',
fontSize: '11px',
lineHeight: '1.4'
flexDirection: 'column',
gap: 'var(--space-xs)',
fontSize: 'var(--font-sm)',
lineHeight: 'var(--leading-normal)'
},
'.csound-tooltip-param-header': {
display: 'flex',
alignItems: 'center',
gap: 'var(--space-sm)'
},
'.csound-tooltip-param-name': {
color: '#10b981',
color: 'var(--color-text-primary)',
fontWeight: '500',
minWidth: '60px'
fontSize: 'var(--font-sm)'
},
'.csound-tooltip-param-type': {
color: 'var(--color-text-tertiary)',
fontSize: 'var(--font-xs)'
},
'.csound-tooltip-param-desc': {
color: '#d1d5db',
flex: '1'
},
'.csound-tooltip-more': {
fontSize: '10px',
color: '#9ca3af',
fontStyle: 'italic',
marginTop: '4px'
color: 'var(--color-text-secondary)',
fontSize: 'var(--font-sm)',
lineHeight: 'var(--leading-normal)'
}
});