strapi-plugin-comments 2.1.7 → 2.2.0-beta.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 (170) hide show
  1. package/README.md +11 -2
  2. package/admin/src/components/Avatar/index.d.ts +3 -2
  3. package/admin/src/components/Avatar/index.js +2 -2
  4. package/admin/src/components/CommentReviewModal/index.d.ts +11 -0
  5. package/admin/src/components/CommentReviewModal/index.js +19 -0
  6. package/admin/src/components/ConfirmationDialog/index.d.ts +12 -10
  7. package/admin/src/components/ConfirmationDialog/index.js +3 -3
  8. package/admin/src/components/DiscussionStatus/index.d.ts +2 -1
  9. package/admin/src/components/DiscussionThread/index.d.ts +11 -5
  10. package/admin/src/components/DiscussionThread/index.js +3 -3
  11. package/admin/src/components/DiscussionThreadItem/index.d.ts +2 -7
  12. package/admin/src/components/DiscussionThreadItem/index.js +3 -12
  13. package/admin/src/components/DiscussionThreadItemActions/index.d.ts +10 -6
  14. package/admin/src/components/DiscussionThreadItemActions/index.js +75 -53
  15. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +9 -6
  16. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +6 -9
  17. package/admin/src/components/DiscussionThreadItemFooter/index.d.ts +14 -7
  18. package/admin/src/components/DiscussionThreadItemFooter/index.js +3 -3
  19. package/admin/src/components/DiscussionThreadItemReviewAction/index.d.ts +14 -18
  20. package/admin/src/components/DiscussionThreadItemReviewAction/index.js +71 -52
  21. package/admin/src/components/FormSwitch/index.d.ts +2 -1
  22. package/admin/src/components/Hint/index.d.ts +14 -0
  23. package/admin/src/components/Hint/index.js +22 -0
  24. package/admin/src/components/LoadingIndicatorOverlay/index.d.ts +2 -1
  25. package/admin/src/components/ModeratorResponse/index.d.ts +8 -0
  26. package/admin/src/components/ModeratorResponse/index.js +108 -0
  27. package/admin/src/components/ModeratorResponse/styles.d.ts +2 -0
  28. package/admin/src/components/ModeratorResponse/styles.js +12 -0
  29. package/admin/src/components/ModeratorResponseModal/ModeratorResponseModal.d.ts +11 -0
  30. package/admin/src/components/ModeratorResponseModal/ModeratorResponseModal.js +98 -0
  31. package/admin/src/components/Nav/index.d.ts +2 -1
  32. package/admin/src/components/Nav/index.js +6 -9
  33. package/admin/src/components/PluginIcon/index.d.ts +2 -1
  34. package/admin/src/components/PluginIcon/index.js +2 -6
  35. package/admin/src/components/PreviewWysiwyg/Wrapper.d.ts +3 -0
  36. package/admin/src/components/PreviewWysiwyg/Wrapper.js +162 -0
  37. package/admin/src/components/PreviewWysiwyg/index.d.ts +7 -0
  38. package/admin/src/components/PreviewWysiwyg/index.js +39 -0
  39. package/admin/src/components/PreviewWysiwyg/utils/mdRenderer.d.ts +3 -0
  40. package/admin/src/components/PreviewWysiwyg/utils/mdRenderer.js +88 -0
  41. package/admin/src/components/PreviewWysiwyg/utils/satinizeHtml.d.ts +3 -0
  42. package/admin/src/components/PreviewWysiwyg/utils/satinizeHtml.js +18 -0
  43. package/admin/src/components/ReportsActions/components/BlockMenu/index.d.ts +16 -0
  44. package/admin/src/components/ReportsActions/components/BlockMenu/index.js +51 -0
  45. package/admin/src/components/ReportsActions/index.d.ts +12 -0
  46. package/admin/src/components/ReportsActions/index.js +31 -0
  47. package/admin/src/components/ReportsReviewModal/index.d.ts +14 -8
  48. package/admin/src/components/ReportsReviewTable/index.d.ts +13 -24
  49. package/admin/src/components/ReportsReviewTable/index.js +11 -24
  50. package/admin/src/components/StatusBadge/index.d.ts +2 -1
  51. package/admin/src/components/TableFilters/index.d.ts +12 -2
  52. package/admin/src/components/TableFilters/index.js +2 -2
  53. package/admin/src/components/TablePagination/index.d.ts +9 -2
  54. package/admin/src/components/Wysiwyg/Editor.d.ts +17 -0
  55. package/admin/src/components/Wysiwyg/Editor.js +84 -0
  56. package/admin/src/components/Wysiwyg/EditorLayout.d.ts +12 -0
  57. package/admin/src/components/Wysiwyg/EditorLayout.js +99 -0
  58. package/admin/src/components/Wysiwyg/EditorStylesContainer.d.ts +2 -0
  59. package/admin/src/components/Wysiwyg/EditorStylesContainer.js +348 -0
  60. package/admin/src/components/Wysiwyg/WysiwygFooter.d.ts +7 -0
  61. package/admin/src/components/Wysiwyg/WysiwygFooter.js +25 -0
  62. package/admin/src/components/Wysiwyg/WysiwygNav.d.ts +13 -0
  63. package/admin/src/components/Wysiwyg/WysiwygNav.js +118 -0
  64. package/admin/src/components/Wysiwyg/WysiwygStyles.d.ts +8 -0
  65. package/admin/src/components/Wysiwyg/WysiwygStyles.js +59 -0
  66. package/admin/src/components/Wysiwyg/index.d.ts +28 -0
  67. package/admin/src/components/Wysiwyg/index.js +136 -0
  68. package/admin/src/components/Wysiwyg/tests/index.test.d.ts +2 -0
  69. package/admin/src/components/Wysiwyg/tests/index.test.js +1633 -0
  70. package/admin/src/components/Wysiwyg/utils/continueList.d.ts +3 -0
  71. package/admin/src/components/Wysiwyg/utils/continueList.js +83 -0
  72. package/admin/src/components/Wysiwyg/utils/utils.d.ts +15 -0
  73. package/admin/src/components/Wysiwyg/utils/utils.js +249 -0
  74. package/admin/src/components/icons/comments.d.ts +2 -1
  75. package/admin/src/components/icons/index.d.ts +2 -5
  76. package/admin/src/components/icons/index.js +24 -12
  77. package/admin/src/components/icons/lock.d.ts +2 -1
  78. package/admin/src/components/icons/review.d.ts +2 -1
  79. package/admin/src/components/icons/strapiIcons.d.ts +24 -0
  80. package/admin/src/components/icons/strapiIcons.js +35 -0
  81. package/admin/src/components/icons/unlock.d.ts +2 -1
  82. package/admin/src/custom-fields/comments/components/icon.d.ts +3 -0
  83. package/admin/src/custom-fields/comments/components/icon.js +14 -0
  84. package/admin/src/custom-fields/comments/components/index.d.ts +3 -0
  85. package/admin/src/custom-fields/comments/components/index.js +19 -0
  86. package/admin/src/custom-fields/comments/components/input/index.d.ts +3 -0
  87. package/admin/src/custom-fields/comments/components/input/index.js +5 -0
  88. package/admin/src/custom-fields/comments/components/input/input.d.ts +4 -0
  89. package/admin/src/custom-fields/comments/components/input/input.js +102 -0
  90. package/admin/src/custom-fields/comments/components/input/types.d.ts +10 -0
  91. package/admin/src/custom-fields/comments/components/input/types.js +3 -0
  92. package/admin/src/custom-fields/comments/components/input/utils.d.ts +35 -0
  93. package/admin/src/custom-fields/comments/components/input/utils.js +146 -0
  94. package/admin/src/custom-fields/comments/index.d.ts +3 -0
  95. package/admin/src/custom-fields/comments/index.js +53 -0
  96. package/admin/src/custom-fields/index.d.ts +3 -0
  97. package/admin/src/custom-fields/index.js +13 -0
  98. package/admin/src/hooks/useConfig.d.ts +4 -4
  99. package/admin/src/hooks/useConfig.js +3 -6
  100. package/admin/src/hooks/useReportsActionsHandlers.d.ts +19 -0
  101. package/admin/src/hooks/useReportsActionsHandlers.js +70 -0
  102. package/admin/src/index.d.ts +2 -1
  103. package/admin/src/index.js +4 -2
  104. package/admin/src/pages/App/index.js +8 -7
  105. package/admin/src/pages/App/reducer/index.d.ts +1 -1
  106. package/admin/src/pages/ComingSoonPage/index.d.ts +2 -1
  107. package/admin/src/pages/ComingSoonPage/index.js +2 -2
  108. package/admin/src/pages/Details/components/DetailsEntity/index.d.ts +8 -6
  109. package/admin/src/pages/Details/components/DetailsFilters/index.d.ts +5 -3
  110. package/admin/src/pages/Details/index.js +10 -7
  111. package/admin/src/pages/Discover/components/DiscoverTableRow/index.d.ts +11 -5
  112. package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +7 -81
  113. package/admin/src/pages/Discover/index.js +14 -13
  114. package/admin/src/pages/NoAccessPage/index.d.ts +4 -0
  115. package/admin/src/pages/NoAccessPage/index.js +31 -0
  116. package/admin/src/pages/Reports/components/ReportsTableRow/index.d.ts +16 -0
  117. package/admin/src/pages/Reports/components/ReportsTableRow/index.js +91 -0
  118. package/admin/src/pages/Reports/components/ReportsTableRow/styles.d.ts +2 -0
  119. package/admin/src/pages/Reports/components/ReportsTableRow/styles.js +14 -0
  120. package/admin/src/pages/Reports/index.d.ts +4 -0
  121. package/admin/src/pages/Reports/index.js +196 -0
  122. package/admin/src/pages/Reports/utils/api.d.ts +2 -0
  123. package/admin/src/pages/Reports/utils/api.js +16 -0
  124. package/admin/src/pages/Reports/utils/filtersSchema.d.ts +11 -0
  125. package/admin/src/pages/Reports/utils/filtersSchema.js +11 -0
  126. package/admin/src/pages/Settings/index.d.ts +2 -1
  127. package/admin/src/pages/Settings/index.js +6 -7
  128. package/admin/src/pages/utils/api.d.ts +17 -10
  129. package/admin/src/pages/utils/api.js +25 -2
  130. package/admin/src/reducers.d.ts +1 -1
  131. package/admin/src/translations/en.json +49 -1
  132. package/admin/src/utils/axiosInstance.d.ts +1 -1
  133. package/admin/src/utils/constants.d.ts +9 -5
  134. package/admin/src/utils/constants.js +5 -3
  135. package/admin/src/utils/errors.d.ts +5 -0
  136. package/admin/src/utils/errors.js +10 -0
  137. package/admin/src/utils/functions.d.ts +2 -0
  138. package/admin/src/utils/functions.js +11 -0
  139. package/admin/src/utils/getMessage.d.ts +1 -1
  140. package/admin/src/utils/getMessage.js +1 -1
  141. package/admin/src/utils/getRelatedGroups.d.ts +6 -2
  142. package/admin/src/utils/handleAPIError.d.ts +1 -1
  143. package/admin/src/utils/index.d.ts +16 -11
  144. package/admin/src/utils/index.js +12 -1
  145. package/admin/src/utils/renderInitials.js +6 -5
  146. package/admin/src/utils/resolveCommentStatus.d.ts +8 -2
  147. package/admin/src/utils/resolveReportStatus.d.ts +4 -0
  148. package/admin/src/utils/resolveReportStatus.js +23 -0
  149. package/admin/src/utils/resolveReportStatusColor.d.ts +4 -0
  150. package/admin/src/utils/resolveReportStatusColor.js +17 -0
  151. package/package.json +7 -4
  152. package/server/controllers/admin.js +67 -2
  153. package/server/index.d.ts +1 -1
  154. package/server/register/custom-fields/comments.d.ts +6 -0
  155. package/server/register/custom-fields/comments.js +9 -0
  156. package/server/register/custom-fields/index.d.ts +3 -0
  157. package/server/register/custom-fields/index.js +14 -0
  158. package/server/register/index.d.ts +4 -0
  159. package/server/register/index.js +8 -0
  160. package/server/routes/admin.js +56 -0
  161. package/server/services/admin.d.ts +1 -1
  162. package/server/services/admin.js +196 -10
  163. package/server/services/client.js +1 -1
  164. package/server/utils/error.js +1 -1
  165. package/strapi-server.d.ts +1 -1
  166. package/tsconfig.tsbuildinfo +1 -1
  167. package/types/utils.d.ts +5 -0
  168. package/types/utils.js +10 -0
  169. package/server/register.d.ts +0 -3
  170. package/server/register.js +0 -4
