@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.
Files changed (77) hide show
  1. package/_internal/renderer/typings.d.ts +3 -3
  2. package/blockquote/jsx-serializer/createJsxSerializeBlockquote.d.ts +1 -1
  3. package/blockquote/typings.d.ts +2 -2
  4. package/core/components/Editable.js +2 -1
  5. package/core/composeHandlers.d.ts +1 -2
  6. package/core/composeHandlers.js +2 -2
  7. package/core/composeRenderElements.d.ts +1 -1
  8. package/core/composeRenderElements.js +1 -1
  9. package/core/composeRenderLeafs.js +1 -1
  10. package/core/createReactEditor.d.ts +2 -1
  11. package/core/createRenderElement.d.ts +1 -1
  12. package/core/createRenderElements.d.ts +1 -1
  13. package/core/index.d.ts +11 -1
  14. package/core/typings/descendant.d.ts +2 -0
  15. package/core/typings/handler.d.ts +1 -2
  16. package/core/typings/renderer.d.ts +3 -3
  17. package/divider/jsx-serializer/createJsxSerializeDivider.d.ts +1 -1
  18. package/divider/toolbar/index.cjs.js +1 -1
  19. package/divider/toolbar/useDividerTool.js +2 -2
  20. package/divider/typings.d.ts +2 -2
  21. package/embed/jsx-serializer/createJsxSerializeEmbed.d.ts +1 -1
  22. package/embed/toolbar/EmbedToolbarIcon.d.ts +2 -2
  23. package/embed/toolbar/index.cjs.js +3 -3
  24. package/embed/toolbar/useEmbedTool.d.ts +2 -2
  25. package/embed/toolbar/useEmbedTool.js +4 -4
  26. package/embed/typings.d.ts +2 -2
  27. package/file-uploader/hooks/useFileUploader.js +2 -2
  28. package/file-uploader/index.cjs.js +1 -1
  29. package/file-uploader/toolbar/index.cjs.js +1 -1
  30. package/file-uploader/toolbar/useFileUploaderTool.js +2 -2
  31. package/file-uploader/typings.d.ts +2 -2
  32. package/footnote/index.cjs.js +9 -8
  33. package/footnote/jsx-serializer/createJsxSerializeFootnote.d.ts +1 -1
  34. package/footnote/typings.d.ts +2 -2
  35. package/footnote/useFootnotes.d.ts +2 -2
  36. package/footnote/useFootnotes.js +3 -3
  37. package/footnote/useFootnotesFromNodes.d.ts +2 -2
  38. package/footnote/useFootnotesFromNodes.js +6 -5
  39. package/heading/jsx-serializer/createJsxSerializeHeading.d.ts +1 -1
  40. package/heading/typings.d.ts +2 -2
  41. package/image/components/Image.js +3 -5
  42. package/image/components/ImageCaption.js +2 -2
  43. package/image/createReactImage.js +1 -1
  44. package/image/hooks/useImageResizer.js +6 -6
  45. package/image/index.cjs.js +9 -11
  46. package/image/jsx-serializer/createJsxSerializeImage.d.ts +2 -1
  47. package/image/jsx-serializer/createJsxSerializeImage.js +5 -4
  48. package/image/jsx-serializer/index.cjs.js +5 -4
  49. package/image/typings.d.ts +2 -2
  50. package/index.cjs.js +7 -6
  51. package/index.js +1 -1
  52. package/input-block/typings.d.ts +1 -1
  53. package/jsx-serializer/createJsxSerializeElement.d.ts +1 -1
  54. package/jsx-serializer/createJsxSerializeElements.d.ts +1 -1
  55. package/jsx-serializer/createJsxSerializer.d.ts +2 -2
  56. package/jsx-serializer/createJsxSerializer.js +2 -2
  57. package/jsx-serializer/index.cjs.js +2 -2
  58. package/jsx-serializer/typings.d.ts +2 -2
  59. package/link/jsx-serializer/createJsxSerializeLink.d.ts +1 -1
  60. package/link/toolbar/index.cjs.js +1 -1
  61. package/link/toolbar/useUnlinkTool.js +2 -2
  62. package/link/typings.d.ts +2 -2
  63. package/list/createReactList.js +1 -1
  64. package/list/index.cjs.js +1 -1
  65. package/list/jsx-serializer/createJsxSerializeList.d.ts +1 -1
  66. package/list/typings.d.ts +2 -2
  67. package/package.json +12 -12
  68. package/paragraph/createRenderParagraphElement.d.ts +1 -1
  69. package/paragraph/jsx-serializer/createJsxSerializeParagraph.d.ts +1 -1
  70. package/read-more/jsx-serializer/createJsxSerializeReadMore.d.ts +1 -1
  71. package/read-more/toolbar/index.cjs.js +1 -1
  72. package/read-more/toolbar/useReadMoreTool.js +2 -2
  73. package/read-more/typings.d.ts +2 -2
  74. package/toggle-mark/typings.d.ts +2 -2
  75. package/toolbar/components/Toolbar.js +1 -1
  76. package/toolbar/components/ToolbarInput.js +1 -3
  77. package/toolbar/index.cjs.js +2 -4
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { Element, Text, WithElementType, WithMarkType } from '@quadrats/core';
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 Element = Element> {
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<Element>> extends WithElementType {
17
+ export interface CreateRenderElementOptionsBase<P extends RenderElementPropsBase<QuadratsElement>> extends WithElementType {
18
18
  render: (props: P) => JSX.Element | null | undefined;
19
19
  }
@@ -2,4 +2,4 @@
2
2
  import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
3
3
  import { JsxSerializeBlockquoteElementProps } from './typings';
4
4
  export declare type CreateJsxSerializeBlockquoteOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeBlockquoteElementProps>>;
5
- export declare function createJsxSerializeBlockquote(options?: CreateJsxSerializeBlockquoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("slate").Element>) => JSX.Element | null | undefined;
5
+ export declare function createJsxSerializeBlockquote(options?: CreateJsxSerializeBlockquoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
@@ -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, WithCreateHandlers<[ReactBlockquoteCreateHandlersOptions?]>, WithCreateRenderElement<[ReactBlockquoteCreateRenderElementOptions?]> {
14
+ export interface ReactBlockquote extends Blockquote<ReactEditor>, WithCreateHandlers<[ReactBlockquoteCreateHandlersOptions?]>, WithCreateRenderElement<[ReactBlockquoteCreateRenderElementOptions?]> {
15
15
  }
@@ -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
- if (placeholderShowable && props.leaf[PLACEHOLDER_KEY]) {
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 & HistoryEditor) => EventHandlers;
8
+ }[]): (editor: ReactEditor) => EventHandlers;
@@ -1,6 +1,6 @@
1
1
  function createEventHandler(editor, handlers) {
2
2
  const [handler, ...restHandlers] = handlers;
3
- return (event) => handler(event, editor, () => {
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 (editor) => handlersEntries.reduce((acc, [name, handlers]) => {
27
+ return editor => handlersEntries.reduce((acc, [name, handlers]) => {
28
28
  acc[name] = createEventHandler(editor, handlers);
29
29
  return acc;
30
30
  }, {});
@@ -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("slate").Element>) => JSX.Element;
6
+ export declare function composeRenderElements(renderElements: ((props: RenderElementProps) => JSX.Element | null | undefined)[]): (props: RenderElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element;
@@ -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((props) => React.createElement(DefaultElement, Object.assign({}, props)), renderElements);
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((props) => React.createElement(DefaultLeaf, Object.assign({}, props)), renderLeafs);
9
+ return composeRenderLeafsBase(props => React.createElement(DefaultLeaf, Object.assign({}, props)), renderLeafs);
10
10
  }
11
11
 
12
12
  export { composeRenderLeafs };
@@ -1 +1,2 @@
1
- export declare function createReactEditor(): import("@quadrats/core").Editor & import("@quadrats/core").HistoryEditor & import("slate-react").ReactEditor;
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("slate").Element>) => JSX.Element | null | undefined;
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("slate").Element>) => JSX.Element | null | undefined;
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,7 +1,10 @@
1
- export { useEditor, useFocused, useReadOnly, useSelected, useSlate as useQuadrats, ReactEditor, } from 'slate-react';
1
+ import { 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';
7
+ export * from './typings/descendant';
5
8
  export { default as Editable, EditableProps } from './components/Editable';
6
9
  export { default as DefaultElement } from './components/DefaultElement';
7
10
  export { default as DefaultLeaf } from './components/DefaultLeaf';
@@ -13,3 +16,10 @@ export { createReactEditor } from './createReactEditor';
13
16
  export { createRenderElement } from './createRenderElement';
14
17
  export { createRenderElements } from './createRenderElements';
15
18
  export { createRenderMark } from './createRenderMark';
19
+ declare module 'slate' {
20
+ interface CustomTypes {
21
+ Editor: ReactEditor;
22
+ Element: QuadratsElement;
23
+ Text: QuadratsText;
24
+ }
25
+ }
@@ -0,0 +1,2 @@
1
+ import { QuadratsElement, QuadratsText } from '@quadrats/core';
2
+ export declare type Descendant = QuadratsElement | QuadratsText;
@@ -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 & HistoryEditor, next: VoidFunction) => void;
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 { Element } from '@quadrats/core';
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 Element = Element> = RenderElementPropsBase<E> & Pick<SlateReactRenderElementProps, 'attributes'>;
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<Element>> = CreateRenderElementOptionsBase<P>;
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("slate").Element>) => JSX.Element | null | undefined;
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.useEditor();
15
+ const editor = react.useSlateStatic();
16
16
  return {
17
17
  onClick: () => controller.insertDivider(editor),
18
18
  };
@@ -1,7 +1,7 @@
1
- import { useEditor } from '@quadrats/react';
1
+ import { useSlateStatic } from '@quadrats/react';
2
2
 
3
3
  function useDividerTool(controller) {
4
- const editor = useEditor();
4
+ const editor = useSlateStatic();
5
5
  return {
6
6
  onClick: () => controller.insertDivider(editor),
7
7
  };
@@ -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, WithCreateRenderElement<[ReactDividerCreateRenderElementOptions?]> {
8
+ export interface ReactDivider extends Divider<ReactEditor>, WithCreateRenderElement<[ReactDividerCreateRenderElementOptions?]> {
9
9
  }
@@ -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("slate").Element>) => JSX.Element | null | undefined;
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;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { Editor } from '@quadrats/core';
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: Editor, inputConfig: InputWidgetConfig) => void;
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;
@@ -12,15 +12,15 @@ 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.useEditor();
15
+ const editor = react.useSlateStatic();
16
16
  const defaultStartToolInput = toolbar.useStartToolInput();
17
17
  const start = startToolInput
18
- ? (inputConfig) => startToolInput(editor, inputConfig)
18
+ ? inputConfig => startToolInput(editor, inputConfig)
19
19
  : defaultStartToolInput;
20
20
  return {
21
21
  onClick: () => start({
22
22
  getPlaceholder,
23
- confirm: (embedCode) => controller.insertEmbed(editor, providers, embedCode),
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: Editor, inputConfig: InputWidgetConfig) => void): {
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
  };
@@ -1,16 +1,16 @@
1
- import { useEditor } from '@quadrats/react';
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 = useEditor();
5
+ const editor = useSlateStatic();
6
6
  const defaultStartToolInput = useStartToolInput();
7
7
  const start = startToolInput
8
- ? (inputConfig) => startToolInput(editor, inputConfig)
8
+ ? inputConfig => startToolInput(editor, inputConfig)
9
9
  : defaultStartToolInput;
10
10
  return {
11
11
  onClick: () => start({
12
12
  getPlaceholder,
13
- confirm: (embedCode) => controller.insertEmbed(editor, providers, embedCode),
13
+ confirm: embedCode => controller.insertEmbed(editor, providers, embedCode),
14
14
  }),
15
15
  };
16
16
  }
@@ -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
  import { useState, useLayoutEffect } from 'react';
2
- import { useEditor, ReactEditor } from '@quadrats/react';
2
+ import { useSlateStatic, ReactEditor } from '@quadrats/react';
3
3
 
4
4
  function useFileUploader(element) {
5
5
  const [percentage, setPercentage] = useState(0);
6
- const editor = useEditor();
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.useEditor();
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.useEditor();
15
+ const editor = react.useSlateStatic();
16
16
  return {
17
17
  onClick: () => controller.upload(editor, options),
18
18
  };
@@ -1,7 +1,7 @@
1
- import { useEditor } from '@quadrats/react';
1
+ import { useSlateStatic } from '@quadrats/react';
2
2
 
3
3
  function useFileUploaderTool(controller, options) {
4
- const editor = useEditor();
4
+ const editor = useSlateStatic();
5
5
  return {
6
6
  onClick: () => controller.upload(editor, options),
7
7
  };
@@ -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?]>;
@@ -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: (node) => node.type === footnote.FOOTNOTE_TYPE,
37
+ match: node => node.type === footnote.FOOTNOTE_TYPE,
38
38
  }));
39
39
  const footnotes = footnoteNodes.map((node) => {
40
- var _a;
40
+ var _a, _b;
41
41
  const nodeData = node === null || node === void 0 ? void 0 : node[0];
42
42
  return {
43
- wrapperText: (_a = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.children)) === null || _a === void 0 ? void 0 : _a.map((childNode) => childNode.text).join(''),
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
  };
@@ -50,20 +50,21 @@ function useFootnotes(editor) {
50
50
 
51
51
  function deepSearchFootnoteFromNodes(nodes) {
52
52
  const result = nodes.flatMap((element) => {
53
- var _a;
53
+ var _a, _b, _c, _d;
54
54
  const curNode = core.Node.isNode(element)
55
55
  && element.type === footnote.FOOTNOTE_TYPE ? element : null;
56
- const child = core.Node.isNodeList(element === null || element === void 0 ? void 0 : element.children) ? deepSearchFootnoteFromNodes(element === null || element === void 0 ? void 0 : element.children) : null;
57
- return (_a = curNode !== null && curNode !== void 0 ? curNode : child) !== null && _a !== void 0 ? _a : [];
56
+ const child = core.Node.isNodeList((_a = element) === null || _a === void 0 ? void 0 : _a.children)
57
+ ? deepSearchFootnoteFromNodes((_c = (_b = element) === null || _b === void 0 ? void 0 : _b.children) !== null && _c !== void 0 ? _c : []) : null;
58
+ return (_d = curNode !== null && curNode !== void 0 ? curNode : child) !== null && _d !== void 0 ? _d : [];
58
59
  });
59
60
  return result;
60
61
  }
61
62
  function useFootnotesFromNodes(nodes) {
62
63
  const filter = deepSearchFootnoteFromNodes(nodes);
63
- return filter.map((element) => {
64
+ return filter.map(element => {
64
65
  var _a;
65
66
  return ({
66
- wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map((childNode) => childNode.text).join(''),
67
+ wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map(childNode => childNode.text).join(''),
67
68
  footnote: element.footnote,
68
69
  index: element.index,
69
70
  });
@@ -2,4 +2,4 @@
2
2
  import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
3
3
  import { JsxSerializeFootnoteElementProps } from './typings';
4
4
  export declare type CreateJsxSerializeFootnoteOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeFootnoteElementProps>>;
5
- export declare function createJsxSerializeFootnote(options?: CreateJsxSerializeFootnoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("slate").Element>) => JSX.Element | null | undefined;
5
+ export declare function createJsxSerializeFootnote(options?: CreateJsxSerializeFootnoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
@@ -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, 'with'>, WithCreateRenderElement<[ReactFootnoteCreateRenderElementOptions?]>, ReactWithable {
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
- export declare function useFootnotes(editor: Editor): FootnoteData[];
2
+ import { ReactEditor } from 'slate-react';
3
+ export declare function useFootnotes(editor: ReactEditor): FootnoteData[];
4
4
  export default useFootnotes;
@@ -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: (node) => node.type === FOOTNOTE_TYPE,
7
+ match: node => node.type === FOOTNOTE_TYPE,
8
8
  }));
9
9
  const footnotes = footnoteNodes.map((node) => {
10
- var _a;
10
+ var _a, _b;
11
11
  const nodeData = node === null || node === void 0 ? void 0 : node[0];
12
12
  return {
13
- wrapperText: (_a = (nodeData === null || nodeData === void 0 ? void 0 : nodeData.children)) === null || _a === void 0 ? void 0 : _a.map((childNode) => childNode.text).join(''),
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
  };
@@ -1,4 +1,4 @@
1
- import { Node } from '@quadrats/core';
1
+ import { Descendant } from '@quadrats/core';
2
2
  import { FootnoteData } from '@quadrats/common/footnote';
3
- export declare function useFootnotesFromNodes(nodes: Node[]): FootnoteData[];
3
+ export declare function useFootnotesFromNodes(nodes: Descendant[]): FootnoteData[];
4
4
  export default useFootnotesFromNodes;
@@ -3,20 +3,21 @@ import { FOOTNOTE_TYPE } from '@quadrats/common/footnote';
3
3
 
4
4
  function deepSearchFootnoteFromNodes(nodes) {
5
5
  const result = nodes.flatMap((element) => {
6
- var _a;
6
+ var _a, _b, _c, _d;
7
7
  const curNode = Node.isNode(element)
8
8
  && element.type === FOOTNOTE_TYPE ? element : null;
9
- const child = Node.isNodeList(element === null || element === void 0 ? void 0 : element.children) ? deepSearchFootnoteFromNodes(element === null || element === void 0 ? void 0 : element.children) : null;
10
- return (_a = curNode !== null && curNode !== void 0 ? curNode : child) !== null && _a !== void 0 ? _a : [];
9
+ const child = Node.isNodeList((_a = element) === null || _a === void 0 ? void 0 : _a.children)
10
+ ? deepSearchFootnoteFromNodes((_c = (_b = element) === null || _b === void 0 ? void 0 : _b.children) !== null && _c !== void 0 ? _c : []) : null;
11
+ return (_d = curNode !== null && curNode !== void 0 ? curNode : child) !== null && _d !== void 0 ? _d : [];
11
12
  });
12
13
  return result;
13
14
  }
14
15
  function useFootnotesFromNodes(nodes) {
15
16
  const filter = deepSearchFootnoteFromNodes(nodes);
16
- return filter.map((element) => {
17
+ return filter.map(element => {
17
18
  var _a;
18
19
  return ({
19
- wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map((childNode) => childNode.text).join(''),
20
+ wrapperText: (_a = (element === null || element === void 0 ? void 0 : element.children)) === null || _a === void 0 ? void 0 : _a.map(childNode => childNode.text).join(''),
20
21
  footnote: element.footnote,
21
22
  index: element.index,
22
23
  });
@@ -2,4 +2,4 @@
2
2
  import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
3
3
  import { JsxSerializeHeadingElementProps } from './typings';
4
4
  export declare type CreateJsxSerializeHeadingOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeHeadingElementProps>>;
5
- export declare function createJsxSerializeHeading(options?: CreateJsxSerializeHeadingOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("slate").Element>) => JSX.Element | null | undefined;
5
+ export declare function createJsxSerializeHeading(options?: CreateJsxSerializeHeadingOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps<import("@quadrats/core").QuadratsElement>) => JSX.Element | null | undefined;
@@ -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
  }
@@ -1,15 +1,13 @@
1
1
  import React from 'react';
2
2
  import { Transforms } from '@quadrats/core';
3
- import { useEditor, ReactEditor } from '@quadrats/react';
3
+ import { useSlateStatic, ReactEditor } from '@quadrats/react';
4
4
  import { useImageResizer } from '../hooks/useImageResizer.js';
5
5
 
6
6
  function Image(props) {
7
7
  const { attributes, children, element, resizeImage, src, } = props;
8
- const editor = useEditor();
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,
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
2
  import clsx from 'clsx';
3
3
  import { Editor } from '@quadrats/core';
4
- import { useEditor, ReactEditor, useLocale } from '@quadrats/react';
4
+ import { useSlateStatic, ReactEditor, useLocale } from '@quadrats/react';
5
5
 
6
6
  function ImageCaption(props) {
7
7
  const { attributes, children, element } = props;
8
- const editor = useEditor();
8
+ const editor = useSlateStatic();
9
9
  const path = ReactEditor.findPath(editor, element);
10
10
  const text = Editor.string(editor, path);
11
11
  const isEmpty = !text;
@@ -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((dataURL) => core.insertImage(editor, dataURL));
88
+ return readFileAsDataURL(imageFile).then(dataURL => core.insertImage(editor, dataURL));
89
89
  }), Promise.resolve());
90
90
  return;
91
91
  }