You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

redraft

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

redraft - npm Package Compare versions

Comparing version

to
0.6.0

example/.npmignore

@@ -0,1 +1,6 @@

## 0.6.0
- modified block renderers api: keys are now wrapped in an object along with new data key containing block metadata
- added joinOutput and cleanup options to the API
- removed deprecated API
## 0.5.0

@@ -2,0 +7,0 @@ - added block keys array as third parameter to block renderers #11

2

lib/ContentNode.js

@@ -37,3 +37,3 @@ 'use strict';

value: function pushContent(string) {
var stack = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
var stack = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];

@@ -40,0 +40,0 @@ // we can just concat strings in case when both the pushed item

@@ -6,3 +6,3 @@ 'use strict';

});
exports.renderNode = exports.renderRaw = exports.RawParser = undefined;
exports.renderNode = exports.RawParser = undefined;

@@ -18,4 +18,3 @@ var _RawParser = require('./RawParser');

exports.RawParser = _RawParser2.default;
exports.renderRaw = _render.renderRaw;
exports.renderNode = _render.renderNode;
exports.default = _render.render;

@@ -65,3 +65,3 @@ 'use strict';

function getRelevantIndexes(text, inlineRanges) {
var entityRanges = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];
var entityRanges = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];

@@ -68,0 +68,0 @@ var relevantIndexes = [];

@@ -6,3 +6,3 @@ 'use strict';

});
exports.renderRaw = exports.render = exports.renderNode = undefined;
exports.render = exports.renderNode = undefined;

@@ -13,6 +13,2 @@ var _RawParser = require('./RawParser');

var _deprecated = require('./deprecated');
var _deprecated2 = _interopRequireDefault(_deprecated);
var _warn = require('./warn');

@@ -22,4 +18,17 @@

