@quadrats/react 0.4.0 → 0.5.1
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/constants.d.ts +6 -0
- package/blockquote/constants.js +8 -0
- package/blockquote/createReactBlockquote.d.ts +4 -0
- package/blockquote/createReactBlockquote.js +35 -0
- package/blockquote/defaultRenderBlockquoteElement.d.ts +12 -0
- package/blockquote/defaultRenderBlockquoteElement.js +5 -0
- package/blockquote/index.cjs.js +54 -0
- package/blockquote/index.d.ts +4 -0
- package/blockquote/index.js +3 -0
- package/blockquote/jsx-serializer/createJsxSerializeBlockquote.d.ts +5 -0
- package/blockquote/jsx-serializer/createJsxSerializeBlockquote.js +10 -0
- package/blockquote/jsx-serializer/defaultRenderBlockquoteElement.d.ts +1 -0
- package/blockquote/jsx-serializer/index.cjs.js +15 -0
- package/blockquote/jsx-serializer/index.d.ts +3 -0
- package/blockquote/jsx-serializer/index.js +2 -0
- package/blockquote/jsx-serializer/package.json +7 -0
- package/blockquote/jsx-serializer/typings.d.ts +3 -0
- package/blockquote/package.json +7 -0
- package/blockquote/toolbar/BlockquoteToolbarIcon.d.ts +8 -0
- package/blockquote/toolbar/BlockquoteToolbarIcon.js +12 -0
- package/blockquote/toolbar/index.cjs.js +29 -0
- package/blockquote/toolbar/index.d.ts +2 -0
- package/blockquote/toolbar/index.js +2 -0
- package/blockquote/toolbar/package.json +7 -0
- package/blockquote/toolbar/useBlockquoteTool.d.ts +5 -0
- package/blockquote/toolbar/useBlockquoteTool.js +11 -0
- package/blockquote/typings.d.ts +15 -0
- package/bold/createReactBold.js +1 -1
- package/bold/defaultRenderBold.d.ts +1 -1
- package/bold/defaultRenderBold.js +3 -1
- package/bold/index.cjs.js +3 -2
- package/bold/jsx-serializer/createJsxSerializeBold.js +1 -1
- package/bold/jsx-serializer/index.cjs.js +1 -1
- package/bold/typings.d.ts +5 -0
- package/core/components/Editable.js +2 -1
- package/core/composeHandlers.d.ts +1 -2
- package/core/composeRenderElements.d.ts +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 +10 -1
- 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/embed/jsx-serializer/createJsxSerializeEmbed.d.ts +1 -1
- package/embed/toolbar/index.cjs.js +1 -1
- package/embed/toolbar/useEmbedTool.js +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/footnote/createReactFootnote.js +0 -11
- package/footnote/defaultRenderFootnoteElement.js +1 -1
- package/footnote/index.cjs.js +44 -12
- package/footnote/index.d.ts +2 -0
- package/footnote/index.js +2 -0
- package/footnote/jsx-serializer/createJsxSerializeFootnote.d.ts +1 -1
- package/footnote/jsx-serializer/defaultRenderFootnoteElement.js +1 -1
- package/footnote/jsx-serializer/index.cjs.js +1 -1
- package/footnote/toolbar/FootnoteToolbarIcon.d.ts +10 -0
- package/footnote/toolbar/FootnoteToolbarIcon.js +12 -0
- package/footnote/toolbar/index.cjs.js +36 -0
- package/footnote/toolbar/index.d.ts +2 -0
- package/footnote/toolbar/index.js +2 -0
- package/footnote/toolbar/package.json +7 -0
- package/footnote/toolbar/useFootnoteTool.d.ts +7 -0
- package/footnote/toolbar/useFootnoteTool.js +19 -0
- package/footnote/useFootnotes.d.ts +4 -0
- package/footnote/useFootnotes.js +21 -0
- package/footnote/useFootnotesFromNodes.d.ts +4 -0
- package/footnote/useFootnotesFromNodes.js +27 -0
- package/heading/constants.d.ts +9 -0
- package/heading/constants.js +11 -0
- package/heading/createReactHeading.d.ts +4 -0
- package/heading/createReactHeading.js +47 -0
- package/heading/defaultRenderHeadingElement.d.ts +22 -0
- package/heading/defaultRenderHeadingElement.js +19 -0
- package/heading/index.cjs.js +83 -0
- package/heading/index.d.ts +4 -0
- package/heading/index.js +3 -0
- package/heading/jsx-serializer/createJsxSerializeHeading.d.ts +5 -0
- package/heading/jsx-serializer/createJsxSerializeHeading.js +10 -0
- package/heading/jsx-serializer/defaultRenderHeadingElement.d.ts +1 -0
- package/heading/jsx-serializer/index.cjs.js +15 -0
- package/heading/jsx-serializer/index.d.ts +3 -0
- package/heading/jsx-serializer/index.js +2 -0
- package/heading/jsx-serializer/package.json +7 -0
- package/heading/jsx-serializer/typings.d.ts +3 -0
- package/heading/package.json +7 -0
- package/heading/toolbar/HeadingToolbarIcon.d.ts +10 -0
- package/heading/toolbar/HeadingToolbarIcon.js +12 -0
- package/heading/toolbar/index.cjs.js +29 -0
- package/heading/toolbar/index.d.ts +2 -0
- package/heading/toolbar/index.js +2 -0
- package/heading/toolbar/package.json +7 -0
- package/heading/toolbar/useToggleHeadingTool.d.ts +6 -0
- package/heading/toolbar/useToggleHeadingTool.js +11 -0
- package/heading/typings.d.ts +15 -0
- package/highlight/createReactHighlight.js +1 -1
- package/highlight/defaultRenderHighlight.d.ts +1 -1
- package/highlight/defaultRenderHighlight.js +3 -1
- package/highlight/index.cjs.js +3 -2
- package/highlight/jsx-serializer/createJsxSerializeHighlight.js +1 -1
- package/highlight/jsx-serializer/index.cjs.js +1 -1
- package/highlight/typings.d.ts +5 -0
- package/image/components/Image.js +2 -2
- package/image/components/ImageCaption.js +2 -2
- package/image/hooks/useImageResizer.js +2 -2
- package/image/index.cjs.js +3 -3
- 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/index.cjs.js +3 -2
- package/index.js +1 -1
- package/input-block/hooks/useInputBlock.js +2 -1
- package/input-block/index.cjs.js +2 -1
- package/italic/createReactItalic.js +1 -1
- package/italic/defaultRenderItalic.d.ts +1 -1
- package/italic/defaultRenderItalic.js +3 -1
- package/italic/index.cjs.js +3 -2
- package/italic/jsx-serializer/createJsxSerializeItalic.js +1 -1
- package/italic/jsx-serializer/index.cjs.js +1 -1
- package/italic/typings.d.ts +5 -0
- 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/list/jsx-serializer/createJsxSerializeList.d.ts +1 -1
- 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/strikethrough/createReactStrikethrough.js +1 -1
- package/strikethrough/defaultRenderStrikethrough.d.ts +1 -1
- package/strikethrough/defaultRenderStrikethrough.js +3 -1
- package/strikethrough/index.cjs.js +3 -2
- package/strikethrough/jsx-serializer/createJsxSerializeStrikethrough.js +1 -1
- package/strikethrough/jsx-serializer/index.cjs.js +1 -1
- package/strikethrough/typings.d.ts +5 -0
- package/underline/createReactUnderline.js +1 -1
- package/underline/defaultRenderUnderline.d.ts +1 -1
- package/underline/defaultRenderUnderline.js +3 -1
- package/underline/index.cjs.js +3 -2
- package/underline/jsx-serializer/createJsxSerializeUnderline.js +1 -1
- package/underline/jsx-serializer/index.cjs.js +1 -1
- package/underline/typings.d.ts +5 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { QuadratsElement, Text, WithElementType, WithMarkType } from '@quadrats/core';
|
|
3
3
|
export interface RenderLeafPropsBase {
|
|
4
4
|
children: any;
|
|
5
5
|
leaf: Text;
|
|
@@ -7,13 +7,13 @@ export interface RenderLeafPropsBase {
|
|
|
7
7
|
export interface RenderMarkPropsBase<M> extends RenderLeafPropsBase {
|
|
8
8
|
mark: M;
|
|
9
9
|
}
|
|
10
|
-
export interface RenderElementPropsBase<E extends
|
|
10
|
+
export interface RenderElementPropsBase<E extends QuadratsElement = QuadratsElement> {
|
|
11
11
|
children: any;
|
|
12
12
|
element: E;
|
|
13
13
|
}
|
|
14
14
|
export interface CreateRenderMarkOptionsBase<M, P extends RenderMarkPropsBase<M>> extends WithMarkType {
|
|
15
15
|
render: (props: P) => JSX.Element;
|
|
16
16
|
}
|
|
17
|
-
export interface CreateRenderElementOptionsBase<P extends RenderElementPropsBase<
|
|
17
|
+
export interface CreateRenderElementOptionsBase<P extends RenderElementPropsBase<QuadratsElement>> extends WithElementType {
|
|
18
18
|
render: (props: P) => JSX.Element | null | undefined;
|
|
19
19
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CreateBlockquoteOptions } from '@quadrats/common/blockquote';
|
|
2
|
+
import { ReactBlockquote } from './typings';
|
|
3
|
+
export declare type CreateReactBlockquoteOptions = CreateBlockquoteOptions;
|
|
4
|
+
export declare function createReactBlockquote(options?: CreateReactBlockquoteOptions): ReactBlockquote;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import isHotkey from 'is-hotkey';
|
|
2
|
+
import { createBlockquote } from '@quadrats/common/blockquote';
|
|
3
|
+
import { createRenderElement } from '@quadrats/react';
|
|
4
|
+
import { createOnKeyDownBreak } from '@quadrats/react/line-break';
|
|
5
|
+
import { BLOCKQUOTE_HOTKEY } from './constants.js';
|
|
6
|
+
import { defaultRenderBlockquoteElement } from './defaultRenderBlockquoteElement.js';
|
|
7
|
+
|
|
8
|
+
function createReactBlockquote(options = {}) {
|
|
9
|
+
const core = createBlockquote(options);
|
|
10
|
+
const { type } = core;
|
|
11
|
+
const onKeyDownBreak = createOnKeyDownBreak({
|
|
12
|
+
softBreak: {
|
|
13
|
+
rules: [
|
|
14
|
+
{
|
|
15
|
+
hotkey: 'enter',
|
|
16
|
+
match: {
|
|
17
|
+
includeTypes: [type],
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
return Object.assign(Object.assign({}, core), { createHandlers: ({ hotkey = BLOCKQUOTE_HOTKEY } = {}) => ({
|
|
24
|
+
onKeyDown: (event, editor, next) => {
|
|
25
|
+
if (isHotkey(hotkey, event)) {
|
|
26
|
+
core.toggleBlockquote(editor);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
onKeyDownBreak(event, editor, next);
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
}), createRenderElement: ({ render = defaultRenderBlockquoteElement } = {}) => createRenderElement({ type, render }) });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { createReactBlockquote };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { RenderElementProps } from '@quadrats/react';
|
|
3
|
+
export declare const defaultRenderBlockquoteElement: ({ attributes, children, }: {
|
|
4
|
+
attributes?: {
|
|
5
|
+
'data-slate-node': "element";
|
|
6
|
+
'data-slate-inline'?: true | undefined;
|
|
7
|
+
'data-slate-void'?: true | undefined;
|
|
8
|
+
dir?: "rtl" | undefined;
|
|
9
|
+
ref: any;
|
|
10
|
+
} | undefined;
|
|
11
|
+
children: RenderElementProps['children'];
|
|
12
|
+
}) => JSX.Element;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var isHotkey = require('is-hotkey');
|
|
7
|
+
var blockquote = require('@quadrats/common/blockquote');
|
|
8
|
+
var react = require('@quadrats/react');
|
|
9
|
+
var lineBreak = require('@quadrats/react/line-break');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
12
|
+
|
|
13
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
14
|
+
var isHotkey__default = /*#__PURE__*/_interopDefaultLegacy(isHotkey);
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Default hotkey for toggling blockquote.
|
|
18
|
+
*
|
|
19
|
+
* @see [is-hotkey]{@link https://www.npmjs.com/package/is-hotkey}
|
|
20
|
+
*/
|
|
21
|
+
const BLOCKQUOTE_HOTKEY = 'ctrl+opt+q';
|
|
22
|
+
|
|
23
|
+
const defaultRenderBlockquoteElement = ({ attributes, children, }) => React__default.createElement("blockquote", Object.assign({}, attributes), children);
|
|
24
|
+
|
|
25
|
+
function createReactBlockquote(options = {}) {
|
|
26
|
+
const core = blockquote.createBlockquote(options);
|
|
27
|
+
const { type } = core;
|
|
28
|
+
const onKeyDownBreak = lineBreak.createOnKeyDownBreak({
|
|
29
|
+
softBreak: {
|
|
30
|
+
rules: [
|
|
31
|
+
{
|
|
32
|
+
hotkey: 'enter',
|
|
33
|
+
match: {
|
|
34
|
+
includeTypes: [type],
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
return Object.assign(Object.assign({}, core), { createHandlers: ({ hotkey = BLOCKQUOTE_HOTKEY } = {}) => ({
|
|
41
|
+
onKeyDown: (event, editor, next) => {
|
|
42
|
+
if (isHotkey__default(hotkey, event)) {
|
|
43
|
+
core.toggleBlockquote(editor);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
onKeyDownBreak(event, editor, next);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
}), createRenderElement: ({ render = defaultRenderBlockquoteElement } = {}) => react.createRenderElement({ type, render }) });
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
exports.BLOCKQUOTE_HOTKEY = BLOCKQUOTE_HOTKEY;
|
|
53
|
+
exports.createReactBlockquote = createReactBlockquote;
|
|
54
|
+
exports.defaultRenderBlockquoteElement = defaultRenderBlockquoteElement;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
|
+
import { JsxSerializeBlockquoteElementProps } from './typings';
|
|
4
|
+
export declare type CreateJsxSerializeBlockquoteOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeBlockquoteElementProps>>;
|
|
5
|
+
export declare function createJsxSerializeBlockquote(options?: CreateJsxSerializeBlockquoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BLOCKQUOTE_TYPE } from '@quadrats/common/blockquote';
|
|
2
|
+
import { createJsxSerializeElement } from '@quadrats/react/jsx-serializer';
|
|
3
|
+
import { defaultRenderBlockquoteElement } from '@quadrats/react/blockquote';
|
|
4
|
+
|
|
5
|
+
function createJsxSerializeBlockquote(options = {}) {
|
|
6
|
+
const { type = BLOCKQUOTE_TYPE, render = defaultRenderBlockquoteElement } = options;
|
|
7
|
+
return createJsxSerializeElement({ type, render });
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { createJsxSerializeBlockquote };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { defaultRenderBlockquoteElement } from '@quadrats/react/blockquote';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var blockquote = require('@quadrats/react/blockquote');
|
|
6
|
+
var blockquote$1 = require('@quadrats/common/blockquote');
|
|
7
|
+
var jsxSerializer = require('@quadrats/react/jsx-serializer');
|
|
8
|
+
|
|
9
|
+
function createJsxSerializeBlockquote(options = {}) {
|
|
10
|
+
const { type = blockquote$1.BLOCKQUOTE_TYPE, render = blockquote.defaultRenderBlockquoteElement } = options;
|
|
11
|
+
return jsxSerializer.createJsxSerializeElement({ type, render });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
exports.defaultRenderBlockquoteElement = blockquote.defaultRenderBlockquoteElement;
|
|
15
|
+
exports.createJsxSerializeBlockquote = createJsxSerializeBlockquote;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ToolbarIconProps } from '@quadrats/react/toolbar';
|
|
3
|
+
import { ReactBlockquote } from '@quadrats/react/blockquote';
|
|
4
|
+
export interface BlockquoteToolbarIconProps extends Omit<ToolbarIconProps, 'active' | 'onClick'> {
|
|
5
|
+
controller: ReactBlockquote;
|
|
6
|
+
}
|
|
7
|
+
declare function BlockquoteToolbarIcon(props: BlockquoteToolbarIconProps): JSX.Element;
|
|
8
|
+
export default BlockquoteToolbarIcon;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { __rest } from 'tslib';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ToolbarIcon } from '@quadrats/react/toolbar';
|
|
4
|
+
import { useBlockquoteTool } from './useBlockquoteTool.js';
|
|
5
|
+
|
|
6
|
+
function BlockquoteToolbarIcon(props) {
|
|
7
|
+
const { controller } = props, rest = __rest(props, ["controller"]);
|
|
8
|
+
const { active, onClick } = useBlockquoteTool(controller);
|
|
9
|
+
return React.createElement(ToolbarIcon, Object.assign({}, rest, { active: active, onClick: onClick }));
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { BlockquoteToolbarIcon as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('@quadrats/react');
|
|
6
|
+
var tslib = require('tslib');
|
|
7
|
+
var React = require('react');
|
|
8
|
+
var toolbar = require('@quadrats/react/toolbar');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
11
|
+
|
|
12
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
13
|
+
|
|
14
|
+
function useBlockquoteTool(controller) {
|
|
15
|
+
const editor = react.useQuadrats();
|
|
16
|
+
return {
|
|
17
|
+
active: controller.isSelectionInBlockquote(editor),
|
|
18
|
+
onClick: () => controller.toggleBlockquote(editor),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function BlockquoteToolbarIcon(props) {
|
|
23
|
+
const { controller } = props, rest = tslib.__rest(props, ["controller"]);
|
|
24
|
+
const { active, onClick } = useBlockquoteTool(controller);
|
|
25
|
+
return React__default.createElement(toolbar.ToolbarIcon, Object.assign({}, rest, { active: active, onClick: onClick }));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
exports.BlockquoteToolbarIcon = BlockquoteToolbarIcon;
|
|
29
|
+
exports.useBlockquoteTool = useBlockquoteTool;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useQuadrats } from '@quadrats/react';
|
|
2
|
+
|
|
3
|
+
function useBlockquoteTool(controller) {
|
|
4
|
+
const editor = useQuadrats();
|
|
5
|
+
return {
|
|
6
|
+
active: controller.isSelectionInBlockquote(editor),
|
|
7
|
+
onClick: () => controller.toggleBlockquote(editor),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { useBlockquoteTool };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { BlockquoteElement, Blockquote } from '@quadrats/common/blockquote';
|
|
3
|
+
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
4
|
+
export declare type RenderBlockquoteElementProps = RenderElementProps<BlockquoteElement>;
|
|
5
|
+
export interface ReactBlockquoteCreateHandlersOptions {
|
|
6
|
+
/**
|
|
7
|
+
* The hotkey to toggle blockquote.
|
|
8
|
+
*/
|
|
9
|
+
hotkey?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ReactBlockquoteCreateRenderElementOptions {
|
|
12
|
+
render?: (props: RenderBlockquoteElementProps) => JSX.Element | null | undefined;
|
|
13
|
+
}
|
|
14
|
+
export interface ReactBlockquote extends Blockquote, WithCreateHandlers<[ReactBlockquoteCreateHandlersOptions?]>, WithCreateRenderElement<[ReactBlockquoteCreateRenderElementOptions?]> {
|
|
15
|
+
}
|
package/bold/createReactBold.js
CHANGED
|
@@ -5,7 +5,7 @@ import { defaultRenderBold } from './defaultRenderBold.js';
|
|
|
5
5
|
|
|
6
6
|
const createReactBold = (variant) => createReactToggleMarkCreator(createBold(variant), {
|
|
7
7
|
hotkey: BOLD_HOTKEY,
|
|
8
|
-
render: defaultRenderBold
|
|
8
|
+
render: defaultRenderBold,
|
|
9
9
|
})();
|
|
10
10
|
|
|
11
11
|
export { createReactBold };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { RenderMarkPropsBase } from '@quadrats/react/_internal';
|
|
3
|
-
export declare const defaultRenderBold: (
|
|
3
|
+
export declare const defaultRenderBold: ({ children, leaf }: RenderMarkPropsBase<boolean>) => JSX.Element;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { BOLD_TYPE } from '@quadrats/common/bold';
|
|
2
3
|
|
|
3
|
-
const defaultRenderBold = (
|
|
4
|
+
const defaultRenderBold = ({ children, leaf }) => (React.createElement("strong", { className: leaf.boldVariant
|
|
5
|
+
? `${BOLD_TYPE}.${leaf.boldVariant}` : `${BOLD_TYPE}` }, children));
|
|
4
6
|
|
|
5
7
|
export { defaultRenderBold };
|
package/bold/index.cjs.js
CHANGED
|
@@ -17,11 +17,12 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
17
17
|
*/
|
|
18
18
|
const BOLD_HOTKEY = 'mod+b';
|
|
19
19
|
|
|
20
|
-
const defaultRenderBold = (
|
|
20
|
+
const defaultRenderBold = ({ children, leaf }) => (React__default.createElement("strong", { className: leaf.boldVariant
|
|
21
|
+
? `${bold.BOLD_TYPE}.${leaf.boldVariant}` : `${bold.BOLD_TYPE}` }, children));
|
|
21
22
|
|
|
22
23
|
const createReactBold = (variant) => toggleMark.createReactToggleMarkCreator(bold.createBold(variant), {
|
|
23
24
|
hotkey: BOLD_HOTKEY,
|
|
24
|
-
render: defaultRenderBold
|
|
25
|
+
render: defaultRenderBold,
|
|
25
26
|
})();
|
|
26
27
|
|
|
27
28
|
exports.BOLD_HOTKEY = BOLD_HOTKEY;
|
|
@@ -8,7 +8,7 @@ var jsxSerializer = require('@quadrats/react/toggle-mark/jsx-serializer');
|
|
|
8
8
|
|
|
9
9
|
const createJsxSerializeBold = jsxSerializer.createJsxSerializeToggleMarkCreator({
|
|
10
10
|
type: bold$1.BOLD_TYPE,
|
|
11
|
-
render: bold.defaultRenderBold
|
|
11
|
+
render: bold.defaultRenderBold,
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
exports.defaultRenderBold = bold.defaultRenderBold;
|
|
@@ -39,7 +39,8 @@ function Editable(props) {
|
|
|
39
39
|
}, [onCompositionStartProp, isEditorEmpty]);
|
|
40
40
|
const renderLeaf = useCallback((props) => {
|
|
41
41
|
const children = renderLeafProp ? renderLeafProp(props) : React.createElement(DefaultLeaf, Object.assign({}, props));
|
|
42
|
-
|
|
42
|
+
const { leaf } = props;
|
|
43
|
+
if (placeholderShowable && leaf[PLACEHOLDER_KEY]) {
|
|
43
44
|
return (React.createElement(React.Fragment, null,
|
|
44
45
|
React.createElement("span", { className: "qdr-editable__placeholder", contentEditable: false }, placeholder),
|
|
45
46
|
children));
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { ReactEditor } from 'slate-react';
|
|
2
|
-
import { HistoryEditor } from '@quadrats/core';
|
|
3
2
|
import { EventHandlerName, EventHandlers, Handler } from './typings/handler';
|
|
4
3
|
/**
|
|
5
4
|
* To compose sequential `event handlers` to single for each event types.
|
|
6
5
|
*/
|
|
7
6
|
export declare function composeHandlers<H extends EventHandlerName>(handlersList: {
|
|
8
7
|
[HH in H]?: Handler<HH>;
|
|
9
|
-
}[]): (editor: ReactEditor
|
|
8
|
+
}[]): (editor: ReactEditor) => EventHandlers;
|
|
@@ -3,4 +3,4 @@ import { RenderElementProps } from './typings/renderer';
|
|
|
3
3
|
/**
|
|
4
4
|
* To compose sequential `renderElement`s to single.
|
|
5
5
|
*/
|
|
6
|
-
export declare function composeRenderElements(renderElements: ((props: RenderElementProps) => JSX.Element | null | undefined)[]): (props: RenderElementProps<import("
|
|
6
|
+
export declare function composeRenderElements(renderElements: ((props: RenderElementProps) => JSX.Element | null | undefined)[]): (props: RenderElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ReactEditor } from 'slate-react';
|
|
2
|
+
export declare function createReactEditor(): ReactEditor;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CreateRenderElementOptions, RenderElementProps } from './typings/renderer';
|
|
3
|
-
export declare function createRenderElement<P extends RenderElementProps>(options: CreateRenderElementOptions<P>): (props: RenderElementProps<import("
|
|
3
|
+
export declare function createRenderElement<P extends RenderElementProps>(options: CreateRenderElementOptions<P>): (props: RenderElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { CreateRenderElementOptions, RenderElementProps } from './typings/renderer';
|
|
3
|
-
export declare function createRenderElements<P extends RenderElementProps>(options: CreateRenderElementOptions<P>[]): (props: RenderElementProps<import("
|
|
3
|
+
export declare function createRenderElements<P extends RenderElementProps>(options: CreateRenderElementOptions<P>[]): (props: RenderElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
|
package/core/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { BaseEditor, QuadratsElement, QuadratsText } from '@quadrats/core';
|
|
2
|
+
import { ReactEditor } from 'slate-react';
|
|
3
|
+
export { useSlateStatic, useFocused, useReadOnly, useSelected, useSlate as useQuadrats, ReactEditor, } from 'slate-react';
|
|
2
4
|
export * from './typings/handler';
|
|
3
5
|
export * from './typings/renderer';
|
|
4
6
|
export * from './typings/with';
|
|
@@ -13,3 +15,10 @@ export { createReactEditor } from './createReactEditor';
|
|
|
13
15
|
export { createRenderElement } from './createRenderElement';
|
|
14
16
|
export { createRenderElements } from './createRenderElements';
|
|
15
17
|
export { createRenderMark } from './createRenderMark';
|
|
18
|
+
declare module 'slate' {
|
|
19
|
+
interface CustomTypes {
|
|
20
|
+
Editor: BaseEditor & ReactEditor;
|
|
21
|
+
Element: QuadratsElement;
|
|
22
|
+
Text: QuadratsText;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { DOMAttributes, EventHandler } from 'react';
|
|
2
2
|
import { ReactEditor } from 'slate-react';
|
|
3
|
-
import { HistoryEditor } from '@quadrats/core';
|
|
4
3
|
export declare type EventHandlerName = {
|
|
5
4
|
[K in keyof Required<DOMAttributes<HTMLElement>>]: NonNullable<DOMAttributes<HTMLElement>[K]> extends EventHandler<any> ? K : never;
|
|
6
5
|
}[keyof DOMAttributes<HTMLElement>];
|
|
7
6
|
export declare type EventHandlers = Pick<DOMAttributes<HTMLElement>, EventHandlerName>;
|
|
8
7
|
export declare type GetEventHandlerByName<H extends EventHandlerName> = NonNullable<EventHandlers[H]>;
|
|
9
8
|
export declare type GetEventByName<H extends EventHandlerName> = GetEventHandlerByName<H> extends (event: infer E) => void ? E : never;
|
|
10
|
-
export declare type Handler<H extends EventHandlerName> = (event: GetEventByName<H>, editor: ReactEditor
|
|
9
|
+
export declare type Handler<H extends EventHandlerName> = (event: GetEventByName<H>, editor: ReactEditor, next: VoidFunction) => void;
|
|
11
10
|
export declare type Handlers = {
|
|
12
11
|
[H in EventHandlerName]?: Handler<H>;
|
|
13
12
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { RenderElementProps as SlateReactRenderElementProps, RenderLeafProps as SlateRenderLeafProps } from 'slate-react';
|
|
3
|
-
import {
|
|
3
|
+
import { QuadratsElement } from '@quadrats/core';
|
|
4
4
|
import { CreateRenderElementOptionsBase, CreateRenderMarkOptionsBase, RenderElementPropsBase, RenderLeafPropsBase, RenderMarkPropsBase } from '@quadrats/react/_internal';
|
|
5
5
|
export declare type RenderLeafProps = RenderLeafPropsBase & Pick<SlateRenderLeafProps, 'attributes'>;
|
|
6
6
|
export declare type RenderMarkProps<M> = RenderMarkPropsBase<M>;
|
|
7
|
-
export declare type RenderElementProps<E extends
|
|
7
|
+
export declare type RenderElementProps<E extends QuadratsElement = QuadratsElement> = RenderElementPropsBase<E> & Pick<SlateReactRenderElementProps, 'attributes'>;
|
|
8
8
|
export declare type CreateRenderMarkOptions<M> = CreateRenderMarkOptionsBase<M, RenderMarkProps<M>>;
|
|
9
|
-
export declare type CreateRenderElementOptions<P extends RenderElementProps<
|
|
9
|
+
export declare type CreateRenderElementOptions<P extends RenderElementProps<QuadratsElement>> = CreateRenderElementOptionsBase<P>;
|
|
10
10
|
export interface WithCreateRenderLeaf<P extends any[] = []> {
|
|
11
11
|
createRenderLeaf: (...params: P) => (props: RenderLeafProps) => JSX.Element;
|
|
12
12
|
}
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
3
|
import { JsxSerializeDividerProps } from './typings';
|
|
4
4
|
export declare type CreateJsxSerializeDividerOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeDividerProps>>;
|
|
5
|
-
export declare function createJsxSerializeDivider(options?: CreateJsxSerializeDividerOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("
|
|
5
|
+
export declare function createJsxSerializeDivider(options?: CreateJsxSerializeDividerOptions): (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 useDividerTool(controller) {
|
|
15
|
-
const editor = react.
|
|
15
|
+
const editor = react.useSlateStatic();
|
|
16
16
|
return {
|
|
17
17
|
onClick: () => controller.insertDivider(editor),
|
|
18
18
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSlateStatic } from '@quadrats/react';
|
|
2
2
|
|
|
3
3
|
function useDividerTool(controller) {
|
|
4
|
-
const editor =
|
|
4
|
+
const editor = useSlateStatic();
|
|
5
5
|
return {
|
|
6
6
|
onClick: () => controller.insertDivider(editor),
|
|
7
7
|
};
|
|
@@ -6,4 +6,4 @@ export interface CreateJsxSerializeEmbedOptions<Provider extends string> {
|
|
|
6
6
|
strategies: EmbedStrategies<Provider>;
|
|
7
7
|
renderers: Record<Provider, (props: JsxSerializeEmbedElementProps<any, any>) => JSX.Element | null | undefined>;
|
|
8
8
|
}
|
|
9
|
-
export declare function createJsxSerializeEmbed<Provider extends string>(options: CreateJsxSerializeEmbedOptions<Provider>): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("
|
|
9
|
+
export declare function createJsxSerializeEmbed<Provider extends string>(options: CreateJsxSerializeEmbedOptions<Provider>): (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 useEmbedTool(controller, providers, getPlaceholder, startToolInput) {
|
|
15
|
-
const editor = react.
|
|
15
|
+
const editor = react.useSlateStatic();
|
|
16
16
|
const defaultStartToolInput = toolbar.useStartToolInput();
|
|
17
17
|
const start = startToolInput
|
|
18
18
|
? (inputConfig) => startToolInput(editor, inputConfig)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useSlateStatic } from '@quadrats/react';
|
|
2
2
|
import { useStartToolInput } from '@quadrats/react/toolbar';
|
|
3
3
|
|
|
4
4
|
function useEmbedTool(controller, providers, getPlaceholder, startToolInput) {
|
|
5
|
-
const editor =
|
|
5
|
+
const editor = useSlateStatic();
|
|
6
6
|
const defaultStartToolInput = useStartToolInput();
|
|
7
7
|
const start = startToolInput
|
|
8
8
|
? (inputConfig) => startToolInput(editor, inputConfig)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useState, useLayoutEffect } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { useSlateStatic, ReactEditor } from '@quadrats/react';
|
|
3
3
|
|
|
4
4
|
function useFileUploader(element) {
|
|
5
5
|
const [percentage, setPercentage] = useState(0);
|
|
6
|
-
const editor =
|
|
6
|
+
const editor = useSlateStatic();
|
|
7
7
|
useLayoutEffect(() => element.register(() => ReactEditor.findPath(editor, element), setPercentage), [element]);
|
|
8
8
|
return {
|
|
9
9
|
percentage,
|
|
@@ -13,7 +13,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
13
13
|
|
|
14
14
|
function useFileUploader(element) {
|
|
15
15
|
const [percentage, setPercentage] = React.useState(0);
|
|
16
|
-
const editor = react.
|
|
16
|
+
const editor = react.useSlateStatic();
|
|
17
17
|
React.useLayoutEffect(() => element.register(() => react.ReactEditor.findPath(editor, element), setPercentage), [element]);
|
|
18
18
|
return {
|
|
19
19
|
percentage,
|
|
@@ -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 useFileUploaderTool(controller, options) {
|
|
15
|
-
const editor = react.
|
|
15
|
+
const editor = react.useSlateStatic();
|
|
16
16
|
return {
|
|
17
17
|
onClick: () => controller.upload(editor, options),
|
|
18
18
|
};
|