diff --git a/packages/draft-js-export-html/package.json b/packages/draft-js-export-html/package.json index 0cdc6ead..306422b5 100644 --- a/packages/draft-js-export-html/package.json +++ b/packages/draft-js-export-html/package.json @@ -1,6 +1,6 @@ { "name": "@sendgrid/draft-js-export-html", - "version": "1.0.5", + "version": "1.0.7", "description": "DraftJS: Export ContentState to HTML", "main": "lib/main.js", "typings": "typings/index.d.ts", diff --git a/packages/draft-js-export-html/src/stateToHTML.js b/packages/draft-js-export-html/src/stateToHTML.js index 140b024b..123724e3 100644 --- a/packages/draft-js-export-html/src/stateToHTML.js +++ b/packages/draft-js-export-html/src/stateToHTML.js @@ -76,6 +76,7 @@ const ENTITY_ATTR_MAP: {[entityType: string]: AttrMap} = { title: 'title', className: 'class', clicktracking: 'clicktracking', + universal: 'universal', }, [ENTITY_TYPE.IMAGE]: { src: 'src', @@ -83,6 +84,11 @@ const ENTITY_ATTR_MAP: {[entityType: string]: AttrMap} = { width: 'width', alt: 'alt', className: 'class', + style: 'style', + }, + SPAN: { + className: 'class', + style: 'style', }, }; diff --git a/packages/draft-js-import-element/package.json b/packages/draft-js-import-element/package.json index 2473657a..e4eb9bc3 100644 --- a/packages/draft-js-import-element/package.json +++ b/packages/draft-js-import-element/package.json @@ -1,6 +1,6 @@ { "name": "@sendgrid/draft-js-import-element", - "version": "1.0.1", + "version": "1.0.3", "description": "DraftJS: Import Element to ContentState", "main": "lib/main.js", "scripts": { diff --git a/packages/draft-js-import-element/src/__tests__/stateFromElement-test.js b/packages/draft-js-import-element/src/__tests__/stateFromElement-test.js index 079ac6fb..65fbe368 100644 --- a/packages/draft-js-import-element/src/__tests__/stateFromElement-test.js +++ b/packages/draft-js-import-element/src/__tests__/stateFromElement-test.js @@ -173,7 +173,16 @@ describe('stateFromElement', () => { }); it('should support images', () => { - let imageNode = new ElementNode('img', [{name: 'src', value: 'imgur.com/asdf.jpg'}]); + let imageNode = new ElementNode( + 'img', + [ + {name: 'src', value: 'imgur.com/asdf.jpg'}, + {name: 'height', value: '40'}, + {name: 'width', value: '40'}, + {name: 'class', value: 'myClass'}, + {name: 'style', value: 'color: red;'}, + ], + ); let wrapperElement = new ElementNode('div', [], [imageNode]); let contentState = stateFromElement(wrapperElement); let rawContentState = removeBlockKeys(convertToRaw(contentState)); @@ -196,6 +205,10 @@ describe('stateFromElement', () => { '0': { data: { src: 'imgur.com/asdf.jpg', + height: '40', + width: '40', + className: 'myClass', + style: 'color: red;', }, mutability: 'MUTABLE', type: 'IMAGE', diff --git a/packages/draft-js-import-element/src/stateFromElement.js b/packages/draft-js-import-element/src/stateFromElement.js index 79184bb1..5d28974d 100644 --- a/packages/draft-js-import-element/src/stateFromElement.js +++ b/packages/draft-js-import-element/src/stateFromElement.js @@ -108,8 +108,9 @@ const DATA_ATTRIBUTE = /^data-([a-z0-9-]+)$/; // Map element attributes to entity data. const ELEM_ATTR_MAP = { - a: {href: 'url', rel: 'rel', target: 'target', title: 'title', clicktracking: 'clicktracking'}, - img: {src: 'src', alt: 'alt'}, + a: {href: 'url', rel: 'rel', target: 'target', title: 'title', clicktracking: 'clicktracking', universal: 'universal'}, + img: {src: 'src', alt: 'alt', class: 'className', style: 'style', height: 'height', width: 'width'}, + span: {class: 'className', style: 'style'}, }; const getEntityData = (tagName: string, element: DOMElement) => { @@ -156,6 +157,14 @@ const ElementToEntity = { return generator.createEntity(ENTITY_TYPE.IMAGE, data); } }, + span( + generator: ContentGenerator, + tagName: string, + element: DOMElement, + ): ?string { + let data = getEntityData(tagName, element); + return generator.createEntity('SPAN', data); + }, }; class ContentGenerator { diff --git a/packages/draft-js-import-html/package.json b/packages/draft-js-import-html/package.json index 9484b4be..5ea07785 100644 --- a/packages/draft-js-import-html/package.json +++ b/packages/draft-js-import-html/package.json @@ -1,6 +1,6 @@ { "name": "@sendgrid/draft-js-import-html", - "version": "1.0.1", + "version": "1.0.3", "description": "DraftJS: Import HTML to ContentState", "main": "lib/main.js", "typings": "typings/index.d.ts", @@ -9,7 +9,7 @@ "watch": "babel src --watch --out-dir lib --ignore \"_*\"" }, "dependencies": { - "@sendgrid/draft-js-import-element": "^1.0.0" + "@sendgrid/draft-js-import-element": "1.0.3" }, "peerDependencies": { "draft-js": ">=0.10.0",