@@ -0,0 +1,118 @@
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_intl_1 = require("react-intl");
31
+ const FocusTrap_1 = require("@strapi/design-system/FocusTrap");
32
+ const Box_1 = require("@strapi/design-system/Box");
33
+ const Button_1 = require("@strapi/design-system/Button");
34
+ const IconButton_1 = require("@strapi/design-system/IconButton");
35
+ const Select_1 = require("@strapi/design-system/Select");
36
+ const Popover_1 = require("@strapi/design-system/Popover");
37
+ const Flex_1 = require("@strapi/design-system/Flex");
38
+ const Bold_1 = __importDefault(require("@strapi/icons/Bold"));
39
+ const Italic_1 = __importDefault(require("@strapi/icons/Italic"));
40
+ const Underline_1 = __importDefault(require("@strapi/icons/Underline"));
41
+ const StrikeThrough_1 = __importDefault(require("@strapi/icons/StrikeThrough"));
42
+ const BulletList_1 = __importDefault(require("@strapi/icons/BulletList"));
43
+ const NumberList_1 = __importDefault(require("@strapi/icons/NumberList"));
44
+ const Code_1 = __importDefault(require("@strapi/icons/Code"));
45
+ const Picture_1 = __importDefault(require("@strapi/icons/Picture"));
46
+ const Link_1 = __importDefault(require("@strapi/icons/Link"));
47
+ const Quote_1 = __importDefault(require("@strapi/icons/Quote"));
48
+ const More_1 = __importDefault(require("@strapi/icons/More"));
49
+ const WysiwygStyles_1 = require("./WysiwygStyles");
50
+ const WysiwygNav = ({ disabled, editorRef, isExpandMode, isPreviewMode, onActionClick, onToggleMediaLib, onTogglePreviewMode, }) => {
51
+ const [visiblePopover, setVisiblePopover] = (0, react_1.useState)(false);
52
+ const { formatMessage } = (0, react_intl_1.useIntl)();
53
+ const selectPlaceholder = formatMessage({
54
+ id: 'components.Wysiwyg.selectOptions.title',
55
+ defaultMessage: 'Add a title',
56
+ });
57
+ const buttonMoreRef = (0, react_1.useRef)();
58
+ const handleTogglePopover = () => {
59
+ setVisiblePopover(prev => !prev);
60
+ };
61
+ if (disabled || isPreviewMode) {
62
+ return (react_1.default.createElement(Box_1.Box, { padding: 2, background: "neutral100" },
63
+ react_1.default.createElement(Flex_1.Flex, { justifyContent: "space-between" },
64
+ react_1.default.createElement(Flex_1.Flex, null,
65
+ react_1.default.createElement(Select_1.Select, { disabled: true, id: "selectTitle", placeholder: selectPlaceholder, size: "S", "aria-label": selectPlaceholder },
66
+ react_1.default.createElement(Select_1.Option, { value: "h1" }, "h1"),
67
+ react_1.default.createElement(Select_1.Option, { value: "h2" }, "h2"),
68
+ react_1.default.createElement(Select_1.Option, { value: "h3" }, "h3"),
69
+ react_1.default.createElement(Select_1.Option, { value: "h4" }, "h4"),
70
+ react_1.default.createElement(Select_1.Option, { value: "h5" }, "h5"),
71
+ react_1.default.createElement(Select_1.Option, { value: "h6" }, "h6")),
72
+ react_1.default.createElement(WysiwygStyles_1.MainButtons, null,
73
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { disabled: true, id: "Bold", label: "Bold", name: "Bold", icon: react_1.default.createElement(Bold_1.default, null) }),
74
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { disabled: true, id: "Italic", label: "Italic", name: "Italic", icon: react_1.default.createElement(Italic_1.default, null) }),
75
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { disabled: true, id: "Underline", label: "Underline", name: "Underline", icon: react_1.default.createElement(Underline_1.default, null) })),
76
+ react_1.default.createElement(WysiwygStyles_1.MoreButton, { disabled: true, id: "more", label: "More", icon: react_1.default.createElement(More_1.default, null) })),
77
+ !isExpandMode && (react_1.default.createElement(Button_1.Button, { onClick: onTogglePreviewMode, variant: "tertiary", id: "preview" }, formatMessage({
78
+ id: 'components.Wysiwyg.ToggleMode.markdown-mode',
79
+ defaultMessage: 'Markdown mode',
80
+ }))))));
81
+ }
82
+ return (react_1.default.createElement(Box_1.Box, { padding: 2, background: "neutral100" },
83
+ react_1.default.createElement(Flex_1.Flex, { justifyContent: "space-between" },
84
+ react_1.default.createElement(Flex_1.Flex, null,
85
+ react_1.default.createElement(Select_1.Select, { id: "selectTitle", placeholder: selectPlaceholder, size: "S", onChange: (value) => onActionClick(value, editorRef) },
86
+ react_1.default.createElement(Select_1.Option, { value: "h1" }, "h1"),
87
+ react_1.default.createElement(Select_1.Option, { value: "h2" }, "h2"),
88
+ react_1.default.createElement(Select_1.Option, { value: "h3" }, "h3"),
89
+ react_1.default.createElement(Select_1.Option, { value: "h4" }, "h4"),
90
+ react_1.default.createElement(Select_1.Option, { value: "h5" }, "h5"),
91
+ react_1.default.createElement(Select_1.Option, { value: "h6" }, "h6")),
92
+ react_1.default.createElement(WysiwygStyles_1.MainButtons, null,
93
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Bold', editorRef), id: "Bold", label: "Bold", name: "Bold", icon: react_1.default.createElement(Bold_1.default, null) }),
94
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Italic', editorRef), id: "Italic", label: "Italic", name: "Italic", icon: react_1.default.createElement(Italic_1.default, null) }),
95
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Underline', editorRef), id: "Underline", label: "Underline", name: "Underline", icon: react_1.default.createElement(Underline_1.default, null) })),
96
+ react_1.default.createElement(WysiwygStyles_1.MoreButton, { ref: buttonMoreRef, onClick: handleTogglePopover, id: "more", label: "More", icon: react_1.default.createElement(More_1.default, null) }),
97
+ visiblePopover && (react_1.default.createElement(Popover_1.Popover, { centered: true, source: buttonMoreRef, spacing: 4, id: "popover" },
98
+ react_1.default.createElement(FocusTrap_1.FocusTrap, { onEscape: handleTogglePopover, restoreFocus: false },
99
+ react_1.default.createElement(Flex_1.Flex, null,
100
+ react_1.default.createElement(WysiwygStyles_1.IconButtonGroupMargin, null,
101
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Strikethrough', editorRef, handleTogglePopover), id: "Strikethrough", label: "Strikethrough", name: "Strikethrough", icon: react_1.default.createElement(StrikeThrough_1.default, null) }),
102
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('BulletList', editorRef, handleTogglePopover), id: "BulletList", label: "BulletList", name: "BulletList", icon: react_1.default.createElement(BulletList_1.default, null) }),
103
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('NumberList', editorRef, handleTogglePopover), id: "NumberList", label: "NumberList", name: "NumberList", icon: react_1.default.createElement(NumberList_1.default, null) })),
104
+ react_1.default.createElement(IconButton_1.IconButtonGroup, null,
105
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Code', editorRef, handleTogglePopover), id: "Code", label: "Code", name: "Code", icon: react_1.default.createElement(Code_1.default, null) }),
106
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => {
107
+ handleTogglePopover();
108
+ onToggleMediaLib();
109
+ }, id: "Image", label: "Image", name: "Image", icon: react_1.default.createElement(Picture_1.default, null) }),
110
+ react_1.default.createElement(WysiwygStyles_1.CustomLinkIconButton, { onClick: () => onActionClick('Link', editorRef, handleTogglePopover), id: "Link", label: "Link", name: "Link", icon: react_1.default.createElement(Link_1.default, null) }),
111
+ react_1.default.createElement(WysiwygStyles_1.CustomIconButton, { onClick: () => onActionClick('Quote', editorRef, handleTogglePopover), id: "Quote", label: "Quote", name: "Quote", icon: react_1.default.createElement(Quote_1.default, null) }))))))),
112
+ onTogglePreviewMode && (react_1.default.createElement(Button_1.Button, { onClick: onTogglePreviewMode, variant: "tertiary", id: "preview" }, formatMessage({
113
+ id: 'components.Wysiwyg.ToggleMode.preview-mode',
114
+ defaultMessage: 'Preview mode',
115
+ }))))));
116
+ };
117
+ exports.default = WysiwygNav;
118
+ //# sourceMappingURL=WysiwygNav.js.map
@@ -0,0 +1,8 @@
1
+ export declare const CustomIconButton: any;
2
+ export declare const CustomLinkIconButton: any;
3
+ export declare const MainButtons: any;
4
+ export declare const MoreButton: any;
5
+ export declare const IconButtonGroupMargin: any;
6
+ export declare const EditorAndPreviewWrapper: any;
7
+ export declare const ExpandButton: any;
8
+ //# sourceMappingURL=WysiwygStyles.d.ts.map
@@ -0,0 +1,59 @@
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.ExpandButton = exports.EditorAndPreviewWrapper = exports.IconButtonGroupMargin = exports.MoreButton = exports.MainButtons = exports.CustomLinkIconButton = exports.CustomIconButton = void 0;
7
+ const styled_components_1 = __importDefault(require("styled-components"));
8
+ const IconButton_1 = require("@strapi/design-system/IconButton");
9
+ const BaseButton_1 = require("@strapi/design-system/BaseButton");
10
+ exports.CustomIconButton = (0, styled_components_1.default)(IconButton_1.IconButton) `
11
+ padding: ${({ theme }) => theme.spaces[2]};
12
+ /* Trick to prevent the outline from overflowing because of the general outline-offset */
13
+ outline-offset: -2px !important;
14
+
15
+ svg {
16
+ width: ${18 / 16}rem;
17
+ height: ${18 / 16}rem;
18
+ }
19
+ `;
20
+ exports.CustomLinkIconButton = (0, styled_components_1.default)(exports.CustomIconButton) `
21
+ svg {
22
+ width: ${8 / 16}rem;
23
+ height: ${8 / 16}rem;
24
+ }
25
+ `;
26
+ exports.MainButtons = (0, styled_components_1.default)(IconButton_1.IconButtonGroup) `
27
+ margin-left: ${({ theme }) => theme.spaces[4]};
28
+ `;
29
+ exports.MoreButton = (0, styled_components_1.default)(IconButton_1.IconButton) `
30
+ margin: ${({ theme }) => `0 ${theme.spaces[2]}`};
31
+ padding: ${({ theme }) => theme.spaces[2]};
32
+
33
+ svg {
34
+ width: ${18 / 16}rem;
35
+ height: ${18 / 16}rem;
36
+ }
37
+ `;
38
+ exports.IconButtonGroupMargin = (0, styled_components_1.default)(IconButton_1.IconButtonGroup) `
39
+ margin-right: ${({ theme }) => `${theme.spaces[2]}`};
40
+ `;
41
+ exports.EditorAndPreviewWrapper = styled_components_1.default.div `
42
+ position: relative;
43
+ height: calc(100% - 48px);
44
+ `;
45
+ exports.ExpandButton = (0, styled_components_1.default)(BaseButton_1.BaseButton) `
46
+ background-color: transparent;
47
+ border: none;
48
+ align-items: center;
49
+
50
+ svg {
51
+ margin-left: ${({ theme }) => `${theme.spaces[2]}`};
52
+ path {
53
+ fill: ${({ theme }) => theme.colors.neutral700};
54
+ width: ${12 / 16}rem;
55
+ height: ${12 / 16}rem;
56
+ }
57
+ }
58
+ `;
59
+ //# sourceMappingURL=WysiwygStyles.js.map
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ declare type WysiwygProps = {
3
+ description?: {
4
+ id: string;
5
+ defaultMessage: string;
6
+ values: {};
7
+ };
8
+ disabled?: boolean;
9
+ error?: string;
10
+ intlLabel: {
11
+ id: string;
12
+ defaultMessage: string;
13
+ values: {};
14
+ };
15
+ labelAction?: JSX.Element;
16
+ name: string;
17
+ onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
18
+ placeholder?: {
19
+ id: string;
20
+ defaultMessage: string;
21
+ values: {};
22
+ };
23
+ required?: boolean;
24
+ value: string;
25
+ };
26
+ declare const Wysiwyg: React.FC<WysiwygProps>;
27
+ export default Wysiwyg;
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,136 @@
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 styled_components_1 = __importDefault(require("styled-components"));
31
+ const react_intl_1 = require("react-intl");
32
+ const Typography_1 = require("@strapi/design-system/Typography");
33
+ const Box_1 = require("@strapi/design-system/Box");
34
+ const Stack_1 = require("@strapi/design-system/Stack");
35
+ const helper_plugin_1 = require("@strapi/helper-plugin");
36
+ const Editor_1 = __importDefault(require("./Editor"));
37
+ const WysiwygNav_1 = __importDefault(require("./WysiwygNav"));
38
+ const WysiwygFooter_1 = __importDefault(require("./WysiwygFooter"));
39
+ const Hint_1 = __importDefault(require("../Hint"));
40
+ const utils_1 = require("./utils/utils");
41
+ const EditorLayout_1 = require("./EditorLayout");
42
+ const LabelAction = (0, styled_components_1.default)(Box_1.Box) `
43
+ svg path {
44
+ fill: ${({ theme }) => theme.colors.neutral500};
45
+ }
46
+ `;
47
+ const TypographyAsterisk = (0, styled_components_1.default)(Typography_1.Typography) `
48
+ line-height: 0;
49
+ `;
50
+ const Wysiwyg = ({ description, disabled, error, intlLabel, labelAction, name, onChange, placeholder, value, required, }) => {
51
+ const { formatMessage } = (0, react_intl_1.useIntl)();
52
+ const textareaRef = (0, react_1.useRef)(null);
53
+ const editorRef = (0, react_1.useRef)(null);
54
+ const [isPreviewMode, setIsPreviewMode] = (0, react_1.useState)(false);
55
+ const [mediaLibVisible, setMediaLibVisible] = (0, react_1.useState)(false);
56
+ const [isExpandMode, setIsExpandMode] = (0, react_1.useState)(false);
57
+ const { components } = (0, helper_plugin_1.useLibrary)();
58
+ const MediaLibraryDialog = components['media-library'];
59
+ const handleToggleMediaLib = () => setMediaLibVisible(prev => !prev);
60
+ const handleTogglePreviewMode = () => setIsPreviewMode(prev => !prev);
61
+ const handleToggleExpand = () => {
62
+ setIsPreviewMode(false);
63
+ setIsExpandMode(prev => !prev);
64
+ };
65
+ const handleActionClick = (value, currentEditorRef, togglePopover) => {
66
+ switch (value) {
67
+ case 'Link':
68
+ case 'Strikethrough': {
69
+ (0, utils_1.markdownHandler)(currentEditorRef, value);
70
+ togglePopover();
71
+ break;
72
+ }
73
+ case 'Code':
74
+ case 'Quote': {
75
+ (0, utils_1.quoteAndCodeHandler)(currentEditorRef, value);
76
+ togglePopover();
77
+ break;
78
+ }
79
+ case 'Bold':
80
+ case 'Italic':
81
+ case 'Underline': {
82
+ (0, utils_1.markdownHandler)(currentEditorRef, value);
83
+ break;
84
+ }
85
+ case 'BulletList':
86
+ case 'NumberList': {
87
+ (0, utils_1.listHandler)(currentEditorRef, value);
88
+ togglePopover();
89
+ break;
90
+ }
91
+ case 'h1':
92
+ case 'h2':
93
+ case 'h3':
94
+ case 'h4':
95
+ case 'h5':
96
+ case 'h6': {
97
+ (0, utils_1.titleHandler)(currentEditorRef, value);
98
+ break;
99
+ }
100
+ default: {
101
+ }
102
+ }
103
+ };
104
+ const handleSelectAssets = (files) => {
105
+ const formattedFiles = files.map((f) => ({
106
+ alt: f.alternativeText || f.name,
107
+ url: (0, helper_plugin_1.prefixFileUrlWithBackendUrl)(f.url),
108
+ mime: f.mime,
109
+ }));
110
+ (0, utils_1.insertFile)(editorRef, formattedFiles);
111
+ setMediaLibVisible(false);
112
+ };
113
+ const formattedPlaceholder = placeholder
114
+ ? formatMessage({ id: placeholder.id, defaultMessage: placeholder.defaultMessage }, { ...placeholder.values })
115
+ : '';
116
+ const label = intlLabel.id
117
+ ? formatMessage({ id: intlLabel.id, defaultMessage: intlLabel.defaultMessage }, { ...intlLabel.values })
118
+ : name;
119
+ return (react_1.default.createElement(react_1.default.Fragment, null,
120
+ react_1.default.createElement(Stack_1.Stack, { spacing: 1 },
121
+ react_1.default.createElement(Stack_1.Stack, { horizontal: true, spacing: 1 },
122
+ react_1.default.createElement(Typography_1.Typography, { variant: "pi", fontWeight: "bold", textColor: "neutral800" },
123
+ label,
124
+ required && react_1.default.createElement(TypographyAsterisk, { textColor: "danger600" }, "*")),
125
+ labelAction && react_1.default.createElement(LabelAction, { paddingLeft: 1 }, labelAction)),
126
+ react_1.default.createElement(EditorLayout_1.EditorLayout, { isExpandMode: isExpandMode, error: error, previewContent: value, onCollapse: handleToggleExpand },
127
+ react_1.default.createElement(WysiwygNav_1.default, { isExpandMode: isExpandMode, editorRef: editorRef, isPreviewMode: isPreviewMode, onActionClick: handleActionClick, onToggleMediaLib: handleToggleMediaLib, onTogglePreviewMode: isExpandMode ? undefined : handleTogglePreviewMode, disabled: disabled }),
128
+ react_1.default.createElement(Editor_1.default, { disabled: disabled, isExpandMode: isExpandMode, editorRef: editorRef, error: error, isPreviewMode: isPreviewMode, name: name, onChange: onChange, placeholder: formattedPlaceholder, textareaRef: textareaRef, value: value }),
129
+ !isExpandMode && react_1.default.createElement(WysiwygFooter_1.default, { onToggleExpand: handleToggleExpand })),
130
+ react_1.default.createElement(Hint_1.default, { description: description, name: name, error: error, id: name })),
131
+ error && (react_1.default.createElement(Box_1.Box, { paddingTop: 1 },
132
+ react_1.default.createElement(Typography_1.Typography, { variant: "pi", textColor: "danger600", "data-strapi-field-error": true }, error))),
133
+ mediaLibVisible && (react_1.default.createElement(MediaLibraryDialog, { onClose: handleToggleMediaLib, onSelectAssets: handleSelectAssets }))));
134
+ };
135
+ exports.default = Wysiwyg;
136
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map