1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-08-16 04:04:06 +02:00
Commit Graph

1000 Commits

Author SHA1 Message Date
Ian Storm Taylor
1efe55602f Publish
- slate-hotkeys@0.2.0
 - slate-react@0.15.2
2018-08-07 16:03:20 -07:00
Ian Storm Taylor
fd9243b8f5 refactor slate-hotkeys, fix deleting at start of block (#2048) 2018-08-07 15:58:33 -07:00
Slapbox
3eabdea8d6 Adds Unicode LF character to line endings for clipboard plaintext (#2040)
* Adds Unicode LF character to line endings for clipboard plaintext

This addresses https://github.com/ianstormtaylor/slate/issues/1932

* Fixes plaintext/unicode pastes not having line breaks

* Removes stray spaces for Prettier

* Refactors Value creation to save 4 lines
2018-08-07 08:43:17 -07:00
Ian Storm Taylor
7e0929bd22 Publish
- slate-base64-serializer@0.2.47
 - slate-html-serializer@0.6.19
 - slate-hyperscript@0.7.1
 - slate-plain-serializer@0.5.28
 - slate-prop-types@0.4.45
 - slate-react@0.15.1
 - slate-schema-violations@0.1.26
 - slate-simulator@0.4.45
 - slate@0.37.1
2018-08-06 13:16:46 -07:00
Jinxuan Zhu
58c644323f Add coverage test with mocha and codecov (#2037)
* Run mocha test with module alias

* Running test with babel module alias

* Fix model alias

* Fix model alias

* Resolve module alias

* Running test with babel module alias

* Connect to codecov

* add codecov to travis

* stop if yarn test has errors

* Still cannot collect data from slate modules

* Try to check whether it works with codecov

* Move config to nycrc

* Remove nyc require

* Update nyc to use src

* better before_script
2018-08-06 10:31:42 -07:00
Ian Storm Taylor
07d7f51bbc Publish
- slate-base64-serializer@0.2.46
 - slate-html-serializer@0.6.18
 - slate-hyperscript@0.7.0
 - slate-plain-serializer@0.5.27
 - slate-prop-types@0.4.44
 - slate-react@0.15.0
 - slate-schema-violations@0.1.25
 - slate-simulator@0.4.44
 - slate@0.37.0
2018-08-03 15:41:27 -07:00
Ian Storm Taylor
ea6c4d9da2 update peerDependencies 2018-08-03 15:11:28 -07:00
Ian Storm Taylor
f6065e9eb8 update changelog 2018-08-03 15:05:43 -07:00
Ian Storm Taylor
08f270dc1b Add a Point model, and standardize Range/Point logic (#2035)
* add `Node.createRange` for range resolution

* fix lint

* fix range offset defaults to be `null`

* change `isBackward` to be computed from paths

* remove debuggers

* add point model, update range with deprecations, update hyperscript

* got all tests passing

* get tests passing, convert changes

* fix lint

* fix examples

* update deprecations

* update docs

* update slate-react point utils

* fix document.normalizeRange

* fix lint
2018-08-03 14:45:40 -07:00
Ian Storm Taylor
de3420b0f1 add Node.createRange for range resolution (#2025)
#### Is this adding or improving a _feature_ or fixing a _bug_?

Improvement.

#### What's the new behavior?

Adds a `Node.createRange` method for more easily creating ranges that are normalized to the current document. As well as a `Node.resolveRange` lower-level method for just doing the normalization on an existing range.

Later we can deprecate `Range.normalize` since it should be on the node instead.

#### Have you checked that...?

<!-- 
Please run through this checklist for your pull request: 
-->

* [x] The new code matches the existing patterns and styles.
* [x] The tests pass with `yarn test`.
* [x] The linter passes with `yarn lint`. (Fix errors with `yarn prettier`.)
* [x] The relevant examples still work. (Run examples with `yarn watch`.)

#### Does this fix any issues or need any specific reviewers?

Fixes: #2011
2018-08-03 14:16:47 -07:00
Ian Storm Taylor
6fd185e172 Publish
- slate-base64-serializer@0.2.45
 - slate-dev-benchmark@0.0.4
 - slate-dev-environment@0.1.4
 - slate-dev-logger@0.1.42
 - slate-dev-test-utils@0.0.1
 - slate-hotkeys@0.1.4
 - slate-html-serializer@0.6.17
 - slate-hyperscript@0.6.3
 - slate-plain-serializer@0.5.26
 - slate-prop-types@0.4.43
 - slate-react@0.14.3
 - slate-schema-violations@0.1.24
 - slate-simulator@0.4.43
 - slate@0.36.2
2018-08-01 12:07:02 -07:00
Ian Storm Taylor
5e6d376501 fix selection operations being duplicated (#2023)
#### Is this adding or improving a _feature_ or fixing a _bug_?

Bug.

#### What's the new behavior?

Fixes selection operations from being duplicated.

#### How does this change work?

Previously the selection properties were compared by reference, but paths are immutable `List` objects, which always show up as having changed, resulting in extra selection operations that without any real changes. We now use `Immutable.is` to remove those duplicates, fixing the undo history stack.

#### Have you checked that...?

<!-- 
Please run through this checklist for your pull request: 
-->

* [x] The new code matches the existing patterns and styles.
* [x] The tests pass with `yarn test`.
* [x] The linter passes with `yarn lint`. (Fix errors with `yarn prettier`.)
* [x] The relevant examples still work. (Run examples with `yarn watch`.)

#### Does this fix any issues or need any specific reviewers?

Fixes: #2006
2018-08-01 11:55:45 -07:00
Ian Storm Taylor
1748a4b0c1 Refactor tests (#2021)
* add slate-dev-test-utils, refactor tests to use fixtures util

* cleanup top-level test files

* tweaks
2018-08-01 09:16:02 -07:00
Ian Storm Taylor
64000a97aa Publish
- slate-base64-serializer@0.2.44
 - slate-html-serializer@0.6.16
 - slate-hyperscript@0.6.2
 - slate-plain-serializer@0.5.25
 - slate-prop-types@0.4.42
 - slate-react@0.14.2
 - slate-schema-violations@0.1.23
 - slate-simulator@0.4.42
 - slate@0.36.1
2018-07-31 16:31:54 -07:00
Ian Storm Taylor
638d3e8e61 Publish
- slate-base64-serializer@0.2.43
 - slate-dev-logger@0.1.41
 - slate-html-serializer@0.6.15
 - slate-hyperscript@0.6.1
 - slate-plain-serializer@0.5.24
 - slate-prop-types@0.4.41
 - slate-react@0.14.1
 - slate-schema-violations@0.1.22
 - slate-simulator@0.4.41
 - slate@0.36.0
2018-07-27 15:50:29 -07:00
Ian Storm Taylor
ded82812b0 Refactor schema (#1993)
#### Is this adding or improving a _feature_ or fixing a _bug_?

Improvement.

#### What's the new behavior?

- Tweaking the declarative schema definition syntax to make it easier to represent more complex states, as well as enable it to validate previously impossible things.
- Rename `validateNode` to `normalizeNode` for clarity.
- Introduce `validateNode`, `checkNode`, `assertNode` helpers for more advanced use cases, like front-end API validation of "invalid" fields that need to be fixed before they are sent to the server.

#### How does this change work?

The `schema.blocks/inlines/document` entries are now a shorthand for a more powerful `schema.rules` syntax. For example, this now allows for declaratively validating by a node's data, regardless of type:

```js
{
  rules: [
    {
      match: {
        data: { id: '2kd293lry' },
      },
      nodes: [
        { match: { type: 'paragraph' }},
        { match: { type: 'image' }},
      ]
    }
  ]
}
```

Previously you'd have to use `validateNode` for this, since the syntax wasn't flexible enough to validate nodes without hard-coding their `type`.

This also simplifies the "concatenation" of schema rules, because under the covers all of them are implemented using the `schema.rules` array, so they simply take effect in order, just like everything else in plugins.

#### Have you checked that...?

<!-- 
Please run through this checklist for your pull request: 
-->

* [x] The new code matches the existing patterns and styles.
* [x] The tests pass with `yarn test`.
* [x] The linter passes with `yarn lint`. (Fix errors with `yarn prettier`.)
* [x] The relevant examples still work. (Run examples with `yarn watch`.)

#### Does this fix any issues or need any specific reviewers?

Fixes: #1842
Fixes: #1923
2018-07-27 15:27:07 -07:00
Ian Storm Taylor
8deecc4461 Publish
- slate-base64-serializer@0.2.42
 - slate-dev-benchmark@0.0.3
 - slate-dev-environment@0.1.3
 - slate-dev-logger@0.1.40
 - slate-hotkeys@0.1.3
 - slate-html-serializer@0.6.14
 - slate-hyperscript@0.6.0
 - slate-plain-serializer@0.5.23
 - slate-prop-types@0.4.40
 - slate-react@0.14.0
 - slate-schema-violations@0.1.21
 - slate-simulator@0.4.40
 - slate@0.35.0
2018-07-27 12:42:43 -07:00
Ian Storm Taylor
01405be31b add paths to ranges (#1997)
#### Is this adding or improving a _feature_ or fixing a _bug_?

Feature.

#### What's the new behavior?

This pull request adds paths to `Range` objects, including the selection. The paths and keys are kept in sync automatically, so that you can use whichever is ideal for your use case.

This should allow us to use paths for lots of the internal logic, which are much quicker to work with than keys since they avoid having to lookup the key in the document and can just traverse right to the node in question.

#### How does this change work?

`Range` objects have two new properties:

```js
range.anchorPath
range.focusPath
```

(Eventually these will be `range.anchor.path` and `range.focus.path` when points are introduced.)

When operations occur and whenever ranges are created/normalized, the paths are updated and kept in sync with the keys.

#### Have you checked that...?

<!-- 
Please run through this checklist for your pull request: 
-->

* [x] The new code matches the existing patterns and styles.
* [x] The tests pass with `yarn test`.
* [x] The linter passes with `yarn lint`. (Fix errors with `yarn prettier`.)
* [x] The relevant examples still work. (Run examples with `yarn watch`.)

#### Does this fix any issues or need any specific reviewers?

Fixes: https://github.com/ianstormtaylor/slate/issues/1408
Fixes: https://github.com/ianstormtaylor/slate/issues/1567
2018-07-27 12:40:04 -07:00
Ian Storm Taylor
695f83bd40 Publish
- slate-base64-serializer@0.2.41
 - slate-html-serializer@0.6.13
 - slate-hyperscript@0.5.22
 - slate-plain-serializer@0.5.22
 - slate-prop-types@0.4.39
 - slate-react@0.13.4
 - slate-schema-violations@0.1.20
 - slate-simulator@0.4.39
 - slate@0.34.7
2018-07-23 12:57:22 -07:00
Ian Storm Taylor
1c3415b950 Publish
- slate-base64-serializer@0.2.40
 - slate-dev-benchmark@0.0.2
 - slate-html-serializer@0.6.12
 - slate-hyperscript@0.5.21
 - slate-plain-serializer@0.5.21
 - slate-prop-types@0.4.38
 - slate-react@0.13.3
 - slate-schema-violations@0.1.19
 - slate-simulator@0.4.38
 - slate@0.34.6
2018-07-19 14:05:25 -07:00
Jinxuan Zhu
8f9bfdac2b Benchmark consistence && Allow users to select benches to run (#1765)
* Use slate rather than relative path

* Move benchmark to one dir

* Use slate-* instead of relative path

* Before and After Function

* Remove un-necessary cross-env

* Hard fix

* Lint the hard fix

* Reset memory in bench()

* Working on Benchmark Frameworks

* Rename to slate-dev-benchmark

* Add packages

* Fix prettier bug

* Benchmark framework is in working

* Do not log in test

* max times test

* mute logger in test

* add hr time

* Better support for maxTime; add support of split runs to save memory space

* Fix maxTries

* Add global.gc

* Global gc for each bench

* Better test interface

* Test max-time

* Test max-time done

* Add Benchmark among packages

* Starting to get benchmark running

* Pure Node lib

* Change babelrc for pure Node benchmark

* Moving Benchmarks

* Get benchmark and test running

* Get benchmark for slate-html-serializer

* add slate-react

* add slate/changes

* all benchmarks are converted

* Run benchmark by yarn

* Run benchmark with expose-gc

* Annotate Bench.js

* Do not bundle slate-dev-benchmark in rollup

* Add annotation

* Allow config file to enable part benchmark compare

* Add config for compare

* support compare.js

* Do not re-allocate memory; due to a large heap taken influence result

* Render with Decorations

* get active marks at range

* Fix bug in showing percents

* Fix percent showing bug

* chore: add more benches

* Better output of benchmark

* Fix linting

* decoration and normal as different benchmark test

* Fix deserialize benchmark

* README.md

* Fix Readme.md

* README.md

* block-spacing config

* safer user config loading

* use package.json to load package in test

* Consistent linting

* move components to parent directory

* Annotation styling in package

* margin line before multi-line block

* Fix naive bug

* Fix naive bug

* Fix a blank line

* only log user and hr

* Better name

* Better annotation for runBundleTasks

* Fix typo

* Better logger

* Move async to test

* Omit skip

* Only log the user space time

* Single line async sleep

* file name fix

* Fix annotation

* Better output of compare

* Remove get-characters(-at-range) benchmarks

* Restore emoji

* Capitalize types

* Remove compare to another area

* Add grep and config interface

* Linting files

* Linting benchmarks

* Linting benchmarks

* Update yarn.lock
2018-07-19 13:01:55 -07:00
Dylan Phelan
09c93a6cd4 Initial fixes for IE compat of cloneFragment (#1943)
* Initial fixes for IE compat of cloneFragment

* Used prettier to fix styling

* Removed solutions that can be polyfilled; added COMPAT comment

* Updated FAQ to reflect ideology towards IE

* Update faq.md

* Update faq.md

* Update faq.md
2018-07-19 12:53:38 -07:00
Rik
3405e2f822 Allow onContextMenu even handler (#1956)
Right clicks aren't handled by onClick in a content-editable component. So we need access to a onContextMenu handler to handle these events properly.
My use case is to be able to open a context menu with actions when the user right-clicks a specific inline node.
2018-07-19 12:13:13 -07:00
Justin Weiss
6e749e2f0e Fix drag-and-drop issues in IE11 (#1967)
There were three problems preventing drag-and-drop in IE:

* IE [doesn't consider contentEditables as inputs](https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/913982/) when it comes to calling `onDrop`.
* Setting `dropEffect` causes an `unspecified error`.
* You can only get a cursor position from a point with `createTextRange` and `moveToPoint`. Also, `moveToPoint` raises an error if it's called during a dropEvent.
2018-07-19 12:01:46 -07:00
Ian Storm Taylor
4b15481f92 Publish
- slate-base64-serializer@0.2.39
 - slate-html-serializer@0.6.11
 - slate-hyperscript@0.5.20
 - slate-plain-serializer@0.5.20
 - slate-prop-types@0.4.37
 - slate-react@0.13.2
 - slate-schema-violations@0.1.18
 - slate-simulator@0.4.37
 - slate@0.34.5
2018-07-05 08:57:50 -07:00
Ian Storm Taylor
30d0d055b5 unpeg monorepo dev dependencies 2018-07-05 08:56:08 -07:00
Ian Storm Taylor
facd857111 Publish
- slate-base64-serializer@0.2.38
 - slate-html-serializer@0.6.10
 - slate-hyperscript@0.5.19
 - slate-plain-serializer@0.5.19
 - slate-prop-types@0.4.36
 - slate-react@0.13.1
 - slate-schema-violations@0.1.17
 - slate-simulator@0.4.36
 - slate@0.34.4
2018-07-05 08:47:29 -07:00
Ian Storm Taylor
57138de130 Publish
- slate-base64-serializer@0.2.37
 - slate-html-serializer@0.6.9
 - slate-hyperscript@0.5.18
 - slate-plain-serializer@0.5.18
 - slate-prop-types@0.4.35
 - slate-react@0.13.0
 - slate-schema-violations@0.1.16
 - slate-simulator@0.4.35
 - slate@0.34.3
2018-07-03 16:12:47 -07:00
Ian Storm Taylor
e2135c3853 update changelog 2018-07-03 16:11:02 -07:00
Samy Pessé
0ceefea2e7 Add prop "isFocused" / "isSelected" for custom nodes (#1950)
* Change the definition of isSelected and add isFocused

* Document prop "isFocused"

* Add unit tests for isFocused / isSelected

* Adapt examples

* Lint
2018-07-03 16:07:38 -07:00
Ian Storm Taylor
d29fc26edf Publish
- slate-base64-serializer@0.2.36
 - slate-html-serializer@0.6.8
 - slate-hyperscript@0.5.17
 - slate-plain-serializer@0.5.17
 - slate-prop-types@0.4.34
 - slate-react@0.12.11
 - slate-schema-violations@0.1.15
 - slate-simulator@0.4.34
 - slate@0.34.2
2018-06-22 08:56:51 -07:00
Quentin Gérôme
ec51444df1 fix(Safari): Set a text value in dataTransfer to have the cursor on Safari when dragging a text node (#1927) 2018-06-22 08:52:02 -07:00
Quentin Gérôme
d8d0b5ff3c fix(DragAndDrop): isDraggingInternally should not be reset by the onDragOver handler (#1929)
Fixes #1871
2018-06-22 08:50:51 -07:00
Jinxuan Zhu
0322f7a1b8 Fix a linter bug in a semi-colon case (#1928) 2018-06-22 08:48:36 -07:00
Jinxuan Zhu
e4ff1972d7 Ensure multi-line expressions are padded by eslint (#1924)
* Fix eslint rule and upgrade eslint

* Fix for switch case

* Linting files
2018-06-21 19:27:10 -07:00
Ian Storm Taylor
1cc486e28c Publish
- slate-base64-serializer@0.2.35
 - slate-html-serializer@0.6.7
 - slate-hyperscript@0.5.16
 - slate-plain-serializer@0.5.16
 - slate-prop-types@0.4.33
 - slate-react@0.12.10
 - slate-schema-violations@0.1.14
 - slate-simulator@0.4.33
 - slate@0.34.1
2018-06-19 19:36:03 -07:00
Ian Storm Taylor
d884be872d Publish
- slate-base64-serializer@0.2.34
 - slate-html-serializer@0.6.6
 - slate-hyperscript@0.5.15
 - slate-plain-serializer@0.5.15
 - slate-prop-types@0.4.32
 - slate-react@0.12.9
 - slate-schema-violations@0.1.13
 - slate-simulator@0.4.32
 - slate@0.34.0
2018-06-14 19:55:55 -07:00
Ian Storm Taylor
63eae6b48b Publish
- slate-base64-serializer@0.2.33
 - slate-html-serializer@0.6.5
 - slate-hyperscript@0.5.14
 - slate-plain-serializer@0.5.14
 - slate-prop-types@0.4.31
 - slate-react@0.12.8
 - slate-schema-violations@0.1.12
 - slate-simulator@0.4.31
 - slate@0.33.8
2018-06-14 19:22:05 -07:00
David Chang
5eb04f3650 [slate-react] Pass renderEditor prop through into editor plugin (#1899) 2018-06-14 18:17:44 -07:00
DylanPaulusSEL
9660c4bdaa Fix issue with pasting in IE11 (#1901)
* Fix issue with pasting in IE11

Fixing the issue where dataTransfer or clipboardData are not populated,
in IE 11 under event.NativeEvent. Instead, if we are using IE11, use
the base event object instead which contains a valid dataTrasnfer/clipboardData object.

* Run prettier on code changes
2018-06-14 18:15:09 -07:00
Jinxuan Zhu
5aa993e81d Allow user to use immutable 4.0.0-rc without yarn warning (#1869)
* Allow user to use immutable 4.0.0-rc without yarn warning

* Fix versions

* Fix immutable version to most recent

* Fix versions for react
2018-06-14 18:08:45 -07:00
Ian Storm Taylor
b13affefd6 Publish
- slate-base64-serializer@0.2.32
 - slate-html-serializer@0.6.4
 - slate-hyperscript@0.5.13
 - slate-plain-serializer@0.5.13
 - slate-prop-types@0.4.30
 - slate-react@0.12.7
 - slate-schema-violations@0.1.11
 - slate-simulator@0.4.30
 - slate@0.33.7
2018-06-10 17:05:20 -07:00
Irwan Fario Subastian
7f91d0b557 Inline Void block cursor (#1886)
* add contentEditable=false to void block wrapper

* put contentEditable fals on inline void

fix from https://github.com/ianstormtaylor/slate/pull/1734 works for block but inline void have a cursor which shouldn’t be there as typing inside inline void won’t work. so only removing contentEditable on blocks but not inline

* update test
2018-06-10 16:59:16 -07:00
Tobias Andersen
ee8bc1b695 Use cleaned up text content when copying into plain/text (#1865) 2018-06-10 16:48:28 -07:00
Alban Suchaire
9fc8b1085a Set position data-slate-spacer block (#1862)
* Add position absolute to `data-slate-spacer` block

* Fix lint && update test
2018-06-10 16:26:51 -07:00
Cyril Auburtin
48caf855eb avoid innerText (#1837)
better to avoid innerText https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#Differences_from_innerText
2018-05-20 23:32:09 -07:00
Tobias Andersen
b4422ad6b3 Fix invalid ranges in getEventRange (#1849) 2018-05-20 23:30:37 -07:00
Tobias Andersen
ffb19cac1a Remove legacy COMPAT code from cloneFragment (#1836) 2018-05-11 08:54:19 -07:00
Ian Storm Taylor
c1bad2b84c Publish
- slate-base64-serializer@0.2.31
 - slate-dev-environment@0.1.2
 - slate-hotkeys@0.1.2
 - slate-html-serializer@0.6.3
 - slate-hyperscript@0.5.12
 - slate-plain-serializer@0.5.12
 - slate-prop-types@0.4.29
 - slate-react@0.12.6
 - slate-schema-violations@0.1.10
 - slate-simulator@0.4.29
 - slate@0.33.6
2018-05-10 19:50:06 -07:00
Tobias Andersen
62d87b23c0 Set clipboard data programmitcally on copy when supported (#1815) 2018-05-10 19:45:40 -07:00