@quadrats/react 0.7.6 → 0.7.7
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/composeRenderElementsBase.d.ts +1 -1
- package/_internal/renderer/composeRenderLeafsBase.d.ts +1 -1
- package/_internal/renderer/createRenderElementBase.d.ts +1 -1
- package/_internal/renderer/createRenderElementsBase.d.ts +1 -1
- package/_internal/renderer/createRenderMarkBase.d.ts +1 -1
- package/_internal/renderer/typings.d.ts +1 -1
- package/blockquote/defaultRenderBlockquoteElement.d.ts +2 -8
- package/blockquote/jsx-serializer/createJsxSerializeBlockquote.d.ts +1 -2
- package/blockquote/typings.d.ts +1 -1
- package/bold/jsx-serializer/createJsxSerializeBold.d.ts +1 -2
- package/components/Tooltip/index.js +3 -2
- package/components/index.cjs.js +3 -2
- package/configs/locale.d.ts +0 -1
- package/core/components/Editable.d.ts +2 -2
- package/core/composeRenderElements.d.ts +1 -1
- package/core/composeRenderLeafs.d.ts +1 -1
- package/core/createRenderElement.d.ts +1 -2
- package/core/createRenderElements.d.ts +1 -2
- package/core/createRenderMark.d.ts +1 -2
- package/core/typings/renderer.d.ts +1 -1
- package/divider/jsx-serializer/createJsxSerializeDivider.d.ts +1 -2
- package/divider/typings.d.ts +1 -1
- package/embed/createRenderEmbedElementBase.d.ts +1 -1
- package/embed/hooks/useVideoIframeSize.d.ts +1 -2
- package/embed/jsx-serializer/createJsxSerializeEmbed.d.ts +2 -2
- package/embed/jsx-serializer/facebook/index.cjs.js +7 -0
- package/embed/jsx-serializer/index.cjs.js +4 -4
- package/embed/jsx-serializer/instagram/index.cjs.js +7 -0
- package/embed/jsx-serializer/twitter/index.cjs.js +7 -0
- package/embed/jsx-serializer/vimeo/index.cjs.js +7 -0
- package/embed/jsx-serializer/youtube/index.cjs.js +7 -0
- package/embed/renderers/instagram/components/Instagram.js +19 -1
- package/embed/renderers/instagram/index.cjs.js +18 -0
- package/embed/typings.d.ts +1 -1
- package/file-uploader/typings.d.ts +1 -1
- package/footnote/defaultRenderFootnoteElement.d.ts +3 -3
- package/footnote/jsx-serializer/createJsxSerializeFootnote.d.ts +1 -2
- package/footnote/jsx-serializer/defaultRenderFootnoteElement.d.ts +3 -1
- package/footnote/jsx-serializer/defaultRenderFootnoteElement.js +4 -2
- package/footnote/jsx-serializer/index.cjs.js +4 -2
- package/footnote/typings.d.ts +1 -1
- package/heading/defaultRenderHeadingElement.d.ts +2 -8
- package/heading/jsx-serializer/createJsxSerializeHeading.d.ts +1 -2
- package/heading/typings.d.ts +1 -1
- package/highlight/jsx-serializer/createJsxSerializeHighlight.d.ts +1 -2
- package/image/createReactImage.d.ts +6 -2
- package/image/createReactImage.js +17 -1
- package/image/hooks/useImageResizer.d.ts +1 -2
- package/image/index.cjs.js +17 -1
- package/image/jsx-serializer/createJsxSerializeImage.d.ts +1 -2
- package/image/jsx-serializer/typings.d.ts +1 -1
- package/image/typings.d.ts +1 -1
- package/index.cjs.js +7 -0
- package/input-block/createReactInputBlock.js +1 -1
- package/input-block/hooks/useInputBlock.d.ts +1 -1
- package/input-block/index.cjs.js +1 -1
- package/input-block/typings.d.ts +1 -1
- package/italic/jsx-serializer/createJsxSerializeItalic.d.ts +1 -2
- package/jsx-serializer/createJsxSerializeElement.d.ts +1 -2
- package/jsx-serializer/createJsxSerializeElements.d.ts +1 -2
- package/jsx-serializer/createJsxSerializeMark.d.ts +1 -2
- package/jsx-serializer/createJsxSerializer.d.ts +1 -1
- package/line-break/createOnKeyDownBreak.js +1 -1
- package/line-break/jsx-serializer/createJsxSerializeLineBreak.d.ts +1 -2
- package/line-break/typings.d.ts +1 -1
- package/link/defaultRenderLinkElement.d.ts +3 -3
- package/link/jsx-serializer/createJsxSerializeLink.d.ts +1 -2
- package/link/toolbar/index.cjs.js +6 -1
- package/link/toolbar/useLinkTool.js +6 -1
- package/link/typings.d.ts +1 -1
- package/list/defaultRenderListElements.d.ts +1 -1
- package/list/jsx-serializer/createJsxSerializeList.d.ts +1 -2
- package/list/typings.d.ts +1 -1
- package/package.json +9 -8
- package/paragraph/createRenderParagraphElement.d.ts +2 -2
- package/paragraph/defaultRenderParagraphElement.d.ts +1 -7
- package/paragraph/jsx-serializer/createJsxSerializeParagraph.d.ts +1 -2
- package/paragraph/renderParagraphElementWithSymbol.d.ts +1 -7
- package/read-more/jsx-serializer/createJsxSerializeReadMore.d.ts +1 -2
- package/read-more/typings.d.ts +1 -1
- package/strikethrough/jsx-serializer/createJsxSerializeStrikethrough.d.ts +1 -2
- package/toggle-mark/jsx-serializer/createJsxSerializeToggleMarkCreator.d.ts +1 -2
- package/toolbar/components/Toolbar.d.ts +10 -2
- package/toolbar/components/Toolbar.js +24 -17
- package/toolbar/contexts/StartToolInputContext.d.ts +0 -1
- package/toolbar/index.cjs.js +23 -16
- package/toolbar/toolbar.css +1 -1
- package/toolbar/toolbar.scss +26 -11
- package/underline/jsx-serializer/createJsxSerializeUnderline.d.ts +1 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { RenderElementPropsBase } from './typings';
|
|
3
3
|
export declare function composeRenderElementsBase<P extends RenderElementPropsBase>(renderDefault: (props: P) => JSX.Element, renderElements: ((props: P) => JSX.Element | null | undefined)[]): (props: P) => JSX.Element;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { RenderLeafPropsBase } from './typings';
|
|
3
3
|
export declare function composeRenderLeafsBase<P extends RenderLeafPropsBase>(renderDefault: (props: P) => JSX.Element, renderLeafs: ((props: P) => JSX.Element)[]): (props: P) => JSX.Element;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { CreateRenderElementOptionsBase, RenderElementPropsBase } from './typings';
|
|
3
3
|
export declare function createRenderElementBase<P extends RenderElementPropsBase, RP extends RenderElementPropsBase>({ type, render, }: CreateRenderElementOptionsBase<P>): (props: RP) => JSX.Element | null | undefined;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { CreateRenderElementOptionsBase, RenderElementPropsBase } from './typings';
|
|
3
3
|
export declare function createRenderElementsBase<P extends RenderElementPropsBase, RP extends RenderElementPropsBase>(options: CreateRenderElementOptionsBase<P>[]): (props: RP) => JSX.Element | null | undefined;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { CreateRenderMarkOptionsBase, RenderLeafPropsBase, RenderMarkPropsBase } from './typings';
|
|
3
3
|
export declare function createRenderMarkBase<M, P extends RenderMarkPropsBase<M>>(options: CreateRenderMarkOptionsBase<M, P>): (props: Omit<P, Exclude<keyof RenderMarkPropsBase<M>, keyof RenderLeafPropsBase>>) => JSX.Element;
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { RenderElementProps } from '@quadrats/react';
|
|
3
3
|
export declare const defaultRenderBlockquoteElement: ({ attributes, children, }: {
|
|
4
|
-
attributes?:
|
|
5
|
-
|
|
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'];
|
|
4
|
+
attributes?: RenderElementProps["attributes"];
|
|
5
|
+
children: RenderElementProps["children"];
|
|
12
6
|
}) => React.JSX.Element;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
2
|
import { JsxSerializeBlockquoteElementProps } from './typings';
|
|
4
3
|
export type CreateJsxSerializeBlockquoteOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeBlockquoteElementProps>>;
|
|
5
|
-
export declare function createJsxSerializeBlockquote(options?: CreateJsxSerializeBlockquoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => JSX.Element | null | undefined;
|
|
4
|
+
export declare function createJsxSerializeBlockquote(options?: CreateJsxSerializeBlockquoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => import("react").JSX.Element | null | undefined;
|
package/blockquote/typings.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { BlockquoteElement, Blockquote } from '@quadrats/common/blockquote';
|
|
3
3
|
import { Editor } from '@quadrats/core';
|
|
4
4
|
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps } from '@quadrats/react';
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const createJsxSerializeBold: (options?: Partial<import("@quadrats/react/toggle-mark/jsx-serializer").CreateJsxSerializeToggleMarkCreatorOptions> | undefined) => (props: Omit<import("@quadrats/react/jsx-serializer").JsxSerializeMarkProps<boolean>, "mark">) => JSX.Element;
|
|
1
|
+
export declare const createJsxSerializeBold: (options?: import("@quadrats/react/toggle-mark/jsx-serializer").CreateJsxSerializeToggleMarkOptions) => (props: Omit<import("@quadrats/react/jsx-serializer").JsxSerializeMarkProps<boolean>, "mark">) => import("react").JSX.Element;
|
|
@@ -24,6 +24,7 @@ function Tooltip({ children, triggers = defaultTriggers, popup, getContainer = d
|
|
|
24
24
|
const { props: themeProps } = useContext(ThemeContext);
|
|
25
25
|
const [visible, setVisible] = useState(false);
|
|
26
26
|
const delayTimer = useRef(NaN);
|
|
27
|
+
const nodeRef = useRef(null);
|
|
27
28
|
const clearDelayTimer = useCallback(() => {
|
|
28
29
|
if (delayTimer.current) {
|
|
29
30
|
window.clearTimeout(delayTimer.current);
|
|
@@ -107,8 +108,8 @@ function Tooltip({ children, triggers = defaultTriggers, popup, getContainer = d
|
|
|
107
108
|
}, [visible]);
|
|
108
109
|
return (React.createElement(React.Fragment, null,
|
|
109
110
|
React.createElement(Portal, { getContainer: getContainer },
|
|
110
|
-
React.createElement(CSSTransition, { in: visible, classNames: transitionClassNames, timeout: 200, unmountOnExit: true },
|
|
111
|
-
React.createElement("div", { className: `${clsPrefix}__mask` },
|
|
111
|
+
React.createElement(CSSTransition, { nodeRef: nodeRef, in: visible, classNames: transitionClassNames, timeout: 200, unmountOnExit: true },
|
|
112
|
+
React.createElement("div", { ref: nodeRef, className: `${clsPrefix}__mask` },
|
|
112
113
|
React.createElement("div", Object.assign({ className: clsx(themeProps.className, `${clsPrefix}__popup`, `${clsPrefix}__popup--${firstPlacement}`), ref: popupRef, style: themeProps.style }, popupProps),
|
|
113
114
|
React.createElement("div", { className: clsx(`${clsPrefix}__arrow`, `${clsPrefix}__arrow--${firstPlacement}`, {
|
|
114
115
|
[`${clsPrefix}__arrow--${placement}`]: secondPlacement,
|
package/components/index.cjs.js
CHANGED
|
@@ -128,6 +128,7 @@ function Tooltip({ children, triggers = defaultTriggers, popup, getContainer = d
|
|
|
128
128
|
const { props: themeProps } = React.useContext(configs.ThemeContext);
|
|
129
129
|
const [visible, setVisible] = React.useState(false);
|
|
130
130
|
const delayTimer = React.useRef(NaN);
|
|
131
|
+
const nodeRef = React.useRef(null);
|
|
131
132
|
const clearDelayTimer = React.useCallback(() => {
|
|
132
133
|
if (delayTimer.current) {
|
|
133
134
|
window.clearTimeout(delayTimer.current);
|
|
@@ -211,8 +212,8 @@ function Tooltip({ children, triggers = defaultTriggers, popup, getContainer = d
|
|
|
211
212
|
}, [visible]);
|
|
212
213
|
return (React.createElement(React.Fragment, null,
|
|
213
214
|
React.createElement(Portal, { getContainer: getContainer },
|
|
214
|
-
React.createElement(reactTransitionGroup.CSSTransition, { in: visible, classNames: transitionClassNames, timeout: 200, unmountOnExit: true },
|
|
215
|
-
React.createElement("div", { className: `${clsPrefix}__mask` },
|
|
215
|
+
React.createElement(reactTransitionGroup.CSSTransition, { nodeRef: nodeRef, in: visible, classNames: transitionClassNames, timeout: 200, unmountOnExit: true },
|
|
216
|
+
React.createElement("div", { ref: nodeRef, className: `${clsPrefix}__mask` },
|
|
216
217
|
React.createElement("div", Object.assign({ className: clsx(themeProps.className, `${clsPrefix}__popup`, `${clsPrefix}__popup--${firstPlacement}`), ref: popupRef, style: themeProps.style }, popupProps),
|
|
217
218
|
React.createElement("div", { className: clsx(`${clsPrefix}__arrow`, `${clsPrefix}__arrow--${firstPlacement}`, {
|
|
218
219
|
[`${clsPrefix}__arrow--${placement}`]: secondPlacement,
|
package/configs/locale.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { EditableProps as SlateEditableProps } from 'slate-react/dist/components/editable';
|
|
3
3
|
import { RenderElementProps, RenderLeafProps } from '../typings/renderer';
|
|
4
4
|
export type EditableProps = Omit<SlateEditableProps, 'renderLeaf' | 'renderElement'> & {
|
|
5
5
|
renderLeaf?: (props: RenderLeafProps) => JSX.Element;
|
|
6
6
|
renderElement?: (props: RenderElementProps) => JSX.Element;
|
|
7
7
|
};
|
|
8
|
-
declare function Editable(props: EditableProps):
|
|
8
|
+
declare function Editable(props: EditableProps): JSX.Element;
|
|
9
9
|
export default Editable;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { CreateRenderElementOptions, RenderElementProps } from './typings/renderer';
|
|
3
|
-
export declare function createRenderElement<P extends RenderElementProps>(options: CreateRenderElementOptions<P>): (props: RenderElementProps) => JSX.Element | null | undefined;
|
|
2
|
+
export declare function createRenderElement<P extends RenderElementProps>(options: CreateRenderElementOptions<P>): (props: RenderElementProps) => import("react").JSX.Element | null | undefined;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { CreateRenderElementOptions, RenderElementProps } from './typings/renderer';
|
|
3
|
-
export declare function createRenderElements<P extends RenderElementProps>(options: CreateRenderElementOptions<P>[]): (props: RenderElementProps) => JSX.Element | null | undefined;
|
|
2
|
+
export declare function createRenderElements<P extends RenderElementProps>(options: CreateRenderElementOptions<P>[]): (props: RenderElementProps) => import("react").JSX.Element | null | undefined;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { CreateRenderMarkOptions } from './typings/renderer';
|
|
3
|
-
export declare function createRenderMark<M>(options: CreateRenderMarkOptions<M>): (props: Omit<import("./typings/renderer").RenderMarkProps<M>, "mark">) => JSX.Element;
|
|
2
|
+
export declare function createRenderMark<M>(options: CreateRenderMarkOptions<M>): (props: Omit<import("./typings/renderer").RenderMarkProps<M>, "mark">) => import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { RenderElementProps as SlateReactRenderElementProps, RenderLeafProps as SlateRenderLeafProps } from 'slate-react';
|
|
3
3
|
import { QuadratsElement } from '@quadrats/core';
|
|
4
4
|
import { CreateRenderElementOptionsBase, CreateRenderMarkOptionsBase, RenderElementPropsBase, RenderLeafPropsBase, RenderMarkPropsBase } from '@quadrats/react/_internal';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
2
|
import { JsxSerializeDividerProps } from './typings';
|
|
4
3
|
export type CreateJsxSerializeDividerOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeDividerProps>>;
|
|
5
|
-
export declare function createJsxSerializeDivider(options?: CreateJsxSerializeDividerOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => JSX.Element | null | undefined;
|
|
4
|
+
export declare function createJsxSerializeDivider(options?: CreateJsxSerializeDividerOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => import("react").JSX.Element | null | undefined;
|
package/divider/typings.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { EmbedStrategies } from '@quadrats/common/embed';
|
|
3
3
|
import { JsxSerializeEmbedElementProps } from './typings';
|
|
4
4
|
export interface CreateJsxSerializeEmbedOptions<Provider extends string> {
|
|
@@ -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) => JSX.Element | null | undefined;
|
|
9
|
+
export declare function createJsxSerializeEmbed<Provider extends string>(options: CreateJsxSerializeEmbedOptions<Provider>): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => import("react").JSX.Element | null | undefined;
|
|
@@ -4,6 +4,13 @@ var facebook = require('@quadrats/react/embed/renderers/facebook');
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
Object.prototype.hasOwnProperty.call(facebook, '__proto__') &&
|
|
8
|
+
!Object.prototype.hasOwnProperty.call(exports, '__proto__') &&
|
|
9
|
+
Object.defineProperty(exports, '__proto__', {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
value: facebook['__proto__']
|
|
12
|
+
});
|
|
13
|
+
|
|
7
14
|
Object.keys(facebook).forEach(function (k) {
|
|
8
15
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = facebook[k];
|
|
9
16
|
});
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var embed
|
|
4
|
-
var embed = require('@quadrats/react/embed');
|
|
3
|
+
var embed = require('@quadrats/common/embed');
|
|
4
|
+
var embed$1 = require('@quadrats/react/embed');
|
|
5
5
|
var jsxSerializer = require('@quadrats/react/jsx-serializer');
|
|
6
6
|
|
|
7
7
|
function createJsxSerializeEmbed(options) {
|
|
8
|
-
const { type = embed
|
|
8
|
+
const { type = embed.EMBED_TYPE, strategies, renderers } = options;
|
|
9
9
|
return jsxSerializer.createJsxSerializeElement({
|
|
10
10
|
type,
|
|
11
|
-
render: embed.createRenderEmbedElementBase({ strategies, renderers }),
|
|
11
|
+
render: embed$1.createRenderEmbedElementBase({ strategies, renderers }),
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -4,6 +4,13 @@ var instagram = require('@quadrats/react/embed/renderers/instagram');
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
Object.prototype.hasOwnProperty.call(instagram, '__proto__') &&
|
|
8
|
+
!Object.prototype.hasOwnProperty.call(exports, '__proto__') &&
|
|
9
|
+
Object.defineProperty(exports, '__proto__', {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
value: instagram['__proto__']
|
|
12
|
+
});
|
|
13
|
+
|
|
7
14
|
Object.keys(instagram).forEach(function (k) {
|
|
8
15
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = instagram[k];
|
|
9
16
|
});
|
|
@@ -4,6 +4,13 @@ var twitter = require('@quadrats/react/embed/renderers/twitter');
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
Object.prototype.hasOwnProperty.call(twitter, '__proto__') &&
|
|
8
|
+
!Object.prototype.hasOwnProperty.call(exports, '__proto__') &&
|
|
9
|
+
Object.defineProperty(exports, '__proto__', {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
value: twitter['__proto__']
|
|
12
|
+
});
|
|
13
|
+
|
|
7
14
|
Object.keys(twitter).forEach(function (k) {
|
|
8
15
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = twitter[k];
|
|
9
16
|
});
|
|
@@ -4,6 +4,13 @@ var vimeo = require('@quadrats/react/embed/renderers/vimeo');
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
Object.prototype.hasOwnProperty.call(vimeo, '__proto__') &&
|
|
8
|
+
!Object.prototype.hasOwnProperty.call(exports, '__proto__') &&
|
|
9
|
+
Object.defineProperty(exports, '__proto__', {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
value: vimeo['__proto__']
|
|
12
|
+
});
|
|
13
|
+
|
|
7
14
|
Object.keys(vimeo).forEach(function (k) {
|
|
8
15
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = vimeo[k];
|
|
9
16
|
});
|
|
@@ -4,6 +4,13 @@ var youtube = require('@quadrats/react/embed/renderers/youtube');
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
Object.prototype.hasOwnProperty.call(youtube, '__proto__') &&
|
|
8
|
+
!Object.prototype.hasOwnProperty.call(exports, '__proto__') &&
|
|
9
|
+
Object.defineProperty(exports, '__proto__', {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
value: youtube['__proto__']
|
|
12
|
+
});
|
|
13
|
+
|
|
7
14
|
Object.keys(youtube).forEach(function (k) {
|
|
8
15
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = youtube[k];
|
|
9
16
|
});
|
|
@@ -1,8 +1,26 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
2
|
import { useLoadInstagramEmbedApi } from '../hooks/useLoadInstagramEmbedApi.js';
|
|
3
3
|
|
|
4
4
|
function Instagram({ attributes, children, data: permalink }) {
|
|
5
5
|
useLoadInstagramEmbedApi(permalink);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
const observer = new MutationObserver((mutations) => {
|
|
8
|
+
mutations.forEach((mutation) => {
|
|
9
|
+
mutation.addedNodes.forEach((node) => {
|
|
10
|
+
if (node.tagName === 'IFRAME') {
|
|
11
|
+
const iframeNode = node;
|
|
12
|
+
if (iframeNode.src.includes('instagram.com')) {
|
|
13
|
+
iframeNode.setAttribute('title', 'Instagram 貼文');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
20
|
+
return () => {
|
|
21
|
+
observer.disconnect();
|
|
22
|
+
};
|
|
23
|
+
}, []);
|
|
6
24
|
return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-embed-instagram", contentEditable: false, style: {
|
|
7
25
|
display: 'flex',
|
|
8
26
|
marginBottom: -12,
|
|
@@ -28,6 +28,24 @@ function useLoadInstagramEmbedApi(permalink) {
|
|
|
28
28
|
|
|
29
29
|
function Instagram({ attributes, children, data: permalink }) {
|
|
30
30
|
useLoadInstagramEmbedApi(permalink);
|
|
31
|
+
React.useEffect(() => {
|
|
32
|
+
const observer = new MutationObserver((mutations) => {
|
|
33
|
+
mutations.forEach((mutation) => {
|
|
34
|
+
mutation.addedNodes.forEach((node) => {
|
|
35
|
+
if (node.tagName === 'IFRAME') {
|
|
36
|
+
const iframeNode = node;
|
|
37
|
+
if (iframeNode.src.includes('instagram.com')) {
|
|
38
|
+
iframeNode.setAttribute('title', 'Instagram 貼文');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
45
|
+
return () => {
|
|
46
|
+
observer.disconnect();
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
31
49
|
return (React.createElement("div", Object.assign({}, attributes, { className: "qdr-embed-instagram", contentEditable: false, style: {
|
|
32
50
|
display: 'flex',
|
|
33
51
|
marginBottom: -12,
|
package/embed/typings.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { FileUploader, FileUploaderElement } from '@quadrats/common/file-uploader';
|
|
3
3
|
import { Editor, RenderElementProps, WithCreateRenderElement } from '@quadrats/react';
|
|
4
4
|
export type RenderFileUploaderElementProps = RenderElementProps<FileUploaderElement>;
|
|
@@ -3,7 +3,7 @@ import { RenderFootnoteElementProps } from './typings';
|
|
|
3
3
|
/**
|
|
4
4
|
* Set placement of tooltip to `bottom` to avoid conflicting w/ toolbar.
|
|
5
5
|
*/
|
|
6
|
-
export declare const defaultRenderFootnoteElement: ({ attributes, children, element, placement, }:
|
|
7
|
-
placement?: "top" | "bottom"
|
|
8
|
-
target?: string
|
|
6
|
+
export declare const defaultRenderFootnoteElement: ({ attributes, children, element, placement, }: RenderFootnoteElementProps & {
|
|
7
|
+
placement?: "top" | "bottom";
|
|
8
|
+
target?: string;
|
|
9
9
|
}) => React.JSX.Element;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
2
|
import { JsxSerializeFootnoteElementProps } from './typings';
|
|
4
3
|
export type CreateJsxSerializeFootnoteOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeFootnoteElementProps>>;
|
|
5
|
-
export declare function createJsxSerializeFootnote(options?: CreateJsxSerializeFootnoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => JSX.Element | null | undefined;
|
|
4
|
+
export declare function createJsxSerializeFootnote(options?: CreateJsxSerializeFootnoteOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => import("react").JSX.Element | null | undefined;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { JsxSerializeFootnoteElementProps } from './typings';
|
|
3
|
-
export declare const defaultRenderFootnoteElement: ({ children, element }: JsxSerializeFootnoteElementProps
|
|
3
|
+
export declare const defaultRenderFootnoteElement: ({ children, element, placement }: JsxSerializeFootnoteElementProps & {
|
|
4
|
+
placement?: "top" | "bottom";
|
|
5
|
+
}) => React.JSX.Element;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { Tooltip } from '@quadrats/react/components';
|
|
2
3
|
|
|
3
|
-
const defaultRenderFootnoteElement = ({ children, element }) => {
|
|
4
|
+
const defaultRenderFootnoteElement = ({ children, element, placement = 'bottom' }) => {
|
|
4
5
|
var _a;
|
|
5
6
|
return (React.createElement(React.Fragment, null,
|
|
6
|
-
React.createElement(
|
|
7
|
+
React.createElement(Tooltip, { placement: placement, popup: element.footnote },
|
|
8
|
+
React.createElement("span", { className: "qdr-footnote-text", style: { textDecoration: 'underline' } }, children)),
|
|
7
9
|
React.createElement("sup", { className: "qdr-footnote-sup", style: { color: 'var(--qdr-sup)' } }, `[${(_a = element.index) !== null && _a !== void 0 ? _a : 1}]`)));
|
|
8
10
|
};
|
|
9
11
|
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
+
var components = require('@quadrats/react/components');
|
|
4
5
|
var jsxSerializer = require('@quadrats/react/jsx-serializer');
|
|
5
6
|
var footnote = require('@quadrats/common/footnote');
|
|
6
7
|
|
|
7
|
-
const defaultRenderFootnoteElement = ({ children, element }) => {
|
|
8
|
+
const defaultRenderFootnoteElement = ({ children, element, placement = 'bottom' }) => {
|
|
8
9
|
var _a;
|
|
9
10
|
return (React.createElement(React.Fragment, null,
|
|
10
|
-
React.createElement(
|
|
11
|
+
React.createElement(components.Tooltip, { placement: placement, popup: element.footnote },
|
|
12
|
+
React.createElement("span", { className: "qdr-footnote-text", style: { textDecoration: 'underline' } }, children)),
|
|
11
13
|
React.createElement("sup", { className: "qdr-footnote-sup", style: { color: 'var(--qdr-sup)' } }, `[${(_a = element.index) !== null && _a !== void 0 ? _a : 1}]`)));
|
|
12
14
|
};
|
|
13
15
|
|
package/footnote/typings.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { Footnote, FootnoteElement } from '@quadrats/common/footnote';
|
|
3
3
|
import { RenderElementProps, ReactWithable, WithCreateRenderElement, Editor } from '@quadrats/react';
|
|
4
4
|
export type RenderFootnoteElementProps = RenderElementProps<FootnoteElement>;
|
|
@@ -10,13 +10,7 @@ export declare const HEADING_COMPONENTS: {
|
|
|
10
10
|
readonly 6: "h6";
|
|
11
11
|
};
|
|
12
12
|
export declare const defaultRenderHeadingElement: ({ attributes, children, element, }: {
|
|
13
|
-
attributes?:
|
|
14
|
-
|
|
15
|
-
'data-slate-inline'?: true | undefined;
|
|
16
|
-
'data-slate-void'?: true | undefined;
|
|
17
|
-
dir?: "rtl" | undefined;
|
|
18
|
-
ref: any;
|
|
19
|
-
} | undefined;
|
|
20
|
-
children: RenderElementProps['children'];
|
|
13
|
+
attributes?: RenderElementProps["attributes"];
|
|
14
|
+
children: RenderElementProps["children"];
|
|
21
15
|
element: HeadingElement;
|
|
22
16
|
}) => React.JSX.Element | null;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { CreateJsxSerializeElementOptions } from '@quadrats/react/jsx-serializer';
|
|
3
2
|
import { JsxSerializeHeadingElementProps } from './typings';
|
|
4
3
|
export type CreateJsxSerializeHeadingOptions = Partial<CreateJsxSerializeElementOptions<JsxSerializeHeadingElementProps>>;
|
|
5
|
-
export declare function createJsxSerializeHeading(options?: CreateJsxSerializeHeadingOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => JSX.Element | null | undefined;
|
|
4
|
+
export declare function createJsxSerializeHeading(options?: CreateJsxSerializeHeadingOptions): (props: import("@quadrats/react/jsx-serializer").JsxSerializeElementProps) => import("react").JSX.Element | null | undefined;
|
package/heading/typings.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { Heading, HeadingElement, HeadingLevel } from '@quadrats/common/heading';
|
|
3
3
|
import { WithCreateHandlers, WithCreateRenderElement, RenderElementProps, Editor } from '@quadrats/react';
|
|
4
4
|
export type RenderHeadingElementProps = RenderElementProps<HeadingElement>;
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const createJsxSerializeHighlight: (variant?: string) => (props: Omit<import("@quadrats/react/jsx-serializer").JsxSerializeMarkProps<boolean>, "mark">) => JSX.Element;
|
|
1
|
+
export declare const createJsxSerializeHighlight: (variant?: string) => (props: Omit<import("@quadrats/react/jsx-serializer").JsxSerializeMarkProps<boolean>, "mark">) => import("react").JSX.Element;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import { CreateImageOptions } from '@quadrats/common/image';
|
|
1
|
+
import { CreateImageOptions, Image } from '@quadrats/common/image';
|
|
2
|
+
import { FileUploaderUploadOptions } from '@quadrats/common/file-uploader';
|
|
3
|
+
import { QuadratsReactEditor } from '@quadrats/react';
|
|
2
4
|
import { ReactImage } from './typings';
|
|
3
5
|
export type CreateReactImageOptions<Hosting extends string> = CreateImageOptions<Hosting>;
|
|
4
|
-
export declare function createReactImage<Hosting extends string>(options?: CreateReactImageOptions<Hosting
|
|
6
|
+
export declare function createReactImage<Hosting extends string>(options?: CreateReactImageOptions<Hosting>, getUploadOptions?: (image: Image<Hosting, QuadratsReactEditor>) => FileUploaderUploadOptions & {
|
|
7
|
+
type?: string;
|
|
8
|
+
}): ReactImage<Hosting>;
|
|
@@ -3,11 +3,13 @@ import isHotkey from 'is-hotkey';
|
|
|
3
3
|
import { readFileAsDataURL } from '@quadrats/utils';
|
|
4
4
|
import { Transforms } from '@quadrats/core';
|
|
5
5
|
import { createImage, getImageFigureElementCommonProps, getImageElementCommonProps } from '@quadrats/common/image';
|
|
6
|
+
import { createFileUploaderElementByType, FILE_UPLOADER_TYPE, insertFileUploaderElement } from '@quadrats/common/file-uploader';
|
|
6
7
|
import { createRenderElements } from '@quadrats/react';
|
|
7
8
|
import { defaultRenderImageElements } from './defaultRenderImageElements.js';
|
|
8
9
|
|
|
9
|
-
function createReactImage(options = {}) {
|
|
10
|
+
function createReactImage(options = {}, getUploadOptions) {
|
|
10
11
|
const core = createImage(options);
|
|
12
|
+
const uploadOptions = getUploadOptions === null || getUploadOptions === void 0 ? void 0 : getUploadOptions(core);
|
|
11
13
|
const { types } = core;
|
|
12
14
|
return Object.assign(Object.assign({}, core), { createHandlers: () => ({
|
|
13
15
|
onKeyDown(event, editor, next) {
|
|
@@ -63,8 +65,22 @@ function createReactImage(options = {}) {
|
|
|
63
65
|
}, with(editor) {
|
|
64
66
|
const { insertData } = editor;
|
|
65
67
|
editor.insertData = (data) => {
|
|
68
|
+
var _a;
|
|
66
69
|
const text = data.getData('text');
|
|
67
70
|
const { files } = data;
|
|
71
|
+
/**
|
|
72
|
+
* Insert each image when upload options are set.
|
|
73
|
+
*/
|
|
74
|
+
if (uploadOptions) {
|
|
75
|
+
const createFileUploaderElement = createFileUploaderElementByType((_a = uploadOptions.type) !== null && _a !== void 0 ? _a : FILE_UPLOADER_TYPE);
|
|
76
|
+
Array.from(files).reduce((prev, file) => __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
yield prev;
|
|
78
|
+
return createFileUploaderElement(editor, file, uploadOptions).then((fileUploaderElement) => {
|
|
79
|
+
insertFileUploaderElement(editor, fileUploaderElement);
|
|
80
|
+
});
|
|
81
|
+
}), Promise.resolve());
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
68
84
|
/**
|
|
69
85
|
* Insert image if inserted text is image url.
|
|
70
86
|
*/
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { ImageElement } from '@quadrats/common/image';
|
|
3
2
|
import { ReactImage } from '../typings';
|
|
4
3
|
export declare function useImageResizer(element: ImageElement, resizeImage: ReactImage<any>['resizeImage']): {
|
|
5
|
-
imageRef: import("react").RefObject<HTMLImageElement>;
|
|
4
|
+
imageRef: import("react").RefObject<HTMLImageElement | null>;
|
|
6
5
|
focusedAndSelected: boolean;
|
|
7
6
|
onResizeStart: (event: React.MouseEvent | React.TouchEvent) => void;
|
|
8
7
|
};
|
package/image/index.cjs.js
CHANGED
|
@@ -8,6 +8,7 @@ var tslib = require('tslib');
|
|
|
8
8
|
var isHotkey = require('is-hotkey');
|
|
9
9
|
var utils = require('@quadrats/utils');
|
|
10
10
|
var image = require('@quadrats/common/image');
|
|
11
|
+
var fileUploader = require('@quadrats/common/file-uploader');
|
|
11
12
|
|
|
12
13
|
function ImageFigure(props) {
|
|
13
14
|
const { attributes, children, style } = props;
|
|
@@ -144,8 +145,9 @@ const defaultRenderImageElements = {
|
|
|
144
145
|
caption: props => React.createElement(ImageCaption, Object.assign({}, props)),
|
|
145
146
|
};
|
|
146
147
|
|
|
147
|
-
function createReactImage(options = {}) {
|
|
148
|
+
function createReactImage(options = {}, getUploadOptions) {
|
|
148
149
|
const core$1 = image.createImage(options);
|
|
150
|
+
const uploadOptions = getUploadOptions === null || getUploadOptions === void 0 ? void 0 : getUploadOptions(core$1);
|
|
149
151
|
const { types } = core$1;
|
|
150
152
|
return Object.assign(Object.assign({}, core$1), { createHandlers: () => ({
|
|
151
153
|
onKeyDown(event, editor, next) {
|
|
@@ -201,8 +203,22 @@ function createReactImage(options = {}) {
|
|
|
201
203
|
}, with(editor) {
|
|
202
204
|
const { insertData } = editor;
|
|
203
205
|
editor.insertData = (data) => {
|
|
206
|
+
var _a;
|
|
204
207
|
const text = data.getData('text');
|
|
205
208
|
const { files } = data;
|
|
209
|
+
/**
|
|
210
|
+
* Insert each image when upload options are set.
|
|
211
|
+
*/
|
|
212
|
+
if (uploadOptions) {
|
|
213
|
+
const createFileUploaderElement = fileUploader.createFileUploaderElementByType((_a = uploadOptions.type) !== null && _a !== void 0 ? _a : fileUploader.FILE_UPLOADER_TYPE);
|
|
214
|
+
Array.from(files).reduce((prev, file) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
215
|
+
yield prev;
|
|
216
|
+
return createFileUploaderElement(editor, file, uploadOptions).then((fileUploaderElement) => {
|
|
217
|
+
fileUploader.insertFileUploaderElement(editor, fileUploaderElement);
|
|
218
|
+
});
|
|
219
|
+
}), Promise.resolve());
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
206
222
|
/**
|
|
207
223
|
* Insert image if inserted text is image url.
|
|
208
224
|
*/
|