@teriusu/rich-editor 0.10.8 → 0.11.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/components/BubbleToolbar.svelte +40 -36
- package/dist/components/BubbleToolbar.svelte.d.ts +3 -0
- package/dist/components/BubbleToolbar.svelte.d.ts.map +1 -1
- package/dist/components/EmojiSuggestionMenu.svelte +291 -0
- package/dist/components/EmojiSuggestionMenu.svelte.d.ts +9 -0
- package/dist/components/EmojiSuggestionMenu.svelte.d.ts.map +1 -0
- package/dist/components/FixedToolbar.svelte +53 -47
- package/dist/components/FixedToolbar.svelte.d.ts +3 -0
- package/dist/components/FixedToolbar.svelte.d.ts.map +1 -1
- package/dist/components/FloatingHelper.svelte +219 -0
- package/dist/components/FloatingHelper.svelte.d.ts +14 -0
- package/dist/components/FloatingHelper.svelte.d.ts.map +1 -0
- package/dist/components/InputModal.svelte +7 -3
- package/dist/components/InputModal.svelte.d.ts +3 -0
- package/dist/components/InputModal.svelte.d.ts.map +1 -1
- package/dist/components/MathModal.svelte +33 -29
- package/dist/components/MathModal.svelte.d.ts +3 -0
- package/dist/components/MathModal.svelte.d.ts.map +1 -1
- package/dist/components/MediaPickerModal.svelte +7 -3
- package/dist/components/MediaPickerModal.svelte.d.ts +3 -0
- package/dist/components/MediaPickerModal.svelte.d.ts.map +1 -1
- package/dist/components/SlashCommandMenu.svelte +88 -72
- package/dist/components/SlashCommandMenu.svelte.d.ts +3 -0
- package/dist/components/SlashCommandMenu.svelte.d.ts.map +1 -1
- package/dist/components/TableBubbleMenu.svelte +41 -33
- package/dist/components/TableBubbleMenu.svelte.d.ts +3 -0
- package/dist/components/TableBubbleMenu.svelte.d.ts.map +1 -1
- package/dist/components/TipTapEditor.svelte +239 -127
- package/dist/components/TipTapEditor.svelte.d.ts +7 -0
- package/dist/components/TipTapEditor.svelte.d.ts.map +1 -1
- package/dist/extensions/CardBlock.d.ts.map +1 -1
- package/dist/extensions/CardBlock.js +6 -4
- package/dist/extensions/FileAttachment.d.ts.map +1 -1
- package/dist/extensions/FileAttachment.js +2 -1
- package/dist/extensions/FixedDetails.d.ts.map +1 -1
- package/dist/extensions/FixedDetails.js +5 -3
- package/dist/extensions/LegacyBlock.d.ts.map +1 -1
- package/dist/extensions/LegacyBlock.js +8 -6
- package/dist/extensions/Math.d.ts.map +1 -1
- package/dist/extensions/Math.js +5 -2
- package/dist/extensions/MbusVideo.d.ts.map +1 -1
- package/dist/extensions/MbusVideo.js +73 -9
- package/dist/extensions/MediaToolbar.d.ts +41 -0
- package/dist/extensions/MediaToolbar.d.ts.map +1 -0
- package/dist/extensions/MediaToolbar.js +196 -0
- package/dist/extensions/MediaToolbar.test.d.ts +2 -0
- package/dist/extensions/MediaToolbar.test.d.ts.map +1 -0
- package/dist/extensions/MediaToolbar.test.js +231 -0
- package/dist/extensions/OrderedListMarker.d.ts +2 -0
- package/dist/extensions/OrderedListMarker.d.ts.map +1 -0
- package/dist/extensions/OrderedListMarker.js +114 -0
- package/dist/extensions/OrderedListMarker.test.d.ts +2 -0
- package/dist/extensions/OrderedListMarker.test.d.ts.map +1 -0
- package/dist/extensions/OrderedListMarker.test.js +176 -0
- package/dist/extensions/PdfBlock.d.ts.map +1 -1
- package/dist/extensions/PdfBlock.js +25 -23
- package/dist/extensions/ResizableImage.d.ts.map +1 -1
- package/dist/extensions/ResizableImage.js +20 -1
- package/dist/extensions/TableKeymap.d.ts +16 -0
- package/dist/extensions/TableKeymap.d.ts.map +1 -0
- package/dist/extensions/TableKeymap.js +97 -0
- package/dist/extensions/TableKeymap.test.d.ts +2 -0
- package/dist/extensions/TableKeymap.test.d.ts.map +1 -0
- package/dist/extensions/TableKeymap.test.js +147 -0
- package/dist/extensions/TabsBlock.d.ts.map +1 -1
- package/dist/extensions/TabsBlock.js +12 -9
- package/dist/extensions/TiptapMidibus.d.ts.map +1 -1
- package/dist/extensions/TiptapMidibus.js +60 -6
- package/dist/extensions/UploadSkeleton.d.ts +61 -0
- package/dist/extensions/UploadSkeleton.d.ts.map +1 -0
- package/dist/extensions/UploadSkeleton.js +233 -0
- package/dist/extensions/UploadSkeleton.test.d.ts +2 -0
- package/dist/extensions/UploadSkeleton.test.d.ts.map +1 -0
- package/dist/extensions/UploadSkeleton.test.js +128 -0
- package/dist/extensions/VideoEmbed.d.ts +8 -0
- package/dist/extensions/VideoEmbed.d.ts.map +1 -1
- package/dist/extensions/VideoEmbed.js +226 -45
- package/dist/extensions/VideoEmbed.test.js +131 -2
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +191 -0
- package/dist/i18n/es.d.ts +3 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +191 -0
- package/dist/i18n/index.d.ts +43 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +109 -0
- package/dist/i18n/index.test.d.ts +2 -0
- package/dist/i18n/index.test.d.ts.map +1 -0
- package/dist/i18n/index.test.js +173 -0
- package/dist/i18n/ja.d.ts +3 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ja.js +191 -0
- package/dist/i18n/ko.d.ts +198 -0
- package/dist/i18n/ko.d.ts.map +1 -0
- package/dist/i18n/ko.js +215 -0
- package/dist/i18n/zh-hans.d.ts +3 -0
- package/dist/i18n/zh-hans.d.ts.map +1 -0
- package/dist/i18n/zh-hans.js +191 -0
- package/dist/i18n/zh-hant.d.ts +3 -0
- package/dist/i18n/zh-hant.d.ts.map +1 -0
- package/dist/i18n/zh-hant.js +192 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/static/highlight.d.ts +13 -0
- package/dist/static/highlight.d.ts.map +1 -0
- package/dist/static/highlight.js +99 -0
- package/dist/static/index.d.ts +33 -0
- package/dist/static/index.d.ts.map +1 -0
- package/dist/static/index.js +367 -0
- package/dist/static/index.test.d.ts +2 -0
- package/dist/static/index.test.d.ts.map +1 -0
- package/dist/static/index.test.js +194 -0
- package/dist/static/tokenizer.d.ts +52 -0
- package/dist/static/tokenizer.d.ts.map +1 -0
- package/dist/static/tokenizer.js +289 -0
- package/dist/styles/editor.css +1 -1
- package/dist/utils/emoji-data.d.ts +15 -0
- package/dist/utils/emoji-suggestion.d.ts +48 -0
- package/dist/utils/emoji-suggestion.d.ts.map +1 -0
- package/dist/utils/emoji-suggestion.js +51 -0
- package/dist/utils/emoji-suggestion.test.d.ts +2 -0
- package/dist/utils/emoji-suggestion.test.d.ts.map +1 -0
- package/dist/utils/emoji-suggestion.test.js +117 -0
- package/dist/utils/floating-helper.d.ts +60 -0
- package/dist/utils/floating-helper.d.ts.map +1 -0
- package/dist/utils/floating-helper.js +63 -0
- package/dist/utils/floating-helper.test.d.ts +2 -0
- package/dist/utils/floating-helper.test.d.ts.map +1 -0
- package/dist/utils/floating-helper.test.js +141 -0
- package/dist/utils/guard-vscode-paste.d.ts +19 -0
- package/dist/utils/guard-vscode-paste.d.ts.map +1 -0
- package/dist/utils/guard-vscode-paste.js +46 -0
- package/dist/utils/guard-vscode-paste.test.d.ts +2 -0
- package/dist/utils/guard-vscode-paste.test.d.ts.map +1 -0
- package/dist/utils/guard-vscode-paste.test.js +86 -0
- package/dist/utils/media-size.d.ts +29 -0
- package/dist/utils/media-size.d.ts.map +1 -0
- package/dist/utils/media-size.js +90 -0
- package/dist/utils/resize.d.ts +12 -0
- package/dist/utils/resize.d.ts.map +1 -1
- package/dist/utils/resize.js +5 -5
- package/dist/utils/sanitize.d.ts +2 -0
- package/dist/utils/sanitize.d.ts.map +1 -1
- package/dist/utils/sanitize.js +28 -3
- package/package.json +8 -1
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { Editor } from '@tiptap/core';
|
|
3
|
+
import StarterKit from '@tiptap/starter-kit';
|
|
4
|
+
import { createTranslator, defaultTranslator, getEditorTranslator, EditorI18n, ko, en, ja, es, zhHans, zhHant } from './index';
|
|
5
|
+
import { TabsBlock, Tab } from '../extensions/TabsBlock';
|
|
6
|
+
describe('createTranslator — 기본(미주입) = ko', () => {
|
|
7
|
+
it('로케일 없이 만들면 기존 하드코딩 문자열과 동일한 ko 를 돌려준다', () => {
|
|
8
|
+
const t = createTranslator();
|
|
9
|
+
expect(t('placeholder')).toBe("'/'를 눌러 명령어를 입력하세요...");
|
|
10
|
+
expect(t('bold')).toBe('굵게');
|
|
11
|
+
expect(t('tabAdd')).toBe('탭 추가');
|
|
12
|
+
expect(t('pdfLoading')).toBe('PDF 로딩 중...');
|
|
13
|
+
expect(t('imageUploadFailed')).toBe('이미지 업로드에 실패했습니다.');
|
|
14
|
+
});
|
|
15
|
+
it('defaultTranslator 도 같은 ko 값이다', () => {
|
|
16
|
+
expect(defaultTranslator('cancel')).toBe('취소');
|
|
17
|
+
expect(defaultTranslator('noResult')).toBe('결과 없음');
|
|
18
|
+
});
|
|
19
|
+
it('null·undefined·빈 문자열 입력도 전부 ko 다', () => {
|
|
20
|
+
expect(createTranslator(null)('confirm')).toBe('확인');
|
|
21
|
+
expect(createTranslator(undefined)('confirm')).toBe('확인');
|
|
22
|
+
expect(createTranslator('')('confirm')).toBe('확인');
|
|
23
|
+
});
|
|
24
|
+
// i18n 이전부터 영어로 노출되던 문자열은 ko 에서도 그대로다 (픽셀 단위 하위호환)
|
|
25
|
+
it('원래 영어였던 문자열은 ko 에서도 원문 그대로다', () => {
|
|
26
|
+
const t = createTranslator();
|
|
27
|
+
expect(t('fileSizeLoading')).toBe('loading...');
|
|
28
|
+
expect(t('detailsExpand')).toBe('Expand details content');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('createTranslator — 로케일 전환', () => {
|
|
32
|
+
it('로케일 코드로 라벨이 바뀐다', () => {
|
|
33
|
+
expect(createTranslator('en')('bold')).toBe('Bold');
|
|
34
|
+
expect(createTranslator('ja')('bold')).toBe('太字');
|
|
35
|
+
expect(createTranslator('es')('bold')).toBe('Negrita');
|
|
36
|
+
expect(createTranslator('zh-hans')('bold')).toBe('加粗');
|
|
37
|
+
expect(createTranslator('zh-hant')('bold')).toBe('粗體');
|
|
38
|
+
});
|
|
39
|
+
it('지역 변형·표기 변형을 정규화한다', () => {
|
|
40
|
+
expect(createTranslator('en-US')('cancel')).toBe('Cancel');
|
|
41
|
+
expect(createTranslator('en-GB')('cancel')).toBe('Cancel');
|
|
42
|
+
expect(createTranslator('ko-KR')('cancel')).toBe('취소');
|
|
43
|
+
expect(createTranslator('ko_KR')('cancel')).toBe('취소');
|
|
44
|
+
expect(createTranslator('ja-JP')('cancel')).toBe('キャンセル');
|
|
45
|
+
expect(createTranslator('es-419')('cancel')).toBe('Cancelar');
|
|
46
|
+
});
|
|
47
|
+
it('중국어는 문자 체계로 이분한다 (TW·HK·MO·Hant → 번체)', () => {
|
|
48
|
+
expect(createTranslator('zh')('table')).toBe('表格');
|
|
49
|
+
expect(createTranslator('zh-CN')('close')).toBe('关闭');
|
|
50
|
+
expect(createTranslator('zh-TW')('close')).toBe('關閉');
|
|
51
|
+
expect(createTranslator('zh-HK')('close')).toBe('關閉');
|
|
52
|
+
expect(createTranslator('zh-Hant')('close')).toBe('關閉');
|
|
53
|
+
expect(createTranslator('zh-Hans')('close')).toBe('关闭');
|
|
54
|
+
});
|
|
55
|
+
it('해석할 수 없는 로케일은 ko 로 떨어진다 (하위호환 폴백)', () => {
|
|
56
|
+
expect(createTranslator('fr')('bold')).toBe('굵게');
|
|
57
|
+
expect(createTranslator('xx-YY')('bold')).toBe('굵게');
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('createTranslator — 오버라이드·미정의 키 폴백', () => {
|
|
61
|
+
it('부분 오버라이드 객체는 준 키만 바꾸고 나머지는 ko 폴백', () => {
|
|
62
|
+
const t = createTranslator({ bold: 'Fett' });
|
|
63
|
+
expect(t('bold')).toBe('Fett');
|
|
64
|
+
expect(t('italic')).toBe('기울임'); // 미정의 키 → ko
|
|
65
|
+
});
|
|
66
|
+
it('사전에 아예 없는 키는 키 이름 그대로 돌려준다 (조용히 죽지 않는다)', () => {
|
|
67
|
+
const t = createTranslator('en');
|
|
68
|
+
// 타입을 우회해 런타임 방어를 확인한다
|
|
69
|
+
expect(t('noSuchKey')).toBe('noSuchKey');
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('보간 — {name} 자리 채움', () => {
|
|
73
|
+
it('params 로 자리를 채운다', () => {
|
|
74
|
+
const t = createTranslator();
|
|
75
|
+
expect(t('tabDefaultTitle', { n: 3 })).toBe('탭 3');
|
|
76
|
+
expect(t('toggleHeading', { level: 2 })).toBe('토글 제목 2');
|
|
77
|
+
expect(t('legacyNotice', { kind: '임베드' })).toBe('임베드 (옛 형식 · 편집 불가)');
|
|
78
|
+
expect(t('characterCount', { chars: 10, words: 2 })).toBe('10 자 · 2 단어');
|
|
79
|
+
});
|
|
80
|
+
it('영어에서는 어순까지 바뀐다', () => {
|
|
81
|
+
const t = createTranslator('en');
|
|
82
|
+
expect(t('tabDelete', { title: 'Tab 1' })).toBe('Delete Tab 1');
|
|
83
|
+
});
|
|
84
|
+
it('params 가 없거나 이름이 빠지면 자리를 그대로 둔다', () => {
|
|
85
|
+
const t = createTranslator();
|
|
86
|
+
expect(t('tabDefaultTitle')).toBe('탭 {n}');
|
|
87
|
+
expect(t('tabDefaultTitle', { x: 1 })).toBe('탭 {n}');
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
describe('사전 완전성', () => {
|
|
91
|
+
it('여섯 로케일의 키 집합이 ko 와 정확히 같다', () => {
|
|
92
|
+
const keys = Object.keys(ko).sort();
|
|
93
|
+
for (const dict of [en, ja, es, zhHans, zhHant]) {
|
|
94
|
+
expect(Object.keys(dict).sort()).toEqual(keys);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
it('값이 빈 문자열인 키는 없다', () => {
|
|
98
|
+
for (const dict of [ko, en, ja, es, zhHans, zhHant]) {
|
|
99
|
+
for (const [key, value] of Object.entries(dict)) {
|
|
100
|
+
expect(value, key).not.toBe('');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('vanilla NodeView 접근 경로 — editor.storage.editorI18n', () => {
|
|
106
|
+
let editor = null;
|
|
107
|
+
let host = null;
|
|
108
|
+
const make = (extensions) => {
|
|
109
|
+
host = document.createElement('div');
|
|
110
|
+
document.body.appendChild(host);
|
|
111
|
+
editor = new Editor({
|
|
112
|
+
element: host,
|
|
113
|
+
extensions,
|
|
114
|
+
content: '<p></p>',
|
|
115
|
+
editable: true
|
|
116
|
+
});
|
|
117
|
+
return editor;
|
|
118
|
+
};
|
|
119
|
+
afterEach(() => {
|
|
120
|
+
editor?.destroy();
|
|
121
|
+
editor = null;
|
|
122
|
+
host?.remove();
|
|
123
|
+
host = null;
|
|
124
|
+
});
|
|
125
|
+
it('EditorI18n 이 없으면 getEditorTranslator 는 ko 기본 번역기다', () => {
|
|
126
|
+
const e = make([StarterKit, TabsBlock, Tab]);
|
|
127
|
+
expect(getEditorTranslator(e)('tabAdd')).toBe('탭 추가');
|
|
128
|
+
});
|
|
129
|
+
it('null·storage 없는 객체도 ko 기본 번역기로 폴백한다', () => {
|
|
130
|
+
expect(getEditorTranslator(null)('tabAdd')).toBe('탭 추가');
|
|
131
|
+
expect(getEditorTranslator(undefined)('delete')).toBe('삭제');
|
|
132
|
+
expect(getEditorTranslator({})('delete')).toBe('삭제');
|
|
133
|
+
});
|
|
134
|
+
it('EditorI18n.configure({ locale }) 가 storage 로 번역기를 나른다', () => {
|
|
135
|
+
const e = make([StarterKit, TabsBlock, Tab, EditorI18n.configure({ locale: 'en' })]);
|
|
136
|
+
expect(getEditorTranslator(e)('tabAdd')).toBe('Add tab');
|
|
137
|
+
});
|
|
138
|
+
it('NodeView(탭 블록)가 storage 의 로케일로 그려진다 — 기본(미주입)=ko', () => {
|
|
139
|
+
const e = make([StarterKit, TabsBlock, Tab]);
|
|
140
|
+
e.commands.setTabs(2);
|
|
141
|
+
const add = e.view.dom.querySelector('.hce-tabs-add');
|
|
142
|
+
expect(add?.getAttribute('aria-label')).toBe('탭 추가');
|
|
143
|
+
// 생성된 탭 기본 이름도 ko
|
|
144
|
+
const titles = [];
|
|
145
|
+
e.state.doc.descendants((node) => {
|
|
146
|
+
if (node.type.name === 'tab')
|
|
147
|
+
titles.push(String(node.attrs.title));
|
|
148
|
+
});
|
|
149
|
+
expect(titles).toEqual(['탭 1', '탭 2']);
|
|
150
|
+
});
|
|
151
|
+
it('NodeView(탭 블록)가 en 로케일로 그려진다', () => {
|
|
152
|
+
const e = make([StarterKit, TabsBlock, Tab, EditorI18n.configure({ locale: 'en' })]);
|
|
153
|
+
e.commands.setTabs(2);
|
|
154
|
+
const add = e.view.dom.querySelector('.hce-tabs-add');
|
|
155
|
+
expect(add?.getAttribute('aria-label')).toBe('Add tab');
|
|
156
|
+
const titles = [];
|
|
157
|
+
e.state.doc.descendants((node) => {
|
|
158
|
+
if (node.type.name === 'tab')
|
|
159
|
+
titles.push(String(node.attrs.title));
|
|
160
|
+
});
|
|
161
|
+
expect(titles).toEqual(['Tab 1', 'Tab 2']);
|
|
162
|
+
});
|
|
163
|
+
it('메시지 오버라이드 객체도 확장 옵션으로 그대로 통한다', () => {
|
|
164
|
+
const e = make([
|
|
165
|
+
StarterKit,
|
|
166
|
+
TabsBlock,
|
|
167
|
+
Tab,
|
|
168
|
+
EditorI18n.configure({ locale: { tabAdd: '추가!' } })
|
|
169
|
+
]);
|
|
170
|
+
e.commands.setTabs(1);
|
|
171
|
+
expect(e.view.dom.querySelector('.hce-tabs-add')?.getAttribute('aria-label')).toBe('추가!');
|
|
172
|
+
});
|
|
173
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ja.d.ts","sourceRoot":"","sources":["../../src/i18n/ja.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE3C,eAAO,MAAM,EAAE,EAAE,cA+MhB,CAAC"}
|
package/dist/i18n/ja.js
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
export const ja = {
|
|
2
|
+
close: '閉じる',
|
|
3
|
+
cancel: 'キャンセル',
|
|
4
|
+
confirm: 'OK',
|
|
5
|
+
delete: '削除',
|
|
6
|
+
insert: '挿入',
|
|
7
|
+
upload: 'アップロード',
|
|
8
|
+
link: 'リンク',
|
|
9
|
+
noResult: '結果なし',
|
|
10
|
+
preview: 'プレビュー',
|
|
11
|
+
paragraph: '本文',
|
|
12
|
+
heading1: '見出し 1',
|
|
13
|
+
heading2: '見出し 2',
|
|
14
|
+
heading3: '見出し 3',
|
|
15
|
+
toggleHeading: 'トグル見出し {level}',
|
|
16
|
+
bulletList: '箇条書き',
|
|
17
|
+
orderedList: '番号付きリスト',
|
|
18
|
+
taskList: 'チェックリスト',
|
|
19
|
+
blockquote: '引用',
|
|
20
|
+
toggle: 'トグル',
|
|
21
|
+
code: 'コード',
|
|
22
|
+
codeBlock: 'コードブロック',
|
|
23
|
+
math: '数式',
|
|
24
|
+
mathBlock: '数式ブロック',
|
|
25
|
+
mathInline: 'インライン数式',
|
|
26
|
+
table: '表',
|
|
27
|
+
table3x3: '表 (3x3)',
|
|
28
|
+
divider: '区切り線',
|
|
29
|
+
columns2: '2カラム',
|
|
30
|
+
columns3: '3カラム',
|
|
31
|
+
tabs: 'タブ',
|
|
32
|
+
card: 'カード',
|
|
33
|
+
image: '画像',
|
|
34
|
+
video: '動画',
|
|
35
|
+
mbusVideo: 'ミディバス動画',
|
|
36
|
+
file: 'ファイル',
|
|
37
|
+
fileAttach: 'ファイルを添付',
|
|
38
|
+
pdfFile: 'PDFファイル',
|
|
39
|
+
undo: '元に戻す',
|
|
40
|
+
redo: 'やり直す',
|
|
41
|
+
blockType: 'ブロックタイプ',
|
|
42
|
+
bold: '太字',
|
|
43
|
+
italic: '斜体',
|
|
44
|
+
underline: '下線',
|
|
45
|
+
strike: '取り消し線',
|
|
46
|
+
alignLeft: '左揃え',
|
|
47
|
+
alignCenter: '中央揃え',
|
|
48
|
+
alignRight: '右揃え',
|
|
49
|
+
highlight: 'ハイライト',
|
|
50
|
+
textColor: '文字色',
|
|
51
|
+
customColor: 'カスタム',
|
|
52
|
+
colorDefault: 'デフォルト',
|
|
53
|
+
colorBlack: '黒',
|
|
54
|
+
colorGray: 'グレー',
|
|
55
|
+
colorRed: '赤',
|
|
56
|
+
colorOrange: 'オレンジ',
|
|
57
|
+
colorYellow: '黄',
|
|
58
|
+
colorGreen: '緑',
|
|
59
|
+
colorBlue: '青',
|
|
60
|
+
colorPurple: '紫',
|
|
61
|
+
videoUrl: '動画URL',
|
|
62
|
+
mbusVideoUrl: 'ミディバス動画URL',
|
|
63
|
+
promptLinkUrl: 'リンクURLを入力',
|
|
64
|
+
promptImageUrl: '画像URLを入力',
|
|
65
|
+
promptVideoUrl: '動画URLを入力(YouTube・Vimeoなど)',
|
|
66
|
+
promptMbusUrl: 'ミディバス動画のURLを入力',
|
|
67
|
+
sectionFrequent: 'よく使う',
|
|
68
|
+
sectionBasic: '基本',
|
|
69
|
+
sectionList: 'リスト',
|
|
70
|
+
sectionBlock: 'ブロック',
|
|
71
|
+
sectionLayout: 'レイアウト',
|
|
72
|
+
sectionMedia: 'メディア',
|
|
73
|
+
emptyLineTools: '空行ツール',
|
|
74
|
+
floatingHint: '/ でコマンドを入力',
|
|
75
|
+
floatingHintOr: '。または',
|
|
76
|
+
insertMath: '数式を挿入',
|
|
77
|
+
insertCodeBlock: 'コードブロックを挿入',
|
|
78
|
+
mathSuperscript: '上付き文字',
|
|
79
|
+
mathSubscript: '下付き文字',
|
|
80
|
+
mathFraction: '分数',
|
|
81
|
+
mathSqrt: '平方根',
|
|
82
|
+
mathSum: '総和',
|
|
83
|
+
mathProduct: '総乗',
|
|
84
|
+
mathLog: '対数',
|
|
85
|
+
mathBigO: 'ビッグオー記法',
|
|
86
|
+
mathLe: '以下',
|
|
87
|
+
mathGe: '以上',
|
|
88
|
+
mathNe: '不等号',
|
|
89
|
+
mathTimes: '掛け算',
|
|
90
|
+
mathDivide: '割り算',
|
|
91
|
+
mathIn: '属する',
|
|
92
|
+
mathInfinity: '無限大',
|
|
93
|
+
mathAlpha: 'アルファ',
|
|
94
|
+
mathTheta: 'シータ',
|
|
95
|
+
mathPi: 'パイ',
|
|
96
|
+
mathArrow: '矢印',
|
|
97
|
+
mathCdots: '三点リーダー',
|
|
98
|
+
mathConfirmHint: '⌘/Ctrl + Enter で確定',
|
|
99
|
+
mathPromptDisplay: '数式 (LaTeX)',
|
|
100
|
+
mathPromptInline: 'インライン数式 (LaTeX)',
|
|
101
|
+
mathEmpty: '数式を入力',
|
|
102
|
+
placeholder: "'/' でコマンドを入力...",
|
|
103
|
+
uploading: 'アップロード中...',
|
|
104
|
+
imageUploadFailed: '画像のアップロードに失敗しました。',
|
|
105
|
+
pdfUploadFailed: 'PDFのアップロードに失敗しました。',
|
|
106
|
+
fileUploadFailed: 'ファイルのアップロードに失敗しました。',
|
|
107
|
+
characterCount: '{chars} 文字 · {words} 語',
|
|
108
|
+
addImage: '画像を追加',
|
|
109
|
+
uploadFile: 'ファイルをアップロード',
|
|
110
|
+
imageLinkPlaceholder: '画像リンクを貼り付け',
|
|
111
|
+
imageEmbed: '画像を埋め込む',
|
|
112
|
+
imageLinkHint: 'ウェブ上のあらゆる画像に対応',
|
|
113
|
+
addFile: 'ファイルを追加',
|
|
114
|
+
chooseFile: 'ファイルを選択',
|
|
115
|
+
fileLinkPlaceholder: 'ファイルリンクを貼り付け',
|
|
116
|
+
fileEmbed: 'ファイルを埋め込む',
|
|
117
|
+
imageUrlTitle: '画像URLを入力',
|
|
118
|
+
tableEdit: '表を編集',
|
|
119
|
+
rowAddAbove: '上に行を追加',
|
|
120
|
+
rowAddBelow: '下に行を追加',
|
|
121
|
+
colAddLeft: '左に列を追加',
|
|
122
|
+
colAddRight: '右に列を追加',
|
|
123
|
+
headerRowToggle: 'ヘッダー行を切り替え',
|
|
124
|
+
headerColToggle: 'ヘッダー列を切り替え',
|
|
125
|
+
cellMerge: 'セルを結合',
|
|
126
|
+
cellSplit: 'セルを分割',
|
|
127
|
+
lineSpacing: '行間',
|
|
128
|
+
spacingNarrow: '狭い',
|
|
129
|
+
spacingNormal: '標準',
|
|
130
|
+
spacingWide: '広い',
|
|
131
|
+
widthEqual: '幅を均等に',
|
|
132
|
+
cellBackground: 'セルの背景色',
|
|
133
|
+
background: '背景色',
|
|
134
|
+
rowDelete: '行を削除',
|
|
135
|
+
colDelete: '列を削除',
|
|
136
|
+
tableDelete: '表を削除',
|
|
137
|
+
bgNone: 'なし',
|
|
138
|
+
bgGray: 'ライトグレー',
|
|
139
|
+
bgBlue: 'ライトブルー',
|
|
140
|
+
bgGreen: 'ライトグリーン',
|
|
141
|
+
bgYellow: 'ライトイエロー',
|
|
142
|
+
bgOrange: 'ライトオレンジ',
|
|
143
|
+
bgRed: 'ライトレッド',
|
|
144
|
+
bgPurple: 'ライトパープル',
|
|
145
|
+
bgPink: 'ライトピンク',
|
|
146
|
+
alignLeftShort: '左',
|
|
147
|
+
alignCenterShort: '中央',
|
|
148
|
+
alignRightShort: '右',
|
|
149
|
+
mediaToolbar: 'メディアのサイズと配置',
|
|
150
|
+
imageResizeWidth: '画像の幅を調整',
|
|
151
|
+
videoResizeWidth: '動画の幅を調整',
|
|
152
|
+
videoResizeHeight: '動画の高さを調整',
|
|
153
|
+
lectureResizeHeight: '講義動画の高さを調整',
|
|
154
|
+
cardResizeHeight: 'カードの高さを調整',
|
|
155
|
+
pdfResizeWidth: 'PDFの幅を調整',
|
|
156
|
+
cardTitlePlaceholder: 'カードタイトル',
|
|
157
|
+
cardChangeBackground: '背景を変更',
|
|
158
|
+
cardBackgroundPrompt: 'カード背景(CSS background 値)',
|
|
159
|
+
tabDefaultTitle: 'タブ {n}',
|
|
160
|
+
tabRenameTip: 'ダブルクリックで名前を変更',
|
|
161
|
+
tabDelete: '{title} を削除',
|
|
162
|
+
tabAdd: 'タブを追加',
|
|
163
|
+
videoCannotEmbed: 'このブラウザでは動画をここに表示できません',
|
|
164
|
+
openInNewTab: '新しいタブで開く',
|
|
165
|
+
lectureVideo: '講義動画',
|
|
166
|
+
lectureEmptySrc: '動画アドレスが空です',
|
|
167
|
+
legacyYoutube: 'YouTube動画',
|
|
168
|
+
legacyIframe: '埋め込み',
|
|
169
|
+
legacyColumns: '段組み',
|
|
170
|
+
legacyNotice: '{kind}(旧形式・編集不可)',
|
|
171
|
+
pdfViewerAria: 'PDF文書 — 左右キーでページ送り',
|
|
172
|
+
pdfZoom50: '原寸の50% — サムネイル。文字は読みにくい',
|
|
173
|
+
pdfZoom75: '原寸の75% — 図・表の確認用',
|
|
174
|
+
pdfZoom100: '原寸のまま (100%)',
|
|
175
|
+
pdfZoom150: '原寸の150% — 読みやすいサイズ',
|
|
176
|
+
pdfZoomOther: '原寸の{label}',
|
|
177
|
+
pdfFitWidth: '幅に合わせる — 本文幅いっぱいに表示',
|
|
178
|
+
pdfFitPage: '画面に合わせる — 1ページが画面に収まるサイズ',
|
|
179
|
+
download: 'ダウンロード',
|
|
180
|
+
pdfOpenNewTab: '新しいタブで開く',
|
|
181
|
+
pdfOpenNewTabTip: '新しいタブで開く — ブラウザビューアで大きく表示',
|
|
182
|
+
pdfLoading: 'PDFを読み込み中...',
|
|
183
|
+
pdfPrevPage: '前のページ',
|
|
184
|
+
pdfNextPage: '次のページ',
|
|
185
|
+
pdfGoToPage: 'ページ番号へ移動',
|
|
186
|
+
pdfPageNumber: 'ページ番号',
|
|
187
|
+
pdfLoadFailed: 'PDFを読み込めませんでした。',
|
|
188
|
+
fileSizeLoading: '読み込み中...',
|
|
189
|
+
detailsExpand: '詳細を展開',
|
|
190
|
+
detailsCollapse: '詳細を折りたたむ'
|
|
191
|
+
};
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
export declare const ko: {
|
|
2
|
+
close: string;
|
|
3
|
+
cancel: string;
|
|
4
|
+
confirm: string;
|
|
5
|
+
delete: string;
|
|
6
|
+
insert: string;
|
|
7
|
+
upload: string;
|
|
8
|
+
link: string;
|
|
9
|
+
noResult: string;
|
|
10
|
+
preview: string;
|
|
11
|
+
paragraph: string;
|
|
12
|
+
heading1: string;
|
|
13
|
+
heading2: string;
|
|
14
|
+
heading3: string;
|
|
15
|
+
toggleHeading: string;
|
|
16
|
+
bulletList: string;
|
|
17
|
+
orderedList: string;
|
|
18
|
+
taskList: string;
|
|
19
|
+
blockquote: string;
|
|
20
|
+
toggle: string;
|
|
21
|
+
code: string;
|
|
22
|
+
codeBlock: string;
|
|
23
|
+
math: string;
|
|
24
|
+
mathBlock: string;
|
|
25
|
+
mathInline: string;
|
|
26
|
+
table: string;
|
|
27
|
+
table3x3: string;
|
|
28
|
+
divider: string;
|
|
29
|
+
columns2: string;
|
|
30
|
+
columns3: string;
|
|
31
|
+
tabs: string;
|
|
32
|
+
card: string;
|
|
33
|
+
image: string;
|
|
34
|
+
video: string;
|
|
35
|
+
mbusVideo: string;
|
|
36
|
+
file: string;
|
|
37
|
+
fileAttach: string;
|
|
38
|
+
pdfFile: string;
|
|
39
|
+
undo: string;
|
|
40
|
+
redo: string;
|
|
41
|
+
blockType: string;
|
|
42
|
+
bold: string;
|
|
43
|
+
italic: string;
|
|
44
|
+
underline: string;
|
|
45
|
+
strike: string;
|
|
46
|
+
alignLeft: string;
|
|
47
|
+
alignCenter: string;
|
|
48
|
+
alignRight: string;
|
|
49
|
+
highlight: string;
|
|
50
|
+
textColor: string;
|
|
51
|
+
customColor: string;
|
|
52
|
+
colorDefault: string;
|
|
53
|
+
colorBlack: string;
|
|
54
|
+
colorGray: string;
|
|
55
|
+
colorRed: string;
|
|
56
|
+
colorOrange: string;
|
|
57
|
+
colorYellow: string;
|
|
58
|
+
colorGreen: string;
|
|
59
|
+
colorBlue: string;
|
|
60
|
+
colorPurple: string;
|
|
61
|
+
videoUrl: string;
|
|
62
|
+
mbusVideoUrl: string;
|
|
63
|
+
promptLinkUrl: string;
|
|
64
|
+
promptImageUrl: string;
|
|
65
|
+
promptVideoUrl: string;
|
|
66
|
+
promptMbusUrl: string;
|
|
67
|
+
sectionFrequent: string;
|
|
68
|
+
sectionBasic: string;
|
|
69
|
+
sectionList: string;
|
|
70
|
+
sectionBlock: string;
|
|
71
|
+
sectionLayout: string;
|
|
72
|
+
sectionMedia: string;
|
|
73
|
+
emptyLineTools: string;
|
|
74
|
+
floatingHint: string;
|
|
75
|
+
floatingHintOr: string;
|
|
76
|
+
insertMath: string;
|
|
77
|
+
insertCodeBlock: string;
|
|
78
|
+
mathSuperscript: string;
|
|
79
|
+
mathSubscript: string;
|
|
80
|
+
mathFraction: string;
|
|
81
|
+
mathSqrt: string;
|
|
82
|
+
mathSum: string;
|
|
83
|
+
mathProduct: string;
|
|
84
|
+
mathLog: string;
|
|
85
|
+
mathBigO: string;
|
|
86
|
+
mathLe: string;
|
|
87
|
+
mathGe: string;
|
|
88
|
+
mathNe: string;
|
|
89
|
+
mathTimes: string;
|
|
90
|
+
mathDivide: string;
|
|
91
|
+
mathIn: string;
|
|
92
|
+
mathInfinity: string;
|
|
93
|
+
mathAlpha: string;
|
|
94
|
+
mathTheta: string;
|
|
95
|
+
mathPi: string;
|
|
96
|
+
mathArrow: string;
|
|
97
|
+
mathCdots: string;
|
|
98
|
+
mathConfirmHint: string;
|
|
99
|
+
mathPromptDisplay: string;
|
|
100
|
+
mathPromptInline: string;
|
|
101
|
+
mathEmpty: string;
|
|
102
|
+
placeholder: string;
|
|
103
|
+
uploading: string;
|
|
104
|
+
imageUploadFailed: string;
|
|
105
|
+
pdfUploadFailed: string;
|
|
106
|
+
fileUploadFailed: string;
|
|
107
|
+
characterCount: string;
|
|
108
|
+
addImage: string;
|
|
109
|
+
uploadFile: string;
|
|
110
|
+
imageLinkPlaceholder: string;
|
|
111
|
+
imageEmbed: string;
|
|
112
|
+
imageLinkHint: string;
|
|
113
|
+
addFile: string;
|
|
114
|
+
chooseFile: string;
|
|
115
|
+
fileLinkPlaceholder: string;
|
|
116
|
+
fileEmbed: string;
|
|
117
|
+
imageUrlTitle: string;
|
|
118
|
+
tableEdit: string;
|
|
119
|
+
rowAddAbove: string;
|
|
120
|
+
rowAddBelow: string;
|
|
121
|
+
colAddLeft: string;
|
|
122
|
+
colAddRight: string;
|
|
123
|
+
headerRowToggle: string;
|
|
124
|
+
headerColToggle: string;
|
|
125
|
+
cellMerge: string;
|
|
126
|
+
cellSplit: string;
|
|
127
|
+
lineSpacing: string;
|
|
128
|
+
spacingNarrow: string;
|
|
129
|
+
spacingNormal: string;
|
|
130
|
+
spacingWide: string;
|
|
131
|
+
widthEqual: string;
|
|
132
|
+
cellBackground: string;
|
|
133
|
+
background: string;
|
|
134
|
+
rowDelete: string;
|
|
135
|
+
colDelete: string;
|
|
136
|
+
tableDelete: string;
|
|
137
|
+
bgNone: string;
|
|
138
|
+
bgGray: string;
|
|
139
|
+
bgBlue: string;
|
|
140
|
+
bgGreen: string;
|
|
141
|
+
bgYellow: string;
|
|
142
|
+
bgOrange: string;
|
|
143
|
+
bgRed: string;
|
|
144
|
+
bgPurple: string;
|
|
145
|
+
bgPink: string;
|
|
146
|
+
alignLeftShort: string;
|
|
147
|
+
alignCenterShort: string;
|
|
148
|
+
alignRightShort: string;
|
|
149
|
+
mediaToolbar: string;
|
|
150
|
+
imageResizeWidth: string;
|
|
151
|
+
videoResizeWidth: string;
|
|
152
|
+
videoResizeHeight: string;
|
|
153
|
+
lectureResizeHeight: string;
|
|
154
|
+
cardResizeHeight: string;
|
|
155
|
+
pdfResizeWidth: string;
|
|
156
|
+
cardTitlePlaceholder: string;
|
|
157
|
+
cardChangeBackground: string;
|
|
158
|
+
cardBackgroundPrompt: string;
|
|
159
|
+
tabDefaultTitle: string;
|
|
160
|
+
tabRenameTip: string;
|
|
161
|
+
tabDelete: string;
|
|
162
|
+
tabAdd: string;
|
|
163
|
+
videoCannotEmbed: string;
|
|
164
|
+
openInNewTab: string;
|
|
165
|
+
lectureVideo: string;
|
|
166
|
+
lectureEmptySrc: string;
|
|
167
|
+
legacyYoutube: string;
|
|
168
|
+
legacyIframe: string;
|
|
169
|
+
legacyColumns: string;
|
|
170
|
+
legacyNotice: string;
|
|
171
|
+
pdfViewerAria: string;
|
|
172
|
+
pdfZoom50: string;
|
|
173
|
+
pdfZoom75: string;
|
|
174
|
+
pdfZoom100: string;
|
|
175
|
+
pdfZoom150: string;
|
|
176
|
+
pdfZoomOther: string;
|
|
177
|
+
pdfFitWidth: string;
|
|
178
|
+
pdfFitPage: string;
|
|
179
|
+
download: string;
|
|
180
|
+
pdfOpenNewTab: string;
|
|
181
|
+
pdfOpenNewTabTip: string;
|
|
182
|
+
pdfLoading: string;
|
|
183
|
+
pdfPrevPage: string;
|
|
184
|
+
pdfNextPage: string;
|
|
185
|
+
pdfGoToPage: string;
|
|
186
|
+
pdfPageNumber: string;
|
|
187
|
+
pdfLoadFailed: string;
|
|
188
|
+
fileSizeLoading: string;
|
|
189
|
+
detailsExpand: string;
|
|
190
|
+
detailsCollapse: string;
|
|
191
|
+
};
|
|
192
|
+
/** 메시지 사전 형태 — ko 가 키 목록의 기준이다. 다른 로케일은 이 타입으로 완전성을 강제한다. */
|
|
193
|
+
export type EditorMessages = {
|
|
194
|
+
[K in keyof typeof ko]: string;
|
|
195
|
+
};
|
|
196
|
+
/** 메시지 키. */
|
|
197
|
+
export type EditorMessageKey = keyof typeof ko;
|
|
198
|
+
//# sourceMappingURL=ko.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ko.d.ts","sourceRoot":"","sources":["../../src/i18n/ko.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiOd,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,cAAc,GAAG;KAAG,CAAC,IAAI,MAAM,OAAO,EAAE,GAAG,MAAM;CAAE,CAAC;AAChE,aAAa;AACb,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,EAAE,CAAC"}
|