This repository was archived by the owner on Sep 14, 2026. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathReadme.html
More file actions
642 lines (615 loc) · 83.6 KB
/
Copy pathReadme.html
File metadata and controls
642 lines (615 loc) · 83.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
<!doctype html>
<html>
<!--
* KanTanMarkdown
* Copyright (c) 2016 tatesuke
* Released under the MIT license
* https://github.com/tatesuke/KanTanMarkdown/blob/master/LICENSE
--><head>
<meta charset="utf-8">
<style>#previewer:after,nav:after{content:".";display:block;font-size:0;clear:both;visibility:hidden}body{margin:0;padding:0;position:relative}body.onDragover{border:5px dashed #99cde1}nav{margint:0}nav #leftNav{float:left}nav #rightNav{float:right}nav:after{height:0}#attach{width:100%;border-top:1px solid gray;border-bottom:1px solid gray;display:none}#attach #attachForm{box-sizing:border-box;width:100%;height:100%;display:none}#attach #attachForm input[type=file]{width:100%}#attach #filer{box-sizing:border-box;width:100%;height:150px;overflow:auto;display:none}#attach #filer input{width:300px}#attach #pasteArea{box-sizing:border-box;width:100%;border:1px solid gray;text-align:center}#attach #attachToggleButton,#attach #previewToggleButton{width:50%}#wrapper{overflow:auto}#wrapper #editorTabWrapper{box-sizing:border-box;width:50%;height:100%;float:left;border-top:none;display:none;margin:0;padding:0}#wrapper #editorTabWrapper #editorTabContents{box-sizing:border-box;width:100%;height:calc(100% - 20px);marign:0;padding:0}#wrapper #editorTabWrapper #editorTabContents #cssEditor,#wrapper #editorTabWrapper #editorTabContents #editor{box-sizing:border-box;resize:none;width:100%;height:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;margin:0}#wrapper #editorTabWrapper #editorTabContents #cssEditor{display:none}#wrapper #editorTabWrapper #editorTabs{box-sizing:border-box;border:0;width:100%;height:20px;margin:0;padding:0}#wrapper #editorTabWrapper #editorTabs li{box-sizing:border-box;list-style:none;float:left;width:50%;height:100%;text-align:center;margin-left:0;border-top:0;border-right:1px solid gray;border-bottom:1px solid gray;border-left:1px solid gray;border-radius:0 0 10px 10px}#importDialog,.popupMenu{border:1px solid gray;position:absolute}#wrapper #editorTabWrapper #editorTabs li a{display:block;width:100%;height:100%;text-decoration:none;color:#000}#previewer,.previewMode #previewer{height:auto;overflow:auto}#wrapper #editorTabWrapper #editorTabs li.selected{background-color:#7a9cd3}#wrapper #editorTabWrapper.fullWidth{width:100%}#previewer{box-sizing:border-box;margin:0 auto}.editMode #previewer{width:50%;height:100%}#previewer:empty{border:0}#previewer:focus{outline:0}#previewer:after{height:0}.popupMenu{display:none;margin:0;padding:0;background-color:#fff}.popupMenu>ul{list-style-type:none;margin:0;padding:0}.popupMenu>ul>li{margin:0}#onlineMenu>ul>li>a{box-sizing:border-box;text-decoration:none;display:block;margin:0;padding:10px;width:100%;height:100%;color:#000}#onlineMenu>ul>li>a:hover{background-color:#99cde1}#importDialog{width:440px;padding:20px;display:none;background-color:#fff}#importDialog ul.buttonArea{list-style-type:none;margin:0;padding:0}#importDialog ul.buttonArea li{display:block;float:left}#importDialog ul.buttonArea li button{height:35px;padding-left:20px;padding-right:20px}.initialState #editorTabWrapper{display:block!important;width:100%!important}.initialState #editor{margin-top:5px!important;font-size:large!important;height:90vh!important}.initialState #attach,.initialState #editorTabs,.initialState #previewer,.initialState nav{display:none!important}@media print{nav{display:none}#previewer{border:0!important;margin:0!important;padding:0!important}}#drawArea,#drawArea #canvasWrapper #baseCanvas,#drawArea #canvasWrapper #mainCanvas,#drawArea #canvasWrapper #workCanvas{position:absolute}#drawArea{top:0;left:0;width:100vw;height:100vh;background-color:gray;display:none}#drawArea #canvasWrapper{box-sizing:border-box;float:left;width:calc(100% - 200px);height:100%;overflow:auto;position:relative;padding:5px 15px 15px 5px}#drawArea .color3,#drawArea .color9{box-sizing:border-box;float:left;border:1px solid #000;margin:0;padding:0}#drawArea #drawControllWrapper{position:relative;background-color:#fff;float:left;width:200px;height:100%}#drawArea div{width:100%}#drawArea button{display:block;width:100%;border:1px solid #000;background-color:#fff}#drawArea button.selected{background-color:#7a9cd3}#drawArea .float50{box-sizing:border-box;float:left;width:50%}#drawArea .float25{box-sizing:border-box;float:left;width:25%}#drawArea .color9{width:11.1%}#drawArea .color3{width:33.3%}#drawArea .color[name=c_ff0000]{background-color:red}#drawArea .color[name=c_34A853]{background-color:#34A853}#drawArea .color[name=c_000000]{background-color:#000}#drawArea .color[name=c_clear],#drawArea .color[name=c_ffffff]{background-color:#fff}#drawArea .clearfix:after{content:".";display:block;height:0;font-size:0;clear:both;visibility:hidden}</style>
<style id="previewerStyle"></style>
<title>AzurLane Helper II</title>
<style data-cbh-dummy="dummy" type="text/css"></style><style data-cbh-dummy="dummy" type="text/css">*[data-cbh-blocked]{display:none !important;}
</style></head>
<body class="previewMode initialState">
<nav>
<div id="leftNav">
<button id="onlineMenuButton">オンラインメニュー</button><button id="settingMenuButton">設定</button>
</div>
<div id="rightNav">
<span id="messageArea"></span>
<button id="syncButton">プレビュー(F5)</button><button id="headingSyncButton">見出し同期(F2)</button><button id="toggleButton">編集/閲覧(ESC)</button><button id="saveButton">保存(Ctrl+S)</button>
</div>
</nav>
<div id="attach">
<form id="attachForm"><input type="file" id="attachButton" multiple=""></form>
<div id="filer">
<ul id="fileList">
</ul>
<div id="pasteArea" contenteditable="true">ここをクリックしてCtrl+V(Cmd+V)するとクリップボードの画像を添付できます。</div>
</div>
<button id="attachToggleButton">添付ファイルを表示(Alt+↓)</button><button id="previewToggleButton">プレビューを隠す(Alt+→)</button>
</div>
<div id="wrapper">
<div id="editorTabWrapper">
<noscript>このファイルはJavaScriptを有効にするとより正確に表示できます。</noscript>
<div id="editorTabContents">
<textarea id="editor"># AzurLane Helper II
The AzurLane Helper II by C#
# 概要
- 当ツールは、スマートフォン用オンラインゲーム『[アズールレーン](http://www.azurlane.jp)』のプレイを支援するものです
- パソコン上に、『アズールレーン』の画面が表示されている必要があります。別途Androidエミュレータ等をご用意ください
- 動作環境:.NET Framework 4.6.2以上がインストールされているWindows OS
- 開発環境:Microsoft Visual Studio Community 2017
- 動作確認OS:Windows 10(64bit)
- 動作確認エミュレータ:Nox App Player
## 警告
- 前述の動作確認環境以外での動作は確認していません
- 当ツールにゲーム画面を認識させるため、次の条件を確認してください
- エミュレーター画面の縁・内部に他のウィンドウが掛かってない
- エミュレーター画面の縁がディスプレイの境界上に掛かっていない
- エミュレーターで表示するスマホの画面サイズが1280x720以上
## アップデート方法
- まず、AzLH.exeと同じフォルダにある、次のファイル・フォルダをバックアップします
- 「settings.json」……ソフトウェアの設定を保存しています
- 「supply.db」……資材データが記録されています
- 「picフォルダ」……撮影したスクリーンショットを保存します
- 「debugフォルダ」……デバッグ用に使用します
- 次に、ダウンロードしたzipを展開し、上記ファイルを書き戻します
- そしてAzLH.exeを起動し、設定や資材データが反映されているかを確認します
## 使い方
[help.html](./help/help.html) を参照してください。
## 注意書き
- このソフトで生じたいかなる損害についても責任を負いません
- このソフトは [MIT License](https://ja.osdn.net/projects/opensource/wiki/licenses%2FMIT_license) です
## 更新履歴
[history.html](./help/history.html) を参照してください。
## 謝辞
本ソフトウェアを作成するために様々な技術・ライブラリ・ソフトウェアを使用しました。特に以下の方々に感謝いたします。
- ゲーム画面の位置を検出する処理に、 [kanahiron](https://github.com/kanahiron/) さんが考案したルーチンを採用しました
- Readmeやヘルプファイルなどの表示に、[tatesuke](https://github.com/tatesuke) さんの「 [かんたんMarkdown](https://github.com/tatesuke/KanTanMarkdown) 」を使用しました
## 使用したライブラリ
- [Prism.Unity](https://www.nuget.org/packages/Prism.Unity/)
- MVVMによるソフトウェア構築に使用
- [ReactiveProperty](https://www.nuget.org/packages/ReactiveProperty/4.0.0-pre4)
- 同上
- [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/)
- JSONファイルの読み書きに使用
- [System.Data.SQLite.Core](https://www.nuget.org/packages/System.Data.SQLite.Core/)
- 資材データベースの読み書きに使用
- [OxyPlot.Wpf](https://www.nuget.org/packages/OxyPlot.Wpf/)
- 資材量のグラフ表示に使用
</textarea>
<textarea id="cssEditor">/*
* CSSの設定を間違えると、最悪の場合
* 内容を編集できなくなるので注意してください。
* 標準のCSSに戻したいときはCSSを引き継がずに強制アップデートしてください
* また、CSSの変更はプレビューしないと反映しません。
*/
.previewMode #previewer {
width: 980px;
}
#previewer {
word-wrap: break-word;
border: 1px solid gray;
font-family: Helvetica, arial, sans-serif;
font-size: 14px;
line-height: 1.6;
background-color: white;
padding: 45px;
}
#previewer > *:first-child {
margin-top: 0 !important;
}
#previewer > *:last-child {
margin-bottom: 0 !important;
}
a {
color: #4183C4;
}
a.absent {
color: #cc0000;
}
a.anchor {
display: block;
padding-left: 30px;
margin-left: -30px;
cursor: pointer;
position: absolute;
top: 0;
left: 0;
bottom: 0;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
cursor: text;
position: relative;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
background: url("para.png") no-repeat 10px center;
text-decoration: none;
}
h1 tt,
h1 code {
font-size: inherit;
}
h2 tt,
h2 code {
font-size: inherit;
}
h3 tt,
h3 code {
font-size: inherit;
}
h4 tt,
h4 code {
font-size: inherit;
}
h5 tt,
h5 code {
font-size: inherit;
}
h6 tt,
h6 code {
font-size: inherit;
}
h1 {
font-size: 28px;
color: black;
}
h2 {
font-size: 24px;
border-bottom: 1px solid #cccccc;
color: black;
}
h3 {
font-size: 18px;
}
h4 {
font-size: 16px;
}
h5 {
font-size: 14px;
}
h6 {
color: #777777;
font-size: 14px;
}
p,
blockquote,
ul,
ol,
dl,
li:first,
table,
pre {
margin: 15px 0;
}
hr {
background-color: #e7e7e7;
border: 0 none;
height: 4px;
padding: 0;
}
#previewer > h2:first-child {
margin-top: 0;
padding-top: 0;
}
#previewer > h1:first-child {
margin-top: 0;
padding-top: 0;
}
#previewer > h1:first-child + h2 {
margin-top: 0;
padding-top: 0;
}
#previewer > h3:first-child,
#previewer > h4:first-child,
#previewer > h5:first-child,
#previewer > h6:first-child {
margin-top: 0;
padding-top: 0;
}
a:first-child h1,
a:first-child h2,
a:first-child h3,
a:first-child h4,
a:first-child h5,
a:first-child h6 {
margin-top: 0;
padding-top: 0;
}
h1 p,
h2 p,
h3 p,
h4 p,
h5 p,
h6 p {
margin-top: 0;
}
li p.first {
display: inline-block;
}
ul,
ol {
padding-left: 30px;
}
ul:first-child,
ol:first-child {
margin-top: 0;
}
ul:last-child,
ol:last-child {
margin-bottom: 0;
}
dl {
padding: 0;
}
dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px;
}
dl dt:first-child {
padding: 0;
}
dl dt >:first-child {
margin-top: 0;
}
dl dt >:last-child {
margin-bottom: 0;
}
dl dd {
margin: 0 0 15px;
padding: 0 15px;
}
dl dd >:first-child {
margin-top: 0;
}
dl dd >:last-child {
margin-bottom: 0;
}
blockquote {
border-left: 4px solid #dddddd;
padding: 0 15px;
color: #777777;
}
blockquote >:first-child {
margin-top: 0;
}
blockquote >:last-child {
margin-bottom: 0;
}
table {
border-collapse: collapse;
padding: 0;
}
table tr {
border-top: 1px solid #cccccc;
background-color: white;
margin: 0;
padding: 0;
}
table tr:nth-child(2n) {
background-color: #f8f8f8;
}
table tr th {
font-weight: bold;
border: 1px solid #cccccc;
text-align: left;
margin: 0;
padding: 6px 13px;
}
table tr td {
border: 1px solid #cccccc;
text-align: left;
margin: 0;
padding: 6px 13px;
}
table tr th:first-child,
table tr td:first-child {
margin-top: 0;
}
table tr th:last-child,
table tr td:last-child {
margin-bottom: 0;
}
img {
max-width: 100%;
}
span.frame {
display: block;
overflow: hidden;
}
span.frame > span {
border: 1px solid #dddddd;
display: block;
float: left;
overflow: hidden;
margin: 13px 0 0;
padding: 7px;
width: auto;
}
span.frame span img {
display: block;
float: left;
}
span.frame span span {
clear: both;
color: #333333;
display: block;
padding: 5px 0 0;
}
span.align-center {
display: block;
overflow: hidden;
clear: both;
}
span.align-center > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: center;
}
span.align-center span img {
margin: 0 auto;
text-align: center;
}
span.align-right {
display: block;
overflow: hidden;
clear: both;
}
span.align-right > span {
display: block;
overflow: hidden;
margin: 13px 0 0;
text-align: right;
}
span.align-right span img {
margin: 0;
text-align: right;
}
span.float-left {
display: block;
margin-right: 13px;
overflow: hidden;
float: left;
}
span.float-left span {
margin: 13px 0 0;
}
span.float-right {
display: block;
margin-left: 13px;
overflow: hidden;
float: right;
}
span.float-right > span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: right;
}
code,
tt {
margin: 0 2px;
padding: 0 5px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
}
pre code {
margin: 0;
padding: 0;
white-space: pre-wrap;
border: none;
background: transparent;
}
.highlight pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}
pre {
background-color: #f8f8f8;
border: 1px solid #cccccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}
pre code,
pre tt {
background-color: transparent;
border: none;
}
.sequence,
.flow {
overflow: auto;
}
.info {
color: #3a87ad;
background-color: #d9edf7;
border: 1px solid #bce8f1;
font-size: 13px;
line-height: 19px;
padding: 6px 10px;
border-radius: 0px;
margin: 1em 0px 1em;
}
.warn {
color: #c09853;
background-color: #fcf8e3;
border: 1px solid #fbeed5;
font-size: 13px;
line-height: 19px;
padding: 6px 10px;
border-radius: 0px;
margin: 1em 0px 1em;
}
.alert {
color: #b94a48;
background-color: #f2dede;
border: 1px solid #eed3d7;
font-size: 13px;
line-height: 19px;
padding: 6px 10px;
border-radius: 0px;
margin: 1em 0px 1em;
}
@media print {
nav {
display: none;
}
#wrapper {
overflow: visible;
}
#previewer {
border: 0;
}
}
</textarea>
</div>
<ol id="editorTabs">
<li class="selected"><a href="#" id="markdownTab">Markdown</a></li>
<li><a href="#" id="cssTab">CSS</a></li>
</ol>
</div>
<div id="previewer" tabindex="-1"></div>
</div>
<div id="onlineMenu" class="popupMenu">
<ul>
<li><a href="http://tatesuke.github.io/KanTanMarkdown/ktm.html" target="_blank">新規作成</a></li>
<li><a href="http://tatesuke.github.io/KanTanMarkdown/syntax.html" id="helpButton" target="_blank">Markdown記法ヘルプ(F1)</a></li>
<li><a href="#" id="updateButton">最新版にアップデート(機能実験中)</a></li>
<li><a href="http://tatesuke.github.io/KanTanMarkdown/" target="_blank">かんたんMarkdown <span class="version">v1.20160412.01_lite</span></a></li>
</ul>
</div>
<div id="settingMenu" class="popupMenu">
<ul>
<li><input type="checkbox" id="settingAutoSync" checked="checked"><label for="settingAutoSync">自動プレビュー</label></li>
<li><input type="checkbox" id="settingExpandtab"><label for="settingExpandtab">タブキーでスペースを挿入</label></li>
<li><input type="checkbox" id="settingAutoCloseTab"><label for="settingAutoCloseTab">`/`を入力したときに閉じタグを自動挿入</label></li>
<li><input type="checkbox" id="settingInsertImgTagAfterAttach"><label for="settingInsertImgTagAfterAttach">画像を添付したらタグを挿入</label></li>
</ul>
</div>
<div id="importDialog">
<p id="importDialogMessage"></p>
<form>
<ul>
<li><input type="checkBox" checked="checked" id="importDialogAttach"><label for="importDialogAttach">添付ファイル(末尾に挿入)</label></li>
<li><input type="checkBox" checked="checked" id="importDialogMarkdown"><label for="importDialogMarkdown">Markdown(末尾に挿入)</label></li>
<li><input type="checkBox" id="importDialogCss"><label for="importDialogCss">CSS(上書き)</label></li>
</ul>
<ul class="buttonArea">
<li><button id="importDialogOkButton">OK</button></li>
<li><button id="importDialogCancelButton">キャンセル</button></li>
</ul>
</form>
</div>
<div id="drawArea">
<div id="canvasWrapper">
<canvas id="baseCanvas"></canvas>
<canvas id="mainCanvas"></canvas>
<canvas id="workCanvas"></canvas>
</div>
<div id="drawControllWrapper">
<dl>
<dt>モード</dt>
<dd class="mode">
<button name="rectangleModeButton">Rectangle</button>
<button name="letterModeButton">Letter</button>
<button name="eraserModeButton">Eraser</button>
<button name="trimModeButton">Trim</button>
</dd>
<dt>枠の太さ</dt>
<dd class="borderWidth clearfix">
<div class="float50" name="borderWidth"></div>
<button name="minus" class="float25">-</button><button name="plus" class="float25">+</button>
</dd>
<dt>枠の色</dt>
<dd class="borderColor clearfix">
<button class="color color9" name="c_ff0000"> </button>
<button class="color color9" name="c_34A853"> </button>
<button class="color color9" name="c_000000"> </button>
<button class="color color9" name="c_ffffff"> </button>
<button class="color color3" name="c_clear">透明</button>
<input type="text" name="borderColor">
</dd>
<dt>塗りつぶしの色</dt>
<dd class="fillColor clearfix">
<button class="color color9" name="c_ff0000"> </button>
<button class="color color9" name="c_34A853"> </button>
<button class="color color9" name="c_000000"> </button>
<button class="color color9" name="c_ffffff"> </button>
<button class="color color3" name="c_clear">透明</button>
<input type="text" name="fillColor">
</dd>
<dt>フォント</dt>
<dd class="clearfix">
<input type="text" name="font">
</dd>
<dt>拡大率</dt>
<dd class="scale clearfix">
<div class="float50" name="scale"></div>
<button name="minus" class="float25">-</button><button name="plus" class="float25">+</button>
</dd>
<dt>編集</dt>
<dd>
<button name="undoButton" class="float50">←Undo</button>
<button name="redoButton" class="float50">Redo→</button>
<button name="resetButton">Reset</button>
</dd>
<dt>ファイル</dt>
<dd>
<button name="saveButton">Save</button>
<button name="cancelButton">Cancel</button>
</dd>
</dl>
</div>
</div>
<input type="hidden" id="kantanVersion" value="v1.20160412.01">
<input type="hidden" id="kantanEdition" value="lite">
<div id="updateScriptArea"></div>
<script id="markedJs">
/**
* marked - a markdown parser
* Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
* https://github.com/chjj/marked
*/
(function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",/<!--[\s\S]*?-->/)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]||""});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i<item.align.length;i++){if(/^ *-+: *$/.test(item.align[i])){item.align[i]="right"}else if(/^ *:-+: *$/.test(item.align[i])){item.align[i]="center"}else if(/^ *:-+ *$/.test(item.align[i])){item.align[i]="left"}else{item.align[i]=null}}for(i=0;i<item.cells.length;i++){item.cells[i]=item.cells[i].split(/ *\| */)}this.tokens.push(item);continue}if(cap=this.rules.lheading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[2]==="="?1:2,text:cap[1]});continue}if(cap=this.rules.hr.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"hr"});continue}if(cap=this.rules.blockquote.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"blockquote_start"});cap=cap[0].replace(/^ *> ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i<l;i++){item=cap[i];space=item.length;item=item.replace(/^ *([*+-]|\d+\.) +/,"");if(~item.indexOf("\n ")){space-=item.length;item=!this.options.pedantic?item.replace(new RegExp("^ {1,"+space+"}","gm"),""):item.replace(/^ {1,4}/gm,"")}if(this.options.smartLists&&i!==l-1){b=block.bullet.exec(cap[i+1])[0];if(bull!==b&&!(bull.length>1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose)loose=next}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq);this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:!this.options.sanitizer&&(cap[1]==="pre"||cap[1]==="script"||cap[1]==="style"),text:cap[0]});continue}if(!bq&&top&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i<item.align.length;i++){if(/^ *-+: *$/.test(item.align[i])){item.align[i]="right"}else if(/^ *:-+: *$/.test(item.align[i])){item.align[i]="center"}else if(/^ *:-+ *$/.test(item.align[i])){item.align[i]="left"}else{item.align[i]=null}}for(i=0;i<item.cells.length;i++){item.cells[i]=item.cells[i].replace(/^ *\| *| *\| *$/g,"").split(/ *\| */)}this.tokens.push(item);continue}if(top&&(cap=this.rules.paragraph.exec(src))){src=src.substring(cap[0].length);this.tokens.push({type:"paragraph",text:cap[1].charAt(cap[1].length-1)==="\n"?cap[1].slice(0,-1):cap[1]});continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"text",text:cap[0]});continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return this.tokens};var inline={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/};inline._inside=/(?:\[[^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*/;inline._href=/\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else if(this.options.pedantic){this.rules=inline.pedantic}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^<a /i.test(cap[0])){this.inLink=true}else if(this.inLink&&/^<\/a>/i.test(cap[0])){this.inLink=false}src=src.substring(cap[0].length);out+=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(cap[0]):escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.codespan(escape(cap[2],true));continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.br();continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.del(this.output(cap[1]));continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.text(escape(this.smartypants(cap[0])));continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return out};InlineLexer.prototype.outputLink=function(cap,link){var href=escape(link.href),title=link.title?escape(link.title):null;return cap[0].charAt(0)!=="!"?this.renderer.link(href,title,this.output(cap[1])):this.renderer.image(href,title,escape(cap[1]))};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants)return text;return text.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")};InlineLexer.prototype.mangle=function(text){if(!this.options.mangle)return text;var out="",l=text.length,i=0,ch;for(;i<l;i++){ch=text.charCodeAt(i);if(Math.random()>.5){ch="x"+ch.toString(16)}out+="&#"+ch+";"}return out};function Renderer(options){this.options=options||{}}Renderer.prototype.code=function(code,lang,escaped){if(this.options.highlight){var out=this.options.highlight(code,lang);if(out!=null&&out!==code){escaped=true;code=out}}if(!lang){return"<pre><code>"+(escaped?code:escape(code,true))+"\n</code></pre>"}return'<pre><code class="'+this.options.langPrefix+escape(lang,true)+'">'+(escaped?code:escape(code,true))+"\n</code></pre>\n"};Renderer.prototype.blockquote=function(quote){return"<blockquote>\n"+quote+"</blockquote>\n"};Renderer.prototype.html=function(html){return html};Renderer.prototype.heading=function(text,level,raw){return"<h"+level+' id="'+this.options.headerPrefix+raw.toLowerCase().replace(/[^\w]+/g,"-")+'">'+text+"</h"+level+">\n"};Renderer.prototype.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"};Renderer.prototype.list=function(body,ordered){var type=ordered?"ol":"ul";return"<"+type+">\n"+body+"</"+type+">\n"};Renderer.prototype.listitem=function(text){return"<li>"+text+"</li>\n"};Renderer.prototype.paragraph=function(text){return"<p>"+text+"</p>\n"};Renderer.prototype.table=function(header,body){return"<table>\n"+"<thead>\n"+header+"</thead>\n"+"<tbody>\n"+body+"</tbody>\n"+"</table>\n"};Renderer.prototype.tablerow=function(content){return"<tr>\n"+content+"</tr>\n"};Renderer.prototype.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+content+"</"+type+">\n"};Renderer.prototype.strong=function(text){return"<strong>"+text+"</strong>"};Renderer.prototype.em=function(text){return"<em>"+text+"</em>"};Renderer.prototype.codespan=function(text){return"<code>"+text+"</code>"};Renderer.prototype.br=function(){return this.options.xhtml?"<br/>":"<br>"};Renderer.prototype.del=function(text){return"<del>"+text+"</del>"};Renderer.prototype.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0||prot.indexOf("vbscript:")===0){return""}}var out='<a href="'+href+'"';if(title){out+=' title="'+title+'"'}out+=">"+text+"</a>";return out};Renderer.prototype.image=function(href,title,text){var out='<img src="'+href+'" alt="'+text+'"';if(title){out+=' title="'+title+'"'}out+=this.options.xhtml?"/>":">";return out};Renderer.prototype.text=function(text){return text};function Parser(options){this.tokens=[];this.token=null;this.options=options||marked.defaults;this.options.renderer=this.options.renderer||new Renderer;this.renderer=this.options.renderer;this.renderer.options=this.options}Parser.parse=function(src,options,renderer){var parser=new Parser(options,renderer);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options,this.renderer);this.tokens=src.reverse();var out="";while(this.next()){out+=this.tok()}return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text;while(this.peek().type==="text"){body+="\n"+this.next().text}return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case"space":{return""}case"hr":{return this.renderer.hr()}case"heading":{return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text)}case"code":{return this.renderer.code(this.token.text,this.token.lang,this.token.escaped)}case"table":{var header="",body="",i,row,cell,flags,j;cell="";for(i=0;i<this.token.header.length;i++){flags={header:true,align:this.token.align[i]};cell+=this.renderer.tablecell(this.inline.output(this.token.header[i]),{header:true,align:this.token.align[i]})}header+=this.renderer.tablerow(cell);for(i=0;i<this.token.cells.length;i++){row=this.token.cells[i];cell="";for(j=0;j<row.length;j++){cell+=this.renderer.tablecell(this.inline.output(row[j]),{header:false,align:this.token.align[j]})}body+=this.renderer.tablerow(cell)}return this.renderer.table(header,body)}case"blockquote_start":{var body="";while(this.next().type!=="blockquote_end"){body+=this.tok()}return this.renderer.blockquote(body)}case"list_start":{var body="",ordered=this.token.ordered;while(this.next().type!=="list_end"){body+=this.tok()}return this.renderer.list(body,ordered)}case"list_item_start":{var body="";while(this.next().type!=="list_item_end"){body+=this.token.type==="text"?this.parseText():this.tok()}return this.renderer.listitem(body)}case"loose_item_start":{var body="";while(this.next().type!=="list_item_end"){body+=this.tok()}return this.renderer.listitem(body)}case"html":{var html=!this.token.pre&&!this.options.pedantic?this.inline.output(this.token.text):this.token.text;return this.renderer.html(html)}case"paragraph":{return this.renderer.paragraph(this.inline.output(this.token.text))}case"text":{return this.renderer.paragraph(this.parseText())}}};function escape(html,encode){return html.replace(!encode?/&(?!#?\w+;)/g:/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function unescape(html){return html.replace(/&([#\w]+);/g,function(_,n){n=n.toLowerCase();if(n==="colon")return":";if(n.charAt(0)==="#"){return n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}return""})}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name)return new RegExp(regex,opt);val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i=1,target,key;for(;i<arguments.length;i++){target=arguments[i];for(key in target){if(Object.prototype.hasOwnProperty.call(target,key)){obj[key]=target[key]}}}return obj}function marked(src,opt,callback){if(callback||typeof opt==="function"){if(!callback){callback=opt;opt=null}opt=merge({},marked.defaults,opt||{});var highlight=opt.highlight,tokens,pending,i=0;try{tokens=Lexer.lex(src,opt)}catch(e){return callback(e)}pending=tokens.length;var done=function(err){if(err){opt.highlight=highlight;return callback(err)}var out;try{out=Parser.parse(tokens,opt)}catch(e){err=e}opt.highlight=highlight;return err?callback(err):callback(null,out)};if(!highlight||highlight.length<3){return done()}delete opt.highlight;if(!pending)return done();for(;i<tokens.length;i++){(function(token){if(token.type!=="code"){return--pending||done()}return highlight(token.text,token.lang,function(err,code){if(err)return done(err);if(code==null||code===token.text){return--pending||done()}token.text=code;token.escaped=true;--pending||done()})})(tokens[i])}return}try{if(opt)opt=merge({},marked.defaults,opt);return Parser.parse(Lexer.lex(src,opt),opt)}catch(e){e.message+="\nPlease report this to https://github.com/chjj/marked.";if((opt||marked.defaults).silent){return"<p>An error occured:</p><pre>"+escape(e.message+"",true)+"</pre>"}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}).call(function(){return this||(typeof window!=="undefined"?window:global)}());
</script>
<script id="kantanEditorJS">
function toKantanEditor(a){function b(a,b){for(var c="",d=a.value.charAt(b);">"!=d&&" "!=d;)c+=d,b++,d=a.value.charAt(b);return c}on(a,"keydown",function(b){if(9!=b.which&&9!=b.keyCode)return!0;b.preventDefault();var c=a.selectionStart,d=a.selectionEnd;if(c==d){var e,f=a.value;if(document.querySelector("#settingExpandtab").checked){e="";for(var g=4,h=0,j=c;j>0&&"\n"!=f.charAt(j-1);)j--;for(;c>j;j++){var l=f.charCodeAt(j);h+=9==l?g-h%g:256>l||l>=65377&&65439>=l?1:2}for(var m=g-h%g,n=0;m>n;n++)e+=" "}else e=" ";a.value=f.substr(0,c)+e+f.substr(c,f.length),a.setSelectionRange(c+e.length,c+e.length),k(b.target),i(b.target)}else if(b.shiftKey){for(var g=4,o=a.value;c>0&&"\n"!=o.charAt(c-1);)c--;for("\n"==o.charAt(d-1)&&(d-=1);d<o.length&&"\n"!=o.charAt(d);)d++;d--;for(var p=0,q=o.substring(0,c),j=c;d>j;){for(var l=o.charAt(j),r=0;g>r;){if(" "==l)r+=1,p++;else if(" "==l)r+=2,p++;else{if(" "!=l){q+=l,j++;break}r+=g,p++}l=o.charAt(++j)}for(;"\n"!=l&&d>j;)l=o.charAt(j++),q+=l}q+=o.substr(d),a.value=q,a.selectionStart=c,a.selectionEnd=d-p+1,k(b.target),i(b.target)}else{for(var o=a.value;c>0&&"\n"!=o.charAt(c-1);)c--;for("\n"==o.charAt(d-1)&&(d-=1);d<o.length&&"\n"!=o.charAt(d);)d++;for(var s=1,q=o.substring(0,c)+" ",j=c;d>j;j++){var l=o.charAt(j);q+=l,"\n"==l&&(q+=" ",s++)}q+=o.substr(d),a.value=q,a.selectionStart=c,a.selectionEnd=d+s,k(b.target),i(b.target)}return!1}),on(a,"keydown",function(b){if(13==b.which||13==b.keyCode){b.preventDefault();for(var c=0,d=a.value,e=a.selectionStart;e>0&&"\n"!=d.charAt(e-1);)e--,c++;for(var f="",g=0;c>g;g++){var h=d.charAt(e+g);if(" "!=h&&" "!=h&&" "!=h)break;f+=h}var j=a.selectionStart+f.length+1,l=d.substring(0,a.selectionStart),m=d.substr(a.selectionEnd);a.value=l+"\n"+f+m,a.selectionStart=j,a.selectionEnd=j,k(b.target),i(b.target)}}),on(a,"keydown",function(a){if(191!=a.which&&191!=a.keyCode||a.shiftKey||a.ctrlKey||a.metaKey||a.altKey)return!0;if(!document.querySelector("#settingAutoCloseTab").checked)return!0;var c=a.target,d=c.selectionStart-1;if(0>d||"<"!=c.value.charAt(d))return!0;d--;for(var e=null,f=[""];d>=0;)if("<"==c.value.charAt(d)){var g,h;"/"==c.value.charAt(d+1)?(g=!0,h=d+2):(g=!1,h=d+1);var j=b(c,h);if(g)f.push(j);else{if(j!=f[f.length-1]){e=j;break}f.pop()}d--}else d--;if(null==e)return!0;a.preventDefault();var l="/"+e+">",m=c.selectionStart+l.length,n=c.value.substring(0,c.selectionStart),o=c.value.substr(c.selectionEnd);return c.value=n+l+o,c.selectionStart=m,c.selectionEnd=m,k(a.target),i(a.target),!1});var c=!1,d={},e=[],f=[],g={val:a.value,selectionStart:void 0,selectionEnd:void 0},h=void 0;on(a,"keydown",function(a){"Enter"==a.code?i(a.target):86!=a.which&&86!=a.keyCode||!a.ctrlKey&&!a.metaKey||c?86!=a.which&&86!=a.keyCode||!a.ctrlKey&&!a.metaKey||!c||i(a.target):(j(a.target),c=!0);var b=a.keyCode?a.keyCode:a.which;b>=33&&40>=b&&(d[a.code]=!0)}),on(a,"keypress",function(a){d[a.code]=!0}),on(a,"keyup",function(b){if(13==b.which||13==b.keyCode||8==b.which||8==b.keyCode||46==b.which||46==b.keyCode||(86==b.which||86==b.keyCode)&&(b.ctrlKey||b.metaKey)||(88==b.which||88==b.keyCode)&&(b.ctrlKey||b.metaKey))i(b.target);else if(1==d[b.code]){var e=b.keyCode?b.keyCode:b.which;e>=33&&40>=e?(h={val:a.value,selectionStart:a.selectionStart,selectionEnd:a.selectionEnd},d[b.code]=!1):(d[b.code]=!1,i(b.target))}b.ctrlKey||b.metaKey||!c||(c=!1)}),on(a,"changeByJs",function(a){i(a.target)}),on(a,"mouseup",function(b){h={val:a.value,selectionStart:a.selectionStart,selectionEnd:a.selectionEnd}}),on(a,"keydown",function(b){if(90==b.keyCode&&(b.ctrlKey||b.metaKey)&&!b.shiftKey&&(b.preventDefault(),0<e.length)){f.push(g);var c=e.pop();a.value=c.val,a.selectionStart=c.selectionStart,a.selectionEnd=c.selectionEnd,k(b.target),g=c,l(a)}}),on(a,"keydown",function(b){(89==b.keyCode&&(b.ctrlKey||b.metaKey)||90==b.keyCode&&b.ctrlKey&&b.shiftKey||90==b.keyCode&&b.metaKey&&b.shiftKey)&&(b.preventDefault(),0<f.length&&(e.push(g),g=f.pop(),a.value=g.val,a.selectionStart=g.selectionStart,a.selectionEnd=g.selectionEnd,k(b.target),l(a)))});var i=function(a){g.val!=a.value&&(h?(e.push(h),h=void 0):e.push(g),f=[],g={val:a.value,selectionStart:a.selectionStart,selectionEnd:a.selectionEnd})},j=function(a){f=[],g={val:a.value,selectionStart:a.selectionStart,selectionEnd:a.selectionEnd}},k=function(a){var b,c=a.value,d=a.selectionStart,e=a.selectionEnd;try{b=document.execCommand("insertText",!1,"X")}catch(f){b=!1}if(b)a.value=c,a.selectionStart=d,a.selectionEnd=d,a.blur(),a.focus(),a.selectionStart=d,a.selectionEnd=e;else{var g=c.substring(0,d),h=c.substr(e);a.value=g+"X"+h,a.selectionStart=g.length,a.selectionEnd=g.length+1;document.execCommand("delete",!1,null);a.value=c,a.selectionStart=d,a.selectionEnd=e}},l=function(a){var b=document.createEvent("Event");b.initEvent("input",!0,!0),a.dispatchEvent(b)}}
</script>
<script id="kantanDrawerJS">
function KantanDrawer(a){var b=this;this.drawArea=a,this.canvasWrapper=a.querySelector("#canvasWrapper"),this.baseCanvas=a.querySelector("#baseCanvas"),this.mainCanvas=a.querySelector("#mainCanvas"),this.workCanvas=a.querySelector("#workCanvas");for(var c=a.querySelectorAll(".mode button"),d=0;d<c.length;d++)on(c[d],"click",function(a){var c=this.name.indexOf("ModeButton"),d=this.name.substring(0,c);b.setMode(d)});a.querySelector("[name=borderWidth]");on(a.querySelector(".borderWidth [name=minus]"),"click",function(){b.setBorderWidth(b.borderWidth-1)}),on(a.querySelector(".borderWidth [name=plus]"),"click",function(){b.setBorderWidth(b.borderWidth+1)});var e=a.querySelector("[name=borderColor]");on(e,"keyup",function(){b.setBorderColor(this.value)});for(var f=a.querySelectorAll(".borderColor .color"),d=0;d<f.length;d++)on(f[d],"click",function(){var a=this.name.substr(2);a="clear"==a?"rgba(0, 0, 0, 0)":"#"+a,b.setBorderColor(a)});var g=a.querySelector("[name=fillColor]");on(g,"keyup",function(){b.setFillColor(this.value)});for(var h=a.querySelectorAll(".fillColor .color"),d=0;d<h.length;d++)on(h[d],"click",function(){var a=this.name.substr(2);a="clear"==a?"rgba(0, 0, 0, 0)":"#"+a,b.setFillColor(a)});var i=a.querySelector("[name=font]");on(i,"keyup",function(){b.font=this.value});a.querySelector("[name=scale]");on(a.querySelector(".scale [name=minus]"),"click",function(){b.setScale(b.scale-.1),b.repaint()}),on(a.querySelector(".scale [name=plus]"),"click",function(){b.setScale(b.scale+.1),b.repaint()}),on(a.querySelector("[name=undoButton]"),"click",function(){if(0!=b.commands.length){var a=b.commands.pop();b.redoCommands.push(a),b.repaint()}}),on(a.querySelector("[name=redoButton]"),"click",function(){if(0!=b.redoCommands.length){var a=b.redoCommands.pop();b.commands.push(a),b.repaint()}});var j=a.querySelector("[name=resetButton]");on(j,"click",function(){var a=window.confirm("全ての描画をリセットしますか?この操作は元に戻せません。");1==a&&(b.reset(),b.repaint())});var k=a.querySelector("[name=saveButton]");on(k,"click",function(){for(var a="",c=!0,d=b.mainCanvas.getContext("2d"),e=d.getImageData(0,0,b.baseImg.width,b.baseImg.height),f=0;f<e.data.length;f++)if(0!=e.data[f]){c=!1;break}var g;if(c)g=0==b.trimInfo.x&&0==b.trimInfo.y&&b.trimInfo.w==b.baseImg.width&&b.trimInfo.h==b.baseImg.height?"":JSON.stringify(b.trimInfo);else{var h=document.createElement("canvas");h.width=b.baseImg.width,h.height=b.baseImg.height,tempCtx=h.getContext("2d"),tempCtx.putImageData(e,b.trimInfo.x,b.trimInfo.y),a=h.toDataURL(),g=JSON.stringify(b.trimInfo)}b.saveCallback(a,g),b.reset(),b.hide()});var l=a.querySelector("[name=cancelButton]");on(l,"click",function(){var a=window.confirm("キャンセルしてもいいですか?編集内容は失われます。");1==a&&(b.reset(),b.hide(),b.cancelCallback())}),on(this.workCanvas,"mousedown",function(a){var c=b.commands.length,d=(a.pageX+b.canvasWrapper.scrollLeft)/b.scale+b.trimInfo.x,e=(a.pageY+b.canvasWrapper.scrollTop)/b.scale+b.trimInfo.y;b.modeStrategy.onMouseDown(a,d,e,b.commands,b.workCommands),c!=b.commands.length&&(b.redoCommands=[])}),on(this.workCanvas,"mousemove",function(a){var c=b.commands.length,d=(a.pageX+b.canvasWrapper.scrollLeft)/b.scale+b.trimInfo.x,e=(a.pageY+b.canvasWrapper.scrollTop)/b.scale+b.trimInfo.y;b.modeStrategy.onMouseMove(a,d,e,b.commands,b.workCommands),c!=b.commands.length&&(b.redoCommands=[])}),on(this.workCanvas,"mouseup",function(a){var c=b.commands.length,d=(a.pageX+b.canvasWrapper.scrollLeft)/b.scale+b.trimInfo.x,e=(a.pageY+b.canvasWrapper.scrollTop)/b.scale+b.trimInfo.y;b.modeStrategy.onMouseUp(a,d,e,b.commands,b.workCommands),c!=b.commands.length&&(b.redoCommands=[])})}function DrawCommand(a,b){this.drawer=a,this.strokeStyle=a.borderColor,this.lineWidth=a.borderWidth,this.fillStyle=a.fillColor,this.width=a.baseImg.width,this.height=a.baseImg.height,this.font=a.font,this.paint=b}function TrimModeStrategy(a){this.modeName="trim",this.drawer=a,this.originalScale=a.scale,this.originalMode=a.modeStrategy.modeName,this.mouseStart=null}function RectangleModeStrategy(a){this.modeName="rectangle",this.drawer=a,this.mouseStart=null,this.mouseEnd=null}function EraserModeStrategy(a){this.modeName="eraser",this.drawer=a,this.mouseStart=null,this.mouseEnd=null}function LetterModeStrategy(a){this.modeName="letter",this.drawer=a,this.mouseStart=null,this.mouseEnd=null}KantanDrawer.prototype={show:function(a,b,c,d,e){this.saveCallback=d,this.cancelCallback=e;var f=this;this.baseImg=new Image,this.baseImg.onload=function(){""!=c.trim()?f.trimInfo=JSON.parse(c):f.trimInfo={x:0,y:0,w:this.width,h:this.height},""!=b.trim()?(f.layerImg=new Image,f.layerImg.onload=function(){showBlock(f.drawArea),f.repaint()},f.layerImg.src=b):(showBlock(f.drawArea),f.repaint())},this.baseImg.src=a,this.reset()},hide:function(){this.baseImg=null,this.layerImg=null;for(var a=this.drawArea.querySelectorAll("canvas"),b=0;b<a.length;b++)a[b].removeAttribute("width"),a[b].removeAttribute("height");for(var c=this.drawArea.querySelectorAll("*[class]"),b=0;b<a.length;b++)""==c[b].className&&c[b].removeAttribute("class");for(var d=this.drawArea.querySelectorAll(".mode .selected"),b=0;b<d.length;b++)removeClass(d[b],"selected");this.drawArea.querySelector("div[name=borderWidth]").innerHTML="",this.drawArea.querySelector("div[name=scale]").innerHTML="",hide(this.drawArea)},reset:function(){this.commands=[],this.redoCommands=[],this.workCommands=[],this.layerImg=null,this.trimInfo={x:0,y:0,w:this.baseImg.width,h:this.baseImg.height},this.setMode("rectangle"),this.setBorderWidth(1),this.setBorderColor("#ff0000"),this.setFillColor("rgba(0, 0, 0, 0)"),this.setFont("18px sans-serif"),this.setScale(1)},setMode:function(a){if("rectangle"==a)this.modeStrategy=new RectangleModeStrategy(this),this.modeStrategy.onBeforeModeStart(this.commands,this.workCommands);else if("letter"==a)this.modeStrategy=new LetterModeStrategy(this),this.modeStrategy.onBeforeModeStart(this.commands,this.workCommands);else if("eraser"==a)this.modeStrategy=new EraserModeStrategy(this),this.modeStrategy.onBeforeModeStart(this.commands,this.workCommands);else{if("trim"!=a)throw"未知のモード"+a;0==this.trimInfo.x&&0==this.trimInfo.y&&this.trimInfo.w==this.baseImg.width&&this.trimInfo.h==this.baseImg.height?(this.modeStrategy=new TrimModeStrategy(this),this.modeStrategy.onBeforeModeStart(this.commands,this.workCommands)):(this.trimInfo={x:0,y:0,w:this.baseImg.width,h:this.baseImg.height},this.repaint())}for(var b=drawArea.querySelectorAll(".mode button"),c=0;c<b.length;c++)b[c].classList.remove("selected");drawArea.querySelector(".mode button[name="+this.modeStrategy.modeName+"ModeButton]").classList.add("selected")},setBorderWidth:function(a){var b=drawArea.querySelector("[name=borderWidth]");a>=1&&(this.borderWidth=a),b.textContent=this.borderWidth,b.style.borderBottom=this.borderWidth+"px solid black"},setBorderColor:function(a){var b=drawArea.querySelector("[name=borderColor]");this.borderColor=a,b.value=a,b.style.backgroundColor=a},setFillColor:function(a){var b=drawArea.querySelector("[name=fillColor]");this.fillColor=a,b.value=a,b.style.backgroundColor=a},setFont:function(a){var b=drawArea.querySelector("[name=font]");this.font=a,b.value=a},setScale:function(a){var b=drawArea.querySelector("[name=scale]");a>=.1&&(this.scale=a),b.textContent=this.scale},repaint:function(){this.baseCanvas.width=this.mainCanvas.width=this.workCanvas.width=this.trimInfo.w*this.scale,this.baseCanvas.height=this.mainCanvas.height=this.workCanvas.height=this.trimInfo.h*this.scale;var a=this.drawArea.querySelector("[name=trimModeButton]");0==this.trimInfo.x&&0==this.trimInfo.y&&this.trimInfo.w==this.baseImg.width&&this.trimInfo.h==this.baseImg.height?a.textContent="Trim":a.textContent="Reset Trim";var b=this.baseCanvas.getContext("2d");b.clearRect(0,0,this.baseImg.width,this.baseImg.height),b.save(),b.scale(this.scale,this.scale),b.translate(-this.trimInfo.x,-this.trimInfo.y),b.drawImage(this.baseImg,0,0),b.restore();var c=this.mainCanvas.getContext("2d");c.clearRect(0,0,this.baseImg.width,this.baseImg.height),c.save(),c.scale(this.scale,this.scale),c.translate(-this.trimInfo.x,-this.trimInfo.y),this.layerImg&&c.drawImage(this.layerImg,0,0);for(var d=0;d<this.commands.length;d++){var e=this.commands[d];c.strokeStyle=e.strokeStyle,c.lineWidth=e.lineWidth,c.fillStyle=e.fillStyle,e.paint(c)}c.restore();var f=this.workCanvas.getContext("2d");f.clearRect(0,0,this.baseImg.width,this.baseImg.height),f.save(),f.scale(this.scale,this.scale),f.translate(-this.trimInfo.x,-this.trimInfo.y);for(var d=0;d<this.workCommands.length;d++){var e=this.workCommands[d];f.strokeStyle=e.strokeStyle,f.lineWidth=e.lineWidth,f.fillStyle=e.fillStyle,e.paint(f)}f.restore()}},TrimModeStrategy.prototype={onBeforeModeStart:function(a,b){this.drawer.scale=1,this.drawer.trimInfo={x:0,y:0,w:this.drawer.baseImg.width,h:this.drawer.baseImg.height},b.length=0,b.push(new DrawCommand(this.drawer,function(a){a.save(),a.borderStyle="rgba(0, 0, 0, 0.6)",a.fillStyle="rgba(0, 0, 0, 0.6)",a.clearRect(0,0,this.width,this.height),a.fillRect(0,0,this.width,this.height),a.restore()})),this.drawer.repaint()},onMouseDown:function(a,b,c,d,e){this.mouseStart={x:b,y:c}},onMouseMove:function(a,b,c,d,e){if(null!=this.mouseStart){var f=this;e.length=0,e.push(new DrawCommand(this.drawer,function(a){a.save(),a.borderStyle="rgba(0, 0, 0, 0.6)",a.fillStyle="rgba(0, 0, 0, 0.6)",a.fillRect(0,0,this.width,this.height),a.clearRect(f.mouseStart.x,f.mouseStart.y,b-f.mouseStart.x,c-f.mouseStart.y),a.restore()})),this.drawer.repaint()}},onMouseUp:function(a,b,c,d,e){if(0==a.button){var f=Math.min(this.mouseStart.x,b),g=Math.min(this.mouseStart.y,c),h=Math.max(this.mouseStart.x,b)-f,i=Math.max(this.mouseStart.y,c)-g;this.drawer.trimInfo.x=f,this.drawer.trimInfo.y=g,this.drawer.trimInfo.w=h,this.drawer.trimInfo.h=i,this.mouseStart=null,e.length=0,this.drawer.scale=this.originalScale,this.drawer.setMode(this.originalMode),this.drawer.repaint()}}},RectangleModeStrategy.prototype={onBeforeModeStart:function(a,b){this.mouseStart=null,this.mouseEnd=null,b.length=0,this.drawer.repaint()},onMouseDown:function(a,b,c,d,e){if(0==a.button){this.mouseStart={x:b,y:c},this.mouseEnd={x:b,y:c};var f=this.mouseStart,g=this.mouseEnd;e.length=0,e.push(new DrawCommand(this.drawer,function(a){a.fillRect(f.x,f.y,g.x-f.x,g.y-f.y),a.strokeRect(f.x,f.y,g.x-f.x,g.y-f.y)})),this.drawer.repaint()}},onMouseMove:function(a,b,c,d,e){null!=this.mouseStart&&(this.mouseEnd.x=b,this.mouseEnd.y=c,this.drawer.repaint())},onMouseUp:function(a,b,c,d,e){null!=this.mouseStart&&0==a.button&&(this.mouseStart=null,this.mouseEnd=null,d.push(e[0]),e.length=0,this.drawer.repaint())}},EraserModeStrategy.prototype={onBeforeModeStart:function(a,b){this.mouseStart=null,this.mouseEnd=null,b.length=0,this.drawer.repaint()},onMouseDown:function(a,b,c,d,e){if(0==a.button){this.mouseStart={x:b,y:c},this.mouseEnd={x:b,y:c};var f=this.mouseStart,g=this.mouseEnd;e.length=0,e.push(new DrawCommand(this.drawer,function(a){a.strokeStyle="#808080",a.strokeRect(f.x,f.y,g.x-f.x,g.y-f.y)})),this.drawer.repaint()}},onMouseMove:function(a,b,c,d,e){null!=this.mouseStart&&(this.mouseEnd.x=b,this.mouseEnd.y=c,this.drawer.repaint())},onMouseUp:function(a,b,c,d,e){if(null!=this.mouseStart&&0==a.button){var f=this.mouseStart,g=this.mouseEnd;e.length=0,d.push(new DrawCommand(this.drawer,function(a){a.clearRect(f.x,f.y,g.x-f.x,g.y-f.y)})),this.mouseStart=null,this.mouseEnd=null,this.drawer.repaint()}}},LetterModeStrategy.prototype={onBeforeModeStart:function(a,b){this.mouseStart=null,this.mouseEnd=null,b.length=0,this.drawer.repaint()},onMouseDown:function(a,b,c,d,e){},onMouseMove:function(a,b,c,d,e){},onMouseUp:function(a,b,c,d,e){if(0==a.button){var f=window.prompt("文字を入力してください");null!=f&&(d.push(new DrawCommand(this.drawer,function(a){a.save(),a.font=this.font,a.fillStyle=this.strokeStyle,a.fillText(f,b,c),a.restore()})),this.drawer.repaint())}}};
</script>
<script id="kantanMarkdownJs">
function setViewOnly(){document.getElementById("messageArea").innerText="このブラウザでは編集できません。";for(var a=document.querySelectorAll("nav > *"),b=0;b<a.length;b++)a[b].setAttribute("disabled","disabled")}function on(a,b,c){var d;d="string"==typeof a?document.querySelectorAll(a):[a];for(var e=0;e<d.length;e++)d[e].addEventListener(b,c),eventListeners.push({element:d[e],eventName:b,callback:c})}function removeAllEvents(){for(var a=0;a<eventListeners.length;a++){var b=eventListeners[a].element,c=eventListeners[a].eventName,d=eventListeners[a].callback;b.removeEventListener(c,d)}eventListeners=[]}function updateKantanVersion(a){document.getElementById("kantanVersion").value=a;for(var b=document.getElementById("kantanEdition").value,c=document.getElementsByClassName("version"),d=0;d<c.length;d++)c[d].innerText=a+"_"+b}function updateKantanEdition(a){document.getElementById("kantanEdition").value=a}function kantanUpdate(a){a.doUpdate()}function getItem(a,b){try{var c=localStorage.getItem("com.tatesuke.ktm."+a);return null!=c?c:b}catch(d){return b}}function setItem(a,b){try{localStorage.setItem("com.tatesuke.ktm."+a,b)}catch(c){}}function getCachedImageUrl(a,b){var c=imageUrlMap[a];if(null==c&&b){var d=document.getElementById("attach-"+a);return null!=d?cacheImageUrl(a,d.innerHTML):null}return c}function cacheImageUrl(a,b){var c;if(window.URL){var d=base64ToBlob(b);c={blobOrBase64:window.URL.createObjectURL(d),base64:b}}else c={blobOrBase64:b,base64:b};return imageUrlMap[a]=c,c}function uncacheImageUrl(a){var b=imageUrlMap[a];window.URL&&b&&window.URL.revokeObjectURL(b),delete imageUrlMap[a]}function doLayout(){var a=document.getElementById("wrapper"),b=window.innerHeight-a.offsetTop-10;a.style.height=b+"px"}function toggleMode(){var a=document.getElementById("attach"),b=document.getElementById("editorTabWrapper"),c=document.getElementById("editor"),d=document.getElementById("previewer");if(isEditMode()&&(editorScrollBarPos=c.scrollTop,caretStartPos=c.selectionStart,caretEndPos=c.selectionEnd),isEditMode()){isPreviewerOpened=isVisible(d),0==isPreviewerOpened&&openPreview(),hide(a),hide(b),doPreview();for(var e=null,f=null,g=d.querySelectorAll("*"),h=0;h<g.length;h++){var i=d.scrollTop-(g[h].offsetTop-d.offsetTop);(null==e||Math.abs(i)<Math.abs(e))&&(e=i,f=g[h])}addClass(document.querySelector("body"),"previewMode"),removeClass(document.querySelector("body"),"editMode"),doLayout(),d.focus(),f&&(wrapper.scrollTop=f.offsetTop-d.offsetTop+e)}else{showBlock(a),showBlock(b),doPreview();for(var e=null,f=null,g=d.querySelectorAll("*"),h=0;h<g.length;h++){var i=wrapper.scrollTop-(g[h].offsetTop-d.offsetTop);(null==e||Math.abs(i)<Math.abs(e))&&(e=i,f=g[h])}0==isPreviewerOpened&&closePreview(),removeClass(document.querySelector("body"),"previewMode"),addClass(document.querySelector("body"),"editMode"),doLayout(),f&&(d.scrollTop=f.offsetTop-d.offsetTop+e)}isEditMode()&&(c.scrollTop=editorScrollBarPos,c.selectionStart=caretStartPos,c.selectionEnd=caretEndPos,c.focus())}function queuePreview(){var a=document.getElementById("settingAutoSync");a.checked&&(clearTimeout(previewQueue),previewQueue=setTimeout(doPreview,queuePreviewWait))}function doPreview(){var a=document.getElementById("previewer"),b=document.createEvent("Event");b.initEvent("prepreview",!0,!0),a.dispatchEvent(b);var c=isMaxScroll("previewer");a.innerHTML=marked(editor.value);var d=document.querySelector("#previewerStyle"),e=document.querySelector("#cssEditor"),f=replaceAttachURL(e.value);d.innerHTML=f;var g=document.querySelector("h1");g?document.title=g.textContent:document.title="無題",0==saved&&(document.title="* "+document.title);for(var h=document.querySelectorAll("#previewer img"),i=0;i<h.length;i++){var j=h[i];loadImage(j)}var k=document.querySelectorAll("#previewer a");for(i in k){var l=k[i],m=l.href;if(m){var n=m.trim().match(/^attach:(.+)/);if(n){var o=decodeURIComponent(n[1]);getFileBlog(o,function(a){var b=window.URL||window.webkitURL,c=b.createObjectURL(a);l.href=c,l.download=o})}}}if("undefined"!=typeof Diagram)for(var p=document.getElementsByClassName("sequence"),i=0;i<p.length;i++){var q=p[i],r=Diagram.parse(q.textContent);q.innerHTML="",r.drawSVG(q,{theme:"simple"})}if("undefined"!=typeof flowchart)for(var s=document.getElementsByClassName("flow"),i=0;i<s.length;i++){var t=s[i],r=flowchart.parse(t.textContent);t.innerHTML="",r.drawSVG(t)}1==c&&(a.scrollTop=a.scrollHeight);var b=document.createEvent("Event");b.initEvent("previewed",!0,!0),a.dispatchEvent(b)}function replaceAttachURL(a){var b="",c=0,d='url("attach:',e='"';for(d.length;c<a.length;){if(c+d.length<a.length){var f=a.substr(c,d.length);if(f==d){c+=d.length;for(var g="",h=a.charAt(c++);h!=e;)g+=h,h=a.charAt(c++);var i=getCachedImageUrl(g,!0);b+=null==i?d+g+e:'url("'+i.blobOrBase64+e;continue}}var h=a.charAt(c++);if(b+=h,'"'!=h);else{for(h=a.charAt(c++);'"'!=h;)b+=h,h=a.charAt(c++);b+=h}}return b}function loadImage(a){var b=null;if(a.name)b=a.name;else if(a.src){var c=a.src.trim().match(/^attach:(.+)/);c&&(b=decodeURIComponent(c[1]))}null!=b&&loadImageByName(b,function(b,c){var d=document.createElement("canvas");d.width=b,d.height=c,a.src=d.toDataURL()},function(b){a.src=b.blobOrBase64})}function loadImageByName(a,b,c){var d=document.getElementById("attach-"+a);if(null!=d){var e=d.parentNode,f=d.innerHTML,g=e.querySelector("script.layerContent").innerHTML,h=e.querySelector("script.trimInfo").innerHTML;h=""!=h?JSON.parse(h):null;var i=getCachedImageUrl(a,!1);if(i)return void c(i);if(null==h){var j=cacheImageUrl(a,f);return void c(j)}b(h.w,h.h);var k=new Image;k.onload=function(){var b=document.createElement("canvas");b.width=h.w,b.height=h.h;var d=b.getContext("2d");if(d.translate(-h.x,-h.y),d.drawImage(k,0,0),""!=g){var e=new Image;e.onload=function(){d.drawImage(e,0,0);var f=b.toDataURL(),g=cacheImageUrl(a,f);c(g)},e.src=g}else{var f=b.toDataURL(),i=cacheImageUrl(a,f);c(i)}},k.src=f}}function isMaxScroll(a){var b=document.getElementById(a),c=b.scrollHeight,d=b.clientHeight,e=b.scrollTop,f=c-(d+e);return f>=-1&&1>=f}function cssChanged(){saved=!1;var a=document.title;a.match(/^\*/)||(document.title="* "+a)}function attachFiles(a){for(var b=0;b<a.length;b++){var c=a[b],d=a[b].type;"text/html"==d?attachHtmlFile(c):attachFile(c)}}function attachFile(a,b){var c=new FileReader;b?c.fileName=b:c.fileName=a.name,c.onload=function(a){var b=a.target;addAttachFileElement(b.fileName,b.result,"","",!0)},c.readAsDataURL(a)}function attachHtmlFile(a){var b=new FileReader;b.fileName=a.name,b.onload=function(a){return function(b){var c=b.target.result,d=c.substring(23,c.length-8),e=document.createElement("html");e.innerHTML=d;var f=e.querySelector("ul#fileList"),g=e.querySelector("textarea#editor");f&&g?showImportDialog("かんたんMarkdownのファイルを検出しました。どの項目をインポートしますか?",function(b){1==b.result?importKantanMarkdown(b,e,a):attachFile(a)}):attachFile(a)}}(a),b.readAsText(a)}function importKantanMarkdown(a,b,c){if(1==a.attach){for(var d=b.querySelectorAll("ul#fileList li"),e=0;e<d.length;e++){var f=d[e].querySelector("script"),g=f.title,h=f.innerHTML,i=d[e].querySelector("script.layerContent"),j=i?i.innerHTML:"",k=d[e].querySelector("script.trimInfo"),l=k?k.innerHTML:"";addAttachFileElement(g,h,j,l,!1)}saved=!1}if(1==a.markdown){var m=b.querySelector("textarea#editor"),n=document.getElementById("editor");n.value=n.value+m.value,saved=!1}if(1==a.css){var o=b.querySelector("#previewerStyle");if(o){var p=document.getElementById("cssEditor"),q=b.querySelector("#cssEditor");""!=o.innerHTML.trim()?(p.value=o.innerHTML,saved=!1):q&&(p.value=q.value,saved=!1)}}doPreview()}function showImportDialog(a,b){document.getElementById("saveButton").disabled=!0,document.getElementById("importDialogMessage").innerText=a;var c=document.getElementById("importDialog");c.querySelector("form").reset(),document.getElementById("importDialogOkButton").onclick=function(a){a.preventDefault(),hide(c),document.getElementById("importDialogMessage").innerText="";var d={result:!0,attach:document.getElementById("importDialogAttach").checked,markdown:document.getElementById("importDialogMarkdown").checked,css:document.getElementById("importDialogCss").checked};return b(d),document.getElementById("importDialogOkButton")&&(document.getElementById("importDialogOkButton").onclick=null),document.getElementById("importDialogCancelButton")&&document.getElementById("importDialogCancelButton").onclick,document.getElementById("saveButton")&&(document.getElementById("saveButton").disabled=!1),!1},document.getElementById("importDialogCancelButton").onclick=function(a){return a.preventDefault(),hide(c),document.getElementById("importDialogMessage").innerText="",b({result:!1}),delete document.getElementById("importDialogOkButton").onclick,delete document.getElementById("importDialogCancelButton").onclick,document.getElementById("saveButton").disabled=!1,!1},showBlock(c);var d=document.querySelector("body");c.style.top="10px",c.style.left=d.offsetWidth/2-c.offsetWidth/2+"px"}function addAttachFileElement(a,b,c,d,e){for(var f=a,g=document.querySelector("#fileList script[title='"+f+"']"),h=2;g;){var i=a.lastIndexOf(".");i=-1!=i?i:a.length;var f=a.substring(0,i),j=a.substr(i);f=f+"_"+h+j,g=document.querySelector("#fileList script[title='"+f+"']"),h++}var k=document.createElement("li"),g=document.createElement("script");g.type="text/template",g.id="attach-"+f,g.title=f,g.innerHTML=b,k.appendChild(g);var l=document.createElement("script");l.type="text/template",addClass(l,"layerContent"),l.innerHTML=c,k.appendChild(l);var m=document.createElement("script");m.type="text/template",addClass(m,"trimInfo"),m.innerHTML=d,k.appendChild(m);var n=document.createElement("button");addClass(n,"upButton"),n.innerHTML="↑",on(n,"click",onUpButtonClicked),k.appendChild(n);var o=document.createElement("button");addClass(o,"downButton"),o.innerHTML="↓",on(o,"click",onDownButtonClicked),k.appendChild(o);var p=document.createElement("input");p.type="text",addClass(p,"fileName"),p.value=f,on(p,"blur",onFileNameChanged),k.appendChild(p);var q=document.createElement("button");addClass(q,"insertButton"),q.innerHTML="Insert Tag",on(q,"click",onInsertButtonClicked),k.appendChild(q);var r=b.match("data:image/.+?;base64,"),s=document.createElement("button");addClass(s,"editButton"),s.innerHTML="Edit",s.disabled=!r,on(s,"click",onEditButtonClicked),k.appendChild(s);var t=document.createElement("button");addClass(t,"downloadButton"),t.innerHTML="Download",on(t,"click",onDownloadButtonClicked),k.appendChild(t);var u=document.createElement("button");addClass(u,"detachButton"),u.innerHTML="×",on(u,"click",onDetachButtonClicked),k.appendChild(u),document.getElementById("fileList").appendChild(k);var v=(document.getElementById("editor"),document.getElementById("toggleButton")),w=document.getElementById("filer");isEditMode()||v.click(),isVisible(w)||openFiler();var x=document.querySelector("#settingInsertImgTagAfterAttach");if(r&&e&&x.checked){var y='<img src="attach:'+f+'">';insertToEditor(document.getElementById("editor"),y)}saved=!1,queuePreview()}function getFileBlog(a,b){var c=document.getElementById("attach-"+a);c||b(null);var d=c.innerHTML,e=d.match(/^\s*data:(.*);base64/)[1];e.match("^image")?loadImageByName(a,function(){},function(a){b(base64ToBlob(a.base64))}):b(base64ToBlob(d))}function base64ToBlob(a){for(var b=a.match(/^\s*data:(.*);base64/)[1],c=atob(a.replace(/^.*,/,"")),d=new Uint8Array(c.length),e=0;e<c.length;e++)d[e]=c.charCodeAt(e);var f=new Blob([d.buffer],{type:b});return f}function onUpButtonClicked(a){var b=a.target.parentNode,c=b.previousElementSibling;if(c){var d=b.parentNode;d.insertBefore(b,c)}}function onDownButtonClicked(a){var b=a.target.parentNode,c=b.nextElementSibling;if(c){var d=b.parentNode;d.insertBefore(c,b)}}function onDetachButtonClicked(a){if(window.confirm("削除していいですか?")){var b=a.target.parentNode,c=b.querySelector("script").name;uncacheImageUrl(c),b.parentNode.removeChild(b),saved=!1}}function onFileNameChanged(a){var b=a.target,c=b.value.trim(),d=b.parentNode.querySelector("script").title;if(c==d)return!0;if(""==c)return alert("名前は必ず入力してください。"),a.target.focus(),!1;var e=document.querySelector("#fileList script[title='"+c+"']");if(e)return alert("名前が重複しています。"),b.focus(),b.selectionStart=0,b.selectionEnd=c.length,!1;var f=b.parentNode.querySelector("script");return uncacheImageUrl(f.title),f.id="attach-"+c,f.title=c,saved=!1,queuePreview(),!0}function onInsertButtonClicked(a){var b=a.target,c=b.parentNode.querySelector("script"),d=c.innerHTML.match("data:image/.+?;base64,"),e=c.title,f=document.getElementById("editor");if(isVisible(f)){var g;g=d?'<img src="attach:'+e+'">':'<a href="attach:'+e+'">'+e+"</a>",insertToEditor(f,g)}var h=document.getElementById("cssEditor");if(isVisible(h)&&d){var g='url("attach:'+e+'")';insertToEditor(h,g)}}function insertToEditor(a,b){var c=a.value,d=a.selectionStart+b.length,e=c.substring(0,a.selectionStart),f=c.substr(a.selectionEnd);a.value=e+b+f,a.selectionStart=d,a.selectionEnd=d,updateScrollPos(a);var g=document.createEvent("Event");g.initEvent("changeByJs",!1,!1),a.dispatchEvent(g)}function onDownloadButtonClicked(a){var b=a.target,c=b.parentNode.querySelector("script"),d=c.title;getFileBlog(d,function(a){if(window.navigator.msSaveBlob)window.navigator.msSaveBlob(a,d);else{var b=window.URL||window.webkitURL,c=b.createObjectURL(a),e=document.createElement("a");e.download=d,e.href=c;var f=document.createEvent("MouseEvents");f.initMouseEvent("click",!0,!1,self,0,0,0,0,0,!1,!1,!1,!1,0,null),e.dispatchEvent(f),delete e}})}function onEditButtonClicked(a){var b=a.target.parentNode,c=b.querySelector("script"),d=b.querySelector("script.layerContent"),e=b.querySelector("script.trimInfo");addClass(document.querySelector("body"),"drawMode");var f=document.querySelector("nav"),g=document.querySelector("#attach"),h=document.querySelector("#wrapper");hide(f),hide(g),hide(h),drawer.show(c.innerHTML,d.innerHTML,e.innerHTML,function(a,b){d.innerHTML=a,e.innerHTML=b,showBlock(f),showBlock(g),showBlock(h),removeClass(document.querySelector("body"),"drawMode"),uncacheImageUrl(c.title),doPreview()},function(){showBlock(f),showBlock(g),showBlock(h),removeClass(document.querySelector("body"),"drawMode")})}function openFiler(){document.getElementById("attachToggleButton").innerText="添付ファイルを隠す(Alt+↑)",showBlock(document.getElementById("attachForm")),showBlock(document.getElementById("filer")),doLayout()}function closeFiler(){document.getElementById("attachToggleButton").innerText="添付ファイルを表示(Alt+↓)",hide(document.getElementById("attachForm")),hide(document.getElementById("filer")),doLayout()}function openPreview(){var a=document.getElementById("editorTabWrapper"),b=document.getElementById("previewer");isEditMode()&&!isVisible(b)&&(document.getElementById("previewToggleButton").innerText="プレビューを隠す(Alt+→)",removeClass(a,"fullWidth"),showBlock(b),doLayout())}function closePreview(){var a=document.getElementById("editorTabWrapper"),b=document.getElementById("previewer");isEditMode()&&isVisible(b)&&(document.getElementById("previewToggleButton").innerText="プレビューを表示(Alt+←)",addClass(a,"fullWidth"),hide(b),doLayout())}function save(){var a=getHTMLForSave(),b=new Blob([a]);if(window.navigator.msSaveBlob)window.navigator.msSaveBlob(b,document.title+".html");else{var c=window.URL||window.webkitURL,d=c.createObjectURL(b),e=document.createElement("a");e.download=document.title.replace(/^\* /,"")+".html",e.href=d;var f=document.createEvent("MouseEvents");f.initMouseEvent("click",!0,!1,self,0,0,0,0,0,!1,!1,!1,!1,0,null),e.dispatchEvent(f),delete e}}function getHTMLForSave(){var a=document.getElementById("wrapper").scrollTop,b=document.getElementById("previewer").scrollTop;document.querySelector("#updateScriptArea").innerHTML="";var c=document.getElementById("editor");c.innerHTML=c.value.replace(/</g,"<");var d=document.getElementById("cssEditor");d.innerHTML=d.value;var e=isEditMode();1==e&&toggleMode(),addClass(document.querySelector("body"),"initialState"),document.getElementById("previewer").innerHTML="",document.getElementById("messageArea").innerHTML="",document.getElementById("previewerStyle").innerHTML="",document.title.match(/^\* .*/)&&(document.title=document.title.substr("* ".length));for(var f=document.querySelectorAll("*[style]"),g=0;g<f.length;g++){var h=f[g];h.removeAttribute("style")}document.querySelector("#previewer").removeAttribute("class");var i="<!doctype html>\n<html>\n";i+=document.getElementsByTagName("html")[0].innerHTML;var g=i.lastIndexOf("/script>");return i=i.substring(0,g),i+="/script>\n</body>\n</html>",contentAtSave=c.value,saved=!0,doPreview(),removeClass(document.querySelector("body"),"initialState"),1==e&&toggleMode(),document.getElementById("previewer").scrollTop=b,document.getElementById("wrapper").scrollTop=a,i}function updateSavedFlag(){saved=contentAtSave==document.getElementById("editor").value}function headingSyncToPreviewer(){var a=document.getElementById("editor"),b=document.getElementById("previewer"),c=getCurrentNumberOfHeading(a);scrollPreviewerToHeading(b,c)}function headingSyncToEditor(a){var b=document.getElementById("editor"),c=document.getElementById("previewer"),d=getNumberOfHeading(c,a.target);scrollEditorToHeading(b,d)}function getNumberOfHeading(a,b){var c,d=a.querySelectorAll("h1, h2, h3, h4, h5, h6");for(c=0;c<d.length&&d[c]!=b;c++);return c+1}function scrollEditorToHeading(a,b){for(var c,d=a.value,e=processForHeadingSync(d,d.length),f=0,c=0;c<e.length;c++){var g=e[c];if(g.match(/^# .+$/)&&(f++,f==b))break}var h=0;if(0!=c){var i=0;for(h=0;h<d.length;h++){var j=d.charAt(h);if("\n"==j&&(i++,i==c)){h++;break}}}var k=a.value.indexOf("\n",h);k=-1==k?a.value.length:k,a.selectionStart=h,a.selectionEnd=k,updateScrollPos(a),updateSavedFlag(),a.focus()}function getCurrentNumberOfHeading(a){for(var b=a.value,c=a.selectionStart,d=0;c<b.length&&2>d;)"\n"==b.charAt(c)&&d++,c++;c--;var e=processForHeadingSync(b,c);return 2==d&&e[e.length-1].match(/^#{1,6}\s(.+)$/)&&e.pop(),e.join().split("# ").length-1}function scrollPreviewerToHeading(a,b){if(0==b)a.scrollTop=0;else{var c=a.querySelectorAll("h1, h2, h3, h4, h5, h6"),d=c[b-1];a.scrollTop=d.offsetTop-a.offsetTop}}function processForHeadingSync(a,b){var c=a.substring(0,b),d=c.split("\n"),e=[],f=editor.currentStyle||document.defaultView.getComputedStyle(editor,""),g=f.tabSize||f.MozTabSize||8;g=Number(g);var h,i=!1,j=!1;for(h=0;h<d.length;h++){var k=d[h];k=k.replace(new RegExp("^ {"+g+",}.*"),""),k=k.replace(/^\t+.*/,""),k=k.replace(/^\s+|\s+$/g,""),k=k.replace(/^\s*(>\s*)+/,""),1!=i?1!=j?"~~~"!=k.substring(0,3)?"```"!=k.substring(0,3)?!k.match(/^={2,}$|^-{2,}$/)||e[h-1].match(/^#{1,6}\s(.+)$/)||""==e[h-1]?k.match(/^#{1,6}\s(.+)$/)||k.match(/^<h[1-6]>(.*)$/)?e.push("# "+RegExp.$1):e.push(k.replace(/#/g,"")):(e[h-1]="# "+e[h-1],e.push("")):(j=!0,e.push("")):(i=!0,e.push("")):("```"==k&&(j=!1),e.push("")):("~~~"==k&&(i=!1),e.push(""))}return e}function updateScrollPos(a){var b,c=a.value,d=a.selectionStart,e=a.selectionEnd;try{b=document.execCommand("insertText",!1,"X")}catch(f){b=!1}if(b)a.value=c,a.selectionStart=d,a.selectionEnd=d,a.blur(),a.focus(),a.selectionStart=d,a.selectionEnd=e;else{var g=c.substring(0,d),h=c.substr(e);a.value=g+"X"+h,a.selectionStart=g.length,a.selectionEnd=g.length+1;document.execCommand("delete",!1,null);a.value=c,a.selectionStart=d,a.selectionEnd=e}}function showMarkdown(){var a=document.querySelector("#markdownTab").parentNode;addClass(a,"selected");var b=document.querySelector("#editor");showBlock(b),b.focus();var c=document.querySelector("#cssTab").parentNode;removeClass(c,"selected");var d=document.querySelector("#cssEditor");hide(d)}function showCss(){var a=document.querySelector("#markdownTab").parentNode;removeClass(a,"selected");document.querySelector("#editor");hide(document.querySelector("#editor"));var b=document.querySelector("#cssTab").parentNode;addClass(b,"selected");var c=document.querySelector("#cssEditor");showBlock(c),c.focus()}function addAttachEditLayer(a,b){var c=document.createElement("script");c.type="text/template",c.className="editLayer",c.innerHTML=b;var d=document.getElementById("attach-"+a),e=d.parentNode;e.insertBefore(c,d.nextSibling)}function isEditMode(){return isVisible(document.querySelector("#editorTabWrapper"))}function isDrawMode(){return document.querySelector("body").classList.contains("drawMode")}function isEnable(a){return a&&("undefined"==typeof a.disabled||0==a.disabled)}function isVisible(a){var b=a.currentStyle||document.defaultView.getComputedStyle(a,"");if("none"==b.display)return!1;var c="body"==a.tagName.toLowerCase()?null:a.parentNode;return c?isVisible(c):!0}function showBlock(a){a.style.display="",isVisible(a)||(a.style.display="block")}function hide(a){a.style.display="",isVisible(a)&&(a.style.display="none")}function addClass(a,b){a.classList.add(b)}function removeClass(a,b){a.classList.remove(b),""==a.className&&a.removeAttribute("class")}!function(){var a=document.createElement("div");void 0==a.innerText&&Object.defineProperty(HTMLElement.prototype,"innerText",{get:function(){return this.textContent},set:function(a){this.textContent=a}})}();try{new Blob(["temp"])}catch(e){setViewOnly()}var ua=window.navigator.userAgent.toLowerCase();-1==ua.indexOf("chrome")&&-1!=ua.indexOf("safari")&&setViewOnly(),updateKantanVersion(document.getElementById("kantanVersion").value);var eventListeners=[];on("#updateButton","click",function(a){if(a.preventDefault(),!window.confirm("最新版にアップデートします。\n不測の事態に備えて、現在編集中のドキュメントは保存しておくことをお勧めします。\n\n【OK】:アップデート実行(あと何回かダイアログが表示されます)\n【キャンセル】:キャンセル"))return!1;var b=document.createElement("script");return b.src="http://tatesuke.github.io/KanTanMarkdown/kantanUpdate.js",b["class"]="kantanUpdateScript",b.onerror=function(){alert("アップデートに失敗しました。\nアップデート用のファイルにアクセスできませんでした。\nインターネットに接続されていないか、サーバーダウンです")},document.querySelector("#updateScriptArea").appendChild(b),!1});for(var saveValueElements=document.querySelectorAll("#settingMenu input[type=checkbox]"),i=0;i<saveValueElements.length;i++){var element=saveValueElements[i],savedValue=getItem(element.id,null);null!=savedValue&&(element.checked="true"==savedValue),on(element,"change",function(){setItem(this.id,this.checked)})}toKantanEditor(document.getElementById("editor")),toKantanEditor(document.getElementById("cssEditor")),"undefined"!=typeof hljs&&marked.setOptions({highlight:function(a,b){return hljs.highlightAuto(a,[b]).value}});var imageUrlMap={};addClass(document.querySelector("body"),"previewMode"),removeClass(document.querySelector("body"),"editMode"),removeClass(document.querySelector("body"),"initialState"),isEnable(document.getElementById("toggleButton"))&&""==document.getElementById("editor").innerHTML?toggleMode():doPreview(),doLayout(),on(window,"resize",doLayout);var editorScrollBarPos=0,caretStartPos=0,caretEndPos=0,isPreviewerOpened=!0;on("#toggleButton","click",toggleMode),on("#settingAutoSync","change",function(){1==this.checked?this.setAttribute("checked","checked"):this.removeAttribute("checked")}),on("#syncButton","click",doPreview),on("#editor","change",queuePreview),on("#editor","keyup",queuePreview);var previewQueue=null,queuePreviewWait=300;on("#cssEditor","change",cssChanged),on("#cssEditor","keyup",cssChanged),on("#attachButton","change",function(a){var b=a.target,c=b.files;attachFiles(c)}),on("body","dragover",function(a){a.stopPropagation(),a.preventDefault(),a.dataTransfer.dropEffect="copy",addClass(this,"onDragover")}),on("body","drop",function(a){a.stopPropagation(),a.preventDefault(),attachFiles(a.dataTransfer.files),removeClass(this,"onDragover")}),on("body","dragleave",function(a){removeClass(this,"onDragover")}),on(".upButton","click",onUpButtonClicked),on(".downButton","click",onDownButtonClicked),on(".detachButton","click",onDetachButtonClicked);for(var fileNameElems=document.getElementsByClassName("fileName"),i=0;i<fileNameElems.length;i++){var fileNameElem=fileNameElems[i],script=fileNameElem.parentNode.querySelector("script"),fileName=script.title;fileNameElem.value=fileName}on("#fileList input","blur",onFileNameChanged),on(".insertButton","click",onInsertButtonClicked),on(".downloadButton","click",onDownloadButtonClicked);var drawer=new KantanDrawer(document.querySelector("#drawArea"));on(".editButton","click",onEditButtonClicked),on("#attachToggleButton","click",function(){isVisible(document.getElementById("filer"))?closeFiler():openFiler()}),on("#previewToggleButton","click",function(){isVisible(document.getElementById("previewer"))?closePreview():openPreview()});var contentAtSave=editor.value;on("#saveButton","click",save);var saved=!0;window.onbeforeunload=function(){return saved?void 0:"ドキュメントが保存されていません。"},on("#editor","input",updateSavedFlag),on("#onlineMenuButton","click",function(){var a=document.getElementById("onlineMenu");a.style.top=this.offsetTop+this.scrollHeight+"px",showBlock(a)}),on("body","click",function(a){var b=document.getElementById("onlineMenuButton");a.target!=b&&hide(document.getElementById("onlineMenu"))}),on("#settingMenuButton","click",function(){var a=document.getElementById("settingMenu");a.style.top=this.offsetTop+this.scrollHeight+"px",a.style.left=this.offsetLeft+"px",showBlock(a)}),on("body","click",function(a){var b=a.target,c=document.getElementById("settingMenuButton");if(b==c)return!0;for(var d=document.getElementById("settingMenu");null!=b;){if(b==d)return!0;b=b.parentNode}hide(d)}),on("#headingSyncButton","click",headingSyncToPreviewer),on("#previewer","previewed",function(a){if(isEditMode())for(var b=a.target.querySelectorAll("h1, h2, h3, h4, h5, h6"),c=0;c<b.length;c++)b[c].onmouseover=function(){this.style.cursor="pointer"},b[c].onclick=headingSyncToEditor}),on("#previewer","prepreview",function(a){for(var b=document.getElementById("previewer").querySelectorAll("h1, h2, h3, h4, h5, h6"),c=0;c<b.length;c++)b[c].onmouseover=null,b[c].onclick=null}),on("#markdownTab","click",function(a){return a.preventDefault(),showMarkdown(),!1}),on("#cssTab","click",function(a){return a.preventDefault(),showCss(a),!1}),on("#pasteArea","paste",function(a){if(!a.clipboardData||!a.clipboardData.types)return!0;for(var b=!1,c=0;c<a.clipboardData.types.length;c++)if("Files"==a.clipboardData.types[c]){b=!0;break}if(0==b)return!0;a.preventDefault();for(var c=0;c<a.clipboardData.items.length;c++)attachFile(a.clipboardData.items[c].getAsFile(),"clipboard");return!1}),on("#pasteArea","keyup",function(a){a.preventDefault();var b=document.createElement("div");b.innerHTML=this.innerHTML;var c=b.querySelector("img");if(c){var d=c.src;addAttachFileElement("clipboard",d,"","",!0)}return this.innerHTML="ここをクリックしてCtrl+V(Cmd+V)するとクリップボードの画像を添付できます。",!1}),on("body","keydown",function(a){var b=a.keyCode?a.keyCode:a.which;if(isDrawMode())return 83==b&&(a.ctrlKey||a.metaKey)?(a.preventDefault(),!1):!0;if(27==b){a.preventDefault();var c=document.getElementById("onlineMenu");if(isVisible(c))hide(c);else{var d=document.getElementById("toggleButton");isEnable(d)&&d.click()}return!1}if(83==b&&(a.ctrlKey||a.metaKey)){a.preventDefault();var e=document.getElementById("saveButton");return isEnable(e)&&e.click(),!1}if(116==b||82==b&&(a.ctrlKey||a.metaKey)){a.preventDefault();var f=document.getElementById("syncButton");return isEnable(f)&&f.click(),!1}if(112==b){a.preventDefault();var g=document.getElementById("helpButton");return g.click(),!1}if(37==b&&a.altKey)return a.preventDefault(),openPreview(),!1;if(38==b&&a.altKey)return a.preventDefault(),closeFiler(),!1;if(39==b&&a.altKey)return a.preventDefault(),closePreview(),!1;if(40==b&&a.altKey)return a.preventDefault(),openFiler(),!1;if(113==b){a.preventDefault();var h=document.getElementById("headingSyncButton");return h.click(),!1}return!0});
</script>
</body>
</html>