@squiz/formatted-text-editor 1.16.0 → 1.21.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +10 -0
  2. package/jest.config.ts +8 -9
  3. package/lib/Editor/Editor.js +18 -13
  4. package/lib/EditorToolbar/FloatingToolbar.js +50 -20
  5. package/lib/EditorToolbar/Toolbar.js +31 -24
  6. package/lib/EditorToolbar/Tools/Bold/BoldButton.js +14 -9
  7. package/lib/EditorToolbar/Tools/Italic/ItalicButton.js +14 -9
  8. package/lib/EditorToolbar/Tools/Link/Form/LinkForm.js +20 -15
  9. package/lib/EditorToolbar/Tools/Link/LinkButton.js +42 -14
  10. package/lib/EditorToolbar/Tools/Link/LinkModal.js +16 -11
  11. package/lib/EditorToolbar/Tools/Link/RemoveLinkButton.js +13 -8
  12. package/lib/EditorToolbar/Tools/Redo/RedoButton.js +13 -8
  13. package/lib/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.js +13 -8
  14. package/lib/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.js +13 -8
  15. package/lib/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.js +13 -8
  16. package/lib/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.js +13 -8
  17. package/lib/EditorToolbar/Tools/TextAlign/TextAlignButtons.js +19 -14
  18. package/lib/EditorToolbar/Tools/TextType/Heading/HeadingButton.js +19 -14
  19. package/lib/EditorToolbar/Tools/TextType/Paragraph/ParagraphButton.js +14 -9
  20. package/lib/EditorToolbar/Tools/TextType/Preformatted/PreformattedButton.js +13 -8
  21. package/lib/EditorToolbar/Tools/TextType/TextTypeDropdown.js +24 -19
  22. package/lib/EditorToolbar/Tools/Underline/UnderlineButton.js +14 -9
  23. package/lib/EditorToolbar/Tools/Undo/UndoButton.js +13 -8
  24. package/lib/EditorToolbar/index.js +18 -2
  25. package/lib/Extensions/Extensions.js +17 -13
  26. package/lib/Extensions/LinkExtension/LinkExtension.js +14 -10
  27. package/lib/Extensions/PreformattedExtension/PreformattedExtension.js +10 -7
  28. package/lib/FormattedTextEditor.js +7 -2
  29. package/lib/hooks/index.js +17 -1
  30. package/lib/hooks/useExtensionNames.js +9 -5
  31. package/lib/index.js +8 -2
  32. package/lib/ui/Inputs/Select/Select.js +46 -16
  33. package/lib/ui/Inputs/Text/TextInput.js +31 -5
  34. package/lib/ui/Modal/FormModal.js +33 -5
  35. package/lib/ui/Modal/Modal.js +50 -22
  36. package/lib/ui/ToolbarButton/ToolbarButton.js +8 -3
  37. package/lib/ui/ToolbarDropdown/ToolbarDropdown.js +38 -10
  38. package/lib/ui/ToolbarDropdownButton/ToolbarDropdownButton.js +11 -6
  39. package/lib/utils/createToolbarPositioner.js +16 -12
  40. package/lib/utils/getCursorRect.js +5 -1
  41. package/package.json +3 -2
  42. package/tsconfig.json +1 -1
package/README.md CHANGED
@@ -53,6 +53,16 @@ npm run test:watch
53
53
 
54
54
  When testing text input in the text editor, it is recommended to use the `<MockEditor />` component, which is a simple wrapper around the Remirror component that provides additional functionality for testing (supplying text into the editor).
55
55
 
56
+ ### Test coverage
57
+
58
+ Test coverage is enforced globally in this package. You can run the test coverage script from the package root:
59
+
60
+ ```sh
61
+ npm run test:coverage
62
+ ```
63
+
64
+ Coverage will also run as part of the normal test script. Please see ./jest.config.ts for the currently configured thresholds.
65
+
56
66
  ### End to end testing
57
67
 
