@haklex/rich-ext-code-snippet 0.4.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +45 -25
  2. package/dist/CodeEditorModal.d.ts +1 -1
  3. package/dist/CodeEditorModal.d.ts.map +1 -1
  4. package/dist/CodeSnippetEditDecorator.d.ts +1 -1
  5. package/dist/CodeSnippetEditDecorator.d.ts.map +1 -1
  6. package/dist/CodeSnippetEditRenderer.d.ts +1 -1
  7. package/dist/CodeSnippetEditRenderer.d.ts.map +1 -1
  8. package/dist/CodeSnippetNode-DD50J5NW.js +103 -0
  9. package/dist/{transformer-BK2M_fTu.js → CodeSnippetRenderer-BNGQYBtp.js} +7 -101
  10. package/dist/CodeSnippetRenderer.d.ts +1 -1
  11. package/dist/CodeSnippetRenderer.d.ts.map +1 -1
  12. package/dist/augment.d.ts +9 -0
  13. package/dist/augment.d.ts.map +1 -0
  14. package/dist/edit-BpfJ1A_-.js +416 -0
  15. package/dist/edit.d.ts +6 -0
  16. package/dist/edit.d.ts.map +1 -0
  17. package/dist/edit.mjs +2 -0
  18. package/dist/index.d.ts +3 -8
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.mjs +6 -416
  21. package/dist/node-DEOtFSlD.js +6 -0
  22. package/dist/node.d.ts +8 -0
  23. package/dist/node.d.ts.map +1 -0
  24. package/dist/node.mjs +3 -0
  25. package/dist/nodes/CodeSnippetEditNode.d.ts +1 -1
  26. package/dist/nodes/CodeSnippetEditNode.d.ts.map +1 -1
  27. package/dist/nodes/CodeSnippetNode.d.ts +1 -1
  28. package/dist/nodes/CodeSnippetNode.d.ts.map +1 -1
  29. package/dist/renderer.d.ts +5 -0
  30. package/dist/renderer.d.ts.map +1 -0
  31. package/dist/renderer.mjs +5 -0
  32. package/dist/rich-ext-code-snippet.css +1 -1
  33. package/dist/slot.d.ts +8 -0
  34. package/dist/slot.d.ts.map +1 -0
  35. package/dist/static.d.ts +2 -6
  36. package/dist/static.d.ts.map +1 -1
  37. package/dist/static.mjs +5 -5
  38. package/dist/types.d.ts +10 -0
  39. package/dist/types.d.ts.map +1 -0
  40. package/package.json +20 -8
  41. package/dist/nodes/index.d.ts +0 -7
  42. package/dist/nodes/index.d.ts.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,416 +1,6 @@
