mdsquare 0.2.0 → 0.3.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/README.md +100 -16
- package/dist/callout.js +3 -0
- package/dist/codeBlock.js +3 -1
- package/dist/extensions.d.ts +2 -2
- package/dist/extensions.js +2 -2
- package/dist/footnote.d.ts +24 -3
- package/dist/footnote.js +458 -163
- package/dist/footnoteSyntax.d.ts +6 -3
- package/dist/footnoteSyntax.js +37 -39
- package/dist/hashtag.js +8 -3
- package/dist/heading.js +6 -0
- package/dist/horizontalRule.js +1 -0
- package/dist/link.d.ts +47 -1
- package/dist/link.js +347 -14
- package/dist/list.js +39 -0
- package/dist/listIndent.js +1 -0
- package/dist/mention.js +16 -4
- package/dist/quote.js +70 -16
- package/dist/tableModel.js +1 -0
- package/dist/task.js +1 -0
- package/dist/tikz.js +1 -1
- package/dist/utils/textWidth.d.ts +6 -0
- package/dist/utils/textWidth.js +11 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ async function openFile(file: File) {
|
|
|
63
63
|
| `features` | 모두 켬 | 기능 끄기. 예: `{ table: false, math: false }` |
|
|
64
64
|
| `codeBlock` | – | `{ languages, theme, copyButton }`. 언어는 기본으로 `@codemirror/language-data`(쓸 때 불러옴), VS Code 테마는 `vscodeTheme(json)` |
|
|
65
65
|
| `image` | – | `{ resolveUrl }`: 상대 경로 이미지 주소 바꾸기 |
|
|
66
|
-
| `link` | – | `{ openLink }`: 링크를 눌렀을
|
|
66
|
+
| `link` | – | `{ openLink, favicon, fetchTitle, maxTitleLength }`: 링크를 눌렀을 때, 사이트 아이콘(기본 켬), 빈 라벨 링크의 페이지 제목. 아래 참고 |
|
|
67
67
|
| `math` | – | `{ katex }`: KaTeX 옵션 (매크로 등) |
|
|
68
68
|
| `tikz` | 끔 | 주면 TikZ 그림을 켭니다. 아래 참고 |
|
|
69
69
|
| `markdown` | – | 목록 Enter 동작 등 문법 옵션 |
|
|
@@ -98,6 +98,68 @@ new MDSquareEditor({
|
|
|
98
98
|
});
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
+
### 링크: 사이트 아이콘과 페이지 제목
|
|
102
|
+
|
|
103
|
+
http(s) 링크 앞에 사이트 아이콘(favicon)을 보여줍니다. 기본은 그 사이트의 `/favicon.ico`이고, 불러오지 못하면 기본 링크 아이콘을 그립니다.
|
|
104
|
+
아이콘을 불러올 때 링크된 사이트에 요청이 가므로, 원하지 않으면 끄거나 아이콘 주소를 직접 정할 수 있습니다.
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
new MDSquareEditor({
|
|
108
|
+
parent,
|
|
109
|
+
link: {
|
|
110
|
+
favicon: false, // 끄기
|
|
111
|
+
// 또는 아이콘 서비스 사용 (null을 돌려주면 기본 링크 아이콘)
|
|
112
|
+
// favicon: (url) => `https://www.google.com/s2/favicons?sz=32&domain=${url.hostname}`,
|
|
113
|
+
},
|
|
114
|
+
});
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
라벨이 빈 링크 `[](https://...)`는 `fetchTitle`을 주면 페이지 제목을 가져와 보여줍니다. (없으면 주소를 보여줌)
|
|
118
|
+
원문은 바꾸지 않고 화면에만 보여주며, 제목이 길면 `maxTitleLength`(기본 40칸, 한글 등 넓은 글자는 2칸)에서 잘라 "…"를 붙입니다.
|
|
119
|
+
전체 제목과 주소는 마우스를 올리면 보입니다. 주소마다 한 번만 가져오고, 커서가 링크 안에 있을 때(입력 중)는 가져오지 않습니다.
|
|
120
|
+
|
|
121
|
+
브라우저는 CORS 때문에 다른 사이트의 HTML을 직접 읽을 수 없으므로 **서버가 대신 받아 주는 주소**가 필요합니다.
|
|
122
|
+
`fetchPageTitle`은 받은 HTML에서 제목(`og:title` → `<title>`)을 읽고, EUC-KR 같은 문자 집합도 처리합니다.
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
import MDSquareEditor, { fetchPageTitle } from "mdsquare";
|
|
126
|
+
|
|
127
|
+
new MDSquareEditor({
|
|
128
|
+
parent,
|
|
129
|
+
link: {
|
|
130
|
+
// 서버의 /api/page?url=... 가 그 페이지의 HTML(과 원래 Content-Type)을 돌려준다고 할 때
|
|
131
|
+
fetchTitle: (url) => fetchPageTitle(url, { proxy: (u) => `/api/page?url=${encodeURIComponent(u)}` }),
|
|
132
|
+
// Electron/Tauri처럼 CORS 제한이 없으면: fetchTitle: (url) => fetchPageTitle(url)
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
중계 서버는 아무 주소나 받아 주면 내부망 접근(SSRF)에 쓰일 수 있으므로, 실제 서비스에서는 http(s)만 허용하고 내부 주소를 막으세요.
|
|
138
|
+
플레이그라운드는 개발 서버(`vite.config.ts`의 `pageProxy`)가 이 역할을 합니다.
|
|
139
|
+
|
|
140
|
+
### 각주
|
|
141
|
+
|
|
142
|
+
`[^라벨]`로 참조하고 `[^라벨]: 내용`으로 정의합니다. 정의 아래 **4칸 들여쓴 줄**은 모두 그 각주의 내용이라
|
|
143
|
+
여러 문단, 표, 수식, 코드, 목록, 이미지, TikZ를 넣을 수 있습니다. (GitHub, Pandoc과 같은 방식)
|
|
144
|
+
|
|
145
|
+
```markdown
|
|
146
|
+
본문에 각주[^1]를 답니다.
|
|
147
|
+
|
|
148
|
+
[^1]: 첫 문단입니다.
|
|
149
|
+
|
|
150
|
+
| 상수 | 값 |
|
|
151
|
+
| --- | --- |
|
|
152
|
+
| $c$ | 299,792,458 m/s |
|
|
153
|
+
|
|
154
|
+
$$
|
|
155
|
+
E = mc^2
|
|
156
|
+
$$
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
- 참조에 마우스를 올리면 각주 내용을 **읽기 전용 작은 에디터**로 보여줍니다. 본문 에디터의 설정을 그대로 쓰므로
|
|
160
|
+
켜 둔 기능(표, 수식, TikZ, 코드 강조, 이미지 주소 변환, 테마)이 본문과 똑같이 그려집니다. 길면 툴팁 안에서 스크롤합니다.
|
|
161
|
+
- 각주 안에서 Enter를 누르면 새 줄도 4칸 들여씁니다. 빈 줄 다음의 들여쓴 빈 줄에서 Enter를 누르면 각주 밖으로 나갑니다.
|
|
162
|
+
|
|
101
163
|
### CodeMirror 확장으로 쓰기
|
|
102
164
|
|
|
103
165
|
에디터를 직접 구성하려면 확장을 가져와 씁니다.
|
|
@@ -149,9 +211,15 @@ TikZ를 켜는 앱이 TikZJax 파일을 직접 제공하므로, 그 앱은 TikZJ
|
|
|
149
211
|
- [x] Image
|
|
150
212
|
1. [x] Caption / Size / Align: ``
|
|
151
213
|
- [x] Link
|
|
214
|
+
1. [x] 사이트 아이콘(favicon): http(s) 링크 앞에 표시 (`link.favicon`)
|
|
215
|
+
2. [x] 빈 라벨 링크 `[](url)`의 페이지 제목 가져오기, 길면 말줄임 (`link.fetchTitle`, `maxTitleLength`)
|
|
152
216
|
- [x] HorizontalRule
|
|
153
217
|
- [x] Footnote
|
|
154
|
-
1. [
|
|
218
|
+
1. [x] Tooltip 디자인 변경: 둥근 카드(옅은 테두리·옅은 그림자, 밝게/어둡게), 라벨 배지 머리, 살짝 떠오르는 등장(동작 줄이기 설정이면 끔). 정의가 없으면 빨간 배지와 "정의되지 않은 각주입니다."
|
|
219
|
+
2. [x] 여러 블록 각주: 4칸 들여쓴 줄이 각주 내용 (문단, 표, 수식, 코드, 목록, 인용·콜아웃, 이미지, TikZ). 들여쓰지 않은 줄은 문단을 이어 쓸 때만 붙음(게으른 이어쓰기), 빈 줄 뒤 들여쓰지 않은 줄은 각주 밖
|
|
220
|
+
3. [x] 툴팁 = 읽기 전용 작은 에디터: 본문 설정을 그대로 이어받아 본문과 똑같이 그림. 여러 줄이면 너비 480px, 한 줄이면 내용 너비, 높이 최대 360px(넘치면 스크롤). 툴팁 안 각주 참조도 원래 문서의 정의를 씀
|
|
221
|
+
4. [x] Enter: 각주 안 새 줄은 4칸 들여쓰기 유지 (목록 이어쓰기·목록 끝내기 포함), 빈 줄 다음 들여쓴 빈 줄에서 Enter로 각주 밖으로
|
|
222
|
+
5. [x] 정의 구분: 라벨 배지 + 왼쪽 레일 + 정의마다 위 간격. 마우스를 올린 정의는 레일이 진해지고, 참조를 눌러 이동하면 정의가 잠깐 반짝임
|
|
155
223
|
- [x] CodeBlock (Fenced Code)
|
|
156
224
|
1. [x] 구문 강조: CodeMirror 언어 파서(Lezer), 블록마다 따로 파싱·증분 파싱 (`languages`에 `@codemirror/language-data` 등)
|
|
157
225
|
2. [x] VS Code 색 테마: `vscodeTheme(json)` (JSON/JSONC, TextMate 스코프 매칭. Lezer 문법이 구분하지 않는 일부 토큰은 근사)
|
|
@@ -199,20 +267,36 @@ TikZ를 켜는 앱이 TikZJax 파일을 직접 제공하므로, 그 앱은 TikZJ
|
|
|
199
267
|
|
|
200
268
|
문법마다 화면 디자인(색, 간격, 기호 표시, 위젯 모양, 어두운 테마)을 다듬습니다.
|
|
201
269
|
|
|
202
|
-
-
|
|
203
|
-
- [
|
|
204
|
-
- [
|
|
205
|
-
- [
|
|
206
|
-
- [
|
|
207
|
-
- [
|
|
208
|
-
- [
|
|
209
|
-
- [
|
|
210
|
-
- [
|
|
211
|
-
-
|
|
212
|
-
-
|
|
213
|
-
- [
|
|
214
|
-
- [
|
|
215
|
-
- [
|
|
270
|
+
- 기본 폰트: Pretendard (openTypes: calt case salt tnum zero ss01 ss02 ss03 ss05 ss06 ss08)
|
|
271
|
+
- [x] Emphasis (굵게, 기울임, 취소선, 밑줄, 하이라이트)
|
|
272
|
+
- [x] Inline Code -> font를 바꿔야 함. (Jetendard)
|
|
273
|
+
- [x] CodeBlock -> font를 바꿔야 함. (Jetendard)
|
|
274
|
+
- [x] Escape
|
|
275
|
+
- [x] Heading
|
|
276
|
+
- [x] HashTag
|
|
277
|
+
- [x] Mention
|
|
278
|
+
- [x] Bullet List
|
|
279
|
+
- 불릿을 글자(•, ◦, ▪) 대신 CSS 도형으로 그림: 깊이 1 채운 원, 2 빈 원, 3 채운 사각형 (4부터 반복). 크기는 글자의 0.35배(본문 약 4.6px, 사각형은 원의 약 0.9배)
|
|
280
|
+
- 너비는 원래 기호 `-`와 같은 한 글자로 고정 (예전에는 `◦`가 대체 글꼴로 넓어져 둘째 깊이 들여쓰기가 어긋났음)
|
|
281
|
+
- [x] Ordered List
|
|
282
|
+
- [x] Task List
|
|
283
|
+
- [x] Image
|
|
284
|
+
- [x] Link
|
|
285
|
+
- 인라인 코드(회색 박스)와 구분: 옅은 파랑 박스 + 파란 글자 (밝게 `#0969da` / 어둡게 `#58a6ff`), 올리면 박스가 진해짐. 제목 안에서도 링크 색
|
|
286
|
+
- 박스 안에 사이트 아이콘(글자 높이 정사각형)과 라벨을 함께. 어두운 테마에서는 검은 아이콘(GitHub 등)이 보이도록 밝은 바탕
|
|
287
|
+
- 박스가 있으므로 구문 강조의 링크 밑줄은 없앰 (라벨 안 취소선·밑줄 문법은 유지)
|
|
288
|
+
- [x] HorizontalRule
|
|
289
|
+
- [ ] Footnote
|
|
290
|
+
- [x] 툴팁: 예전 스타일은 CodeMirror hover 툴팁 구조(바깥 `.cm-tooltip-hover` 안의 section)와 맞지 않아 적용되지 않았음 (여백·너비 제한 없음). 카드 모양을 바깥 상자에 주도록 고침. 참조와 6px 간격
|
|
291
|
+
- [x] 툴팁 내용: 읽기 전용 작은 에디터 (표, 수식, TikZ, 코드, 이미지가 본문과 똑같이). 테두리·줄 번호·현재 줄 강조·표 손잡이 없이 내용만
|
|
292
|
+
- [x] 각주 안 코드 블록은 각주의 작은 글자 크기를 받지 않음 (코드 상자 정렬이 줄 글자 크기 기준)
|
|
293
|
+
- [x] 정의 줄: 라벨은 둥근 배지(툴팁 머리와 같은 모양, 최소 3칸 + 간격 1칸 = 이어지는 줄 들여쓰기 4칸이라 내용이 같은 열에서 시작). 라벨이 2칸보다 넓은 여러 줄 정의는 배지를 따로 한 줄에 그려 내용 열을 맞춤. `]:` 뒤 공백은 숨김
|
|
294
|
+
- [x] 왼쪽 레일(정의의 모든 줄, 인용 줄은 인용 세로줄), 정의마다 위 간격 0.6em(레일은 간격 아래부터), 마우스 올리면 레일 진하게, 참조에서 이동해 오면 1.2초 반짝임
|
|
295
|
+
- [x] 참조(위첨자) 디자인
|
|
296
|
+
- [x] Quote
|
|
297
|
+
- 배경·그림자 없이 왼쪽 세로줄 + 차분한 글자색(밝게 `#475569` / 어둡게 `#a3adbb`). 콜아웃(색 배경 상자 + 아이콘 제목)과 구분
|
|
298
|
+
- 세로줄: 슬레이트색 3px, 가장 바깥 인용의 위·아래 끝은 둥글게. 세로줄과 글 사이 간격 16px
|
|
299
|
+
- 목록·각주 안 인용은 세로줄을 `>` 앞 들여쓰기만큼 옮겨 글 바로 앞에, 콜아웃 안 인용은 상자 안 글자 위치에서 시작. 각주 안 인용 줄에도 각주 레일이 이어짐
|
|
216
300
|
- [ ] GFM Alert (Obsidian Callout)
|
|
217
301
|
- [ ] LaTeX (KaTeX)
|
|
218
302
|
- [ ] TikZ
|
package/dist/callout.js
CHANGED
|
@@ -222,6 +222,7 @@ const CONTAINERS = new Set([
|
|
|
222
222
|
"BulletList",
|
|
223
223
|
"OrderedList",
|
|
224
224
|
"ListItem",
|
|
225
|
+
"FootnoteDefinition",
|
|
225
226
|
]);
|
|
226
227
|
const markerSource = Decoration.mark({ class: "cm-formatting cm-formatting-callout" });
|
|
227
228
|
const titleText = Decoration.mark({ class: "cm-callout-title-text" });
|
|
@@ -434,6 +435,8 @@ function themeSpec() {
|
|
|
434
435
|
// 내용 영역을 다른 블록(코드 블록 등)에도 알려줍니다. (utils/container.ts)
|
|
435
436
|
"--cm-container-indent": px(inset + TEXT),
|
|
436
437
|
"--cm-container-right": px(inset + PAD),
|
|
438
|
+
// 콜아웃 안의 일반 인용은 상자 안 글자 위치에서 세로줄을 그립니다. (quote.ts)
|
|
439
|
+
"--cm-quote-base": px(inset + TEXT),
|
|
437
440
|
};
|
|
438
441
|
}
|
|
439
442
|
// 2·3단계 상자: 바깥 상자 안쪽으로 들인 가상 요소
|
package/dist/codeBlock.js
CHANGED
|
@@ -391,6 +391,7 @@ const CONTAINERS = new Set([
|
|
|
391
391
|
"BulletList",
|
|
392
392
|
"OrderedList",
|
|
393
393
|
"ListItem",
|
|
394
|
+
"FootnoteDefinition",
|
|
394
395
|
]);
|
|
395
396
|
function codeBlockPlugin(languages, theme, copyButton) {
|
|
396
397
|
return createRevealPlugin({
|
|
@@ -423,7 +424,8 @@ function codeBlockPlugin(languages, theme, copyButton) {
|
|
|
423
424
|
let inList = false;
|
|
424
425
|
let inQuote = false; // 인용(콜아웃 포함) 안이면 위아래 여백
|
|
425
426
|
for (let p = node.node.parent; p; p = p.parent) {
|
|
426
|
-
|
|
427
|
+
// 각주 정의의 4칸 들여쓰기도 목록 들여쓰기처럼 처리합니다.
|
|
428
|
+
if (p.name === "ListItem" || p.name === "FootnoteDefinition")
|
|
427
429
|
inList = true;
|
|
428
430
|
else if (p.name === "Blockquote")
|
|
429
431
|
inQuote = true;
|
package/dist/extensions.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { listIndent, listKeymap, indentListItem, outdentListItem } from "./listI
|
|
|
23
23
|
export { endListWithBlankLine } from "./listEnter.js";
|
|
24
24
|
export { list, listPlugin, taskMarkersHandled } from "./list.js";
|
|
25
25
|
export { task, taskPlugin, toggleTask } from "./task.js";
|
|
26
|
-
export { isSafeUrl, link, linkPlugin, openLinkSafely, readInlineLink, type InlineLink, type LinkOptions, } from "./link.js";
|
|
26
|
+
export { decodeHtml, defaultFavicon, fetchPageTitle, isSafeUrl, link, linkPlugin, openLinkSafely, parseHtmlTitle, readInlineLink, truncateTitle, type FetchPageTitleOptions, type InlineLink, type LinkOptions, } from "./link.js";
|
|
27
27
|
export { image, parseImageAlt, readImage, type ImageAlign, type ImageAltOptions, type ImageInfo, type ImageOptions, } from "./image.js";
|
|
28
28
|
export { horizontalRule, horizontalRuleField } from "./horizontalRule.js";
|
|
29
29
|
export { quote, quotePlugin } from "./quote.js";
|
|
@@ -38,7 +38,7 @@ export { codeBlock, languageLabel, readFencedCode, renderedCodeLanguages, type C
|
|
|
38
38
|
export { defaultCodeTheme, vscodeTheme, type CodeTheme, type VSCodeThemeJson, type VSCodeThemeOptions, } from "./codeTheme.js";
|
|
39
39
|
export { parseJsonc, textMateTheme, type TextMateTheme, type TokenColorRule, type TokenStyle } from "./textMate.js";
|
|
40
40
|
export { calloutsHandled, defaultCalloutTitle, readCalloutHeader, type CalloutHeader, type CalloutType, } from "./calloutHeader.js";
|
|
41
|
-
export { footnote, footnotePlugin, footnoteDefinitions, footnoteTooltipAt,
|
|
41
|
+
export { footnote, footnotePlugin, footnoteDefinitions, footnoteContent, footnotePreviewState, footnoteTooltipAt, isFootnotePreview, type FootnoteDefinitionInfo, } from "./footnote.js";
|
|
42
42
|
export { createRevealField, createRevealPlugin, RevealPluginValue, type RevealContext, type RevealFieldSpec, type RevealFieldValue, type RevealPluginSpec, } from "./utils/reveal.js";
|
|
43
43
|
/** 이 플러그인이 제공하는 Lezer Markdown 문법 확장 목록 */
|
|
44
44
|
export declare const extendedMarkdownSyntax: MarkdownExtension[];
|
package/dist/extensions.js
CHANGED
|
@@ -24,7 +24,7 @@ export { listIndent, listKeymap, indentListItem, outdentListItem } from "./listI
|
|
|
24
24
|
export { endListWithBlankLine } from "./listEnter.js";
|
|
25
25
|
export { list, listPlugin, taskMarkersHandled } from "./list.js";
|
|
26
26
|
export { task, taskPlugin, toggleTask } from "./task.js";
|
|
27
|
-
export { isSafeUrl, link, linkPlugin, openLinkSafely, readInlineLink, } from "./link.js";
|
|
27
|
+
export { decodeHtml, defaultFavicon, fetchPageTitle, isSafeUrl, link, linkPlugin, openLinkSafely, parseHtmlTitle, readInlineLink, truncateTitle, } from "./link.js";
|
|
28
28
|
export { image, parseImageAlt, readImage, } from "./image.js";
|
|
29
29
|
export { horizontalRule, horizontalRuleField } from "./horizontalRule.js";
|
|
30
30
|
export { quote, quotePlugin } from "./quote.js";
|
|
@@ -39,7 +39,7 @@ export { codeBlock, languageLabel, readFencedCode, renderedCodeLanguages, } from
|
|
|
39
39
|
export { defaultCodeTheme, vscodeTheme, } from "./codeTheme.js";
|
|
40
40
|
export { parseJsonc, textMateTheme } from "./textMate.js";
|
|
41
41
|
export { calloutsHandled, defaultCalloutTitle, readCalloutHeader, } from "./calloutHeader.js";
|
|
42
|
-
export { footnote, footnotePlugin, footnoteDefinitions, footnoteTooltipAt,
|
|
42
|
+
export { footnote, footnotePlugin, footnoteDefinitions, footnoteContent, footnotePreviewState, footnoteTooltipAt, isFootnotePreview, } from "./footnote.js";
|
|
43
43
|
export { createRevealField, createRevealPlugin, RevealPluginValue, } from "./utils/reveal.js";
|
|
44
44
|
/** 이 플러그인이 제공하는 Lezer Markdown 문법 확장 목록 */
|
|
45
45
|
export const extendedMarkdownSyntax = [
|
package/dist/footnote.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EditorState, type Extension, type StateCommand } from "@codemirror/state";
|
|
2
2
|
import { type Tooltip } from "@codemirror/view";
|
|
3
|
+
import type { SyntaxNode } from "@lezer/common";
|
|
3
4
|
export interface FootnoteDefinitionInfo {
|
|
4
5
|
readonly label: string;
|
|
5
6
|
/** 정의 전체 범위 */
|
|
@@ -17,8 +18,28 @@ export interface FootnoteDefinitionInfo {
|
|
|
17
18
|
*/
|
|
18
19
|
export declare function footnoteDefinitions(state: EditorState): ReadonlyMap<string, FootnoteDefinitionInfo>;
|
|
19
20
|
export declare const footnotePlugin: import("@codemirror/view").ViewPlugin<import("./extensions.js").RevealPluginValue, undefined>;
|
|
20
|
-
/** 각주
|
|
21
|
-
export declare function
|
|
21
|
+
/** 각주 미리보기 에디터인지 */
|
|
22
|
+
export declare function isFootnotePreview(state: EditorState): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 각주 정의 내용 (첫 줄은 `[^label]: ` 뒤부터, 이어지는 줄은 4칸 들여쓰기를 뺀 글).
|
|
25
|
+
* 정의가 없으면 null
|
|
26
|
+
*/
|
|
27
|
+
export declare function footnoteContent(state: EditorState, label: string): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* 각주 미리보기용 상태: state의 설정을 그대로 쓰고 문서만 content로 바꿉니다. (읽기 전용)
|
|
30
|
+
* 커서는 끝에 덧붙인 빈 줄에 둬서 어떤 블록도 원문으로 펼쳐지지 않게 합니다.
|
|
31
|
+
*/
|
|
32
|
+
export declare function footnotePreviewState(state: EditorState, content: string): EditorState;
|
|
22
33
|
/** pos(마우스 위치)에 각주 참조가 있으면 그 정의를 보여주는 툴팁 */
|
|
23
34
|
export declare function footnoteTooltipAt(state: EditorState, pos: number, side?: -1 | 1): Tooltip | null;
|
|
35
|
+
/**
|
|
36
|
+
* 줄이 각주 정의 내용 안이면 그 정의 노드.
|
|
37
|
+
* 정의 범위 안의 줄, 또는 정의 바로 뒤에 이어지는 들여쓴 빈 줄(공백만 있는 줄)이 해당합니다.
|
|
38
|
+
*/
|
|
39
|
+
export declare function footnoteAtLine(state: EditorState, lineNumber: number): SyntaxNode | null;
|
|
40
|
+
/**
|
|
41
|
+
* 각주 안의 들여쓴 빈 줄이 빈 줄 바로 다음이면, Enter로 들여쓰기를 지워 각주 밖으로 나갑니다.
|
|
42
|
+
* (인용에서 빈 줄 두 번으로 나가는 것과 같음)
|
|
43
|
+
*/
|
|
44
|
+
export declare const exitFootnote: StateCommand;
|
|
24
45
|
export declare function footnote(): Extension;
|