@squiz/formatted-text-editor 2.0.1 → 2.2.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 +24 -0
- package/demo/App.tsx +5 -0
- package/demo/AppContext.tsx +111 -51
- package/jest.config.ts +1 -1
- package/jest.setup.ts +16 -0
- package/lib/EditorToolbar/FloatingToolbar.js +1 -1
- package/lib/EditorToolbar/Toolbar.js +3 -1
- package/lib/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.d.ts +3 -0
- package/lib/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.js +35 -0
- package/lib/EditorToolbar/Tools/Image/Form/ImageForm.d.ts +2 -1
- package/lib/EditorToolbar/Tools/Image/Form/ImageForm.js +53 -10
- package/lib/EditorToolbar/Tools/Image/ImageButton.js +8 -5
- package/lib/EditorToolbar/Tools/Image/ImageModal.js +3 -1
- package/lib/EditorToolbar/Tools/Table/TableButton.js +1 -3
- package/lib/Extensions/Extensions.d.ts +1 -0
- package/lib/Extensions/Extensions.js +3 -0
- package/lib/Extensions/FetchUrlExtension/FetchUrlExtension.js +6 -0
- package/lib/Extensions/ImageExtension/DAMImageExtension.d.ts +17 -0
- package/lib/Extensions/ImageExtension/DAMImageExtension.js +97 -0
- package/lib/Icons/AiIcon.d.ts +2 -0
- package/lib/Icons/AiIcon.js +60 -0
- package/lib/index.css +4224 -0
- package/lib/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.d.ts +28 -0
- package/lib/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.js +88 -0
- package/lib/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.js +9 -0
- package/lib/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.js +9 -0
- package/package.json +6 -2
- package/src/EditorToolbar/FloatingToolbar.spec.tsx +3 -1
- package/src/EditorToolbar/FloatingToolbar.tsx +1 -1
- package/src/EditorToolbar/Toolbar.tsx +2 -0
- package/src/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.spec.tsx +78 -0
- package/src/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.tsx +46 -0
- package/src/EditorToolbar/Tools/ContentTools/_content-tools.scss +45 -0
- package/src/EditorToolbar/Tools/Image/Form/ImageForm.spec.tsx +27 -2
- package/src/EditorToolbar/Tools/Image/Form/ImageForm.tsx +61 -14
- package/src/EditorToolbar/Tools/Image/ImageButton.spec.tsx +70 -2
- package/src/EditorToolbar/Tools/Image/ImageButton.tsx +12 -6
- package/src/EditorToolbar/Tools/Image/ImageModal.tsx +4 -1
- package/src/EditorToolbar/Tools/Table/TableButton.tsx +0 -2
- package/src/Extensions/Extensions.ts +3 -0
- package/src/Extensions/FetchUrlExtension/FetchUrlExtension.ts +9 -0
- package/src/Extensions/ImageExtension/DAMImageExtension.spec.ts +87 -0
- package/src/Extensions/ImageExtension/DAMImageExtension.ts +119 -0
- package/src/Icons/AiIcon.tsx +140 -0
- package/src/index.scss +4 -0
- package/src/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.spec.tsx +219 -0
- package/src/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.tsx +109 -0
- package/src/utils/converters/mocks/squizNodeJson.mock.ts +21 -0
- package/src/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.ts +10 -0
- package/src/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.ts +8 -0
- package/src/utils/getNodeNamesByGroup.spec.ts +1 -0
- package/tests/index.ts +1 -0
- package/tests/mockResourceBrowser.tsx +46 -0
@@ -0,0 +1,97 @@
|
|
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.DAMImageExtension = void 0;
|
10
|
+
const core_1 = require("@remirror/core");
|
11
|
+
const remirror_1 = require("remirror");
|
12
|
+
const Extensions_1 = require("../Extensions");
|
13
|
+
let DAMImageExtension = class DAMImageExtension extends core_1.NodeExtension {
|
14
|
+
get name() {
|
15
|
+
return Extensions_1.NodeName.DAMImage;
|
16
|
+
}
|
17
|
+
createTags() {
|
18
|
+
return [core_1.ExtensionTag.InlineNode, core_1.ExtensionTag.Media];
|
19
|
+
}
|
20
|
+
createNodeSpec(extra, override) {
|
21
|
+
return {
|
22
|
+
inline: true,
|
23
|
+
draggable: true,
|
24
|
+
selectable: true,
|
25
|
+
...override,
|
26
|
+
attrs: {
|
27
|
+
...extra.defaults(),
|
28
|
+
damObjectId: {},
|
29
|
+
damSystemIdentifier: {},
|
30
|
+
damSystemType: {},
|
31
|
+
damAdditional: { default: undefined },
|
32
|
+
src: { default: '' },
|
33
|
+
},
|
34
|
+
parseDOM: [
|
35
|
+
{
|
36
|
+
tag: 'img[data-dam-object-id]',
|
37
|
+
getAttrs: (node) => {
|
38
|
+
if (!(0, core_1.isElementDomNode)(node)) {
|
39
|
+
return false;
|
40
|
+
}
|
41
|
+
const damObjectId = node.getAttribute('data-dam-object-id');
|
42
|
+
const damSystemIdentifier = node.getAttribute('data-dam-system-identifier');
|
43
|
+
const damSystemType = node.getAttribute('data-dam-system-type');
|
44
|
+
let damAdditional = node.getAttribute('data-dam-additional') || undefined;
|
45
|
+
if (!damObjectId || !damSystemIdentifier || !damSystemType) {
|
46
|
+
return false;
|
47
|
+
}
|
48
|
+
if (damAdditional) {
|
49
|
+
damAdditional = JSON.parse(damAdditional);
|
50
|
+
}
|
51
|
+
return {
|
52
|
+
...extra.parse(node),
|
53
|
+
damObjectId,
|
54
|
+
damSystemIdentifier,
|
55
|
+
damSystemType,
|
56
|
+
damAdditional,
|
57
|
+
src: '',
|
58
|
+
};
|
59
|
+
},
|
60
|
+
},
|
61
|
+
],
|
62
|
+
toDOM: (node) => {
|
63
|
+
const { damObjectId, damSystemIdentifier, damSystemType, damAdditional, src, ...rest } = (0, core_1.omitExtraAttributes)(node.attrs, extra);
|
64
|
+
return [
|
65
|
+
'img',
|
66
|
+
{
|
67
|
+
...extra.dom(node),
|
68
|
+
...rest,
|
69
|
+
src,
|
70
|
+
'data-dam-object-id': damObjectId,
|
71
|
+
'data-dam-system-identifier': damSystemIdentifier,
|
72
|
+
'data-dam-system-type': damSystemType,
|
73
|
+
'data-dam-additional': damAdditional ? JSON.stringify(damAdditional) : undefined,
|
74
|
+
},
|
75
|
+
];
|
76
|
+
},
|
77
|
+
};
|
78
|
+
}
|
79
|
+
insertDAMImage(attrs) {
|
80
|
+
return ({ tr, dispatch }) => {
|
81
|
+
const { from, to } = (0, remirror_1.getTextSelection)(tr.selection, tr.doc);
|
82
|
+
const node = this.type.create({ ...attrs, src: attrs.url });
|
83
|
+
dispatch?.(tr.replaceRangeWith(from, to, node));
|
84
|
+
return true;
|
85
|
+
};
|
86
|
+
}
|
87
|
+
};
|
88
|
+
__decorate([
|
89
|
+
(0, core_1.command)()
|
90
|
+
], DAMImageExtension.prototype, "insertDAMImage", null);
|
91
|
+
DAMImageExtension = __decorate([
|
92
|
+
(0, core_1.extension)({
|
93
|
+
defaultOptions: {},
|
94
|
+
defaultPriority: core_1.ExtensionPriority.High,
|
95
|
+
})
|
96
|
+
], DAMImageExtension);
|
97
|
+
exports.DAMImageExtension = DAMImageExtension;
|
@@ -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" })))));
|