Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
6d478906a0 | ||
|
e436aed6c5 | ||
|
25867690f3 | ||
|
b5efbebadb | ||
|
e93f860c0c | ||
|
df04ebca4c | ||
|
d2aaf2c2cf | ||
|
8386cd675c | ||
|
ad7b3cf485 | ||
|
f9f2aeab23 | ||
|
ea735d279f | ||
|
fa616d56fd | ||
|
907e55e6d7 | ||
|
874be5bca8 | ||
|
f49907e5e5 | ||
|
da197340ec | ||
|
cf6e5b5dd5 | ||
|
917cd322fc | ||
|
bc616ba118 | ||
|
ea26648619 | ||
|
c2f1aec8b6 | ||
|
c005b546ba |
@@ -48,6 +48,12 @@ html {
|
||||
.first .hide-first {
|
||||
display: none;
|
||||
}
|
||||
.hide-second {
|
||||
display: none;
|
||||
}
|
||||
.first .hide-second {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#compt {
|
||||
margin-top: 20px;
|
||||
|
@@ -5,10 +5,12 @@ body {
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
cursor: default;
|
||||
font-size: 13px;
|
||||
height: 100vh;
|
||||
color: var(--color);
|
||||
}
|
||||
html {
|
||||
font-size: 13px;
|
||||
}
|
||||
.titlebar,
|
||||
.menubar-menu-container,
|
||||
.action-menu-item {
|
||||
@@ -19,9 +21,12 @@ body {
|
||||
.action-menu-item:hover {
|
||||
filter: brightness(80%) !important;
|
||||
}
|
||||
.btn {
|
||||
margin: 5px;
|
||||
.btn, .btn-flat {
|
||||
font-size: 1.1rem;
|
||||
margin: 0.4rem;
|
||||
text-transform: none;
|
||||
height: 2.76rem;
|
||||
line-height: 2.76rem;
|
||||
}
|
||||
.markdown {
|
||||
display: none;
|
||||
@@ -89,7 +94,7 @@ option {
|
||||
}
|
||||
.badge {
|
||||
min-width: 0 !important;
|
||||
margin-left: 5px !important;
|
||||
margin-left: 0.4rem !important;
|
||||
}
|
||||
.unvisible {
|
||||
opacity: 0;
|
||||
@@ -163,16 +168,17 @@ pre {
|
||||
display: block;
|
||||
border-left: 5px solid;
|
||||
border-color: #079903;
|
||||
padding-left: 10px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-left: 5px;
|
||||
padding-left: 0.75rem;
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 0.75rem;
|
||||
margin-left: 0.75rem;
|
||||
background-color: #000;
|
||||
padding: 1em 1em 1em;
|
||||
position: relative;
|
||||
border-top-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
border-top-left-radius: 0.75rem;
|
||||
border-bottom-right-radius: 0.75rem;
|
||||
border-bottom-left-radius: 0.75rem;
|
||||
white-space: normal;
|
||||
}
|
||||
blockquote,
|
||||
.quote p {
|
||||
@@ -184,9 +190,9 @@ blockquote,
|
||||
background-color: #ddd;
|
||||
padding: 1em 1em 1em;
|
||||
position: relative;
|
||||
border-top-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
border-top-left-radius: 0.75rem;
|
||||
border-bottom-right-radius: 0.75rem;
|
||||
border-bottom-left-radius: 0.5rem;
|
||||
}
|
||||
blockquote:before,
|
||||
.quote:before {
|
||||
@@ -204,9 +210,9 @@ blockquote:before,
|
||||
background-color: #fff;
|
||||
padding: 1em 1em 1em;
|
||||
position: relative;
|
||||
border-top-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
border-top-left-radius: 0.75rem;
|
||||
border-bottom-right-radius: 0.75rem;
|
||||
border-bottom-left-radius: 0.75rem;
|
||||
border-left: 5px solid #0096fa;
|
||||
}
|
||||
.pixiv-post :before {
|
||||
@@ -223,7 +229,7 @@ blockquote:before,
|
||||
display: none;
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: calc(100vh - 40px);
|
||||
height: calc(100vh - 3rem);
|
||||
background-color: var(--bg);
|
||||
color: var(--color);
|
||||
z-index: 99999;
|
||||
@@ -318,7 +324,7 @@ blockquote:before,
|
||||
}
|
||||
.font {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 5px;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
.font:hover {
|
||||
background-color: #999;
|
||||
@@ -339,9 +345,9 @@ blockquote:before,
|
||||
width: 540px;
|
||||
top: calc(50% - 150px);
|
||||
left: calc(50% - 250px);
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
border: thin solid gray;
|
||||
border-radius: 5px;
|
||||
border-radius: 0.4rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
#menu-wrapper {
|
||||
@@ -351,12 +357,12 @@ blockquote:before,
|
||||
overflow: hidden;
|
||||
}
|
||||
#left-menu {
|
||||
width: 230px;
|
||||
width: 17.7rem;
|
||||
}
|
||||
#left-menu a {
|
||||
padding-left: 5px;
|
||||
padding-left: 0.4rem;
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
@@ -366,7 +372,7 @@ blockquote:before,
|
||||
background-color: var(--beforehover);
|
||||
}
|
||||
#left-menu span {
|
||||
margin-left: 5px;
|
||||
margin-left: 0.4rem;
|
||||
}
|
||||
#left-menu a.active {
|
||||
background-color: var(--emphasized);
|
||||
@@ -375,7 +381,7 @@ blockquote:before,
|
||||
width: 100%;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#tltype {
|
||||
display: flex;
|
||||
@@ -385,13 +391,13 @@ blockquote:before,
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
width: 170px;
|
||||
height: 40px;
|
||||
width: 13rem;
|
||||
height: 3.1rem;
|
||||
cursor: pointer;
|
||||
color: var(--color);
|
||||
}
|
||||
#tltype .type span {
|
||||
width: calc(100% - 30px);
|
||||
width: calc(100% - 2.3rem);
|
||||
}
|
||||
#tltype .type:hover {
|
||||
background-color: var(--beforehover);
|
||||
@@ -400,28 +406,28 @@ blockquote:before,
|
||||
background-color: var(--emphasized);
|
||||
}
|
||||
#tltype i {
|
||||
font-size: 30px;
|
||||
font-size: 2.3rem;
|
||||
}
|
||||
#tltype i.sub-icon {
|
||||
font-size: 20px;
|
||||
font-size: 1.53rem;
|
||||
position: absolute;
|
||||
color: var(--beforehover);
|
||||
left: 10px;
|
||||
bottom: 5px;
|
||||
left: 0.9rem;
|
||||
bottom: 0.4rem;
|
||||
background-color: #fff;
|
||||
}
|
||||
.drag-bar {
|
||||
cursor: move;
|
||||
text-align: center;
|
||||
width: calc(100% + 10px);
|
||||
width: calc(100% + 0.8rem);
|
||||
border-radius: 5px;
|
||||
background-color: var(--box);
|
||||
filter: brightness(80%);
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
margin-top: -5px;
|
||||
font-size: 16px;
|
||||
padding: 4px;
|
||||
margin-left: -0.4rem;
|
||||
margin-right: -0.4rem;
|
||||
margin-top: -0.4rem;
|
||||
font-size: 1.3rem;
|
||||
padding: 0.3rem;
|
||||
}
|
||||
#something-wrong {
|
||||
flex-direction: column;
|
||||
@@ -438,10 +444,10 @@ blockquote:before,
|
||||
width: 100vw;
|
||||
background-color: var(--box);
|
||||
z-index: 9999;
|
||||
padding: 10px;
|
||||
padding: 0.8rem;
|
||||
display: grid;
|
||||
grid-template-columns: 3fr 1fr 1fr;
|
||||
grid-template-rows: 1fr 36px;
|
||||
grid-template-rows: 1fr 2.7rem;
|
||||
grid-template-areas: 'note middle right' 'note close close';
|
||||
}
|
||||
#support-btm-en,
|
||||
@@ -458,7 +464,7 @@ blockquote:before,
|
||||
grid-area: close;
|
||||
}
|
||||
.select-wrapper .dropdown-content {
|
||||
width: 250px !important;
|
||||
width: 19.2rem !important;
|
||||
}
|
||||
input,
|
||||
textarea {
|
||||
@@ -474,7 +480,7 @@ textarea {
|
||||
color: var(--color) !important;
|
||||
}
|
||||
#src-contents svg {
|
||||
margin-right: 5px;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
.contributor {
|
||||
cursor: pointer;
|
||||
@@ -484,11 +490,11 @@ textarea {
|
||||
}
|
||||
.tagComp {
|
||||
display: grid;
|
||||
grid-template-columns: 60px 80px 1fr;
|
||||
grid-template-columns: 4.6rem 6.15rem 1fr;
|
||||
grid-template-rows: 1fr 1fr;
|
||||
grid-template-areas: 'svg toot user' 'svg toot tag' 'svg toots tag';
|
||||
border-top: dotted 0.5px var(--gray);
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
.tagCompSvg {
|
||||
grid-area: svg;
|
||||
@@ -506,7 +512,7 @@ textarea {
|
||||
}
|
||||
.tagCompTag {
|
||||
grid-area: tag;
|
||||
padding-top: 10px;
|
||||
padding-top: 0.4rem;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
@@ -517,15 +523,15 @@ textarea {
|
||||
#pageSrc {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: calc(50vw - 150px);
|
||||
width: 300px;
|
||||
left: calc(50vw - 11.53rem);
|
||||
width: 23rem;
|
||||
max-width: 100%;
|
||||
background-color: var(--box);
|
||||
z-index: 501;
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#pageSrcInput {
|
||||
width: 160px;
|
||||
width: 12.3rem;
|
||||
}
|
||||
.voice {
|
||||
clip: rect(1px, 1px, 1px, 1px);
|
||||
@@ -576,7 +582,7 @@ textarea {
|
||||
font-family: 'Material Icons';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 24px;
|
||||
font-size: 1.84rem;
|
||||
line-height: 1;
|
||||
letter-spacing: normal;
|
||||
text-transform: none;
|
||||
|
151
app/css/post.css
151
app/css/post.css
@@ -1,145 +1,148 @@
|
||||
/*トゥートボックス向けCSS*/
|
||||
#post-box {
|
||||
display: none;
|
||||
position: fixed;
|
||||
left: calc(50vw - 150px);
|
||||
top: 50vh;
|
||||
background-color: var(--postbox);
|
||||
border: thin solid gray;
|
||||
z-index: 501;
|
||||
max-width: 100%;
|
||||
padding: 5px;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
display: none;
|
||||
position: fixed;
|
||||
left: calc(50vw - 150px);
|
||||
top: 50vh;
|
||||
background-color: var(--postbox);
|
||||
border: thin solid gray;
|
||||
z-index: 501;
|
||||
max-width: 100%;
|
||||
padding: 0.4rem;
|
||||
border-radius: 0.4rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
textarea {
|
||||
min-height: 100px !important;
|
||||
font-family: inherit;
|
||||
min-height: 7.7rem !important;
|
||||
font-family: inherit;
|
||||
}
|
||||
#post-box .ui-resizable-s, #post-box .ui-resizable-se{
|
||||
display: none !important;
|
||||
#post-box .ui-resizable-s,
|
||||
#post-box .ui-resizable-se {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.cancel {
|
||||
font-size: 0.5rem;
|
||||
color: gray;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 2px;
|
||||
top: 4px;
|
||||
font-size: 0.5rem;
|
||||
color: gray;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 2px;
|
||||
top: 4px;
|
||||
}
|
||||
.more-show {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#drag {
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
height: 100px;
|
||||
}
|
||||
#post-btn {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#vis {
|
||||
text-transform: capitalize;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
#cw-text {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#sch-box {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#sch-box input {
|
||||
width: auto;
|
||||
width: auto;
|
||||
}
|
||||
.picker__close,
|
||||
.picker__today,
|
||||
.picker__clear {
|
||||
color: #26a69a !important;
|
||||
color: #26a69a !important;
|
||||
}
|
||||
.cw {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.sensitive {
|
||||
filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
}
|
||||
#emoji {
|
||||
}
|
||||
#suggest {
|
||||
max-height: 300px;
|
||||
overflow-y: scroll;
|
||||
max-height: 23rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#emoji-list {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
overflow-y: scroll;
|
||||
width: 100%;
|
||||
height: 15.4rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#preview-field {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.preview-img {
|
||||
width: 50px;
|
||||
max-height: 100px;
|
||||
width: 4rem;
|
||||
max-height: 7.6rem;
|
||||
}
|
||||
.pi-wrap {
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
max-height: 100px;
|
||||
display: inline-block;
|
||||
width: 3.8rem;
|
||||
max-height: 7.7rem;
|
||||
}
|
||||
#default-emoji a {
|
||||
color: var(--color);
|
||||
margin-right: 2px;
|
||||
color: var(--color);
|
||||
margin-right: 0.15rem;
|
||||
}
|
||||
.character-counter {
|
||||
position: relative;
|
||||
top: -25px;
|
||||
position: relative;
|
||||
top: -1.9rem;
|
||||
}
|
||||
.trendtag {
|
||||
overflow-y: scroll;
|
||||
max-height: 100px;
|
||||
overflow-y: scroll;
|
||||
max-height: 7.7rem;
|
||||
}
|
||||
#toot-btn-field {
|
||||
display: flex;
|
||||
display: flex;
|
||||
}
|
||||
#toot-post-btn {
|
||||
width: calc(100% - 10px);
|
||||
padding: 0;
|
||||
margin-top: 10px;
|
||||
width: calc(100% - 0.7rem);
|
||||
padding: 0;
|
||||
margin-top: 0.7rem;
|
||||
height: 2.7rem;
|
||||
}
|
||||
#toot-sec-btn {
|
||||
width: 30px;
|
||||
padding: 0;
|
||||
margin-top: 10px;
|
||||
width: 2.3rem;
|
||||
padding: 0;
|
||||
margin-top: 0.7rem;
|
||||
}
|
||||
#left-side {
|
||||
float: left;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 32px);
|
||||
float: left;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 2.5rem);
|
||||
}
|
||||
#right-side {
|
||||
display: none;
|
||||
float: left;
|
||||
width: 300px;
|
||||
padding: 5px;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 32px);
|
||||
display: none;
|
||||
float: left;
|
||||
width: 23rem;
|
||||
padding: 0.4rem;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 2.5rem);
|
||||
}
|
||||
#posttgl,#toot-post-btn {
|
||||
background-color: var(--accentbtn);
|
||||
color: var(--color);
|
||||
#posttgl,
|
||||
#toot-post-btn {
|
||||
background-color: var(--accentbtn);
|
||||
color: var(--color);
|
||||
}
|
||||
/*mini*/
|
||||
.mini-post .mize {
|
||||
display: none !important;
|
||||
display: none !important;
|
||||
}
|
||||
.mini-post #textarea {
|
||||
padding: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mini-post #post-box {
|
||||
width: 200px;
|
||||
min-width: 100px;
|
||||
width: 15.4rem;
|
||||
min-width: 7.7rem;
|
||||
}
|
||||
.mini-post #toot-field {
|
||||
padding: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.mini-post #toot-btn-field {
|
||||
padding: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
@@ -3,29 +3,29 @@
|
||||
cursor: move;
|
||||
user-select: none;
|
||||
background-color: var(--modalfooter);
|
||||
margin: 5px;
|
||||
border-radius: 5px;
|
||||
margin: 0.4rem;
|
||||
border-radius: 0.4rem;
|
||||
color: var(--color);
|
||||
padding: 3px;
|
||||
display: grid;
|
||||
grid-template-columns: 43px 1fr 60px;
|
||||
grid-template-columns: 3.3rem 1fr 4.6rem;
|
||||
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction";
|
||||
}
|
||||
.sorticon {
|
||||
grid-area: sorticon;
|
||||
}
|
||||
.sorticon i {
|
||||
font-size: 43px;
|
||||
font-size: 3.3rem;
|
||||
}
|
||||
.sorttitle {
|
||||
margin-left: 5px;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sorttitle;
|
||||
}
|
||||
.sortacct {
|
||||
margin-left: 5px;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sortacct;
|
||||
}
|
||||
.sortaction {
|
||||
margin-left: 5px;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sortaction;
|
||||
}
|
||||
|
264
app/css/tl.css
264
app/css/tl.css
@@ -1,7 +1,7 @@
|
||||
/*TL CSS(ただしBBCode pulse:master.css/spin:font-awesome*/
|
||||
#main {
|
||||
width: 100vw;
|
||||
height: calc(100vh - 40px);
|
||||
height: calc(100% - 3rem);
|
||||
}
|
||||
#timeline-container {
|
||||
overflow-x: scroll;
|
||||
@@ -11,18 +11,19 @@
|
||||
}
|
||||
#bottom {
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
bottom: 0;
|
||||
width: 100vw;
|
||||
height: 40px;
|
||||
padding: 3px;
|
||||
height: 3rem;
|
||||
padding: 0.23rem;
|
||||
padding-right: 0;
|
||||
padding-left: 40px;
|
||||
padding-left: 3rem;
|
||||
background-color: var(--sidebar);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
z-index: 500;
|
||||
box-shadow: 10px 0 10px 10px rgba(0, 0, 0, 0.2);
|
||||
box-shadow: 0.77rem 0 0.77rem, 0.77rem rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
#demobottom {
|
||||
width: 500px;
|
||||
@@ -30,24 +31,24 @@
|
||||
}
|
||||
#bottom.reverse {
|
||||
padding-left: 0;
|
||||
padding-right: 40px;
|
||||
padding-right: 3rem;
|
||||
}
|
||||
.reverse {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
#bottom #dambox {
|
||||
width: 300px;
|
||||
margin-right: 10px;
|
||||
width: 23rem;
|
||||
margin-right: 0.76rem;
|
||||
}
|
||||
#bottom.reverse #dambox {
|
||||
margin-right: 0;
|
||||
}
|
||||
#bottom .trendtag {
|
||||
height: 40px;
|
||||
height: 3rem;
|
||||
}
|
||||
#bottom #group,
|
||||
#demogroup {
|
||||
margin-right: 40px;
|
||||
margin-right: 3rem;
|
||||
}
|
||||
#bottom .leftside {
|
||||
display: flex;
|
||||
@@ -57,41 +58,41 @@
|
||||
align-items: center;
|
||||
}
|
||||
#bottom #tips img {
|
||||
vertical-align: -3px;
|
||||
vertical-align: -0.23rem;
|
||||
}
|
||||
#bottom a,
|
||||
#demogroup a {
|
||||
color: var(--color);
|
||||
}
|
||||
#bottom i {
|
||||
font-size: 30px;
|
||||
font-size: 2.3rem;
|
||||
}
|
||||
.exc-icons {
|
||||
font-size: 20px;
|
||||
font-size: 1.53rem;
|
||||
}
|
||||
.exc-chb {
|
||||
padding-left: 24px !important;
|
||||
padding-left: 1.84rem !important;
|
||||
}
|
||||
.btnsgroup {
|
||||
border: 1px solid;
|
||||
padding-top: 1px;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
margin-right: 15px;
|
||||
border-radius: 5px;
|
||||
height: 35px;
|
||||
padding-left: 0.4rem;
|
||||
padding-right: 0.4rem;
|
||||
margin-right: 1.15rem;
|
||||
border-radius: 0.4rem;
|
||||
height: 2.7rem;
|
||||
}
|
||||
.bgReport {
|
||||
height: 34px;
|
||||
height: 2.61rem;
|
||||
padding-top: 0.45rem;
|
||||
text-decoration: underline;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
padding-left: 0.4rem;
|
||||
padding-right: 0.4rem;
|
||||
}
|
||||
#spot-box {
|
||||
display: grid;
|
||||
grid-template-columns: 40px 30px 2.5fr 1fr 60px;
|
||||
grid-template-rows: 22px 20px;
|
||||
grid-template-columns: 3rem 2.3rem 2.5fr 1fr 4.6rem;
|
||||
grid-template-rows: 1.7rem 1.5rem;
|
||||
grid-template-areas: 'cover name name artist refresh' 'cover progress progress progress time';
|
||||
}
|
||||
#spot-refresh {
|
||||
@@ -105,14 +106,14 @@
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
line-height: 25px;
|
||||
line-height: 1.92rem;
|
||||
}
|
||||
#spot-artist {
|
||||
grid-area: artist;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
line-height: 25px;
|
||||
line-height: 1.92rem;
|
||||
}
|
||||
#spot-img {
|
||||
width: 90%;
|
||||
@@ -126,7 +127,7 @@
|
||||
}
|
||||
.btnsgroup .grouptitle {
|
||||
font-family: Open Sans;
|
||||
font-size: 15px;
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
@media screen and (max-width: 890px) {
|
||||
.btnsgroup .grouptitle {
|
||||
@@ -140,7 +141,7 @@
|
||||
iframe,
|
||||
.cvo video {
|
||||
max-width: 100%;
|
||||
max-height: 300px;
|
||||
max-height: 23rem;
|
||||
}
|
||||
@media screen and (max-width: 600px) {
|
||||
.mobile #timeline-container {
|
||||
@@ -156,12 +157,12 @@ iframe,
|
||||
}
|
||||
.box {
|
||||
overflow: hidden;
|
||||
min-width: 300px;
|
||||
min-width: 23rem;
|
||||
flex: 1;
|
||||
border-top: none;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
margin-bottom: -10px;
|
||||
margin-bottom: -0.75rem;
|
||||
}
|
||||
.img_FTL {
|
||||
display: none;
|
||||
@@ -215,16 +216,16 @@ iframe,
|
||||
}
|
||||
.emoji,
|
||||
.emoji-img {
|
||||
width: 15px;
|
||||
width: 1.153rem;
|
||||
}
|
||||
.area-toot .emoji,
|
||||
.area-toot .emoji-img {
|
||||
width: 20px;
|
||||
width: 1.538rem;
|
||||
vertical-align: middle;
|
||||
margin: -1px 0;
|
||||
}
|
||||
.bigemoji {
|
||||
width: 100px !important;
|
||||
width: 7.7rem !important;
|
||||
height: auto !important;
|
||||
position: relative;
|
||||
z-index: 9999;
|
||||
@@ -253,13 +254,13 @@ iframe,
|
||||
}
|
||||
.cvo {
|
||||
user-select: text;
|
||||
padding-left: 5px;
|
||||
padding-left: 0.4rem;
|
||||
border-bottom: 0.5px solid;
|
||||
padding-right: 2px;
|
||||
padding-right: 0.15rem;
|
||||
word-break: break-word;
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: 43px 2fr 1fr;
|
||||
grid-template-columns: 3.3rem 2fr 1fr;
|
||||
grid-template-rows: auto 1.6rem 1fr auto 2.5rem;
|
||||
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space toot toot' 'space additional additional' 'vis actions side';
|
||||
}
|
||||
@@ -285,21 +286,21 @@ iframe,
|
||||
}
|
||||
|
||||
.area-notice {
|
||||
margin: 2px;
|
||||
margin: 0.15rem;
|
||||
grid-area: notice;
|
||||
}
|
||||
|
||||
.area-icon {
|
||||
width: 40px;
|
||||
margin: 2px;
|
||||
width: 3rem;
|
||||
margin: 0.15rem;
|
||||
grid-area: icon;
|
||||
}
|
||||
|
||||
.area-display_name {
|
||||
user-select: text;
|
||||
height: 1.5em;
|
||||
margin: 2px;
|
||||
margin-left: 5px;
|
||||
margin: 0.15rem;
|
||||
margin-left: 0.4rem;
|
||||
overflow: hidden;
|
||||
grid-area: display_name;
|
||||
white-space: nowrap;
|
||||
@@ -310,7 +311,7 @@ iframe,
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.flex-name {
|
||||
max-width: calc(100% - 60px);
|
||||
max-width: calc(100% - 4.6rem);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
@@ -318,9 +319,9 @@ iframe,
|
||||
.area-toot {
|
||||
cursor: text;
|
||||
user-select: auto;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-left: 5px;
|
||||
margin-top: 0.4rem;
|
||||
margin-bottom: 0.4rem;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: toot;
|
||||
}
|
||||
|
||||
@@ -353,7 +354,7 @@ iframe,
|
||||
.area-actions {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
top: -5px;
|
||||
top: -0.4rem;
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
@@ -361,28 +362,28 @@ iframe,
|
||||
grid-area: actions;
|
||||
}
|
||||
.area-vis {
|
||||
margin: 2px;
|
||||
margin: 0.4rem;
|
||||
grid-area: vis;
|
||||
text-align: center;
|
||||
}
|
||||
.area-side {
|
||||
display: flex;
|
||||
top: -5px;
|
||||
top: -0.4rem;
|
||||
position: relative;
|
||||
justify-content: flex-end;
|
||||
margin: 2px;
|
||||
margin: 0.15rem;
|
||||
grid-area: side;
|
||||
}
|
||||
|
||||
.cusr {
|
||||
user-select: text;
|
||||
padding-left: 5px;
|
||||
padding-left: 0.4rem;
|
||||
border-bottom: 0.5px solid;
|
||||
padding-right: 2px;
|
||||
padding-right: 0.15rem;
|
||||
word-break: break-word;
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: 43px 2fr 1fr;
|
||||
grid-template-columns: 3.3rem 2fr 1fr;
|
||||
grid-template-rows: auto 1.6rem 2fr auto;
|
||||
grid-template-areas: 'notice notice notice' 'icon display_name display_name' 'space status status' 'space actions actions';
|
||||
}
|
||||
@@ -391,12 +392,12 @@ iframe,
|
||||
grid-area: status;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 5px;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.cusr .cbadge {
|
||||
margin-top: 6px;
|
||||
margin-left: 6px;
|
||||
margin-top: 0.46rem;
|
||||
margin-left: 0.46rem;
|
||||
}
|
||||
|
||||
.quote-inline {
|
||||
@@ -404,16 +405,16 @@ iframe,
|
||||
}
|
||||
.quote-renote {
|
||||
display: grid;
|
||||
grid-template-columns: 43px 2fr 25px;
|
||||
grid-template-columns: 3.3rem 2fr 1.92rem;
|
||||
grid-template-areas: 'ricon ruser rdet' 'ricon rtext rdet';
|
||||
border: 1px solid;
|
||||
margin-top: 3px;
|
||||
margin-top: 0.23rem;
|
||||
padding: 1px;
|
||||
border-radius: 3px;
|
||||
border-radius: 0.23rem;
|
||||
}
|
||||
.renote-icon {
|
||||
grid-area: ricon;
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
.renote-details {
|
||||
grid-area: rdet;
|
||||
@@ -432,17 +433,17 @@ iframe,
|
||||
color: var(--color);
|
||||
}
|
||||
.area-side i {
|
||||
margin-left: 10px;
|
||||
margin-left: 0.75rem;
|
||||
}
|
||||
.viabadge {
|
||||
margin-top: 10px;
|
||||
margin-top: 0.75rem;
|
||||
}
|
||||
.action i {
|
||||
font-size: 1.2rem;
|
||||
margin-right: 2px;
|
||||
margin-right: 0.15rem;
|
||||
}
|
||||
.action .fa-quote-right {
|
||||
margin-top: 2px;
|
||||
margin-top: 0.15rem;
|
||||
}
|
||||
.actct {
|
||||
color: var(--beforehover);
|
||||
@@ -461,24 +462,24 @@ iframe,
|
||||
position: fixed;
|
||||
background-color: var(--box);
|
||||
z-index: 9999;
|
||||
border-radius: 5px;
|
||||
padding: 5px;
|
||||
border-radius: 0.4rem;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
.contextMenu.bottom:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
right: 27px;
|
||||
border: 15px solid transparent;
|
||||
border-top: 15px solid var(--box);
|
||||
right: 2rem;
|
||||
border: 1.2rem solid transparent;
|
||||
border-top: 1.2rem solid var(--box);
|
||||
}
|
||||
.contextMenu.top:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -30px;
|
||||
right: 27px;
|
||||
border: 15px solid transparent;
|
||||
border-bottom: 15px solid var(--box);
|
||||
top: -2.3rem;
|
||||
right: 2rem;
|
||||
border: 1.5rem solid transparent;
|
||||
border-bottom: 1.5rem solid var(--box);
|
||||
}
|
||||
.contextMenu .btn-flat {
|
||||
text-transform: none !important;
|
||||
@@ -501,26 +502,26 @@ iframe,
|
||||
}
|
||||
.toot img:not(.emoji-img) {
|
||||
max-width: 100%;
|
||||
max-height: 300px;
|
||||
max-height: 23rem;
|
||||
}
|
||||
.cbadge {
|
||||
display: inline-block;
|
||||
min-width: 10px;
|
||||
max-width: 100px;
|
||||
padding: 3px 7px;
|
||||
min-width: 0.76rem;
|
||||
max-width: 7.7rem;
|
||||
padding: 0.23rem 0.5rem;
|
||||
font-size: 0.8em;
|
||||
margin-right: 5px;
|
||||
margin-right: 0.4rem;
|
||||
line-height: 1;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
background-color: #777;
|
||||
border-radius: 10px;
|
||||
border-radius: 0.75rem;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
height: calc(0.8em + 8px);
|
||||
height: calc(0.8em + 0.6rem);
|
||||
user-select: none;
|
||||
}
|
||||
.cbadge-hover {
|
||||
@@ -534,10 +535,10 @@ iframe,
|
||||
p {
|
||||
margin: 0;
|
||||
margin-bottom: 0px;
|
||||
line-height: 20px;
|
||||
line-height: 1.53rem;
|
||||
}
|
||||
p:not(:last-child) {
|
||||
margin-bottom: 10px;
|
||||
margin-bottom: 0.76rem;
|
||||
}
|
||||
.shared {
|
||||
background-color: var(--shared);
|
||||
@@ -553,14 +554,14 @@ p:not(:last-child) {
|
||||
background-color: var(--notfbox);
|
||||
filter: brightness(110%);
|
||||
position: relative;
|
||||
margin-right: 10px;
|
||||
margin-right: 0.7rem;
|
||||
width: 100%;
|
||||
min-height: 60px;
|
||||
min-height: 4.6rem;
|
||||
z-index: 500;
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
display: grid;
|
||||
grid-template-columns: 40px 65px 1fr 24px;
|
||||
grid-template-rows: 30px 30px;
|
||||
grid-template-columns: 3rem 5rem 1fr 1.8rem;
|
||||
grid-template-rows: 2.3rem 2.3rem;
|
||||
grid-template-areas: 'notice notice_name notice_name a2' 'notice a1 sta a3' 'notf-box notf-box notf-box notf-box';
|
||||
}
|
||||
.emp {
|
||||
@@ -604,8 +605,8 @@ p:not(:last-child) {
|
||||
}
|
||||
#tools {
|
||||
position: fixed;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
top: 0.76rem;
|
||||
right: 0.76rem;
|
||||
float: right;
|
||||
}
|
||||
.setting {
|
||||
@@ -618,14 +619,14 @@ p:not(:last-child) {
|
||||
}
|
||||
.notf-box {
|
||||
position: fixed;
|
||||
right: 70px;
|
||||
right: 5.4rem;
|
||||
background-color: var(--box);
|
||||
border: thin solid gray;
|
||||
z-index: 501;
|
||||
width: 400px;
|
||||
padding: 5px;
|
||||
min-height: 100px;
|
||||
max-height: 500px;
|
||||
width: 30rem;
|
||||
padding: 0.4rem;
|
||||
min-height: 7.7rem;
|
||||
max-height: 38.4rem;
|
||||
}
|
||||
.column-hide {
|
||||
display: none;
|
||||
@@ -633,17 +634,21 @@ p:not(:last-child) {
|
||||
height: 0;
|
||||
}
|
||||
.prof-img {
|
||||
border-radius: 3px;
|
||||
border-radius: 0.23rem;
|
||||
width: 3rem;
|
||||
}
|
||||
.prof-img-sml {
|
||||
width: 1.5rem;
|
||||
}
|
||||
.notf-icon {
|
||||
position: relative;
|
||||
top: -20px;
|
||||
width: 20px;
|
||||
left: 20px;
|
||||
top: -1.53rem;
|
||||
width: 1.5rem;
|
||||
left: 1.5rem;
|
||||
}
|
||||
.notf-indv-box {
|
||||
width: 100%;
|
||||
max-height: 400px;
|
||||
max-height: 30.7rem;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
border: thin solid gray;
|
||||
@@ -676,44 +681,44 @@ p:not(:last-child) {
|
||||
.vote {
|
||||
width: 100%;
|
||||
border: 1px solid;
|
||||
margin-top: 3px;
|
||||
margin-top: 0.23rem;
|
||||
padding: 1px;
|
||||
border-radius: 3px;
|
||||
border-radius: 0.23rem;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
.fa-2x > .emoji-img {
|
||||
width: 36px !important;
|
||||
height: 36px !important;
|
||||
width: 2.3rem !important;
|
||||
height: 2.3rem !important;
|
||||
}
|
||||
.fa-3x > .emoji-img {
|
||||
width: 54px !important;
|
||||
height: 54px !important;
|
||||
width: 4.15rem !important;
|
||||
height: 4.15rem !important;
|
||||
}
|
||||
.fa-4x > .emoji-img {
|
||||
width: 72px !important;
|
||||
height: 72px !important;
|
||||
width: 4.6rem !important;
|
||||
height: 4.6rem !important;
|
||||
}
|
||||
.fa-5x > .emoji-img {
|
||||
width: 90px !important;
|
||||
height: 90px !important;
|
||||
width: 6.9rem !important;
|
||||
height: 6.9rem !important;
|
||||
}
|
||||
#lists-user {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
max-height: 200px;
|
||||
max-height: 15.4rem;
|
||||
}
|
||||
.votebtn {
|
||||
border: 1px solid;
|
||||
color: var(--bg);
|
||||
background-color: var(--beforehover);
|
||||
cursor: pointer;
|
||||
width: 50px;
|
||||
padding: 2px;
|
||||
width: 3.8rem;
|
||||
height: 1.7rem;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
margin-top: 5px;
|
||||
border-radius: 10px;
|
||||
margin-top: 0.38rem;
|
||||
border-radius: 0.75rem;
|
||||
transition-duration: 0.5s;
|
||||
}
|
||||
.votebtn:hover {
|
||||
@@ -722,8 +727,8 @@ p:not(:last-child) {
|
||||
.leadPoll {
|
||||
position: absolute;
|
||||
background-color: var(--box);
|
||||
height: 20px;
|
||||
border-radius: 3px;
|
||||
height: 1.5rem;
|
||||
border-radius: 0.23rem;
|
||||
}
|
||||
.lpAnime {
|
||||
animation-duration: 1s;
|
||||
@@ -740,7 +745,7 @@ p:not(:last-child) {
|
||||
width: 1.2rem !important;
|
||||
position: relative;
|
||||
top: -1px;
|
||||
margin-left: 5px !important;
|
||||
margin-left: 0.38rem !important;
|
||||
}
|
||||
.jump {
|
||||
display: inline-block;
|
||||
@@ -765,6 +770,9 @@ p:not(:last-child) {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.fav_ct, .rt_ct, .rep_ct {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
.shared.selectedToot {
|
||||
background-color: var(--selectedWithShare);
|
||||
}
|
||||
@@ -778,18 +786,18 @@ audio {
|
||||
white-space: normal;
|
||||
}
|
||||
.cw_btn {
|
||||
margin: 3px;
|
||||
margin: 0.23rem;
|
||||
background-color: var(--emphasized);
|
||||
color: var(--color);
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
border-radius: 3px;
|
||||
padding-left: 0.23rem;
|
||||
padding-right: 0.23rem;
|
||||
border-radius: 0.23rem;
|
||||
border: 1px solid var(--color);
|
||||
user-select: none;
|
||||
}
|
||||
.vis-data {
|
||||
font-size: 1rem !important;
|
||||
margin: 5px;
|
||||
margin: 0.4rem;
|
||||
user-select: none;
|
||||
}
|
||||
@keyframes jump {
|
||||
@@ -863,29 +871,29 @@ audio {
|
||||
display: none !important;
|
||||
}
|
||||
.announcement {
|
||||
padding: 5px;
|
||||
padding: 0.38rem;
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
.announReaction {
|
||||
width: 35px;
|
||||
width: 2.7rem;
|
||||
height: 1.7rem;
|
||||
font-size: 1.1rem;
|
||||
margin: 3px;
|
||||
margin: 0.23rem;
|
||||
cursor: pointer;
|
||||
border: solid 1px;
|
||||
padding-left: 2px;
|
||||
padding-left: 0.15rem;
|
||||
background-color: var(--notfbox);
|
||||
border-radius: 2px;
|
||||
border-radius: 0.15rem;
|
||||
}
|
||||
.announReaction img {
|
||||
position: relative;
|
||||
top: 3px;
|
||||
top: 0.23rem;
|
||||
}
|
||||
.announReaction.reactioned {
|
||||
background-color: var(--emphasized);
|
||||
}
|
||||
.announReaction.add {
|
||||
width: 19px;
|
||||
width: 1.46rem;
|
||||
}
|
||||
.reactionsPack {
|
||||
display: flex;
|
||||
|
@@ -16,31 +16,27 @@
|
||||
}
|
||||
#his-prof {
|
||||
float: left;
|
||||
width: 100px;
|
||||
margin-right: 5px;
|
||||
width: 7.7rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
.his-float {
|
||||
overflow-y: scroll;
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#his-float-data {
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
#his-leftside {
|
||||
width: 500px;
|
||||
width: 38.4rem;
|
||||
}
|
||||
#his-float-timeline {
|
||||
max-width: 775px;
|
||||
max-width: 59.6rem;
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
#his-basic-prof {
|
||||
min-height: 130px;
|
||||
}
|
||||
#his-matching-list {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
min-height: 10rem;
|
||||
}
|
||||
#his-field {
|
||||
vertical-align: baseline;
|
||||
@@ -55,14 +51,14 @@
|
||||
padding: 0;
|
||||
background-color: #757575;
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
margin-bottom: 1px;
|
||||
width: 30%;
|
||||
}
|
||||
.his-field-content {
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
padding-left: 5px;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
.his-var-content a span.ellipsis:after {
|
||||
content: "...";
|
||||
@@ -76,13 +72,13 @@
|
||||
display: inline !important;
|
||||
}
|
||||
#his-data-show {
|
||||
margin: 20px;
|
||||
margin-left: 50px;
|
||||
margin-right: 50px;
|
||||
margin: 1.5rem;
|
||||
margin-left: 3.8rem;
|
||||
margin-right: 3.8rem;
|
||||
background-color: var(--his-data);
|
||||
height: calc(100% - 20px);
|
||||
height: calc(100% - 1.5rem);
|
||||
margin-bottom: 0;
|
||||
padding: 5px;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#his-data-wrap {
|
||||
display: flex;
|
||||
@@ -90,39 +86,39 @@
|
||||
.his-var-content {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 45px);
|
||||
height: calc(100% - 3.4rem);
|
||||
}
|
||||
#my-data-nav .btn {
|
||||
width: 140px;
|
||||
width: 10.7rem;
|
||||
}
|
||||
.active-back {
|
||||
background-color: var(--active);
|
||||
}
|
||||
#his-name .emojione,
|
||||
#his-name .emoji-img {
|
||||
width: 20px;
|
||||
width: 1.538rem;
|
||||
}
|
||||
#his-plus-action .btn {
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
padding-right: 0.4rem;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
.tabs {
|
||||
display: flex;
|
||||
}
|
||||
.tabs .tab a {
|
||||
padding: 8px 12px;
|
||||
padding: 0.6rem 0.9rem;
|
||||
}
|
||||
#his-des {
|
||||
max-height: 250px;
|
||||
max-height: 17.7rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#his-sign-action {
|
||||
border: 1px solid;
|
||||
border-radius: 5px;
|
||||
border-radius: 0.4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#his-sign-action .btn {
|
||||
@@ -133,7 +129,7 @@
|
||||
cursor: pointer;
|
||||
}
|
||||
#his-table{
|
||||
max-height: 150px;
|
||||
max-height: 11.538rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#his-float-blocked {
|
||||
|
@@ -1,3 +1,4 @@
|
||||
//@ts-check
|
||||
//このソフトについて
|
||||
function about() {
|
||||
postMessage(["sendSinmpleIpc", "about"], "*")
|
||||
|
@@ -252,11 +252,31 @@ function multiDel(target) {
|
||||
var newdom = oldcol.domain
|
||||
}
|
||||
var type = oldcol.type
|
||||
var data = null
|
||||
if(oldcol.data) {
|
||||
data = oldcol.data
|
||||
}
|
||||
var background = null
|
||||
if(oldcol.background) {
|
||||
background = oldcol.background
|
||||
}
|
||||
var text = null
|
||||
if(oldcol.text) {
|
||||
text = oldcol.text
|
||||
}
|
||||
var left_fold = false
|
||||
if(oldcol.left_fold) {
|
||||
left_fold = true
|
||||
}
|
||||
//消した垢のコラムじゃないときコピー
|
||||
if (target != oldcol.domain) {
|
||||
var add = {
|
||||
domain: newdom,
|
||||
type: type
|
||||
type: type,
|
||||
data: data,
|
||||
background: background,
|
||||
text: text,
|
||||
left_fold: left_fold
|
||||
}
|
||||
newcols.push(add)
|
||||
}
|
||||
|
@@ -49,7 +49,7 @@ onmessage = function(e) {
|
||||
} else if (e.data[0] == 'generalDL') {
|
||||
ipc.send('general-dl', e.data[1])
|
||||
} else if (e.data[0] == 'openFinder') {
|
||||
ipc.send('open-finder', e.data[1])
|
||||
ipc.send('openFinder', e.data[1])
|
||||
} else if (e.data[0] == 'columnDel') {
|
||||
ipc.send('column-del', e.data[1])
|
||||
} else if (e.data[0] == 'lang') {
|
||||
@@ -156,12 +156,12 @@ ipc.on('resizeJudgement', function(event, b64) {
|
||||
var width = element.naturalWidth
|
||||
var height = element.naturalHeight
|
||||
if (width > resize || height > resize) {
|
||||
ipc.send('resize-image', [b64, resize])
|
||||
ipc.send('resize-image', [b64[0], resize])
|
||||
} else {
|
||||
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
|
||||
}
|
||||
}
|
||||
element.src = b64
|
||||
element.src = 'data:image/png;base64,' + b64[0]
|
||||
} else {
|
||||
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
|
||||
}
|
||||
@@ -171,7 +171,7 @@ ipc.on('general-dl-prog', function(event, arg) {
|
||||
console.log('Progress: ' + arg)
|
||||
})
|
||||
ipc.on('general-dl-message', function(event, arg) {
|
||||
var argC = arg.replace(/\\/g, '\\\\') + '\\\\.'
|
||||
var argC = arg.replace(/\\/g, '\\\\')
|
||||
console.log('saved')
|
||||
postMessage(['toastSaved', [arg, argC]], '*')
|
||||
})
|
||||
|
@@ -160,8 +160,14 @@ function bkm(id, acct_id, tlid) {
|
||||
|
||||
//フォロー
|
||||
async function follow(acct_id, resolve) {
|
||||
if($('#his-data').hasClass('locked')) {
|
||||
locked = true
|
||||
} else {
|
||||
locked = false
|
||||
}
|
||||
if (!acct_id && acct_id != 'selector') {
|
||||
var acct_id = $('#his-data').attr('use-acct')
|
||||
|
||||
} else if (acct_id == 'selector') {
|
||||
var acct_id = $('#user-acct-sel').val()
|
||||
}
|
||||
@@ -172,6 +178,7 @@ async function follow(acct_id, resolve) {
|
||||
var flag = 'follow'
|
||||
var flagm = 'create'
|
||||
}
|
||||
|
||||
var id = $('#his-data').attr('user-id')
|
||||
if (resolve == 'selector') {
|
||||
var fullacct = $('#his-acct').attr('fullname')
|
||||
@@ -205,7 +212,11 @@ async function follow(acct_id, resolve) {
|
||||
$('#his-follow-btn-text').text(lang.lang_status_follow)
|
||||
} else {
|
||||
$('#his-data').addClass('following')
|
||||
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
|
||||
if(locked) {
|
||||
$('#his-follow-btn-text').text(lang.lang_status_requesting)
|
||||
} else {
|
||||
$('#his-follow-btn-text').text(lang.lang_status_unfollow)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -393,8 +393,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
} else {
|
||||
noticeavatar = toot.account.avatar_static
|
||||
}
|
||||
noticeavatar = `<a onclick="udg('${toot.account.id}','${acct_id}');" user="${toot.account.acct}" class="notf-icon udg" aria-hidden="true">
|
||||
<img draggable="false" src="${noticeavatar}" width="20" class="prof-img"
|
||||
noticeavatar = `<a onclick="udg('${toot.account.id}','${acct_id}');" user="${toot.account.acct}" class="udg" aria-hidden="true">
|
||||
<img draggable="false" src="${noticeavatar}" width="20" class="notf-icon prof-img"
|
||||
user="${toot.account.acct}" onerror="this.src=\'../../img/loading.svg\'">
|
||||
</a>`
|
||||
var rebtxt = lang.lang_parse_btedsimple
|
||||
@@ -950,7 +950,8 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
if (!quoteUser) {
|
||||
quoteUser = toot.quote.account.acct
|
||||
}
|
||||
poll =
|
||||
if(toot.quote_muted) {
|
||||
poll =
|
||||
poll +
|
||||
`<div class="quote-renote">
|
||||
<div class="renote-icon">
|
||||
@@ -974,6 +975,12 @@ function parse(obj, mix, acct_id, tlid, popup, mutefilter, type) {
|
||||
</a>
|
||||
</div>
|
||||
</div>`
|
||||
} else {
|
||||
poll =
|
||||
poll +
|
||||
`<span class="gray sml">${lang.lang_parse_hidden}</span>`
|
||||
}
|
||||
|
||||
}
|
||||
//menuは何個?
|
||||
var menuct = 2
|
||||
|
@@ -851,7 +851,7 @@ function cap(type, data, acct_id) {
|
||||
} else if (type == 'bookmark') {
|
||||
var response = 'Bookmarks'
|
||||
} else if (type == 'utl') {
|
||||
var response = 'User TL(' + data.acct + ')'
|
||||
var response = 'User TL(' + escapeHTML(data.acct) + ')'
|
||||
}
|
||||
return response
|
||||
}
|
||||
|
@@ -646,11 +646,15 @@ function removeColumn(tlid) {
|
||||
if (result.value) {
|
||||
var multi = localStorage.getItem('column')
|
||||
var obj = JSON.parse(multi)
|
||||
var data = obj[tlid]
|
||||
obj.splice(tlid, 1)
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('column', json)
|
||||
sortLoad()
|
||||
$('#timeline_box_' + tlid + '_parentBox').remove()
|
||||
$('#timeline_box_' + tlid + '_box').remove()
|
||||
if(!data.left_fold) {
|
||||
$('#timeline_box_' + tlid + '_parentBox').remove()
|
||||
}
|
||||
}
|
||||
$('#sort-box').removeClass('hide')
|
||||
$('#sort-box').addClass('show')
|
||||
|
@@ -99,14 +99,14 @@ function settings() {
|
||||
var fontd = $('#font').val()
|
||||
if (fontd) {
|
||||
if (fontd != localStorage.getItem('font')) {
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', fontd), displayLength: 3000 })
|
||||
}
|
||||
localStorage.setItem('font', fontd)
|
||||
themes()
|
||||
} else {
|
||||
if (localStorage.getItem('font')) {
|
||||
localStorage.removeItem('font')
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', ct), displayLength: 3000 })
|
||||
M.toast({ html: lang.lang_setting_font.replace('{{set}}', '"default"'), displayLength: 3000 })
|
||||
themes()
|
||||
}
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@ function sortLoad () {
|
||||
var acctdata = user + "@" + domain;
|
||||
}
|
||||
|
||||
var html = '<li class="drag-content" data-id="' + key + '" data-flag="' + flag + '"' + insert + '><div class="sorticon"><i class="material-icons">' + icon(acct.type) + '</i></div><div class="sorttitle">' + cap(acct.type, escapeHTML(acct.data), acct.domain) + '</div><div class="sortaction"><a onclick="goColumn(' + key +
|
||||
var html = '<li class="drag-content" data-id="' + key + '" data-flag="' + flag + '"' + insert + '><div class="sorticon"><i class="material-icons">' + icon(acct.type) + '</i></div><div class="sorttitle">' + cap(acct.type, acct.data, acct.domain) + '</div><div class="sortaction"><a onclick="goColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="' + lang.lang_sort_gothis + '">forward</i></a> <a onclick="removeColumn(' + key +
|
||||
')" class="setting nex"><i class="material-icons waves-effect nex" title="このカラムを削除">cancel</i></a></div><div class="sortacct">' + acctdata + '</div></li>';
|
||||
$("#sort").append(html);
|
||||
|
@@ -739,46 +739,3 @@ function udAdd(acct_id, id, start) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//ユーザーマッチングリスト
|
||||
function showMat() {
|
||||
$("#his-matching-list-contents").html(lang.lang_hisdata_taketime);
|
||||
var full = $("#his-acct").attr("fullname");
|
||||
var acct_id = $("#his-data").attr("use-acct");
|
||||
full = full.split("@");
|
||||
var start = "https://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-filtered-api.cgi?" + full[1] + "+" + full[0];
|
||||
fetch(start, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"content-type": "application/json"
|
||||
}
|
||||
//body: JSON.stringify({})
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text);
|
||||
});
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error);
|
||||
setLog(start, "JSON", error);
|
||||
console.error(error);
|
||||
})
|
||||
.then(function(json) {
|
||||
var templete = "";
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var user = json[key];
|
||||
if (user.avatar) {
|
||||
var avatar = user.avatar;
|
||||
} else {
|
||||
var avatar = "../../img/loading.svg";
|
||||
}
|
||||
templete = templete + '<div class="" style="padding-top:5px;">' + '<div style="padding:0; margin:0; width:400px; max-width:100%; display:flex; align-items:flex-end;">' + '<div style="flex-basis:40px;"><a onclick="udgEx(\'' + user.user + "'," + acct_id + ');" user="' + user.user + '" class="udg">' + '<img src="' + avatar + '" width="40" class="prof-img" user="' + user.user + '"></a></div>' + '<div style="flex-grow:3; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"><big>' + escapeHTML(user.screen_name) + "</big></div>" + '<div class="sml gray" style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;user-select:auto; cursor:text;"> @' + user.user + "@" + user.host + "</div>" + "</div>" + '<div class="divider"></div>' + "</div>" + "</div>";
|
||||
});
|
||||
$("#his-matching-list").css("height", $("#his-float-data").height() - $("#his-basic-prof").height() - $("#his-des").height() - $("#his-plus-action").height() + "px");
|
||||
$("#his-matching-list-contents").html(templete);
|
||||
});
|
||||
}
|
||||
|
@@ -239,6 +239,11 @@ function udg(user, acct_id) {
|
||||
$(".only-his-data").show();
|
||||
}
|
||||
todc();
|
||||
if(json.locked) {
|
||||
$('#his-data').addClass('locked')
|
||||
} else {
|
||||
$('#his-data').removeClass('locked')
|
||||
}
|
||||
//外部データ取得(死かもしれないので)
|
||||
udAdd(acct_id, user, json.url);
|
||||
});
|
||||
@@ -412,9 +417,14 @@ function relations(user, acct_id) {
|
||||
})
|
||||
.then(function(json) {
|
||||
var json = json[0];
|
||||
if(json.requested) {
|
||||
//フォロリク中
|
||||
$('#his-data').addClass('following')
|
||||
$("#his-follow-btn-text").text(lang.lang_status_requesting)
|
||||
}
|
||||
if (json.following) {
|
||||
//自分がフォローしている
|
||||
$("#his-data").addClass("following");
|
||||
$("#his-data").addClass("following")
|
||||
$("#his-follow-btn-text").text(lang.lang_status_unfollow);
|
||||
hisList(user, acct_id);
|
||||
} else {
|
||||
@@ -538,6 +548,8 @@ function reset() {
|
||||
$("#his-float-blocked").hide();
|
||||
$("#his-main-acct").show();
|
||||
$("#his-proof-prof").html("");
|
||||
$('#his-data').removeClass('locked')
|
||||
$('#his-data').removeClass('requesting')
|
||||
}
|
||||
$("#my-data-nav .anc-link").on("click", function() {
|
||||
var target = $(this).attr("go");
|
||||
|
@@ -79,7 +79,11 @@ function createWindow() {
|
||||
if(lang == 'ja') {
|
||||
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
|
||||
var show = maxims[Math.floor(Math.random() * maxims.length)]
|
||||
} else {
|
||||
} else if(lang == 'ja-KS') {
|
||||
//ja-KSも作れたらいいね
|
||||
const maxims = JSON.parse(fs.readFileSync(__dirname + '/maxim.ja.json'))
|
||||
var show = maxims[Math.floor(Math.random() * maxims.length)]
|
||||
} else{
|
||||
var show = 'TheDesk 2018'
|
||||
}
|
||||
const data = JSON.parse(package)
|
||||
|
@@ -95,6 +95,7 @@ function dl(mainWindow, lang_path, base, dirname) {
|
||||
var name = ''
|
||||
var platform = process.platform
|
||||
var bit = process.arch
|
||||
const filename = args[0].match(/https:\/\/.+\/(.+\..+)$/)
|
||||
if (args[1] == '') {
|
||||
if (platform == 'win32') {
|
||||
var dir = app.getPath('home') + '\\Pictures\\TheDesk'
|
||||
@@ -115,11 +116,21 @@ function dl(mainWindow, lang_path, base, dirname) {
|
||||
}
|
||||
download(BrowserWindow.getFocusedWindow(), args[0], opts)
|
||||
.then(dl => {
|
||||
event.sender.webContents.send('general-dl-message', dir)
|
||||
if(filename[1]) {
|
||||
if (platform == 'win32') {
|
||||
var name = dir + '\\' + filename[1]
|
||||
} else if (platform == 'linux' || platform == 'darwin') {
|
||||
var name = dir + '/' + filename[1]
|
||||
}
|
||||
} else {
|
||||
var name = dir
|
||||
}
|
||||
event.sender.webContents.send('general-dl-message', name)
|
||||
})
|
||||
.catch(console.error)
|
||||
})
|
||||
ipc.on('open-finder', (e, folder) => {
|
||||
ipc.on('openFinder', (e, folder) => {
|
||||
console.log(folder)
|
||||
shell.showItemInFolder(folder)
|
||||
})
|
||||
}
|
||||
|
@@ -6,38 +6,33 @@ function img(mainWindow, dir) {
|
||||
var ipc = electron.ipcMain
|
||||
const BrowserWindow = electron.BrowserWindow
|
||||
ipc.on('file-select', (e, args) => {
|
||||
dialog.showOpenDialog(
|
||||
null,
|
||||
{
|
||||
properties: ['openFile', 'multiSelections'],
|
||||
title: '添付ファイルを選択',
|
||||
defaultPath: '.',
|
||||
filters: [
|
||||
{
|
||||
name: 'メディアファイル',
|
||||
extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm']
|
||||
},
|
||||
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
|
||||
{ name: '動画', extensions: ['mp4', 'webm'] },
|
||||
{ name: '全てのファイル', extensions: ['*'] }
|
||||
]
|
||||
},
|
||||
fileNames => {
|
||||
if (!fileNames) {
|
||||
return false
|
||||
}
|
||||
for (var i = 0; i < fileNames.length; i++) {
|
||||
var path = fileNames[i]
|
||||
var bin = fs.readFileSync(path, 'base64')
|
||||
e.sender.webContents.send('resizeJudgement', [bin, 'new'])
|
||||
}
|
||||
}
|
||||
)
|
||||
let fileNames = dialog.showOpenDialogSync(mainWindow, {
|
||||
properties: ['openFile', 'multiSelections'],
|
||||
title: '添付ファイルを選択',
|
||||
defaultPath: '.',
|
||||
filters: [
|
||||
{
|
||||
name: 'メディアファイル',
|
||||
extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg', 'mp4', 'webm'],
|
||||
},
|
||||
{ name: '画像', extensions: ['jpg', 'png', 'gif', 'bmp', 'jpeg'] },
|
||||
{ name: '動画', extensions: ['mp4', 'webm'] },
|
||||
{ name: '全てのファイル', extensions: ['*'] },
|
||||
],
|
||||
})
|
||||
if (!fileNames) {
|
||||
return false
|
||||
}
|
||||
for (var i = 0; i < fileNames.length; i++) {
|
||||
var path = fileNames[i]
|
||||
var bin = fs.readFileSync(path, 'base64')
|
||||
e.sender.webContents.send('resizeJudgement', [bin, 'new'])
|
||||
}
|
||||
})
|
||||
ipc.on('bmp-image', (e, args) => {
|
||||
Jimp.read(args[0], function(err, lenna) {
|
||||
Jimp.read(args[0], function (err, lenna) {
|
||||
if (err) throw err
|
||||
lenna.getBase64(Jimp.MIME_PNG, function(err, src) {
|
||||
lenna.getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
|
||||
})
|
||||
})
|
||||
@@ -51,9 +46,9 @@ function img(mainWindow, dir) {
|
||||
}
|
||||
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
|
||||
var decodedFile = new Buffer(b64, 'base64')
|
||||
Jimp.read(decodedFile, function(err, lenna) {
|
||||
Jimp.read(decodedFile, function (err, lenna) {
|
||||
if (err) throw err
|
||||
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function(err, src) {
|
||||
lenna.scaleToFit(args[1], args[1]).getBase64(Jimp[use], function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1]])
|
||||
})
|
||||
})
|
||||
@@ -63,24 +58,24 @@ function img(mainWindow, dir) {
|
||||
var b64 = args[0].replace(/^data:\w+\/\w+;base64,/, '')
|
||||
var decodedFile = new Buffer(b64, 'base64')
|
||||
console.log(text)
|
||||
Jimp.read(decodedFile, function(err, image) {
|
||||
Jimp.read(decodedFile, function (err, image) {
|
||||
if (err) throw err
|
||||
Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then(font => {
|
||||
Jimp.loadFont(Jimp.FONT_SANS_16_BLACK).then((font) => {
|
||||
var evWidth = Jimp.measureText(font, text)
|
||||
var width = image.bitmap.width
|
||||
var height = image.bitmap.height
|
||||
var left = width - evWidth - 10
|
||||
var top = height - 30
|
||||
var color = Jimp.intToRGBA(image.getPixelColor(left, top))
|
||||
console.log(left, top, color)
|
||||
var color = Jimp.intToRGBA(image.getPixelColor(left, top))
|
||||
console.log(left, top, color)
|
||||
var ave = (color.r + color.g + color.b) / 3
|
||||
if (ave > 128) {
|
||||
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) {
|
||||
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
|
||||
})
|
||||
} else {
|
||||
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then(font => {
|
||||
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function(err, src) {
|
||||
Jimp.loadFont(Jimp.FONT_SANS_16_WHITE).then((font) => {
|
||||
image.print(font, left, top, args[1]).getBase64(Jimp.MIME_PNG, function (err, src) {
|
||||
e.sender.webContents.send('bmp-img-comp', [src, args[1], true])
|
||||
})
|
||||
})
|
||||
|
@@ -1,314 +1,303 @@
|
||||
function system(mainWindow, dir, lang, dirname) {
|
||||
const electron = require("electron");
|
||||
const app = electron.app;
|
||||
const join = require("path").join;
|
||||
var Jimp = require("jimp");
|
||||
const fs = require("fs");
|
||||
var JSON5 = require("json5");
|
||||
var ipc = electron.ipcMain;
|
||||
const clipboard = electron.clipboard;
|
||||
var tmp_img = join(app.getPath("userData"), "tmp.png");
|
||||
var ha_path = join(app.getPath("userData"), "hardwareAcceleration");
|
||||
var ua_path = join(app.getPath("userData"), "useragent");
|
||||
var lang_path = join(app.getPath("userData"), "language");
|
||||
var log_dir_path = join(app.getPath("userData"), "logs");
|
||||
var frame_path = join(app.getPath("userData"), "frame");
|
||||
const electron = require('electron')
|
||||
const app = electron.app
|
||||
const join = require('path').join
|
||||
var Jimp = require('jimp')
|
||||
const fs = require('fs')
|
||||
var JSON5 = require('json5')
|
||||
var ipc = electron.ipcMain
|
||||
const clipboard = electron.clipboard
|
||||
var tmp_img = join(app.getPath('userData'), 'tmp.png')
|
||||
var ha_path = join(app.getPath('userData'), 'hardwareAcceleration')
|
||||
var ua_path = join(app.getPath('userData'), 'useragent')
|
||||
var lang_path = join(app.getPath('userData'), 'language')
|
||||
var log_dir_path = join(app.getPath('userData'), 'logs')
|
||||
var frame_path = join(app.getPath('userData'), 'frame')
|
||||
//ログ
|
||||
var today = new Date();
|
||||
var today = new Date()
|
||||
//今日のやつ
|
||||
var todayStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log";
|
||||
var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log'
|
||||
//昨日のやつ
|
||||
today.setDate(today.getDate() - 1);
|
||||
var yestStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log";
|
||||
today.setDate(today.getDate() - 1)
|
||||
var yestStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log'
|
||||
//一昨日のやつ
|
||||
today.setDate(today.getDate() - 1);
|
||||
var yest2Str = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate() + ".log";
|
||||
today.setDate(today.getDate() - 1)
|
||||
var yest2Str = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate() + '.log'
|
||||
|
||||
const BrowserWindow = electron.BrowserWindow;
|
||||
const dialog = electron.dialog;
|
||||
const os = require("os");
|
||||
const language = require("../main/language.js");
|
||||
const BrowserWindow = electron.BrowserWindow
|
||||
const dialog = electron.dialog
|
||||
const os = require('os')
|
||||
const language = require('../main/language.js')
|
||||
//プラットフォーム
|
||||
ipc.on("getPlatform", function(e, arg) {
|
||||
ipc.on('getPlatform', function (e, arg) {
|
||||
try {
|
||||
var gitHash = fs.readFileSync("git", "utf8");
|
||||
var gitHash = fs.readFileSync('git', 'utf8')
|
||||
} catch {
|
||||
var gitHash = null;
|
||||
var gitHash = null
|
||||
}
|
||||
e.sender.webContents.send("platform", [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash]);
|
||||
});
|
||||
e.sender.webContents.send('platform', [process.platform, process.arch, process.version, process.versions.chrome, process.versions.electron, gitHash])
|
||||
})
|
||||
//言語
|
||||
ipc.on("lang", function(e, arg) {
|
||||
console.log("set:" + arg);
|
||||
fs.writeFileSync(lang_path, arg);
|
||||
e.sender.webContents.send("langres", arg);
|
||||
});
|
||||
ipc.on('lang', function (e, arg) {
|
||||
console.log('set:' + arg)
|
||||
fs.writeFileSync(lang_path, arg)
|
||||
e.sender.webContents.send('langres', arg)
|
||||
})
|
||||
//エクスポートのダイアログ
|
||||
ipc.on("exportSettings", function(e, args) {
|
||||
dialog.showSaveDialog(
|
||||
mainWindow,
|
||||
{
|
||||
title: "Export",
|
||||
properties: ["openFile", "createDirectory"],
|
||||
defaultPath: "export.thedeskconfig.json5"
|
||||
},
|
||||
savedFiles => {
|
||||
if (!savedFiles) {
|
||||
return false;
|
||||
}
|
||||
e.sender.webContents.send("exportSettingsFile", savedFiles);
|
||||
}
|
||||
);
|
||||
});
|
||||
ipc.on('exportSettings', function (e, args) {
|
||||
let savedFiles = dialog.showSaveDialogSync(mainWindow, {
|
||||
title: 'Export',
|
||||
properties: ['openFile', 'createDirectory'],
|
||||
defaultPath: 'export.thedeskconfig.json5',
|
||||
})
|
||||
if (!savedFiles) {
|
||||
return false
|
||||
}
|
||||
e.sender.webContents.send('exportSettingsFile', savedFiles)
|
||||
})
|
||||
//インポートのダイアログ
|
||||
ipc.on("importSettings", function(e, args) {
|
||||
dialog.showOpenDialog(
|
||||
mainWindow,
|
||||
{
|
||||
title: "Import",
|
||||
properties: ["openFile"],
|
||||
filters: [{ name: "TheDesk Config", extensions: ["thedeskconfig", "thedeskconfigv2", "json5"] }]
|
||||
},
|
||||
fileNames => {
|
||||
console.log("imported from: ", fileNames)
|
||||
if (!fileNames) {
|
||||
return false;
|
||||
}
|
||||
e.sender.webContents.send("config", JSON5.parse(fs.readFileSync(fileNames[0], "utf8")));
|
||||
}
|
||||
);
|
||||
});
|
||||
ipc.on('importSettings', function (e, args) {
|
||||
let fileNames = dialog.showOpenDialogSync(mainWindow, {
|
||||
title: 'Import',
|
||||
properties: ['openFile'],
|
||||
filters: [{ name: 'TheDesk Config', extensions: ['thedeskconfig', 'thedeskconfigv2', 'json5'] }],
|
||||
})
|
||||
console.log('imported from: ', fileNames)
|
||||
if (!fileNames) {
|
||||
return false
|
||||
}
|
||||
e.sender.webContents.send('config', JSON5.parse(fs.readFileSync(fileNames[0], 'utf8')))
|
||||
})
|
||||
//保存フォルダのダイアログ
|
||||
ipc.on("savefolder", function(e, args) {
|
||||
dialog.showOpenDialog(
|
||||
ipc.on('savefolder', function (e, args) {
|
||||
let fileNames = dialog.showOpenDialogSync(
|
||||
mainWindow,
|
||||
{
|
||||
title: "Save folder",
|
||||
properties: ["openDirectory"]
|
||||
},
|
||||
fileNames => {
|
||||
e.sender.webContents.send("savefolder", fileNames[0]);
|
||||
title: 'Save folder',
|
||||
properties: ['openDirectory'],
|
||||
}
|
||||
);
|
||||
});
|
||||
)
|
||||
e.sender.webContents.send('savefolder', fileNames[0])
|
||||
})
|
||||
//カスタムサウンドのダイアログ
|
||||
ipc.on("customSound", function(e, arg) {
|
||||
dialog.showOpenDialog(
|
||||
ipc.on('customSound', function (e, arg) {
|
||||
let fileNames = dialog.showOpenDialogSync(
|
||||
mainWindow,
|
||||
{
|
||||
title: "Custom sound",
|
||||
properties: ["openFile"],
|
||||
filters: [{ name: "Audio", extensions: ["mp3", "aac", "wav", "flac", "m4a"] }, { name: "All", extensions: ["*"] }]
|
||||
},
|
||||
fileNames => {
|
||||
e.sender.webContents.send("customSoundRender", [arg, fileNames[0]]);
|
||||
title: 'Custom sound',
|
||||
properties: ['openFile'],
|
||||
filters: [
|
||||
{ name: 'Audio', extensions: ['mp3', 'aac', 'wav', 'flac', 'm4a'] },
|
||||
{ name: 'All', extensions: ['*'] },
|
||||
],
|
||||
}
|
||||
);
|
||||
});
|
||||
)
|
||||
e.sender.webContents.send('customSoundRender', [arg, fileNames[0]])
|
||||
})
|
||||
|
||||
//ハードウェアアクセラレーションの無効化
|
||||
ipc.on("ha", function(e, arg) {
|
||||
if (arg == "true") {
|
||||
fs.writeFileSync(ha_path, arg);
|
||||
ipc.on('ha', function (e, arg) {
|
||||
if (arg == 'true') {
|
||||
fs.writeFileSync(ha_path, arg)
|
||||
} else {
|
||||
fs.unlink(ha_path, function(err) {});
|
||||
fs.unlink(ha_path, function (err) {})
|
||||
}
|
||||
app.relaunch();
|
||||
app.exit();
|
||||
});
|
||||
app.relaunch()
|
||||
app.exit()
|
||||
})
|
||||
//ユーザーエージェント
|
||||
ipc.on("ua", function(e, arg) {
|
||||
if (arg == "") {
|
||||
fs.unlink(ua_path, function(err) {});
|
||||
ipc.on('ua', function (e, arg) {
|
||||
if (arg == '') {
|
||||
fs.unlink(ua_path, function (err) {})
|
||||
} else {
|
||||
fs.writeFileSync(ua_path, arg);
|
||||
fs.writeFileSync(ua_path, arg)
|
||||
}
|
||||
app.relaunch();
|
||||
app.exit();
|
||||
});
|
||||
app.relaunch()
|
||||
app.exit()
|
||||
})
|
||||
//フレームのありなし
|
||||
ipc.on("frameSet", function(e, arg) {
|
||||
fs.writeFileSync(frame_path, arg);
|
||||
app.relaunch();
|
||||
app.exit();
|
||||
});
|
||||
ipc.on('frameSet', function (e, arg) {
|
||||
fs.writeFileSync(frame_path, arg)
|
||||
app.relaunch()
|
||||
app.exit()
|
||||
})
|
||||
//スクリーンリーダー
|
||||
ipc.on("acsCheck", function(e, arg) {
|
||||
if(app.accessibilitySupportEnabled) {
|
||||
ipc.on('acsCheck', function (e, arg) {
|
||||
if (app.accessibilitySupportEnabled) {
|
||||
mainWindow.webContents.send('accessibility', 'true')
|
||||
}
|
||||
});
|
||||
ipc.on("quit", (e, args) => {
|
||||
app.quit();
|
||||
});
|
||||
ipc.on("about", (e, args) => {
|
||||
about();
|
||||
});
|
||||
})
|
||||
ipc.on('quit', (e, args) => {
|
||||
app.quit()
|
||||
})
|
||||
ipc.on('about', (e, args) => {
|
||||
about()
|
||||
})
|
||||
function about() {
|
||||
var ver = app.getVersion();
|
||||
var ver = app.getVersion()
|
||||
var window = new BrowserWindow({
|
||||
webPreferences: {
|
||||
webviewTag: false,
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
preload: join(dirname, "js", "platform", "preload.js")
|
||||
preload: join(dirname, 'js', 'platform', 'preload.js'),
|
||||
},
|
||||
width: 300,
|
||||
height: 500,
|
||||
transparent: false, // ウィンドウの背景を透過
|
||||
frame: false, // 枠の無いウィンドウ
|
||||
resizable: false
|
||||
});
|
||||
window.loadURL(dir + "/about.html?ver=" + ver);
|
||||
return "true";
|
||||
resizable: false,
|
||||
})
|
||||
window.loadURL(dir + '/about.html?ver=' + ver)
|
||||
return 'true'
|
||||
}
|
||||
ipc.on("nano", function(e, x, y) {
|
||||
var nano_info_path = join(app.getPath("userData"), "nano-window-position.json");
|
||||
var window_pos;
|
||||
ipc.on('nano', function (e, x, y) {
|
||||
var nano_info_path = join(app.getPath('userData'), 'nano-window-position.json')
|
||||
var window_pos
|
||||
try {
|
||||
window_pos = JSON.parse(fs.readFileSync(nano_info_path, "utf8"));
|
||||
window_pos = JSON.parse(fs.readFileSync(nano_info_path, 'utf8'))
|
||||
} catch (e) {
|
||||
window_pos = [0, 0]; // デフォルトバリュー
|
||||
window_pos = [0, 0] // デフォルトバリュー
|
||||
}
|
||||
var nanowindow = new BrowserWindow({
|
||||
webPreferences: {
|
||||
webviewTag: false,
|
||||
nodeIntegration: false,
|
||||
contextIsolation: true,
|
||||
preload: join(dirname, "js", "platform", "preload.js")
|
||||
preload: join(dirname, 'js', 'platform', 'preload.js'),
|
||||
},
|
||||
width: 350,
|
||||
height: 140,
|
||||
transparent: false, // ウィンドウの背景を透過
|
||||
frame: false, // 枠の無いウィンドウ
|
||||
resizable: false
|
||||
});
|
||||
nanowindow.loadURL(dir + "/nano.html");
|
||||
nanowindow.setAlwaysOnTop(true);
|
||||
resizable: false,
|
||||
})
|
||||
nanowindow.loadURL(dir + '/nano.html')
|
||||
nanowindow.setAlwaysOnTop(true)
|
||||
//nanowindow.toggleDevTools()
|
||||
nanowindow.setPosition(window_pos[0], window_pos[1]);
|
||||
nanowindow.on("close", function() {
|
||||
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()));
|
||||
});
|
||||
return true;
|
||||
});
|
||||
var cbTimer1;
|
||||
ipc.on("startmem", (e, arg) => {
|
||||
event = e.sender;
|
||||
cbTimer1 = setInterval(mems, 1000);
|
||||
});
|
||||
nanowindow.setPosition(window_pos[0], window_pos[1])
|
||||
nanowindow.on('close', function () {
|
||||
fs.writeFileSync(nano_info_path, JSON.stringify(nanowindow.getPosition()))
|
||||
})
|
||||
return true
|
||||
})
|
||||
var cbTimer1
|
||||
ipc.on('startmem', (e, arg) => {
|
||||
event = e.sender
|
||||
cbTimer1 = setInterval(mems, 1000)
|
||||
})
|
||||
function mems() {
|
||||
var mem = os.totalmem() - os.freemem();
|
||||
var mem = os.totalmem() - os.freemem()
|
||||
if (mainWindow) {
|
||||
event.webContents.send("memory", [mem, os.cpus()[0].model, os.totalmem()]);
|
||||
event.webContents.send('memory', [mem, os.cpus()[0].model, os.totalmem()])
|
||||
}
|
||||
}
|
||||
ipc.on("endmem", (e, arg) => {
|
||||
ipc.on('endmem', (e, arg) => {
|
||||
if (cbTimer1) {
|
||||
clearInterval(cbTimer1);
|
||||
clearInterval(cbTimer1)
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
ipc.on("export", (e, args) => {
|
||||
fs.writeFileSync(args[0], JSON5.stringify(args[1]));
|
||||
e.sender.webContents.send("exportAllComplete", "");
|
||||
});
|
||||
ipc.on('export', (e, args) => {
|
||||
fs.writeFileSync(args[0], JSON5.stringify(args[1]))
|
||||
e.sender.webContents.send('exportAllComplete', '')
|
||||
})
|
||||
//フォント
|
||||
function object_array_sort(data, key, order, fn) {
|
||||
//デフォは降順(DESC)
|
||||
var num_a = -1;
|
||||
var num_b = 1;
|
||||
var num_a = -1
|
||||
var num_b = 1
|
||||
|
||||
if (order === "asc") {
|
||||
if (order === 'asc') {
|
||||
//指定があれば昇順(ASC)
|
||||
num_a = 1;
|
||||
num_b = -1;
|
||||
num_a = 1
|
||||
num_b = -1
|
||||
}
|
||||
|
||||
data = data.sort(function(a, b) {
|
||||
var x = a[key];
|
||||
var y = b[key];
|
||||
if (x > y) return num_a;
|
||||
if (x < y) return num_b;
|
||||
return 0;
|
||||
});
|
||||
data = data.sort(function (a, b) {
|
||||
var x = a[key]
|
||||
var y = b[key]
|
||||
if (x > y) return num_a
|
||||
if (x < y) return num_b
|
||||
return 0
|
||||
})
|
||||
|
||||
//重複排除
|
||||
var arrObj = {};
|
||||
var arrObj = {}
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
arrObj[data[i]["family"]] = data[i];
|
||||
arrObj[data[i]['family']] = data[i]
|
||||
}
|
||||
|
||||
data = [];
|
||||
data = []
|
||||
for (var key in arrObj) {
|
||||
data.push(arrObj[key]);
|
||||
data.push(arrObj[key])
|
||||
}
|
||||
|
||||
fn(data); // ソート後の配列を返す
|
||||
fn(data) // ソート後の配列を返す
|
||||
}
|
||||
ipc.on("fonts", (e, arg) => {
|
||||
var SystemFonts = require('system-font-families').default;
|
||||
var fm = new SystemFonts();
|
||||
const fontList = fm.getFontsSync();
|
||||
e.sender.webContents.send("font-list", fontList);
|
||||
});
|
||||
ipc.on('fonts', (e, arg) => {
|
||||
var SystemFonts = require('system-font-families').default
|
||||
var fm = new SystemFonts()
|
||||
const fontList = fm.getFontsSync()
|
||||
e.sender.webContents.send('font-list', fontList)
|
||||
})
|
||||
//コピー
|
||||
ipc.on("copy", (e, arg) => {
|
||||
clipboard.writeText(arg);
|
||||
});
|
||||
ipc.on('copy', (e, arg) => {
|
||||
clipboard.writeText(arg)
|
||||
})
|
||||
//ログ
|
||||
ipc.on("log", (e, arg) => {
|
||||
var today = new Date();
|
||||
var todayStr = today.getFullYear() + "" + (today.getMonth() + 1) + "" + today.getDate();
|
||||
var log_path = join(log_dir_path, todayStr + ".log");
|
||||
fs.appendFile(log_path, "\n" + arg, function(err) {
|
||||
ipc.on('log', (e, arg) => {
|
||||
var today = new Date()
|
||||
var todayStr = today.getFullYear() + '' + (today.getMonth() + 1) + '' + today.getDate()
|
||||
var log_path = join(log_dir_path, todayStr + '.log')
|
||||
fs.appendFile(log_path, '\n' + arg, function (err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
throw err
|
||||
}
|
||||
});
|
||||
});
|
||||
ipc.on("getLogs", (e, arg) => {
|
||||
var logs=""
|
||||
var todayLog=""
|
||||
var yestLog=""
|
||||
var yest2Log=""
|
||||
fs.readdir(log_dir_path, function(err, files) {
|
||||
if (err) throw err;
|
||||
files.filter(function(file) {
|
||||
})
|
||||
})
|
||||
ipc.on('getLogs', (e, arg) => {
|
||||
var logs = ''
|
||||
var todayLog = ''
|
||||
var yestLog = ''
|
||||
var yest2Log = ''
|
||||
fs.readdir(log_dir_path, function (err, files) {
|
||||
if (err) throw err
|
||||
files.filter(function (file) {
|
||||
if (file == todayStr) {
|
||||
todayLog=fs.readFileSync(join(log_dir_path, file), "utf8")
|
||||
todayLog = fs.readFileSync(join(log_dir_path, file), 'utf8')
|
||||
}
|
||||
if (file == yestStr) {
|
||||
yestLog=logs+fs.readFileSync(join(log_dir_path, file), "utf8")
|
||||
yestLog = logs + fs.readFileSync(join(log_dir_path, file), 'utf8')
|
||||
}
|
||||
if (file == yest2Str) {
|
||||
yest2Log=fs.readFileSync(join(log_dir_path, file), "utf8")
|
||||
yest2Log = fs.readFileSync(join(log_dir_path, file), 'utf8')
|
||||
}
|
||||
logs = todayLog + yestLog + yest2Log;
|
||||
});
|
||||
logs = yest2Log + yestLog + todayLog;
|
||||
e.sender.webContents.send("logData", logs);
|
||||
});
|
||||
});
|
||||
|
||||
logs = todayLog + yestLog + yest2Log
|
||||
})
|
||||
logs = yest2Log + yestLog + todayLog
|
||||
e.sender.webContents.send('logData', logs)
|
||||
})
|
||||
})
|
||||
|
||||
//起動時ログディレクトリ存在確認と作成、古ログ削除
|
||||
fs.access(log_dir_path, fs.constants.R_OK | fs.constants.W_OK, error => {
|
||||
fs.access(log_dir_path, fs.constants.R_OK | fs.constants.W_OK, (error) => {
|
||||
if (error) {
|
||||
if (error.code === "ENOENT") {
|
||||
fs.mkdirSync(log_dir_path);
|
||||
if (error.code === 'ENOENT') {
|
||||
fs.mkdirSync(log_dir_path)
|
||||
} else {
|
||||
return;
|
||||
return
|
||||
}
|
||||
} else {
|
||||
fs.readdir(log_dir_path, function(err, files) {
|
||||
if (err) throw err;
|
||||
files.filter(function(file) {
|
||||
fs.readdir(log_dir_path, function (err, files) {
|
||||
if (err) throw err
|
||||
files.filter(function (file) {
|
||||
if (file != todayStr && file != yestStr && file != yest2Str) {
|
||||
fs.unlinkSync(join(log_dir_path, file));
|
||||
fs.unlinkSync(join(log_dir_path, file))
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
exports.system = system;
|
||||
exports.system = system
|
||||
|
@@ -5,6 +5,9 @@
|
||||
"朝起きたらストリーミングが止まっていた…",
|
||||
"誰も使ってない機能1: 未読管理",
|
||||
"誰も使ってない機能2: スタンプ機能",
|
||||
"誰も使ってない機能3: コードセットアップをオフにしたログイン",
|
||||
"誰も使ってない機能4: TheDesk上でのプロフィール更新",
|
||||
"誰も使ってない機能5: フォローレコメンデーション",
|
||||
"TheDeskは重い(ダブルミーニング)",
|
||||
"今日も生茶が美味しい(4ケース96本の在庫)",
|
||||
"jQueryは死すべき(流れ弾)",
|
||||
@@ -37,5 +40,9 @@
|
||||
"本当はTheDesk 21.0.0(Mayu)専用のアイコンを用意していた",
|
||||
"TheDesk 20.x.xと21.x.xではアイコンがちょっと違う",
|
||||
"三大見てはいけないもの: TheDeskのコード、TheDeskのDevTool console、あと一つは?",
|
||||
"この画面がずっと出続けているのは多分yarn construct忘れてる"
|
||||
"この画面がずっと出続けているのは多分yarn construct忘れてる",
|
||||
"たまにここに何も出ないことがあるけど、なんでかはわからない",
|
||||
"Kawaii->Mayu(今ここ)->Koume->Chieri->Anastasia->Aiko",
|
||||
"言語設定を日本語以外にするとこの表示はどうなると思う?",
|
||||
"今日も使ってくれてありがとう。利用者カウンターがキリ番ならご報告を"
|
||||
]
|
245
app/package.json
245
app/package.json
@@ -1,131 +1,130 @@
|
||||
{
|
||||
"name": "thedesk",
|
||||
"version": "21.0.0",
|
||||
"codename": "Mayu",
|
||||
"description": "TheDesk is a Mastodon client for PC.",
|
||||
"repository": "https://github.com/cutls/TheDesk",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"construct": "cd view/make && node make --automatic && cd ../../",
|
||||
"dev": "npx electron ./ --dev",
|
||||
"dist": "build --linux snap",
|
||||
"watchview": "node view/make/make.js --automatic --watch",
|
||||
"build:js": "node build.js",
|
||||
"build": "node view/make/make.js --automatic && npx electron-builder",
|
||||
"build:all": "npx electron-builder --win --linux",
|
||||
"build:win": "npx electron-builder --win",
|
||||
"build:pwa": "node view/make/make.js --automatic --pwa"
|
||||
},
|
||||
"keywords": [
|
||||
"mastodon",
|
||||
"client",
|
||||
"electron",
|
||||
"thedesk"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/cutls/TheDesk/issues",
|
||||
"email": "web-pro@cutls.com"
|
||||
},
|
||||
"homepage": "https://thedesk.top",
|
||||
"author": {
|
||||
"name": "Cutls",
|
||||
"url": "https://cutls.com/@Cutls",
|
||||
"email": "web-pro@cutls.com"
|
||||
},
|
||||
"contributor": [
|
||||
{
|
||||
"name": "とねぢ",
|
||||
"url": "https://minohdon.jp/@toneji",
|
||||
"email": "solfa.tono@gmail.com"
|
||||
"name": "thedesk",
|
||||
"version": "21.0.3",
|
||||
"codename": "Mayu",
|
||||
"description": "TheDesk is a Mastodon client for PC.",
|
||||
"repository": "https://github.com/cutls/TheDesk",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"construct": "cd view/make && node make --automatic && cd ../../",
|
||||
"dev": "npx electron ./ --dev",
|
||||
"dist": "build --linux snap",
|
||||
"watchview": "node view/make/make.js --automatic --watch",
|
||||
"build:js": "node build.js",
|
||||
"build": "node view/make/make.js --automatic && npx electron-builder",
|
||||
"build:all": "npx electron-builder --win --linux",
|
||||
"build:win": "npx electron-builder --win",
|
||||
"build:pwa": "node view/make/make.js --automatic --pwa"
|
||||
},
|
||||
{
|
||||
"name": "ぽぷんじゃ",
|
||||
"url": "https://popon.pptdn.jp/@popn_ja",
|
||||
"email": "popn.ja@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "kPherox",
|
||||
"url": "https://pl.kpherox.dev/kPherox",
|
||||
"email": "admin@mail.kr-kp.com"
|
||||
}
|
||||
],
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.13.0",
|
||||
"custom-electron-titlebar": "^3.2.2-hotfix62",
|
||||
"electron-dl": "^3.0.0",
|
||||
"jimp": "^0.10.3",
|
||||
"jquery": "^3.5.0",
|
||||
"jquery-ui-dist": "^1.12.1",
|
||||
"json5": "^2.1.3",
|
||||
"lodash": "^4.17.15",
|
||||
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
|
||||
"sumchecker": "^3.0.1",
|
||||
"sweetalert2": "^9.10.12",
|
||||
"system-font-families": "^0.4.1",
|
||||
"vue": "^2.6.11"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"itunes-nowplaying-mac": "0.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"chokidar": "^3.3.1",
|
||||
"electron": "^8.2.3",
|
||||
"electron-builder": "^22.5.1",
|
||||
"electron-rebuild": "^1.10.1",
|
||||
"readline-sync": "1.4.10"
|
||||
},
|
||||
"build": {
|
||||
"productName": "TheDesk",
|
||||
"appId": "top.thedesk",
|
||||
"asarUnpack": [
|
||||
"node_modules/itunes-nowplaying-mac"
|
||||
"keywords": [
|
||||
"mastodon",
|
||||
"client",
|
||||
"electron",
|
||||
"thedesk"
|
||||
],
|
||||
"directories": {
|
||||
"output": "../build"
|
||||
"bugs": {
|
||||
"url": "https://github.com/cutls/TheDesk/issues",
|
||||
"email": "p@cutls.com"
|
||||
},
|
||||
"win": {
|
||||
"icon": "build/thedesk.ico",
|
||||
"target": [
|
||||
"nsis",
|
||||
"portable",
|
||||
"appx"
|
||||
]
|
||||
"homepage": "https://thedesk.top",
|
||||
"author": {
|
||||
"name": "Cutls",
|
||||
"url": "https://cutls.dev",
|
||||
"email": "p@cutls.com"
|
||||
},
|
||||
"appx": {
|
||||
"identityName": "53491Cutls.TheDesk",
|
||||
"applicationId": "Cutls.TheDesk",
|
||||
"publisherDisplayName": "Cutls",
|
||||
"publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
|
||||
"languages": [
|
||||
"JA-JP",
|
||||
"EN-US"
|
||||
]
|
||||
"contributor": [{
|
||||
"name": "とねぢ",
|
||||
"url": "https://minohdon.jp/@toneji",
|
||||
"email": "solfa.tono@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "ぽぷんじゃ",
|
||||
"url": "https://popon.pptdn.jp/@popn_ja",
|
||||
"email": "popn.ja@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "kPherox",
|
||||
"url": "https://pl.kpherox.dev/kPherox",
|
||||
"email": "admin@mail.kr-kp.com"
|
||||
}
|
||||
],
|
||||
"license": "GPL-3.0",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^5.13.0",
|
||||
"custom-electron-titlebar": "^3.2.2-hotfix62",
|
||||
"electron-dl": "^3.0.0",
|
||||
"jimp": "^0.10.3",
|
||||
"jquery": "^3.5.0",
|
||||
"jquery-ui-dist": "^1.12.1",
|
||||
"json5": "^2.1.3",
|
||||
"lodash": "^4.17.15",
|
||||
"materialize-css": "git://github.com/cutls/materialize#v1-dev",
|
||||
"sumchecker": "^3.0.1",
|
||||
"sweetalert2": "^9.10.12",
|
||||
"system-font-families": "^0.4.1",
|
||||
"vue": "^2.6.11"
|
||||
},
|
||||
"nsis": {
|
||||
"oneClick": false,
|
||||
"allowToChangeInstallationDirectory": true,
|
||||
"artifactName": "TheDesk-setup.${ext}"
|
||||
"optionalDependencies": {
|
||||
"itunes-nowplaying-mac": "0.3.1"
|
||||
},
|
||||
"linux": {
|
||||
"icon": "build/icons",
|
||||
"target": [
|
||||
"zip",
|
||||
"snap",
|
||||
"deb"
|
||||
],
|
||||
"category": "Network"
|
||||
"devDependencies": {
|
||||
"chokidar": "^3.3.1",
|
||||
"electron": "^8.2.3",
|
||||
"electron-builder": "^22.5.1",
|
||||
"electron-rebuild": "^1.10.1",
|
||||
"readline-sync": "1.4.10"
|
||||
},
|
||||
"mac": {
|
||||
"target": [
|
||||
"dmg",
|
||||
"zip"
|
||||
]
|
||||
},
|
||||
"electronDownload": {
|
||||
"version": "8.0.0"
|
||||
},
|
||||
"electronVersion": "8.0.0"
|
||||
}
|
||||
}
|
||||
"build": {
|
||||
"productName": "TheDesk",
|
||||
"appId": "top.thedesk",
|
||||
"asarUnpack": [
|
||||
"node_modules/itunes-nowplaying-mac"
|
||||
],
|
||||
"directories": {
|
||||
"output": "../build"
|
||||
},
|
||||
"win": {
|
||||
"icon": "build/thedesk.ico",
|
||||
"target": [
|
||||
"nsis",
|
||||
"portable",
|
||||
"appx"
|
||||
]
|
||||
},
|
||||
"appx": {
|
||||
"identityName": "53491Cutls.TheDesk",
|
||||
"applicationId": "Cutls.TheDesk",
|
||||
"publisherDisplayName": "Cutls",
|
||||
"publisher": "CN=629757F5-A5EE-474F-9562-B304A89A9FD1",
|
||||
"languages": [
|
||||
"JA-JP",
|
||||
"EN-US"
|
||||
]
|
||||
},
|
||||
"nsis": {
|
||||
"oneClick": false,
|
||||
"allowToChangeInstallationDirectory": true,
|
||||
"artifactName": "TheDesk-setup.${ext}"
|
||||
},
|
||||
"linux": {
|
||||
"icon": "build/icons",
|
||||
"target": [
|
||||
"zip",
|
||||
"snap",
|
||||
"deb"
|
||||
],
|
||||
"category": "Network"
|
||||
},
|
||||
"mac": {
|
||||
"target": [
|
||||
"dmg",
|
||||
"zip"
|
||||
]
|
||||
},
|
||||
"electronDownload": {
|
||||
"version": "8.0.0"
|
||||
},
|
||||
"electronVersion": "8.0.0"
|
||||
}
|
||||
}
|
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"latest":[],
|
||||
"3.1.4": [
|
||||
"リモート限定の連合タイムライン"
|
||||
],
|
||||
"3.1.3": [],
|
||||
"3.1.2": [],
|
||||
"3.1.1": [],
|
||||
|
@@ -53,6 +53,9 @@
|
||||
<div id="acct-list"></div>
|
||||
<div class="divider"></div>
|
||||
</div>
|
||||
<div class="hide-second">
|
||||
<a href="setting.html">@@haveExported@@</a>
|
||||
</div>
|
||||
<div>
|
||||
<h5>@@add@@</h5>
|
||||
<br />
|
||||
|
@@ -69,16 +69,16 @@
|
||||
<div id="demobottom">
|
||||
<button
|
||||
class="btn waves-effect"
|
||||
style="width: 300px;height: 2.5rem;line-height: 0;margin: 0; background-color: var(--accentbtn);"
|
||||
style="width: 23rem;height: 2.5rem;line-height: 0;margin: 0; background-color: var(--accentbtn);"
|
||||
>
|
||||
<i
|
||||
class="material-icons"
|
||||
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;"
|
||||
style="position: relative; top: 0.4rem; font-size: 1.5rem; text-align: center; margin-right: 0.7rem;"
|
||||
>edit</i
|
||||
>@@toot@@
|
||||
</button>
|
||||
<div class="leftside reverse" id="demogroup">
|
||||
<div class="btnsgroup" style="margin-left: 5px;">
|
||||
<div class="btnsgroup" style="margin-left: 0.4rem;">
|
||||
<a href="#" class="nex waves-effect">
|
||||
<i class="material-icons nex big-icon" title="@@acctMan@@(Ctrl+Shift+M)"
|
||||
>account_circle</i
|
||||
@@ -138,11 +138,11 @@
|
||||
id="acct-sel-prof"
|
||||
title="@@showSelectProf@@(Ctrl+Shift+P)"
|
||||
data-trans-title="post_box_prof"
|
||||
width="24px"
|
||||
style="width: 1.8rem"
|
||||
/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="input-field mize" style="float:left; width:calc(100% - 24px); margin-top:0;">
|
||||
<div class="input-field mize" style="float:left; width:calc(100% - 1.8rem); margin-top:0;">
|
||||
<select id="post-acct-sel" class="acct-sel" onchange="mdCheck()"></select>
|
||||
</div>
|
||||
<span class="cancel">
|
||||
@@ -260,7 +260,7 @@
|
||||
>
|
||||
<input
|
||||
id="size"
|
||||
style="width: calc(50% - 20px); margin: 0; height: 24px;"
|
||||
style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem;"
|
||||
value="12"
|
||||
/>px
|
||||
<i
|
||||
@@ -271,7 +271,7 @@
|
||||
>
|
||||
<input
|
||||
id="colorhex"
|
||||
style="width: calc(50% - 50px); margin: 0; height: 24px;"
|
||||
style="width: calc(50% - 3.8rem); margin: 0; height: 1.8rem;"
|
||||
type="color"
|
||||
/>
|
||||
<br />
|
||||
@@ -283,12 +283,12 @@
|
||||
>
|
||||
<input
|
||||
id="linkt"
|
||||
style="width: calc(50% - 20px); margin: 0; height: 24px;"
|
||||
style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem;"
|
||||
placeholder="リンクテキスト"
|
||||
/>
|
||||
<input
|
||||
id="link2"
|
||||
style="width: calc(50% - 20px); margin: 0; height: 24px;"
|
||||
style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem;"
|
||||
placeholder="リンクアドレス"
|
||||
/>
|
||||
<br />
|
||||
@@ -300,12 +300,12 @@
|
||||
>
|
||||
<input
|
||||
id="image"
|
||||
style="width: calc(50% - 20px); margin: 0; height: 24px;"
|
||||
style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem;"
|
||||
placeholder="代替テキスト"
|
||||
/>
|
||||
<input
|
||||
id="image2"
|
||||
style="width: calc(50% - 20px); margin: 0; height: 24px;"
|
||||
style="width: calc(50% - 1.5rem); margin: 0; height: 1.8rem;"
|
||||
placeholder="画像アドレス"
|
||||
/>
|
||||
</div>
|
||||
@@ -383,7 +383,7 @@
|
||||
>clear</i
|
||||
>
|
||||
</div>
|
||||
<div class="col s12 mize" style="margin-bottom:5px; padding:0;">
|
||||
<div class="col s12 mize" style="margin-bottom:0.4rem; padding:0;">
|
||||
<div id="taglist"></div>
|
||||
<div id="preview" class="mize"></div>
|
||||
<span class=" sml mize"
|
||||
@@ -417,7 +417,7 @@
|
||||
</div>
|
||||
<!-- 公開範囲 Dropdown Structure -->
|
||||
<ul id="dropdown1" class="dropdown-content">
|
||||
<li style="font-size: 16px; display: block; line-height: 22px; padding: 14px 16px;">
|
||||
<li style="font-size: 1.2rem; display: block; line-height: 1.69rem; padding: 1.1rem 1.23rem;">
|
||||
@@selectVis@@
|
||||
</li>
|
||||
<li>
|
||||
@@ -767,7 +767,7 @@
|
||||
<span id="his-follow"></span>
|
||||
</span>
|
||||
<span class="cbadge">@@follower@@: <span id="his-follower"></span> </span><br />
|
||||
<span class="cbadge" style="max-width:150px; width:150px; "
|
||||
<span class="cbadge" style="max-width:11.5rem; width:11.5rem; "
|
||||
>Since:
|
||||
<span id="his-since"></span>
|
||||
</span>
|
||||
@@ -892,11 +892,6 @@
|
||||
><i class="material-icons">account_box</i>@@operateOtherAcct@@</a
|
||||
>
|
||||
</li>
|
||||
<li class="anc-link" go="#his-matching-list">
|
||||
<a href="#" title="@@likeUserDes@@"
|
||||
><i class="material-icons">group_work</i>User Matching</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="his-tl" class="his-var-content">
|
||||
@@ -1047,19 +1042,6 @@
|
||||
<div id="his-follow-recom-list" class="his-var-content">
|
||||
<div id="his-follow-recom-contents" class="cont-series"></div>
|
||||
</div>
|
||||
<div id="his-matching-list" class="his-var-content">
|
||||
@@likeUserDes@@<br />
|
||||
Powered by <a href="https://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()"
|
||||
style="width:100%; padding:0;"
|
||||
>
|
||||
@@get@@
|
||||
</button>
|
||||
</div>
|
||||
<div id="his-float-blocked">
|
||||
<div>@@blocked@@</div>
|
||||
</div>
|
||||
@@ -1090,7 +1072,7 @@
|
||||
<br />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div style="float: left;padding-top:3px;line-height: normal;">
|
||||
<div style="float: left;padding-top:0.23rem;line-height: normal;">
|
||||
<span id="imgprog"></span>% <br />
|
||||
<span id="imgsec"></span>ms <br /><span id="imgbyte"></span>KB
|
||||
</div>
|
||||
@@ -1138,60 +1120,6 @@
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<!--mstdn.jp useragent-->
|
||||
<div
|
||||
id="askjp_jp_ua"
|
||||
class="hide"
|
||||
style="z-index:505;width:100vw;height:100vh; background-color: #530f0f;color:white;padding:20px;overflow-y:scroll;position:absolute;"
|
||||
>
|
||||
<p style="font-size:300%">【緊急】mstdn.jpへのアクセスについて</p>
|
||||
<br />
|
||||
<p style="font-size:200%">問題の概要</p>
|
||||
<p>
|
||||
合同会社分散型ソーシャルネットワーク機構は非公開審査によってユーザーエージェントベースで個々のアプリに対してAPIへのアクセスを許可する方法を取っています。
|
||||
</p>
|
||||
<p>
|
||||
TheDesk開発者はこれに強く反発し、TheDeskのユーザーエージェントをそのアプリからのアクセスであると特定することができない値にすることを決めました。
|
||||
</p>
|
||||
<p>具体的には、"Mastodon client: [起動毎に変わる100文字の英数記号]"と設定しました。</p>
|
||||
<p style="font-size:200%">ユーザーによる対策</p>
|
||||
<p>
|
||||
このバージョンのTheDeskでは任意のユーザーエージェントを適用できます。「設定」内の「環境設定」で設定していただけます。<a
|
||||
href="setting.html"
|
||||
>設定</a
|
||||
>
|
||||
</p>
|
||||
<p style="font-size:150%">1. 「TheDesk」を含む値に設定する</p>
|
||||
<p>
|
||||
「設定」内の「環境設定」、「ユーザーエージェント」に「TheDesk」を含む値を入れてください。大文字小文字に注意してください。
|
||||
</p>
|
||||
<p><b>懸念点</b></p>
|
||||
<p>
|
||||
TheDesk開発者は合同会社分散型ソーシャルネットワーク機構に対しこの件についてメールで問い合わせを行っています(抗議ではありません)。問い合わせの過程でアプリ許可が取り消され、使用不能になる可能性があります。
|
||||
</p>
|
||||
<p><u>ちなみに</u></p>
|
||||
<p>
|
||||
合同会社分散型ソーシャルネットワーク機構はmstdn.jpのお知らせアカウントに対するリプライに書かれたサードパーティクライアントを「審査」の後許可するとトゥートし、複数ユーザーがTheDeskの名前を挙げました。
|
||||
事実、トゥートの翌日までにTheDeskに対してアクセス許可が出されました。しかし、許可を出す際にTheDeskの標準ユーザーエージェントを機構は一切確認せず、「TheDesk」という文字列が入ったユーザーエージェントを一律で許可する設定にしたようです。
|
||||
結果として実際の標準ユーザーエージェントはそれに合致せず、不許可のままとなっていました。前バージョンまでの標準ユーザーエージェントは、パッケージ名の都合上全て小文字の「thedesk」を採用していました。
|
||||
</p>
|
||||
<p style="font-size:150%">2. 「認定済み」クライアントの名前を含む値に設定する</p>
|
||||
<p>
|
||||
「設定」内の「環境設定」、「ユーザーエージェント」に、<a href="https://mstdn.jp/about"
|
||||
>mstdn.jpのトップページ</a
|
||||
>記載のアプリ名を含む値を入れてください。大文字小文字やスペースに注意してください。
|
||||
</p>
|
||||
<p>
|
||||
「Mastodon日本鯖です.」と書かれた以降の一段を全てコピーして記載してもアクセス可能です。<u
|
||||
>これほどまでにユーザーエージェント制限は「抜け道」が多いのです。</u
|
||||
><a href="setting.html">設定</a>
|
||||
</p>
|
||||
<p><b>懸念点</b></p>
|
||||
<p>
|
||||
その記載されたアプリと合同会社分散型ソーシャルネットワーク機構になんの関係があるかは知りませんが、どちらにしろ他のクライアントの名を借りてアクセスの許可をいただくというあまり道徳的によろしくない方法です。
|
||||
</p>
|
||||
<button onclick="$('#askjp_jp_ua').addClass('hide')" class="btn waves-effect">閉じる</button>
|
||||
</div>
|
||||
<!-- Modal Structure Release Note-->
|
||||
<div id="releasenote" class="modal modal-fixed-footer scr">
|
||||
<div class="modal-content">
|
||||
@@ -1199,22 +1127,22 @@
|
||||
<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-21-0-0_Mayu" class="release-do" style="display:none; ">
|
||||
<div id="release-21-0-3_Mayu" class="release-do" style="display:none; ">
|
||||
<br />
|
||||
<a href="https://ja.mstdn.wiki/TheDesk" target="_blank">機能一覧</a><br />
|
||||
Pixiv
|
||||
FanboxやPatreonでは支援者様限定で様々なTheDeskに関する記事をご覧いただけます。最低月一更新。<br />
|
||||
困ったときは、<a href="https://docs.thedesk.top">TheDesk Docs</a>をご覧ください。
|
||||
<h5>Release Note 21.0.0 (Mayu)</h5>
|
||||
・フォロリクをストリーミングで受け取ったときにNo status hereになる <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・Apple MusicのNowPlayingでアルバム情報がないときの挙動を改善 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・Last.fm NowPlaying <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・テーマCSSに関するバグ <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・プラットフォームやPWAか否か等で表示を切り替える <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・ユーザータイムラインをカラム化 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <img src="">anonymous user<br>
|
||||
・スプラッシュスクリーンを追加 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・アイコンの微調整 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・FTLのRemote only <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
<h5>Release Note 21.0.3 (Mayu)</h5>
|
||||
<!--上のdivのidも変えてね-->
|
||||
・絵文字の挿入場所についてのバグを修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <img src="">Bug reporter<br>
|
||||
・ほぼすべてのフォントサイズを変更できるように <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('LienRag@miaou.drycat.fr','main')" class="contributor"><img src="null">LienRag</a><br>
|
||||
・カラム削除時のバグを修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('popn_ja@popon.pptdn.jp','main')" class="contributor"><img src="https://avatars3.githubusercontent.com/u/24523508?s=88&v=4">kaias1jp</a> <a onclick="udgEx('qk_k@mstdn.jp','main')" class="contributor"><img src="https://user-images.githubusercontent.com/17561618/84721679-2f453a80-afbc-11ea-9183-9bbcae5cd67d.png">heguro</a><br>
|
||||
・フォント変更時の表示の修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <img src="">Bug reporter<br>
|
||||
・フォローリクエストの取り消し等 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('kPherox@pl.kplerox.dev','main')" class="contributor"><img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png">kPherox</a><br>
|
||||
・preタグがPleromaや改造Mastodon等で挿入されたとき、デザインが崩れるのを修正 <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('kPherox@pl.kplerox.dev','main')" class="contributor"><img src="https://user-images.githubusercontent.com/17561618/66582379-a3714800-ebbc-11e9-8402-d81a35a3be9f.png">kPherox</a><br>
|
||||
・`quote_muted`が挿入されたときに非表示にする <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a><br>
|
||||
・設定をアカウント登録前に飛べるようにする <a onclick="udgEx('Cutls@cutls.com','main')" class="contributor"><img src="https://media.thedesk.top/accounts/avatars/000/000/001/original/d34ef8bb49d5e011.png">cutls</a> <a onclick="udgEx('LienRag@miaou.drycat.fr','main')" class="contributor"><img src="null">LienRag</a><br>
|
||||
|
||||
</div>
|
||||
<div id="release-en" style="display:none">
|
||||
@@ -1374,7 +1302,7 @@
|
||||
id="noauth-url"
|
||||
type="text"
|
||||
class="validate"
|
||||
style="width:calc( 70% - 40px);"
|
||||
style="width:calc( 70% - 3rem);"
|
||||
placeholder="e.g:mstdn.jp"
|
||||
/>
|
||||
</div>
|
||||
@@ -1382,7 +1310,7 @@
|
||||
</div>
|
||||
<button
|
||||
class="btn waves-effect blue "
|
||||
style="width:calc( 100% - 10px);"
|
||||
style="width:calc( 100% - 0.7rem);"
|
||||
onclick="addColumn()"
|
||||
data-trans-i="add"
|
||||
>
|
||||
@@ -1397,11 +1325,11 @@
|
||||
<select id="src-acct-sel" class="acct-sel" onchange="trend()"></select>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<input id="src" type="text" class="validate" style="width:60%" />
|
||||
<input id="src" type="text" class="validate" style="width:57%" />
|
||||
<label for="src" data-trans="src">@@search@@</label>
|
||||
<button
|
||||
class="btn waves-effect indigo"
|
||||
style="width: 36%;padding: 0;padding-left: 15px;"
|
||||
style="width: 36%;padding: 0;padding-left: 1.15rem;"
|
||||
onclick="src()"
|
||||
data-trans-i="src"
|
||||
>
|
||||
@@ -1424,12 +1352,12 @@
|
||||
id="dirNoAuth-url"
|
||||
type="text"
|
||||
class="validate"
|
||||
style="width:calc( 70% - 40px);"
|
||||
style="width:calc( 70% - 3rem);"
|
||||
placeholder="e.g:mastodon.social"
|
||||
/>
|
||||
<button
|
||||
class="btn waves-effect indigo"
|
||||
style="width: 120px;padding: 0;padding-left: 15px;"
|
||||
style="width: 9.23rem;padding: 0;padding-left: 1.15rem;"
|
||||
onclick="directory()"
|
||||
>
|
||||
<i class="material-icons left" style="margin:0">search</i>@@show@@
|
||||
@@ -1650,7 +1578,7 @@
|
||||
>
|
||||
<i
|
||||
class="material-icons"
|
||||
style="position: relative; top: 5px; font-size: 1.5rem; text-align: center; margin-right: 10px;"
|
||||
style="position: relative; top: 0.38rem; font-size: 1.5rem; text-align: center; margin-right: 0.76rem;"
|
||||
>edit</i
|
||||
>@@toot@@
|
||||
</button>
|
||||
@@ -1688,7 +1616,7 @@
|
||||
</div>
|
||||
<div>
|
||||
<div id="tips-menu">
|
||||
<div class="btnsgroup" style="height:34px">
|
||||
<div class="btnsgroup" style="height:2.61rem">
|
||||
<span class="grouptitle">Tips:</span>
|
||||
<a onclick="tips('ver')" class="nex waves-effect">
|
||||
<i class="material-icons nex" title="@@verTips@@" data-trans-title="ver">info</i>
|
||||
@@ -1720,7 +1648,7 @@
|
||||
>bubble_chart</i
|
||||
>
|
||||
</a>
|
||||
<div id="tips-text" style="width:300px;"></div>
|
||||
<div id="tips-text" style="width:23rem;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey":"Login as Misskey",
|
||||
"misskeylogin":"Read <a href=\"https://thedesk.top/how-to-misskey-login.html\">Docs(ja)</a> to login Misskey.",
|
||||
"nodata":"No data",
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)"
|
||||
"accessTokenSetup": "Use access token to login(click after fill not code but access-token in box: Advanced)",
|
||||
"haveExported": "Having the exported file of TheDesk, click here to jump setting page"
|
||||
}
|
@@ -166,6 +166,7 @@
|
||||
"lang_showontl_domain": "Domain ",
|
||||
"lang_showontl_listwarn": "Follow to add this user to lists.",
|
||||
"lang_showontl_verified": "This website is verified by owner at ",
|
||||
"lang_status_requesting": "Requesting",
|
||||
"lang_parse_mentioned": " replied to you",
|
||||
"lang_parse_faved": " favourited your toot",
|
||||
"lang_parse_bted": " boosted your toot",
|
||||
@@ -220,6 +221,7 @@
|
||||
"lang_parse_nsfw": "sensitive media",
|
||||
"lang_parse_html": "Show embed HTML",
|
||||
"lang_parse_notffilter": "Show this user's notifications",
|
||||
"lang_parse_hidden": "Unvisible quoted toot",
|
||||
"lang_misskeyparse_renote": "Repost",
|
||||
"lang_misskeyparse_renoteqt": "Renote",
|
||||
"lang_misskeyparse_reaction": "Reaction",
|
||||
|
@@ -20,5 +20,6 @@
|
||||
"thisismisskey":"Misskeyとしてログイン",
|
||||
"misskeylogin":"<a href=\"https://thedesk.top/how-to-misskey-login.html\">ドキュメント</a>を参照して正しいコードを入れてください。",
|
||||
"nodata":"アカウントがありません",
|
||||
"accessTokenSetup": "アクセストークンを用いたセットアップ(コードの代わりにアクセストークンを入力してクリックしてください: 上級者向け)"
|
||||
"accessTokenSetup": "アクセストークンを用いたセットアップ(コードの代わりにアクセストークンを入力してクリックしてください: 上級者向け)",
|
||||
"haveExported": "設定をインポートしたい場合、ここをクリックして設定画面に飛んでください"
|
||||
}
|
@@ -167,6 +167,7 @@
|
||||
"lang_showontl_domain": "ドメイン",
|
||||
"lang_showontl_listwarn": "リストに追加するためにはフォローが必要です。",
|
||||
"lang_showontl_verified": "このユーザーの所持するWebサイトであると証明されています。",
|
||||
"lang_status_requesting": "フォローをリクエストしています",
|
||||
"lang_parse_mentioned": "が返信しました",
|
||||
"lang_parse_faved": "がお気に入り登録しました",
|
||||
"lang_parse_bted": "がブーストしました",
|
||||
@@ -220,6 +221,7 @@
|
||||
"lang_parse_unknown": "添付ファイル",
|
||||
"lang_parse_nsfw": "閲覧注意",
|
||||
"lang_parse_html": "埋め込みを表示",
|
||||
"lang_parse_hidden": "ミュートされた引用トゥート",
|
||||
"lang_parse_notffilter": "このユーザーの通知のみを表示",
|
||||
"lang_misskeyparse_renote": "再投稿",
|
||||
"lang_misskeyparse_renoteqt": "引用",
|
||||
|
@@ -19,7 +19,7 @@
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
input {
|
||||
max-height: 50px !important
|
||||
max-height: 3.84rem !important
|
||||
}
|
||||
|
||||
.pcr-result {
|
||||
@@ -54,11 +54,11 @@
|
||||
@@langlist@@
|
||||
<h5>@@backup@@</h5>
|
||||
<button onclick="exportSettings()" class="btn waves-effect lime darken-3"
|
||||
style="width:100%; max-width:200px;">@@export@@</button>
|
||||
style="width:100%; max-width:15rem;">@@export@@</button>
|
||||
<button onclick="importSettings()" class="btn waves-effect cyan darken-3"
|
||||
style="width:100%; max-width:200px;">@@import@@</button><br>
|
||||
style="width:100%; max-width:15rem;">@@import@@</button><br>
|
||||
@@backupWarn@@<br>
|
||||
<input type="text" id="imp-exp" style="width: 300px">
|
||||
<input type="text" id="imp-exp" style="width: 22rem">
|
||||
<div id="envView">
|
||||
<template v-for="(item, i) in config">
|
||||
<h5>{{item.text.head}}</h5>
|
||||
@@ -87,22 +87,22 @@
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
<button class="btn waves-effect" style="width:7.7rem;"
|
||||
v-on:click="complete(i)">@@change@@</button>
|
||||
</template><br>
|
||||
</template>
|
||||
</div>
|
||||
<h5>@@font@@</h5>
|
||||
@@fontwarn@@<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="font()">@@select@@</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:300px; height:500px;"></div>
|
||||
<button class="btn waves-effect" style="width:7.7rem;" onclick="font()">@@select@@</button><br>
|
||||
<div id="fonts" class="hide" style="overflow-y:scroll; width:22rem; height:40rem;"></div>
|
||||
<br>
|
||||
<input type="text" style="width:150px" id="font">
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="settings()">@@set@@</button>
|
||||
<input type="text" style="width:11.5rem" id="font">
|
||||
<button class="btn waves-effect" style="width:7.7rem;" onclick="settings()">@@set@@</button>
|
||||
<br>
|
||||
<h5>@@savefolder@@</h5>
|
||||
@@savefolderwarn@@<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="savefolder()">@@change@@</button>
|
||||
<button class="btn waves-effect" style="width:7.7rem;" onclick="savefolder()">@@change@@</button>
|
||||
<br>
|
||||
</div>
|
||||
</li>
|
||||
@@ -150,19 +150,19 @@
|
||||
value="custom" />
|
||||
<span data-ct="custom">custom</span>
|
||||
</label>
|
||||
<div style="width:300px" id="sel-selector">
|
||||
<div style="width:22rem" id="sel-selector">
|
||||
<select id="custom-sel-sel" class="custom-sel" onchange="customSel()"></select>
|
||||
</div>
|
||||
<h4>@@customtheme@@</h4>
|
||||
<div style="width:300px" id="edit-selector" data-add="@@add_new@@">
|
||||
<div style="width:22rem" id="edit-selector" data-add="@@add_new@@">
|
||||
<select id="custom-edit-sel" class="custom-sel" onchange="custom()">
|
||||
<option value="add_new">@@add_new@@</option>
|
||||
</select>
|
||||
</div>
|
||||
<h5>@@name@@</h5>
|
||||
<input type="text" style="width:300px" id="custom_name" placeholder="@@name@@...">
|
||||
<input type="text" style="width:22rem" id="custom_name" placeholder="@@name@@...">
|
||||
<h5>@@desc@@</h5>
|
||||
<div class="input-field"><textarea style="width:300px" id="custom_desc" class="materialize-textarea"
|
||||
<div class="input-field"><textarea style="width:22rem" id="custom_desc" class="materialize-textarea"
|
||||
placeholder="@@desc@@..."></textarea></div>
|
||||
<h5>@@customthemeDirection@@</h5>
|
||||
<label>
|
||||
@@ -244,12 +244,12 @@
|
||||
</div>
|
||||
<button class="btn-large waves-effect" onclick="customComp()">@@change@@</button> <button
|
||||
class="btn waves-effect red disabled" id="delTheme" onclick="deleteIt()">@@delete@@</button><br><br>
|
||||
<input type="text" style="width:300px;height:40px;" id="custom_json" class="materialize-textarea"
|
||||
<input type="text" style="width:22rem;height:40px;" id="custom_json" class="materialize-textarea"
|
||||
placeholder="JSON style" readonly><br>
|
||||
@@customShare@@
|
||||
<h4>@@customImport@@</h4>
|
||||
@@cImpWarn@@<br>
|
||||
<input type="text" style="width:300px;height:40px;" id="custom_import" class="materialize-textarea"
|
||||
<input type="text" style="width:22rem;height:40px;" id="custom_import" class="materialize-textarea"
|
||||
placeholder="JSON/JSON5 style">
|
||||
<button class="btn waves-effect" onclick="customImp()">@@import@@</button><br>
|
||||
</li>
|
||||
@@ -284,7 +284,7 @@
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
<button class="btn waves-effect" style="width:7.7rem;"
|
||||
v-on:click="complete(i)">@@change@@</button>
|
||||
</template><br>
|
||||
</template>
|
||||
@@ -302,7 +302,7 @@
|
||||
@@volwarn80@@<br>
|
||||
<p class="range-field"><span id="soundVolVal">80</span><br>
|
||||
<input type="range" id="soundvol" min="0" max="100" value="80" onchange="customVol()"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
style="width:40rem; max-width:100%" /></p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
@@ -339,7 +339,7 @@
|
||||
<input type="text" v-model="item.setValue" type="radio" v-bind:id="item.id"
|
||||
v-bind:style="{ width: item.width+'px'}" />{{item.text.after}}
|
||||
</template>
|
||||
<button class="btn waves-effect" style="width:100px;"
|
||||
<button class="btn waves-effect" style="width:7.7rem;"
|
||||
v-on:click="complete(i)">@@change@@</button>
|
||||
</template><br>
|
||||
</template>
|
||||
@@ -353,12 +353,12 @@
|
||||
<div class="collapsible-body">
|
||||
<h5>@@iks@@</h5>
|
||||
@@okswarn@@<br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:150px" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:150px" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:150px" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:100px;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+1:<input type="text" style="width:11.5rem" id="oks-1">
|
||||
<button onclick="oks(1)" class="btn waves-effect" style="width:7.7rem;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+2:<input type="text" style="width:11.5rem" id="oks-2">
|
||||
<button onclick="oks(2)" class="btn waves-effect" style="width:7.7rem;">@@set@@</button><br><br>
|
||||
Ctrl+Shift+3:<input type="text" style="width:11.5rem" id="oks-3">
|
||||
<button onclick="oks(3)" class="btn waves-effect" style="width:7.7rem;">@@set@@</button><br><br>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
@@ -373,11 +373,11 @@
|
||||
<h5>@@wordmute@@</h5>
|
||||
@@enter@@<br>
|
||||
<div class="chips" id="wordmute" style="background-color:gray;"></div>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<button onclick="wordmuteSave()" class="btn waves-effect" style="width:7.7rem;">@@set@@</button>
|
||||
<h5>@@wordemp@@</h5>
|
||||
@@enter@@<br>
|
||||
<div class="chips" id="wordemp" style="background-color:gray;"></div>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<button onclick="wordempSave()" class="btn waves-effect" style="width:7.7rem;">@@set@@</button>
|
||||
<h5>@@useremp@@</h5>
|
||||
@@useerempwarn@@
|
||||
<span class="emphasized"> @@empcolorwarn@@ </span>
|
||||
@@ -391,24 +391,24 @@
|
||||
<h5>@@link@@(Spotify)</h5>
|
||||
@@linkwarn@@<br>
|
||||
<div id="spotify-code-show" class="hide"><input type="text" id="spotify-code"><button
|
||||
onclick="spotifyAuth()" class="btn waves-effect" style="width:100px;">@@set@@</button></div>
|
||||
onclick="spotifyAuth()" class="btn waves-effect" style="width:7.7rem;">@@set@@</button></div>
|
||||
<a onclick="spotifyConnect()" class="btn waves-effect nex"
|
||||
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-enable"><i
|
||||
style="width:100%; max-width:15rem; background-color:#1ed760;" id="spotify-enable"><i
|
||||
class="fab fa-spotify left"></i>@@connect@@</a>
|
||||
<a onclick="spotifyDisconnect()" class="btn waves-effect nex disabled"
|
||||
style="width:100%; max-width:200px; background-color:#1ed760;" id="spotify-disable"><i
|
||||
style="width:100%; max-width:15rem; background-color:#1ed760;" id="spotify-disable"><i
|
||||
class="fab fa-spotify left"></i>@@disconnect@@</a>
|
||||
<h5>@@link@@(Last.fm)</h5>
|
||||
@@lastFmWarn@@<br />
|
||||
<input type="text" style="width:150px" id="lastFmUser">
|
||||
<button onclick="lastFmSet()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<input type="text" style="width:11.5rem" id="lastFmUser">
|
||||
<button onclick="lastFmSet()" class="btn waves-effect" style="width:7.7rem;">@@set@@</button>
|
||||
<h5>@@templateedit@@</h5>
|
||||
@@templateeditwarn@@<br>
|
||||
<textarea id="np-temp" class="materialize-textarea" data-length="500">#NowPlaying {song} / {album} / {artist}
|
||||
{url}</textarea><br>
|
||||
@@template1@@<br>
|
||||
<span class="mac">>@@template2@@</span><br>
|
||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:100px;">@@set@@</button>
|
||||
<button onclick="spotifySave()" class="btn waves-effect" style="width:7.7rem;">@@set@@</button>
|
||||
<h5>@@postartwork@@</h5>
|
||||
<label>
|
||||
<input class="with-gap" onchange="spotifyFlagSave()" name="awk" type="radio" id="awk_yes"
|
||||
@@ -459,30 +459,30 @@
|
||||
<p class="range-field"><span id="voicespeedVal">10</span><br>
|
||||
<input type="range" id="voicespeed" min="1" max="100" value="10"
|
||||
onchange="document.getElementById('voicespeedVal').innerText=this.value"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
style="width:40rem; max-width:100%" /></p>
|
||||
<h5>@@pitch@@</h5>
|
||||
@@pitchwarn@@<br>
|
||||
<p class="range-field"><span id="voicepitchVal">50</span><br>
|
||||
<input type="range" id="voicepitch" min="0" max="100" value="50"
|
||||
onchange="document.getElementById('voicepitchVal').innerText=this.value"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
style="width:40rem; max-width:100%" /></p>
|
||||
<h5>@@vol@@</h5>
|
||||
@@volwarn@@<br>
|
||||
<p class="range-field"><span id="voicevolVal">100</span><br>
|
||||
<input type="range" id="voicevol" min="0" max="100" value="100"
|
||||
onchange="document.getElementById('voicevolVal').innerText=this.value"
|
||||
style="width:500px; max-width:100%" /></p>
|
||||
style="width:40rem; max-width:100%" /></p>
|
||||
<h5>@@test@@</h5>
|
||||
<input type="text" style="width:350px" id="voicetxt" value="@@sample@@">
|
||||
<button class="btn waves-effect blue" style="width:150px;" onclick="voicePlay()"
|
||||
<input type="text" style="width:27rem" id="voicetxt" value="@@sample@@">
|
||||
<button class="btn waves-effect blue" style="width:11.5rem;" onclick="voicePlay()"
|
||||
id="testplay">@@playstop@@</button><br>
|
||||
<br>
|
||||
<button class="btn waves-effect" style="width:100px;" onclick="voiceSettings()">@@set@@</button>
|
||||
<button class="btn waves-effect" style="width:7.7rem;" onclick="voiceSettings()">@@set@@</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:200px;"><i
|
||||
<a href="index.html" class="btn waves-effect orange nex" style="width:100%; max-width:15rem;"><i
|
||||
class="material-icons left">undo</i>@@back@@</a>
|
||||
<br>
|
||||
<br>@@keyscs@@
|
||||
@@ -512,26 +512,26 @@
|
||||
<li>B:@@bt@@</li>
|
||||
<li>R:@@reply@@</li>
|
||||
</div>
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:500px;"
|
||||
<button class="btn waves-effect red" style="width:100%; max-width:40rem;"
|
||||
onclick="if(confirm('@@resetconfirm@@')){ localStorage.clear(); location.href='index.html'; }"><i
|
||||
class="material-icons left">delete</i>@@reset@@</button><br><br>
|
||||
<button class="btn waves-effect indigo pwa" onclick="about()" style="width:100%; max-width:500px;"><i
|
||||
<button class="btn waves-effect indigo pwa" onclick="about()" style="width:100%; max-width:40rem;"><i
|
||||
class="material-icons left">info</i>@@about@@</button>
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:500px;"><i
|
||||
<a href="https://thedesk.top" class="btn waves-effect deep-purple lighten-2" style="width:100%; max-width:40rem;"><i
|
||||
class="material-icons left">web</i>@@hp@@</a>
|
||||
<a href="https://www.pixiv.net/fanbox/creator/28105985" class="btn waves-effect red lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Pixiv FANBOX)</a>
|
||||
style="width:100%; max-width:40rem;"><i class="material-icons left">trending_up</i>@@support@@(Pixiv FANBOX)</a>
|
||||
<a href="https://www.patreon.com/cutls" class="btn waves-effect red darken-2"
|
||||
style="width:100%; max-width:500px;"><i class="material-icons left">trending_up</i>@@support@@(Patreon)</a>
|
||||
style="width:100%; max-width:40rem;"><i class="material-icons left">trending_up</i>@@support@@(Patreon)</a>
|
||||
<a href="https://liberapay.com/cutls" class="btn waves-effect black-text"
|
||||
style="width:100%; max-width:500px; background-color: #f6c915"><i
|
||||
style="width:100%; max-width:40rem; background-color: #f6c915"><i
|
||||
class="material-icons left">trending_up</i>@@support@@(Liberapay)</a>
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:500px;"><i
|
||||
<a href="https://docs.thedesk.top" class="btn waves-effect blue darken-2" style="width:100%; max-width:40rem;"><i
|
||||
class="material-icons left">list</i>@@help@@/Docs</a>
|
||||
<a href="https://github.com/cutls/TheDesk" class="btn waves-effect black lighten-2"
|
||||
style="width:100%; max-width:500px;"><i class="fab fa-github left"></i>GitHub</a>
|
||||
style="width:100%; max-width:40rem;"><i class="fab fa-github left"></i>GitHub</a>
|
||||
<a href="index.html?mode=user&code=Cutls@cutls.com" class="btn waves-effect blue lighten-2"
|
||||
style="width:100%; max-width:500px;"><img src="../../img/desk_full.svg" class="left" width="25"
|
||||
style="width:100%; max-width:40rem;"><img src="../../img/desk_full.svg" class="left" width="25"
|
||||
style="padding-top:5px;">Main author: Cutls@cutls.com</a>
|
||||
<br>
|
||||
TheDesk @ <a href="https://github.com/cutls/TheDesk/commits/@@gitHash@@">@@gitHash@@</a> - <a onclick="checkupd(); return localStorage.removeItem('new-ver-skip'); location.href='index.html';"
|
||||
|
Reference in New Issue
Block a user