@teriusu/rich-editor 0.4.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.
- package/README.md +178 -0
- package/dist/components/BubbleToolbar.svelte +299 -0
- package/dist/components/BubbleToolbar.svelte.d.ts +9 -0
- package/dist/components/BubbleToolbar.svelte.d.ts.map +1 -0
- package/dist/components/FixedToolbar.svelte +892 -0
- package/dist/components/FixedToolbar.svelte.d.ts +11 -0
- package/dist/components/FixedToolbar.svelte.d.ts.map +1 -0
- package/dist/components/InputModal.svelte +102 -0
- package/dist/components/InputModal.svelte.d.ts +11 -0
- package/dist/components/InputModal.svelte.d.ts.map +1 -0
- package/dist/components/PdfViewer.svelte +152 -0
- package/dist/components/PdfViewer.svelte.d.ts +8 -0
- package/dist/components/PdfViewer.svelte.d.ts.map +1 -0
- package/dist/components/SlashCommandMenu.svelte +315 -0
- package/dist/components/SlashCommandMenu.svelte.d.ts +14 -0
- package/dist/components/SlashCommandMenu.svelte.d.ts.map +1 -0
- package/dist/components/TableBubbleMenu.svelte +472 -0
- package/dist/components/TableBubbleMenu.svelte.d.ts +8 -0
- package/dist/components/TableBubbleMenu.svelte.d.ts.map +1 -0
- package/dist/components/TipTapEditor.svelte +649 -0
- package/dist/components/TipTapEditor.svelte.d.ts +17 -0
- package/dist/components/TipTapEditor.svelte.d.ts.map +1 -0
- package/dist/extensions/Column.d.ts +3 -0
- package/dist/extensions/Column.d.ts.map +1 -0
- package/dist/extensions/Column.js +20 -0
- package/dist/extensions/Columns.d.ts +11 -0
- package/dist/extensions/Columns.d.ts.map +1 -0
- package/dist/extensions/Columns.js +103 -0
- package/dist/extensions/Columns.test.d.ts +2 -0
- package/dist/extensions/Columns.test.d.ts.map +1 -0
- package/dist/extensions/Columns.test.js +62 -0
- package/dist/extensions/FileAttachment.d.ts +24 -0
- package/dist/extensions/FileAttachment.d.ts.map +1 -0
- package/dist/extensions/FileAttachment.js +190 -0
- package/dist/extensions/FileAttachment.test.d.ts +2 -0
- package/dist/extensions/FileAttachment.test.d.ts.map +1 -0
- package/dist/extensions/FileAttachment.test.js +63 -0
- package/dist/extensions/FixedDetails.d.ts +2 -0
- package/dist/extensions/FixedDetails.d.ts.map +1 -0
- package/dist/extensions/FixedDetails.js +100 -0
- package/dist/extensions/FixedDetails.test.d.ts +2 -0
- package/dist/extensions/FixedDetails.test.d.ts.map +1 -0
- package/dist/extensions/FixedDetails.test.js +40 -0
- package/dist/extensions/Indent.d.ts +11 -0
- package/dist/extensions/Indent.d.ts.map +1 -0
- package/dist/extensions/Indent.js +87 -0
- package/dist/extensions/Indent.test.d.ts +2 -0
- package/dist/extensions/Indent.test.d.ts.map +1 -0
- package/dist/extensions/Indent.test.js +78 -0
- package/dist/extensions/PdfBlock.d.ts +3 -0
- package/dist/extensions/PdfBlock.d.ts.map +1 -0
- package/dist/extensions/PdfBlock.js +301 -0
- package/dist/extensions/PdfBlock.test.d.ts +2 -0
- package/dist/extensions/PdfBlock.test.d.ts.map +1 -0
- package/dist/extensions/PdfBlock.test.js +51 -0
- package/dist/extensions/VideoBlock.d.ts +16 -0
- package/dist/extensions/VideoBlock.d.ts.map +1 -0
- package/dist/extensions/VideoBlock.js +87 -0
- package/dist/extensions/VideoBlock.test.d.ts +2 -0
- package/dist/extensions/VideoBlock.test.d.ts.map +1 -0
- package/dist/extensions/VideoBlock.test.js +54 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/styles/editor.css +698 -0
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +5 -0
- package/dist/utils/cn.test.d.ts +2 -0
- package/dist/utils/cn.test.d.ts.map +1 -0
- package/dist/utils/cn.test.js +28 -0
- package/dist/utils/escape-html.d.ts +2 -0
- package/dist/utils/escape-html.d.ts.map +1 -0
- package/dist/utils/escape-html.js +7 -0
- package/dist/utils/escape-html.test.d.ts +2 -0
- package/dist/utils/escape-html.test.d.ts.map +1 -0
- package/dist/utils/escape-html.test.js +25 -0
- package/dist/utils/pdf.d.ts +9 -0
- package/dist/utils/pdf.d.ts.map +1 -0
- package/dist/utils/pdf.js +33 -0
- package/dist/utils/sanitize.d.ts +9 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +115 -0
- package/dist/utils/sanitize.test.d.ts +2 -0
- package/dist/utils/sanitize.test.d.ts.map +1 -0
- package/dist/utils/sanitize.test.js +206 -0
- package/package.json +76 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { Editor } from '@tiptap/core';
|
|
3
|
+
import StarterKit from '@tiptap/starter-kit';
|
|
4
|
+
import { VideoBlock } from './VideoBlock';
|
|
5
|
+
describe('VideoBlock extension', () => {
|
|
6
|
+
let editor;
|
|
7
|
+
function createEditor(content = '<p></p>') {
|
|
8
|
+
editor = new Editor({
|
|
9
|
+
element: document.createElement('div'),
|
|
10
|
+
extensions: [StarterKit, VideoBlock],
|
|
11
|
+
content
|
|
12
|
+
});
|
|
13
|
+
return editor;
|
|
14
|
+
}
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
editor?.destroy();
|
|
17
|
+
});
|
|
18
|
+
it('registers with name "videoBlock"', () => {
|
|
19
|
+
createEditor();
|
|
20
|
+
const ext = editor.extensionManager.extensions.find((e) => e.name === 'videoBlock');
|
|
21
|
+
expect(ext).toBeDefined();
|
|
22
|
+
});
|
|
23
|
+
it('parses <div data-video-src="url">', () => {
|
|
24
|
+
createEditor('<div data-video-src="https://example.com/video.mp4" data-video-name="demo"></div>');
|
|
25
|
+
const doc = editor.getJSON();
|
|
26
|
+
const videoNode = doc.content?.find((n) => n.type === 'videoBlock');
|
|
27
|
+
expect(videoNode).toBeDefined();
|
|
28
|
+
expect(videoNode?.attrs?.src).toBe('https://example.com/video.mp4');
|
|
29
|
+
expect(videoNode?.attrs?.name).toBe('demo');
|
|
30
|
+
});
|
|
31
|
+
it('renders correct HTML', () => {
|
|
32
|
+
createEditor('<div data-video-src="https://example.com/video.mp4" data-video-name="demo"></div>');
|
|
33
|
+
const html = editor.getHTML();
|
|
34
|
+
expect(html).toContain('data-video-src="https://example.com/video.mp4"');
|
|
35
|
+
expect(html).toContain('data-video-name="demo"');
|
|
36
|
+
});
|
|
37
|
+
it('defaults name to empty string', () => {
|
|
38
|
+
createEditor('<div data-video-src="https://example.com/video.mp4"></div>');
|
|
39
|
+
const doc = editor.getJSON();
|
|
40
|
+
const videoNode = doc.content?.find((n) => n.type === 'videoBlock');
|
|
41
|
+
expect(videoNode?.attrs?.name).toBe('');
|
|
42
|
+
});
|
|
43
|
+
it('inserts via setVideoBlock command', () => {
|
|
44
|
+
createEditor();
|
|
45
|
+
editor.commands.setVideoBlock({
|
|
46
|
+
src: 'https://example.com/v.mp4',
|
|
47
|
+
name: 'My Video'
|
|
48
|
+
});
|
|
49
|
+
const doc = editor.getJSON();
|
|
50
|
+
const videoNode = doc.content?.find((n) => n.type === 'videoBlock');
|
|
51
|
+
expect(videoNode).toBeDefined();
|
|
52
|
+
expect(videoNode?.attrs?.src).toBe('https://example.com/v.mp4');
|
|
53
|
+
});
|
|
54
|
+
});
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { default as TipTapEditor } from "./components/TipTapEditor.svelte";
|
|
2
|
+
export { default as FixedToolbar } from "./components/FixedToolbar.svelte";
|
|
3
|
+
export { default as BubbleToolbar } from "./components/BubbleToolbar.svelte";
|
|
4
|
+
export { default as SlashCommandMenu } from "./components/SlashCommandMenu.svelte";
|
|
5
|
+
export { default as InputModal } from "./components/InputModal.svelte";
|
|
6
|
+
export { default as PdfViewer } from "./components/PdfViewer.svelte";
|
|
7
|
+
export { default as TableBubbleMenu } from "./components/TableBubbleMenu.svelte";
|
|
8
|
+
export { PdfBlock } from "./extensions/PdfBlock";
|
|
9
|
+
export { Indent } from "./extensions/Indent";
|
|
10
|
+
export { FixedDetails } from "./extensions/FixedDetails";
|
|
11
|
+
export { FileAttachment } from "./extensions/FileAttachment";
|
|
12
|
+
export type { FileResolver, FileResolveResult } from "./extensions/FileAttachment";
|
|
13
|
+
export { VideoBlock } from "./extensions/VideoBlock";
|
|
14
|
+
export { Columns } from "./extensions/Columns";
|
|
15
|
+
export { Column } from "./extensions/Column";
|
|
16
|
+
export { sanitizeHtml, stripHtmlToExcerpt, transformLegacyHtml } from "./utils/sanitize";
|
|
17
|
+
export { configurePdfJs, getPdfJs } from "./utils/pdf";
|
|
18
|
+
export { cn } from "./utils/cn";
|
|
19
|
+
export type { TipTapEditorProps, UploadHandler, ToolbarMode, FixedToolbarProps, BlockHandleProps, SlashCommandMenuProps, PdfViewerProps, SlashMenuItem, } from "./types";
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGjF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAGhC,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,aAAa,GACd,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// 컴포넌트
|
|
2
|
+
export { default as TipTapEditor } from "./components/TipTapEditor.svelte";
|
|
3
|
+
export { default as FixedToolbar } from "./components/FixedToolbar.svelte";
|
|
4
|
+
export { default as BubbleToolbar } from "./components/BubbleToolbar.svelte";
|
|
5
|
+
export { default as SlashCommandMenu } from "./components/SlashCommandMenu.svelte";
|
|
6
|
+
export { default as InputModal } from "./components/InputModal.svelte";
|
|
7
|
+
export { default as PdfViewer } from "./components/PdfViewer.svelte";
|
|
8
|
+
export { default as TableBubbleMenu } from "./components/TableBubbleMenu.svelte";
|
|
9
|
+
// 익스텐션
|
|
10
|
+
export { PdfBlock } from "./extensions/PdfBlock";
|
|
11
|
+
export { Indent } from "./extensions/Indent";
|
|
12
|
+
export { FixedDetails } from "./extensions/FixedDetails";
|
|
13
|
+
export { FileAttachment } from "./extensions/FileAttachment";
|
|
14
|
+
export { VideoBlock } from "./extensions/VideoBlock";
|
|
15
|
+
export { Columns } from "./extensions/Columns";
|
|
16
|
+
export { Column } from "./extensions/Column";
|
|
17
|
+
// 유틸리티
|
|
18
|
+
export { sanitizeHtml, stripHtmlToExcerpt, transformLegacyHtml } from "./utils/sanitize";
|
|
19
|
+
export { configurePdfJs, getPdfJs } from "./utils/pdf";
|
|
20
|
+
export { cn } from "./utils/cn";
|