@tumaet/prompt-ui-components 0.0.10 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/index.js +10 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.js +65 -0
- package/dist/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.js.map +1 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-block.js +38 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-block.js.map +1 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-dialog.js +12 -0
- package/dist/components/minimal-tiptap/components/image/image-edit-dialog.js.map +1 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-block.js +34 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-block.js.map +1 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-popover.js +38 -0
- package/dist/components/minimal-tiptap/components/link/link-edit-popover.js.map +1 -0
- package/dist/components/minimal-tiptap/components/link/link-popover-block.js +28 -0
- package/dist/components/minimal-tiptap/components/link/link-popover-block.js.map +1 -0
- package/dist/components/minimal-tiptap/components/measured-container.js +16 -0
- package/dist/components/minimal-tiptap/components/measured-container.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/five.js +39 -0
- package/dist/components/minimal-tiptap/components/section/five.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/four.js +29 -0
- package/dist/components/minimal-tiptap/components/section/four.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/mailingPlaceholders.js +23 -0
- package/dist/components/minimal-tiptap/components/section/mailingPlaceholders.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/one.js +77 -0
- package/dist/components/minimal-tiptap/components/section/one.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/three.js +79 -0
- package/dist/components/minimal-tiptap/components/section/three.js.map +1 -0
- package/dist/components/minimal-tiptap/components/section/two.js +65 -0
- package/dist/components/minimal-tiptap/components/section/two.js.map +1 -0
- package/dist/components/minimal-tiptap/components/shortcut-key.js +11 -0
- package/dist/components/minimal-tiptap/components/shortcut-key.js.map +1 -0
- package/dist/components/minimal-tiptap/components/spinner.js +9 -0
- package/dist/components/minimal-tiptap/components/spinner.js.map +1 -0
- package/dist/components/minimal-tiptap/components/toolbar-button.js +15 -0
- package/dist/components/minimal-tiptap/components/toolbar-button.js.map +1 -0
- package/dist/components/minimal-tiptap/components/toolbar-section.js +27 -0
- package/dist/components/minimal-tiptap/components/toolbar-section.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.js +16 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/code-block-lowlight/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/color/color.js +20 -0
- package/dist/components/minimal-tiptap/extensions/color/color.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/color/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/color/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/file-handler/index.js +74 -0
- package/dist/components/minimal-tiptap/extensions/file-handler/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.js +16 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/horizontal-rule/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-actions.js +39 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-actions.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-overlay.js +9 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-overlay.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-view-block.js +167 -0
- package/dist/components/minimal-tiptap/extensions/image/components/image-view-block.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/components/resize-handle.js +11 -0
- package/dist/components/minimal-tiptap/extensions/image/components/resize-handle.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-drag-resize.js +88 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-drag-resize.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-image-actions.js +32 -0
- package/dist/components/minimal-tiptap/extensions/image/hooks/use-image-actions.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/image.js +225 -0
- package/dist/components/minimal-tiptap/extensions/image/image.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/image/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/image/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/index.js +10 -0
- package/dist/components/minimal-tiptap/extensions/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/link/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/link/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/link/link.js +74 -0
- package/dist/components/minimal-tiptap/extensions/link/link.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.js +20 -0
- package/dist/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/selection/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/selection/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/selection/selection.js +31 -0
- package/dist/components/minimal-tiptap/extensions/selection/selection.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/index.js +2 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/index.js.map +1 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.js +9 -0
- package/dist/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.js.map +1 -0
- package/dist/components/minimal-tiptap/form-description-tiptap.js +26 -0
- package/dist/components/minimal-tiptap/form-description-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-container-size.js +44 -0
- package/dist/components/minimal-tiptap/hooks/use-container-size.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-minimal-tiptap.js +160 -0
- package/dist/components/minimal-tiptap/hooks/use-minimal-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-theme.js +19 -0
- package/dist/components/minimal-tiptap/hooks/use-theme.js.map +1 -0
- package/dist/components/minimal-tiptap/hooks/use-throttle.js +24 -0
- package/dist/components/minimal-tiptap/hooks/use-throttle.js.map +1 -0
- package/dist/components/minimal-tiptap/index.js +2 -0
- package/dist/components/minimal-tiptap/index.js.map +1 -0
- package/dist/components/minimal-tiptap/mailing-tiptap.js +30 -0
- package/dist/components/minimal-tiptap/mailing-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/minimal-tiptap.js +29 -0
- package/dist/components/minimal-tiptap/minimal-tiptap.js.map +1 -0
- package/dist/components/minimal-tiptap/types.js +2 -0
- package/dist/components/minimal-tiptap/types.js.map +1 -0
- package/dist/components/minimal-tiptap/utils.js +156 -0
- package/dist/components/minimal-tiptap/utils.js.map +1 -0
- package/dist/types/components/index.d.ts +10 -0
- package/dist/types/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.d.ts +7 -0
- package/dist/types/components/minimal-tiptap/components/image/image-edit-block.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/image/image-edit-dialog.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/link/link-edit-block.d.ts +9 -0
- package/dist/types/components/minimal-tiptap/components/link/link-edit-popover.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/link/link-popover-block.d.ts +8 -0
- package/dist/types/components/minimal-tiptap/components/measured-container.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/components/section/five.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/components/section/four.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/components/section/mailingPlaceholders.d.ts +10 -0
- package/dist/types/components/minimal-tiptap/components/section/one.d.ts +11 -0
- package/dist/types/components/minimal-tiptap/components/section/three.d.ts +9 -0
- package/dist/types/components/minimal-tiptap/components/section/two.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/components/shortcut-key.d.ts +5 -0
- package/dist/types/components/minimal-tiptap/components/spinner.d.ts +5 -0
- package/dist/types/components/minimal-tiptap/components/toolbar-button.d.ts +10 -0
- package/dist/types/components/minimal-tiptap/components/toolbar-section.d.ts +16 -0
- package/dist/types/components/minimal-tiptap/extensions/code-block-lowlight/code-block-lowlight.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/code-block-lowlight/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/color/color.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/color/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/file-handler/index.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/extensions/horizontal-rule/horizontal-rule.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/horizontal-rule/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/image-actions.d.ts +17 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/image-overlay.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/image-view-block.d.ts +3 -0
- package/dist/types/components/minimal-tiptap/extensions/image/components/resize-handle.d.ts +6 -0
- package/dist/types/components/minimal-tiptap/extensions/image/hooks/use-drag-resize.d.ts +24 -0
- package/dist/types/components/minimal-tiptap/extensions/image/hooks/use-image-actions.d.ts +24 -0
- package/dist/types/components/minimal-tiptap/extensions/image/image.d.ts +52 -0
- package/dist/types/components/minimal-tiptap/extensions/image/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/index.d.ts +9 -0
- package/dist/types/components/minimal-tiptap/extensions/link/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/link/link.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/reset-marks-on-enter/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/reset-marks-on-enter/reset-marks-on-enter.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/extensions/selection/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/selection/selection.d.ts +3 -0
- package/dist/types/components/minimal-tiptap/extensions/unset-all-marks/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/extensions/unset-all-marks/unset-all-marks.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/form-description-tiptap.d.ts +4 -0
- package/dist/types/components/minimal-tiptap/hooks/use-container-size.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/hooks/use-minimal-tiptap.d.ts +13 -0
- package/dist/types/components/minimal-tiptap/hooks/use-theme.d.ts +2 -0
- package/dist/types/components/minimal-tiptap/hooks/use-throttle.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/index.d.ts +1 -0
- package/dist/types/components/minimal-tiptap/mailing-tiptap.d.ts +13 -0
- package/dist/types/components/minimal-tiptap/minimal-tiptap.d.ts +12 -0
- package/dist/types/components/minimal-tiptap/types.d.ts +25 -0
- package/dist/types/components/minimal-tiptap/utils.d.ts +38 -0
- package/package.json +20 -1
package/dist/components/index.js
CHANGED
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
export * from './ui';
|
|
2
|
+
export * from './minimal-tiptap';
|
|
3
|
+
export * from './DatePicker';
|
|
4
|
+
export * from './DateRangePicker';
|
|
5
|
+
export * from './DeleteConfirmationDialog';
|
|
6
|
+
export * from './ErrorPage';
|
|
7
|
+
export * from './LoadingPage';
|
|
8
|
+
export * from './ManagementPageHeader';
|
|
9
|
+
export * from './MultiSelect';
|
|
10
|
+
export * from './SaveChangesAlert';
|
|
11
|
+
export * from './UnauthorizedPage';
|
|
2
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,MAAM,CAAA;AACpB,cAAc,kBAAkB,CAAA;AAChC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,eAAe,CAAA;AAC7B,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-shadow */
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { BubbleMenu } from '@tiptap/react';
|
|
5
|
+
import { LinkEditBlock } from '../link/link-edit-block';
|
|
6
|
+
import { LinkPopoverBlock } from '../link/link-popover-block';
|
|
7
|
+
export const LinkBubbleMenu = ({ editor }) => {
|
|
8
|
+
const [showEdit, setShowEdit] = React.useState(false);
|
|
9
|
+
const [linkAttrs, setLinkAttrs] = React.useState({ href: '', target: '' });
|
|
10
|
+
const [selectedText, setSelectedText] = React.useState('');
|
|
11
|
+
const updateLinkState = React.useCallback(() => {
|
|
12
|
+
const { from, to } = editor.state.selection;
|
|
13
|
+
const { href, target } = editor.getAttributes('link');
|
|
14
|
+
const text = editor.state.doc.textBetween(from, to, ' ');
|
|
15
|
+
setLinkAttrs({ href, target });
|
|
16
|
+
setSelectedText(text);
|
|
17
|
+
}, [editor]);
|
|
18
|
+
const shouldShow = React.useCallback(({ editor, from, to }) => {
|
|
19
|
+
if (from === to) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const { href } = editor.getAttributes('link');
|
|
23
|
+
if (href) {
|
|
24
|
+
updateLinkState();
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}, [updateLinkState]);
|
|
29
|
+
const handleEdit = React.useCallback(() => {
|
|
30
|
+
setShowEdit(true);
|
|
31
|
+
}, []);
|
|
32
|
+
const onSetLink = React.useCallback((url, text, openInNewTab) => {
|
|
33
|
+
editor
|
|
34
|
+
.chain()
|
|
35
|
+
.focus()
|
|
36
|
+
.extendMarkRange('link')
|
|
37
|
+
.insertContent({
|
|
38
|
+
type: 'text',
|
|
39
|
+
text: text || url,
|
|
40
|
+
marks: [
|
|
41
|
+
{
|
|
42
|
+
type: 'link',
|
|
43
|
+
attrs: {
|
|
44
|
+
href: url,
|
|
45
|
+
target: openInNewTab ? '_blank' : '',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
})
|
|
50
|
+
.setLink({ href: url, target: openInNewTab ? '_blank' : '' })
|
|
51
|
+
.run();
|
|
52
|
+
setShowEdit(false);
|
|
53
|
+
updateLinkState();
|
|
54
|
+
}, [editor, updateLinkState]);
|
|
55
|
+
const onUnsetLink = React.useCallback(() => {
|
|
56
|
+
editor.chain().focus().extendMarkRange('link').unsetLink().run();
|
|
57
|
+
setShowEdit(false);
|
|
58
|
+
updateLinkState();
|
|
59
|
+
}, [editor, updateLinkState]);
|
|
60
|
+
return (_jsx(BubbleMenu, { editor: editor, shouldShow: shouldShow, tippyOptions: {
|
|
61
|
+
placement: 'bottom-start',
|
|
62
|
+
onHidden: () => setShowEdit(false),
|
|
63
|
+
}, children: showEdit ? (_jsx(LinkEditBlock, { defaultUrl: linkAttrs.href, defaultText: selectedText, defaultIsNewTab: linkAttrs.target === '_blank', onSave: onSetLink, className: 'w-full min-w-80 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none' })) : (_jsx(LinkPopoverBlock, { onClear: onUnsetLink, url: linkAttrs.href, onEdit: handleEdit })) }));
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=link-bubble-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-bubble-menu.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/bubble-menu/link-bubble-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Button } from '../../../../components/ui/button';
|
|
4
|
+
import { Label } from '../../../../components/ui/label';
|
|
5
|
+
import { Input } from '../../../../components/ui/input';
|
|
6
|
+
export const ImageEditBlock = ({ editor, close }) => {
|
|
7
|
+
const fileInputRef = React.useRef(null);
|
|
8
|
+
const [link, setLink] = React.useState('');
|
|
9
|
+
const handleClick = React.useCallback(() => {
|
|
10
|
+
fileInputRef.current?.click();
|
|
11
|
+
}, []);
|
|
12
|
+
const handleFile = React.useCallback(async (e) => {
|
|
13
|
+
const files = e.target.files;
|
|
14
|
+
if (!files?.length)
|
|
15
|
+
return;
|
|
16
|
+
const insertImages = async () => {
|
|
17
|
+
const contentBucket = []; // custom fix for typescript
|
|
18
|
+
const filesArray = Array.from(files);
|
|
19
|
+
for (const file of filesArray) {
|
|
20
|
+
contentBucket.push({ src: file });
|
|
21
|
+
}
|
|
22
|
+
editor.commands.setImages(contentBucket);
|
|
23
|
+
};
|
|
24
|
+
await insertImages();
|
|
25
|
+
close();
|
|
26
|
+
}, [editor, close]);
|
|
27
|
+
const handleSubmit = React.useCallback((e) => {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
if (link) {
|
|
31
|
+
editor.commands.setImages([{ src: link }]);
|
|
32
|
+
close();
|
|
33
|
+
}
|
|
34
|
+
}, [editor, link, close]);
|
|
35
|
+
return (_jsxs("form", { onSubmit: handleSubmit, className: 'space-y-6', children: [_jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { htmlFor: 'image-link', children: "Attach an image link" }), _jsxs("div", { className: 'flex', children: [_jsx(Input, { id: 'image-link', type: 'url', required: true, placeholder: 'https://example.com', value: link, className: 'grow', onChange: (e) => setLink(e.target.value) }), _jsx(Button, { type: 'submit', className: 'ml-2', children: "Submit" })] })] }), _jsx(Button, { type: 'button', className: 'w-full', onClick: handleClick, children: "Upload from your computer" }), _jsx("input", { type: 'file', accept: 'image/*', ref: fileInputRef, multiple: true, className: 'hidden', onChange: handleFile })] }));
|
|
36
|
+
};
|
|
37
|
+
export default ImageEditBlock;
|
|
38
|
+
//# sourceMappingURL=image-edit-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-edit-block.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/image/image-edit-block.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { ImageIcon } from 'lucide-react';
|
|
4
|
+
import { ToolbarButton } from '../toolbar-button';
|
|
5
|
+
import { Dialog, DialogContent, DialogHeader, DialogDescription, DialogTitle, DialogTrigger, } from '../../../../components/ui/dialog';
|
|
6
|
+
import { ImageEditBlock } from './image-edit-block';
|
|
7
|
+
const ImageEditDialog = ({ editor, size, variant }) => {
|
|
8
|
+
const [open, setOpen] = useState(false);
|
|
9
|
+
return (_jsxs(Dialog, { open: open, onOpenChange: setOpen, children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(ToolbarButton, { isActive: editor.isActive('image'), tooltip: 'Image', "aria-label": 'Image', size: size, variant: variant, children: _jsx(ImageIcon, { className: 'size-5' }) }) }), _jsxs(DialogContent, { className: 'sm:max-w-lg', children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Select image" }), _jsx(DialogDescription, { className: 'sr-only', children: "Upload an image from your computer" })] }), _jsx(ImageEditBlock, { editor: editor, close: () => setOpen(false) })] })] }));
|
|
10
|
+
};
|
|
11
|
+
export { ImageEditDialog };
|
|
12
|
+
//# sourceMappingURL=image-edit-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-edit-dialog.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/image/image-edit-dialog.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,aAAa,GACd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAMnD,MAAM,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAwB,EAAE,EAAE;IAC1E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEvC,OAAO,CACL,MAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACvC,KAAC,aAAa,IAAC,OAAO,kBACpB,KAAC,aAAa,IACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAClC,OAAO,EAAC,OAAO,gBACJ,OAAO,EAClB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,YAEhB,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,GAAG,GAClB,GACF,EAChB,MAAC,aAAa,IAAC,SAAS,EAAC,aAAa,aACpC,MAAC,YAAY,eACX,KAAC,WAAW,+BAA2B,EACvC,KAAC,iBAAiB,IAAC,SAAS,EAAC,SAAS,mDAElB,IACP,EACf,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAI,IACjD,IACT,CACV,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Button } from '../../../../components/ui/button';
|
|
4
|
+
import { Label } from '../../../../components/ui/label';
|
|
5
|
+
import { Switch } from '../../../../components/ui/switch';
|
|
6
|
+
import { Input } from '../../../../components/ui/input';
|
|
7
|
+
import { cn } from '../../../../lib/utils';
|
|
8
|
+
export const LinkEditBlock = React.forwardRef(({ onSave, defaultIsNewTab, defaultUrl, defaultText, className }, ref) => {
|
|
9
|
+
const formRef = React.useRef(null);
|
|
10
|
+
const [url, setUrl] = React.useState(defaultUrl || '');
|
|
11
|
+
const [text, setText] = React.useState(defaultText || '');
|
|
12
|
+
const [isNewTab, setIsNewTab] = React.useState(defaultIsNewTab || false);
|
|
13
|
+
const handleSave = React.useCallback((e) => {
|
|
14
|
+
e.preventDefault();
|
|
15
|
+
if (formRef.current) {
|
|
16
|
+
const isValid = Array.from(formRef.current.querySelectorAll('input')).every((input) => input.checkValidity());
|
|
17
|
+
if (isValid) {
|
|
18
|
+
onSave(url, text, isNewTab);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
formRef.current.querySelectorAll('input').forEach((input) => {
|
|
22
|
+
if (!input.checkValidity()) {
|
|
23
|
+
input.reportValidity();
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}, [onSave, url, text, isNewTab]);
|
|
29
|
+
React.useImperativeHandle(ref, () => formRef.current);
|
|
30
|
+
return (_jsx("div", { ref: formRef, children: _jsxs("div", { className: cn('space-y-4', className), children: [_jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { children: "URL" }), _jsx(Input, { type: 'url', required: true, placeholder: 'Enter URL', value: url, onChange: (e) => setUrl(e.target.value) })] }), _jsxs("div", { className: 'space-y-1', children: [_jsx(Label, { children: "Display Text (optional)" }), _jsx(Input, { type: 'text', placeholder: 'Enter display text', value: text, onChange: (e) => setText(e.target.value) })] }), _jsxs("div", { className: 'flex items-center space-x-2', children: [_jsx(Label, { children: "Open in New Tab" }), _jsx(Switch, { checked: isNewTab, onCheckedChange: setIsNewTab })] }), _jsx("div", { className: 'flex justify-end space-x-2', children: _jsx(Button, { type: 'button', onClick: handleSave, children: "Save" }) })] }) }));
|
|
31
|
+
});
|
|
32
|
+
LinkEditBlock.displayName = 'LinkEditBlock';
|
|
33
|
+
export default LinkEditBlock;
|
|
34
|
+
//# sourceMappingURL=link-edit-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-edit-block.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/link/link-edit-block.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Popover, PopoverContent, PopoverTrigger } from '../../../../components/ui/popover';
|
|
4
|
+
import { Link2Icon } from 'lucide-react';
|
|
5
|
+
import { ToolbarButton } from '../toolbar-button';
|
|
6
|
+
import { LinkEditBlock } from './link-edit-block';
|
|
7
|
+
const LinkEditPopover = ({ editor, size, variant }) => {
|
|
8
|
+
const [open, setOpen] = React.useState(false);
|
|
9
|
+
const { from, to } = editor.state.selection;
|
|
10
|
+
const text = editor.state.doc.textBetween(from, to, ' ');
|
|
11
|
+
const onSetLink = React.useCallback(
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
13
|
+
(url, text, openInNewTab) => {
|
|
14
|
+
editor
|
|
15
|
+
.chain()
|
|
16
|
+
.focus()
|
|
17
|
+
.extendMarkRange('link')
|
|
18
|
+
.insertContent({
|
|
19
|
+
type: 'text',
|
|
20
|
+
text: text || url,
|
|
21
|
+
marks: [
|
|
22
|
+
{
|
|
23
|
+
type: 'link',
|
|
24
|
+
attrs: {
|
|
25
|
+
href: url,
|
|
26
|
+
target: openInNewTab ? '_blank' : '',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
})
|
|
31
|
+
.setLink({ href: url })
|
|
32
|
+
.run();
|
|
33
|
+
editor.commands.enter();
|
|
34
|
+
}, [editor]);
|
|
35
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(ToolbarButton, { isActive: editor.isActive('link'), tooltip: 'Link', "aria-label": 'Insert link', disabled: editor.isActive('codeBlock'), size: size, variant: variant, children: _jsx(Link2Icon, { className: 'size-5' }) }) }), _jsx(PopoverContent, { className: 'w-full min-w-80', align: 'end', side: 'bottom', children: _jsx(LinkEditBlock, { onSave: onSetLink, defaultText: text }) })] }));
|
|
36
|
+
};
|
|
37
|
+
export { LinkEditPopover };
|
|
38
|
+
//# sourceMappingURL=link-edit-popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-edit-popover.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/link/link-edit-popover.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAMjD,MAAM,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAwB,EAAE,EAAE;IAC1E,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAA;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;IAExD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW;IACjC,wDAAwD;IACxD,CAAC,GAAW,EAAE,IAAa,EAAE,YAAsB,EAAE,EAAE;QACrD,MAAM;aACH,KAAK,EAAE;aACP,KAAK,EAAE;aACP,eAAe,CAAC,MAAM,CAAC;aACvB,aAAa,CAAC;YACb,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,IAAI,GAAG;YACjB,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE;wBACL,IAAI,EAAE,GAAG;wBACT,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;qBACrC;iBACF;aACF;SACF,CAAC;aACD,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;aACtB,GAAG,EAAE,CAAA;QAER,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAA;IAED,OAAO,CACL,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACxC,KAAC,cAAc,IAAC,OAAO,kBACrB,KAAC,aAAa,IACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EACjC,OAAO,EAAC,MAAM,gBACH,aAAa,EACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EACtC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,YAEhB,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,GAAG,GAClB,GACD,EACjB,KAAC,cAAc,IAAC,SAAS,EAAC,iBAAiB,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,YACnE,KAAC,aAAa,IAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,GAAI,GACxC,IACT,CACX,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Separator } from '../../../../components/ui/separator';
|
|
4
|
+
import { ToolbarButton } from '../toolbar-button';
|
|
5
|
+
import { CopyIcon, ExternalLinkIcon, Link2Off } from 'lucide-react';
|
|
6
|
+
export const LinkPopoverBlock = ({ url, onClear, onEdit }) => {
|
|
7
|
+
const [copyTitle, setCopyTitle] = React.useState('Copy');
|
|
8
|
+
const handleCopy = React.useCallback((e) => {
|
|
9
|
+
e.preventDefault();
|
|
10
|
+
navigator.clipboard
|
|
11
|
+
.writeText(url)
|
|
12
|
+
.then(() => {
|
|
13
|
+
setCopyTitle('Copied!');
|
|
14
|
+
setTimeout(() => setCopyTitle('Copy'), 1000);
|
|
15
|
+
})
|
|
16
|
+
.catch(console.error);
|
|
17
|
+
}, [url]);
|
|
18
|
+
const handleOpenLink = React.useCallback(() => {
|
|
19
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
20
|
+
}, [url]);
|
|
21
|
+
return (_jsx("div", { className: 'flex h-10 overflow-hidden rounded bg-background p-2 shadow-lg', children: _jsxs("div", { className: 'inline-flex items-center gap-1', children: [_jsx(ToolbarButton, { tooltip: 'Edit link', onClick: onEdit, className: 'w-auto px-2', children: "Edit link" }), _jsx(Separator, { orientation: 'vertical' }), _jsx(ToolbarButton, { tooltip: 'Open link in a new tab', onClick: handleOpenLink, children: _jsx(ExternalLinkIcon, { className: 'size-4' }) }), _jsx(Separator, { orientation: 'vertical' }), _jsx(ToolbarButton, { tooltip: 'Clear link', onClick: onClear, children: _jsx(Link2Off, { className: 'size-4' }) }), _jsx(Separator, { orientation: 'vertical' }), _jsx(ToolbarButton, { tooltip: copyTitle, onClick: handleCopy, tooltipOptions: {
|
|
22
|
+
onPointerDownOutside: (e) => {
|
|
23
|
+
if (e.target === e.currentTarget)
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
},
|
|
26
|
+
}, children: _jsx(CopyIcon, { className: 'size-4' }) })] }) }));
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=link-popover-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-popover-block.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/link/link-popover-block.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAQnE,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;IAC5F,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAS,MAAM,CAAC,CAAA;IAEhE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAClC,CAAC,CAAsC,EAAE,EAAE;QACzC,CAAC,CAAC,cAAc,EAAE,CAAA;QAClB,SAAS,CAAC,SAAS;aAChB,SAAS,CAAC,GAAG,CAAC;aACd,IAAI,CAAC,GAAG,EAAE;YACT,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAA;QAC9C,CAAC,CAAC;aACD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAA;IACnD,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAET,OAAO,CACL,cAAK,SAAS,EAAC,+DAA+D,YAC5E,eAAK,SAAS,EAAC,gCAAgC,aAC7C,KAAC,aAAa,IAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAC,aAAa,0BAE3D,EAChB,KAAC,SAAS,IAAC,WAAW,EAAC,UAAU,GAAG,EACpC,KAAC,aAAa,IAAC,OAAO,EAAC,wBAAwB,EAAC,OAAO,EAAE,cAAc,YACrE,KAAC,gBAAgB,IAAC,SAAS,EAAC,QAAQ,GAAG,GACzB,EAChB,KAAC,SAAS,IAAC,WAAW,EAAC,UAAU,GAAG,EACpC,KAAC,aAAa,IAAC,OAAO,EAAC,YAAY,EAAC,OAAO,EAAE,OAAO,YAClD,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG,GACjB,EAChB,KAAC,SAAS,IAAC,WAAW,EAAC,UAAU,GAAG,EACpC,KAAC,aAAa,IACZ,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE;wBACd,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;4BAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;gCAAE,CAAC,CAAC,cAAc,EAAE,CAAA;wBACtD,CAAC;qBACF,YAED,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG,GACjB,IACZ,GACF,CACP,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable react/prop-types */
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { useContainerSize } from '../hooks/use-container-size';
|
|
5
|
+
export const MeasuredContainer = React.forwardRef(({ as: Component, name, children, style = {}, ...props }, ref) => {
|
|
6
|
+
const innerRef = React.useRef(null);
|
|
7
|
+
const rect = useContainerSize(innerRef.current);
|
|
8
|
+
React.useImperativeHandle(ref, () => innerRef.current);
|
|
9
|
+
const customStyle = {
|
|
10
|
+
[`--${name}-width`]: `${rect.width}px`,
|
|
11
|
+
[`--${name}-height`]: `${rect.height}px`,
|
|
12
|
+
};
|
|
13
|
+
return (_jsx(Component, { ...props, ref: innerRef, style: { ...customStyle, ...style }, children: children }));
|
|
14
|
+
});
|
|
15
|
+
MeasuredContainer.displayName = 'MeasuredContainer';
|
|
16
|
+
//# sourceMappingURL=measured-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measured-container.js","sourceRoot":"","sources":["../../../../src/components/minimal-tiptap/components/measured-container.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAQ9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAC/C,CACE,EACE,EAAE,EAAE,SAAS,EACb,IAAI,EACJ,QAAQ,EACR,KAAK,GAAG,EAAE,EACV,GAAG,KAAK,EAC4C,EACtD,GAA2B,EAC3B,EAAE;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAc,IAAI,CAAC,CAAA;IAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAE/C,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAsB,CAAC,CAAA;IAErE,MAAM,WAAW,GAAG;QAClB,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI;QACtC,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI;KACzC,CAAA;IAED,OAAO,CACL,KAAC,SAAS,OAAK,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,EAAE,YACrE,QAAQ,GACC,CACb,CAAA;AACH,CAAC,CACF,CAAA;AAED,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown, CodeIcon, SeparatorHorizontalIcon, PlusIcon, QuoteIcon } from 'lucide-react';
|
|
3
|
+
import { LinkEditPopover } from '../link/link-edit-popover';
|
|
4
|
+
import { ToolbarSection } from '../toolbar-section';
|
|
5
|
+
const formatActions = [
|
|
6
|
+
{
|
|
7
|
+
value: 'codeBlock',
|
|
8
|
+
label: 'Code block',
|
|
9
|
+
icon: _jsx(CodeIcon, { className: 'size-5' }),
|
|
10
|
+
action: (editor) => editor.chain().focus().toggleCodeBlock().run(),
|
|
11
|
+
isActive: (editor) => editor.isActive('codeBlock'),
|
|
12
|
+
canExecute: (editor) => editor.can().chain().focus().toggleCodeBlock().run(),
|
|
13
|
+
shortcuts: ['mod', 'alt', 'C'],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
value: 'blockquote',
|
|
17
|
+
label: 'Blockquote',
|
|
18
|
+
icon: _jsx(QuoteIcon, { className: 'size-5' }),
|
|
19
|
+
action: (editor) => editor.chain().focus().toggleBlockquote().run(),
|
|
20
|
+
isActive: (editor) => editor.isActive('blockquote'),
|
|
21
|
+
canExecute: (editor) => editor.can().chain().focus().toggleBlockquote().run(),
|
|
22
|
+
shortcuts: ['mod', 'shift', 'B'],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
value: 'horizontalRule',
|
|
26
|
+
label: 'Divider',
|
|
27
|
+
icon: _jsx(SeparatorHorizontalIcon, { className: 'size-5' }),
|
|
28
|
+
action: (editor) => editor.chain().focus().setHorizontalRule().run(),
|
|
29
|
+
isActive: () => false,
|
|
30
|
+
canExecute: (editor) => editor.can().chain().focus().setHorizontalRule().run(),
|
|
31
|
+
shortcuts: ['mod', 'alt', '-'],
|
|
32
|
+
},
|
|
33
|
+
];
|
|
34
|
+
export const SectionFive = ({ editor, activeActions = formatActions.map((action) => action.value), mainActionCount = 0, size, variant, }) => {
|
|
35
|
+
return (_jsxs(_Fragment, { children: [_jsx(LinkEditPopover, { editor: editor, size: size, variant: variant }), _jsx(ToolbarSection, { editor: editor, actions: formatActions, activeActions: activeActions, mainActionCount: mainActionCount, dropdownIcon: _jsxs(_Fragment, { children: [_jsx(PlusIcon, { className: 'size-5' }), _jsx(ChevronDown, { className: 'size-5' })] }), dropdownTooltip: 'Insert elements', size: size, variant: variant })] }));
|
|
36
|
+
};
|
|
37
|
+
SectionFive.displayName = 'SectionFive';
|
|
38
|
+
export default SectionFive;
|
|
39
|
+
//# sourceMappingURL=five.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"five.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/section/five.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown, ListIcon } from 'lucide-react';
|
|
3
|
+
import { ToolbarSection } from '../toolbar-section';
|
|
4
|
+
const formatActions = [
|
|
5
|
+
{
|
|
6
|
+
value: 'orderedList',
|
|
7
|
+
label: 'Numbered list',
|
|
8
|
+
icon: (_jsx("svg", { xmlns: 'http://www.w3.org/2000/svg', height: '20px', viewBox: '0 -960 960 960', width: '20px', fill: 'currentColor', children: _jsx("path", { d: 'M144-144v-48h96v-24h-48v-48h48v-24h-96v-48h120q10.2 0 17.1 6.9 6.9 6.9 6.9 17.1v48q0 10.2-6.9 17.1-6.9 6.9-17.1 6.9 10.2 0 17.1 6.9 6.9 6.9 6.9 17.1v48q0 10.2-6.9 17.1-6.9 6.9-17.1 6.9H144Zm0-240v-96q0-10.2 6.9-17.1 6.9-6.9 17.1-6.9h72v-24h-96v-48h120q10.2 0 17.1 6.9 6.9 6.9 6.9 17.1v72q0 10.2-6.9 17.1-6.9 6.9-17.1 6.9h-72v24h96v48H144Zm48-240v-144h-48v-48h96v192h-48Zm168 384v-72h456v72H360Zm0-204v-72h456v72H360Zm0-204v-72h456v72H360Z' }) })),
|
|
9
|
+
isActive: (editor) => editor.isActive('orderedList'),
|
|
10
|
+
action: (editor) => editor.chain().focus().toggleOrderedList().run(),
|
|
11
|
+
canExecute: (editor) => editor.can().chain().focus().toggleOrderedList().run(),
|
|
12
|
+
shortcuts: ['mod', 'shift', '7'],
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: 'bulletList',
|
|
16
|
+
label: 'Bullet list',
|
|
17
|
+
icon: _jsx(ListIcon, { className: 'size-5' }),
|
|
18
|
+
isActive: (editor) => editor.isActive('bulletList'),
|
|
19
|
+
action: (editor) => editor.chain().focus().toggleBulletList().run(),
|
|
20
|
+
canExecute: (editor) => editor.can().chain().focus().toggleBulletList().run(),
|
|
21
|
+
shortcuts: ['mod', 'shift', '8'],
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
export const SectionFour = ({ editor, activeActions = formatActions.map((action) => action.value), mainActionCount = 0, size, variant, }) => {
|
|
25
|
+
return (_jsx(ToolbarSection, { editor: editor, actions: formatActions, activeActions: activeActions, mainActionCount: mainActionCount, dropdownIcon: _jsxs(_Fragment, { children: [_jsx(ListIcon, { className: 'size-5' }), _jsx(ChevronDown, { className: 'size-5' })] }), dropdownTooltip: 'Lists', size: size, variant: variant }));
|
|
26
|
+
};
|
|
27
|
+
SectionFour.displayName = 'SectionFour';
|
|
28
|
+
export default SectionFour;
|
|
29
|
+
//# sourceMappingURL=four.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"four.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/section/four.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAOnD,MAAM,aAAa,GAAe;IAChC;QACE,KAAK,EAAE,aAAa;QACpB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,CACJ,cACE,KAAK,EAAC,4BAA4B,EAClC,MAAM,EAAC,MAAM,EACb,OAAO,EAAC,gBAAgB,EACxB,KAAK,EAAC,MAAM,EACZ,IAAI,EAAC,cAAc,YAEnB,eAAM,CAAC,EAAC,wbAAwb,GAAG,GAC/b,CACP;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QACpD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE;QACpE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE;QAC9E,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC;KACjC;IACD;QACE,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG;QACrC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnD,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;QACnE,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE;QAC7E,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC;KACjC;CACF,CAAA;AAQD,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,MAAM,EACN,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAC3D,eAAe,GAAG,CAAC,EACnB,IAAI,EACJ,OAAO,GACR,EAAE,EAAE;IACH,OAAO,CACL,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,YAAY,EACV,8BACE,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG,EAC/B,KAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,GAAG,IACjC,EAEL,eAAe,EAAC,OAAO,EACvB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,GAChB,CACH,CAAA;AACH,CAAC,CAAA;AAED,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAEvC,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { ListIcon } from 'lucide-react';
|
|
3
|
+
import { ToolbarSection } from '../toolbar-section';
|
|
4
|
+
import { MailSearch } from 'lucide-react';
|
|
5
|
+
const formatActions = (placeholders) => {
|
|
6
|
+
return placeholders.map((placeholder) => ({
|
|
7
|
+
label: placeholder,
|
|
8
|
+
icon: _jsx(ListIcon, { className: 'size-5' }),
|
|
9
|
+
action: (editor) => {
|
|
10
|
+
editor.chain().focus().insertContent(`${placeholder}`).run();
|
|
11
|
+
},
|
|
12
|
+
isActive: () => false,
|
|
13
|
+
canExecute: () => true,
|
|
14
|
+
shortcuts: [],
|
|
15
|
+
value: placeholder,
|
|
16
|
+
}));
|
|
17
|
+
};
|
|
18
|
+
export const SectionMailingPlaceholders = ({ editor, placeholders, size, variant, }) => {
|
|
19
|
+
return (_jsx(ToolbarSection, { editor: editor, actions: formatActions(placeholders), dropdownIcon: _jsx(_Fragment, { children: _jsx(MailSearch, { className: 'size-5' }) }), dropdownTooltip: 'Available Mailing Placeholders', size: size, variant: variant }));
|
|
20
|
+
};
|
|
21
|
+
SectionMailingPlaceholders.displayName = 'MailingPlaceholders';
|
|
22
|
+
export default SectionMailingPlaceholders;
|
|
23
|
+
//# sourceMappingURL=mailingPlaceholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mailingPlaceholders.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/section/mailingPlaceholders.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,aAAa,GAAG,CAAC,YAAsB,EAAkB,EAAE;IAC/D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACxC,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,KAAC,QAAQ,IAAC,SAAS,EAAC,QAAQ,GAAG;QACrC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YACjB,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QAC9D,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI;QACtB,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,WAAW;KACnB,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AAOD,MAAM,CAAC,MAAM,0BAA0B,GAA6C,CAAC,EACnF,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,OAAO,GACR,EAAE,EAAE;IACH,OAAO,CACL,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,EACpC,YAAY,EACV,4BACE,KAAC,UAAU,IAAC,SAAS,EAAC,QAAQ,GAAG,GAChC,EAEL,eAAe,EAAC,gCAAgC,EAChD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,GAChB,CACH,CAAA;AACH,CAAC,CAAA;AAED,0BAA0B,CAAC,WAAW,GAAG,qBAAqB,CAAA;AAE9D,eAAe,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cn } from '../../../../lib/utils';
|
|
4
|
+
import { ChevronDown, CaseSensitive } from 'lucide-react';
|
|
5
|
+
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '../../../../components/ui/dropdown-menu';
|
|
6
|
+
import { ToolbarButton } from '../toolbar-button';
|
|
7
|
+
import { ShortcutKey } from '../shortcut-key';
|
|
8
|
+
const formatActions = [
|
|
9
|
+
{
|
|
10
|
+
label: 'Normal Text',
|
|
11
|
+
element: 'span',
|
|
12
|
+
className: 'grow',
|
|
13
|
+
shortcuts: ['mod', 'alt', '0'],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
label: 'Heading 1',
|
|
17
|
+
element: 'h1',
|
|
18
|
+
level: 1,
|
|
19
|
+
className: 'm-0 grow text-3xl font-extrabold',
|
|
20
|
+
shortcuts: ['mod', 'alt', '1'],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: 'Heading 2',
|
|
24
|
+
element: 'h2',
|
|
25
|
+
level: 2,
|
|
26
|
+
className: 'm-0 grow text-xl font-bold',
|
|
27
|
+
shortcuts: ['mod', 'alt', '2'],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: 'Heading 3',
|
|
31
|
+
element: 'h3',
|
|
32
|
+
level: 3,
|
|
33
|
+
className: 'm-0 grow text-lg font-semibold',
|
|
34
|
+
shortcuts: ['mod', 'alt', '3'],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
label: 'Heading 4',
|
|
38
|
+
element: 'h4',
|
|
39
|
+
level: 4,
|
|
40
|
+
className: 'm-0 grow text-base font-semibold',
|
|
41
|
+
shortcuts: ['mod', 'alt', '4'],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
label: 'Heading 5',
|
|
45
|
+
element: 'h5',
|
|
46
|
+
level: 5,
|
|
47
|
+
className: 'm-0 grow text-sm font-normal',
|
|
48
|
+
shortcuts: ['mod', 'alt', '5'],
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
label: 'Heading 6',
|
|
52
|
+
element: 'h6',
|
|
53
|
+
level: 6,
|
|
54
|
+
className: 'm-0 grow text-sm font-normal',
|
|
55
|
+
shortcuts: ['mod', 'alt', '6'],
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
export const SectionOne = React.memo(({ editor, activeLevels = [1, 2, 3, 4, 5, 6], size, variant }) => {
|
|
59
|
+
const filteredActions = React.useMemo(() => formatActions.filter((action) => !action.level || activeLevels.includes(action.level)), [activeLevels]);
|
|
60
|
+
const handleStyleChange = React.useCallback((level) => {
|
|
61
|
+
if (level) {
|
|
62
|
+
editor.chain().focus().toggleHeading({ level }).run();
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
editor.chain().focus().setParagraph().run();
|
|
66
|
+
}
|
|
67
|
+
}, [editor]);
|
|
68
|
+
const renderMenuItem = React.useCallback(({ label, element: Element, level, className, shortcuts }) => (_jsxs(DropdownMenuItem, { onClick: () => handleStyleChange(level), className: cn('flex flex-row items-center justify-between gap-4', {
|
|
69
|
+
'bg-accent': level
|
|
70
|
+
? editor.isActive('heading', { level })
|
|
71
|
+
: editor.isActive('paragraph'),
|
|
72
|
+
}), "aria-label": label, children: [_jsx(Element, { className: className, children: label }), _jsx(ShortcutKey, { keys: shortcuts })] }, label)), [editor, handleStyleChange]);
|
|
73
|
+
return (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsxs(ToolbarButton, { isActive: editor.isActive('heading'), tooltip: 'Text styles', "aria-label": 'Text styles', pressed: editor.isActive('heading'), className: 'w-12', disabled: editor.isActive('codeBlock'), size: size, variant: variant, children: [_jsx(CaseSensitive, { className: 'size-5' }), _jsx(ChevronDown, { className: 'size-5' })] }) }), _jsx(DropdownMenuContent, { align: 'start', className: 'w-full', children: filteredActions.map(renderMenuItem) })] }));
|
|
74
|
+
});
|
|
75
|
+
SectionOne.displayName = 'SectionOne';
|
|
76
|
+
export default SectionOne;
|
|
77
|
+
//# sourceMappingURL=one.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"one.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/section/one.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAS7C,MAAM,aAAa,GAAgB;IACjC;QACE,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,MAAM;QACf,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;KAC/B;IACD;QACE,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,kCAAkC;QAC7C,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;KAC/B;IACD;QACE,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,4BAA4B;QACvC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;KAC/B;IACD;QACE,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,gCAAgC;QAC3C,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;KAC/B;IACD;QACE,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,kCAAkC;QAC7C,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;KAC/B;IACD;QACE,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,8BAA8B;QACzC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;KAC/B;IACD;QACE,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,8BAA8B;QACzC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;KAC/B;CACF,CAAA;AAOD,MAAM,CAAC,MAAM,UAAU,GAA8B,KAAK,CAAC,IAAI,CAC7D,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;IAC/D,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CACnC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAC5F,CAAC,YAAY,CAAC,CACf,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,CAAC,KAAa,EAAE,EAAE;QAChB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAA;QAC7C,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CACtC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAa,EAAE,EAAE,CAAC,CACvE,MAAC,gBAAgB,IAEf,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACvC,SAAS,EAAE,EAAE,CAAC,kDAAkD,EAAE;YAChE,WAAW,EAAE,KAAK;gBAChB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC;gBACvC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;SACjC,CAAC,gBACU,KAAK,aAEjB,KAAC,OAAO,IAAC,SAAS,EAAE,SAAS,YAAG,KAAK,GAAW,EAChD,KAAC,WAAW,IAAC,IAAI,EAAE,SAAS,GAAI,KAV3B,KAAK,CAWO,CACpB,EACD,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC5B,CAAA;IAED,OAAO,CACL,MAAC,YAAY,eACX,KAAC,mBAAmB,IAAC,OAAO,kBAC1B,MAAC,aAAa,IACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EACpC,OAAO,EAAC,aAAa,gBACV,aAAa,EACxB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EACnC,SAAS,EAAC,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EACtC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,aAEhB,KAAC,aAAa,IAAC,SAAS,EAAC,QAAQ,GAAG,EACpC,KAAC,WAAW,IAAC,SAAS,EAAC,QAAQ,GAAG,IACpB,GACI,EACtB,KAAC,mBAAmB,IAAC,KAAK,EAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,YAClD,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,GAChB,IACT,CAChB,CAAA;AACH,CAAC,CACF,CAAA;AAED,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable react/prop-types */
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { ChevronDown, CheckIcon } from 'lucide-react';
|
|
5
|
+
import { ToolbarButton } from '../toolbar-button';
|
|
6
|
+
import { Popover, PopoverTrigger, PopoverContent } from '../../../../components/ui/popover';
|
|
7
|
+
import { ToggleGroup, ToggleGroupItem } from '../../../../components/ui/toggle-group';
|
|
8
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from '../../../../components/ui/tooltip';
|
|
9
|
+
import { useTheme } from '../../hooks/use-theme';
|
|
10
|
+
const COLORS = [
|
|
11
|
+
{
|
|
12
|
+
label: 'Palette 1',
|
|
13
|
+
inverse: 'hsl(var(--background))',
|
|
14
|
+
colors: [
|
|
15
|
+
{ cssVar: 'hsl(var(--foreground))', label: 'Default' },
|
|
16
|
+
{ cssVar: 'var(--mt-accent-bold-blue)', label: 'Bold blue' },
|
|
17
|
+
{ cssVar: 'var(--mt-accent-bold-teal)', label: 'Bold teal' },
|
|
18
|
+
{ cssVar: 'var(--mt-accent-bold-green)', label: 'Bold green' },
|
|
19
|
+
{ cssVar: 'var(--mt-accent-bold-orange)', label: 'Bold orange' },
|
|
20
|
+
{ cssVar: 'var(--mt-accent-bold-red)', label: 'Bold red' },
|
|
21
|
+
{ cssVar: 'var(--mt-accent-bold-purple)', label: 'Bold purple' },
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
label: 'Palette 2',
|
|
26
|
+
inverse: 'hsl(var(--background))',
|
|
27
|
+
colors: [
|
|
28
|
+
{ cssVar: 'var(--mt-accent-gray)', label: 'Gray' },
|
|
29
|
+
{ cssVar: 'var(--mt-accent-blue)', label: 'Blue' },
|
|
30
|
+
{ cssVar: 'var(--mt-accent-teal)', label: 'Teal' },
|
|
31
|
+
{ cssVar: 'var(--mt-accent-green)', label: 'Green' },
|
|
32
|
+
{ cssVar: 'var(--mt-accent-orange)', label: 'Orange' },
|
|
33
|
+
{ cssVar: 'var(--mt-accent-red)', label: 'Red' },
|
|
34
|
+
{ cssVar: 'var(--mt-accent-purple)', label: 'Purple' },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: 'Palette 3',
|
|
39
|
+
inverse: 'hsl(var(--foreground))',
|
|
40
|
+
colors: [
|
|
41
|
+
{ cssVar: 'hsl(var(--background))', label: 'White', darkLabel: 'Black' },
|
|
42
|
+
{ cssVar: 'var(--mt-accent-blue-subtler)', label: 'Blue subtle' },
|
|
43
|
+
{ cssVar: 'var(--mt-accent-teal-subtler)', label: 'Teal subtle' },
|
|
44
|
+
{ cssVar: 'var(--mt-accent-green-subtler)', label: 'Green subtle' },
|
|
45
|
+
{ cssVar: 'var(--mt-accent-yellow-subtler)', label: 'Yellow subtle' },
|
|
46
|
+
{ cssVar: 'var(--mt-accent-red-subtler)', label: 'Red subtle' },
|
|
47
|
+
{ cssVar: 'var(--mt-accent-purple-subtler)', label: 'Purple subtle' },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
const MemoizedColorButton = React.memo(({ color, isSelected, inverse, onClick }) => {
|
|
52
|
+
const isDarkMode = useTheme();
|
|
53
|
+
const label = isDarkMode && color.darkLabel ? color.darkLabel : color.label;
|
|
54
|
+
return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(ToggleGroupItem, { tabIndex: 0, className: 'relative size-7 rounded-md p-0', value: color.cssVar, "aria-label": label, style: { backgroundColor: color.cssVar }, onClick: (e) => {
|
|
55
|
+
e.preventDefault();
|
|
56
|
+
onClick(color.cssVar);
|
|
57
|
+
}, children: isSelected && (_jsx(CheckIcon, { className: 'absolute inset-0 m-auto size-6', style: { color: inverse } })) }) }), _jsx(TooltipContent, { side: 'bottom', children: _jsx("p", { children: label }) })] }));
|
|
58
|
+
});
|
|
59
|
+
MemoizedColorButton.displayName = 'MemoizedColorButton';
|
|
60
|
+
const MemoizedColorPicker = React.memo(({ palette, selectedColor, inverse, onColorChange }) => (_jsx(ToggleGroup, { type: 'single', value: selectedColor, onValueChange: (value) => {
|
|
61
|
+
if (value)
|
|
62
|
+
onColorChange(value);
|
|
63
|
+
}, className: 'gap-1.5', children: palette.colors.map((color, index) => (_jsx(MemoizedColorButton, { inverse: inverse, color: color, isSelected: selectedColor === color.cssVar, onClick: onColorChange }, index))) })));
|
|
64
|
+
MemoizedColorPicker.displayName = 'MemoizedColorPicker';
|
|
65
|
+
export const SectionThree = ({ editor, size, variant }) => {
|
|
66
|
+
const color = editor.getAttributes('textStyle')?.color || 'hsl(var(--foreground))';
|
|
67
|
+
const [selectedColor, setSelectedColor] = React.useState(color);
|
|
68
|
+
const handleColorChange = React.useCallback((value) => {
|
|
69
|
+
setSelectedColor(value);
|
|
70
|
+
editor.chain().setColor(value).run();
|
|
71
|
+
}, [editor]);
|
|
72
|
+
React.useEffect(() => {
|
|
73
|
+
setSelectedColor(color);
|
|
74
|
+
}, [color]);
|
|
75
|
+
return (_jsxs(Popover, { children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(ToolbarButton, { tooltip: 'Text color', "aria-label": 'Text color', className: 'w-12', size: size, variant: variant, children: [_jsxs("svg", { xmlns: 'http://www.w3.org/2000/svg', width: '24', height: '24', viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: '2', strokeLinecap: 'round', strokeLinejoin: 'round', className: 'size-5', style: { color: selectedColor }, children: [_jsx("path", { d: 'M4 20h16' }), _jsx("path", { d: 'm6 16 6-12 6 12' }), _jsx("path", { d: 'M8 12h8' })] }), _jsx(ChevronDown, { className: 'size-5' })] }) }), _jsx(PopoverContent, { align: 'start', className: 'w-full', children: _jsx("div", { className: 'space-y-1.5', children: COLORS.map((palette, index) => (_jsx(MemoizedColorPicker, { palette: palette, inverse: palette.inverse, selectedColor: selectedColor, onColorChange: handleColorChange }, index))) }) })] }));
|
|
76
|
+
};
|
|
77
|
+
SectionThree.displayName = 'SectionThree';
|
|
78
|
+
export default SectionThree;
|
|
79
|
+
//# sourceMappingURL=three.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"three.js","sourceRoot":"","sources":["../../../../../src/components/minimal-tiptap/components/section/three.tsx"],"names":[],"mappings":"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"}
|