Skip to content

Commit 734dcb9

Browse files
committed
Added metadata in Render option function
1 parent d444cd5 commit 734dcb9

File tree

16 files changed

+125
-131
lines changed

16 files changed

+125
-131
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"Contentstack javascript"
1515
],
1616
"scripts": {
17-
"test": "jest --config jestconfig.json",
17+
"test": "jest --config jestconfig.json ",
1818
"test:badges": "npm run test && jest-coverage-badges --output ./badges",
1919
"test:debug": "jest --watchAll --config jestconfig.json --runInBand",
2020
"prebuild": "rimraf dist",
@@ -50,7 +50,7 @@
5050
},
5151
"dependencies": {
5252
"babel-core": "^6.26.3",
53-
"babel-loader": "^8.1.0",
53+
"babel-loader": "8.1.0",
5454
"babel-preset-es2015": "^6.24.1",
5555
"babel-preset-react": "^6.24.1",
5656
"node-html-parser": "^1.4.2"

src/Models/asset-model.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/Models/embed-attributes-model.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/Models/embedded-object.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export interface EmbeddedObject {
2+
uid: string;
3+
[propName: string]: any;
4+
}
5+
6+
export interface EmbedModel<T> {
7+
[path: string]: T[]
8+
}
9+
10+
export interface EmbeddedContentTypeUid extends EmbeddedObject {
11+
_content_type_uid: string;
12+
}
13+
14+
export interface EntryEmbedable extends EmbeddedObject {
15+
_embedded_assets?: EmbedModel<EmbeddedObject>;
16+
_embedded_entries?: EmbedModel<EmbeddedContentTypeUid>;
17+
}

src/Models/entry-model.ts

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/Models/metadata-model.ts

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import StyleType from '../embedded-types/style-type';
2+
export interface Metadata {
3+
text: string
4+
itemUid: string
5+
itemType: 'entry' | 'asset'
6+
styleType: StyleType
7+
attributes: Attributes
8+
contentTypeUid: string | undefined
9+
}
10+
11+
export interface Attributes {
12+
type: 'entry' | 'asset',
13+
class: string,
14+
[key: string]: any,
15+
'sys-style-type': StyleType
16+
}
17+
18+
export interface EntryAttributes extends Attributes {
19+
'data-sys-entry-uid': string;
20+
'data-sys-entry-local': string;
21+
'data-sys-content-type-uid': string;
22+
}
23+
24+
export interface AssetAttributes extends Attributes {
25+
'data-sys-asset-uid': string;
26+
'data-sys-asset-filelink': string;
27+
'data-sys-asset-contenttype': string;
28+
}
29+
30+
export function createMetadata(attribute: Attributes): Metadata {
31+
const metadata: Metadata = {
32+
text: attribute['#text'],
33+
itemUid: attribute["data-sys-entry-uid"] || attribute["data-sys-asset-uid"],
34+
itemType: attribute.type,
35+
styleType: attribute["sys-style-type"],
36+
attributes: attribute,
37+
contentTypeUid: attribute["data-sys-content-type-uid"]
38+
}
39+
return metadata
40+
}

src/embedded-types/asset.ts

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/embedded-types/entry.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/embedded-types/style-type.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
enum StyleType {
2+
BLOCK = 'block',
3+
INLINE = 'inline',
4+
LINK = 'link',
5+
DISPLAY = 'display',
6+
DOWNLOAD = 'download'
7+
}
8+
9+
export default StyleType;

src/extensions/index.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
import { elementToJson } from '../helper/html-to-json';
2-
import { Attributes } from '../Models/embed-attributes-model';
2+
import { EntryAttributes, AssetAttributes, Metadata, createMetadata, Attributes } from '../Models/metadata-model';
33
import { parse } from 'node-html-parser';
44
const frameflag = 'documentfragmentcontainer';
55

66
declare global {
77
interface String {
8-
forEachEmbeddedObject(callbackfn: (embededObjectTag: string, object: Attributes) => void): void;
8+
forEachEmbeddedObject(callbackfn: (embededObjectTag: string, object: Metadata) => void): void;
99
}
1010
}
1111

1212
String.prototype.forEachEmbeddedObject = function (
13-
callbackfn: (embededObjectTag: string, object: Attributes) => void,
13+
callbackfn: (embededObjectTag: string, object: Metadata) => void,
1414
): void {
1515

1616
const str = `<${frameflag}>${this.toString()}</${frameflag}>`;
1717
const root = parse(str)
1818
const embeddedEntries = root.querySelectorAll(".embedded-entry")
1919

2020
embeddedEntries.forEach((element) => {
21-
callbackfn(element.outerHTML, elementToJson(element) as Attributes)
21+
callbackfn(element.outerHTML, createMetadata(elementToJson(element) as Attributes))
2222
})
2323
const embeddedAsset = root.querySelectorAll(".embedded-asset")
2424
embeddedAsset.forEach((element) => {
25-
callbackfn(element.outerHTML, elementToJson(element) as Attributes)
25+
callbackfn(element.outerHTML, createMetadata(elementToJson(element) as Attributes))
2626
})
2727
};

0 commit comments

Comments
 (0)