New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

slate-react

Package Overview
Dependencies
Maintainers
1
Versions
835
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

slate-react - npm Package Compare versions

Comparing version 0.10.20 to 0.10.21

lib/utils/clone-fragment.js

8

lib/index.js

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

});
exports.setEventTransfer = exports.getEventTransfer = exports.getEventRange = exports.findRange = exports.findNode = exports.findDOMRange = exports.findDOMNode = exports.Editor = undefined;
exports.setEventTransfer = exports.getEventTransfer = exports.getEventRange = exports.findRange = exports.findNode = exports.findDOMRange = exports.findDOMNode = exports.cloneFragment = exports.Editor = undefined;

@@ -13,2 +13,6 @@ var _editor = require('./components/editor');

var _cloneFragment = require('./utils/clone-fragment');
var _cloneFragment2 = _interopRequireDefault(_cloneFragment);
var _findDomNode = require('./utils/find-dom-node');

@@ -51,2 +55,3 @@

exports.Editor = _editor2.default;
exports.cloneFragment = _cloneFragment2.default;
exports.findDOMNode = _findDomNode2.default;

@@ -61,2 +66,3 @@ exports.findDOMRange = _findDomRange2.default;

Editor: _editor2.default,
cloneFragment: _cloneFragment2.default,
findDOMNode: _findDomNode2.default,

@@ -63,0 +69,0 @@ findDOMRange: _findDomRange2.default,

140

lib/plugins/after.js

@@ -43,2 +43,6 @@ 'use strict';

var _cloneFragment = require('../utils/clone-fragment');
var _cloneFragment2 = _interopRequireDefault(_cloneFragment);
var _findDomNode = require('../utils/find-dom-node');

@@ -72,4 +76,2 @@

var _environment = require('../constants/environment');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -162,3 +164,3 @@

onCutOrCopy(event, change);
(0, _cloneFragment2.default)(event, change.value);
}

@@ -177,3 +179,3 @@

onCutOrCopy(event, change);
(0, _cloneFragment2.default)(event, change.value);
var window = (0, _getWindow2.default)(event.target);

@@ -211,132 +213,2 @@

/**
* On cut or copy.
*
* @param {Event} event
* @param {Change} change
* @param {Editor} editor
*/
function onCutOrCopy(event, change, editor) {
var window = (0, _getWindow2.default)(event.target);
var native = window.getSelection();
var value = change.value;
var startKey = value.startKey,
endKey = value.endKey,
startText = value.startText,
endBlock = value.endBlock,
endInline = value.endInline;
var isVoidBlock = endBlock && endBlock.isVoid;
var isVoidInline = endInline && endInline.isVoid;
var isVoid = isVoidBlock || isVoidInline;
// If the selection is collapsed, and it isn't inside a void node, abort.
if (native.isCollapsed && !isVoid) return;
// Create a fake selection so that we can add a Base64-encoded copy of the
// fragment to the HTML, to decode on future pastes.
var fragment = value.fragment;
var encoded = _slateBase64Serializer2.default.serializeNode(fragment);
var range = native.getRangeAt(0);
var contents = range.cloneContents();
var attach = contents.childNodes[0];
// If the end node is a void node, we need to move the end of the range from
// the void node's spacer span, to the end of the void node's content.
if (isVoid) {
var _r = range.cloneRange();
var n = isVoidBlock ? endBlock : endInline;
var node = (0, _findDomNode2.default)(n, window);
_r.setEndAfter(node);
contents = _r.cloneContents();
attach = contents.childNodes[contents.childNodes.length - 1].firstChild;
}
// COMPAT: in Safari and Chrome when selecting a single marked word,
// marks are not preserved when copying.
// If the attatched is not void, and the startKey and endKey is the same,
// check if there is marks involved. If so, set the range start just before the
// startText node
if ((_environment.IS_CHROME || _environment.IS_SAFARI) && !isVoid && startKey === endKey) {
var hasMarks = startText.characters.slice(value.selection.anchorOffset, value.selection.focusOffset).filter(function (char) {
return char.marks.size !== 0;
}).size !== 0;
if (hasMarks) {
var _r2 = range.cloneRange();
var _node = (0, _findDomNode2.default)(startText, window);
_r2.setStartBefore(_node);
contents = _r2.cloneContents();
attach = contents.childNodes[contents.childNodes.length - 1].firstChild;
}
}
// Remove any zero-width space spans from the cloned DOM so that they don't
// show up elsewhere when pasted.
var zws = [].slice.call(contents.querySelectorAll('[data-slate-zero-width]'));
zws.forEach(function (zw) {
return zw.parentNode.removeChild(zw);
});
// COMPAT: In Chrome and Safari, if the last element in the selection to
// copy has `contenteditable="false"` the copy will fail, and nothing will
// be put in the clipboard. So we remove them all. (2017/05/04)
if (_environment.IS_CHROME || _environment.IS_SAFARI) {
var els = [].slice.call(contents.querySelectorAll('[contenteditable="false"]'));
els.forEach(function (el) {
return el.removeAttribute('contenteditable');
});
}
// Set a `data-slate-fragment` attribute on a non-empty node, so it shows up
// in the HTML, and can be used for intra-Slate pasting. If it's a text
// node, wrap it in a `<span>` so we have something to set an attribute on.
if (attach.nodeType == 3) {
var span = window.document.createElement('span');
// COMPAT: In Chrome and Safari, if we don't add the `white-space` style
// then leading and trailing spaces will be ignored. (2017/09/21)
span.style.whiteSpace = 'pre';
span.appendChild(attach);
contents.appendChild(span);
attach = span;
}
attach.setAttribute('data-slate-fragment', encoded);
// Add the phony content to the DOM, and select it, so it will be copied.
var body = window.document.querySelector('body');
var div = window.document.createElement('div');
div.setAttribute('contenteditable', true);
div.style.position = 'absolute';
div.style.left = '-9999px';
// COMPAT: In Firefox, the viewport jumps to find the phony div, so it
// should be created at the current scroll offset with `style.top`.
// The box model attributes which can interact with 'top' are also reset.
div.style.border = '0px';
div.style.padding = '0px';
div.style.margin = '0px';
div.style.top = (window.pageYOffset || window.document.documentElement.scrollTop) + 'px';
div.appendChild(contents);
body.appendChild(div);
// COMPAT: In Firefox, trying to use the terser `native.selectAllChildren`
// throws an error, so we use the older `range` equivalent. (2016/06/21)
var r = window.document.createRange();
r.selectNodeContents(div);
native.removeAllRanges();
native.addRange(r);
// Revert to the previous selection right after copying.
window.requestAnimationFrame(function () {
body.removeChild(div);
native.removeAllRanges();
native.addRange(range);
});
}
/**
* On drag end.

@@ -343,0 +215,0 @@ *

@@ -15,2 +15,4 @@ 'use strict';

var _environment = require('../constants/environment');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -85,10 +87,18 @@

// https://bugs.chromium.org/p/chromium/issues/detail?id=435438
if (range.collapsed && selectionRect.top == 0 && selectionRect.height == 0) {
if (range.startOffset == 0) {
range.setEnd(range.endContainer, 1);
} else {
range.setStart(range.startContainer, range.startOffset - 1);
if (_environment.IS_SAFARI) {
if (range.collapsed && selectionRect.top == 0 && selectionRect.height == 0) {
if (range.startOffset == 0) {
range.setEnd(range.endContainer, 1);
} else {
range.setStart(range.startContainer, range.startOffset - 1);
}
selectionRect = range.getBoundingClientRect();
if (selectionRect.top == 0 && selectionRect.height == 0) {
if (range.getClientRects().length) {
selectionRect = range.getClientRects()[0];
}
}
}
selectionRect = range.getBoundingClientRect();
}

@@ -95,0 +105,0 @@

{
"name": "slate-react",
"description": "A set of React components for building completely customizable rich-text editors.",
"version": "0.10.20",
"version": "0.10.21",
"license": "MIT",

@@ -20,6 +20,6 @@ "repository": "git://github.com/ianstormtaylor/slate.git",

"selection-is-backward": "^1.0.0",
"slate-base64-serializer": "^0.2.15",
"slate-base64-serializer": "^0.2.16",
"slate-dev-logger": "^0.1.36",
"slate-plain-serializer": "^0.4.13",
"slate-prop-types": "^0.4.13"
"slate-plain-serializer": "^0.4.14",
"slate-prop-types": "^0.4.14"
},

@@ -29,3 +29,3 @@ "peerDependencies": {

"react-dom": "^0.14.0 || ^15.0.0 || ^16.0.0",
"slate": "^0.31.5"
"slate": "^0.31.6"
},

@@ -36,5 +36,5 @@ "devDependencies": {

"mocha": "^2.5.3",
"slate": "^0.31.5",
"slate-hyperscript": "^0.4.13",
"slate-simulator": "^0.4.13",
"slate": "^0.31.6",
"slate-hyperscript": "^0.4.14",
"slate-simulator": "^0.4.14",
"uglify-js": "^2.7.0"

@@ -41,0 +41,0 @@ },

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc