@squiz/formatted-text-editor 2.3.0 → 2.4.0
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/CHANGELOG.md +6 -0
- package/lib/Editor/Editor.d.ts +16 -0
- package/lib/Editor/Editor.js +85 -0
- package/lib/Editor/EditorContext.d.ts +10 -0
- package/lib/Editor/EditorContext.js +16 -0
- package/lib/EditorToolbar/FloatingToolbar.d.ts +2 -0
- package/lib/EditorToolbar/FloatingToolbar.js +76 -0
- package/lib/EditorToolbar/Toolbar.d.ts +7 -0
- package/lib/EditorToolbar/Toolbar.js +49 -0
- package/lib/EditorToolbar/Tools/Bold/BoldButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Bold/BoldButton.js +23 -0
- package/lib/EditorToolbar/Tools/ClearFormatting/ClearFormattingButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/ClearFormatting/ClearFormattingButton.js +57 -0
- package/lib/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.d.ts +3 -0
- package/lib/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.js +104 -0
- package/lib/EditorToolbar/Tools/HorizontalLine/HorizontalLineButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/HorizontalLine/HorizontalLineButton.js +25 -0
- package/lib/EditorToolbar/Tools/Image/Form/ImageForm.d.ts +19 -0
- package/lib/EditorToolbar/Tools/Image/Form/ImageForm.js +186 -0
- package/lib/EditorToolbar/Tools/Image/ImageButton.d.ts +6 -0
- package/lib/EditorToolbar/Tools/Image/ImageButton.js +79 -0
- package/lib/EditorToolbar/Tools/Image/ImageModal.d.ts +9 -0
- package/lib/EditorToolbar/Tools/Image/ImageModal.js +26 -0
- package/lib/EditorToolbar/Tools/Italic/ItalicButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Italic/ItalicButton.js +23 -0
- package/lib/EditorToolbar/Tools/Link/Form/LinkForm.d.ts +19 -0
- package/lib/EditorToolbar/Tools/Link/Form/LinkForm.js +63 -0
- package/lib/EditorToolbar/Tools/Link/LinkButton.d.ts +6 -0
- package/lib/EditorToolbar/Tools/Link/LinkButton.js +71 -0
- package/lib/EditorToolbar/Tools/Link/LinkModal.d.ts +9 -0
- package/lib/EditorToolbar/Tools/Link/LinkModal.js +27 -0
- package/lib/EditorToolbar/Tools/Link/RemoveLinkButton.d.ts +4 -0
- package/lib/EditorToolbar/Tools/Link/RemoveLinkButton.js +54 -0
- package/lib/EditorToolbar/Tools/Lists/ListButtons.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Lists/ListButtons.js +14 -0
- package/lib/EditorToolbar/Tools/Lists/OrderedList/OrderedListButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Lists/OrderedList/OrderedListButton.js +22 -0
- package/lib/EditorToolbar/Tools/Lists/UnorderedList/UnorderedListButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Lists/UnorderedList/UnorderedListButton.js +22 -0
- package/lib/EditorToolbar/Tools/Redo/RedoButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Redo/RedoButton.js +22 -0
- package/lib/EditorToolbar/Tools/Table/TableButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Table/TableButton.js +20 -0
- package/lib/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.js +22 -0
- package/lib/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.js +22 -0
- package/lib/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.js +22 -0
- package/lib/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.js +22 -0
- package/lib/EditorToolbar/Tools/TextAlign/TextAlignButtons.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextAlign/TextAlignButtons.js +21 -0
- package/lib/EditorToolbar/Tools/TextType/CodeBlock/CodeBlockButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextType/CodeBlock/CodeBlockButton.js +22 -0
- package/lib/EditorToolbar/Tools/TextType/Heading/HeadingButton.d.ts +6 -0
- package/lib/EditorToolbar/Tools/TextType/Heading/HeadingButton.js +37 -0
- package/lib/EditorToolbar/Tools/TextType/Paragraph/ParagraphButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextType/Paragraph/ParagraphButton.js +21 -0
- package/lib/EditorToolbar/Tools/TextType/Preformatted/PreformattedButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextType/Preformatted/PreformattedButton.js +22 -0
- package/lib/EditorToolbar/Tools/TextType/TextTypeDropdown.d.ts +3 -0
- package/lib/EditorToolbar/Tools/TextType/TextTypeDropdown.js +46 -0
- package/lib/EditorToolbar/Tools/Underline/UnderlineButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Underline/UnderlineButton.js +23 -0
- package/lib/EditorToolbar/Tools/Undo/UndoButton.d.ts +3 -0
- package/lib/EditorToolbar/Tools/Undo/UndoButton.js +22 -0
- package/lib/EditorToolbar/index.d.ts +2 -0
- package/lib/EditorToolbar/index.js +18 -0
- package/lib/Extensions/ClearFormattingExtension/ClearFormattingExtension.d.ts +5 -0
- package/lib/Extensions/ClearFormattingExtension/ClearFormattingExtension.js +63 -0
- package/lib/Extensions/CodeBlockExtension/CodeBlockExtension.d.ts +5 -0
- package/lib/Extensions/CodeBlockExtension/CodeBlockExtension.js +30 -0
- package/lib/Extensions/CommandsExtension/CommandsExtension.d.ts +20 -0
- package/lib/Extensions/CommandsExtension/CommandsExtension.js +52 -0
- package/lib/Extensions/Extensions.d.ts +18 -0
- package/lib/Extensions/Extensions.js +76 -0
- package/lib/Extensions/FetchUrlExtension/FetchUrlExtension.d.ts +12 -0
- package/lib/Extensions/FetchUrlExtension/FetchUrlExtension.js +69 -0
- package/lib/Extensions/ImageExtension/AssetImageExtension.d.ts +17 -0
- package/lib/Extensions/ImageExtension/AssetImageExtension.js +91 -0
- package/lib/Extensions/ImageExtension/DAMImageExtension.d.ts +17 -0
- package/lib/Extensions/ImageExtension/DAMImageExtension.js +97 -0
- package/lib/Extensions/ImageExtension/ImageExtension.d.ts +7 -0
- package/lib/Extensions/ImageExtension/ImageExtension.js +18 -0
- package/lib/Extensions/LinkExtension/AssetLinkExtension.d.ts +27 -0
- package/lib/Extensions/LinkExtension/AssetLinkExtension.js +101 -0
- package/lib/Extensions/LinkExtension/LinkExtension.d.ts +23 -0
- package/lib/Extensions/LinkExtension/LinkExtension.js +87 -0
- package/lib/Extensions/LinkExtension/common.d.ts +7 -0
- package/lib/Extensions/LinkExtension/common.js +14 -0
- package/lib/Extensions/PreformattedExtension/PreformattedExtension.d.ts +12 -0
- package/lib/Extensions/PreformattedExtension/PreformattedExtension.js +76 -0
- package/lib/Extensions/UnsuportedExtension/UnsupportedNodeExtension.d.ts +10 -0
- package/lib/Extensions/UnsuportedExtension/UnsupportedNodeExtension.js +76 -0
- package/lib/Icons/AiIcon.d.ts +2 -0
- package/lib/Icons/AiIcon.js +60 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/index.js +18 -0
- package/lib/hooks/useExpandedSelection.d.ts +23 -0
- package/lib/hooks/useExpandedSelection.js +37 -0
- package/lib/hooks/useExtensionNames.d.ts +1 -0
- package/lib/hooks/useExtensionNames.js +16 -0
- package/lib/hooks/useFocus.d.ts +8 -0
- package/lib/hooks/useFocus.js +43 -0
- package/lib/index.css +5889 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.js +16 -0
- package/lib/types.d.ts +7 -0
- package/lib/types.js +2 -0
- package/lib/ui/Button/Button.d.ts +12 -0
- package/lib/ui/Button/Button.js +13 -0
- package/lib/ui/CollapseBox/CollapseBox.d.ts +7 -0
- package/lib/ui/CollapseBox/CollapseBox.js +48 -0
- package/lib/ui/Fields/Checkbox/Checkbox.d.ts +9 -0
- package/lib/ui/Fields/Checkbox/Checkbox.js +47 -0
- package/lib/ui/Fields/Input/Input.d.ts +3 -0
- package/lib/ui/Fields/Input/Input.js +33 -0
- package/lib/ui/Fields/InputContainer/InputContainer.d.ts +9 -0
- package/lib/ui/Fields/InputContainer/InputContainer.js +16 -0
- package/lib/ui/Fields/MatrixAsset/MatrixAsset.d.ts +19 -0
- package/lib/ui/Fields/MatrixAsset/MatrixAsset.js +30 -0
- package/lib/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.d.ts +28 -0
- package/lib/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.js +88 -0
- package/lib/ui/Modal/FormModal.d.ts +5 -0
- package/lib/ui/Modal/FormModal.js +39 -0
- package/lib/ui/Modal/Modal.d.ts +11 -0
- package/lib/ui/Modal/Modal.js +79 -0
- package/lib/ui/Tabs/Tabs.d.ts +11 -0
- package/lib/ui/Tabs/Tabs.js +46 -0
- package/lib/ui/ToolbarDropdown/ToolbarDropdown.d.ts +7 -0
- package/lib/ui/ToolbarDropdown/ToolbarDropdown.js +48 -0
- package/lib/ui/ToolbarDropdownButton/ToolbarDropdownButton.d.ts +11 -0
- package/lib/ui/ToolbarDropdownButton/ToolbarDropdownButton.js +15 -0
- package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.d.ts +5 -0
- package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.js +23 -0
- package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.props.d.ts +3 -0
- package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.props.js +2 -0
- package/lib/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.d.ts +11 -0
- package/lib/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.js +238 -0
- package/lib/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.d.ts +9 -0
- package/lib/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.js +214 -0
- package/lib/utils/createToolbarPositioner.d.ts +18 -0
- package/lib/utils/createToolbarPositioner.js +96 -0
- package/lib/utils/getCursorRect.d.ts +2 -0
- package/lib/utils/getCursorRect.js +7 -0
- package/lib/utils/getMarkNamesByGroup.d.ts +2 -0
- package/lib/utils/getMarkNamesByGroup.js +9 -0
- package/lib/utils/getNodeNamesByGroup.d.ts +2 -0
- package/lib/utils/getNodeNamesByGroup.js +9 -0
- package/lib/utils/getShortcutSymbol.d.ts +1 -0
- package/lib/utils/getShortcutSymbol.js +8 -0
- package/lib/utils/undefinedIfEmpty.d.ts +1 -0
- package/lib/utils/undefinedIfEmpty.js +7 -0
- package/lib/utils/validation.d.ts +3 -0
- package/lib/utils/validation.js +16 -0
- package/package.json +1 -1
@@ -0,0 +1,87 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
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;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.LinkExtension = void 0;
|
10
|
+
const remirror_1 = require("remirror");
|
11
|
+
const core_1 = require("@remirror/core");
|
12
|
+
const common_1 = require("./common");
|
13
|
+
const CommandsExtension_1 = require("../CommandsExtension/CommandsExtension");
|
14
|
+
const Extensions_1 = require("../Extensions");
|
15
|
+
let LinkExtension = class LinkExtension extends core_1.MarkExtension {
|
16
|
+
get name() {
|
17
|
+
return Extensions_1.MarkName.Link;
|
18
|
+
}
|
19
|
+
createMarkSpec(extra, override) {
|
20
|
+
return {
|
21
|
+
inclusive: false,
|
22
|
+
excludes: [this.name, Extensions_1.MarkName.AssetLink].join(' '),
|
23
|
+
...override,
|
24
|
+
attrs: {
|
25
|
+
...extra.defaults(),
|
26
|
+
href: {},
|
27
|
+
title: { default: undefined },
|
28
|
+
target: { default: this.options.defaultTarget },
|
29
|
+
},
|
30
|
+
parseDOM: [
|
31
|
+
{
|
32
|
+
tag: 'a[href]',
|
33
|
+
getAttrs: (node) => {
|
34
|
+
if (!(0, remirror_1.isElementDomNode)(node)) {
|
35
|
+
return false;
|
36
|
+
}
|
37
|
+
return {
|
38
|
+
...extra.parse(node),
|
39
|
+
href: node.getAttribute('href'),
|
40
|
+
title: node.getAttribute('title'),
|
41
|
+
target: (0, common_1.validateTarget)(node.getAttribute('target'), this.options.supportedTargets, this.options.defaultTarget),
|
42
|
+
};
|
43
|
+
},
|
44
|
+
},
|
45
|
+
],
|
46
|
+
toDOM: (node) => {
|
47
|
+
const { target, ...rest } = (0, core_1.omitExtraAttributes)(node.attrs, extra);
|
48
|
+
const rel = 'noopener noreferrer nofollow';
|
49
|
+
const attrs = {
|
50
|
+
...extra.dom(node),
|
51
|
+
...rest,
|
52
|
+
rel,
|
53
|
+
target: (0, common_1.validateTarget)(target, this.options.supportedTargets, this.options.defaultTarget),
|
54
|
+
};
|
55
|
+
return ['a', attrs, 0];
|
56
|
+
},
|
57
|
+
};
|
58
|
+
}
|
59
|
+
updateLink({ text, attrs, range }) {
|
60
|
+
return this.store.getExtension(CommandsExtension_1.CommandsExtension).updateMark({
|
61
|
+
attrs,
|
62
|
+
text,
|
63
|
+
range,
|
64
|
+
mark: this.type,
|
65
|
+
removeMark: !attrs.href,
|
66
|
+
});
|
67
|
+
}
|
68
|
+
removeLink() {
|
69
|
+
return (0, core_1.removeMark)({ type: this.type });
|
70
|
+
}
|
71
|
+
};
|
72
|
+
__decorate([
|
73
|
+
(0, core_1.command)()
|
74
|
+
], LinkExtension.prototype, "updateLink", null);
|
75
|
+
__decorate([
|
76
|
+
(0, core_1.command)()
|
77
|
+
], LinkExtension.prototype, "removeLink", null);
|
78
|
+
LinkExtension = __decorate([
|
79
|
+
(0, core_1.extension)({
|
80
|
+
defaultOptions: {
|
81
|
+
defaultTarget: common_1.LinkTarget.Self,
|
82
|
+
supportedTargets: [common_1.LinkTarget.Self, common_1.LinkTarget.Blank],
|
83
|
+
},
|
84
|
+
defaultPriority: remirror_1.ExtensionPriority.Medium,
|
85
|
+
})
|
86
|
+
], LinkExtension);
|
87
|
+
exports.LinkExtension = LinkExtension;
|
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.validateTarget = exports.LinkTarget = void 0;
|
4
|
+
var LinkTarget;
|
5
|
+
(function (LinkTarget) {
|
6
|
+
LinkTarget["Self"] = "_self";
|
7
|
+
LinkTarget["Blank"] = "_blank";
|
8
|
+
LinkTarget["Parent"] = "_parent";
|
9
|
+
LinkTarget["Top"] = "_top";
|
10
|
+
})(LinkTarget = exports.LinkTarget || (exports.LinkTarget = {}));
|
11
|
+
const validateTarget = (target, supportedTargets, defaultTarget) => {
|
12
|
+
return supportedTargets.includes(target) ? target : defaultTarget;
|
13
|
+
};
|
14
|
+
exports.validateTarget = validateTarget;
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { ApplySchemaAttributes, CommandFunction, NodeExtension, NodeExtensionSpec, NodeSpecOverride } from '@remirror/core';
|
2
|
+
import { NodeViewMethod } from 'remirror';
|
3
|
+
export declare class PreformattedExtension extends NodeExtension {
|
4
|
+
get name(): "preformatted";
|
5
|
+
createTags(): ("block" | "formattingNode" | "textBlock")[];
|
6
|
+
createNodeSpec(extra: ApplySchemaAttributes, override: NodeSpecOverride): NodeExtensionSpec;
|
7
|
+
createNodeViews(): NodeViewMethod;
|
8
|
+
/**
|
9
|
+
* Toggle the <pre> for the current block.
|
10
|
+
*/
|
11
|
+
togglePreformatted(): CommandFunction;
|
12
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
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;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
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 {
|
12
|
+
get name() {
|
13
|
+
return 'preformatted';
|
14
|
+
}
|
15
|
+
createTags() {
|
16
|
+
return [core_1.ExtensionTag.Block, core_1.ExtensionTag.TextBlock, core_1.ExtensionTag.FormattingNode];
|
17
|
+
}
|
18
|
+
createNodeSpec(extra, override) {
|
19
|
+
return {
|
20
|
+
content: 'inline*',
|
21
|
+
defining: true,
|
22
|
+
draggable: false,
|
23
|
+
...override,
|
24
|
+
attrs: {
|
25
|
+
...extra.defaults(),
|
26
|
+
},
|
27
|
+
parseDOM: [
|
28
|
+
{
|
29
|
+
tag: 'pre',
|
30
|
+
},
|
31
|
+
],
|
32
|
+
toDOM: (node) => {
|
33
|
+
return ['pre', extra.dom(node), 0];
|
34
|
+
},
|
35
|
+
};
|
36
|
+
}
|
37
|
+
createNodeViews() {
|
38
|
+
return (node) => {
|
39
|
+
const { nodeTextAlignment } = node.attrs;
|
40
|
+
// This is the pre container for the code block
|
41
|
+
const dom = document.createElement('div');
|
42
|
+
dom.classList.add(`preformatted`);
|
43
|
+
// This is the actual code content in the code block
|
44
|
+
const contentDOM = document.createElement('pre');
|
45
|
+
contentDOM.setAttribute('data-node-text-align', nodeTextAlignment);
|
46
|
+
contentDOM.setAttribute('style', `text-align:${nodeTextAlignment}`);
|
47
|
+
// Divider between code block and pre container
|
48
|
+
const dividerElement = document.createElement('div');
|
49
|
+
dividerElement.classList.add('block-divider');
|
50
|
+
// The material icon to use
|
51
|
+
const codeIcon = document.createElement('svg');
|
52
|
+
codeIcon.classList.add('material-symbols-rounded');
|
53
|
+
codeIcon.textContent = 'short_text';
|
54
|
+
dom.append(codeIcon);
|
55
|
+
dom.append(dividerElement);
|
56
|
+
dom.append(contentDOM);
|
57
|
+
return { dom, contentDOM };
|
58
|
+
};
|
59
|
+
}
|
60
|
+
/**
|
61
|
+
* Toggle the <pre> for the current block.
|
62
|
+
*/
|
63
|
+
togglePreformatted() {
|
64
|
+
return (0, core_1.toggleBlockItem)({
|
65
|
+
type: this.type,
|
66
|
+
toggleType: 'paragraph',
|
67
|
+
});
|
68
|
+
}
|
69
|
+
};
|
70
|
+
__decorate([
|
71
|
+
(0, core_1.command)()
|
72
|
+
], PreformattedExtension.prototype, "togglePreformatted", null);
|
73
|
+
PreformattedExtension = __decorate([
|
74
|
+
(0, core_1.extension)({})
|
75
|
+
], PreformattedExtension);
|
76
|
+
exports.PreformattedExtension = PreformattedExtension;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { ApplySchemaAttributes, NodeExtension, NodeExtensionSpec, NodeSpecOverride } from '@remirror/core';
|
2
|
+
import { NodeName } from '../Extensions';
|
3
|
+
import { ComponentType } from 'react';
|
4
|
+
import { NodeViewComponentProps } from '@remirror/react';
|
5
|
+
export declare class UnsupportedNodeExtension extends NodeExtension {
|
6
|
+
get name(): NodeName.Unsupported;
|
7
|
+
ReactComponent: ComponentType<NodeViewComponentProps>;
|
8
|
+
createTags(): "inline"[];
|
9
|
+
createNodeSpec(extra: ApplySchemaAttributes, override: NodeSpecOverride): NodeExtensionSpec;
|
10
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
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;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.UnsupportedNodeExtension = void 0;
|
13
|
+
const core_1 = require("@remirror/core");
|
14
|
+
const Extensions_1 = require("../Extensions");
|
15
|
+
const CollapseBox_1 = __importDefault(require("../../ui/CollapseBox/CollapseBox"));
|
16
|
+
let UnsupportedNodeExtension = class UnsupportedNodeExtension extends core_1.NodeExtension {
|
17
|
+
get name() {
|
18
|
+
return Extensions_1.NodeName.Unsupported;
|
19
|
+
}
|
20
|
+
ReactComponent = CollapseBox_1.default;
|
21
|
+
createTags() {
|
22
|
+
return [core_1.ExtensionTag.InlineNode];
|
23
|
+
}
|
24
|
+
createNodeSpec(extra, override) {
|
25
|
+
return {
|
26
|
+
selectable: false,
|
27
|
+
draggable: false,
|
28
|
+
atom: true,
|
29
|
+
inline: true,
|
30
|
+
...override,
|
31
|
+
attrs: {
|
32
|
+
...extra.defaults(),
|
33
|
+
originalNode: {},
|
34
|
+
errorMessage: {},
|
35
|
+
},
|
36
|
+
parseDOM: [
|
37
|
+
{
|
38
|
+
tag: `[data-unsupported-node]`,
|
39
|
+
getAttrs: (node) => {
|
40
|
+
if (!(0, core_1.isElementDomNode)(node)) {
|
41
|
+
return false;
|
42
|
+
}
|
43
|
+
const unsupportedNodes = node.getAttribute('data-unsupported-node');
|
44
|
+
try {
|
45
|
+
const decodedNodes = JSON.parse(unsupportedNodes);
|
46
|
+
return {
|
47
|
+
...extra.parse(node),
|
48
|
+
originalNode: decodedNodes?.originalNode,
|
49
|
+
errorMessage: decodedNodes?.errorMessage,
|
50
|
+
};
|
51
|
+
}
|
52
|
+
catch (error) {
|
53
|
+
console.error('Failed to parse Remirror nodes from data-unsupported-node', error);
|
54
|
+
return false;
|
55
|
+
}
|
56
|
+
},
|
57
|
+
},
|
58
|
+
],
|
59
|
+
toDOM: (node) => {
|
60
|
+
const { originalNode, errorMessage, ...rest } = (0, core_1.omitExtraAttributes)(node.attrs, extra);
|
61
|
+
const attrs = {
|
62
|
+
...extra.dom(node),
|
63
|
+
...rest,
|
64
|
+
originalNode,
|
65
|
+
errorMessage,
|
66
|
+
'data-unsupported-node': JSON.stringify({ originalNode, errorMessage }),
|
67
|
+
};
|
68
|
+
return ['div', attrs];
|
69
|
+
},
|
70
|
+
};
|
71
|
+
}
|
72
|
+
};
|
73
|
+
UnsupportedNodeExtension = __decorate([
|
74
|
+
(0, core_1.extension)({})
|
75
|
+
], UnsupportedNodeExtension);
|
76
|
+
exports.UnsupportedNodeExtension = UnsupportedNodeExtension;
|
@@ -0,0 +1,60 @@
|
|
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.ICON_AI = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
exports.ICON_AI = (react_1.default.createElement("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
9
|
+
react_1.default.createElement("g", { id: "sq-AI-icon", clipPath: "url(#clip0_3060_44545)" },
|
10
|
+
react_1.default.createElement("g", { id: "circle", filter: "url(#filter0_dd_3060_44545)" },
|
11
|
+
react_1.default.createElement("rect", { x: "2", y: "2", width: "20", height: "20", rx: "10", fill: "url(#paint0_linear_3060_44545)" }),
|
12
|
+
react_1.default.createElement("rect", { x: "1.5", y: "1.5", width: "21", height: "21", rx: "10.5", stroke: "white" })),
|
13
|
+
react_1.default.createElement("g", { id: "Vector", filter: "url(#filter1_d_3060_44545)" },
|
14
|
+
react_1.default.createElement("path", { d: "M11.2084 9.79157L10.1219 7.39977C9.88269 6.86674 9.11731 6.86674 8.87813 7.39977L7.79157 9.79157L5.39977 10.8781C4.86674 11.1241 4.86674 11.8827 5.39977 12.1219L7.79157 13.2084L8.87813 15.6002C9.12415 16.1333 9.88269 16.1333 10.1219 15.6002L11.2084 13.2084L13.6002 12.1219C14.1333 11.8759 14.1333 11.1173 13.6002 10.8781L11.2084 9.79157Z", fill: "white" })),
|
15
|
+
react_1.default.createElement("g", { id: "Vector_2", opacity: "0.8", filter: "url(#filter2_d_3060_44545)" },
|
16
|
+
react_1.default.createElement("path", { d: "M17.4491 10.4491L16.8493 11.7779C16.7126 12.074 16.2874 12.074 16.1507 11.7779L15.5509 10.4415L14.2221 9.84169C13.926 9.70501 13.926 9.2874 14.2221 9.15072L15.5585 8.55087L16.1583 7.2221C16.295 6.92597 16.7126 6.92597 16.8493 7.2221L17.4491 8.55847L18.7779 9.15831C19.074 9.29499 19.074 9.7126 18.7779 9.84928L17.4491 10.4491Z", fill: "white" })),
|
17
|
+
react_1.default.createElement("g", { id: "Ellipse 55", opacity: "0.8", filter: "url(#filter3_d_3060_44545)" },
|
18
|
+
react_1.default.createElement("circle", { cx: "14.5", cy: "16.5", r: "1.5", fill: "white" }))),
|
19
|
+
react_1.default.createElement("defs", null,
|
20
|
+
react_1.default.createElement("filter", { id: "filter0_dd_3060_44545", x: "0", y: "0", width: "24", height: "24", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB" },
|
21
|
+
react_1.default.createElement("feFlood", { floodOpacity: "0", result: "BackgroundImageFix" }),
|
22
|
+
react_1.default.createElement("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }),
|
23
|
+
react_1.default.createElement("feOffset", { dx: "1", dy: "1" }),
|
24
|
+
react_1.default.createElement("feComposite", { in2: "hardAlpha", operator: "out" }),
|
25
|
+
react_1.default.createElement("feColorMatrix", { type: "matrix", values: "0 0 0 0 0.2 0 0 0 0 0.709941 0 0 0 0 1 0 0 0 0.64 0" }),
|
26
|
+
react_1.default.createElement("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_3060_44545" }),
|
27
|
+
react_1.default.createElement("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }),
|
28
|
+
react_1.default.createElement("feOffset", { dx: "-1", dy: "-1" }),
|
29
|
+
react_1.default.createElement("feComposite", { in2: "hardAlpha", operator: "out" }),
|
30
|
+
react_1.default.createElement("feColorMatrix", { type: "matrix", values: "0 0 0 0 0.96 0 0 0 0 0.76 0 0 0 0 0.48 0 0 0 0.64 0" }),
|
31
|
+
react_1.default.createElement("feBlend", { mode: "normal", in2: "effect1_dropShadow_3060_44545", result: "effect2_dropShadow_3060_44545" }),
|
32
|
+
react_1.default.createElement("feBlend", { mode: "normal", in: "SourceGraphic", in2: "effect2_dropShadow_3060_44545", result: "shape" })),
|
33
|
+
react_1.default.createElement("filter", { id: "filter1_d_3060_44545", x: "5", y: "7", width: "9", height: "10", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB" },
|
34
|
+
react_1.default.createElement("feFlood", { floodOpacity: "0", result: "BackgroundImageFix" }),
|
35
|
+
react_1.default.createElement("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }),
|
36
|
+
react_1.default.createElement("feOffset", { dy: "1" }),
|
37
|
+
react_1.default.createElement("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.16 0" }),
|
38
|
+
react_1.default.createElement("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_3060_44545" }),
|
39
|
+
react_1.default.createElement("feBlend", { mode: "normal", in: "SourceGraphic", in2: "effect1_dropShadow_3060_44545", result: "shape" })),
|
40
|
+
react_1.default.createElement("filter", { id: "filter2_d_3060_44545", x: "14", y: "7", width: "5", height: "6.30682", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB" },
|
41
|
+
react_1.default.createElement("feFlood", { floodOpacity: "0", result: "BackgroundImageFix" }),
|
42
|
+
react_1.default.createElement("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }),
|
43
|
+
react_1.default.createElement("feOffset", { dy: "1.30682" }),
|
44
|
+
react_1.default.createElement("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.16 0" }),
|
45
|
+
react_1.default.createElement("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_3060_44545" }),
|
46
|
+
react_1.default.createElement("feBlend", { mode: "normal", in: "SourceGraphic", in2: "effect1_dropShadow_3060_44545", result: "shape" })),
|
47
|
+
react_1.default.createElement("filter", { id: "filter3_d_3060_44545", x: "13", y: "15", width: "3", height: "4.32373", filterUnits: "userSpaceOnUse", colorInterpolationFilters: "sRGB" },
|
48
|
+
react_1.default.createElement("feFlood", { floodOpacity: "0", result: "BackgroundImageFix" }),
|
49
|
+
react_1.default.createElement("feColorMatrix", { in: "SourceAlpha", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0", result: "hardAlpha" }),
|
50
|
+
react_1.default.createElement("feOffset", { dy: "1.32373" }),
|
51
|
+
react_1.default.createElement("feColorMatrix", { type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.16 0" }),
|
52
|
+
react_1.default.createElement("feBlend", { mode: "normal", in2: "BackgroundImageFix", result: "effect1_dropShadow_3060_44545" }),
|
53
|
+
react_1.default.createElement("feBlend", { mode: "normal", in: "SourceGraphic", in2: "effect1_dropShadow_3060_44545", result: "shape" })),
|
54
|
+
react_1.default.createElement("linearGradient", { id: "paint0_linear_3060_44545", x1: "6.54545", y1: "3.81818", x2: "17", y2: "20.1818", gradientUnits: "userSpaceOnUse" },
|
55
|
+
react_1.default.createElement("stop", { stopColor: "#F5D6AB" }),
|
56
|
+
react_1.default.createElement("stop", { offset: "0.251162", stopColor: "#F895A7" }),
|
57
|
+
react_1.default.createElement("stop", { offset: "0.585", stopColor: "#77A1F1" }),
|
58
|
+
react_1.default.createElement("stop", { offset: "0.861262", stopColor: "#68C8FF" })),
|
59
|
+
react_1.default.createElement("clipPath", { id: "clip0_3060_44545" },
|
60
|
+
react_1.default.createElement("rect", { width: "24", height: "24", fill: "white" })))));
|
@@ -0,0 +1,18 @@
|
|
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);
|
18
|
+
__exportStar(require("./useExpandedSelection"), exports);
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import { Selection } from '@remirror/core';
|
2
|
+
import { Mark, MarkType } from 'remirror';
|
3
|
+
export type ExpandedSelection = {
|
4
|
+
selection: Selection;
|
5
|
+
marks: Mark[];
|
6
|
+
};
|
7
|
+
/**
|
8
|
+
* Returns a single range that is either:
|
9
|
+
* 1. The current selection if the current selection does not contain any of the indicated marks.
|
10
|
+
* 2. An expanded version of the current selection if the range contains any of the indicated marks.
|
11
|
+
*
|
12
|
+
* For example, given the content:
|
13
|
+
*
|
14
|
+
* <strong>Bold</strong> regular <u>underline</u> <u>more underline</u>
|
15
|
+
*
|
16
|
+
* If the marks passed in are 'bold' and 'underline' and the text "old regular under" is selected
|
17
|
+
* the returned range will be "Bold regular underline".
|
18
|
+
*
|
19
|
+
* @param {(MarkType|string)[]} markTypes
|
20
|
+
*
|
21
|
+
* @return {ExpandedSelection}
|
22
|
+
*/
|
23
|
+
export declare const useExpandedSelection: (markTypes: (MarkType | string)[]) => ExpandedSelection;
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.useExpandedSelection = void 0;
|
4
|
+
const remirror_1 = require("remirror");
|
5
|
+
const react_1 = require("@remirror/react");
|
6
|
+
/**
|
7
|
+
* Returns a single range that is either:
|
8
|
+
* 1. The current selection if the current selection does not contain any of the indicated marks.
|
9
|
+
* 2. An expanded version of the current selection if the range contains any of the indicated marks.
|
10
|
+
*
|
11
|
+
* For example, given the content:
|
12
|
+
*
|
13
|
+
* <strong>Bold</strong> regular <u>underline</u> <u>more underline</u>
|
14
|
+
*
|
15
|
+
* If the marks passed in are 'bold' and 'underline' and the text "old regular under" is selected
|
16
|
+
* the returned range will be "Bold regular underline".
|
17
|
+
*
|
18
|
+
* @param {(MarkType|string)[]} markTypes
|
19
|
+
*
|
20
|
+
* @return {ExpandedSelection}
|
21
|
+
*/
|
22
|
+
const useExpandedSelection = (markTypes) => {
|
23
|
+
const { doc, selection } = (0, react_1.useEditorState)();
|
24
|
+
const ranges = [];
|
25
|
+
markTypes.forEach((markType) => {
|
26
|
+
ranges.push(...(0, remirror_1.getMarkRanges)(selection, markType));
|
27
|
+
});
|
28
|
+
if (ranges.length === 0) {
|
29
|
+
return { selection, marks: [] };
|
30
|
+
}
|
31
|
+
// work out the start position of the first link and end position of the last link in the selection.
|
32
|
+
const from = Math.min(selection.from, ...ranges.map((range) => range.from));
|
33
|
+
const to = Math.max(selection.to, ...ranges.map((range) => range.to));
|
34
|
+
const marks = ranges.map((range) => range.mark);
|
35
|
+
return { selection: (0, remirror_1.getTextSelection)({ from, to }, doc), marks };
|
36
|
+
};
|
37
|
+
exports.useExpandedSelection = useExpandedSelection;
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const useExtensionNames: () => Record<string, true>;
|
@@ -0,0 +1,16 @@
|
|
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)(() => {
|
9
|
+
const extensionNames = {};
|
10
|
+
manager.extensions.forEach((extension) => {
|
11
|
+
extensionNames[extension.name] = true;
|
12
|
+
});
|
13
|
+
return extensionNames;
|
14
|
+
}, [manager]);
|
15
|
+
};
|
16
|
+
exports.useExtensionNames = useExtensionNames;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { FocusEvent, FocusEventHandler, RefObject } from 'react';
|
2
|
+
declare const useFocus: (initialState: boolean) => {
|
3
|
+
handleFocus: (event: FocusEvent) => void;
|
4
|
+
handleBlur: FocusEventHandler<HTMLDivElement>;
|
5
|
+
isVisible: boolean;
|
6
|
+
wrapperRef: RefObject<HTMLDivElement>;
|
7
|
+
};
|
8
|
+
export default useFocus;
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const react_1 = require("react");
|
4
|
+
const useFocus = (initialState) => {
|
5
|
+
const wrapperRef = (0, react_1.createRef)();
|
6
|
+
const [isVisible, setIsVisible] = (0, react_1.useState)(initialState);
|
7
|
+
const handleFocus = (0, react_1.useCallback)((event) => {
|
8
|
+
// Ignore elements flagged to be ignored, this allows us to add extra, clickable, elements
|
9
|
+
// without triggering a focus, such as action menus.
|
10
|
+
if (!event.target?.classList?.contains('fte-ignore') && !event.target?.closest('.fte-ignore')) {
|
11
|
+
setIsVisible(true);
|
12
|
+
}
|
13
|
+
}, [wrapperRef]);
|
14
|
+
const handleBlur = (0, react_1.useCallback)((event) => {
|
15
|
+
// React event bubbling is interesting, it bubbles up the React tree rather than the DOM tree.
|
16
|
+
// The tree deviates when rendering portals (eg. for modals).
|
17
|
+
//
|
18
|
+
// Only hide the toolbar if:
|
19
|
+
// 1. We are blurring a node in the editor **DOM** tree.
|
20
|
+
// 2. We are focusing on something that is not in the editor DOM tree
|
21
|
+
// (elements in the portal won't be in the tree but don't influence the focus state per #1).
|
22
|
+
//
|
23
|
+
// This avoids the scenario where an element in a portal is blurred and another one in the portal focused.
|
24
|
+
// Without this logic the blur and focus handlers are called (in that order). The impact of these handlers being
|
25
|
+
// called is that the "isFocused" state changes inconsistently. This state changing then causes subtle issues.
|
26
|
+
// eg. unable to drill down in resource browser, toolbar appearing/disappearing.
|
27
|
+
//
|
28
|
+
// Ideally we would instead solely seeing if the "relatedTarget" is in the React tree. This isn't easily
|
29
|
+
// identifiable however without reaching into React internals.
|
30
|
+
//
|
31
|
+
// An assumption here is that anything in a portal will only blur to another element that is also in the portal
|
32
|
+
// (and therefore still in our React tree resulting in the element still effectively being focused).
|
33
|
+
const isBlurringEditor = wrapperRef.current?.contains(event.target);
|
34
|
+
const isFocusedInEditor = wrapperRef.current?.contains(event.relatedTarget);
|
35
|
+
// Detect if the blur event happens when the related/clicked target is the floating popover
|
36
|
+
const isClickingFloatingToolbar = !!event.relatedTarget?.closest('.squiz-fte-scope__floating-popover');
|
37
|
+
if (isBlurringEditor && !isFocusedInEditor && !isClickingFloatingToolbar) {
|
38
|
+
setIsVisible(false);
|
39
|
+
}
|
40
|
+
}, [wrapperRef]);
|
41
|
+
return { handleFocus, handleBlur, isVisible, wrapperRef };
|
42
|
+
};
|
43
|
+
exports.default = useFocus;
|