mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-03 23:50:47 +00:00
2baa5a16f8
Replace citation-js with a Go port of ruby-cff, which GitHub uses for "Cite this repository", rendering APA and BibTeX server-side and dropping about 770KB of JS. Output matches GitHub on 1568 of 1571 real-world files, the rest are improvements over GitHub. - `CITATION.cff` wins over `CITATION.bib`, matched case-insensitively and through symlinks - `CITATION.bib` is offered as-is, without APA Signed-off-by: silverwind <me@silverwind.io>
28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import {localUserSettings} from '../modules/user-settings.ts';
|
|
|
|
export function initRepoCitationPanel(elPanel: HTMLElement) {
|
|
const citationCopyApa = elPanel.querySelector<HTMLButtonElement>('.citation-apa');
|
|
const citationCopyBibtex = elPanel.querySelector<HTMLButtonElement>('.citation-bibtex')!;
|
|
const inputContent = elPanel.querySelector('input')!;
|
|
const clipboardBtn = elPanel.querySelector('.citation-copy')!;
|
|
|
|
const updateUi = () => {
|
|
const isBibtex = !citationCopyApa || localUserSettings.getString('citation-copy-format', 'apa') === 'bibtex';
|
|
const text = (isBibtex ? citationCopyBibtex : citationCopyApa).getAttribute('data-text')!;
|
|
inputContent.value = text;
|
|
inputContent.setSelectionRange(0, 0);
|
|
clipboardBtn.setAttribute('data-clipboard-text', text); // the input strips newlines
|
|
citationCopyBibtex.classList.toggle('primary', isBibtex);
|
|
citationCopyApa?.classList.toggle('primary', !isBibtex);
|
|
};
|
|
|
|
for (const [format, button] of Object.entries({apa: citationCopyApa, bibtex: citationCopyBibtex})) {
|
|
button?.addEventListener('click', () => {
|
|
localUserSettings.setString('citation-copy-format', format);
|
|
updateUi();
|
|
});
|
|
}
|
|
|
|
updateUi();
|
|
}
|