58
68
  This package uses [Cypress](https://docs.cypress.io/) for end to end testing.
package/jest.config.ts CHANGED
@@ -4,6 +4,14 @@ export default {
4
4
  clearMocks: true,
5
5
  collectCoverage: true,
6
6
  collectCoverageFrom: ['src/**/*.{ts,tsx}'],
7
+ coverageThreshold: {
8
+ global: {
9
+ branches: 90,
10
+ functions: 90,
11
+ lines: 90,
12
+ statements: 90,
13
+ },
14
+ },
7
15
  errorOnDeprecated: true,
8
16
  fakeTimers: {
9
17
  enableGlobally: true,
@@ -18,13 +26,4 @@ export default {
18
26
  '^react-dom($|/.+)': '<rootDir>/node_modules/react-dom$1',
19
27
  },
20
28
  setupFilesAfterEnv: ['<rootDir>/jest.bootstrap.ts'],
21
- // TODO: enable once directory structure is sorted and we have tests/more complete code being written.
22
- // coverageThreshold: {
23
- // global: {
24
- // branches: 90,
25
- // functions: 90,
26
- // lines: 90,
27
- // statements: 90,
28
- // },
29
- // },
30
29
  };
@@ -1,10 +1,15 @@
1
- import React from 'react';
2
- import { EditorComponent, Remirror, useRemirror } from '@remirror/react';
3
- import { Toolbar, FloatingToolbar } from '../EditorToolbar';
4
- import { Extensions } from '../Extensions/Extensions';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const EditorToolbar_1 = require("../EditorToolbar");
9
+ const Extensions_1 = require("../Extensions/Extensions");
5
10
  const Editor = ({ content, editable, onChange }) => {
6
- const { manager, state, setState } = useRemirror({
7
- extensions: Extensions,
11
+ const { manager, state, setState } = (0, react_2.useRemirror)({
12
+ extensions: Extensions_1.Extensions,
8
13
  content,
9
14
  selection: 'start',
10
15
  stringHandler: 'html',
@@ -13,11 +18,11 @@ const Editor = ({ content, editable, onChange }) => {
13
18
  setState(parameter.state);
14
19
  onChange?.(parameter);
15
20
  };
16
- return (React.createElement("div", { className: "squiz-fte-scope" },
17
- React.createElement("div", { className: "remirror-theme formatted-text-editor editor-wrapper" },
18
- React.createElement(Remirror, { manager: manager, state: state, editable: editable, onChange: handleChange, placeholder: "Write something", label: "Text editor" },
19
- React.createElement(Toolbar, null),
20
- React.createElement(EditorComponent, null),
21
- React.createElement(FloatingToolbar, null)))));
21
+ return (react_1.default.createElement("div", { className: "squiz-fte-scope" },
22
+ react_1.default.createElement("div", { className: "remirror-theme formatted-text-editor editor-wrapper" },
23
+ react_1.default.createElement(react_2.Remirror, { manager: manager, state: state, editable: editable, onChange: handleChange, placeholder: "Write something", label: "Text editor" },
24
+ react_1.default.createElement(EditorToolbar_1.Toolbar, null),
25
+ react_1.default.createElement(react_2.EditorComponent, null),
26
+ react_1.default.createElement(EditorToolbar_1.FloatingToolbar, null)))));
22
27
  };
23
- export default Editor;
28
+ exports.default = Editor;
@@ -1,31 +1,61 @@
1
- import React, { useMemo } from 'react';
2
- import ItalicButton from './Tools/Italic/ItalicButton';
3
- import UnderlineButton from './Tools/Underline/UnderlineButton';
4
- import BoldButton from './Tools/Bold/BoldButton';
5
- import { useExtensionNames } from '../hooks';
6
- import RemoveLinkButton from './Tools/Link/RemoveLinkButton';
7
- import LinkButton from './Tools/Link/LinkButton';
8
- import { FloatingToolbar as RemirrorFloatingToolbar, usePositioner } from '@remirror/react';
9
- import { VerticalDivider } from '@remirror/react-components';
10
- import { createToolbarPositioner } from '../utils/createToolbarPositioner';
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.FloatingToolbar = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const ItalicButton_1 = __importDefault(require("./Tools/Italic/ItalicButton"));
32
+ const UnderlineButton_1 = __importDefault(require("./Tools/Underline/UnderlineButton"));
33
+ const BoldButton_1 = __importDefault(require("./Tools/Bold/BoldButton"));
34
+ const hooks_1 = require("../hooks");
35
+ const RemoveLinkButton_1 = __importDefault(require("./Tools/Link/RemoveLinkButton"));
36
+ const LinkButton_1 = __importDefault(require("./Tools/Link/LinkButton"));
37
+ const react_2 = require("@remirror/react");
38
+ const react_components_1 = require("@remirror/react-components");
39
+ const createToolbarPositioner_1 = require("../utils/createToolbarPositioner");
11
40
  // The editor main toolbar
12
- export const FloatingToolbar = () => {
13
- const extensionNames = useExtensionNames();
14
- const positioner = useMemo(() => createToolbarPositioner({ types: ['link'] }), []);
15
- const { data } = usePositioner(positioner, []);
41
+ const FloatingToolbar = () => {
42
+ const extensionNames = (0, hooks_1.useExtensionNames)();
43
+ const positioner = (0, react_1.useMemo)(() => (0, createToolbarPositioner_1.createToolbarPositioner)({ types: ['link'] }), []);
44
+ const { data } = (0, react_2.usePositioner)(positioner, []);
16
45
  let buttons = [
17
- extensionNames.bold && React.createElement(BoldButton, { key: "bold" }),
18
- extensionNames.italic && React.createElement(ItalicButton, { key: "italic" }),
19
- extensionNames.underline && React.createElement(UnderlineButton, { key: "underline" }),
46
+ extensionNames.bold && react_1.default.createElement(BoldButton_1.default, { key: "bold" }),
47
+ extensionNames.italic && react_1.default.createElement(ItalicButton_1.default, { key: "italic" }),
48
+ extensionNames.underline && react_1.default.createElement(UnderlineButton_1.default, { key: "underline" }),
20
49
  ];
21
50
  if (data.marks?.link.isExclusivelyActive) {
22
51
  // if all of the selected text is a link show the options to update/remove the link instead of the regular
23
52
  // formatting options.
24
- buttons = [React.createElement(LinkButton, { key: "update-link", inPopover: true }), React.createElement(RemoveLinkButton, { key: "remove-link" })];
53
+ buttons = [react_1.default.createElement(LinkButton_1.default, { key: "update-link", inPopover: true }), react_1.default.createElement(RemoveLinkButton_1.default, { key: "remove-link" })];
25
54
  }
26
55
  else if (!data.marks?.link.isActive) {
27
56
  // if none of the selected text is a link show the option to create a link.
28
- buttons.push(React.createElement(VerticalDivider, { key: "link-divider", className: "link-divider" }), React.createElement(LinkButton, { key: "add-link", inPopover: true }));
57
+ buttons.push(react_1.default.createElement(react_components_1.VerticalDivider, { key: "link-divider", className: "link-divider" }), react_1.default.createElement(LinkButton_1.default, { key: "add-link", inPopover: true }));
29
58
  }
30
- return (React.createElement(RemirrorFloatingToolbar, { className: "squiz-fte-scope squiz-fte-scope__floating-popover", positioner: positioner }, buttons));
59
+ return (react_1.default.createElement(react_2.FloatingToolbar, { className: "squiz-fte-scope squiz-fte-scope__floating-popover", positioner: positioner }, buttons));
31
60
  };
61
+ exports.FloatingToolbar = FloatingToolbar;
@@ -1,25 +1,32 @@
1
- import React from 'react';
2
- import { Toolbar as RemirrorToolbar, VerticalDivider } from '@remirror/react-components';
3
- import ItalicButton from './Tools/Italic/ItalicButton';
4
- import UnderlineButton from './Tools/Underline/UnderlineButton';
5
- import BoldButton from './Tools/Bold/BoldButton';
6
- import TextAlignButtons from './Tools/TextAlign/TextAlignButtons';
7
- import UndoButton from './Tools/Undo/UndoButton';
8
- import RedoButton from './Tools/Redo/RedoButton';
9
- import TextTypeDropdown from './Tools/TextType/TextTypeDropdown';
10
- import { useExtensionNames } from '../hooks';
11
- import LinkButton from './Tools/Link/LinkButton';
12
- export const Toolbar = () => {
13
- const extensionNames = useExtensionNames();
14
- return (React.createElement(RemirrorToolbar, { className: "remirror-toolbar editor-toolbar" },
15
- extensionNames.history && (React.createElement(React.Fragment, null,
16
- React.createElement(UndoButton, null),
17
- React.createElement(RedoButton, null),
18
- React.createElement(VerticalDivider, { className: "editor-divider" }))),
19
- extensionNames.heading && extensionNames.paragraph && extensionNames.preformatted && React.createElement(TextTypeDropdown, null),
20
- extensionNames.bold && React.createElement(BoldButton, null),
21
- extensionNames.italic && React.createElement(ItalicButton, null),
22
- extensionNames.underline && React.createElement(UnderlineButton, null),
23
- extensionNames.nodeFormatting && React.createElement(TextAlignButtons, null),
24
- extensionNames.link && React.createElement(LinkButton, null)));
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
4
  };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Toolbar = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_components_1 = require("@remirror/react-components");
9
+ const ItalicButton_1 = __importDefault(require("./Tools/Italic/ItalicButton"));
10
+ const UnderlineButton_1 = __importDefault(require("./Tools/Underline/UnderlineButton"));
11
+ const BoldButton_1 = __importDefault(require("./Tools/Bold/BoldButton"));
12
+ const TextAlignButtons_1 = __importDefault(require("./Tools/TextAlign/TextAlignButtons"));
13
+ const UndoButton_1 = __importDefault(require("./Tools/Undo/UndoButton"));
14
+ const RedoButton_1 = __importDefault(require("./Tools/Redo/RedoButton"));
15
+ const TextTypeDropdown_1 = __importDefault(require("./Tools/TextType/TextTypeDropdown"));
16
+ const hooks_1 = require("../hooks");
17
+ const LinkButton_1 = __importDefault(require("./Tools/Link/LinkButton"));
18
+ const Toolbar = () => {
19
+ const extensionNames = (0, hooks_1.useExtensionNames)();
20
+ return (react_1.default.createElement(react_components_1.Toolbar, { className: "remirror-toolbar editor-toolbar" },
21
+ extensionNames.history && (react_1.default.createElement(react_1.default.Fragment, null,
22
+ react_1.default.createElement(UndoButton_1.default, null),
23
+ react_1.default.createElement(RedoButton_1.default, null),
24
+ react_1.default.createElement(react_components_1.VerticalDivider, { className: "editor-divider" }))),
25
+ extensionNames.heading && extensionNames.paragraph && extensionNames.preformatted && react_1.default.createElement(TextTypeDropdown_1.default, null),
26
+ extensionNames.bold && react_1.default.createElement(BoldButton_1.default, null),
27
+ extensionNames.italic && react_1.default.createElement(ItalicButton_1.default, null),
28
+ extensionNames.underline && react_1.default.createElement(UnderlineButton_1.default, null),
29
+ extensionNames.nodeFormatting && react_1.default.createElement(TextAlignButtons_1.default, null),
30
+ extensionNames.link && react_1.default.createElement(LinkButton_1.default, null)));
31
+ };
32
+ exports.Toolbar = Toolbar;
@@ -1,17 +1,22 @@
1
- import React from 'react';
2
- import { useCommands, useActive, useChainedCommands } from '@remirror/react';
3
- import ToolbarButton from '../../../ui/ToolbarButton/ToolbarButton';
4
- import FormatBoldRoundedIcon from '@mui/icons-material/FormatBoldRounded';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const ToolbarButton_1 = __importDefault(require("../../../ui/ToolbarButton/ToolbarButton"));
9
+ const FormatBoldRounded_1 = __importDefault(require("@mui/icons-material/FormatBoldRounded"));
5
10
  const BoldButton = () => {
6
- const { toggleBold } = useCommands();
7
- const chain = useChainedCommands();
8
- const active = useActive();
11
+ const { toggleBold } = (0, react_2.useCommands)();
12
+ const chain = (0, react_2.useChainedCommands)();
13
+ const active = (0, react_2.useActive)();
9
14
  const enabled = toggleBold.enabled();
10
15
  const handleSelect = () => {
11
16
  if (toggleBold.enabled()) {
12
17
  chain.toggleBold().focus().run();
13
18
  }
14
19
  };
15
- return (React.createElement(ToolbarButton, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active.bold(), icon: React.createElement(FormatBoldRoundedIcon, null), label: "Bold (cmd+B)" }));
20
+ return (react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active.bold(), icon: react_1.default.createElement(FormatBoldRounded_1.default, null), label: "Bold (cmd+B)" }));
16
21
  };
17
- export default BoldButton;
22
+ exports.default = BoldButton;
@@ -1,17 +1,22 @@
1
- import React from 'react';
2
- import { useCommands, useActive, useChainedCommands } from '@remirror/react';
3
- import ToolbarButton from '../../../ui/ToolbarButton/ToolbarButton';
4
- import FormatItalicRoundedIcon from '@mui/icons-material/FormatItalicRounded';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const ToolbarButton_1 = __importDefault(require("../../../ui/ToolbarButton/ToolbarButton"));
9
+ const FormatItalicRounded_1 = __importDefault(require("@mui/icons-material/FormatItalicRounded"));
5
10
  const ItalicButton = () => {
6
- const { toggleItalic } = useCommands();
7
- const chain = useChainedCommands();
8
- const active = useActive();
11
+ const { toggleItalic } = (0, react_2.useCommands)();
12
+ const chain = (0, react_2.useChainedCommands)();
13
+ const active = (0, react_2.useActive)();
9
14
  const enabled = toggleItalic.enabled();
10
15
  const handleSelect = () => {
11
16
  if (toggleItalic.enabled()) {
12
17
  chain.toggleItalic().focus().run();
13
18
  }
14
19
  };
15
- return (React.createElement(ToolbarButton, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active.italic(), icon: React.createElement(FormatItalicRoundedIcon, null), label: "Italic (cmd+I)" }));
20
+ return (react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active.italic(), icon: react_1.default.createElement(FormatItalicRounded_1.default, null), label: "Italic (cmd+I)" }));
16
21
  };
17
- export default ItalicButton;
22
+ exports.default = ItalicButton;
@@ -1,23 +1,28 @@
1
- import React from 'react';
2
- import { TextInput } from '../../../../ui/Inputs/Text/TextInput';
3
- import { Select } from '../../../../ui/Inputs/Select/Select';
4
- import { useForm } from 'react-hook-form';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const TextInput_1 = require("../../../../ui/Inputs/Text/TextInput");
8
+ const Select_1 = require("../../../../ui/Inputs/Select/Select");
9
+ const react_hook_form_1 = require("react-hook-form");
5
10
  const selectOptions = {
6
11
  _self: { label: 'Current window' },
7
12
  _blank: { label: 'New window' },
8
13
  };
9
14
  const LinkForm = ({ data, onSubmit }) => {
10
- const { register, handleSubmit, setValue } = useForm({
15
+ const { register, handleSubmit, setValue } = (0, react_hook_form_1.useForm)({
11
16
  defaultValues: data,
12
17
  });
13
- return (React.createElement("form", { className: "squiz-fte-form", onSubmit: handleSubmit(onSubmit) },
14
- React.createElement("div", { className: "squiz-fte-form-group mb-2" },
15
- React.createElement(TextInput, { label: "URL", ...register('href') })),
16
- React.createElement("div", { className: "squiz-fte-form-group mb-2" },
17
- React.createElement(TextInput, { label: "Text", ...register('text') })),
18
- React.createElement("div", { className: "squiz-fte-form-group mb-2" },
19
- React.createElement(TextInput, { label: "Title", ...register('title') })),
20
- React.createElement("div", { className: "squiz-fte-form-group mb-0" },
21
- React.createElement(Select, { name: "target", label: "Target", value: data.target || '_self', options: selectOptions, onChange: (value) => setValue('target', value) }))));
18
+ return (react_1.default.createElement("form", { className: "squiz-fte-form", onSubmit: handleSubmit(onSubmit) },
19
+ react_1.default.createElement("div", { className: "squiz-fte-form-group mb-2" },
20
+ react_1.default.createElement(TextInput_1.TextInput, { label: "URL", ...register('href') })),
21
+ react_1.default.createElement("div", { className: "squiz-fte-form-group mb-2" },
22
+ react_1.default.createElement(TextInput_1.TextInput, { label: "Text", ...register('text') })),
23
+ react_1.default.createElement("div", { className: "squiz-fte-form-group mb-2" },
24
+ react_1.default.createElement(TextInput_1.TextInput, { label: "Title", ...register('title') })),
25
+ react_1.default.createElement("div", { className: "squiz-fte-form-group mb-0" },
26
+ react_1.default.createElement(Select_1.Select, { name: "target", label: "Target", value: data.target || '_self', options: selectOptions, onChange: (value) => setValue('target', value) }))));
22
27
  };
23
- export default LinkForm;
28
+ exports.default = LinkForm;
@@ -1,13 +1,41 @@
1
- import React, { useCallback, useState } from 'react';
2
- import InsertLinkRoundedIcon from '@mui/icons-material/InsertLinkRounded';
3
- import LinkModal from './LinkModal';
4
- import ToolbarButton from '../../../ui/ToolbarButton/ToolbarButton';
5
- import { useActive, useCommands, useExtensionEvent } from '@remirror/react';
6
- import { LinkExtension } from '../../../Extensions/LinkExtension/LinkExtension';
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const react_1 = __importStar(require("react"));
30
+ const InsertLinkRounded_1 = __importDefault(require("@mui/icons-material/InsertLinkRounded"));
31
+ const LinkModal_1 = __importDefault(require("./LinkModal"));
32
+ const ToolbarButton_1 = __importDefault(require("../../../ui/ToolbarButton/ToolbarButton"));
33
+ const react_2 = require("@remirror/react");
34
+ const LinkExtension_1 = require("../../../Extensions/LinkExtension/LinkExtension");
7
35
  const LinkButton = ({ inPopover = false }) => {
8
- const [showModal, setShowModal] = useState(false);
9
- const { selectLink, updateLink } = useCommands();
10
- const active = useActive();
36
+ const [showModal, setShowModal] = (0, react_1.useState)(false);
37
+ const { selectLink, updateLink } = (0, react_2.useCommands)();
38
+ const active = (0, react_2.useActive)();
11
39
  const handleClick = () => {
12
40
  if (!showModal) {
13
41
  selectLink();
@@ -25,10 +53,10 @@ const LinkButton = ({ inPopover = false }) => {
25
53
  if (!inPopover) {
26
54
  // when Ctrl+K is pressed show the modal, only registered in the toolbar button instance to avoid the key press
27
55
  // being double handled.
28
- useExtensionEvent(LinkExtension, 'onShortcut', useCallback(() => handleClick(), []));
56
+ (0, react_2.useExtensionEvent)(LinkExtension_1.LinkExtension, 'onShortcut', (0, react_1.useCallback)(() => handleClick(), []));
29
57
  }
30
- return (React.createElement(React.Fragment, null,
31
- React.createElement(ToolbarButton, { handleOnClick: handleClick, isActive: active.link(), icon: React.createElement(InsertLinkRoundedIcon, null), label: "Link (cmd+K)" }),
32
- showModal && React.createElement(LinkModal, { onCancel: () => setShowModal(false), onSubmit: handleSubmit })));
58
+ return (react_1.default.createElement(react_1.default.Fragment, null,
59
+ react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleClick, isActive: active.link(), icon: react_1.default.createElement(InsertLinkRounded_1.default, null), label: "Link (cmd+K)" }),
60
+ showModal && react_1.default.createElement(LinkModal_1.default, { onCancel: () => setShowModal(false), onSubmit: handleSubmit })));
33
61
  };
34
- export default LinkButton;
62
+ exports.default = LinkButton;
@@ -1,14 +1,19 @@
1
- import { getMarkRanges } from 'remirror';
2
- import LinkForm from './Form/LinkForm';
3
- import React from 'react';
4
- import { useRemirrorContext, useCurrentSelection } from '@remirror/react';
5
- import FormModal from '../../../ui/Modal/FormModal';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const remirror_1 = require("remirror");
7
+ const LinkForm_1 = __importDefault(require("./Form/LinkForm"));
8
+ const react_1 = __importDefault(require("react"));
9
+ const react_2 = require("@remirror/react");
10
+ const FormModal_1 = __importDefault(require("../../../ui/Modal/FormModal"));
6
11
  const LinkModal = ({ onCancel, onSubmit }) => {
7
- const { helpers, view: { state }, } = useRemirrorContext();
8
- const selection = useCurrentSelection();
9
- const currentLink = getMarkRanges(selection, 'link')[0];
12
+ const { helpers, view: { state }, } = (0, react_2.useRemirrorContext)();
13
+ const selection = (0, react_2.useCurrentSelection)();
14
+ const currentLink = (0, remirror_1.getMarkRanges)(selection, 'link')[0];
10
15
  const selectedText = helpers.getTextBetween(selection.from, selection.to, state.doc);
11
- return (React.createElement(FormModal, { title: "Link", onCancel: onCancel },
12
- React.createElement(LinkForm, { data: { ...currentLink?.mark.attrs, text: selectedText }, onSubmit: onSubmit })));
16
+ return (react_1.default.createElement(FormModal_1.default, { title: "Link", onCancel: onCancel },
17
+ react_1.default.createElement(LinkForm_1.default, { data: { ...currentLink?.mark.attrs, text: selectedText }, onSubmit: onSubmit })));
13
18
  };
14
- export default LinkModal;
19
+ exports.default = LinkModal;
@@ -1,16 +1,21 @@
1
- import React from 'react';
2
- import { useRemirrorContext, useChainedCommands } from '@remirror/react';
3
- import ToolbarButton from '../../../ui/ToolbarButton/ToolbarButton';
4
- import LinkOffIcon from '@mui/icons-material/LinkOff';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const ToolbarButton_1 = __importDefault(require("../../../ui/ToolbarButton/ToolbarButton"));
9
+ const LinkOff_1 = __importDefault(require("@mui/icons-material/LinkOff"));
5
10
  const RemoveLinkButton = () => {
6
- const { commands } = useRemirrorContext({ autoUpdate: true });
7
- const chain = useChainedCommands();
11
+ const { commands } = (0, react_2.useRemirrorContext)({ autoUpdate: true });
12
+ const chain = (0, react_2.useChainedCommands)();
8
13
  const enabled = commands.removeLink.enabled();
9
14
  const handleClick = () => {
10
15
  if (enabled) {
11
16
  chain.removeLink().focus().run();
12
17
  }
13
18
  };
14
- return (React.createElement(ToolbarButton, { handleOnClick: handleClick, isActive: false, isDisabled: !enabled, icon: React.createElement(LinkOffIcon, null), label: "Remove link" }));
19
+ return (react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleClick, isActive: false, isDisabled: !enabled, icon: react_1.default.createElement(LinkOff_1.default, null), label: "Remove link" }));
15
20
  };
16
- export default RemoveLinkButton;
21
+ exports.default = RemoveLinkButton;
@@ -1,16 +1,21 @@
1
- import React from 'react';
2
- import { useCommands, useHelpers } from '@remirror/react';
3
- import ToolbarButton from '../../../ui/ToolbarButton/ToolbarButton';
4
- import RedoRoundedIcon from '@mui/icons-material/RedoRounded';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const ToolbarButton_1 = __importDefault(require("../../../ui/ToolbarButton/ToolbarButton"));
9
+ const RedoRounded_1 = __importDefault(require("@mui/icons-material/RedoRounded"));
5
10
  const RedoButton = () => {
6
- const { redo } = useCommands();
7
- const { redoDepth } = useHelpers(true);
11
+ const { redo } = (0, react_2.useCommands)();
12
+ const { redoDepth } = (0, react_2.useHelpers)(true);
8
13
  const handleSelect = () => {
9
14
  if (redo.enabled()) {
10
15
  redo();
11
16
  }
12
17
  };
13
18
  const enabled = redoDepth() > 0;
14
- return (React.createElement(ToolbarButton, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: false, icon: React.createElement(RedoRoundedIcon, null), label: "Redo (shift+cmd+Z)" }));
19
+ return (react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: false, icon: react_1.default.createElement(RedoRounded_1.default, null), label: "Redo (shift+cmd+Z)" }));
15
20
  };
