@quadrats/react 0.5.4 → 0.5.8

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.
@@ -1,5 +1,9 @@
1
1
  /// <reference types="react" />
2
2
  import { EditableProps as SlateEditableProps } from 'slate-react/dist/components/editable';
3
- export declare type EditableProps = SlateEditableProps;
3
+ import { RenderElementProps, RenderLeafProps } from '../typings/renderer';
4
+ export declare type EditableProps = Omit<SlateEditableProps, 'renderLeaf' | 'renderElement'> & {
5
+ renderLeaf?: (props: RenderLeafProps) => JSX.Element;
6
+ renderElement?: (props: RenderElementProps) => JSX.Element;
7
+ };
4
8
  declare function Editable(props: EditableProps): JSX.Element;
5
9
  export default Editable;
@@ -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
- export declare type QuadratsProps = Pick<Parameters<typeof Slate>[0], 'children' | 'editor' | 'onChange' | 'value'> & Omit<ConfigsProviderProps, 'children'>;
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
  */
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
3
+ import { JsxSerializeLineBreakElementProps } from './typings';
4
+ export declare type CreateJsxSerializeLineBreakOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeLineBreakElementProps>>;
5
+ export declare function createJsxSerializeLineBreak(options?: CreateJsxSerializeLineBreakOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
@@ -0,0 +1,11 @@
1
+ import { createJsxSerializeElement } from '@quadrats/react/jsx-serializer';
2
+ import { defaultRenderLineBreakElement } from './defaultRenderLineBreakElement.js';
3
+ import { LINE_BREAK_TYPE } from '@quadrats/core';
4
+
5
+ /* eslint-disable max-len */
6
+ function createJsxSerializeLineBreak(options = {}) {
7
+ const { type = LINE_BREAK_TYPE, render = defaultRenderLineBreakElement } = options;
8
+ return createJsxSerializeElement({ type, render });
9
+ }
10
+
11
+ export { createJsxSerializeLineBreak };
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const defaultRenderLineBreakElement: () => JSX.Element;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+
3
+ const defaultRenderLineBreakElement = () => (React.createElement("span", { style: { userSelect: 'none' }, contentEditable: false },
4
+ React.createElement("br", null)));
5
+
6
+ export { defaultRenderLineBreakElement };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var jsxSerializer = require('@quadrats/react/jsx-serializer');
7
+ var core = require('@quadrats/core');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+
13
+ const defaultRenderLineBreakElement = () => (React__default.createElement("span", { style: { userSelect: 'none' }, contentEditable: false },
14
+ React__default.createElement("br", null)));
15
+
16
+ /* eslint-disable max-len */
17
+ function createJsxSerializeLineBreak(options = {}) {
18
+ const { type = core.LINE_BREAK_TYPE, render = defaultRenderLineBreakElement } = options;
19
+ return jsxSerializer.createJsxSerializeElement({ type, render });
20
+ }
21
+
22
+ exports.createJsxSerializeLineBreak = createJsxSerializeLineBreak;
23
+ exports.defaultRenderLineBreakElement = defaultRenderLineBreakElement;
@@ -0,0 +1,3 @@
1
+ export * from './typings';
2
+ export { defaultRenderLineBreakElement } from './defaultRenderLineBreakElement';
3
+ export { CreateJsxSerializeLineBreakOptions, createJsxSerializeLineBreak } from './createJsxSerializeLineBreak';
@@ -0,0 +1,2 @@
1
+ export { defaultRenderLineBreakElement } from './defaultRenderLineBreakElement.js';
2
+ export { createJsxSerializeLineBreak } from './createJsxSerializeLineBreak.js';
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "@quadrats/react/line-break/jsx-serializer",
3
+ "sideEffects": false,
4
+ "main": "./index.cjs.js",
5
+ "module": "./index.js",
6
+ "typings": "./index.d.ts"
7
+ }
@@ -0,0 +1,3 @@
1
+ import { LineBreakElement } from '@quadrats/core';
2
+ import { JsxSerializeElementProps } from '@quadrats/react/jsx-serializer';
3
+ export declare type JsxSerializeLineBreakElementProps = JsxSerializeElementProps<LineBreakElement>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quadrats/react",
3
- "version": "0.5.4",
3
+ "version": "0.5.8",
4
4
  "description": "",
5
5
  "author": "Rytass",
6
6
  "homepage": "https://github.com/Quadrats/quadrats#readme",
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  export interface ToolbarProps {
3
3
  /**
4
4
  * If there are any nodes which type match it, toolbar will hide.
@@ -8,6 +8,10 @@ export interface ToolbarProps {
8
8
  * A render props which provide a flag `expanded` which useful for rendering different things between collapsed and expanded.
9
9
  */
10
10
  children: (expanded: boolean) => JSX.Element | null | undefined;
11
+ /**
12
+ * Toolbar container
13
+ */
14
+ containerRef?: React.MutableRefObject<HTMLElement | undefined>;
11
15
  }
12
16
  declare function Toolbar(props: ToolbarProps): JSX.Element | null;
13
17
  export default Toolbar;
@@ -80,6 +80,13 @@ function Toolbar(props) {
80
80
  }
81
81
  });
82
82
  });
83
+ const getPortalContainer = useCallback(() => {
84
+ var _a;
85
+ if ((_a = props.containerRef) === null || _a === void 0 ? void 0 : _a.current) {
86
+ return props.containerRef.current;
87
+ }
88
+ return document.body;
89
+ }, [props.containerRef]);
83
90
  if (!shouldRender || (disabledElementTypes && isNodesTypeIn(editor, disabledElementTypes, { mode: 'all' }))) {
84
91
  return null;
85
92
  }
@@ -88,7 +95,7 @@ function Toolbar(props) {
88
95
  if (!tools) {
89
96
  return null;
90
97
  }
91
- return (React.createElement(Portal, null,
98
+ return (React.createElement(Portal, { getContainer: getPortalContainer },
92
99
  React.createElement("div", { ref: toolbarRef, className: clsx('qdr-toolbar__wrapper', { 'qdr-toolbar__wrapper--inputting': toolInput }, themeProps.className), style: themeProps.style },
93
100
  React.createElement("div", { className: "qdr-toolbar__arrow" }),
94
101
  React.createElement("div", { className: "qdr-toolbar" },
@@ -120,6 +120,13 @@ function Toolbar(props) {
120
120
  }
121
121
  });
122
122
  });
123
+ const getPortalContainer = React.useCallback(() => {
124
+ var _a;
125
+ if ((_a = props.containerRef) === null || _a === void 0 ? void 0 : _a.current) {
126
+ return props.containerRef.current;
127
+ }
128
+ return document.body;
129
+ }, [props.containerRef]);
123
130
  if (!shouldRender || (disabledElementTypes && core.isNodesTypeIn(editor, disabledElementTypes, { mode: 'all' }))) {
124
131
  return null;
125
132
  }
@@ -128,7 +135,7 @@ function Toolbar(props) {
128
135
  if (!tools) {
129
136
  return null;
130
137
  }
131
- return (React__default.createElement(components.Portal, null,
138
+ return (React__default.createElement(components.Portal, { getContainer: getPortalContainer },
132
139
  React__default.createElement("div", { ref: toolbarRef, className: clsx__default('qdr-toolbar__wrapper', { 'qdr-toolbar__wrapper--inputting': toolInput }, themeProps.className), style: themeProps.style },
133
140
  React__default.createElement("div", { className: "qdr-toolbar__arrow" }),
134
141
  React__default.createElement("div", { className: "qdr-toolbar" },