@teriusu/rich-editor 0.4.1 → 0.5.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.
package/dist/types.d.ts CHANGED
@@ -5,6 +5,12 @@ import type { FileResolver } from "./extensions/FileAttachment";
5
5
  export type UploadHandler = (file: File) => Promise<string>;
6
6
  /** 툴바 모드 */
7
7
  export type ToolbarMode = 'minimal' | 'standard' | 'full';
8
+ /** 개별 툴바 기능 ID */
9
+ export type ToolbarFeature = 'bold' | 'italic' | 'underline' | 'strike' | 'highlight' | 'superscript' | 'subscript' | 'code' | 'align-left' | 'align-center' | 'align-right' | 'h1' | 'h2' | 'h3' | 'bullet-list' | 'ordered-list' | 'checklist' | 'blockquote' | 'horizontal-rule' | 'toggle' | 'link' | 'image' | 'pdf' | 'youtube' | 'video' | 'file' | 'columns-2' | 'columns-3' | 'table' | 'code-block' | 'undo' | 'redo' | 'fixed-toolbar' | 'bubble-toolbar' | 'slash-menu' | 'table-menu' | 'character-count' | 'upload-overlay';
10
+ /** 모드별 기본 feature 프리셋 */
11
+ export declare const TOOLBAR_PRESETS: Record<ToolbarMode, ToolbarFeature[]>;
12
+ /** features 배열 → Set 변환. features가 있으면 그걸 쓰고 없으면 toolbar 모드 프리셋 */
13
+ export declare function resolveFeatures(toolbar: ToolbarMode, features?: ToolbarFeature[]): Set<ToolbarFeature>;
8
14
  export interface TipTapEditorProps {
9
15
  content: string;
10
16
  onChange: (html: string) => void;
@@ -15,6 +21,8 @@ export interface TipTapEditorProps {
15
21
  onResolveFile?: FileResolver;
16
22
  /** 툴바 모드: 'minimal' | 'standard' | 'full' (기본값 'full') */
17
23
  toolbar?: ToolbarMode;
24
+ /** 개별 기능 커스터마이징. 설정 시 toolbar 모드 프리셋 대신 이 배열을 사용 */
25
+ features?: ToolbarFeature[];
18
26
  }
19
27
  export interface FixedToolbarProps {
20
28
  editor: Editor;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,+BAA+B;AAC/B,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5D,YAAY;AACZ,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,uCAAuC;IACvC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,+BAA+B;AAC/B,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5D,YAAY;AACZ,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE1D,kBAAkB;AAClB,MAAM,MAAM,cAAc,GAEvB,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GACxD,aAAa,GAAG,WAAW,GAAG,MAAM,GAEpC,YAAY,GAAG,cAAc,GAAG,aAAa,GAE7C,IAAI,GAAG,IAAI,GAAG,IAAI,GAElB,aAAa,GAAG,cAAc,GAAG,WAAW,GAC5C,YAAY,GAAG,iBAAiB,GAAG,QAAQ,GAE3C,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAEvD,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,YAAY,GAElD,MAAM,GAAG,MAAM,GAEf,eAAe,GAAG,gBAAgB,GAAG,YAAY,GACjD,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;AAEvD,yBAAyB;AACzB,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,EAAE,CA4BjE,CAAC;AAEF,mEAAmE;AACnE,wBAAgB,eAAe,CAC9B,OAAO,EAAE,WAAW,EACpB,QAAQ,CAAC,EAAE,cAAc,EAAE,GACzB,GAAG,CAAC,cAAc,CAAC,CAErB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,uCAAuC;IACvC,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,0DAA0D;IAC1D,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC"}
package/dist/types.js CHANGED
@@ -1 +1,34 @@
1
- export {};
1
+ /** 모드별 기본 feature 프리셋 */
2
+ export const TOOLBAR_PRESETS = {
3
+ full: [
4
+ 'bold', 'italic', 'underline', 'strike', 'highlight',
5
+ 'superscript', 'subscript', 'code',
6
+ 'align-left', 'align-center', 'align-right',
7
+ 'h1', 'h2', 'h3',
8
+ 'bullet-list', 'ordered-list', 'checklist',
9
+ 'blockquote', 'horizontal-rule', 'toggle',
10
+ 'link', 'image', 'pdf', 'youtube', 'video', 'file',
11
+ 'columns-2', 'columns-3', 'table', 'code-block',
12
+ 'undo', 'redo',
13
+ 'fixed-toolbar', 'bubble-toolbar', 'slash-menu',
14
+ 'table-menu', 'character-count', 'upload-overlay'
15
+ ],
16
+ standard: [
17
+ 'bold', 'italic', 'strike', 'code',
18
+ 'h1', 'h2', 'h3',
19
+ 'bullet-list', 'ordered-list', 'checklist',
20
+ 'blockquote', 'horizontal-rule', 'toggle',
21
+ 'link', 'image', 'pdf', 'youtube', 'video', 'file',
22
+ 'columns-2', 'columns-3', 'table', 'code-block',
23
+ 'bubble-toolbar', 'slash-menu', 'table-menu'
24
+ ],
25
+ minimal: [
26
+ 'bold', 'italic', 'strike', 'code',
27
+ 'link',
28
+ 'bubble-toolbar', 'slash-menu'
29
+ ]
30
+ };
31
+ /** features 배열 → Set 변환. features가 있으면 그걸 쓰고 없으면 toolbar 모드 프리셋 */
32
+ export function resolveFeatures(toolbar, features) {
33
+ return new Set(features ?? TOOLBAR_PRESETS[toolbar]);
34
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teriusu/rich-editor",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "TipTap 기반 Notion-style 리치 텍스트 에디터 (Svelte)",
5
5
  "type": "module",
6
6
  "svelte": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "dist"
21
21
  ],
22
22
  "scripts": {
23
- "build": "svelte-package -i src",
23
+ "build": "svelte-package -i src && npx tailwindcss -i src/styles/editor.css -o dist/styles/editor.css --minify",
24
24
  "dev": "svelte-package -i src --watch",
25
25
  "dev:preview": "vite --config vite.config.dev.ts",
26
26
  "test": "vitest run"
@@ -67,8 +67,11 @@
67
67
  "devDependencies": {
68
68
  "@sveltejs/package": "^2.3.0",
69
69
  "@sveltejs/vite-plugin-svelte": "^5.0.0",
70
+ "autoprefixer": "^10.4.27",
70
71
  "jsdom": "^29.0.1",
72
+ "postcss": "^8.5.9",
71
73
  "svelte": "^5.0.0",
74
+ "tailwindcss": "^3.4.19",
72
75
  "typescript": "^5.7.0",
73
76
  "vite": "^6.0.0",
74
77
  "vitest": "^4.1.2"