mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Change function description comments to tsdoc style (#35185)
1. change function comments to the minimal [tsdoc](https://tsdoc.org/) style. This has the benefit of making editors show the doc string in tooltips when the function is hovered: <img width="521" height="110" alt="image" src="https://github.com/user-attachments/assets/b966f4f1-8239-433a-a456-5bd5c05d69ef" /> 2. disable eslint `multiline-comment-style` as it conflicts with tsdoc. --------- Signed-off-by: silverwind <me@silverwind.io>
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| import tinycolor from 'tinycolor2'; | ||||
| import type {ColorInput} from 'tinycolor2'; | ||||
|  | ||||
| // Returns relative luminance for a SRGB color - https://en.wikipedia.org/wiki/Relative_luminance | ||||
| /** Returns relative luminance for a SRGB color - https://en.wikipedia.org/wiki/Relative_luminance */ | ||||
| // Keep this in sync with modules/util/color.go | ||||
| function getRelativeLuminance(color: ColorInput): number { | ||||
|   const {r, g, b} = tinycolor(color).toRgb(); | ||||
| @@ -12,8 +12,9 @@ function useLightText(backgroundColor: ColorInput): boolean { | ||||
|   return getRelativeLuminance(backgroundColor) < 0.453; | ||||
| } | ||||
|  | ||||
| // Given a background color, returns a black or white foreground color that the highest | ||||
| // contrast ratio. In the future, the APCA contrast function, or CSS `contrast-color` will be better. | ||||
| /** Given a background color, returns a black or white foreground color that the highest | ||||
|  *  contrast ratio. */ | ||||
| // In the future, the APCA contrast function, or CSS `contrast-color` will be better. | ||||
| // https://github.com/color-js/color.js/blob/eb7b53f7a13bb716ec8b28c7a56f052cd599acd9/src/contrast/APCA.js#L42 | ||||
| export function contrastColor(backgroundColor: ColorInput): string { | ||||
|   return useLightText(backgroundColor) ? '#fff' : '#000'; | ||||
|   | ||||
| @@ -71,7 +71,7 @@ export function queryElemSiblings<T extends Element>(el: Element, selector = '*' | ||||
|   }), fn); | ||||
| } | ||||
|  | ||||
| // it works like jQuery.children: only the direct children are selected | ||||
| /** it works like jQuery.children: only the direct children are selected */ | ||||
| export function queryElemChildren<T extends Element>(parent: Element | ParentNode, selector = '*', fn?: ElementsCallback<T>): ArrayLikeIterable<T> { | ||||
|   if (isInFrontendUnitTest()) { | ||||
|     // https://github.com/capricorn86/happy-dom/issues/1620 : ":scope" doesn't work | ||||
| @@ -81,7 +81,7 @@ export function queryElemChildren<T extends Element>(parent: Element | ParentNod | ||||
|   return applyElemsCallback<T>(parent.querySelectorAll(`:scope > ${selector}`), fn); | ||||
| } | ||||
|  | ||||
| // it works like parent.querySelectorAll: all descendants are selected | ||||
| /** it works like parent.querySelectorAll: all descendants are selected */ | ||||
| // in the future, all "queryElems(document, ...)" should be refactored to use a more specific parent if the targets are not for page-level components. | ||||
| export function queryElems<T extends HTMLElement>(parent: Element | ParentNode, selector: string, fn?: ElementsCallback<T>): ArrayLikeIterable<T> { | ||||
|   return applyElemsCallback<T>(parent.querySelectorAll(selector), fn); | ||||
| @@ -95,8 +95,8 @@ export function onDomReady(cb: () => Promisable<void>) { | ||||
|   } | ||||
| } | ||||
|  | ||||
| // checks whether an element is owned by the current document, and whether it is a document fragment or element node | ||||
| // if it is, it means it is a "normal" element managed by us, which can be modified safely. | ||||
| /** checks whether an element is owned by the current document, and whether it is a document fragment or element node | ||||
|  *  if it is, it means it is a "normal" element managed by us, which can be modified safely. */ | ||||
| export function isDocumentFragmentOrElementNode(el: Node) { | ||||
|   try { | ||||
|     return el.ownerDocument === document && el.nodeType === Node.ELEMENT_NODE || el.nodeType === Node.DOCUMENT_FRAGMENT_NODE; | ||||
| @@ -106,8 +106,8 @@ export function isDocumentFragmentOrElementNode(el: Node) { | ||||
|   } | ||||
| } | ||||
|  | ||||
| // autosize a textarea to fit content. Based on | ||||
| // https://github.com/github/textarea-autosize | ||||
| /** autosize a textarea to fit content. */ | ||||
| // Based on https://github.com/github/textarea-autosize | ||||
| // --------------------------------------------------------------------- | ||||
| // Copyright (c) 2018 GitHub, Inc. | ||||
| // | ||||
| @@ -246,8 +246,8 @@ export function onInputDebounce(fn: () => Promisable<any>) { | ||||
|  | ||||
| type LoadableElement = HTMLEmbedElement | HTMLIFrameElement | HTMLImageElement | HTMLScriptElement | HTMLTrackElement; | ||||
|  | ||||
| // Set the `src` attribute on an element and returns a promise that resolves once the element | ||||
| // has loaded or errored. | ||||
| /** Set the `src` attribute on an element and returns a promise that resolves once the element | ||||
|  *  has loaded or errored. */ | ||||
| export function loadElem(el: LoadableElement, src: string) { | ||||
|   return new Promise((resolve) => { | ||||
|     el.addEventListener('load', () => resolve(true), {once: true}); | ||||
| @@ -286,7 +286,7 @@ export function isElemVisible(el: HTMLElement): boolean { | ||||
|   return !el.classList.contains('tw-hidden') && (el.offsetWidth || el.offsetHeight || el.getClientRects().length) && el.style.display !== 'none'; | ||||
| } | ||||
|  | ||||
| // replace selected text in a textarea while preserving editor history, e.g. CTRL-Z works after this | ||||
| /** replace selected text in a textarea while preserving editor history, e.g. CTRL-Z works after this */ | ||||
| export function replaceTextareaSelection(textarea: HTMLTextAreaElement, text: string) { | ||||
|   const before = textarea.value.slice(0, textarea.selectionStart ?? undefined); | ||||
|   const after = textarea.value.slice(textarea.selectionEnd ?? undefined); | ||||
| @@ -368,7 +368,7 @@ export function addDelegatedEventListener<T extends HTMLElement, E extends Event | ||||
|   }, options); | ||||
| } | ||||
|  | ||||
| // Returns whether a click event is a left-click without any modifiers held | ||||
| /** Returns whether a click event is a left-click without any modifiers held */ | ||||
| export function isPlainClick(e: MouseEvent) { | ||||
|   return e.button === 0 && !e.ctrlKey && !e.metaKey && !e.altKey && !e.shiftKey; | ||||
| } | ||||
|   | ||||
| @@ -29,8 +29,8 @@ type ImageInfo = { | ||||
|   dppx?: number, | ||||
| } | ||||
|  | ||||
| // decode a image and try to obtain width and dppx. It will never throw but instead | ||||
| // return default values. | ||||
| /** decode a image and try to obtain width and dppx. It will never throw but instead | ||||
|  *  return default values. */ | ||||
| export async function imageInfo(blob: Blob): Promise<ImageInfo> { | ||||
|   let width = 0, dppx = 1; // dppx: 1 dot per pixel for non-HiDPI screens | ||||
|  | ||||
|   | ||||
| @@ -65,8 +65,8 @@ export function fillEmptyStartDaysWithZeroes(startDays: number[], data: DayDataO | ||||
|  | ||||
| let dateFormat: Intl.DateTimeFormat; | ||||
|  | ||||
| // format a Date object to document's locale, but with 24h format from user's current locale because this | ||||
| // option is a personal preference of the user, not something that the document's locale should dictate. | ||||
| /** Format a Date object to document's locale, but with 24h format from user's current locale because this | ||||
|  *  option is a personal preference of the user, not something that the document's locale should dictate. */ | ||||
| export function formatDatetime(date: Date | number): string { | ||||
|   if (!dateFormat) { | ||||
|     // TODO: replace `hour12` with `Intl.Locale.prototype.getHourCycles` once there is broad browser support | ||||
|   | ||||
| @@ -14,8 +14,8 @@ export function isUrl(url: string): boolean { | ||||
|   } | ||||
| } | ||||
|  | ||||
| // Convert an absolute or relative URL to an absolute URL with the current origin. It only | ||||
| // processes absolute HTTP/HTTPS URLs or relative URLs like '/xxx' or '//host/xxx'. | ||||
| /** Convert an absolute or relative URL to an absolute URL with the current origin. It only | ||||
|  *  processes absolute HTTP/HTTPS URLs or relative URLs like '/xxx' or '//host/xxx'. */ | ||||
| export function toOriginUrl(urlStr: string) { | ||||
|   try { | ||||
|     if (urlStr.startsWith('http://') || urlStr.startsWith('https://') || urlStr.startsWith('/')) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user