@quadrats/react 0.5.1 → 0.5.5
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/blockquote/typings.d.ts +2 -2
- package/core/components/Quadrats.d.ts +5 -1
- package/core/composeHandlers.js +2 -2
- package/core/composeRenderElements.js +1 -1
- package/core/composeRenderLeafs.js +1 -1
- package/core/index.d.ts +3 -2
- package/core/typings/descendant.d.ts +2 -0
- package/divider/typings.d.ts +2 -2
- package/embed/toolbar/EmbedToolbarIcon.d.ts +2 -2
- package/embed/toolbar/index.cjs.js +2 -2
- package/embed/toolbar/useEmbedTool.d.ts +2 -2
- package/embed/toolbar/useEmbedTool.js +2 -2
- package/embed/typings.d.ts +2 -2
- package/file-uploader/typings.d.ts +2 -2
- package/footnote/index.cjs.js +4 -4
- package/footnote/typings.d.ts +2 -2
- package/footnote/useFootnotes.d.ts +2 -2
- package/footnote/useFootnotes.js +2 -2
- package/footnote/useFootnotesFromNodes.js +2 -2
- package/heading/typings.d.ts +2 -2
- package/image/components/Image.js +1 -3
- package/image/createReactImage.js +1 -1
- package/image/hooks/useImageResizer.js +4 -4
- package/image/index.cjs.js +6 -8
- package/image/typings.d.ts +2 -2
- package/index.cjs.js +4 -4
- package/input-block/typings.d.ts +1 -1
- package/link/typings.d.ts +2 -2
- package/list/createReactList.js +1 -1
- package/list/index.cjs.js +1 -1
- package/list/typings.d.ts +2 -2
- package/package.json +3 -3
- 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
package/blockquote/typings.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { BlockquoteElement, Blockquote } from '@quadrats/common/blockquote';
|
|
3
|
-
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
3
|
+
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export declare type RenderBlockquoteElementProps = RenderElementProps<BlockquoteElement>;
|
|
5
5
|
export interface ReactBlockquoteCreateHandlersOptions {
|
|
6
6
|
/**
|
|
@@ -11,5 +11,5 @@ export interface ReactBlockquoteCreateHandlersOptions {
|
|
|
11
11
|
export interface ReactBlockquoteCreateRenderElementOptions {
|
|
12
12
|
render?: (props: RenderBlockquoteElementProps) => JSX.Element | null | undefined;
|
|
13
13
|
}
|
|
14
|
-
export interface ReactBlockquote extends Blockquote
|
|
14
|
+
export interface ReactBlockquote extends Blockquote<ReactEditor>, WithCreateHandlers<[ReactBlockquoteCreateHandlersOptions?]>, WithCreateRenderElement<[ReactBlockquoteCreateRenderElementOptions?]> {
|
|
15
15
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Slate } from 'slate-react';
|
|
3
3
|
import { ConfigsProviderProps } from '@quadrats/react/configs';
|
|
4
|
-
|
|
4
|
+
import { Descendant } from '..';
|
|
5
|
+
export declare type QuadratsProps = Pick<Parameters<typeof Slate>[0], 'children' | 'editor'> & Omit<ConfigsProviderProps, 'children'> & {
|
|
6
|
+
onChange: (value: Descendant[]) => void;
|
|
7
|
+
value: Descendant[];
|
|
8
|
+
};
|
|
5
9
|
/**
|
|
6
10
|
* Provide configs of quadrats and control the value.
|
|
7
11
|
*/
|
package/core/composeHandlers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function createEventHandler(editor, handlers) {
|
|
2
2
|
const [handler, ...restHandlers] = handlers;
|
|
3
|
-
return
|
|
3
|
+
return event => handler(event, editor, () => {
|
|
4
4
|
const next = restHandlers.length > 0 ? createEventHandler(editor, restHandlers) : () => { };
|
|
5
5
|
next(event);
|
|
6
6
|
});
|
|
@@ -24,7 +24,7 @@ function composeHandlers(handlersList) {
|
|
|
24
24
|
return acc;
|
|
25
25
|
}, {});
|
|
26
26
|
const handlersEntries = Object.entries(handlersListRecord);
|
|
27
|
-
return
|
|
27
|
+
return editor => handlersEntries.reduce((acc, [name, handlers]) => {
|
|
28
28
|
acc[name] = createEventHandler(editor, handlers);
|
|
29
29
|
return acc;
|
|
30
30
|
}, {});
|
|
@@ -6,7 +6,7 @@ import DefaultElement from './components/DefaultElement.js';
|
|
|
6
6
|
* To compose sequential `renderElement`s to single.
|
|
7
7
|
*/
|
|
8
8
|
function composeRenderElements(renderElements) {
|
|
9
|
-
return composeRenderElementsBase(
|
|
9
|
+
return composeRenderElementsBase(props => React.createElement(DefaultElement, Object.assign({}, props)), renderElements);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export { composeRenderElements };
|
|
@@ -6,7 +6,7 @@ import DefaultLeaf from './components/DefaultLeaf.js';
|
|
|
6
6
|
* To compose sequential `renderLeaf`s or `renderMark`s to single.
|
|
7
7
|
*/
|
|
8
8
|
function composeRenderLeafs(renderLeafs) {
|
|
9
|
-
return composeRenderLeafsBase(
|
|
9
|
+
return composeRenderLeafsBase(props => React.createElement(DefaultLeaf, Object.assign({}, props)), renderLeafs);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
export { composeRenderLeafs };
|
package/core/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { QuadratsElement, QuadratsText } from '@quadrats/core';
|
|
2
2
|
import { ReactEditor } from 'slate-react';
|
|
3
3
|
export { useSlateStatic, useFocused, useReadOnly, useSelected, useSlate as useQuadrats, ReactEditor, } from 'slate-react';
|
|
4
4
|
export * from './typings/handler';
|
|
5
5
|
export * from './typings/renderer';
|
|
6
6
|
export * from './typings/with';
|
|
7
|
+
export * from './typings/descendant';
|
|
7
8
|
export { default as Editable, EditableProps } from './components/Editable';
|
|
8
9
|
export { default as DefaultElement } from './components/DefaultElement';
|
|
9
10
|
export { default as DefaultLeaf } from './components/DefaultLeaf';
|
|
@@ -17,7 +18,7 @@ export { createRenderElements } from './createRenderElements';
|
|
|
17
18
|
export { createRenderMark } from './createRenderMark';
|
|
18
19
|
declare module 'slate' {
|
|
19
20
|
interface CustomTypes {
|
|
20
|
-
Editor:
|
|
21
|
+
Editor: ReactEditor;
|
|
21
22
|
Element: QuadratsElement;
|
|
22
23
|
Text: QuadratsText;
|
|
23
24
|
}
|
package/divider/typings.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Divider, DividerElement } from '@quadrats/common/divider';
|
|
3
|
-
import { WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
3
|
+
import { WithCreateRenderElement, RenderElementProps, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export declare type RenderDividerElementProps = RenderElementProps<DividerElement>;
|
|
5
5
|
export interface ReactDividerCreateRenderElementOptions {
|
|
6
6
|
render?: (props: RenderDividerElementProps) => JSX.Element | null | undefined;
|
|
7
7
|
}
|
|
8
|
-
export interface ReactDivider extends Divider
|
|
8
|
+
export interface ReactDivider extends Divider<ReactEditor>, WithCreateRenderElement<[ReactDividerCreateRenderElementOptions?]> {
|
|
9
9
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { ReactEditor } from '@quadrats/react';
|
|
3
3
|
import { InputWidgetConfig } from '@quadrats/common/input-widget';
|
|
4
4
|
import { ReactEmbed } from '@quadrats/react/embed';
|
|
5
5
|
import { ToolbarIconProps } from '@quadrats/react/toolbar';
|
|
@@ -9,7 +9,7 @@ export interface EmbedToolbarIconProps<Provider extends string> extends Omit<Too
|
|
|
9
9
|
* The providers supported by this icon.
|
|
10
10
|
*/
|
|
11
11
|
providers: Provider[];
|
|
12
|
-
startToolInput?: (editor:
|
|
12
|
+
startToolInput?: (editor: ReactEditor, inputConfig: InputWidgetConfig) => void;
|
|
13
13
|
}
|
|
14
14
|
declare function EmbedToolbarIcon<Provider extends string>(props: EmbedToolbarIconProps<Provider>): JSX.Element;
|
|
15
15
|
export default EmbedToolbarIcon;
|
|
@@ -15,12 +15,12 @@ function useEmbedTool(controller, providers, getPlaceholder, startToolInput) {
|
|
|
15
15
|
const editor = react.useSlateStatic();
|
|
16
16
|
const defaultStartToolInput = toolbar.useStartToolInput();
|
|
17
17
|
const start = startToolInput
|
|
18
|
-
?
|
|
18
|
+
? inputConfig => startToolInput(editor, inputConfig)
|
|
19
19
|
: defaultStartToolInput;
|
|
20
20
|
return {
|
|
21
21
|
onClick: () => start({
|
|
22
22
|
getPlaceholder,
|
|
23
|
-
confirm:
|
|
23
|
+
confirm: embedCode => controller.insertEmbed(editor, providers, embedCode),
|
|
24
24
|
}),
|
|
25
25
|
};
|
|
26
26
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Editor } from '@quadrats/core';
|
|
2
1
|
import { InputWidgetConfig } from '@quadrats/common/input-widget';
|
|
2
|
+
import { ReactEditor } from '@quadrats/react';
|
|
3
3
|
import { ReactEmbed } from '@quadrats/react/embed';
|
|
4
|
-
export declare function useEmbedTool<P extends string>(controller: ReactEmbed<P>, providers: P[], getPlaceholder: InputWidgetConfig['getPlaceholder'], startToolInput?: (editor:
|
|
4
|
+
export declare function useEmbedTool<P extends string>(controller: ReactEmbed<P>, providers: P[], getPlaceholder: InputWidgetConfig['getPlaceholder'], startToolInput?: (editor: ReactEditor, inputConfig: InputWidgetConfig) => void): {
|
|
5
5
|
onClick: () => void;
|
|
6
6
|
};
|
|
@@ -5,12 +5,12 @@ function useEmbedTool(controller, providers, getPlaceholder, startToolInput) {
|
|
|
5
5
|
const editor = useSlateStatic();
|
|
6
6
|
const defaultStartToolInput = useStartToolInput();
|
|
7
7
|
const start = startToolInput
|
|
8
|
-
?
|
|
8
|
+
? inputConfig => startToolInput(editor, inputConfig)
|
|
9
9
|
: defaultStartToolInput;
|
|
10
10
|
return {
|
|
11
11
|
onClick: () => start({
|
|
12
12
|
getPlaceholder,
|
|
13
|
-
confirm:
|
|
13
|
+
confirm: embedCode => controller.insertEmbed(editor, providers, embedCode),
|
|
14
14
|
}),
|
|
15
15
|
};
|
|
16
16
|
}
|
package/embed/typings.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Embed, EmbedElement } from '@quadrats/common/embed';
|
|
3
|
-
import { WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
3
|
+
import { WithCreateRenderElement, RenderElementProps, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export interface WithEmbedRenderData<RenderData> {
|
|
5
5
|
/**
|
|
6
6
|
* The data deserialized from element by corresponding strategy.
|
|
@@ -10,5 +10,5 @@ export interface WithEmbedRenderData<RenderData> {
|
|
|
10
10
|
export interface RenderEmbedElementProps<EmbedData extends Record<string, unknown>, RenderData> extends RenderElementProps<EmbedElement & EmbedData>, WithEmbedRenderData<RenderData> {
|
|
11
11
|
}
|
|
12
12
|
export declare type ReactEmbedCreateRenderElementOptions<Provider extends string> = Record<Provider, (props: RenderEmbedElementProps<any, any>) => JSX.Element | null | undefined>;
|
|
13
|
-
export interface ReactEmbed<Provider extends string> extends Embed<Provider>, WithCreateRenderElement<[ReactEmbedCreateRenderElementOptions<Provider>]> {
|
|
13
|
+
export interface ReactEmbed<Provider extends string> extends Embed<Provider, ReactEditor>, WithCreateRenderElement<[ReactEmbedCreateRenderElementOptions<Provider>]> {
|
|
14
14
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { FileUploader, FileUploaderElement } from '@quadrats/common/file-uploader';
|
|
3
|
-
import { RenderElementProps, WithCreateRenderElement } from '@quadrats/react';
|
|
3
|
+
import { ReactEditor, RenderElementProps, WithCreateRenderElement } from '@quadrats/react';
|
|
4
4
|
export declare type RenderFileUploaderElementProps = RenderElementProps<FileUploaderElement>;
|
|
5
5
|
export declare type RenderFileUploaderElement = (props: RenderFileUploaderElementProps) => JSX.Element | null | undefined;
|
|
6
6
|
export interface FileUploaderCreateRenderElementOptions {
|
|
7
7
|
render?: RenderFileUploaderElement;
|
|
8
8
|
}
|
|
9
|
-
export declare type ReactFileUploader = FileUploader & WithCreateRenderElement<[FileUploaderCreateRenderElementOptions?]>;
|
|
9
|
+
export declare type ReactFileUploader = FileUploader<ReactEditor> & WithCreateRenderElement<[FileUploaderCreateRenderElementOptions?]>;
|
package/footnote/index.cjs.js
CHANGED
|
@@ -34,13 +34,13 @@ function createReactFootnote(options = {}) {
|
|
|
34
34
|
function useFootnotes(editor) {
|
|
35
35
|
const footnoteNodes = Array.from(core.getNodes(editor, {
|
|
36
36
|
at: [],
|
|
37
|
-
match:
|
|
37
|
+
match: node => node.type === footnote.FOOTNOTE_TYPE,
|
|
38
38
|
}));
|
|
39
39
|
const footnotes = footnoteNodes.map((node) => {
|
|
40
40
|
var _a, _b;
|
|
41
41
|
const nodeData = node === null || node === void 0 ? void 0 : node[0];
|
|
42
42
|
return {
|
|
43
|
-
wrapperText: (_b = (_a = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.children)) === null || _a === void 0 ? void 0 : _a.map(
|
|
43
|
+
wrapperText: (_b = (_a = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.children)) === null || _a === void 0 ? void 0 : _a.map(childNode => childNode.text).join('')) !== null && _b !== void 0 ? _b : '',
|
|
44
44
|
footnote: nodeData === null || nodeData === void 0 ? void 0 : nodeData.footnote,
|
|
45
45
|
index: nodeData === null || nodeData === void 0 ? void 0 : nodeData.index,
|
|
46
46
|
};
|
|
@@ -61,10 +61,10 @@ function deepSearchFootnoteFromNodes(nodes) {
|
|
|
61
61
|
}
|
|
62
62
|
function useFootnotesFromNodes(nodes) {
|
|
63
63
|
const filter = deepSearchFootnoteFromNodes(nodes);
|
|
64
|
-
return filter.map(
|
|
64
|
+
return filter.map(element => {
|
|
65
65
|
var _a;
|
|
66
66
|
return ({
|
|
67
|
-
wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map(
|
|
67
|
+
wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map(childNode => childNode.text).join(''),
|
|
68
68
|
footnote: element.footnote,
|
|
69
69
|
index: element.index,
|
|
70
70
|
});
|
package/footnote/typings.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Footnote, FootnoteElement } from '@quadrats/common/footnote';
|
|
3
|
-
import { RenderElementProps, ReactWithable, WithCreateRenderElement } from '@quadrats/react';
|
|
3
|
+
import { RenderElementProps, ReactWithable, WithCreateRenderElement, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export declare type RenderFootnoteElementProps = RenderElementProps<FootnoteElement>;
|
|
5
5
|
export interface ReactFootnoteCreateRenderElementOptions {
|
|
6
6
|
render?: (props: RenderFootnoteElementProps) => JSX.Element | null | undefined;
|
|
7
7
|
}
|
|
8
|
-
export interface ReactFootnote extends Omit<Footnote
|
|
8
|
+
export interface ReactFootnote extends Omit<Footnote<ReactEditor>, 'with'>, WithCreateRenderElement<[ReactFootnoteCreateRenderElementOptions?]>, ReactWithable {
|
|
9
9
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Editor } from '@quadrats/core';
|
|
2
1
|
import { FootnoteData } from '@quadrats/common/footnote';
|
|
3
|
-
|
|
2
|
+
import { ReactEditor } from 'slate-react';
|
|
3
|
+
export declare function useFootnotes(editor: ReactEditor): FootnoteData[];
|
|
4
4
|
export default useFootnotes;
|
package/footnote/useFootnotes.js
CHANGED
|
@@ -4,13 +4,13 @@ import { FOOTNOTE_TYPE } from '@quadrats/common/footnote';
|
|
|
4
4
|
function useFootnotes(editor) {
|
|
5
5
|
const footnoteNodes = Array.from(getNodes(editor, {
|
|
6
6
|
at: [],
|
|
7
|
-
match:
|
|
7
|
+
match: node => node.type === FOOTNOTE_TYPE,
|
|
8
8
|
}));
|
|
9
9
|
const footnotes = footnoteNodes.map((node) => {
|
|
10
10
|
var _a, _b;
|
|
11
11
|
const nodeData = node === null || node === void 0 ? void 0 : node[0];
|
|
12
12
|
return {
|
|
13
|
-
wrapperText: (_b = (_a = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.children)) === null || _a === void 0 ? void 0 : _a.map(
|
|
13
|
+
wrapperText: (_b = (_a = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.children)) === null || _a === void 0 ? void 0 : _a.map(childNode => childNode.text).join('')) !== null && _b !== void 0 ? _b : '',
|
|
14
14
|
footnote: nodeData === null || nodeData === void 0 ? void 0 : nodeData.footnote,
|
|
15
15
|
index: nodeData === null || nodeData === void 0 ? void 0 : nodeData.index,
|
|
16
16
|
};
|
|
@@ -14,10 +14,10 @@ function deepSearchFootnoteFromNodes(nodes) {
|
|
|
14
14
|
}
|
|
15
15
|
function useFootnotesFromNodes(nodes) {
|
|
16
16
|
const filter = deepSearchFootnoteFromNodes(nodes);
|
|
17
|
-
return filter.map(
|
|
17
|
+
return filter.map(element => {
|
|
18
18
|
var _a;
|
|
19
19
|
return ({
|
|
20
|
-
wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map(
|
|
20
|
+
wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map(childNode => childNode.text).join(''),
|
|
21
21
|
footnote: element.footnote,
|
|
22
22
|
index: element.index,
|
|
23
23
|
});
|
package/heading/typings.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { Heading, HeadingElement, HeadingLevel } from '@quadrats/common/heading';
|
|
3
|
-
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
3
|
+
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps, ReactEditor } from '@quadrats/react';
|
|
4
4
|
export declare type RenderHeadingElementProps = RenderElementProps<HeadingElement>;
|
|
5
5
|
export interface ReactHeadingCreateHandlersOptions {
|
|
6
6
|
/**
|
|
@@ -11,5 +11,5 @@ export interface ReactHeadingCreateHandlersOptions {
|
|
|
11
11
|
export interface ReactHeadingCreateRenderElementOptions {
|
|
12
12
|
render?: (props: RenderHeadingElementProps) => JSX.Element | null | undefined;
|
|
13
13
|
}
|
|
14
|
-
export interface ReactHeading<Level extends HeadingLevel> extends Heading<Level>, WithCreateHandlers<[ReactHeadingCreateHandlersOptions?]>, WithCreateRenderElement<[ReactHeadingCreateRenderElementOptions?]> {
|
|
14
|
+
export interface ReactHeading<Level extends HeadingLevel> extends Heading<Level, ReactEditor>, WithCreateHandlers<[ReactHeadingCreateHandlersOptions?]>, WithCreateRenderElement<[ReactHeadingCreateRenderElementOptions?]> {
|
|
15
15
|
}
|
|
@@ -7,9 +7,7 @@ function Image(props) {
|
|
|
7
7
|
const { attributes, children, element, resizeImage, src, } = props;
|
|
8
8
|
const editor = useSlateStatic();
|
|
9
9
|
const { focusedAndSelected, imageRef, onResizeStart } = useImageResizer(element, resizeImage);
|
|
10
|
-
return (
|
|
11
|
-
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-noninteractive-element-interactions
|
|
12
|
-
React.createElement("div", Object.assign({}, attributes, { className: "qdr-image", onClick: () => Transforms.select(editor, ReactEditor.findPath(editor, element)), onMouseDown: (event) => event.preventDefault(), role: "img" }),
|
|
10
|
+
return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-image", onClick: () => Transforms.select(editor, ReactEditor.findPath(editor, element)), onMouseDown: event => event.preventDefault(), role: "img" }),
|
|
13
11
|
React.createElement("div", { className: "qdr-image__spacer" }, children),
|
|
14
12
|
React.createElement("div", { contentEditable: false },
|
|
15
13
|
focusedAndSelected && (React.createElement(React.Fragment, null,
|
|
@@ -85,7 +85,7 @@ function createReactImage(options = {}) {
|
|
|
85
85
|
})
|
|
86
86
|
.reduce((prev, imageFile) => __awaiter(this, void 0, void 0, function* () {
|
|
87
87
|
yield prev;
|
|
88
|
-
return readFileAsDataURL(imageFile).then(
|
|
88
|
+
return readFileAsDataURL(imageFile).then(dataURL => core.insertImage(editor, dataURL));
|
|
89
89
|
}), Promise.resolve());
|
|
90
90
|
return;
|
|
91
91
|
}
|
|
@@ -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
|
@@ -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 {
|
|
@@ -122,9 +122,7 @@ function Image(props) {
|
|
|
122
122
|
const { attributes, children, element, resizeImage, src, } = props;
|
|
123
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,
|
|
@@ -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
|
}
|
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
|
@@ -74,7 +74,7 @@ function Quadrats(props) {
|
|
|
74
74
|
|
|
75
75
|
function createEventHandler(editor, handlers) {
|
|
76
76
|
const [handler, ...restHandlers] = handlers;
|
|
77
|
-
return
|
|
77
|
+
return event => handler(event, editor, () => {
|
|
78
78
|
const next = restHandlers.length > 0 ? createEventHandler(editor, restHandlers) : () => { };
|
|
79
79
|
next(event);
|
|
80
80
|
});
|
|
@@ -98,7 +98,7 @@ function composeHandlers(handlersList) {
|
|
|
98
98
|
return acc;
|
|
99
99
|
}, {});
|
|
100
100
|
const handlersEntries = Object.entries(handlersListRecord);
|
|
101
|
-
return
|
|
101
|
+
return editor => handlersEntries.reduce((acc, [name, handlers]) => {
|
|
102
102
|
acc[name] = createEventHandler(editor, handlers);
|
|
103
103
|
return acc;
|
|
104
104
|
}, {});
|
|
@@ -108,14 +108,14 @@ function composeHandlers(handlersList) {
|
|
|
108
108
|
* To compose sequential `renderElement`s to single.
|
|
109
109
|
*/
|
|
110
110
|
function composeRenderElements(renderElements) {
|
|
111
|
-
return _internal.composeRenderElementsBase(
|
|
111
|
+
return _internal.composeRenderElementsBase(props => React__default.createElement(DefaultElement, Object.assign({}, props)), renderElements);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/**
|
|
115
115
|
* To compose sequential `renderLeaf`s or `renderMark`s to single.
|
|
116
116
|
*/
|
|
117
117
|
function composeRenderLeafs(renderLeafs) {
|
|
118
|
-
return _internal.composeRenderLeafsBase(
|
|
118
|
+
return _internal.composeRenderLeafsBase(props => React__default.createElement(DefaultLeaf, Object.assign({}, props)), renderLeafs);
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
function createReactEditor() {
|
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
|
}
|
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: () => ({
|
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.5.
|
|
3
|
+
"version": "0.5.5",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Rytass",
|
|
6
6
|
"homepage": "https://github.com/Quadrats/quadrats#readme",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"url": "https://github.com/Quadrats/quadrats/issues"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@quadrats/common": "^0.5.
|
|
24
|
-
"@quadrats/core": "^0.5.
|
|
23
|
+
"@quadrats/common": "^0.5.3",
|
|
24
|
+
"@quadrats/core": "^0.5.2",
|
|
25
25
|
"@quadrats/icons": "^0.5.0",
|
|
26
26
|
"@quadrats/locales": "^0.5.0",
|
|
27
27
|
"@quadrats/theme": "^0.5.0",
|
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;
|