var _checkClenup = require('./checkClenup');
var _checkClenup2 = _interopRequireDefault(_checkClenup);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var defaultOptions = {
joinOutput: false,
cleanup: {
after: ['atomic'],
types: ['unstyled'],
trim: false
}
};
/**

@@ -39,5 +48,15 @@ * Concats or insets a string at given array index

/**
* Joins the input if the joinOutput option is enabled
*/
var checkJoin = function checkJoin(input, options) {
if (Array.isArray(input) && options.joinOutput) {
return input.join('');
}
return input;
};
/**
* Recursively renders a node with nested nodes with given callbacks
*/
var renderNode = exports.renderNode = function renderNode(node, styleRenderers, entityRenderers, entityMap) {
var renderNode = exports.renderNode = function renderNode(node, styleRenderers, entityRenderers, entityMap, options) {
var children = [];

@@ -50,3 +69,3 @@ var index = 0;

index += 1;
children[index] = renderNode(part, styleRenderers, entityRenderers, entityMap);
children[index] = renderNode(part, styleRenderers, entityRenderers, entityMap, options);
index += 1;

@@ -56,3 +75,3 @@ }

if (node.style && styleRenderers[node.style]) {
return styleRenderers[node.style](children);
return styleRenderers[node.style](checkJoin(children, options));
}

@@ -62,3 +81,3 @@ if (node.entity !== null) {

if (entity && entityRenderers[entity.type]) {
return entityRenderers[entity.type](children, entity.data);
return entityRenderers[entity.type](checkJoin(children, options), entity.data);
}

@@ -110,8 +129,10 @@ }

var renderBlocks = function renderBlocks(blocks) {
var inlineRenderers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var blockRenderers = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var entityRenderers = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
var entityMap = arguments.length <= 4 || arguments[4] === undefined ? {} : arguments[4];
var inlineRenderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var blockRenderers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var entityRenderers = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var entityMap = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
var userOptions = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
// initialize
var options = Object.assign({}, defaultOptions, userOptions);
var rendered = [];

@@ -122,12 +143,20 @@ var group = [];

var prevKeys = [];
var prevData = [];
var Parser = new _RawParser2.default();
blocks.forEach(function (block) {
if ((0, _checkClenup2.default)(block, prevType, options)) {
return;
}
var node = Parser.parse(block);
var renderedNode = renderNode(node, inlineRenderers, entityRenderers, entityMap);
var renderedNode = renderNode(node, inlineRenderers, entityRenderers, entityMap, options);
// if type of the block has changed render the block and clear group
if (prevType && prevType !== block.type) {
if (blockRenderers[prevType]) {
rendered.push(blockRenderers[prevType](group, prevDepth, prevKeys));
rendered.push(blockRenderers[prevType](group, prevDepth, {
keys: prevKeys,
data: prevData
}));
prevKeys = [];
prevData = [];
} else {

@@ -140,3 +169,3 @@ rendered.push(group);

if (block.children) {
var children = renderBlocks(block.children, inlineRenderers, blockRenderers, entityRenderers, entityMap);
var children = renderBlocks(block.children, inlineRenderers, blockRenderers, entityRenderers, entityMap, options);
renderedNode.push(children);

@@ -151,10 +180,14 @@ }

prevKeys.push(block.key);
prevData.push(block.data);
});
// render last group
if (blockRenderers[prevType]) {
rendered.push(blockRenderers[prevType](group, prevDepth, prevKeys));
rendered.push(blockRenderers[prevType](group, prevDepth, {
keys: prevKeys,
data: prevData
}));
} else {
rendered.push(group);
}
return rendered;
return checkJoin(rendered, options);
};

@@ -166,5 +199,4 @@

var render = exports.render = function render(raw) {
var renderers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var arg3 = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2];
var arg4 = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3];
var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

@@ -182,18 +214,6 @@ if (!raw || !Array.isArray(raw.blocks)) {

var entityRenderers = renderers.entities;
// Fallback to deprecated api
if (!inlineRenderers && !blockRenderers && !entityRenderers) {
inlineRenderers = renderers;
blockRenderers = arg3;
entityRenderers = arg4;
// Logs a deprecation warning if not in production
(0, _deprecated2.default)('passing renderers separetly is deprecated'); // eslint-disable-line
}
var blocks = byDepth(raw.blocks);
return renderBlocks(blocks, inlineRenderers, blockRenderers, entityRenderers, raw.entityMap);
};
var renderRaw = exports.renderRaw = function renderRaw() {
(0, _deprecated2.default)('renderRaw is deprecated use the default export');
return render.apply(undefined, arguments);
return renderBlocks(blocks, inlineRenderers, blockRenderers, entityRenderers, raw.entityMap, options);
};
{
"name": "redraft",
"version": "0.5.0",
"version": "0.6.0",
"description": "Renders the result of Draft.js convertToRaw using provided callbacks, works well with React",

@@ -11,3 +11,3 @@ "main": "./lib/index.js",

"prepublish": "npm run compile && npm test",
"mocha": "mocha --compilers js:babel-core/register",
"mocha": "mocha --compilers js:babel-register",
"test": "npm run lint && npm run mocha"

@@ -29,7 +29,12 @@ },

"babel-core": "^6.7.2",
"babel-preset-es2015": "^6.6.0",
"babel-eslint": "^7.0.0",
"babel-plugin-array-includes": "^2.0.3",
"babel-preset-latest": "^6.16.0",
"babel-register": "^6.16.3",
"chai": "^3.5.0",
"eslint": "^3.5.0",
"eslint-config-airbnb": "^11.1.0",
"eslint-plugin-import": "^1.15.0",
"eslint": "^3.6.1",
"eslint-config-airbnb": "^11.2.0",
"eslint-plugin-import": "^1.16.0",
"eslint-plugin-jsx-a11y": "^2.2.2",
"eslint-plugin-react": "^6.3.0",
"mocha": "^3.0.2",

@@ -36,0 +41,0 @@ "rimraf": "^2.5.2"

@@ -6,3 +6,3 @@

[![Version](https://img.shields.io/npm/v/redraft.svg?style=flat-square)](https://www.npmjs.com/package/redraft)
[![Build Status](https://img.shields.io/travis/lokiuz/redraft.svg?style=flat-square)](https://travis-ci.org/lokiuz/redraft)
[![Build Status](https://img.shields.io/travis/lokiuz/redraft/master.svg?style=flat-square)](https://travis-ci.org/lokiuz/redraft)
[![David](https://img.shields.io/david/lokiuz/redraft.svg?style=flat-square)](https://david-dm.org/lokiuz/redraft)

@@ -42,7 +42,5 @@

// just a helper to add a <br /> after a block
const addBreaklines = (children) => children.map(child => [child, <br />]);
/**

@@ -71,5 +69,7 @@ * Define the renderers

// You can also access the original keys of the blocks
'code-block': (children, depth, keys) => <pre style={styles.codeBlock} key={keys[0]} >{addBreaklines(children)}</pre>,
'unordered-list-item': (children, depth, keys) => <ul key={keys[keys.length - 1]} class={`ul-level-${depth}`}>{children.map(child => <li>{child}</li>)}</ul>,
'ordered-list-item': (children, depth, keys) => <ol key={keys.join('|')} class={`ol-level-${depth}`}>{children.map((child, index)=> <li key={keys[index]}>{child}</li>)}</ol>,
'code-block': (children, depth, { keys }) => <pre style={styles.codeBlock} key={keys[0]} >{addBreaklines(children)}</pre>,
'unordered-list-item': (children, depth, { keys }) => <ul key={keys[keys.length - 1]} class={`ul-level-${depth}`}>{children.map(child => <li>{child}</li>)}</ul>,
'ordered-list-item': (children, depth, { keys }) => <ol key={keys.join('|')} class={`ol-level-${depth}`}>{children.map((child, index)=> <li key={keys[index]}>{child}</li>)}</ol>,
// If your blocks use meta data it can also be accessed like keys
atomic: (children, depth, { keys, data }) => children.map((child, i) => <Atomic key={keys[i] {...data[i]} />),
},

@@ -117,11 +117,5 @@ /**

## API changes in 0.3.0
Redraft now exports a default function - this is the recommended way to import the render method.
Additionally renderers should now be passed as a single object containing `inline`, `blocks` and `entities`
Previous api is deprecated and will log warnings if `NODE_ENV` is not set to `production`, and will be removed in next minor version.
## API
```js
redraft(Object:raw, Object:renderers)
redraft(Object:raw, Object:renderers, Object:options)
```

@@ -131,2 +125,3 @@ Returns an array of rendered blocks.

- renderers - object with 3 groups of renders inline, blocks and entities refer to example for more info
- options - optional settings

@@ -139,3 +134,3 @@ ```js

```js
renderNode(Object:node, Object:inlineRendrers, Object:entityRenderers, Object:entityMap)
renderNode(Object:node, Object:inlineRendrers, Object:entityRenderers, Object:entityMap, Object:options)
```

@@ -147,8 +142,15 @@ Returns an rendered single block.

### Options
- `cleanup` - cleans up blocks with no text or data (metadata or entities), by default cleanup only removes empty `unstyled` blocks inserted directly after `atomic`. Accepts false or an object containing cleanup settings:
- `after` - array of block types that are followed by cleanup checks, or `'all'` (default: `['atomic']`)
- `types` - array of block types that are checked, or `'all'` (default: `['unstyled']`)
- `except` - array of block types that are omitted during cleanup - passing this is same as setting types to `'all'` (default: `undefined`)
- `trim` - boolean, should the block text be trimmed when checking if its empty (default: `false`)
- `joinOutput` - used when rendering to string, joins the output and the children of all the inline and entity renderers, it expects that all renderers return strings, you still have to join the at block level (default: `false`)
## Changelog
The changelog is avalible here [CHANGELOG](CHANGELOG.md)
## Credits
- [backdraft-js](https://github.com/evanc/backdraft-js) - For providing a general method of parsing raw state
- [Draft.js](https://facebook.github.io/draft-js) - Well for Draft

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet