@monolith-forensics/monolith-ui 1.9.1-dev.8 → 1.9.3-dev.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 (93) hide show
  1. package/dist/DropDownMenu/components/MenuItemList.js +32 -12
  2. package/dist/DropDownMenu/components/StyledContent.js +1 -1
  3. package/dist/DropDownMenu/components/StyledInnerItemContainer.js +1 -0
  4. package/dist/FileViewer/FileViewer.js +32 -8
  5. package/dist/FileViewer/viewers/ImageViewer.d.ts +1 -0
  6. package/dist/FileViewer/viewers/ImageViewer.js +36 -15
  7. package/dist/MonolithUIProvider/MonolithUIProvider.d.ts +23 -0
  8. package/dist/RichTextEditor/Components/BubbleMenu.d.ts +8 -8
  9. package/dist/RichTextEditor/Components/BubbleMenu.js +202 -94
  10. package/dist/RichTextEditor/Components/CodeBlockBaseButton.d.ts +18 -0
  11. package/dist/RichTextEditor/Components/CodeBlockBaseButton.js +6 -0
  12. package/dist/RichTextEditor/Components/CodeBlockCopyButton.d.ts +9 -0
  13. package/dist/RichTextEditor/Components/CodeBlockCopyButton.js +42 -0
  14. package/dist/RichTextEditor/Components/CodeBlockFormatButton.d.ts +10 -0
  15. package/dist/RichTextEditor/Components/CodeBlockFormatButton.js +60 -0
  16. package/dist/RichTextEditor/Components/CodeBlockLanguageSelect.d.ts +9 -0
  17. package/dist/RichTextEditor/Components/CodeBlockLanguageSelect.js +30 -0
  18. package/dist/RichTextEditor/Components/CodeBlockNodeView.d.ts +3 -0
  19. package/dist/RichTextEditor/Components/CodeBlockNodeView.js +28 -0
  20. package/dist/RichTextEditor/Components/CodeBlockWrapButton.d.ts +10 -0
  21. package/dist/RichTextEditor/Components/CodeBlockWrapButton.js +17 -0
  22. package/dist/RichTextEditor/Components/LinkEditor.d.ts +8 -0
  23. package/dist/RichTextEditor/Components/LinkEditor.js +94 -0
  24. package/dist/RichTextEditor/Components/TableCornerMenu.d.ts +16 -0
  25. package/dist/RichTextEditor/Components/TableCornerMenu.js +202 -0
  26. package/dist/RichTextEditor/Components/TableTools/TableCornerMenu.d.ts +2 -0
  27. package/dist/RichTextEditor/Components/TableTools/TableCornerMenu.js +19 -0
  28. package/dist/RichTextEditor/Components/TableTools/TableInsertControls.d.ts +2 -0
  29. package/dist/RichTextEditor/Components/TableTools/TableInsertControls.js +24 -0
  30. package/dist/RichTextEditor/Components/TableTools/TableRails.d.ts +2 -0
  31. package/dist/RichTextEditor/Components/TableTools/TableRails.js +180 -0
  32. package/dist/RichTextEditor/Components/TableTools/TableToolMenu.d.ts +5 -0
  33. package/dist/RichTextEditor/Components/TableTools/TableToolMenu.js +6 -0
  34. package/dist/RichTextEditor/Components/TableTools/TableTools.actions.d.ts +5 -0
  35. package/dist/RichTextEditor/Components/TableTools/TableTools.actions.js +183 -0
  36. package/dist/RichTextEditor/Components/TableTools/TableTools.commands.d.ts +16 -0
  37. package/dist/RichTextEditor/Components/TableTools/TableTools.commands.js +217 -0
  38. package/dist/RichTextEditor/Components/TableTools/TableTools.constants.d.ts +8 -0
  39. package/dist/RichTextEditor/Components/TableTools/TableTools.constants.js +11 -0
  40. package/dist/RichTextEditor/Components/TableTools/TableTools.d.ts +3 -0
  41. package/dist/RichTextEditor/Components/TableTools/TableTools.geometry.d.ts +23 -0
  42. package/dist/RichTextEditor/Components/TableTools/TableTools.geometry.js +75 -0
  43. package/dist/RichTextEditor/Components/TableTools/TableTools.js +3 -0
  44. package/dist/RichTextEditor/Components/TableTools/TableTools.selectors.d.ts +16 -0
  45. package/dist/RichTextEditor/Components/TableTools/TableTools.selectors.js +53 -0
  46. package/dist/RichTextEditor/Components/TableTools/TableTools.styled.d.ts +40 -0
  47. package/dist/RichTextEditor/Components/TableTools/TableTools.styled.js +167 -0
  48. package/dist/RichTextEditor/Components/TableTools/TableTools.types.d.ts +76 -0
  49. package/dist/RichTextEditor/Components/TableTools/TableTools.types.js +1 -0
  50. package/dist/RichTextEditor/Components/TableTools/TableTools.utils.d.ts +4 -0
  51. package/dist/RichTextEditor/Components/TableTools/TableTools.utils.js +4 -0
  52. package/dist/RichTextEditor/Components/TableTools/TableToolsPopover.d.ts +2 -0
  53. package/dist/RichTextEditor/Components/TableTools/TableToolsPopover.js +12 -0
  54. package/dist/RichTextEditor/Components/TableTools/index.d.ts +3 -0
  55. package/dist/RichTextEditor/Components/TableTools/index.js +2 -0
  56. package/dist/RichTextEditor/Components/TableTools.d.ts +44 -0
  57. package/dist/RichTextEditor/Components/TableTools.js +790 -0
  58. package/dist/RichTextEditor/Enums/Controls.d.ts +7 -1
  59. package/dist/RichTextEditor/Enums/Controls.js +6 -0
  60. package/dist/RichTextEditor/Enums/Extensions.d.ts +4 -0
  61. package/dist/RichTextEditor/Enums/Extensions.js +4 -0
  62. package/dist/RichTextEditor/Enums/HighlightColors.d.ts +9 -0
  63. package/dist/RichTextEditor/Enums/HighlightColors.js +10 -0
  64. package/dist/RichTextEditor/Enums/SlashCommands.d.ts +4 -1
  65. package/dist/RichTextEditor/Enums/SlashCommands.js +3 -0
  66. package/dist/RichTextEditor/Extensions/SlashCommandList.js +0 -1
  67. package/dist/RichTextEditor/Extensions/getSlashCommand.js +39 -1
  68. package/dist/RichTextEditor/Extensions/getTiptapExtensions.d.ts +10 -2
  69. package/dist/RichTextEditor/Extensions/getTiptapExtensions.js +157 -30
  70. package/dist/RichTextEditor/Plugins/ImageActionsPlugin.js +4 -7
  71. package/dist/RichTextEditor/RichTextEditor.d.ts +4 -2
  72. package/dist/RichTextEditor/RichTextEditor.js +395 -15
  73. package/dist/RichTextEditor/Toolbar/Control.d.ts +6 -2
  74. package/dist/RichTextEditor/Toolbar/Control.js +13 -6
  75. package/dist/RichTextEditor/Toolbar/Controls.d.ts +6 -0
  76. package/dist/RichTextEditor/Toolbar/Controls.js +118 -1
  77. package/dist/RichTextEditor/Toolbar/ControlsGroup.js +17 -6
  78. package/dist/RichTextEditor/Toolbar/Labels.d.ts +1 -0
  79. package/dist/RichTextEditor/Toolbar/Labels.js +1 -0
  80. package/dist/RichTextEditor/Toolbar/Toolbar.d.ts +1 -2
  81. package/dist/RichTextEditor/Toolbar/Toolbar.js +32 -67
  82. package/dist/RichTextEditor/Utils/codeBlockUtils.d.ts +20 -0
  83. package/dist/RichTextEditor/Utils/codeBlockUtils.js +137 -0
  84. package/dist/RichTextEditor/Utils/codeUtils.d.ts +3 -0
  85. package/dist/RichTextEditor/Utils/codeUtils.js +12 -0
  86. package/dist/RichTextEditor/Utils/linkUtils.d.ts +19 -0
  87. package/dist/RichTextEditor/Utils/linkUtils.js +57 -0
  88. package/dist/RichTextEditor/Utils/tableUtils.d.ts +1 -0
  89. package/dist/RichTextEditor/Utils/tableUtils.js +1 -0
  90. package/dist/theme/variants.js +46 -0
  91. package/package.json +8 -1
  92. package/dist/RichTextEditor/Extensions/BubbleMenuExtension.d.ts +0 -7
  93. package/dist/RichTextEditor/Extensions/BubbleMenuExtension.js +0 -157
@@ -0,0 +1,167 @@
1
+ import styled from "styled-components";
2
+ import { Button } from "../../../Button";
3
+ import { getControlSizeTokens } from "../../../core";
4
+ import FieldLabel from "../../../FieldLabel";
5
+ import { Popover } from "../../../Popover";
6
+ import { CORNER_BUTTON_SIZE, RAIL_THICKNESS } from "./TableTools.constants";
7
+ export const TableToolsPanel = styled.div `
8
+ display: flex;
9
+ flex-direction: column;
10
+ gap: 0.75rem;
11
+ min-width: 250px;
12
+ color: ${({ theme }) => theme.palette.text.primary};
13
+ `;
14
+ export const TableToolsSection = styled.div `
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: 0.5rem;
18
+ `;
19
+ export const TableToolsSectionTitle = styled(FieldLabel) `
20
+ color: ${({ theme }) => theme.palette.text.secondary};
21
+ font-size: 0.6875rem;
22
+ font-weight: 600;
23
+ line-height: 1rem;
24
+ text-transform: uppercase;
25
+ `;
26
+ export const InsertGrid = styled.div `
27
+ display: grid;
28
+ grid-template-columns: repeat(2, minmax(0, 1fr));
29
+ gap: 0.5rem;
30
+ `;
31
+ export const Field = styled.label `
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 0.25rem;
35
+ color: ${({ theme }) => theme.palette.text.secondary};
36
+ font-size: 0.75rem;
37
+ line-height: 1rem;
38
+ `;
39
+ export const SwitchRow = styled.div `
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: space-between;
43
+ gap: 0.75rem;
44
+ color: ${({ theme }) => theme.palette.text.secondary};
45
+ font-size: 0.75rem;
46
+ line-height: 1rem;
47
+ `;
48
+ export const RailRoot = styled.div `
49
+ display: flex;
50
+ position: fixed;
51
+ top: ${({ $rect }) => `${$rect.top}px`};
52
+ left: ${({ $rect }) => `${$rect.left}px`};
53
+ z-index: 1500;
54
+ width: ${({ $rect }) => `${$rect.width}px`};
55
+ height: ${({ $rect }) => `${$rect.height}px`};
56
+
57
+ top: ${({ $rect, $kind }) => $kind === "column" ? `${$rect.top + 5}px` : `${$rect.top}px`};
58
+
59
+ left: ${({ $rect, $kind }) => $kind === "row" ? `${$rect.left + 4}px` : `${$rect.left}px`};
60
+
61
+ button {
62
+ margin: auto;
63
+ width: 100%;
64
+ height: 100%;
65
+
66
+ width: ${({ $kind }) => $kind === "column" ? "30px" : RAIL_THICKNESS + "px"};
67
+
68
+ height: ${({ $kind }) => $kind === "row" ? "30px" : RAIL_THICKNESS + "px"};
69
+
70
+ min-height: 0;
71
+ padding: 0;
72
+ border-radius: 10px;
73
+ background-color: ${({ theme }) => theme.palette.background.paper};
74
+ color: ${({ theme }) => theme.palette.text.secondary};
75
+
76
+ &:hover {
77
+ background-color: ${({ theme }) => theme.palette.primary.main};
78
+ color: white;
79
+ }
80
+ }
81
+ `;
82
+ export const MenuPanel = styled.div `
83
+ display: flex;
84
+ flex-direction: column;
85
+ min-width: 220px;
86
+ color: ${({ theme }) => theme.palette.text.primary};
87
+ `;
88
+ export const MenuDropdown = styled(Popover.Dropdown) `
89
+ min-width: 180px;
90
+ border-radius: 5px;
91
+ border: 1px solid ${({ theme }) => theme.palette.divider};
92
+ background-color: ${({ theme }) => theme.palette.input.background};
93
+ box-shadow: none;
94
+ padding: 5px;
95
+ `;
96
+ export const MenuGroup = styled.div `
97
+ display: flex;
98
+ flex-direction: column;
99
+ gap: 1px;
100
+ padding-top: ${({ $withDivider }) => ($withDivider ? "5px" : 0)};
101
+ margin-top: ${({ $withDivider }) => ($withDivider ? "5px" : 0)};
102
+ border-top: ${({ $withDivider, theme }) => $withDivider ? `1px solid ${theme.palette.divider}` : 0};
103
+ `;
104
+ export const MenuButton = styled(Button) `
105
+ min-width: 100%;
106
+ height: ${getControlSizeTokens("sm").menuRowHeight}px;
107
+ min-height: ${getControlSizeTokens("sm").menuRowHeight}px;
108
+ padding: 0 ${getControlSizeTokens("sm").menuItemPaddingX}px;
109
+ border: none;
110
+ border-radius: 3px;
111
+ color: ${({ $danger, theme }) => $danger ? theme.palette.error.main : theme.palette.text.primary};
112
+ font-weight: normal;
113
+ justify-content: flex-start;
114
+ width: 100%;
115
+
116
+ .button-label {
117
+ display: inline-block;
118
+ min-width: 0;
119
+ width: 100%;
120
+ overflow: hidden;
121
+ text-align: left;
122
+ text-overflow: ellipsis;
123
+ white-space: nowrap;
124
+ }
125
+
126
+ [data-position="left"] {
127
+ color: currentColor;
128
+ opacity: 0.8;
129
+ }
130
+
131
+ &:hover {
132
+ background-color: ${({ theme }) => theme.palette.action.hover};
133
+ color: ${({ $danger, theme }) => $danger ? theme.palette.error.main : theme.palette.text.primary};
134
+ }
135
+
136
+ &:active {
137
+ translate: none;
138
+ }
139
+
140
+ &:focus {
141
+ text-decoration: none;
142
+ }
143
+ `;
144
+ export const CornerRoot = styled.div `
145
+ display: flex;
146
+ position: fixed;
147
+ top: ${({ $top }) => `${$top}px`};
148
+ left: ${({ $left }) => `${$left}px`};
149
+ z-index: 1500;
150
+ width: ${CORNER_BUTTON_SIZE}px;
151
+ height: ${CORNER_BUTTON_SIZE}px;
152
+
153
+ button {
154
+ width: 100%;
155
+ height: 100%;
156
+ min-height: 0;
157
+ padding: 0;
158
+ border-radius: 6px;
159
+ background-color: ${({ theme }) => theme.palette.background.paper};
160
+ color: ${({ theme }) => theme.palette.text.secondary};
161
+
162
+ &:hover {
163
+ background-color: ${({ theme }) => theme.palette.primary.main};
164
+ color: white;
165
+ }
166
+ }
167
+ `;
@@ -0,0 +1,76 @@
1
+ import type { Node as ProseMirrorNode } from "@tiptap/pm/model";
2
+ import type { TableMap } from "@tiptap/pm/tables";
3
+ import type { Editor } from "@tiptap/react";
4
+ import type { MouseEvent as ReactMouseEvent, ReactNode } from "react";
5
+ export type TableInsertOptions = {
6
+ rows: number;
7
+ cols: number;
8
+ withHeaderRow: boolean;
9
+ };
10
+ export type TableToolsContentProps = {
11
+ editor: Editor | null;
12
+ showInsert?: boolean;
13
+ onInsert?: () => void;
14
+ onAction?: () => void;
15
+ };
16
+ export type TableToolsPopoverProps = {
17
+ editor: Editor | null;
18
+ };
19
+ export type TableRailsProps = {
20
+ editor: Editor | null;
21
+ };
22
+ export type RailKind = "row" | "column";
23
+ export type OpenMenuKind = RailKind | "table";
24
+ export type Point = {
25
+ x: number;
26
+ y: number;
27
+ };
28
+ export type RailRect = {
29
+ top: number;
30
+ left: number;
31
+ width: number;
32
+ height: number;
33
+ };
34
+ export type TableContext = {
35
+ node: ProseMirrorNode;
36
+ pos: number;
37
+ start: number;
38
+ map: TableMap;
39
+ };
40
+ export type TableRailTarget = {
41
+ kind: RailKind;
42
+ rowIndex: number;
43
+ colIndex: number;
44
+ tableElement: HTMLTableElement;
45
+ tableRect: RailRect;
46
+ tableContext: TableContext;
47
+ rowRect: RailRect;
48
+ columnRect: RailRect;
49
+ };
50
+ export type RailTarget = TableRailTarget;
51
+ export type TableToolAction = {
52
+ label: string;
53
+ leftSection: ReactNode;
54
+ disabled?: boolean;
55
+ danger?: boolean;
56
+ onClick: () => void;
57
+ };
58
+ export type TableToolActionGroup = {
59
+ label: string;
60
+ actions: TableToolAction[];
61
+ };
62
+ export type RailAction = TableToolAction;
63
+ export type RailActionGroup = TableToolActionGroup;
64
+ export type TableCornerMenuProps = {
65
+ editor: Editor | null;
66
+ target: TableRailTarget;
67
+ opened: boolean;
68
+ onOpen: () => void;
69
+ onClose: () => void;
70
+ onAction: () => void;
71
+ onMouseEnter: () => void;
72
+ onMouseLeave: () => void;
73
+ onMouseDown: (event: ReactMouseEvent<HTMLButtonElement>) => void;
74
+ };
75
+ export type TableAction = TableToolAction;
76
+ export type TableActionGroup = TableToolActionGroup;
@@ -0,0 +1,4 @@
1
+ export * from "./TableTools.commands";
2
+ export * from "./TableTools.constants";
3
+ export * from "./TableTools.geometry";
4
+ export * from "./TableTools.selectors";
@@ -0,0 +1,4 @@
1
+ export * from "./TableTools.commands";
2
+ export * from "./TableTools.constants";
3
+ export * from "./TableTools.geometry";
4
+ export * from "./TableTools.selectors";
@@ -0,0 +1,2 @@
1
+ import type { TableToolsPopoverProps } from "./TableTools.types";
2
+ export declare const TableToolsPopover: ({ editor }: TableToolsPopoverProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Table2Icon } from "lucide-react";
3
+ import { useState } from "react";
4
+ import { Button } from "../../../Button";
5
+ import { Popover } from "../../../Popover";
6
+ import { hasTableExtension, isTableActive } from "./TableTools.selectors";
7
+ import { TableToolsContent } from "./TableInsertControls";
8
+ export const TableToolsPopover = ({ editor }) => {
9
+ const [opened, setOpened] = useState(false);
10
+ const selected = opened || isTableActive(editor);
11
+ return (_jsxs(Popover, { opened: opened, onChange: setOpened, position: "bottom", width: 285, trapFocus: true, children: [_jsx(Popover.Target, { children: _jsx(Button, { size: "xs", variant: "outlined", title: "Table", "aria-label": "Table", selected: selected, disabled: !hasTableExtension(editor), style: { padding: "1px 6px" }, children: _jsx(Table2Icon, { size: 14 }) }) }), _jsx(Popover.Dropdown, { children: _jsx(TableToolsContent, { editor: editor, showInsert: true, onInsert: () => setOpened(false) }) })] }));
12
+ };
@@ -0,0 +1,3 @@
1
+ export * from "./TableTools";
2
+ export { hasTableExtension, isTableActive } from "./TableTools.selectors";
3
+ export type { OpenMenuKind, Point, RailAction, RailActionGroup, RailKind, RailRect, RailTarget, TableAction, TableActionGroup, TableContext, TableCornerMenuProps, TableInsertOptions, TableRailTarget, TableRailsProps, TableToolAction, TableToolActionGroup, TableToolsContentProps, TableToolsPopoverProps, } from "./TableTools.types";
@@ -0,0 +1,2 @@
1
+ export * from "./TableTools";
2
+ export { hasTableExtension, isTableActive } from "./TableTools.selectors";
@@ -0,0 +1,44 @@
1
+ import { Editor } from "@tiptap/react";
2
+ import { Node as ProseMirrorNode } from "@tiptap/pm/model";
3
+ import { TableMap } from "@tiptap/pm/tables";
4
+ type TableToolsContentProps = {
5
+ editor: Editor | null;
6
+ showInsert?: boolean;
7
+ onInsert?: () => void;
8
+ onAction?: () => void;
9
+ };
10
+ type TableToolsPopoverProps = {
11
+ editor: Editor | null;
12
+ };
13
+ type TableRailsProps = {
14
+ editor: Editor | null;
15
+ };
16
+ type RailKind = "row" | "column";
17
+ type RailRect = {
18
+ top: number;
19
+ left: number;
20
+ width: number;
21
+ height: number;
22
+ };
23
+ type TableContext = {
24
+ node: ProseMirrorNode;
25
+ pos: number;
26
+ start: number;
27
+ map: TableMap;
28
+ };
29
+ export type TableRailTarget = {
30
+ kind: RailKind;
31
+ rowIndex: number;
32
+ colIndex: number;
33
+ tableElement: HTMLTableElement;
34
+ tableRect: RailRect;
35
+ tableContext: TableContext;
36
+ rowRect: RailRect;
37
+ columnRect: RailRect;
38
+ };
39
+ export declare const hasTableExtension: (editor: Editor | null) => boolean;
40
+ export declare const isTableActive: (editor: Editor | null) => boolean;
41
+ export declare const TableToolsContent: ({ editor, showInsert, onInsert, onAction, }: TableToolsContentProps) => import("react/jsx-runtime").JSX.Element;
42
+ export declare const TableToolsPopover: ({ editor }: TableToolsPopoverProps) => import("react/jsx-runtime").JSX.Element;
43
+ export declare const TableRails: ({ editor }: TableRailsProps) => import("react/jsx-runtime").JSX.Element | null;
44
+ export {};