diff --git a/components/admin/AdminMarkdownEditor.vue b/components/admin/AdminMarkdownEditor.vue index e419a36..181c77d 100644 --- a/components/admin/AdminMarkdownEditor.vue +++ b/components/admin/AdminMarkdownEditor.vue @@ -1002,7 +1002,7 @@ const handleKeydown = (event) => { + + diff --git a/components/content/ContentMarkdownRenderer.vue b/components/content/ContentMarkdownRenderer.vue index 737cb74..003d4ea 100644 --- a/components/content/ContentMarkdownRenderer.vue +++ b/components/content/ContentMarkdownRenderer.vue @@ -138,6 +138,13 @@ const hasMarkdownHardBreak = (line) => / {2,}$/.test(line) */ const cleanParagraphLine = (line) => line.replace(/ {2,}$/, '').trim() +/** + * 빈 줄 공백 블록 높이를 반환한다. + * @param {Object} block - 렌더링 블록 + * @returns {string} Tailwind 높이 클래스 + */ +const getSpacerHeightClass = (block) => block.meta?.legacy ? 'h-6' : 'h-8' + /** * 닫힘 표식까지의 행 목록을 반환 * @param {Array} lines - 전체 마크다운 행 @@ -263,7 +270,14 @@ const parseMarkdownBlocks = (markdown) => { const line = lines[index] const trimmedLine = line.trim() - if (trimmedLine === BLANK_PARAGRAPH_MARKER || !trimmedLine) { + if (trimmedLine === BLANK_PARAGRAPH_MARKER) { + blocks.push(createBlock('spacer', '', null, `block-${blocks.length}`, { meta: { legacy: true } })) + index += 1 + continue + } + + if (!trimmedLine) { + blocks.push(createBlock('spacer', '', null, `block-${blocks.length}`)) index += 1 continue } @@ -546,7 +560,8 @@ const showNextImage = () => {