Skip to content

Commit 1cc121e

Browse files
authored
Merge pull request #24 from contentstack/fix/CS-36088-nested-asset
fix: 🐛 asset in nested reference with json rte
2 parents 4648e5b + a1552e0 commit 1cc121e

File tree

8 files changed

+24
-4
lines changed

8 files changed

+24
-4
lines changed

.github/workflows/npm-publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- uses: actions/setup-node@v3
2727
with:
2828
node-version: '12.x'
29-
registry-url: 'https://registry.npmjs.org'
29+
registry-url: 'https://npm.pkg.github.com'
3030
scope: '@contentstack'
3131
- run: npm ci
3232
- run: npm publish

__test__/mock/json-element-mock-result.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const plainTextHtml = "<strong>Aliquam sit amet libero dapibus, eleifend ligula at, varius justo</strong><strong><em>Lorem ipsum</em></strong><strong><em><u>dolor sit amet</u></em></strong><strong><em><u><strike>consectetur adipiscing elit.</strike></u></em></strong><strong><em><u><span>Sed condimentum iaculis magna in vehicula. </span></u></em></strong><strong><em><u><sup> Vestibulum vitae convallis </sup></u></em></strong><strong><em><u><sub> lacus. </sub></u></em></strong>"
1+
const plainTextHtml = "<strong>Aliquam sit amet libero dapibus, eleifend ligula at, varius justo</strong><strong><em>Lorem ipsum</em></strong><strong><em><u>dolor sit amet</u></em></strong><strong><em><u><strike><br />consectetur adipiscing elit.</strike></u></em></strong><strong><em><u><span>Sed condimentum iaculis magna in vehicula. </span></u></em></strong><strong><em><u><sup> Vestibulum vitae convallis </sup></u></em></strong><strong><em><u><sub> lacus. </sub></u></em></strong>"
22
const paragraphHtml = "<p>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.</p>"
33
const h1Html = "<h1><strong><em><u><sub>Lorem ipsum dolor sit amet.</sub></u></em></strong></h1>"
44
const h2Html = "<h2><strong><em><u><sub>Vestibulum a ligula eget massa sagittis aliquam sit amet quis tortor. </sub></u></em></strong></h2>"

__test__/mock/json-element-mock.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ const plainTextJson = {
2424
"bold": true,
2525
"italic": true,
2626
"underline": true,
27-
"strikethrough": true
27+
"strikethrough": true,
28+
"break": true
2829
},
2930
{
3031
"text": "Sed condimentum iaculis magna in vehicula. ",

__test__/reference-to-html.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Metadata } from '../src/Models/metadata-model'
55
import Node from '../src/nodes/node'
66
import NodeType from '../src/nodes/node-type'
77
import { Next, RenderOption } from '../src/options'
8+
import { defaultNodeOption } from '../src/options/default-node-options'
89
import { defaultOptions } from '../src/options/default-options'
910
import { assetReferenceJson, embeddedAssetJsonEntry, embeddedEntryJsonEntry, entryReferenceBlockJson, entryReferenceInlineJson, entryReferenceLinkJson } from './mock/json-element-mock'
1011
import { embeddedAssetWithRenderOption, embeddedObjectDefaultRender, embeddedObjectWithRenderOption } from './mock/render-options'
@@ -152,6 +153,13 @@ describe('Reference Node To HTML', () => {
152153
expect(resultHTML).toEqual('<img src=https://image.url/11.jpg>')
153154
done()
154155
})
156+
it('Should return image for undefined node asset from default node option', done => {
157+
const node = assetReferenceJson.children[0] as unknown as Node
158+
159+
const resultHTML = referenceToHTML(node, defaultNodeOption)
160+
expect(resultHTML).toEqual('<img src="https://image.url/11.jpg" />')
161+
done()
162+
})
155163

156164
it('Should return HTML for embedded link entry', done => {
157165
const node = entryReferenceLinkJson.children[0] as unknown as Node

src/helper/enumerate-entries.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ export function enumerateContents(
4343

4444
export function textNodeToHTML(node: TextNode, renderOption: RenderOption): string {
4545
let text = node.text
46+
if (node.break) {
47+
text = (renderOption[MarkType.BREAK] as RenderMark)(text)
48+
}
4649
if (node.superscript) {
4750
text = (renderOption[MarkType.SUPERSCRIPT] as RenderMark)(text)
4851
}

src/nodes/mark-type.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ enum MarkType {
88

99

1010
SUBSCRIPT = 'subscript',
11-
SUPERSCRIPT = 'superscript'
11+
SUPERSCRIPT = 'superscript',
12+
BREAK = 'break'
1213
}
1314

1415
export default MarkType

src/nodes/text-node.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export default class TextNode extends Node {
88
inlineCode?: boolean
99
superscript?: boolean
1010
subscript?: boolean
11+
break?: boolean
1112

1213
text: string
1314

src/options/default-node-options.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ export const defaultNodeOption: RenderOption = {
7878
},
7979

8080
['reference']:(node: Node, next: Next) => {
81+
if (node.attrs['type'] === 'asset') {
82+
return `<img src="${node.attrs['asset-link']}" />`
83+
}
8184
return ``
8285
},
8386
['default']:(node: Node, next: Next) => {
@@ -105,5 +108,8 @@ export const defaultNodeOption: RenderOption = {
105108
[MarkType.SUPERSCRIPT]:(text: string) => {
106109
return `<sup>${text}</sup>`
107110
},
111+
[MarkType.BREAK]:(text: string) => {
112+
return `<br />${text}`
113+
},
108114

109115
}

0 commit comments

Comments
 (0)