Skip to content

Commit 386e53e

Browse files
committed
Reference asset rendering issue resolved
1 parent a8bb629 commit 386e53e

File tree

3 files changed

+33
-16
lines changed

3 files changed

+33
-16
lines changed

__test__/reference-to-html.test.ts

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@ import { findEmbeddedItems } from '../src/helper/find-embeded-object'
44
import { Metadata } from '../src/Models/metadata-model'
55
import Node from '../src/nodes/node'
66
import NodeType from '../src/nodes/node-type'
7+
import { Next, RenderOption } from '../src/options'
78
import { defaultOptions } from '../src/options/default-options'
89
import { assetReferenceJson, embeddedAssetJsonEntry, embeddedEntryJsonEntry, entryReferenceBlockJson, entryReferenceInlineJson, entryReferenceLinkJson } from './mock/json-element-mock'
910
import { embeddedAssetWithRenderOption, embeddedObjectDefaultRender, embeddedObjectWithRenderOption } from './mock/render-options'
1011
describe('Reference Node To HTML', () => {
1112
it('Should return blank for undefined entry', done => {
12-
const node = assetReferenceJson.children[0] as undefined as Node
13+
const node = assetReferenceJson.children[0] as unknown as Node
1314
const renderOption = {}
1415

1516
const resultHTML = referenceToHTML(node, renderOption)
@@ -47,7 +48,7 @@ describe('Reference Node To HTML', () => {
4748
})
4849

4950
it('Should return HTML for embedded asset', done => {
50-
const node = assetReferenceJson.children[0] as undefined as Node
51+
const node = assetReferenceJson.children[0] as unknown as Node
5152
const renderOption = {}
5253

5354
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
@@ -59,7 +60,7 @@ describe('Reference Node To HTML', () => {
5960
})
6061

6162
it('Should return HTML for embedded block entry', done => {
62-
const node = entryReferenceBlockJson.children[0] as undefined as Node
63+
const node = entryReferenceBlockJson.children[0] as unknown as Node
6364
const renderOption = {}
6465

6566
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
@@ -70,7 +71,7 @@ describe('Reference Node To HTML', () => {
7071
})
7172

7273
it('Should return HTML for embedded link entry', done => {
73-
const node = entryReferenceLinkJson.children[0] as undefined as Node
74+
const node = entryReferenceLinkJson.children[0] as unknown as Node
7475
const renderOption = {}
7576

7677
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
@@ -81,7 +82,7 @@ describe('Reference Node To HTML', () => {
8182
})
8283

8384
it('Should return HTML for embedded inline entry', done => {
84-
const node = entryReferenceInlineJson.children[0] as undefined as Node
85+
const node = entryReferenceInlineJson.children[0] as unknown as Node
8586
const renderOption = {}
8687

8788
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
@@ -93,8 +94,8 @@ describe('Reference Node To HTML', () => {
9394

9495
// Custom render option
9596
it('Should return custom HTML for embedded asset', done => {
96-
const node = assetReferenceJson.children[0] as undefined as Node
97-
const renderOption = embeddedAssetWithRenderOption.renderOption
97+
const node = assetReferenceJson.children[0] as unknown as Node
98+
const renderOption = embeddedAssetWithRenderOption.renderOption as RenderOption
9899

99100
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
100101
return findEmbeddedItems(metadata, embeddedAssetJsonEntry)[0]
@@ -104,8 +105,8 @@ describe('Reference Node To HTML', () => {
104105
})
105106

106107
it('Should return custom HTML for embedded block entry', done => {
107-
const node = entryReferenceBlockJson.children[0] as undefined as Node
108-
const renderOption = embeddedObjectWithRenderOption.renderOption
108+
const node = entryReferenceBlockJson.children[0] as unknown as Node
109+
const renderOption = embeddedObjectWithRenderOption.renderOption as RenderOption
109110

110111
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
111112
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
@@ -115,8 +116,8 @@ describe('Reference Node To HTML', () => {
115116
})
116117

117118
it('Should return custom HTML for embedded inline entry', done => {
118-
const node = entryReferenceInlineJson.children[0] as undefined as Node
119-
const renderOption = embeddedObjectWithRenderOption.renderOption
119+
const node = entryReferenceInlineJson.children[0] as unknown as Node
120+
const renderOption = embeddedObjectWithRenderOption.renderOption as RenderOption
120121

121122
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
122123
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
@@ -126,8 +127,8 @@ describe('Reference Node To HTML', () => {
126127
})
127128

128129
it('Should return custom default HTML for embedded inline entry', done => {
129-
const node = entryReferenceBlockJson.children[0] as undefined as Node
130-
const renderOption = embeddedObjectDefaultRender.renderOption
130+
const node = entryReferenceBlockJson.children[0] as unknown as Node
131+
const renderOption = embeddedObjectDefaultRender.renderOption as RenderOption
131132

132133
const resultHTML = referenceToHTML(node, renderOption, (metadata: Metadata) => {
133134
return findEmbeddedItems(metadata, embeddedEntryJsonEntry)[0]
@@ -138,4 +139,17 @@ describe('Reference Node To HTML', () => {
138139
</div>`)
139140
done()
140141
})
142+
143+
it('Should return image for undefined node asset', done => {
144+
const node = assetReferenceJson.children[0] as unknown as Node
145+
const renderOption = {
146+
'reference' : (node: Node, next: Next) => {
147+
return `<img src=${node.attrs['asset-link']}>`;
148+
}
149+
}
150+
151+
const resultHTML = referenceToHTML(node, renderOption)
152+
expect(resultHTML).toEqual('<img src=https://image.url/11.jpg>')
153+
done()
154+
})
141155
})

src/entry-editable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export function addTags(entry: EntryModel, contentTypeUid: string, tagsAsObject:
66
}
77

88
function getTag(content: object, prefix: string, tagsAsObject: boolean, locale: string): object {
9-
let tags: any = {}
9+
const tags: any = {}
1010
Object.entries(content).forEach(([key, value]) => {
1111
switch (typeof value) {
1212
case "object":

src/helper/enumerate-entries.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,14 @@ export function referenceToHTML(node: Node,
7070
renderOption: RenderOption,
7171
renderEmbed?: (metadata: Metadata) => EmbeddedItem | EntryNode
7272
): string {
73+
const metadata = nodeToMetadata(node.attrs, ((node.children && node.children.length > 0) ? node.children[0]: {}) as unknown as TextNode)
74+
if (!renderEmbed && metadata.itemType === 'asset' && renderOption[node.type] !== undefined) {
75+
return (renderOption[node.type] as RenderNode)(node, undefined)
76+
}
7377
if (!renderEmbed) {
7478
return ''
7579
}
76-
const metadata = nodeToMetadata(node.attrs, ((node.children && node.children.length > 0) ? node.children[0]: {}) as unknown as TextNode)
77-
const item = renderEmbed(metadata)
80+
const item = renderEmbed(metadata)
7881
return findRenderString(item, metadata, renderOption)
7982
}
8083

0 commit comments

Comments
 (0)