@haklex/rich-ext-code-snippet 0.0.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.
@@ -0,0 +1,13 @@
1
+ import { CodeFile, SlashMenuItemConfig } from '@haklex/rich-editor';
2
+ import { EditorConfig, LexicalEditor, LexicalNode } from 'lexical';
3
+ import { ReactElement } from 'react';
4
+ import { CodeSnippetNode, SerializedCodeSnippetNode } from './CodeSnippetNode';
5
+ export declare class CodeSnippetEditNode extends CodeSnippetNode {
6
+ static slashMenuItems: SlashMenuItemConfig[];
7
+ static clone(node: CodeSnippetEditNode): CodeSnippetEditNode;
8
+ static importJSON(serializedNode: SerializedCodeSnippetNode): CodeSnippetEditNode;
9
+ decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement;
10
+ }
11
+ export declare function $createCodeSnippetEditNode(files: CodeFile[]): CodeSnippetEditNode;
12
+ export declare function $isCodeSnippetEditNode(node: LexicalNode | null | undefined): node is CodeSnippetEditNode;
13
+ //# sourceMappingURL=CodeSnippetEditNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeSnippetEditNode.d.ts","sourceRoot":"","sources":["../../src/nodes/CodeSnippetEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAIzC,OAAO,EACL,eAAe,EACf,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAA;AAE1B,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAiB3C;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;IAI5D,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,yBAAyB,GACxC,mBAAmB;IAItB,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAMtE;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,QAAQ,EAAE,GAChB,mBAAmB,CAErB;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,mBAAmB,CAE7B"}
@@ -0,0 +1,23 @@
1
+ import { CodeFile } from '@haklex/rich-editor';
2
+ import { EditorConfig, LexicalEditor, LexicalNode, NodeKey, SerializedLexicalNode, Spread, DecoratorNode } from 'lexical';
3
+ import { ReactElement } from 'react';
4
+ export type SerializedCodeSnippetNode = Spread<{
5
+ files: CodeFile[];
6
+ }, SerializedLexicalNode>;
7
+ export declare class CodeSnippetNode extends DecoratorNode<ReactElement> {
8
+ __files: CodeFile[];
9
+ static getType(): string;
10
+ static clone(node: CodeSnippetNode): CodeSnippetNode;
11
+ constructor(files: CodeFile[], key?: NodeKey);
12
+ createDOM(_config: EditorConfig): HTMLElement;
13
+ updateDOM(): boolean;
14
+ isInline(): boolean;
15
+ static importJSON(serializedNode: SerializedCodeSnippetNode): CodeSnippetNode;
16
+ exportJSON(): SerializedCodeSnippetNode;
17
+ getFiles(): CodeFile[];
18
+ setFiles(files: CodeFile[]): void;
19
+ decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement;
20
+ }
21
+ export declare function $createCodeSnippetNode(files: CodeFile[]): CodeSnippetNode;
22
+ export declare function $isCodeSnippetNode(node: LexicalNode | null | undefined): node is CodeSnippetNode;
23
+ //# sourceMappingURL=CodeSnippetNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeSnippetNode.d.ts","sourceRoot":"","sources":["../../src/nodes/CodeSnippetNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,MAAM,EACP,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAIzC,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAC5C;IACE,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB,EACD,qBAAqB,CACtB,CAAA;AAED,qBAAa,eAAgB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC9D,OAAO,EAAE,QAAQ,EAAE,CAAA;IAEnB,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe;gBAIxC,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO;IAK5C,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW;IAM7C,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,OAAO;IAInB,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,yBAAyB,GACxC,eAAe;IAIlB,UAAU,IAAI,yBAAyB;IASvC,QAAQ,IAAI,QAAQ,EAAE;IAItB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAKjC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAKtE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,eAAe,CAEzE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,eAAe,CAEzB"}
@@ -0,0 +1,7 @@
1
+ import { CodeSnippetEditNode } from './CodeSnippetEditNode';
2
+ import { CodeSnippetNode } from './CodeSnippetNode';
3
+ export { CodeSnippetEditNode } from './CodeSnippetEditNode';
4
+ export { CodeSnippetNode } from './CodeSnippetNode';
5
+ export declare const codeSnippetNodes: (typeof CodeSnippetNode)[];
6
+ export declare const codeSnippetEditNodes: (typeof CodeSnippetEditNode)[];
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nodes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,eAAO,MAAM,gBAAgB,4BAAoB,CAAA;AACjD,eAAO,MAAM,oBAAoB,gCAAwB,CAAA"}
@@ -0,0 +1,411 @@
1
+ .rcs-container {
2
+ position: relative;
3
+ border-radius: 0.5rem;
4
+ overflow: hidden;
5
+ border: 1px solid var(--rc-border);
6
+ background: var(--rc-code-bg);
7
+ font-size: 0.875rem;
8
+ }
9
+ .rcs-header {
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: space-between;
13
+ padding: 0 12px;
14
+ min-height: 40px;
15
+ }
16
+ .rcs-tabs {
17
+ display: flex;
18
+ align-items: center;
19
+ gap: 2px;
20
+ overflow-x: auto;
21
+ scrollbar-width: none;
22
+ }
23
+ .rcs-tabs::-webkit-scrollbar {
24
+ display: none;
25
+ }
26
+ .rcs-tab {
27
+ display: flex;
28
+ align-items: center;
29
+ gap: 6px;
30
+ padding: 6px 10px;
31
+ font-size: 0.75rem;
32
+ font-family: var(--font-mono, ui-monospace, monospace);
33
+ font-weight: 500;
34
+ color: var(--rc-text-secondary);
35
+ background: transparent;
36
+ border: none;
37
+ border-radius: 6px;
38
+ cursor: pointer;
39
+ white-space: nowrap;
40
+ flex-shrink: 0;
41
+ transition: color 0.15s, background 0.15s;
42
+ }
43
+ .rcs-tab:hover {
44
+ color: var(--rc-text);
45
+ background: color-mix(in srgb, var(--rc-text) 5%, transparent);
46
+ }
47
+ .rcs-tab-active {
48
+ color: var(--rc-text);
49
+ background: color-mix(in srgb, var(--rc-text) 8%, transparent);
50
+ }
51
+ .rcs-title-bar {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: 6px;
55
+ padding: 6px 0;
56
+ font-size: 0.75rem;
57
+ font-family: var(--font-mono, ui-monospace, monospace);
58
+ font-weight: 500;
59
+ color: var(--rc-text-secondary);
60
+ }
61
+ .rcs-header-actions {
62
+ display: flex;
63
+ align-items: center;
64
+ opacity: 0;
65
+ transition: opacity 0.15s;
66
+ }
67
+ .rcs-container:hover .rcs-header-actions {
68
+ opacity: 1;
69
+ }
70
+ .rcs-copy-btn {
71
+ display: inline-flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ width: 28px;
75
+ height: 28px;
76
+ border-radius: 6px;
77
+ border: none;
78
+ background: transparent;
79
+ color: var(--rc-text-secondary);
80
+ cursor: pointer;
81
+ transition: background 0.15s, color 0.15s;
82
+ }
83
+ .rcs-copy-btn:hover {
84
+ background: color-mix(in srgb, var(--rc-text) 8%, transparent);
85
+ color: var(--rc-text);
86
+ }
87
+ .rcs-separator {
88
+ height: 1px;
89
+ background: var(--rc-border);
90
+ opacity: 0.6;
91
+ }
92
+ .rcs-code-scroll {
93
+ overflow-x: auto;
94
+ }
95
+ .rcs-code-body {
96
+ padding: 12px 16px;
97
+ margin: 0;
98
+ font-size: 0.8125rem;
99
+ line-height: 1.7;
100
+ font-family: var(--font-mono, ui-monospace, monospace);
101
+ }
102
+ .rcs-code-body pre {
103
+ margin: 0;
104
+ background: transparent !important;
105
+ }
106
+ .rcs-code-body code {
107
+ font-family: inherit;
108
+ }
109
+ .rcs-editor-container pre code {
110
+ display: flex;
111
+ flex-direction: column;
112
+ }
113
+ .rcs-file-icon svg {
114
+ width: 100%;
115
+ height: 100%;
116
+ }
117
+ .rcs-edit-container {
118
+ position: relative;
119
+ }
120
+ .rcs-edit-overlay {
121
+ position: absolute;
122
+ inset: 0;
123
+ z-index: 5;
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ cursor: pointer;
128
+ background: transparent;
129
+ border: none;
130
+ }
131
+ .rcs-edit-overlay:hover {
132
+ background: color-mix(in srgb, currentColor 6%, transparent);
133
+ }
134
+ .rcs-edit-label {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 6px;
138
+ padding: 6px 14px;
139
+ border-radius: 6px;
140
+ background: var(--rc-bg);
141
+ border: 1px solid var(--rc-border);
142
+ color: var(--rc-text);
143
+ font-size: 0.8125rem;
144
+ font-weight: 500;
145
+ opacity: 0;
146
+ transition: opacity 0.2s;
147
+ }
148
+ .rcs-edit-container:hover .rcs-edit-label {
149
+ opacity: 1;
150
+ }
151
+ .hjkryc0.hjkryc0 {
152
+ padding: 0;
153
+ gap: 0;
154
+ display: flex;
155
+ flex-direction: column;
156
+ overflow: hidden;
157
+ width: calc(100vw - 2rem);
158
+ height: min(720px, 80vh);
159
+ border-radius: 0.75rem;
160
+ }
161
+ .hjkryc0.hjkryc0[data-open] {
162
+ animation: none;
163
+ }
164
+ .hjkryc0.hjkryc0[data-closed] {
165
+ animation: none;
166
+ }
167
+ .rcs-modal {
168
+ display: flex;
169
+ flex-direction: column;
170
+ flex: 1;
171
+ min-height: 0;
172
+ overflow: hidden;
173
+ }
174
+ .rcs-modal-titlebar {
175
+ display: flex;
176
+ align-items: center;
177
+ justify-content: space-between;
178
+ height: 44px;
179
+ padding: 0 16px;
180
+ border-bottom: 1px solid var(--rc-border);
181
+ flex-shrink: 0;
182
+ }
183
+ .rcs-modal-title {
184
+ font-size: 0.75rem;
185
+ font-family: var(--font-mono, ui-monospace, monospace);
186
+ color: var(--rc-text-secondary);
187
+ }
188
+ .rcs-modal-icon-btn {
189
+ display: inline-flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ width: 28px;
193
+ height: 28px;
194
+ border-radius: 6px;
195
+ border: none;
196
+ background: transparent;
197
+ color: var(--rc-text-secondary);
198
+ cursor: pointer;
199
+ transition: background 0.15s, color 0.15s;
200
+ }
201
+ .rcs-modal-icon-btn:hover {
202
+ background: color-mix(in srgb, var(--rc-text) 8%, transparent);
203
+ color: var(--rc-text);
204
+ }
205
+ .rcs-modal-body {
206
+ display: flex;
207
+ flex: 1;
208
+ min-height: 0;
209
+ }
210
+ .rcs-modal-sidebar {
211
+ width: 224px;
212
+ flex-shrink: 0;
213
+ border-right: 1px solid var(--rc-border);
214
+ display: flex;
215
+ flex-direction: column;
216
+ overflow: hidden;
217
+ }
218
+ .rcs-sidebar-header {
219
+ display: flex;
220
+ align-items: center;
221
+ justify-content: space-between;
222
+ padding: 12px 12px 8px;
223
+ font-size: 0.625rem;
224
+ font-weight: 600;
225
+ text-transform: uppercase;
226
+ letter-spacing: 0.05em;
227
+ color: color-mix(in srgb, var(--rc-text-secondary) 60%, transparent);
228
+ }
229
+ .rcs-sidebar-add-btn {
230
+ display: inline-flex;
231
+ align-items: center;
232
+ justify-content: center;
233
+ width: 22px;
234
+ height: 22px;
235
+ border-radius: 4px;
236
+ border: none;
237
+ background: transparent;
238
+ color: var(--rc-text-secondary);
239
+ cursor: pointer;
240
+ transition: background 0.15s, color 0.15s;
241
+ }
242
+ .rcs-sidebar-add-btn:hover {
243
+ background: color-mix(in srgb, var(--rc-text) 8%, transparent);
244
+ color: var(--rc-text);
245
+ }
246
+ .rcs-file-list {
247
+ flex: 1;
248
+ overflow-y: auto;
249
+ padding: 0 6px 8px;
250
+ }
251
+ .rcs-file-item {
252
+ display: flex;
253
+ align-items: center;
254
+ gap: 4px;
255
+ padding: 4px 8px;
256
+ border-radius: 6px;
257
+ height: 24px;
258
+ cursor: pointer;
259
+ font-size: 0.75rem;
260
+ font-family: var(--font-mono, ui-monospace, monospace);
261
+ color: var(--rc-text-secondary);
262
+ transition: background 0.15s, color 0.15s;
263
+ }
264
+ .rcs-file-drag-handle {
265
+ display: inline-flex;
266
+ align-items: center;
267
+ cursor: grab;
268
+ color: color-mix(in srgb, var(--rc-text-secondary) 40%, transparent);
269
+ flex-shrink: 0;
270
+ touch-action: none;
271
+ }
272
+ .rcs-file-drag-handle:active {
273
+ cursor: grabbing;
274
+ }
275
+ .rcs-file-item:hover {
276
+ background: color-mix(in srgb, var(--rc-text) 5%, transparent);
277
+ color: var(--rc-text);
278
+ }
279
+ .rcs-file-item-active {
280
+ background: color-mix(in srgb, var(--rc-text) 8%, transparent);
281
+ color: var(--rc-text);
282
+ }
283
+ .rcs-file-name {
284
+ flex: 1;
285
+ overflow: hidden;
286
+ text-overflow: ellipsis;
287
+ white-space: nowrap;
288
+ }
289
+ .rcs-file-delete {
290
+ display: none;
291
+ align-items: center;
292
+ justify-content: center;
293
+ width: 20px;
294
+ height: 20px;
295
+ border-radius: 4px;
296
+ border: none;
297
+ background: transparent;
298
+ color: var(--rc-text-secondary);
299
+ cursor: pointer;
300
+ flex-shrink: 0;
301
+ }
302
+ .rcs-file-item:hover .rcs-file-delete {
303
+ display: inline-flex;
304
+ }
305
+ .rcs-file-delete:hover {
306
+ color: var(--rc-alert-caution);
307
+ background: color-mix(in srgb, var(--rc-alert-caution) 10%, transparent);
308
+ }
309
+ .rcs-rename-input {
310
+ flex: 1;
311
+ min-width: 0;
312
+ padding: 1px 4px;
313
+ font-size: 0.75rem;
314
+ font-family: var(--font-mono, ui-monospace, monospace);
315
+ border-radius: 3px;
316
+ border: 1px solid var(--rc-border);
317
+ background: var(--rc-bg);
318
+ color: var(--rc-text);
319
+ outline: none;
320
+ }
321
+ .rcs-rename-input:focus {
322
+ border-color: color-mix(in srgb, var(--rc-text) 30%, transparent);
323
+ }
324
+ .rcs-modal-editor {
325
+ flex: 1;
326
+ display: flex;
327
+ flex-direction: column;
328
+ min-width: 0;
329
+ }
330
+ .rcs-breadcrumb {
331
+ display: flex;
332
+ align-items: center;
333
+ justify-content: space-between;
334
+ height: 36px;
335
+ padding: 0 16px;
336
+ border-bottom: 1px solid color-mix(in srgb, var(--rc-border) 50%, transparent);
337
+ flex-shrink: 0;
338
+ }
339
+ .rcs-breadcrumb-left {
340
+ display: flex;
341
+ align-items: center;
342
+ gap: 6px;
343
+ font-size: 0.75rem;
344
+ font-family: var(--font-mono, ui-monospace, monospace);
345
+ color: var(--rc-text-secondary);
346
+ overflow: hidden;
347
+ }
348
+ .rcs-breadcrumb-name {
349
+ color: var(--rc-text);
350
+ white-space: nowrap;
351
+ overflow: hidden;
352
+ text-overflow: ellipsis;
353
+ }
354
+ .rcs-breadcrumb-lang {
355
+ opacity: 0.5;
356
+ }
357
+ .rcs-editor-container {
358
+ flex: 1;
359
+ min-height: 0;
360
+ position: relative;
361
+ overflow: auto;
362
+ background-color: transparent !important;
363
+ }
364
+ .rcs-editor-container > .shikicode.output {
365
+ position: static !important;
366
+ inset: auto !important;
367
+ }
368
+ .rcs-editor-container .shikicode {
369
+ height: 100%;
370
+ font-size: 0.8125rem;
371
+ line-height: 1.7;
372
+ }
373
+ .rcs-editor-container .shiki, .rcs-editor-container code, .rcs-editor-container pre {
374
+ background: transparent !important;
375
+ }
376
+ .rcs-editor-container pre {
377
+ margin: 0 !important;
378
+ padding: 0 !important;
379
+ }
380
+ .rcs-editor-container .shikicode.output .line::before {
381
+ background-color: transparent !important;
382
+ }
383
+ .rcs-editor-container .line {
384
+ display: block;
385
+ padding: 0 1rem;
386
+ }
387
+ .rcs-editor-container .shikicode.input.line-numbers {
388
+ padding-left: calc(5em + 1rem);
389
+ }
390
+ .rcs-editor-container .shikicode.input:not(.line-numbers) {
391
+ padding-left: 1rem;
392
+ }
393
+ .rcs-editor-container .line > span:last-child {
394
+ margin-right: 1rem;
395
+ }
396
+ .rcs-editor-container .line::after {
397
+ content: ' ';
398
+ }
399
+ .rcs-file-item-dragging {
400
+ opacity: 0.4;
401
+ }
402
+ .rcs-drag-overlay {
403
+ background: var(--rc-bg-secondary);
404
+ border-radius: 6px;
405
+ box-shadow: 0 4px 16px rgba(0,0,0,0.15);
406
+ }
407
+ @media (min-width: 640px) {
408
+ .hjkryc0.hjkryc0 {
409
+ max-width: 64rem;
410
+ }
411
+ }
@@ -0,0 +1,3 @@
1
+ declare const _codeSnippetDialogPopup: string;
2
+ export { _codeSnippetDialogPopup as codeSnippetDialogPopup };
3
+ //# sourceMappingURL=styles.css.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAwLA,QAAA,MAAM,uBAAuB,QAAY,CAAA;AAyBzC,OAAO,EAAE,uBAAuB,IAAI,sBAAsB,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function getLanguageFromFilename(filename: string): string;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAmCA,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGhE"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@haklex/rich-ext-code-snippet",
3
+ "version": "0.0.1",
4
+ "description": "Multi-file code snippet extension",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.mjs",
10
+ "types": "./dist/index.d.ts"
11
+ },
12
+ "./style.css": "./dist/rich-ext-code-snippet.css"
13
+ },
14
+ "main": "./dist/index.mjs",
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "dependencies": {
19
+ "@dnd-kit/core": "^6.3.1",
20
+ "@dnd-kit/sortable": "^10.0.0",
21
+ "@dnd-kit/utilities": "^3.2.2",
22
+ "@iconify-json/material-icon-theme": "^1.2.22",
23
+ "@iconify/utils": "^2.3.0",
24
+ "lucide-react": "^0.574.0",
25
+ "shikicode": "*",
26
+ "@haklex/rich-renderer-codeblock": "0.0.1"
27
+ },
28
+ "devDependencies": {
29
+ "@lexical/react": "^0.39.0",
30
+ "@types/react": "^19.0.0",
31
+ "@types/react-dom": "^19.0.0",
32
+ "@vanilla-extract/css": "^1.17.1",
33
+ "@vanilla-extract/vite-plugin": "^4.0.20",
34
+ "lexical": "^0.39.0",
35
+ "react": "19.2.4",
36
+ "react-dom": "19.2.4",
37
+ "typescript": "^5.9.0",
38
+ "vite": "^7.3.1",
39
+ "vite-plugin-dts": "^4.5.0",
40
+ "@haklex/rich-editor": "0.0.1",
41
+ "@haklex/rich-style-token": "0.0.1",
42
+ "@haklex/rich-editor-ui": "0.0.1"
43
+ },
44
+ "peerDependencies": {
45
+ "lexical": "^0.39.0",
46
+ "react": ">=19",
47
+ "@haklex/rich-editor": "0.0.1",
48
+ "@haklex/rich-editor-ui": "0.0.1"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "scripts": {
54
+ "build": "vite build",
55
+ "dev:build": "vite build --watch"
56
+ },
57
+ "types": "./dist/index.d.ts"
58
+ }