@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.
Files changed (157) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/Editor/Editor.d.ts +16 -0
  3. package/lib/Editor/Editor.js +85 -0
  4. package/lib/Editor/EditorContext.d.ts +10 -0
  5. package/lib/Editor/EditorContext.js +16 -0
  6. package/lib/EditorToolbar/FloatingToolbar.d.ts +2 -0
  7. package/lib/EditorToolbar/FloatingToolbar.js +76 -0
  8. package/lib/EditorToolbar/Toolbar.d.ts +7 -0
  9. package/lib/EditorToolbar/Toolbar.js +49 -0
  10. package/lib/EditorToolbar/Tools/Bold/BoldButton.d.ts +3 -0
  11. package/lib/EditorToolbar/Tools/Bold/BoldButton.js +23 -0
  12. package/lib/EditorToolbar/Tools/ClearFormatting/ClearFormattingButton.d.ts +3 -0
  13. package/lib/EditorToolbar/Tools/ClearFormatting/ClearFormattingButton.js +57 -0
  14. package/lib/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.d.ts +3 -0
  15. package/lib/EditorToolbar/Tools/ContentTools/ContentToolsDropdown.js +104 -0
  16. package/lib/EditorToolbar/Tools/HorizontalLine/HorizontalLineButton.d.ts +3 -0
  17. package/lib/EditorToolbar/Tools/HorizontalLine/HorizontalLineButton.js +25 -0
  18. package/lib/EditorToolbar/Tools/Image/Form/ImageForm.d.ts +19 -0
  19. package/lib/EditorToolbar/Tools/Image/Form/ImageForm.js +186 -0
  20. package/lib/EditorToolbar/Tools/Image/ImageButton.d.ts +6 -0
  21. package/lib/EditorToolbar/Tools/Image/ImageButton.js +79 -0
  22. package/lib/EditorToolbar/Tools/Image/ImageModal.d.ts +9 -0
  23. package/lib/EditorToolbar/Tools/Image/ImageModal.js +26 -0
  24. package/lib/EditorToolbar/Tools/Italic/ItalicButton.d.ts +3 -0
  25. package/lib/EditorToolbar/Tools/Italic/ItalicButton.js +23 -0
  26. package/lib/EditorToolbar/Tools/Link/Form/LinkForm.d.ts +19 -0
  27. package/lib/EditorToolbar/Tools/Link/Form/LinkForm.js +63 -0
  28. package/lib/EditorToolbar/Tools/Link/LinkButton.d.ts +6 -0
  29. package/lib/EditorToolbar/Tools/Link/LinkButton.js +71 -0
  30. package/lib/EditorToolbar/Tools/Link/LinkModal.d.ts +9 -0
  31. package/lib/EditorToolbar/Tools/Link/LinkModal.js +27 -0
  32. package/lib/EditorToolbar/Tools/Link/RemoveLinkButton.d.ts +4 -0
  33. package/lib/EditorToolbar/Tools/Link/RemoveLinkButton.js +54 -0
  34. package/lib/EditorToolbar/Tools/Lists/ListButtons.d.ts +3 -0
  35. package/lib/EditorToolbar/Tools/Lists/ListButtons.js +14 -0
  36. package/lib/EditorToolbar/Tools/Lists/OrderedList/OrderedListButton.d.ts +3 -0
  37. package/lib/EditorToolbar/Tools/Lists/OrderedList/OrderedListButton.js +22 -0
  38. package/lib/EditorToolbar/Tools/Lists/UnorderedList/UnorderedListButton.d.ts +3 -0
  39. package/lib/EditorToolbar/Tools/Lists/UnorderedList/UnorderedListButton.js +22 -0
  40. package/lib/EditorToolbar/Tools/Redo/RedoButton.d.ts +3 -0
  41. package/lib/EditorToolbar/Tools/Redo/RedoButton.js +22 -0
  42. package/lib/EditorToolbar/Tools/Table/TableButton.d.ts +3 -0
  43. package/lib/EditorToolbar/Tools/Table/TableButton.js +20 -0
  44. package/lib/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.d.ts +3 -0
  45. package/lib/EditorToolbar/Tools/TextAlign/CenterAlign/CenterAlignButton.js +22 -0
  46. package/lib/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.d.ts +3 -0
  47. package/lib/EditorToolbar/Tools/TextAlign/JustifyAlign/JustifyAlignButton.js +22 -0
  48. package/lib/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.d.ts +3 -0
  49. package/lib/EditorToolbar/Tools/TextAlign/LeftAlign/LeftAlignButton.js +22 -0
  50. package/lib/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.d.ts +3 -0
  51. package/lib/EditorToolbar/Tools/TextAlign/RightAlign/RightAlignButton.js +22 -0
  52. package/lib/EditorToolbar/Tools/TextAlign/TextAlignButtons.d.ts +3 -0
  53. package/lib/EditorToolbar/Tools/TextAlign/TextAlignButtons.js +21 -0
  54. package/lib/EditorToolbar/Tools/TextType/CodeBlock/CodeBlockButton.d.ts +3 -0
  55. package/lib/EditorToolbar/Tools/TextType/CodeBlock/CodeBlockButton.js +22 -0
  56. package/lib/EditorToolbar/Tools/TextType/Heading/HeadingButton.d.ts +6 -0
  57. package/lib/EditorToolbar/Tools/TextType/Heading/HeadingButton.js +37 -0
  58. package/lib/EditorToolbar/Tools/TextType/Paragraph/ParagraphButton.d.ts +3 -0
  59. package/lib/EditorToolbar/Tools/TextType/Paragraph/ParagraphButton.js +21 -0
  60. package/lib/EditorToolbar/Tools/TextType/Preformatted/PreformattedButton.d.ts +3 -0
  61. package/lib/EditorToolbar/Tools/TextType/Preformatted/PreformattedButton.js +22 -0
  62. package/lib/EditorToolbar/Tools/TextType/TextTypeDropdown.d.ts +3 -0
  63. package/lib/EditorToolbar/Tools/TextType/TextTypeDropdown.js +46 -0
  64. package/lib/EditorToolbar/Tools/Underline/UnderlineButton.d.ts +3 -0
  65. package/lib/EditorToolbar/Tools/Underline/UnderlineButton.js +23 -0
  66. package/lib/EditorToolbar/Tools/Undo/UndoButton.d.ts +3 -0
  67. package/lib/EditorToolbar/Tools/Undo/UndoButton.js +22 -0
  68. package/lib/EditorToolbar/index.d.ts +2 -0
  69. package/lib/EditorToolbar/index.js +18 -0
  70. package/lib/Extensions/ClearFormattingExtension/ClearFormattingExtension.d.ts +5 -0
  71. package/lib/Extensions/ClearFormattingExtension/ClearFormattingExtension.js +63 -0
  72. package/lib/Extensions/CodeBlockExtension/CodeBlockExtension.d.ts +5 -0
  73. package/lib/Extensions/CodeBlockExtension/CodeBlockExtension.js +30 -0
  74. package/lib/Extensions/CommandsExtension/CommandsExtension.d.ts +20 -0
  75. package/lib/Extensions/CommandsExtension/CommandsExtension.js +52 -0
  76. package/lib/Extensions/Extensions.d.ts +18 -0
  77. package/lib/Extensions/Extensions.js +76 -0
  78. package/lib/Extensions/FetchUrlExtension/FetchUrlExtension.d.ts +12 -0
  79. package/lib/Extensions/FetchUrlExtension/FetchUrlExtension.js +69 -0
  80. package/lib/Extensions/ImageExtension/AssetImageExtension.d.ts +17 -0
  81. package/lib/Extensions/ImageExtension/AssetImageExtension.js +91 -0
  82. package/lib/Extensions/ImageExtension/DAMImageExtension.d.ts +17 -0
  83. package/lib/Extensions/ImageExtension/DAMImageExtension.js +97 -0
  84. package/lib/Extensions/ImageExtension/ImageExtension.d.ts +7 -0
  85. package/lib/Extensions/ImageExtension/ImageExtension.js +18 -0
  86. package/lib/Extensions/LinkExtension/AssetLinkExtension.d.ts +27 -0
  87. package/lib/Extensions/LinkExtension/AssetLinkExtension.js +101 -0
  88. package/lib/Extensions/LinkExtension/LinkExtension.d.ts +23 -0
  89. package/lib/Extensions/LinkExtension/LinkExtension.js +87 -0
  90. package/lib/Extensions/LinkExtension/common.d.ts +7 -0
  91. package/lib/Extensions/LinkExtension/common.js +14 -0
  92. package/lib/Extensions/PreformattedExtension/PreformattedExtension.d.ts +12 -0
  93. package/lib/Extensions/PreformattedExtension/PreformattedExtension.js +76 -0
  94. package/lib/Extensions/UnsuportedExtension/UnsupportedNodeExtension.d.ts +10 -0
  95. package/lib/Extensions/UnsuportedExtension/UnsupportedNodeExtension.js +76 -0
  96. package/lib/Icons/AiIcon.d.ts +2 -0
  97. package/lib/Icons/AiIcon.js +60 -0
  98. package/lib/hooks/index.d.ts +2 -0
  99. package/lib/hooks/index.js +18 -0
  100. package/lib/hooks/useExpandedSelection.d.ts +23 -0
  101. package/lib/hooks/useExpandedSelection.js +37 -0
  102. package/lib/hooks/useExtensionNames.d.ts +1 -0
  103. package/lib/hooks/useExtensionNames.js +16 -0
  104. package/lib/hooks/useFocus.d.ts +8 -0
  105. package/lib/hooks/useFocus.js +43 -0
  106. package/lib/index.css +5889 -0
  107. package/lib/index.d.ts +8 -0
  108. package/lib/index.js +16 -0
  109. package/lib/types.d.ts +7 -0
  110. package/lib/types.js +2 -0
  111. package/lib/ui/Button/Button.d.ts +12 -0
  112. package/lib/ui/Button/Button.js +13 -0
  113. package/lib/ui/CollapseBox/CollapseBox.d.ts +7 -0
  114. package/lib/ui/CollapseBox/CollapseBox.js +48 -0
  115. package/lib/ui/Fields/Checkbox/Checkbox.d.ts +9 -0
  116. package/lib/ui/Fields/Checkbox/Checkbox.js +47 -0
  117. package/lib/ui/Fields/Input/Input.d.ts +3 -0
  118. package/lib/ui/Fields/Input/Input.js +33 -0
  119. package/lib/ui/Fields/InputContainer/InputContainer.d.ts +9 -0
  120. package/lib/ui/Fields/InputContainer/InputContainer.js +16 -0
  121. package/lib/ui/Fields/MatrixAsset/MatrixAsset.d.ts +19 -0
  122. package/lib/ui/Fields/MatrixAsset/MatrixAsset.js +30 -0
  123. package/lib/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.d.ts +28 -0
  124. package/lib/ui/Fields/ResourceBrowserSelector/ResourceBrowserSelector.js +88 -0
  125. package/lib/ui/Modal/FormModal.d.ts +5 -0
  126. package/lib/ui/Modal/FormModal.js +39 -0
  127. package/lib/ui/Modal/Modal.d.ts +11 -0
  128. package/lib/ui/Modal/Modal.js +79 -0
  129. package/lib/ui/Tabs/Tabs.d.ts +11 -0
  130. package/lib/ui/Tabs/Tabs.js +46 -0
  131. package/lib/ui/ToolbarDropdown/ToolbarDropdown.d.ts +7 -0
  132. package/lib/ui/ToolbarDropdown/ToolbarDropdown.js +48 -0
  133. package/lib/ui/ToolbarDropdownButton/ToolbarDropdownButton.d.ts +11 -0
  134. package/lib/ui/ToolbarDropdownButton/ToolbarDropdownButton.js +15 -0
  135. package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.d.ts +5 -0
  136. package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.js +23 -0
  137. package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.props.d.ts +3 -0
  138. package/lib/utils/converters/htmlToSquizNode/htmlToSquizNode.props.js +2 -0
  139. package/lib/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.d.ts +11 -0
  140. package/lib/utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode.js +238 -0
  141. package/lib/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.d.ts +9 -0
  142. package/lib/utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode.js +214 -0
  143. package/lib/utils/createToolbarPositioner.d.ts +18 -0
  144. package/lib/utils/createToolbarPositioner.js +96 -0
  145. package/lib/utils/getCursorRect.d.ts +2 -0
  146. package/lib/utils/getCursorRect.js +7 -0
  147. package/lib/utils/getMarkNamesByGroup.d.ts +2 -0
  148. package/lib/utils/getMarkNamesByGroup.js +9 -0
  149. package/lib/utils/getNodeNamesByGroup.d.ts +2 -0
  150. package/lib/utils/getNodeNamesByGroup.js +9 -0
  151. package/lib/utils/getShortcutSymbol.d.ts +1 -0
  152. package/lib/utils/getShortcutSymbol.js +8 -0
  153. package/lib/utils/undefinedIfEmpty.d.ts +1 -0
  154. package/lib/utils/undefinedIfEmpty.js +7 -0
  155. package/lib/utils/validation.d.ts +3 -0
  156. package/lib/utils/validation.js +16 -0
  157. package/package.json +1 -1
