@quadrats/react 0.4.5 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_internal/renderer/typings.d.ts +3 -3
- package/blockquote/jsx-serializer/createJsxSerializeBlockquote.d.ts +1 -1
- package/blockquote/typings.d.ts +2 -2
- package/core/components/Editable.js +2 -1
- package/core/composeHandlers.d.ts +1 -2
- package/core/composeHandlers.js +2 -2
- package/core/composeRenderElements.d.ts +1 -1
- package/core/composeRenderElements.js +1 -1
- package/core/composeRenderLeafs.js +1 -1
- package/core/createReactEditor.d.ts +2 -1
- package/core/createRenderElement.d.ts +1 -1
- package/core/createRenderElements.d.ts +1 -1
- package/core/index.d.ts +11 -1
- package/core/typings/descendant.d.ts +2 -0
- package/core/typings/handler.d.ts +1 -2
- package/core/typings/renderer.d.ts +3 -3
- package/divider/jsx-serializer/createJsxSerializeDivider.d.ts +1 -1
- package/divider/toolbar/index.cjs.js +1 -1
- package/divider/toolbar/useDividerTool.js +2 -2
- package/divider/typings.d.ts +2 -2
- package/embed/jsx-serializer/createJsxSerializeEmbed.d.ts +1 -1
- package/embed/toolbar/EmbedToolbarIcon.d.ts +2 -2
- package/embed/toolbar/index.cjs.js +3 -3
- package/embed/toolbar/useEmbedTool.d.ts +2 -2
- package/embed/toolbar/useEmbedTool.js +4 -4
- package/embed/typings.d.ts +2 -2
- package/file-uploader/hooks/useFileUploader.js +2 -2
- package/file-uploader/index.cjs.js +1 -1
- package/file-uploader/toolbar/index.cjs.js +1 -1
- package/file-uploader/toolbar/useFileUploaderTool.js +2 -2
- package/file-uploader/typings.d.ts +2 -2
- package/footnote/index.cjs.js +9 -8
- package/footnote/jsx-serializer/createJsxSerializeFootnote.d.ts +1 -1
- package/footnote/typings.d.ts +2 -2
- package/footnote/useFootnotes.d.ts +2 -2
- package/footnote/useFootnotes.js +3 -3
- package/footnote/useFootnotesFromNodes.d.ts +2 -2
- package/footnote/useFootnotesFromNodes.js +6 -5
- package/heading/jsx-serializer/createJsxSerializeHeading.d.ts +1 -1
- package/heading/typings.d.ts +2 -2
- package/image/components/Image.js +3 -5
- package/image/components/ImageCaption.js +2 -2
- package/image/createReactImage.js +1 -1
- package/image/hooks/useImageResizer.js +6 -6
- package/image/index.cjs.js +9 -11
- package/image/jsx-serializer/createJsxSerializeImage.d.ts +2 -1
- package/image/jsx-serializer/createJsxSerializeImage.js +5 -4
- package/image/jsx-serializer/index.cjs.js +5 -4
- package/image/typings.d.ts +2 -2
- package/index.cjs.js +7 -6
- package/index.js +1 -1
- package/input-block/typings.d.ts +1 -1
- package/jsx-serializer/createJsxSerializeElement.d.ts +1 -1
- package/jsx-serializer/createJsxSerializeElements.d.ts +1 -1
- package/jsx-serializer/createJsxSerializer.d.ts +2 -2
- package/jsx-serializer/createJsxSerializer.js +2 -2
- package/jsx-serializer/index.cjs.js +2 -2
- package/jsx-serializer/typings.d.ts +2 -2
- package/link/jsx-serializer/createJsxSerializeLink.d.ts +1 -1
- package/link/toolbar/index.cjs.js +1 -1
- package/link/toolbar/useUnlinkTool.js +2 -2
- package/link/typings.d.ts +2 -2
- package/list/createReactList.js +1 -1
- package/list/index.cjs.js +1 -1
- package/list/jsx-serializer/createJsxSerializeList.d.ts +1 -1
- package/list/typings.d.ts +2 -2
- package/package.json +12 -12
- package/paragraph/createRenderParagraphElement.d.ts +1 -1
- package/paragraph/jsx-serializer/createJsxSerializeParagraph.d.ts +1 -1
- package/read-more/jsx-serializer/createJsxSerializeReadMore.d.ts +1 -1
- package/read-more/toolbar/index.cjs.js +1 -1
- package/read-more/toolbar/useReadMoreTool.js +2 -2
- package/read-more/typings.d.ts +2 -2
- package/toggle-mark/typings.d.ts +2 -2
- package/toolbar/components/Toolbar.js +1 -1
- package/toolbar/components/ToolbarInput.js +1 -3
- package/toolbar/index.cjs.js +2 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useRef, useState, useEffect } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useSlateStatic, useFocused, useSelected, ReactEditor } from '@quadrats/react';
|
|
3
3
|
|
|
4
4
|
function isTouchEvent(event) {
|
|
5
5
|
const { touches } = event;
|
|
@@ -15,7 +15,7 @@ function getEditorWidth(editor) {
|
|
|
15
15
|
const moveEvents = ['mousemove', 'touchmove'];
|
|
16
16
|
const endEvents = ['mouseup', 'touchend'];
|
|
17
17
|
function useImageResizer(element, resizeImage) {
|
|
18
|
-
const editor =
|
|
18
|
+
const editor = useSlateStatic();
|
|
19
19
|
const focused = useFocused();
|
|
20
20
|
const selected = useSelected();
|
|
21
21
|
const focusedAndSelected = focused && selected;
|
|
@@ -78,11 +78,11 @@ function useImageResizer(element, resizeImage) {
|
|
|
78
78
|
function onCancelResize() {
|
|
79
79
|
setStartPoint(undefined);
|
|
80
80
|
}
|
|
81
|
-
moveEvents.forEach(
|
|
82
|
-
endEvents.forEach(
|
|
81
|
+
moveEvents.forEach(moveEvent => document.addEventListener(moveEvent, onResize));
|
|
82
|
+
endEvents.forEach(endEvent => document.addEventListener(endEvent, onCancelResize));
|
|
83
83
|
return () => {
|
|
84
|
-
moveEvents.forEach(
|
|
85
|
-
endEvents.forEach(
|
|
84
|
+
moveEvents.forEach(moveEvent => document.removeEventListener(moveEvent, onResize));
|
|
85
|
+
endEvents.forEach(endEvent => document.removeEventListener(endEvent, onCancelResize));
|
|
86
86
|
};
|
|
87
87
|
}, [editor, element, focusedAndSelected, resizeImage, startPoint]);
|
|
88
88
|
return {
|
package/image/index.cjs.js
CHANGED
|
@@ -41,7 +41,7 @@ function getEditorWidth(editor) {
|
|
|
41
41
|
const moveEvents = ['mousemove', 'touchmove'];
|
|
42
42
|
const endEvents = ['mouseup', 'touchend'];
|
|
43
43
|
function useImageResizer(element, resizeImage) {
|
|
44
|
-
const editor = react.
|
|
44
|
+
const editor = react.useSlateStatic();
|
|
45
45
|
const focused = react.useFocused();
|
|
46
46
|
const selected = react.useSelected();
|
|
47
47
|
const focusedAndSelected = focused && selected;
|
|
@@ -104,11 +104,11 @@ function useImageResizer(element, resizeImage) {
|
|
|
104
104
|
function onCancelResize() {
|
|
105
105
|
setStartPoint(undefined);
|
|
106
106
|
}
|
|
107
|
-
moveEvents.forEach(
|
|
108
|
-
endEvents.forEach(
|
|
107
|
+
moveEvents.forEach(moveEvent => document.addEventListener(moveEvent, onResize));
|
|
108
|
+
endEvents.forEach(endEvent => document.addEventListener(endEvent, onCancelResize));
|
|
109
109
|
return () => {
|
|
110
|
-
moveEvents.forEach(
|
|
111
|
-
endEvents.forEach(
|
|
110
|
+
moveEvents.forEach(moveEvent => document.removeEventListener(moveEvent, onResize));
|
|
111
|
+
endEvents.forEach(endEvent => document.removeEventListener(endEvent, onCancelResize));
|
|
112
112
|
};
|
|
113
113
|
}, [editor, element, focusedAndSelected, resizeImage, startPoint]);
|
|
114
114
|
return {
|
|
@@ -120,11 +120,9 @@ function useImageResizer(element, resizeImage) {
|
|
|
120
120
|
|
|
121
121
|
function Image(props) {
|
|
122
122
|
const { attributes, children, element, resizeImage, src, } = props;
|
|
123
|
-
const editor = react.
|
|
123
|
+
const editor = react.useSlateStatic();
|
|
124
124
|
const { focusedAndSelected, imageRef, onResizeStart } = useImageResizer(element, resizeImage);
|
|
125
|
-
return (
|
|
126
|
-
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-element-interactions
|
|
127
|
-
React__default.createElement("div", Object.assign({}, attributes, { className: "qdr-image", onClick: () => core.Transforms.select(editor, react.ReactEditor.findPath(editor, element)), onMouseDown: (event) => event.preventDefault(), role: "img" }),
|
|
125
|
+
return (React__default.createElement("div", Object.assign({}, attributes, { className: "qdr-image", onClick: () => core.Transforms.select(editor, react.ReactEditor.findPath(editor, element)), onMouseDown: event => event.preventDefault(), role: "img" }),
|
|
128
126
|
React__default.createElement("div", { className: "qdr-image__spacer" }, children),
|
|
129
127
|
React__default.createElement("div", { contentEditable: false },
|
|
130
128
|
focusedAndSelected && (React__default.createElement(React__default.Fragment, null,
|
|
@@ -135,7 +133,7 @@ function Image(props) {
|
|
|
135
133
|
|
|
136
134
|
function ImageCaption(props) {
|
|
137
135
|
const { attributes, children, element } = props;
|
|
138
|
-
const editor = react.
|
|
136
|
+
const editor = react.useSlateStatic();
|
|
139
137
|
const path = react.ReactEditor.findPath(editor, element);
|
|
140
138
|
const text = core.Editor.string(editor, path);
|
|
141
139
|
const isEmpty = !text;
|
|
@@ -233,7 +231,7 @@ function createReactImage(options = {}) {
|
|
|
233
231
|
})
|
|
234
232
|
.reduce((prev, imageFile) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
235
233
|
yield prev;
|
|
236
|
-
return utils.readFileAsDataURL(imageFile).then(
|
|
234
|
+
return utils.readFileAsDataURL(imageFile).then(dataURL => core$1.insertImage(editor, dataURL));
|
|
237
235
|
}), Promise.resolve());
|
|
238
236
|
return;
|
|
239
237
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ImageCaptionTypeKey, ImageFigureTypeKey, ImageHostingResolvers, ImageTypeKey } from '@quadrats/common/image';
|
|
3
|
+
import { QuadratsElement } from '@quadrats/core';
|
|
3
4
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
4
5
|
import { JsxSerializeImageCaptionElementProps, JsxSerializeImageElementProps, JsxSerializeImageFigureElementProps } from './typings';
|
|
5
6
|
export declare type CreateJsxSerializeImageOptions<H extends string> = Partial<Record<ImageFigureTypeKey, Partial<CreateJsxSerializeElementOptions<JsxSerializeImageFigureElementProps>>> & Record<ImageTypeKey, Partial<CreateJsxSerializeElementOptions<JsxSerializeImageElementProps>>> & Record<ImageCaptionTypeKey, Partial<CreateJsxSerializeElementOptions<JsxSerializeImageCaptionElementProps>>> & {
|
|
6
7
|
hostingResolvers?: ImageHostingResolvers<H>;
|
|
7
8
|
}>;
|
|
8
|
-
export declare function createJsxSerializeImage<H extends string>(options?: CreateJsxSerializeImageOptions<H>): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<
|
|
9
|
+
export declare function createJsxSerializeImage<H extends string>(options?: CreateJsxSerializeImageOptions<H>): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -23,17 +23,18 @@ function createJsxSerializeImage(options = {}) {
|
|
|
23
23
|
{
|
|
24
24
|
type: image.type || IMAGE_TYPES.image,
|
|
25
25
|
render: (props) => {
|
|
26
|
+
var _a, _b;
|
|
26
27
|
const { children } = props;
|
|
27
28
|
const element = props.element;
|
|
28
|
-
const figure = getFirstAncestor(element,
|
|
29
|
-
const caption = figure === null || figure === void 0 ? void 0 : figure.children[1];
|
|
30
|
-
return renderImage(Object.assign(Object.assign({}, getImageElementCommonProps(element, hostingResolvers)), { caption: (caption === null ||
|
|
29
|
+
const figure = getFirstAncestor(element, node => node.type === figureType);
|
|
30
|
+
const caption = (_a = figure === null || figure === void 0 ? void 0 : figure.children) === null || _a === void 0 ? void 0 : _a[1];
|
|
31
|
+
return renderImage(Object.assign(Object.assign({}, getImageElementCommonProps(element, hostingResolvers)), { caption: ((_b = caption) === null || _b === void 0 ? void 0 : _b.type) === captionType ? getMergedNodeTexts(caption) : '', children,
|
|
31
32
|
element }));
|
|
32
33
|
},
|
|
33
34
|
},
|
|
34
35
|
{
|
|
35
36
|
type: captionType,
|
|
36
|
-
render:
|
|
37
|
+
render: props => renderCaption(Object.assign(Object.assign({}, props), { isEmpty: !getMergedNodeTexts(props.element) })),
|
|
37
38
|
},
|
|
38
39
|
]);
|
|
39
40
|
}
|
|
@@ -37,17 +37,18 @@ function createJsxSerializeImage(options = {}) {
|
|
|
37
37
|
{
|
|
38
38
|
type: image$1.type || image.IMAGE_TYPES.image,
|
|
39
39
|
render: (props) => {
|
|
40
|
+
var _a, _b;
|
|
40
41
|
const { children } = props;
|
|
41
42
|
const element = props.element;
|
|
42
|
-
const figure = serializers.getFirstAncestor(element,
|
|
43
|
-
const caption = figure === null || figure === void 0 ? void 0 : figure.children[1];
|
|
44
|
-
return renderImage(Object.assign(Object.assign({}, image.getImageElementCommonProps(element, hostingResolvers)), { caption: (caption === null ||
|
|
43
|
+
const figure = serializers.getFirstAncestor(element, node => node.type === figureType);
|
|
44
|
+
const caption = (_a = figure === null || figure === void 0 ? void 0 : figure.children) === null || _a === void 0 ? void 0 : _a[1];
|
|
45
|
+
return renderImage(Object.assign(Object.assign({}, image.getImageElementCommonProps(element, hostingResolvers)), { caption: ((_b = caption) === null || _b === void 0 ? void 0 : _b.type) === captionType ? serializers.getMergedNodeTexts(caption) : '', children,
|
|
45
46
|
element }));
|
|
46
47
|
},
|
|
47
48
|
},
|
|
48
49
|
{
|
|
49
50
|
type: captionType,
|
|
50
|
-
render:
|
|
51
|
+
render: props => renderCaption(Object.assign(Object.assign({}, props), { isEmpty: !serializers.getMergedNodeTexts(props.element) })),
|
|
51
52
|
},
|
|
52
53
|
]);
|
|
53
54
|
}
|
package/image/typings.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Image, ImageCaptionElement, ImageCaptionTypeKey, ImageElement, ImageFigureElement, ImageFigureTypeKey, ImageTypeKey } from '@quadrats/common/image';
|
|
3
|
-
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps, ReactWithable } from '@quadrats/react';
|
|
3
|
+
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps, ReactWithable, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export interface RenderImageFigureElementProps extends RenderElementProps<ImageFigureElement> {
|
|
5
5
|
style?: {
|
|
6
6
|
width: string;
|
|
@@ -15,5 +15,5 @@ export declare type ImageRenderElements = Record<ImageFigureTypeKey, (props: Ren
|
|
|
15
15
|
export declare type ReactImageCreateRenderElementOptions = {
|
|
16
16
|
[K in ImageFigureTypeKey | ImageTypeKey | ImageCaptionTypeKey]?: ImageRenderElements[K];
|
|
17
17
|
};
|
|
18
|
-
export interface ReactImage<Hosting extends string> extends Omit<Image<Hosting>, 'with'>, WithCreateHandlers, WithCreateRenderElement<[ReactImageCreateRenderElementOptions?]>, ReactWithable {
|
|
18
|
+
export interface ReactImage<Hosting extends string> extends Omit<Image<Hosting, ReactEditor>, 'with'>, WithCreateHandlers, WithCreateRenderElement<[ReactImageCreateRenderElementOptions?]>, ReactWithable {
|
|
19
19
|
}
|
package/index.cjs.js
CHANGED
|
@@ -50,7 +50,8 @@ function Editable(props) {
|
|
|
50
50
|
}, [onCompositionStartProp, isEditorEmpty]);
|
|
51
51
|
const renderLeaf = React.useCallback((props) => {
|
|
52
52
|
const children = renderLeafProp ? renderLeafProp(props) : React__default.createElement(DefaultLeaf, Object.assign({}, props));
|
|
53
|
-
|
|
53
|
+
const { leaf } = props;
|
|
54
|
+
if (placeholderShowable && leaf[PLACEHOLDER_KEY]) {
|
|
54
55
|
return (React__default.createElement(React__default.Fragment, null,
|
|
55
56
|
React__default.createElement("span", { className: "qdr-editable__placeholder", contentEditable: false }, placeholder),
|
|
56
57
|
children));
|
|
@@ -73,7 +74,7 @@ function Quadrats(props) {
|
|
|
73
74
|
|
|
74
75
|
function createEventHandler(editor, handlers) {
|
|
75
76
|
const [handler, ...restHandlers] = handlers;
|
|
76
|
-
return
|
|
77
|
+
return event => handler(event, editor, () => {
|
|
77
78
|
const next = restHandlers.length > 0 ? createEventHandler(editor, restHandlers) : () => { };
|
|
78
79
|
next(event);
|
|
79
80
|
});
|
|
@@ -97,7 +98,7 @@ function composeHandlers(handlersList) {
|
|
|
97
98
|
return acc;
|
|
98
99
|
}, {});
|
|
99
100
|
const handlersEntries = Object.entries(handlersListRecord);
|
|
100
|
-
return
|
|
101
|
+
return editor => handlersEntries.reduce((acc, [name, handlers]) => {
|
|
101
102
|
acc[name] = createEventHandler(editor, handlers);
|
|
102
103
|
return acc;
|
|
103
104
|
}, {});
|
|
@@ -107,14 +108,14 @@ function composeHandlers(handlersList) {
|
|
|
107
108
|
* To compose sequential `renderElement`s to single.
|
|
108
109
|
*/
|
|
109
110
|
function composeRenderElements(renderElements) {
|
|
110
|
-
return _internal.composeRenderElementsBase(
|
|
111
|
+
return _internal.composeRenderElementsBase(props => React__default.createElement(DefaultElement, Object.assign({}, props)), renderElements);
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
/**
|
|
114
115
|
* To compose sequential `renderLeaf`s or `renderMark`s to single.
|
|
115
116
|
*/
|
|
116
117
|
function composeRenderLeafs(renderLeafs) {
|
|
117
|
-
return _internal.composeRenderLeafsBase(
|
|
118
|
+
return _internal.composeRenderLeafsBase(props => React__default.createElement(DefaultLeaf, Object.assign({}, props)), renderLeafs);
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
function createReactEditor() {
|
|
@@ -134,11 +135,11 @@ function createRenderMark(options) {
|
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
exports.ReactEditor = slateReact.ReactEditor;
|
|
137
|
-
exports.useEditor = slateReact.useEditor;
|
|
138
138
|
exports.useFocused = slateReact.useFocused;
|
|
139
139
|
exports.useQuadrats = slateReact.useSlate;
|
|
140
140
|
exports.useReadOnly = slateReact.useReadOnly;
|
|
141
141
|
exports.useSelected = slateReact.useSelected;
|
|
142
|
+
exports.useSlateStatic = slateReact.useSlateStatic;
|
|
142
143
|
exports.DefaultElement = DefaultElement;
|
|
143
144
|
exports.DefaultLeaf = DefaultLeaf;
|
|
144
145
|
exports.Editable = Editable;
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from '@quadrats/react/configs';
|
|
2
|
-
export { ReactEditor,
|
|
2
|
+
export { ReactEditor, useFocused, useSlate as useQuadrats, useReadOnly, useSelected, useSlateStatic } from 'slate-react';
|
|
3
3
|
export { default as Editable } from './core/components/Editable.js';
|
|
4
4
|
export { default as DefaultElement } from './core/components/DefaultElement.js';
|
|
5
5
|
export { default as DefaultLeaf } from './core/components/DefaultLeaf.js';
|
package/input-block/typings.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare type RenderInputBlockElement = (props: RenderInputBlockElementPro
|
|
|
6
6
|
export interface ReactInputBlockCreateRenderElementOptions {
|
|
7
7
|
render?: RenderInputBlockElement;
|
|
8
8
|
}
|
|
9
|
-
export interface ReactInputBlock extends Omit<InputBlock
|
|
9
|
+
export interface ReactInputBlock extends Omit<InputBlock<ReactEditor>, 'remove' | 'confirm'>, WithCreateRenderElement<[ReactInputBlockCreateRenderElementOptions?]> {
|
|
10
10
|
remove(editor: ReactEditor, element: InputBlockElement): void;
|
|
11
11
|
confirm(editor: ReactEditor, element: InputBlockElement, value: string): void;
|
|
12
12
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CreateJsxSerializeElementOptions, JsxSerializeElementProps } from './typings';
|
|
3
|
-
export declare function createJsxSerializeElement<P extends JsxSerializeElementProps>(options: CreateJsxSerializeElementOptions<P>): (props: JsxSerializeElementProps<import("
|
|
3
|
+
export declare function createJsxSerializeElement<P extends JsxSerializeElementProps>(options: CreateJsxSerializeElementOptions<P>): (props: JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CreateJsxSerializeElementOptions, JsxSerializeElementProps } from './typings';
|
|
3
|
-
export declare function createJsxSerializeElements<P extends JsxSerializeElementProps>(options: CreateJsxSerializeElementOptions<P>[]): (props: JsxSerializeElementProps<import("
|
|
3
|
+
export declare function createJsxSerializeElements<P extends JsxSerializeElementProps>(options: CreateJsxSerializeElementOptions<P>[]): (props: JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { Descendant } from '@quadrats/core';
|
|
3
3
|
import { JsxSerializeElementProps, JsxSerializeLeafProps } from './typings';
|
|
4
4
|
export interface CreateJsxSerializerOptioons {
|
|
5
5
|
/**
|
|
@@ -14,5 +14,5 @@ export interface CreateJsxSerializerOptioons {
|
|
|
14
14
|
leafs?: ((props: JsxSerializeLeafProps) => JSX.Element)[];
|
|
15
15
|
}
|
|
16
16
|
export declare function createJsxSerializer(options: CreateJsxSerializerOptioons): {
|
|
17
|
-
serialize: (nodes:
|
|
17
|
+
serialize: (nodes: Descendant[]) => JSX.Element;
|
|
18
18
|
};
|
|
@@ -29,7 +29,7 @@ function createJsxSerializer(options) {
|
|
|
29
29
|
leaf: node,
|
|
30
30
|
children: (React.createElement("span", { style: leafStyle }, node.text
|
|
31
31
|
.split('\n')
|
|
32
|
-
.map(
|
|
32
|
+
.map(t => t || ' ')
|
|
33
33
|
.join('\n'))),
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -39,7 +39,7 @@ function createJsxSerializer(options) {
|
|
|
39
39
|
return addKey(result);
|
|
40
40
|
}
|
|
41
41
|
function serializeNodes(nodes, parent) {
|
|
42
|
-
return React.createElement(React.Fragment, null, nodes.map(
|
|
42
|
+
return React.createElement(React.Fragment, null, nodes.map(node => serializeNode(Object.assign(Object.assign({}, node), { parent }))));
|
|
43
43
|
}
|
|
44
44
|
return {
|
|
45
45
|
serialize: (nodes) => serializeNodes(nodes, undefined),
|
|
@@ -49,7 +49,7 @@ function createJsxSerializer(options) {
|
|
|
49
49
|
leaf: node,
|
|
50
50
|
children: (React__default.createElement("span", { style: leafStyle }, node.text
|
|
51
51
|
.split('\n')
|
|
52
|
-
.map(
|
|
52
|
+
.map(t => t || ' ')
|
|
53
53
|
.join('\n'))),
|
|
54
54
|
});
|
|
55
55
|
}
|
|
@@ -59,7 +59,7 @@ function createJsxSerializer(options) {
|
|
|
59
59
|
return addKey(result);
|
|
60
60
|
}
|
|
61
61
|
function serializeNodes(nodes, parent) {
|
|
62
|
-
return React__default.createElement(React__default.Fragment, null, nodes.map(
|
|
62
|
+
return React__default.createElement(React__default.Fragment, null, nodes.map(node => serializeNode(Object.assign(Object.assign({}, node), { parent }))));
|
|
63
63
|
}
|
|
64
64
|
return {
|
|
65
65
|
serialize: (nodes) => serializeNodes(nodes, undefined),
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { QuadratsElement } from '@quadrats/core';
|
|
2
2
|
import { WithElementParent } from '@quadrats/core/serializers';
|
|
3
3
|
import { CreateRenderElementOptionsBase, CreateRenderMarkOptionsBase, RenderElementPropsBase, RenderLeafPropsBase, RenderMarkPropsBase } from '@quadrats/react/_internal';
|
|
4
4
|
export declare type JsxSerializeLeafProps = RenderLeafPropsBase;
|
|
5
5
|
export declare type JsxSerializeMarkProps<M> = RenderMarkPropsBase<M>;
|
|
6
|
-
export declare type JsxSerializeElementProps<E extends
|
|
6
|
+
export declare type JsxSerializeElementProps<E extends QuadratsElement = QuadratsElement> = RenderElementPropsBase<E & WithElementParent>;
|
|
7
7
|
export declare type CreateJsxSerializeMarkOptions<M> = CreateRenderMarkOptionsBase<M, JsxSerializeMarkProps<M>>;
|
|
8
8
|
export declare type CreateJsxSerializeElementOptions<P extends JsxSerializeElementProps> = CreateRenderElementOptionsBase<P>;
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
3
|
import { JsxSerializeLinkElementProps } from './typings';
|
|
4
4
|
export declare type CreateJsxSerializeLinkOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeLinkElementProps>>;
|
|
5
|
-
export declare function createJsxSerializeLink(options?: CreateJsxSerializeLinkOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("
|
|
5
|
+
export declare function createJsxSerializeLink(options?: CreateJsxSerializeLinkOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSlateStatic } from '@quadrats/react';
|
|
2
2
|
|
|
3
3
|
function useUnlinkTool(controller) {
|
|
4
|
-
const editor =
|
|
4
|
+
const editor = useSlateStatic();
|
|
5
5
|
return {
|
|
6
6
|
onClick: () => controller.unwrapLink(editor),
|
|
7
7
|
};
|
package/link/typings.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Link, LinkElement } from '@quadrats/common/link';
|
|
3
|
-
import { RenderElementProps, ReactWithable, WithCreateRenderElement } from '@quadrats/react';
|
|
3
|
+
import { RenderElementProps, ReactWithable, WithCreateRenderElement, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export declare type RenderLinkElementProps = RenderElementProps<LinkElement>;
|
|
5
5
|
export interface ReactLinkCreateRenderElementOptions {
|
|
6
6
|
render?: (props: RenderLinkElementProps) => JSX.Element | null | undefined;
|
|
7
7
|
}
|
|
8
|
-
export interface ReactLink extends Omit<Link
|
|
8
|
+
export interface ReactLink extends Omit<Link<ReactEditor>, 'with'>, WithCreateRenderElement<[ReactLinkCreateRenderElementOptions?]>, ReactWithable {
|
|
9
9
|
}
|
package/list/createReactList.js
CHANGED
|
@@ -4,7 +4,7 @@ import { defaultRenderListElements } from './defaultRenderListElements.js';
|
|
|
4
4
|
|
|
5
5
|
function createReactList(options = {}) {
|
|
6
6
|
const core = createList(options);
|
|
7
|
-
return Object.assign(Object.assign({}, core), { createRenderElement: (options = {}) => createRenderElements(['ol', 'ul', 'li'].map(
|
|
7
|
+
return Object.assign(Object.assign({}, core), { createRenderElement: (options = {}) => createRenderElements(['ol', 'ul', 'li'].map(key => ({
|
|
8
8
|
type: core.types[key],
|
|
9
9
|
render: options[key] || defaultRenderListElements[key],
|
|
10
10
|
}))), createHandlers: () => ({
|
package/list/index.cjs.js
CHANGED
|
@@ -18,7 +18,7 @@ const defaultRenderListElements = {
|
|
|
18
18
|
|
|
19
19
|
function createReactList(options = {}) {
|
|
20
20
|
const core = list.createList(options);
|
|
21
|
-
return Object.assign(Object.assign({}, core), { createRenderElement: (options = {}) => react.createRenderElements(['ol', 'ul', 'li'].map(
|
|
21
|
+
return Object.assign(Object.assign({}, core), { createRenderElement: (options = {}) => react.createRenderElements(['ol', 'ul', 'li'].map(key => ({
|
|
22
22
|
type: core.types[key],
|
|
23
23
|
render: options[key] || defaultRenderListElements[key],
|
|
24
24
|
}))), createHandlers: () => ({
|
|
@@ -5,4 +5,4 @@ import { JsxSerializeListElementProps } from './typings';
|
|
|
5
5
|
export declare type CreateJsxSerializeListOptions = {
|
|
6
6
|
[key in ListTypeKey]?: CreateJsxSerializeElementOptions<JsxSerializeListElementProps>;
|
|
7
7
|
};
|
|
8
|
-
export declare function createJsxSerializeList(options?: CreateJsxSerializeListOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("
|
|
8
|
+
export declare function createJsxSerializeList(options?: CreateJsxSerializeListOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
package/list/typings.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { List, ListElement, ListTypeKey } from '@quadrats/common/list';
|
|
3
|
-
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
3
|
+
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export declare type RenderListElementProps = RenderElementProps<ListElement>;
|
|
5
5
|
export declare type ReactListCreateRenderElementOptions = {
|
|
6
6
|
[key in ListTypeKey]?: (props: RenderListElementProps) => JSX.Element | null | undefined;
|
|
7
7
|
};
|
|
8
|
-
export interface ReactList extends List
|
|
8
|
+
export interface ReactList extends List<ReactEditor>, WithCreateHandlers, WithCreateRenderElement<[ReactListCreateRenderElementOptions?]> {
|
|
9
9
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quadrats/react",
|
|
3
|
-
"version": "0.4
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Rytass",
|
|
6
6
|
"homepage": "https://github.com/Quadrats/quadrats#readme",
|
|
@@ -20,19 +20,19 @@
|
|
|
20
20
|
"url": "https://github.com/Quadrats/quadrats/issues"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@quadrats/common": "^0.
|
|
24
|
-
"@quadrats/core": "^0.
|
|
25
|
-
"@quadrats/icons": "^0.
|
|
26
|
-
"@quadrats/locales": "^0.
|
|
27
|
-
"@quadrats/theme": "^0.
|
|
28
|
-
"@quadrats/utils": "^0.
|
|
29
|
-
"@types/is-hotkey": "^0.1.
|
|
30
|
-
"@types/react-transition-group": "^4.
|
|
23
|
+
"@quadrats/common": "^0.5.3",
|
|
24
|
+
"@quadrats/core": "^0.5.2",
|
|
25
|
+
"@quadrats/icons": "^0.5.0",
|
|
26
|
+
"@quadrats/locales": "^0.5.0",
|
|
27
|
+
"@quadrats/theme": "^0.5.0",
|
|
28
|
+
"@quadrats/utils": "^0.5.0",
|
|
29
|
+
"@types/is-hotkey": "^0.1.7",
|
|
30
|
+
"@types/react-transition-group": "^4.4.4",
|
|
31
31
|
"clsx": "^1.1.1",
|
|
32
32
|
"is-hotkey": "^0.2.0",
|
|
33
|
-
"react-transition-group": "^4.
|
|
34
|
-
"slate-react": "^0.
|
|
35
|
-
"tslib": "^2.
|
|
33
|
+
"react-transition-group": "^4.4.2",
|
|
34
|
+
"slate-react": "^0.72.1",
|
|
35
|
+
"tslib": "^2.3.1"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"react": "^16.8.6",
|
|
@@ -5,4 +5,4 @@ export declare type RenderParagraphElementProps = RenderElementProps<ParagraphEl
|
|
|
5
5
|
export interface CreateRenderParagraphElementOptions {
|
|
6
6
|
render?: (props: RenderParagraphElementProps) => JSX.Element | null | undefined;
|
|
7
7
|
}
|
|
8
|
-
export declare function createRenderParagraphElement(options?: CreateRenderParagraphElementOptions): (props: RenderElementProps<import("@quadrats/core").
|
|
8
|
+
export declare function createRenderParagraphElement(options?: CreateRenderParagraphElementOptions): (props: RenderElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
3
|
import { JsxSerializeParagraphProps } from './typings';
|
|
4
4
|
export declare type CreateJsxSerializeParagraphOptions = Partial<Omit<CreateJsxSerializeElementOptions<JsxSerializeParagraphProps>, 'type'>>;
|
|
5
|
-
export declare function createJsxSerializeParagraph(options?: CreateJsxSerializeParagraphOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").
|
|
5
|
+
export declare function createJsxSerializeParagraph(options?: CreateJsxSerializeParagraphOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
3
|
import { JsxSerializeReadMoreProps } from './typings';
|
|
4
4
|
export declare type CreateJsxSerializeReadMoreOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeReadMoreProps>>;
|
|
5
|
-
export declare function createJsxSerializeReadMore(options?: CreateJsxSerializeReadMoreOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("
|
|
5
|
+
export declare function createJsxSerializeReadMore(options?: CreateJsxSerializeReadMoreOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -12,7 +12,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
12
12
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
13
13
|
|
|
14
14
|
function useReadMoreTool(controller) {
|
|
15
|
-
const editor = react.
|
|
15
|
+
const editor = react.useSlateStatic();
|
|
16
16
|
return {
|
|
17
17
|
onClick: () => controller.insertReadMore(editor),
|
|
18
18
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSlateStatic } from '@quadrats/react';
|
|
2
2
|
|
|
3
3
|
function useReadMoreTool(controller) {
|
|
4
|
-
const editor =
|
|
4
|
+
const editor = useSlateStatic();
|
|
5
5
|
return {
|
|
6
6
|
onClick: () => controller.insertReadMore(editor),
|
|
7
7
|
};
|
package/read-more/typings.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ReadMore, ReadMoreElement } from '@quadrats/common/read-more';
|
|
3
|
-
import { WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
3
|
+
import { WithCreateRenderElement, RenderElementProps, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export declare type RenderReadMoreElementProps = RenderElementProps<ReadMoreElement>;
|
|
5
5
|
export interface ReactReadMoreCreateRenderElementOptions {
|
|
6
6
|
render?: (props: RenderReadMoreElementProps) => JSX.Element | null | undefined;
|
|
7
7
|
}
|
|
8
|
-
export interface ReactReadMore extends ReadMore
|
|
8
|
+
export interface ReactReadMore extends ReadMore<ReactEditor>, WithCreateRenderElement<[ReactReadMoreCreateRenderElementOptions?]> {
|
|
9
9
|
}
|
package/toggle-mark/typings.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ToggleMark } from '@quadrats/common/toggle-mark';
|
|
2
|
-
import { CreateRenderMarkOptions, RenderMarkProps, WithCreateHandlers, WithCreateRenderLeaf } from '@quadrats/react';
|
|
2
|
+
import { CreateRenderMarkOptions, ReactEditor, RenderMarkProps, WithCreateHandlers, WithCreateRenderLeaf } from '@quadrats/react';
|
|
3
3
|
export declare type RenderToggleMarkProps = RenderMarkProps<boolean>;
|
|
4
4
|
export interface ReactToggleMarkCreateHandlersOptions {
|
|
5
5
|
/**
|
|
@@ -8,5 +8,5 @@ export interface ReactToggleMarkCreateHandlersOptions {
|
|
|
8
8
|
hotkey?: string;
|
|
9
9
|
}
|
|
10
10
|
export declare type ReactToggleMarkCreateRenderLeafOptions = Partial<Omit<CreateRenderMarkOptions<boolean>, 'type'>>;
|
|
11
|
-
export interface ReactToggleMark extends ToggleMark
|
|
11
|
+
export interface ReactToggleMark extends ToggleMark<ReactEditor>, WithCreateHandlers<[ReactToggleMarkCreateHandlersOptions?]>, WithCreateRenderLeaf<[ReactToggleMarkCreateRenderLeafOptions?]> {
|
|
12
12
|
}
|
|
@@ -35,7 +35,7 @@ function Toolbar(props) {
|
|
|
35
35
|
const focused = ReactEditor.isFocused(editor);
|
|
36
36
|
const { selection } = editor;
|
|
37
37
|
const [toolInput, setToolInput] = useState();
|
|
38
|
-
const startToolInput = useCallback(
|
|
38
|
+
const startToolInput = useCallback(inputConfig => setToolInput(Object.assign(Object.assign({}, inputConfig), { currentSelection: selection })), [selection]);
|
|
39
39
|
let renderExpandedStatus;
|
|
40
40
|
if (toolInput) {
|
|
41
41
|
const { currentSelection } = toolInput;
|
|
@@ -19,9 +19,7 @@ function ToolbarInput({ exit, toolInput }) {
|
|
|
19
19
|
const locale = useLocale();
|
|
20
20
|
const placeholder = getPlaceholder(locale);
|
|
21
21
|
return (React.createElement("div", { className: "qdr-toolbar__input__wrapper" },
|
|
22
|
-
React.createElement("input", { defaultValue: toolInput.defaultValue,
|
|
23
|
-
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
24
|
-
autoFocus: true, className: "qdr-toolbar__input", placeholder: placeholder, onKeyDown: onKeyDown, onBlur: exit }),
|
|
22
|
+
React.createElement("input", { defaultValue: toolInput.defaultValue, autoFocus: true, className: "qdr-toolbar__input", placeholder: placeholder, onKeyDown: onKeyDown, onBlur: exit }),
|
|
25
23
|
React.createElement("svg", { className: "qdr-toolbar__input__cross", viewBox: "0 0 320 512", onMouseDown: onExit },
|
|
26
24
|
React.createElement("path", {
|
|
27
25
|
// eslint-disable-next-line max-len
|
package/toolbar/index.cjs.js
CHANGED
|
@@ -39,9 +39,7 @@ function ToolbarInput({ exit, toolInput }) {
|
|
|
39
39
|
const locale = react.useLocale();
|
|
40
40
|
const placeholder = getPlaceholder(locale);
|
|
41
41
|
return (React__default.createElement("div", { className: "qdr-toolbar__input__wrapper" },
|
|
42
|
-
React__default.createElement("input", { defaultValue: toolInput.defaultValue,
|
|
43
|
-
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
44
|
-
autoFocus: true, className: "qdr-toolbar__input", placeholder: placeholder, onKeyDown: onKeyDown, onBlur: exit }),
|
|
42
|
+
React__default.createElement("input", { defaultValue: toolInput.defaultValue, autoFocus: true, className: "qdr-toolbar__input", placeholder: placeholder, onKeyDown: onKeyDown, onBlur: exit }),
|
|
45
43
|
React__default.createElement("svg", { className: "qdr-toolbar__input__cross", viewBox: "0 0 320 512", onMouseDown: onExit },
|
|
46
44
|
React__default.createElement("path", {
|
|
47
45
|
// eslint-disable-next-line max-len
|
|
@@ -77,7 +75,7 @@ function Toolbar(props) {
|
|
|
77
75
|
const focused = react.ReactEditor.isFocused(editor);
|
|
78
76
|
const { selection } = editor;
|
|
79
77
|
const [toolInput, setToolInput] = React.useState();
|
|
80
|
-
const startToolInput = React.useCallback(
|
|
78
|
+
const startToolInput = React.useCallback(inputConfig => setToolInput(Object.assign(Object.assign({}, inputConfig), { currentSelection: selection })), [selection]);
|
|
81
79
|
let renderExpandedStatus;
|
|
82
80
|
if (toolInput) {
|
|
83
81
|
const { currentSelection } = toolInput;
|