sunny-html-editor 1.2.2 → 1.2.4
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 +4 -128
- package/html-editor.js +4 -5
- package/package.json +2 -15
package/README.md
CHANGED
|
@@ -1,138 +1,14 @@
|
|
|
1
1
|
# Sunny HTML Editor
|
|
2
2
|
|
|
3
|
-
軽量WYSIWYG
|
|
4
|
-
|
|
5
|
-
## 特徴
|
|
6
|
-
|
|
7
|
-
- **自己完結型** - ツールバー・コンテキストメニューを自動生成
|
|
8
|
-
- **Markdown変換** - `data-markdown`属性でMDテキストを自動変換
|
|
9
|
-
- **遅延読み込み** - Excel/PDF出力用ライブラリは使用時に自動読み込み
|
|
10
|
-
- **WYSIWYG編集** - 見たまま編集、右クリックで要素追加
|
|
11
|
-
- **キーボード操作** - ↑↓で要素間移動、Shift/Ctrl+Enterで項目追加
|
|
12
|
-
- **多彩なエクスポート** - Markdown、HTML、Excel、PDF
|
|
13
|
-
- **サイドバーナビ** - 目次自動生成
|
|
14
|
-
|
|
15
|
-
## インストール
|
|
16
|
-
|
|
17
|
-
### CDN(推奨)
|
|
18
|
-
|
|
19
|
-
```html
|
|
20
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sunny-html-editor/html-editor.css">
|
|
21
|
-
<script src="https://cdn.jsdelivr.net/npm/sunny-html-editor/html-editor.js"></script>
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### npm
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
npm install sunny-html-editor
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## 使い方
|
|
31
|
-
|
|
32
|
-
### 基本(HTMLコンテンツ)
|
|
33
|
-
|
|
34
|
-
`id="editorContainer"` を持つコンテナを用意するだけ。ツールバーとコンテキストメニューは自動生成されます。
|
|
35
|
-
|
|
36
|
-
```html
|
|
37
|
-
<!DOCTYPE html>
|
|
38
|
-
<html lang="ja">
|
|
39
|
-
<head>
|
|
40
|
-
<meta charset="UTF-8">
|
|
41
|
-
<title>ドキュメントタイトル</title>
|
|
42
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sunny-html-editor/html-editor.css">
|
|
43
|
-
</head>
|
|
44
|
-
<body>
|
|
45
|
-
<div class="layout">
|
|
46
|
-
<main class="main">
|
|
47
|
-
<div class="container" id="editorContainer">
|
|
48
|
-
<h1>タイトル</h1>
|
|
49
|
-
<h2 id="section1">見出し</h2>
|
|
50
|
-
<p>本文...</p>
|
|
51
|
-
</div>
|
|
52
|
-
</main>
|
|
53
|
-
</div>
|
|
54
|
-
<script src="https://cdn.jsdelivr.net/npm/sunny-html-editor/html-editor.js"></script>
|
|
55
|
-
</body>
|
|
56
|
-
</html>
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Markdown変換モード
|
|
60
|
-
|
|
61
|
-
`data-markdown`属性にURLエンコードしたMarkdownテキストを設定すると、自動でHTMLに変換されます。
|
|
62
|
-
|
|
63
|
-
```html
|
|
64
|
-
<div class="container" id="editorContainer" data-markdown="URLエンコードされたMDテキスト"></div>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
JavaScript側で自動的に:
|
|
68
|
-
1. `data-markdown`属性をデコード
|
|
69
|
-
2. Markdown → HTML変換
|
|
70
|
-
3. コンテナ内にHTMLを生成
|
|
71
|
-
4. `data-markdown`属性を削除(HTML保存時に残らないように)
|
|
72
|
-
|
|
73
|
-
## 外部ライブラリ
|
|
74
|
-
|
|
75
|
-
Excel/PDF出力に必要なライブラリは**使用時に自動で読み込まれます**。事前の読み込みは不要です。
|
|
76
|
-
|
|
77
|
-
| ライブラリ | 用途 |
|
|
78
|
-
|-----------|------|
|
|
79
|
-
| ExcelJS | Excel出力 |
|
|
80
|
-
| jsPDF | PDF出力 |
|
|
81
|
-
| html2canvas | PDF出力(HTML→Canvas変換) |
|
|
82
|
-
|
|
83
|
-
## キーボードショートカット
|
|
84
|
-
|
|
85
|
-
| キー | 動作 |
|
|
86
|
-
|------|------|
|
|
87
|
-
| `Ctrl+E` | 編集モード切替 |
|
|
88
|
-
| `Ctrl+B` | サイドバー表示/非表示 |
|
|
89
|
-
| `Ctrl+M` | Markdownコピー |
|
|
90
|
-
| `Enter` | 編集確定 |
|
|
91
|
-
| `Shift+Enter` / `Ctrl+Enter` | li内: 新しい項目追加、その他: 改行 |
|
|
92
|
-
| `↓` | 次の要素へ移動(最終行の場合) |
|
|
93
|
-
| `↑` | 前の要素へ移動(先頭行の場合) |
|
|
94
|
-
| `Backspace` | 空のliで押すと削除して前へ |
|
|
95
|
-
| `Escape` | コンテキストメニューを閉じる |
|
|
96
|
-
|
|
97
|
-
## 右クリックメニュー
|
|
98
|
-
|
|
99
|
-
編集モード中に要素を右クリックすると、コンテキストメニューが表示されます。
|
|
100
|
-
|
|
101
|
-
- **見出し追加** - 大見出し / 中見出し / 小見出し
|
|
102
|
-
- **要素追加** - テーブル / 本文 / 箇条書き / 番号リスト / コードブロック / 引用
|
|
103
|
-
- **削除** - 各要素の削除
|
|
104
|
-
|
|
105
|
-
テーブル上では行/列の追加・削除も可能。
|
|
106
|
-
|
|
107
|
-
## ツールバーボタン
|
|
108
|
-
|
|
109
|
-
| ボタン | 機能 |
|
|
110
|
-
|--------|------|
|
|
111
|
-
| ↔️ | サイドバー表示/非表示 |
|
|
112
|
-
| 📝 | 編集モード切替 |
|
|
113
|
-
| Ⓜ️ | Markdownコピー |
|
|
114
|
-
| 🌐 | HTMLコピー |
|
|
115
|
-
| 💾 | HTML保存(ダウンロード) |
|
|
116
|
-
| 📊 | Excel出力 |
|
|
117
|
-
| 📕 | PDF出力 |
|
|
3
|
+
軽量WYSIWYGエディタ。Markdown変換対応。
|
|
118
4
|
|
|
119
5
|
## バージョン履歴
|
|
120
6
|
|
|
7
|
+
- **1.2.4** - h1改行を最初の「-」「_」のみに限定
|
|
8
|
+
- **1.2.3** - サイドバーh1の改行(br)維持を修正
|
|
121
9
|
- **1.2.2** - パッケージ修正
|
|
122
10
|
- **1.2.1** - h1の「_」区切り改行対応
|
|
123
|
-
- **1.2.0** - Markdown
|
|
124
|
-
- **1.1.0** - ツールバー・コンテキストメニュー自動生成、外部ライブラリ遅延読み込み
|
|
125
|
-
- **1.0.3** - nullチェック強化
|
|
126
|
-
- **1.0.2** - DOMContentLoaded自動初期化
|
|
127
|
-
- **1.0.1** - メディアクエリ削除
|
|
128
|
-
- **1.0.0** - 初回リリース
|
|
129
|
-
|
|
130
|
-
## ブラウザ対応
|
|
131
|
-
|
|
132
|
-
- Chrome(推奨)
|
|
133
|
-
- Firefox
|
|
134
|
-
- Safari
|
|
135
|
-
- Edge
|
|
11
|
+
- **1.2.0** - Markdown変換機能追加
|
|
136
12
|
|
|
137
13
|
## ライセンス
|
|
138
14
|
|
package/html-editor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sunny HTML Editor - 軽量WYSIWYGエディタ
|
|
3
|
-
* @version 1.2.
|
|
3
|
+
* @version 1.2.4
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// ========== HTML生成関数 ==========
|
|
@@ -190,7 +190,7 @@ function convertMarkdownToHtml(md) {
|
|
|
190
190
|
if (/^#\s+/.test(line) && !/^##/.test(line)) {
|
|
191
191
|
line = line.replace(/^#\s+(.+)$/, function(match, title) {
|
|
192
192
|
docTitle = title;
|
|
193
|
-
var displayTitle = title.replace(/\s*[-_]\s
|
|
193
|
+
var displayTitle = title.replace(/\s*[-_]\s*/, '<br>');
|
|
194
194
|
return '<h1>' + displayTitle + '</h1>';
|
|
195
195
|
});
|
|
196
196
|
}
|
|
@@ -832,8 +832,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
832
832
|
// サイドバーHTMLを動的に生成
|
|
833
833
|
function generateSidebarHtml() {
|
|
834
834
|
var h1 = container.querySelector('h1');
|
|
835
|
-
var
|
|
836
|
-
var h1Html = h1Text.replace(/\s*[-_]\s*/g, '<br>');
|
|
835
|
+
var h1Html = h1 ? h1.innerHTML : 'Document';
|
|
837
836
|
|
|
838
837
|
var navItems = '';
|
|
839
838
|
var headings = container.querySelectorAll('h2[id], h3[id]');
|
|
@@ -959,7 +958,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
959
958
|
if (sidebarH1) {
|
|
960
959
|
var h1Html = mainH1.innerHTML;
|
|
961
960
|
if (!/<br[\s\/]*>/i.test(h1Html)) {
|
|
962
|
-
h1Html = mainH1.textContent.replace(/\s*[-_]\s
|
|
961
|
+
h1Html = mainH1.textContent.replace(/\s*[-_]\s*/, '<br>');
|
|
963
962
|
}
|
|
964
963
|
sidebarH1.innerHTML = h1Html;
|
|
965
964
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sunny-html-editor",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "軽量WYSIWYGエディタ - 既存のHTMLに編集機能を後付けで追加、Markdown変換対応",
|
|
5
5
|
"main": "html-editor.js",
|
|
6
6
|
"files": [
|
|
@@ -16,18 +16,5 @@
|
|
|
16
16
|
"markdown"
|
|
17
17
|
],
|
|
18
18
|
"author": "",
|
|
19
|
-
"license": "MIT"
|
|
20
|
-
"optionalDependencies": {
|
|
21
|
-
"exceljs": "^4.3.0",
|
|
22
|
-
"jspdf": "^2.5.1",
|
|
23
|
-
"html2canvas": "^1.4.1"
|
|
24
|
-
},
|
|
25
|
-
"repository": {
|
|
26
|
-
"type": "git",
|
|
27
|
-
"url": ""
|
|
28
|
-
},
|
|
29
|
-
"bugs": {
|
|
30
|
-
"url": ""
|
|
31
|
-
},
|
|
32
|
-
"homepage": ""
|
|
19
|
+
"license": "MIT"
|
|
33
20
|
}
|