TheDesk Akane beta-phase:1
This commit is contained in:
parent
5473c22fe5
commit
7f64bd6d2a
|
@ -1,5 +1,13 @@
|
|||
/*共通CSS*/
|
||||
html,body{overflow:hidden; user-select: none; cursor:default; font-size:13px;height: 100vh; background-color: var(--bg); color: var(--color);}
|
||||
html,body{
|
||||
overflow:hidden;
|
||||
user-select: none;
|
||||
cursor:default;
|
||||
font-size:13px;
|
||||
height: 100vh;
|
||||
background-color: var(--bg);
|
||||
color: var(--color);
|
||||
}
|
||||
.btn {
|
||||
margin: 5px;
|
||||
text-transform: none;
|
||||
|
@ -54,6 +62,10 @@ option {
|
|||
.pointer {
|
||||
cursor: pointer;
|
||||
}
|
||||
.badge{
|
||||
min-width: 0 !important;
|
||||
margin-left: 5px !important;
|
||||
}
|
||||
.bbcode-pulse-loadings, .bbcode-pulse-loading, .fa-pulse {
|
||||
display: inline-block;
|
||||
animation-duration: 3s;
|
||||
|
@ -212,6 +224,7 @@ blockquote:before, .quote:before {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/*スクロールバー*/
|
||||
::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
|
@ -226,6 +239,6 @@ blockquote:before, .quote:before {
|
|||
::-webkit-scrollbar-thumb {
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background: #9e9e9e;
|
||||
background: #607d8b;
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
/*トゥートボックス向けCSS*/
|
||||
#post-box {
|
||||
position: fixed;
|
||||
right: 78px;
|
||||
bottom: 3px;
|
||||
left: 78px;
|
||||
bottom: -500px;
|
||||
background-color: var(--postbox);
|
||||
border: thin solid gray;
|
||||
z-index: 500;
|
||||
z-index: 501;
|
||||
width: 300px;
|
||||
min-width:300px;
|
||||
max-width:100%;
|
||||
|
|
|
@ -1,13 +1,42 @@
|
|||
.drag-content{
|
||||
width:300px;
|
||||
max-width:100%;
|
||||
height:30px;
|
||||
height:300px;
|
||||
text-overflow: ellipsis;
|
||||
cursor:move;
|
||||
user-select: none;
|
||||
background-color:black;
|
||||
background-color:var(--modalfooter);
|
||||
margin:5px;
|
||||
border-radius:5px;
|
||||
color:white;
|
||||
color:var(--color);
|
||||
padding:3px;
|
||||
font-family:Open Sans;
|
||||
font-size:20px;
|
||||
flex-grow:1;
|
||||
text-align: center;
|
||||
padding:10px;
|
||||
}
|
||||
#sort{
|
||||
display:flex;
|
||||
flex-direction:row;
|
||||
overflow-x:scroll;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
width:100vw;
|
||||
|
||||
}
|
||||
#sort-box{
|
||||
position:absolute;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width:100vw;
|
||||
height:calc(100vh - 40px);
|
||||
background-color: rgba(0, 0, 0, 0.8);
|
||||
z-index:10002;
|
||||
}
|
||||
#sort-box button{
|
||||
background-color: var(--notfbox);
|
||||
color:var(--color);
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
--modal:white;
|
||||
--subcolor:#e0e0e0;
|
||||
--box:white;
|
||||
--sidebar:#e0e0e0;
|
||||
--sidebar:#eeeeee;
|
||||
--shared:#cfd8dc;
|
||||
--notfbox:white;
|
||||
--emphasized:#81c784;
|
||||
|
|
104
app/css/tl.css
104
app/css/tl.css
|
@ -7,55 +7,61 @@
|
|||
overflow-x: scroll;
|
||||
overflow-y: hidden;
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
height: calc(100vh - 40px);
|
||||
flex-grow:4;
|
||||
}
|
||||
#sidebar{
|
||||
width:75px;
|
||||
min-width:75px;
|
||||
height:100vh;
|
||||
#bottom{
|
||||
position:absolute;
|
||||
bottom:0;
|
||||
width:100vw;
|
||||
height:40px;
|
||||
padding:3px;
|
||||
padding-right:40px;
|
||||
background-color:var(--sidebar);
|
||||
display:flex;
|
||||
flex-direction: row-reverse;
|
||||
justify-content: space-between;
|
||||
flex-wrap:wrap;
|
||||
z-index:500;
|
||||
box-shadow: 10px 0 10px 10px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
#sidebar-top{
|
||||
height:calc(100vh - 100px);
|
||||
display:flex;
|
||||
flex-wrap:wrap;
|
||||
align-content:flex-start;
|
||||
overflow-y:scroll;
|
||||
overflow-x:hidden;
|
||||
#bottom #dambox{
|
||||
width:300px;
|
||||
}
|
||||
#sidebar-btm{
|
||||
height:9em;
|
||||
display:flex;
|
||||
flex-wrap:wrap;
|
||||
align-content:flex-end;
|
||||
#bottom .trendtag{
|
||||
height:40px;
|
||||
}
|
||||
#sidebar div{
|
||||
width:100%;
|
||||
vertical-align:text-bottom;
|
||||
#bottom #group{
|
||||
margin-right:40px;
|
||||
}
|
||||
#sidebar a{
|
||||
#bottom .leftside{
|
||||
display:flex; flex-direction: row-reverse;
|
||||
}
|
||||
#bottom #tips img{
|
||||
vertical-align: -3px;
|
||||
}
|
||||
#bottom a{
|
||||
color:var(--color);
|
||||
}
|
||||
#sidebar .big-menu{
|
||||
text-align:center;
|
||||
#bottom i{
|
||||
font-size:30px;
|
||||
}
|
||||
#sidebar .big-menu i.big-icon{
|
||||
font-size:5em;
|
||||
#bottom .btnsgroup{
|
||||
border:1px solid;
|
||||
padding:1px;
|
||||
padding-left:5px;
|
||||
padding-right:5px;
|
||||
margin-right:15px;
|
||||
border-radius:5px;
|
||||
}
|
||||
#sidebar .small-menu i{
|
||||
font-size:2rem;
|
||||
.btnsgroup .grouptitle{
|
||||
font-family:Open Sans;
|
||||
font-size:15px;
|
||||
}
|
||||
#sidebar .small-menu .side-label{
|
||||
font-size:12px;
|
||||
vertical-align: 0.6rem;
|
||||
@media screen and (max-width: 1344px) {
|
||||
.btnsgroup .grouptitle{ display: none; }
|
||||
#tips{ display: none; }
|
||||
}
|
||||
#sidebar .side-dead{
|
||||
height:30px;
|
||||
}
|
||||
|
||||
iframe {
|
||||
max-width:100%;
|
||||
}
|
||||
|
@ -112,7 +118,7 @@ iframe {
|
|||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: 43px 2fr 1fr;
|
||||
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'icon toot toot' 'vis additional additional' 'actions actions actions';
|
||||
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'icon toot toot' 'vis additional additional' 'actions actions side';
|
||||
}
|
||||
|
||||
.area-notice {
|
||||
|
@ -145,10 +151,6 @@ justify-content:space-between;
|
|||
overflow:hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.flex-time{
|
||||
|
||||
}
|
||||
|
||||
|
||||
.area-toot {
|
||||
cursor:text;
|
||||
|
@ -175,7 +177,7 @@ grid-area: toot;
|
|||
top:-20px;
|
||||
display:flex;
|
||||
justify-content:space-around;
|
||||
width:300px;
|
||||
width:250px;
|
||||
max-width:100%;
|
||||
grid-area: actions;
|
||||
}
|
||||
|
@ -184,7 +186,18 @@ grid-area: toot;
|
|||
font-size:0.5rem !important;
|
||||
grid-area: vis;
|
||||
}
|
||||
|
||||
.area-side {
|
||||
display:flex;
|
||||
justify-content:flex-end;
|
||||
margin:2px;
|
||||
grid-area: side;
|
||||
}
|
||||
.area-side i{
|
||||
margin-left:10px;
|
||||
}
|
||||
.viabadge{
|
||||
margin-top:10px;
|
||||
}
|
||||
.action i{
|
||||
font-size:1rem;
|
||||
}
|
||||
|
@ -258,9 +271,9 @@ p:not(:last-child){
|
|||
z-index:500;
|
||||
padding:5px;
|
||||
display: grid;
|
||||
grid-template-columns: 40px 1fr 1fr 1fr;
|
||||
grid-template-columns: 40px 48px 1fr 24px;
|
||||
grid-template-rows: 30px 30px;
|
||||
grid-template-areas: 'notice notice_name notice_name notice_name' 'notice a1 a2 a3' 'notf-box notf-box notf-box notf-box';
|
||||
grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box';
|
||||
}
|
||||
.emp{
|
||||
font-weight: bold;
|
||||
|
@ -283,7 +296,10 @@ p:not(:last-child){
|
|||
text-align: center;
|
||||
grid-area: a1;
|
||||
}
|
||||
|
||||
.area-sta {
|
||||
text-align: center;
|
||||
grid-area: sta;
|
||||
}
|
||||
.area-a2 {
|
||||
text-align: center;
|
||||
grid-area: a2;
|
||||
|
|
419
app/index.html
419
app/index.html
|
@ -18,14 +18,13 @@
|
|||
<script type="text/javascript" src="./js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="./js/common/materialize.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/tips.js"></script>
|
||||
<script type="text/javascript" src="./js/common/time.js"></script>
|
||||
<script type="text/javascript" src="./js/common/version.js"></script>
|
||||
<script type="text/javascript" src="./js/common/keyshortcut.js"></script>
|
||||
<script type="text/javascript" src="./js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Mio (15.10.0)";
|
||||
var ver="Akane (16.0.0) beta";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//var ver="beta";
|
||||
var acct_id=0;
|
||||
|
@ -42,229 +41,9 @@ var tlid=0;
|
|||
<button class="btn waves-effect" onclick="closedrop()" data-trans="close">閉じる</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--カラム追加-->
|
||||
<div id="add-box" class="hide z-depth-4 notf-box">
|
||||
<div class="input-field"><span data-trans="your_acct">アカウント選択</span>
|
||||
<br>
|
||||
<select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select>
|
||||
<label></label>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<div id="auth">
|
||||
<select id="type-sel" style="color:black">
|
||||
<option value="local" data-trans="local">ローカル</option>
|
||||
<option value="local-media" data-trans="local-media">ローカル(メディア)</option>
|
||||
<option value="home" data-trans="home">ホーム</option>
|
||||
<option value="pub" data-trans="public">連合</option>
|
||||
<option value="pub-media" data-trans="public-media">連合(メディア)</option>
|
||||
<option value="dm" data-trans="dm">ダイレクトメッセージ</option>
|
||||
<option value="mix" data-trans="integrated">統合(ローカルとホーム)</option>
|
||||
<option value="plus" data-trans="plus">統合(ローカルとブースト・リプライ)</option>
|
||||
<option value="notf" data-trans="notification">通知</option>
|
||||
</select>
|
||||
<label data-trans="show_tl">表示するタイムライン</label>
|
||||
</div>
|
||||
<div id="noauth" class="hide">表示するタイムライン
|
||||
<input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" placeholder="e.g:mstdn.jp">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" data-trans-i="add">
|
||||
<i class="material-icons left">add</i>追加
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
<button class="btn waves-effect orange " style="width:calc( 100% - 10px);" onclick="addToggle()" data-trans-i="close">
|
||||
<i class="material-icons left">close</i>閉じる
|
||||
</button>
|
||||
</div>
|
||||
<!--検索-->
|
||||
<div id="src-box" class="hide notf-box z-depth-4" style="width:500px">
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div><div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
|
||||
<label for="src" data-trans="src">検索</label>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left">search</i>検索
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search">
|
||||
<div id="src-contents">
|
||||
</div>
|
||||
<button class="btn waves-effect orange " style="width:calc( 100% - 10px);" onclick="srcToggle()">
|
||||
<i class="material-icons left" data-trans-i="close">close</i>閉じる
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--並べ替え-->
|
||||
<div id="sort-box" class="hide notf-box z-depth-4">
|
||||
<ul id="sort"></ul>
|
||||
<button onclick="sort()" class="btn waves-effect light-blue nex" style="width:100%; max-width:200px;" data-trans-i="sort">
|
||||
<i class="material-icons left">sort</i>並べ替え設定
|
||||
</button>
|
||||
<button class="btn waves-effect orange " style="width:calc( 100% - 10px);" onclick="sortToggle()" data-trans-i="close">
|
||||
<i class="material-icons left">close</i>閉じる
|
||||
</button>
|
||||
</div>
|
||||
<!--リスト-->
|
||||
<div id="list-box" class="hide notf-box z-depth-4">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="list-acct-sel" class="acct-sel"></select>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="list()" data-trans-i="lists">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<br><br>
|
||||
<div id="lists"></div>
|
||||
<div id="lists-user"></div>
|
||||
<input type="text" style="width:150px" id="list-add" placeholder="タイトル">
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewList()">新規作成</button>
|
||||
</div>
|
||||
<!--フィルター-->
|
||||
<div id="filter-box" class="hide notf-box z-depth-4">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="filter-acct-sel" class="acct-sel"></select>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="filter()" data-trans-i="filters">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<div id="filtered-words"></div>
|
||||
<input type="hidden" id="filter-edit-id">
|
||||
<input type="text" style="width:150px" id="filter-add-word" placeholder="フィルターワード"><br>
|
||||
適用範囲<br>
|
||||
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
|
||||
<label for="home_filter">ホーム</label>
|
||||
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
|
||||
<label for="local_filter">ローカル</label>
|
||||
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
|
||||
<label for="notf_filter">通知</label>
|
||||
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
|
||||
<label for="conv_filter">会話</label><br>
|
||||
オプション<br>
|
||||
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
|
||||
<label for="wholeword_filter">単語マッチ</label><br>
|
||||
<span class="sml">非ラテン系の文字列では「単語マッチ」は推奨されません。</span><br>
|
||||
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
|
||||
<label for="except_filter">除外</label><br>
|
||||
<span class="sml">「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。</span><br>
|
||||
有効期限(あと)<span class="sml">未指定(または0分)で「無制限」になります。<b>仕様上数値の正確性を保証できません。</b></span><br><br>
|
||||
<input type="text" style="width:50px" id="days_filter" placeholder="d" value="0">日
|
||||
<input type="text" style="width:50px" id="hours_filter" placeholder="h" value="0">時間
|
||||
<input type="text" style="width:50px" id="mins_filter" placeholder="m" value="0">分
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">追加</button><br>
|
||||
<span class="sml">Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。</span>
|
||||
</div>
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
まずは右のアカウントボタンからアカウントを追加してください。<br>
|
||||
右のカラム追加ボタンで認証せずにローカルタイムラインを見ることもできます。
|
||||
</div>
|
||||
<!--サイドバー-->
|
||||
<div id="sidebar">
|
||||
<div id="sidebar-top">
|
||||
<div class="side-dead"></div>
|
||||
<div class="big-menu" id="add-tgl">
|
||||
<a onclick="addToggle()" class="nex waves-effect" data-trans-i="add">
|
||||
<i class="material-icons nex big-icon" title="カラム追加" data-trans-title="column_add">add</i>
|
||||
</a>
|
||||
<br>
|
||||
<span class="side-label" data-trans="column_add">カラム追加</span>
|
||||
</div>
|
||||
<div class="big-menu">
|
||||
<a href="acct.html" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="アカウントマネージャー(Ctrl+Shift+M)" data-trans-title="manager">account_circle</i>
|
||||
</a>
|
||||
<br>
|
||||
<span class="side-label" data-trans="manager_short">アカウント</span>
|
||||
</div>
|
||||
<div class="big-menu" id="sort-tgl">
|
||||
<a onclick="sortToggle()" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="カラム一覧/並べ替え" data-trans-title="sort">sort</i>
|
||||
</a>
|
||||
<br>
|
||||
<span class="side-label" data-trans="sort">カラム一覧</span>
|
||||
</div>
|
||||
<div class="side-dead">
|
||||
</div>
|
||||
<div class="small-menu" id="src-tgl">
|
||||
<a onclick="srcToggle()" class="nex waves-effect">
|
||||
<i class="material-icons" title="検索" data-trans-title="src">search</i>
|
||||
<span class="side-label" data-trans="src">検索</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a href="setting.html" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="設定(Ctrl+Shift+S)" data-trans-title="setting">settings</i>
|
||||
<span class="side-label" data-trans="setting">設定</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu" id="list-tgl">
|
||||
<a onclick="listToggle()" class="nex waves-effect">
|
||||
<i class="material-icons" title="リスト" data-trans-title="list">view_headline</i>
|
||||
<span class="side-label" data-trans="list">リスト</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu" id="filter-tgl">
|
||||
<a onclick="filterToggle()" class="nex waves-effect">
|
||||
<i class="material-icons" title="フィルター" data-trans-title="filter">filter_list</i>
|
||||
<span class="side-label" data-trans="filter">Filter</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a href="index.html" class="nex mize waves-effect">
|
||||
<i class="material-icons nex" title="スーパーリロード(F5/⌘+R)" data-trans-title="reload">refresh</i>
|
||||
<span class="side-label" data-trans="reload">再読込</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a onclick="window.open('https://astarte.thedesk.top');" class="setting nex waves-effect" target="_blank" id="ranking-btn" style="display:none;">
|
||||
<i class="material-icons nex" title="アスタルテランキング">timeline</i>
|
||||
<span class="side-label">暇ラン</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a onclick="nano()" class="nex waves-effect">
|
||||
<i class="material-icons" title="最小のマストドン。TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
|
||||
<span class="side-label" data-trans="nano">Nano</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id="side-dead">
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a onclick="xpand()" class="nex waves-effect">
|
||||
<i class="material-icons" title="サイドバーの開閉" data-trans-title="sidebar_xpand" id="x-btn">keyboard_arrow_right</i>
|
||||
<span class="side-label" data-trans="sidebar_xpand_short">たたむ</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="sidebar-btm">
|
||||
<!--最小化-->
|
||||
<div id="menu-btn" class="big-menu" onclick="show()" style="display:none;">
|
||||
<a class="waves-effect">
|
||||
<i class="material-icons big-icon">mode_edit</i>
|
||||
<br>
|
||||
<span class="side-label" data-trans="post">投稿</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="post-box" class="z-depth-3">
|
||||
<!--トゥートボックス-->
|
||||
|
||||
<div class="row" style="margin-bottom:0;">
|
||||
</span>
|
||||
<div class="" style="float:left;">
|
||||
|
@ -770,13 +549,209 @@ var tlid=0;
|
|||
<i class="material-icons pointer" onclick="endPip()">close</i>
|
||||
<div id="pip-content">
|
||||
</div>
|
||||
</div>
|
||||
<!--カラム追加-->
|
||||
<div id="add-box" class="hide z-depth-4 notf-box">
|
||||
<div class="input-field"><span data-trans="your_acct">アカウント選択</span>
|
||||
<br>
|
||||
<select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select>
|
||||
<label></label>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<div id="auth">
|
||||
<select id="type-sel" style="color:black">
|
||||
<option value="local" data-trans="local">ローカル</option>
|
||||
<option value="local-media" data-trans="local-media">ローカル(メディア)</option>
|
||||
<option value="home" data-trans="home">ホーム</option>
|
||||
<option value="pub" data-trans="public">連合</option>
|
||||
<option value="pub-media" data-trans="public-media">連合(メディア)</option>
|
||||
<option value="dm" data-trans="dm">ダイレクトメッセージ</option>
|
||||
<option value="mix" data-trans="integrated">統合(ローカルとホーム)</option>
|
||||
<option value="plus" data-trans="plus">統合(ローカルとブースト・リプライ)</option>
|
||||
<option value="notf" data-trans="notification">通知</option>
|
||||
</select>
|
||||
<label data-trans="show_tl">表示するタイムライン</label>
|
||||
</div>
|
||||
<div id="noauth" class="hide">表示するタイムライン
|
||||
<input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" placeholder="e.g:mstdn.jp">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" data-trans-i="add">
|
||||
<i class="material-icons left">add</i>追加
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
<!--検索-->
|
||||
<div id="src-box" class="hide notf-box z-depth-4" style="width:500px">
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div><div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
|
||||
<label for="src" data-trans="src">検索</label>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left">search</i>検索
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
<div id="search">
|
||||
<div id="src-contents">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--並べ替え-->
|
||||
<div id="sort-box" class="hide">
|
||||
<ul id="sort"></ul>
|
||||
<div>
|
||||
<button onclick="sort()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="sort">
|
||||
<i class="material-icons left">sort</i>並べ替え設定
|
||||
</button>
|
||||
<button onclick="sortToggle()" class="btn waves-effect nex" style="width:100%; max-width:300px;" data-trans-i="close">
|
||||
<i class="material-icons left">close</i>閉じる
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--リスト-->
|
||||
<div id="list-box" class="hide notf-box z-depth-4">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="list-acct-sel" class="acct-sel"></select>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="list()" data-trans-i="lists">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<br><br>
|
||||
<div id="lists"></div>
|
||||
<div id="lists-user"></div>
|
||||
<input type="text" style="width:150px" id="list-add" placeholder="タイトル">
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewList()">新規作成</button>
|
||||
</div>
|
||||
<!--フィルター-->
|
||||
<div id="filter-box" class="hide notf-box z-depth-4">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="filter-acct-sel" class="acct-sel"></select>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="filter()" data-trans-i="filters">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<div id="filtered-words"></div>
|
||||
<input type="hidden" id="filter-edit-id">
|
||||
<input type="text" style="width:150px" id="filter-add-word" placeholder="フィルターワード"><br>
|
||||
適用範囲<br>
|
||||
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
|
||||
<label for="home_filter">ホーム</label>
|
||||
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
|
||||
<label for="local_filter">ローカル</label>
|
||||
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
|
||||
<label for="notf_filter">通知</label>
|
||||
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
|
||||
<label for="conv_filter">会話</label><br>
|
||||
オプション<br>
|
||||
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
|
||||
<label for="wholeword_filter">単語マッチ</label><br>
|
||||
<span class="sml">非ラテン系の文字列では「単語マッチ」は推奨されません。</span><br>
|
||||
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
|
||||
<label for="except_filter">除外</label><br>
|
||||
<span class="sml">「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。</span><br>
|
||||
有効期限(あと)<span class="sml">未指定(または0分)で「無制限」になります。<b>仕様上数値の正確性を保証できません。</b></span><br><br>
|
||||
<input type="text" style="width:50px" id="days_filter" placeholder="d" value="0">日
|
||||
<input type="text" style="width:50px" id="hours_filter" placeholder="h" value="0">時間
|
||||
<input type="text" style="width:50px" id="mins_filter" placeholder="m" value="0">分
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">追加</button><br>
|
||||
<span class="sml">Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。</span>
|
||||
</div>
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
まずは右のアカウントボタンからアカウントを追加してください。<br>
|
||||
右のカラム追加ボタンで認証せずにローカルタイムラインを見ることもできます。
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--bottom-->
|
||||
<div id="bottom">
|
||||
<div class="leftside">
|
||||
<div id="dambox">
|
||||
<input type="text" id="posttgl" placeholder="トゥート" style="height:2rem">
|
||||
</div>
|
||||
<div class="leftside" id="group">
|
||||
<div class="btnsgroup"><span class="grouptitle">Columns:</span>
|
||||
<a onclick="addToggle()" class="nex waves-effect" data-trans-i="add" id="add-tgl">
|
||||
<i class="material-icons nex" title="カラム追加" data-trans-title="column_add">add</i>
|
||||
</a>
|
||||
<a onclick="sortToggle()" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="カラム一覧/並べ替え" data-trans-title="sort">sort</i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btnsgroup"><span class="grouptitle">Accounts:</span>
|
||||
<a href="acct.html" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="アカウントマネージャー(Ctrl+Shift+M)" data-trans-title="manager">account_circle</i>
|
||||
</a>
|
||||
<a onclick="srcToggle()" class="nex waves-effect" id="src-tgl">
|
||||
<i class="material-icons" title="検索" data-trans-title="src">search</i>
|
||||
</a>
|
||||
<a onclick="listToggle()" class="nex waves-effect" id="list-tgl">
|
||||
<i class="material-icons" title="リスト" data-trans-title="list">view_headline</i>
|
||||
</a>
|
||||
<a onclick="filterToggle()" class="nex waves-effect" id="filter-tgl">
|
||||
<i class="material-icons" title="フィルター" data-trans-title="filter">filter_list</i>
|
||||
</a>
|
||||
</div>
|
||||
<div class="btnsgroup"><span class="grouptitle">Preferances:</span>
|
||||
<a href="setting.html" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="設定(Ctrl+Shift+S)" data-trans-title="setting">settings</i>
|
||||
</a>
|
||||
<a href="index.html" class="nex mize waves-effect">
|
||||
<i class="material-icons nex" title="スーパーリロード(F5/⌘+R)" data-trans-title="reload">refresh</i>
|
||||
</a>
|
||||
<a onclick="nano()" class="nex waves-effect">
|
||||
<i class="material-icons" title="最小のマストドン。TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
|
||||
</a>
|
||||
<a onclick="window.open('https://astarte.thedesk.top');" class="setting nex waves-effect" target="_blank" id="ranking-btn" style="display:none;">
|
||||
<i class="material-icons nex" title="アスタルテランキング">timeline</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div id="tips-menu">
|
||||
<div class="btnsgroup" style="height:34px"><span class="grouptitle">Tips:</span>
|
||||
<a onclick="tips('ver')" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="バージョン" data-trans-title="ver">info</i>
|
||||
</a>
|
||||
<a onclick="tips('clock')" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="時計" data-trans-title="clock">access_time</i>
|
||||
</a>
|
||||
<a onclick="tips('memory')" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="メモリ" data-trans-title="memory">memory</i>
|
||||
</a>
|
||||
<a onclick="tips('trend')" class="nex waves-effect imasonly" style="display:none;">
|
||||
<i class="material-icons nex" title="アイマストドントレンド" data-trans-title="trendtip">whatshot</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="tips" class="hide">
|
||||
<a onclick="tipsToggle()" class="nex waves-effect" style="float:left">
|
||||
<i class="material-icons nex" title="Tipsの変更" data-trans-title="tips">bubble_chart</i>
|
||||
</a>
|
||||
<div id="tips-text" style="float:left; width:300px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--左下メッセージ-->
|
||||
<div id="message">
|
||||
</div>
|
||||
<!--Radio Happy(Yui) Taku Inoue-->
|
||||
<audio src="" id="radio"></audio>
|
||||
<!--JS-->
|
||||
<script type="text/javascript" src="./js/ui/tips.js"></script>
|
||||
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
|
||||
<script type="text/javascript" src="./js/common/about.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/parse.js"></script>
|
||||
|
|
|
@ -52,17 +52,23 @@ $(function($) {
|
|||
//Ctrl+Sift+N:NowPlaying
|
||||
if (event.ctrlKey && event.shiftKey) {
|
||||
if (e.keyCode === 78) {
|
||||
show();
|
||||
nowplaying()
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//input/textareaにフォーカスなし時
|
||||
if (!hasFocus && !hasFocus2) {
|
||||
//Ctrl+V:いつもの
|
||||
if (event.ctrlKey) {
|
||||
if (e.keyCode === 86) {
|
||||
show();
|
||||
}
|
||||
}
|
||||
//X:開閉
|
||||
if (e.keyCode === 88) {
|
||||
if ($("#post-box").hasClass("hidenbox")) {
|
||||
if (!$("#post-box").hasClass("appear")) {
|
||||
show();
|
||||
$('textarea').focus();
|
||||
} else {
|
||||
hide();
|
||||
}
|
||||
|
@ -70,16 +76,18 @@ $(function($) {
|
|||
}
|
||||
//N:新トゥート
|
||||
if (e.keyCode === 78) {
|
||||
if ($("#post-box").hasClass("hidenbox")) {
|
||||
if (!$("#post-box").hasClass("appear")) {
|
||||
show();
|
||||
}
|
||||
$('textarea').focus();
|
||||
return false;
|
||||
}
|
||||
//E:拡張On/Off
|
||||
if (e.keyCode === 69) {
|
||||
zoomBox();
|
||||
return false;
|
||||
//Ctrl+E:全ての通知未読を既読にする
|
||||
if (event.ctrlKey) {
|
||||
if (e.keyCode === 69) {
|
||||
allNotfRead();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//Ctrl+Space:読み込み
|
||||
if (event.ctrlKey) {
|
||||
|
|
|
@ -19,65 +19,6 @@ function verck(ver) {
|
|||
|
||||
var l = 5;
|
||||
|
||||
// 生成する文字列に含める文字セット
|
||||
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var electron = require("electron");
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
if(platform=="darwin"){
|
||||
var newest=mess.desk_mac;
|
||||
}else{
|
||||
var newest=mess.desk;
|
||||
}
|
||||
var cl = c.length;
|
||||
var r = "";
|
||||
for(var i=0; i<l; i++){
|
||||
r += c[Math.floor(Math.random()*cl)];
|
||||
}
|
||||
var start = "https://thedesk.top/ver.json";
|
||||
fetch(start, {
|
||||
method: 'GET'
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(mess) {
|
||||
console.log(mess);
|
||||
if (mess) {
|
||||
if (newest == ver) {
|
||||
todo("お使いのバージョン" + mess.desk + "は最新です。");
|
||||
//betaならアプデチェックしない
|
||||
} else if (ver != "beta") {
|
||||
localStorage.removeItem("instance")
|
||||
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('update', "true");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
//バージョンチェッカー
|
||||
function verck(ver) {
|
||||
if(localStorage.getItem("ver")!=ver){
|
||||
localStorage.setItem("ver", ver);
|
||||
console.log("Thank you for your update");
|
||||
$(document).ready(function(){
|
||||
$('#releasenote').modal('open');
|
||||
verp=ver.replace( '(', '');
|
||||
verp=verp.replace( '.', '-');
|
||||
verp=verp.replace( '.', '-');
|
||||
verp=verp.replace( '[', '-');
|
||||
verp=verp.replace( ']', '');
|
||||
verp=verp.replace( ')', '');
|
||||
verp=verp.replace( ' ', '_');
|
||||
console.log(verp);
|
||||
$("#release-"+verp).show();
|
||||
});
|
||||
}
|
||||
|
||||
var l = 5;
|
||||
|
||||
// 生成する文字列に含める文字セット
|
||||
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
||||
|
@ -108,7 +49,7 @@ function verck(ver) {
|
|||
if (newest == ver) {
|
||||
todo("お使いのバージョン" + mess.desk + "は最新です。");
|
||||
//betaならアプデチェックしない
|
||||
} else if (ver != "beta") {
|
||||
} else if (ver.indexOf("beta")==-1) {
|
||||
localStorage.removeItem("instance")
|
||||
if(localStorage.getItem("new-ver-skip")){
|
||||
if(localStorage.getItem("next-ver")!=newest){
|
||||
|
|
|
@ -268,6 +268,7 @@ function ckdb(acct_id) {
|
|||
$("#ranking-btn").show();
|
||||
}else if(domain=="imastodon.net"){
|
||||
localStorage.setItem("imas", "true");
|
||||
$(".imasonly").show();
|
||||
}
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var bbcode = domain + "_bbcode";
|
||||
|
|
|
@ -242,6 +242,10 @@ function support() {
|
|||
function login(url) {
|
||||
var multi = localStorage.getItem("multi");
|
||||
var obj = JSON.parse(multi);
|
||||
if(url=="misskey.xyz"){
|
||||
misskeyLogin();
|
||||
return;
|
||||
}
|
||||
if($('#linux:checked').val()=="on"){
|
||||
var red = "urn:ietf:wg:oauth:2.0:oob"
|
||||
}else{
|
||||
|
@ -286,6 +290,54 @@ function login(url) {
|
|||
}
|
||||
|
||||
|
||||
}
|
||||
//これが後のMisskeyである。
|
||||
function misskeyLogin() {
|
||||
var multi = localStorage.getItem("multi");
|
||||
var obj = JSON.parse(multi);
|
||||
var start = "https://misskey.xyz/api/auth/session/generate";
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = 'json';
|
||||
httpreq.send(JSON.stringify({
|
||||
appSecret: "D8Zoa1CFA12SeeJpAZDMc2VyAqtjqXZV"
|
||||
}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState == 4) {
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
const {
|
||||
shell
|
||||
} = require('electron');
|
||||
|
||||
shell.openExternal(json.url);
|
||||
var electron = require("electron");
|
||||
|
||||
/*
|
||||
var auth = "https://" + url + "/oauth/authorize?client_id=" + json[
|
||||
"client_id"] + "&client_secret=" + json["client_secret"] +
|
||||
"&response_type=code&scope=read+write+follow&redirect_uri=" + red;
|
||||
localStorage.setItem("domain_tmp", url);
|
||||
localStorage.setItem("client_id", json["client_id"]);
|
||||
localStorage.setItem("client_secret", json["client_secret"]);
|
||||
$("#auth").show();
|
||||
$("#add").hide();
|
||||
const {
|
||||
shell
|
||||
} = require('electron');
|
||||
|
||||
shell.openExternal(auth);
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
if ($('#linux:checked').val() == "on") {} else {
|
||||
ipc.send('quit', 'go');
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//テキストボックスにURL入れた
|
||||
|
|
|
@ -135,6 +135,10 @@ function emojiInsert(code, del) {
|
|||
}
|
||||
//改行挿入
|
||||
function brInsert(code) {
|
||||
if(!$('#post-box').hasClass("appear")){
|
||||
localStorage.setItem("nohide",true);
|
||||
show();
|
||||
}
|
||||
var now = $("#textarea").val();
|
||||
$("#textarea").val(now + code);
|
||||
$("#textarea").focus();
|
||||
|
|
|
@ -66,6 +66,9 @@ function post() {
|
|||
httpreq.send(JSON.stringify(toot));
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState == 4) {
|
||||
if(str.indexOf(localStorage.getItem("stable"))==-1){
|
||||
localStorage.removeItem("stable")
|
||||
}
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
var box = localStorage.getItem("box");
|
||||
|
@ -85,6 +88,9 @@ function post() {
|
|||
//クリア(Shift+C)
|
||||
function clear() {
|
||||
$("#textarea").val("");
|
||||
if(localStorage.getItem("stable")){
|
||||
$("#textarea").val(localStorage.getItem("stable"));
|
||||
}
|
||||
$("#textarea").attr("placeholder", "");
|
||||
$("#reply").val("");
|
||||
$("#media").val("");
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*リプライ*/
|
||||
function re(id,at,acct_id,mode){
|
||||
localStorage.setItem("nohide",true);
|
||||
show();
|
||||
$("#reply").val(id);
|
||||
var te=$("#textarea").val();
|
||||
|
@ -21,6 +22,7 @@ function reEx(id){
|
|||
}
|
||||
//引用
|
||||
function qt(id,acct_id,at,url){
|
||||
localStorage.setItem("nohide",true);
|
||||
var qt = localStorage.getItem("quote");
|
||||
if(!qt){
|
||||
var qt="simple";
|
||||
|
|
|
@ -62,8 +62,8 @@ function filterToggle(){
|
|||
if ($("#filter-box").hasClass("hide")) {
|
||||
$("#filter-box").removeClass("hide");
|
||||
$("#filter-box").addClass("show");
|
||||
$("#filter-box").css("top",$('#filter-tgl').offset().top-$('#filter-box').height()/2+"px");
|
||||
$("#filter-box").css("left",$('#filter-tgl').offset().left-410+"px");
|
||||
$("#filter-box").css("bottom","40px");
|
||||
$("#filter-box").css("left",$('#filter-tgl').offset().left-$('#filter-box').width()/2+"px");
|
||||
//フィルターロード
|
||||
} else {
|
||||
$("#filter-box").removeClass("show");
|
||||
|
|
|
@ -2,8 +2,8 @@ function listToggle(){
|
|||
if ($("#list-box").hasClass("hide")) {
|
||||
$("#list-box").removeClass("hide");
|
||||
$("#list-box").addClass("show");
|
||||
$("#list-box").css("top",$('#list-tgl').offset().top+"px");
|
||||
$("#list-box").css("left",$('#list-tgl').offset().left-410+"px");
|
||||
$("#list-box").css("bottom","40px");
|
||||
$("#list-box").css("left",$('#list-tgl').offset().left-$('#list-box').width()/2+"px");
|
||||
//リストロード
|
||||
} else {
|
||||
$("#list-box").removeClass("show");
|
||||
|
@ -11,6 +11,7 @@ function listToggle(){
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
function list(){
|
||||
$("#lists-user").html("");
|
||||
var acct_id = $("#list-acct-sel").val();
|
||||
|
|
|
@ -170,5 +170,38 @@ function notfmore(tlid) {
|
|||
function notfToggle(acct, tlid) {
|
||||
$("#notf-box_" + tlid).toggleClass("hide");
|
||||
$("#notf-box_" + tlid).toggleClass("show");
|
||||
notfCanceler(acct)
|
||||
}
|
||||
function notfCanceler(acct){
|
||||
$(".notf-reply_" + acct_id).text(0);
|
||||
$(".notf-reply_" + acct_id).addClass("hide");
|
||||
$(".notf-fav_" + acct_id).text(0);
|
||||
$(".notf-fav_" + acct_id).addClass("hide");
|
||||
$(".notf-bt_" + acct_id).text(0);
|
||||
$(".notf-bt_" + acct_id).addClass("hide");
|
||||
$(".notf-follow_" + acct_id).text(0);
|
||||
$(".notf-follow_" + acct_id).addClass("hide");
|
||||
$(".notf-icon_" + acct).removeClass("red-text");
|
||||
}
|
||||
function allNotfRead(){
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (!multi) {
|
||||
var obj = [{
|
||||
at: localStorage.getItem("acct_0_at"),
|
||||
name: localStorage.getItem("name_0"),
|
||||
domain: localStorage.getItem("domain_0"),
|
||||
user: localStorage.getItem("user_0"),
|
||||
prof: localStorage.getItem("prof_0"),
|
||||
id: localStorage.getItem("user-id_0")
|
||||
}];
|
||||
var json = JSON.stringify(obj);
|
||||
localStorage.setItem("multi", json);
|
||||
} else {
|
||||
var obj = JSON.parse(multi);
|
||||
}
|
||||
console.log(obj);
|
||||
var templete;
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
notfCanceler(key)
|
||||
});
|
||||
}
|
||||
|
|
|
@ -181,6 +181,16 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||
var notice = noticetext;
|
||||
var memory = localStorage.getItem("notice-mem");
|
||||
if (popup >= 0 && obj.length < 5 && noticetext != memory) {
|
||||
if (toot.type == "mention") {
|
||||
$(".notf-reply_" + acct_id).text($(".notf-reply_" + acct_id).text()*1+1);
|
||||
$(".notf-reply_" + acct_id).removeClass("hide")
|
||||
}else if (toot.type == "reblog") {
|
||||
$(".notf-bt_" + acct_id).text($(".notf-bt_" + acct_id).text()*1+1);
|
||||
$(".notf-bt_" + acct_id).removeClass("hide")
|
||||
}else if (toot.type == "favourite") {
|
||||
$(".notf-fav_" + acct_id).text($(".notf-fav_" + acct_id).text()*1+1);
|
||||
$(".notf-fav_" + acct_id).removeClass("hide")
|
||||
}
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
if(popup>0){
|
||||
Materialize.toast("["+domain+"より]"+escapeHTML(toot.account.display_name)+what, popup * 1000);
|
||||
|
@ -575,12 +585,13 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter) {
|
|||
+'<div class="' + if_mine + ' action '+disp["red"]+' '+noauth+'"><a onclick="redraft(\'' + toot.id + '\',' +
|
||||
acct_id +
|
||||
')" class="waves-effect waves-dark btn-flat" style="padding:0" title="このトゥートを削除して再投稿"><i class="material-icons">redo</i></a></div>'+trans+
|
||||
'<div class="action ' + if_mine + ' '+noauth+'"><a onclick="toggleAction(\'' + toot.id + '\',\''+tlid+'\',\''+acct_id+'\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' +
|
||||
'<span class="cbadge viabadge waves-effect '+viashow+' '+mine_via+'" onclick="client(\''+$.strip_tags(via)+'\')" title="via ' + $.strip_tags(via) + '">via ' +
|
||||
via +
|
||||
'</span>'+
|
||||
'</div><div class="area-side"><div class="action ' + if_mine + ' '+noauth+'"><a onclick="toggleAction(\'' + toot.id + '\',\''+tlid+'\',\''+acct_id+'\')" class="waves-effect waves-dark btn-flat" style="padding:0"><i class="text-darken-3 material-icons act-icon">expand_more</i></a></div>' +
|
||||
'<div class="action '+noauth+'"><a onclick="details(\'' + toot.id + '\',' + acct_id +
|
||||
',\''+tlid+'\')" class="waves-effect waves-dark btn-flat details" style="padding:0"><i class="text-darken-3 material-icons">more_vert</i></a></div>' +
|
||||
'<span class="cbadge waves-effect '+viashow+' '+mine_via+'" onclick="client(\''+$.strip_tags(via)+'\')" title="via ' + $.strip_tags(via) + '">via ' +
|
||||
via +
|
||||
'</span></div></div>' +
|
||||
'</div></div>' +
|
||||
'</div></div>';
|
||||
});
|
||||
if (mix == "mix") {
|
||||
|
|
|
@ -6,8 +6,8 @@ function srcToggle() {
|
|||
if($("#src-box").hasClass("show")){
|
||||
trend();
|
||||
}
|
||||
$("#src-box").css("top",$('#src-tgl').offset().top+"px");
|
||||
$("#src-box").css("left",$('#src-tgl').offset().left-510+"px");
|
||||
$("#src-box").css("bottom","40px");
|
||||
$("#src-box").css("left",$('#src-tgl').offset().left-$('#src-box').width()/2+"px");
|
||||
$('ul.tabs').tabs('select_tab', 'src-sta');
|
||||
$("#src-contents").html("");
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ function favTag(){
|
|||
Object.keys(obj).forEach(function(key) {
|
||||
var tag = obj[key];
|
||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a> '+
|
||||
'<a onclick="tagRemove(\'' + key + '\')" class="pointer" title="#' + tag + 'をよく使うタグから削除">Unpin</a></span> ';
|
||||
'<a onclick="autoToot(\'#' + tag + ' \');brInsert(\'#' + tag + ' \')" class="pointer" title="常に#' + tag + 'でトゥート">実況</a> <a onclick="tagRemove(\'' + key + '\')" class="pointer" title="#' + tag + 'をよく使うタグから削除">削除</a></span> ';
|
||||
});
|
||||
if(obj.length>0){
|
||||
$("#taglist").append("My Tags:" + tags);
|
||||
|
@ -87,9 +87,9 @@ function trendTag(){
|
|||
var tags="";
|
||||
json=json.score;
|
||||
Object.keys(json).forEach(function(tag) {
|
||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
|
||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span> ';
|
||||
});
|
||||
$("#taglist").append('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</div>');
|
||||
$("#taglist").append('<div class="trendtag">アイマストドントレンドタグ<i class="material-icons pointer" onclick="trendTag()" style="font-size:12px">refresh</i>:' + tags+'</div>');
|
||||
trendintervalset()
|
||||
}else{
|
||||
$("#taglist").html("");
|
||||
|
@ -106,3 +106,7 @@ function tagTL(a,b,c,d){
|
|||
var acct_id = $("#post-acct-sel").val();
|
||||
tl(a,b,acct_id,d);
|
||||
}
|
||||
function autoToot(tag){
|
||||
localStorage.setItem("stable",tag);
|
||||
Materialize.toast("次に"+tag+"なしでトゥートするまで全てのトゥートに"+tag+"が付与されます。",3000);
|
||||
}
|
|
@ -10,8 +10,8 @@ var websocketNotf = [];
|
|||
function addToggle() {
|
||||
$("#add-box").toggleClass("hide");
|
||||
addselCk()
|
||||
$("#add-box").css("top",$('#add-tgl').offset().top+"px");
|
||||
$("#add-box").css("left",$('#add-tgl').offset().left-410+"px");
|
||||
$("#add-box").css("bottom","40px");
|
||||
$("#add-box").css("left",$('#add-tgl').offset().left-$('#add-box').width()/2+"px");
|
||||
$("#add-box").toggleClass("show");
|
||||
}
|
||||
//最初、カラム変更時に発火
|
||||
|
@ -108,7 +108,7 @@ function parseColumn() {
|
|||
'<div class="area-notice_name"><span id="notice_' + key + '" class="tl-title"></span></div>'+
|
||||
'<div class="area-a1"><a onclick="notfToggle(' + acct.domain + ',' + key +
|
||||
')" class="setting nex" title="このアカウントの'+unique_notf+'"'+icnsert+'><i class="material-icons waves-effect nex notf-icon_' +
|
||||
acct.domain + '">notifications</i></a></div>'+
|
||||
acct.domain + '">notifications</i></div><div class="area-sta"><span class="new badge teal notf-reply_'+acct.domain+' hide" data-badge-caption="Reply">0</span><span class="new badge yellow black-text notf-fav_'+acct.domain+' hide" data-badge-caption="Fav">0</span><span class="new badge blue notf-bt_'+acct.domain+' hide" data-badge-caption="BT">0</span><span class="new badge orange notf-follow_'+acct.domain+' hide" data-badge-caption="Follow">0</span></a></div>'+
|
||||
'<div class="area-a2"><a onclick="removeColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除"'+icnsert+'>cancel</i></a></div>'+
|
||||
'<div class="area-a3"><a onclick="setToggle(' + key +
|
||||
|
@ -145,8 +145,8 @@ function parseColumn() {
|
|||
tl(acct.type, data, acct.domain, key, delc,voice);
|
||||
cardCheck(key);
|
||||
mediaCheck(key);
|
||||
catchCheck(key)
|
||||
voiceCheck(key)
|
||||
catchCheck(key);
|
||||
voiceCheck(key);
|
||||
});
|
||||
var width = localStorage.getItem("width");
|
||||
if (width) {
|
||||
|
|
|
@ -1,21 +1,10 @@
|
|||
/*ささやきボックス(Cr民並感)*/
|
||||
//もっとボタン
|
||||
function more() {
|
||||
$(".more-show").show();
|
||||
$(".more-hide").hide();
|
||||
$("#post-box").addClass("post-more");
|
||||
}
|
||||
//閉じるボタン
|
||||
function less() {
|
||||
$(".more-show").hide();
|
||||
$(".more-hide").show();
|
||||
$("#post-box").removeClass("post-more");
|
||||
}
|
||||
//✕隠す
|
||||
function hide() {
|
||||
$("#post-box").addClass("hidenbox");
|
||||
$("#post-box").fadeOut();
|
||||
$("#menu-btn").fadeIn();
|
||||
$('#post-box').removeClass("appear")
|
||||
$('#post-box').animate({
|
||||
'bottom': "-500px"
|
||||
});
|
||||
}
|
||||
//最小化
|
||||
function mini() {
|
||||
|
@ -28,44 +17,16 @@ function mini() {
|
|||
}
|
||||
//最小化時に展開
|
||||
function show() {
|
||||
$("#post-box").removeClass("hidenbox");
|
||||
$("#post-box").fadeIn();
|
||||
$("#menu-btn").fadeOut();
|
||||
}
|
||||
//横幅
|
||||
function zoomBox() {
|
||||
if ($("#post-box").hasClass("bigbox")) {
|
||||
$("#post-box").css('width', '350px');
|
||||
$("#post-box").removeClass("bigbox")
|
||||
} else {
|
||||
$("#post-box").css('width', '50vw');
|
||||
$("#post-box").addClass("bigbox")
|
||||
}
|
||||
}
|
||||
//サイドバー開閉
|
||||
function xpand() {
|
||||
if ($("#sidebar").hasClass("xed")) {
|
||||
$(".side-label").show();
|
||||
$("#sidebar").css('width', '75px');
|
||||
$("#post-box").css('right', '78px');
|
||||
$("#sidebar").css('min-width', '75px');
|
||||
$("#sidebar .big-menu i").addClass('big-icon');
|
||||
$("#sidebar").removeClass("xed");
|
||||
$("#x-btn").text("keyboard_arrow_right");
|
||||
localStorage.removeItem("xed");
|
||||
} else {
|
||||
$("#sidebar").css('width', '29px');
|
||||
$("#sidebar").css('min-width', '29px');
|
||||
$("#post-box").css('right', '27px');
|
||||
$("#sidebar").addClass("xed");
|
||||
$("#sidebar .big-menu i").removeClass('big-icon');
|
||||
$(".side-label").hide();
|
||||
$("#x-btn").text("keyboard_arrow_left");
|
||||
localStorage.setItem("xed","true");
|
||||
}
|
||||
$("#textarea").focus();
|
||||
$('#post-box').addClass("appear")
|
||||
$('#post-box').css("left",$('#posttgl').position().left+"px");
|
||||
$('#post-box').animate({
|
||||
'bottom': 0
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
//コード受信
|
||||
if(location.search){
|
||||
var m = location.search.match(/\?mode=([a-zA-Z-0-9]+)\&code=(.+)/);
|
||||
|
@ -80,3 +41,34 @@ if(location.search){
|
|||
$(".mini-btn").text("expand_less");
|
||||
}
|
||||
}
|
||||
$('#posttgl').focusin(function(e) {
|
||||
if(!$('#post-box').hasClass("appear")){
|
||||
show();
|
||||
}
|
||||
});
|
||||
|
||||
$("#timeline-container,#group").click(function(e) {
|
||||
if($('#post-box').hasClass("appear") && !localStorage.getItem("nohide")){
|
||||
hide();
|
||||
}
|
||||
localStorage.removeItem("nohide")
|
||||
});
|
||||
|
||||
$("#timeline-container").click(function(e) {
|
||||
if(!$('#list-box').hasClass("hide")){
|
||||
$("#list-box").removeClass("show");
|
||||
$("#list-box").addClass("hide")
|
||||
}
|
||||
if(!$('#src-box').hasClass("hide")){
|
||||
$("#src-box").removeClass("show");
|
||||
$("#src-box").addClass("hide")
|
||||
}
|
||||
if(!$('#filter-box').hasClass("hide")){
|
||||
$("#filter-box").removeClass("show");
|
||||
$("#filter-box").addClass("hide")
|
||||
}
|
||||
if(!$('#add-box').hasClass("hide")){
|
||||
$("#add-box").removeClass("show");
|
||||
$("#add-box").addClass("hide")
|
||||
}
|
||||
});
|
||||
|
|
|
@ -25,8 +25,8 @@ function sortload(){
|
|||
}
|
||||
}
|
||||
var html='<li class="drag-content" data-id="'+key+'" data-flag="'+flag+'"'+insert+'><a onclick="goColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムへ">forward</i></a>'+localStorage.getItem("user_" + acct.domain)+"@"+localStorage.getItem("domain_" + acct.domain)+" "+cap(acct.type, acct.data)+' <a onclick="removeColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></li>';
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムへ">forward</i></a> <a onclick="removeColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a><br>'+localStorage.getItem("user_" + acct.domain)+"@"+localStorage.getItem("domain_" + acct.domain)+" "+cap(acct.type, acct.data)+'</li>';
|
||||
$("#sort").append(html);
|
||||
});
|
||||
drag();
|
||||
|
@ -92,6 +92,7 @@ function sort(){
|
|||
Materialize.toast("並べ替え完了。", 3000);
|
||||
sortload();
|
||||
parseColumn();
|
||||
sortToggle()
|
||||
}
|
||||
//ソートボタントグル
|
||||
function sortToggle(){
|
||||
|
@ -99,8 +100,6 @@ function sortToggle(){
|
|||
if ($("#sort-box").hasClass("hide")) {
|
||||
$("#sort-box").removeClass("hide");
|
||||
$("#sort-box").addClass("show");
|
||||
$("#sort-box").css("top",$('#sort-tgl').offset().top+"px");
|
||||
$("#sort-box").css("left",$('#sort-tgl').offset().left-410+"px");
|
||||
//並べ替え
|
||||
sortload();
|
||||
} else {
|
||||
|
|
|
@ -6,3 +6,106 @@ function todo(mes){
|
|||
function todc(){
|
||||
$('#message').fadeOut();
|
||||
}
|
||||
function tips(mode){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('endmem', "");
|
||||
clearInterval(clockint);
|
||||
if(mode=="ver"){
|
||||
tipsToggle()
|
||||
$("#tips-text").html('<img src="./img/desk.png" width="20"><span style="font-size:20px">TheDesk</span> '+localStorage.getItem("ver"))
|
||||
localStorage.setItem("tips","ver")
|
||||
}else if(mode=="clock"){
|
||||
tipsToggle()
|
||||
localStorage.setItem("tips","clock")
|
||||
clock()
|
||||
}else if(mode=="memory"){
|
||||
tipsToggle()
|
||||
localStorage.setItem("tips","memory")
|
||||
startmem();
|
||||
}else if(mode=="trend"){
|
||||
tipsToggle()
|
||||
localStorage.setItem("tips","trend")
|
||||
trendTagonTip()
|
||||
}
|
||||
}
|
||||
//メモリ
|
||||
function startmem(){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('startmem', "");
|
||||
ipc.on('memory', function (event, arg) {
|
||||
var use=arg[0];
|
||||
var cpu=arg[1];
|
||||
var total=arg[2]
|
||||
$("#tips-text").html(cpu+"<br>Memory:"+Math.floor(use/1024/1024/102.4)/10+"/"+Math.floor(total/1024/1024/102.4)/10+"GB("+Math.floor(use/total*100)+"%)")
|
||||
})
|
||||
}
|
||||
//トレンドタグ
|
||||
function trendTagonTip(){
|
||||
$(".trendtag").remove();
|
||||
var domain="imastodon.net"
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/trend_tags"
|
||||
console.log(start)
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if (json) {
|
||||
var tags="";
|
||||
json=json.score;
|
||||
Object.keys(json).forEach(function(tag) {
|
||||
tags = tags + '<a onclick="tagShow(\'' + tag + '\')" class="pointer">#' + tag + '</a><span class="hide" data-tag="' + tag + '"> <a onclick="tagTL(\'tag\',\'' + tag + '\',false,\'add\')" class="pointer" title="#' + tag + 'のタイムライン">TL</a> <a onclick="show();brInsert(\'#' + tag + '\')" class="pointer" title="#' + tag + 'でトゥート">Toot</a></span><br>';
|
||||
});
|
||||
$("#tips-text").html('<div class="trendtag">トレンドタグ<i class="material-icons pointer" onclick="trendTagonTip()" style="font-size:12px">refresh</i>:<br>' + tags+'</div>');
|
||||
trendTagonTipInterval()
|
||||
}else{
|
||||
$("#tips-text").html("");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function trendTagonTipInterval(){
|
||||
setTimeout(trendTagonTip, 6000000);
|
||||
}
|
||||
//時計
|
||||
var clockint;
|
||||
function clock(){
|
||||
var now=new Date();
|
||||
var last=1000-now.getTime()%1000;
|
||||
sleep(last);
|
||||
clockint=setInterval(clockStart, 1000);
|
||||
}
|
||||
function clockStart(){
|
||||
var nowTime = new Date(); // 現在日時を得る
|
||||
var nowHour = nowTime.getHours(); // 時を抜き出す
|
||||
if(nowHour<10){nowHour="0"+nowHour }
|
||||
var nowMin = nowTime.getMinutes(); // 分を抜き出す
|
||||
if(nowMin<10){nowMin="0"+nowMin }
|
||||
var nowSec = nowTime.getSeconds(); // 秒を抜き出す
|
||||
if(nowSec<10){nowSec="0"+nowSec }
|
||||
var msg = nowTime.getFullYear()+"年"+(nowTime.getMonth()+1)+"月"+nowTime.getDate()+'日<span style="font-size:20px; font-family:Open Sans">'+nowHour + ":" + nowMin + ":" + nowSec+"</span>";
|
||||
$("#tips-text").html(msg);
|
||||
}
|
||||
function sleep(waitMsec) {
|
||||
var startMsec = new Date();
|
||||
while (new Date() - startMsec < waitMsec);
|
||||
}
|
||||
function tipsToggle(){
|
||||
$("#tips").toggleClass("hide");
|
||||
$("#tips-menu").toggleClass("hide");
|
||||
}
|
||||
if(localStorage.getItem("tips")){
|
||||
tips(localStorage.getItem("tips"));
|
||||
}
|
||||
|
|
@ -150,10 +150,12 @@ function udg(user, acct_id) {
|
|||
showReq('', acct_id);
|
||||
showFrl('', acct_id);
|
||||
$("#his-name-val").val(json.display_name);
|
||||
$("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));
|
||||
$("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));
|
||||
$("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));
|
||||
$("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value));
|
||||
if(json.fields.length>0){
|
||||
$("#his-f1-name").val(json.fields[0].name); $("#his-f1-val").val($.strip_tags(json.fields[0].value));
|
||||
$("#his-f2-name").val(json.fields[1].name); $("#his-f2-val").val($.strip_tags(json.fields[1].value));
|
||||
$("#his-f3-name").val(json.fields[2].name); $("#his-f3-val").val($.strip_tags(json.fields[2].value));
|
||||
$("#his-f4-name").val(json.fields[3].name); $("#his-f4-val").val($.strip_tags(json.fields[3].value));
|
||||
}
|
||||
var des = json.note;
|
||||
des = des.replace(/<br \/>/g, "\n")
|
||||
des = $.strip_tags(des);
|
||||
|
@ -187,6 +189,7 @@ function profShow(){
|
|||
var user = localStorage.getItem("user-id_"+acct_id);
|
||||
console.log("user-id_"+acct_id+":"+user);
|
||||
udg(user, acct_id)
|
||||
hide();
|
||||
}
|
||||
|
||||
//FF関係取得
|
||||
|
|
14
app/main.js
14
app/main.js
|
@ -496,6 +496,18 @@ function adobeWindow(){
|
|||
});
|
||||
window.loadURL('file://' + __dirname + '/adobe.html');
|
||||
}
|
||||
|
||||
var cbTimer1;
|
||||
ipc.on('startmem', (e, arg) => {
|
||||
cbTimer1 = setInterval(mems, 1000);
|
||||
});
|
||||
ipc.on('endmem', (e, arg) => {
|
||||
if(cbTimer1){
|
||||
clearInterval(cbTimer1);
|
||||
}
|
||||
});
|
||||
function mems(){
|
||||
var mem=os.totalmem()-os.freemem();
|
||||
mainWindow.webContents.send('memory', [mem,os.cpus()[0].model,os.totalmem()]);
|
||||
}
|
||||
|
||||
app.setAsDefaultProtocolClient('thedesk')
|
820
app/new.html
Normal file
820
app/new.html
Normal file
|
@ -0,0 +1,820 @@
|
|||
<!doctype html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<title>TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/tl.css' rel='stylesheet' type='text/css'>
|
||||
<link href='./css/userdata.css' rel='stylesheet' type='text/css'>
|
||||
<link href='./css/post.css' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/sort.css' rel='stylesheet' type='text/css'>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<script type="text/javascript" src="./js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first.js"></script>
|
||||
<script type="text/javascript" src="./js/common/materialize.js"></script>
|
||||
<script type="text/javascript" src="./js/common/time.js"></script>
|
||||
<script type="text/javascript" src="./js/common/version.js"></script>
|
||||
<script type="text/javascript" src="./js/common/keyshortcut.js"></script>
|
||||
<script type="text/javascript" src="./js/common/modal.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/jquery-ui.min.js"></script>
|
||||
<script>
|
||||
var ver="Mio (15.10.0)";
|
||||
//betaを入れるとバージョンチェックしない
|
||||
//var ver="beta";
|
||||
var acct_id=0;
|
||||
var tlid=0;
|
||||
verck(ver);
|
||||
</script>
|
||||
<textarea id="copy" style="top:-100px; position:fixed;"></textarea>
|
||||
<div id="tl">
|
||||
<!--TL-->
|
||||
<!--ドラッグハンドラ-->
|
||||
<div id="drag">
|
||||
<div id="drag-content" data-trans="drag_here">ここにドラッグして添付(ドラッグと同時にアップロードされます)
|
||||
<br>
|
||||
<button class="btn waves-effect" onclick="closedrop()" data-trans="close">閉じる</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--カラム追加-->
|
||||
<div id="add-box" class="hide z-depth-4 notf-box">
|
||||
<div class="input-field"><span data-trans="your_acct">アカウント選択</span>
|
||||
<br>
|
||||
<select id="add-acct-sel" class="acct-sel" style="color:black" onchange="addselCk()"></select>
|
||||
<label></label>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<div id="auth">
|
||||
<select id="type-sel" style="color:black">
|
||||
<option value="local" data-trans="local">ローカル</option>
|
||||
<option value="local-media" data-trans="local-media">ローカル(メディア)</option>
|
||||
<option value="home" data-trans="home">ホーム</option>
|
||||
<option value="pub" data-trans="public">連合</option>
|
||||
<option value="pub-media" data-trans="public-media">連合(メディア)</option>
|
||||
<option value="dm" data-trans="dm">ダイレクトメッセージ</option>
|
||||
<option value="mix" data-trans="integrated">統合(ローカルとホーム)</option>
|
||||
<option value="plus" data-trans="plus">統合(ローカルとブースト・リプライ)</option>
|
||||
<option value="notf" data-trans="notification">通知</option>
|
||||
</select>
|
||||
<label data-trans="show_tl">表示するタイムライン</label>
|
||||
</div>
|
||||
<div id="noauth" class="hide">表示するタイムライン
|
||||
<input id="noauth-url" type="text" class="validate" style="width:calc( 70% - 40px);" placeholder="e.g:mstdn.jp">
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn waves-effect blue " style="width:calc( 100% - 10px);" onclick="addColumn()" data-trans-i="add">
|
||||
<i class="material-icons left">add</i>追加
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
<button class="btn waves-effect orange " style="width:calc( 100% - 10px);" onclick="addToggle()" data-trans-i="close">
|
||||
<i class="material-icons left">close</i>閉じる
|
||||
</button>
|
||||
</div>
|
||||
<!--検索-->
|
||||
<div id="src-box" class="hide notf-box z-depth-4" style="width:500px">
|
||||
<div class="input-field">
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div><div class="input-field">
|
||||
<i class="material-icons prefix">search</i>
|
||||
<input id="src" type="text" class="validate" style="width:calc( 60% - 40px);">
|
||||
<label for="src" data-trans="src">検索</label>
|
||||
<button class="btn waves-effect indigo" style="width:calc( 40% - 40px);" onclick="src()" data-trans-i="src">
|
||||
<i class="material-icons left">search</i>検索
|
||||
</button>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
</div>
|
||||
<div id="search">
|
||||
<div id="src-contents">
|
||||
</div>
|
||||
<button class="btn waves-effect orange " style="width:calc( 100% - 10px);" onclick="srcToggle()">
|
||||
<i class="material-icons left" data-trans-i="close">close</i>閉じる
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--並べ替え-->
|
||||
<div id="sort-box" class="hide notf-box z-depth-4">
|
||||
<ul id="sort"></ul>
|
||||
<button onclick="sort()" class="btn waves-effect light-blue nex" style="width:100%; max-width:200px;" data-trans-i="sort">
|
||||
<i class="material-icons left">sort</i>並べ替え設定
|
||||
</button>
|
||||
<button class="btn waves-effect orange " style="width:calc( 100% - 10px);" onclick="sortToggle()" data-trans-i="close">
|
||||
<i class="material-icons left">close</i>閉じる
|
||||
</button>
|
||||
</div>
|
||||
<!--リスト-->
|
||||
<div id="list-box" class="hide notf-box z-depth-4">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="list-acct-sel" class="acct-sel"></select>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="list()" data-trans-i="lists">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<br><br>
|
||||
<div id="lists"></div>
|
||||
<div id="lists-user"></div>
|
||||
<input type="text" style="width:150px" id="list-add" placeholder="タイトル">
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewList()">新規作成</button>
|
||||
</div>
|
||||
<!--フィルター-->
|
||||
<div id="filter-box" class="hide notf-box z-depth-4">
|
||||
<div class="input-field" style="width:calc( 100% - 100px);float:left">
|
||||
<select id="filter-acct-sel" class="acct-sel"></select>
|
||||
<label>アカウント選択</label>
|
||||
</div>
|
||||
<div style="float:left; padding-top:8px; padding-bottom:28px;">
|
||||
<button class="btn waves-effect indigo" style="width:80px;" onclick="filter()" data-trans-i="filters">
|
||||
一覧
|
||||
</button>
|
||||
</div>
|
||||
<div id="filtered-words"></div>
|
||||
<input type="hidden" id="filter-edit-id">
|
||||
<input type="text" style="width:150px" id="filter-add-word" placeholder="フィルターワード"><br>
|
||||
適用範囲<br>
|
||||
<input type="checkbox" class="filled-in" id="home_filter" value="home" />
|
||||
<label for="home_filter">ホーム</label>
|
||||
<input type="checkbox" class="filled-in" id="local_filter" value="public" />
|
||||
<label for="local_filter">ローカル</label>
|
||||
<input type="checkbox" class="filled-in" id="notf_filter" value="notifications" />
|
||||
<label for="notf_filter">通知</label>
|
||||
<input type="checkbox" class="filled-in" id="conv_filter" value="thread" />
|
||||
<label for="conv_filter">会話</label><br>
|
||||
オプション<br>
|
||||
<input type="checkbox" class="filled-in" id="wholeword_filter" value="1" />
|
||||
<label for="wholeword_filter">単語マッチ</label><br>
|
||||
<span class="sml">非ラテン系の文字列では「単語マッチ」は推奨されません。</span><br>
|
||||
<input type="checkbox" class="filled-in" id="except_filter" value="1" />
|
||||
<label for="except_filter">除外</label><br>
|
||||
<span class="sml">「除外」時マッチしたトゥートは非可逆的に除外され、削除後も閲覧できません。</span><br>
|
||||
有効期限(あと)<span class="sml">未指定(または0分)で「無制限」になります。<b>仕様上数値の正確性を保証できません。</b></span><br><br>
|
||||
<input type="text" style="width:50px" id="days_filter" placeholder="d" value="0">日
|
||||
<input type="text" style="width:50px" id="hours_filter" placeholder="h" value="0">時間
|
||||
<input type="text" style="width:50px" id="mins_filter" placeholder="m" value="0">分
|
||||
<button class="btn waves-effect" style="width:120px;" onclick="makeNewFilter()" id="add-filter-btn">追加</button><br>
|
||||
<span class="sml">Integrated TL/Plus TLは、公開/ホームのフィルターワードが合算されて適応されます。どちらか一方の指定でも非表示になります。</span>
|
||||
</div>
|
||||
<div id="main">
|
||||
<!--TLのTL-->
|
||||
<div id="timeline-container">
|
||||
まずは右のアカウントボタンからアカウントを追加してください。<br>
|
||||
右のカラム追加ボタンで認証せずにローカルタイムラインを見ることもできます。
|
||||
</div>
|
||||
<!--サイドバー-->
|
||||
<div id="sidebar">
|
||||
<div id="sidebar-top">
|
||||
<div class="side-dead"></div>
|
||||
<div class="big-menu" id="add-tgl">
|
||||
<a onclick="addToggle()" class="nex waves-effect" data-trans-i="add">
|
||||
<i class="material-icons nex big-icon" title="カラム追加" data-trans-title="column_add">add</i>
|
||||
</a>
|
||||
<br>
|
||||
<span class="side-label" data-trans="column_add">カラム追加</span>
|
||||
</div>
|
||||
<div class="big-menu">
|
||||
<a href="acct.html" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="アカウントマネージャー(Ctrl+Shift+M)" data-trans-title="manager">account_circle</i>
|
||||
</a>
|
||||
<br>
|
||||
<span class="side-label" data-trans="manager_short">アカウント</span>
|
||||
</div>
|
||||
<div class="big-menu" id="sort-tgl">
|
||||
<a onclick="sortToggle()" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="カラム一覧/並べ替え" data-trans-title="sort">sort</i>
|
||||
</a>
|
||||
<br>
|
||||
<span class="side-label" data-trans="sort">カラム一覧</span>
|
||||
</div>
|
||||
<div class="side-dead">
|
||||
</div>
|
||||
<div class="small-menu" id="src-tgl">
|
||||
<a onclick="srcToggle()" class="nex waves-effect">
|
||||
<i class="material-icons" title="検索" data-trans-title="src">search</i>
|
||||
<span class="side-label" data-trans="src">検索</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a href="setting.html" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="設定(Ctrl+Shift+S)" data-trans-title="setting">settings</i>
|
||||
<span class="side-label" data-trans="setting">設定</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu" id="list-tgl">
|
||||
<a onclick="listToggle()" class="nex waves-effect">
|
||||
<i class="material-icons" title="リスト" data-trans-title="list">view_headline</i>
|
||||
<span class="side-label" data-trans="list">リスト</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu" id="filter-tgl">
|
||||
<a onclick="filterToggle()" class="nex waves-effect">
|
||||
<i class="material-icons" title="フィルター" data-trans-title="filter">filter_list</i>
|
||||
<span class="side-label" data-trans="filter">Filter</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a href="index.html" class="nex mize waves-effect">
|
||||
<i class="material-icons nex" title="スーパーリロード(F5/⌘+R)" data-trans-title="reload">refresh</i>
|
||||
<span class="side-label" data-trans="reload">再読込</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a onclick="window.open('https://astarte.thedesk.top');" class="setting nex waves-effect" target="_blank" id="ranking-btn" style="display:none;">
|
||||
<i class="material-icons nex" title="アスタルテランキング">timeline</i>
|
||||
<span class="side-label">暇ラン</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a onclick="nano()" class="nex waves-effect">
|
||||
<i class="material-icons" title="最小のマストドン。TheDesk Nano" data-trans-title="nano_desp">remove_from_queue</i>
|
||||
<span class="side-label" data-trans="nano">Nano</span>
|
||||
</a>
|
||||
</div>
|
||||
<div id="side-dead">
|
||||
</div>
|
||||
<div class="small-menu">
|
||||
<a onclick="xpand()" class="nex waves-effect">
|
||||
<i class="material-icons" title="サイドバーの開閉" data-trans-title="sidebar_xpand" id="x-btn">keyboard_arrow_right</i>
|
||||
<span class="side-label" data-trans="sidebar_xpand_short">たたむ</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="sidebar-btm">
|
||||
<!--最小化-->
|
||||
<div id="menu-btn" class="big-menu" onclick="show()" style="display:none;">
|
||||
<a class="waves-effect">
|
||||
<i class="material-icons big-icon">mode_edit</i>
|
||||
<br>
|
||||
<span class="side-label" data-trans="post">投稿</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="post-box" class="z-depth-3">
|
||||
<!--トゥートボックス-->
|
||||
|
||||
<div class="row" style="margin-bottom:0;">
|
||||
</span>
|
||||
<div class="" style="float:left;">
|
||||
<a onclick="profShow()" style="vertical-align:-2.5rem;" class="pointer mize">
|
||||
<img src="./img/missing.svg" id="acct-sel-prof" title="選択中のプロフィール表示(Ctrl+Shift+P)" data-trans-title="post_box_prof" width="24px">
|
||||
</a>
|
||||
</div>
|
||||
<div class="input-field mize" style="float:left; width:calc(100% - 24px)">
|
||||
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
|
||||
</div>
|
||||
<span class="cancel">
|
||||
<i class="material-icons waves-effect" onclick="hide()" title="このボックスを閉じる(X)" data-trans-title="post_box_close">cancel</i>
|
||||
<i class="material-icons waves-effect mini-btn" onclick="mini()" title="このボックスを最小化" data-trans-title="post_box_mini">expand_more</i>
|
||||
</span>
|
||||
<!--Markdown-->
|
||||
<div class="row" style="margin-bottom:0">
|
||||
<div class="markdown mize hide">
|
||||
<div class="col s12">
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('b')" title="太字(Ctrl+B)テキストボックス内を選択してから押すと囲みます。">format_bold</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('i')" title="斜字(Ctrl+I)テキストボックス内を選択してから押すと囲みます。">format_italic</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('u')" title="下線(Ctrl+U)テキストボックス内を選択してから押すと囲みます。">format_underlined</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('s')" title="取り消し(Ctrl+S)テキストボックス内を選択してから押すと囲みます。">strikethrough_s</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('>','no','yes')" title="引用">format_quote</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('#','no','yes')" title="見出し">short_text</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('`','yes','no')" title="コード挿入 テキストボックス内を選択してから押すと囲みます。">code</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('- ','yes','yes')" title="箇条書きリスト">format_list_bulleted</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdown('1. ','yes','yes')" title="番号付きリスト">format_list_numbered</i>
|
||||
<i class="pointer setting fa fa-subscript waves-effect" onclick="markdown('__','yes','no','before')" title="下付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
|
||||
<i class="pointer setting fa fa-superscript waves-effect" onclick="markdown('_','yes','no','before')" title="上付き文字 テキストボックス内を選択してから押すと囲みます。" style="font-size:1.5rem"></i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('spin')" title="回転 テキストボックス内を選択してから押すと囲みます。">autorenew</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('pulse')" title="点滅 テキストボックス内を選択してから押すと囲みます。">flare</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=vertical')" title="上下反転 テキストボックス内を選択してから押すと囲みます。">swap_vert</i>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('flip=horizontal')" title="左右反転 テキストボックス内を選択してから押すと囲みます。">swap_horiz</i>
|
||||
<span class="sml gray pointer waves-effect">
|
||||
<a onclick="mdToggle()">Markdownエディタを隠す</a>
|
||||
</span>
|
||||
<br>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('size')" title="文字サイズ変更 テキストボックス内を選択してから押すと囲みます。">format_size</i>
|
||||
<input id="size" style="width: calc(50% - 20px); margin: 0; height: 24px;" value="12">px
|
||||
<i class="material-icons pointer setting waves-effect" onclick="tagsel('colorhex')" title="文字色変更 テキストボックス内を選択してから押すと囲みます。">color_lens</i>
|
||||
<input id="colorhex" style="width: calc(50% - 50px); margin: 0; height: 24px;" type="color">
|
||||
<br>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdownLink()" title="リンク挿入">link</i>
|
||||
<input id="linkt" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクテキスト">
|
||||
<input id="link2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="リンクアドレス">
|
||||
<br>
|
||||
<i class="material-icons pointer setting waves-effect" onclick="markdownImage()" title="インライン画像挿入">image</i>
|
||||
<input id="image" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="代替テキスト">
|
||||
<input id="image2" style="width: calc(50% - 20px); margin: 0; height: 24px;" placeholder="画像アドレス">
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-field col s12" id="preview-field" style="margin-top: 0;">
|
||||
<div id="md-preview">
|
||||
</div>
|
||||
<span class="sml gray pointer">
|
||||
<a onclick="previewEdit()">Edit</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="input-field col s12" id="toot-field" style="margin-top: 10px;">
|
||||
|
||||
<textarea id="textarea" class="materialize-textarea unmize" style="margin-bottom:0;" data-length="500"></textarea>
|
||||
<label for="textarea" data-trans="toot">トゥート</label>
|
||||
<br>
|
||||
<span class="sml gray pointer markdown mize" id="preview-btn">
|
||||
<a onclick="preview()">Preview</a>
|
||||
</span>
|
||||
<span class="sml gray pointer anti-markdown mize">
|
||||
<a onclick="mdToggle()">Markdownエディタを表示</a>
|
||||
</span>
|
||||
<span id="suggest"></span>
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-top: 0; display:flex; justify-content: space-between">
|
||||
<i class="waves-effect gray material-icons" id="nsfw" title="画像に制限を付与" onclick="nsfw()">visibility_off</i>
|
||||
<i class="waves-effect gray material-icons purple-text dropdown-button" data-activates='dropdown1' id="vis-icon">public</i>
|
||||
<a class="waves-effect gray" id="cw" onclick="cw()" title="コンテンツワーニング(トゥートを表示する前にメッセージで隠す)">CW</a>
|
||||
<span><span id="imgup"></span><span id="imgsel"><i class="waves-effect material-icons gray" onclick="fileselect()" title="ファイルを選択">photo_library</i></span></span>
|
||||
<i class="waves-effect gray material-icons" onclick="adobe()" title="Adobeフォトエディタ">format_shapes</i>
|
||||
<i class="waves-effect gray material-icons" onclick="emoji()" title="絵文字を挿入">tag_faces</i>
|
||||
<a class="pointer waves-effect gray" id="npbtn" title="NowPlaying[クリックでSpotify(アカウント連携が必要です)/control+クリックでiTunes(macOSが必要です)]"><i class="material-icons" style="font-size:24px;">music_note</i></a>
|
||||
<i class="material-icons nex gray waves-effect" title="トゥートボックスのクリア(Ctrl+Shit+C)" data-trans-title="post_box_clear" id="clear">clear</i>
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
|
||||
<div id="taglist"></div>
|
||||
<span id="preview" class="mize"></span>
|
||||
<span class=" sml mize"><span data-trans="reply">返信モード</span>:
|
||||
<span id="rec">いいえ</span>/<span data-trans="file">添付</span>:
|
||||
<span id="mec">なし</span>/<span data-trans="vis">公開範囲</span>:
|
||||
<span id="vis">public</span>
|
||||
</span>
|
||||
<br>
|
||||
<input type="text" id="cw-text" placeholder="警告文" class="mize">
|
||||
</div>
|
||||
</div>
|
||||
<!-- 公開範囲 Dropdown Structure -->
|
||||
<ul id='dropdown1' class='dropdown-content'>
|
||||
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">公開範囲指定</li>
|
||||
<li>
|
||||
<a onclick="vis('public')">公開(Public)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="vis('unlisted')">未収載(Unlisted)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="vis('private')" id="private-button">非公開(Private)</a>
|
||||
</li>
|
||||
<li id="limited-button" class="hide">
|
||||
<a onclick="vis('limited')">限定公開(Limited)</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="vis('direct')" class="disabled direct">ダイレクト(Direct)</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!--hidden area-->
|
||||
<input type="hidden" id="reply">
|
||||
<input type="hidden" id="media">
|
||||
<!--END hidden area-->
|
||||
</div>
|
||||
<div id="toot-btn-field">
|
||||
<button class="btn waves-effect indigo unmize" style="width:calc(100% - 10px); padding:0; margin-top:10px;" onclick="post()" id="toot-post-btn">トゥート</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--絵文字ピッカー-->
|
||||
<div id="emoji" class="hide shared z-depth-4">
|
||||
<span class="gray sml">インスタンスによって実装が異なります。
|
||||
<a onclick="emojiGet('true')" class="pointer">絵文字更新</a>
|
||||
<i class="material-icons waves-effect" onclick="emoji()" title="このボックスを閉じる" data-trans-title="post_box_close">cancel</i>
|
||||
<br>
|
||||
</span>
|
||||
<input type="text" id="emoji-suggest" placeholder="カスタム絵文字検索">
|
||||
<div id="emoji-list" class="" style="">
|
||||
</div>
|
||||
<div class="emoji-control center">
|
||||
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('before')" id="emoji-before">
|
||||
<i class="material-icons">navigate_before</i>
|
||||
</button>
|
||||
<span id="emoji-count"></span>/
|
||||
<span id="emoji-sum"></span>
|
||||
<button class="btn waves-effect blue" style="width:30%; padding:0;" onclick="emojiList('next')" id="emoji-next">
|
||||
<i class="material-icons">navigate_next</i>
|
||||
</button>
|
||||
</div>
|
||||
<div id="default-emoji">
|
||||
<span id="now-emoji"></span>一覧を表示中<br><span class="gray sml">一部デフォルト絵文字は入力・描画できません。(国旗系など)</span>
|
||||
<br>
|
||||
<a onclick="customEmoji()" class="pointer waves-effect" title="カスタム絵文字">
|
||||
<i class="material-icons">add</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('people')" class="pointer waves-effect" title="ひと">
|
||||
<i class="material-icons">people</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('nature')" class="pointer waves-effect" title="自然">
|
||||
<i class="material-icons">local_florist</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('food')" class="pointer waves-effect" title="食べ物">
|
||||
<i class="material-icons">restaurant</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('activity')" class="pointer waves-effect" title="活動">
|
||||
<i class="material-icons">directions_run</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('place')" class="pointer waves-effect" title="場所">
|
||||
<i class="material-icons">directions_car</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('object')" class="pointer waves-effect" title="もの">
|
||||
<i class="material-icons">attach_file</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('symbol')" class="pointer waves-effect" title="記号">
|
||||
<i class="material-icons">gesture</i>
|
||||
</a>
|
||||
<a onclick="defaultEmoji('flag')" class="pointer waves-effect" title="国旗">
|
||||
<i class="material-icons">flag</i>
|
||||
</a>
|
||||
<a onclick="faicon()" class="pointer waves-effect" title="faicon" id="faicon-btn">
|
||||
<i class="fa fa-fort-awesome"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal Structure Tootdata-->
|
||||
<div id="tootmodal" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<ul class="collapsible" data-collapsible="accordion" id="det-col">
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">arrow_upward</i>これより前の会話
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-reply">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header" id="activator">
|
||||
<i class="material-icons">more_horiz</i>対象のトゥート
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-this">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">arrow_downward</i>これよりあとの会話
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-after">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">people_outline</i>これより前のLocal TL(エアリプソース確認)
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-before">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">person_outline</i>これより前のユーザーTL(BTソース確認)
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="user-before">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="material-icons">star</i>このトゥートをお気に入りに登録した人
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-fav">
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="collapsible-header">
|
||||
<i class="text-darken-3 fa fa-retweet"></i>このトゥートをブーストした人
|
||||
</div>
|
||||
<div class="collapsible-body toot-reset" id="toot-rt">
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
他のアカウントを使用(<i class="fa fa-retweet"></i>/<i class="fa fa-star"></i>の解除はできません)<br>
|
||||
<div class="row">
|
||||
<div class="col s4">
|
||||
<select id="status-acct-sel" class="acct-sel"></select>
|
||||
</div>
|
||||
<div class="col s2">
|
||||
<button class="dropdown-button btn waves-effect" style="width:100%;" onclick="staEx('reply')"><i class="fa fa-share left"></i>返信</button>
|
||||
</div>
|
||||
<div class="col s2">
|
||||
<button class="dropdown-button btn waves-effect indigo" style="width:100%;" onclick="staEx('rt')"><i class="fa fa-retweet left"></i>ブースト</button>
|
||||
</div>
|
||||
<div class="col s3">
|
||||
<button class="dropdown-button btn waves-effect orange" style="width:100%;" onclick="staEx('fav')"><i class="fa fa-star left"></i>お気に入り登録</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="toot-tools">
|
||||
</div>
|
||||
<div id="toot-after">
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="waves-effect waves-green btn-flat" onclick="brws()">ブラウザで開く</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat" onclick="shot()">スクリーンショット</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat" onclick="cbCopy()">URLをコピー</a>
|
||||
<a href="#!" class="waves-effect waves-green btn-flat" onclick="cbCopy('emb')">埋め込む</a>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal Structure Userdata -->
|
||||
<div id="his-data" class="modal bottom-sheet modal-fixed-footer" style="max-height:750px; height:90%;">
|
||||
<div id="his-data-content" class="modal-content" style="padding-bottom: 0;overflow-y:hidden;">
|
||||
<div id="his-data-show">
|
||||
<img src="./img/loading.svg" id="his-prof" style="">
|
||||
<div class="his-float">
|
||||
<span id="his-name" style="font-size:1.5rem">Loading...</span><span class="gray" id="his-bot"></span>
|
||||
<br>@
|
||||
<span id="his-acct"></span>
|
||||
<span class="gray" id="his-relation"></span>
|
||||
<br>
|
||||
<span class="cbadge">
|
||||
<span id="his-sta"></span>トゥート
|
||||
</span>
|
||||
<span class="cbadge">フォロー:
|
||||
<span id="his-follow"></span>
|
||||
</span>
|
||||
<span class="cbadge">フォロワー:
|
||||
<span id="his-follower"></span>
|
||||
</span>
|
||||
<span class="cbadge" style="max-width:150px; width:150px; ">Since:
|
||||
<span id="his-since"></span>
|
||||
</div>
|
||||
<div class="his-float">
|
||||
<span id="his-des"></span>
|
||||
<br>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col s12" id="my-data-nav">
|
||||
<ul class="custom-tabs transparent">
|
||||
<li class="custom-tab col my-data-width active-back column-first">
|
||||
<a go="#his-tl">タイムライン</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width">
|
||||
<a go="#his-follow-list">フォロー</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width">
|
||||
<a go="#his-follower-list">フォロワー</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-his-data">
|
||||
<a go="#his-action">他アカウントで操作</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-his-data">
|
||||
<a go="#his-list">リスト</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-my-data">
|
||||
<a go="#his-fav-list">お気に入り登録</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-my-data">
|
||||
<a go="#his-blocking-list">ブロック</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-my-data">
|
||||
<a go="#his-muting-list">ミュート</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-my-data">
|
||||
<a go="#his-domain-list">ドメインブロック</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-my-data">
|
||||
<a go="#his-prof-list">プロフィール編集</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-my-data">
|
||||
<a go="#his-request-list">フォローリクエスト</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-his-data">
|
||||
<a go="#his-matching-list">似てる</a>
|
||||
</li>
|
||||
<li class="custom-tab col my-data-width only-my-data">
|
||||
<a go="#his-follow-recom-list">おすすめ</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="his-tl" class="col s12 tab-content">
|
||||
<div id="his-tl-contents" class="cont-series">
|
||||
</div>
|
||||
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="utl('--now','more')">もっと</button>
|
||||
</div>
|
||||
<div id="his-follow-list" class="col s12 tab-content">
|
||||
<div id="his-follow-list-contents" class="cont-series">
|
||||
</div>
|
||||
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="flw('--now','more')">もっと</button>
|
||||
</div>
|
||||
<div id="his-follower-list" class="col s12 tab-content">
|
||||
<div id="his-follower-list-contents" class="cont-series">
|
||||
</div>
|
||||
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="fer('--now','more')">もっと</button>
|
||||
</div>
|
||||
<div id="his-action" class="col s12 tab-content">
|
||||
他のアカウントを使用してフォロー(解除はできません)<br>
|
||||
<div style="max-width:500px;"><select id="user-acct-sel" class="acct-sel"></select></div>で
|
||||
<a href="#!" class="waves-effect btn" onclick="follow('selector','true')">フォロー</a><br>
|
||||
または<br>
|
||||
<a href="#!" class="waves-effect btn" onclick="udgEx('selector', 'selector')">プロフを開く</a><br>
|
||||
</div>
|
||||
<div id="his-list" class="col s12 tab-content">
|
||||
<div id="his-lists-a">リストに追加するためにはフォローが必要です。</div>
|
||||
|
||||
<div id="his-lists-b"></div>
|
||||
</div>
|
||||
<div id="his-fav-list" class="col s12 tab-content">
|
||||
<div id="his-fav-list-contents" class="cont-series">
|
||||
</div>
|
||||
<button class="btn waves-effect" style="width:100%; padding:0;" onclick="showFav('more')">もっと</button>
|
||||
</div>
|
||||
<div id="his-blocking-list" class="col s12 tab-content">
|
||||
<div id="his-blocking-list-contents"class="cont-series" >
|
||||
</div>
|
||||
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showBlo('more')">もっと</button>
|
||||
</div>
|
||||
<div id="his-muting-list" class="col s12 tab-content">
|
||||
<div id="his-muting-list-contents" class="cont-series">
|
||||
</div>
|
||||
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showMut('more')">もっと</button>
|
||||
</div>
|
||||
<div id="his-domain-list" class="col s12 tab-content">
|
||||
<div id="his-domain-list-contents" class="cont-series">
|
||||
</div>
|
||||
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showDom('more')">もっと</button>ブロックするドメイン
|
||||
<br>
|
||||
<input type="text" placeholder="example.com" id="domainblock">
|
||||
<button class="btn waves-effect" onclick="addDomainblock()">ブロック</button>
|
||||
<br>
|
||||
</div>
|
||||
<div id="his-prof-list" class="col s12 tab-content">名前
|
||||
<br>
|
||||
<input type="text" placeholder="名前" id="his-name-val" style="max-width:250px;">
|
||||
<br>自己紹介
|
||||
<br>
|
||||
<div class="input-field col s12">
|
||||
<textarea placeholder="自己紹介" id="his-des-val" class="materialize-textarea"></textarea>
|
||||
<label for="his-des-val">自己紹介</label>
|
||||
</div>
|
||||
<br>プロフィール画像変更:
|
||||
<span id="prof-change">
|
||||
<input type="file" onchange="imgChange(this,'avatar')">
|
||||
</span>
|
||||
<br>ヘッダー画像変更:
|
||||
<span id="header-change">
|
||||
<input type="file" onchange="imgChange(this,'header')">
|
||||
</span>
|
||||
</div>
|
||||
<div id="his-request-list" class="col s12 tab-content">
|
||||
<div id="his-request-list-contents" class="cont-series">
|
||||
</div>
|
||||
<button class="btn waves-effect " style="width:100%; padding:0;" onclick="showReq('more')">もっと</button>
|
||||
</div>
|
||||
<div id="his-matching-list" class="col s12 tab-content">
|
||||
似ているユーザーを取得できます。<br>
|
||||
Powered by <a href="https://vinayaka.distsn.org/" target="_blank">Mastodon User Matching</a><br>
|
||||
<div id="his-matching-list-contents" class="cont-series">
|
||||
|
||||
</div>
|
||||
<button class="btn waves-effect " onclick="showMat()">取得</button>
|
||||
</div>
|
||||
<div id="his-follow-recom-list" class="col s12 tab-content">
|
||||
<div id="his-follow-recom-contents" class="cont-series">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="modal-action waves-effect waves-green btn-flat" id="his-history-btn" onclick="historyShow()">一つ前のユーザーデータ</button>
|
||||
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-follow-btn" onclick="follow()">フォロー</a>
|
||||
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-mute-btn" onclick="mute()">ミュート</a>
|
||||
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-block-btn" onclick="block()">ブロック</a>
|
||||
<a href="#!" class="modal-action waves-effect waves-green btn-flat" id="his-emp-btn" onclick="empUser()">ユーザー強調</a>
|
||||
<a href="#!" class="modal-action waves-effect waves-green btn-flat" onclick="hisclose()">Close</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal Structure Image-->
|
||||
<div id="imagemodal" class="modal modal-fixed-footer" style="min-width:550px">
|
||||
<div class="modal-content">
|
||||
<div id="imagewrap">
|
||||
<img src="" id="imgmodal">
|
||||
</div>
|
||||
|
||||
<br>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
DL:<span id="imgprog"></span>%
|
||||
<a class="waves-effect white-text" onclick="zoom(2)">
|
||||
<i class="material-icons">zoom_in</i>
|
||||
</a>
|
||||
<a class="waves-effect white-text" onclick="zoom(0.5)">
|
||||
<i class="material-icons">zoom_out</i>
|
||||
</a>
|
||||
<button class="btn waves-effect purple" onclick="dlImg()">
|
||||
<i class="material-icons">file_download</i>
|
||||
</button>
|
||||
<button class="btn waves-effect brown" onclick="detFromImg()">当該トゥート</button>
|
||||
<button class="btn waves-effect orange" onclick="imgCont('prev')" id="image-prev">
|
||||
<i class="material-icons">keyboard_arrow_left</i>
|
||||
</button>
|
||||
<button class="btn waves-effect orange" onclick="imgCont('next')" id="image-next">
|
||||
<i class="material-icons">keyboard_arrow_right</i>
|
||||
</button>
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">
|
||||
<i class="material-icons">close</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal Structure Video-->
|
||||
<div id="videomodal" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<video src="" id="video" style="max-width:100%; max-height:100%;" controls >
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Modal Structure Release Note-->
|
||||
<div id="releasenote" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<h3>TheDesk</h3>
|
||||
<a href="https://thedesk.top" target="_blank">HP</a><br>
|
||||
<a href="https://github.com/cutls/TheDesk" target="_blank">GitHub</a><br><br>
|
||||
<div id="release-Mio_15-10-0" style="display:none">
|
||||
<h5>Release Note Mio (15.10.0)</h5>
|
||||
<ul>
|
||||
<li>音声読み上げに対応</li>
|
||||
<li>Twitterのツイートに対するリンクをリッチに表示</li>
|
||||
<li>削除追跡取り下げ</li>
|
||||
<li>アップデートスキップの有効期限を次バージョン時にする機能</li>
|
||||
<li>CINDERELLA NowPlaying(imastodon.net)</li>
|
||||
<li>ライセンス変更(v5)</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<br><br>
|
||||
TheDeskはオープンソース・ソフトウェアです。<br>
|
||||
皆様のあたたかいご支援のもとで製作されています。<br>
|
||||
<a href="https://enty.jp/Cutls" target="_blank">Entyで支援</a><br>
|
||||
<a href="https://www.amazon.co.jp/registry/wishlist/2TV35ZHHJPDSB" target="_blank">Amazonほしいものリスト</a><br>
|
||||
<a href="mailto:mstdn@thedesk.top" target="_blank">mstdn@thedesk.top</a>にAmazonギフトカードを送る<br>
|
||||
<a href="https://osushi.love/Cutls_P" target="_blank">Osushi.love</a>で寿司を贈る<br>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#!" class="modal-action modal-close waves-effect waves-green btn-flat">Close</a>
|
||||
</div>
|
||||
</div>
|
||||
<!--PiP-->
|
||||
<div id="pip" class="hide pip-bottom pip-left">
|
||||
<i class="material-icons pip-horiz pointer" onclick="pipHoriz()">chevron_right</i>
|
||||
<i class="material-icons pip-vert pointer" onclick="pipVert()">expand_less</i>
|
||||
<i class="material-icons pointer" onclick="endPip()">close</i>
|
||||
<div id="pip-content">
|
||||
</div>
|
||||
</div>
|
||||
<!--左下メッセージ-->
|
||||
<div id="message">
|
||||
</div>
|
||||
<!--Radio Happy(Yui) Taku Inoue-->
|
||||
<audio src="" id="radio"></audio>
|
||||
<!--JS-->
|
||||
<script type="text/javascript" src="./js/ui/tips.js"></script>
|
||||
<script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.7"></script>
|
||||
<script type="text/javascript" src="./js/common/about.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/parse.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/scroll.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/tl.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/card.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/date.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/notification.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/datails.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/mix.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/src.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/filter.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/tag.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/list.js"></script>
|
||||
<script type="text/javascript" src="./js/tl/speech.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/post-box.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/layout.js"></script>
|
||||
<script type="text/javascript" src="./js/login/instance.js"></script>
|
||||
<script type="text/javascript" src="./js/login/login.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/img.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/pip.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/sort.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/spotify.js"></script>
|
||||
<script type="text/javascript" src="./js/post/post.js"></script>
|
||||
<script type="text/javascript" src="./js/post/use-txtbox.js"></script>
|
||||
<script type="text/javascript" src="./js/post/secure.js"></script>
|
||||
<script type="text/javascript" src="./js/post/img.js"></script>
|
||||
<script type="text/javascript" src="./js/post/status.js"></script>
|
||||
<script type="text/javascript" src="./js/post/emoji.js"></script>
|
||||
<script type="text/javascript" src="./js/post/suggest.js"></script>
|
||||
<script type="text/javascript" src="./js/post/bb-md.js"></script>
|
||||
<script type="text/javascript" src="./js/userdata/showOnTL.js"></script>
|
||||
<script type="text/javascript" src="./js/userdata/his-data.js"></script>
|
||||
<script type="text/javascript" src="./js/userdata/prof-edit.js"></script>
|
||||
<script type="text/javascript" src="./js/emoji/emojipack.js"></script>
|
||||
<script type="text/javascript" src="./js/emoji/default-emoji.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
||||
|
||||
|
||||
|
2
app/package-lock.json
generated
2
app/package-lock.json
generated
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "TheDesk",
|
||||
"version": "15.9.0",
|
||||
"version": "15.10.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
@ -290,7 +290,7 @@
|
|||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<a href="new.html">Beta Index</a><br>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i class="material-icons left">undo</i>戻る</a>
|
||||
<br>
|
||||
<br>キーボードショートカット一覧
|
||||
|
|
269
package-lock.json
generated
269
package-lock.json
generated
|
@ -1,270 +1,3 @@
|
|||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"ansi-escapes": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
|
||||
"integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw=="
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
||||
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
|
||||
},
|
||||
"ansi-styles": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||
"requires": {
|
||||
"color-convert": "1.9.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
||||
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
|
||||
"requires": {
|
||||
"ansi-styles": "3.2.1",
|
||||
"escape-string-regexp": "1.0.5",
|
||||
"supports-color": "5.4.0"
|
||||
}
|
||||
},
|
||||
"chardet": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
|
||||
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I="
|
||||
},
|
||||
"cli-cursor": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
|
||||
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
|
||||
"requires": {
|
||||
"restore-cursor": "2.0.0"
|
||||
}
|
||||
},
|
||||
"cli-width": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
|
||||
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
|
||||
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
|
||||
"requires": {
|
||||
"color-name": "1.1.3"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
},
|
||||
"external-editor": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz",
|
||||
"integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==",
|
||||
"requires": {
|
||||
"chardet": "0.4.2",
|
||||
"iconv-lite": "0.4.23",
|
||||
"tmp": "0.0.33"
|
||||
}
|
||||
},
|
||||
"figures": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
|
||||
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
|
||||
"requires": {
|
||||
"escape-string-regexp": "1.0.5"
|
||||
}
|
||||
},
|
||||
"growly": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz",
|
||||
"integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE="
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.23",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
|
||||
"integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
|
||||
"requires": {
|
||||
"safer-buffer": "2.1.2"
|
||||
}
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz",
|
||||
"integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==",
|
||||
"requires": {
|
||||
"ansi-escapes": "3.1.0",
|
||||
"chalk": "2.4.1",
|
||||
"cli-cursor": "2.1.0",
|
||||
"cli-width": "2.2.0",
|
||||
"external-editor": "2.2.0",
|
||||
"figures": "2.0.0",
|
||||
"lodash": "4.17.10",
|
||||
"mute-stream": "0.0.7",
|
||||
"run-async": "2.3.0",
|
||||
"rxjs": "5.5.11",
|
||||
"string-width": "2.1.1",
|
||||
"strip-ansi": "4.0.0",
|
||||
"through": "2.3.8"
|
||||
}
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
||||
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
|
||||
},
|
||||
"is-promise": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
|
||||
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
|
||||
},
|
||||
"isexe": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
||||
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.10",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
|
||||
"integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
|
||||
},
|
||||
"mimic-fn": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
|
||||
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
|
||||
},
|
||||
"mute-stream": {
|
||||
"version": "0.0.7",
|
||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
||||
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
|
||||
"integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U="
|
||||
},
|
||||
"onetime": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
|
||||
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
|
||||
"requires": {
|
||||
"mimic-fn": "1.2.0"
|
||||
}
|
||||
},
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
|
||||
},
|
||||
"restore-cursor": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
|
||||
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
|
||||
"requires": {
|
||||
"onetime": "2.0.1",
|
||||
"signal-exit": "3.0.2"
|
||||
}
|
||||
},
|
||||
"run-async": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
|
||||
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
|
||||
"requires": {
|
||||
"is-promise": "2.1.0"
|
||||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "5.5.11",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz",
|
||||
"integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==",
|
||||
"requires": {
|
||||
"symbol-observable": "1.0.1"
|
||||
}
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
||||
},
|
||||
"semver": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
|
||||
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
|
||||
},
|
||||
"shellwords": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz",
|
||||
"integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww=="
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
|
||||
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
|
||||
"requires": {
|
||||
"is-fullwidth-code-point": "2.0.0",
|
||||
"strip-ansi": "4.0.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
||||
"requires": {
|
||||
"ansi-regex": "3.0.0"
|
||||
}
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
|
||||
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
|
||||
"requires": {
|
||||
"has-flag": "3.0.0"
|
||||
}
|
||||
},
|
||||
"symbol-observable": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
|
||||
"integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ="
|
||||
},
|
||||
"through": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
||||
"requires": {
|
||||
"os-tmpdir": "1.0.2"
|
||||
}
|
||||
},
|
||||
"which": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
|
||||
"integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
|
||||
"requires": {
|
||||
"isexe": "2.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
"lockfileVersion": 1
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user