package/lib/index.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import Editor from './Editor/Editor';
2
+ import { EditorContext } from './Editor/EditorContext';
3
+ import { remirrorNodeToSquizNode } from './utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode';
4
+ import { squizNodeToRemirrorNode } from './utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode';
5
+ import { htmlToSquizNode } from './utils/converters/htmlToSquizNode/htmlToSquizNode';
6
+ import { ResolveNodeType, ResolveNodeToUrl } from './types';
7
+ export { Editor, EditorContext, remirrorNodeToSquizNode, squizNodeToRemirrorNode, htmlToSquizNode };
8
+ export type { ResolveNodeType, ResolveNodeToUrl };
package/lib/index.js ADDED
@@ -0,0 +1,16 @@
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.htmlToSquizNode = exports.squizNodeToRemirrorNode = exports.remirrorNodeToSquizNode = exports.EditorContext = exports.Editor = void 0;
7
+ const Editor_1 = __importDefault(require("./Editor/Editor"));
8
+ exports.Editor = Editor_1.default;
9
+ const EditorContext_1 = require("./Editor/EditorContext");
10
+ Object.defineProperty(exports, "EditorContext", { enumerable: true, get: function () { return EditorContext_1.EditorContext; } });
11
+ const remirrorNodeToSquizNode_1 = require("./utils/converters/remirrorNodeToSquizNode/remirrorNodeToSquizNode");
12
+ Object.defineProperty(exports, "remirrorNodeToSquizNode", { enumerable: true, get: function () { return remirrorNodeToSquizNode_1.remirrorNodeToSquizNode; } });
13
+ const squizNodeToRemirrorNode_1 = require("./utils/converters/squizNodeToRemirrorNode/squizNodeToRemirrorNode");
14
+ Object.defineProperty(exports, "squizNodeToRemirrorNode", { enumerable: true, get: function () { return squizNodeToRemirrorNode_1.squizNodeToRemirrorNode; } });
15
+ const htmlToSquizNode_1 = require("./utils/converters/htmlToSquizNode/htmlToSquizNode");
16
+ Object.defineProperty(exports, "htmlToSquizNode", { enumerable: true, get: function () { return htmlToSquizNode_1.htmlToSquizNode; } });
package/lib/types.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export type DeepPartial<T> = {
2
+ [P in keyof T]?: T[P] extends Array<infer U> ? Array<DeepPartial<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : DeepPartial<T[P]>;
3
+ };
4
+ export type ResolveNodeType = {
5
+ [attr: string]: any;
6
+ };
7
+ export type ResolveNodeToUrl = (node: ResolveNodeType) => Promise<string>;
package/lib/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import React, { 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
+ className?: string;
10
+ };
11
+ declare const Button: ({ handleOnClick, isDisabled, isActive, label, text, icon, className }: ButtonProps) => React.JSX.Element;
12
+ export default Button;
@@ -0,0 +1,13 @@
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, className }) => {
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', className) },
10
+ text && react_1.default.createElement("span", null, text),
11
+ icon && icon));
12
+ };
13
+ exports.default = Button;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { NodeViewComponentProps } from '@remirror/react';
3
+ export interface CollapseBoxProps {
4
+ node: NodeViewComponentProps['node'];
5
+ }
6
+ declare const CollapseBox: React.FC<CollapseBoxProps>;
7
+ export default CollapseBox;
@@ -0,0 +1,48 @@
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 MotionPhotosOffOutlined_1 = __importDefault(require("@mui/icons-material/MotionPhotosOffOutlined"));
31
+ const UnfoldLessOutlined_1 = __importDefault(require("@mui/icons-material/UnfoldLessOutlined"));
32
+ const UnfoldMoreOutlined_1 = __importDefault(require("@mui/icons-material/UnfoldMoreOutlined"));
33
+ const CollapseBox = ({ node }) => {
34
+ const [isVisible, setIsVisible] = (0, react_1.useState)(true);
35
+ const label = 'This section cannot be displayed here due to unsupported HTML elements. The front-end view of your page won’t be affected.';
36
+ const errorMessage = node?.attrs?.errorMessage;
37
+ const errorNode = JSON.stringify(node?.attrs?.originalNode, null, 3);
38
+ return (react_1.default.createElement("div", { className: "collapse-box", suppressContentEditableWarning: true, contentEditable: false },
39
+ react_1.default.createElement("button", { className: "collapse-box__header", onClick: () => setIsVisible(!isVisible), type: 'button' },
40
+ react_1.default.createElement(MotionPhotosOffOutlined_1.default, { className: "collapse-box__icon--warning" }),
41
+ react_1.default.createElement("div", { className: "collapse-box__label" }, label),
42
+ isVisible ? react_1.default.createElement(UnfoldLessOutlined_1.default, null) : react_1.default.createElement(UnfoldMoreOutlined_1.default, null)),
43
+ react_1.default.createElement("div", { className: "collapse-box__content", hidden: isVisible, "data-testid": "content" },
44
+ errorMessage,
45
+ react_1.default.createElement("br", null),
46
+ errorNode)));
47
+ };
48
+ exports.default = CollapseBox;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export type CheckboxProps<TChecked, TUnchecked> = {
3
+ label: string;
4
+ onChange: (value: TChecked | TUnchecked) => void;
5
+ defaultChecked?: boolean;
6
+ unchecked: TUnchecked;
7
+ checked: TChecked;
8
+ };
9
+ export declare const Checkbox: <TChecked, TUnchecked>({ label, onChange, defaultChecked, unchecked, checked, }: CheckboxProps<TChecked, TUnchecked>) => React.JSX.Element;
@@ -0,0 +1,47 @@
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.Checkbox = void 0;
30
+ const react_1 = __importStar(require("react"));
31
+ const CheckRounded_1 = __importDefault(require("@mui/icons-material/CheckRounded"));
32
+ const Checkbox = ({ label, onChange, defaultChecked = false, unchecked, checked, }) => {
33
+ const [toggled, setToggled] = (0, react_1.useState)(defaultChecked);
34
+ (0, react_1.useEffect)(() => {
35
+ if (toggled) {
36
+ onChange(checked);
37
+ }
38
+ else {
39
+ onChange(unchecked);
40
+ }
41
+ }, [toggled]);
42
+ const toggleCheckbox = () => setToggled(!toggled);
43
+ return (react_1.default.createElement("div", { className: "squiz-fte-checkbox" },
44
+ react_1.default.createElement("button", { type: "button", role: "checkbox", "aria-label": label, "aria-checked": toggled, className: "checkbox", onClick: toggleCheckbox }, toggled && react_1.default.createElement(CheckRounded_1.default, null)),
45
+ react_1.default.createElement("button", { type: "button", className: "label", onClick: toggleCheckbox, tabIndex: -1 }, label)));
46
+ };
47
+ exports.Checkbox = Checkbox;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { InputContainerProps } from '../InputContainer/InputContainer';
3
+ export declare const Input: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & Omit<InputContainerProps, "children"> & React.RefAttributes<HTMLInputElement>>;
@@ -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 InputContainer_1 = require("../InputContainer/InputContainer");
29
+ const InputInternal = ({ name, label, type = 'text', error, required, ...rest }, ref) => {
30
+ return (react_1.default.createElement(InputContainer_1.InputContainer, { name: name, label: label, error: error, required: required },
31
+ react_1.default.createElement("input", { ref: ref, id: name, name: name, type: type, "aria-invalid": !!error, className: "squiz-fte-form-control", ...rest })));
32
+ };
33
+ exports.Input = (0, react_1.forwardRef)(InputInternal);
@@ -0,0 +1,9 @@
1
+ import React, { ReactNode } from 'react';
2
+ export type InputContainerProps = {
3
+ name?: string;
4
+ label?: string;
5
+ error?: string;
6
+ required?: boolean;
7
+ children: ReactNode;
8
+ };
9
+ export declare const InputContainer: ({ name, label, error, required, children }: InputContainerProps) => React.JSX.Element;
@@ -0,0 +1,16 @@
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.InputContainer = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const clsx_1 = __importDefault(require("clsx"));
9
+ const InputContainer = ({ name, label, error, required, children }) => {
10
+ return (react_1.default.createElement("div", { className: (0, clsx_1.default)(error && 'squiz-fte-invalid-form-field') },
11
+ label && (react_1.default.createElement("label", { htmlFor: name, className: "squiz-fte-form-label" }, label)),
12
+ label && required && (react_1.default.createElement("span", { className: "text-gray-600", "aria-label": "Required field" }, "*")),
13
+ children,
14
+ error && react_1.default.createElement("div", { className: "squiz-fte-form-error" }, error)));
15
+ };
16
+ exports.InputContainer = InputContainer;
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import { InputContainerProps } from '../InputContainer/InputContainer';
3
+ type MatrixAssetValue = {
4
+ matrixIdentifier?: string;
5
+ matrixAssetId?: string;
6
+ url?: string;
7
+ };
8
+ export type MatrixAssetProps<T extends MatrixAssetValue> = Omit<InputContainerProps, 'children'> & {
9
+ modalTitle: string;
10
+ allowedTypes?: string[];
11
+ value?: T | null;
12
+ onChange: (value: {
13
+ target: {
14
+ value: T;
15
+ };
16
+ }) => void;
17
+ };
18
+ export declare const MatrixAsset: <T extends MatrixAssetValue>({ modalTitle, allowedTypes, value, onChange, ...props }: MatrixAssetProps<T>) => React.JSX.Element;
19
+ export {};
@@ -0,0 +1,30 @@
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.MatrixAsset = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const resource_browser_1 = require("@squiz/resource-browser");
9
+ const InputContainer_1 = require("../InputContainer/InputContainer");
10
+ const MatrixAsset = ({ modalTitle, allowedTypes, value, onChange, ...props }) => {
11
+ return (react_1.default.createElement(InputContainer_1.InputContainer, { ...props },
12
+ react_1.default.createElement(resource_browser_1.ResourceBrowser, { modalTitle: modalTitle, allowedTypes: allowedTypes, value: value && value.matrixIdentifier && value.matrixAssetId
13
+ ? {
14
+ sourceId: value.matrixIdentifier,
15
+ resourceId: value.matrixAssetId,
16
+ }
17
+ : null, onChange: (resource) => {
18
+ onChange({
19
+ target: {
20
+ value: {
21
+ ...value,
22
+ matrixIdentifier: resource?.source?.id,
23
+ matrixAssetId: resource?.id,
24
+ url: resource?.url,
25
+ },
26
+ },
27
+ });
28
+ } })));
29
+ };
30
+ exports.MatrixAsset = MatrixAsset;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { InputContainerProps } from '../InputContainer/InputContainer';
3
+ import { NodeName } from '../../../Extensions/Extensions';
4
+ type MatrixAsset = {
5
+ matrixIdentifier?: string;
6
+ matrixAssetId?: string;
7
+ };
8
+ type DAMAsset = {
9
+ damSystemIdentifier?: string;
10
+ damObjectId?: string;
11
+ damSystemType?: string;
12
+ };
13
+ type ResourceBrowserSelectorValue = MatrixAsset & DAMAsset & {
14
+ nodeType?: NodeName;
15
+ url?: string;
16
+ };
17
+ export type ResourceBrowserSelectorProps<T extends ResourceBrowserSelectorValue> = Omit<InputContainerProps, 'children'> & {
18
+ modalTitle: string;
19
+ allowedTypes?: string[];
20
+ value?: T | null;
21
+ onChange: (value: {
22
+ target: {
23
+ value: T;
24
+ };
25
+ }) => void;
26
+ };
27
+ export declare const ResourceBrowserSelector: <T extends ResourceBrowserSelectorValue>({ modalTitle, allowedTypes, value, onChange, ...props }: ResourceBrowserSelectorProps<T>) => React.JSX.Element;
28
+ export {};
@@ -0,0 +1,88 @@
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.ResourceBrowserSelector = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const resource_browser_1 = require("@squiz/resource-browser");
29
+ const InputContainer_1 = require("../InputContainer/InputContainer");
30
+ const Extensions_1 = require("../../../Extensions/Extensions");
31
+ const ResourceBrowserSelector = ({ modalTitle, allowedTypes, value, onChange, ...props }) => {
32
+ const convertFormDataToResourceBrowserValue = (0, react_1.useCallback)((value) => {
33
+ if (value?.matrixIdentifier && value?.matrixAssetId) {
34
+ return {
35
+ sourceId: value.matrixIdentifier,
36
+ resourceId: value.matrixAssetId,
37
+ };
38
+ }
39
+ else if (value?.damSystemIdentifier && value?.damObjectId) {
40
+ return {
41
+ sourceId: value.damSystemIdentifier,
42
+ resourceId: value.damObjectId,
43
+ };
44
+ }
45
+ return null;
46
+ }, []);
47
+ const handleResourceChange = (0, react_1.useCallback)((resource) => {
48
+ // Clear out any key properties for clear resource use case
49
+ let onChangeData = {
50
+ ...value,
51
+ matrixIdentifier: undefined,
52
+ matrixAssetId: undefined,
53
+ damSystemIdentifier: undefined,
54
+ damObjectId: undefined,
55
+ damSystemType: undefined,
56
+ url: undefined,
57
+ };
58
+ if (resource?.source?.type === 'matrix') {
59
+ onChangeData = {
60
+ ...value,
61
+ matrixIdentifier: resource?.source?.id,
62
+ matrixAssetId: resource?.id,
63
+ url: resource?.url,
64
+ nodeType: Extensions_1.NodeName.AssetImage,
65
+ };
66
+ }
67
+ else if (resource?.source?.type === 'dam') {
68
+ onChangeData = {
69
+ ...value,
70
+ damSystemIdentifier: resource?.source?.id,
71
+ damObjectId: resource?.id,
72
+ damSystemType: (resource?.source).configuration.externalType,
73
+ url: resource?.url,
74
+ nodeType: Extensions_1.NodeName.DAMImage,
75
+ };
76
+ }
77
+ onChange({
78
+ target: {
79
+ value: {
80
+ ...onChangeData,
81
+ },
82
+ },
83
+ });
84
+ }, []);
85
+ return (react_1.default.createElement(InputContainer_1.InputContainer, { ...props },
86
+ react_1.default.createElement(resource_browser_1.ResourceBrowser, { modalTitle: modalTitle, allowedTypes: allowedTypes, value: convertFormDataToResourceBrowserValue(value), onChange: handleResourceChange })));
87
+ };
88
+ exports.ResourceBrowserSelector = ResourceBrowserSelector;
@@ -0,0 +1,5 @@
1
+ import { ReactElement } from 'react';
2
+ import { ModalProps } from './Modal';
3
+ type FormModalProps = Omit<ModalProps, 'onSubmit'>;
4
+ declare const FormModal: (props: FormModalProps) => ReactElement;
5
+ export default FormModal;
@@ -0,0 +1,39 @@
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 Modal_1 = __importDefault(require("./Modal"));
31
+ const FormModal = (props) => {
32
+ const ref = (0, react_1.createRef)();
33
+ const handleSubmit = () => {
34
+ const form = ref.current?.querySelector('form');
35
+ form?.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
36
+ };
37
+ return react_1.default.createElement(Modal_1.default, { ref: ref, ...props, onSubmit: handleSubmit });
38
+ };
39
+ exports.default = FormModal;
@@ -0,0 +1,11 @@
1
+ import React, { ReactElement } from 'react';
2
+ export type ModalProps = {
3
+ title: string;
4
+ icon: ReactElement;
5
+ children: ReactElement;
6
+ onCancel: () => void;
7
+ onSubmit?: () => void;
8
+ className?: string;
9
+ };
10
+ declare const _default: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<HTMLDivElement>>;
11
+ export default _default;
@@ -0,0 +1,79 @@
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 react_dom_1 = require("react-dom");
31
+ const CloseRounded_1 = __importDefault(require("@mui/icons-material/CloseRounded"));
32
+ const base_1 = require("@mui/base");
33
+ const clsx_1 = __importDefault(require("clsx"));
34
+ const Modal = ({ children, title, icon, onCancel, onSubmit, className }, ref) => {
35
+ const content = (0, react_1.useRef)(null);
36
+ const container = (0, react_1.useMemo)(() => {
37
+ const element = document.createElement('div');
38
+ element.classList.add('squiz-fte-scope');
39
+ return element;
40
+ }, []);
41
+ const keydown = (e) => {
42
+ if (e.key === 'Escape') {
43
+ onCancel();
44
+ }
45
+ if (e.key === 'Enter') {
46
+ onSubmit && onSubmit();
47
+ }
48
+ };
49
+ // register key listeners for Enter/Escape on key up so the editor doesn't handle the event as well
50
+ (0, react_1.useEffect)(() => {
51
+ window.addEventListener('keydown', keydown);
52
+ return () => window.removeEventListener('keydown', keydown);
53
+ }, []);
54
+ // add/remove the modal container from the DOM and focus on the first input
55
+ (0, react_1.useEffect)(() => {
56
+ const firstInput = content.current?.querySelector('input:not([type=hidden]), button');
57
+ document.body.appendChild(container);
58
+ firstInput?.focus();
59
+ return () => {
60
+ document.body.removeChild(container);
61
+ };
62
+ }, [container]);
63
+ return (0, react_dom_1.createPortal)(react_1.default.createElement(react_1.default.Fragment, null,
64
+ react_1.default.createElement(base_1.FocusTrap, { open: true },
65
+ react_1.default.createElement("div", { ref: ref, className: (0, clsx_1.default)('squiz-fte-modal-wrapper', className), tabIndex: -1 },
66
+ react_1.default.createElement("div", { className: "w-modal-sm my-6 mx-auto" },
67
+ react_1.default.createElement("div", { className: "squiz-fte-modal" },
68
+ react_1.default.createElement("div", { className: "squiz-fte-modal-header p-6 pb-4" },
69
+ react_1.default.createElement("div", { className: "squiz-fte-modal-header-icon mr-1.5 mt-[-1px]" }, icon),
70
+ react_1.default.createElement("h2", { className: "font-semibold text-gray-900 text-heading-2" }, title),
71
+ react_1.default.createElement("button", { type: "button", className: "ml-auto -mr-3 -mt-3 bg-transparent border-0 text-gray-600 font-semibold outline-none focus:outline-none hover:text-color-gray-800", onClick: onCancel, "aria-label": "Close" },
72
+ react_1.default.createElement(CloseRounded_1.default, null))),
73
+ react_1.default.createElement("div", { className: "squiz-fte-modal-content", ref: content }, children),
74
+ react_1.default.createElement("div", { className: "squiz-fte-modal-footer p-6 pt-3" },
75
+ react_1.default.createElement("button", { className: "squiz-fte-modal-footer__button bg-gray-200 text-gray-700 mr-2 hover:bg-gray-300", type: "button", onClick: onCancel, "aria-label": "Cancel" }, "Cancel"),
76
+ onSubmit && (react_1.default.createElement("button", { className: "squiz-fte-modal-footer__button bg-blue-300 text-white hover:bg-blue-400", type: "button", onClick: onSubmit, "aria-label": "Apply" }, "Apply"))))))),
77
+ react_1.default.createElement("div", { className: "opacity-25 fixed inset-0 z-40 bg-black" })), container);
78
+ };
79
+ exports.default = (0, react_1.forwardRef)(Modal);
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ export type TabOptions = Record<string, TabOption>;
3
+ export type TabOption = {
4
+ label: string;
5
+ };
6
+ export type TabsProps = {
7
+ value: string;
8
+ options: TabOptions;
9
+ onChange?: (value: string) => void;
10
+ };
11
+ export declare const Tabs: ({ value, options, onChange }: TabsProps) => React.JSX.Element;
@@ -0,0 +1,46 @@
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.Tabs = void 0;
30
+ const react_1 = require("@headlessui/react");
31
+ const react_2 = __importStar(require("react"));
32
+ const clsx_1 = __importDefault(require("clsx"));
33
+ const Tabs = ({ value, options, onChange }) => (react_2.default.createElement(react_1.Tab.Group
34
+ // Check what index the selected tab is, otherwise default to first tab
35
+ , {
36
+ // Check what index the selected tab is, otherwise default to first tab
37
+ defaultIndex: Object.keys(options).indexOf(value) || 0,
38
+ // Check what the selected tab key is and trigger onChange
39
+ onChange: (index) => {
40
+ const selectedTab = Object.keys(options)[index];
41
+ onChange?.(selectedTab);
42
+ } },
43
+ react_2.default.createElement(react_1.Tab.List, { className: "grid grid-flow-col h-10 border-b border-gray-300" }, Object.entries(options).map(([key, option]) => (react_2.default.createElement(react_1.Tab, { key: key, as: react_2.Fragment }, ({ selected }) => (react_2.default.createElement("div", { className: "flex flex-col justify-between", "data-testid": key, "aria-selected": selected },
44
+ react_2.default.createElement("button", { type: "button", className: (0, clsx_1.default)('mt-[7px] text-gray-800', selected && 'font-bold') }, option.label),
45
+ selected && react_2.default.createElement("span", { className: "h-[3px] bg-gray-800 w-11/12 self-center rounded-t-sm" })))))))));
46
+ exports.Tabs = Tabs;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ type ToolbarDropdownProps = {
3
+ children: JSX.Element | JSX.Element[];
4
+ label: string;
5
+ };
6
+ declare const ToolbarDropdown: ({ children, label }: ToolbarDropdownProps) => React.JSX.Element;
7
+ export default ToolbarDropdown;