@webiny/lexical-editor 0.0.0-unstable.085ff6572f
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/LICENSE +21 -0
- package/README.md +17 -0
- package/commands/webiny-list.d.ts +7 -0
- package/commands/webiny-list.js +13 -0
- package/commands/webiny-list.js.map +1 -0
- package/commands/webiny-quote.d.ts +5 -0
- package/commands/webiny-quote.js +9 -0
- package/commands/webiny-quote.js.map +1 -0
- package/components/AddRichTextEditorNodeType.d.ts +6 -0
- package/components/AddRichTextEditorNodeType.js +28 -0
- package/components/AddRichTextEditorNodeType.js.map +1 -0
- package/components/AddRichTextEditorPlugin.d.ts +12 -0
- package/components/AddRichTextEditorPlugin.js +33 -0
- package/components/AddRichTextEditorPlugin.js.map +1 -0
- package/components/AddToolbarAction.d.ts +7 -0
- package/components/AddToolbarAction.js +33 -0
- package/components/AddToolbarAction.js.map +1 -0
- package/components/Editor/HeadingEditor.d.ts +7 -0
- package/components/Editor/HeadingEditor.js +29 -0
- package/components/Editor/HeadingEditor.js.map +1 -0
- package/components/Editor/ParagraphEditor.d.ts +7 -0
- package/components/Editor/ParagraphEditor.js +30 -0
- package/components/Editor/ParagraphEditor.js.map +1 -0
- package/components/Editor/RichTextEditor.d.ts +26 -0
- package/components/Editor/RichTextEditor.js +138 -0
- package/components/Editor/RichTextEditor.js.map +1 -0
- package/components/LexicalEditorConfig/LexicalEditorConfig.d.ts +11 -0
- package/components/LexicalEditorConfig/LexicalEditorConfig.js +19 -0
- package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -0
- package/components/LexicalHtmlRenderer.d.ts +16 -0
- package/components/LexicalHtmlRenderer.js +67 -0
- package/components/LexicalHtmlRenderer.js.map +1 -0
- package/components/Toolbar/HeadingToolbar.d.ts +12 -0
- package/components/Toolbar/HeadingToolbar.js +23 -0
- package/components/Toolbar/HeadingToolbar.js.map +1 -0
- package/components/Toolbar/ParagraphToolbar.d.ts +12 -0
- package/components/Toolbar/ParagraphToolbar.js +23 -0
- package/components/Toolbar/ParagraphToolbar.js.map +1 -0
- package/components/Toolbar/Toolbar.css +435 -0
- package/components/Toolbar/Toolbar.d.ts +13 -0
- package/components/Toolbar/Toolbar.js +215 -0
- package/components/Toolbar/Toolbar.js.map +1 -0
- package/components/ToolbarActions/BoldAction.d.ts +2 -0
- package/components/ToolbarActions/BoldAction.js +43 -0
- package/components/ToolbarActions/BoldAction.js.map +1 -0
- package/components/ToolbarActions/BulletListAction.d.ts +2 -0
- package/components/ToolbarActions/BulletListAction.js +56 -0
- package/components/ToolbarActions/BulletListAction.js.map +1 -0
- package/components/ToolbarActions/CodeHighlightAction.d.ts +2 -0
- package/components/ToolbarActions/CodeHighlightAction.js +43 -0
- package/components/ToolbarActions/CodeHighlightAction.js.map +1 -0
- package/components/ToolbarActions/FontColorAction.d.ts +11 -0
- package/components/ToolbarActions/FontColorAction.js +83 -0
- package/components/ToolbarActions/FontColorAction.js.map +1 -0
- package/components/ToolbarActions/FontSizeAction.d.ts +2 -0
- package/components/ToolbarActions/FontSizeAction.js +101 -0
- package/components/ToolbarActions/FontSizeAction.js.map +1 -0
- package/components/ToolbarActions/ItalicAction.d.ts +2 -0
- package/components/ToolbarActions/ItalicAction.js +43 -0
- package/components/ToolbarActions/ItalicAction.js.map +1 -0
- package/components/ToolbarActions/LinkAction.d.ts +2 -0
- package/components/ToolbarActions/LinkAction.js +64 -0
- package/components/ToolbarActions/LinkAction.js.map +1 -0
- package/components/ToolbarActions/NumberedListAction.d.ts +2 -0
- package/components/ToolbarActions/NumberedListAction.js +58 -0
- package/components/ToolbarActions/NumberedListAction.js.map +1 -0
- package/components/ToolbarActions/QuoteAction.d.ts +2 -0
- package/components/ToolbarActions/QuoteAction.js +52 -0
- package/components/ToolbarActions/QuoteAction.js.map +1 -0
- package/components/ToolbarActions/TextAlignmentAction.d.ts +11 -0
- package/components/ToolbarActions/TextAlignmentAction.js +70 -0
- package/components/ToolbarActions/TextAlignmentAction.js.map +1 -0
- package/components/ToolbarActions/TypographyAction.d.ts +11 -0
- package/components/ToolbarActions/TypographyAction.js +145 -0
- package/components/ToolbarActions/TypographyAction.js.map +1 -0
- package/components/ToolbarActions/UnderlineAction.d.ts +2 -0
- package/components/ToolbarActions/UnderlineAction.js +43 -0
- package/components/ToolbarActions/UnderlineAction.js.map +1 -0
- package/components/ToolbarPresets/HeadingToolbarPreset.d.ts +2 -0
- package/components/ToolbarPresets/HeadingToolbarPreset.js +56 -0
- package/components/ToolbarPresets/HeadingToolbarPreset.js.map +1 -0
- package/components/ToolbarPresets/ParagraphToolbarPreset.d.ts +2 -0
- package/components/ToolbarPresets/ParagraphToolbarPreset.js +71 -0
- package/components/ToolbarPresets/ParagraphToolbarPreset.js.map +1 -0
- package/context/FontColorActionContext.d.ts +6 -0
- package/context/FontColorActionContext.js +10 -0
- package/context/FontColorActionContext.js.map +1 -0
- package/context/RichTextEditorContext.d.ts +26 -0
- package/context/RichTextEditorContext.js +68 -0
- package/context/RichTextEditorContext.js.map +1 -0
- package/context/SharedHistoryContext.d.ts +11 -0
- package/context/SharedHistoryContext.js +26 -0
- package/context/SharedHistoryContext.js.map +1 -0
- package/context/TextAlignmentActionContextProps.d.ts +9 -0
- package/context/TextAlignmentActionContextProps.js +10 -0
- package/context/TextAlignmentActionContextProps.js.map +1 -0
- package/context/TypographyActionContext.d.ts +7 -0
- package/context/TypographyActionContext.js +10 -0
- package/context/TypographyActionContext.js.map +1 -0
- package/hooks/useFontColorPicker.d.ts +2 -0
- package/hooks/useFontColorPicker.js +15 -0
- package/hooks/useFontColorPicker.js.map +1 -0
- package/hooks/useList.d.ts +2 -0
- package/hooks/useList.js +39 -0
- package/hooks/useList.js.map +1 -0
- package/hooks/useQuote.d.ts +2 -0
- package/hooks/useQuote.js +20 -0
- package/hooks/useQuote.js.map +1 -0
- package/hooks/useRichTextEditor.d.ts +2 -0
- package/hooks/useRichTextEditor.js +15 -0
- package/hooks/useRichTextEditor.js.map +1 -0
- package/hooks/useTextAlignmentAction.d.ts +1 -0
- package/hooks/useTextAlignmentAction.js +15 -0
- package/hooks/useTextAlignmentAction.js.map +1 -0
- package/hooks/useTypographyAction.d.ts +1 -0
- package/hooks/useTypographyAction.js +15 -0
- package/hooks/useTypographyAction.js.map +1 -0
- package/images/icons/LICENSE.md +5 -0
- package/images/icons/chat-square-quote.svg +1 -0
- package/images/icons/chevron-down.svg +1 -0
- package/images/icons/code.svg +1 -0
- package/images/icons/font-color.svg +1 -0
- package/images/icons/indent.svg +3 -0
- package/images/icons/justify.svg +3 -0
- package/images/icons/link.svg +1 -0
- package/images/icons/list-ol.svg +1 -0
- package/images/icons/list-ul.svg +1 -0
- package/images/icons/outdent.svg +3 -0
- package/images/icons/pencil-fill.svg +1 -0
- package/images/icons/text-center.svg +1 -0
- package/images/icons/text-left.svg +1 -0
- package/images/icons/text-paragraph.svg +1 -0
- package/images/icons/text-right.svg +1 -0
- package/images/icons/type-bold.svg +1 -0
- package/images/icons/type-h1.svg +1 -0
- package/images/icons/type-h2.svg +1 -0
- package/images/icons/type-h3.svg +1 -0
- package/images/icons/type-h4.svg +1 -0
- package/images/icons/type-h5.svg +1 -0
- package/images/icons/type-h6.svg +1 -0
- package/images/icons/type-italic.svg +1 -0
- package/images/icons/type-strikethrough.svg +1 -0
- package/images/icons/type-underline.svg +1 -0
- package/images/icons/unlink_icon.svg +1 -0
- package/index.d.ts +42 -0
- package/index.js +295 -0
- package/index.js.map +1 -0
- package/nodes/FontColorNode.d.ts +43 -0
- package/nodes/FontColorNode.js +127 -0
- package/nodes/FontColorNode.js.map +1 -0
- package/nodes/HeadingNode.d.ts +34 -0
- package/nodes/HeadingNode.js +192 -0
- package/nodes/HeadingNode.js.map +1 -0
- package/nodes/ListItemNode.d.ts +46 -0
- package/nodes/ListItemNode.js +441 -0
- package/nodes/ListItemNode.js.map +1 -0
- package/nodes/ListNode/formatList.d.ts +12 -0
- package/nodes/ListNode/formatList.js +424 -0
- package/nodes/ListNode/formatList.js.map +1 -0
- package/nodes/ListNode.d.ts +42 -0
- package/nodes/ListNode.js +294 -0
- package/nodes/ListNode.js.map +1 -0
- package/nodes/ParagraphNode.d.ts +32 -0
- package/nodes/ParagraphNode.js +218 -0
- package/nodes/ParagraphNode.js.map +1 -0
- package/nodes/QuoteNode.d.ts +34 -0
- package/nodes/QuoteNode.js +225 -0
- package/nodes/QuoteNode.js.map +1 -0
- package/nodes/TypographyElementNode.d.ts +42 -0
- package/nodes/TypographyElementNode.js +155 -0
- package/nodes/TypographyElementNode.js.map +1 -0
- package/nodes/types.d.ts +15 -0
- package/nodes/types.js +5 -0
- package/nodes/types.js.map +1 -0
- package/nodes/webinyNodes.d.ts +7 -0
- package/nodes/webinyNodes.js +45 -0
- package/nodes/webinyNodes.js.map +1 -0
- package/package.json +41 -0
- package/plugins/AutoLinkPlugin/AutoLinkPlugin.d.ts +11 -0
- package/plugins/AutoLinkPlugin/AutoLinkPlugin.js +46 -0
- package/plugins/AutoLinkPlugin/AutoLinkPlugin.js.map +1 -0
- package/plugins/AutoLinkPlugin/index.d.ts +1 -0
- package/plugins/AutoLinkPlugin/index.js +16 -0
- package/plugins/AutoLinkPlugin/index.js.map +1 -0
- package/plugins/BlurEventPlugin/BlurEventPlugin.d.ts +7 -0
- package/plugins/BlurEventPlugin/BlurEventPlugin.js +28 -0
- package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -0
- package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.d.ts +17 -0
- package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js +88 -0
- package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js.map +1 -0
- package/plugins/ClickableLinkPlugin/index.d.ts +1 -0
- package/plugins/ClickableLinkPlugin/index.js +16 -0
- package/plugins/ClickableLinkPlugin/index.js.map +1 -0
- package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.d.ts +1 -0
- package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js +20 -0
- package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -0
- package/plugins/CodeHighlightPlugin/index.d.ts +1 -0
- package/plugins/CodeHighlightPlugin/index.js +16 -0
- package/plugins/CodeHighlightPlugin/index.js.map +1 -0
- package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +118 -0
- package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.d.ts +7 -0
- package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +222 -0
- package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -0
- package/plugins/FloatingLinkEditorPlugin/index.d.ts +1 -0
- package/plugins/FloatingLinkEditorPlugin/index.js +16 -0
- package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -0
- package/plugins/FontColorPlugin/FontColorPlugin.d.ts +2 -0
- package/plugins/FontColorPlugin/FontColorPlugin.js +39 -0
- package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -0
- package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.d.ts +8 -0
- package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js +34 -0
- package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js.map +1 -0
- package/plugins/LexicalUpdateStatePlugin/index.d.ts +1 -0
- package/plugins/LexicalUpdateStatePlugin/index.js +16 -0
- package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -0
- package/plugins/TypographyPlugin/TypographyPlugin.d.ts +2 -0
- package/plugins/TypographyPlugin/TypographyPlugin.js +35 -0
- package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -0
- package/plugins/WebinyListPLugin/WebinyListPlugin.d.ts +1 -0
- package/plugins/WebinyListPLugin/WebinyListPlugin.js +25 -0
- package/plugins/WebinyListPLugin/WebinyListPlugin.js.map +1 -0
- package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.d.ts +1 -0
- package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js +24 -0
- package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -0
- package/themes/webinyLexicalTheme.css +429 -0
- package/themes/webinyLexicalTheme.d.ts +9 -0
- package/themes/webinyLexicalTheme.js +87 -0
- package/themes/webinyLexicalTheme.js.map +1 -0
- package/types.d.ts +63 -0
- package/types.js +25 -0
- package/types.js.map +1 -0
- package/ui/Divider.d.ts +2 -0
- package/ui/Divider.js +13 -0
- package/ui/Divider.js.map +1 -0
- package/ui/DropDown.d.ts +26 -0
- package/ui/DropDown.js +206 -0
- package/ui/DropDown.js.map +1 -0
- package/ui/Input.css +32 -0
- package/ui/LinkPreview.css +69 -0
- package/ui/LinkPreview.d.ts +12 -0
- package/ui/LinkPreview.js +101 -0
- package/ui/LinkPreview.js.map +1 -0
- package/ui/Placeholder.css +23 -0
- package/ui/Placeholder.d.ts +13 -0
- package/ui/Placeholder.js +24 -0
- package/ui/Placeholder.js.map +1 -0
- package/ui/TextInput.d.ts +18 -0
- package/ui/TextInput.js +39 -0
- package/ui/TextInput.js.map +1 -0
- package/ui/ToolbarActionDialog.d.ts +12 -0
- package/ui/ToolbarActionDialog.js +106 -0
- package/ui/ToolbarActionDialog.js.map +1 -0
- package/utils/findTypographyStyleByHtmlTag.d.ts +8 -0
- package/utils/findTypographyStyleByHtmlTag.js +16 -0
- package/utils/findTypographyStyleByHtmlTag.js.map +1 -0
- package/utils/generateInitialLexicalValue.d.ts +5 -0
- package/utils/generateInitialLexicalValue.js +30 -0
- package/utils/generateInitialLexicalValue.js.map +1 -0
- package/utils/getDOMRangeRect.d.ts +10 -0
- package/utils/getDOMRangeRect.js +27 -0
- package/utils/getDOMRangeRect.js.map +1 -0
- package/utils/getLexicalTextSelectionState.d.ts +5 -0
- package/utils/getLexicalTextSelectionState.js +163 -0
- package/utils/getLexicalTextSelectionState.js.map +1 -0
- package/utils/getSelectedNode.d.ts +2 -0
- package/utils/getSelectedNode.js +30 -0
- package/utils/getSelectedNode.js.map +1 -0
- package/utils/isValidJSON.d.ts +1 -0
- package/utils/isValidJSON.js +18 -0
- package/utils/isValidJSON.js.map +1 -0
- package/utils/isValidLexicalData.d.ts +2 -0
- package/utils/isValidLexicalData.js +24 -0
- package/utils/isValidLexicalData.js.map +1 -0
- package/utils/nodes/clearNodeFormating.d.ts +2 -0
- package/utils/nodes/clearNodeFormating.js +28 -0
- package/utils/nodes/clearNodeFormating.js.map +1 -0
- package/utils/nodes/formatToHeading.d.ts +3 -0
- package/utils/nodes/formatToHeading.js +25 -0
- package/utils/nodes/formatToHeading.js.map +1 -0
- package/utils/nodes/formatToParagraph.d.ts +2 -0
- package/utils/nodes/formatToParagraph.js +20 -0
- package/utils/nodes/formatToParagraph.js.map +1 -0
- package/utils/nodes/formatToQuote.d.ts +2 -0
- package/utils/nodes/formatToQuote.js +25 -0
- package/utils/nodes/formatToQuote.js.map +1 -0
- package/utils/nodes/listNode.d.ts +11 -0
- package/utils/nodes/listNode.js +107 -0
- package/utils/nodes/listNode.js.map +1 -0
- package/utils/point.d.ts +21 -0
- package/utils/point.js +77 -0
- package/utils/point.js.map +1 -0
- package/utils/rect.d.ts +47 -0
- package/utils/rect.js +169 -0
- package/utils/rect.js.map +1 -0
- package/utils/sanitizeUrl.d.ts +8 -0
- package/utils/sanitizeUrl.js +27 -0
- package/utils/sanitizeUrl.js.map +1 -0
- package/utils/setFloatingElemPosition.d.ts +3 -0
- package/utils/setFloatingElemPosition.js +40 -0
- package/utils/setFloatingElemPosition.js.map +1 -0
- package/utils/styleObjectToString.d.ts +2 -0
- package/utils/styleObjectToString.js +22 -0
- package/utils/styleObjectToString.js.map +1 -0
- package/utils/toTypographyEmotionMap.d.ts +3 -0
- package/utils/toTypographyEmotionMap.js +36 -0
- package/utils/toTypographyEmotionMap.js.map +1 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.FontSizeAction = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
13
|
+
var _selection = require("@lexical/selection");
|
|
14
|
+
var _utils = require("@lexical/utils");
|
|
15
|
+
var _lexical = require("lexical");
|
|
16
|
+
var _DropDown = require("../../ui/DropDown");
|
|
17
|
+
var FONT_SIZE_OPTIONS = ["8px", "9px", "10px", "11px", "12px", "14px", "15px", "16px", "18px", "21px", "24px", "30px", "36px", "48px", "60px", "72px", "96px"];
|
|
18
|
+
function dropDownActiveClass(active) {
|
|
19
|
+
if (active) {
|
|
20
|
+
return "active dropdown-item-active";
|
|
21
|
+
}
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
function FontSizeDropDown(props) {
|
|
25
|
+
var editor = props.editor,
|
|
26
|
+
value = props.value,
|
|
27
|
+
_props$disabled = props.disabled,
|
|
28
|
+
disabled = _props$disabled === void 0 ? false : _props$disabled;
|
|
29
|
+
var handleClick = (0, _react.useCallback)(function (option) {
|
|
30
|
+
editor.update(function () {
|
|
31
|
+
var selection = (0, _lexical.$getSelection)();
|
|
32
|
+
if ((0, _lexical.$isRangeSelection)(selection)) {
|
|
33
|
+
(0, _selection.$patchStyleText)(selection, (0, _defineProperty2.default)({}, "font-size", option));
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}, [editor]);
|
|
37
|
+
return /*#__PURE__*/_react.default.createElement(_DropDown.DropDown, {
|
|
38
|
+
disabled: disabled,
|
|
39
|
+
buttonClassName: "toolbar-item font-size",
|
|
40
|
+
buttonLabel: value,
|
|
41
|
+
buttonAriaLabel: "Formatting options for font size"
|
|
42
|
+
}, FONT_SIZE_OPTIONS.map(function (option) {
|
|
43
|
+
return /*#__PURE__*/_react.default.createElement(_DropDown.DropDownItem, {
|
|
44
|
+
className: "item fontsize-item ".concat(dropDownActiveClass(value === option)),
|
|
45
|
+
onClick: function onClick() {
|
|
46
|
+
return handleClick(option);
|
|
47
|
+
},
|
|
48
|
+
key: option
|
|
49
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
50
|
+
className: "text"
|
|
51
|
+
}, option));
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
var FontSizeAction = function FontSizeAction() {
|
|
55
|
+
var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
|
|
56
|
+
_useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
|
|
57
|
+
editor = _useLexicalComposerCo2[0];
|
|
58
|
+
var _useState = (0, _react.useState)(function () {
|
|
59
|
+
return editor.isEditable();
|
|
60
|
+
}),
|
|
61
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
62
|
+
isEditable = _useState2[0],
|
|
63
|
+
setIsEditable = _useState2[1];
|
|
64
|
+
var _useState3 = (0, _react.useState)(editor),
|
|
65
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
66
|
+
activeEditor = _useState4[0],
|
|
67
|
+
setActiveEditor = _useState4[1];
|
|
68
|
+
var _useState5 = (0, _react.useState)("15px"),
|
|
69
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
70
|
+
fontSize = _useState6[0],
|
|
71
|
+
setFontSize = _useState6[1];
|
|
72
|
+
var updateToolbar = (0, _react.useCallback)(function () {
|
|
73
|
+
var selection = (0, _lexical.$getSelection)();
|
|
74
|
+
if ((0, _lexical.$isRangeSelection)(selection)) {
|
|
75
|
+
setFontSize((0, _selection.$getSelectionStyleValueForProperty)(selection, "font-size", "15px"));
|
|
76
|
+
}
|
|
77
|
+
}, [activeEditor]);
|
|
78
|
+
(0, _react.useEffect)(function () {
|
|
79
|
+
return (0, _utils.mergeRegister)(editor.registerEditableListener(function (editable) {
|
|
80
|
+
setIsEditable(editable);
|
|
81
|
+
}), activeEditor.registerUpdateListener(function (_ref) {
|
|
82
|
+
var editorState = _ref.editorState;
|
|
83
|
+
editorState.read(function () {
|
|
84
|
+
updateToolbar();
|
|
85
|
+
});
|
|
86
|
+
}));
|
|
87
|
+
}, [activeEditor, editor]);
|
|
88
|
+
(0, _react.useEffect)(function () {
|
|
89
|
+
return editor.registerCommand(_lexical.SELECTION_CHANGE_COMMAND, function (_payload, newEditor) {
|
|
90
|
+
updateToolbar();
|
|
91
|
+
setActiveEditor(newEditor);
|
|
92
|
+
return false;
|
|
93
|
+
}, _lexical.COMMAND_PRIORITY_CRITICAL);
|
|
94
|
+
}, [editor, updateToolbar]);
|
|
95
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(FontSizeDropDown, {
|
|
96
|
+
disabled: !isEditable,
|
|
97
|
+
value: fontSize,
|
|
98
|
+
editor: editor
|
|
99
|
+
}));
|
|
100
|
+
};
|
|
101
|
+
exports.FontSizeAction = FontSizeAction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FONT_SIZE_OPTIONS","dropDownActiveClass","active","FontSizeDropDown","props","editor","value","disabled","handleClick","useCallback","option","update","selection","$getSelection","$isRangeSelection","$patchStyleText","map","FontSizeAction","useLexicalComposerContext","useState","isEditable","setIsEditable","activeEditor","setActiveEditor","fontSize","setFontSize","updateToolbar","$getSelectionStyleValueForProperty","useEffect","mergeRegister","registerEditableListener","editable","registerUpdateListener","editorState","read","registerCommand","SELECTION_CHANGE_COMMAND","_payload","newEditor","COMMAND_PRIORITY_CRITICAL"],"sources":["FontSizeAction.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getSelectionStyleValueForProperty, $patchStyleText } from \"@lexical/selection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport { DropDown, DropDownItem } from \"../../ui/DropDown\";\n\nconst FONT_SIZE_OPTIONS: string[] = [\n \"8px\",\n \"9px\",\n \"10px\",\n \"11px\",\n \"12px\",\n \"14px\",\n \"15px\",\n \"16px\",\n \"18px\",\n \"21px\",\n \"24px\",\n \"30px\",\n \"36px\",\n \"48px\",\n \"60px\",\n \"72px\",\n \"96px\"\n];\n\nfunction dropDownActiveClass(active: boolean) {\n if (active) {\n return \"active dropdown-item-active\";\n }\n return \"\";\n}\n\ninterface FontSizeDropDownProps {\n editor: LexicalEditor;\n value: string;\n disabled?: boolean;\n}\n\nfunction FontSizeDropDown(props: FontSizeDropDownProps): JSX.Element {\n const { editor, value, disabled = false } = props;\n\n const handleClick = useCallback(\n (option: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, {\n [\"font-size\"]: option\n });\n }\n });\n },\n [editor]\n );\n\n return (\n <DropDown\n disabled={disabled}\n buttonClassName=\"toolbar-item font-size\"\n buttonLabel={value}\n buttonAriaLabel={\"Formatting options for font size\"}\n >\n {FONT_SIZE_OPTIONS.map(option => (\n <DropDownItem\n className={`item fontsize-item ${dropDownActiveClass(value === option)}`}\n onClick={() => handleClick(option)}\n key={option}\n >\n <span className=\"text\">{option}</span>\n </DropDownItem>\n ))}\n </DropDown>\n );\n}\n\nexport const FontSizeAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isEditable, setIsEditable] = useState(() => editor.isEditable());\n const [activeEditor, setActiveEditor] = useState(editor);\n const [fontSize, setFontSize] = useState<string>(\"15px\");\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n setFontSize($getSelectionStyleValueForProperty(selection, \"font-size\", \"15px\"));\n }\n }, [activeEditor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerEditableListener(editable => {\n setIsEditable(editable);\n }),\n activeEditor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n })\n );\n }, [activeEditor, editor]);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n return (\n <>\n <FontSizeDropDown disabled={!isEditable} value={fontSize} editor={editor} />\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ItalicAction = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
12
|
+
var _lexical = require("lexical");
|
|
13
|
+
var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
|
|
14
|
+
var ItalicAction = function ItalicAction() {
|
|
15
|
+
var _textBlockSelection$s;
|
|
16
|
+
var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
|
|
17
|
+
_useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
|
|
18
|
+
editor = _useLexicalComposerCo2[0];
|
|
19
|
+
var _useState = (0, _react.useState)(false),
|
|
20
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
21
|
+
isItalic = _useState2[0],
|
|
22
|
+
setIsItalic = _useState2[1];
|
|
23
|
+
var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
|
|
24
|
+
textBlockSelection = _useRichTextEditor.textBlockSelection;
|
|
25
|
+
var isItalicSelected = !!(textBlockSelection !== null && textBlockSelection !== void 0 && (_textBlockSelection$s = textBlockSelection.state) !== null && _textBlockSelection$s !== void 0 && _textBlockSelection$s.italic);
|
|
26
|
+
var handleClick = function handleClick() {
|
|
27
|
+
editor.dispatchCommand(_lexical.FORMAT_TEXT_COMMAND, "italic");
|
|
28
|
+
setIsItalic(!isItalic);
|
|
29
|
+
};
|
|
30
|
+
(0, _react.useEffect)(function () {
|
|
31
|
+
setIsItalic(isItalicSelected);
|
|
32
|
+
}, [isItalicSelected]);
|
|
33
|
+
return /*#__PURE__*/_react.default.createElement("button", {
|
|
34
|
+
onClick: function onClick() {
|
|
35
|
+
return handleClick();
|
|
36
|
+
},
|
|
37
|
+
className: "popup-item spaced " + (isItalic ? "active" : ""),
|
|
38
|
+
"aria-label": "Format text as italic"
|
|
39
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
40
|
+
className: "format italic"
|
|
41
|
+
}));
|
|
42
|
+
};
|
|
43
|
+
exports.ItalicAction = ItalicAction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ItalicAction","useLexicalComposerContext","editor","useState","isItalic","setIsItalic","useRichTextEditor","textBlockSelection","isItalicSelected","state","italic","handleClick","dispatchCommand","FORMAT_TEXT_COMMAND","useEffect"],"sources":["ItalicAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { FORMAT_TEXT_COMMAND } from \"lexical\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\n\nexport const ItalicAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isItalic, setIsItalic] = useState(false);\n const { textBlockSelection } = useRichTextEditor();\n const isItalicSelected = !!textBlockSelection?.state?.italic;\n\n const handleClick = () => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n setIsItalic(!isItalic);\n };\n\n useEffect(() => {\n setIsItalic(isItalicSelected);\n }, [isItalicSelected]);\n\n return (\n <button\n onClick={() => handleClick()}\n className={\"popup-item spaced \" + (isItalic ? \"active\" : \"\")}\n aria-label=\"Format text as italic\"\n >\n <i className=\"format italic\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AAEO,IAAMA,YAAY,GAAG,SAAfA,YAAY,GAAS;EAAA;EAC9B,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAAgC,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAA;IAAxCC,QAAQ;IAAEC,WAAW;EAC5B,yBAA+B,IAAAC,qCAAiB,GAAE;IAA1CC,kBAAkB,sBAAlBA,kBAAkB;EAC1B,IAAMC,gBAAgB,GAAG,CAAC,EAACD,kBAAkB,aAAlBA,kBAAkB,wCAAlBA,kBAAkB,CAAEE,KAAK,kDAAzB,sBAA2BC,MAAM;EAE5D,IAAMC,WAAW,GAAG,SAAdA,WAAW,GAAS;IACtBT,MAAM,CAACU,eAAe,CAACC,4BAAmB,EAAE,QAAQ,CAAC;IACrDR,WAAW,CAAC,CAACD,QAAQ,CAAC;EAC1B,CAAC;EAED,IAAAU,gBAAS,EAAC,YAAM;IACZT,WAAW,CAACG,gBAAgB,CAAC;EACjC,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEtB,oBACI;IACI,OAAO,EAAE;MAAA,OAAMG,WAAW,EAAE;IAAA,CAAC;IAC7B,SAAS,EAAE,oBAAoB,IAAIP,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAAuB,gBAElC;IAAG,SAAS,EAAC;EAAe,EAAG,CAC1B;AAEjB,CAAC;AAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.LinkAction = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
12
|
+
var _link = require("@lexical/link");
|
|
13
|
+
var _lexical = require("lexical");
|
|
14
|
+
var _getSelectedNode = require("../../utils/getSelectedNode");
|
|
15
|
+
var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
|
|
16
|
+
var LinkAction = function LinkAction() {
|
|
17
|
+
var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
|
|
18
|
+
_useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
|
|
19
|
+
editor = _useLexicalComposerCo2[0];
|
|
20
|
+
var _useState = (0, _react.useState)(false),
|
|
21
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
22
|
+
isLink = _useState2[0],
|
|
23
|
+
setIsLink = _useState2[1];
|
|
24
|
+
var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
|
|
25
|
+
setNodeIsText = _useRichTextEditor.setNodeIsText;
|
|
26
|
+
var insertLink = (0, _react.useCallback)(function () {
|
|
27
|
+
if (!isLink) {
|
|
28
|
+
editor.dispatchCommand(_link.TOGGLE_LINK_COMMAND, "https://");
|
|
29
|
+
setNodeIsText(false);
|
|
30
|
+
} else {
|
|
31
|
+
editor.dispatchCommand(_link.TOGGLE_LINK_COMMAND, null);
|
|
32
|
+
}
|
|
33
|
+
}, [editor, isLink]);
|
|
34
|
+
var updatePopup = (0, _react.useCallback)(function () {
|
|
35
|
+
editor.getEditorState().read(function () {
|
|
36
|
+
var selection = (0, _lexical.$getSelection)();
|
|
37
|
+
if (!(0, _lexical.$isRangeSelection)(selection)) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
var node = (0, _getSelectedNode.getSelectedNode)(selection);
|
|
41
|
+
// Update links
|
|
42
|
+
var parent = node.getParent();
|
|
43
|
+
if ((0, _link.$isLinkNode)(parent) || (0, _link.$isLinkNode)(node)) {
|
|
44
|
+
setIsLink(true);
|
|
45
|
+
} else {
|
|
46
|
+
setIsLink(false);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}, [editor]);
|
|
50
|
+
(0, _react.useEffect)(function () {
|
|
51
|
+
document.addEventListener("selectionchange", updatePopup);
|
|
52
|
+
return function () {
|
|
53
|
+
document.removeEventListener("selectionchange", updatePopup);
|
|
54
|
+
};
|
|
55
|
+
}, [updatePopup]);
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement("button", {
|
|
57
|
+
onClick: insertLink,
|
|
58
|
+
className: "popup-item spaced " + (isLink ? "active" : ""),
|
|
59
|
+
"aria-label": "Insert link"
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
61
|
+
className: "format link"
|
|
62
|
+
}));
|
|
63
|
+
};
|
|
64
|
+
exports.LinkAction = LinkAction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LinkAction","useLexicalComposerContext","editor","useState","isLink","setIsLink","useRichTextEditor","setNodeIsText","insertLink","useCallback","dispatchCommand","TOGGLE_LINK_COMMAND","updatePopup","getEditorState","read","selection","$getSelection","$isRangeSelection","node","getSelectedNode","parent","getParent","$isLinkNode","useEffect","document","addEventListener","removeEventListener"],"sources":["LinkAction.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $getSelection, $isRangeSelection } from \"lexical\";\nimport { getSelectedNode } from \"~/utils/getSelectedNode\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\n\nexport const LinkAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isLink, setIsLink] = useState(false);\n const { setNodeIsText } = useRichTextEditor();\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n setNodeIsText(false);\n } else {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }, [editor, isLink]);\n\n const updatePopup = useCallback(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return;\n }\n const node = getSelectedNode(selection);\n // Update links\n const parent = node.getParent();\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n });\n }, [editor]);\n\n useEffect(() => {\n document.addEventListener(\"selectionchange\", updatePopup);\n return () => {\n document.removeEventListener(\"selectionchange\", updatePopup);\n };\n }, [updatePopup]);\n\n return (\n <button\n onClick={insertLink}\n className={\"popup-item spaced \" + (isLink ? \"active\" : \"\")}\n aria-label=\"Insert link\"\n >\n <i className=\"format link\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMA,UAAU,GAAG,SAAbA,UAAU,GAAS;EAC5B,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAA4B,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAA;IAApCC,MAAM;IAAEC,SAAS;EACxB,yBAA0B,IAAAC,qCAAiB,GAAE;IAArCC,aAAa,sBAAbA,aAAa;EAErB,IAAMC,UAAU,GAAG,IAAAC,kBAAW,EAAC,YAAM;IACjC,IAAI,CAACL,MAAM,EAAE;MACTF,MAAM,CAACQ,eAAe,CAACC,yBAAmB,EAAE,UAAU,CAAC;MACvDJ,aAAa,CAAC,KAAK,CAAC;IACxB,CAAC,MAAM;MACHL,MAAM,CAACQ,eAAe,CAACC,yBAAmB,EAAE,IAAI,CAAC;IACrD;EACJ,CAAC,EAAE,CAACT,MAAM,EAAEE,MAAM,CAAC,CAAC;EAEpB,IAAMQ,WAAW,GAAG,IAAAH,kBAAW,EAAC,YAAM;IAClCP,MAAM,CAACW,cAAc,EAAE,CAACC,IAAI,CAAC,YAAM;MAC/B,IAAMC,SAAS,GAAG,IAAAC,sBAAa,GAAE;MACjC,IAAI,CAAC,IAAAC,0BAAiB,EAACF,SAAS,CAAC,EAAE;QAC/B;MACJ;MACA,IAAMG,IAAI,GAAG,IAAAC,gCAAe,EAACJ,SAAS,CAAC;MACvC;MACA,IAAMK,MAAM,GAAGF,IAAI,CAACG,SAAS,EAAE;MAC/B,IAAI,IAAAC,iBAAW,EAACF,MAAM,CAAC,IAAI,IAAAE,iBAAW,EAACJ,IAAI,CAAC,EAAE;QAC1Cb,SAAS,CAAC,IAAI,CAAC;MACnB,CAAC,MAAM;QACHA,SAAS,CAAC,KAAK,CAAC;MACpB;IACJ,CAAC,CAAC;EACN,CAAC,EAAE,CAACH,MAAM,CAAC,CAAC;EAEZ,IAAAqB,gBAAS,EAAC,YAAM;IACZC,QAAQ,CAACC,gBAAgB,CAAC,iBAAiB,EAAEb,WAAW,CAAC;IACzD,OAAO,YAAM;MACTY,QAAQ,CAACE,mBAAmB,CAAC,iBAAiB,EAAEd,WAAW,CAAC;IAChE,CAAC;EACL,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,oBACI;IACI,OAAO,EAAEJ,UAAW;IACpB,SAAS,EAAE,oBAAoB,IAAIJ,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC3D,cAAW;EAAa,gBAExB;IAAG,SAAS,EAAC;EAAa,EAAG,CACxB;AAEjB,CAAC;AAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.NumberedListAction = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
12
|
+
var _webinyList = require("../../commands/webiny-list");
|
|
13
|
+
var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
|
|
14
|
+
var _findTypographyStyleByHtmlTag = require("../../utils/findTypographyStyleByHtmlTag");
|
|
15
|
+
var NumberedListAction = function NumberedListAction() {
|
|
16
|
+
var _textBlockSelection$s;
|
|
17
|
+
var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
|
|
18
|
+
_useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
|
|
19
|
+
editor = _useLexicalComposerCo2[0];
|
|
20
|
+
var _useState = (0, _react.useState)(false),
|
|
21
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
22
|
+
isActive = _useState2[0],
|
|
23
|
+
setIsActive = _useState2[1];
|
|
24
|
+
var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
|
|
25
|
+
textBlockSelection = _useRichTextEditor.textBlockSelection,
|
|
26
|
+
themeEmotionMap = _useRichTextEditor.themeEmotionMap;
|
|
27
|
+
var isListSelected = textBlockSelection === null || textBlockSelection === void 0 ? void 0 : (_textBlockSelection$s = textBlockSelection.state) === null || _textBlockSelection$s === void 0 ? void 0 : _textBlockSelection$s.list.isSelected;
|
|
28
|
+
(0, _react.useEffect)(function () {
|
|
29
|
+
var _textBlockSelection$s2;
|
|
30
|
+
var isListBulletType = (textBlockSelection === null || textBlockSelection === void 0 ? void 0 : (_textBlockSelection$s2 = textBlockSelection.state) === null || _textBlockSelection$s2 === void 0 ? void 0 : _textBlockSelection$s2.textType) === "number";
|
|
31
|
+
setIsActive(isListBulletType);
|
|
32
|
+
}, [isListSelected]);
|
|
33
|
+
var formatNumberedList = function formatNumberedList() {
|
|
34
|
+
if (!isActive) {
|
|
35
|
+
var _findTypographyStyleB;
|
|
36
|
+
var styleId = themeEmotionMap ? (_findTypographyStyleB = (0, _findTypographyStyleByHtmlTag.findTypographyStyleByHtmlTag)("ol", themeEmotionMap)) === null || _findTypographyStyleB === void 0 ? void 0 : _findTypographyStyleB.id : undefined;
|
|
37
|
+
// will update the active state in the useEffect
|
|
38
|
+
editor.dispatchCommand(_webinyList.INSERT_ORDERED_WEBINY_LIST_COMMAND, {
|
|
39
|
+
themeStyleId: styleId
|
|
40
|
+
});
|
|
41
|
+
setIsActive(true);
|
|
42
|
+
} else {
|
|
43
|
+
editor.dispatchCommand(_webinyList.REMOVE_WEBINY_LIST_COMMAND, undefined);
|
|
44
|
+
// removing will not update correctly the active state, so we need to set to false manually.
|
|
45
|
+
setIsActive(false);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
return /*#__PURE__*/_react.default.createElement("button", {
|
|
49
|
+
onClick: function onClick() {
|
|
50
|
+
return formatNumberedList();
|
|
51
|
+
},
|
|
52
|
+
className: "popup-item spaced " + (isActive ? "active" : ""),
|
|
53
|
+
"aria-label": "Format text as numbered list"
|
|
54
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
55
|
+
className: "icon numbered-list"
|
|
56
|
+
}));
|
|
57
|
+
};
|
|
58
|
+
exports.NumberedListAction = NumberedListAction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NumberedListAction","useLexicalComposerContext","editor","useState","isActive","setIsActive","useRichTextEditor","textBlockSelection","themeEmotionMap","isListSelected","state","list","isSelected","useEffect","isListBulletType","textType","formatNumberedList","styleId","findTypographyStyleByHtmlTag","id","undefined","dispatchCommand","INSERT_ORDERED_WEBINY_LIST_COMMAND","themeStyleId","REMOVE_WEBINY_LIST_COMMAND"],"sources":["NumberedListAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n INSERT_ORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\n\nexport const NumberedListAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isActive, setIsActive] = useState<boolean>(false);\n const { textBlockSelection, themeEmotionMap } = useRichTextEditor();\n const isListSelected = textBlockSelection?.state?.list.isSelected;\n\n useEffect(() => {\n const isListBulletType = textBlockSelection?.state?.textType === \"number\";\n setIsActive(isListBulletType);\n }, [isListSelected]);\n\n const formatNumberedList = () => {\n if (!isActive) {\n const styleId = themeEmotionMap\n ? findTypographyStyleByHtmlTag(\"ol\", themeEmotionMap)?.id\n : undefined;\n // will update the active state in the useEffect\n editor.dispatchCommand(INSERT_ORDERED_WEBINY_LIST_COMMAND, { themeStyleId: styleId });\n setIsActive(true);\n } else {\n editor.dispatchCommand(REMOVE_WEBINY_LIST_COMMAND, undefined);\n // removing will not update correctly the active state, so we need to set to false manually.\n setIsActive(false);\n }\n };\n\n return (\n <button\n onClick={() => formatNumberedList()}\n className={\"popup-item spaced \" + (isActive ? \"active\" : \"\")}\n aria-label=\"Format text as numbered list\"\n >\n <i className=\"icon numbered-list\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AAIA;AACA;AAEO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAkB,GAAS;EAAA;EACpC,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAAgC,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAA;IAAjDC,QAAQ;IAAEC,WAAW;EAC5B,yBAAgD,IAAAC,qCAAiB,GAAE;IAA3DC,kBAAkB,sBAAlBA,kBAAkB;IAAEC,eAAe,sBAAfA,eAAe;EAC3C,IAAMC,cAAc,GAAGF,kBAAkB,aAAlBA,kBAAkB,gDAAlBA,kBAAkB,CAAEG,KAAK,0DAAzB,sBAA2BC,IAAI,CAACC,UAAU;EAEjE,IAAAC,gBAAS,EAAC,YAAM;IAAA;IACZ,IAAMC,gBAAgB,GAAG,CAAAP,kBAAkB,aAAlBA,kBAAkB,iDAAlBA,kBAAkB,CAAEG,KAAK,2DAAzB,uBAA2BK,QAAQ,MAAK,QAAQ;IACzEV,WAAW,CAACS,gBAAgB,CAAC;EACjC,CAAC,EAAE,CAACL,cAAc,CAAC,CAAC;EAEpB,IAAMO,kBAAkB,GAAG,SAArBA,kBAAkB,GAAS;IAC7B,IAAI,CAACZ,QAAQ,EAAE;MAAA;MACX,IAAMa,OAAO,GAAGT,eAAe,4BACzB,IAAAU,0DAA4B,EAAC,IAAI,EAAEV,eAAe,CAAC,0DAAnD,sBAAqDW,EAAE,GACvDC,SAAS;MACf;MACAlB,MAAM,CAACmB,eAAe,CAACC,8CAAkC,EAAE;QAAEC,YAAY,EAAEN;MAAQ,CAAC,CAAC;MACrFZ,WAAW,CAAC,IAAI,CAAC;IACrB,CAAC,MAAM;MACHH,MAAM,CAACmB,eAAe,CAACG,sCAA0B,EAAEJ,SAAS,CAAC;MAC7D;MACAf,WAAW,CAAC,KAAK,CAAC;IACtB;EACJ,CAAC;EAED,oBACI;IACI,OAAO,EAAE;MAAA,OAAMW,kBAAkB,EAAE;IAAA,CAAC;IACpC,SAAS,EAAE,oBAAoB,IAAIZ,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAA8B,gBAEzC;IAAG,SAAS,EAAC;EAAoB,EAAG,CAC/B;AAEjB,CAAC;AAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.QuoteAction = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
|
|
12
|
+
var _formatToQuote = require("../../utils/nodes/formatToQuote");
|
|
13
|
+
var _formatToParagraph = require("../../utils/nodes/formatToParagraph");
|
|
14
|
+
var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
|
|
15
|
+
var QuoteAction = function QuoteAction() {
|
|
16
|
+
var _textBlockSelection$s;
|
|
17
|
+
var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
|
|
18
|
+
_useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
|
|
19
|
+
editor = _useLexicalComposerCo2[0];
|
|
20
|
+
var _useState = (0, _react.useState)(false),
|
|
21
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
22
|
+
isActive = _useState2[0],
|
|
23
|
+
setIsActive = _useState2[1];
|
|
24
|
+
var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
|
|
25
|
+
textBlockSelection = _useRichTextEditor.textBlockSelection,
|
|
26
|
+
themeEmotionMap = _useRichTextEditor.themeEmotionMap,
|
|
27
|
+
activeEditor = _useRichTextEditor.activeEditor;
|
|
28
|
+
var isQuoteSelected = !!(textBlockSelection !== null && textBlockSelection !== void 0 && (_textBlockSelection$s = textBlockSelection.state) !== null && _textBlockSelection$s !== void 0 && _textBlockSelection$s.quote.isSelected);
|
|
29
|
+
var formatText = function formatText() {
|
|
30
|
+
if (!isActive) {
|
|
31
|
+
// Try to set default quote style, when the action button is clicked for first time
|
|
32
|
+
var DEFAULT_QUOTE_ID = "quote";
|
|
33
|
+
var hasQuoteStyles = themeEmotionMap && themeEmotionMap[DEFAULT_QUOTE_ID];
|
|
34
|
+
(0, _formatToQuote.formatToQuote)(editor, hasQuoteStyles ? DEFAULT_QUOTE_ID : undefined);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
(0, _formatToParagraph.formatToParagraph)(editor);
|
|
38
|
+
};
|
|
39
|
+
(0, _react.useEffect)(function () {
|
|
40
|
+
setIsActive(isQuoteSelected);
|
|
41
|
+
}, [isQuoteSelected, activeEditor]);
|
|
42
|
+
return /*#__PURE__*/_react.default.createElement("button", {
|
|
43
|
+
onClick: function onClick() {
|
|
44
|
+
return formatText();
|
|
45
|
+
},
|
|
46
|
+
className: "popup-item " + (isActive ? "active" : ""),
|
|
47
|
+
"aria-label": "Format text as quote"
|
|
48
|
+
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
49
|
+
className: "icon quote"
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
exports.QuoteAction = QuoteAction;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["QuoteAction","useLexicalComposerContext","editor","useState","isActive","setIsActive","useRichTextEditor","textBlockSelection","themeEmotionMap","activeEditor","isQuoteSelected","state","quote","isSelected","formatText","DEFAULT_QUOTE_ID","hasQuoteStyles","formatToQuote","undefined","formatToParagraph","useEffect"],"sources":["QuoteAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { formatToQuote } from \"~/utils/nodes/formatToQuote\";\nimport { formatToParagraph } from \"~/utils/nodes/formatToParagraph\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nexport const QuoteAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isActive, setIsActive] = useState<boolean>(false);\n const { textBlockSelection, themeEmotionMap, activeEditor } = useRichTextEditor();\n const isQuoteSelected = !!textBlockSelection?.state?.quote.isSelected;\n\n const formatText = () => {\n if (!isActive) {\n // Try to set default quote style, when the action button is clicked for first time\n const DEFAULT_QUOTE_ID = \"quote\";\n const hasQuoteStyles = themeEmotionMap && themeEmotionMap[DEFAULT_QUOTE_ID];\n formatToQuote(editor, hasQuoteStyles ? DEFAULT_QUOTE_ID : undefined);\n return;\n }\n formatToParagraph(editor);\n };\n\n useEffect(() => {\n setIsActive(isQuoteSelected);\n }, [isQuoteSelected, activeEditor]);\n\n return (\n <button\n onClick={() => formatText()}\n className={\"popup-item \" + (isActive ? \"active\" : \"\")}\n aria-label=\"Format text as quote\"\n >\n <i className=\"icon quote\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO,IAAMA,WAAW,GAAG,SAAdA,WAAW,GAAS;EAAA;EAC7B,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EACb,gBAAgC,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAA;IAAjDC,QAAQ;IAAEC,WAAW;EAC5B,yBAA8D,IAAAC,qCAAiB,GAAE;IAAzEC,kBAAkB,sBAAlBA,kBAAkB;IAAEC,eAAe,sBAAfA,eAAe;IAAEC,YAAY,sBAAZA,YAAY;EACzD,IAAMC,eAAe,GAAG,CAAC,EAACH,kBAAkB,aAAlBA,kBAAkB,wCAAlBA,kBAAkB,CAAEI,KAAK,kDAAzB,sBAA2BC,KAAK,CAACC,UAAU;EAErE,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAS;IACrB,IAAI,CAACV,QAAQ,EAAE;MACX;MACA,IAAMW,gBAAgB,GAAG,OAAO;MAChC,IAAMC,cAAc,GAAGR,eAAe,IAAIA,eAAe,CAACO,gBAAgB,CAAC;MAC3E,IAAAE,4BAAa,EAACf,MAAM,EAAEc,cAAc,GAAGD,gBAAgB,GAAGG,SAAS,CAAC;MACpE;IACJ;IACA,IAAAC,oCAAiB,EAACjB,MAAM,CAAC;EAC7B,CAAC;EAED,IAAAkB,gBAAS,EAAC,YAAM;IACZf,WAAW,CAACK,eAAe,CAAC;EAChC,CAAC,EAAE,CAACA,eAAe,EAAED,YAAY,CAAC,CAAC;EAEnC,oBACI;IACI,OAAO,EAAE;MAAA,OAAMK,UAAU,EAAE;IAAA,CAAC;IAC5B,SAAS,EAAE,aAAa,IAAIV,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IACtD,cAAW;EAAsB,gBAEjC;IAAG,SAAS,EAAC;EAAY,EAAG,CACvB;AAEjB,CAAC;AAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare const BaseTextAlignmentDropDown: import("@webiny/react-composition").ComposableFC<unknown>;
|
|
3
|
+
interface TextAlignmentActionDropdownProps {
|
|
4
|
+
element: JSX.Element;
|
|
5
|
+
}
|
|
6
|
+
declare const TextAlignmentActionDropDown: React.FC<TextAlignmentActionDropdownProps>;
|
|
7
|
+
export interface TextAlignmentAction extends React.FC<unknown> {
|
|
8
|
+
TextAlignmentDropDown: typeof TextAlignmentActionDropDown;
|
|
9
|
+
}
|
|
10
|
+
export declare const TextAlignmentAction: TextAlignmentAction;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.TextAlignmentAction = exports.BaseTextAlignmentDropDown = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _lexical = require("lexical");
|
|
12
|
+
var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
|
|
13
|
+
var _reactComposition = require("@webiny/react-composition");
|
|
14
|
+
var _TextAlignmentActionContextProps = require("../../context/TextAlignmentActionContextProps");
|
|
15
|
+
/*
|
|
16
|
+
* Base text alignment dropdown composable component.
|
|
17
|
+
* Note: To add a custom dropdown component use @see LexicalEditorConfig API.
|
|
18
|
+
*/
|
|
19
|
+
var BaseTextAlignmentDropDown = (0, _reactComposition.makeComposable)("BaseTextAlignmentDropDown", function () {
|
|
20
|
+
(0, _react.useEffect)(function () {
|
|
21
|
+
console.log("Default BaseTextAlignmentDropDown, please add your own component");
|
|
22
|
+
}, []);
|
|
23
|
+
return null;
|
|
24
|
+
});
|
|
25
|
+
exports.BaseTextAlignmentDropDown = BaseTextAlignmentDropDown;
|
|
26
|
+
var TextAlignmentActionDropDown = function TextAlignmentActionDropDown(_ref) {
|
|
27
|
+
var element = _ref.element;
|
|
28
|
+
return /*#__PURE__*/_react.default.createElement(_reactComposition.Compose, {
|
|
29
|
+
component: BaseTextAlignmentDropDown,
|
|
30
|
+
with: function _with() {
|
|
31
|
+
return function () {
|
|
32
|
+
return element;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
var TextAlignmentAction = function TextAlignmentAction() {
|
|
38
|
+
var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
|
|
39
|
+
activeEditor = _useRichTextEditor.activeEditor;
|
|
40
|
+
var _useState = (0, _react.useState)(""),
|
|
41
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
42
|
+
alignmentValue = _useState2[0],
|
|
43
|
+
setAlignmentValue = _useState2[1];
|
|
44
|
+
var applyTextAlignment = function applyTextAlignment(value) {
|
|
45
|
+
if (activeEditor) {
|
|
46
|
+
activeEditor.dispatchCommand(_lexical.FORMAT_ELEMENT_COMMAND, value);
|
|
47
|
+
setAlignmentValue(value);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
var outdentText = function outdentText() {
|
|
51
|
+
if (activeEditor) {
|
|
52
|
+
activeEditor.dispatchCommand(_lexical.OUTDENT_CONTENT_COMMAND, undefined);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var indentText = function indentText() {
|
|
56
|
+
if (activeEditor) {
|
|
57
|
+
activeEditor.dispatchCommand(_lexical.INDENT_CONTENT_COMMAND, undefined);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
return /*#__PURE__*/_react.default.createElement(_TextAlignmentActionContextProps.TextAlignmentActionContext.Provider, {
|
|
61
|
+
value: {
|
|
62
|
+
value: alignmentValue,
|
|
63
|
+
applyTextAlignment: applyTextAlignment,
|
|
64
|
+
outdentText: outdentText,
|
|
65
|
+
indentText: indentText
|
|
66
|
+
}
|
|
67
|
+
}, /*#__PURE__*/_react.default.createElement(BaseTextAlignmentDropDown, null));
|
|
68
|
+
};
|
|
69
|
+
exports.TextAlignmentAction = TextAlignmentAction;
|
|
70
|
+
TextAlignmentAction.TextAlignmentDropDown = TextAlignmentActionDropDown;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BaseTextAlignmentDropDown","makeComposable","useEffect","console","log","TextAlignmentActionDropDown","element","TextAlignmentAction","useRichTextEditor","activeEditor","useState","alignmentValue","setAlignmentValue","applyTextAlignment","value","dispatchCommand","FORMAT_ELEMENT_COMMAND","outdentText","OUTDENT_CONTENT_COMMAND","undefined","indentText","INDENT_CONTENT_COMMAND","TextAlignmentDropDown"],"sources":["TextAlignmentAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport {\n ElementFormatType,\n FORMAT_ELEMENT_COMMAND,\n INDENT_CONTENT_COMMAND,\n OUTDENT_CONTENT_COMMAND\n} from \"lexical\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { Compose, makeComposable } from \"@webiny/react-composition\";\nimport { TextAlignmentActionContext } from \"~/context/TextAlignmentActionContextProps\";\n\n/*\n * Base text alignment dropdown composable component.\n * Note: To add a custom dropdown component use @see LexicalEditorConfig API.\n */\nexport const BaseTextAlignmentDropDown = makeComposable(\n \"BaseTextAlignmentDropDown\",\n (): JSX.Element | null => {\n useEffect(() => {\n console.log(\"Default BaseTextAlignmentDropDown, please add your own component\");\n }, []);\n return null;\n }\n);\n\ninterface TextAlignmentActionDropdownProps {\n element: JSX.Element;\n}\n\nconst TextAlignmentActionDropDown: React.FC<TextAlignmentActionDropdownProps> = ({\n element\n}): JSX.Element => {\n return <Compose component={BaseTextAlignmentDropDown} with={() => () => element} />;\n};\n\nexport interface TextAlignmentAction extends React.FC<unknown> {\n TextAlignmentDropDown: typeof TextAlignmentActionDropDown;\n}\n\nexport const TextAlignmentAction: TextAlignmentAction = () => {\n const { activeEditor } = useRichTextEditor();\n const [alignmentValue, setAlignmentValue] = useState<ElementFormatType>(\"\");\n const applyTextAlignment = (value: ElementFormatType) => {\n if (activeEditor) {\n activeEditor.dispatchCommand(FORMAT_ELEMENT_COMMAND, value);\n setAlignmentValue(value);\n }\n };\n\n const outdentText = () => {\n if (activeEditor) {\n activeEditor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);\n }\n };\n\n const indentText = () => {\n if (activeEditor) {\n activeEditor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);\n }\n };\n\n return (\n <TextAlignmentActionContext.Provider\n value={{ value: alignmentValue, applyTextAlignment, outdentText, indentText }}\n >\n <BaseTextAlignmentDropDown />\n </TextAlignmentActionContext.Provider>\n );\n};\n\nTextAlignmentAction.TextAlignmentDropDown = TextAlignmentActionDropDown;\n"],"mappings":";;;;;;;;;AAAA;AACA;AAMA;AACA;AACA;AAEA;AACA;AACA;AACA;AACO,IAAMA,yBAAyB,GAAG,IAAAC,gCAAc,EACnD,2BAA2B,EAC3B,YAA0B;EACtB,IAAAC,gBAAS,EAAC,YAAM;IACZC,OAAO,CAACC,GAAG,CAAC,kEAAkE,CAAC;EACnF,CAAC,EAAE,EAAE,CAAC;EACN,OAAO,IAAI;AACf,CAAC,CACJ;AAAC;AAMF,IAAMC,2BAAuE,GAAG,SAA1EA,2BAAuE,OAE1D;EAAA,IADfC,OAAO,QAAPA,OAAO;EAEP,oBAAO,6BAAC,yBAAO;IAAC,SAAS,EAAEN,yBAA0B;IAAC,IAAI,EAAE;MAAA,OAAM;QAAA,OAAMM,OAAO;MAAA;IAAA;EAAC,EAAG;AACvF,CAAC;AAMM,IAAMC,mBAAwC,GAAG,SAA3CA,mBAAwC,GAAS;EAC1D,yBAAyB,IAAAC,qCAAiB,GAAE;IAApCC,YAAY,sBAAZA,YAAY;EACpB,gBAA4C,IAAAC,eAAQ,EAAoB,EAAE,CAAC;IAAA;IAApEC,cAAc;IAAEC,iBAAiB;EACxC,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkB,CAAIC,KAAwB,EAAK;IACrD,IAAIL,YAAY,EAAE;MACdA,YAAY,CAACM,eAAe,CAACC,+BAAsB,EAAEF,KAAK,CAAC;MAC3DF,iBAAiB,CAACE,KAAK,CAAC;IAC5B;EACJ,CAAC;EAED,IAAMG,WAAW,GAAG,SAAdA,WAAW,GAAS;IACtB,IAAIR,YAAY,EAAE;MACdA,YAAY,CAACM,eAAe,CAACG,gCAAuB,EAAEC,SAAS,CAAC;IACpE;EACJ,CAAC;EAED,IAAMC,UAAU,GAAG,SAAbA,UAAU,GAAS;IACrB,IAAIX,YAAY,EAAE;MACdA,YAAY,CAACM,eAAe,CAACM,+BAAsB,EAAEF,SAAS,CAAC;IACnE;EACJ,CAAC;EAED,oBACI,6BAAC,2DAA0B,CAAC,QAAQ;IAChC,KAAK,EAAE;MAAEL,KAAK,EAAEH,cAAc;MAAEE,kBAAkB,EAAlBA,kBAAkB;MAAEI,WAAW,EAAXA,WAAW;MAAEG,UAAU,EAAVA;IAAW;EAAE,gBAE9E,6BAAC,yBAAyB,OAAG,CACK;AAE9C,CAAC;AAAC;AAEFb,mBAAmB,CAACe,qBAAqB,GAAGjB,2BAA2B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare const BaseTypographyActionDropDown: import("@webiny/react-composition").ComposableFC<unknown>;
|
|
3
|
+
interface TypographyActionDropdownProps {
|
|
4
|
+
element: JSX.Element;
|
|
5
|
+
}
|
|
6
|
+
declare const TypographyActionDropDown: React.FC<TypographyActionDropdownProps>;
|
|
7
|
+
export interface TypographyAction extends React.FC<unknown> {
|
|
8
|
+
TypographyDropDown: typeof TypographyActionDropDown;
|
|
9
|
+
}
|
|
10
|
+
export declare const TypographyAction: TypographyAction;
|
|
11
|
+
export {};
|