@team-monolith/cds 0.28.0 → 0.29.1

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 (56) hide show
  1. package/dist/components/Button.d.ts +1 -1
  2. package/dist/components/Button.js +14 -12
  3. package/dist/components/SquareButton.js +13 -12
  4. package/dist/index.d.ts +1 -2
  5. package/dist/index.js +1 -2
  6. package/dist/patterns/ReactEditorJS/FormEditorJS.d.ts +8 -0
  7. package/dist/patterns/ReactEditorJS/FormEditorJS.js +133 -0
  8. package/dist/patterns/ReactEditorJS/Layout.d.ts +6 -0
  9. package/dist/patterns/ReactEditorJS/Layout.js +14 -0
  10. package/dist/patterns/ReactEditorJS/ReactEditorJS.d.ts +11 -0
  11. package/dist/patterns/ReactEditorJS/ReactEditorJS.js +137 -0
  12. package/dist/patterns/ReactEditorJS/customTools/block/Callout.d.ts +40 -0
  13. package/dist/patterns/ReactEditorJS/customTools/block/Callout.js +135 -0
  14. package/dist/patterns/ReactEditorJS/customTools/block/Delimiter.d.ts +10 -0
  15. package/dist/patterns/ReactEditorJS/customTools/block/Delimiter.js +50 -0
  16. package/dist/patterns/ReactEditorJS/customTools/block/Header.d.ts +60 -0
  17. package/dist/patterns/ReactEditorJS/customTools/block/Header.js +179 -0
  18. package/dist/patterns/ReactEditorJS/customTools/block/Image.d.ts +21 -0
  19. package/dist/patterns/ReactEditorJS/customTools/block/Image.js +84 -0
  20. package/dist/patterns/ReactEditorJS/customTools/block/NestedList.d.ts +28 -0
  21. package/dist/patterns/ReactEditorJS/customTools/block/NestedList.js +134 -0
  22. package/dist/patterns/ReactEditorJS/customTools/block/Quote.d.ts +40 -0
  23. package/dist/patterns/ReactEditorJS/customTools/block/Quote.js +135 -0
  24. package/dist/patterns/ReactEditorJS/customTools/block/Raw.d.ts +26 -0
  25. package/dist/patterns/ReactEditorJS/customTools/block/Raw.js +119 -0
  26. package/dist/patterns/ReactEditorJS/customTools/block/Table.d.ts +10 -0
  27. package/dist/patterns/ReactEditorJS/customTools/block/Table.js +67 -0
  28. package/dist/patterns/ReactEditorJS/customTools/index.d.ts +16 -0
  29. package/dist/patterns/ReactEditorJS/customTools/index.js +16 -0
  30. package/dist/patterns/ReactEditorJS/customTools/inline/Bold.d.ts +52 -0
  31. package/dist/patterns/ReactEditorJS/customTools/inline/Bold.js +92 -0
  32. package/dist/patterns/ReactEditorJS/customTools/inline/InlineCode.d.ts +4 -0
  33. package/dist/patterns/ReactEditorJS/customTools/inline/InlineCode.js +32 -0
  34. package/dist/patterns/ReactEditorJS/customTools/inline/Italic.d.ts +48 -0
  35. package/dist/patterns/ReactEditorJS/customTools/inline/Italic.js +88 -0
  36. package/dist/patterns/ReactEditorJS/customTools/inline/StrikeThrough.d.ts +4 -0
  37. package/dist/patterns/ReactEditorJS/customTools/inline/StrikeThrough.js +32 -0
  38. package/dist/patterns/ReactEditorJS/customTools/inline/Underline.d.ts +4 -0
  39. package/dist/patterns/ReactEditorJS/customTools/inline/Underline.js +32 -0
  40. package/dist/patterns/ReactEditorJS/customTools/tunes/Delete.d.ts +30 -0
  41. package/dist/patterns/ReactEditorJS/customTools/tunes/Delete.js +40 -0
  42. package/dist/patterns/ReactEditorJS/customTools/tunes/MoveDown.d.ts +34 -0
  43. package/dist/patterns/ReactEditorJS/customTools/tunes/MoveDown.js +62 -0
  44. package/dist/patterns/ReactEditorJS/customTools/tunes/MoveUp.d.ts +34 -0
  45. package/dist/patterns/ReactEditorJS/customTools/tunes/MoveUp.js +72 -0
  46. package/dist/patterns/ReactEditorJS/i18n.d.ts +127 -0
  47. package/dist/patterns/ReactEditorJS/i18n.js +127 -0
  48. package/dist/patterns/ReactEditorJS/index.d.ts +2 -0
  49. package/dist/patterns/ReactEditorJS/index.js +2 -0
  50. package/dist/patterns/ReactEditorJS/tools.d.ts +78 -0
  51. package/dist/patterns/ReactEditorJS/tools.js +104 -0
  52. package/dist/patterns/SegmentedControl/SegmentedControlButton.js +1 -1
  53. package/dist/patterns/SegmentedControl/SegmentedControlGroup.js +1 -1
  54. package/package.json +15 -1
  55. package/dist/components/Popover.d.ts +0 -16
  56. package/dist/components/Popover.js +0 -40
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { PolymorphicProps } from "@mui/base";
3
- export type ButtonColor = "primary" | "grey" | "danger" | "textNeutral" | "textDanger" | "textPrimary" | "black";
3
+ export type ButtonColor = "primary" | "grey" | "danger" | "textNeutral" | "textDanger" | "textPrimary" | "black" | "white";
4
4
  export type ButtonSize = "large" | "medium" | "small" | "xsmall";
5
5
  export interface ButtonOwnProps<RootComponentType extends React.ElementType> {
6
6
  className?: string;
@@ -46,19 +46,21 @@ var COLOR_TO_BUTTON_STYLE = function (theme, color, disabled) {
46
46
  ? css(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n background: none;\n color: ", ";\n "], ["\n background: none;\n color: ", ";\n "])), theme.color.foreground.primaryDisabled) : css(templateObject_23 || (templateObject_23 = __makeTemplateObject(["\n background: none;\n color: ", ";\n ", "\n "], ["\n background: none;\n color: ", ";\n ", "\n "])), theme.color.foreground.primary, HOVER(css(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.neutralAltActive, theme.color.foreground.primary)))),
47
47
  black: css(templateObject_28 || (templateObject_28 = __makeTemplateObject(["\n ", "\n "], ["\n ", "\n "])), disabled
48
48
  ? css(templateObject_25 || (templateObject_25 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.blackDisabled, theme.color.foreground.neutralAltDisabled) : css(templateObject_27 || (templateObject_27 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n ", "\n "], ["\n background: ", ";\n color: ", ";\n ", "\n "])), theme.color.background.black, theme.color.foreground.neutralAlt, HOVER(css(templateObject_26 || (templateObject_26 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.blackActive, theme.color.foreground.neutralAlt)))),
49
+ white: css(templateObject_32 || (templateObject_32 = __makeTemplateObject(["\n ", "\n "], ["\n ", "\n "])), disabled
50
+ ? css(templateObject_29 || (templateObject_29 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.neutralAltDisabled, theme.color.foreground.neutralBaseDisabled) : css(templateObject_31 || (templateObject_31 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n ", "\n "], ["\n background: ", ";\n color: ", ";\n ", "\n "])), theme.color.background.neutralBase, theme.color.foreground.neutralBase, HOVER(css(templateObject_30 || (templateObject_30 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.neutralAltActive, theme.color.foreground.neutralBase)))),
49
51
  })[color];
50
52
  };
51
53
  var SIZE_TO_BUTTON_STYLE = {
52
- large: css(templateObject_29 || (templateObject_29 = __makeTemplateObject(["\n padding: 16px 20px;\n gap: 10px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "], ["\n padding: 16px 20px;\n gap: 10px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "]))),
53
- medium: css(templateObject_30 || (templateObject_30 = __makeTemplateObject(["\n padding: 14px 16px;\n gap: 8px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "], ["\n padding: 14px 16px;\n gap: 8px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "]))),
54
- small: css(templateObject_31 || (templateObject_31 = __makeTemplateObject(["\n padding: 10px 12px;\n gap: 8px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "], ["\n padding: 10px 12px;\n gap: 8px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "]))),
55
- xsmall: css(templateObject_32 || (templateObject_32 = __makeTemplateObject(["\n padding: 6px 8px;\n gap: 4px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "], ["\n padding: 6px 8px;\n gap: 4px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "]))),
54
+ large: css(templateObject_33 || (templateObject_33 = __makeTemplateObject(["\n padding: 16px 20px;\n gap: 10px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "], ["\n padding: 16px 20px;\n gap: 10px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "]))),
55
+ medium: css(templateObject_34 || (templateObject_34 = __makeTemplateObject(["\n padding: 14px 16px;\n gap: 8px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "], ["\n padding: 14px 16px;\n gap: 8px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "]))),
56
+ small: css(templateObject_35 || (templateObject_35 = __makeTemplateObject(["\n padding: 10px 12px;\n gap: 8px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "], ["\n padding: 10px 12px;\n gap: 8px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "]))),
57
+ xsmall: css(templateObject_36 || (templateObject_36 = __makeTemplateObject(["\n padding: 6px 8px;\n gap: 4px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "], ["\n padding: 6px 8px;\n gap: 4px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "]))),
56
58
  };
57
59
  var SIZE_TO_LABEL_STYLE = {
58
- large: css(templateObject_33 || (templateObject_33 = __makeTemplateObject(["\n font-size: 20px;\n line-height: 24px;\n "], ["\n font-size: 20px;\n line-height: 24px;\n "]))),
59
- medium: css(templateObject_34 || (templateObject_34 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 20px;\n "], ["\n font-size: 18px;\n line-height: 20px;\n "]))),
60
- small: css(templateObject_35 || (templateObject_35 = __makeTemplateObject(["\n font-size: 14px;\n line-height: 16px;\n "], ["\n font-size: 14px;\n line-height: 16px;\n "]))),
61
- xsmall: css(templateObject_36 || (templateObject_36 = __makeTemplateObject(["\n font-size: 14px;\n line-height: 16px;\n "], ["\n font-size: 14px;\n line-height: 16px;\n "]))),
60
+ large: css(templateObject_37 || (templateObject_37 = __makeTemplateObject(["\n font-size: 20px;\n line-height: 24px;\n "], ["\n font-size: 20px;\n line-height: 24px;\n "]))),
61
+ medium: css(templateObject_38 || (templateObject_38 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 20px;\n "], ["\n font-size: 18px;\n line-height: 20px;\n "]))),
62
+ small: css(templateObject_39 || (templateObject_39 = __makeTemplateObject(["\n font-size: 14px;\n line-height: 16px;\n "], ["\n font-size: 14px;\n line-height: 16px;\n "]))),
63
+ xsmall: css(templateObject_40 || (templateObject_40 = __makeTemplateObject(["\n font-size: 14px;\n line-height: 16px;\n "], ["\n font-size: 14px;\n line-height: 16px;\n "]))),
62
64
  };
63
65
  /**
64
66
  * [피그마](https://www.figma.com/file/yhrRFizzmhPoHdw9FbYow2/Codle-PD-Kit---Components?type=design&node-id=20-173&t=cXcCv3QijbX7MkoC-0)
@@ -67,15 +69,15 @@ var Button = React.forwardRef(function Button(props, ref) {
67
69
  var className = props.className, _a = props.component, Component = _a === void 0 ? "button" : _a, disabled = props.disabled, color = props.color, size = props.size, startIcon = props.startIcon, endIcon = props.endIcon, label = props.label, fullWidth = props.fullWidth, other = __rest(props, ["className", "component", "disabled", "color", "size", "startIcon", "endIcon", "label", "fullWidth"]);
68
70
  var theme = useTheme();
69
71
  return (_jsxs(Component, __assign({ type: "button" }, other, { className: className, ref: ref, css: [
70
- css(templateObject_39 || (templateObject_39 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border: none;\n border-radius: 8px;\n\n ", "\n\n font-family: ", ";\n text-decoration: none;\n\n width: ", ";\n "], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border: none;\n border-radius: 8px;\n\n ", "\n\n font-family: ", ";\n text-decoration: none;\n\n width: ", ";\n "])), disabled
71
- ? css(templateObject_37 || (templateObject_37 = __makeTemplateObject(["\n cursor: default;\n pointer-events: none;\n "], ["\n cursor: default;\n pointer-events: none;\n "]))) : css(templateObject_38 || (templateObject_38 = __makeTemplateObject(["\n cursor: pointer;\n "], ["\n cursor: pointer;\n "]))), theme.fontFamily.ui, fullWidth ? "100%" : "auto"),
72
+ css(templateObject_43 || (templateObject_43 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border: none;\n border-radius: 8px;\n\n ", "\n\n font-family: ", ";\n text-decoration: none;\n\n width: ", ";\n "], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n\n border: none;\n border-radius: 8px;\n\n ", "\n\n font-family: ", ";\n text-decoration: none;\n\n width: ", ";\n "])), disabled
73
+ ? css(templateObject_41 || (templateObject_41 = __makeTemplateObject(["\n cursor: default;\n pointer-events: none;\n "], ["\n cursor: default;\n pointer-events: none;\n "]))) : css(templateObject_42 || (templateObject_42 = __makeTemplateObject(["\n cursor: pointer;\n "], ["\n cursor: pointer;\n "]))), theme.fontFamily.ui, fullWidth ? "100%" : "auto"),
72
74
  COLOR_TO_BUTTON_STYLE(theme, color, Boolean(disabled)),
73
75
  SIZE_TO_BUTTON_STYLE[size],
74
76
  ], disabled: disabled }, { children: [startIcon, _jsx(Label, __assign({ size: size }, { children: label })), endIcon] })));
75
77
  });
76
- var Label = styled.span(templateObject_40 || (templateObject_40 = __makeTemplateObject(["\n font-weight: 400;\n white-space: nowrap;\n ", "\n"], ["\n font-weight: 400;\n white-space: nowrap;\n ", "\n"])), function (_a) {
78
+ var Label = styled.span(templateObject_44 || (templateObject_44 = __makeTemplateObject(["\n font-weight: 400;\n white-space: nowrap;\n ", "\n"], ["\n font-weight: 400;\n white-space: nowrap;\n ", "\n"])), function (_a) {
77
79
  var size = _a.size;
78
80
  return SIZE_TO_LABEL_STYLE[size];
79
81
  });
80
82
  export default Button;
81
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28, templateObject_29, templateObject_30, templateObject_31, templateObject_32, templateObject_33, templateObject_34, templateObject_35, templateObject_36, templateObject_37, templateObject_38, templateObject_39, templateObject_40;
83
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28, templateObject_29, templateObject_30, templateObject_31, templateObject_32, templateObject_33, templateObject_34, templateObject_35, templateObject_36, templateObject_37, templateObject_38, templateObject_39, templateObject_40, templateObject_41, templateObject_42, templateObject_43, templateObject_44;
@@ -37,28 +37,29 @@ var COLOR_TO_BUTTON_STYLE = function (theme, color) {
37
37
  primary: css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n background: ", ";\n border: none;\n color: ", ";\n\n ", "\n &:disabled {\n background: ", ";\n }\n "], ["\n background: ", ";\n border: none;\n color: ", ";\n\n ", "\n &:disabled {\n background: ", ";\n }\n "])), theme.color.background.primary, theme.color.foreground.neutralAlt, HOVER(css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n background: ", ";\n "], ["\n background: ", ";\n "])), theme.color.background.primaryActive)), theme.color.background.primaryDisabled),
38
38
  icon: css(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n background: none;\n border: none;\n color: ", ";\n\n ", "\n &:disabled {\n background: none;\n color: ", ";\n }\n "], ["\n background: none;\n border: none;\n color: ", ";\n\n ", "\n &:disabled {\n background: none;\n color: ", ";\n }\n "])), theme.color.foreground.neutralBase, HOVER(css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.neutralAltActive, theme.color.foreground.neutralBase)), theme.color.foreground.neutralBaseDisabled),
39
39
  black: css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n background: ", ";\n border: none;\n color: ", ";\n ", "\n &:disabled {\n background: ", ";\n color: ", ";\n }\n "], ["\n background: ", ";\n border: none;\n color: ", ";\n ", "\n &:disabled {\n background: ", ";\n color: ", ";\n }\n "])), theme.color.background.black, theme.color.foreground.neutralAlt, HOVER(css(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.blackActive, theme.color.foreground.neutralAlt)), theme.color.background.blackDisabled, theme.color.foreground.neutralAltDisabled),
40
+ white: css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n background: ", ";\n border: none;\n color: ", ";\n ", "\n &:disabled {\n background: ", ";\n color: ", ";\n }\n "], ["\n background: ", ";\n border: none;\n color: ", ";\n ", "\n &:disabled {\n background: ", ";\n color: ", ";\n }\n "])), theme.color.background.neutralBase, theme.color.foreground.neutralBase, HOVER(css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n background: ", ";\n color: ", ";\n "], ["\n background: ", ";\n color: ", ";\n "])), theme.color.background.neutralAltActive, theme.color.foreground.neutralBase)), theme.color.background.neutralAltDisabled, theme.color.foreground.neutralBaseDisabled),
40
41
  })[color];
41
42
  };
42
43
  var SIZE_TO_BUTTON_STYLE = {
43
- large: css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n width: 56px;\n height: 56px;\n padding: 16px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "], ["\n width: 56px;\n height: 56px;\n padding: 16px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "]))),
44
- medium: css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n width: 48px;\n height: 48px;\n padding: 14px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "], ["\n width: 48px;\n height: 48px;\n padding: 14px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "]))),
45
- small: css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n width: 36px;\n height: 36px;\n padding: 10px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "], ["\n width: 36px;\n height: 36px;\n padding: 10px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "]))),
46
- xsmall: css(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n width: 28px;\n height: 28px;\n padding: 8px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "], ["\n width: 28px;\n height: 28px;\n padding: 8px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "]))),
44
+ large: css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n width: 56px;\n height: 56px;\n padding: 16px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "], ["\n width: 56px;\n height: 56px;\n padding: 16px;\n\n svg {\n width: 24px;\n height: 24px;\n }\n "]))),
45
+ medium: css(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n width: 48px;\n height: 48px;\n padding: 14px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "], ["\n width: 48px;\n height: 48px;\n padding: 14px;\n\n svg {\n width: 20px;\n height: 20px;\n }\n "]))),
46
+ small: css(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n width: 36px;\n height: 36px;\n padding: 10px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "], ["\n width: 36px;\n height: 36px;\n padding: 10px;\n\n svg {\n width: 16px;\n height: 16px;\n }\n "]))),
47
+ xsmall: css(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n width: 28px;\n height: 28px;\n padding: 8px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "], ["\n width: 28px;\n height: 28px;\n padding: 8px;\n\n svg {\n width: 12px;\n height: 12px;\n }\n "]))),
47
48
  };
48
49
  var SIZE_TO_LABEL_STYLE = {
49
- large: css(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 28px;\n "], ["\n font-size: 18px;\n line-height: 28px;\n "]))),
50
- medium: css(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 28px;\n "], ["\n font-size: 18px;\n line-height: 28px;\n "]))),
51
- small: css(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 28px;\n "], ["\n font-size: 18px;\n line-height: 28px;\n "]))),
52
- xsmall: css(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n font-size: 14px;\n line-height: 22px;\n "], ["\n font-size: 14px;\n line-height: 22px;\n "]))),
50
+ large: css(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 28px;\n "], ["\n font-size: 18px;\n line-height: 28px;\n "]))),
51
+ medium: css(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 28px;\n "], ["\n font-size: 18px;\n line-height: 28px;\n "]))),
52
+ small: css(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n font-size: 18px;\n line-height: 28px;\n "], ["\n font-size: 18px;\n line-height: 28px;\n "]))),
53
+ xsmall: css(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n font-size: 14px;\n line-height: 22px;\n "], ["\n font-size: 14px;\n line-height: 22px;\n "]))),
53
54
  };
54
55
  /**
55
56
  * [피그마](https://www.figma.com/file/yhrRFizzmhPoHdw9FbYow2/Codle-PD-Kit---Components?type=design&node-id=22-374&t=kTLv3t86qtGalHSS-0)
56
57
  */
57
58
  var SquareButton = React.forwardRef(function SquareButton(props, ref) {
58
59
  var className = props.className, _a = props.component, Component = _a === void 0 ? "span" : _a, disabled = props.disabled, color = props.color, size = props.size, icon = props.icon, label = props.label, fullWidth = props.fullWidth, onClick = props.onClick, other = __rest(props, ["className", "component", "disabled", "color", "size", "icon", "label", "fullWidth", "onClick"]);
59
- return (_jsxs(Component, __assign({}, other, { ref: ref, className: className, css: css(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n\n width: ", ";\n "], ["\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n\n width: ", ";\n "])), fullWidth ? "100%" : "fit-content") }, { children: [_jsx(Button, __assign({ type: "button", color: color, size: size, disabled: disabled, fullWidth: fullWidth, onClick: onClick }, { children: icon })), label && (_jsx(Label, __assign({ disabled: disabled, size: size }, { children: label })))] })));
60
+ return (_jsxs(Component, __assign({}, other, { ref: ref, className: className, css: css(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n\n width: ", ";\n "], ["\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n\n width: ", ";\n "])), fullWidth ? "100%" : "fit-content") }, { children: [_jsx(Button, __assign({ type: "button", color: color, size: size, disabled: disabled, fullWidth: fullWidth, onClick: onClick }, { children: icon })), label && (_jsx(Label, __assign({ disabled: disabled, size: size }, { children: label })))] })));
60
61
  });
61
- var Button = styled.button(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n border-radius: 8px;\n cursor: pointer;\n &:disabled {\n cursor: default;\n }\n ", "\n ", "\n ", "\n"], ["\n border-radius: 8px;\n cursor: pointer;\n &:disabled {\n cursor: default;\n }\n ", "\n ", "\n ", "\n"])), function (_a) {
62
+ var Button = styled.button(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n border-radius: 8px;\n cursor: pointer;\n &:disabled {\n cursor: default;\n }\n ", "\n ", "\n ", "\n"], ["\n border-radius: 8px;\n cursor: pointer;\n &:disabled {\n cursor: default;\n }\n ", "\n ", "\n ", "\n"])), function (_a) {
62
63
  var theme = _a.theme, color = _a.color;
63
64
  return COLOR_TO_BUTTON_STYLE(theme, color);
64
65
  }, function (_a) {
@@ -68,7 +69,7 @@ var Button = styled.button(templateObject_20 || (templateObject_20 = __makeTempl
68
69
  var fullWidth = _a.fullWidth;
69
70
  return fullWidth && "width: 100%;";
70
71
  });
71
- var Label = styled.span(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n font-weight: 400;\n color: ", ";\n ", "\n"], ["\n font-weight: 400;\n color: ", ";\n ", "\n"])), function (_a) {
72
+ var Label = styled.span(templateObject_23 || (templateObject_23 = __makeTemplateObject(["\n font-weight: 400;\n color: ", ";\n ", "\n"], ["\n font-weight: 400;\n color: ", ";\n ", "\n"])), function (_a) {
72
73
  var theme = _a.theme, disabled = _a.disabled;
73
74
  return disabled
74
75
  ? theme.color.foreground.neutralBaseDisabled
@@ -78,4 +79,4 @@ var Label = styled.span(templateObject_21 || (templateObject_21 = __makeTemplate
78
79
  return SIZE_TO_LABEL_STYLE[size];
79
80
  });
80
81
  export default SquareButton;
81
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21;
82
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23;
package/dist/index.d.ts CHANGED
@@ -12,8 +12,6 @@ export { default as Pagination } from "./components/Pagination";
12
12
  export * from "./components/Pagination";
13
13
  export { default as PinInput } from "./components/PinInput";
14
14
  export * from "./components/PinInput";
15
- export { default as Popover } from "./components/Popover";
16
- export * from "./components/Popover";
17
15
  export { default as RadioInput } from "./components/RadioInput";
18
16
  export * from "./components/RadioInput";
19
17
  export { default as SquareButton } from "./components/SquareButton";
@@ -35,3 +33,4 @@ export * from "./utils/hover";
35
33
  export * from "./utils/reset";
36
34
  export * from "./utils/zIndex";
37
35
  export * from "./patterns/SegmentedControl";
36
+ export * from "./patterns/ReactEditorJS";
package/dist/index.js CHANGED
@@ -12,8 +12,6 @@ export { default as Pagination } from "./components/Pagination";
12
12
  export * from "./components/Pagination";
13
13
  export { default as PinInput } from "./components/PinInput";
14
14
  export * from "./components/PinInput";
15
- export { default as Popover } from "./components/Popover";
16
- export * from "./components/Popover";
17
15
  export { default as RadioInput } from "./components/RadioInput";
18
16
  export * from "./components/RadioInput";
19
17
  export { default as SquareButton } from "./components/SquareButton";
@@ -35,3 +33,4 @@ export * from "./utils/hover";
35
33
  export * from "./utils/reset";
36
34
  export * from "./utils/zIndex";
37
35
  export * from "./patterns/SegmentedControl";
36
+ export * from "./patterns/ReactEditorJS";
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ /** useForm에서 사용되는 ReactEditorJS 컴포넌트입니다. */
3
+ export declare function FormEditorJS(props: {
4
+ className?: string;
5
+ name: string;
6
+ control?: any;
7
+ readOnly?: boolean;
8
+ }): React.ReactElement;
@@ -0,0 +1,133 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsx as _jsx } from "react/jsx-runtime";
49
+ import { Controller } from "react-hook-form";
50
+ import { createReactEditorJS } from "react-editor-js";
51
+ import { useCallback, useRef } from "react";
52
+ import TOOLS from "./tools";
53
+ import I18n from "./i18n";
54
+ import Layout from "./Layout";
55
+ import * as Sentry from "@sentry/react";
56
+ /** useForm에서 사용되는 ReactEditorJS 컴포넌트입니다. */
57
+ export function FormEditorJS(props) {
58
+ var _this = this;
59
+ var className = props.className, name = props.name, control = props.control, _a = props.readOnly, readOnly = _a === void 0 ? false : _a;
60
+ var ReactEditorJS = createReactEditorJS();
61
+ var editorCore = useRef(null);
62
+ var handleInitialize = useCallback(function (instance) { return __awaiter(_this, void 0, void 0, function () {
63
+ var e_1;
64
+ return __generator(this, function (_a) {
65
+ switch (_a.label) {
66
+ case 0:
67
+ _a.trys.push([0, 2, , 3]);
68
+ return [4 /*yield*/, instance.dangerouslyLowLevelInstance.isReady];
69
+ case 1:
70
+ _a.sent();
71
+ editorCore.current = instance;
72
+ return [3 /*break*/, 3];
73
+ case 2:
74
+ e_1 = _a.sent();
75
+ Sentry.captureException(e_1);
76
+ return [3 /*break*/, 3];
77
+ case 3: return [2 /*return*/];
78
+ }
79
+ });
80
+ }); }, []);
81
+ var handleSave = useCallback(function (onChange) { return __awaiter(_this, void 0, void 0, function () {
82
+ var _this = this;
83
+ var _a;
84
+ return __generator(this, function (_b) {
85
+ if (!editorCore.current) {
86
+ return [2 /*return*/];
87
+ }
88
+ // 저장 전에 isReady 상태를 기다리기
89
+ // https://github.com/codex-team/editor.js/issues/1136
90
+ (_a = editorCore.current.dangerouslyLowLevelInstance.isReady) === null || _a === void 0 ? void 0 : _a.then(function () { return __awaiter(_this, void 0, void 0, function () {
91
+ var savedData;
92
+ var _a;
93
+ return __generator(this, function (_b) {
94
+ switch (_b.label) {
95
+ case 0: return [4 /*yield*/, ((_a = editorCore.current) === null || _a === void 0 ? void 0 : _a.save())];
96
+ case 1:
97
+ savedData = _b.sent();
98
+ if (savedData) {
99
+ onChange(savedData.blocks);
100
+ }
101
+ return [2 /*return*/];
102
+ }
103
+ });
104
+ }); });
105
+ return [2 /*return*/];
106
+ });
107
+ }); }, []);
108
+ // readOnly가 변경되면 ReactEditorJS를 다시 마운트하기 위해 key를 변경합니다.
109
+ // readOnly 모드에서는 onChange를 전달할 수 없어서 케이스를 분리합니다.
110
+ if (readOnly) {
111
+ return (_jsx(Controller, { name: name, control: control, render: function (_a) {
112
+ var value = _a.field.value;
113
+ return (_jsx(Layout, __assign({ className: className }, { children: _jsx(ReactEditorJS, { onInitialize: handleInitialize, tools: TOOLS, defaultValue: {
114
+ blocks: value,
115
+ }, i18n: I18n, readOnly: true }, "readOnly") })));
116
+ } }));
117
+ }
118
+ return (_jsx(Controller, { name: name, control: control, render: function (_a) {
119
+ var _b = _a.field, onChange = _b.onChange, value = _b.value;
120
+ return (_jsx(Layout, __assign({ className: className }, { children: _jsx(ReactEditorJS, { onInitialize: handleInitialize, tools: TOOLS, inlineToolbar: [
121
+ "bold",
122
+ "italic",
123
+ "underline",
124
+ "strikeThrough",
125
+ "inlineCode",
126
+ "link",
127
+ ], tunes: ["moveUp", "delete", "moveDown"],
128
+ // onChange를 사용하므로 value를 사용하면 안됩니다.(defaultValue 사용이 highly recommended)
129
+ defaultValue: {
130
+ blocks: value,
131
+ }, placeholder: "\uB0B4\uC6A9\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694.", onChange: function () { return handleSave(onChange); }, i18n: I18n }, "editable") })));
132
+ } }));
133
+ }
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare const Layout: import("@emotion/styled").StyledComponent<{
3
+ theme?: import("@emotion/react").Theme | undefined;
4
+ as?: import("react").ElementType<any> | undefined;
5
+ }, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
6
+ export default Layout;
@@ -0,0 +1,14 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ import { css } from "@emotion/react";
6
+ import styled from "@emotion/styled";
7
+ import { hexToCSSFilter } from "hex-to-css-filter";
8
+ import { CalloutStyle, DelimiterStyle, HeaderStyle, NestedListStyle, QuoteStyle, RawStyle, } from "./customTools";
9
+ var Layout = styled.div(function (_a) {
10
+ var theme = _a.theme;
11
+ return css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n width: auto;\n margin-top: 8px;\n border: 1px solid ", ";\n border-radius: 8px;\n padding: 32px 74px 32px 16px;\n .codex-editor__redactor {\n padding-bottom: 0 !important;\n }\n .ce-block {\n margin-left: 55px;\n }\n .ce-block__content {\n margin: 0;\n max-width: unset;\n }\n .ce-toolbar__content {\n position: unset;\n }\n .ce-toolbar__actions {\n left: -5px;\n }\n .ce-paragraph {\n font-family: ", ";\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n padding: 0 0 8px;\n }\n\n ", "\n ", "\n ", "\n ", "\n ", "\n ", " \n\n // block tool \uC2A4\uD0C0\uC77C\n .ce-popover-item__icon img {\n width: 18px;\n height: 18px;\n }\n\n // inline tool \uC2A4\uD0C0\uC77C\n .ce-conversion-tool img {\n width: 18px;\n height: 18px;\n }\n .ce-inline-toolbar__buttons {\n gap: 4px;\n .ce-inline-tool--active img {\n // color\uB97C editorjs\uC5D0\uC11C\uB294 active icon\uC744 svg color: #388ae5\uB85C \uBCC0\uACBD\uD569\uB2C8\uB2E4.\n // cds color\uC778 primary\uB85C \uBCC0\uACBD\uD569\uB2C8\uB2E4.\n filter: ", ";\n }\n }\n .ce-inline-toolbar__dropdown {\n padding: 8px 4px;\n gap: 4px;\n }\n .ce-inline-toolbar__dropdown-content img {\n margin-left: 4px;\n width: 18px;\n height: 18px;\n }\n .ce-inline-tool {\n padding: 8px 4px;\n img {\n width: 18px;\n height: 18px;\n }\n }\n "], ["\n width: auto;\n margin-top: 8px;\n border: 1px solid ", ";\n border-radius: 8px;\n padding: 32px 74px 32px 16px;\n .codex-editor__redactor {\n padding-bottom: 0 !important;\n }\n .ce-block {\n margin-left: 55px;\n }\n .ce-block__content {\n margin: 0;\n max-width: unset;\n }\n .ce-toolbar__content {\n position: unset;\n }\n .ce-toolbar__actions {\n left: -5px;\n }\n .ce-paragraph {\n font-family: ", ";\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n padding: 0 0 8px;\n }\n\n ", "\n ", "\n ", "\n ", "\n ", "\n ", " \n\n // block tool \uC2A4\uD0C0\uC77C\n .ce-popover-item__icon img {\n width: 18px;\n height: 18px;\n }\n\n // inline tool \uC2A4\uD0C0\uC77C\n .ce-conversion-tool img {\n width: 18px;\n height: 18px;\n }\n .ce-inline-toolbar__buttons {\n gap: 4px;\n .ce-inline-tool--active img {\n // color\uB97C editorjs\uC5D0\uC11C\uB294 active icon\uC744 svg color: #388ae5\uB85C \uBCC0\uACBD\uD569\uB2C8\uB2E4.\n // cds color\uC778 primary\uB85C \uBCC0\uACBD\uD569\uB2C8\uB2E4.\n filter: ", ";\n }\n }\n .ce-inline-toolbar__dropdown {\n padding: 8px 4px;\n gap: 4px;\n }\n .ce-inline-toolbar__dropdown-content img {\n margin-left: 4px;\n width: 18px;\n height: 18px;\n }\n .ce-inline-tool {\n padding: 8px 4px;\n img {\n width: 18px;\n height: 18px;\n }\n }\n "])), theme.color.background.neutralAlt, theme.fontFamily.ui, HeaderStyle(theme), NestedListStyle, QuoteStyle(theme), CalloutStyle(theme), RawStyle(theme), DelimiterStyle(theme), hexToCSSFilter(theme.color.foreground.primary).filter);
12
+ });
13
+ export default Layout;
14
+ var templateObject_1;
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export interface ReactEditorJSProps {
3
+ className?: string;
4
+ /** 읽기모드 여부(preview 여부) */
5
+ readOnly?: boolean;
6
+ /** 에디터의 블록데이터 */
7
+ blocks: any;
8
+ /** 데이터가 변경되었을 때 실행될 콜백 */
9
+ onChange?: (blocks: any) => void;
10
+ }
11
+ export declare function ReactEditorJS(props: ReactEditorJSProps): JSX.Element;
@@ -0,0 +1,137 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsx as _jsx } from "react/jsx-runtime";
49
+ import { useCallback, useEffect, useRef } from "react";
50
+ import { createReactEditorJS } from "react-editor-js";
51
+ import * as Sentry from "@sentry/react";
52
+ import Layout from "./Layout";
53
+ import TOOLS from "./tools";
54
+ import I18n from "./i18n";
55
+ export function ReactEditorJS(props) {
56
+ var _this = this;
57
+ var className = props.className, _a = props.readOnly, readOnly = _a === void 0 ? false : _a, blocks = props.blocks, onChange = props.onChange;
58
+ var ReactEditorJS = createReactEditorJS();
59
+ var editorCore = useRef(null);
60
+ var handleInitialize = useCallback(function (instance) { return __awaiter(_this, void 0, void 0, function () {
61
+ var e_1;
62
+ return __generator(this, function (_a) {
63
+ switch (_a.label) {
64
+ case 0:
65
+ _a.trys.push([0, 2, , 3]);
66
+ return [4 /*yield*/, instance.dangerouslyLowLevelInstance.isReady];
67
+ case 1:
68
+ _a.sent();
69
+ editorCore.current = instance;
70
+ return [3 /*break*/, 3];
71
+ case 2:
72
+ e_1 = _a.sent();
73
+ Sentry.captureException(e_1);
74
+ return [3 /*break*/, 3];
75
+ case 3: return [2 /*return*/];
76
+ }
77
+ });
78
+ }); }, []);
79
+ var handleSave = useCallback(function (onChange) { return __awaiter(_this, void 0, void 0, function () {
80
+ var _this = this;
81
+ var _a;
82
+ return __generator(this, function (_b) {
83
+ if (!editorCore.current || readOnly) {
84
+ return [2 /*return*/];
85
+ }
86
+ // 저장 전에 isReady 상태를 기다리기
87
+ // https://github.com/codex-team/editor.js/issues/1136
88
+ (_a = editorCore.current.dangerouslyLowLevelInstance.isReady) === null || _a === void 0 ? void 0 : _a.then(function () { return __awaiter(_this, void 0, void 0, function () {
89
+ var savedData;
90
+ var _a;
91
+ return __generator(this, function (_b) {
92
+ switch (_b.label) {
93
+ case 0: return [4 /*yield*/, ((_a = editorCore.current) === null || _a === void 0 ? void 0 : _a.save())];
94
+ case 1:
95
+ savedData = _b.sent();
96
+ if (savedData) {
97
+ onChange(savedData.blocks);
98
+ }
99
+ return [2 /*return*/];
100
+ }
101
+ });
102
+ }); });
103
+ return [2 /*return*/];
104
+ });
105
+ }); }, []);
106
+ // blocks가 변경될 때 preview가 다시 렌더링되게 하려면 controlled component를 위한 "value"인자를 전달하는 것이 올바른 방법이지만
107
+ // controlled를 위해 "defaultValue" 대신 "value"를 사용하면 불필요하게 많이 리렌더링 되고, 그에 따른 오류가 발생합니다.
108
+ // 따라서, highly recommended인 "defaultValue" 사용을 유지하고 blocks가 변경될 때마다
109
+ // useEffect를 사용하여 editorCore의 render 메서드를 호출하여 리렌더링을 수행하도록 구현합니다.
110
+ useEffect(function () {
111
+ if (!editorCore.current || !readOnly) {
112
+ return;
113
+ }
114
+ editorCore.current.render({
115
+ blocks: blocks,
116
+ });
117
+ }, [blocks, readOnly]);
118
+ // readOnly가 변경되면 ReactEditorJS를 다시 마운트하기 위해 key를 변경합니다.
119
+ // readOnly 모드에서는 onChange를 전달할 수 없어서 케이스를 분리합니다.
120
+ if (readOnly) {
121
+ return (_jsx(Layout, __assign({ className: className }, { children: _jsx(ReactEditorJS, { onInitialize: handleInitialize, tools: TOOLS, defaultValue: {
122
+ blocks: blocks,
123
+ }, i18n: I18n, readOnly: true }, "readOnly") })));
124
+ }
125
+ return (_jsx(Layout, __assign({ className: className }, { children: _jsx(ReactEditorJS, { onInitialize: handleInitialize, tools: TOOLS, inlineToolbar: [
126
+ "bold",
127
+ "italic",
128
+ "underline",
129
+ "strikeThrough",
130
+ "inlineCode",
131
+ "link",
132
+ ], tunes: ["moveUp", "delete", "moveDown"],
133
+ // onChange를 사용하므로 value를 사용하면 안됩니다.(defaultValue 사용이 highly recommended)
134
+ defaultValue: {
135
+ blocks: blocks,
136
+ }, onChange: function () { return handleSave(onChange); }, i18n: I18n }, "editable") })));
137
+ }
@@ -0,0 +1,40 @@
1
+ import { BlockTool } from "@editorjs/editorjs";
2
+ import { Theme } from "@emotion/react";
3
+ type COLOR_TYPE = "grey" | "red" | "yellow" | "blue" | "green";
4
+ type DATA_TYPE = {
5
+ color: COLOR_TYPE;
6
+ text: string;
7
+ };
8
+ export declare const CalloutStyle: (theme: Theme) => import("@emotion/utils").SerializedStyles;
9
+ export declare class Callout implements BlockTool {
10
+ api: any;
11
+ config: any;
12
+ readOnly: any;
13
+ private _wrapper;
14
+ constructor({ api, config, readOnly, data }: any);
15
+ createWrapper(data: DATA_TYPE): HTMLDivElement;
16
+ get colors(): string[];
17
+ get defaultColor(): string;
18
+ get color(): COLOR_TYPE;
19
+ set data(data: DATA_TYPE);
20
+ save(): {
21
+ color: COLOR_TYPE;
22
+ text: string;
23
+ };
24
+ render(): HTMLDivElement;
25
+ renderSettings(): {
26
+ name: string;
27
+ icon: string;
28
+ label: any;
29
+ isActive: boolean;
30
+ closeOnActivate: boolean;
31
+ onActivate: () => void;
32
+ }[];
33
+ static get isReadOnlySupported(): boolean;
34
+ static get enableLineBreaks(): boolean;
35
+ static get toolbox(): {
36
+ icon: string;
37
+ title: string;
38
+ };
39
+ }
40
+ export {};