16
- export default RedoButton;
21
+ exports.default = RedoButton;
@@ -1,10 +1,15 @@
1
- import React from 'react';
2
- import { useCommands, useChainedCommands } from '@remirror/react';
3
- import ToolbarButton from '../../../../ui/ToolbarButton/ToolbarButton';
4
- import FormatAlignCenterIcon from '@mui/icons-material/FormatAlignCenter';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const ToolbarButton_1 = __importDefault(require("../../../../ui/ToolbarButton/ToolbarButton"));
9
+ const FormatAlignCenter_1 = __importDefault(require("@mui/icons-material/FormatAlignCenter"));
5
10
  const CenterAlignButton = () => {
6
- const { centerAlign } = useCommands();
7
- const chain = useChainedCommands();
11
+ const { centerAlign } = (0, react_2.useCommands)();
12
+ const chain = (0, react_2.useChainedCommands)();
8
13
  const handleSelect = () => {
9
14
  if (centerAlign.enabled()) {
10
15
  chain.centerAlign().focus().run();
@@ -12,6 +17,6 @@ const CenterAlignButton = () => {
12
17
  };
13
18
  const active = centerAlign.active?.() || false;
14
19
  const enabled = centerAlign.enabled();
15
- return (React.createElement(ToolbarButton, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active, icon: React.createElement(FormatAlignCenterIcon, null), label: "Align center" }));
20
+ return (react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active, icon: react_1.default.createElement(FormatAlignCenter_1.default, null), label: "Align center" }));
16
21
  };
17
- export default CenterAlignButton;
22
+ exports.default = CenterAlignButton;
@@ -1,10 +1,15 @@
1
- import React from 'react';
2
- import { useCommands, useChainedCommands } from '@remirror/react';
3
- import ToolbarButton from '../../../../ui/ToolbarButton/ToolbarButton';
4
- import FormatAlignJustifyIcon from '@mui/icons-material/FormatAlignJustify';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const ToolbarButton_1 = __importDefault(require("../../../../ui/ToolbarButton/ToolbarButton"));
9
+ const FormatAlignJustify_1 = __importDefault(require("@mui/icons-material/FormatAlignJustify"));
5
10
  const JustifyAlignButton = () => {
6
- const { justifyAlign } = useCommands();
7
- const chain = useChainedCommands();
11
+ const { justifyAlign } = (0, react_2.useCommands)();
12
+ const chain = (0, react_2.useChainedCommands)();
8
13
  const handleSelect = () => {
9
14
  if (justifyAlign.enabled()) {
10
15
  chain.justifyAlign().focus().run();
@@ -12,6 +17,6 @@ const JustifyAlignButton = () => {
12
17
  };
13
18
  const active = justifyAlign.active?.() || false;
14
19
  const enabled = justifyAlign.enabled();
15
- return (React.createElement(ToolbarButton, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active, icon: React.createElement(FormatAlignJustifyIcon, null), label: "Justify" }));
20
+ return (react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active, icon: react_1.default.createElement(FormatAlignJustify_1.default, null), label: "Justify" }));
16
21
  };
17
- export default JustifyAlignButton;
22
+ exports.default = JustifyAlignButton;
@@ -1,10 +1,15 @@
1
- import React from 'react';
2
- import { useCommands, useChainedCommands } from '@remirror/react';
3
- import ToolbarButton from '../../../../ui/ToolbarButton/ToolbarButton';
4
- import FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft';
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_2 = require("@remirror/react");
8
+ const ToolbarButton_1 = __importDefault(require("../../../../ui/ToolbarButton/ToolbarButton"));
9
+ const FormatAlignLeft_1 = __importDefault(require("@mui/icons-material/FormatAlignLeft"));
5
10
  const LeftAlignButton = () => {
6
- const { leftAlign } = useCommands();
7
- const chain = useChainedCommands();
11
+ const { leftAlign } = (0, react_2.useCommands)();
12
+ const chain = (0, react_2.useChainedCommands)();
8
13
  const handleSelect = () => {
9
14
  if (leftAlign.enabled()) {
10
15
  chain.leftAlign().focus().run();
@@ -12,6 +17,6 @@ const LeftAlignButton = () => {
12
17
  };
13
18
  const active = leftAlign.active?.() || false;
14
19
  const enabled = leftAlign.enabled();
15
- return (React.createElement(ToolbarButton, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active, icon: React.createElement(FormatAlignLeftIcon, null), label: "Align left" }));
20
+ return (react_1.default.createElement(ToolbarButton_1.default, { handleOnClick: handleSelect, isDisabled: !enabled, isActive: active, icon: react_1.default.createElement(FormatAlignLeft_1.default, null), label: "Align left" }));
16
21
  };
17
- export default LeftAlignButton;
22
+ exports.default = LeftAlignButton;