mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 15:03:34 +00:00
compose_ui: Refactor cursor_inside_code_block.
Renamed the function to position_inside_code_block and changed the parameters to accept a string and number (index), and check if the position in the string is inside a code block (as per previous logic). Preparation for #28626.
This commit is contained in:
@@ -433,15 +433,17 @@ export function cursor_inside_code_block($textarea: JQuery<HTMLTextAreaElement>)
|
|||||||
const cursor_position = $textarea.caret();
|
const cursor_position = $textarea.caret();
|
||||||
const current_content = $textarea.val()!;
|
const current_content = $textarea.val()!;
|
||||||
|
|
||||||
|
return position_inside_code_block(current_content, cursor_position);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function position_inside_code_block(content: string, position: number): boolean {
|
||||||
let unique_insert = "UNIQUEINSERT:" + Math.random();
|
let unique_insert = "UNIQUEINSERT:" + Math.random();
|
||||||
while (current_content.includes(unique_insert)) {
|
while (content.includes(unique_insert)) {
|
||||||
unique_insert = "UNIQUEINSERT:" + Math.random();
|
unique_insert = "UNIQUEINSERT:" + Math.random();
|
||||||
}
|
}
|
||||||
const content =
|
const unique_insert_content =
|
||||||
current_content.slice(0, cursor_position) +
|
content.slice(0, position) + unique_insert + content.slice(position);
|
||||||
unique_insert +
|
const rendered_content = markdown.parse_non_message(unique_insert_content);
|
||||||
current_content.slice(cursor_position);
|
|
||||||
const rendered_content = markdown.parse_non_message(content);
|
|
||||||
const rendered_html = new DOMParser().parseFromString(rendered_content, "text/html");
|
const rendered_html = new DOMParser().parseFromString(rendered_content, "text/html");
|
||||||
const code_blocks = rendered_html.querySelectorAll("pre > code");
|
const code_blocks = rendered_html.querySelectorAll("pre > code");
|
||||||
return [...code_blocks].some((code_block) => code_block?.textContent?.includes(unique_insert));
|
return [...code_blocks].some((code_block) => code_block?.textContent?.includes(unique_insert));
|
||||||
|
|||||||
Reference in New Issue
Block a user