1
- import { A as modalTitlebar, C as fileName, D as modalIconButton, E as modalEditor, M as semanticClassNames, N as sidebarAddButton, O as modalSidebar, P as sidebarHeader, S as fileList, T as modalBody, _ as editorContainer, a as _defineProperty, b as fileIcon, c as breadcrumb, f as codeSnippetDialogPopup, g as editOverlay, h as editLabel, i as CodeSnippetNode, j as renameInput, k as modalTitle, m as editContainer, n as $createCodeSnippetNode, o as CodeSnippetRenderer, p as dragOverlay, r as $isCodeSnippetNode, s as getLanguageFromFilename, t as CODE_SNIPPET_BLOCK_TRANSFORMER, u as breadcrumbLeft, w as modal, x as fileItem, y as fileDragHandle } from "./transformer-BK2M_fTu.js";
2
- import { useColorScheme } from "@haklex/rich-editor";
3
- import { presentDialog } from "@haklex/rich-editor-ui";
4
- import { usePortalTheme } from "@haklex/rich-style-token";
5
- import { FileCode, GripVertical, Pencil, Plus, Trash2, X } from "lucide-react";
6
- import { createContext, createElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
7
- import { defaultKeymap, history, historyKeymap, indentWithTab } from "@codemirror/commands";
8
- import { Compartment, EditorState } from "@codemirror/state";
9
- import { EditorView, keymap, lineNumbers } from "@codemirror/view";
10
- import { DndContext, DragOverlay, PointerSensor, closestCenter, useSensor, useSensors } from "@dnd-kit/core";
11
- import { SortableContext, arrayMove, useSortable, verticalListSortingStrategy } from "@dnd-kit/sortable";
12
- import { CSS } from "@dnd-kit/utilities";
13
- import { getThemeExtensions, loadLanguageExtension } from "@haklex/cm-editor";
14
- import { normalizeLanguage } from "@haklex/rich-renderer-codeblock/constants";
15
- import { FileIcon } from "@haklex/rich-renderer-codeblock/icons";
16
- import { createPortal } from "react-dom";
17
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
- import { $getNodeByKey, $insertNodes } from "lexical";
19
- //#region src/CodeEditorModal.tsx
20
- var SortableFileItem = ({ file, isActive, isEditing, editValue, canDelete, onSelect, onStartRename, onEditChange, onCommitRename, onCancelRename, onDelete }) => {
21
- const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: file.filename });
22
- const style = {
23
- transform: CSS.Transform.toString(transform),
24
- transition
25
- };
26
- return /* @__PURE__ */ jsxs("div", {
27
- className: `${fileItem({
28
- active: isActive,
29
- dragging: isDragging
30
- })} ${semanticClassNames.fileItem} ${isActive ? semanticClassNames.fileItemActive : ""} ${isDragging ? semanticClassNames.fileItemDragging : ""}`.trim(),
31
- ref: setNodeRef,
32
- style,
33
- onClick: onSelect,
34
- onDoubleClick: onStartRename,
35
- children: [
36
- /* @__PURE__ */ jsx("span", {
37
- className: `${fileDragHandle} ${semanticClassNames.fileDragHandle}`,
38
- ...attributes,
39
- ...listeners,
40
- onClick: (e) => e.stopPropagation(),
41
- children: /* @__PURE__ */ jsx(GripVertical, { size: 12 })
42
- }),
43
- /* @__PURE__ */ jsx(FileIcon, {
44
- className: `${fileIcon} ${semanticClassNames.fileIcon}`,
45
- filename: file.filename,
46
- size: 14
47
- }),
48
- isEditing ? /* @__PURE__ */ jsx("input", {
49
- autoFocus: true,
50
- className: `${renameInput} ${semanticClassNames.renameInput}`,
51
- value: editValue,
52
- onBlur: onCommitRename,
53
- onChange: (e) => onEditChange(e.target.value),
54
- onClick: (e) => e.stopPropagation(),
55
- onKeyDown: (e) => {
56
- if (e.key === "Enter") onCommitRename();
57
- if (e.key === "Escape") onCancelRename();
58
- }
59
- }) : /* @__PURE__ */ jsx("span", {
60
- className: `${fileName} ${semanticClassNames.fileName}`,
61
- children: file.filename
62
- }),
63
- canDelete && /* @__PURE__ */ jsx("button", {
64
- "aria-label": `Delete ${file.filename}`,
65
- className: `hjkryc11 ${semanticClassNames.fileDelete}`,
66
- type: "button",
67
- onClick: (e) => {
68
- e.stopPropagation();
69
- onDelete();
70
- },
71
- children: /* @__PURE__ */ jsx(Trash2, { size: 12 })
72
- })
73
- ]
74
- });
75
- };
76
- var CodeEditorModal = ({ files: initialFiles, onFilesChange, dismiss, colorScheme }) => {
77
- const [editFiles, setEditFiles] = useState(() => initialFiles.map((f) => ({ ...f })));
78
- const [activeFilename, setActiveFilename] = useState(initialFiles[0]?.filename ?? "");
79
- const [editingFilename, setEditingFilename] = useState(null);
80
- const [newFilenameInput, setNewFilenameInput] = useState("");
81
- const [dragActiveId, setDragActiveId] = useState(null);
82
- const containerRef = useRef(null);
83
- const editorRef = useRef(null);
84
- const languageCompartmentRef = useRef(null);
85
- const themeCompartmentRef = useRef(null);
86
- if (!languageCompartmentRef.current) languageCompartmentRef.current = new Compartment();
87
- if (!themeCompartmentRef.current) themeCompartmentRef.current = new Compartment();
88
- const onCodeChangeRef = useRef(void 0);
89
- const editFilesRef = useRef(editFiles);
90
- editFilesRef.current = editFiles;
91
- const activeFile = editFiles.find((f) => f.filename === activeFilename) ?? editFiles[0];
92
- onCodeChangeRef.current = (code) => {
93
- setEditFiles((prev) => prev.map((f) => f.filename === activeFilename ? {
94
- ...f,
95
- code
96
- } : f));
97
- };
98
- useEffect(() => {
99
- const container = containerRef.current;
100
- if (!container) return;
101
- const file = editFilesRef.current.find((f) => f.filename === activeFilename);
102
- if (!file) return;
103
- let cancelled = false;
104
- const lang = normalizeLanguage(file.language ?? getLanguageFromFilename(file.filename));
105
- const editor = new EditorView({
106
- parent: container,
107
- state: EditorState.create({
108
- doc: file.code,
109
- extensions: [
110
- history(),
111
- keymap.of([
112
- ...defaultKeymap,
113
- ...historyKeymap,
114
- indentWithTab
115
- ]),
116
- EditorView.updateListener.of((update) => {
117
- if (!update.docChanged) return;
118
- onCodeChangeRef.current?.(update.state.doc.toString());
119
- }),
120
- lineNumbers(),
121
- themeCompartmentRef.current.of(getThemeExtensions(colorScheme)),
122
- languageCompartmentRef.current.of([])
123
- ]
124
- })
125
- });
126
- editorRef.current = editor;
127
- (async () => {
128
- const extension = await loadLanguageExtension(lang);
129
- if (cancelled) return;
130
- editor.dispatch({ effects: languageCompartmentRef.current.reconfigure(extension) });
131
- })();
132
- return () => {
133
- cancelled = true;
134
- editor.destroy();
135
- editorRef.current = null;
136
- };
137
- }, [activeFilename]);
138
- useEffect(() => {
139
- const editor = editorRef.current;
140
- if (!editor) return;
141
- editor.dispatch({ effects: themeCompartmentRef.current.reconfigure(getThemeExtensions(colorScheme)) });
142
- }, [colorScheme]);
143
- const handleDismiss = useCallback(() => {
144
- onFilesChange?.(editFiles);
145
- dismiss();
146
- }, [
147
- editFiles,
148
- onFilesChange,
149
- dismiss
150
- ]);
151
- const handleAddFile = useCallback(() => {
152
- const name = `untitled-${editFiles.length + 1}.ts`;
153
- const newFile = {
154
- filename: name,
155
- code: "",
156
- language: "typescript"
157
- };
158
- setEditFiles((prev) => [...prev, newFile]);
159
- setActiveFilename(name);
160
- }, [editFiles.length]);
161
- const handleDeleteFile = useCallback((filename) => {
162
- if (editFiles.length <= 1) return;
163
- const newFiles = editFiles.filter((f) => f.filename !== filename);
164
- setEditFiles(newFiles);
165
- if (activeFilename === filename) setActiveFilename(newFiles[0]?.filename ?? "");
166
- }, [editFiles, activeFilename]);
167
- const handleRenameFile = useCallback((oldName, newName) => {
168
- if (!newName.trim() || editFiles.some((f) => f.filename === newName && f.filename !== oldName)) {
169
- setEditingFilename(null);
170
- return;
171
- }
172
- setEditFiles((prev) => prev.map((f) => f.filename === oldName ? {
173
- ...f,
174
- filename: newName,
175
- language: void 0
176
- } : f));
177
- if (activeFilename === oldName) setActiveFilename(newName);
178
- setEditingFilename(null);
179
- }, [editFiles, activeFilename]);
180
- const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));
181
- const fileIds = useMemo(() => editFiles.map((f) => f.filename), [editFiles]);
182
- const handleDragEnd = useCallback((event) => {
183
- const { active, over } = event;
184
- setDragActiveId(null);
185
- if (!over || active.id === over.id) return;
186
- const oldIndex = editFiles.findIndex((f) => f.filename === active.id);
187
- const newIndex = editFiles.findIndex((f) => f.filename === over.id);
188
- if (oldIndex === -1 || newIndex === -1) return;
189
- setEditFiles(arrayMove(editFiles, oldIndex, newIndex));
190
- }, [editFiles]);
191
- const dragActiveFile = dragActiveId ? editFiles.find((f) => f.filename === dragActiveId) : null;
192
- const { className: portalThemeClassName } = usePortalTheme();
193
- const language = activeFile ? activeFile.language ?? getLanguageFromFilename(activeFile.filename) : "";
194
- return /* @__PURE__ */ jsxs("div", {
195
- className: `${modal} ${semanticClassNames.modal}`,
196
- children: [/* @__PURE__ */ jsxs("div", {
197
- className: `${modalTitlebar} ${semanticClassNames.modalTitlebar}`,
198
- children: [/* @__PURE__ */ jsx("span", {
199
- className: `${modalTitle} ${semanticClassNames.modalTitle}`,
200
- children: "Code Snippet"
201
- }), /* @__PURE__ */ jsx("button", {
202
- className: `${modalIconButton} ${semanticClassNames.modalIconButton}`,
203
- type: "button",
204
- onClick: handleDismiss,
205
- children: /* @__PURE__ */ jsx(X, { size: 14 })
206
- })]
207
- }), /* @__PURE__ */ jsxs("div", {
208
- className: `${modalBody} ${semanticClassNames.modalBody}`,
209
- children: [/* @__PURE__ */ jsxs("div", {
210
- className: `${modalSidebar} ${semanticClassNames.modalSidebar}`,
211
- children: [/* @__PURE__ */ jsxs("div", {
212
- className: `${sidebarHeader} ${semanticClassNames.sidebarHeader}`,
213
- children: [/* @__PURE__ */ jsx("span", { children: "Files" }), /* @__PURE__ */ jsx("button", {
214
- "aria-label": "Add file",
215
- className: `${sidebarAddButton} ${semanticClassNames.sidebarAddButton}`,
216
- type: "button",
217
- onClick: handleAddFile,
218
- children: /* @__PURE__ */ jsx(Plus, { size: 14 })
219
- })]
220
- }), /* @__PURE__ */ jsx("div", {
221
- className: `${fileList} ${semanticClassNames.fileList}`,
222
- children: /* @__PURE__ */ jsxs(DndContext, {
223
- collisionDetection: closestCenter,
224
- sensors,
225
- onDragCancel: () => setDragActiveId(null),
226
- onDragEnd: handleDragEnd,
227
- onDragStart: (event) => setDragActiveId(event.active.id),
228
- children: [/* @__PURE__ */ jsx(SortableContext, {
229
- items: fileIds,
230
- strategy: verticalListSortingStrategy,
231
- children: editFiles.map((file) => /* @__PURE__ */ jsx(SortableFileItem, {
232
- canDelete: editFiles.length > 1,
233
- editValue: newFilenameInput,
234
- file,
235
- isActive: file.filename === activeFilename,
236
- isEditing: editingFilename === file.filename,
237
- onCancelRename: () => setEditingFilename(null),
238
- onCommitRename: () => handleRenameFile(file.filename, newFilenameInput),
239
- onDelete: () => handleDeleteFile(file.filename),
240
- onEditChange: setNewFilenameInput,
241
- onSelect: () => setActiveFilename(file.filename),
242
- onStartRename: () => {
243
- setEditingFilename(file.filename);
244
- setNewFilenameInput(file.filename);
245
- }
246
- }, file.filename))
247
- }), typeof document !== "undefined" ? createPortal(/* @__PURE__ */ jsx(DragOverlay, { children: /* @__PURE__ */ jsx("div", {
248
- className: portalThemeClassName,
249
- style: { display: "contents" },
250
- children: dragActiveFile ? /* @__PURE__ */ jsxs("div", {
251
- className: `${fileItem()} ${semanticClassNames.fileItem} ${dragOverlay} ${semanticClassNames.dragOverlay}`,
252
- children: [/* @__PURE__ */ jsx(FileIcon, {
253
- className: `${fileIcon} ${semanticClassNames.fileIcon}`,
254
- filename: dragActiveFile.filename,
255
- size: 14
256
- }), /* @__PURE__ */ jsx("span", {
257
- className: `${fileName} ${semanticClassNames.fileName}`,
258
- children: dragActiveFile.filename
259
- })]
260
- }) : null
261
- }) }), document.body) : null]
262
- })
263
- })]
264
- }), /* @__PURE__ */ jsxs("div", {
265
- className: `${modalEditor} ${semanticClassNames.modalEditor}`,
266
- children: [/* @__PURE__ */ jsx("div", {
267
- className: `${breadcrumb} ${semanticClassNames.breadcrumb}`,
268
- children: /* @__PURE__ */ jsx("div", {
269
- className: `${breadcrumbLeft} ${semanticClassNames.breadcrumbLeft}`,
270
- children: activeFile && /* @__PURE__ */ jsxs(Fragment, { children: [
271
- /* @__PURE__ */ jsx(FileIcon, {
272
- className: `hjkrycf ${semanticClassNames.fileIcon}`,
273
- filename: activeFile.filename,
274
- size: 14
275
- }),
276
- /* @__PURE__ */ jsx("span", {
277
- className: `hjkryc16 ${semanticClassNames.breadcrumbName}`,
278
- children: activeFile.filename
279
- }),
280
- language && /* @__PURE__ */ jsx("span", {
281
- className: `hjkryc17 ${semanticClassNames.breadcrumbLang}`,
282
- children: language
283
- })
284
- ] })
285
- })
286
- }), /* @__PURE__ */ jsx("div", {
287
- className: `${editorContainer} ${semanticClassNames.editorContainer}`,
288
- ref: containerRef
289
- })]
290
- })]
291
- })]
292
- });
293
- };
294
- //#endregion
295
- //#region src/CodeSnippetEditRenderer.tsx
296
- var CodeSnippetEditRenderer = ({ files, onFilesChange }) => {
297
- const { className: portalClassName } = usePortalTheme();
298
- const colorScheme = useColorScheme();
299
- const handleEdit = useCallback(() => {
300
- presentDialog({
301
- content: ({ dismiss }) => /* @__PURE__ */ jsx(CodeEditorModal, {
302
- colorScheme,
303
- dismiss,
304
- files,
305
- onFilesChange
306
- }),
307
- className: codeSnippetDialogPopup,
308
- portalClassName,
309
- theme: colorScheme,
310
- showCloseButton: false,
311
- clickOutsideToDismiss: false
312
- });
313
- }, [
314
- files,
315
- onFilesChange,
316
- portalClassName,
317
- colorScheme
318
- ]);
319
- return /* @__PURE__ */ jsxs("div", {
320
- className: `${editContainer} ${semanticClassNames.editContainer}`,
321
- children: [/* @__PURE__ */ jsx(CodeSnippetRenderer, { files }), /* @__PURE__ */ jsx("button", {
322
- "aria-label": "Edit code snippet",
323
- className: `${editOverlay} ${semanticClassNames.editOverlay}`,
324
- type: "button",
325
- onClick: handleEdit,
326
- children: /* @__PURE__ */ jsxs("span", {
327
- className: `${editLabel} ${semanticClassNames.editLabel}`,
328
- children: [/* @__PURE__ */ jsx(Pencil, { size: 14 }), "Edit"]
329
- })
330
- })]
331
- });
332
- };
333
- //#endregion
334
- //#region ../../node_modules/.pnpm/@lexical+react@0.44.0_react-dom@19.2.5_react@19.2.5__react@19.2.5_yjs@13.6.29/node_modules/@lexical/react/LexicalComposerContext.prod.mjs
335
- /**
336
- * Copyright (c) Meta Platforms, Inc. and affiliates.
337
- *
338
- * This source code is licensed under the MIT license found in the
339
- * LICENSE file in the root directory of this source tree.
340
- *
341
- */
342
- var r = createContext(null);
343
- function o() {
344
- const n = useContext(r);
345
- return n ?? function(n, ...e) {
346
- const r = new URL("https://lexical.dev/docs/error"), t = new URLSearchParams();
347
- t.append("code", n);
348
- for (const n of e) t.append("v", n);
349
- throw r.search = t.toString(), Error(`Minified Lexical error #${n}; visit ${r.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`);
350
- }(8), n;
351
- }
352
- //#endregion
353
- //#region src/CodeSnippetEditDecorator.tsx
354
- var CodeSnippetEditDecorator = ({ nodeKey, files }) => {
355
- const [editor] = o();
356
- return /* @__PURE__ */ jsx(CodeSnippetEditRenderer, {
357
- files,
358
- onFilesChange: useCallback((newFiles) => {
359
- editor.update(() => {
360
- const node = $getNodeByKey(nodeKey);
361
- if ($isCodeSnippetNode(node)) node.setFiles(newFiles);
362
- });
363
- }, [editor, nodeKey])
364
- });
365
- };
366
- //#endregion
367
- //#region src/nodes/CodeSnippetEditNode.ts
368
- var CodeSnippetEditNode = class CodeSnippetEditNode extends CodeSnippetNode {
369
- static clone(node) {
370
- return new CodeSnippetEditNode(node.__files, node.__key);
371
- }
372
- static importJSON(serializedNode) {
373
- return new CodeSnippetEditNode(serializedNode.files);
374
- }
375
- decorate(_editor, _config) {
376
- return createElement(CodeSnippetEditDecorator, {
377
- nodeKey: this.__key,
378
- files: this.__files
379
- });
380
- }
381
- };
382
- _defineProperty(CodeSnippetEditNode, "commandItems", [{
383
- title: "Code Snippet",
384
- icon: createElement(FileCode, { size: 20 }),
385
- description: "Multi-file code snippet with tabs",
386
- keywords: [
387
- "code",
388
- "snippet",
389
- "files",
390
- "tabs"
391
- ],
392
- section: "MEDIA",
393
- placement: ["slash", "toolbar"],
394
- group: "insert",
395
- onSelect: (editor) => {
396
- editor.update(() => {
397
- $insertNodes([$createCodeSnippetEditNode([{
398
- filename: "index.ts",
399
- code: "",
400
- language: "typescript"
401
- }])]);
402
- });
403
- }
404
- }]);
405
- function $createCodeSnippetEditNode(files) {
406
- return new CodeSnippetEditNode(files);
407
- }
408
- function $isCodeSnippetEditNode(node) {
409
- return node instanceof CodeSnippetEditNode;
410
- }
411
- //#endregion
412
- //#region src/nodes/index.ts
413
- var codeSnippetNodes = [CodeSnippetNode];
414
- var codeSnippetEditNodes = [CodeSnippetEditNode];
415
- //#endregion
416
- export { $createCodeSnippetEditNode, $createCodeSnippetNode, $isCodeSnippetEditNode, $isCodeSnippetNode, CODE_SNIPPET_BLOCK_TRANSFORMER, CodeSnippetEditNode, CodeSnippetEditRenderer, CodeSnippetNode, CodeSnippetRenderer, codeSnippetEditNodes, codeSnippetNodes };
1
+ import { t as CodeSnippetRenderer } from "./CodeSnippetRenderer-BNGQYBtp.js";
2
+ import { a as CodeSnippetEditRenderer, i as CodeSnippetEditNode, n as $createCodeSnippetEditNode, r as $isCodeSnippetEditNode, t as codeSnippetEditNodes } from "./edit-BpfJ1A_-.js";
3
+ import { a as CODE_SNIPPET_NODE_KEY, n as $isCodeSnippetNode, r as CodeSnippetNode, t as $createCodeSnippetNode } from "./CodeSnippetNode-DD50J5NW.js";
4
+ import { n as CODE_SNIPPET_BLOCK_TRANSFORMER, t as codeSnippetNodes } from "./node-DEOtFSlD.js";
5
+ import "./renderer.mjs";
6
+ export { $createCodeSnippetEditNode, $createCodeSnippetNode, $isCodeSnippetEditNode, $isCodeSnippetNode, CODE_SNIPPET_BLOCK_TRANSFORMER, CODE_SNIPPET_NODE_KEY, CodeSnippetEditNode, CodeSnippetEditRenderer, CodeSnippetNode, CodeSnippetRenderer, codeSnippetEditNodes, codeSnippetNodes };
@@ -0,0 +1,6 @@
1
+ import { r as CodeSnippetNode } from "./CodeSnippetNode-DD50J5NW.js";
2
+ import { CODE_SNIPPET_BLOCK_TRANSFORMER } from "@haklex/rich-headless/transformers";
3
+ //#region src/node.ts
4
+ var codeSnippetNodes = [CodeSnippetNode];
5
+ //#endregion
6
+ export { CODE_SNIPPET_BLOCK_TRANSFORMER as n, codeSnippetNodes as t };
package/dist/node.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { Klass, LexicalNode } from 'lexical';
2
+ export type { SerializedCodeSnippetNode } from './nodes/CodeSnippetNode';
3
+ export { $createCodeSnippetNode, $isCodeSnippetNode, CodeSnippetNode, } from './nodes/CodeSnippetNode';
4
+ export { CODE_SNIPPET_NODE_KEY } from './slot';
5
+ export { CODE_SNIPPET_BLOCK_TRANSFORMER } from './transformer';
6
+ export type { CodeFile, CodeSnippetRendererProps } from './types';
7
+ export declare const codeSnippetNodes: Array<Klass<LexicalNode>>;
8
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAIlD,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAqB,CAAC"}
package/dist/node.mjs ADDED
@@ -0,0 +1,3 @@
1
+ import { a as CODE_SNIPPET_NODE_KEY, n as $isCodeSnippetNode, r as CodeSnippetNode, t as $createCodeSnippetNode } from "./CodeSnippetNode-DD50J5NW.js";
2
+ import { n as CODE_SNIPPET_BLOCK_TRANSFORMER, t as codeSnippetNodes } from "./node-DEOtFSlD.js";
3
+ export { $createCodeSnippetNode, $isCodeSnippetNode, CODE_SNIPPET_BLOCK_TRANSFORMER, CODE_SNIPPET_NODE_KEY, CodeSnippetNode, codeSnippetNodes };
@@ -1,7 +1,7 @@
1
1
  import { CommandItemConfig } from '@haklex/rich-editor/commands';
2
- import { CodeFile } from '@haklex/rich-editor/renderers';
3
2
  import { EditorConfig, LexicalEditor, LexicalNode } from 'lexical';
4
3
  import { ReactElement } from 'react';
4
+ import { CodeFile } from '../types';
5
5
  import { CodeSnippetNode, SerializedCodeSnippetNode } from './CodeSnippetNode';
6
6
  export declare class CodeSnippetEditNode extends CodeSnippetNode {
7
7
  static commandItems: CommandItemConfig[];
@@ -1 +1 @@
1
- {"version":3,"file":"CodeSnippetEditNode.d.ts","sourceRoot":"","sources":["../../src/nodes/CodeSnippetEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAE,eAAe,EAAE,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAmBtC;IAEF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;IAI5D,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,yBAAyB,GAAG,mBAAmB;IAIjF,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAMtE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAEjF;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,mBAAmB,CAE7B"}
1
+ {"version":3,"file":"CodeSnippetEditNode.d.ts","sourceRoot":"","sources":["../../src/nodes/CodeSnippetEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAmBtC;IAEF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB;IAI5D,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,yBAAyB,GAAG,mBAAmB;IAIjF,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAMtE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAEjF;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GACnC,IAAI,IAAI,mBAAmB,CAE7B"}
@@ -1,6 +1,6 @@
1
- import { CodeFile } from '@haklex/rich-editor/renderers';
2
1
  import { EditorConfig, LexicalEditor, LexicalNode, NodeKey, SerializedLexicalNode, Spread, DecoratorNode } from 'lexical';
3
2
  import { ReactElement } from 'react';
3
+ import { CodeFile } from '../types';
4
4
  export type SerializedCodeSnippetNode = Spread<{
5
5
  files: CodeFile[];
6
6
  }, SerializedLexicalNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"CodeSnippetNode.d.ts","sourceRoot":"","sources":["../../src/nodes/CodeSnippetNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAC5C;IACE,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,EACD,qBAAqB,CACtB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC9D,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB,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,CAAC,cAAc,EAAE,yBAAyB,GAAG,eAAe;IAI7E,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,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,eAAe,CAEhG"}
1
+ {"version":3,"file":"CodeSnippetNode.d.ts","sourceRoot":"","sources":["../../src/nodes/CodeSnippetNode.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,CAAC;AAGpB,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAC5C;IACE,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,EACD,qBAAqB,CACtB,CAAC;AAEF,qBAAa,eAAgB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC9D,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEpB,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,CAAC,cAAc,EAAE,yBAAyB,GAAG,eAAe;IAI7E,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,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,eAAe,CAEhG"}
@@ -0,0 +1,5 @@
1
+ import { CodeSnippetRenderer } from './CodeSnippetRenderer';
2
+ export { CodeSnippetRenderer };
3
+ export type { CodeFile, CodeSnippetRendererProps } from './types';
4
+ export default CodeSnippetRenderer;
5
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAC;AACtB,OAAO,WAAW,CAAC;AAEnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/B,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAClE,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { t as CodeSnippetRenderer } from "./CodeSnippetRenderer-BNGQYBtp.js";
2
+ //#region src/renderer.ts
3
+ var renderer_default = CodeSnippetRenderer;
4
+ //#endregion
5
+ export { CodeSnippetRenderer, renderer_default as default };
@@ -1,2 +1,2 @@
1
- .hjkryc0{border:1px solid color-mix(in srgb, var(--rc-border) 60%, transparent);background:var(--rc-code-bg);font-size:var(--rc-font-size-md);border-radius:.5rem;position:relative;overflow:hidden}.hjkryc1{justify-content:space-between;align-items:center;min-height:40px;padding:0 12px;display:flex}.hjkryc2{scrollbar-width:none;align-items:center;gap:2px;display:flex;overflow-x:auto}.hjkryc2::-webkit-scrollbar{display:none}.hjkryc3{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;font-weight:500;transition:color .15s,background .15s;display:flex}.hjkryc3:hover{color:var(--rc-text);background:color-mix(in srgb, var(--rc-text) 5%, transparent)}.hjkryc5{color:var(--rc-text);background:var(--rc-fill)}.hjkryc7{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);align-items:center;gap:6px;padding:6px 0;font-weight:500;display:flex}.hjkryc8{opacity:0;align-items:center;transition:opacity .15s;display:flex}.hjkryc0:hover .hjkryc8{opacity:1}.hjkryc9{width:28px;height:28px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.hjkryc9:hover{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkryca{background:var(--rc-border);opacity:.6;height:1px}.hjkrycb{position:relative}.hjkrycc{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.hjkrycc[data-active=true]{grid-template-rows:1fr}.hjkrycd{overflow:hidden}.hjkrycc[data-active=true] .hjkrycd{overflow-x:auto}.hjkryce{font-size:var(--rc-font-size-small);line-height:1.7;font-family:var(--rc-font-mono);margin:0;padding:12px 16px}.hjkryce pre{margin:0;background:0 0!important}.hjkryce code{font-family:inherit}[data-theme=dark] .hjkryce .shiki-themes,[data-theme=dark] .hjkryce .shiki-themes span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.hjkrycf{flex-shrink:0;display:inline-flex}.hjkrycf svg{width:100%;height:100%}.hjkrycg{position:relative}.hjkrych{z-index:5;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.hjkrych:hover{background:color-mix(in srgb, currentColor 6%, transparent)}.hjkryci{background:var(--rc-bg);border:1px solid var(--rc-border);color:var(--rc-text);font-size:var(--rc-font-size-sm);opacity:0;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-weight:500;transition:opacity .2s;display:flex}.hjkrycg:hover .hjkryci{opacity:1}.hjkrycj.hjkrycj{border-radius:.75rem;flex-direction:column;gap:0;width:calc(100vw - 2rem);height:min(720px,80vh);padding:0;display:flex;overflow:hidden}.hjkrycj.hjkrycj[data-open],.hjkrycj.hjkrycj[data-closed]{animation:none}.hjkryck{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.hjkrycl{border-bottom:1px solid var(--rc-border);flex-shrink:0;justify-content:space-between;align-items:center;height:44px;padding:0 16px;display:flex}.hjkrycm{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary)}.hjkrycn{width:28px;height:28px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.hjkrycn:hover{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkryco{flex:1;min-height:0;display:flex}.hjkrycp{border-right:1px solid var(--rc-border);flex-direction:column;flex-shrink:0;width:224px;display:flex;overflow:hidden}.hjkrycq{font-size:var(--rc-font-size-2xs);text-transform:uppercase;letter-spacing:.05em;color:color-mix(in srgb, var(--rc-text-secondary) 60%, transparent);justify-content:space-between;align-items:center;padding:12px 12px 8px;font-weight:600;display:flex}.hjkrycr{width:22px;height:22px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.hjkrycr:hover{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkrycs{flex:1;padding:0 6px 8px;overflow-y:auto}.hjkryct{cursor:pointer;height:24px;font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);border-radius:6px;align-items:center;gap:4px;padding:4px 8px;transition:background .15s,color .15s;display:flex}.hjkryct:hover{background:color-mix(in srgb, var(--rc-text) 5%, transparent);color:var(--rc-text)}.hjkrycv{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkrycx{opacity:.4}.hjkrycz{cursor:grab;color:color-mix(in srgb, var(--rc-text-secondary) 40%, transparent);touch-action:none;flex-shrink:0;align-items:center;display:inline-flex}.hjkrycz:active{cursor:grabbing}.hjkryc10{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.hjkryc11{width:20px;height:20px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:none}.hjkryct:hover .hjkryc11{display:inline-flex}.hjkryc11:hover{color:var(--rc-alert-caution);background:color-mix(in srgb, var(--rc-alert-caution) 10%, transparent)}.hjkryc12{min-width:0;font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);border:1px solid var(--rc-border);background:var(--rc-bg);color:var(--rc-text);border-radius:3px;outline:none;flex:1;padding:1px 4px}.hjkryc12:focus{border-color:color-mix(in srgb, var(--rc-text) 30%, transparent)}.hjkryc13{flex-direction:column;flex:1;min-width:0;display:flex}.hjkryc14{border-bottom:1px solid color-mix(in srgb, var(--rc-border) 50%, transparent);flex-shrink:0;justify-content:space-between;align-items:center;height:36px;padding:0 16px;display:flex}.hjkryc15{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);align-items:center;gap:6px;display:flex;overflow:hidden}.hjkryc16{color:var(--rc-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.hjkryc17{opacity:.5}.hjkryc18{flex:1;min-height:0;position:relative;overflow:auto;background-color:#0000!important}.hjkryc18 .cm-editor{height:100%;color:var(--rc-text);font-family:var(--rc-font-mono);font-size:var(--rc-font-size-sm);background:0 0}.hjkryc18 .cm-scroller{line-height:1.7;font-family:var(--rc-font-mono)!important}.hjkryc18 .cm-content{min-height:1.6em;padding:0 1rem 0 .5rem}.hjkryc18 .cm-line{padding:0}.hjkryc18 .cm-gutters{border-right:none;padding-left:1rem}.hjkryc18 .cm-lineNumbers .cm-gutterElement{text-align:right;min-width:3em;padding-right:2em;color:color-mix(in srgb, var(--rc-text-secondary) 40%, transparent)!important}.hjkryc19{background:var(--rc-fill-quaternary);box-shadow:var(--rc-shadow-modal);border-radius:6px}@media (min-width:640px){.hjkrycj.hjkrycj{max-width:64rem}}
1
+ :root{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}:root.dark,[data-theme=dark]{--rc-text:#fafafa;--rc-text-secondary:#a3a3a3;--rc-text-tertiary:#737373;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#262626;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#262626;--rc-hr-border:#262626;--rc-quote-border:#60a5fa;--rc-quote-bg:#262626;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._842nom0{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.7;--rc-line-height-tight:1.4;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._842nom1{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#2563eb;--rc-quote-bg:#f5f5f5;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:700px;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:4px;--rc-space-sm:8px;--rc-space-md:16px;--rc-space-lg:24px;--rc-space-xl:32px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:16px;--rc-font-size-small:14px;--rc-line-height:1.8;--rc-line-height-tight:1.4;--rc-font-family:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm:4px;--rc-radius-md:8px;--rc-radius-lg:12px}._842nom2{--rc-text:#000;--rc-text-secondary:#262626;--rc-text-tertiary:#737373;--rc-text-quaternary:#a3a3a3;--rc-bg:#fff;--rc-bg-secondary:#fafafa;--rc-bg-tertiary:#f5f5f5;--rc-fill:#e8e8e8;--rc-fill-secondary:#eee;--rc-fill-tertiary:#f5f5f5;--rc-fill-quaternary:#fafafa;--rc-border:#f5f5f5;--rc-accent:#2563eb;--rc-accent-light:#2563eb20;--rc-link:#2563eb;--rc-code-text:#404040;--rc-code-bg:#f5f5f5;--rc-hr-border:#e5e5e5;--rc-quote-border:#a3a3a3;--rc-quote-bg:#fafafa;--rc-alert-info:#006bb7;--rc-alert-warning:#c50;--rc-alert-tip:#1c0;--rc-alert-caution:#c01;--rc-alert-important:#50c;--rc-max-width:none;--rc-shadow-top-bar:0 8px 30px #0000001f, 0 2px 8px #0000000f;--rc-shadow-modal:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--rc-shadow-menu:0 1px 4px #0000000a, 0 4px 16px #00000014;--rc-space-xs:2px;--rc-space-sm:4px;--rc-space-md:10px;--rc-space-lg:16px;--rc-space-xl:20px;--rc-font-family-sans:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif:"Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-family-kai:"楷体", KaiTi, STKaiti, "Kaiti SC", "LXGW WenKai", "霞鹜文楷", "Noto Serif CJK SC", serif;--rc-font-mono:"SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs:.625em;--rc-font-size-xs:.75em;--rc-font-size-sm:.8125em;--rc-font-size-md:.875em;--rc-font-size-lg:1.25em;--rc-font-size-base:14px;--rc-font-size-small:12px;--rc-line-height:1.5;--rc-line-height-tight:1.3;--rc-font-family:"PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm:3px;--rc-radius-md:6px;--rc-radius-lg:12px}.dark ._842nom0,[data-theme=dark] ._842nom0,.dark._842nom0,[data-theme=dark]._842nom0,.dark ._842nom1,[data-theme=dark] ._842nom1,.dark._842nom1,[data-theme=dark]._842nom1,.dark ._842nom2,[data-theme=dark] ._842nom2,.dark._842nom2,[data-theme=dark]._842nom2{--rc-text:#fafafa;--rc-text-secondary:#a3a3a3;--rc-text-tertiary:#737373;--rc-text-quaternary:#525252;--rc-bg:#0a0a0a;--rc-bg-secondary:#171717;--rc-bg-tertiary:#262626;--rc-fill:#2a2a2a;--rc-fill-secondary:#222;--rc-fill-tertiary:#1a1a1a;--rc-fill-quaternary:#141414;--rc-border:#262626;--rc-accent:#60a5fa;--rc-accent-light:#60a5fa20;--rc-link:#60a5fa;--rc-code-text:#d4d4d4;--rc-code-bg:#262626;--rc-hr-border:#262626;--rc-quote-border:#60a5fa;--rc-quote-bg:#262626;--rc-alert-info:#7db9e5;--rc-alert-warning:#da864a;--rc-alert-tip:#54da48;--rc-alert-caution:#e16973;--rc-alert-important:#9966e0;--rc-shadow-top-bar:0 8px 30px #00000073, 0 2px 8px #0000004d;--rc-shadow-modal:0 10px 15px -3px #0006, 0 4px 6px -4px #00000059;--rc-shadow-menu:0 1px 4px #00000040, 0 4px 16px #0006}.hjkryc0{border:1px solid color-mix(in srgb, var(--rc-border) 60%, transparent);background:var(--rc-code-bg);font-size:var(--rc-font-size-md);border-radius:.5rem;position:relative;overflow:hidden}.hjkryc1{justify-content:space-between;align-items:center;min-height:40px;padding:0 12px;display:flex}.hjkryc2{scrollbar-width:none;align-items:center;gap:2px;display:flex;overflow-x:auto}.hjkryc2::-webkit-scrollbar{display:none}.hjkryc3{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;font-weight:500;transition:color .15s,background .15s;display:flex}.hjkryc3:hover{color:var(--rc-text);background:color-mix(in srgb, var(--rc-text) 5%, transparent)}.hjkryc5{color:var(--rc-text);background:var(--rc-fill)}.hjkryc7{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);align-items:center;gap:6px;padding:6px 0;font-weight:500;display:flex}.hjkryc8{opacity:0;align-items:center;transition:opacity .15s;display:flex}.hjkryc0:hover .hjkryc8{opacity:1}.hjkryc9{width:28px;height:28px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.hjkryc9:hover{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkryca{background:var(--rc-border);opacity:.6;height:1px}.hjkrycb{position:relative}.hjkrycc{grid-template-rows:0fr;transition:grid-template-rows .3s;display:grid}.hjkrycc[data-active=true]{grid-template-rows:1fr}.hjkrycd{overflow:hidden}.hjkrycc[data-active=true] .hjkrycd{overflow-x:auto}.hjkryce{font-size:var(--rc-font-size-small);line-height:1.7;font-family:var(--rc-font-mono);margin:0;padding:12px 16px}.hjkryce pre{margin:0;background:0 0!important}.hjkryce code{font-family:inherit}[data-theme=dark] .hjkryce .shiki-themes,[data-theme=dark] .hjkryce .shiki-themes span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;-webkit-text-decoration:var(--shiki-dark-text-decoration)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.hjkrycf{flex-shrink:0;display:inline-flex}.hjkrycf svg{width:100%;height:100%}.hjkrycg{position:relative}.hjkrych{z-index:5;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.hjkrych:hover{background:color-mix(in srgb, currentColor 6%, transparent)}.hjkryci{background:var(--rc-bg);border:1px solid var(--rc-border);color:var(--rc-text);font-size:var(--rc-font-size-sm);opacity:0;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-weight:500;transition:opacity .2s;display:flex}.hjkrycg:hover .hjkryci{opacity:1}.hjkrycj.hjkrycj{border-radius:.75rem;flex-direction:column;gap:0;width:calc(100vw - 2rem);height:min(720px,80vh);padding:0;display:flex;overflow:hidden}.hjkrycj.hjkrycj[data-open],.hjkrycj.hjkrycj[data-closed]{animation:none}.hjkryck{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.hjkrycl{border-bottom:1px solid var(--rc-border);flex-shrink:0;justify-content:space-between;align-items:center;height:44px;padding:0 16px;display:flex}.hjkrycm{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary)}.hjkrycn{width:28px;height:28px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.hjkrycn:hover{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkryco{flex:1;min-height:0;display:flex}.hjkrycp{border-right:1px solid var(--rc-border);flex-direction:column;flex-shrink:0;width:224px;display:flex;overflow:hidden}.hjkrycq{font-size:var(--rc-font-size-2xs);text-transform:uppercase;letter-spacing:.05em;color:color-mix(in srgb, var(--rc-text-secondary) 60%, transparent);justify-content:space-between;align-items:center;padding:12px 12px 8px;font-weight:600;display:flex}.hjkrycr{width:22px;height:22px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.hjkrycr:hover{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkrycs{flex:1;padding:0 6px 8px;overflow-y:auto}.hjkryct{cursor:pointer;height:24px;font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);border-radius:6px;align-items:center;gap:4px;padding:4px 8px;transition:background .15s,color .15s;display:flex}.hjkryct:hover{background:color-mix(in srgb, var(--rc-text) 5%, transparent);color:var(--rc-text)}.hjkrycv{background:color-mix(in srgb, var(--rc-text) 8%, transparent);color:var(--rc-text)}.hjkrycx{opacity:.4}.hjkrycz{cursor:grab;color:color-mix(in srgb, var(--rc-text-secondary) 40%, transparent);touch-action:none;flex-shrink:0;align-items:center;display:inline-flex}.hjkrycz:active{cursor:grabbing}.hjkryc10{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.hjkryc11{width:20px;height:20px;color:var(--rc-text-secondary);cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:none}.hjkryct:hover .hjkryc11{display:inline-flex}.hjkryc11:hover{color:var(--rc-alert-caution);background:color-mix(in srgb, var(--rc-alert-caution) 10%, transparent)}.hjkryc12{min-width:0;font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);border:1px solid var(--rc-border);background:var(--rc-bg);color:var(--rc-text);border-radius:3px;outline:none;flex:1;padding:1px 4px}.hjkryc12:focus{border-color:color-mix(in srgb, var(--rc-text) 30%, transparent)}.hjkryc13{flex-direction:column;flex:1;min-width:0;display:flex}.hjkryc14{border-bottom:1px solid color-mix(in srgb, var(--rc-border) 50%, transparent);flex-shrink:0;justify-content:space-between;align-items:center;height:36px;padding:0 16px;display:flex}.hjkryc15{font-size:var(--rc-font-size-xs);font-family:var(--rc-font-mono);color:var(--rc-text-secondary);align-items:center;gap:6px;display:flex;overflow:hidden}.hjkryc16{color:var(--rc-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.hjkryc17{opacity:.5}.hjkryc18{flex:1;min-height:0;position:relative;overflow:auto;background-color:#0000!important}.hjkryc18 .cm-editor{height:100%;color:var(--rc-text);font-family:var(--rc-font-mono);font-size:var(--rc-font-size-sm);background:0 0}.hjkryc18 .cm-scroller{line-height:1.7;font-family:var(--rc-font-mono)!important}.hjkryc18 .cm-content{min-height:1.6em;padding:0 1rem 0 .5rem}.hjkryc18 .cm-line{padding:0}.hjkryc18 .cm-gutters{border-right:none;padding-left:1rem}.hjkryc18 .cm-lineNumbers .cm-gutterElement{text-align:right;min-width:3em;padding-right:2em;color:color-mix(in srgb, var(--rc-text-secondary) 40%, transparent)!important}.hjkryc19{background:var(--rc-fill-quaternary);box-shadow:var(--rc-shadow-modal);border-radius:6px}@media (min-width:640px){.hjkrycj.hjkrycj{max-width:64rem}}
2
2
  /*$vite$:1*/
package/dist/slot.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * RendererConfig slot key for `@haklex/rich-ext-code-snippet`.
3
+ *
4
+ * Override modules should reference this constant instead of the bare string
5
+ * literal so renames stay searchable across the workspace.
6
+ */
7
+ export declare const CODE_SNIPPET_NODE_KEY: "CodeSnippet";
8
+ //# sourceMappingURL=slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../src/slot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAG,aAAsB,CAAC"}
package/dist/static.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- import { Klass, LexicalNode } from 'lexical';
2
- export { CodeSnippetRenderer } from './CodeSnippetRenderer';
3
- export type { SerializedCodeSnippetNode } from './nodes/CodeSnippetNode';
4
- export { $createCodeSnippetNode, $isCodeSnippetNode, CodeSnippetNode, } from './nodes/CodeSnippetNode';
5
- export { CODE_SNIPPET_BLOCK_TRANSFORMER } from './transformer';
6
- export declare const codeSnippetNodes: Array<Klass<LexicalNode>>;
1
+ export * from './node';
2
+ export * from './renderer';
7
3
  //# sourceMappingURL=static.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,GAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAA;AAE9D,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAqB,CAAA"}
1
+ {"version":3,"file":"static.d.ts","sourceRoot":"","sources":["../src/static.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
package/dist/static.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { i as CodeSnippetNode, n as $createCodeSnippetNode, o as CodeSnippetRenderer, r as $isCodeSnippetNode, t as CODE_SNIPPET_BLOCK_TRANSFORMER } from "./transformer-BK2M_fTu.js";
2
- //#region src/static.ts
3
- var codeSnippetNodes = [CodeSnippetNode];
4
- //#endregion
5
- export { $createCodeSnippetNode, $isCodeSnippetNode, CODE_SNIPPET_BLOCK_TRANSFORMER, CodeSnippetNode, CodeSnippetRenderer, codeSnippetNodes };
1
+ import { t as CodeSnippetRenderer } from "./CodeSnippetRenderer-BNGQYBtp.js";
2
+ import { a as CODE_SNIPPET_NODE_KEY, n as $isCodeSnippetNode, r as CodeSnippetNode, t as $createCodeSnippetNode } from "./CodeSnippetNode-DD50J5NW.js";
3
+ import { n as CODE_SNIPPET_BLOCK_TRANSFORMER, t as codeSnippetNodes } from "./node-DEOtFSlD.js";
4
+ import "./renderer.mjs";
5
+ export { $createCodeSnippetNode, $isCodeSnippetNode, CODE_SNIPPET_BLOCK_TRANSFORMER, CODE_SNIPPET_NODE_KEY, CodeSnippetNode, CodeSnippetRenderer, codeSnippetNodes };
@@ -0,0 +1,10 @@
1
+ export interface CodeFile {
2
+ code: string;
3
+ filename: string;
4
+ highlightLines?: number[];
5
+ language?: string;
6
+ }
7
+ export interface CodeSnippetRendererProps {
8
+ files: CodeFile[];
9
+ }
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB"}