From 2c50495b7cb3cd341ec480b88e93706f43a7074b Mon Sep 17 00:00:00 2001 From: "alex.zolotyh" Date: Tue, 12 Mar 2019 14:36:41 +0300 Subject: [PATCH 1/3] Add generator parameter to custom block renderer It allows to render block inside wrapper --- packages/draft-js-export-html/src/stateToHTML.js | 5 +++-- packages/draft-js-export-html/typings/index.d.ts | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/draft-js-export-html/src/stateToHTML.js b/packages/draft-js-export-html/src/stateToHTML.js index d90b7fac..3480527a 100644 --- a/packages/draft-js-export-html/src/stateToHTML.js +++ b/packages/draft-js-export-html/src/stateToHTML.js @@ -30,7 +30,7 @@ type RenderConfig = { style?: StyleDescr; }; -type BlockRenderer = (block: ContentBlock) => ?string; +type BlockRenderer = (block: ContentBlock, generator: MarkupGenerator) => ?string; type BlockRendererMap = {[blockType: string]: BlockRenderer}; type StyleMap = {[styleName: string]: RenderConfig}; @@ -215,6 +215,7 @@ class MarkupGenerator { } processBlock() { + const generator = this; let {blockRenderers, defaultBlockTag} = this.options; let block = this.blocks[this.currentBlock]; let blockType = block.getType(); @@ -233,7 +234,7 @@ class MarkupGenerator { blockRenderers != null && blockRenderers.hasOwnProperty(blockType) ? blockRenderers[blockType] : null; - let customRendererOutput = customRenderer ? customRenderer(block) : null; + let customRendererOutput = customRenderer ? customRenderer(block, generator) : null; // Renderer can return null, which will cause processing to continue as normal. if (customRendererOutput != null) { this.output.push(customRendererOutput); diff --git a/packages/draft-js-export-html/typings/index.d.ts b/packages/draft-js-export-html/typings/index.d.ts index ec40b149..6af602e2 100644 --- a/packages/draft-js-export-html/typings/index.d.ts +++ b/packages/draft-js-export-html/typings/index.d.ts @@ -3,9 +3,12 @@ declare module 'draft-js-export-html' { import draftjs = require("draft-js"); + interface MarkupGenerator { + renderBlockContent(block: draftjs.ContentBlock): string; + } type BlockStyleFn = (block: draftjs.ContentBlock) => RenderConfig|undefined; type EntityStyleFn = (entity: draftjs.EntityInstance) => RenderConfig|undefined; - type BlockRenderer = (block: draftjs.ContentBlock) => string; + type BlockRenderer = (block: draftjs.ContentBlock, generator: MarkupGenerator) => string; type RenderConfig = { element?: string; attributes?: any; From 7a21490f3ddfcc4e1cf2a72e1050f0a872deb737 Mon Sep 17 00:00:00 2001 From: zolotykh Date: Wed, 13 Mar 2019 08:49:03 +0300 Subject: [PATCH 2/3] Fix pull-request issues --- packages/draft-js-export-html/src/stateToHTML.js | 2 +- packages/draft-js-export-html/typings/index.d.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/draft-js-export-html/src/stateToHTML.js b/packages/draft-js-export-html/src/stateToHTML.js index 3480527a..80eb71db 100644 --- a/packages/draft-js-export-html/src/stateToHTML.js +++ b/packages/draft-js-export-html/src/stateToHTML.js @@ -30,7 +30,7 @@ type RenderConfig = { style?: StyleDescr; }; -type BlockRenderer = (block: ContentBlock, generator: MarkupGenerator) => ?string; +type BlockRenderer = (block: ContentBlock, generator?: MarkupGenerator) => ?string; type BlockRendererMap = {[blockType: string]: BlockRenderer}; type StyleMap = {[styleName: string]: RenderConfig}; diff --git a/packages/draft-js-export-html/typings/index.d.ts b/packages/draft-js-export-html/typings/index.d.ts index 6af602e2..17e30f39 100644 --- a/packages/draft-js-export-html/typings/index.d.ts +++ b/packages/draft-js-export-html/typings/index.d.ts @@ -3,12 +3,12 @@ declare module 'draft-js-export-html' { import draftjs = require("draft-js"); - interface MarkupGenerator { + type MarkupGenerator = { renderBlockContent(block: draftjs.ContentBlock): string; } type BlockStyleFn = (block: draftjs.ContentBlock) => RenderConfig|undefined; type EntityStyleFn = (entity: draftjs.EntityInstance) => RenderConfig|undefined; - type BlockRenderer = (block: draftjs.ContentBlock, generator: MarkupGenerator) => string; + type BlockRenderer = (block: draftjs.ContentBlock, generator?: MarkupGenerator) => string; type RenderConfig = { element?: string; attributes?: any; From 4ba0e62efdb7b54d987053a90f383f4cd279bd07 Mon Sep 17 00:00:00 2001 From: zolotykh Date: Wed, 13 Mar 2019 08:53:28 +0300 Subject: [PATCH 3/3] Fix Travis CI error --- packages/draft-js-export-html/src/stateToHTML.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/draft-js-export-html/src/stateToHTML.js b/packages/draft-js-export-html/src/stateToHTML.js index 80eb71db..c040bfc7 100644 --- a/packages/draft-js-export-html/src/stateToHTML.js +++ b/packages/draft-js-export-html/src/stateToHTML.js @@ -215,7 +215,6 @@ class MarkupGenerator { } processBlock() { - const generator = this; let {blockRenderers, defaultBlockTag} = this.options; let block = this.blocks[this.currentBlock]; let blockType = block.getType(); @@ -234,7 +233,7 @@ class MarkupGenerator { blockRenderers != null && blockRenderers.hasOwnProperty(blockType) ? blockRenderers[blockType] : null; - let customRendererOutput = customRenderer ? customRenderer(block, generator) : null; + let customRendererOutput = customRenderer ? customRenderer(block, this) : null; // Renderer can return null, which will cause processing to continue as normal. if (customRendererOutput != null) { this.output.push(customRendererOutput);