From a1552e0d7bb9b4e11bbdf54fc05ab92ae4e69ea8 Mon Sep 17 00:00:00 2001 From: Uttam Krishna Ukkoji Date: Tue, 25 Apr 2023 10:59:54 +0530 Subject: [PATCH] fix: :bug: asset in nested reference with json rte --- .github/workflows/npm-publish.yml | 2 +- __test__/mock/json-element-mock-result.ts | 2 +- __test__/mock/json-element-mock.ts | 3 ++- __test__/reference-to-html.test.ts | 8 ++++++++ src/helper/enumerate-entries.ts | 3 +++ src/nodes/mark-type.ts | 3 ++- src/nodes/text-node.ts | 1 + src/options/default-node-options.ts | 6 ++++++ 8 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index a754455..4f827b7 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: '12.x' - registry-url: 'https://registry.npmjs.org' + registry-url: 'https://npm.pkg.github.com' scope: '@contentstack' - run: npm ci - run: npm publish diff --git a/__test__/mock/json-element-mock-result.ts b/__test__/mock/json-element-mock-result.ts index db42c4f..0db6204 100644 --- a/__test__/mock/json-element-mock-result.ts +++ b/__test__/mock/json-element-mock-result.ts @@ -1,4 +1,4 @@ -const plainTextHtml = "Aliquam sit amet libero dapibus, eleifend ligula at, varius justoLorem ipsumdolor sit ametconsectetur adipiscing elit.Sed condimentum iaculis magna in vehicula. Vestibulum vitae convallis lacus. " +const plainTextHtml = "Aliquam sit amet libero dapibus, eleifend ligula at, varius justoLorem ipsumdolor sit amet
consectetur adipiscing elit.
Sed condimentum iaculis magna in vehicula. Vestibulum vitae convallis lacus. " const paragraphHtml = "

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed condimentum iaculis magna in vehicula. Vestibulum vitae convallis lacus. Praesent a diam iaculis turpis rhoncus faucibus. Aliquam sed pulvinar sem.

" const h1Html = "

Lorem ipsum dolor sit amet.

" const h2Html = "

Vestibulum a ligula eget massa sagittis aliquam sit amet quis tortor.

" diff --git a/__test__/mock/json-element-mock.ts b/__test__/mock/json-element-mock.ts index 7e1ea16..f834101 100644 --- a/__test__/mock/json-element-mock.ts +++ b/__test__/mock/json-element-mock.ts @@ -24,7 +24,8 @@ const plainTextJson = { "bold": true, "italic": true, "underline": true, - "strikethrough": true + "strikethrough": true, + "break": true }, { "text": "Sed condimentum iaculis magna in vehicula. ", diff --git a/__test__/reference-to-html.test.ts b/__test__/reference-to-html.test.ts index 4f4117a..8f786dc 100644 --- a/__test__/reference-to-html.test.ts +++ b/__test__/reference-to-html.test.ts @@ -5,6 +5,7 @@ import { Metadata } from '../src/Models/metadata-model' import Node from '../src/nodes/node' import NodeType from '../src/nodes/node-type' import { Next, RenderOption } from '../src/options' +import { defaultNodeOption } from '../src/options/default-node-options' import { defaultOptions } from '../src/options/default-options' import { assetReferenceJson, embeddedAssetJsonEntry, embeddedEntryJsonEntry, entryReferenceBlockJson, entryReferenceInlineJson, entryReferenceLinkJson } from './mock/json-element-mock' import { embeddedAssetWithRenderOption, embeddedObjectDefaultRender, embeddedObjectWithRenderOption } from './mock/render-options' @@ -152,6 +153,13 @@ describe('Reference Node To HTML', () => { expect(resultHTML).toEqual('') done() }) + it('Should return image for undefined node asset from default node option', done => { + const node = assetReferenceJson.children[0] as unknown as Node + + const resultHTML = referenceToHTML(node, defaultNodeOption) + expect(resultHTML).toEqual('') + done() + }) it('Should return HTML for embedded link entry', done => { const node = entryReferenceLinkJson.children[0] as unknown as Node diff --git a/src/helper/enumerate-entries.ts b/src/helper/enumerate-entries.ts index e8fdbaa..32e95f9 100644 --- a/src/helper/enumerate-entries.ts +++ b/src/helper/enumerate-entries.ts @@ -43,6 +43,9 @@ export function enumerateContents( export function textNodeToHTML(node: TextNode, renderOption: RenderOption): string { let text = node.text + if (node.break) { + text = (renderOption[MarkType.BREAK] as RenderMark)(text) + } if (node.superscript) { text = (renderOption[MarkType.SUPERSCRIPT] as RenderMark)(text) } diff --git a/src/nodes/mark-type.ts b/src/nodes/mark-type.ts index c581d77..58cfe0f 100644 --- a/src/nodes/mark-type.ts +++ b/src/nodes/mark-type.ts @@ -8,7 +8,8 @@ enum MarkType { SUBSCRIPT = 'subscript', - SUPERSCRIPT = 'superscript' + SUPERSCRIPT = 'superscript', + BREAK = 'break' } export default MarkType \ No newline at end of file diff --git a/src/nodes/text-node.ts b/src/nodes/text-node.ts index 5df949c..800e026 100644 --- a/src/nodes/text-node.ts +++ b/src/nodes/text-node.ts @@ -8,6 +8,7 @@ export default class TextNode extends Node { inlineCode?: boolean superscript?: boolean subscript?: boolean + break?: boolean text: string diff --git a/src/options/default-node-options.ts b/src/options/default-node-options.ts index 4249a4a..112fcd3 100644 --- a/src/options/default-node-options.ts +++ b/src/options/default-node-options.ts @@ -78,6 +78,9 @@ export const defaultNodeOption: RenderOption = { }, ['reference']:(node: Node, next: Next) => { + if (node.attrs['type'] === 'asset') { + return `` + } return `` }, ['default']:(node: Node, next: Next) => { @@ -105,5 +108,8 @@ export const defaultNodeOption: RenderOption = { [MarkType.SUPERSCRIPT]:(text: string) => { return `${text}` }, + [MarkType.BREAK]:(text: string) => { + return `
${text}` + }, } \ No newline at end of file