diff --git a/.changeset/slate-react.md b/.changeset/slate-react.md deleted file mode 100644 index 00a410ae5..000000000 --- a/.changeset/slate-react.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'slate-react': patch ---- - -Interface methods JSDoc should now work on IDEs. diff --git a/.changeset/slate.md b/.changeset/slate.md deleted file mode 100644 index a2c1f53ff..000000000 --- a/.changeset/slate.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -'slate': minor ---- - -New Features: - -- All **`Editor`** and **`Transforms`** methods now call **`editor`** methods. For example: **`Transforms.insertBreak`** now calls **`editor.insertBreak`**. -- **`editor.setNodes`** now calls **`setNodes`**, an exported function that implements the default editor behavior. -- You can now override **`editor.setNodes`** with your own implementation. -- You can use either **`Editor.setNodes`** or **`editor.setNodes`** in your code, and both will use your overridden behavior. - -The **`editor`** object now has many more methods: - -```tsx -export interface BaseEditor { - // Core state. - - children: Descendant[] - selection: Selection - operations: Operation[] - marks: EditorMarks | null - - // Overrideable core methods. - - apply: (operation: Operation) => void - getDirtyPaths: (operation: Operation) => Path[] - getFragment: () => Descendant[] - isElementReadOnly: (element: Element) => boolean - isSelectable: (element: Element) => boolean - markableVoid: (element: Element) => boolean - normalizeNode: (entry: NodeEntry, options?: { operation?: Operation }) => void - onChange: (options?: { operation?: Operation }) => void - shouldNormalize: ({ - iteration, - dirtyPaths, - operation, - }: { - iteration: number - initialDirtyPathsLength: number - dirtyPaths: Path[] - operation?: Operation - }) => boolean - - // Overrideable core transforms. - - addMark: OmitFirstArg - collapse: OmitFirstArg - delete: OmitFirstArg - deleteBackward: (unit: TextUnit) => void - deleteForward: (unit: TextUnit) => void - deleteFragment: OmitFirstArg - deselect: OmitFirstArg - insertBreak: OmitFirstArg - insertFragment: OmitFirstArg - insertNode: OmitFirstArg - insertNodes: OmitFirstArg - insertSoftBreak: OmitFirstArg - insertText: OmitFirstArg - liftNodes: OmitFirstArg - mergeNodes: OmitFirstArg - move: OmitFirstArg - moveNodes: OmitFirstArg - normalize: OmitFirstArg - removeMark: OmitFirstArg - removeNodes: OmitFirstArg - select: OmitFirstArg - setNodes: ( - props: Partial, - options?: { - at?: Location - match?: NodeMatch - mode?: MaximizeMode - hanging?: boolean - split?: boolean - voids?: boolean - compare?: PropsCompare - merge?: PropsMerge - } - ) => void - setNormalizing: OmitFirstArg - setPoint: OmitFirstArg - setSelection: OmitFirstArg - splitNodes: OmitFirstArg - unsetNodes: OmitFirstArg - unwrapNodes: OmitFirstArg - withoutNormalizing: OmitFirstArg - wrapNodes: OmitFirstArg - - // Overrideable core queries. - - above: ( - options?: EditorAboveOptions - ) => NodeEntry | undefined - after: OmitFirstArg - before: OmitFirstArg - edges: OmitFirstArg - elementReadOnly: OmitFirstArg - end: OmitFirstArg - first: OmitFirstArg - fragment: OmitFirstArg - getMarks: OmitFirstArg - hasBlocks: OmitFirstArg - hasInlines: OmitFirstArg - hasPath: OmitFirstArg - hasTexts: OmitFirstArg - isBlock: OmitFirstArg - isEdge: OmitFirstArg - isEmpty: OmitFirstArg - isEnd: OmitFirstArg - isInline: OmitFirstArg - isNormalizing: OmitFirstArg - isStart: OmitFirstArg - isVoid: OmitFirstArg - last: OmitFirstArg - leaf: OmitFirstArg - levels: ( - options?: EditorLevelsOptions - ) => Generator, void, undefined> - next: ( - options?: EditorNextOptions - ) => NodeEntry | undefined - node: OmitFirstArg - nodes: ( - options?: EditorNodesOptions - ) => Generator, void, undefined> - parent: OmitFirstArg - path: OmitFirstArg - pathRef: OmitFirstArg - pathRefs: OmitFirstArg - point: OmitFirstArg - pointRef: OmitFirstArg - pointRefs: OmitFirstArg - positions: OmitFirstArg - previous: ( - options?: EditorPreviousOptions - ) => NodeEntry | undefined - range: OmitFirstArg - rangeRef: OmitFirstArg - rangeRefs: OmitFirstArg - start: OmitFirstArg - string: OmitFirstArg - unhangRange: OmitFirstArg - void: OmitFirstArg -} -``` - -Note: - -- None of these method implementations have changed. -- **`getMarks`** is an exception, as there is already **`editor.marks`** that stores the current marks. -- **`Transforms.insertText`** has not been moved to **`editor`** yet: there is already an **`editor.insertText`** method with extended behavior. This may change in a future release, but this release is trying to avoid any breaking changes. -- **`editor.insertText`** has a new argument (third): **`options?: TextInsertTextOptions`** to match **`Transforms.insertText`**. - -Bug Fixes: - -- Moving JSDoc's to the interface type to allow IDEs access to the interface methods. diff --git a/.changeset/tall-gorillas-deny.md b/.changeset/tall-gorillas-deny.md deleted file mode 100644 index 6258f548e..000000000 --- a/.changeset/tall-gorillas-deny.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'slate': patch ---- - -Correct core normalization that could cause wrong nodes to be removed diff --git a/packages/slate-history/package.json b/packages/slate-history/package.json index bb35dac39..14e4466ba 100644 --- a/packages/slate-history/package.json +++ b/packages/slate-history/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@babel/runtime": "^7.7.4", "lodash": "^4.17.21", - "slate": "^0.93.0", + "slate": "^0.94.0", "slate-hyperscript": "^0.81.3", "source-map-loader": "^4.0.0" }, diff --git a/packages/slate-hyperscript/package.json b/packages/slate-hyperscript/package.json index c2569d677..c420ed9a0 100644 --- a/packages/slate-hyperscript/package.json +++ b/packages/slate-hyperscript/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@babel/runtime": "^7.7.4", - "slate": "^0.93.0", + "slate": "^0.94.0", "source-map-loader": "^4.0.0" }, "peerDependencies": { diff --git a/packages/slate-react/CHANGELOG.md b/packages/slate-react/CHANGELOG.md index cc9675b64..e448d4700 100644 --- a/packages/slate-react/CHANGELOG.md +++ b/packages/slate-react/CHANGELOG.md @@ -1,5 +1,11 @@ # slate-react +## 0.94.0 + +### Patch Changes + +- [#5307](https://github.com/ianstormtaylor/slate/pull/5307) [`3243c7e3`](https://github.com/ianstormtaylor/slate/commit/3243c7e34ac2602618c67c88b1b7df07fde1c2ec) Thanks [@zbeyens](https://github.com/zbeyens)! - Interface methods JSDoc should now work on IDEs. + ## 0.93.0 ### Patch Changes diff --git a/packages/slate-react/package.json b/packages/slate-react/package.json index ef254b2b8..279da6099 100644 --- a/packages/slate-react/package.json +++ b/packages/slate-react/package.json @@ -1,7 +1,7 @@ { "name": "slate-react", "description": "Tools for building completely customizable richtext editors with React.", - "version": "0.93.0", + "version": "0.94.0", "license": "MIT", "repository": "git://github.com/ianstormtaylor/slate.git", "main": "dist/index.js", @@ -35,7 +35,7 @@ "react": ">=16.8.0", "react-dom": ">=16.8.0", "react-test-renderer": ">=16.8.0", - "slate": "^0.93.0", + "slate": "^0.94.0", "slate-hyperscript": "^0.81.3", "source-map-loader": "^4.0.0" }, diff --git a/packages/slate/CHANGELOG.md b/packages/slate/CHANGELOG.md index 6f040706c..91fdc1cea 100644 --- a/packages/slate/CHANGELOG.md +++ b/packages/slate/CHANGELOG.md @@ -1,5 +1,169 @@ # slate +## 0.94.0 + +### Minor Changes + +- [#5307](https://github.com/ianstormtaylor/slate/pull/5307) [`3243c7e3`](https://github.com/ianstormtaylor/slate/commit/3243c7e34ac2602618c67c88b1b7df07fde1c2ec) Thanks [@zbeyens](https://github.com/zbeyens)! - New Features: + + - All **`Editor`** and **`Transforms`** methods now call **`editor`** methods. For example: **`Transforms.insertBreak`** now calls **`editor.insertBreak`**. + - **`editor.setNodes`** now calls **`setNodes`**, an exported function that implements the default editor behavior. + - You can now override **`editor.setNodes`** with your own implementation. + - You can use either **`Editor.setNodes`** or **`editor.setNodes`** in your code, and both will use your overridden behavior. + + The **`editor`** object now has many more methods: + + ```tsx + export interface BaseEditor { + // Core state. + + children: Descendant[] + selection: Selection + operations: Operation[] + marks: EditorMarks | null + + // Overrideable core methods. + + apply: (operation: Operation) => void + getDirtyPaths: (operation: Operation) => Path[] + getFragment: () => Descendant[] + isElementReadOnly: (element: Element) => boolean + isSelectable: (element: Element) => boolean + markableVoid: (element: Element) => boolean + normalizeNode: ( + entry: NodeEntry, + options?: { operation?: Operation } + ) => void + onChange: (options?: { operation?: Operation }) => void + shouldNormalize: ({ + iteration, + dirtyPaths, + operation, + }: { + iteration: number + initialDirtyPathsLength: number + dirtyPaths: Path[] + operation?: Operation + }) => boolean + + // Overrideable core transforms. + + addMark: OmitFirstArg + collapse: OmitFirstArg + delete: OmitFirstArg + deleteBackward: (unit: TextUnit) => void + deleteForward: (unit: TextUnit) => void + deleteFragment: OmitFirstArg + deselect: OmitFirstArg + insertBreak: OmitFirstArg + insertFragment: OmitFirstArg + insertNode: OmitFirstArg + insertNodes: OmitFirstArg + insertSoftBreak: OmitFirstArg + insertText: OmitFirstArg + liftNodes: OmitFirstArg + mergeNodes: OmitFirstArg + move: OmitFirstArg + moveNodes: OmitFirstArg + normalize: OmitFirstArg + removeMark: OmitFirstArg + removeNodes: OmitFirstArg + select: OmitFirstArg + setNodes: ( + props: Partial, + options?: { + at?: Location + match?: NodeMatch + mode?: MaximizeMode + hanging?: boolean + split?: boolean + voids?: boolean + compare?: PropsCompare + merge?: PropsMerge + } + ) => void + setNormalizing: OmitFirstArg + setPoint: OmitFirstArg + setSelection: OmitFirstArg + splitNodes: OmitFirstArg + unsetNodes: OmitFirstArg + unwrapNodes: OmitFirstArg + withoutNormalizing: OmitFirstArg + wrapNodes: OmitFirstArg + + // Overrideable core queries. + + above: ( + options?: EditorAboveOptions + ) => NodeEntry | undefined + after: OmitFirstArg + before: OmitFirstArg + edges: OmitFirstArg + elementReadOnly: OmitFirstArg + end: OmitFirstArg + first: OmitFirstArg + fragment: OmitFirstArg + getMarks: OmitFirstArg + hasBlocks: OmitFirstArg + hasInlines: OmitFirstArg + hasPath: OmitFirstArg + hasTexts: OmitFirstArg + isBlock: OmitFirstArg + isEdge: OmitFirstArg + isEmpty: OmitFirstArg + isEnd: OmitFirstArg + isInline: OmitFirstArg + isNormalizing: OmitFirstArg + isStart: OmitFirstArg + isVoid: OmitFirstArg + last: OmitFirstArg + leaf: OmitFirstArg + levels: ( + options?: EditorLevelsOptions + ) => Generator, void, undefined> + next: ( + options?: EditorNextOptions + ) => NodeEntry | undefined + node: OmitFirstArg + nodes: ( + options?: EditorNodesOptions + ) => Generator, void, undefined> + parent: OmitFirstArg + path: OmitFirstArg + pathRef: OmitFirstArg + pathRefs: OmitFirstArg + point: OmitFirstArg + pointRef: OmitFirstArg + pointRefs: OmitFirstArg + positions: OmitFirstArg + previous: ( + options?: EditorPreviousOptions + ) => NodeEntry | undefined + range: OmitFirstArg + rangeRef: OmitFirstArg + rangeRefs: OmitFirstArg + start: OmitFirstArg + string: OmitFirstArg + unhangRange: OmitFirstArg + void: OmitFirstArg + } + ``` + + Note: + + - None of these method implementations have changed. + - **`getMarks`** is an exception, as there is already **`editor.marks`** that stores the current marks. + - **`Transforms.insertText`** has not been moved to **`editor`** yet: there is already an **`editor.insertText`** method with extended behavior. This may change in a future release, but this release is trying to avoid any breaking changes. + - **`editor.insertText`** has a new argument (third): **`options?: TextInsertTextOptions`** to match **`Transforms.insertText`**. + + Bug Fixes: + + - Moving JSDoc's to the interface type to allow IDEs access to the interface methods. + +### Patch Changes + +- [#5396](https://github.com/ianstormtaylor/slate/pull/5396) [`bc945eb1`](https://github.com/ianstormtaylor/slate/commit/bc945eb12c612ef2688869d256416c8e37e32c07) Thanks [@Moerphy](https://github.com/Moerphy)! - Correct core normalization that could cause wrong nodes to be removed + ## 0.93.0 ### Minor Changes diff --git a/packages/slate/package.json b/packages/slate/package.json index de76577f9..97df7416e 100644 --- a/packages/slate/package.json +++ b/packages/slate/package.json @@ -1,7 +1,7 @@ { "name": "slate", "description": "A completely customizable framework for building rich text editors.", - "version": "0.93.0", + "version": "0.94.0", "license": "MIT", "repository": "git://github.com/ianstormtaylor/slate.git", "main": "dist/index.js", diff --git a/yarn.lock b/yarn.lock index 3d1f5ff14..065deada3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13820,7 +13820,7 @@ resolve@^2.0.0-next.3: "@babel/runtime": ^7.7.4 is-plain-object: ^5.0.0 lodash: ^4.17.21 - slate: ^0.93.0 + slate: ^0.94.0 slate-hyperscript: ^0.81.3 source-map-loader: ^4.0.0 peerDependencies: @@ -13834,7 +13834,7 @@ resolve@^2.0.0-next.3: dependencies: "@babel/runtime": ^7.7.4 is-plain-object: ^5.0.0 - slate: ^0.93.0 + slate: ^0.94.0 source-map-loader: ^4.0.0 peerDependencies: slate: ">=0.65.3" @@ -13946,7 +13946,7 @@ resolve@^2.0.0-next.3: react-dom: ">=16.8.0" react-test-renderer: ">=16.8.0" scroll-into-view-if-needed: ^2.2.20 - slate: ^0.93.0 + slate: ^0.94.0 slate-hyperscript: ^0.81.3 source-map-loader: ^4.0.0 tiny-invariant: 1.0.6 @@ -13957,7 +13957,7 @@ resolve@^2.0.0-next.3: languageName: unknown linkType: soft -"slate@^0.93.0, slate@workspace:*, slate@workspace:packages/slate": +"slate@^0.94.0, slate@workspace:*, slate@workspace:packages/slate": version: 0.0.0-use.local resolution: "slate@workspace:packages/slate" dependencies: