@squiz/formatted-text-editor 1.16.0 → 1.21.1-alpha.10
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/.eslintrc.json +7 -0
- package/README.md +10 -0
- package/demo/App.tsx +18 -4
- package/demo/index.scss +16 -10
- package/jest.config.ts +8 -9
- package/lib/Editor/Editor.js +18 -13
- package/lib/EditorToolbar/FloatingToolbar.js +50 -20
- package/lib/EditorToolbar/Toolbar.js +33 -24
- package/lib/EditorToolbar/Tools/Bold/BoldButton.js +14 -9
- package/lib/EditorToolbar/Tools/Image/Form/ImageForm.d.ts +17 -0
- package/lib/EditorToolbar/Tools/Image/Form/ImageForm.js +84 -0
- package/lib/EditorToolbar/Tools/Image/ImageButton.d.ts +2 -0
- package/lib/EditorToolbar/Tools/Image/ImageButton.js +67 -0
- package/lib/EditorToolbar/Tools/Image/ImageModal.d.ts +8 -0
- package/lib/EditorToolbar/Tools/Image/ImageModal.js +19 -0
- package/lib/EditorToolbar/Tools/Italic/ItalicButton.js +14 -9
- package/lib/EditorToolbar/Tools/Link/Form/LinkForm.js +20 -15
- package/lib/EditorToolbar/Tools/Link/LinkButton.js +42 -14
- package/lib/EditorToolbar/Tools/Link/LinkModal.js +16 -11
- package/lib/EditorToolbar/Tools/Link/RemoveLinkButton.js +13 -8
- package/lib/EditorToolbar/Tools/Redo/RedoButton.js +13 -8
- package/lib/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.js +13 -8
- package/lib/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.js +13 -8
- package/lib/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.js +13 -8
- package/lib/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.js +13 -8
- package/lib/EditorToolbar/Tools/TextAlign/TextAlignButtons.js +19 -14
- package/lib/EditorToolbar/Tools/TextType/Heading/HeadingButton.js +19 -14
- package/lib/EditorToolbar/Tools/TextType/Paragraph/ParagraphButton.js +14 -9
- package/lib/EditorToolbar/Tools/TextType/Preformatted/PreformattedButton.js +13 -8
- package/lib/EditorToolbar/Tools/TextType/TextTypeDropdown.js +24 -19
- package/lib/EditorToolbar/Tools/Underline/UnderlineButton.js +14 -9
- package/lib/EditorToolbar/Tools/Undo/UndoButton.js +13 -8
- package/lib/EditorToolbar/index.js +18 -2
- package/lib/Extensions/Extensions.d.ts +2 -4
- package/lib/Extensions/Extensions.js +19 -13
- package/lib/Extensions/ImageExtension/ImageExtension.d.ts +3 -0
- package/lib/Extensions/ImageExtension/ImageExtension.js +7 -0
- package/lib/Extensions/LinkExtension/LinkExtension.js +17 -11
- package/lib/Extensions/PreformattedExtension/PreformattedExtension.d.ts +1 -1
- package/lib/Extensions/PreformattedExtension/PreformattedExtension.js +10 -7
- package/lib/FormattedTextEditor.js +7 -2
- package/lib/hooks/index.js +17 -1
- package/lib/hooks/useExtensionNames.js +9 -5
- package/lib/index.css +133 -76
- package/lib/index.d.ts +3 -1
- package/lib/index.js +12 -2
- package/lib/ui/Button/Button.d.ts +11 -0
- package/lib/ui/Button/Button.js +14 -0
- package/lib/ui/Fields/Input/Input.d.ts +4 -0
- package/lib/ui/Fields/Input/Input.js +33 -0
- package/lib/ui/Fields/Select/Select.js +53 -0
- package/lib/ui/Modal/FormModal.js +33 -5
- package/lib/ui/Modal/Modal.js +50 -22
- package/lib/ui/ToolbarDropdown/ToolbarDropdown.js +38 -10
- package/lib/ui/ToolbarDropdownButton/ToolbarDropdownButton.js +11 -6
- package/lib/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.d.ts +10 -0
- package/lib/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.js +160 -0
- package/lib/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.d.ts +9 -0
- package/lib/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.js +105 -0
- package/lib/utils/converters/validNodeTypes.d.ts +2 -0
- package/lib/utils/converters/validNodeTypes.js +21 -0
- package/lib/utils/createToolbarPositioner.js +16 -12
- package/lib/utils/getCursorRect.js +5 -1
- package/package.json +7 -3
- package/src/Editor/_editor.scss +2 -49
- package/src/EditorToolbar/FloatingToolbar.tsx +1 -1
- package/src/EditorToolbar/Toolbar.tsx +2 -0
- package/src/EditorToolbar/Tools/Bold/BoldButton.spec.tsx +1 -1
- package/src/EditorToolbar/Tools/Bold/BoldButton.tsx +2 -2
- package/src/EditorToolbar/Tools/Image/Form/ImageForm.spec.tsx +23 -0
- package/src/EditorToolbar/Tools/Image/Form/ImageForm.tsx +92 -0
- package/src/EditorToolbar/Tools/Image/ImageButton.spec.tsx +79 -0
- package/src/EditorToolbar/Tools/Image/ImageButton.tsx +57 -0
- package/src/EditorToolbar/Tools/Image/ImageModal.spec.tsx +83 -0
- package/src/EditorToolbar/Tools/Image/ImageModal.tsx +29 -0
- package/src/EditorToolbar/Tools/Italic/ItalicButton.spec.tsx +1 -1
- package/src/EditorToolbar/Tools/Italic/ItalicButton.tsx +2 -2
- package/src/EditorToolbar/Tools/Link/Form/LinkForm.tsx +5 -5
- package/src/EditorToolbar/Tools/Link/LinkButton.tsx +2 -2
- package/src/EditorToolbar/Tools/Link/RemoveLinkButton.tsx +2 -2
- package/src/EditorToolbar/Tools/Redo/RedoButton.tsx +2 -2
- package/src/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.tsx +2 -2
- package/src/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.tsx +2 -2
- package/src/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.tsx +2 -2
- package/src/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.tsx +2 -2
- package/src/EditorToolbar/Tools/Underline/Underline.spec.tsx +1 -1
- package/src/EditorToolbar/Tools/Underline/UnderlineButton.tsx +2 -2
- package/src/EditorToolbar/Tools/Undo/UndoButton.tsx +2 -2
- package/src/EditorToolbar/_floating-toolbar.scss +6 -0
- package/src/EditorToolbar/_toolbar.scss +8 -2
- package/src/Extensions/Extensions.ts +5 -2
- package/src/Extensions/ImageExtension/ImageExtension.ts +3 -0
- package/src/Extensions/LinkExtension/LinkExtension.ts +8 -5
- package/src/index.scss +2 -2
- package/src/index.ts +3 -1
- package/src/ui/Button/Button.spec.tsx +44 -0
- package/src/ui/Button/Button.tsx +31 -0
- package/src/ui/{_buttons.scss → Button/_button.scss} +19 -1
- package/src/ui/{Inputs/Text/TextInput.spec.tsx → Fields/Input/Input.spec.tsx} +8 -8
- package/src/ui/{Inputs/Text/TextInput.tsx → Fields/Input/Input.tsx} +4 -4
- package/src/ui/Modal/Modal.tsx +1 -0
- package/src/ui/ToolbarDropdown/ToolbarDropdown.spec.tsx +4 -2
- package/src/ui/ToolbarDropdown/ToolbarDropdown.tsx +1 -1
- package/src/ui/_typography.scss +46 -0
- package/src/utils/converters/mocks/squizNodeJson.mock.ts +75 -0
- package/src/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.spec.ts +445 -0
- package/src/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.ts +191 -0
- package/src/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.spec.ts +307 -0
- package/src/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.ts +123 -0
- package/src/utils/converters/validNodeTypes.spec.ts +33 -0
- package/src/utils/converters/validNodeTypes.ts +21 -0
- package/tests/renderWithEditor.tsx +2 -2
- package/tsconfig.json +1 -1
- package/lib/ui/Inputs/Select/Select.js +0 -23
- package/lib/ui/Inputs/Text/TextInput.d.ts +0 -4
- package/lib/ui/Inputs/Text/TextInput.js +0 -7
- package/lib/ui/ToolbarButton/ToolbarButton.d.ts +0 -10
- package/lib/ui/ToolbarButton/ToolbarButton.js +0 -5
- package/src/ui/ToolbarButton/ToolbarButton.tsx +0 -26
- package/src/ui/ToolbarButton/_toolbar-button.scss +0 -17
- /package/lib/ui/{Inputs → Fields}/Select/Select.d.ts +0 -0
- /package/src/ui/{Inputs → Fields}/Select/Select.spec.tsx +0 -0
- /package/src/ui/{Inputs → Fields}/Select/Select.tsx +0 -0
@@ -1,2 +1,18 @@
|
|
1
|
-
|
2
|
-
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./FloatingToolbar"), exports);
|
18
|
+
__exportStar(require("./Toolbar"), exports);
|
@@ -1,4 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
import { LinkExtension } from './LinkExtension/LinkExtension';
|
4
|
-
export declare const Extensions: () => (BoldExtension | HistoryExtension | HeadingExtension | ItalicExtension | NodeFormattingExtension | ParagraphExtension | UnderlineExtension | LinkExtension | PreformattedExtension)[];
|
1
|
+
import { Extension } from '@remirror/core';
|
2
|
+
export declare const Extensions: () => Extension[];
|
@@ -1,16 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
new
|
10
|
-
new
|
11
|
-
new
|
12
|
-
new
|
13
|
-
new
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.Extensions = void 0;
|
4
|
+
const extensions_1 = require("remirror/extensions");
|
5
|
+
const PreformattedExtension_1 = require("./PreformattedExtension/PreformattedExtension");
|
6
|
+
const LinkExtension_1 = require("./LinkExtension/LinkExtension");
|
7
|
+
const ImageExtension_1 = require("./ImageExtension/ImageExtension");
|
8
|
+
const Extensions = () => [
|
9
|
+
new extensions_1.BoldExtension(),
|
10
|
+
new extensions_1.HeadingExtension(),
|
11
|
+
new extensions_1.ItalicExtension(),
|
12
|
+
new extensions_1.NodeFormattingExtension({ indents: [] }),
|
13
|
+
new extensions_1.ParagraphExtension(),
|
14
|
+
new PreformattedExtension_1.PreformattedExtension(),
|
15
|
+
new extensions_1.UnderlineExtension(),
|
16
|
+
new extensions_1.HistoryExtension(),
|
17
|
+
new ImageExtension_1.ImageExtension(),
|
18
|
+
new LinkExtension_1.LinkExtension({
|
14
19
|
supportedTargets: [
|
15
20
|
// '_self' is the browser default and will be used when encountering a link with a
|
16
21
|
// different target is encountered.
|
@@ -18,3 +23,4 @@ export const Extensions = () => [
|
|
18
23
|
],
|
19
24
|
}),
|
20
25
|
];
|
26
|
+
exports.Extensions = Extensions;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ImageExtension = void 0;
|
4
|
+
const extensions_1 = require("remirror/extensions");
|
5
|
+
class ImageExtension extends extensions_1.ImageExtension {
|
6
|
+
}
|
7
|
+
exports.ImageExtension = ImageExtension;
|
@@ -1,7 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.LinkExtension = void 0;
|
4
|
+
const remirror_1 = require("remirror");
|
5
|
+
const core_1 = require("@remirror/core");
|
6
|
+
const extensions_1 = require("remirror/extensions");
|
7
|
+
class LinkExtension extends extensions_1.LinkExtension {
|
5
8
|
createMarkSpec(extra, override) {
|
6
9
|
const spec = super.createMarkSpec(extra, override);
|
7
10
|
return {
|
@@ -15,7 +18,7 @@ export class LinkExtension extends RemirrorLinkExtension {
|
|
15
18
|
{
|
16
19
|
tag: 'a[href]',
|
17
20
|
getAttrs: (node) => {
|
18
|
-
if (!isElementDomNode(node)) {
|
21
|
+
if (!(0, remirror_1.isElementDomNode)(node)) {
|
19
22
|
return false;
|
20
23
|
}
|
21
24
|
return {
|
@@ -33,7 +36,7 @@ export class LinkExtension extends RemirrorLinkExtension {
|
|
33
36
|
shortcut({ tr }) {
|
34
37
|
// override parent implementation to allow a link to be inserted without requiring a text selection first.
|
35
38
|
const { from, to, $from } = tr.selection;
|
36
|
-
const mark = getMarkRange($from, this.type);
|
39
|
+
const mark = (0, core_1.getMarkRange)($from, this.type);
|
37
40
|
const selectedText = tr.doc.textBetween(from, to);
|
38
41
|
this.options.onShortcut({
|
39
42
|
activeLink: mark ? { attrs: mark.mark.attrs, from: mark.from, to: mark.to } : undefined,
|
@@ -48,7 +51,7 @@ export class LinkExtension extends RemirrorLinkExtension {
|
|
48
51
|
// the select text is widened to include the link but retains non-link selected text as well.
|
49
52
|
return (props) => {
|
50
53
|
const { tr } = props;
|
51
|
-
const ranges = getMarkRanges(tr.selection, this.type);
|
54
|
+
const ranges = (0, remirror_1.getMarkRanges)(tr.selection, this.type);
|
52
55
|
if (ranges.length === 0) {
|
53
56
|
return false;
|
54
57
|
}
|
@@ -72,20 +75,23 @@ export class LinkExtension extends RemirrorLinkExtension {
|
|
72
75
|
const selectedText = tr.doc.textBetween(range.from, range.to);
|
73
76
|
if (text !== selectedText) {
|
74
77
|
// update the text in the editor if it was updated, update the range to cover the length of the new text.
|
75
|
-
|
78
|
+
tr.insertText(text);
|
76
79
|
range.to = range.from + text.length;
|
77
80
|
}
|
78
81
|
// apply the link, or remove it if no URL was provided.
|
79
82
|
if (attrs.href.length > 0) {
|
80
|
-
|
83
|
+
tr.addMark(range.from, range.to, this.type.create(attrs));
|
81
84
|
}
|
82
85
|
else {
|
83
|
-
removeMark(
|
86
|
+
tr.removeMark(range.from, range.to, this.type);
|
84
87
|
}
|
85
88
|
// move the cursor to the end of the link and re-focus the editor.
|
86
|
-
|
89
|
+
tr.setSelection((0, core_1.getTextSelection)({ from: range.to, to: range.to }, tr.doc));
|
90
|
+
// apply the transaction.
|
91
|
+
dispatch?.(tr);
|
87
92
|
view?.focus();
|
88
93
|
return true;
|
89
94
|
};
|
90
95
|
}
|
91
96
|
}
|
97
|
+
exports.LinkExtension = LinkExtension;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { ApplySchemaAttributes, CommandFunction, NodeExtension, NodeExtensionSpec, NodeSpecOverride } from '@remirror/core';
|
2
2
|
export declare class PreformattedExtension extends NodeExtension {
|
3
3
|
get name(): "preformatted";
|
4
|
-
createTags(): ("
|
4
|
+
createTags(): ("block" | "formattingNode" | "textBlock")[];
|
5
5
|
createNodeSpec(extra: ApplySchemaAttributes, override: NodeSpecOverride): NodeExtensionSpec;
|
6
6
|
/**
|
7
7
|
* Toggle the <pre> for the current block.
|
@@ -1,16 +1,19 @@
|
|
1
|
+
"use strict";
|
1
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
7
|
};
|
7
|
-
|
8
|
-
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.PreformattedExtension = void 0;
|
10
|
+
const core_1 = require("@remirror/core");
|
11
|
+
let PreformattedExtension = class PreformattedExtension extends core_1.NodeExtension {
|
9
12
|
get name() {
|
10
13
|
return 'preformatted';
|
11
14
|
}
|
12
15
|
createTags() {
|
13
|
-
return [ExtensionTag.Block, ExtensionTag.TextBlock, ExtensionTag.FormattingNode];
|
16
|
+
return [core_1.ExtensionTag.Block, core_1.ExtensionTag.TextBlock, core_1.ExtensionTag.FormattingNode];
|
14
17
|
}
|
15
18
|
createNodeSpec(extra, override) {
|
16
19
|
return {
|
@@ -31,16 +34,16 @@ let PreformattedExtension = class PreformattedExtension extends NodeExtension {
|
|
31
34
|
* Toggle the <pre> for the current block.
|
32
35
|
*/
|
33
36
|
togglePreformatted() {
|
34
|
-
return toggleBlockItem({
|
37
|
+
return (0, core_1.toggleBlockItem)({
|
35
38
|
type: this.type,
|
36
39
|
toggleType: 'paragraph',
|
37
40
|
});
|
38
41
|
}
|
39
42
|
};
|
40
43
|
__decorate([
|
41
|
-
command()
|
44
|
+
(0, core_1.command)()
|
42
45
|
], PreformattedExtension.prototype, "togglePreformatted", null);
|
43
46
|
PreformattedExtension = __decorate([
|
44
|
-
extension({})
|
47
|
+
(0, core_1.extension)({})
|
45
48
|
], PreformattedExtension);
|
46
|
-
|
49
|
+
exports.PreformattedExtension = PreformattedExtension;
|
@@ -1,2 +1,7 @@
|
|
1
|
-
|
2
|
-
|
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 Editor_1 = __importDefault(require("./Editor/Editor"));
|
7
|
+
exports.default = Editor_1.default;
|
package/lib/hooks/index.js
CHANGED
@@ -1 +1,17 @@
|
|
1
|
-
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./useExtensionNames"), exports);
|
@@ -1,8 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.useExtensionNames = void 0;
|
4
|
+
const react_1 = require("@remirror/react");
|
5
|
+
const react_2 = require("react");
|
6
|
+
const useExtensionNames = () => {
|
7
|
+
const { manager } = (0, react_1.useRemirrorContext)();
|
8
|
+
return (0, react_2.useMemo)(() => {
|
6
9
|
const extensionNames = {};
|
7
10
|
manager.extensions.forEach((extension) => {
|
8
11
|
extensionNames[extension.name] = true;
|
@@ -10,3 +13,4 @@ export const useExtensionNames = () => {
|
|
10
13
|
return extensionNames;
|
11
14
|
}, [manager]);
|
12
15
|
};
|
16
|
+
exports.useExtensionNames = useExtensionNames;
|
package/lib/index.css
CHANGED
@@ -376,6 +376,10 @@
|
|
376
376
|
.squiz-fte-scope .z-40 {
|
377
377
|
z-index: 40 !important;
|
378
378
|
}
|
379
|
+
.squiz-fte-scope .mx-1 {
|
380
|
+
margin-left: 0.25rem !important;
|
381
|
+
margin-right: 0.25rem !important;
|
382
|
+
}
|
379
383
|
.squiz-fte-scope .mx-auto {
|
380
384
|
margin-left: auto !important;
|
381
385
|
margin-right: auto !important;
|
@@ -437,6 +441,12 @@
|
|
437
441
|
-moz-user-select: none !important;
|
438
442
|
user-select: none !important;
|
439
443
|
}
|
444
|
+
.squiz-fte-scope .flex-row {
|
445
|
+
flex-direction: row !important;
|
446
|
+
}
|
447
|
+
.squiz-fte-scope .items-end {
|
448
|
+
align-items: flex-end !important;
|
449
|
+
}
|
440
450
|
.squiz-fte-scope .items-center {
|
441
451
|
align-items: center !important;
|
442
452
|
}
|
@@ -566,6 +576,50 @@
|
|
566
576
|
--tw-blur: blur(8px) !important;
|
567
577
|
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
|
568
578
|
}
|
579
|
+
.squiz-fte-scope .filter {
|
580
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
|
581
|
+
}
|
582
|
+
.squiz-fte-scope a {
|
583
|
+
--tw-text-opacity: 1;
|
584
|
+
color: rgb(7 116 210 / var(--tw-text-opacity));
|
585
|
+
text-decoration: underline;
|
586
|
+
}
|
587
|
+
.squiz-fte-scope h1 {
|
588
|
+
font-size: 1.625rem;
|
589
|
+
font-weight: 600;
|
590
|
+
letter-spacing: -0.2px;
|
591
|
+
line-height: 2rem;
|
592
|
+
}
|
593
|
+
.squiz-fte-scope h2 {
|
594
|
+
font-size: 1.25rem;
|
595
|
+
font-weight: 600;
|
596
|
+
letter-spacing: -0.5px;
|
597
|
+
line-height: 1.5rem;
|
598
|
+
}
|
599
|
+
.squiz-fte-scope h3 {
|
600
|
+
font-size: 1.125rem;
|
601
|
+
font-weight: 600;
|
602
|
+
letter-spacing: -0.2px;
|
603
|
+
line-height: 1.375rem;
|
604
|
+
}
|
605
|
+
.squiz-fte-scope h4 {
|
606
|
+
font-size: 1rem;
|
607
|
+
font-weight: 700;
|
608
|
+
letter-spacing: -0.2px;
|
609
|
+
line-height: 1.25rem;
|
610
|
+
}
|
611
|
+
.squiz-fte-scope h5 {
|
612
|
+
font-size: 1rem;
|
613
|
+
font-weight: 600;
|
614
|
+
letter-spacing: -0.2px;
|
615
|
+
line-height: 1.25rem;
|
616
|
+
}
|
617
|
+
.squiz-fte-scope h6 {
|
618
|
+
font-size: 0.875rem;
|
619
|
+
font-weight: 600;
|
620
|
+
letter-spacing: -0.2px;
|
621
|
+
line-height: 1.25rem;
|
622
|
+
}
|
569
623
|
.squiz-fte-scope .squiz-fte-form-group {
|
570
624
|
display: flex;
|
571
625
|
flex-direction: column;
|
@@ -611,29 +665,6 @@
|
|
611
665
|
.squiz-fte-scope .squiz-fte-form-control:active {
|
612
666
|
box-shadow: none;
|
613
667
|
}
|
614
|
-
.squiz-fte-scope .squiz-fte-btn {
|
615
|
-
border-radius: 4px;
|
616
|
-
font-weight: 400;
|
617
|
-
transition-property: all;
|
618
|
-
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
619
|
-
transition-duration: 150ms;
|
620
|
-
transition-timing-function: linear;
|
621
|
-
display: flex;
|
622
|
-
align-items: center;
|
623
|
-
text-align: center;
|
624
|
-
white-space: nowrap;
|
625
|
-
vertical-align: middle;
|
626
|
-
touch-action: manipulation;
|
627
|
-
cursor: pointer;
|
628
|
-
background-image: none;
|
629
|
-
border: 1px solid transparent;
|
630
|
-
padding: 6px 12px;
|
631
|
-
}
|
632
|
-
.squiz-fte-scope .squiz-fte-btn.disabled,
|
633
|
-
.squiz-fte-scope .squiz-fte-btn[disabled] {
|
634
|
-
cursor: not-allowed;
|
635
|
-
opacity: 0.5;
|
636
|
-
}
|
637
668
|
.squiz-fte-scope .formatted-text-editor {
|
638
669
|
font-family: "Open Sans" !important;
|
639
670
|
}
|
@@ -649,7 +680,7 @@
|
|
649
680
|
.squiz-fte-scope .formatted-text-editor .remirror-editor-wrapper {
|
650
681
|
padding-top: 0px;
|
651
682
|
--tw-text-opacity: 1;
|
652
|
-
color: rgb(
|
683
|
+
color: rgb(61 61 61 / var(--tw-text-opacity));
|
653
684
|
}
|
654
685
|
.squiz-fte-scope .formatted-text-editor .remirror-editor {
|
655
686
|
border-bottom-right-radius: 4px;
|
@@ -663,7 +694,7 @@
|
|
663
694
|
var(--tw-ring-offset-shadow, 0 0 #0000),
|
664
695
|
var(--tw-ring-shadow, 0 0 #0000),
|
665
696
|
var(--tw-shadow);
|
666
|
-
|
697
|
+
overflow: auto;
|
667
698
|
}
|
668
699
|
.squiz-fte-scope .formatted-text-editor .remirror-editor:active,
|
669
700
|
.squiz-fte-scope .formatted-text-editor .remirror-editor:focus {
|
@@ -681,48 +712,7 @@
|
|
681
712
|
--tw-text-opacity: 1;
|
682
713
|
color: rgb(148 148 148 / var(--tw-text-opacity));
|
683
714
|
}
|
684
|
-
.squiz-fte-scope
|
685
|
-
--tw-text-opacity: 1;
|
686
|
-
color: rgb(7 116 210 / var(--tw-text-opacity));
|
687
|
-
text-decoration: underline;
|
688
|
-
}
|
689
|
-
.squiz-fte-scope .remirror-theme h1 {
|
690
|
-
font-size: 1.625rem;
|
691
|
-
font-weight: 600;
|
692
|
-
letter-spacing: -0.2px;
|
693
|
-
line-height: 2rem;
|
694
|
-
}
|
695
|
-
.squiz-fte-scope .remirror-theme h2 {
|
696
|
-
font-size: 1.25rem;
|
697
|
-
font-weight: 600;
|
698
|
-
letter-spacing: -0.5px;
|
699
|
-
line-height: 1.5rem;
|
700
|
-
}
|
701
|
-
.squiz-fte-scope .remirror-theme h3 {
|
702
|
-
font-size: 1.125rem;
|
703
|
-
font-weight: 600;
|
704
|
-
letter-spacing: -0.2px;
|
705
|
-
line-height: 1.375rem;
|
706
|
-
}
|
707
|
-
.squiz-fte-scope .remirror-theme h4 {
|
708
|
-
font-size: 1rem;
|
709
|
-
font-weight: 700;
|
710
|
-
letter-spacing: -0.2px;
|
711
|
-
line-height: 1.25rem;
|
712
|
-
}
|
713
|
-
.squiz-fte-scope .remirror-theme h5 {
|
714
|
-
font-size: 1rem;
|
715
|
-
font-weight: 600;
|
716
|
-
letter-spacing: -0.2px;
|
717
|
-
line-height: 1.25rem;
|
718
|
-
}
|
719
|
-
.squiz-fte-scope .remirror-theme h6 {
|
720
|
-
font-size: 0.875rem;
|
721
|
-
font-weight: 600;
|
722
|
-
letter-spacing: -0.2px;
|
723
|
-
line-height: 1.25rem;
|
724
|
-
}
|
725
|
-
.squiz-fte-scope .formatted-text-editor .editor-toolbar {
|
715
|
+
.squiz-fte-scope .editor-toolbar {
|
726
716
|
border-bottom-width: 2px;
|
727
717
|
border-style: solid;
|
728
718
|
--tw-border-opacity: 1;
|
@@ -733,10 +723,10 @@
|
|
733
723
|
display: flex;
|
734
724
|
justify-items: center;
|
735
725
|
}
|
736
|
-
.squiz-fte-scope .
|
726
|
+
.squiz-fte-scope .editor-toolbar > *:not(:first-child, .editor-divider) {
|
737
727
|
margin: 0 0 0 2px;
|
738
728
|
}
|
739
|
-
.squiz-fte-scope .
|
729
|
+
.squiz-fte-scope .editor-toolbar .editor-divider {
|
740
730
|
margin-top: -0.25rem;
|
741
731
|
margin-bottom: -0.25rem;
|
742
732
|
margin-left: 0.25rem;
|
@@ -745,6 +735,12 @@
|
|
745
735
|
margin-right: 2px;
|
746
736
|
height: auto;
|
747
737
|
}
|
738
|
+
.squiz-fte-scope .editor-toolbar .squiz-fte-btn {
|
739
|
+
padding: 0.25rem;
|
740
|
+
}
|
741
|
+
.squiz-fte-scope .editor-toolbar .squiz-fte-btn ~ .squiz-fte-btn {
|
742
|
+
margin-left: 2px;
|
743
|
+
}
|
748
744
|
.squiz-fte-scope__floating-popover {
|
749
745
|
display: flex;
|
750
746
|
border-radius: 6px;
|
@@ -761,22 +757,51 @@
|
|
761
757
|
var(--tw-ring-shadow, 0 0 #0000),
|
762
758
|
var(--tw-shadow);
|
763
759
|
}
|
764
|
-
.squiz-fte-scope .
|
760
|
+
.squiz-fte-scope .squiz-fte-scope__floating-popover .squiz-fte-btn {
|
761
|
+
padding: 0.25rem;
|
762
|
+
}
|
763
|
+
.squiz-fte-scope .squiz-fte-scope__floating-popover .squiz-fte-btn ~ .squiz-fte-btn {
|
764
|
+
margin-left: 2px;
|
765
|
+
}
|
766
|
+
.squiz-fte-scope .squiz-fte-btn {
|
767
|
+
border-radius: 4px;
|
765
768
|
--tw-bg-opacity: 1;
|
766
769
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
767
|
-
|
770
|
+
font-weight: 400;
|
768
771
|
--tw-text-opacity: 1;
|
769
772
|
color: rgb(112 112 112 / var(--tw-text-opacity));
|
773
|
+
transition-property: all;
|
774
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
775
|
+
transition-duration: 150ms;
|
776
|
+
transition-timing-function: linear;
|
777
|
+
display: flex;
|
778
|
+
align-items: center;
|
779
|
+
text-align: center;
|
780
|
+
white-space: nowrap;
|
781
|
+
vertical-align: middle;
|
782
|
+
touch-action: manipulation;
|
783
|
+
cursor: pointer;
|
784
|
+
background-image: none;
|
785
|
+
border: 1px solid transparent;
|
786
|
+
padding: 6px 12px;
|
787
|
+
}
|
788
|
+
.squiz-fte-scope .squiz-fte-btn--is-icon {
|
789
|
+
padding: 6px;
|
770
790
|
}
|
771
|
-
.squiz-fte-scope .
|
791
|
+
.squiz-fte-scope .squiz-fte-btn ~ .squiz-fte-btn {
|
772
792
|
margin-left: 2px;
|
773
793
|
}
|
774
|
-
.squiz-fte-scope .
|
775
|
-
.squiz-fte-scope .
|
794
|
+
.squiz-fte-scope .squiz-fte-btn.disabled,
|
795
|
+
.squiz-fte-scope .squiz-fte-btn[disabled] {
|
796
|
+
cursor: not-allowed;
|
797
|
+
opacity: 0.5;
|
798
|
+
}
|
799
|
+
.squiz-fte-scope .squiz-fte-btn:hover,
|
800
|
+
.squiz-fte-scope .squiz-fte-btn:focus {
|
776
801
|
background-color: rgba(0, 0, 0, 0.04);
|
777
802
|
}
|
778
|
-
.squiz-fte-scope .
|
779
|
-
.squiz-fte-scope .
|
803
|
+
.squiz-fte-scope .squiz-fte-btn--is-active,
|
804
|
+
.squiz-fte-scope .squiz-fte-btn:active {
|
780
805
|
--tw-bg-opacity: 1;
|
781
806
|
background-color: rgb(230 241 250 / var(--tw-bg-opacity));
|
782
807
|
--tw-text-opacity: 1;
|
@@ -899,8 +924,27 @@
|
|
899
924
|
}
|
900
925
|
.squiz-fte-scope .squiz-fte-modal-footer__button {
|
901
926
|
font-size: 0.875rem;
|
927
|
+
font-weight: 700;
|
928
|
+
}
|
929
|
+
.squiz-fte-scope .editor-toolbar .squiz-fte-modal-footer__button {
|
930
|
+
padding: 0.25rem;
|
931
|
+
}
|
932
|
+
.squiz-fte-scope .editor-toolbar .squiz-fte-modal-footer__button ~ .squiz-fte-btn {
|
933
|
+
margin-left: 2px;
|
934
|
+
}
|
935
|
+
.squiz-fte-scope .squiz-fte-scope__floating-popover .squiz-fte-modal-footer__button {
|
936
|
+
padding: 0.25rem;
|
937
|
+
}
|
938
|
+
.squiz-fte-scope .squiz-fte-scope__floating-popover .squiz-fte-modal-footer__button ~ .squiz-fte-btn {
|
939
|
+
margin-left: 2px;
|
940
|
+
}
|
941
|
+
.squiz-fte-scope .squiz-fte-modal-footer__button {
|
902
942
|
border-radius: 4px;
|
943
|
+
--tw-bg-opacity: 1;
|
944
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
903
945
|
font-weight: 400;
|
946
|
+
--tw-text-opacity: 1;
|
947
|
+
color: rgb(112 112 112 / var(--tw-text-opacity));
|
904
948
|
transition-property: all;
|
905
949
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
906
950
|
transition-duration: 150ms;
|
@@ -916,11 +960,24 @@
|
|
916
960
|
border: 1px solid transparent;
|
917
961
|
padding: 6px 12px;
|
918
962
|
}
|
963
|
+
.squiz-fte-scope .squiz-fte-modal-footer__button ~ .squiz-fte-btn {
|
964
|
+
margin-left: 2px;
|
965
|
+
}
|
919
966
|
.squiz-fte-scope .squiz-fte-modal-footer__button.disabled,
|
920
967
|
.squiz-fte-scope .squiz-fte-modal-footer__button[disabled] {
|
921
968
|
cursor: not-allowed;
|
922
969
|
opacity: 0.5;
|
923
970
|
}
|
971
|
+
.squiz-fte-scope .squiz-fte-modal-footer__button:hover,
|
972
|
+
.squiz-fte-scope .squiz-fte-modal-footer__button:focus {
|
973
|
+
background-color: rgba(0, 0, 0, 0.04);
|
974
|
+
}
|
975
|
+
.squiz-fte-scope .squiz-fte-modal-footer__button:active {
|
976
|
+
--tw-bg-opacity: 1;
|
977
|
+
background-color: rgb(230 241 250 / var(--tw-bg-opacity));
|
978
|
+
--tw-text-opacity: 1;
|
979
|
+
color: rgb(7 116 210 / var(--tw-text-opacity));
|
980
|
+
}
|
924
981
|
.squiz-fte-scope .hover\:bg-blue-400:hover {
|
925
982
|
--tw-bg-opacity: 1 !important;
|
926
983
|
background-color: rgb(4 73 133 / var(--tw-bg-opacity)) !important;
|
package/lib/index.d.ts
CHANGED
@@ -1,2 +1,4 @@
|
|
1
1
|
import FormattedTextEditor from './FormattedTextEditor';
|
2
|
-
|
2
|
+
import { remirrorNodeToSquizNode } from './utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode';
|
3
|
+
import { squizNodeToRemirrorNode } from './utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode';
|
4
|
+
export { FormattedTextEditor, remirrorNodeToSquizNode, squizNodeToRemirrorNode };
|
package/lib/index.js
CHANGED
@@ -1,2 +1,12 @@
|
|
1
|
-
|
2
|
-
|
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
|
+
exports.squizNodeToRemirrorNode = exports.remirrorNodeToSquizNode = exports.FormattedTextEditor = void 0;
|
7
|
+
const FormattedTextEditor_1 = __importDefault(require("./FormattedTextEditor"));
|
8
|
+
exports.FormattedTextEditor = FormattedTextEditor_1.default;
|
9
|
+
const remirrorNodeToSquizNode_1 = require("./utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode");
|
10
|
+
Object.defineProperty(exports, "remirrorNodeToSquizNode", { enumerable: true, get: function () { return remirrorNodeToSquizNode_1.remirrorNodeToSquizNode; } });
|
11
|
+
const squizNodeToRemirrorNode_1 = require("./utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode");
|
12
|
+
Object.defineProperty(exports, "squizNodeToRemirrorNode", { enumerable: true, get: function () { return squizNodeToRemirrorNode_1.squizNodeToRemirrorNode; } });
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { ReactElement } from 'react';
|
2
|
+
type ButtonProps = {
|
3
|
+
handleOnClick: () => void;
|
4
|
+
isDisabled?: boolean;
|
5
|
+
isActive: boolean;
|
6
|
+
label: string;
|
7
|
+
text?: string;
|
8
|
+
icon?: ReactElement;
|
9
|
+
};
|
10
|
+
declare const Button: ({ handleOnClick, isDisabled, isActive, label, text, icon }: ButtonProps) => JSX.Element;
|
11
|
+
export default Button;
|
@@ -0,0 +1,14 @@
|
|
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 clsx_1 = __importDefault(require("clsx"));
|
8
|
+
const Button = ({ handleOnClick, isDisabled, isActive, label, text, icon }) => {
|
9
|
+
return (react_1.default.createElement("button", { "aria-label": label, title: label, type: "button", onClick: handleOnClick, disabled: isDisabled, className: (0, clsx_1.default)('squiz-fte-btn', isActive && 'squiz-fte-btn--is-active', icon && ' squiz-fte-btn--is-icon') },
|
10
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
11
|
+
text && react_1.default.createElement("span", null, text),
|
12
|
+
icon && icon)));
|
13
|
+
};
|
14
|
+
exports.default = Button;
|
@@ -0,0 +1,33 @@
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
+
exports.Input = void 0;
|
27
|
+
const react_1 = __importStar(require("react"));
|
28
|
+
const InputInternal = ({ name, label, type = 'text', ...rest }, ref) => {
|
29
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
30
|
+
label && (react_1.default.createElement("label", { htmlFor: name, className: "squiz-fte-form-label" }, label)),
|
31
|
+
react_1.default.createElement("input", { ref: ref, id: name, name: name, type: type, className: "squiz-fte-form-control", ...rest })));
|
32
|
+
};
|
33
|
+
exports.Input = (0, react_1.forwardRef)(InputInternal);
|