Compare commits
1567 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cbd6992e3 | ||
|
|
1f3a27325b | ||
|
|
890ec772f9 | ||
|
|
b072012976 | ||
|
|
8982058a25 | ||
|
|
fb95e077e9 | ||
|
|
dc08f46909 | ||
|
|
3e6a47d5f7 | ||
|
|
aabcfb230f | ||
|
|
ee99a660c2 | ||
|
|
5063061a70 | ||
|
|
c3ce7bd516 | ||
|
|
95efd96c3e | ||
|
|
abf5274c06 | ||
|
|
db5d3182bc | ||
|
|
0527c978ce | ||
|
|
b36de5dc26 | ||
|
|
92b47e56f7 | ||
|
|
fc967f92f3 | ||
|
|
1882bbf0b6 | ||
|
|
a3fed1f6f0 | ||
|
|
eae0fd1768 | ||
|
|
a7a99fc3a2 | ||
|
|
fedd80477b | ||
|
|
844d145e09 | ||
|
|
a817c14925 | ||
|
|
70e145eceb | ||
|
|
438f11c11d | ||
|
|
edf75d1915 | ||
|
|
9de26d9998 | ||
|
|
ab5a786197 | ||
|
|
272b613e18 | ||
|
|
35c10e0c7d | ||
|
|
7795adf173 | ||
|
|
dca2e5fdab | ||
|
|
eb6dcdfa5d | ||
|
|
9f4f788519 | ||
|
|
1d7588e4e4 | ||
|
|
81c476c1bb | ||
|
|
ccc44ca769 | ||
|
|
82c5a853cb | ||
|
|
e11af25ba6 | ||
|
|
16b68bb190 | ||
|
|
051dbb3b1b | ||
|
|
bdf2b9be71 | ||
|
|
0b6a76d01a | ||
|
|
bd1e1f7ee8 | ||
|
|
e9c7ffe825 | ||
|
|
9e735bc7df | ||
|
|
eefc03c4f3 | ||
|
|
135caffaec | ||
|
|
c1f7abac58 | ||
|
|
a325c50f1f | ||
|
|
37daa5638b | ||
|
|
8118806f4e | ||
|
|
3f7aaa7e99 | ||
|
|
700de676d0 | ||
|
|
52a8ec8033 | ||
|
|
40a884b4f5 | ||
|
|
62df4e2fac | ||
|
|
69d60a7372 | ||
|
|
9623b79197 | ||
|
|
ec1481aed0 | ||
|
|
1e76867fd1 | ||
|
|
7ff01413e5 | ||
|
|
48b3ed3aca | ||
|
|
e75d52f985 | ||
|
|
3f95e755b5 | ||
|
|
9d0f4096f8 | ||
|
|
e402e0e7a7 | ||
|
|
38c77fb39e | ||
|
|
3020adbe9d | ||
|
|
4df390713c | ||
|
|
bec4444388 | ||
|
|
2d249f6f19 | ||
|
|
4d1053ce99 | ||
|
|
0522331977 | ||
|
|
eb9520397c | ||
|
|
f0c93b8fce | ||
|
|
b3e9c3d6ce | ||
|
|
99793f2e20 | ||
|
|
f43bd64be2 | ||
|
|
fa440e8d9b | ||
|
|
db4d457325 | ||
|
|
d87245899e | ||
|
|
ac6260ab24 | ||
|
|
91bc8c8bdd | ||
|
|
74d756d43b | ||
|
|
2281d0ca35 | ||
|
|
31cc929c68 | ||
|
|
80ce93785a | ||
|
|
1710ab0035 | ||
|
|
dafc50bbd7 | ||
|
|
50f58f8d3b | ||
|
|
b9be1529cc | ||
|
|
fb3a89b547 | ||
|
|
c01915c397 | ||
|
|
e9a774c1d4 | ||
|
|
04d08ae6c1 | ||
|
|
0585f95a85 | ||
|
|
2300e02a12 | ||
|
|
fec4b61cb6 | ||
|
|
e1941ce621 | ||
|
|
3aeb47b039 | ||
|
|
73701be7c9 | ||
|
|
7941eb7e9d | ||
|
|
a8dedc94e9 | ||
|
|
26fd6a72d6 | ||
|
|
9d6f06cbde | ||
|
|
b0bd85ccc6 | ||
|
|
9fc570e183 | ||
|
|
695d812ecb | ||
|
|
ef6db98da5 | ||
|
|
cd38819a7a | ||
|
|
f207ed274b | ||
|
|
c3691783de | ||
|
|
7171831b14 | ||
|
|
fa14921421 | ||
|
|
475a80acdd | ||
|
|
9826c3f33e | ||
|
|
ecee949547 | ||
|
|
95eea7051f | ||
|
|
74e3ea41a7 | ||
|
|
dc27db920a | ||
|
|
b2724fe362 | ||
|
|
5d43a5b159 | ||
|
|
7435f3ddfd | ||
|
|
94b6de6d3f | ||
|
|
1eb49e9a26 | ||
|
|
0893aa4ee1 | ||
|
|
ccdd9fba88 | ||
|
|
01dc5ff700 | ||
|
|
346e8319df | ||
|
|
5ca7046d5c | ||
|
|
f39e851211 | ||
|
|
3747020876 | ||
|
|
5ed5a9ade3 | ||
|
|
04f157353f | ||
|
|
a1bbcc9be2 | ||
|
|
1266ef44ee | ||
|
|
0da36709d5 | ||
|
|
2b5637f388 | ||
|
|
6d478906a0 | ||
|
|
e436aed6c5 | ||
|
|
25867690f3 | ||
|
|
b5efbebadb | ||
|
|
e93f860c0c | ||
|
|
df04ebca4c | ||
|
|
d2aaf2c2cf | ||
|
|
8386cd675c | ||
|
|
ad7b3cf485 | ||
|
|
f9f2aeab23 | ||
|
|
ea735d279f | ||
|
|
fa616d56fd | ||
|
|
907e55e6d7 | ||
|
|
874be5bca8 | ||
|
|
f49907e5e5 | ||
|
|
da197340ec | ||
|
|
cf6e5b5dd5 | ||
|
|
917cd322fc | ||
|
|
bc616ba118 | ||
|
|
ea26648619 | ||
|
|
c2f1aec8b6 | ||
|
|
c005b546ba | ||
|
|
783ceec8de | ||
|
|
b1ccfa85ba | ||
|
|
7e6d03fd53 | ||
|
|
dd0e1279c4 | ||
|
|
1b3e676b30 | ||
|
|
a4582bb18a | ||
|
|
25e99725d2 | ||
|
|
da011cd302 | ||
|
|
53010751ee | ||
|
|
19401b61cb | ||
|
|
82271f1c17 | ||
|
|
a74d0ecf8d | ||
|
|
7ee4205f8a | ||
|
|
9aef043344 | ||
|
|
4dbc673719 | ||
|
|
d44cecf21f | ||
|
|
3c0ea8f40d | ||
|
|
06b806532e | ||
|
|
1983864294 | ||
|
|
c523a274e1 | ||
|
|
03563eb1f2 | ||
|
|
2f14d18126 | ||
|
|
d1309a82ec | ||
|
|
2a2607eb4b | ||
|
|
e9b5221f05 | ||
|
|
bb71a28375 | ||
|
|
af3e87b0e3 | ||
|
|
4728a59c33 | ||
|
|
f9a9c13dc5 | ||
|
|
1fa6abccf7 | ||
|
|
9aa68b8ee6 | ||
|
|
f90cfe221f | ||
|
|
b70a5d0053 | ||
|
|
9c4ba4da80 | ||
|
|
591dc1ba3c | ||
|
|
841afc5a33 | ||
|
|
3a2e3c7895 | ||
|
|
5e035dc239 | ||
|
|
2761cc23b0 | ||
|
|
cf00fefa6b | ||
|
|
039799083d | ||
|
|
f6f53f9729 | ||
|
|
219695f9ae | ||
|
|
34c189b3ed | ||
|
|
4a704bc257 | ||
|
|
2dc3ca51a3 | ||
|
|
b2564cfabb | ||
|
|
d0734ed5fe | ||
|
|
6ddc613b5a | ||
|
|
3373ff417f | ||
|
|
9bee8afe95 | ||
|
|
f79da2b692 | ||
|
|
fedb1ee858 | ||
|
|
50e11ec035 | ||
|
|
233442936a | ||
|
|
b68ae81782 | ||
|
|
835234885b | ||
|
|
6995155392 | ||
|
|
2d7d127266 | ||
|
|
ee6cbf922e | ||
|
|
2c2ba89434 | ||
|
|
68b23dc25a | ||
|
|
181e8b47fd | ||
|
|
8004643768 | ||
|
|
681b2f207a | ||
|
|
8ba1fa5e18 | ||
|
|
3b4fe169d0 | ||
|
|
8ea7cde8e6 | ||
|
|
db23b2b016 | ||
|
|
e8b0fb3e6c | ||
|
|
b47079e4c8 | ||
|
|
bae2d84d81 | ||
|
|
73a57c86cb | ||
|
|
50a2ce1470 | ||
|
|
429a5c764f | ||
|
|
6fbfdf0323 | ||
|
|
7822b2c740 | ||
|
|
0014890881 | ||
|
|
8e909cf3b2 | ||
|
|
f7be9e9143 | ||
|
|
e44fee2165 | ||
|
|
940514c97d | ||
|
|
4839c64878 | ||
|
|
8c660d8499 | ||
|
|
2d0c7bdcea | ||
|
|
9ecdb4fdb6 | ||
|
|
b03b387707 | ||
|
|
3df827cbeb | ||
|
|
0af7e1da9f | ||
|
|
3531c338de | ||
|
|
d44724d784 | ||
|
|
2d67a7df23 | ||
|
|
38db36602c | ||
|
|
2e1264173e | ||
|
|
365918bb94 | ||
|
|
db7c471ec5 | ||
|
|
b67ac5e48b | ||
|
|
0f72db8e9c | ||
|
|
3bff41f3d9 | ||
|
|
b02b031d97 | ||
|
|
ecda811835 | ||
|
|
0b573e3825 | ||
|
|
dc42ac6fce | ||
|
|
f345e1e33b | ||
|
|
5ffa9bc732 | ||
|
|
343b02bf19 | ||
|
|
c8786ca00f | ||
|
|
2732161dd2 | ||
|
|
8db9c438c4 | ||
|
|
50a32d75d3 | ||
|
|
d32c3c7866 | ||
|
|
a8390a0f2a | ||
|
|
9ad0e3e2c0 | ||
|
|
03b08b7c71 | ||
|
|
aa30072848 | ||
|
|
528e7ea61c | ||
|
|
89abea0706 | ||
|
|
3c45752ce1 | ||
|
|
b6cf6158f8 | ||
|
|
b4eaa6a849 | ||
|
|
86c83e8b11 | ||
|
|
a235e536da | ||
|
|
56fe5e6345 | ||
|
|
5d9327d3d3 | ||
|
|
72daf55e4e | ||
|
|
e5d651365b | ||
|
|
e1a0a69a2a | ||
|
|
a9e5e72ccc | ||
|
|
1d5f73e2ab | ||
|
|
0f81740562 | ||
|
|
0adb904c86 | ||
|
|
92f8611043 | ||
|
|
c24ef878c4 | ||
|
|
ba01510c88 | ||
|
|
47d69857ba | ||
|
|
8d812fbd2c | ||
|
|
790d353b69 | ||
|
|
495db60a84 | ||
|
|
ce117cca24 | ||
|
|
547a7b7c7c | ||
|
|
b6255244ef | ||
|
|
04e7088b7d | ||
|
|
1aefd4a3bb | ||
|
|
34075000a8 | ||
|
|
b24d937152 | ||
|
|
b821724e59 | ||
|
|
9a1f7311a6 | ||
|
|
b642d42229 | ||
|
|
ab265fae62 | ||
|
|
44b0c6c8fd | ||
|
|
ae16bb3525 | ||
|
|
7bf5353f05 | ||
|
|
64a3440969 | ||
|
|
6a02d4df6c | ||
|
|
4f84ad6c91 | ||
|
|
3fe5676f44 | ||
|
|
bc11e75d79 | ||
|
|
87f4d86587 | ||
|
|
de06c930ea | ||
|
|
dd056f4c05 | ||
|
|
484f320b7f | ||
|
|
bf7b38a02e | ||
|
|
bf534f9c79 | ||
|
|
bf94612e2e | ||
|
|
16fe5f07e3 | ||
|
|
c85ef3c659 | ||
|
|
e8910d7e64 | ||
|
|
817d159fd9 | ||
|
|
674ce32a30 | ||
|
|
8f85016d8c | ||
|
|
ee7ca45b91 | ||
|
|
51af1590ad | ||
|
|
b42b04d769 | ||
|
|
ffaa59cf88 | ||
|
|
109170627f | ||
|
|
553abf90cb | ||
|
|
eccdee7446 | ||
|
|
b2d98948d2 | ||
|
|
4bcb8104de | ||
|
|
b7c82b4831 | ||
|
|
626aebef4d | ||
|
|
32420fecd9 | ||
|
|
c318803ecd | ||
|
|
adf37f6513 | ||
|
|
0dcc0ff0ac | ||
|
|
f30749d752 | ||
|
|
af459aa93a | ||
|
|
e190cf3393 | ||
|
|
9f6c14ced0 | ||
|
|
320576f288 | ||
|
|
7366d9ce98 | ||
|
|
6da37a6cbb | ||
|
|
140e47d842 | ||
|
|
44128d8801 | ||
|
|
046dbc5559 | ||
|
|
f46b05dca8 | ||
|
|
8844320fc5 | ||
|
|
9f1aeb2b58 | ||
|
|
89ba321890 | ||
|
|
0ede195a5a | ||
|
|
c305ed5627 | ||
|
|
e58989f021 | ||
|
|
f88a3169c4 | ||
|
|
8aa9de05f9 | ||
|
|
e6ee50a6ea | ||
|
|
802988cb77 | ||
|
|
3afe00e208 | ||
|
|
0db238b023 | ||
|
|
3c07bbaf38 | ||
|
|
951d4d7251 | ||
|
|
dc789ad9c0 | ||
|
|
c5cbc07b2b | ||
|
|
101212de01 | ||
|
|
6a977d6484 | ||
|
|
4ed28c4d6c | ||
|
|
136d101588 | ||
|
|
e55a211269 | ||
|
|
89e01ec6e2 | ||
|
|
06c9e3437a | ||
|
|
a24d058ee5 | ||
|
|
176c692e46 | ||
|
|
17505711d7 | ||
|
|
e359347ae7 | ||
|
|
51dbf712f7 | ||
|
|
30bd7abec1 | ||
|
|
370af944d8 | ||
|
|
ccdd30f372 | ||
|
|
157aec934d | ||
|
|
a6d8bfd874 | ||
|
|
ed8dc492c5 | ||
|
|
87aee3764b | ||
|
|
692f01885f | ||
|
|
8b4537f61c | ||
|
|
74abc5d150 | ||
|
|
968dd67bda | ||
|
|
08b38f2789 | ||
|
|
8c826ccc3f | ||
|
|
f76fa5b13a | ||
|
|
2cc42fd3e0 | ||
|
|
4eabfad002 | ||
|
|
fa6304f244 | ||
|
|
27b0a6e47e | ||
|
|
6aca5a7b2b | ||
|
|
c0b9fc96e7 | ||
|
|
84b0defe3b | ||
|
|
49e6f89015 | ||
|
|
e9abe29fc3 | ||
|
|
4c26a76cd4 | ||
|
|
ce9bd51a92 | ||
|
|
f6dad03f7f | ||
|
|
0ee1ca5086 | ||
|
|
088c370d0e | ||
|
|
db934fb96b | ||
|
|
ef3bae0c0f | ||
|
|
bcf7d5f6ae | ||
|
|
bfaee4533c | ||
|
|
cf24c2042b | ||
|
|
be9a52c221 | ||
|
|
142098c4e7 | ||
|
|
b4da761c5b | ||
|
|
48d1dd14c1 | ||
|
|
3243602653 | ||
|
|
c2cfbd5583 | ||
|
|
6105152926 | ||
|
|
7ae073dec4 | ||
|
|
d6933a05a7 | ||
|
|
aa53700ffd | ||
|
|
6deec5758d | ||
|
|
ef68d2b421 | ||
|
|
496106476b | ||
|
|
7dd48c6da6 | ||
|
|
6435f55d0b | ||
|
|
a5c7494ba2 | ||
|
|
ed0e7cc615 | ||
|
|
529a08dd01 | ||
|
|
3a3e4159d9 | ||
|
|
fbbcf5de7f | ||
|
|
101f0afa07 | ||
|
|
298ef0547b | ||
|
|
b948608ce3 | ||
|
|
ec16bf81ed | ||
|
|
c6b63d1d0c | ||
|
|
b7397bccb0 | ||
|
|
95606ed251 | ||
|
|
5e3a89a654 | ||
|
|
2a0a9fd205 | ||
|
|
34e6a3bb72 | ||
|
|
6b44ca625f | ||
|
|
2082bb4662 | ||
|
|
5c5161ed3f | ||
|
|
3713a06750 | ||
|
|
a897d517cf | ||
|
|
df9c022563 | ||
|
|
3796b79872 | ||
|
|
f74eab450f | ||
|
|
493066df76 | ||
|
|
b89b5ea108 | ||
|
|
3dcfe1812d | ||
|
|
7b9d084cde | ||
|
|
f80ec5e6c3 | ||
|
|
773e482d56 | ||
|
|
6a1910ec9d | ||
|
|
a53b8fd884 | ||
|
|
5d9bb0ff19 | ||
|
|
b27c3c0940 | ||
|
|
e8f05ac324 | ||
|
|
279c6c3514 | ||
|
|
61a6a0f4d9 | ||
|
|
9e84456b46 | ||
|
|
3d65080e28 | ||
|
|
2cc8551386 | ||
|
|
2140757d5b | ||
|
|
f5226a6a7d | ||
|
|
6addb35131 | ||
|
|
ebba76cb92 | ||
|
|
e3c6d81a23 | ||
|
|
b35ecbf79c | ||
|
|
3e3387e4bd | ||
|
|
4b8c7fdaf3 | ||
|
|
07dcf40d13 | ||
|
|
1962e9265f | ||
|
|
92b692a958 | ||
|
|
a335813b42 | ||
|
|
7579cf6636 | ||
|
|
25316d8dcf | ||
|
|
b87a28521f | ||
|
|
e67d4e2e4f | ||
|
|
ea8295bb6b | ||
|
|
3dfa92e091 | ||
|
|
9a9907b264 | ||
|
|
e6b711b4b4 | ||
|
|
3375222582 | ||
|
|
b6a9284cbf | ||
|
|
7462c2195d | ||
|
|
01b4d0240b | ||
|
|
663fed681d | ||
|
|
16d02b5507 | ||
|
|
73ba6ff27a | ||
|
|
d2b0bf0927 | ||
|
|
e653beee09 | ||
|
|
3491c9b24b | ||
|
|
e328c0fb6e | ||
|
|
fdf1f34365 | ||
|
|
9fe22338a9 | ||
|
|
80ac4a55d3 | ||
|
|
c600009722 | ||
|
|
256e7b0f09 | ||
|
|
ce72432039 | ||
|
|
b3689fe297 | ||
|
|
0b58690ddd | ||
|
|
e598ab32cf | ||
|
|
001892dcee | ||
|
|
a89e1202e1 | ||
|
|
f9c8fb727c | ||
|
|
4a6e8c733f | ||
|
|
de2ac24382 | ||
|
|
e7aa01c547 | ||
|
|
72b060e7ae | ||
|
|
2a99a79d37 | ||
|
|
d1e6fac1b0 | ||
|
|
63802c98a3 | ||
|
|
3bd8520e7c | ||
|
|
662c15da93 | ||
|
|
dd0fd325b8 | ||
|
|
b772b03ef2 | ||
|
|
eda554eb8f | ||
|
|
2936bd1e5a | ||
|
|
df2f86f577 | ||
|
|
b9d1899cf2 | ||
|
|
b01497e391 | ||
|
|
af38681293 | ||
|
|
022565e176 | ||
|
|
00863d6917 | ||
|
|
e345b3a479 | ||
|
|
fe32723ad5 | ||
|
|
b9d562d8f0 | ||
|
|
83bd9499fd | ||
|
|
d3911792ec | ||
|
|
5c49715298 | ||
|
|
2b3feb40ad | ||
|
|
f7dbeaef84 | ||
|
|
31472e3206 | ||
|
|
2e88a8e0c3 | ||
|
|
224d762bc6 | ||
|
|
2fa1299391 | ||
|
|
dad459694c | ||
|
|
c2fa24c956 | ||
|
|
e55ea3bd0c | ||
|
|
ae9e6c4a56 | ||
|
|
2a5bb034ab | ||
|
|
49f190a471 | ||
|
|
3f5a870877 | ||
|
|
fd3cf1eb9f | ||
|
|
9a49979dcb | ||
|
|
6a11099b50 | ||
|
|
5c5c57739a | ||
|
|
8e663391b9 | ||
|
|
85ccbd1382 | ||
|
|
542ee57f93 | ||
|
|
f3fa854074 | ||
|
|
714feca455 | ||
|
|
f0db66d8d8 | ||
|
|
cd74236462 | ||
|
|
955c95e8a8 | ||
|
|
ebdacc013a | ||
|
|
d08c2ecd74 | ||
|
|
ef9b851309 | ||
|
|
083139efa7 | ||
|
|
bd11f7da50 | ||
|
|
472e9268a1 | ||
|
|
e6ce764084 | ||
|
|
b8fcd11a62 | ||
|
|
f35232cc52 | ||
|
|
615b89be3a | ||
|
|
ffa4ecd673 | ||
|
|
5dfb28f2de | ||
|
|
25d24ddef0 | ||
|
|
dcc9aba4a8 | ||
|
|
9977c009e0 | ||
|
|
2fd45f9e31 | ||
|
|
4f7eb88a13 | ||
|
|
1455f04261 | ||
|
|
9f9e4d6d6e | ||
|
|
3ab45a57e1 | ||
|
|
3d5485072c | ||
|
|
8c2083955f | ||
|
|
450c6a758f | ||
|
|
24f3e1e758 | ||
|
|
b9103abe96 | ||
|
|
a7f8793454 | ||
|
|
7b28981e9c | ||
|
|
ca41ca955c | ||
|
|
dd086e62cb | ||
|
|
3e2d40d248 | ||
|
|
bb08ec2435 | ||
|
|
0677c24887 | ||
|
|
29277236ca | ||
|
|
7579957fdf | ||
|
|
257d0d313d | ||
|
|
4b970ef770 | ||
|
|
6ec35e37ab | ||
|
|
72f461f0d2 | ||
|
|
32c7f52882 | ||
|
|
4943b3ad20 | ||
|
|
7eccc04e98 | ||
|
|
88e65c36bf | ||
|
|
5e13d86778 | ||
|
|
0e89f8bc4d | ||
|
|
a9a57822ef | ||
|
|
df25b4e609 | ||
|
|
b3ca402842 | ||
|
|
a52d7aee73 | ||
|
|
7214ff001a | ||
|
|
0e731c3e8a | ||
|
|
4f858cf7d6 | ||
|
|
3e5f9c51f5 | ||
|
|
8784cae01c | ||
|
|
81a3da550f | ||
|
|
7fc06d0750 | ||
|
|
1e0ebe9b7f | ||
|
|
73b7abd894 | ||
|
|
132f7253f6 | ||
|
|
827d581f1a | ||
|
|
9a315c241c | ||
|
|
5f9ddd969e | ||
|
|
cacf7f9920 | ||
|
|
d642729158 | ||
|
|
6b339b636a | ||
|
|
85468761d3 | ||
|
|
4cabeb2e99 | ||
|
|
f7d89b7659 | ||
|
|
6b5c527a3e | ||
|
|
57cbab10ac | ||
|
|
f50c2d3049 | ||
|
|
9957bd9b8a | ||
|
|
e6767dc3f9 | ||
|
|
136935d4f9 | ||
|
|
d654b63bca | ||
|
|
3ba4dee8a7 | ||
|
|
d4e0a50dbb | ||
|
|
3d4e35d942 | ||
|
|
5dcdbcdb53 | ||
|
|
d3a6ad1105 | ||
|
|
f233ca3284 | ||
|
|
f4914d9461 | ||
|
|
433aac37da | ||
|
|
fa34f5483e | ||
|
|
defa748497 | ||
|
|
c70b78d0c7 | ||
|
|
570b0c3e6a | ||
|
|
62a8d9b0f6 | ||
|
|
97e1e4ce53 | ||
|
|
b5655b530f | ||
|
|
b2c2530a1a | ||
|
|
c0a1139773 | ||
|
|
e452f8e006 | ||
|
|
7de625e004 | ||
|
|
8106296f6c | ||
|
|
7df901756f | ||
|
|
b41984e153 | ||
|
|
376c7f2545 | ||
|
|
d5df64f949 | ||
|
|
c9b2a66114 | ||
|
|
530917b85e | ||
|
|
b118e61741 | ||
|
|
635df4dd09 | ||
|
|
dccdc6290e | ||
|
|
573c461aa2 | ||
|
|
5a76eb28bf | ||
|
|
48028a8e09 | ||
|
|
1917531c54 | ||
|
|
a9d2bc08b7 | ||
|
|
e4ddd6ad8c | ||
|
|
aaf318de03 | ||
|
|
3c80cc0670 | ||
|
|
a01d89db30 | ||
|
|
26090084ff | ||
|
|
ab0ce56033 | ||
|
|
527854bbed | ||
|
|
f9de846ad5 | ||
|
|
57fbb15685 | ||
|
|
8986107256 | ||
|
|
2326d409a4 | ||
|
|
bcbccd5cb1 | ||
|
|
d47373e3b5 | ||
|
|
9ffcfa7f41 | ||
|
|
9a7ff92b5b | ||
|
|
a53f2ace64 | ||
|
|
280f6c4c9a | ||
|
|
cc33e8fa1b | ||
|
|
52b649b1c4 | ||
|
|
4194412540 | ||
|
|
9f2f0e29be | ||
|
|
e43107ccf7 | ||
|
|
c2ebadd87a | ||
|
|
3521e7b0e7 | ||
|
|
9d0aad933e | ||
|
|
3bd3df8fb2 | ||
|
|
71e1f5ae9d | ||
|
|
36c3d354cd | ||
|
|
9f0af1ba86 | ||
|
|
f74e2262dc | ||
|
|
2971144d7f | ||
|
|
2e2723427b | ||
|
|
ee6127ffcc | ||
|
|
dcd6fa6958 | ||
|
|
7442216962 | ||
|
|
bb0c781daa | ||
|
|
56e5a5ac53 | ||
|
|
419fa4906d | ||
|
|
16e7617b1e | ||
|
|
2ca5798f89 | ||
|
|
a08ddc1b8c | ||
|
|
83153e2777 | ||
|
|
5b72b93248 | ||
|
|
c7d911451c | ||
|
|
c400cc317d | ||
|
|
50784c9958 | ||
|
|
c4a5d406c7 | ||
|
|
d933eef8cc | ||
|
|
ce84069429 | ||
|
|
8140e56cbc | ||
|
|
de40e0e22a | ||
|
|
44ccd111b2 | ||
|
|
7ac0889b78 | ||
|
|
c4a5996b21 | ||
|
|
9eaca7bcb2 | ||
|
|
90629aecb4 | ||
|
|
cb6a75de3b | ||
|
|
9bb066596c | ||
|
|
a0b6610b7d | ||
|
|
c4e06f90f8 | ||
|
|
60a525f0b8 | ||
|
|
fe6067eeed | ||
|
|
f72294e2b9 | ||
|
|
409b98dd39 | ||
|
|
0168b882a8 | ||
|
|
9aa83354bd | ||
|
|
e311d82b0a | ||
|
|
531e526d33 | ||
|
|
a2a6c49ae0 | ||
|
|
15ae6d91d9 | ||
|
|
f3ba3706ba | ||
|
|
0ab6ea2e26 | ||
|
|
05d17f329f | ||
|
|
c7e9b67698 | ||
|
|
f654620816 | ||
|
|
5bd4885241 | ||
|
|
91643b06f2 | ||
|
|
d35ec1b7c4 | ||
|
|
d2609d11ab | ||
|
|
014d3499f0 | ||
|
|
edd8a412b5 | ||
|
|
7c57eef9f7 | ||
|
|
8df4d5d808 | ||
|
|
98b0fd4a4f | ||
|
|
3e8c9acb02 | ||
|
|
d829dd01de | ||
|
|
41803d21c9 | ||
|
|
b58b66178c | ||
|
|
7c40cf1fb7 | ||
|
|
a923c62dac | ||
|
|
00d9c91a53 | ||
|
|
6fa101c699 | ||
|
|
1372833dd8 | ||
|
|
7d57750d73 | ||
|
|
28c06706b4 | ||
|
|
18146d2ef7 | ||
|
|
52c65afce6 | ||
|
|
8f76c9b09d | ||
|
|
fffc94fbdd | ||
|
|
1f398a8b4c | ||
|
|
98f4010cb7 | ||
|
|
d34e8940a7 | ||
|
|
bbf3c33a89 | ||
|
|
f69fee98df | ||
|
|
f9b717965f | ||
|
|
01ad439d0a | ||
|
|
29ad8d9dbc | ||
|
|
6ffad11cba | ||
|
|
dc62840299 | ||
|
|
ae9c669ca3 | ||
|
|
cd4b9b3be6 | ||
|
|
e7fc5719e3 | ||
|
|
29350e0782 | ||
|
|
2c9821e670 | ||
|
|
a61050f8fa | ||
|
|
747d25b439 | ||
|
|
cafd36b85d | ||
|
|
d7450d9699 | ||
|
|
4224a02d16 | ||
|
|
82bf21d54b | ||
|
|
e2672d5d94 | ||
|
|
8d30ccf6fe | ||
|
|
be995930a0 | ||
|
|
fbd52c5a85 | ||
|
|
10e7a7fd27 | ||
|
|
92a0ec03b1 | ||
|
|
83a07f7ee4 | ||
|
|
32628be87b | ||
|
|
102e8964ee | ||
|
|
742ea9f245 | ||
|
|
25f843331c | ||
|
|
c6680d1f03 | ||
|
|
f5279fc91e | ||
|
|
ba50376c85 | ||
|
|
dd1395f3f4 | ||
|
|
450df2ce6a | ||
|
|
f9e384a87d | ||
|
|
81484b7ae3 | ||
|
|
a14809a96a | ||
|
|
1753b01a1b | ||
|
|
86e7924675 | ||
|
|
e0daa923c6 | ||
|
|
32c67d5f62 | ||
|
|
7580706bd0 | ||
|
|
68da5085ea | ||
|
|
55d0c0f66b | ||
|
|
5d35d56837 | ||
|
|
a9b150960e | ||
|
|
72a9e81ba1 | ||
|
|
0032a51051 | ||
|
|
faa9102815 | ||
|
|
525ce59b8b | ||
|
|
00055a9f32 | ||
|
|
3da62e366f | ||
|
|
66ba0fe18e | ||
|
|
cc7a7386be | ||
|
|
f1a89f1001 | ||
|
|
83ad5538b0 | ||
|
|
8e1497cf71 | ||
|
|
9b4da63b0d | ||
|
|
1fad5adbd2 | ||
|
|
72497154a7 | ||
|
|
5dcab4fe9e | ||
|
|
d592f5eb62 | ||
|
|
d85cbca8ea | ||
|
|
be92ae76d6 | ||
|
|
3cfedd4ae9 | ||
|
|
cd88acf337 | ||
|
|
adf628b3b0 | ||
|
|
bbb945283b | ||
|
|
10b7691313 | ||
|
|
1e93556f8e | ||
|
|
77bfb852e0 | ||
|
|
abeb0ad82f | ||
|
|
722304c4a1 | ||
|
|
9e5ea8c052 | ||
|
|
e6dc46a270 | ||
|
|
cf0fffcc3b | ||
|
|
64835b0de9 | ||
|
|
ca3ae925d1 | ||
|
|
245e17ed42 | ||
|
|
22605323c1 | ||
|
|
ca0e8f93f9 | ||
|
|
8f763f9c5c | ||
|
|
1e8e619762 | ||
|
|
5d3d5b4c72 | ||
|
|
81029b203e | ||
|
|
1fbfb3970d | ||
|
|
aa9e590574 | ||
|
|
495ef70d41 | ||
|
|
8d45bf6ee9 | ||
|
|
5ea7e397c6 | ||
|
|
70af77f06e | ||
|
|
21da8f0274 | ||
|
|
9be2b578a2 | ||
|
|
bcbc640840 | ||
|
|
a569240444 | ||
|
|
f071b9c4f2 | ||
|
|
681f116733 | ||
|
|
b1bfa713e2 | ||
|
|
8133bf1916 | ||
|
|
7fc61cdad3 | ||
|
|
0f926c96c8 | ||
|
|
557409ea72 | ||
|
|
f0a847b135 | ||
|
|
5181b271bc | ||
|
|
38fe00fbe0 | ||
|
|
be100b24d1 | ||
|
|
0ef338b1e8 | ||
|
|
12130f8601 | ||
|
|
dfe6c9e8e7 | ||
|
|
cfd4d18c62 | ||
|
|
7ee60c8986 | ||
|
|
0fee24734d | ||
|
|
4b7895c3ab | ||
|
|
63610a324c | ||
|
|
7a72daf3ec | ||
|
|
f33acd67ec | ||
|
|
9a5ac036d6 | ||
|
|
e0d8094268 | ||
|
|
1d5648f882 | ||
|
|
d528093510 | ||
|
|
738a11d96f | ||
|
|
01744889fb | ||
|
|
f5c4362f0d | ||
|
|
268dd4d469 | ||
|
|
41c207af14 | ||
|
|
513b7ecd78 | ||
|
|
83fb4663f6 | ||
|
|
7e88993b5c | ||
|
|
6e6b7f37b2 | ||
|
|
a1152446d9 | ||
|
|
3eab9b30a1 | ||
|
|
573587b894 | ||
|
|
adfb395492 | ||
|
|
b4b4f09287 | ||
|
|
31c80ff07b | ||
|
|
d20e94b422 | ||
|
|
1e7fefbde9 | ||
|
|
42f68a1109 | ||
|
|
f47c704e29 | ||
|
|
be3cfd8d2d | ||
|
|
d6ded9e64b | ||
|
|
6b0704ec76 | ||
|
|
a896ae69d0 | ||
|
|
9ba4fe2d0f | ||
|
|
29b904998e | ||
|
|
bf422cb0b2 | ||
|
|
bf87c3e3f1 | ||
|
|
b96c6bd324 | ||
|
|
0293318b59 | ||
|
|
38588b8204 | ||
|
|
f2d22e6b7f | ||
|
|
45848306bc | ||
|
|
b160b25d7d | ||
|
|
d1e6d533fc | ||
|
|
ee168ed5e2 | ||
|
|
6c8e3d88bd | ||
|
|
77b2e416c1 | ||
|
|
e02eefdc8e | ||
|
|
fd4f5ec574 | ||
|
|
b327b38113 | ||
|
|
76ad662f56 | ||
|
|
4ad3c397b6 | ||
|
|
75d2b46c7a | ||
|
|
a7659a0c2e | ||
|
|
e3a740f66a | ||
|
|
af281481d5 | ||
|
|
5f6758554d | ||
|
|
2b2a8c1d2e | ||
|
|
156f5aec91 | ||
|
|
9045e5aa90 | ||
|
|
5ca9d2f1b1 | ||
|
|
6cb5bcfb0c | ||
|
|
ffaff7c356 | ||
|
|
130fc4996f | ||
|
|
a95141048d | ||
|
|
2d82382f34 | ||
|
|
6afd975913 | ||
|
|
0df0eb104c | ||
|
|
f1c5d3605c | ||
|
|
afed289647 | ||
|
|
22fb1fb8c9 | ||
|
|
5809d4efca | ||
|
|
332e215c85 | ||
|
|
9eefbe9fb9 | ||
|
|
3fa86d3236 | ||
|
|
f0e125df08 | ||
|
|
8bf7d0efd4 | ||
|
|
8a71dfa591 | ||
|
|
928dee677f | ||
|
|
bf5500eb19 | ||
|
|
a5efb1b4b6 | ||
|
|
5aa77a67a8 | ||
|
|
c5c22f8dc9 | ||
|
|
ad3ae5e6b1 | ||
|
|
ed029ecb01 | ||
|
|
ff45c64a22 | ||
|
|
c953091e8d | ||
|
|
fd30ab7168 | ||
|
|
dca3dddba0 | ||
|
|
41eb4c54a4 | ||
|
|
15a2333010 | ||
|
|
1061d2867f | ||
|
|
64ba1f1ea1 | ||
|
|
196cc664c8 | ||
|
|
1d871d4d68 | ||
|
|
89475a9838 | ||
|
|
52d335cbfd | ||
|
|
333ca4f36a | ||
|
|
d2e18c5400 | ||
|
|
f04cc92b44 | ||
|
|
fa3a048a6c | ||
|
|
6200034dd0 | ||
|
|
9a25d82c48 | ||
|
|
95e0d3953e | ||
|
|
fb91da4b69 | ||
|
|
74fcd2df7b | ||
|
|
1a88a08454 | ||
|
|
688cf579d6 | ||
|
|
ba9ba5f55b | ||
|
|
8341733dc2 | ||
|
|
54f7a0f20e | ||
|
|
b2382d91d6 | ||
|
|
b729780ac1 | ||
|
|
6f4c516d0c | ||
|
|
b9bdcba4f9 | ||
|
|
bd69863799 | ||
|
|
375fdc444e | ||
|
|
e832592b35 | ||
|
|
a15d4e097e | ||
|
|
2597d2455c | ||
|
|
16e817d42c | ||
|
|
c6d39a9e60 | ||
|
|
b860f1a170 | ||
|
|
0cebd0b7f3 | ||
|
|
91742c1b80 | ||
|
|
64bc79de38 | ||
|
|
55239be477 | ||
|
|
0feebb662f | ||
|
|
1699f9d141 | ||
|
|
7ac9df9496 | ||
|
|
2074818cd0 | ||
|
|
ecb3eaf541 | ||
|
|
345455da4b | ||
|
|
1937fddbfd | ||
|
|
e7534bbcbd | ||
|
|
305192eae6 | ||
|
|
0541aa3373 | ||
|
|
81fe8b7435 | ||
|
|
4ca26b4e32 | ||
|
|
d348a67ba8 | ||
|
|
e2f03ee8d6 | ||
|
|
0e64c46064 | ||
|
|
987a4125ae | ||
|
|
a7e4c1a5a5 | ||
|
|
6d66982d35 | ||
|
|
7c78e05649 | ||
|
|
61383ef294 | ||
|
|
469d4ec566 | ||
|
|
418f1146b7 | ||
|
|
170c8885d0 | ||
|
|
e3f04f4ab8 | ||
|
|
791b8142bd | ||
|
|
ffff89ae96 | ||
|
|
3c8b0f6308 | ||
|
|
a01aa8c335 | ||
|
|
1dc1e6f081 | ||
|
|
b86447cdbf | ||
|
|
bf1e805269 | ||
|
|
0b0d551730 | ||
|
|
22016d2856 | ||
|
|
6ef5d66521 | ||
|
|
bbf80408d4 | ||
|
|
f7c7614625 | ||
|
|
c5e71230e3 | ||
|
|
d61e15a02c | ||
|
|
981d286e13 | ||
|
|
f58c3e9a67 | ||
|
|
c316c381f8 | ||
|
|
066ae678f9 | ||
|
|
c3a75a5525 | ||
|
|
14257ba448 | ||
|
|
2c7e86fa97 | ||
|
|
63d7b7a471 | ||
|
|
98a882f450 | ||
|
|
868fd1ddc5 | ||
|
|
9c19819a08 | ||
|
|
62ef634bc0 | ||
|
|
f4158deb0a | ||
|
|
e61a224fc6 | ||
|
|
c83fb868e4 | ||
|
|
0a118f1740 | ||
|
|
d5d6edd2fb | ||
|
|
e17382f441 | ||
|
|
6c6fe5378f | ||
|
|
b68a31b2ee | ||
|
|
0be362e82c | ||
|
|
17a917ad00 | ||
|
|
f975fbf221 | ||
|
|
1741813003 | ||
|
|
7e7e24021b | ||
|
|
a662106228 | ||
|
|
be98a562d4 | ||
|
|
2af4692e1a | ||
|
|
b525ac18bc | ||
|
|
3fdca1ba64 | ||
|
|
9cc721bf80 | ||
|
|
d9cbd5d173 | ||
|
|
59f5cb9d35 | ||
|
|
bd020c14fb | ||
|
|
7b9f814d37 | ||
|
|
7a6fe30ee5 | ||
|
|
9910adbb40 | ||
|
|
ad6a578863 | ||
|
|
365120ed9f | ||
|
|
dbd0541ad1 | ||
|
|
7ce16856ec | ||
|
|
8fff3e4ec0 | ||
|
|
53f559a750 | ||
|
|
924fc30697 | ||
|
|
41955f8927 | ||
|
|
83689f420c | ||
|
|
1c68a0fd4b | ||
|
|
9e25db7089 | ||
|
|
7eacd54a9c | ||
|
|
be44519431 | ||
|
|
66f35b2720 | ||
|
|
23902d2465 | ||
|
|
1c3717edef | ||
|
|
17fa0f3eb0 | ||
|
|
247e19f1e3 | ||
|
|
54fae816d2 | ||
|
|
3b70a2cc2d | ||
|
|
acd4a16dcb | ||
|
|
550c84c367 | ||
|
|
e35e0be251 | ||
|
|
db5ada2cfb | ||
|
|
643f452064 | ||
|
|
bbda6c6785 | ||
|
|
e6449cd818 | ||
|
|
708527db77 | ||
|
|
b1aa6c5699 | ||
|
|
eeaa1a7f07 | ||
|
|
52b7183935 | ||
|
|
386833ae64 | ||
|
|
d4a48ce585 | ||
|
|
4931cdd272 | ||
|
|
d7933dc73f | ||
|
|
9a1048cc17 | ||
|
|
a8fd0736b3 | ||
|
|
10d884a837 | ||
|
|
52b28c79c7 | ||
|
|
8a36e55813 | ||
|
|
5103bb2697 | ||
|
|
c6a07714ba | ||
|
|
48c3500033 | ||
|
|
d155e75a5d | ||
|
|
fa481129a9 | ||
|
|
3c1402dab7 | ||
|
|
a7f4189bd3 | ||
|
|
64ed13de7c | ||
|
|
21394eb29e | ||
|
|
fbb8c3613f | ||
|
|
7778da80d5 | ||
|
|
e791e102d5 | ||
|
|
deb73450c3 | ||
|
|
cc9d1bf4f2 | ||
|
|
b025ef8b22 | ||
|
|
7bda0f400a | ||
|
|
3b7a113a11 | ||
|
|
ee636bf88c | ||
|
|
52144d8e52 | ||
|
|
513c686dea | ||
|
|
29cc2429ae | ||
|
|
31219e9ac1 | ||
|
|
3beab5a9e1 | ||
|
|
7558311531 | ||
|
|
106d08a899 | ||
|
|
02f203475d | ||
|
|
b4460eddf7 | ||
|
|
90e06116d1 | ||
|
|
1e4397ed7b | ||
|
|
e9cc2d0e52 | ||
|
|
376847b489 | ||
|
|
5d61b83c50 | ||
|
|
561b3a594b | ||
|
|
2d0acb68b1 | ||
|
|
919c6c40e2 | ||
|
|
120e9da1c9 | ||
|
|
47c6454c00 | ||
|
|
02f49cd392 | ||
|
|
8117ddb6ce | ||
|
|
d372fa8e6e | ||
|
|
c3ed865a3a | ||
|
|
96c137ec4b | ||
|
|
c5cd683aa5 | ||
|
|
c5cdabaa3a | ||
|
|
d19be3f2cb | ||
|
|
a9f55aa64f | ||
|
|
dfb0f79c92 | ||
|
|
4a59438c0c | ||
|
|
f35710d652 | ||
|
|
c19a532f3e | ||
|
|
be6b278b3c | ||
|
|
78c16dc278 | ||
|
|
09d2839a00 | ||
|
|
d17d52436f | ||
|
|
5c522a33d0 | ||
|
|
c9cf89adeb | ||
|
|
c5c996cb7a | ||
|
|
f2ec258e7a | ||
|
|
8c29f21970 | ||
|
|
5b730d2c38 | ||
|
|
609e84a8ae | ||
|
|
7ca778f81b | ||
|
|
93b194af3b | ||
|
|
b3e1f32ffe | ||
|
|
d78b3bffeb | ||
|
|
bff5038a64 | ||
|
|
0c7fcfbcc5 | ||
|
|
9d6fc15959 | ||
|
|
5bad5e1031 | ||
|
|
f8d6ec3a8f | ||
|
|
9a3dc81630 | ||
|
|
3d9b97ccb5 | ||
|
|
2c3dbba052 | ||
|
|
907eecd030 | ||
|
|
75026bf42d | ||
|
|
d217fb33a9 | ||
|
|
8cea32d01b | ||
|
|
c8d2da0c07 | ||
|
|
a458f51b9a | ||
|
|
bd8ac2935b | ||
|
|
dd59cc1468 | ||
|
|
fd365c52cc | ||
|
|
ad7e77a067 | ||
|
|
6b9135a205 | ||
|
|
fdca5b1c60 | ||
|
|
f891b30f9f | ||
|
|
8fbd8070f2 | ||
|
|
657dec1c10 | ||
|
|
0d93dcdc45 | ||
|
|
5a50c0e1e6 | ||
|
|
ab8da89fbc | ||
|
|
c9edf47643 | ||
|
|
84328bf693 | ||
|
|
6fdbf0b48e | ||
|
|
8b1d5b3cb4 | ||
|
|
bf69d23379 | ||
|
|
a4e3031796 | ||
|
|
286e7956f2 | ||
|
|
e04b64a326 | ||
|
|
c86a99df06 | ||
|
|
3b69c4e7c1 | ||
|
|
bc5be9449d | ||
|
|
b968e59db1 | ||
|
|
fa06c4a729 | ||
|
|
81b99515cd | ||
|
|
5e6c713f9d | ||
|
|
376425cc98 | ||
|
|
38cff550e1 | ||
|
|
64781c1cca | ||
|
|
e82e85b5ea | ||
|
|
2b84a27cdc | ||
|
|
6f7f5cbabc | ||
|
|
174a8696b0 | ||
|
|
d5a27ba814 | ||
|
|
6e2e488565 | ||
|
|
7d02ef2b3e | ||
|
|
f8f2719c5d | ||
|
|
da6faaf1a5 | ||
|
|
350068d6f1 | ||
|
|
70bee4265b | ||
|
|
18ce8cf2f4 | ||
|
|
b50a55cce7 | ||
|
|
e6f0e18aed | ||
|
|
fd7daa407a | ||
|
|
0dead93606 | ||
|
|
5d6e8cf9b3 | ||
|
|
a0544e21e3 | ||
|
|
d54112d41c | ||
|
|
1a0ba40b43 | ||
|
|
5d8ca9566a | ||
|
|
834fa719b2 | ||
|
|
89bde2739a | ||
|
|
46dbc9ae62 | ||
|
|
71554fca59 | ||
|
|
1c76b5886f | ||
|
|
5007b70683 | ||
|
|
5694cbd945 | ||
|
|
eee3c34dd7 | ||
|
|
cac39ad539 | ||
|
|
1b68cdf7db | ||
|
|
845c9a0f2e | ||
|
|
24c69af942 | ||
|
|
c656bc4bb6 | ||
|
|
025b60e564 | ||
|
|
1e86964d8f | ||
|
|
61d4d7005e | ||
|
|
d0ed9faf50 | ||
|
|
8ed12170de | ||
|
|
d2ba5cbe4d | ||
|
|
6b6d3c7307 | ||
|
|
362b5b9c69 | ||
|
|
3cde12e893 | ||
|
|
d2214480f6 | ||
|
|
b8bd1a8ae6 | ||
|
|
0bfef0c2ce | ||
|
|
f2ce98fda5 | ||
|
|
5f08215571 | ||
|
|
9567a6ddf9 | ||
|
|
4416c56884 | ||
|
|
68328a9449 | ||
|
|
141f2a3f39 | ||
|
|
7bbca06033 | ||
|
|
ebb72265b9 | ||
|
|
c98f433da6 | ||
|
|
2346ef7089 | ||
|
|
8aac6474da | ||
|
|
ffcecf38c8 | ||
|
|
77342206b1 | ||
|
|
b6a44e7a7c | ||
|
|
e138d357c7 | ||
|
|
66645982e9 | ||
|
|
4347f55077 | ||
|
|
ab9d45c775 | ||
|
|
9c0c662f25 | ||
|
|
63abdb2d53 | ||
|
|
47e2693368 | ||
|
|
b909cbe666 | ||
|
|
95f5ce13ba | ||
|
|
fed1496e68 | ||
|
|
da6993730c | ||
|
|
0a1d462ace | ||
|
|
1387482db0 | ||
|
|
b7a86324dd | ||
|
|
babc5a6424 | ||
|
|
74a468383c | ||
|
|
3a48f0ff0d | ||
|
|
e26363adf6 | ||
|
|
35d97d42c5 | ||
|
|
4fa7d07500 | ||
|
|
15f428528b | ||
|
|
7fa805fe3a | ||
|
|
fd9c97a126 | ||
|
|
f081154804 | ||
|
|
866affdf45 | ||
|
|
30aee556f1 | ||
|
|
b12c18aa08 | ||
|
|
f17a47d088 | ||
|
|
d79f096749 | ||
|
|
5b82b91c6a | ||
|
|
4a6b87ac1c | ||
|
|
1bea06354e | ||
|
|
5fbd5aaf10 | ||
|
|
0290a6d918 | ||
|
|
2576c48441 | ||
|
|
eb02dd2986 | ||
|
|
d92570fa3b | ||
|
|
38c988d2a2 | ||
|
|
0927282d41 | ||
|
|
5ffd59619c | ||
|
|
a739926ad4 | ||
|
|
e41c38f41d | ||
|
|
2de05b84aa | ||
|
|
0e9bdef9ca | ||
|
|
8e70e005c1 | ||
|
|
3817dbc925 | ||
|
|
63ec669c52 | ||
|
|
afc5702796 | ||
|
|
41ec66b58a | ||
|
|
936d3ca7fc | ||
|
|
f8b4b7b74d | ||
|
|
bd865977b0 | ||
|
|
d056db5617 | ||
|
|
7685677ada | ||
|
|
eb0aa81492 | ||
|
|
dc52531f28 | ||
|
|
5a20034b9f | ||
|
|
5cd0ef0d8a | ||
|
|
4daf47bb5f | ||
|
|
3e0dbd8433 | ||
|
|
fc4d3b24f6 | ||
|
|
3a9eab55a4 | ||
|
|
546b34275d | ||
|
|
3ee4cf27d5 | ||
|
|
87da95b9a4 | ||
|
|
3368e30e15 | ||
|
|
f1ea5ad8f1 | ||
|
|
fa2d5f8492 | ||
|
|
0f2c5de161 | ||
|
|
b69937d4fd | ||
|
|
e82faacbb2 | ||
|
|
2ab5c67545 | ||
|
|
358d01b12e | ||
|
|
95460fabbb | ||
|
|
0fb882b3ad | ||
|
|
3d0382d279 | ||
|
|
59d5aa4515 | ||
|
|
2dff9f9b17 | ||
|
|
03fded672e | ||
|
|
a21c1f5329 | ||
|
|
37815ced63 | ||
|
|
b7f9b8d668 | ||
|
|
f68af78099 | ||
|
|
027abffa01 | ||
|
|
5dfba4dd5e | ||
|
|
d0ae7e9cf9 | ||
|
|
5a57e984de | ||
|
|
473f4d7c24 | ||
|
|
35bfea2dbd | ||
|
|
62cb30cb5b | ||
|
|
9d2eb6f18b | ||
|
|
d5cd57c26d | ||
|
|
37695735e0 | ||
|
|
c15625c063 | ||
|
|
cd65bd4c2a | ||
|
|
fc3fead235 | ||
|
|
2e00282560 | ||
|
|
54d740e861 | ||
|
|
478a849e8d | ||
|
|
82c5b35d07 | ||
|
|
6cdd4cba9e | ||
|
|
dda9469874 | ||
|
|
334fbdab3f | ||
|
|
a5f8e34ee6 | ||
|
|
eba54d0906 | ||
|
|
070c40a958 | ||
|
|
8d308cae5e | ||
|
|
848e9fcf99 | ||
|
|
d146776b17 | ||
|
|
7da16a7428 | ||
|
|
7b46145114 | ||
|
|
725f0f789a | ||
|
|
772a5438aa | ||
|
|
3c276b329b | ||
|
|
e2cde71831 | ||
|
|
861ee3250d | ||
|
|
5672ccfa37 | ||
|
|
65e691cda8 | ||
|
|
56cca8b529 | ||
|
|
367f2f656e | ||
|
|
7f806bd155 | ||
|
|
a70444e3c7 | ||
|
|
1a72033571 | ||
|
|
a475407c27 | ||
|
|
b602cd92a9 | ||
|
|
2878a4a524 | ||
|
|
8b1ac63343 | ||
|
|
8d1012c9fb | ||
|
|
62f2654358 | ||
|
|
e7feb4b2c5 | ||
|
|
dcc62b32a2 | ||
|
|
26eecd11b6 | ||
|
|
8d388bbd4b | ||
|
|
409635b00c | ||
|
|
17a71ddbf6 | ||
|
|
d2a86af0e2 | ||
|
|
f23dc928b2 | ||
|
|
68e11dc222 | ||
|
|
075c3ef9ca | ||
|
|
6b004a3992 | ||
|
|
3cf198538a | ||
|
|
612400944e | ||
|
|
5f22d2427e | ||
|
|
2692967b7d | ||
|
|
2ed85ab978 | ||
|
|
f843872a14 | ||
|
|
b365b9d15b | ||
|
|
938ff926c3 | ||
|
|
7a1a6354df | ||
|
|
37e9d8242b | ||
|
|
8bf03f2809 | ||
|
|
c684a5b0d0 | ||
|
|
3281461809 | ||
|
|
2cd5cf505d | ||
|
|
42334450bf | ||
|
|
410633c873 | ||
|
|
ee67baf0b4 | ||
|
|
7afa959e6c | ||
|
|
ca0db95910 | ||
|
|
9825a84880 | ||
|
|
68260f3d85 | ||
|
|
d25fcfadc1 | ||
|
|
7059c1bb31 | ||
|
|
a4ac0af6e1 | ||
|
|
205a3bea44 | ||
|
|
748a69b3bd | ||
|
|
be36c3dd0b | ||
|
|
13384ed93f | ||
|
|
92b8a36019 | ||
|
|
225786e07f | ||
|
|
8c8cf44ed6 | ||
|
|
c3e6e657c9 | ||
|
|
04185ea07b | ||
|
|
49794e05d0 | ||
|
|
b2be1a7bcc | ||
|
|
2d167c9c2e | ||
|
|
5251ba9b3f | ||
|
|
df443003e4 | ||
|
|
3719b1ed40 | ||
|
|
d4a246ea59 | ||
|
|
c77b0f5924 | ||
|
|
bb1165ecf9 | ||
|
|
93d2e8e0d5 | ||
|
|
b0db765f25 | ||
|
|
68a3786fb8 | ||
|
|
9103ba6af1 | ||
|
|
dd8e89234c | ||
|
|
bcb358cc8b | ||
|
|
f42c59669f | ||
|
|
d656860b2e | ||
|
|
30744e402a | ||
|
|
43bac6f3e6 | ||
|
|
dae4371a3f | ||
|
|
990c2f796e | ||
|
|
89c3a4f8b1 | ||
|
|
ca12884735 | ||
|
|
07e907b599 | ||
|
|
e0bdd1e0b2 | ||
|
|
595b1a3c62 | ||
|
|
236392299b | ||
|
|
418b2e7668 | ||
|
|
052694dbde | ||
|
|
d529a105c5 | ||
|
|
40d877682b | ||
|
|
5e324f19ae | ||
|
|
9d8b9cbd04 | ||
|
|
54e5180732 | ||
|
|
dbf959782f | ||
|
|
33114ca3c8 | ||
|
|
4c2aebc7c1 | ||
|
|
b51470f999 | ||
|
|
b2be5f3706 | ||
|
|
06eb347cf8 | ||
|
|
81c5c1d86a | ||
|
|
82858b7b92 | ||
|
|
b3506aec3c | ||
|
|
de6e9c6f11 | ||
|
|
d3ff1aa17a | ||
|
|
3cde6d0bff | ||
|
|
bfade31849 | ||
|
|
3a06820f1e | ||
|
|
c5f712359d | ||
|
|
c9cca85db3 | ||
|
|
07b203b719 | ||
|
|
a636c745e4 | ||
|
|
e9024312a7 | ||
|
|
edbe3c164f | ||
|
|
8991cb5a96 | ||
|
|
b4aa5aead5 | ||
|
|
873a8fd229 | ||
|
|
d0ddc58160 | ||
|
|
6eebfed609 | ||
|
|
09b7b8633e | ||
|
|
c93326d218 | ||
|
|
a03c5c0ecf | ||
|
|
0380251294 | ||
|
|
d8f857e05d | ||
|
|
7a06a2b192 | ||
|
|
771db8c3ad | ||
|
|
9a800639e6 | ||
|
|
550c7b1805 | ||
|
|
ad7c7ffa66 | ||
|
|
57978bd152 | ||
|
|
5cd72a538c | ||
|
|
d439169c63 | ||
|
|
da39e0ded6 | ||
|
|
823fae5eac | ||
|
|
4f3a7c47e3 | ||
|
|
bd8d480e07 | ||
|
|
a09c031dbe | ||
|
|
1fee94846d | ||
|
|
4fb37525d5 | ||
|
|
8f25557f20 | ||
|
|
cb47eabed9 | ||
|
|
f8823a4c5a | ||
|
|
7fdd5964cc | ||
|
|
3aadcaef0f | ||
|
|
f58d4f349b | ||
|
|
9bb8ec0b66 | ||
|
|
ec9a14d63b | ||
|
|
82a00f4d1e | ||
|
|
af97f88d0a | ||
|
|
e27351481b | ||
|
|
4c375e2d0a | ||
|
|
53cd49d4e8 | ||
|
|
d20777ed18 | ||
|
|
202e389c20 | ||
|
|
707a5b2033 |
8
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: cutls
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
custom: https://cutls.fanbox.cc
|
||||
27
.github/ISSUE_TEMPLATE/bug-report-english.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: Bug report English
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: "\U0001F41Bbug"
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Describe the bug: a clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Click on '....'
|
||||
2. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Environment**
|
||||
- OS: [e.g. macOS High Sierra , Windows 10 Pro 1903, Ubuntu 19.04]
|
||||
- Version: [e.g. Usamin (18.0.0)]
|
||||
Check at 'Application,' 'About TheDesk' at top of the window.
|
||||
- Your instance: [e.g. mastodon.social]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
27
.github/ISSUE_TEMPLATE/bug-report-japanese----------.md
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
name: Bug report Japanese(日本語のバグ報告)
|
||||
about: 迅速なバグ撲滅のために
|
||||
title: ''
|
||||
labels: "\U0001F41Bbug"
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
バグの簡単な説明を最初に入れます。
|
||||
|
||||
**再現方法**
|
||||
このようにするとバグが発生しました。
|
||||
1. '....'をクリックすると
|
||||
2. エラーが出ます
|
||||
|
||||
**本来の挙動**
|
||||
本来どのように動くのが望ましいかを記入
|
||||
|
||||
**環境**
|
||||
- OS: [例 macOS High Sierra , Windows 10 Pro 1903, Ubuntu 19.04]
|
||||
- バージョン: [例 Usamin (18.0.0)]
|
||||
TheDesk画面上部の「アプリケーション」から「TheDeskについて」で確認
|
||||
- インスタンス: [例. mastodon.social]
|
||||
|
||||
**追記**
|
||||
追記
|
||||
17
.gitignore
vendored
@@ -3,10 +3,7 @@
|
||||
*.7z
|
||||
*.exe
|
||||
TheDesk-*
|
||||
app/build
|
||||
build
|
||||
make.js
|
||||
make_js.js
|
||||
build/*
|
||||
app/.DS_Store
|
||||
.DS_Store
|
||||
.vs/*
|
||||
@@ -15,3 +12,15 @@ enq.md
|
||||
app/.tkn
|
||||
app/node_modules
|
||||
app/js/login/tkn.js
|
||||
app/view/en
|
||||
app/view/ja
|
||||
app/view/ja-KS
|
||||
app/view/de
|
||||
app/view/bg
|
||||
app/view/cs
|
||||
app/view/ps
|
||||
app/view/es-AR
|
||||
app/git
|
||||
*.code-workspace
|
||||
releasenote.md
|
||||
app/yarn-error.log
|
||||
|
||||
71
.travis.yml
@@ -1,36 +1,67 @@
|
||||
language: objective-c
|
||||
cache:
|
||||
directories:
|
||||
- node_modules
|
||||
os:
|
||||
- windows
|
||||
- linux
|
||||
- osx
|
||||
language: node_js
|
||||
env:
|
||||
- NODE_VERSION="10.15.2"
|
||||
before_install:
|
||||
- git clone https://github.com/creationix/nvm.git /tmp/.nvm
|
||||
- source /tmp/.nvm/nvm.sh
|
||||
- nvm install $NODE_VERSION
|
||||
- nvm use --delete-prefix $NODE_VERSION
|
||||
- node --version
|
||||
- YARN_GPG=no
|
||||
node_js:
|
||||
- '10.15.2'
|
||||
cache:
|
||||
yarn: true
|
||||
script: node -v
|
||||
before_deploy:
|
||||
- npm install electron-builder -g
|
||||
- yarn global add electron-builder
|
||||
- cd app
|
||||
- npm install
|
||||
- electron-builder --mac --x64 -p never
|
||||
- mv ../build/TheDesk*.dmg ../TheDesk.dmg
|
||||
- mv ../build/TheDesk*.zip ../TheDesk-darwin-x64.zip
|
||||
- VERSION=$(cat package.json | grep version | head -1 | awk -F= "{ print $2 }" | sed 's/[version:,\",]//g' | tr -d '[[:space:]]')
|
||||
- yarn install --no-lockfile --prod
|
||||
- yarn construct:store
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then mv *.dmg TheDesk-$VERSION-store.dmg;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then cd ../app;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux snap:x64 -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv *.snap TheDesk-$VERSION-store.snap;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then yarn add electron-builder;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win appx:x64 -p never ;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *.appx TheDesk-$VERSION-store.appx;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
|
||||
- yarn construct
|
||||
- if [ "$TRAVIS_OS_NAME" = "osx" ];then electron-builder --mac -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then electron-builder --linux --x64 -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then ls;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then mv thedesk-*.zip thedesk.zip;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "linux" ];then cd ../app;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --ia32 -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv TheDesk-setup.exe TheDesk-setup-ia32.exe;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv *$VERSION.exe TheDesk-ia32.exe;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then electron-builder --win --x64 -p never;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../build;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then ls;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/TheDesk-setup.exe ../build/TheDesk-setup.exe;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then mv ../build/*$VERSION.exe ../build/TheDesk.exe;else :;fi
|
||||
- if [ "$TRAVIS_OS_NAME" = "windows" ];then cd ../app;else :;fi
|
||||
- cd ../
|
||||
- ls build
|
||||
deploy:
|
||||
provider: releases
|
||||
# GitHub にリリースするための API KEY を暗号化した値
|
||||
api_key:
|
||||
secure: jndR02p5KRTtcJk18b3YsXL2cC+yzEf1AOqXdpWciF8f3lO5oY01jlxd17xdHIcK7VywSsLVZpLToSdqAoIEhJ5OxEQ/FmA3FlmbwwD6ou13gLa4VGIvsBHveCmKGjVu0Z++atIy76tZYU1SOWFWv4B0ZhnVz2ca2VZynvLgw3YNsPJH7rHO966GXgRkGYJAJ4UvLg3sj/iztVh2FSfbUj5IGO1e/JHJO63wAo1MSQtRjkutVgl/djnBLC6vbL4YHkM3Ynpkx/YQEcxwrmeY0Ra8D5yYDq4MNIDMmZahWC+k4u2eA2Cj2ifBFNxbZvTN75vLwRBp6DsTNHsiqkXrSPDBdNeet31RbwTQ6LtsK8jqmL4S/59dmLcj7uCU2WxyBLPbJdbdZWlqW2ZQvfQY8QVAYy7S3MiHQWQN0oP5wqXk89jcgR42ig/zsqFNPpXHM4mExR7l/gDLPg0j9c3XEF6sWtk3FmJN1i4+B+9kn09b6UKlV7EFPKp8XcFNrz4ZcE9/I8lKwsqLVG2jAXIk7Z9LwDRcAmK5eG348X5zwFtOY6raKIvRw2cn92bPnEI+55v8A4WANS2647GFTgxHj30D0d/sOZmJ5BS34zpdWTgE0AlKg7sOqkncjqoW5J5zCh5Ow7b3KXvEvlAts44mAag8tZTectxMP4iguXvTnv4=
|
||||
# Releases ページにアップロードするファイル
|
||||
file_glob: true
|
||||
file:
|
||||
- TheDesk.dmg
|
||||
- TheDesk-darwin-x64.zip
|
||||
- build/*
|
||||
skip_cleanup: true
|
||||
on:
|
||||
repo: cutls/TheDesk
|
||||
tags: true
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
only: "/^v?[0-9\\.]+/"
|
||||
|
||||
22
LATEST.md
@@ -1,22 +0,0 @@
|
||||
## For Astarte(kirishima.cloud), My Primary Instance
|
||||
|
||||
TheDesk :thedesk: Akane (16.1.0)
|
||||
・不具合修正(マウスオーバー,クリックに関する)
|
||||
・2.5.0に対する対応(リプ数やendorseなど)
|
||||
・軽量化を図った
|
||||
・一つのカラムをTwitter(TweetDeck)にできる機能
|
||||
・画像の保存先を変えられるように
|
||||
・インスタンス情報の拡充
|
||||
・デザイン変更
|
||||
・トゥートバーを左端に持ってこれるように
|
||||
・Windowsのネイティブ通知が復活
|
||||
|
||||
ほか
|
||||
https://thedesk.top
|
||||
:github: https://github.com/cutls/TheDesk #Desk #DeskUpdate
|
||||
|
||||
## For Other Instances
|
||||
|
||||
TheDesk :thedesk: Akane (16.0.1)
|
||||
|
||||
https://thedesk.top
|
||||
@@ -1,8 +0,0 @@
|
||||
# プライバシーポリシー
|
||||
|
||||
* TheDeskは「開発者からのお知らせ」配信のためにサーバー(thedesk.top)に常時アクセスしています。
|
||||
* 上記の接続によるユーザーの情報提供はありません。(IPアドレス等を含む)
|
||||
* thedesk.topのページにおいては、Googleアナリティクスによる解析を採用しています。
|
||||
* 配信についてAmazon Web Service CloudFrontを使用しています。CloudFrontにはアクセス解析機能がありますが、これの使用につきましては同プライバシーポリシーに則ります。
|
||||
* 接続するインスタンスのプライバシーポリシーはAPIを通じた全てのアクションに対して有効ですので、TheDeskについてもそれらに則ります。
|
||||
|
||||
158
README.md
@@ -1,110 +1,136 @@
|
||||
<img src="https://thedesk.top/img/top.png" width="300" align="left">
|
||||
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
|
||||
|
||||
# TheDesk
|
||||
|
||||
|
||||
[](https://travis-ci.org/cutls/TheDesk)
|
||||
[](https://translate.thedesk.top/project/thedesk)
|
||||
[](https://translate.thedesk.top/project/thedesk)
|
||||
[](https://bit.ly/31zqMmZ)
|
||||
[](https://github.com/cutls/TheDesk/releases)
|
||||

|
||||
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
||||
オープンソースSNSマストドン/MisskeyのWindows/Linuxクライアント
|
||||
Download:[TheDesk](https://thedesk.top)
|
||||
オープンソースSNSマストドン/MisskeyのPC向けクライアント[日本語はこちら](README_ja.md)
|
||||
|
||||
Download:[TheDesk](https://thedesk.top) [](https://status.cutls.com)
|
||||
|
||||
Contact me(bug report...):GitHub Issues, mention to [Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls) or toot with #Desk
|
||||
On GitHub Releases, `-store.*` assets are made for some application store or manager(Snapcraft, Homebrew, Microsoft Store).
|
||||
They do not check the latest version(Which you can get the latest ver or not depends on the store)
|
||||
|
||||
バグレポートなど:GitHub Issuesや[Cutls@kirishima.cloud](https://kirishima.cloud/@Cutls)へのリプ,または#Deskでトゥートして下さい.
|
||||
<a href="https://www.patreon.com/cutls"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160"></a>
|
||||
<a href="https://liberapay.com/cutls/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
|
||||

|
||||
|
||||
### Contribute/コントリビュート
|
||||
|
||||
Please make a pull request to ***WIP(before CI)*** brunch
|
||||
***WIP(before CI)*** ブランチにプルリクエストをお願いします。
|
||||
|
||||
## License/ライセンス
|
||||
## License
|
||||
|
||||
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
|
||||
|
||||
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)/アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
|
||||
[Press Kit](https://dl.thedesk.top/press/TheDesk+PressKit.zip)
|
||||
The icon is provided under [Creative Commons BY-NC-SA](https://creativecommons.org/licenses/by-nc-sa/4.0/)
|
||||
[Press Kit](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
|
||||
|
||||
* [PNG](https://dl.thedesk.top/press/TheDesk.png)
|
||||
* [Monotone SVG](https://dl.thedesk.top/press/TheDesk.svg)
|
||||
* [ico](https://dl.thedesk.top/press/TheDesk.ico)
|
||||
* [icns](https://dl.thedesk.top/press/TheDesk.icns)
|
||||
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
|
||||
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
|
||||
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
|
||||
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
|
||||
|
||||
## Terms of Use/利用規約
|
||||
The default sounds of notifications is provided [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
## Terms of Use
|
||||
|
||||
* [利用規約(Terms of Use(ja))](https://thedesk.top/tos.html)
|
||||
* [プライバシーポリシー(Privacy Policy(ja))](https://thedesk.top/priv.html)
|
||||
|
||||
## Language/言語
|
||||
## Language
|
||||
|
||||
* 日本語(Japanese)
|
||||
* English(英語)
|
||||
* English
|
||||
* de, cs, bg(from Crowdin)
|
||||
|
||||
### Translation/翻訳
|
||||
### Translation
|
||||
|
||||
Crowdin project is available! Visit: https://translate.thedesk.top
|
||||
|
||||
Crowdinから翻訳に参加してみませんか?: https://translate.thedesk.top
|
||||
Crowdin project is available! Visit: https://translate.thedesk.top
|
||||
|
||||
## Requirement/環境
|
||||
### Run on developer mode
|
||||
|
||||
* Electron 3.0.10(install yourself)
|
||||
* electron-dl(in package.json)
|
||||
* Jimp(in package.json)
|
||||
* font-manager(in package.json)
|
||||
* Python 2.x(install yourself)
|
||||
* VisualC++(Windows)(install yourself)
|
||||
* itunes-nowplaying-mac(for macOS)(in package.json)
|
||||
* node-notifier(in package.json)
|
||||
* sumchecker(in package.json)
|
||||
* Ability to read unformated files!(install yourself)
|
||||
`npm run dev` on `app` folder.
|
||||
|
||||
## Contributors/主なコントリビューター
|
||||
## Contributors
|
||||
|
||||
macOSビルダー
|
||||
Build for macOS
|
||||
|
||||
* [とねぢ](https://minohdon.jp/@toneji)
|
||||
* [toneji](https://minohdon.jp/@toneji)
|
||||
|
||||
Linuxビルダー
|
||||
Build for Linux
|
||||
|
||||
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
|
||||
* [popn_ja](https://popon.pptdn.jp/@popn_ja)
|
||||
|
||||
iTunes NowPlayingにアルバムアートワークを付けてくれた人
|
||||
Fellow coder
|
||||
|
||||
* [kPherox](https://www.kr-kp.com/)
|
||||
* [kPherox](https://pl.kpherox.dev/kPherox)
|
||||
|
||||
## Build/ビルド
|
||||
## Build
|
||||
|
||||
Misskey(misskey.xyz) application token is not in cutls/TheDesk
|
||||
Misskey(misskey.xyz)のトークンは含まれておりません。
|
||||
You have to use either **npm** or **yarn**. Whichever you use, it works well.
|
||||
|
||||
### npm
|
||||
|
||||
```sh
|
||||
git clone https://github.com/cutls/TheDesk
|
||||
cd TheDesk/app
|
||||
npm install
|
||||
npm install --only=dev
|
||||
npm run construct
|
||||
```
|
||||
|
||||
### electron-builder(推奨)
|
||||
Use npm scripts.
|
||||
npm scriptsを利用します
|
||||
### yarn
|
||||
|
||||
```sh
|
||||
git clone https://github.com/cutls/TheDesk
|
||||
cd TheDesk/app
|
||||
# Linux or macOS
|
||||
yarn install --no-lockfile
|
||||
# Windows
|
||||
yarn install
|
||||
|
||||
yarn construct
|
||||
```
|
||||
|
||||
run `npm run dev` or `yarn dev` to launch developer version with console(click `view`)
|
||||
|
||||
### electron-builder(Recommended)
|
||||
Use scripts(they can work well with npm, **yarn**).
|
||||
|
||||
#### npm
|
||||
|
||||
```sh
|
||||
# Build for current platform
|
||||
# 実行している環境向けにビルド
|
||||
npm run build
|
||||
|
||||
# Select build target
|
||||
# ターゲットを指定してビルド
|
||||
## Windows
|
||||
npm run build:win
|
||||
|
||||
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
|
||||
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
|
||||
npm run build:all
|
||||
```
|
||||
|
||||
Config is all on package.json
|
||||
ビルド設定はすべてpackage.jsonに記載しています。
|
||||
#### yarn
|
||||
|
||||
### electron-packager(非推奨)
|
||||
```sh
|
||||
# Build for current platform
|
||||
yarn build
|
||||
|
||||
# Select build target
|
||||
## Windows
|
||||
yarn build:win
|
||||
|
||||
## Windows and Linux (The macOS target should run on macOS. So, this option hasn't include the build for macOS)
|
||||
yarn build:all
|
||||
```
|
||||
|
||||
|
||||
Config is all on package.json
|
||||
|
||||
### electron-packager
|
||||
`npm install --save-dev electron-rebuild`
|
||||
|
||||
Linux/macOS
|
||||
@@ -113,10 +139,7 @@ Windows
|
||||
`.\node_modules\.bin\electron-rebuild.cmd`
|
||||
|
||||
To install Python 2.x and Visual C++ for Windows, before running `npm install --save-dev electron-rebuild`
|
||||
WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に)
|
||||
`npm install --global windows-build-tools`
|
||||
|
||||
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
|
||||
|
||||
Windows
|
||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
|
||||
@@ -125,14 +148,23 @@ Linux
|
||||
macOS
|
||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
|
||||
|
||||
### PWA support
|
||||
|
||||
TheDesk is a web-based app, so you can run it on a browser. Of course, the main stream is as Electron. Some features won't work as well as Electron.
|
||||
|
||||
You can run `npm run build:pwa` to build as PWA, including `manifest.json` and the ServiceWorker.
|
||||
|
||||
**You have to rename `node_modules` to `dependencies` to run as a web application. (restricted by Netlify)**
|
||||
|
||||
Check the app on Chrome or Firefox: [Here](https://app.thedesk.top) (it follows the `master` branch, so not stable.)
|
||||
[](https://app.netlify.com/sites/thedesk/deploys)
|
||||
|
||||
## Pleroma support
|
||||
|
||||
Did you find a bug with Pleroma accounts?
|
||||
Pleroma **does not** follow Mastodon API rules completely although Pleroma developers say so.
|
||||
Please write issues to improve TheDesk affinity with Pleroma.
|
||||
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
|
||||
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
|
||||
Please write issues to improve TheDesk affinity with Pleroma.
|
||||
|
||||
## See also/詳しく
|
||||
## Vulnerabilities when `npm i`???
|
||||
|
||||
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
|
||||
No, if your npm says materialize-css has vulnerabilities(CVE-2019-11002/3/4), look at [here](https://github.com/Dogfalo/materialize/issues/6286) under discussion.
|
||||
|
||||
173
README_ja.md
Normal file
@@ -0,0 +1,173 @@
|
||||
<img src="https://thedesk.top/img/top.png" width="300" align="left">
|
||||
<img src="https://thedesk.top/img/desk.png" width="150" align="right">
|
||||
|
||||
# TheDesk
|
||||
|
||||
[](https://travis-ci.org/cutls/TheDesk)
|
||||
[](https://translate.thedesk.top/project/thedesk)
|
||||
[](https://bit.ly/31zqMmZ)
|
||||
[](https://github.com/cutls/TheDesk/releases)
|
||||

|
||||
Mastodon/Misskey client for PC(Windows/Linux/macOS)
|
||||
オープンソースSNSマストドン/MisskeyのPC向けクライアント
|
||||
Download:[TheDesk](https://thedesk.top) [](https://status.cutls.com)
|
||||
|
||||
[Pixiv FANBOX](https://www.pixiv.net/fanbox/creator/28105985)
|
||||
|
||||
`-store.*`とあるアセットはストアやパッケージマネージャ向けのもので、アップデートの確認をソフト本体で行いません。
|
||||
|
||||

|
||||
|
||||
## ライセンス
|
||||
|
||||
[GNU General Public License v3.0](https://github.com/cutls/TheDesk/blob/master/LICENSE)
|
||||
|
||||
アイコンは[クリエイティブ・コモンズ 表示-非営利-継承](https://creativecommons.org/licenses/by-nc-sa/4.0/)で提供されています。
|
||||
[プレスキット](https://d2upiril6ywqp9.cloudfront.net/press/TheDesk+PressKit.zip)
|
||||
|
||||
* [PNG 512x512](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.png)
|
||||
* [SVG 4095x4096](https://d2upiril6ywqp9.cloudfront.net/press/thedesk-fullcolor.svg)
|
||||
* [ico 256x256](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ico)
|
||||
* [icns old](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.icns)
|
||||
* [Illustrator .ai](https://d2upiril6ywqp9.cloudfront.net/press/thedesk.ai)
|
||||
|
||||
標準の通知音は [Creative Commons BY](https://creativecommons.org/licenses/by/4.0/) で提供されています。
|
||||
|
||||
## 利用規約
|
||||
|
||||
* [利用規約](https://thedesk.top/tos.html)
|
||||
* [プライバシーポリシー](https://thedesk.top/priv.html)
|
||||
|
||||
## 言語
|
||||
|
||||
* 日本語
|
||||
* English(英語)
|
||||
* ドイツ語, チェコ語, ブルガリア語(from Crowdin)
|
||||
|
||||
### 翻訳
|
||||
|
||||
Crowdinから翻訳に参加してみませんか?: https://translate.thedesk.top
|
||||
|
||||
### デベロッパーモード
|
||||
|
||||
`npm run dev`を`app`フォルダ内で実行
|
||||
|
||||
## 主なコントリビューター
|
||||
|
||||
macOSビルダー
|
||||
|
||||
* [とねぢ](https://minohdon.jp/@toneji)
|
||||
|
||||
Linuxビルダー
|
||||
|
||||
* [ぽぷんじゃ](https://popon.pptdn.jp/@popn_ja)
|
||||
|
||||
コーダー
|
||||
|
||||
* [kPherox](https://pl.kpherox.dev/kPherox)
|
||||
|
||||
## ビルド
|
||||
|
||||
npmでもyarnでも好きな方を選んでください。
|
||||
|
||||
### npm
|
||||
|
||||
```sh
|
||||
git clone https://github.com/cutls/TheDesk
|
||||
cd TheDesk/app
|
||||
npm install
|
||||
npm install --only=dev
|
||||
npm run construct
|
||||
```
|
||||
|
||||
### yarn
|
||||
|
||||
```sh
|
||||
git clone https://github.com/cutls/TheDesk
|
||||
cd TheDesk/app
|
||||
# Linux or macOS
|
||||
yarn install --no-lockfile
|
||||
# Windows
|
||||
yarn install
|
||||
|
||||
yarn construct
|
||||
```
|
||||
|
||||
### electron-builder(推奨)
|
||||
|
||||
scriptsを利用します
|
||||
|
||||
#### npm
|
||||
|
||||
```sh
|
||||
# 実行している環境向けにビルド
|
||||
npm run build
|
||||
|
||||
# ターゲットを指定してビルド
|
||||
## Windows
|
||||
npm run build:win
|
||||
|
||||
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
|
||||
npm run build:all
|
||||
```
|
||||
|
||||
#### yarn
|
||||
|
||||
```sh
|
||||
# 実行している環境向けにビルド
|
||||
yarn build
|
||||
|
||||
# ターゲットを指定してビルド
|
||||
## Windows
|
||||
yarn build:win
|
||||
|
||||
## macOS向けのビルドにはmacOSで実行する必要があるためこのコマンドではビルドされません
|
||||
yarn build:all
|
||||
```
|
||||
|
||||
ビルド設定はすべてpackage.jsonに記載しています。
|
||||
|
||||
### electron-packager(非推奨)
|
||||
`npm install --save-dev electron-rebuild`
|
||||
|
||||
Linux/macOS
|
||||
`./node_modules/.bin/electron-rebuild`
|
||||
Windows
|
||||
`.\node_modules\.bin\electron-rebuild.cmd`
|
||||
|
||||
WindowsでPython 2.xやVisualC++を一発でインストールできるツールもあります(`npm install --save-dev electron-rebuild`の前に)
|
||||
`npm install --global windows-build-tools`
|
||||
|
||||
日本語話者向けですが、macOSビルドにはXCodeが要るとの情報があります。([とねぢ](https://minohdon.jp/@toneji)氏談)
|
||||
|
||||
Windows
|
||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --win32metadata.CompanyName="TheDesk&Cutls.com" --win32metadata.FileDescription="TheDesk" --win32metadata.OriginalFilename="TheDesk" --win32metadata.InternalName="TheDesk" --win32metadata.ProductName="TheDesk" --platform=win32 --arch=all --electron-version=4.0.5 --icon=.\app\thedesk.ico --overwrite`
|
||||
Linux
|
||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=linux --arch=x64,ia32 --electron-version=4.0.5 --overwrite`
|
||||
macOS
|
||||
`electron-packager ./app TheDesk --executable-name="TheDesk" --app-copyright="Copyright (c) TheDesk 2018 Cutls.com 2015 All Right Reserved" --platform=darwin --arch=all --electron-version=4.0.5 --icon=./app/icon.icns --overwrite`
|
||||
|
||||
### PWAとして実行
|
||||
|
||||
TheDeskはウェブ技術を使用して作られているので、ブラウザで動かすこともできます。もちろん、Electron向けに設計されているので一部機能は動きません。
|
||||
|
||||
`npm run build:pwa`でビルドできます。PWAに必要な`manifest.json`やサービスワーカーなども要員されています。
|
||||
|
||||
**`node_modules`を`dependencies`にリネームしないと動きません。(Netlifyの制限です)**
|
||||
|
||||
ChromeまたはFirefoxでチェック: [こちら](https://app.thedesk.top) (`master`ブランチに追従しています。不安定です。)
|
||||
[](https://app.netlify.com/sites/thedesk/deploys)
|
||||
|
||||
## Pleromaのサポート
|
||||
|
||||
Pleromaは、Mastodon APIとの互換性を謳っていますが、実際には様々な差異があり、TheDeskで不具合が発生することがあります。
|
||||
Issuesに書いてある問題についてはなるべく対処しますので、ぜひお知らせください。
|
||||
|
||||
## 詳しく
|
||||
|
||||
[TheDesk - マストドン日本語ウィキ](https://ja.mstdn.wiki/TheDesk)
|
||||
|
||||
## `npm i`したら脆弱性あるって言われた
|
||||
|
||||
materialize-cssの脆弱性(CVE-2019-11002/3/4)については[こちら](https://github.com/Dogfalo/materialize/issues/6286)で本当に脆弱性かどうか議論しています。
|
||||
実際には害が無いものと思われます。
|
||||
5
app/.eslintignore
Normal file
@@ -0,0 +1,5 @@
|
||||
js/common/blurhash.js
|
||||
js/common/hammer.min.js
|
||||
js/common/sha256.js
|
||||
js/platform/punycode.js
|
||||
js/platform/tj-deck.js
|
||||
14
app/.eslintrc.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"extends": "eslint:recommended",
|
||||
"env": {"browser": true},
|
||||
"rules": {
|
||||
"no-console": "off",
|
||||
"semi": ["error", "never"]
|
||||
},
|
||||
"globals": {
|
||||
"$": false,
|
||||
"ver": true,
|
||||
"pwa": true,
|
||||
"lang": true
|
||||
}
|
||||
}
|
||||
226
app/about.html
@@ -1,109 +1,139 @@
|
||||
<!doctype html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<title>TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet">
|
||||
<meta charset="utf-8">
|
||||
<style>
|
||||
body{
|
||||
font-family:'Open Sans';
|
||||
-webkit-app-region: drag;
|
||||
cursor: move;
|
||||
}
|
||||
a,button{
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
.container {
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-template-areas: 'name1 data1' 'name2 data2' 'name3 data3' 'name4 data4' 'name5 data5';
|
||||
text-align:left;
|
||||
margin:5px;
|
||||
}
|
||||
<head>
|
||||
<title>TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport" />
|
||||
<link href="./node_modules/materialize-css/dist/css/materialize.css" type="text/css" rel="stylesheet" />
|
||||
<link href="./css/font-awesome.css" rel="stylesheet" type="text/css" />
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet" />
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet" />
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300|Baloo+Bhai" rel="stylesheet" />
|
||||
<meta charset="utf-8" />
|
||||
<style>
|
||||
body {
|
||||
font-family: 'Open Sans';
|
||||
-webkit-app-region: drag;
|
||||
cursor: move;
|
||||
padding: 5px;
|
||||
padding-top: 15px;
|
||||
}
|
||||
|
||||
.area-name1 {
|
||||
grid-area: name1;
|
||||
}
|
||||
a,
|
||||
button {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
.area-data1 {
|
||||
grid-area: data1;
|
||||
}
|
||||
.container {
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-template-rows: 1fr 1fr 1fr 1fr 1fr;
|
||||
grid-template-areas: 'name1 data1' 'name2 data2' 'name3 data3' 'name4 data4' 'name5 data5' 'name6 data6';
|
||||
text-align: left;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.area-name2 {
|
||||
grid-area: name2;
|
||||
}
|
||||
.area-name1 {
|
||||
grid-area: name1;
|
||||
}
|
||||
|
||||
.area-data2 {
|
||||
grid-area: data2;
|
||||
}
|
||||
.area-data1 {
|
||||
grid-area: data1;
|
||||
}
|
||||
|
||||
.area-name3 {
|
||||
grid-area: name3;
|
||||
}
|
||||
.area-name2 {
|
||||
grid-area: name2;
|
||||
}
|
||||
|
||||
.area-data3 {
|
||||
grid-area: data3;
|
||||
}
|
||||
.area-data2 {
|
||||
grid-area: data2;
|
||||
}
|
||||
|
||||
.area-name4 {
|
||||
grid-area: name4;
|
||||
}
|
||||
.area-name3 {
|
||||
grid-area: name3;
|
||||
}
|
||||
|
||||
.area-data4 {
|
||||
grid-area: data4;
|
||||
}
|
||||
.area-data3 {
|
||||
grid-area: data3;
|
||||
}
|
||||
|
||||
.area-name5 {
|
||||
grid-area: name5;
|
||||
}
|
||||
.area-name4 {
|
||||
grid-area: name4;
|
||||
}
|
||||
|
||||
.area-data5 {
|
||||
grid-area: data5;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="center " style="overflow:hidden">
|
||||
<script type="text/javascript" src="./js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
|
||||
<script type="text/javascript" src="./js/common/materialize.js"></script>
|
||||
<img src="./img/desk.png" style="max-width:70%;">
|
||||
<h5>TheDesk</h5>
|
||||
<div class='container'>
|
||||
<div class='area-name1'>External version</div>
|
||||
<div class='area-data1' id="now"></div>
|
||||
<div class='area-name2'>Internal version</div>
|
||||
<div class='area-data2' id="ver"></div>
|
||||
<div class='area-name3'>Chromium</div>
|
||||
<div class='area-data3' id="chrome"></div>
|
||||
<div class='area-name4'>Electron</div>
|
||||
<div class='area-data4' id="electron"></div>
|
||||
<div class='area-name5'>Node.js</div>
|
||||
<div class='area-data5' id="node"></div>
|
||||
</div>
|
||||
<div class="cp">Copyright © TheDesk 2018 All rights reserved.<br><a href="https://thedesk.top" target="_blank">Web site</a></div>
|
||||
<button onclick="window.close()" class="btn waves-effect indigo" style="width:calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
|
||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||
<script>
|
||||
$("#now").text(localStorage.getItem("ver"));
|
||||
var electron = require("electron");
|
||||
var remote=electron.remote;
|
||||
//JSON.parse(fs.readFileSync(info_path, 'utf8'));
|
||||
console.log(process.versions);
|
||||
$("#node").text(process.version);
|
||||
$("#chrome").text(process.versions.chrome);
|
||||
$("#electron").text(process.versions.electron);
|
||||
if(location.search){
|
||||
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/);
|
||||
var ver=m[1];
|
||||
$("#ver").text(ver);
|
||||
}
|
||||
|
||||
</script>
|
||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
||||
.area-data4 {
|
||||
grid-area: data4;
|
||||
}
|
||||
|
||||
.area-name5 {
|
||||
grid-area: name5;
|
||||
}
|
||||
|
||||
.area-data5 {
|
||||
grid-area: data5;
|
||||
}
|
||||
|
||||
.area-name6 {
|
||||
grid-area: name6;
|
||||
}
|
||||
|
||||
.area-data6 {
|
||||
grid-area: data6;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body class="center" style="overflow: hidden;">
|
||||
<script type="text/javascript" src="./node_modules/jquery/dist/jquery.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
|
||||
<script type="text/javascript" src="./node_modules/materialize-css/dist/js/materialize.js"></script>
|
||||
<img src="./img/desk.svg" style="max-width: 62%;" />
|
||||
<h5>TheDesk</h5>
|
||||
<div class="container">
|
||||
<div class="area-name1">Display version</div>
|
||||
<div class="area-data1" id="now"></div>
|
||||
<div class="area-name2">Internal version</div>
|
||||
<div class="area-data2" id="ver"></div>
|
||||
<div class="area-name3">Commit(7chars)</div>
|
||||
<div class="area-data3" id="hash"></div>
|
||||
<div class="area-name4">Chromium</div>
|
||||
<div class="area-data4" id="chrome"></div>
|
||||
<div class="area-name5">Electron</div>
|
||||
<div class="area-data5" id="electron"></div>
|
||||
<div class="area-name6">Node.js</div>
|
||||
<div class="area-data6" id="node"></div>
|
||||
</div>
|
||||
<div class="cp">
|
||||
Copyright © TheDesk 2018<br />
|
||||
Main developer(author): <a href="https://cutls.com/@Cutls" target="_blank">Cutls P</a><br />
|
||||
Thanks:<a href="https://minohdon.jp/@toneji" target="_blank">toneji</a>/<a href="https://popon.pptdn.jp/@popn_ja" target="_blank">popn_ja</a>/<a
|
||||
href="https://pl.kpherox.dev/kPherox"
|
||||
target="_blank"
|
||||
>kPherox</a
|
||||
>
|
||||
and all users
|
||||
<img draggable="false" style="width: 0.8rem; top: 1px; margin-left: 1px; position: relative;" alt="❤️" title=":heart:" src="https://twemoji.maxcdn.com/2/72x72/2764.png" />
|
||||
<br /><a href="https://thedesk.top" target="_blank">Web site</a>
|
||||
</div>
|
||||
<button onclick="window.close()" class="btn waves-effect indigo" style="width: calc(100% - 10px);"><i class="material-icons left">close</i>Close</button>
|
||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||
<script>
|
||||
var about = JSON.parse(localStorage.getItem('about'))
|
||||
$('#now').text(localStorage.getItem('ver'))
|
||||
$('#node').text(about[0])
|
||||
$('#chrome').text(about[1])
|
||||
$('#electron').text(about[2])
|
||||
if (location.search) {
|
||||
var m = location.search.match(/\?ver=([a-zA-Z-0-9.]+)/)
|
||||
var ver = m[1]
|
||||
$('#ver').text(ver)
|
||||
}
|
||||
$('#hash').html('<a href="https://github.com/cutls/TheDesk/commits/' + about[3] + '" target="_blank">' + about[3].slice(0, 7) + '</a>')
|
||||
$(document).on('click', 'a', (e) => {
|
||||
var url = $(e.target).attr('href')
|
||||
postMessage(['openUrl', url], '*')
|
||||
return false
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
260
app/adobe.html
@@ -1,260 +0,0 @@
|
||||
<!doctype html>
|
||||
<html lang="ja">
|
||||
<head>
|
||||
<title>Adobe Photo Editor - TheDesk</title>
|
||||
<meta content="width=device-width,initial-scale=1.0" name="viewport">
|
||||
<link href="./css/materialize.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/themes.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/master.css" type="text/css" rel="stylesheet">
|
||||
<link href="./css/auth.css" type="text/css" rel="stylesheet">
|
||||
<link href='./css/font-awesome.css' rel='stylesheet' type='text/css'>
|
||||
<link href='./css/tl.css' rel='stylesheet' type='text/css'>
|
||||
<link href='./css/userdata.css' rel='stylesheet' type='text/css'>
|
||||
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Open+Sans:300" rel="stylesheet">
|
||||
<style>
|
||||
#cb-drag {
|
||||
margin-bottom: 8px;
|
||||
padding: 24px 0;
|
||||
text-align: center;
|
||||
}
|
||||
#cb-drag p {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
#cb-file {
|
||||
cursor: pointer;
|
||||
}
|
||||
#cb-display {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
#cb-display p {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 0;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.cb-div {
|
||||
padding: 16px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.cb-image {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
</style>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body id="mainView">
|
||||
<script type="text/javascript" src="./js/common/jquery.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/first-not-view.js"></script>
|
||||
<script type="text/javascript" src="./js/common/materialize.js"></script>
|
||||
<script type="text/javascript" src="./js/ui/tips.js"></script>
|
||||
<script type="text/javascript" src="./js/common/time.js"></script>
|
||||
<script type="text/javascript" src="./js/common/modal.js"></script>
|
||||
<div>
|
||||
<div id="cb-drag">
|
||||
<p>ここに画像ファイルをドラッグし、画像をクリックしてください。</p>
|
||||
<input type="file" id="cb-file">
|
||||
</div>
|
||||
<div id="cb-display"></div>
|
||||
</div>
|
||||
<script type="text/javascript" src="https://dme0ih8comzn4.cloudfront.net/imaging/v2/editor.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
var dragAndDrop = (function (window, document) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var drag = document.getElementById("mainView");
|
||||
var disp = document.getElementById("cb-display");
|
||||
var file = document.getElementById("cb-file");
|
||||
|
||||
function makeView(data) {
|
||||
|
||||
var div, img, customEvent;
|
||||
var metaData = "<p>■ファイル名: <b>" + data.name + "</b><br>■容量: <b>" + data.size + "</b>バイト</p>";
|
||||
|
||||
div = document.createElement("div");
|
||||
div.setAttribute("class", "cb-div");
|
||||
|
||||
img = document.createElement("img");
|
||||
img.src = data.url;
|
||||
img.setAttribute("class", "cb-image");
|
||||
img.style.maxWidth = "100%";
|
||||
img.style.height = "auto";
|
||||
|
||||
div.appendChild(img);
|
||||
img.insertAdjacentHTML("afterend", metaData);
|
||||
disp.appendChild(div);
|
||||
|
||||
customEvent = document.createEvent("HTMLEvents");
|
||||
customEvent.initEvent("makeView", true, false);
|
||||
div.dispatchEvent(customEvent);
|
||||
|
||||
}
|
||||
|
||||
function readImage(e) {
|
||||
|
||||
var f = (e.dataTransfer) ? e.dataTransfer.files : e.target.files;
|
||||
|
||||
for (var i = 0, l = f.length; i < l; i++) {
|
||||
|
||||
var reader = new FileReader();
|
||||
|
||||
reader.onload = (function (f) {
|
||||
|
||||
var imageData = {};
|
||||
|
||||
return function (evt) {
|
||||
|
||||
if (f.type === "image/gif" || f.type === "image/png" || f.type === "image/jpeg") {
|
||||
|
||||
imageData.type = f.type;
|
||||
imageData.name = f.name;
|
||||
imageData.size = f.size;
|
||||
imageData.date = f.lastModifiedDate.toLocaleDateString();
|
||||
imageData.url = evt.target.result;
|
||||
makeView(imageData);
|
||||
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
})(f[i]);
|
||||
|
||||
reader.readAsDataURL(f[i]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function dragFiles() {
|
||||
|
||||
drag.addEventListener("drop", function (e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
readImage(e);
|
||||
}, false);
|
||||
|
||||
drag.addEventListener("dragover", function (e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
}, false);
|
||||
|
||||
}
|
||||
|
||||
function uploadFiles() {
|
||||
|
||||
file.addEventListener("change", function(e) {
|
||||
readImage(e);
|
||||
}, false);
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
init: function () {
|
||||
dragFiles();
|
||||
uploadFiles();
|
||||
}
|
||||
};
|
||||
|
||||
})(this, this.document);
|
||||
|
||||
var photoEditor = (function (window, document) {
|
||||
|
||||
"use strict";
|
||||
|
||||
var featherEditor = new Aviary.Feather({
|
||||
apiKey: "ffee425017ab44b18ce95dab98a5cdc1",
|
||||
onSave: function(imageID, newURL) {
|
||||
var img1 = document.getElementById(imageID);
|
||||
img1.src = newURL;
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('bmp-image', [newURL,0]);
|
||||
window.close();
|
||||
}
|
||||
});
|
||||
|
||||
function clearImage() {
|
||||
this.parentNode.style.display = "none";
|
||||
}
|
||||
|
||||
function launchEditor(id, src) {
|
||||
featherEditor.launch({
|
||||
image: id,
|
||||
url: src
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
function editPhoto() {
|
||||
//console.log(this);
|
||||
var id = this.getAttribute("id");
|
||||
var src = this.getAttribute("src");
|
||||
launchEditor(id, src);
|
||||
}
|
||||
|
||||
function makeButton() {
|
||||
var button = document.createElement("button");
|
||||
button.setAttribute("style",
|
||||
"width: 64px;"
|
||||
+ " line-height: 24px;"
|
||||
+ " background-color: #37474F;"
|
||||
+ " color: #fff;"
|
||||
+ " border: none;"
|
||||
+ " cursor: pointer;"
|
||||
+ " border-radius: 2px;"
|
||||
+ " font-size: 14px;"
|
||||
+ " position: absolute;"
|
||||
+ " text-align: center;"
|
||||
+ " top: 16px;"
|
||||
+ " right: 8px;"
|
||||
+ " padding: 0;"
|
||||
+ " z-index: 1000;"
|
||||
);
|
||||
button.innerHTML = "削除";
|
||||
return button;
|
||||
}
|
||||
|
||||
function listener() {
|
||||
|
||||
var disp = document.getElementById("cb-display");
|
||||
|
||||
disp.addEventListener("makeView", function () {
|
||||
|
||||
var image = document.querySelectorAll(".cb-image");
|
||||
var button = [];
|
||||
|
||||
for (var i = 0, l = image.length; i < l; i++) {
|
||||
|
||||
button[i] = makeButton();
|
||||
image[i].setAttribute("id", "cb-image_" + i);
|
||||
image[i].parentNode.style.position = "relative";
|
||||
image[i].parentNode.appendChild(button[i]);
|
||||
|
||||
button[i].addEventListener("click", clearImage, false);
|
||||
image[i].addEventListener("click", editPhoto, false);
|
||||
}
|
||||
|
||||
}, false);
|
||||
|
||||
}
|
||||
|
||||
return {
|
||||
init: function () {
|
||||
listener();
|
||||
}
|
||||
};
|
||||
|
||||
})(this, this.document);
|
||||
|
||||
dragAndDrop.init();
|
||||
photoEditor.init();
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" src="./js/ui/theme.js"></script>
|
||||
<script type="text/javascript" src="./js/platform/end.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
112
app/build.js
Normal file
@@ -0,0 +1,112 @@
|
||||
const builder = require("electron-builder");
|
||||
const fs = require('fs');
|
||||
const os = process.platform;
|
||||
const Platform = builder.Platform
|
||||
const Arch = builder.Arch
|
||||
const targets = new Map();
|
||||
const archToType = new Map();
|
||||
const pref = {
|
||||
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
|
||||
},
|
||||
linux: {
|
||||
icon: "build/icons",
|
||||
target: [
|
||||
"zip",
|
||||
"snap"
|
||||
],
|
||||
category: "Network"
|
||||
},
|
||||
mac: {
|
||||
target: [
|
||||
"dmg",
|
||||
"zip"
|
||||
]
|
||||
},
|
||||
electronDownload: {
|
||||
version: "5.0.1"
|
||||
},
|
||||
electronVersion: "5.0.1"
|
||||
}
|
||||
const json = JSON.parse(fs.readFileSync("package.json", 'utf8'));
|
||||
const version = json.version;
|
||||
|
||||
|
||||
if (os == "win32") {
|
||||
archToType.set(Arch.ia32, []);
|
||||
targets.set(Platform.WINDOWS, archToType);
|
||||
} else if (os == "linux") {
|
||||
archToType.set(Arch.x64, []);
|
||||
archToType.set(Arch.ia32, []);
|
||||
targets.set(Platform.LINUX, archToType);
|
||||
} else if (os == "darwin") {
|
||||
archToType.set(Arch.x64, []);
|
||||
targets.set(Platform.MAC, archToType);
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
builder.build({
|
||||
targets: targets,
|
||||
config: pref
|
||||
})
|
||||
.then(() => {
|
||||
console.log("Done on "+os)
|
||||
if (os == "win32") {
|
||||
console.log("Windows")
|
||||
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk-ia32.exe');
|
||||
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
|
||||
retry()
|
||||
}else if (os == "linux") {
|
||||
console.log("Linux")
|
||||
fs.renameSync('../build/thedesk-' + version + '.zip', '../build/TheDesk.zip');
|
||||
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup-ia32.exe');
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
// handle error
|
||||
})
|
||||
function retry(){
|
||||
console.log("Windows x64")
|
||||
const targetsAlt = new Map();
|
||||
const archToTypeAlt = new Map();
|
||||
targetsAlt.set(Platform.WINDOWS, archToTypeAlt);
|
||||
archToTypeAlt.set(Arch.x64, []);
|
||||
builder.build({
|
||||
targets: targetsAlt,
|
||||
config: pref
|
||||
})
|
||||
.then(() => {
|
||||
fs.renameSync('../build/TheDesk Setup ' + version + '.exe', '../build/TheDesk-setup.exe');
|
||||
fs.renameSync('../build/TheDesk ' + version + '.exe', '../build/TheDesk.exe');
|
||||
})
|
||||
.catch((error) => {
|
||||
// handle error
|
||||
})
|
||||
}
|
||||
BIN
app/build/appx/Square150x150Logo.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app/build/appx/Square44x44Logo.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
app/build/appx/StoreLogo.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
app/build/appx/Wide310x150Logo.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
app/build/thedesk.ico
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
@@ -1,2 +1,4 @@
|
||||
/*このソフトについてを押した時に読み込まれます*/
|
||||
body{font-family:Open Sans;}
|
||||
body {
|
||||
font-family: Open Sans;
|
||||
}
|
||||
|
||||
91
app/css/acct.css
Normal file
@@ -0,0 +1,91 @@
|
||||
.acct {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
.card {
|
||||
width: 400px;
|
||||
background-color: #494949;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
body,
|
||||
html {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
#acct-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
color: white;
|
||||
align-items: flex-start;
|
||||
}
|
||||
|
||||
#acct-list .btn-flat.white-text {
|
||||
color: inherit !important;
|
||||
}
|
||||
|
||||
#acct-list .btn-flat.red-text {
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
|
||||
.lts {
|
||||
font-size: 150%;
|
||||
}
|
||||
|
||||
.colorsel {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.card .colorsel div:not(.exc) {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.card .colorsel div.exc {
|
||||
width: 40px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
.first {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.first .hide-first {
|
||||
display: none;
|
||||
}
|
||||
.hide-second {
|
||||
display: none;
|
||||
}
|
||||
.first .hide-second {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
#compt {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 50px;
|
||||
border: 1px solid;
|
||||
border: 1px solid;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#compt li {
|
||||
list-style-type: disc;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
#domain-list {
|
||||
width: 500px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
i.left {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#domain-list .title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
24
app/css/font-awesome.css
vendored
@@ -5,9 +5,15 @@
|
||||
/* FONT PATH
|
||||
* -------------------------- */
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
|
||||
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
|
||||
font-family: "FontAwesome";
|
||||
src: url("../fonts/fontawesome-webfont.eot?v=4.7.0");
|
||||
src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0")
|
||||
format("embedded-opentype"),
|
||||
url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),
|
||||
url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),
|
||||
url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),
|
||||
url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular")
|
||||
format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@@ -60,9 +66,9 @@
|
||||
left: -1.85714286em;
|
||||
}
|
||||
.fa-border {
|
||||
padding: .2em .25em .15em;
|
||||
padding: 0.2em 0.25em 0.15em;
|
||||
border: solid 0.08em #eeeeee;
|
||||
border-radius: .1em;
|
||||
border-radius: 0.1em;
|
||||
}
|
||||
.fa-pull-left {
|
||||
float: left;
|
||||
@@ -71,10 +77,10 @@
|
||||
float: right;
|
||||
}
|
||||
.fa.fa-pull-left {
|
||||
margin-right: .3em;
|
||||
margin-right: 0.3em;
|
||||
}
|
||||
.fa.fa-pull-right {
|
||||
margin-left: .3em;
|
||||
margin-left: 0.3em;
|
||||
}
|
||||
/* Deprecated as of 4.4.0 */
|
||||
.pull-right {
|
||||
@@ -84,10 +90,10 @@
|
||||
float: left;
|
||||
}
|
||||
.fa.pull-left {
|
||||
margin-right: .3em;
|
||||
margin-right: 0.3em;
|
||||
}
|
||||
.fa.pull-right {
|
||||
margin-left: .3em;
|
||||
margin-left: 0.3em;
|
||||
}
|
||||
.fa-spin {
|
||||
-webkit-animation: fa-spin 2s infinite linear;
|
||||
|
||||
@@ -1,412 +1,636 @@
|
||||
/*共通CSS*/
|
||||
html,body{
|
||||
/*transform: translate3d(0,0,0);*/
|
||||
overflow:hidden;
|
||||
user-select: none;
|
||||
cursor:default;
|
||||
font-size:13px;
|
||||
height: 100vh;
|
||||
background-color: var(--bg);
|
||||
color: var(--color);
|
||||
html,
|
||||
body {
|
||||
/*transform: translate3d(0,0,0);*/
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
cursor: default;
|
||||
height: 100vh;
|
||||
color: var(--text);
|
||||
}
|
||||
body{
|
||||
border: thin solid gray;
|
||||
html {
|
||||
font-size: 13px;
|
||||
}
|
||||
.btn {
|
||||
margin: 5px;
|
||||
text-transform: none;
|
||||
.titlebar,
|
||||
.menubar-menu-container,
|
||||
.action-menu-item {
|
||||
background-color: var(--subcolor) !important;
|
||||
filter: brightness(110%) !important;
|
||||
color: var(--text) !important;
|
||||
}
|
||||
.action-menu-item:hover {
|
||||
filter: brightness(80%) !important;
|
||||
}
|
||||
.btn, .btn-flat {
|
||||
font-size: 1.1rem;
|
||||
margin: 0.4rem;
|
||||
text-transform: none;
|
||||
height: 2.76rem;
|
||||
line-height: 2.76rem;
|
||||
}
|
||||
.markdown {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
help {
|
||||
display: none;
|
||||
.accessMark {
|
||||
font-size: 12px;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
background-color: var(--emphasized);
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.accessibility .scr {
|
||||
display: none !important;
|
||||
}
|
||||
.show-help {
|
||||
display: inline;
|
||||
display: inline;
|
||||
}
|
||||
option {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
#mainView {
|
||||
padding: 10px;
|
||||
padding: 10px;
|
||||
overflow: scroll;
|
||||
height: auto;
|
||||
}
|
||||
#message {
|
||||
display: none;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: black;
|
||||
color: white;
|
||||
z-index: 9999;
|
||||
display: none;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: black;
|
||||
color: white;
|
||||
z-index: 9999;
|
||||
}
|
||||
#imagemodal, #videomodal {
|
||||
display: none;
|
||||
max-width: 100vw;
|
||||
max-height: 100vh;
|
||||
position: fixed;
|
||||
z-index: 9;
|
||||
#imagemodal,
|
||||
#videomodal {
|
||||
display: none;
|
||||
max-width: 100vw;
|
||||
max-height: 100vh;
|
||||
position: fixed;
|
||||
z-index: 9;
|
||||
top: 0 !important;
|
||||
}
|
||||
#videomodal, #tootmodal {
|
||||
background-color: var(--modal);
|
||||
#videomodal,
|
||||
#tootmodal {
|
||||
background-color: var(--modal);
|
||||
}
|
||||
#imagemodal .modal-content {
|
||||
overflow: hidden;
|
||||
padding:0;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
}
|
||||
#imagemodal .modal-footer{
|
||||
overflow-x:scroll;
|
||||
overflow-y:hidden;
|
||||
#imagemodal .modal-footer {
|
||||
overflow-x: hidden;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
|
||||
#imagewrap {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.pointer {
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
}
|
||||
.badge{
|
||||
min-width: 0 !important;
|
||||
margin-left: 5px !important;
|
||||
.badge {
|
||||
min-width: 0 !important;
|
||||
margin-left: 0.4rem !important;
|
||||
}
|
||||
.bbcode-pulse-loadings, .bbcode-pulse-loading, .fa-pulse {
|
||||
display: inline-block;
|
||||
animation-duration: 3s;
|
||||
animation-fill-mode: both;
|
||||
animation-iteration-count: infinite;
|
||||
animation-name: pulse;
|
||||
.unvisible {
|
||||
opacity: 0;
|
||||
}
|
||||
.bbcode-pulse-loadings,
|
||||
.bbcode-pulse-loading,
|
||||
.fa-pulse {
|
||||
display: inline-block;
|
||||
animation-duration: 3s;
|
||||
animation-fill-mode: both;
|
||||
animation-iteration-count: infinite;
|
||||
animation-name: pulse;
|
||||
}
|
||||
@keyframes pulse {
|
||||
from, 50%, to {
|
||||
opacity: 1;
|
||||
}
|
||||
25%, 75% {
|
||||
opacity: 0;
|
||||
}
|
||||
from,
|
||||
50%,
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
25%,
|
||||
75% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@keyframes shake {
|
||||
from,
|
||||
to {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
from,
|
||||
to {
|
||||
-webkit-transform: translate3d(0, 0, 0);
|
||||
transform: translate3d(0, 0, 0);
|
||||
}
|
||||
|
||||
10%,
|
||||
30%,
|
||||
50%,
|
||||
70%,
|
||||
90% {
|
||||
-webkit-transform: translate3d(-10px, 0, 0);
|
||||
transform: translate3d(-10px, 0, 0);
|
||||
}
|
||||
10%,
|
||||
30%,
|
||||
50%,
|
||||
70%,
|
||||
90% {
|
||||
-webkit-transform: translate3d(-10px, 0, 0);
|
||||
transform: translate3d(-10px, 0, 0);
|
||||
}
|
||||
|
||||
20%,
|
||||
40%,
|
||||
60%,
|
||||
80% {
|
||||
-webkit-transform: translate3d(10px, 0, 0);
|
||||
transform: translate3d(10px, 0, 0);
|
||||
}
|
||||
20%,
|
||||
40%,
|
||||
60%,
|
||||
80% {
|
||||
-webkit-transform: translate3d(10px, 0, 0);
|
||||
transform: translate3d(10px, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
.shake {
|
||||
display: inline-block;
|
||||
animation-duration: 1s;
|
||||
animation-fill-mode: both;
|
||||
animation-iteration-count: infinite;
|
||||
animation-name: shake;
|
||||
display: inline-block;
|
||||
animation-duration: 1s;
|
||||
animation-fill-mode: both;
|
||||
animation-iteration-count: infinite;
|
||||
animation-name: shake;
|
||||
}
|
||||
code:before, .pre:before {
|
||||
content: "Code";
|
||||
font-size: 1.8rem;
|
||||
line-height: 1em;
|
||||
font-family: monospace, monospace;
|
||||
color: #999;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
code:before,
|
||||
.pre:before {
|
||||
content: 'Code';
|
||||
font-size: 1.8rem;
|
||||
line-height: 1em;
|
||||
font-family: monospace, monospace;
|
||||
color: #999;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
code, pre {
|
||||
color: white;
|
||||
display: block;
|
||||
border-left: 5px solid;
|
||||
border-color: #079903;
|
||||
padding-left: 10px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
margin-left: 5px;
|
||||
background-color: #000;
|
||||
padding: 1em 1em 1em;
|
||||
position: relative;
|
||||
border-top-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
code,
|
||||
pre {
|
||||
color: white;
|
||||
display: block;
|
||||
border-left: 5px solid;
|
||||
border-color: #079903;
|
||||
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: 0.75rem;
|
||||
border-bottom-right-radius: 0.75rem;
|
||||
border-bottom-left-radius: 0.75rem;
|
||||
white-space: normal;
|
||||
}
|
||||
blockquote, .quote p {
|
||||
margin: 0;
|
||||
blockquote,
|
||||
.quote p {
|
||||
margin: 0;
|
||||
}
|
||||
blockquote, .quote {
|
||||
color: black;
|
||||
background-color: #ddd;
|
||||
padding: 1em 1em 1em;
|
||||
position: relative;
|
||||
border-top-left-radius: 10px;
|
||||
border-bottom-right-radius: 10px;
|
||||
border-bottom-left-radius: 10px;
|
||||
blockquote,
|
||||
.quote {
|
||||
color: black;
|
||||
background-color: #ddd;
|
||||
padding: 1em 1em 1em;
|
||||
position: relative;
|
||||
border-top-left-radius: 0.75rem;
|
||||
border-bottom-right-radius: 0.75rem;
|
||||
border-bottom-left-radius: 0.5rem;
|
||||
}
|
||||
blockquote:before, .quote:before {
|
||||
content: "Quote";
|
||||
font-size: 1.8rem;
|
||||
line-height: 1em;
|
||||
font-family: Open Sans, cursive;
|
||||
color: #999;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.twitter-tweet {
|
||||
color: black;
|
||||
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-left: 5px solid #0c7abf;
|
||||
}
|
||||
.twitter-tweet :before {
|
||||
content: "From Twitter";
|
||||
font-size: 1.8rem;
|
||||
line-height: 1em;
|
||||
font-family: Open Sans;
|
||||
color: #999;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
blockquote:before,
|
||||
.quote:before {
|
||||
content: 'Quote';
|
||||
font-size: 1.8rem;
|
||||
line-height: 1em;
|
||||
font-family: Open Sans, cursive;
|
||||
color: #999;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.pixiv-post {
|
||||
color: black;
|
||||
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-left: 5px solid #0096fa;
|
||||
color: black;
|
||||
background-color: #fff;
|
||||
padding: 1em 1em 1em;
|
||||
position: relative;
|
||||
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 {
|
||||
content: "From Pixiv";
|
||||
font-size: 1.8rem;
|
||||
line-height: 1em;
|
||||
font-family: Open Sans;
|
||||
color: #999;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
content: 'From Pixiv';
|
||||
font-size: 1.8rem;
|
||||
line-height: 1em;
|
||||
font-family: Open Sans;
|
||||
color: #999;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
#start {
|
||||
display: none;
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: calc(100vh - 3rem);
|
||||
background-color: var(--bg);
|
||||
filter: brightness(50%);
|
||||
color: var(--text);
|
||||
z-index: 99999;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
#drag {
|
||||
display: none;
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: var(--bg);
|
||||
color: var(--color);
|
||||
z-index: 99999;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: none;
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: var(--bg);
|
||||
color: var(--text);
|
||||
z-index: 99999;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
#drag-content {
|
||||
font-size: 2rem;
|
||||
font-size: 2rem;
|
||||
}
|
||||
.radio{
|
||||
font-family:'Baloo Bhai'
|
||||
#pip {
|
||||
z-index: 504;
|
||||
width: 418px;
|
||||
background-color: var(--thirdColor);
|
||||
position: absolute;
|
||||
}
|
||||
#pip{
|
||||
z-index:504;
|
||||
width:418px;
|
||||
background-color: var(--subcolor);
|
||||
position:absolute;
|
||||
.pip-bottom {
|
||||
bottom: 10px;
|
||||
}
|
||||
.pip-bottom{
|
||||
bottom:10px;
|
||||
.pip-left {
|
||||
left: 10px;
|
||||
}
|
||||
.pip-left{
|
||||
left:10px;
|
||||
.pip-top {
|
||||
top: 10px;
|
||||
}
|
||||
.pip-top{
|
||||
top:10px;
|
||||
.pip-right {
|
||||
right: 10px;
|
||||
}
|
||||
.pip-right{
|
||||
right:10px;
|
||||
#pip-content .material-icons {
|
||||
display: none;
|
||||
}
|
||||
#pip-content .material-icons{
|
||||
display:none;
|
||||
}
|
||||
.big-text{
|
||||
font-size:1.2rem;
|
||||
.big-text {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
#releasenote {
|
||||
background-color: var(--modal);
|
||||
background-color: var(--modal);
|
||||
}
|
||||
#releasenote li{
|
||||
list-style-type: disc
|
||||
#releasenote li {
|
||||
list-style-type: disc;
|
||||
}
|
||||
@media only screen and (min-width: 993px){
|
||||
#toast-container {
|
||||
top:auto;
|
||||
right:auto;
|
||||
bottom: 5%;
|
||||
left: 4%;
|
||||
max-width: 86%;
|
||||
@media only screen and (min-width: 993px) {
|
||||
#toast-container {
|
||||
top: auto;
|
||||
right: auto;
|
||||
bottom: 5%;
|
||||
left: 4%;
|
||||
max-width: 86%;
|
||||
}
|
||||
}
|
||||
.show {
|
||||
animation: show 0.2s linear 0s;
|
||||
}
|
||||
.show{
|
||||
animation: show 0.2s linear 0s;
|
||||
@keyframes show {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
@keyframes show{
|
||||
from{
|
||||
opacity: 0;
|
||||
}
|
||||
to{
|
||||
opacity: 1;
|
||||
}
|
||||
.hide-anime {
|
||||
animation: hide 0.2s linear 0s;
|
||||
display: none;
|
||||
}
|
||||
.hide-anime{
|
||||
animation: hide 0.2s linear 0s;
|
||||
display:none;
|
||||
@keyframes hide {
|
||||
from {
|
||||
opacity: 1;
|
||||
}
|
||||
to {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@keyframes hide{
|
||||
from{
|
||||
opacity: 1;
|
||||
}
|
||||
to{
|
||||
opacity: 0;
|
||||
}
|
||||
.collapsible-header,
|
||||
.tabs {
|
||||
background-color: var(--thirdColor);
|
||||
}
|
||||
.collapsible-header,.tabs{
|
||||
background-color: var(--subcolor);
|
||||
.collapsible-header:focus {
|
||||
background-color: var(--thirdColor) !important;
|
||||
}
|
||||
.modal-footer{
|
||||
background-color: var(--modalfooter) !important;
|
||||
.modal-footer {
|
||||
background-color: var(--modalfooter) !important;
|
||||
}
|
||||
.font{
|
||||
font-size:1.5rem;
|
||||
margin-bottom:5px;
|
||||
.font {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 0.4rem;
|
||||
}
|
||||
.font:hover{
|
||||
background-color: #999;
|
||||
.font:hover {
|
||||
background-color: #999;
|
||||
}
|
||||
.release-do{
|
||||
border: solid 2px;
|
||||
border-color:var(--color);
|
||||
padding:5px;
|
||||
.release-do {
|
||||
border: solid 2px;
|
||||
border-color: var(--text);
|
||||
padding: 5px;
|
||||
}
|
||||
#pickers{
|
||||
display:flex;
|
||||
flex-wrap: wrap;
|
||||
#pickers {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: column;
|
||||
}
|
||||
#menu{
|
||||
position:fixed;
|
||||
z-index:9999;
|
||||
background-color: var(--box);
|
||||
width:540px;
|
||||
top:calc(50% - 150px);
|
||||
left:calc(50% - 250px);
|
||||
padding: 5px;
|
||||
border: thin solid gray;
|
||||
border-radius:5px;
|
||||
input[type="color"] {
|
||||
-webkit-appearance: none;
|
||||
border: none;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
#menu-wrapper{
|
||||
margin-left:-5px;
|
||||
display:flex;
|
||||
input[type="color"]::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
#left-menu{
|
||||
width:170px;
|
||||
input[type="color"]::-webkit-color-swatch {
|
||||
border: none;
|
||||
}
|
||||
#left-menu div{
|
||||
padding-left:5px;
|
||||
width:100%;
|
||||
height:50px;
|
||||
display:flex;
|
||||
align-items:center;
|
||||
cursor:pointer;
|
||||
#menu {
|
||||
position: fixed;
|
||||
z-index: 999;
|
||||
background-color: var(--postbox);
|
||||
width: 540px;
|
||||
top: calc(50% - 150px);
|
||||
left: calc(50% - 250px);
|
||||
padding: 0.4rem;
|
||||
border: thin solid gray;
|
||||
border-radius: 0.4rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
#left-menu div:hover {
|
||||
background-color: var(--beforehover);
|
||||
#menu-wrapper {
|
||||
margin-left: -5px;
|
||||
display: flex;
|
||||
height: calc(100% - 3.5rem);
|
||||
overflow: hidden;
|
||||
}
|
||||
#left-menu span{
|
||||
margin-left:5px;
|
||||
#left-menu {
|
||||
width: 17.7rem;
|
||||
}
|
||||
#left-menu div.active{
|
||||
background-color: var(--emphasized);
|
||||
#left-menu a {
|
||||
padding-left: 0.4rem;
|
||||
width: 100%;
|
||||
height: 3rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
color: var(--text);
|
||||
}
|
||||
#right-menu{
|
||||
width:380px;
|
||||
max-height:375px;
|
||||
overflow-y:scroll;
|
||||
overflow-x:hidden;
|
||||
padding:5px;
|
||||
#left-menu a:hover {
|
||||
background-color: var(--beforehover);
|
||||
}
|
||||
#tltype{
|
||||
display:flex;
|
||||
flex-wrap: wrap;
|
||||
|
||||
#left-menu span {
|
||||
margin-left: 0.4rem;
|
||||
}
|
||||
#tltype .type{
|
||||
display:flex;
|
||||
flex-wrap: wrap;
|
||||
align-items:center;
|
||||
width:170px;
|
||||
height:40px;
|
||||
cursor:pointer;
|
||||
#left-menu a.active {
|
||||
background-color: var(--emphasized);
|
||||
}
|
||||
#left-menu a.active span {
|
||||
text-decoration: underline;
|
||||
}
|
||||
#right-menu {
|
||||
width: 100%;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#tltype {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#tltype .type {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
width: 13rem;
|
||||
height: 3.1rem;
|
||||
cursor: pointer;
|
||||
color: var(--text);
|
||||
}
|
||||
#tltype .type span {
|
||||
width: calc(100% - 2.3rem);
|
||||
}
|
||||
#tltype .type:hover {
|
||||
background-color: var(--beforehover);
|
||||
background-color: var(--beforehover);
|
||||
}
|
||||
#tltype .active{
|
||||
background-color: var(--emphasized);
|
||||
#tltype .active {
|
||||
background-color: var(--emphasized);
|
||||
}
|
||||
#tltype i{
|
||||
font-size:30px;
|
||||
#tltype i {
|
||||
font-size: 2.3rem;
|
||||
}
|
||||
#tltype i.sub-icon {
|
||||
font-size: 1.53rem;
|
||||
position: absolute;
|
||||
color: var(--beforehover);
|
||||
left: 0.9rem;
|
||||
bottom: 0.4rem;
|
||||
background-color: #fff;
|
||||
}
|
||||
.drag-bar {
|
||||
cursor: move;
|
||||
text-align: center;
|
||||
width: calc(100% + 0.8rem);
|
||||
border-radius: 5px;
|
||||
background-color: var(--subcolor);
|
||||
filter: brightness(80%);
|
||||
margin-left: -0.4rem;
|
||||
margin-right: -0.4rem;
|
||||
margin-top: -0.4rem;
|
||||
font-size: 1.3rem;
|
||||
padding: 0.3rem;
|
||||
}
|
||||
#something-wrong {
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
#support-btm {
|
||||
position: fixed;
|
||||
bottom: -300px;
|
||||
width: 100vw;
|
||||
background-color: var(--subcolor);
|
||||
z-index: 9999;
|
||||
padding: 0.8rem;
|
||||
display: grid;
|
||||
grid-template-columns: 3fr 1fr 1fr;
|
||||
grid-template-rows: 1fr 2.7rem;
|
||||
grid-template-areas: 'note middle right' 'note close close';
|
||||
}
|
||||
#support-btm-en,
|
||||
#support-btm-ja {
|
||||
grid-area: note;
|
||||
}
|
||||
#support-btm-middle {
|
||||
grid-area: middle;
|
||||
}
|
||||
#support-btm-right {
|
||||
grid-area: right;
|
||||
}
|
||||
#support-btm-close {
|
||||
grid-area: close;
|
||||
}
|
||||
.select-wrapper .dropdown-content {
|
||||
width: 19.2rem !important;
|
||||
}
|
||||
input,
|
||||
textarea {
|
||||
color: var(--text);
|
||||
font-size: 1rem !important;
|
||||
font-family: inherit;
|
||||
}
|
||||
.swal2-popup {
|
||||
background-color: var(--subcolor) !important;
|
||||
}
|
||||
.swal2-title,
|
||||
.swal2-content {
|
||||
color: var(--text) !important;
|
||||
}
|
||||
#src-contents svg {
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
.contributor {
|
||||
cursor: pointer;
|
||||
}
|
||||
.contributor img {
|
||||
width: 1rem;
|
||||
}
|
||||
.tagComp {
|
||||
display: grid;
|
||||
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: 0.4rem;
|
||||
}
|
||||
.tagCompSvg {
|
||||
grid-area: svg;
|
||||
}
|
||||
.tagCompToot {
|
||||
grid-area: toot;
|
||||
text-align: center;
|
||||
}
|
||||
.tagCompToots {
|
||||
grid-area: toots;
|
||||
text-align: center;
|
||||
}
|
||||
.tagCompUser {
|
||||
grid-area: user;
|
||||
}
|
||||
.tagCompTag {
|
||||
grid-area: tag;
|
||||
padding-top: 0.4rem;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
#sabakanMark {
|
||||
background-color: var(--emphasized);
|
||||
}
|
||||
#pageSrc {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: calc(50vw - 11.53rem);
|
||||
width: 23rem;
|
||||
max-width: 100%;
|
||||
background-color: var(--subcolor);
|
||||
z-index: 501;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#pageSrcInput {
|
||||
width: 12.3rem;
|
||||
}
|
||||
.voice {
|
||||
clip: rect(1px, 1px, 1px, 1px);
|
||||
position: absolute !important;
|
||||
height: 1px;
|
||||
width: 1px;
|
||||
overflow: hidden;
|
||||
}
|
||||
#tltype i.sub-icon{
|
||||
font-size: 20px;
|
||||
position: relative;
|
||||
color: var(--beforehover);
|
||||
left: -15px;
|
||||
|
||||
}
|
||||
.drag-bar{
|
||||
cursor:move;
|
||||
text-align:center;
|
||||
width:calc(100% + 10px);
|
||||
border-radius: 5px;
|
||||
background-color: var(--bg);
|
||||
margin-left:-5px;
|
||||
margin-right:-5px;
|
||||
margin-top:-5px;
|
||||
font-size:16px;
|
||||
padding:4px;
|
||||
}
|
||||
#something-wrong{
|
||||
width:100%; height:100%; position:absolute; display:flex; justify-content: center; align-items:center
|
||||
@media (max-width: 500px) {
|
||||
#pageSrc {
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*スクロールバー*/
|
||||
::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
height: 10px;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
width: 5px;
|
||||
height: 10px;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
::-webkit-scrollbar-track {
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
/* Handle */
|
||||
::-webkit-scrollbar-thumb {
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background: #607d8b;
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
background: #607d8b;
|
||||
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
/* Web Fonts */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: local('Open Sans Light'), local('OpenSans-Light'), url('../fonts/OpenSans-Light.ttf') format('truetype');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Material Icons';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(https://fonts.gstatic.com/s/materialicons/v48/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
|
||||
}
|
||||
.material-icons {
|
||||
font-family: 'Material Icons';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 1.84rem;
|
||||
line-height: 1;
|
||||
letter-spacing: normal;
|
||||
text-transform: none;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
word-wrap: normal;
|
||||
direction: ltr;
|
||||
-webkit-font-feature-settings: 'liga';
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
.pwaView .pwa,
|
||||
.pwaView .mac,
|
||||
.pwaView .win {
|
||||
display: none;
|
||||
}
|
||||
.win32 .mac,
|
||||
.linux .mac {
|
||||
display: none;
|
||||
}
|
||||
.linux .win,
|
||||
.darwin .win {
|
||||
display: none;
|
||||
}
|
||||
.dropdown-content.header:hover {
|
||||
background-color: white;
|
||||
}
|
||||
button {
|
||||
font-family: inherit !important;
|
||||
}
|
||||
.via-dropdown {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
9411
app/css/materialize.css
vendored
16
app/css/materialize.min.css
vendored
187
app/css/post.css
@@ -1,137 +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;
|
||||
min-width:300px;
|
||||
max-width:100%;
|
||||
padding: 5px;
|
||||
border-radius:5px;
|
||||
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: 7.7rem !important;
|
||||
font-family: inherit;
|
||||
}
|
||||
#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 {
|
||||
.picker__close,
|
||||
.picker__today,
|
||||
.picker__clear {
|
||||
color: #26a69a !important;
|
||||
}
|
||||
.cw {
|
||||
display: none;
|
||||
display: none;
|
||||
}
|
||||
.sensitive {
|
||||
filter: blur(50px);
|
||||
filter: blur(50px);
|
||||
}
|
||||
#emoji {
|
||||
|
||||
}
|
||||
#suggest{
|
||||
max-height:300px;
|
||||
overflow-y: scroll;
|
||||
#suggest {
|
||||
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;
|
||||
.preview-img {
|
||||
width: 4rem;
|
||||
max-height: 7.6rem;
|
||||
}
|
||||
.pi-wrap{
|
||||
display:inline-block;
|
||||
width:50px;
|
||||
max-height:100px;
|
||||
.pi-wrap {
|
||||
display: inline-block;
|
||||
width: 3.8rem;
|
||||
max-height: 7.7rem;
|
||||
}
|
||||
#default-emoji a{
|
||||
color:white;
|
||||
margin-right:2px;
|
||||
#default-emoji a {
|
||||
color: var(--text);
|
||||
margin-right: 0.15rem;
|
||||
}
|
||||
.character-counter{
|
||||
position: relative;
|
||||
top: -25px;
|
||||
.character-counter {
|
||||
position: relative;
|
||||
top: -1.9rem;
|
||||
}
|
||||
.trendtag{
|
||||
overflow-y:scroll;
|
||||
max-height:100px;
|
||||
.trendtag {
|
||||
overflow-y: scroll;
|
||||
max-height: 7.7rem;
|
||||
}
|
||||
#toot-btn-field{
|
||||
display:flex;
|
||||
#toot-btn-field {
|
||||
display: flex;
|
||||
}
|
||||
#toot-post-btn{
|
||||
width:calc(100% - 10px); padding:0; margin-top:10px;
|
||||
#toot-post-btn {
|
||||
width: calc(100% - 0.7rem);
|
||||
padding: 0;
|
||||
margin-top: 0.7rem;
|
||||
height: 2.7rem;
|
||||
}
|
||||
#toot-sec-btn{
|
||||
width:30px; padding:0; margin-top:10px;
|
||||
#toot-sec-btn {
|
||||
width: 2.3rem;
|
||||
padding: 0;
|
||||
margin-top: 0.7rem;
|
||||
}
|
||||
#left-side{
|
||||
float:left;
|
||||
width:300px;
|
||||
#left-side {
|
||||
float: left;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 2.5rem);
|
||||
}
|
||||
#right-side{
|
||||
display:none;
|
||||
float:left;
|
||||
width:300px;
|
||||
padding:5px;
|
||||
#right-side {
|
||||
display: none;
|
||||
float: left;
|
||||
width: 23rem;
|
||||
padding: 0.4rem;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 2.5rem);
|
||||
}
|
||||
#poll{
|
||||
|
||||
#posttgl,
|
||||
#toot-post-btn {
|
||||
background-color: var(--active);
|
||||
color: var(--text);
|
||||
}
|
||||
.poll-provider{
|
||||
position: absolute;
|
||||
height: calc(100% - 90px);
|
||||
overflow-y: scroll;
|
||||
top: 90px;
|
||||
}
|
||||
|
||||
/*mini*/
|
||||
.mini-post .mize{
|
||||
display:none !important;
|
||||
.mini-post .mize {
|
||||
display: none !important;
|
||||
}
|
||||
.mini-post #textarea{
|
||||
padding:0;
|
||||
.mini-post #textarea {
|
||||
padding: 0;
|
||||
}
|
||||
.mini-post #post-box{
|
||||
width:200px;
|
||||
min-width:100px;
|
||||
.mini-post #post-box {
|
||||
width: 15.4rem;
|
||||
min-width: 7.7rem;
|
||||
}
|
||||
.mini-post #toot-field{
|
||||
padding:0;
|
||||
.mini-post #toot-field {
|
||||
padding: 0;
|
||||
}
|
||||
.mini-post #toot-btn-field {
|
||||
padding: 0;
|
||||
}
|
||||
.mini-post #toot-btn-field{
|
||||
padding:0;
|
||||
}
|
||||
@@ -1,32 +1,31 @@
|
||||
|
||||
.drag-content{
|
||||
text-overflow: ellipsis;
|
||||
cursor:move;
|
||||
user-select: none;
|
||||
background-color:var(--modalfooter);
|
||||
margin:5px;
|
||||
border-radius:5px;
|
||||
color:var(--color);
|
||||
padding:3px;
|
||||
display:grid;
|
||||
grid-template-columns: 43px 1fr 60px;
|
||||
grid-template-areas: 'sorticon sorttitle sorttitle' 'sorticon sortacct sortaction';
|
||||
.drag-content {
|
||||
text-overflow: ellipsis;
|
||||
cursor: move;
|
||||
user-select: none;
|
||||
background-color: var(--modalfooter);
|
||||
margin: 0.4rem;
|
||||
border-radius: 0.4rem;
|
||||
color: var(--text);
|
||||
padding: 3px;
|
||||
display: grid;
|
||||
grid-template-columns: 3.3rem 1fr 4.6rem;
|
||||
grid-template-areas: "sorticon sorttitle sorttitle" "sorticon sortacct sortaction";
|
||||
}
|
||||
.sorticon {
|
||||
grid-area:sorticon;
|
||||
grid-area: sorticon;
|
||||
}
|
||||
.sorticon i{
|
||||
font-size:43px;
|
||||
.sorticon i {
|
||||
font-size: 3.3rem;
|
||||
}
|
||||
.sorttitle {
|
||||
margin-left:5px;
|
||||
grid-area:sorttitle;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sorttitle;
|
||||
}
|
||||
.sortacct {
|
||||
margin-left:5px;
|
||||
grid-area:sortacct;
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sortacct;
|
||||
}
|
||||
.sortaction {
|
||||
margin-left:5px;
|
||||
grid-area:sortaction;
|
||||
}
|
||||
margin-left: 0.4rem;
|
||||
grid-area: sortaction;
|
||||
}
|
||||
|
||||
@@ -1,100 +1,22 @@
|
||||
:root{
|
||||
--bg:white;
|
||||
--drag:rgba(255, 255, 255, 0.8);
|
||||
--color:black;
|
||||
--beforehover:#757575;
|
||||
--modal:white;
|
||||
--subcolor:#e0e0e0;
|
||||
--box:white;
|
||||
--sidebar:#eeeeee;
|
||||
--shared:#cfd8dc;
|
||||
--notfbox:white;
|
||||
--emphasized:#81c784;
|
||||
--his-data:rgba(255, 255, 255, 0.9);
|
||||
--active:#e6ee9c;
|
||||
--postbox:white;
|
||||
--modalfooter:#fafafa;
|
||||
:root {
|
||||
--bg: #212121;
|
||||
--drag: rgba(0, 0, 0, 0.8);
|
||||
--text: white;
|
||||
--beforehover: #9e9e9e;
|
||||
--modal: black;
|
||||
--thirdColor: #212121;
|
||||
--bottom: #424242;
|
||||
--accent: #004d40;
|
||||
--subcolor: #333333;
|
||||
--emphasized: #4e342e;
|
||||
--his-data: rgba(0, 0, 0, 0.8);
|
||||
--postbox: #424242;
|
||||
--modalfooter: #212121;
|
||||
--active: #3f51b5;
|
||||
--selected: #3f3f3f;
|
||||
--selectedWithShare: #003a30;
|
||||
--gray: #cccccc;
|
||||
}
|
||||
#imagemodal{
|
||||
background: url("../img/pixel.white.svg");
|
||||
}
|
||||
.blacktheme {
|
||||
--bg:#212121;
|
||||
--drag:rgba(0, 0, 0, 0.8);
|
||||
--color:white;
|
||||
--beforehover:#9e9e9e;
|
||||
--modal:black;
|
||||
--subcolor:#212121;
|
||||
--box:#424242;
|
||||
--sidebar:#424242;
|
||||
--shared:#004d40;
|
||||
--notfbox:#333333;
|
||||
--emphasized:#4e342e;
|
||||
--his-data:rgba(0, 0, 0, 0.8);
|
||||
--active:#757575;
|
||||
--postbox:#424242;
|
||||
--modalfooter:#212121;
|
||||
}
|
||||
.blacktheme #imagemodal{
|
||||
background: url("../img/pixel.svg");
|
||||
}
|
||||
.indigotheme {
|
||||
--bg:#031833;
|
||||
--drag:rgba(0, 0, 0, 0.8);
|
||||
--color:white;
|
||||
--beforehover:#9e9e9e;
|
||||
--modal:#0d1351;
|
||||
--subcolor:#0d1351;
|
||||
--shared:#004d40;
|
||||
--box:#0d1351;
|
||||
--sidebar:#0d1351;
|
||||
--notfbox:#0d47a1;
|
||||
--emphasized:#4e342e;
|
||||
--his-data:rgba(13, 19, 81,0.8);
|
||||
--active:#757575;
|
||||
--postbox:#1a237e;
|
||||
--modalfooter:#031833;
|
||||
}
|
||||
.indigotheme #imagemodal{
|
||||
background: url("../img/pixel.svg");
|
||||
}
|
||||
.browntheme {
|
||||
--bg:#261411;
|
||||
--drag:rgba(0, 0, 0, 0.8);
|
||||
--color:white;
|
||||
--beforehover:#9e9e9e;
|
||||
--modal:#261411;
|
||||
--subcolor:#4e342e;
|
||||
--shared:#004d40;
|
||||
--box:#4e342e;
|
||||
--sidebar:#4e342e;
|
||||
--notfbox:#4e342e;
|
||||
--emphasized:#0d47a1;
|
||||
--his-data:rgba(62, 39, 35,0.8);
|
||||
--active:#757575;
|
||||
--postbox:#4e342e;
|
||||
--modalfooter:#261411;
|
||||
}
|
||||
.browntheme #imagemodal{
|
||||
background: url("../img/pixel.svg");
|
||||
}
|
||||
.greentheme{
|
||||
--bg:#c8e6c9;
|
||||
--drag:rgba(255, 255, 255, 0.8);
|
||||
--color:black;
|
||||
--beforehover:#757575;
|
||||
--modal:#81c784;
|
||||
--subcolor:#a5d6a7;
|
||||
--box:#81c784;
|
||||
--sidebar:#81c784;
|
||||
--shared:#ffcc80;
|
||||
--notfbox:#a5d6a7;
|
||||
--emphasized:#9e9d24;
|
||||
--his-data:rgba(255, 255, 255, 0.9);
|
||||
--active:#e6ee9c;
|
||||
--postbox:#a5d6a7;
|
||||
--modalfooter:#81c784;
|
||||
}
|
||||
.greentheme #imagemodal{
|
||||
background: url("../img/pixel.white.svg");
|
||||
#imagemodal {
|
||||
background: url("../img/pixel.svg");
|
||||
}
|
||||
1155
app/css/tl.css
@@ -1,100 +1,159 @@
|
||||
/*アイコンをクリックした時とかにでてくるユーザーデータ*/
|
||||
#his-data {
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('../../loading.svg');
|
||||
overflow-y: hidden;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url('../img/loading.svg');
|
||||
overflow-y: hidden;
|
||||
}
|
||||
#his-name{
|
||||
font-size:1.5rem;
|
||||
#his-data .btn .material-icons {
|
||||
float: left;
|
||||
}
|
||||
#his-data-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
#his-name {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
#his-prof {
|
||||
float: left;
|
||||
width: 100px;
|
||||
margin-right:5px;
|
||||
width: 7.7rem;
|
||||
margin-right: 0.4rem;
|
||||
}
|
||||
.his-float {
|
||||
float: left;
|
||||
overflow-y: scroll;
|
||||
padding: 5px;
|
||||
overflow-y: scroll;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
#his-float-data{
|
||||
width: 400px;
|
||||
height: 100%;
|
||||
#his-float-data {
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
|
||||
}
|
||||
#his-float-timeline{
|
||||
width: calc(100% - 400px);
|
||||
height:100%;
|
||||
overflow-y:hidden;
|
||||
#his-leftside {
|
||||
width: 28.4rem;
|
||||
max-width: 30vw;
|
||||
}
|
||||
#his-basic-prof{
|
||||
min-height:130px;
|
||||
#his-float-timeline {
|
||||
max-width: 47.5rem;
|
||||
min-width: calc(100% - 29.4rem);
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
}
|
||||
#his-matching-list{
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
#his-basic-prof {
|
||||
display: flex;
|
||||
min-height: 10rem;
|
||||
}
|
||||
#his-field{
|
||||
vertical-align: baseline;
|
||||
text-align:center;
|
||||
padding:0;
|
||||
#his-field {
|
||||
vertical-align: baseline;
|
||||
text-align: center;
|
||||
padding: 0;
|
||||
}
|
||||
#his-field tr{
|
||||
height:1.5rem;
|
||||
#his-field tr {
|
||||
height: 1.5rem;
|
||||
}
|
||||
.his-field-title{
|
||||
height:1.5rem; padding:0; background-color:#757575; text-align:center;
|
||||
padding:5px;
|
||||
margin-bottom:1px;
|
||||
width:30%;
|
||||
.his-field-title {
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
background-color: #757575;
|
||||
text-align: center;
|
||||
padding: 0.4rem;
|
||||
margin-bottom: 1px;
|
||||
width: 30%;
|
||||
}
|
||||
.his-field-content{
|
||||
height:1.5rem; padding:0; padding-left:5px;
|
||||
.his-field-content {
|
||||
height: 1.5rem;
|
||||
padding: 0;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
#his-data a span.ellipsis:after{
|
||||
content:"...";
|
||||
.his-var-content a span.ellipsis:after {
|
||||
content: '...';
|
||||
}
|
||||
#his-data a:not(.mention) span:last-of-type{
|
||||
display:none;
|
||||
.his-var-content a:not(.mention) span:last-of-type {
|
||||
display: none;
|
||||
}
|
||||
#his-data a .rep_ct,
|
||||
#his-data a .rt_ct,
|
||||
#his-data a .fav_ct {
|
||||
display: inline !important;
|
||||
}
|
||||
#his-data-show {
|
||||
margin: 20px;
|
||||
background-color:var(--his-data);
|
||||
width: calc(100% - 20px);
|
||||
height: calc(100% - 20px);
|
||||
margin-bottom: 0;
|
||||
padding: 5px;
|
||||
margin: 1.5rem;
|
||||
margin-left: 3.8rem;
|
||||
margin-right: 3.8rem;
|
||||
background-color: var(--his-data);
|
||||
height: calc(100% - 1.5rem);
|
||||
margin-bottom: 0;
|
||||
padding: 0.4rem;
|
||||
}
|
||||
.tab-content {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 240px)
|
||||
#his-data-wrap {
|
||||
display: flex;
|
||||
}
|
||||
.my-data-width {
|
||||
width: 10%;
|
||||
.his-var-content {
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
height: calc(100% - 3.4rem);
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
.active-back{
|
||||
background-color: var(--active);
|
||||
#my-data-nav .btn {
|
||||
width: 10.6rem;
|
||||
}
|
||||
#his-name .emojione,#his-name .emoji-img{
|
||||
width: 20px;
|
||||
#my-data-nav .active-back {
|
||||
display: none;
|
||||
}
|
||||
#his-plus-action .btn{
|
||||
width:170px
|
||||
#his-name .emojione,
|
||||
#his-name .emoji-img {
|
||||
width: 1.538rem;
|
||||
}
|
||||
.custom-tabs{
|
||||
display:flex;
|
||||
#his-plus-action .btn {
|
||||
padding-right: 0.4rem;
|
||||
padding-left: 0.4rem;
|
||||
}
|
||||
.custom-tabs .custom-tab a{
|
||||
padding: 8px 12px;
|
||||
.tabs {
|
||||
display: flex;
|
||||
}
|
||||
#his-des .mention{
|
||||
color: #039be5;
|
||||
cursor: pointer;
|
||||
.tabs .tab a {
|
||||
padding: 0.6rem 0.9rem;
|
||||
}
|
||||
#his-des {
|
||||
max-height: 17.7rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#his-sign-action {
|
||||
border: 1px solid;
|
||||
border-radius: 0.4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
#his-sign-action .btn {
|
||||
flex-basis: calc(50% - 10.6px);
|
||||
}
|
||||
#his-des .mention {
|
||||
color: #039be5;
|
||||
cursor: pointer;
|
||||
}
|
||||
#his-table {
|
||||
max-height: 11.538rem;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#his-float-blocked {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 2rem;
|
||||
height: 100%;
|
||||
}
|
||||
#hisdropdown {
|
||||
background-color: var(--bg);
|
||||
}
|
||||
#hisdropdown li a {
|
||||
color: white;
|
||||
}
|
||||
#hisdropdown li:hover {
|
||||
background-color: var(--active);
|
||||
}
|
||||
#his-data-title {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
#his-float-blocked{
|
||||
display:flex; justify-content: center; align-items:center;
|
||||
font-size:2rem;
|
||||
width: 90%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
}
|
||||
4
app/dist/builder-effective-config.yaml
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
directories:
|
||||
output: dist
|
||||
buildResources: build
|
||||
electronVersion: 1.4.13
|
||||
BIN
app/fonts/OpenSans-Light.ttf
Normal file
69
app/img/2025.svg
Normal file
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 600 600" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="輝き" transform="matrix(0.892356,0,0,0.892356,36.941,-15.9516)">
|
||||
<g transform="matrix(2.39479,0,0,2.21494,-178.97,-182.183)">
|
||||
<ellipse cx="123.217" cy="151.049" rx="36.923" ry="35.804" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
|
||||
<ellipse cx="120.479" cy="305.524" rx="112.5" ry="52" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.952046,-0.305955,0.305955,0.952046,-139.881,8.62199)">
|
||||
<ellipse cx="134.479" cy="430.524" rx="46.5" ry="84" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,2.39158,-65.1678)">
|
||||
<ellipse cx="130.479" cy="561.024" rx="72.5" ry="74.5" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
|
||||
<ellipse cx="156.979" cy="651.76" rx="68" ry="60.235" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.954888,0.296965,-0.296965,0.954888,55.6063,-54.2336)">
|
||||
<ellipse cx="199.479" cy="158.995" rx="98.5" ry="51" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.931851,0.362841,-0.362841,0.931851,63.1962,-89.0819)">
|
||||
<ellipse cx="344.979" cy="135.857" rx="74" ry="90.137" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-56.6084,-45.1678)">
|
||||
<ellipse cx="493.479" cy="301.22" rx="126.5" ry="55.5" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-14.6084,-70.1678)">
|
||||
<ellipse cx="531.479" cy="368.22" rx="58.5" ry="54.5" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.973706,-0.227807,0.227807,0.973706,-124.722,44.48)">
|
||||
<ellipse cx="265.479" cy="614.97" rx="98.5" ry="37.5" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.982834,-0.184492,0.184492,0.982834,-148.417,-31.379)">
|
||||
<ellipse cx="407.479" cy="676.47" rx="71.5" ry="96" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,-34.6084,-22.1678)">
|
||||
<ellipse cx="468.979" cy="511.47" rx="48" ry="31" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.880625,0.473815,-0.473815,0.880625,260.236,-235.714)">
|
||||
<ellipse cx="533.979" cy="472.97" rx="46" ry="99.5" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,9.39159,-36.1678)">
|
||||
<circle cx="69.229" cy="310.72" r="24.25" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-48.1678)">
|
||||
<circle cx="98.229" cy="417.72" r="25.25" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(0.76,0,0,0.76,96.9465,101.545)">
|
||||
<circle cx="375.229" cy="646.72" r="56.25" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,1,8.39159,-32.1678)">
|
||||
<circle cx="427.729" cy="287.22" r="32.75" style="fill:white;"/>
|
||||
</g>
|
||||
<g id="cat" transform="matrix(0.0249784,0,0,0.0249784,346.146,563.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
<g id="cat1" serif:id="cat" transform="matrix(-0.0249784,0,0,0.0249784,147.519,318.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
<g id="cat2" serif:id="cat" transform="matrix(-0.0249784,0,0,0.0249784,120.519,222.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
<g id="cat3" serif:id="cat" transform="matrix(0.0249784,0,0,0.0249784,390.146,196.341)">
|
||||
<path d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(5,127,254);"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.8 KiB |
37
app/img/desk-animation.svg
Normal file
@@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="TheDesk">
|
||||
<g id="back">
|
||||
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)">
|
||||
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:rgba(255,255,255,0);">
|
||||
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
|
||||
</rect>
|
||||
</g>
|
||||
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:rgba(255,255,255,0);">
|
||||
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
|
||||
</rect>
|
||||
<g transform="matrix(1.08582,0,0,1,-142.973,0)">
|
||||
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:rgba(255,255,255,0);">
|
||||
<animate attributeName="fill" begin="0.5s" dur="0.1s" fill="freeze" values="rgba(255,255,255,0);rgba(255,255,255,1)" />
|
||||
</rect>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,0.998821,0,4.65666)" id="gray">
|
||||
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.999978,-5.55112e-17,-2.20005e-08,0.996112,-1237.17,972.039)" id="orange">
|
||||
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);" r="3117.62">
|
||||
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,-583.55" to="-60,1915.71,-583.55" dur="0.5s" repeatCount="1" fill="freeze" />
|
||||
</rect>
|
||||
</g>
|
||||
<g transform="matrix(0.999978,5.55112e-17,-5.55112e-17,0.999978,-1236.96,-1164.58)" id="blue">
|
||||
<rect x="1915.5" y="1775.41" width="450" height="3105.58" style="fill:rgb(54,76,159);" r="3117.62">
|
||||
<animateTransform attributeName="transform" attributeType="XML" type="rotate" from="0,1915.71,4881" to="60,1915.71,4881" dur="0.5s" repeatCount="1" fill="freeze" />
|
||||
</rect>
|
||||
</g>
|
||||
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgba(0,0,0,0);">
|
||||
<animate attributeName="fill" begin="0.6s" dur="0.5s" fill="freeze" values="rgba(0,0,0,0);rgba(0,0,0,1)" repeatCount="1" />
|
||||
</path>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.6 KiB |
BIN
app/img/desk.png
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 22 KiB |
26
app/img/desk.svg
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 4096 4096" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g id="TheDesk">
|
||||
<g>
|
||||
<g transform="matrix(1,0,0,1.53232,-11.8871,-1144.65)">
|
||||
<rect x="1044.02" y="1686.36" width="2335.77" height="782.558" style="fill:white;"/>
|
||||
</g>
|
||||
<rect x="1058.89" y="609.971" width="711.146" height="2885.69" style="fill:white;"/>
|
||||
<g transform="matrix(1.08582,0,0,1,-142.973,0)">
|
||||
<rect x="1665.9" y="1021.89" width="776.607" height="2050.26" style="fill:white;"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="matrix(1,0,0,0.998821,0,4.65666)">
|
||||
<rect x="678.5" y="128.48" width="450" height="3821.5" style="fill:rgb(84,82,81);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.5,-0.866,0.862652,0.498067,224.046,2340.41)">
|
||||
<rect x="1915.71" y="-583.55" width="450" height="3117.62" style="fill:rgb(240,132,46);"/>
|
||||
</g>
|
||||
<g transform="matrix(0.5,0.866,-0.866,0.5,3757.17,-299.625)">
|
||||
<rect x="1915.5" y="1555.41" width="450" height="3105.58" style="fill:rgb(54,76,159);"/>
|
||||
</g>
|
||||
<path id="cat" d="M1592.47,2584L2048.94,2584C2048.94,2519.11 2044.31,2506.24 1936.84,2506.24C1954.01,2454.74 2023.79,2330.13 2062.57,2330.13C2096.88,2330.13 2137.81,2332.02 2137.81,2410.3C2137.81,2499.17 2287.37,2642.46 2323.63,2584C2377.67,2496.88 2230.72,2523.45 2230.72,2313.35C2230.72,2025.92 2398.46,2066.84 2398.46,1905.36C2398.46,1824.57 2376.14,1813.66 2376.14,1755.9C2376.14,1679.56 2443.39,1683.99 2430.31,1620.7C2421.27,1576.98 2414.2,1541.92 2408.93,1489.05C2405.19,1451.54 2404,1411.55 2365.03,1413.16C2319.25,1415.05 2301.88,1495.63 2230.72,1501.41C2159.7,1507.18 2099.15,1440.95 2071.66,1450.41C2044.41,1459.79 2052.98,1533.73 2069.14,1586.24C2094.54,1668.78 2149.93,1776.1 2048.94,1792.26C1947.95,1808.42 1774.25,1824.58 1649.02,1990.2C1523.79,2155.82 1528.42,2350.19 1479.36,2410.31C1314.72,2612.08 1146,2529.23 1146,2697.11C1146,2772.27 1273.35,2826.38 1293.55,2802.14C1313.75,2777.9 1121.93,2705.68 1336.56,2620.36C1519.91,2547.46 1536.28,2532.58 1592.47,2584Z" style="fill:rgb(4,0,0);"/>
|
||||
<rect x="0" y="0" width="4096" height="4096" style="fill:none;"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -1,122 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
width="7.11022in" height="7.11022in"
|
||||
viewBox="0 0 512 512">
|
||||
<path id="選択範囲 #1"
|
||||
fill="white" stroke="white" stroke-width="1"
|
||||
d="M 96.00,16.00
|
||||
C 99.85,16.01 102.39,15.12 104.00,19.00
|
||||
104.00,19.00 97.00,19.00 97.00,19.00
|
||||
97.00,19.00 108.00,22.07 108.00,22.07
|
||||
108.00,22.07 144.00,43.08 144.00,43.08
|
||||
144.00,43.08 181.83,64.31 181.83,64.31
|
||||
181.83,64.31 223.00,88.26 223.00,88.26
|
||||
223.00,88.26 247.00,102.22 247.00,102.22
|
||||
247.00,102.22 257.00,107.00 257.00,107.00
|
||||
260.09,110.36 266.43,114.39 271.00,115.00
|
||||
271.00,115.00 298.00,133.00 298.00,133.00
|
||||
298.00,133.00 300.00,132.00 300.00,132.00
|
||||
300.00,132.00 312.00,141.00 312.00,141.00
|
||||
312.00,141.00 314.00,140.00 314.00,140.00
|
||||
318.40,144.39 334.83,152.80 341.00,156.45
|
||||
341.00,156.45 404.00,192.94 404.00,192.94
|
||||
404.00,192.94 425.67,205.63 425.67,205.63
|
||||
428.70,208.64 426.87,211.86 425.12,215.00
|
||||
425.12,215.00 412.26,237.00 412.26,237.00
|
||||
410.65,240.07 409.02,245.62 404.90,245.68
|
||||
401.70,245.72 396.83,242.47 394.00,240.87
|
||||
394.00,240.87 370.00,226.89 370.00,226.89
|
||||
370.00,226.89 282.00,176.51 282.00,176.51
|
||||
282.00,176.51 271.00,169.52 271.00,169.52
|
||||
271.00,169.52 261.00,164.31 261.00,164.31
|
||||
257.45,162.08 251.05,157.46 247.00,157.00
|
||||
247.00,157.00 234.00,148.55 234.00,148.55
|
||||
234.00,148.55 208.17,133.78 208.17,133.78
|
||||
208.17,133.78 190.00,124.00 190.00,124.00
|
||||
190.00,124.00 163.00,107.60 163.00,107.60
|
||||
163.00,107.60 103.00,73.00 103.00,73.00
|
||||
103.00,73.00 103.00,453.00 103.00,453.00
|
||||
103.00,453.00 127.00,439.42 127.00,439.42
|
||||
127.00,439.42 170.00,414.58 170.00,414.58
|
||||
170.00,414.58 237.17,376.24 237.17,376.24
|
||||
237.17,376.24 256.00,364.59 256.00,364.59
|
||||
256.00,364.59 264.00,360.53 264.00,360.53
|
||||
264.00,360.53 285.00,348.20 285.00,348.20
|
||||
285.00,348.20 292.99,344.12 292.99,344.12
|
||||
292.99,344.12 299.28,339.83 299.28,339.83
|
||||
299.28,339.83 320.00,328.41 320.00,328.41
|
||||
320.00,328.41 362.00,304.05 362.00,304.05
|
||||
362.00,304.05 371.91,297.68 371.91,297.68
|
||||
371.91,297.68 379.04,294.41 379.04,294.41
|
||||
379.04,294.41 410.00,276.00 410.00,276.00
|
||||
410.00,276.00 416.00,285.00 416.00,285.00
|
||||
416.81,288.83 421.21,296.21 424.00,299.00
|
||||
424.00,299.00 423.00,301.00 423.00,301.00
|
||||
427.24,303.72 430.62,312.17 432.00,317.00
|
||||
432.00,317.00 388.00,342.67 388.00,342.67
|
||||
388.00,342.67 317.00,383.55 317.00,383.55
|
||||
317.00,383.55 279.00,405.32 279.00,405.32
|
||||
279.00,405.32 264.00,415.00 264.00,415.00
|
||||
264.00,415.00 262.00,414.00 262.00,414.00
|
||||
262.00,414.00 250.00,423.00 250.00,423.00
|
||||
250.00,423.00 248.00,422.00 248.00,422.00
|
||||
248.00,422.00 238.00,428.92 238.00,428.92
|
||||
238.00,428.92 218.00,440.67 218.00,440.67
|
||||
218.00,440.67 207.00,448.00 207.00,448.00
|
||||
207.00,448.00 193.00,455.18 193.00,455.18
|
||||
193.00,455.18 176.00,465.08 176.00,465.08
|
||||
176.00,465.08 166.09,470.31 166.09,470.31
|
||||
166.09,470.31 137.00,487.31 137.00,487.31
|
||||
137.00,487.31 103.00,506.00 103.00,506.00
|
||||
103.00,506.00 104.00,509.00 104.00,509.00
|
||||
104.00,509.00 57.00,509.00 57.00,509.00
|
||||
57.00,509.00 57.00,16.00 57.00,16.00
|
||||
57.00,16.00 96.00,16.00 96.00,16.00 Z
|
||||
M 102.00,72.00
|
||||
C 102.00,72.00 103.00,73.00 103.00,73.00
|
||||
103.00,73.00 103.00,72.00 103.00,72.00
|
||||
103.00,72.00 102.00,72.00 102.00,72.00 Z
|
||||
M 261.00,190.61
|
||||
C 270.30,188.63 274.03,177.15 280.77,179.78
|
||||
284.36,181.18 284.28,187.65 284.72,191.00
|
||||
285.35,195.85 287.64,207.99 286.57,212.00
|
||||
285.51,216.00 282.42,218.30 280.78,222.00
|
||||
277.54,229.29 282.79,236.85 282.99,245.00
|
||||
283.38,261.24 274.02,264.52 266.36,276.00
|
||||
261.36,283.50 258.58,297.05 259.09,306.00
|
||||
259.91,320.41 263.09,322.38 271.02,333.00
|
||||
273.09,335.77 275.09,339.39 272.11,342.37
|
||||
269.94,344.63 266.39,343.51 264.00,342.37
|
||||
258.40,339.52 252.76,332.51 249.91,327.00
|
||||
246.61,320.60 248.26,314.37 244.57,310.23
|
||||
240.72,305.90 235.19,306.50 231.18,310.23
|
||||
225.69,315.34 221.16,325.22 218.00,332.00
|
||||
226.04,333.96 232.79,331.61 234.00,342.00
|
||||
234.00,342.00 175.00,342.00 175.00,342.00
|
||||
166.62,341.85 166.77,339.11 162.00,338.56
|
||||
158.39,338.15 148.72,341.68 145.00,343.05
|
||||
138.31,345.53 120.54,352.22 119.64,360.00
|
||||
119.01,365.49 125.06,367.91 127.00,374.00
|
||||
115.41,373.03 104.20,364.93 108.88,352.00
|
||||
111.36,345.12 117.06,343.57 123.00,340.75
|
||||
132.86,336.05 141.94,332.38 149.58,323.96
|
||||
151.40,321.95 154.62,318.26 155.92,316.00
|
||||
155.92,316.00 166.03,283.00 166.03,283.00
|
||||
169.87,271.08 179.16,256.26 189.00,248.52
|
||||
199.37,240.36 208.38,237.36 221.00,234.66
|
||||
226.45,233.50 237.77,232.36 240.99,227.79
|
||||
244.55,222.75 241.98,216.26 240.34,211.00
|
||||
237.46,201.77 234.64,193.69 237.00,184.00
|
||||
244.82,185.47 252.94,192.32 261.00,190.61 Z
|
||||
M 102.00,453.00
|
||||
C 102.00,453.00 103.00,454.00 103.00,454.00
|
||||
103.00,454.00 103.00,453.00 103.00,453.00
|
||||
103.00,453.00 102.00,453.00 102.00,453.00 Z
|
||||
M 102.00,505.00
|
||||
C 102.00,505.00 103.00,506.00 103.00,506.00
|
||||
103.00,506.00 103.00,505.00 103.00,505.00
|
||||
103.00,505.00 102.00,505.00 102.00,505.00 Z" />
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!--
|
||||
TheDesk icon, Cutls P.
|
||||
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||
-->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{display:none;}
|
||||
.st1{fill:none;}
|
||||
.st2{fill:#FFFFFF;}
|
||||
.st3{fill:#FFFFFF;}
|
||||
.st4{fill:#FFFFFF;}
|
||||
.st5{fill:#none;}
|
||||
.st6{fill-rule:evenodd;clip-rule:evenodd;fill:#FFFFFF;}
|
||||
.st7{fill-rule:evenodd;clip-rule:evenodd;fill:none;}
|
||||
</style>
|
||||
<g id="レイヤー_1" class="st0">
|
||||
</g>
|
||||
<g id="レイヤー_2">
|
||||
<polyline class="st1" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
|
||||
<rect x="678.5" y="128.48" class="st2" width="450" height="3821.5"/>
|
||||
|
||||
<rect x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st3" width="450" height="3117.62"/>
|
||||
|
||||
<rect x="1915.5" y="1555.41" transform="matrix(0.5 0.866 -0.866 0.5 3762.031 -299.6245)" class="st4" width="450" height="3105.58"/>
|
||||
<path class="st5" d="M714.5,2953.5"/>
|
||||
<path id="path1891" class="st6" d="M1592.47,2584h456.47c0-64.89-4.63-77.76-112.1-77.76c17.17-51.5,86.95-176.11,125.73-176.11
|
||||
c34.31,0,75.24,1.89,75.24,80.17c0,88.87,149.56,232.16,185.82,173.7c54.04-87.12-92.91-60.55-92.91-270.65
|
||||
c0-287.43,167.74-246.51,167.74-407.99c0-80.79-22.32-91.7-22.32-149.46c0-76.34,67.25-71.91,54.17-135.2
|
||||
c-9.04-43.72-16.11-78.78-21.38-131.65c-3.74-37.51-4.93-77.5-43.9-75.89c-45.78,1.89-63.15,82.47-134.31,88.25
|
||||
c-71.02,5.77-131.57-60.46-159.06-51c-27.25,9.38-18.68,83.32-2.52,135.83c25.4,82.54,80.79,189.86-20.2,206.02
|
||||
c-100.99,16.16-274.69,32.32-399.92,197.94s-120.6,359.99-169.66,420.11C1314.72,2612.08,1146,2529.23,1146,2697.11
|
||||
c0,75.16,127.35,129.27,147.55,105.03c20.2-24.24-171.62-96.46,43.01-181.78C1519.91,2547.46,1536.28,2532.58,1592.47,2584z"/>
|
||||
<rect class="st7" width="4096" height="4096"/>
|
||||
<path class="st1" d="M-58,1122"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 2.3 KiB |
BIN
app/img/icons/icon-128x128.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
app/img/icons/icon-144x144.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app/img/icons/icon-152x152.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
app/img/icons/icon-192x192.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
app/img/icons/icon-384x384.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
app/img/icons/icon-512x512.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
app/img/icons/icon-72x72.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
app/img/icons/icon-96x96.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 434 B |
2
app/img/picture.svg
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>
|
||||
|
After Width: | Height: | Size: 259 B |
|
Before Width: | Height: | Size: 34 KiB |
136
app/img/thinking.svg
Normal file
@@ -0,0 +1,136 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
ThinkingDesk: Cutls P's icon, Cutls P.
|
||||
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
|
||||
-->
|
||||
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 4096 4096" style="enable-background:new 0 0 4096 4096;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#040000;}
|
||||
.st1{fill:#040000;stroke:#040000;stroke-miterlimit:10;}
|
||||
.st2{clip-path:url(#SVGID_2_);}
|
||||
.st3{clip-path:url(#SVGID_4_);}
|
||||
.st4{fill:none;}
|
||||
.st5{fill:#FFFFFF;}
|
||||
.st6{fill:#545251;stroke:#040000;stroke-miterlimit:10;}
|
||||
.st7{fill:#F0842E;}
|
||||
.st8{fill:#3D4FA0;}
|
||||
.st9{fill:#63451F;stroke:#FFFFFF;stroke-width:20;stroke-miterlimit:10;}
|
||||
.st10{fill:#63451F;}
|
||||
</style>
|
||||
<g id="DrawBlack">
|
||||
<polyline id="BG_1_" class="st0" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
|
||||
<rect id="Left_1_" x="678.5" y="128.48" class="st1" width="450" height="3821.5"/>
|
||||
|
||||
<rect id="Top_1_" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st0" width="450" height="3117.62"/>
|
||||
<g id="Finger_1_">
|
||||
<g>
|
||||
<defs>
|
||||
|
||||
<rect id="SVGID_1_" x="-626.54" y="666.18" transform="matrix(0.9063 -0.4226 0.4226 0.9063 -723.8983 1097.2598)" width="5478.6" height="3030.2"/>
|
||||
</defs>
|
||||
<clipPath id="SVGID_2_">
|
||||
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
|
||||
</clipPath>
|
||||
<g id="g14_3_" class="st2">
|
||||
<g id="g44_1_" transform="translate(17.2764,0.8682)">
|
||||
<path id="path46_1_" class="st0" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
|
||||
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
|
||||
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
|
||||
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
|
||||
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
|
||||
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
|
||||
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
|
||||
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Eyes_1_">
|
||||
<g>
|
||||
<defs>
|
||||
<rect id="SVGID_3_" x="95.01" y="544.01" width="3526.99" height="3526.99"/>
|
||||
</defs>
|
||||
<clipPath id="SVGID_4_">
|
||||
<use xlink:href="#SVGID_3_" style="overflow:visible;"/>
|
||||
</clipPath>
|
||||
<g id="g14_2_" class="st3">
|
||||
<g id="g24_1_" transform="translate(15.4063,25.5)">
|
||||
<path id="path26_1_" class="st0" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93
|
||||
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"
|
||||
/>
|
||||
</g>
|
||||
<g id="g32_1_" transform="translate(9.6709,29.667)">
|
||||
<path id="path34_1_" class="st0" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
|
||||
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
|
||||
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
|
||||
</g>
|
||||
<g id="g36_1_" transform="translate(14.7427,16.4277)">
|
||||
<path id="path38_1_" class="st0" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
|
||||
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
|
||||
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
|
||||
</g>
|
||||
<g id="g40_1_" transform="translate(20.4307,25.917)">
|
||||
<path id="path42_1_" class="st0" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
|
||||
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
|
||||
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
|
||||
</g>
|
||||
<g id="g28_1_" transform="translate(26,24.5)">
|
||||
<path id="path30_1_" class="st0" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93
|
||||
c-108.16,0-195.94-109.63-195.94-244.93c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Path">
|
||||
<path id="CutLine" class="st4" d="M528,128C532-14,669,0,669,0h346l2629,1464c0,0,78,34,28,108s-217,359-217,359s-22,9,9,226
|
||||
s-204,313-204,313l-545,356c0,0,421.37,492.67,29.68,732.33S1798,4056,1798,4056s28.13,15-290.94,15s-828.56,0-828.56,0
|
||||
S531,4102,528,3904S528,128,528,128z"/>
|
||||
</g>
|
||||
<g id="Draw">
|
||||
<polyline id="BG" class="st5" points="1128.5,650.67 3378,1950 3378,2137 1128.5,3432.67 "/>
|
||||
<rect id="Left" x="678.5" y="128.48" class="st6" width="450" height="3821.5"/>
|
||||
|
||||
<rect id="Top" x="1915.71" y="-583.55" transform="matrix(0.5 -0.866 0.866 0.5 225.753 2341.5386)" class="st7" width="450" height="3117.62"/>
|
||||
<g id="Finger">
|
||||
<g id="g44" transform="translate(17.2764,0.8682)">
|
||||
<path id="path46" class="st8" d="M2605.11,3533.86c0,0,159.85-112.71,149-195.05c-10.68-85.2-127.58-48.89-127.58-48.89
|
||||
s136.18-82.82,112.7-180.35c-22.17-91.83-167.38-48.54-167.38-48.54s119.56-92.9,85.39-182.75
|
||||
c-28.87-75.6-188.03-44.94-188.03-44.94s651.47-417.09,718.51-459.5c66.86-42.42,160.29-131.95,87.28-198.12
|
||||
c-72.76-66.37-205.83-7.85-269.88,32.69c-64.01,40.62-874.42,553.28-1153.93,730.24c-29.84,18.84-169.66,107.16-186.59,118.03
|
||||
c-69.96,44.42-112.22,42.02-74.07-13.01c51.14-73.63,74.73-139.7,55.45-222.1c-20.44-86.69-114.31-161.6-159.65-186.44
|
||||
c-84.35-46.21-197.27-61.16-306.71-33.34c-170.83,43.44-256.98,149.65-157.15,218.26c149.29,102.66,148.88,244.02,37.82,381.07
|
||||
c-261.05,322.06-363.57,512.7-142.28,713.95c241.24,219.53,812.72,166.75,1276.35-126.35
|
||||
C2218.92,3773.38,2605.11,3533.86,2605.11,3533.86"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Eyes">
|
||||
<g id="g24" transform="translate(15.4063,25.5)">
|
||||
<path id="path26" class="st9" d="M1588.99,1547.21c0,135.3-87.78,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
|
||||
c0-135.2,87.78-244.93,195.94-244.93C1501.21,1302.28,1588.99,1412.01,1588.99,1547.21"/>
|
||||
</g>
|
||||
<g id="g32" transform="translate(9.6709,29.667)">
|
||||
<path id="path34" class="st9" d="M1032.82,1134.8c-16.07-8.52-29.69-21.85-38.31-38.99c-21.16-42.03-3.92-90.82,38.5-109.04
|
||||
c417.95-179.29,754.29-4.21,768.39,3.33c42.42,22.63,59.57,73.28,38.31,113.06c-21.16,39.68-72.5,53.49-114.92,31.16
|
||||
c-12.05-6.27-277.46-140.3-615.07,4.6C1084.54,1149.59,1056.13,1147.24,1032.82,1134.8"/>
|
||||
</g>
|
||||
<g id="g36" transform="translate(14.7427,16.4277)">
|
||||
<path id="path38" class="st9" d="M1524.64,2445.12c-13.32-12.44-23.12-28.71-27.04-47.61c-9.7-45.95,19.4-88.76,65.15-95.42
|
||||
c449.89-66.43,730.09,188.99,741.94,199.86c35.27,32.72,38.7,85.92,8.03,119.04c-30.57,32.92-83.77,33.11-118.94,0.59
|
||||
c-10.19-9.01-232.39-206.52-595.87-152.93C1570.78,2472.65,1543.94,2463.15,1524.64,2445.12"/>
|
||||
</g>
|
||||
<g id="g40" transform="translate(20.4307,25.917)">
|
||||
<path id="path42" class="st9" d="M2076.21,1505.94c-15.28-9.6-28.02-23.81-35.47-41.54c-18.32-43.3,2.25-90.92,45.75-106.2
|
||||
c429.22-150.48,752.91,47.03,766.53,55.55c40.66,25.47,54.28,77.1,30.47,115.41c-23.71,38.21-76.03,48.5-116.68,23.32
|
||||
c-11.76-7.15-267.27-158.81-613.99-37.23C2126.96,1524.26,2098.75,1519.95,2076.21,1505.94"/>
|
||||
</g>
|
||||
<g id="g28" transform="translate(26,24.5)">
|
||||
<path id="path30" class="st10" d="M2616.28,1646.19c0,135.3-87.69,244.93-195.94,244.93c-108.16,0-195.94-109.63-195.94-244.93
|
||||
c0-135.2,87.78-244.93,195.94-244.93C2528.6,1401.26,2616.28,1510.99,2616.28,1646.19"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.0 KiB |
7
app/index.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv=”refresh” content=”0;URL=’./view/ja'” />
|
||||
<script>location.href = './view/ja';</script>
|
||||
</head>
|
||||
</html>
|
||||
@@ -1,6 +1,5 @@
|
||||
//@ts-check
|
||||
//このソフトについて
|
||||
function about() {
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('about', 'go');
|
||||
postMessage(["sendSinmpleIpc", "about"], "*")
|
||||
}
|
||||
119
app/js/common/blurhash.js
Normal file
@@ -0,0 +1,119 @@
|
||||
var digitCharacters = [
|
||||
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
||||
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
|
||||
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
|
||||
"U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d",
|
||||
"e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
|
||||
"o", "p", "q", "r", "s", "t", "u", "v", "w", "x",
|
||||
"y", "z", "#", "$", "%", "*", "+", ",", "-", ".",
|
||||
":", ";", "=", "?", "@", "[", "]", "^", "_", "{",
|
||||
"|", "}", "~",
|
||||
];
|
||||
function decode83(str) {
|
||||
var value = 0;
|
||||
for (var i = 0; i < str.length; i++) {
|
||||
var c = str[i];
|
||||
var digit = digitCharacters.indexOf(c);
|
||||
value = value * 83 + digit;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
function linearTosRGB(value) {
|
||||
var v = Math.max(0, Math.min(1, value));
|
||||
if (v <= 0.0031308) {
|
||||
return Math.round(v * 12.92 * 255 + 0.5);
|
||||
}
|
||||
else {
|
||||
return Math.round((1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255 + 0.5);
|
||||
}
|
||||
}
|
||||
function sRGBToLinear(value) {
|
||||
var v = value / 255;
|
||||
if (v <= 0.04045) {
|
||||
return v / 12.92;
|
||||
}
|
||||
else {
|
||||
return Math.pow((v + 0.055) / 1.055, 2.4);
|
||||
}
|
||||
}
|
||||
function decodeDC(value) {
|
||||
var intR = value >> 16;
|
||||
var intG = (value >> 8) & 255;
|
||||
var intB = value & 255;
|
||||
return [sRGBToLinear(intR), sRGBToLinear(intG), sRGBToLinear(intB)];
|
||||
};
|
||||
function sign(n) { return (n < 0 ? -1 : 1); }
|
||||
function signPow(val, exp) { return sign(val) * Math.pow(Math.abs(val), exp); }
|
||||
function decodeDC2(value, maximumValue) {
|
||||
var quantR = Math.floor(value / (19 * 19));
|
||||
var quantG = Math.floor(value / 19) % 19;
|
||||
var quantB = value % 19;
|
||||
var rgb = [
|
||||
signPow((quantR - 9) / 9, 2.0) * maximumValue,
|
||||
signPow((quantG - 9) / 9, 2.0) * maximumValue,
|
||||
signPow((quantB - 9) / 9, 2.0) * maximumValue,
|
||||
];
|
||||
return rgb;
|
||||
};
|
||||
function decodeblur(blurhash, width, height, punch) {
|
||||
punch = punch | 1;
|
||||
if (blurhash.length < 6) {
|
||||
console.error('too short blurhash');
|
||||
return null;
|
||||
}
|
||||
var sizeFlag = decode83(blurhash[0]);
|
||||
var numY = Math.floor(sizeFlag / 9) + 1;
|
||||
var numX = (sizeFlag % 9) + 1;
|
||||
var quantisedMaximumValue = decode83(blurhash[1]);
|
||||
var maximumValue = (quantisedMaximumValue + 1) / 166;
|
||||
if (blurhash.length !== 4 + 2 * numX * numY) {
|
||||
console.error('blurhash length mismatch', blurhash.length, 4 + 2 * numX * numY);
|
||||
return null;
|
||||
}
|
||||
var colors = new Array(numX * numY);
|
||||
for (var i = 0; i < colors.length; i++) {
|
||||
if (i === 0) {
|
||||
var value = decode83(blurhash.substring(2, 6));
|
||||
colors[i] = decodeDC(value);
|
||||
}
|
||||
else {
|
||||
var value = decode83(blurhash.substring(4 + i * 2, 6 + i * 2));
|
||||
colors[i] = decodeDC2(value, maximumValue * punch);
|
||||
}
|
||||
}
|
||||
var bytesPerRow = width * 4;
|
||||
var pixels = new Uint8ClampedArray(bytesPerRow * height);
|
||||
for (var y = 0; y < height; y++) {
|
||||
for (var x = 0; x < width; x++) {
|
||||
var r = 0;
|
||||
var g = 0;
|
||||
var b = 0;
|
||||
for (var j = 0; j < numY; j++) {
|
||||
for (var i = 0; i < numX; i++) {
|
||||
var basis = Math.cos(Math.PI * x * i / width) * Math.cos(Math.PI * y * j / height);
|
||||
var color = colors[i + j * numX];
|
||||
r += color[0] * basis;
|
||||
g += color[1] * basis;
|
||||
b += color[2] * basis;
|
||||
}
|
||||
}
|
||||
var intR = linearTosRGB(r);
|
||||
var intG = linearTosRGB(g);
|
||||
var intB = linearTosRGB(b);
|
||||
pixels[4 * x + 0 + y * bytesPerRow] = intR;
|
||||
pixels[4 * x + 1 + y * bytesPerRow] = intG;
|
||||
pixels[4 * x + 2 + y * bytesPerRow] = intB;
|
||||
pixels[4 * x + 3 + y * bytesPerRow] = 255; // alpha
|
||||
}
|
||||
}
|
||||
return pixels;
|
||||
}
|
||||
function parseBlur(blur) {
|
||||
var canvas = document.getElementById('canvas');
|
||||
var ctx = canvas.getContext('2d');
|
||||
var pixels = decodeblur(blur, 32, 32)
|
||||
const imageData = new ImageData(pixels, 32, 32);
|
||||
|
||||
ctx.putImageData(imageData, 0, 0);
|
||||
return canvas.toDataURL()
|
||||
}
|
||||
4
app/js/common/jquery.js
vendored
@@ -1,204 +1,275 @@
|
||||
selectedColumn = 0
|
||||
selectedToot = 0
|
||||
$(function($) {
|
||||
//キーボードショートカット
|
||||
$(window).keydown(function(e) {
|
||||
var hasFocus = $('input').is(':focus');
|
||||
var hasFocus2 = $('textarea').is(':focus');
|
||||
if(document.getElementById("webview")){
|
||||
if($("#webviewsel:checked").val()){
|
||||
var wv=false;
|
||||
}else{
|
||||
var wv=true;
|
||||
var hasFocus = $('input').is(':focus')
|
||||
var hasFocus2 = $('textarea').is(':focus')
|
||||
if (document.getElementById('webview')) {
|
||||
if ($('#webviewsel:checked').val()) {
|
||||
var wv = false
|
||||
} else {
|
||||
var wv = true
|
||||
}
|
||||
} else {
|
||||
var wv = true
|
||||
}
|
||||
//Enter
|
||||
if (e.keyCode === 13) {
|
||||
if ($('#src').is(':focus')) {
|
||||
src()
|
||||
return false
|
||||
}
|
||||
if ($('#list-add').is(':focus')) {
|
||||
makeNewList()
|
||||
return false
|
||||
}
|
||||
}else{
|
||||
var wv=true;
|
||||
}
|
||||
//Ctrl+Shift+Enter:Lgen
|
||||
if (event.metaKey || event.ctrlKey && wv) {
|
||||
if (event.metaKey || (event.ctrlKey && wv)) {
|
||||
if (event.shiftKey) {
|
||||
if (e.keyCode === 13) {
|
||||
post('local');
|
||||
return false;
|
||||
post('local')
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//Ctrl+Enter:投稿
|
||||
if (event.metaKey || event.ctrlKey && wv) {
|
||||
if (event.metaKey || (event.ctrlKey && wv)) {
|
||||
if (e.keyCode === 13) {
|
||||
post();
|
||||
return false;
|
||||
post()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Alt+Enter:セカンダリー
|
||||
if (event.metaKey || event.altKey && wv) {
|
||||
if (event.metaKey || (event.altKey && wv)) {
|
||||
if (e.keyCode === 13) {
|
||||
sec();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//Shift+Space:Markdownゼロ幅スペース
|
||||
if (event.shiftKey) {
|
||||
if (e.keyCode === 32) {
|
||||
brInsert("");
|
||||
return false;
|
||||
sec()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Esc:消す
|
||||
if (e.keyCode === 27 && wv) {
|
||||
hide();
|
||||
return false;
|
||||
hide()
|
||||
return false
|
||||
}
|
||||
//F5リロード
|
||||
if (e.keyCode === 116 && wv) {
|
||||
location.href = "index.html";
|
||||
return false;
|
||||
}
|
||||
//Ctrl+R:ランキング
|
||||
if ((event.metaKey || event.ctrlKey) && wv) {
|
||||
if (e.keyCode === 82) {
|
||||
if(localStorage.getItem("kirishima")){
|
||||
window.open("https://astarte.thedesk.top");
|
||||
}
|
||||
}
|
||||
location.href = 'index.html'
|
||||
return false
|
||||
}
|
||||
//Ctrl+Sift+C:全消し
|
||||
if (((event.metaKey || event.ctrlKey) && event.shiftKey )&& wv) {
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) {
|
||||
if (e.keyCode === 67) {
|
||||
clear();
|
||||
return false;
|
||||
clear()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+N:NowPlaying
|
||||
if (((event.metaKey || event.ctrlKey) && event.shiftKey) && wv) {
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey && wv) {
|
||||
if (e.keyCode === 78) {
|
||||
show();
|
||||
show()
|
||||
nowplaying()
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
}
|
||||
//input/textareaにフォーカスなし時
|
||||
if ((!hasFocus && !hasFocus2 ) && wv) {
|
||||
if(!wv){
|
||||
return true;
|
||||
if (!hasFocus && !hasFocus2 && wv) {
|
||||
if (!wv) {
|
||||
return true
|
||||
}
|
||||
//Ctrl+V:いつもの
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 86) {
|
||||
show();
|
||||
show()
|
||||
}
|
||||
}
|
||||
//Ctrl+F:検索
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 70) {
|
||||
srcBox()
|
||||
}
|
||||
}
|
||||
//X:開閉
|
||||
if (e.keyCode === 88) {
|
||||
if (!$("#post-box").hasClass("appear")) {
|
||||
show();
|
||||
$('textarea').focus();
|
||||
if (!$('#post-box').hasClass('appear')) {
|
||||
show()
|
||||
$('textarea').focus()
|
||||
} else {
|
||||
hide();
|
||||
hide()
|
||||
}
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
//N:新トゥート
|
||||
if (e.keyCode === 78) {
|
||||
if (!$("#post-box").hasClass("appear")) {
|
||||
show();
|
||||
if (!$('#post-box').hasClass('appear')) {
|
||||
show()
|
||||
}
|
||||
$('textarea').focus();
|
||||
return false;
|
||||
$('textarea').focus()
|
||||
return false
|
||||
}
|
||||
//Ctrl+E:全ての通知未読を既読にする
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 69) {
|
||||
allNotfRead();
|
||||
return false;
|
||||
allNotfRead()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+K:メニュー開閉
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 75) {
|
||||
menu()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Space:読み込み
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode === 32) {
|
||||
parseColumn();
|
||||
return false;
|
||||
parseColumn()
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+S:設定
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode === 83) {
|
||||
location.href = "setting.html";
|
||||
return false;
|
||||
location.href = 'setting.html'
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+M:アカマネ
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode === 77) {
|
||||
location.href = "acct.html";
|
||||
return false;
|
||||
location.href = 'acct.html'
|
||||
return false
|
||||
}
|
||||
}
|
||||
//Ctrl+Sift+P:プロフ
|
||||
if ((event.ctrlKey) && event.shiftKey) {
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode === 80) {
|
||||
profShow()
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
}
|
||||
//数字:TL
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
if (e.keyCode >= 49 && e.keyCode <= 57) {
|
||||
var kz=e.keyCode-49;
|
||||
goColumn(kz);
|
||||
return false;
|
||||
if (e.keyCode >= 49 && e.keyCode <= 57) {
|
||||
var kz = e.keyCode - 49
|
||||
goColumn(kz)
|
||||
return false
|
||||
}
|
||||
}
|
||||
//矢印:選択
|
||||
if (e.code == 'ArrowLeft') {
|
||||
//left
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
imgCont('prev')
|
||||
return false
|
||||
}
|
||||
if (selectedColumn > 0) {
|
||||
selectedColumn--
|
||||
}
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false
|
||||
} else if (e.code == 'ArrowUp') {
|
||||
//up
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
return false
|
||||
}
|
||||
if (selectedToot > 0) {
|
||||
selectedToot--
|
||||
}
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false
|
||||
} else if (e.code == 'ArrowRight') {
|
||||
//right
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
imgCont('next')
|
||||
return false
|
||||
}
|
||||
if (selectedColumn < $('.tl-box').length - 1) {
|
||||
selectedColumn++
|
||||
}
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false
|
||||
} else if (e.code == 'ArrowDown') {
|
||||
//down
|
||||
if ($('#imagemodal').hasClass('open')) {
|
||||
return false
|
||||
}
|
||||
selectedToot++
|
||||
tootSelector(selectedColumn, selectedToot)
|
||||
return false
|
||||
}
|
||||
//Ctrl+U:0,0選択
|
||||
if (event.ctrlKey || event.metaKey) {
|
||||
if (e.keyCode === 85) {
|
||||
selectedToot = 0
|
||||
selectedColumn = 0
|
||||
tootSelector(0, 0)
|
||||
return false
|
||||
}
|
||||
}
|
||||
//選択時
|
||||
if (e.keyCode == 70) {
|
||||
var id = $('.selectedToot').attr('unique-id')
|
||||
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
|
||||
fav(id, acct_id, false)
|
||||
return false
|
||||
}
|
||||
if (e.keyCode == 66) {
|
||||
var id = $('.selectedToot').attr('unique-id')
|
||||
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
|
||||
rt(id, acct_id, false)
|
||||
return false
|
||||
}
|
||||
if (e.keyCode == 82) {
|
||||
var id = $('.selectedToot').attr('unique-id')
|
||||
var acct_id = $('#timeline_' + selectedColumn).attr('data-acct')
|
||||
var ats_cm = $('.selectedToot .rep-btn').attr('data-men')
|
||||
var mode = $('.selectedToot .rep-btn').attr('data-visen')
|
||||
re(id, ats_cm, acct_id, mode)
|
||||
return false
|
||||
}
|
||||
}
|
||||
//textareaフォーカス時
|
||||
if (hasFocus2 && wv) {
|
||||
if (event.metaKey || event.ctrlKey) {
|
||||
//Ctrl+B:太字
|
||||
if (e.keyCode === 66) {
|
||||
tagsel('b');
|
||||
return false;
|
||||
}
|
||||
//Ctrl+I:斜字
|
||||
if (e.keyCode === 73) {
|
||||
tagsel('i');
|
||||
return false;
|
||||
}
|
||||
//Ctrl+U:下線
|
||||
if (e.keyCode === 85) {
|
||||
tagsel('u');
|
||||
return false;
|
||||
}
|
||||
//Ctrl+S:取り消し線
|
||||
if (e.keyCode === 83) {
|
||||
tagsel('s');
|
||||
return false;
|
||||
}
|
||||
//C+S+(No):ワンクリ
|
||||
if ((event.metaKey || event.ctrlKey) && event.shiftKey) {
|
||||
if (e.keyCode >= 49 && e.keyCode <= 51) {
|
||||
var no=e.keyCode-48;
|
||||
if(localStorage.getItem("oks-"+no)){$("#textarea").val($("#textarea").val()+localStorage.getItem("oks-"+no))}
|
||||
return false;
|
||||
var no = e.keyCode - 48
|
||||
if (localStorage.getItem('oks-' + no)) {
|
||||
$('#textarea').val($('#textarea').val() + localStorage.getItem('oks-' + no))
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//イメージビューワー切り替え
|
||||
if (e.keyCode === 37 &&wv) {
|
||||
if ($("#imagemodal").hasClass("open")) {
|
||||
imgCont('prev');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (e.keyCode === 39 && wv) {
|
||||
if ($("#imagemodal").hasClass("open")) {
|
||||
imgCont('next');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
//クリアボタン
|
||||
$("#clear").click(function() {
|
||||
clear();
|
||||
});
|
||||
});
|
||||
$('#clear').click(function() {
|
||||
clear()
|
||||
})
|
||||
})
|
||||
//選択する
|
||||
function tootSelector(column, toot) {
|
||||
$('.cvo').removeClass('selectedToot')
|
||||
$('#timeline_' + column + ' .cvo')
|
||||
.eq(toot)
|
||||
.addClass('selectedToot')
|
||||
var scr = $('.tl-box[tlid=' + column + ']').scrollTop()
|
||||
var elem = $('.selectedToot').offset().top
|
||||
var top = elem - $('.tl-box').height() + scr
|
||||
if (top > 0) {
|
||||
top = top + $('.selectedToot').height()
|
||||
if (top > scr) {
|
||||
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: top })
|
||||
}
|
||||
} else if (elem < 0) {
|
||||
var to = scr + elem - $('.selectedToot').height()
|
||||
if (to < scr) {
|
||||
$('.tl-box[tlid=' + column + ']').animate({ scrollTop: to })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
10022
app/js/common/materialize.js
vendored
6
app/js/common/materialize.min.js
vendored
@@ -1,17 +1,29 @@
|
||||
//モーダル・ドロップダウンの各種設定
|
||||
$(document).ready(function(){
|
||||
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered
|
||||
$('.modal').modal();
|
||||
$('.dropdown-button').dropdown({
|
||||
inDuration: 300,
|
||||
outDuration: 225,
|
||||
constrainWidth: false, // Does not change width of dropdown to that of the activator
|
||||
hover: false, // Activate on hover
|
||||
gutter: 0, // Spacing from edge
|
||||
belowOrigin: false, // Displays dropdown below the button
|
||||
alignment: 'left', // Displays dropdown with edge aligned to the left of button
|
||||
stopPropagation: false // Stops event propagation
|
||||
}
|
||||
);
|
||||
|
||||
});
|
||||
$(document).ready(function () {
|
||||
// the "href" attribute of the modal trigger must specify the modal ID that wants to be triggered
|
||||
$('.modal').modal({
|
||||
inDuration: 300,
|
||||
outDuration: 225,
|
||||
constrainWidth: false, // Does not change width of dropdown to that of the activator
|
||||
hover: false, // Activate on hover
|
||||
gutter: 0, // Spacing from edge
|
||||
belowOrigin: false, // Displays dropdown below the button
|
||||
alignment: 'left', // Displays dropdown with edge aligned to the left of button
|
||||
stopPropagation: false
|
||||
})
|
||||
$('.dropdown-trigger').dropdown({
|
||||
inDuration: 300,
|
||||
outDuration: 225,
|
||||
constrainWidth: false, // Does not change width of dropdown to that of the activator
|
||||
hover: false, // Activate on hover
|
||||
gutter: 0, // Spacing from edge
|
||||
belowOrigin: false, // Displays dropdown below the button
|
||||
alignment: 'left', // Displays dropdown with edge aligned to the left of button
|
||||
stopPropagation: false // Stops event propagation
|
||||
}
|
||||
)
|
||||
$('.collapsible').collapsible()
|
||||
$('#videomodal').modal({
|
||||
onCloseEnd: stopVideo
|
||||
})
|
||||
})
|
||||
@@ -1,33 +1,96 @@
|
||||
/*
|
||||
A JavaScript implementation of the SHA family of hashes, as
|
||||
defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding
|
||||
HMAC implementation as defined in FIPS PUB 198a
|
||||
var sha256 = function sha256(ascii) {
|
||||
function rightRotate(value, amount) {
|
||||
return (value >>> amount) | (value << (32 - amount));
|
||||
};
|
||||
|
||||
Copyright 2008-2018 Brian Turek, 1998-2009 Paul Johnston & Contributors
|
||||
Distributed under the BSD License
|
||||
See http://caligatio.github.com/jsSHA/ for more information
|
||||
*/
|
||||
'use strict';(function(I){function w(c,a,d){var l=0,b=[],g=0,f,n,k,e,h,q,y,p,m=!1,t=[],r=[],u,z=!1;d=d||{};f=d.encoding||"UTF8";u=d.numRounds||1;if(u!==parseInt(u,10)||1>u)throw Error("numRounds must a integer >= 1");if(0===c.lastIndexOf("SHA-",0))if(q=function(b,a){return A(b,a,c)},y=function(b,a,l,f){var g,e;if("SHA-224"===c||"SHA-256"===c)g=(a+65>>>9<<4)+15,e=16;else throw Error("Unexpected error in SHA-2 implementation");for(;b.length<=g;)b.push(0);b[a>>>5]|=128<<24-a%32;a=a+l;b[g]=a&4294967295;
|
||||
b[g-1]=a/4294967296|0;l=b.length;for(a=0;a<l;a+=e)f=A(b.slice(a,a+e),f,c);if("SHA-224"===c)b=[f[0],f[1],f[2],f[3],f[4],f[5],f[6]];else if("SHA-256"===c)b=f;else throw Error("Unexpected error in SHA-2 implementation");return b},p=function(b){return b.slice()},"SHA-224"===c)h=512,e=224;else if("SHA-256"===c)h=512,e=256;else throw Error("Chosen SHA variant is not supported");else throw Error("Chosen SHA variant is not supported");k=B(a,f);n=x(c);this.setHMACKey=function(b,a,g){var e;if(!0===m)throw Error("HMAC key already set");
|
||||
if(!0===z)throw Error("Cannot set HMAC key after calling update");f=(g||{}).encoding||"UTF8";a=B(a,f)(b);b=a.binLen;a=a.value;e=h>>>3;g=e/4-1;if(e<b/8){for(a=y(a,b,0,x(c));a.length<=g;)a.push(0);a[g]&=4294967040}else if(e>b/8){for(;a.length<=g;)a.push(0);a[g]&=4294967040}for(b=0;b<=g;b+=1)t[b]=a[b]^909522486,r[b]=a[b]^1549556828;n=q(t,n);l=h;m=!0};this.update=function(a){var c,f,e,d=0,p=h>>>5;c=k(a,b,g);a=c.binLen;f=c.value;c=a>>>5;for(e=0;e<c;e+=p)d+h<=a&&(n=q(f.slice(e,e+p),n),d+=h);l+=d;b=f.slice(d>>>
|
||||
5);g=a%h;z=!0};this.getHash=function(a,f){var d,h,k,q;if(!0===m)throw Error("Cannot call getHash after setting HMAC key");k=C(f);switch(a){case "HEX":d=function(a){return D(a,e,k)};break;case "B64":d=function(a){return E(a,e,k)};break;case "BYTES":d=function(a){return F(a,e)};break;case "ARRAYBUFFER":try{h=new ArrayBuffer(0)}catch(v){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a){return G(a,e)};break;default:throw Error("format must be HEX, B64, BYTES, or ARRAYBUFFER");
|
||||
}q=y(b.slice(),g,l,p(n));for(h=1;h<u;h+=1)q=y(q,e,0,x(c));return d(q)};this.getHMAC=function(a,f){var d,k,t,u;if(!1===m)throw Error("Cannot call getHMAC without first setting HMAC key");t=C(f);switch(a){case "HEX":d=function(a){return D(a,e,t)};break;case "B64":d=function(a){return E(a,e,t)};break;case "BYTES":d=function(a){return F(a,e)};break;case "ARRAYBUFFER":try{d=new ArrayBuffer(0)}catch(v){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a){return G(a,e)};break;default:throw Error("outputFormat must be HEX, B64, BYTES, or ARRAYBUFFER");
|
||||
}k=y(b.slice(),g,l,p(n));u=q(r,x(c));u=y(k,e,h,u);return d(u)}}function m(){}function D(c,a,d){var l="";a/=8;var b,g;for(b=0;b<a;b+=1)g=c[b>>>2]>>>8*(3+b%4*-1),l+="0123456789abcdef".charAt(g>>>4&15)+"0123456789abcdef".charAt(g&15);return d.outputUpper?l.toUpperCase():l}function E(c,a,d){var l="",b=a/8,g,f,n;for(g=0;g<b;g+=3)for(f=g+1<b?c[g+1>>>2]:0,n=g+2<b?c[g+2>>>2]:0,n=(c[g>>>2]>>>8*(3+g%4*-1)&255)<<16|(f>>>8*(3+(g+1)%4*-1)&255)<<8|n>>>8*(3+(g+2)%4*-1)&255,f=0;4>f;f+=1)8*g+6*f<=a?l+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(n>>>
|
||||
6*(3-f)&63):l+=d.b64Pad;return l}function F(c,a){var d="",l=a/8,b,g;for(b=0;b<l;b+=1)g=c[b>>>2]>>>8*(3+b%4*-1)&255,d+=String.fromCharCode(g);return d}function G(c,a){var d=a/8,l,b=new ArrayBuffer(d),g;g=new Uint8Array(b);for(l=0;l<d;l+=1)g[l]=c[l>>>2]>>>8*(3+l%4*-1)&255;return b}function C(c){var a={outputUpper:!1,b64Pad:"=",shakeLen:-1};c=c||{};a.outputUpper=c.outputUpper||!1;!0===c.hasOwnProperty("b64Pad")&&(a.b64Pad=c.b64Pad);if("boolean"!==typeof a.outputUpper)throw Error("Invalid outputUpper formatting option");
|
||||
if("string"!==typeof a.b64Pad)throw Error("Invalid b64Pad formatting option");return a}function B(c,a){var d;switch(a){case "UTF8":case "UTF16BE":case "UTF16LE":break;default:throw Error("encoding must be UTF8, UTF16BE, or UTF16LE");}switch(c){case "HEX":d=function(a,b,c){var f=a.length,d,k,e,h,q;if(0!==f%2)throw Error("String of HEX type must be in byte increments");b=b||[0];c=c||0;q=c>>>3;for(d=0;d<f;d+=2){k=parseInt(a.substr(d,2),16);if(isNaN(k))throw Error("String of HEX type contains invalid characters");
|
||||
h=(d>>>1)+q;for(e=h>>>2;b.length<=e;)b.push(0);b[e]|=k<<8*(3+h%4*-1)}return{value:b,binLen:4*f+c}};break;case "TEXT":d=function(c,b,d){var f,n,k=0,e,h,q,m,p,r;b=b||[0];d=d||0;q=d>>>3;if("UTF8"===a)for(r=3,e=0;e<c.length;e+=1)for(f=c.charCodeAt(e),n=[],128>f?n.push(f):2048>f?(n.push(192|f>>>6),n.push(128|f&63)):55296>f||57344<=f?n.push(224|f>>>12,128|f>>>6&63,128|f&63):(e+=1,f=65536+((f&1023)<<10|c.charCodeAt(e)&1023),n.push(240|f>>>18,128|f>>>12&63,128|f>>>6&63,128|f&63)),h=0;h<n.length;h+=1){p=k+
|
||||
q;for(m=p>>>2;b.length<=m;)b.push(0);b[m]|=n[h]<<8*(r+p%4*-1);k+=1}else if("UTF16BE"===a||"UTF16LE"===a)for(r=2,n="UTF16LE"===a&&!0||"UTF16LE"!==a&&!1,e=0;e<c.length;e+=1){f=c.charCodeAt(e);!0===n&&(h=f&255,f=h<<8|f>>>8);p=k+q;for(m=p>>>2;b.length<=m;)b.push(0);b[m]|=f<<8*(r+p%4*-1);k+=2}return{value:b,binLen:8*k+d}};break;case "B64":d=function(a,b,c){var f=0,d,k,e,h,q,m,p;if(-1===a.search(/^[a-zA-Z0-9=+\/]+$/))throw Error("Invalid character in base-64 string");k=a.indexOf("=");a=a.replace(/\=/g,
|
||||
"");if(-1!==k&&k<a.length)throw Error("Invalid '=' found in base-64 string");b=b||[0];c=c||0;m=c>>>3;for(k=0;k<a.length;k+=4){q=a.substr(k,4);for(e=h=0;e<q.length;e+=1)d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(q[e]),h|=d<<18-6*e;for(e=0;e<q.length-1;e+=1){p=f+m;for(d=p>>>2;b.length<=d;)b.push(0);b[d]|=(h>>>16-8*e&255)<<8*(3+p%4*-1);f+=1}}return{value:b,binLen:8*f+c}};break;case "BYTES":d=function(a,b,c){var d,n,k,e,h;b=b||[0];c=c||0;k=c>>>3;for(n=0;n<a.length;n+=
|
||||
1)d=a.charCodeAt(n),h=n+k,e=h>>>2,b.length<=e&&b.push(0),b[e]|=d<<8*(3+h%4*-1);return{value:b,binLen:8*a.length+c}};break;case "ARRAYBUFFER":try{d=new ArrayBuffer(0)}catch(l){throw Error("ARRAYBUFFER not supported by this environment");}d=function(a,b,c){var d,n,k,e,h;b=b||[0];c=c||0;n=c>>>3;h=new Uint8Array(a);for(d=0;d<a.byteLength;d+=1)e=d+n,k=e>>>2,b.length<=k&&b.push(0),b[k]|=h[d]<<8*(3+e%4*-1);return{value:b,binLen:8*a.byteLength+c}};break;default:throw Error("format must be HEX, TEXT, B64, BYTES, or ARRAYBUFFER");
|
||||
}return d}function r(c,a){return c>>>a|c<<32-a}function J(c,a,d){return c&a^~c&d}function K(c,a,d){return c&a^c&d^a&d}function L(c){return r(c,2)^r(c,13)^r(c,22)}function M(c){return r(c,6)^r(c,11)^r(c,25)}function N(c){return r(c,7)^r(c,18)^c>>>3}function O(c){return r(c,17)^r(c,19)^c>>>10}function P(c,a){var d=(c&65535)+(a&65535);return((c>>>16)+(a>>>16)+(d>>>16)&65535)<<16|d&65535}function Q(c,a,d,l){var b=(c&65535)+(a&65535)+(d&65535)+(l&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(l>>>16)+(b>>>
|
||||
16)&65535)<<16|b&65535}function R(c,a,d,l,b){var g=(c&65535)+(a&65535)+(d&65535)+(l&65535)+(b&65535);return((c>>>16)+(a>>>16)+(d>>>16)+(l>>>16)+(b>>>16)+(g>>>16)&65535)<<16|g&65535}function x(c){var a=[],d;if(0===c.lastIndexOf("SHA-",0))switch(a=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428],d=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],c){case "SHA-224":break;case "SHA-256":a=d;break;case "SHA-384":a=[new m,new m,
|
||||
new m,new m,new m,new m,new m,new m];break;case "SHA-512":a=[new m,new m,new m,new m,new m,new m,new m,new m];break;default:throw Error("Unknown SHA variant");}else throw Error("No SHA variants supported");return a}function A(c,a,d){var l,b,g,f,n,k,e,h,m,r,p,w,t,x,u,z,A,B,C,D,E,F,v=[],G;if("SHA-224"===d||"SHA-256"===d)r=64,w=1,F=Number,t=P,x=Q,u=R,z=N,A=O,B=L,C=M,E=K,D=J,G=H;else throw Error("Unexpected error in SHA-2 implementation");d=a[0];l=a[1];b=a[2];g=a[3];f=a[4];n=a[5];k=a[6];e=a[7];for(p=
|
||||
0;p<r;p+=1)16>p?(m=p*w,h=c.length<=m?0:c[m],m=c.length<=m+1?0:c[m+1],v[p]=new F(h,m)):v[p]=x(A(v[p-2]),v[p-7],z(v[p-15]),v[p-16]),h=u(e,C(f),D(f,n,k),G[p],v[p]),m=t(B(d),E(d,l,b)),e=k,k=n,n=f,f=t(g,h),g=b,b=l,l=d,d=t(h,m);a[0]=t(d,a[0]);a[1]=t(l,a[1]);a[2]=t(b,a[2]);a[3]=t(g,a[3]);a[4]=t(f,a[4]);a[5]=t(n,a[5]);a[6]=t(k,a[6]);a[7]=t(e,a[7]);return a}var H;H=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,
|
||||
2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,
|
||||
2756734187,3204031479,3329325298];"function"===typeof define&&define.amd?define(function(){return w}):"undefined"!==typeof exports?("undefined"!==typeof module&&module.exports&&(module.exports=w),exports=w):I.jsSHA=w})(this);
|
||||
function sha256(token){
|
||||
var shaObj = new jsSHA("SHA-256", "TEXT");
|
||||
shaObj.update(token);
|
||||
var hash = shaObj.getHash("HEX");
|
||||
return hash;
|
||||
}
|
||||
var mathPow = Math.pow;
|
||||
var maxWord = mathPow(2, 32);
|
||||
var lengthProperty = 'length'
|
||||
var i, j; // Used as a counter across the whole file
|
||||
var result = ''
|
||||
|
||||
var words = [];
|
||||
var asciiBitLength = ascii[lengthProperty] * 8;
|
||||
|
||||
//* caching results is optional - remove/add slash from front of this line to toggle
|
||||
// Initial hash value: first 32 bits of the fractional parts of the square roots of the first 8 primes
|
||||
// (we actually calculate the first 64, but extra values are just ignored)
|
||||
var hash = sha256.h = sha256.h || [];
|
||||
// Round constants: first 32 bits of the fractional parts of the cube roots of the first 64 primes
|
||||
var k = sha256.k = sha256.k || [];
|
||||
var primeCounter = k[lengthProperty];
|
||||
/*/
|
||||
var hash = [], k = [];
|
||||
var primeCounter = 0;
|
||||
//*/
|
||||
|
||||
var isComposite = {};
|
||||
for (var candidate = 2; primeCounter < 64; candidate++) {
|
||||
if (!isComposite[candidate]) {
|
||||
for (i = 0; i < 313; i += candidate) {
|
||||
isComposite[i] = candidate;
|
||||
}
|
||||
hash[primeCounter] = (mathPow(candidate, .5) * maxWord) | 0;
|
||||
k[primeCounter++] = (mathPow(candidate, 1 / 3) * maxWord) | 0;
|
||||
}
|
||||
}
|
||||
|
||||
ascii += '\x80' // Append Ƈ' bit (plus zero padding)
|
||||
while (ascii[lengthProperty] % 64 - 56) ascii += '\x00' // More zero padding
|
||||
for (i = 0; i < ascii[lengthProperty]; i++) {
|
||||
j = ascii.charCodeAt(i);
|
||||
if (j >> 8) return; // ASCII check: only accept characters in range 0-255
|
||||
words[i >> 2] |= j << ((3 - i) % 4) * 8;
|
||||
}
|
||||
words[words[lengthProperty]] = ((asciiBitLength / maxWord) | 0);
|
||||
words[words[lengthProperty]] = (asciiBitLength)
|
||||
|
||||
// process each chunk
|
||||
for (j = 0; j < words[lengthProperty];) {
|
||||
var w = words.slice(j, j += 16); // The message is expanded into 64 words as part of the iteration
|
||||
var oldHash = hash;
|
||||
// This is now the undefinedworking hash", often labelled as variables a...g
|
||||
// (we have to truncate as well, otherwise extra entries at the end accumulate
|
||||
hash = hash.slice(0, 8);
|
||||
|
||||
for (i = 0; i < 64; i++) {
|
||||
var i2 = i + j;
|
||||
// Expand the message into 64 words
|
||||
// Used below if
|
||||
var w15 = w[i - 15], w2 = w[i - 2];
|
||||
|
||||
// Iterate
|
||||
var a = hash[0], e = hash[4];
|
||||
var temp1 = hash[7]
|
||||
+ (rightRotate(e, 6) ^ rightRotate(e, 11) ^ rightRotate(e, 25)) // S1
|
||||
+ ((e & hash[5]) ^ ((~e) & hash[6])) // ch
|
||||
+ k[i]
|
||||
// Expand the message schedule if needed
|
||||
+ (w[i] = (i < 16) ? w[i] : (
|
||||
w[i - 16]
|
||||
+ (rightRotate(w15, 7) ^ rightRotate(w15, 18) ^ (w15 >>> 3)) // s0
|
||||
+ w[i - 7]
|
||||
+ (rightRotate(w2, 17) ^ rightRotate(w2, 19) ^ (w2 >>> 10)) // s1
|
||||
) | 0
|
||||
);
|
||||
// This is only used once, so *could* be moved below, but it only saves 4 bytes and makes things unreadble
|
||||
var temp2 = (rightRotate(a, 2) ^ rightRotate(a, 13) ^ rightRotate(a, 22)) // S0
|
||||
+ ((a & hash[1]) ^ (a & hash[2]) ^ (hash[1] & hash[2])); // maj
|
||||
|
||||
hash = [(temp1 + temp2) | 0].concat(hash); // We don't bother trimming off the extra ones, they're harmless as long as we're truncating when we do the slice()
|
||||
hash[4] = (hash[4] + temp1) | 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
hash[i] = (hash[i] + oldHash[i]) | 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 8; i++) {
|
||||
for (j = 3; j + 1; j--) {
|
||||
var b = (hash[i] >> (j * 8)) & 255;
|
||||
result += ((b < 16) ? 0 : '') + b.toString(16);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
@@ -17,27 +17,26 @@
|
||||
(function (factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], factory);
|
||||
define(['jquery'], factory)
|
||||
} else if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
factory(require('jquery'));
|
||||
factory(require('jquery'))
|
||||
} else {
|
||||
// Browser globals
|
||||
factory(jQuery);
|
||||
factory(jQuery)
|
||||
}
|
||||
}(function ($) {
|
||||
$.timeago = function(timestamp) {
|
||||
$.timeago = function (timestamp) {
|
||||
if (timestamp instanceof Date) {
|
||||
return inWords(timestamp);
|
||||
return inWords(timestamp)
|
||||
} else if (typeof timestamp === "string") {
|
||||
return inWords($.timeago.parse(timestamp));
|
||||
return inWords($.timeago.parse(timestamp))
|
||||
} else if (typeof timestamp === "number") {
|
||||
return inWords(new Date(timestamp));
|
||||
return inWords(new Date(timestamp))
|
||||
} else {
|
||||
return inWords($.timeago.datetime(timestamp));
|
||||
return inWords($.timeago.datetime(timestamp))
|
||||
}
|
||||
};
|
||||
var $t = $.timeago;
|
||||
|
||||
}
|
||||
var $t = $.timeago
|
||||
$.extend($.timeago, {
|
||||
settings: {
|
||||
refreshMillis: 60000,
|
||||
@@ -47,56 +46,56 @@
|
||||
cutoff: 0,
|
||||
autoDispose: true,
|
||||
strings: {
|
||||
prefixAgo: null,
|
||||
prefixFromNow: "今から",
|
||||
suffixAgo: "",
|
||||
suffixFromNow: "",
|
||||
inPast: '',
|
||||
seconds: "%d秒前",
|
||||
minute: "1分前",
|
||||
minutes: "%d分前",
|
||||
hour: "1時間前",
|
||||
hours: "%d時間前",
|
||||
day: "昨日",
|
||||
days: "%d日前",
|
||||
month: "昨月",
|
||||
months: "%dヶ月前",
|
||||
year: "去年",
|
||||
years: "%d年前",
|
||||
prefixAgo: lang.lang_time_prefixAgo,
|
||||
prefixFromNow: lang.lang_time_prefixFromNow,
|
||||
suffixAgo: lang.lang_time_suffixAgo,
|
||||
suffixFromNow: lang.lang_time_suffixFromNow,
|
||||
inPast: lang.lang_time_inPast,
|
||||
seconds: lang.lang_time_seconds,
|
||||
minute: lang.lang_time_minute,
|
||||
minutes: lang.lang_time_minutes,
|
||||
hour: lang.lang_time_hour,
|
||||
hours: lang.lang_time_hours,
|
||||
day: lang.lang_time_day,
|
||||
days: lang.lang_time_days,
|
||||
month: lang.lang_time_month,
|
||||
months: lang.lang_time_months,
|
||||
year: lang.lang_time_year,
|
||||
years: lang.lang_time_years,
|
||||
wordSeparator: " ",
|
||||
numbers: []
|
||||
}
|
||||
},
|
||||
|
||||
inWords: function(distanceMillis) {
|
||||
if (!this.settings.allowPast && ! this.settings.allowFuture) {
|
||||
throw 'timeago allowPast and allowFuture settings can not both be set to false.';
|
||||
inWords: function (distanceMillis) {
|
||||
if (!this.settings.allowPast && !this.settings.allowFuture) {
|
||||
throw 'timeago allowPast and allowFuture settings can not both be set to false.'
|
||||
}
|
||||
|
||||
var $l = this.settings.strings;
|
||||
var prefix = $l.prefixAgo;
|
||||
var suffix = $l.suffixAgo;
|
||||
var $l = this.settings.strings
|
||||
var prefix = $l.prefixAgo
|
||||
var suffix = $l.suffixAgo
|
||||
if (this.settings.allowFuture) {
|
||||
if (distanceMillis < 0) {
|
||||
prefix = $l.prefixFromNow;
|
||||
suffix = $l.suffixFromNow;
|
||||
prefix = $l.prefixFromNow
|
||||
suffix = $l.suffixFromNow
|
||||
}
|
||||
}
|
||||
|
||||
if (!this.settings.allowPast && distanceMillis >= 0) {
|
||||
return this.settings.strings.inPast;
|
||||
return this.settings.strings.inPast
|
||||
}
|
||||
|
||||
var seconds = Math.abs(distanceMillis) / 1000;
|
||||
var minutes = seconds / 60;
|
||||
var hours = minutes / 60;
|
||||
var days = hours / 24;
|
||||
var years = days / 365;
|
||||
var seconds = Math.abs(distanceMillis) / 1000
|
||||
var minutes = seconds / 60
|
||||
var hours = minutes / 60
|
||||
var days = hours / 24
|
||||
var years = days / 365
|
||||
|
||||
function substitute(stringOrFunction, number) {
|
||||
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
|
||||
var value = ($l.numbers && $l.numbers[number]) || number;
|
||||
return string.replace(/%d/i, value);
|
||||
var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction
|
||||
var value = ($l.numbers && $l.numbers[number]) || number
|
||||
return string.replace(/%d/i, value)
|
||||
}
|
||||
|
||||
var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
|
||||
@@ -109,124 +108,124 @@
|
||||
days < 45 && substitute($l.month, 1) ||
|
||||
days < 365 && substitute($l.months, Math.round(days / 30)) ||
|
||||
years < 1.5 && substitute($l.year, 1) ||
|
||||
substitute($l.years, Math.round(years));
|
||||
substitute($l.years, Math.round(years))
|
||||
|
||||
var separator = $l.wordSeparator || "";
|
||||
if ($l.wordSeparator === undefined) { separator = " "; }
|
||||
return $.trim([prefix, words, suffix].join(separator));
|
||||
var separator = $l.wordSeparator || ""
|
||||
if ($l.wordSeparator === undefined) { separator = " " }
|
||||
return $.trim([prefix, words, suffix].join(separator))
|
||||
},
|
||||
|
||||
parse: function(iso8601) {
|
||||
var s = $.trim(iso8601);
|
||||
s = s.replace(/\.\d+/,""); // remove milliseconds
|
||||
s = s.replace(/-/,"/").replace(/-/,"/");
|
||||
s = s.replace(/T/," ").replace(/Z/," UTC");
|
||||
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
|
||||
s = s.replace(/([\+\-]\d\d)$/," $100"); // +09 -> +0900
|
||||
return new Date(s);
|
||||
parse: function (iso8601) {
|
||||
var s = $.trim(iso8601)
|
||||
s = s.replace(/\.\d+/, "") // remove milliseconds
|
||||
s = s.replace(/-/, "/").replace(/-/, "/")
|
||||
s = s.replace(/T/, " ").replace(/Z/, " UTC")
|
||||
s = s.replace(/([\+\-]\d\d)\:?(\d\d)/, " $1$2") // -04:00 -> -0400
|
||||
s = s.replace(/([\+\-]\d\d)$/, " $100") // +09 -> +0900
|
||||
return new Date(s)
|
||||
},
|
||||
datetime: function(elem) {
|
||||
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title");
|
||||
return $t.parse(iso8601);
|
||||
datetime: function (elem) {
|
||||
var iso8601 = $t.isTime(elem) ? $(elem).attr("datetime") : $(elem).attr("title")
|
||||
return $t.parse(iso8601)
|
||||
},
|
||||
isTime: function(elem) {
|
||||
isTime: function (elem) {
|
||||
// jQuery's `is()` doesn't play well with HTML5 in IE
|
||||
return $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
|
||||
return $(elem).get(0).tagName.toLowerCase() === "time" // $(elem).is("time");
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
// functions that can be called via $(el).timeago('action')
|
||||
// init is default when no action is given
|
||||
// functions are called with context of a single element
|
||||
var functions = {
|
||||
init: function() {
|
||||
functions.dispose.call(this);
|
||||
var refresh_el = $.proxy(refresh, this);
|
||||
refresh_el();
|
||||
var $s = $t.settings;
|
||||
init: function () {
|
||||
functions.dispose.call(this)
|
||||
var refresh_el = $.proxy(refresh, this)
|
||||
refresh_el()
|
||||
var $s = $t.settings
|
||||
if ($s.refreshMillis > 0) {
|
||||
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis);
|
||||
this._timeagoInterval = setInterval(refresh_el, $s.refreshMillis)
|
||||
}
|
||||
},
|
||||
update: function(timestamp) {
|
||||
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp);
|
||||
$(this).data('timeago', { datetime: date });
|
||||
update: function (timestamp) {
|
||||
var date = (timestamp instanceof Date) ? timestamp : $t.parse(timestamp)
|
||||
$(this).data('timeago', { datetime: date })
|
||||
if ($t.settings.localeTitle) {
|
||||
$(this).attr("title", date.toLocaleString());
|
||||
$(this).attr("title", date.toLocaleString())
|
||||
}
|
||||
refresh.apply(this);
|
||||
refresh.apply(this)
|
||||
},
|
||||
updateFromDOM: function() {
|
||||
$(this).data('timeago', { datetime: $t.parse( $t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title") ) });
|
||||
refresh.apply(this);
|
||||
updateFromDOM: function () {
|
||||
$(this).data('timeago', { datetime: $t.parse($t.isTime(this) ? $(this).attr("datetime") : $(this).attr("title")) })
|
||||
refresh.apply(this)
|
||||
},
|
||||
dispose: function () {
|
||||
if (this._timeagoInterval) {
|
||||
window.clearInterval(this._timeagoInterval);
|
||||
this._timeagoInterval = null;
|
||||
window.clearInterval(this._timeagoInterval)
|
||||
this._timeagoInterval = null
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
$.fn.timeago = function(action, options) {
|
||||
var fn = action ? functions[action] : functions.init;
|
||||
$.fn.timeago = function (action, options) {
|
||||
var fn = action ? functions[action] : functions.init
|
||||
if (!fn) {
|
||||
throw new Error("Unknown function name '"+ action +"' for timeago");
|
||||
throw new Error("Unknown function name '" + action + "' for timeago")
|
||||
}
|
||||
// each over objects here and call the requested function
|
||||
this.each(function() {
|
||||
fn.call(this, options);
|
||||
});
|
||||
return this;
|
||||
};
|
||||
this.each(function () {
|
||||
fn.call(this, options)
|
||||
})
|
||||
return this
|
||||
}
|
||||
|
||||
function refresh() {
|
||||
var $s = $t.settings;
|
||||
var $s = $t.settings
|
||||
|
||||
//check if it's still visible
|
||||
if ($s.autoDispose && !$.contains(document.documentElement,this)) {
|
||||
if ($s.autoDispose && !$.contains(document.documentElement, this)) {
|
||||
//stop if it has been removed
|
||||
$(this).timeago("dispose");
|
||||
return this;
|
||||
$(this).timeago("dispose")
|
||||
return this
|
||||
}
|
||||
|
||||
var data = prepareData(this);
|
||||
var data = prepareData(this)
|
||||
|
||||
if (!isNaN(data.datetime)) {
|
||||
if ( $s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
|
||||
$(this).text(inWords(data.datetime));
|
||||
if ($s.cutoff === 0 || Math.abs(distance(data.datetime)) < $s.cutoff) {
|
||||
$(this).text(inWords(data.datetime))
|
||||
} else {
|
||||
if ($(this).attr('title').length > 0) {
|
||||
$(this).text($(this).attr('title'));
|
||||
$(this).text($(this).attr('title'))
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
return this
|
||||
}
|
||||
|
||||
function prepareData(element) {
|
||||
element = $(element);
|
||||
element = $(element)
|
||||
if (!element.data("timeago")) {
|
||||
element.data("timeago", { datetime: $t.datetime(element) });
|
||||
var text = $.trim(element.text());
|
||||
element.data("timeago", { datetime: $t.datetime(element) })
|
||||
var text = $.trim(element.text())
|
||||
if ($t.settings.localeTitle) {
|
||||
element.attr("title", element.data('timeago').datetime.toLocaleString());
|
||||
element.attr("title", element.data('timeago').datetime.toLocaleString())
|
||||
} else if (text.length > 0 && !($t.isTime(element) && element.attr("title"))) {
|
||||
element.attr("title", text);
|
||||
element.attr("title", text)
|
||||
}
|
||||
}
|
||||
return element.data("timeago");
|
||||
return element.data("timeago")
|
||||
}
|
||||
|
||||
function inWords(date) {
|
||||
return $t.inWords(distance(date));
|
||||
return $t.inWords(distance(date))
|
||||
}
|
||||
|
||||
function distance(date) {
|
||||
return (new Date().getTime() - date.getTime());
|
||||
return (new Date().getTime() - date.getTime())
|
||||
}
|
||||
|
||||
// fix for IE6 suckage
|
||||
document.createElement("abbr");
|
||||
document.createElement("time");
|
||||
}));
|
||||
document.createElement("abbr")
|
||||
document.createElement("time")
|
||||
}))
|
||||
@@ -1,268 +1,335 @@
|
||||
//バージョンチェッカー
|
||||
function verck(ver) {
|
||||
console.log("Welcome")
|
||||
if(localStorage.getItem("ver")!=ver){
|
||||
localStorage.setItem("ver", ver);
|
||||
console.log("Thank you for your update");
|
||||
$(document).ready(function(){
|
||||
$('#releasenote').modal('open');
|
||||
verp=ver.replace( '(', '');
|
||||
verp=verp.replace( '.', '-');
|
||||
verp=verp.replace( '.', '-');
|
||||
verp=verp.replace( '[', '-');
|
||||
verp=verp.replace( ']', '');
|
||||
verp=verp.replace( ')', '');
|
||||
verp=verp.replace( ' ', '_');
|
||||
console.log(verp);
|
||||
if(lang.language=="ja"){
|
||||
$("#release-"+verp).show();
|
||||
}else{
|
||||
$("#release-en").show();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
var electron = require("electron");
|
||||
var remote=electron.remote;
|
||||
var dialog=remote.dialog;
|
||||
var platform=remote.process.platform;
|
||||
if(platform=="win32"){
|
||||
const options = {
|
||||
function verck(ver, jp) {
|
||||
if (store) return false
|
||||
console.log('%c Welcome😊 ' + ver, 'color: red;font-size:200%;')
|
||||
$('body').addClass(localStorage.getItem('platform'))
|
||||
var date = new Date()
|
||||
var showVer = false
|
||||
//Spotify
|
||||
if (localStorage.getItem('spotify')) {
|
||||
localStorage.removeItem('spotify')
|
||||
localStorage.removeItem('spotify-refresh')
|
||||
var spDc = 'Spotify NowPlaying sysytem was changed, please re-login to Spotify'
|
||||
if(lang.language == 'ja') {
|
||||
spDc = 'Spotify NowPlayingの機能が変更されたため、もう一度ログインしてください'
|
||||
}
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: "Select your platform",
|
||||
message: lang.lang_version_platform,
|
||||
buttons: [lang.lang_no,lang.lang_yesno]
|
||||
}
|
||||
if(!localStorage.getItem("winstore")){
|
||||
|
||||
dialog.showMessageBox(options, function(arg) {
|
||||
if(arg==1){
|
||||
localStorage.setItem("winstore","winstore")
|
||||
}else{
|
||||
localStorage.setItem("winstore","localinstall")
|
||||
}
|
||||
});
|
||||
}
|
||||
}else if(platform=="linux"){
|
||||
if(localStorage.getItem("winstore")=="unix"){
|
||||
localStorage.removeItem("winstore")
|
||||
title: spDc,
|
||||
})
|
||||
}
|
||||
//Spotify(e)
|
||||
if (localStorage.getItem('ver') != ver && localStorage.getItem('winstore')) {
|
||||
showVer = true
|
||||
console.log('%c Thank you for your update🎉', 'color: red;font-size:200%;')
|
||||
$(document).ready(function() {
|
||||
if (localStorage.getItem('winstore') && !pwa) {
|
||||
$('#releasenote').modal('open')
|
||||
}
|
||||
verp = ver.replace('(', '')
|
||||
verp = verp.replace('.', '-')
|
||||
verp = verp.replace('.', '-')
|
||||
verp = verp.replace('[', '-')
|
||||
verp = verp.replace(']', '')
|
||||
verp = verp.replace(')', '')
|
||||
verp = verp.replace(' ', '_')
|
||||
console.log('%c ' + verp, 'color: red;font-size:200%;')
|
||||
if (lang.language == 'ja') {
|
||||
$('#release-' + verp).show()
|
||||
} else {
|
||||
$('#release-en').show()
|
||||
}
|
||||
})
|
||||
}
|
||||
localStorage.setItem('ver', ver)
|
||||
if (!showVer) {
|
||||
console.log(showVer)
|
||||
if (
|
||||
date.getFullYear() * 100 + date.getMonth() + 1 >= localStorage.getItem('showSupportMe') ||
|
||||
!localStorage.getItem('showSupportMe')
|
||||
) {
|
||||
if (date.getMonth() == 11) {
|
||||
var yrs = date.getFullYear() + 1
|
||||
var nextmonth = yrs * 100 + 1
|
||||
} else {
|
||||
var yrs = date.getFullYear()
|
||||
var nextmonth = yrs * 100 + date.getMonth() + 2
|
||||
}
|
||||
if (lang.language != 'ja') {
|
||||
$('#support-btm-ja').addClass('hide')
|
||||
$('#support-btm-en').removeClass('hide')
|
||||
}
|
||||
localStorage.setItem('showSupportMe', nextmonth)
|
||||
$('#support-btm').removeClass('hide')
|
||||
$('#support-btm').animate(
|
||||
{
|
||||
bottom: '0'
|
||||
},
|
||||
{
|
||||
duration: 300
|
||||
}
|
||||
)
|
||||
}
|
||||
if(!localStorage.getItem("winstore")){
|
||||
const options = {
|
||||
type: 'info',
|
||||
title: "Select your platform",
|
||||
message: lang.lang_version_platform_linux,
|
||||
buttons: [lang.lang_no,lang.lang_yesno]
|
||||
}
|
||||
dialog.showMessageBox(options, function(arg) {
|
||||
if(arg==1){
|
||||
localStorage.setItem("winstore","snapcraft")
|
||||
}else{
|
||||
localStorage.setItem("winstore","localinstall")
|
||||
}
|
||||
});
|
||||
}
|
||||
}else if(platform=="darwin"){
|
||||
if(localStorage.getItem("winstore")=="unix"){
|
||||
localStorage.removeItem("winstore")
|
||||
}
|
||||
if(!localStorage.getItem("winstore")){
|
||||
const options = {
|
||||
type: 'info',
|
||||
title: "Select your platform",
|
||||
message: lang.lang_version_platform_mac,
|
||||
buttons: [lang.lang_no,lang.lang_yesno]
|
||||
}
|
||||
dialog.showMessageBox(options, function(arg) {
|
||||
if(arg==1){
|
||||
localStorage.setItem("winstore","brewcask")
|
||||
}else{
|
||||
localStorage.setItem("winstore","localinstall")
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
localStorage.setItem("winstore","unix")
|
||||
}
|
||||
if(localStorage.getItem("winstore")=="brewcask" || localStorage.getItem("winstore")=="snapcraft" || localStorage.getItem("winstore")=="winstore"){
|
||||
var winstore=true;
|
||||
}else{
|
||||
var winstore=false;
|
||||
}
|
||||
var l = 5;
|
||||
}
|
||||
var platform = localStorage.getItem('platform')
|
||||
console.log('Your platform:' + platform)
|
||||
if (!localStorage.getItem('winstore') && !pwa) {
|
||||
$('#start').css('display', 'flex')
|
||||
}
|
||||
if (
|
||||
localStorage.getItem('winstore') == 'brewcask' ||
|
||||
localStorage.getItem('winstore') == 'snapcraft' ||
|
||||
localStorage.getItem('winstore') == 'winstore'
|
||||
) {
|
||||
var winstore = true
|
||||
} else {
|
||||
var winstore = false
|
||||
}
|
||||
var l = 5
|
||||
// 生成する文字列に含める文字セット
|
||||
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var cl = c.length;
|
||||
var r = "";
|
||||
for(var i=0; i<l; i++){
|
||||
r += c[Math.floor(Math.random()*cl)];
|
||||
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||
var cl = c.length
|
||||
var r = ''
|
||||
for (var i = 0; i < l; i++) {
|
||||
r += c[Math.floor(Math.random() * cl)]
|
||||
}
|
||||
var start = "https://thedesk.top/ver.json";
|
||||
var start = 'https://thedesk.top/ver.json'
|
||||
fetch(start, {
|
||||
method: 'GET'
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(mess) {
|
||||
console.log(mess);
|
||||
if (mess) {
|
||||
var electron = require("electron");
|
||||
var remote=electron.remote;
|
||||
var platform=remote.process.platform;
|
||||
if(platform=="darwin"){
|
||||
var newest=mess.desk_mac;
|
||||
}else{
|
||||
var newest=mess.desk;
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
if (newest == ver) {
|
||||
todo(lang.lang_version_usever.replace("{{ver}}" ,mess.desk));
|
||||
//betaかWinstoreならアプデチェックしない
|
||||
} else if (ver.indexOf("beta")!=-1 || winstore) {
|
||||
|
||||
}else{
|
||||
localStorage.removeItem("instance")
|
||||
if(localStorage.getItem("new-ver-skip")){
|
||||
if(localStorage.getItem("next-ver")!=newest){
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('update', "true");
|
||||
}else{
|
||||
console.log(lang.lang_version_skipver);
|
||||
todo(lang.lang_version_skipver);
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
todo(error)
|
||||
setLog(start, 'JSON', error)
|
||||
setLog(start, 'JSON', error)
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(mess) {
|
||||
console.table(mess)
|
||||
if (mess) {
|
||||
//askjp_jp_ua: 2019年10月24日、mstdn.jpによるユーザーエージェントアクセス制限
|
||||
if (jp && mess.jp_ua && !localStorage.getItem('askjp_jp_ua')) {
|
||||
localStorage.setItem('askjp_jp_ua', true)
|
||||
$('#askjp_jp_ua').removeClass('hide')
|
||||
}
|
||||
var platform = localStorage.getItem('platform')
|
||||
if (platform == 'darwin') {
|
||||
var newest = mess.desk_mac
|
||||
} else {
|
||||
var newest = mess.desk
|
||||
}
|
||||
if (newest == ver) {
|
||||
todo(lang.lang_version_usever.replace('{{ver}}', mess.desk))
|
||||
//betaかWinstoreならアプデチェックしない
|
||||
} else if (ver.indexOf('beta') != -1 || winstore) {
|
||||
} else {
|
||||
localStorage.removeItem('instance')
|
||||
if (localStorage.getItem('new-ver-skip')) {
|
||||
if (localStorage.getItem('next-ver') != newest) {
|
||||
postMessage(['sendSinmpleIpc', 'update'], '*')
|
||||
} else {
|
||||
console.warn(lang.lang_version_skipver)
|
||||
todo(lang.lang_version_skipver)
|
||||
}
|
||||
} else {
|
||||
postMessage(['sendSinmpleIpc', 'update'], '*')
|
||||
}
|
||||
}else{
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('update', "true");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
if(!localStorage.getItem("last-notice-id")){
|
||||
localStorage.setItem("last-notice-id",0)
|
||||
})
|
||||
if (!localStorage.getItem('last-notice-id')) {
|
||||
localStorage.setItem('last-notice-id', 0)
|
||||
}
|
||||
console.log(localStorage.getItem("last-notice-id"))
|
||||
var start = "https://thedesk.top/notice?since_id="+localStorage.getItem("last-notice-id");
|
||||
console.log(start);
|
||||
var start = 'https://thedesk.top/notice/index.php?since_id=' + localStorage.getItem('last-notice-id')
|
||||
fetch(start, {
|
||||
method: 'GET'
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(mess) {
|
||||
console.log(mess.length);
|
||||
if(mess.length<1){
|
||||
return false;
|
||||
}else{
|
||||
var last=localStorage.getItem("last-notice-id")
|
||||
localStorage.setItem("last-notice-id",mess[0].ID)
|
||||
for(i=0;i<mess.length;i++){
|
||||
var obj=mess[i];
|
||||
if(obj.ID*1<=last){
|
||||
break;
|
||||
}else{
|
||||
var show=true;
|
||||
if(obj.Toot!=""){
|
||||
var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.Toot+'\',\'main\')">Show</button>';
|
||||
}else{
|
||||
var toot="";
|
||||
}
|
||||
if(obj.Ver!=""){
|
||||
if(obj.Ver==ver){
|
||||
show=true;
|
||||
}else{
|
||||
show=false;
|
||||
}
|
||||
}
|
||||
if(obj.Domain!=""){
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (multi) {
|
||||
show=false;
|
||||
var accts = JSON.parse(multi);
|
||||
Object.keys(accts).forEach(function(key) {
|
||||
var acct = accts[key];
|
||||
if(acct.domain==obj.Domain){
|
||||
show=true;
|
||||
method: 'GET',
|
||||
cors: true
|
||||
})
|
||||
.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(mess) {
|
||||
if (mess.length < 1) {
|
||||
return false
|
||||
} else {
|
||||
var last = localStorage.getItem('last-notice-id')
|
||||
localStorage.setItem('last-notice-id', mess[0].ID)
|
||||
for (i = 0; i < mess.length; i++) {
|
||||
var obj = mess[i]
|
||||
if (obj.ID * 1 <= last) {
|
||||
break
|
||||
} else {
|
||||
if (obj.type == 'textv2') {
|
||||
if (~obj.languages.indexOf(lang.language)) {
|
||||
var showVer = true
|
||||
if (obj.toot != '') {
|
||||
var toot =
|
||||
'<button class="btn-flat toast-action" onclick="detEx(\'' +
|
||||
obj.toot +
|
||||
"','main')\">Show</button>"
|
||||
} else {
|
||||
var toot = ''
|
||||
}
|
||||
if (obj.ver != '') {
|
||||
if (obj.ver == ver) {
|
||||
showVer = true
|
||||
} else {
|
||||
showVer = false
|
||||
}
|
||||
}
|
||||
if (obj.domain != '') {
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (multi) {
|
||||
showVer = false
|
||||
var accts = JSON.parse(multi)
|
||||
Object.keys(accts).forEach(function(key) {
|
||||
var acct = accts[key]
|
||||
if (acct.domain == obj.domain) {
|
||||
showVer = true
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
if (showVer) {
|
||||
M.toast({
|
||||
html:
|
||||
escapeHTML(obj.text) +
|
||||
toot +
|
||||
'<span class="sml grey-text">(スライドして消去)</span>',
|
||||
displayLength: 86400
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
if(show){
|
||||
Materialize.toast(obj.Text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
var infostreaming=false;
|
||||
function infowebsocket(){
|
||||
infows = new WebSocket("wss://thedesk.top/ws/");
|
||||
var infostreaming = false
|
||||
function infowebsocket() {
|
||||
infows = new WebSocket('wss://thedesk.top/ws/')
|
||||
infows.onopen = function(mess) {
|
||||
console.log(tlid + ":Connect Streaming Info:");
|
||||
console.log(mess);
|
||||
infostreaming=true;
|
||||
console.log([tlid, ':Connect Streaming Info:', mess])
|
||||
infostreaming = true
|
||||
}
|
||||
infows.onmessage = function(mess) {
|
||||
console.log(":Receive Streaming:");
|
||||
console.log(JSON.parse(mess.data));
|
||||
var obj=JSON.parse(mess.data);
|
||||
if(obj.type!="counter"){
|
||||
if(obj.id*1<=localStorage.getItem("last-notice-id")){
|
||||
|
||||
}else{
|
||||
localStorage.setItem("last-notice-id",obj.id)
|
||||
var show=true;
|
||||
if(obj.toot!=""){
|
||||
var toot='<button class="btn-flat toast-action" onclick="detEx(\''+obj.toot+'\',\'main\')">Show</button>';
|
||||
}else{
|
||||
var toot="";
|
||||
}
|
||||
if(obj.ver!=""){
|
||||
if(obj.ver==ver){
|
||||
show=true;
|
||||
}else{
|
||||
show=false;
|
||||
}
|
||||
}
|
||||
if(obj.domain!=""){
|
||||
var multi = localStorage.getItem("multi");
|
||||
if (multi) {
|
||||
show=false;
|
||||
var accts = JSON.parse(multi);
|
||||
Object.keys(accts).forEach(function(key) {
|
||||
var acct = accts[key];
|
||||
if(acct.domain==obj.domain){
|
||||
show=true;
|
||||
console.log([tlid, ':Receive Streaming:', JSON.parse(mess.data)])
|
||||
var obj = JSON.parse(mess.data)
|
||||
if (obj.type != 'counter') {
|
||||
if (obj.type == 'textv2') {
|
||||
if (~obj.languages.indexOf(lang.language)) {
|
||||
localStorage.setItem('last-notice-id', obj.id)
|
||||
var showVer = true
|
||||
if (obj.toot != '') {
|
||||
var toot =
|
||||
'<button class="btn-flat toast-action" onclick="detEx(\'' +
|
||||
obj.toot +
|
||||
"','main')\">Show</button>"
|
||||
} else {
|
||||
var toot = ''
|
||||
}
|
||||
if (obj.ver != '') {
|
||||
if (obj.ver == ver) {
|
||||
showVer = true
|
||||
} else {
|
||||
showVer = false
|
||||
}
|
||||
});
|
||||
}
|
||||
if (obj.domain != '') {
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (multi) {
|
||||
showVer = false
|
||||
var accts = JSON.parse(multi)
|
||||
Object.keys(accts).forEach(function(key) {
|
||||
var acct = accts[key]
|
||||
if (acct.domain == obj.domain) {
|
||||
showVer = true
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
if (showVer) {
|
||||
console.log(obj.text)
|
||||
console.log(escapeHTML(obj.text))
|
||||
M.toast({
|
||||
html:
|
||||
escapeHTML(obj.text) +
|
||||
toot +
|
||||
'<span class="sml grey-text">(スライドして消去)</span>',
|
||||
displayLength: 86400
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
if(show){
|
||||
Materialize.toast(obj.text+toot+'<span class="sml grey-text">(スライドして消去)</span>', 86400);
|
||||
}
|
||||
} else {
|
||||
$('#persons').text(obj.text)
|
||||
}
|
||||
}else{
|
||||
$("#persons").text(obj.text);
|
||||
}
|
||||
}
|
||||
infows.onerror = function(error) {
|
||||
infostreaming=false;
|
||||
console.error("Error closing:info");
|
||||
console.error(error);
|
||||
return false;
|
||||
};
|
||||
infows.onclose = function() {
|
||||
infostreaming=false;
|
||||
console.error("Closing:info");
|
||||
};
|
||||
}
|
||||
setInterval(function(){
|
||||
if(!infostreaming){
|
||||
console.log("try to connect")
|
||||
infowebsocket();
|
||||
infostreaming = false
|
||||
console.error('Error closing:info')
|
||||
console.error(error)
|
||||
return false
|
||||
}
|
||||
}, 10000);
|
||||
infows.onclose = function() {
|
||||
infostreaming = false
|
||||
console.error('Closing:info')
|
||||
}
|
||||
}
|
||||
setInterval(function() {
|
||||
if (!infostreaming) {
|
||||
console.log('try to connect to base-streaming')
|
||||
infowebsocket()
|
||||
}
|
||||
}, 10000)
|
||||
function openRN() {
|
||||
$('#releasenote').modal('open')
|
||||
if (lang.language == 'ja') {
|
||||
verp = ver.replace('(', '')
|
||||
verp = verp.replace('.', '-')
|
||||
verp = verp.replace('.', '-')
|
||||
verp = verp.replace('[', '-')
|
||||
verp = verp.replace(']', '')
|
||||
verp = verp.replace(')', '')
|
||||
verp = verp.replace(' ', '_')
|
||||
$('#release-' + verp).show()
|
||||
} else {
|
||||
$('#release-en').show()
|
||||
}
|
||||
}
|
||||
function closeSupport() {
|
||||
$('#support-btm').animate(
|
||||
{
|
||||
bottom: '-300px'
|
||||
},
|
||||
{
|
||||
duration: 300,
|
||||
complete: function() {
|
||||
$('#support-btm').addClass('hide')
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
function closeStart() {
|
||||
$('#start').css('display', 'none')
|
||||
var platform = localStorage.getItem('platform')
|
||||
var ver = localStorage.getItem('ver')
|
||||
}
|
||||
|
||||
@@ -1,89 +1,105 @@
|
||||
var defaultemojiList=["activity","flag","food","nature","object","people","place","symbol"];
|
||||
var defaultemoji={
|
||||
activity:activity,
|
||||
flag:flag,
|
||||
food:food,
|
||||
nature:nature,
|
||||
object:object,
|
||||
people:people,
|
||||
place:place,
|
||||
symbol:symbol
|
||||
};
|
||||
if(lang=="ja"){
|
||||
var defaultemojiname={
|
||||
activity:"活動",
|
||||
flag:"国旗",
|
||||
food:"食べ物",
|
||||
nature:"自然",
|
||||
object:"もの",
|
||||
people:"ひと",
|
||||
place:"場所",
|
||||
symbol:"記号"
|
||||
};
|
||||
}else{
|
||||
var defaultemojiname={
|
||||
activity:"Activities",
|
||||
flag:"Flags",
|
||||
food:"Foods",
|
||||
nature:"Nature",
|
||||
object:"Tools",
|
||||
people:"People",
|
||||
place:"Places",
|
||||
symbol:"Symbols"
|
||||
};
|
||||
var defaultemojiList = ['activity', 'flag', 'food', 'nature', 'object', 'people', 'place', 'symbol']
|
||||
var defaultemoji = {
|
||||
activity: activity,
|
||||
flag: flag,
|
||||
food: food,
|
||||
nature: nature,
|
||||
object: object,
|
||||
people: people,
|
||||
place: place,
|
||||
symbol: symbol
|
||||
}
|
||||
if (lang == 'ja') {
|
||||
var defaultemojiname = {
|
||||
activity: '活動',
|
||||
flag: '国旗',
|
||||
food: '食べ物',
|
||||
nature: '自然',
|
||||
object: 'もの',
|
||||
people: 'ひと',
|
||||
place: '場所',
|
||||
symbol: '記号'
|
||||
}
|
||||
} else {
|
||||
var defaultemojiname = {
|
||||
activity: 'Activities',
|
||||
flag: 'Flags',
|
||||
food: 'Foods',
|
||||
nature: 'Nature',
|
||||
object: 'Tools',
|
||||
people: 'People',
|
||||
place: 'Places',
|
||||
symbol: 'Symbols'
|
||||
}
|
||||
}
|
||||
|
||||
function defaultEmoji(target){
|
||||
var json=defaultemoji[target];
|
||||
var emojis="";
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var emoji = json[key];
|
||||
emojis = emojis + '<a onclick="defEmoji(\''+emoji["shortcode"]+'\')" class="pointer"><span style="width: 20px; height: 20px; display: inline-block; background-image: url(\'../../img/sheet.png\'); background-size: 4900%; background-position: '+emoji["css"]+';"></span></a>';
|
||||
});
|
||||
$("#emoji-list").html(emojis);
|
||||
$("#now-emoji").text(lang.lang_defaultemojis_text.replace("{{cat}}" ,defaultemojiname[target]));
|
||||
console.log(target);
|
||||
$(".emoji-control").addClass("hide");
|
||||
}
|
||||
function customEmoji(){
|
||||
$("#emoji-suggest").val("");
|
||||
$(".emoji-control").removeClass("hide");
|
||||
emojiList('home')
|
||||
}
|
||||
function defEmoji(target){
|
||||
var emojiraw = newpack.filter(function(item, index){
|
||||
if (item.short_name == target) return true;
|
||||
});
|
||||
emoji=twemoji.convert.fromCodePoint(emojiraw[0].unified);
|
||||
var now = $("#textarea").val();
|
||||
var selin = localStorage.getItem("cursor");
|
||||
var now = $("#textarea").val();
|
||||
if(selin>0){
|
||||
var before = now.substr(0, selin);
|
||||
var after = now.substr(selin, now.length);
|
||||
newt = before+ emoji + after;
|
||||
}else{
|
||||
newt = emoji+now;
|
||||
function defaultEmoji(target) {
|
||||
var announcement = false
|
||||
if ($('#media').val() == 'announcement') {
|
||||
announcement = true
|
||||
}
|
||||
var json = defaultemoji[target]
|
||||
var emojis = ''
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var emoji = json[key]
|
||||
if (announcement) {
|
||||
var def = `<a onclick="emojiReactionDef('${emoji['shortcode']}')" class="pointer">`
|
||||
} else {
|
||||
var def = `<a onclick="defEmoji('${emoji['shortcode']}')" class="pointer">`
|
||||
}
|
||||
console.log(emoji);
|
||||
$("#textarea").val(newt);
|
||||
$("#textarea").focus();
|
||||
var selin = $("#textarea").prop('selectionStart');
|
||||
if(!selin){
|
||||
selin=0;
|
||||
}
|
||||
localStorage.setItem("cursor", selin);
|
||||
emojis =
|
||||
emojis +
|
||||
`${def}
|
||||
<span style="
|
||||
width: 20px; height: 20px; display: inline-block; background-image: url('../../img/sheet.png'); background-size: 4900%;
|
||||
background-position:${emoji['css']};"></span>
|
||||
</a>`
|
||||
})
|
||||
$('#emoji-list').html(emojis)
|
||||
$('#now-emoji').text(lang.lang_defaultemojis_text.replace('{{cat}}', defaultemojiname[target]))
|
||||
$('.emoji-control').addClass('hide')
|
||||
}
|
||||
function customEmoji() {
|
||||
$('#emoji-suggest').val('')
|
||||
$('.emoji-control').removeClass('hide')
|
||||
emojiList('home')
|
||||
}
|
||||
function defEmoji(target) {
|
||||
var selin = $('#textarea').prop('selectionStart')
|
||||
if (!selin) {
|
||||
selin = 0
|
||||
}
|
||||
var emojiraw = newpack.filter(function(item, index) {
|
||||
if (item.short_name == target) return true
|
||||
})
|
||||
var hex = emojiraw[0].unified.split('-')
|
||||
if (hex.length === 2) {
|
||||
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1])
|
||||
} else {
|
||||
emoji = twemoji.convert.fromCodePoint(hex[0])
|
||||
}
|
||||
var now = $('#textarea').val()
|
||||
var before = now.substr(0, selin)
|
||||
var after = now.substr(selin, now.length)
|
||||
newt = before + emoji + after
|
||||
$('#textarea').val(newt)
|
||||
$('#textarea').focus()
|
||||
}
|
||||
function faicon() {
|
||||
var json = faicons
|
||||
var emojis = ''
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var emoji = json[key]
|
||||
var eje = emoji.replace(/fa-/g, '')
|
||||
emojis =
|
||||
emojis +
|
||||
'<a onclick="emojiInsert(\'[faicon]' +
|
||||
eje +
|
||||
'[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa ' +
|
||||
emoji +
|
||||
'"></i></a>'
|
||||
})
|
||||
$('#emoji-list').html(emojis)
|
||||
$('#now-emoji').text('faicon')
|
||||
$('.emoji-control').addClass('hide')
|
||||
}
|
||||
function faicon(){
|
||||
var json=faicons;
|
||||
console.log(json);
|
||||
var emojis="";
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var emoji = json[key];
|
||||
var eje = emoji.replace( /fa-/g , "" ) ;
|
||||
emojis = emojis + '<a onclick="emojiInsert(\'[faicon]'+eje+'[/faicon]\')" class="pointer white-text" style="font-size:24px"><i class="fa '+emoji+'"></i></a>';
|
||||
});
|
||||
$("#emoji-list").html(emojis);
|
||||
$("#now-emoji").text("faicon");
|
||||
$(".emoji-control").addClass("hide");
|
||||
}
|
||||
@@ -92,7 +92,7 @@ var activity=[
|
||||
{shortcode:"man-rowing-boat",css:"95.8333% 14.5833%"},
|
||||
{shortcode:"man-biking",css:"95.8333% 39.5833%"},
|
||||
{shortcode:"man-mountain-biking",css:"95.8333% 64.5833%"}
|
||||
];
|
||||
]
|
||||
var flag=[
|
||||
{shortcode:"checkered_flag",css:"16.6667% 58.3333%"},
|
||||
{shortcode:"crossed_flags",css:"14.5833% 60.4167%"},
|
||||
@@ -356,7 +356,7 @@ var flag=[
|
||||
{shortcode:"rainbow-flag",css:"83.3333% 100%"},
|
||||
{shortcode:"triangular_flag_on_post",css:"54.1667% 6.25%"},
|
||||
{shortcode:"waving_black_flag",css:"20.8333% 29.1667%"},
|
||||
{shortcode:"waving_white_flag",css:"20.8333% 27.0833%"}];
|
||||
{shortcode:"waving_white_flag",css:"20.8333% 27.0833%"}]
|
||||
var food=[
|
||||
{shortcode:"green_apple",css:"12.5% 25%"},
|
||||
{shortcode:"apple",css:"12.5% 22.9167%"},
|
||||
@@ -444,7 +444,7 @@ var food=[
|
||||
{shortcode:"spoon",css:"62.5% 14.5833%"},
|
||||
{shortcode:"fork_and_knife",css:"14.5833% 0%"},
|
||||
{shortcode:"knife_fork_plate",css:"14.5833% 18.75%"}
|
||||
];
|
||||
]
|
||||
var nature=[
|
||||
{shortcode:"dog",css:"22.9167% 62.5%"},
|
||||
{shortcode:"cat",css:"22.9167% 52.0833%"},
|
||||
@@ -605,7 +605,7 @@ var nature=[
|
||||
{shortcode:"droplet",css:"35.4167% 39.5833%"},
|
||||
{shortcode:"sweat_drops",css:"35.4167% 37.5%"},
|
||||
{shortcode:"umbrella_with_rain_drops",css:"0% 100%"}
|
||||
];
|
||||
]
|
||||
var object=[
|
||||
{shortcode:"watch",css:"0% 29.1667%"},
|
||||
{shortcode:"iphone",css:"39.5833% 0%"},
|
||||
@@ -780,7 +780,7 @@ var object=[
|
||||
{shortcode:"closed_lock_with_key",css:"39.5833% 62.5%"},
|
||||
{shortcode:"lock",css:"39.5833% 66.6667%"},
|
||||
{shortcode:"unlock",css:"39.5833% 68.75%"}
|
||||
];
|
||||
]
|
||||
var people=[
|
||||
{shortcode:"grinning",css:"45.8333% 68.75%"},
|
||||
{shortcode:"smiley",css:"45.8333% 75%"},
|
||||
@@ -1096,7 +1096,7 @@ var people=[
|
||||
{shortcode:"woman-raising-hand",css:"93.75% 29.1667%"},
|
||||
{shortcode:"woman-frowning",css:"93.75% 54.1667%"},
|
||||
{shortcode:"woman-pouting",css:"93.75% 79.1667%"}
|
||||
];
|
||||
]
|
||||
var place=[
|
||||
{shortcode:"car",css:"52.0833% 60.4167%"},
|
||||
{shortcode:"taxi",css:"52.0833% 56.25%"},
|
||||
@@ -1217,7 +1217,7 @@ var place=[
|
||||
{shortcode:"milky_way",css:"8.33333% 93.75%"},
|
||||
{shortcode:"bridge_at_night",css:"8.33333% 87.5%"},
|
||||
{shortcode:"foggy",css:"8.33333% 70.8333%"}
|
||||
];
|
||||
]
|
||||
var symbol=[
|
||||
{shortcode:"heart",css:"6.25% 62.5%"},
|
||||
{shortcode:"yellow_heart",css:"35.4167% 14.5833%"},
|
||||
@@ -1492,7 +1492,7 @@ var symbol=[
|
||||
{shortcode:"female_sign",css:"2.08333% 37.5%"},
|
||||
{shortcode:"male_sign",css:"2.08333% 39.5833%"},
|
||||
{shortcode:"staff_of_aesculapius",css:"2.08333% 87.5%"}
|
||||
];
|
||||
]
|
||||
var faicons=[
|
||||
"fa-500px",
|
||||
"fa-address-book",
|
||||
|
||||
@@ -1,250 +0,0 @@
|
||||
//commonError
|
||||
var lang={
|
||||
"language":"en",
|
||||
"lang_toot":"Toot",
|
||||
"lang_there":"Yes",
|
||||
"lang_nothing":"None",
|
||||
"lang_yesno":"Yes",
|
||||
"lang_no":"No",
|
||||
"lang_progress":"Wait...",
|
||||
"lang_edit":"Edit",
|
||||
"lang_del":"Delete",
|
||||
"lang_add":"Add",
|
||||
"lang_fatalerroroccured":"Some errors are occured, please restart TheDesk.",
|
||||
"lang_speech":"Google US English",
|
||||
//language.html
|
||||
"lang_lang":"Language",
|
||||
"lang_langlocale":"English",
|
||||
"lang_back":"Back",
|
||||
"lang_set":"Set",
|
||||
"lang_langadd":"Translate TheDesk to other languages or proofread TheDesk on <a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>. TheDesk needs your help.",
|
||||
//common/version.js
|
||||
"lang_version_usever":"No update is found({{ver}})",
|
||||
"lang_version_skipver":"Update was ignored.",
|
||||
"lang_version_platform":"Was this software installed at Microsoft Store? When select 'yes', any update was ignored.",
|
||||
"lang_version_platform_linux":"Was this software installed at Snapcraft(snapd)? When select 'yes', any update was ignored.",
|
||||
"lang_version_platform_mac":"Was this software installed at Homebrew Cask? When select 'yes', any update was ignored.",
|
||||
//login
|
||||
//login/login.js
|
||||
"lang_login_noauth":"Show TL of unlogined accounts",
|
||||
//login/manager.js
|
||||
"lang_manager_info":"About this instance",
|
||||
"lang_manager_refresh":"Refresh",
|
||||
"lang_manager_delete":"Logout",
|
||||
"lang_manager_color":"Account Color",
|
||||
"lang_manager_confirm":"is about to logout. Continue?",
|
||||
"lang_manager_mainAcct":"Done:choose main account",
|
||||
"lang_manager_def":"Default",
|
||||
"lang_manager_none":"None",
|
||||
"lang_manager_godev":"Open DevCenter of Misskey. We show also an official documents to refer.",
|
||||
//post/bb-md.js
|
||||
"lang_bbmd_misskey":"TheDesk regards \"@\" as reply, but put other parameter. Unlisted on Mastodon means Home on Misskey.",
|
||||
//post/emoji.js
|
||||
"lang_emoji_get":"Get emojis",
|
||||
"lang_emoji_custom":"Custom emojis",
|
||||
"lang_defaultemojis_text":"Emojis about {{cat}}",
|
||||
//post/img.js
|
||||
"lang_postimg_previewdis":"cannot preview",
|
||||
"lang_postimg_aftupload":"You cannot change accounts after uploading.",
|
||||
"lang_postimg_delete":"Delete this image.",
|
||||
//post/post.js
|
||||
"lang_post_tagTL":"This toot does not contain a default tag. This toot will not be shown on Local TL. Continue?",
|
||||
"lang_post_tagVis":"This toot(not 'public' toot) is not shown on this tag's TL.",
|
||||
"lang_post_cwtitle":"Auto CW Alert",
|
||||
"lang_post_cwtxt":"You are about to post longer toot than you set.\nWarning text:",
|
||||
"lang_post_btn1":"Cancel (will not post)",
|
||||
"lang_post_btn2":"Make text hidden automatically",
|
||||
"lang_post_btn3":"Continue to post",
|
||||
//post/status.js
|
||||
"lang_status_favWarn":"It will take a miunte to favourite a remote toot.",
|
||||
"lang_status_btWarn":"It will take a miunte to boost a remote toot.",
|
||||
"lang_status_follow":"Follow",
|
||||
"lang_status_unfollow":"Unfollow",
|
||||
"lang_status_block":"Block",
|
||||
"lang_status_unblock":"Unblock",
|
||||
"lang_status_mute":"Mute",
|
||||
"lang_status_unmute":"Unmute",
|
||||
"lang_status_redraft":"Continue to delete & redraft? You lose statuses of this toot. This fanction may contain some bugs. Images of this toot will be deleted on older than Mastodon 2.4.1.",
|
||||
"lang_status_emphas":"'s toots are emphasized. Please reload after this action.",
|
||||
"lang_status_unemphas":"'s toots are not emphasized. Please reload after this action.",
|
||||
"lang_status_unendorse":"Not feature on profile",
|
||||
"lang_status_endorse":"Feature on profile",
|
||||
//post/suggest.js
|
||||
"lang_suggest_nodata":"Please get emojis list in order to show suggestion.",
|
||||
//post/use-txtbox.js
|
||||
"lang_usetxtbox_reply":"Reply Mode. Ctrl+Shift+C to clear.",
|
||||
//tl/card.js
|
||||
"lang_cards_check":" check",
|
||||
"lang_cards_pip":"PiP mode",
|
||||
//tl/details.js
|
||||
"lang_details_nodata":"No data",
|
||||
"lang_details_filtered":"Filtered toot",
|
||||
"lang_details_embed":"Embed HTML is cliped.",
|
||||
"lang_details_url":"URL of this toot is cliped.",
|
||||
"lang_details_txt":"Content of this toot is cliped.",
|
||||
//tl/filter.js
|
||||
"lang_filter_nodata":"No data",
|
||||
"lang_filter_errordegree":"Please check a context",
|
||||
//tl/list.js
|
||||
"lang_list_nodata":"No data",
|
||||
"lang_list_show":"Show",
|
||||
"lang_list_users":"Users list",
|
||||
"lang_list_nouser":"No users in this list.",
|
||||
"lang_list_add":"Add to the list",
|
||||
"lang_list_add_misskey":"(perhaps this user has been listed)",
|
||||
"lang_list_remove":"Remove from the list",
|
||||
//tl/notification.js
|
||||
"lang_notf_new":" new notifications",
|
||||
//tl/speech.js
|
||||
"lang_speech_refresh":"Save value about TTS config",
|
||||
//tl/src.js
|
||||
"lang_src_ts":"chronological order",
|
||||
"lang_src_people":" people toot",
|
||||
//tl/tag.js
|
||||
"lang_tags_always":"Always toots with ",
|
||||
"lang_tags_realtime":"Tag-stream toot",
|
||||
"lang_tags_tagunpin":"Unpin {{tag}}",
|
||||
"lang_tags_unrealtime":"Disable TsT",
|
||||
"lang_tags_tagwarn":"Auto complete {{tag}}, if toot without {{tag}}",
|
||||
//tl/tl.js
|
||||
"lang_tl_media":"Media",
|
||||
"lang_tl_reconnect":"Reconnect to streaming API",
|
||||
//ui/layout.js
|
||||
"lang_layout_gotop":"Go top of this column. When icon is red, this column cannot connect straming API. Please reload.",
|
||||
"lang_layout_thisacct":"{{notf}} of this account",
|
||||
"lang_layout_delthis":"Remove this column",
|
||||
"lang_layout_setthis":"Preferences of this column",
|
||||
"lang_layout_mediafil":"Media filtering",
|
||||
"lang_layout_linkana":"Auto Link Analyzer",
|
||||
"lang_layout_linkanades":"Auto link analyzer",
|
||||
"lang_layout_tts":"Text to speech ",
|
||||
"lang_layout_reconnect":"Reconnect to streaming API",
|
||||
"lang_layout_headercolor":"Header color of this column",
|
||||
"lang_layout_nodata":"[No data]<br>F5/⌘+R to reload",
|
||||
"lang_layout_dm":"Direct Message",
|
||||
"lang_layout_webviewmode":"Prefer WebView",
|
||||
"lang_excluded":"Excluded type of notification",
|
||||
"lang_layout_excludingbt":"Show BT mode(OFF/Exclude BT/Only BT)",
|
||||
"lang_layout_leftFold":"Stack to the left",
|
||||
"lang_layout_leftUnfold":"Dock on the right",
|
||||
//ui/sort.js
|
||||
"lang_sort_gothis":"Go to this column",
|
||||
"lang_sort_remthis":"Delete this column",
|
||||
//ui/spotify.js
|
||||
"lang_spotify_img":"Attach an album artwork",
|
||||
"lang_spotify_imgno":"Not attach an album artwork",
|
||||
"lang_spotify_acct":"Connect TheDesk to Spotify",
|
||||
"lang_spotify_np":"Done:templete of NowPlaying",
|
||||
"lang_setting_npprovide":"NowPlaying provider:{{set}}",
|
||||
//userdata/his-data.js
|
||||
"lang_hisdata_frcreq":"Required Mastodon 2.4.3 and above",
|
||||
"lang_hisdata_frcwarn":"Unfollow accounts will be shown.",
|
||||
"lang_hisdata_taketime":"It will take 30s ~ several minutes",
|
||||
"lang_hisdata_notonmisskey":"Misskey is unable to request.",
|
||||
"lang_hisdata_key":"This user is proofed by {{set}}",
|
||||
//userdata/showOnTL.js
|
||||
"lang_showontl_movetxt":"This account was moved",
|
||||
"lang_showontl_movebtn":"Continue on the new account",
|
||||
"lang_showontl_botacct":"[bot]",
|
||||
"lang_showontl_followed":"Following you",
|
||||
"lang_showontl_notf":"Notification ",
|
||||
"lang_showontl_domain":"Domain ",
|
||||
"lang_showontl_listwarn":"Follow to add this user to lists.",
|
||||
"lang_showontl_verified":"This website is verified by owner at ",
|
||||
//parse
|
||||
"lang_parse_mentioned":" replied to you",
|
||||
"lang_parse_faved":" favourited your toot",
|
||||
"lang_parse_bted":" boosted your toot",
|
||||
"lang_parse_btedsimple":" boosted",
|
||||
"lang_parse_polled":"'s poll",
|
||||
"lang_parse_notftime":"Actioned at",
|
||||
"lang_parse_cwshow":"Show",
|
||||
"lang_parse_fulltext":"Full size text:",
|
||||
"lang_parse_autofold":"Auto folded",
|
||||
"lang_parse_more":"More",
|
||||
"lang_parse_url":"URL Analyzer",
|
||||
"lang_parse_tagTL":"Timeline of {{tag}}",
|
||||
"lang_parse_tagtoot":"Toot with {{tag}}",
|
||||
"lang_parse_tagpin":"Pin {{tag}}",
|
||||
"lang_parse_public":"Public",
|
||||
"lang_parse_unlisted":"Unlisted",
|
||||
"lang_parse_private":"Private",
|
||||
"lang_parse_direct":"Direct",
|
||||
"lang_parse_clickcopy":"Click to copy text of this toot",
|
||||
"lang_parse_clickcopyurl":"Click to copy URL of this toot",
|
||||
"lang_parse_trans":"Translate to Japanese",
|
||||
"lang_parse_replyto":"Reply to this toot",
|
||||
"lang_parse_bt":"Boost this toot",
|
||||
"lang_parse_fav":"Favourite this toot",
|
||||
"lang_parse_quote":"Quote this toot",
|
||||
"lang_parse_del":"Delete this toot",
|
||||
"lang_parse_pin":"Pin this toot",
|
||||
"lang_parse_det":"Details via your main account.",
|
||||
"lang_parse_redraft":"Delete & re-draft",
|
||||
"lang_parse_followed":"Followed you",
|
||||
"lang_parse_clientop":"Operation of this client",
|
||||
"lang_parse_clienttxt":" will be",
|
||||
"lang_parse_clientno":"done nothing",
|
||||
"lang_parse_clientemp":"emphasized(/not emphasized)",
|
||||
"lang_parse_clientmute":"muted",
|
||||
"lang_parse_mute":" will be muted. You can remove on preferences.",
|
||||
"lang_parse_voted":"Voted",
|
||||
"lang_parse_vote":"Voted",
|
||||
"lang_parse_unvoted":"Show the result without voting",
|
||||
"lang_parse_endedvote":"Expired",
|
||||
"lang_parse_thread":"Show thread",
|
||||
//misskey
|
||||
"lang_misskeyparse_renote":"Repost",
|
||||
"lang_misskeyparse_renoteqt":"Renote",
|
||||
"lang_misskeyparse_reaction":"Reaction",
|
||||
"lang_misskeyparse_tagnostr":"No streaming API on Tag TLs",
|
||||
"lang_misskeyparse_listnostr":"No streaming API on List TLs",
|
||||
"lang_misskeyparse_home":"Home",
|
||||
"lang_misskeyparse_followers":"Follower",
|
||||
"lang_misskeyparse_specified":"Specified User",
|
||||
"lang_misskeyparse_qt":"Misskey renote(quote) mode:Ctrl+Shift+Enter to clear",
|
||||
"lang_misskeyparse_renoted":" renoted your following post.",
|
||||
"lang_misskeyparse_quoted":" quoted your following post.",
|
||||
"lang_misskeyparse_reacted":" reacted your following post.",
|
||||
//setting
|
||||
"lang_setting_time":"Time format:{{set}}",
|
||||
"lang_setting_theme":"Theme:{{set}}",
|
||||
"lang_setting_nsfw":"NSFW:{{set}}",
|
||||
"lang_setting_cw":"CW:{{set}}",
|
||||
"lang_setting_cwtext":"Default CW text:{{set}}",
|
||||
"lang_setting_cws":"Always CW on:{{set}}",
|
||||
"lang_setting_rp":"Reply counter:{{set}}",
|
||||
"lang_setting_vis":"Default visibility:{{set}}",
|
||||
"lang_setting_popup":"Popup notification:{{set}}",
|
||||
"lang_setting_off":"Off",
|
||||
"lang_setting_s":"s",
|
||||
"lang_setting_box":"Default toot box action:{{set}}",
|
||||
"lang_setting_gif":"GIF:{{set}}",
|
||||
"lang_setting_selt":"Auto fold:{{set1}} lines and above, {{set2}} letters and above",
|
||||
"lang_setting_autocw":"Auto CW:{{set1}} lines and above, {{set2}} letters and above",
|
||||
"lang_setting_width":"Minimam width:{{set}}",
|
||||
"lang_setting_fixwidth":"TweetDeck fixed width:{{set}}px",
|
||||
"lang_setting_img":"After posting an image:{{set}}",
|
||||
"lang_setting_font":"Fonts:{{set}}",
|
||||
"lang_setting_default":"default font",
|
||||
"lang_setting_size":"Font size:{{set}}px",
|
||||
"lang_setting_imgheight":"Image height:{{set}}px",
|
||||
"lang_setting_ticker":"#InstanceTicker:{{set}}px",
|
||||
"lang_setting_animation":"Animation: {{set}}",
|
||||
"lang_setting_tag":"Tag TL:{{set}}",
|
||||
"lang_setting_boxConfirm":"Post box:{{set}}",
|
||||
"lang_setting_ul":"Native locale:{{set}}",
|
||||
"lang_setting_notf":"Native notification:{{set}}",
|
||||
"lang_setting_quote":"Quote format:{{set}}",
|
||||
"lang_setting_via":"Via:{{set}}",
|
||||
"lang_setting_mov":"Action buttons hiding:{{set}}",
|
||||
"lang_setting_setasread":"Notification markers:{{set}}",
|
||||
"lang_setting_main":"Default account:{{set}}",
|
||||
"lang_setting_sec":"Secondary toot button:{{set}}",
|
||||
"lang_setting_ksref":"Keyboard shortcuts are refreshed.",
|
||||
"lang_setting_nomuting":"No client is muted.",
|
||||
"lang_setting_notftest":" Notification test ",
|
||||
"lang_setting_notftestprof":"Your icon is shown.",
|
||||
"lang_setting_exportwarn":"Only important data will be exported. You must keep this data secure.",
|
||||
"lang_setting_importwarn":"All data will be deleted.",
|
||||
}
|
||||
@@ -1,252 +0,0 @@
|
||||
//commonError
|
||||
var lang={
|
||||
"language":"ja",
|
||||
"lang_toot":"トゥート",
|
||||
"lang_there":"あり",
|
||||
"lang_nothing":"なし",
|
||||
"lang_yesno":"はい",
|
||||
"lang_no":"いいえ",
|
||||
"lang_progress":"処理中",
|
||||
"lang_edit":"編集",
|
||||
"lang_del":"削除",
|
||||
"lang_add":"追加",
|
||||
"lang_fatalerroroccured":"エラーが発生しました。しばらく待ってから再起動してください。",
|
||||
"lang_speech":"Google 日本語",
|
||||
//language.html
|
||||
"lang_lang":"言語",
|
||||
"lang_langlocale":"日本語",
|
||||
"lang_back":"戻る",
|
||||
"lang_set":"設定",
|
||||
"lang_langadd":"<a href=\"https://github.com/cutls/TheDesk\" target=\"_blank\">GitHub</a>から翻訳に参加できます。英語の校正(緊急)や他言語に翻訳していただける方を募集しております。",
|
||||
//common/version.js
|
||||
"lang_version_usever":"お使いのバージョン{{ver}}は最新です。",
|
||||
"lang_version_skipver":"アップデートはスキップされました。",
|
||||
"lang_version_platform":"このソフトウェアはMicrosoft Storeからダウンロードされましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||
"lang_version_platform_linux":"このソフトウェアはSnapcraft(snapd)からインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||
"lang_version_platform_mac":"このソフトウェアはHomebrew Caskからインストールしましたか?(「はい」を選択すると次回からアップデート通知を無視します。)",
|
||||
//login
|
||||
//login/login.js
|
||||
"lang_login_noauth":"認証せずに見る",
|
||||
//login/manager.js
|
||||
"lang_manager_info":"インスタンス情報",
|
||||
"lang_manager_refresh":"情報更新",
|
||||
"lang_manager_delete":"削除",
|
||||
"lang_manager_color":"アカウントカラーを選択",
|
||||
"lang_manager_confirm":"を削除します。",
|
||||
"lang_manager_mainAcct":"メインアカウントを設定しました。",
|
||||
"lang_manager_def":"既定",
|
||||
"lang_manager_none":"なし",
|
||||
"lang_manager_godev":"MisskeyのDevセンターに移動します。同時に開かれるドキュメントを参考にログインしてください。",
|
||||
//post/bb-md.js
|
||||
"lang_bbmd_misskey":"TheDeskにおけるMisskeyでは、@を返信として扱いますが、全ての@は消去され別パラメータに入力されます。また、「未収載」を「ホーム」として扱います。",
|
||||
//post/emoji.js
|
||||
"lang_emoji_get":"絵文字リストを取得",
|
||||
"lang_emoji_custom":"カスタム絵文字",
|
||||
"lang_defaultemojis_text":"{{cat}}の絵文字",
|
||||
//post/img.js
|
||||
"lang_postimg_previewdis":"プレビューできません。",
|
||||
"lang_postimg_aftupload":"アップロード後はアカウントを切り替えられません。",
|
||||
"lang_postimg_delete":"この画像を削除します",
|
||||
//post/post.js
|
||||
"lang_post_tagTL":"デフォルトタグが挿入されていません。このまま投稿するとローカルには表示されません。",
|
||||
"lang_post_tagVis":"公開範囲が「公開」以外だと、タグTLに表示されません。(一部インスタンスを除く)",
|
||||
"lang_post_cwtitle":"長文投稿の警告",
|
||||
"lang_post_cwtxt":"指定文字数、行数を超えるトゥートを行おうとしています。\n自動CWのタイトル:",
|
||||
"lang_post_btn1":"キャンセル(投稿しない)",
|
||||
"lang_post_btn2":"自動でCWを付ける",
|
||||
"lang_post_btn3":"そのまま投稿",
|
||||
//post/status.js
|
||||
"lang_status_favWarn":"お気に入り登録しました。インスタンスが違うときは時間がかかる場合があります。",
|
||||
"lang_status_btWarn":"ブーストしました。インスタンスが違うときは時間がかかる場合があります。",
|
||||
"lang_status_follow":"フォロー",
|
||||
"lang_status_unfollow":"フォロー解除",
|
||||
"lang_status_block":"ブロック",
|
||||
"lang_status_unblock":"ブロック解除",
|
||||
"lang_status_mute":"ミュート",
|
||||
"lang_status_unmute":"ミュート解除",
|
||||
"lang_status_redraft":"削除して再編集しますか?そのトゥートの全てのデータがリセットされます。この機能はベータ版です。画像は~v2.4.1で破棄されます。",
|
||||
"lang_status_emphas":"を強調します。リロードしてください。",
|
||||
"lang_status_unemphas":"を強調解除します。リロードしてください。",
|
||||
"lang_status_unendorse":"紹介解除",
|
||||
"lang_status_endorse":"プロフで紹介する",
|
||||
//post/suggest.js
|
||||
"lang_suggest_nodata":"サジェストのために絵文字リストを取得してください。",
|
||||
//post/use-txtbox.js
|
||||
"lang_usetxtbox_reply":"返信モードです。クリアするときはCtrl+Shift+Cを押してください。",
|
||||
//tl/card.js
|
||||
"lang_cards_check":"チェック",
|
||||
"lang_cards_pip":"ながら観モード",
|
||||
//tl/details.js
|
||||
"lang_details_nodata":"データなし",
|
||||
"lang_details_filtered":"フィルターされました。",
|
||||
"lang_details_embed":"埋め込みHTMLがコピーされました。",
|
||||
"lang_details_url":"トゥートURLがコピーされました。",
|
||||
"lang_details_txt":"トゥート本文がコピーされました。",
|
||||
//tl/filter.js
|
||||
"lang_filter_nodata":"フィルターはありません",
|
||||
"lang_filter_errordegree":"適応範囲を最低一つ以上チェックしてください。",
|
||||
//tl/list.js
|
||||
"lang_list_nodata":"リストはありません",
|
||||
"lang_list_show":"表示",
|
||||
"lang_list_users":"ユーザー一覧",
|
||||
"lang_list_nouser":"ユーザーはいません",
|
||||
"lang_list_add":"リストに追加",
|
||||
"lang_list_add_misskey":"(重複追加の可能性があります)",
|
||||
"lang_list_remove":"リストから削除",
|
||||
//tl/notification.js
|
||||
"lang_notf_new":"件の新しい通知",
|
||||
//tl/speech.js
|
||||
"lang_speech_refresh":"音声読み上げ設定を更新しました。",
|
||||
//tl/src.js
|
||||
"lang_src_ts":"時系列",
|
||||
"lang_src_people":"人がトゥート",
|
||||
//tl/tag.js
|
||||
"lang_tags_always":"常に",
|
||||
"lang_tags_realtime":"実況",
|
||||
"lang_tags_tagunpin":"{{tag}}をよく使うタグから削除",
|
||||
"lang_tags_unrealtime":"実況解除",
|
||||
"lang_tags_tagwarn":"{{tag}}がない場合自動で補完されます。",
|
||||
//tl/tl.js
|
||||
"lang_tl_media":"メディア",
|
||||
"lang_tl_reconnect":"Streamingに再接続しました",
|
||||
//ui/img.js
|
||||
"lang_img_DLDone":"ダウンロード先:",
|
||||
//ui/layout.js
|
||||
"lang_layout_gotop":"一番上へ。アイコンが赤のときはストリーミングに接続できていません。F5等で再読込をお試し下さい。",
|
||||
"lang_layout_thisacct":"このアカウントの{{notf}}",
|
||||
"lang_layout_delthis":"このカラムを削除",
|
||||
"lang_layout_setthis":"このカラムの設定",
|
||||
"lang_layout_mediafil":"メディアフィルター",
|
||||
"lang_layout_linkana":"リンク解析",
|
||||
"lang_layout_linkanades":"リンクの解析を切り替え",
|
||||
"lang_layout_tts":"読み上げ",
|
||||
"lang_layout_reconnect":"ストリーミング再接続",
|
||||
"lang_layout_headercolor":"TLヘッダーカラー",
|
||||
"lang_layout_nodata":"[ここにトゥートはありません。]<br>F5/⌘+Rで再読込できます。",
|
||||
"lang_layout_dm":"ダイレクトメッセージ",
|
||||
"lang_layout_webviewmode":"WebView優先",
|
||||
"lang_excluded":"除外する通知",
|
||||
"lang_layout_excludingbt":"BT表示(OFF/BT除外/BTのみ)",
|
||||
"lang_layout_leftFold":"左へ重ねる",
|
||||
"lang_layout_leftUnfold":"右へ出す",
|
||||
//ui/sort.js
|
||||
"lang_sort_gothis":"このカラムへ",
|
||||
"lang_sort_remthis":"このカラムを削除",
|
||||
//ui/spotify.js
|
||||
"lang_spotify_img":"アルバムアートワークを添付します。",
|
||||
"lang_spotify_imgno":"アルバムアートワークを添付しません。",
|
||||
"lang_spotify_acct":"アカウント連携をしてください。",
|
||||
"lang_spotify_np":"NowPlaying文書を更新しました。",
|
||||
"lang_setting_npprovide":"NowPlayingのソースを{{set}}に設定しました。",
|
||||
//userdata/his-data.js
|
||||
"lang_hisdata_frcreq":"Mastodon 2.4.3~が必要です",
|
||||
"lang_hisdata_frcwarn":"非フォローだけど絡みがある時に表示されます。",
|
||||
"lang_hisdata_taketime":"30秒から数分かかります",
|
||||
"lang_hisdata_notonmisskey":"このシステムはMisskeyにはありません。",
|
||||
"lang_hisdata_key":"このユーザーの信頼性は{{set}}によって示されています",
|
||||
//userdata/showOnTL.js
|
||||
"lang_showontl_movetxt":"このアカウントは移行しています",
|
||||
"lang_showontl_movebtn":"移行先を見る",
|
||||
"lang_showontl_botacct":"botアカウント",
|
||||
"lang_showontl_followed":"フォローされています",
|
||||
"lang_showontl_notf":"通知",
|
||||
"lang_showontl_domain":"ドメイン",
|
||||
"lang_showontl_listwarn":"リストに追加するためにはフォローが必要です。",
|
||||
"lang_showontl_verified":"このユーザーの所持するWebサイトであると証明されています。",
|
||||
//parse
|
||||
"lang_parse_mentioned":"が返信しました",
|
||||
"lang_parse_faved":"がお気に入り登録しました",
|
||||
"lang_parse_bted":"がブーストしました",
|
||||
"lang_parse_btedsimple":"がブースト",
|
||||
"lang_parse_polled":"のアンケート",
|
||||
"lang_parse_notftime":"通知された時間",
|
||||
"lang_parse_cwshow":"見る",
|
||||
"lang_parse_fulltext":"以下全文",
|
||||
"lang_parse_autofold":"自動折り畳み",
|
||||
"lang_parse_more":"続き...",
|
||||
"lang_parse_url":"URL解析",
|
||||
"lang_parse_tagTL":"{{tag}}のタイムライン",
|
||||
"lang_parse_tagtoot":"{{tag}}でトゥート",
|
||||
"lang_parse_tagpin":"{{tag}}をよく使うタグへ",
|
||||
"lang_parse_public":"公開",
|
||||
"lang_parse_unlisted":"未収載",
|
||||
"lang_parse_private":"非公開",
|
||||
"lang_parse_direct":"ダイレクト",
|
||||
"lang_parse_clickcopy":"クリックして本文をコピー",
|
||||
"lang_parse_clickcopyurl":"クリックしてトゥートURLをコピー",
|
||||
"lang_parse_trans":"このトゥートを日本語に翻訳",
|
||||
"lang_parse_replyto":"このトゥートに返信",
|
||||
"lang_parse_bt":"このトゥートをブースト",
|
||||
"lang_parse_fav":"このトゥートをお気に入り登録",
|
||||
"lang_parse_quote":"このトゥートを引用",
|
||||
"lang_parse_del":"このトゥートを削除",
|
||||
"lang_parse_pin":"このトゥートをピン留め",
|
||||
"lang_parse_det":"詳細(メインアカウント経由)",
|
||||
"lang_parse_redraft":"このトゥートを削除して再編集",
|
||||
"lang_parse_followed":"フォローされました。",
|
||||
"lang_parse_clientop":"クライアント処理",
|
||||
"lang_parse_clienttxt":"に対する処理を選択してください。",
|
||||
"lang_parse_clientno":"何もしない",
|
||||
"lang_parse_clientemp":"強調表示/解除",
|
||||
"lang_parse_clientmute":"ミュート",
|
||||
"lang_parse_mute":"ミュートします。設定から解除できます。",
|
||||
"lang_parse_voted":"投票済みです",
|
||||
"lang_parse_vote":"投票",
|
||||
"lang_parse_unvoted":"結果だけ見る",
|
||||
"lang_parse_endedvote":"終了済み",
|
||||
"lang_parse_thread":"会話を表示",
|
||||
//misskey
|
||||
"lang_misskeyparse_renote":"再投稿",
|
||||
"lang_misskeyparse_renoteqt":"引用",
|
||||
"lang_misskeyparse_reaction":"リアクション",
|
||||
"lang_misskeyparse_tagnostr":"タグTLはストリーミング非対応です。",
|
||||
"lang_misskeyparse_listnostr":"リストTLはストリーミング非対応です。",
|
||||
"lang_misskeyparse_home":"ホーム",
|
||||
"lang_misskeyparse_followers":"フォロワー",
|
||||
"lang_misskeyparse_specified":"ユーザー指定",
|
||||
"lang_misskeyparse_qt":"MisskeyのRenote(引用モード)中:Ctrl+Shift+Cでクリア",
|
||||
"lang_misskeyparse_renoted":"がRepost",
|
||||
"lang_misskeyparse_quoted":"が引用",
|
||||
"lang_misskeyparse_reacted":"がリアクション",
|
||||
//setting
|
||||
"lang_setting_time":"時間設定を{{set}}に設定しました。",
|
||||
"lang_setting_theme":"テーマ設定を{{set}}に設定しました。",
|
||||
"lang_setting_nsfw":"画像表示設定を{{set}}に設定しました。",
|
||||
"lang_setting_cw":"テキスト表示設定を{{set}}に設定しました。",
|
||||
"lang_setting_cwtext":"デフォルトの警告文を「{{set}}」に設定しました。",
|
||||
"lang_setting_cws":"標準でCW:{{set}}",
|
||||
"lang_setting_rp":"リプライ数表示:{{set}}",
|
||||
"lang_setting_vis":"デフォルトの公開設定を{{set}}に設定しました。",
|
||||
"lang_setting_popup":"ポップアップお知らせを{{set}}に設定しました。",
|
||||
"lang_setting_off":"オフ",
|
||||
"lang_setting_s":"秒",
|
||||
"lang_setting_box":"デフォルトでのボックスの挙動を{{set}}に設定しました。",
|
||||
"lang_setting_gif":"アイコンアニメーション再生を{{set}}に設定しました。",
|
||||
"lang_setting_selt":"{{set1}}行以上または{{set2}}文字以上でテキストを隠します。",
|
||||
"lang_setting_autocw":"{{set1}}行以上または{{set2}}文字以上で警告を表示します。",
|
||||
"lang_setting_width":"横幅最低を{{set}}pxに設定しました。",
|
||||
"lang_setting_fixwidth":"TweetDeckの横幅を{{set}}pxに設定しました。",
|
||||
"lang_setting_img":"画像投稿後の設定を「{{set}}」に設定しました。",
|
||||
"lang_setting_font":"フォントを{{set}}に設定しました。",
|
||||
"lang_setting_default":"デフォルト",
|
||||
"lang_setting_size":"フォントサイズを{{set}}pxに設定しました。",
|
||||
"lang_setting_imgheight":"画像高さを{{set}}pxに設定しました。",
|
||||
"lang_setting_ticker":"#InstanceTicker使用を{{set}}に設定しました。",
|
||||
"lang_setting_animation":"アニメーションを{{set}}に設定しました。",
|
||||
"lang_setting_tag":"タグの取得範囲を「{{set}}」に設定しました。",
|
||||
"lang_setting_boxConfirm":"投稿ボックスを{{set}}",
|
||||
"lang_setting_ul":"独自ロケール設定を{{set}}に設定しました。",
|
||||
"lang_setting_notf":"ネイティブ通知を{{set}}に設定しました。",
|
||||
"lang_setting_quote":"引用形式を{{set}}に設定しました。",
|
||||
"lang_setting_via":"via表示を{{set}}に設定しました。",
|
||||
"lang_setting_mov":"アクションボタン非表示を{{set}}に設定しました。",
|
||||
"lang_setting_setasread":"通知カラム存在時新着非表示を{{set}}に設定しました。",
|
||||
"lang_setting_main":"起動時・投稿時のアカウントを{{set}}に設定しました。",
|
||||
"lang_setting_sec":"セカンダリートゥートボタン:{{set}}",
|
||||
"lang_setting_ksref":"キーボードショートカットが更新されました。",
|
||||
"lang_setting_nomuting":"ミュートしているクライアントはありません。",
|
||||
"lang_setting_notftest":"通知テスト",
|
||||
"lang_setting_notftestprof":"アイコンはあなたのアカウントのものです。",
|
||||
"lang_setting_exportwarn":"重要なデータのみエクスポートされます。エクスポートされたデータは外部に公開しないでください。全ての認証データが含まれています。",
|
||||
"lang_setting_importwarn":"全てのデータがリセットされます。"
|
||||
}
|
||||
@@ -1,126 +1,88 @@
|
||||
//インスタンスリスト
|
||||
var idata={
|
||||
"kirishima.cloud":"instance",
|
||||
"kirishima.cloud_name":"アスタルテ",
|
||||
"kirishima.cloud_letters":"6229",
|
||||
"kirishima.cloud_bbcode":"enabled",
|
||||
"kirishima.cloud_markdown":"enabled",
|
||||
"kirishima.cloud_glitch":"enabled",
|
||||
"kirishima.cloud_public":"パブリックタイムライン",
|
||||
"minohdon.jp":"instance",
|
||||
"minohdon.jp_name":"箕面どん",
|
||||
"minohdon.jp_letters":"500",
|
||||
"minohdon.jp_bbcode":"disabled",
|
||||
"minohdon.jp_markdown":"disabled",
|
||||
"minohdon.jp_glitch":"disabled",
|
||||
"knzk.me":"instance",
|
||||
"knzk.me_name":"Knzk",
|
||||
"knzk.me_letters":"5000",
|
||||
"knzk.me_bbcode":"disabled",
|
||||
"knzk.me_markdown":"disabled",
|
||||
"knzk.me_glitch":"disabled",
|
||||
"mastodos.com":"instance",
|
||||
"mastodos.com_name":"マストどす",
|
||||
"mastodos.com_letters":"500",
|
||||
"mastodos.com_bbcode":"disabled",
|
||||
"mastodos.com_markdown":"disabled",
|
||||
"mastodos.com_glitch":"disabled",
|
||||
"dev.kirishima.cloud":"hidden",
|
||||
"dev.kirishima.cloud_name":"アスタルテ(Dev)",
|
||||
"dev.kirishima.cloud_letters":"6229",
|
||||
"dev.kirishima.cloud_bbcode":"enabled",
|
||||
"dev.kirishima.cloud_markdown":"enabled",
|
||||
"dev.kirishima.cloud_glitch":"enabled",
|
||||
"mstdn.y-zu.org":"instance",
|
||||
"mstdn.y-zu.org_name":"Yづドン(Y-zuDon)",
|
||||
"mstdn.y-zu.org_letters":"500",
|
||||
"mstdn.y-zu.org_bbcode":"disabled",
|
||||
"mstdn.y-zu.org_markdown":"enabled",
|
||||
"mstdn.y-zu.org_glitch":"disabled",
|
||||
"imastodon.net":"instance",
|
||||
"imastodon.net_name":"im@stodon",
|
||||
"imastodon.net_letters":"500",
|
||||
"imastodon.net_bbcode":"disabled",
|
||||
"imastodon.net_markdown":"disabled",
|
||||
"imastodon.net_home":"オフィス",
|
||||
"imastodon.net_local":"楽屋",
|
||||
"imastodon.net_notification":"ホワイトボード",
|
||||
"imastodon.net_public":"ライブステージ",
|
||||
"imastodon.net_post":"あふぅ",
|
||||
"imastodon.net_fav":"の頭にティンときたようです",
|
||||
"imastodon.net_bt":":「わかるわ」",
|
||||
"imastodon.net_follow":"名刺をいただきました",
|
||||
"imastodon.net_glitch":"disabled",
|
||||
"mstdn.osaka":"instance",
|
||||
"mstdn.osaka_name":"大阪丼",
|
||||
"mstdn.osaka_letters":"500",
|
||||
"mstdn.osaka_bbcode":"disabled",
|
||||
"mstdn.osaka_markdown":"disabled",
|
||||
"mstdn.osaka_home":"ウチ",
|
||||
"mstdn.osaka_local":"近所",
|
||||
"mstdn.osaka_notification":"あめちゃん",
|
||||
"mstdn.osaka_public":"新世界",
|
||||
"mstdn.osaka_post":"なんや!",
|
||||
"mstdn.osaka_fav":"がええやん言いました",
|
||||
"mstdn.osaka_bt":"がしばいた",
|
||||
"mstdn.osaka_follow":"ツルまれました",
|
||||
"mstdn.osaka_glitch":"disabled",
|
||||
"mstdn.kemono-friends.info":"instance",
|
||||
"mstdn.kemono-friends.info_name":"ますとどんちほー",
|
||||
"mstdn.kemono-friends.info_letters":"1024",
|
||||
"mstdn.kemono-friends.info_bbcode":"disabled",
|
||||
"mstdn.kemono-friends.info_markdown":"disabled",
|
||||
"mstdn.kemono-friends.info_home":"なわばり",
|
||||
"mstdn.kemono-friends.info_local":"ますとどんちほー",
|
||||
"mstdn.kemono-friends.info_notification":"ねえねえ!",
|
||||
"mstdn.kemono-friends.info_public":"ジャパリパーク",
|
||||
"mstdn.kemono-friends.info_post":"がおー!",
|
||||
"mstdn.kemono-friends.info_fav":":「すごーい」",
|
||||
"mstdn.kemono-friends.info_bt":":「たーのしー」",
|
||||
"mstdn.kemono-friends.info_glitch":"disabled",
|
||||
"itabashi.0j0.jp":"instance",
|
||||
"itabashi.0j0.jp_name":"板橋丼",
|
||||
"itabashi.0j0.jp_letters":"1024",
|
||||
"itabashi.0j0.jp_bbcode":"disabled",
|
||||
"itabashi.0j0.jp_markdown":"disabled",
|
||||
"itabashi.0j0.jp_glitch":"disabled",
|
||||
"dtp-mstdn.jp":"instance",
|
||||
"dtp-mstdn.jp_name":"DTP鯖",
|
||||
"dtp-mstdn.jp_letters":"500",
|
||||
"dtp-mstdn.jp_bbcode":"disabled",
|
||||
"dtp-mstdn.jp_markdown":"disabled",
|
||||
"dtp-mstdn.jp_glitch":"disabled",
|
||||
"misskey.xyz":"misskey",
|
||||
"misskey.xyz_name":"misskey.xyz",
|
||||
"misskey.xyz_letters":"1000",
|
||||
"misskey.xyz_bbcode":"disabled",
|
||||
"misskey.xyz_markdown":"enabled",
|
||||
"misskey.xyz_public":"Global",
|
||||
"misskey.xyz_post":"Post",
|
||||
"misskey.xyz_fav":" reacted your post.",
|
||||
"misskey.xyz_bt":" reposted your post.",
|
||||
"misskey.dev":"misskey",
|
||||
"misskey.dev_name":"misskey.dev",
|
||||
"misskey.dev_letters":"1024",
|
||||
"misskey.dev_bbcode":"disabled",
|
||||
"misskey.dev_markdown":"enabled",
|
||||
"misskey.dev_public":"Global",
|
||||
"misskey.dev_post":"Post",
|
||||
"misskey.dev_fav":" reacted your post.",
|
||||
"misskey.dev_bt":" reposted your post.",
|
||||
"precure.ml":"instance",
|
||||
"precure.ml_name":"キュアスタ!",
|
||||
"precure.ml_letters":"1024",
|
||||
"precure.ml_bbcode":"disabled",
|
||||
"precure.ml_markdown":"disabled",
|
||||
"precure.ml_post":"キュア!",
|
||||
"precure.ml_glitch":"disabled",
|
||||
"best-friends.chat":"instance",
|
||||
"best-friends.chat_name":"Best Friends",
|
||||
"best-friends.chat_letters":"500",
|
||||
"best-friends.chat_bbcode":"disabled",
|
||||
"best-friends.chat_markdown":"disabled",
|
||||
"best-friends.chat_glitch":"disabled",
|
||||
};
|
||||
var idata = {
|
||||
"kirishima.cloud": "instance",
|
||||
"kirishima.cloud_name": "アスタルテ",
|
||||
"kirishima.cloud_letters": "6229",
|
||||
"kirishima.cloud_bbcode": "enabled",
|
||||
"kirishima.cloud_markdown": "enabled",
|
||||
"kirishima.cloud_glitch": "enabled",
|
||||
"kirishima.cloud_public": "パブリックタイムライン",
|
||||
"minohdon.jp": "instance",
|
||||
"minohdon.jp_name": "箕面どん",
|
||||
"fedibird.com":"instance",
|
||||
"fedibird.com_name":"Fedibird",
|
||||
"fedibird.com_quote":"enabled",
|
||||
"mastodos.com": "instance",
|
||||
"mastodos.com_name": "マストどす",
|
||||
"dev.kirishima.cloud": "hidden",
|
||||
"dev.kirishima.cloud_name": "アスタルテ(Dev)",
|
||||
"dev.kirishima.cloud_letters": "6229",
|
||||
"dev.kirishima.cloud_bbcode": "enabled",
|
||||
"dev.kirishima.cloud_markdown": "enabled",
|
||||
"dev.kirishima.cloud_glitch": "enabled",
|
||||
"mstdn.y-zu.org": "instance",
|
||||
"mstdn.y-zu.org_name": "Yづドン(Y-zuDon)",
|
||||
"imastodon.net": "instance",
|
||||
"imastodon.net_name": "im@stodon",
|
||||
"imastodon.net_home": "オフィス",
|
||||
"imastodon.net_local": "楽屋",
|
||||
"imastodon.net_notification": "ホワイトボード",
|
||||
"imastodon.net_public": "ライブステージ",
|
||||
"imastodon.net_post": "あふぅ",
|
||||
"imastodon.net_fav": "の頭にティンときたようです",
|
||||
"imastodon.net_bt": ":「わかるわ」",
|
||||
"imastodon.net_follow": "名刺をいただきました",
|
||||
"mstdn.osaka_home": "ウチ",
|
||||
"mstdn.osaka_local": "近所",
|
||||
"mstdn.osaka_notification": "あめちゃん",
|
||||
"mstdn.osaka_public": "新世界",
|
||||
"mstdn.osaka_post": "なんや!",
|
||||
"mstdn.osaka_fav": "がええやん言いました",
|
||||
"mstdn.osaka_bt": "がしばいた",
|
||||
"mstdn.osaka_follow": "ツルまれました",
|
||||
"mstdn.kemono-friends.info": "instance",
|
||||
"mstdn.kemono-friends.info_name": "ますとどんちほー",
|
||||
"mstdn.kemono-friends.info_letters": "1024",
|
||||
"mstdn.kemono-friends.info_home": "なわばり",
|
||||
"mstdn.kemono-friends.info_local": "ますとどんちほー",
|
||||
"mstdn.kemono-friends.info_notification": "ねえねえ!",
|
||||
"mstdn.kemono-friends.info_public": "ジャパリパーク",
|
||||
"mstdn.kemono-friends.info_post": "がおー!",
|
||||
"mstdn.kemono-friends.info_fav": ":「すごーい」",
|
||||
"mstdn.kemono-friends.info_bt": ":「たーのしー」",
|
||||
"itabashi.0j0.jp": "instance",
|
||||
"itabashi.0j0.jp_name": "板橋丼",
|
||||
"itabashi.0j0.jp_letters": "1024",
|
||||
"itabashi.0j0.jp_quote":"enabled",
|
||||
"dtp-mstdn.jp": "instance",
|
||||
"dtp-mstdn.jp_name": "dtp-mstdn.jp",
|
||||
"dtp-mstdn.jp_quote":"enabled",
|
||||
"misskey.io": "misskey",
|
||||
"misskey.io_name": "misskey.io",
|
||||
"misskey.io_letters": "1000",
|
||||
"misskey.io_bbcode": "disabled",
|
||||
"misskey.io_markdown": "enabled",
|
||||
"misskey.io_public": "Global",
|
||||
"misskey.io_post": "Post",
|
||||
"misskey.io_fav": " reacted your post.",
|
||||
"misskey.io_bt": " reposted your post.",
|
||||
"misskey.dev": "misskey",
|
||||
"misskey.dev_name": "misskey.dev",
|
||||
"misskey.dev_letters": "1024",
|
||||
"misskey.dev_bbcode": "disabled",
|
||||
"misskey.dev_markdown": "enabled",
|
||||
"misskey.dev_public": "Global",
|
||||
"misskey.dev_post": "Post",
|
||||
"misskey.dev_fav": " reacted your post.",
|
||||
"misskey.dev_bt": " reposted your post.",
|
||||
"precure.ml": "instance",
|
||||
"precure.ml_name": "キュアスタ!",
|
||||
"precure.ml_letters": "1024",
|
||||
"precure.ml_post": "キュア!",
|
||||
"odakyu.app_quote":"enabled",
|
||||
"nitiasa.com_quote":"enabled",
|
||||
"biwakodon.com_quote":"enabled",
|
||||
"comm.cx_quote":"enabled"
|
||||
}
|
||||
|
||||
localStorage.setItem("instance", JSON.stringify(idata));
|
||||
localStorage.setItem("instance", JSON.stringify(idata))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//ログアウトします
|
||||
function logout(){
|
||||
localStorage.removeItem("acct_"+ acct_id + "_at");
|
||||
localStorage.removeItem("domain_"+acct_id);
|
||||
location.href="index.html";
|
||||
todc();
|
||||
function logout() {
|
||||
localStorage.removeItem("acct_" + acct_id + "_at")
|
||||
localStorage.removeItem("domain_" + acct_id)
|
||||
location.href = "index.html"
|
||||
todc()
|
||||
}
|
||||
@@ -1,184 +1,218 @@
|
||||
//プラットフォーム別 最後に読むやつ
|
||||
//リンクを外部で開くか内部で出すか
|
||||
$(document).on('click', 'a', e => {
|
||||
var $a = $(e.target);
|
||||
var url = $a.attr('href');
|
||||
if (!url) {
|
||||
var url = $a.parent().attr('href');
|
||||
}
|
||||
var urls=[];
|
||||
if(url){
|
||||
urls = url.match(/https?:\/\/(.+)/);
|
||||
//リンクを外部で開くか内部で出すか
|
||||
$(document).on('click', 'a', e => {
|
||||
var $a = $(e.target)
|
||||
var url = $a.attr('href')
|
||||
if (!url) {
|
||||
var url = $a.parent().attr('href')
|
||||
}
|
||||
var urls = []
|
||||
if (url) {
|
||||
urls = url.match(/https?:\/\/(.+)/)
|
||||
//トゥートのURLぽかったら
|
||||
toot = url.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
|
||||
//タグのURLぽかったら
|
||||
var tags=[];
|
||||
tags = url.match(
|
||||
/https:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#]+)/
|
||||
);
|
||||
//メンションっぽかったら
|
||||
var ats=[];
|
||||
ats = url.match(
|
||||
/https:\/\/([-a-zA-Z0-9.]+)\/@([-_.!~*\'()a-zA-Z0-9;\/?:\&=+\$,%#@]+)/
|
||||
);
|
||||
console.log(toot);
|
||||
if(toot){
|
||||
if(toot[1]){
|
||||
var acct_id=$a.parent().attr("data-acct");
|
||||
if(!acct_id){
|
||||
acct_id=0;
|
||||
}
|
||||
$a.parent().addClass("loadp")
|
||||
$a.parent().text("Loading...")
|
||||
detEx(url,acct_id);
|
||||
}
|
||||
|
||||
}else if(tags){
|
||||
if(tags[2]){
|
||||
var acct_id=$a.parent().attr("data-acct");
|
||||
if(!acct_id){
|
||||
acct_id=0;
|
||||
}
|
||||
tl('tag',decodeURI(tags[2]),acct_id,'add')
|
||||
}
|
||||
}else if(ats){
|
||||
console.log(ats);
|
||||
if(ats[2]){
|
||||
//Quesdon判定
|
||||
if(!~ats[2].indexOf("@")){
|
||||
udgEx(ats[2]+"@"+ats[1],"main");
|
||||
return false
|
||||
}else{
|
||||
const {
|
||||
shell
|
||||
} = require('electron');
|
||||
|
||||
shell.openExternal(url);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}else{
|
||||
//hrefがhttp/httpsならブラウザで
|
||||
if(urls){
|
||||
if (urls[0]) {
|
||||
const {shell} = require('electron');
|
||||
if(~url.indexOf("thedeks.top")){
|
||||
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
|
||||
url="https://thedesk.top";
|
||||
}
|
||||
shell.openExternal(url);
|
||||
} else {
|
||||
|
||||
location.href = url;
|
||||
toot = url.match(/https:\/\/([^+_]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/)
|
||||
if (!toot) {
|
||||
//Pleroma対策
|
||||
toot = url.match(/https:\/\/([^+_]+)\/users\/([a-zA-Z0-9_]+)\/statuses\/([0-9]+)/)
|
||||
}
|
||||
//タグのURLぽかったら
|
||||
var tags = []
|
||||
tags = url.match(/https:\/\/([^+_]+)\/tags\/([_a-zA-Z0-9\&=+\%]+)/)
|
||||
//メンションっぽかったら
|
||||
var ats = []
|
||||
ats = url.match(/https:\/\/([^+_]+)\/@([_a-zA-Z0-9\&=+\%]+)/)
|
||||
if (toot) {
|
||||
if (toot[1]) {
|
||||
var acct_id = $a.parent().attr('data-acct')
|
||||
if (!acct_id) {
|
||||
acct_id = 0
|
||||
}
|
||||
$a.parent().addClass('loadp')
|
||||
$a.parent().text('Loading...')
|
||||
detEx(url, acct_id)
|
||||
}
|
||||
} else if (tags) {
|
||||
if (tags[2]) {
|
||||
var acct_id = $a.parent().attr('data-acct')
|
||||
if (!acct_id) {
|
||||
acct_id = 0
|
||||
}
|
||||
tl('tag', decodeURI(tags[2]), acct_id, 'add')
|
||||
}
|
||||
} else if (ats) {
|
||||
if (ats[2]) {
|
||||
//Quesdon判定
|
||||
if (!~ats[2].indexOf('@')) {
|
||||
udgEx(url, 'main')
|
||||
return false
|
||||
} else {
|
||||
if(pwa) {
|
||||
return true
|
||||
} else {
|
||||
postMessage(['openUrl', url], '*')
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(pwa) {
|
||||
return true
|
||||
}
|
||||
//hrefがhttp/httpsならブラウザで
|
||||
if (urls) {
|
||||
if (urls[0]) {
|
||||
if (~url.indexOf('thedeks.top')) {
|
||||
//alert("If you recieve this alert, let the developer(Cutls@kirishima.cloud) know it with a screenshot.");
|
||||
url = 'https://thedesk.top'
|
||||
}
|
||||
postMessage(['openUrl', url], '*')
|
||||
} else {
|
||||
location.href = url
|
||||
}
|
||||
} else {
|
||||
location.href = url
|
||||
}
|
||||
}
|
||||
}else{
|
||||
location.href = url;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
//よく使うライブラリ
|
||||
/*マルチバイト用切り出し*/
|
||||
$.isSurrogatePear = function(upper, lower) {
|
||||
return 0xD800 <= upper && upper <= 0xDBFF && 0xDC00 <= lower && lower <= 0xDFFF;
|
||||
};
|
||||
$.mb_strlen = function(str) {
|
||||
var ret = 0;
|
||||
for (var i = 0; i < str.length; i++, ret++) {
|
||||
var upper = str.charCodeAt(i);
|
||||
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
|
||||
if ($.isSurrogatePear(upper, lower)) {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
$.mb_substr = function(str, begin, end) {
|
||||
var ret = '';
|
||||
for (var i = 0, len = 0; i < str.length; i++, len++) {
|
||||
var upper = str.charCodeAt(i);
|
||||
var lower = str.length > (i + 1) ? str.charCodeAt(i + 1) : 0;
|
||||
var s = '';
|
||||
if ($.isSurrogatePear(upper, lower)) {
|
||||
i++;
|
||||
s = String.fromCharCode(upper, lower);
|
||||
} else {
|
||||
s = String.fromCharCode(upper);
|
||||
}
|
||||
if (begin <= len && len < end) {
|
||||
ret += s;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
return false
|
||||
})
|
||||
|
||||
//コピー
|
||||
function execCopy(string){
|
||||
var temp = $("#copy");
|
||||
temp.val(string);
|
||||
temp.select();
|
||||
var result = document.execCommand('copy');
|
||||
return result;
|
||||
}
|
||||
//Nano
|
||||
function nano(){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('nano', "");
|
||||
//よく使うライブラリ
|
||||
|
||||
//コピー
|
||||
function execCopy(string) {
|
||||
postMessage(['copy', string], '*')
|
||||
return true
|
||||
}
|
||||
function progshow(e) {
|
||||
if (e.lengthComputable) {
|
||||
var percent = e.loaded / e.total;
|
||||
console.log(percent * 100);
|
||||
$("#imgsel").hide();
|
||||
if(percent<1){
|
||||
$("#imgup").text(Math.floor(percent*100)+"%");
|
||||
}else{
|
||||
$("#imgup").text(lang.lang_progress);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.on('reload', function (event, arg) {
|
||||
location.reload();
|
||||
})
|
||||
ipc.on('mess', function (event, arg) {
|
||||
if(arg=="unzip"){
|
||||
if(lang=="ja"){
|
||||
$("body").text("アップデートを展開中です。");
|
||||
}else{
|
||||
$("body").text("Unzipping...");
|
||||
var percent = e.loaded / e.total
|
||||
console.log('Progress: ' + percent * 100)
|
||||
$('#imgsel').hide()
|
||||
if (percent < 1) {
|
||||
$('#imgup').text(Math.floor(percent * 100) + '%')
|
||||
} else {
|
||||
$('#imgup').text(lang.lang_progress)
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
//Native Notf
|
||||
ipc.on('shownotf', function (event, args) {
|
||||
if(args["type"]=="toot"){
|
||||
details(id, acct_id)
|
||||
}else if(args["type"]=="userdata"){
|
||||
udg(user, acct_id)
|
||||
}
|
||||
})
|
||||
function opendev(){
|
||||
var webview = document.getElementById("webview");
|
||||
webview.openDevTools();
|
||||
}
|
||||
function opendev() {
|
||||
var webview = document.getElementById('webview')
|
||||
webview.openDevTools()
|
||||
/*webview.sendInputEvent({
|
||||
type: "keyDown",
|
||||
keyCode: '2'
|
||||
});
|
||||
*/
|
||||
}
|
||||
|
||||
var webviewDom = document.getElementById('webview');
|
||||
const {
|
||||
shell
|
||||
} = require('electron');
|
||||
webviewDom.addEventListener('new-window', function(e) {
|
||||
shell.openExternal(e.url);
|
||||
});
|
||||
var soundFile
|
||||
function playSound() {
|
||||
window.AudioContext = window.AudioContext || window.webkitAudioContext
|
||||
if (soundFile) {
|
||||
soundFile.stop()
|
||||
}
|
||||
context = new AudioContext()
|
||||
context.createBufferSource().start(0)
|
||||
context.decodeAudioData(request.response, function(buf) {
|
||||
//console.log("Playing:" , source)
|
||||
source.buffer = buf
|
||||
source.loop = false
|
||||
})
|
||||
source = context.createBufferSource()
|
||||
volumeControl = context.createGain()
|
||||
source.connect(volumeControl)
|
||||
volumeControl.connect(context.destination)
|
||||
var cvol = localStorage.getItem('customVol')
|
||||
if (cvol) {
|
||||
vol = cvol
|
||||
} else {
|
||||
vol = 0.8
|
||||
}
|
||||
volumeControl.gain.value = vol
|
||||
source.start(0)
|
||||
soundFile = source
|
||||
}
|
||||
function nano() {
|
||||
postMessage(['nano', null], '*')
|
||||
}
|
||||
onmessage = function(e) {
|
||||
if (e.data[0] == 'details') {
|
||||
details(e.data[1][0], e.data[1][1])
|
||||
} else if (e.data[0] == 'udg') {
|
||||
udg(e.data[1][0], e.data[1][1])
|
||||
} else if (e.data[0] == 'media') {
|
||||
media(e.data[1][0], e.data[1][1], e.data[1][2], e.data[1][3])
|
||||
} else if (e.data[0] == 'post') {
|
||||
post('pass')
|
||||
} else if (e.data[0] == 'toastSaved') {
|
||||
var showTxt = `${lang.lang_img_DLDone}${
|
||||
e.data[1][0]
|
||||
}<button class="btn-flat toast-action" onclick="openFinder('${e.data[1][1]}')">Show</button>`
|
||||
M.toast({ html: showTxt, displayLength: 5000 })
|
||||
} else if (e.data[0] == 'parseColumn') {
|
||||
parseColumn(e.data[1])
|
||||
} else if (e.data[0] == 'exportSettingsCore') {
|
||||
var exp = exportSettingsCore()
|
||||
postMessage(['exportSettingsCoreComplete', [e.data[1], exp]], '*')
|
||||
} else if (e.data[0] == 'importSettingsCore') {
|
||||
importSettingsCore(e.data[1])
|
||||
} else if (e.data[0] == 'fontList') {
|
||||
fontList(e.data[1])
|
||||
} else if (e.data[0] == 'customSoundSave') {
|
||||
customSoundSave(e.data[1][0], e.data[1][1])
|
||||
} else if (e.data[0] == 'ctLoadCore') {
|
||||
ctLoadCore(e.data[1])
|
||||
} else if (e.data[0] == 'ctLoad') {
|
||||
ctLoad()
|
||||
} else if (e.data[0] == 'customConnect') {
|
||||
customConnect(e.data[1])
|
||||
} else if (e.data[0] == 'clearCustomImport') {
|
||||
clearCustomImport()
|
||||
} else if (e.data[0] == 'npCore') {
|
||||
npCore(e.data[1])
|
||||
} else if (e.data[0] == 'renderMem') {
|
||||
renderMem(e.data[1][0], e.data[1][1], e.data[1][2])
|
||||
} else if (e.data[0] == 'updateProg') {
|
||||
updateProg(e.data[1])
|
||||
} else if (e.data[0] == 'updateMess') {
|
||||
updateMess(e.data[1])
|
||||
} else if (e.data[0] == 'renderAbout') {
|
||||
renderAbout(e.data[1])
|
||||
} else if (e.data[0] == 'asRead') {
|
||||
asRead()
|
||||
} else if (e.data[0] == 'asReadEnd') {
|
||||
asReadEnd()
|
||||
} else if (e.data[0] == 'accessibility') {
|
||||
console.log('atrue')
|
||||
$('body').addClass('accessibility')
|
||||
$('.window-title').before('<div class="accessMark">Screen Reader Optimized</div>')
|
||||
} else if (e.data[0] == 'logData') {
|
||||
$('#logs').val(e.data[1])
|
||||
var obj = document.getElementById('logs')
|
||||
obj.scrollTop = obj.scrollHeight
|
||||
} else if (e.data[0] == 'alert') {
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: e.data[1]
|
||||
})
|
||||
}
|
||||
}
|
||||
/* PWA */
|
||||
if(pwa) {
|
||||
function postMessage(e) {
|
||||
if (e[0] == 'openUrl') {
|
||||
urls = e[1].match(/https?:\/\/(.+)/)
|
||||
if (urls) {
|
||||
Swal.fire({
|
||||
title: 'Open URL',
|
||||
icon: 'info',
|
||||
html:
|
||||
`If you are OK, click: <a href="${urls[0]}" target="_blank" class="btn waves-effect">Here</a>`,
|
||||
showCloseButton: false,
|
||||
showCancelButton: true,
|
||||
focusConfirm: false,
|
||||
confirmButtonText: 'Close'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1 @@
|
||||
//jQuery読む
|
||||
window.jQuery = window.$ = require('./js/common/jquery.js');
|
||||
var Hammer = require('./js/common/hammer.min.js');
|
||||
@@ -1,167 +1,285 @@
|
||||
//jQuery読む
|
||||
window.jQuery = window.$ = require('../../js/common/jquery.js');
|
||||
var Hammer = require('../../js/common/hammer.min.js');
|
||||
$.strip_tags = function(str, allowed) {
|
||||
if(!str){
|
||||
return "";
|
||||
$.strip_tags = function (str, allowed) {
|
||||
if (!str) {
|
||||
return ''
|
||||
}
|
||||
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || [])
|
||||
.join('');
|
||||
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
|
||||
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
|
||||
return str.replace(commentsAndPhpTags, '').replace(tags, function($0, $1) {
|
||||
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
|
||||
});
|
||||
};
|
||||
function escapeHTML(str) {
|
||||
if(!str){
|
||||
return "";
|
||||
}
|
||||
return str.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
}
|
||||
//PHPのnl2brと同様
|
||||
allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
|
||||
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi,
|
||||
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
|
||||
return str.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
|
||||
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
|
||||
})
|
||||
}
|
||||
function escapeHTML(str) {
|
||||
if (!str) {
|
||||
return ''
|
||||
}
|
||||
return str
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
}
|
||||
//PHPのnl2brと同様
|
||||
function nl2br(str) {
|
||||
if(!str){
|
||||
return "";
|
||||
if (!str) {
|
||||
return ''
|
||||
}
|
||||
str = str.replace(/\r\n/g, "<br />");
|
||||
str = str.replace(/(\n|\r)/g, "<br />");
|
||||
return str;
|
||||
str = str.replace(/\r\n/g, '<br />')
|
||||
str = str.replace(/(\n|\r)/g, '<br />')
|
||||
return str
|
||||
}
|
||||
function br2nl(str) {
|
||||
if(!str){
|
||||
return "";
|
||||
if (!str) {
|
||||
return ''
|
||||
}
|
||||
str = str.replace(/<br \/>/g, "\r\n");
|
||||
return str;
|
||||
str = str.replace(/<br \/>/g, '\r\n')
|
||||
return str
|
||||
}
|
||||
function formattime(date){
|
||||
var str=date.getFullYear()+"-";
|
||||
if(date.getMonth()+1<10){
|
||||
str=str+"0"+(date.getMonth()+1)+"-";
|
||||
}else{
|
||||
str=str+(date.getMonth()+1)+"-";
|
||||
function formattime(date) {
|
||||
var str = date.getFullYear() + '-'
|
||||
if (date.getMonth() + 1 < 10) {
|
||||
str = str + '0' + (date.getMonth() + 1) + '-'
|
||||
} else {
|
||||
str = str + (date.getMonth() + 1) + '-'
|
||||
}
|
||||
if(date.getDate()<10){
|
||||
str=str+"0"+date.getDate()
|
||||
}else{
|
||||
str=str+date.getDate()
|
||||
if (date.getDate() < 10) {
|
||||
str = str + '0' + date.getDate()
|
||||
} else {
|
||||
str = str + date.getDate()
|
||||
}
|
||||
str=str+"T";
|
||||
if(date.getHours()<10){
|
||||
str=str+"0"+date.getHours()+":"
|
||||
}else{
|
||||
str=str+date.getHours()+":"
|
||||
str = str + 'T'
|
||||
if (date.getHours() < 10) {
|
||||
str = str + '0' + date.getHours() + ':'
|
||||
} else {
|
||||
str = str + date.getHours() + ':'
|
||||
}
|
||||
if(date.getMinutes()<10){
|
||||
str=str+"0"+date.getMinutes()
|
||||
}else{
|
||||
str=str+date.getMinutes()
|
||||
if (date.getMinutes() < 10) {
|
||||
str = str + '0' + date.getMinutes()
|
||||
} else {
|
||||
str = str + date.getMinutes()
|
||||
}
|
||||
return str;
|
||||
return escapeHTML(str)
|
||||
}
|
||||
function formattimeutc(date){
|
||||
var str=date.getUTCFullYear()+"-";
|
||||
if(date.getUTCMonth()+1<10){
|
||||
str=str+"0"+(date.getUTCMonth()+1)+"-";
|
||||
}else{
|
||||
str=str+(date.getUTCMonth()+1)+"-";
|
||||
function formattimeutc(date) {
|
||||
var str = date.getUTCFullYear() + '-'
|
||||
if (date.getUTCMonth() + 1 < 10) {
|
||||
str = str + '0' + (date.getUTCMonth() + 1) + '-'
|
||||
} else {
|
||||
str = str + (date.getUTCMonth() + 1) + '-'
|
||||
}
|
||||
if(date.getUTCDate()<10){
|
||||
str=str+"0"+date.getUTCDate()
|
||||
}else{
|
||||
str=str+date.getUTCDate()
|
||||
if (date.getUTCDate() < 10) {
|
||||
str = str + '0' + date.getUTCDate()
|
||||
} else {
|
||||
str = str + date.getUTCDate()
|
||||
}
|
||||
str=str+"T";
|
||||
if(date.getUTCHours()<10){
|
||||
str=str+"0"+date.getUTCHours()+":"
|
||||
}else{
|
||||
str=str+date.getUTCHours()+":"
|
||||
str = str + 'T'
|
||||
if (date.getUTCHours() < 10) {
|
||||
str = str + '0' + date.getUTCHours() + ':'
|
||||
} else {
|
||||
str = str + date.getUTCHours() + ':'
|
||||
}
|
||||
if(date.getUTCMinutes()<10){
|
||||
str=str+"0"+date.getUTCMinutes()
|
||||
}else{
|
||||
str=str+date.getUTCMinutes()
|
||||
if (date.getUTCMinutes() < 10) {
|
||||
str = str + '0' + date.getUTCMinutes()
|
||||
} else {
|
||||
str = str + date.getUTCMinutes()
|
||||
}
|
||||
return str;
|
||||
return escapeHTML(str)
|
||||
}
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('custom-css-request', "");
|
||||
ipc.on('custom-css-response', function (event, arg) {
|
||||
if(arg==""){ return false; }
|
||||
var styleNode = document.createElement("style");
|
||||
styleNode.setAttribute("type","text/css")
|
||||
|
||||
var content = document.createTextNode(arg)
|
||||
styleNode.append(content)
|
||||
document.getElementsByTagName("head")[0].append(styleNode)
|
||||
})
|
||||
ipc.on('theme-css-response', function (event, arg) {
|
||||
if(arg==""){ return false; }
|
||||
var styleNode = document.createElement("style");
|
||||
styleNode.setAttribute("type","text/css")
|
||||
|
||||
var content = document.createTextNode(arg)
|
||||
styleNode.append(content)
|
||||
document.getElementsByTagName("head")[0].append(styleNode)
|
||||
})
|
||||
function makeCID(){
|
||||
return randomStr(8)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(4)+"-"+randomStr(12);
|
||||
postMessage(['sendSinmpleIpc', 'custom-css-request'], '*')
|
||||
function makeCID() {
|
||||
let chars = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("")
|
||||
for (let i = 0, len = chars.length; i < len; i++) {
|
||||
switch (chars[i]) {
|
||||
case "x":
|
||||
chars[i] = Math.floor(Math.random() * 16).toString(16)
|
||||
break
|
||||
case "y":
|
||||
chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16)
|
||||
break
|
||||
}
|
||||
}
|
||||
return chars.join("")
|
||||
}
|
||||
function randomStr(l){
|
||||
function randomStr(l) {
|
||||
// 生成する文字列に含める文字セット
|
||||
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var cl = c.length;
|
||||
var r = "";
|
||||
for(var i=0; i<l; i++){
|
||||
r += c[Math.floor(Math.random()*cl)];
|
||||
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||
var cl = c.length
|
||||
var r = ''
|
||||
for (var i = 0; i < l; i++) {
|
||||
r += c[Math.floor(Math.random() * cl)]
|
||||
}
|
||||
return r
|
||||
}
|
||||
function rgbToHex(color) {
|
||||
// HEXに変換したものを代入する変数
|
||||
var hex = ''
|
||||
|
||||
// 第1引数がHEXのとき変換処理は必要ないのでそのままreturn
|
||||
// IE8の場合はjQueryのcss()関数でHEXを返すので除外
|
||||
if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i)) {
|
||||
return color
|
||||
}
|
||||
|
||||
// 正規表現
|
||||
var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/)
|
||||
|
||||
// 正規表現でマッチしたとき
|
||||
if (regex) {
|
||||
var rgb = [
|
||||
// RGBからHEXへ変換
|
||||
parseInt(regex[1]).toString(16),
|
||||
parseInt(regex[2]).toString(16),
|
||||
parseInt(regex[3]).toString(16)
|
||||
]
|
||||
|
||||
for (var i = 0; i < rgb.length; ++i) {
|
||||
// rgb(1,1,1)のようなときHEXに変換すると1桁になる
|
||||
// 1桁のときは前に0を足す
|
||||
if (rgb[i].length == 1) {
|
||||
rgb[i] = '0' + rgb[i]
|
||||
}
|
||||
hex += rgb[i]
|
||||
}
|
||||
|
||||
return hex
|
||||
}
|
||||
|
||||
console.error(color + ':第1引数はRGB形式で入力')
|
||||
}
|
||||
/*マルチバイト用切り出し*/
|
||||
$.isSurrogatePear = function (upper, lower) {
|
||||
return 0xd800 <= upper && upper <= 0xdbff && 0xdc00 <= lower && lower <= 0xdfff
|
||||
}
|
||||
$.mb_strlen = function (str) {
|
||||
var splitter = new GraphemeSplitter()
|
||||
var arr = splitter.splitGraphemes(str)
|
||||
return arr.length
|
||||
}
|
||||
$.mb_substr = function (str, begin, end) {
|
||||
//配列にする
|
||||
var splitter = new GraphemeSplitter()
|
||||
var arr = splitter.splitGraphemes(str)
|
||||
var newarr = []
|
||||
for (var i = 0; i < arr.length; i++) {
|
||||
if (i >= begin && i <= end) {
|
||||
newarr.push(arr[i])
|
||||
}
|
||||
}
|
||||
return newarr.join('')
|
||||
}
|
||||
//ソートするやつ
|
||||
function object_array_sort(data, key, order, fn) {
|
||||
var num_a = -1
|
||||
var num_b = 1
|
||||
if (order === 'asc') {
|
||||
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
|
||||
})
|
||||
var arrObj = {}
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
arrObj[data[i]['family']] = data[i]
|
||||
}
|
||||
data = []
|
||||
for (var key in arrObj) {
|
||||
data.push(arrObj[key])
|
||||
}
|
||||
fn(data)
|
||||
}
|
||||
function setLog(txt1, txt2, txt3) {
|
||||
//url,statuscode,responsetext
|
||||
var text = new Date().toUTCString()
|
||||
text = text + ',' + txt1 + ',' + txt2 + ',' + escapeCsv(txt3)
|
||||
console.error(text)
|
||||
postMessage(['log', text], '*')
|
||||
}
|
||||
function escapeCsv(str) {
|
||||
if (!str) {
|
||||
return str
|
||||
}
|
||||
var result
|
||||
result = str.toString().replace(/\"/g, '""')
|
||||
if (result.indexOf(',') >= 0) {
|
||||
result = '"' + result + '"'
|
||||
}
|
||||
return result
|
||||
}
|
||||
function evalAttr(json, attr, lenCk) {
|
||||
if (json[attr]) {
|
||||
if (lenCk) {
|
||||
if (json[attr][0]) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
function statusModel(now) {
|
||||
if (!now) {
|
||||
var now = new Date().toString()
|
||||
}
|
||||
return {
|
||||
id: '',
|
||||
created_at: now,
|
||||
in_reply_to_id: null,
|
||||
in_reply_to_account_id: null,
|
||||
sensitive: false,
|
||||
spoiler_text: '',
|
||||
visibility: 'public',
|
||||
language: 'en',
|
||||
uri: '',
|
||||
url: '',
|
||||
replies_count: 0,
|
||||
reblogs_count: 0,
|
||||
favourites_count: 0,
|
||||
favourited: false,
|
||||
reblogged: false,
|
||||
muted: false,
|
||||
bookmarked: false,
|
||||
pinned: false,
|
||||
content: '<p><i>No status here</i></p>',
|
||||
reblog: null,
|
||||
application: {
|
||||
name: null,
|
||||
website: null
|
||||
},
|
||||
account: {
|
||||
id: '',
|
||||
username: '',
|
||||
acct: '',
|
||||
display_name: '',
|
||||
locked: false,
|
||||
bot: false,
|
||||
created_at: now,
|
||||
note: '',
|
||||
url: '',
|
||||
avatar: '',
|
||||
avatar_static: '',
|
||||
header: '',
|
||||
header_static: '',
|
||||
followers_count: 0,
|
||||
following_count: 0,
|
||||
statuses_count: 0,
|
||||
last_status_at: now,
|
||||
emojis: [],
|
||||
fields: []
|
||||
},
|
||||
media_attachments: [],
|
||||
mentions: [],
|
||||
tags: [],
|
||||
card: null,
|
||||
poll: null
|
||||
}
|
||||
return r;
|
||||
}
|
||||
function rgbToHex(color)
|
||||
{
|
||||
// HEXに変換したものを代入する変数
|
||||
var hex = '';
|
||||
|
||||
// 第1引数がHEXのとき変換処理は必要ないのでそのままreturn
|
||||
// IE8の場合はjQueryのcss()関数でHEXを返すので除外
|
||||
if (color.match(/^#[a-f\d]{3}$|^#[a-f\d]{6}$/i))
|
||||
{
|
||||
return color;
|
||||
}
|
||||
|
||||
// 正規表現
|
||||
var regex = color.match(/^rgb\(([0-9.]+),\s*([0-9.]+),\s*([0-9.]+)\)$/);
|
||||
|
||||
// 正規表現でマッチしたとき
|
||||
if (regex)
|
||||
{
|
||||
var rgb =
|
||||
[
|
||||
// RGBからHEXへ変換
|
||||
parseInt(regex[1]).toString(16),
|
||||
parseInt(regex[2]).toString(16),
|
||||
parseInt(regex[3]).toString(16)
|
||||
];
|
||||
|
||||
for (var i = 0; i < rgb.length; ++i)
|
||||
{
|
||||
// rgb(1,1,1)のようなときHEXに変換すると1桁になる
|
||||
// 1桁のときは前に0を足す
|
||||
if (rgb[i].length == 1)
|
||||
{
|
||||
rgb[i] = '0' + rgb[i];
|
||||
}
|
||||
hex += rgb[i];
|
||||
}
|
||||
|
||||
return hex;
|
||||
}
|
||||
|
||||
console.error(color+':第1引数はRGB形式で入力');
|
||||
}
|
||||
@@ -1,143 +1,263 @@
|
||||
|
||||
//TL取得
|
||||
var websocket
|
||||
function tl(data) {
|
||||
var tlid=0;
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var type = $("#type-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var tlid = 0
|
||||
if (websocket) {
|
||||
websocket.close()
|
||||
}
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var type = $('#type-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
//タグの場合はカラム追加して描画
|
||||
if (!type) {
|
||||
//デフォルト
|
||||
var type = "local";
|
||||
}
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
$("#notice_nano").text(cap(type, data) + " TL(" + localStorage.getItem(
|
||||
"user_" + acct_id) + "@" + domain + ")");
|
||||
var start = "https://" + domain + "/api/v1/timelines/" + com(type, data);
|
||||
console.log(start);
|
||||
if (!type) {
|
||||
//デフォルト
|
||||
var type = 'local'
|
||||
}
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
$('#notice_nano').text(
|
||||
cap(type, data) + ' TL(' + localStorage.getItem('user_' + acct_id) + '@' + domain + ')'
|
||||
)
|
||||
var start = 'https://' + domain + '/api/v1/timelines/' + com(type, data)
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
var templete = parse([json[0]], '', acct_id, tlid);
|
||||
$("#timeline_nano").html(templete);
|
||||
jQuery("time.timeago").timeago();
|
||||
});
|
||||
//Streaming接続
|
||||
var websocket=[];
|
||||
var tlid=0;
|
||||
if (type == "home") {
|
||||
var start = "wss://" + domain +
|
||||
"/api/v1/streaming/?stream=user&access_token=" + at;
|
||||
} else if (type == "pub") {
|
||||
var start = "wss://" + domain +
|
||||
"/api/v1/streaming/?stream=public&access_token=" + at;
|
||||
} else if (type == "local") {
|
||||
var start = "wss://" + domain +
|
||||
"/api/v1/streaming/?stream=public:local&access_token=" + at;
|
||||
} else if (type == "tag") {
|
||||
var start = "wss://" + domain +
|
||||
"/api/v1/streaming/?stream=hashtag&tag=" + data +"&access_token=" + at;
|
||||
}
|
||||
console.log(start);
|
||||
var wsid = websocket.length;
|
||||
websocket[wsid] = new WebSocket(start);
|
||||
websocket[wsid].onopen = function(mess) {
|
||||
console.log(tlid + ":Connect Streaming API:" + type);
|
||||
console.log(mess);
|
||||
$("#notice_icon_" + tlid).removeClass("red-text");
|
||||
}
|
||||
websocket[wsid].onmessage = function(mess) {
|
||||
console.log(tlid + ":Receive Streaming API:");
|
||||
console.log(websocket[wsid]);
|
||||
var typeA = JSON.parse(mess.data).event;
|
||||
if (typeA == "delete") {
|
||||
var obj = JSON.parse(mess.data).payload;
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").hide();
|
||||
$("[toot-id=" + JSON.parse(mess.data).payload + "]").remove();
|
||||
} else if (typeA == "update") {
|
||||
var obj = JSON.parse(JSON.parse(mess.data).payload);
|
||||
console.log(obj);
|
||||
var templete = parse([obj], '', acct_id, tlid);
|
||||
$("#timeline_nano").html(templete);
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
websocket[wsid].onclose = function(mess) {
|
||||
console.log("Close Streaming API:" + type);
|
||||
})
|
||||
.then(function(response) {
|
||||
if (!response.ok) {
|
||||
response.text().then(function(text) {
|
||||
setLog(response.url, response.status, text)
|
||||
})
|
||||
}
|
||||
return response.json()
|
||||
})
|
||||
.catch(function(error) {
|
||||
console.error(error)
|
||||
})
|
||||
.then(function(json) {
|
||||
var templete = parse([json[0]], '', acct_id, tlid)
|
||||
$('#timeline_nano').html(templete)
|
||||
jQuery('time.timeago').timeago()
|
||||
$('#menu').addClass('hide')
|
||||
})
|
||||
//Streaming接続
|
||||
var tlid = 0
|
||||
if (type == 'home') {
|
||||
var start = 'wss://' + domain + '/api/v1/streaming/?stream=user&access_token=' + at
|
||||
} else if (type == 'pub') {
|
||||
var start = 'wss://' + domain + '/api/v1/streaming/?stream=public&access_token=' + at
|
||||
} else if (type == 'local') {
|
||||
var start = 'wss://' + domain + '/api/v1/streaming/?stream=public:local&access_token=' + at
|
||||
} else if (type == 'tag') {
|
||||
var start =
|
||||
'wss://' + domain + '/api/v1/streaming/?stream=hashtag&tag=' + data + '&access_token=' + at
|
||||
}
|
||||
websocket = new WebSocket(start)
|
||||
websocket.onopen = function(mess) {
|
||||
$('#notice_icon_' + tlid).removeClass('red-text')
|
||||
}
|
||||
websocket.onmessage = function(mess) {
|
||||
var typeA = JSON.parse(mess.data).event
|
||||
if (typeA == 'update') {
|
||||
var obj = JSON.parse(JSON.parse(mess.data).payload)
|
||||
var templete = parse([obj], '', acct_id, tlid)
|
||||
jQuery('time.timeago').timeago()
|
||||
$('#timeline_nano').html(templete)
|
||||
}
|
||||
}
|
||||
websocket[wsid].onerror = function(error) {
|
||||
console.error('WebSocket Error ' + error);
|
||||
};
|
||||
websocket.onerror = function(error) {
|
||||
console.error('WebSocket Error ' + error)
|
||||
}
|
||||
websocket.onclose = function(mess) {
|
||||
console.error('Close Streaming API:' + type)
|
||||
}
|
||||
}
|
||||
//TLのタイトル
|
||||
function cap(type, data) {
|
||||
if (type == "home") {
|
||||
return "Home"
|
||||
} else if (type == "local") {
|
||||
return "Local"
|
||||
} else if (type == "pub") {
|
||||
return "Public"
|
||||
} else if (type == "tag") {
|
||||
return "#" + data
|
||||
} else if (type == "list") {
|
||||
return "List(id:" + data + ")"
|
||||
} else if (type == "notf") {
|
||||
return "Notification"
|
||||
if (type == 'home') {
|
||||
return 'Home'
|
||||
} else if (type == 'local') {
|
||||
return 'Local'
|
||||
} else if (type == 'pub') {
|
||||
return 'Public'
|
||||
} else if (type == 'tag') {
|
||||
return '#' + data
|
||||
} else if (type == 'list') {
|
||||
return 'List(id:' + data + ')'
|
||||
} else if (type == 'notf') {
|
||||
return 'Notification'
|
||||
}
|
||||
}
|
||||
|
||||
//TLのURL
|
||||
function com(type, data) {
|
||||
if (type == "home") {
|
||||
return "home?"
|
||||
} else if (type == "local") {
|
||||
return "public?local=true&"
|
||||
} else if (type == "pub") {
|
||||
return "public?"
|
||||
} else if (type == "tag") {
|
||||
return "tag/" + data + "?"
|
||||
if (type == 'home') {
|
||||
return 'home?'
|
||||
} else if (type == 'local') {
|
||||
return 'public?local=true&'
|
||||
} else if (type == 'pub') {
|
||||
return 'public?'
|
||||
} else if (type == 'tag') {
|
||||
return 'tag/' + data + '?'
|
||||
}
|
||||
if (type == "list") {
|
||||
return "list/" + data + "?"
|
||||
if (type == 'list') {
|
||||
return 'list/' + data + '?'
|
||||
}
|
||||
}
|
||||
|
||||
//TLのアイコン
|
||||
function icon(type) {
|
||||
if (type == "home") {
|
||||
return "home"
|
||||
} else if (type == "local") {
|
||||
return "people_outline"
|
||||
} else if (type == "pub") {
|
||||
return "language"
|
||||
} else if (type == "tag") {
|
||||
return "search"
|
||||
if (type == 'home') {
|
||||
return 'home'
|
||||
} else if (type == 'local') {
|
||||
return 'people_outline'
|
||||
} else if (type == 'pub') {
|
||||
return 'language'
|
||||
} else if (type == 'tag') {
|
||||
return 'search'
|
||||
}
|
||||
if (type == "list") {
|
||||
return "subject"
|
||||
if (type == 'list') {
|
||||
return 'subject'
|
||||
}
|
||||
}
|
||||
function todo(){}
|
||||
function todc(){}
|
||||
function hide(){}
|
||||
function todo() {}
|
||||
function todc() {}
|
||||
function hide() {}
|
||||
$(function($) {
|
||||
//キーボードショートカット
|
||||
$(window).keydown(function(e) {
|
||||
var hasFocus = $('input').is(':focus');
|
||||
var hasFocus2 = $('textarea').is(':focus');
|
||||
var hasFocus = $('input').is(':focus')
|
||||
var hasFocus2 = $('textarea').is(':focus')
|
||||
//Ctrl+Enter:投稿
|
||||
if (event.ctrlKey) {
|
||||
if (e.keyCode === 13) {
|
||||
post();
|
||||
return false;
|
||||
post()
|
||||
return false
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
})
|
||||
function set() {
|
||||
$('#menu').toggleClass('hide')
|
||||
if ($('#menu').hasClass('hide')) {
|
||||
$('#setting').text('Setting')
|
||||
} else {
|
||||
$('#setting').text('Close')
|
||||
}
|
||||
}
|
||||
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (!multi) {
|
||||
var obj = [
|
||||
{
|
||||
at: localStorage.getItem(localStorage.getItem('domain_' + acct_id) + '_at'),
|
||||
name: localStorage.getItem('name_' + acct_id),
|
||||
domain: localStorage.getItem('domain_' + acct_id),
|
||||
user: localStorage.getItem('user_' + acct_id),
|
||||
prof: localStorage.getItem('prof_' + acct_id)
|
||||
}
|
||||
]
|
||||
var json = JSON.stringify(obj)
|
||||
localStorage.setItem('multi', json)
|
||||
} else {
|
||||
var obj = JSON.parse(multi)
|
||||
}
|
||||
var templete
|
||||
var last = localStorage.getItem('last-use')
|
||||
var sel
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var acct = obj[key]
|
||||
var list = key * 1 + 1
|
||||
if (key == last) {
|
||||
sel = 'selected'
|
||||
} else {
|
||||
sel = ''
|
||||
}
|
||||
templete = `<option value="${key}" ${sel}>${acct.user}@${acct.domain}</option>`
|
||||
$('#post-acct-sel').append(templete)
|
||||
})
|
||||
function mov() {
|
||||
return false
|
||||
}
|
||||
function resetmv() {
|
||||
return false
|
||||
}
|
||||
function post() {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/v1/statuses'
|
||||
var str = $('#textarea').val()
|
||||
var toot = {
|
||||
status: str
|
||||
}
|
||||
var vis = loadVis(acct_id)
|
||||
toot.visibility = vis
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify(toot))
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
}
|
||||
$('#textarea').val('')
|
||||
}
|
||||
}
|
||||
}
|
||||
function loadVis(acct_id) {
|
||||
var vist = localStorage.getItem('vis')
|
||||
if (!vist) {
|
||||
return 'public'
|
||||
} else {
|
||||
if (vist == 'memory') {
|
||||
var memory = localStorage.getItem('vis-memory-' + acct_id)
|
||||
if (!memory) {
|
||||
memory = 'public'
|
||||
}
|
||||
return memory
|
||||
} else if (vist == 'server' || vist == 'useapi') {
|
||||
var multi = localStorage.getItem('multi')
|
||||
var obj = JSON.parse(multi)
|
||||
var memory = obj[acct_id]['vis']
|
||||
if (!memory) {
|
||||
memory = 'public'
|
||||
}
|
||||
return memory
|
||||
} else {
|
||||
return vist
|
||||
}
|
||||
}
|
||||
}
|
||||
function loader() {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
console.log(loadVis(acct_id))
|
||||
$('#vis-sel').val(loadVis(acct_id))
|
||||
}
|
||||
loader()
|
||||
$('textarea').height(15) //init
|
||||
$('textarea').css('lineHeight', '1rem') //init
|
||||
|
||||
$('textarea').on('input', function(evt) {
|
||||
if (evt.target.scrollHeight > evt.target.offsetHeight) {
|
||||
$(evt.target).height(evt.target.scrollHeight)
|
||||
} else {
|
||||
var lineHeight = Number(
|
||||
$(evt.target)
|
||||
.css('lineHeight')
|
||||
.split('px')[0]
|
||||
)
|
||||
while (true) {
|
||||
$(evt.target).height($(evt.target).height() - lineHeight)
|
||||
if (evt.target.scrollHeight > evt.target.offsetHeight) {
|
||||
$(evt.target).height(evt.target.scrollHeight)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
235
app/js/platform/preload.js
Normal file
@@ -0,0 +1,235 @@
|
||||
var electron = require('electron')
|
||||
const shell = electron.shell
|
||||
var ipc = electron.ipcRenderer
|
||||
//title bar
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
document.title = 'TheDesk'
|
||||
ipc.send('acsCheck', '')
|
||||
})
|
||||
|
||||
onmessage = function(e) {
|
||||
if (e.data[0] == 'openUrl') {
|
||||
urls = e.data[1].match(/https?:\/\/(.+)/)
|
||||
if (urls) {
|
||||
shell.openExternal(e.data[1])
|
||||
}
|
||||
} else if (e.data[0] == 'sendSinmpleIpc') {
|
||||
ipc.send(e.data[1], '')
|
||||
} else if (e.data[0] == 'dialogStore') {
|
||||
ipc.send('dialogStore', e.data[1])
|
||||
} else if (e.data[0] == 'bmpImage') {
|
||||
ipc.send('bmp-image', e.data[1])
|
||||
} else if (e.data[0] == 'resizeImage') {
|
||||
ipc.send('resize-image', e.data[1])
|
||||
} else if (e.data[0] == 'stampImage') {
|
||||
ipc.send('stamp-image', e.data[1])
|
||||
} else if (e.data[0] == 'dialogCW') {
|
||||
ipc.send('dialogCW', e.data[1])
|
||||
} else if (e.data[0] == 'nativeNotf') {
|
||||
console.log(e.data[1])
|
||||
ipc.send('native-notf', e.data[1])
|
||||
} else if (e.data[0] == 'dialogClient') {
|
||||
ipc.send('dialogClient', e.data[1])
|
||||
} else if (e.data[0] == 'generalDL') {
|
||||
ipc.send('general-dl', e.data[1])
|
||||
} else if (e.data[0] == 'openFinder') {
|
||||
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') {
|
||||
ipc.send('lang', e.data[1])
|
||||
} else if (e.data[0] == 'exportSettings') {
|
||||
ipc.send('exportSettings', e.data[1])
|
||||
} else if (e.data[0] == 'exportSettingsCoreComplete') {
|
||||
ipc.send('export', e.data[1])
|
||||
} else if (e.data[0] == 'importSettings') {
|
||||
ipc.send('importSettings', e.data[1])
|
||||
} else if (e.data[0] == 'customSound') {
|
||||
ipc.send('customSound', e.data[1])
|
||||
} else if (e.data[0] == 'themeJsonDelete') {
|
||||
ipc.send('theme-json-delete', e.data[1])
|
||||
} else if (e.data[0] == 'themeJsonCreate') {
|
||||
ipc.send('theme-json-create', e.data[1])
|
||||
} else if (e.data[0] == 'themeJsonRequest') {
|
||||
ipc.send('theme-json-request', e.data[1])
|
||||
} else if (e.data[0] == 'ha') {
|
||||
ipc.send('ha', e.data[1])
|
||||
} else if (e.data[0] == 'frameSet') {
|
||||
ipc.send('frameSet', e.data[1])
|
||||
} else if (e.data[0] == 'ua') {
|
||||
ipc.send('ua', e.data[1])
|
||||
} else if (e.data[0] == 'aboutData') {
|
||||
ipc.send('aboutData', '')
|
||||
} else if (e.data[0] == 'itunes') {
|
||||
console.log('NowPlaying')
|
||||
ipc.send('itunes', e.data[1])
|
||||
} else if (e.data[0] == 'themeCSSRequest') {
|
||||
ipc.send('theme-css-request', e.data[1])
|
||||
} else if (e.data[0] == 'customCSSRequest') {
|
||||
ipc.send('custom-css-request', e.data[1])
|
||||
} else if (e.data[0] == 'downloadButton') {
|
||||
ipc.send('download-btn', e.data[1])
|
||||
} else if (e.data[0] == 'nano') {
|
||||
ipc.send('nano', null)
|
||||
} else if (e.data[0] == 'asReadComp') {
|
||||
ipc.send('sendMarkersComplete', null)
|
||||
} else if (e.data[0] == 'copy') {
|
||||
ipc.send('copy', e.data[1])
|
||||
} else if (e.data[0] == 'log') {
|
||||
ipc.send('log', e.data[1])
|
||||
}
|
||||
}
|
||||
//version.js
|
||||
ipc.send('getPlatform', '')
|
||||
ipc.on('platform', function(event, args) {
|
||||
localStorage.setItem('platform', args[0])
|
||||
localStorage.setItem('bit', args[1])
|
||||
localStorage.setItem('about', JSON.stringify([args[2], args[3], args[4], args[5]]))
|
||||
})
|
||||
|
||||
ipc.on('reload', function(event, arg) {
|
||||
location.reload()
|
||||
})
|
||||
//Native Notf
|
||||
ipc.on('shownotf', function(event, args) {
|
||||
if (args['type'] == 'toot') {
|
||||
postMessage(['details', [id, acct_id]], '*')
|
||||
} else if (args['type'] == 'userdata') {
|
||||
postMessage(['udg', [user, acct_id]], '*')
|
||||
}
|
||||
})
|
||||
|
||||
//first.js
|
||||
ipc.on('custom-css-response', function(event, arg) {
|
||||
if (arg == '') {
|
||||
return false
|
||||
}
|
||||
var styleNode = document.createElement('style')
|
||||
styleNode.setAttribute('type', 'text/css')
|
||||
|
||||
var content = document.createTextNode(arg)
|
||||
styleNode.append(content)
|
||||
document.getElementsByTagName('head')[0].append(styleNode)
|
||||
})
|
||||
ipc.on('theme-css-response', function(event, arg) {
|
||||
if (arg == '') {
|
||||
return false
|
||||
}
|
||||
var styleNode = document.createElement('style')
|
||||
styleNode.setAttribute('type', 'text/css')
|
||||
|
||||
var content = document.createTextNode(arg)
|
||||
styleNode.append(content)
|
||||
document.getElementsByTagName('head')[0].append(styleNode)
|
||||
})
|
||||
//img.js
|
||||
ipc.on('bmp-img-comp', function(event, b64) {
|
||||
if (b64[2]) {
|
||||
var stamped = true
|
||||
} else {
|
||||
var stamped = false
|
||||
}
|
||||
postMessage(['media', [b64[0], 'image/png', b64[1], stamped]], '*')
|
||||
})
|
||||
ipc.on('resizeJudgement', function(event, b64) {
|
||||
var resize = localStorage.getItem('uploadCrop') * 1
|
||||
if (resize > 0) {
|
||||
var element = new Image()
|
||||
var width
|
||||
element.onload = function() {
|
||||
var width = element.naturalWidth
|
||||
var height = element.naturalHeight
|
||||
if (width > resize || height > resize) {
|
||||
ipc.send('resize-image', [b64[0], resize])
|
||||
} else {
|
||||
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
|
||||
}
|
||||
}
|
||||
element.src = 'data:image/png;base64,' + b64[0]
|
||||
} else {
|
||||
postMessage(['media', [b64[0], 'image/png', b64[1]]], '*')
|
||||
}
|
||||
})
|
||||
//ui,img.js
|
||||
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, '\\\\')
|
||||
console.log('saved')
|
||||
postMessage(['toastSaved', [arg, argC]], '*')
|
||||
})
|
||||
//setting.js
|
||||
ipc.on('langres', function(event, arg) {
|
||||
location.href = '../' + arg + '/setting.html'
|
||||
})
|
||||
ipc.on('exportSettingsFile', function(event, arg) {
|
||||
postMessage(['exportSettingsCore', arg], '*')
|
||||
})
|
||||
ipc.on('exportAllComplete', function(event, arg) {
|
||||
postMessage(['alert', 'Complete'], '*')
|
||||
})
|
||||
ipc.on('config', function(event, arg) {
|
||||
postMessage(['importSettingsCore', arg], '*')
|
||||
})
|
||||
ipc.on('savefolder', function(event, arg) {
|
||||
localStorage.setItem('savefolder', arg)
|
||||
})
|
||||
ipc.on('font-list', function(event, arg) {
|
||||
postMessage(['fontList', arg], '*')
|
||||
})
|
||||
ipc.on('customSoundRender', function(event, args) {
|
||||
postMessage(['customSoundSave', [args[0], args[1]]], '*')
|
||||
})
|
||||
ipc.on('theme-json-list-response', function(event, args) {
|
||||
postMessage(['ctLoadCore', args], '*')
|
||||
})
|
||||
ipc.on('theme-json-delete-complete', function(event, args) {
|
||||
postMessage(['ctLoad', ''], '*')
|
||||
})
|
||||
ipc.on('theme-json-response', function(event, args) {
|
||||
postMessage(['customConnect', args], '*')
|
||||
})
|
||||
ipc.on('theme-json-create-complete', function(event, args) {
|
||||
if(args != '') alert(args)
|
||||
postMessage(['clearCustomImport', ''], '*')
|
||||
postMessage(['ctLoad', ''], '*')
|
||||
})
|
||||
//spotify.js
|
||||
ipc.on('itunes-np', function(event, arg) {
|
||||
postMessage(['npCore', arg], '*')
|
||||
})
|
||||
//tips.js
|
||||
ipc.on('memory', function(event, arg) {
|
||||
var use = arg[0]
|
||||
var cpu = arg[1]
|
||||
var total = arg[2]
|
||||
postMessage(['renderMem', [use, cpu, total]], '*')
|
||||
})
|
||||
//log
|
||||
ipc.on('logData', function(event, args) {
|
||||
postMessage(['logData', args], '*')
|
||||
})
|
||||
//update.html
|
||||
ipc.on('prog', function(event, arg) {
|
||||
postMessage(['updateProg', arg], '*')
|
||||
})
|
||||
ipc.on('mess', function(event, arg) {
|
||||
postMessage(['updateMess', arg], '*')
|
||||
})
|
||||
//misc
|
||||
ipc.on('asRead', function(event, arg) {
|
||||
postMessage(['asRead', ''], '*')
|
||||
})
|
||||
ipc.on('asReadEnd', function(event, arg) {
|
||||
postMessage(['asReadEnd', ''], '*')
|
||||
})
|
||||
ipc.on('accessibility', function(event, arg) {
|
||||
postMessage(['accessibility', 'true'], '*')
|
||||
})
|
||||
var webviewDom = document.getElementById('webview')
|
||||
if (webviewDom) {
|
||||
webviewDom.addEventListener('new-window', function(e) {
|
||||
shell.openExternal(e.url)
|
||||
})
|
||||
}
|
||||
508
app/js/platform/punycode.js
Normal file
@@ -0,0 +1,508 @@
|
||||
/*! https://mths.be/punycode v1.4.1 by @mathias */
|
||||
;(function(root) {
|
||||
/** Detect free variables */
|
||||
var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports
|
||||
var freeModule = typeof module == 'object' && module && !module.nodeType && module
|
||||
var freeGlobal = typeof global == 'object' && global
|
||||
if (
|
||||
freeGlobal.global === freeGlobal ||
|
||||
freeGlobal.window === freeGlobal ||
|
||||
freeGlobal.self === freeGlobal
|
||||
) {
|
||||
root = freeGlobal
|
||||
}
|
||||
|
||||
/**
|
||||
* The `punycode` object.
|
||||
* @name punycode
|
||||
* @type Object
|
||||
*/
|
||||
var punycode,
|
||||
/** Highest positive signed 32-bit float value */
|
||||
maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
|
||||
/** Bootstring parameters */
|
||||
base = 36,
|
||||
tMin = 1,
|
||||
tMax = 26,
|
||||
skew = 38,
|
||||
damp = 700,
|
||||
initialBias = 72,
|
||||
initialN = 128, // 0x80
|
||||
delimiter = '-', // '\x2D'
|
||||
/** Regular expressions */
|
||||
regexPunycode = /^xn--/,
|
||||
regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
|
||||
regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
|
||||
/** Error messages */
|
||||
errors = {
|
||||
overflow: 'Overflow: input needs wider integers to process',
|
||||
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
|
||||
'invalid-input': 'Invalid input'
|
||||
},
|
||||
/** Convenience shortcuts */
|
||||
baseMinusTMin = base - tMin,
|
||||
floor = Math.floor,
|
||||
stringFromCharCode = String.fromCharCode,
|
||||
/** Temporary variable */
|
||||
key
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* A generic error utility function.
|
||||
* @private
|
||||
* @param {String} type The error type.
|
||||
* @returns {Error} Throws a `RangeError` with the applicable error message.
|
||||
*/
|
||||
function error(type) {
|
||||
throw new RangeError(errors[type])
|
||||
}
|
||||
|
||||
/**
|
||||
* A generic `Array#map` utility function.
|
||||
* @private
|
||||
* @param {Array} array The array to iterate over.
|
||||
* @param {Function} callback The function that gets called for every array
|
||||
* item.
|
||||
* @returns {Array} A new array of values returned by the callback function.
|
||||
*/
|
||||
function map(array, fn) {
|
||||
var length = array.length
|
||||
var result = []
|
||||
while (length--) {
|
||||
result[length] = fn(array[length])
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* A simple `Array#map`-like wrapper to work with domain name strings or email
|
||||
* addresses.
|
||||
* @private
|
||||
* @param {String} domain The domain name or email address.
|
||||
* @param {Function} callback The function that gets called for every
|
||||
* character.
|
||||
* @returns {Array} A new string of characters returned by the callback
|
||||
* function.
|
||||
*/
|
||||
function mapDomain(string, fn) {
|
||||
var parts = string.split('@')
|
||||
var result = ''
|
||||
if (parts.length > 1) {
|
||||
// In email addresses, only the domain name should be punycoded. Leave
|
||||
// the local part (i.e. everything up to `@`) intact.
|
||||
result = parts[0] + '@'
|
||||
string = parts[1]
|
||||
}
|
||||
// Avoid `split(regex)` for IE8 compatibility. See #17.
|
||||
string = string.replace(regexSeparators, '\x2E')
|
||||
var labels = string.split('.')
|
||||
var encoded = map(labels, fn).join('.')
|
||||
return result + encoded
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an array containing the numeric code points of each Unicode
|
||||
* character in the string. While JavaScript uses UCS-2 internally,
|
||||
* this function will convert a pair of surrogate halves (each of which
|
||||
* UCS-2 exposes as separate characters) into a single code point,
|
||||
* matching UTF-16.
|
||||
* @see `punycode.ucs2.encode`
|
||||
* @see <https://mathiasbynens.be/notes/javascript-encoding>
|
||||
* @memberOf punycode.ucs2
|
||||
* @name decode
|
||||
* @param {String} string The Unicode input string (UCS-2).
|
||||
* @returns {Array} The new array of code points.
|
||||
*/
|
||||
function ucs2decode(string) {
|
||||
var output = [],
|
||||
counter = 0,
|
||||
length = string.length,
|
||||
value,
|
||||
extra
|
||||
while (counter < length) {
|
||||
value = string.charCodeAt(counter++)
|
||||
if (value >= 0xd800 && value <= 0xdbff && counter < length) {
|
||||
// high surrogate, and there is a next character
|
||||
extra = string.charCodeAt(counter++)
|
||||
if ((extra & 0xfc00) == 0xdc00) {
|
||||
// low surrogate
|
||||
output.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000)
|
||||
} else {
|
||||
// unmatched surrogate; only append this code unit, in case the next
|
||||
// code unit is the high surrogate of a surrogate pair
|
||||
output.push(value)
|
||||
counter--
|
||||
}
|
||||
} else {
|
||||
output.push(value)
|
||||
}
|
||||
}
|
||||
return output
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a string based on an array of numeric code points.
|
||||
* @see `punycode.ucs2.decode`
|
||||
* @memberOf punycode.ucs2
|
||||
* @name encode
|
||||
* @param {Array} codePoints The array of numeric code points.
|
||||
* @returns {String} The new Unicode string (UCS-2).
|
||||
*/
|
||||
function ucs2encode(array) {
|
||||
return map(array, function(value) {
|
||||
var output = ''
|
||||
if (value > 0xffff) {
|
||||
value -= 0x10000
|
||||
output += stringFromCharCode(((value >>> 10) & 0x3ff) | 0xd800)
|
||||
value = 0xdc00 | (value & 0x3ff)
|
||||
}
|
||||
output += stringFromCharCode(value)
|
||||
return output
|
||||
}).join('')
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a basic code point into a digit/integer.
|
||||
* @see `digitToBasic()`
|
||||
* @private
|
||||
* @param {Number} codePoint The basic numeric code point value.
|
||||
* @returns {Number} The numeric value of a basic code point (for use in
|
||||
* representing integers) in the range `0` to `base - 1`, or `base` if
|
||||
* the code point does not represent a value.
|
||||
*/
|
||||
function basicToDigit(codePoint) {
|
||||
if (codePoint - 48 < 10) {
|
||||
return codePoint - 22
|
||||
}
|
||||
if (codePoint - 65 < 26) {
|
||||
return codePoint - 65
|
||||
}
|
||||
if (codePoint - 97 < 26) {
|
||||
return codePoint - 97
|
||||
}
|
||||
return base
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a digit/integer into a basic code point.
|
||||
* @see `basicToDigit()`
|
||||
* @private
|
||||
* @param {Number} digit The numeric value of a basic code point.
|
||||
* @returns {Number} The basic code point whose value (when used for
|
||||
* representing integers) is `digit`, which needs to be in the range
|
||||
* `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
|
||||
* used; else, the lowercase form is used. The behavior is undefined
|
||||
* if `flag` is non-zero and `digit` has no uppercase form.
|
||||
*/
|
||||
function digitToBasic(digit, flag) {
|
||||
// 0..25 map to ASCII a..z or A..Z
|
||||
// 26..35 map to ASCII 0..9
|
||||
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5)
|
||||
}
|
||||
|
||||
/**
|
||||
* Bias adaptation function as per section 3.4 of RFC 3492.
|
||||
* https://tools.ietf.org/html/rfc3492#section-3.4
|
||||
* @private
|
||||
*/
|
||||
function adapt(delta, numPoints, firstTime) {
|
||||
var k = 0
|
||||
delta = firstTime ? floor(delta / damp) : delta >> 1
|
||||
delta += floor(delta / numPoints)
|
||||
for (; /* no initialization */ delta > (baseMinusTMin * tMax) >> 1; k += base) {
|
||||
delta = floor(delta / baseMinusTMin)
|
||||
}
|
||||
return floor(k + ((baseMinusTMin + 1) * delta) / (delta + skew))
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
|
||||
* symbols.
|
||||
* @memberOf punycode
|
||||
* @param {String} input The Punycode string of ASCII-only symbols.
|
||||
* @returns {String} The resulting string of Unicode symbols.
|
||||
*/
|
||||
function decode(input) {
|
||||
// Don't use UCS-2
|
||||
var output = [],
|
||||
inputLength = input.length,
|
||||
out,
|
||||
i = 0,
|
||||
n = initialN,
|
||||
bias = initialBias,
|
||||
basic,
|
||||
j,
|
||||
index,
|
||||
oldi,
|
||||
w,
|
||||
k,
|
||||
digit,
|
||||
t,
|
||||
/** Cached calculation results */
|
||||
baseMinusT
|
||||
|
||||
// Handle the basic code points: let `basic` be the number of input code
|
||||
// points before the last delimiter, or `0` if there is none, then copy
|
||||
// the first basic code points to the output.
|
||||
|
||||
basic = input.lastIndexOf(delimiter)
|
||||
if (basic < 0) {
|
||||
basic = 0
|
||||
}
|
||||
|
||||
for (j = 0; j < basic; ++j) {
|
||||
// if it's not a basic code point
|
||||
if (input.charCodeAt(j) >= 0x80) {
|
||||
error('not-basic')
|
||||
}
|
||||
output.push(input.charCodeAt(j))
|
||||
}
|
||||
|
||||
// Main decoding loop: start just after the last delimiter if any basic code
|
||||
// points were copied; start at the beginning otherwise.
|
||||
|
||||
for (index = basic > 0 ? basic + 1 : 0; index < inputLength /* no final expression */; ) {
|
||||
// `index` is the index of the next character to be consumed.
|
||||
// Decode a generalized variable-length integer into `delta`,
|
||||
// which gets added to `i`. The overflow checking is easier
|
||||
// if we increase `i` as we go, then subtract off its starting
|
||||
// value at the end to obtain `delta`.
|
||||
for (oldi = i, w = 1, k = base /* no condition */; ; k += base) {
|
||||
if (index >= inputLength) {
|
||||
error('invalid-input')
|
||||
}
|
||||
|
||||
digit = basicToDigit(input.charCodeAt(index++))
|
||||
|
||||
if (digit >= base || digit > floor((maxInt - i) / w)) {
|
||||
error('overflow')
|
||||
}
|
||||
|
||||
i += digit * w
|
||||
t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias
|
||||
|
||||
if (digit < t) {
|
||||
break
|
||||
}
|
||||
|
||||
baseMinusT = base - t
|
||||
if (w > floor(maxInt / baseMinusT)) {
|
||||
error('overflow')
|
||||
}
|
||||
|
||||
w *= baseMinusT
|
||||
}
|
||||
|
||||
out = output.length + 1
|
||||
bias = adapt(i - oldi, out, oldi == 0)
|
||||
|
||||
// `i` was supposed to wrap around from `out` to `0`,
|
||||
// incrementing `n` each time, so we'll fix that now:
|
||||
if (floor(i / out) > maxInt - n) {
|
||||
error('overflow')
|
||||
}
|
||||
|
||||
n += floor(i / out)
|
||||
i %= out
|
||||
|
||||
// Insert `n` at position `i` of the output
|
||||
output.splice(i++, 0, n)
|
||||
}
|
||||
|
||||
return ucs2encode(output)
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a string of Unicode symbols (e.g. a domain name label) to a
|
||||
* Punycode string of ASCII-only symbols.
|
||||
* @memberOf punycode
|
||||
* @param {String} input The string of Unicode symbols.
|
||||
* @returns {String} The resulting Punycode string of ASCII-only symbols.
|
||||
*/
|
||||
function encode(input) {
|
||||
var n,
|
||||
delta,
|
||||
handledCPCount,
|
||||
basicLength,
|
||||
bias,
|
||||
j,
|
||||
m,
|
||||
q,
|
||||
k,
|
||||
t,
|
||||
currentValue,
|
||||
output = [],
|
||||
/** `inputLength` will hold the number of code points in `input`. */
|
||||
inputLength,
|
||||
/** Cached calculation results */
|
||||
handledCPCountPlusOne,
|
||||
baseMinusT,
|
||||
qMinusT
|
||||
|
||||
// Convert the input in UCS-2 to Unicode
|
||||
input = ucs2decode(input)
|
||||
|
||||
// Cache the length
|
||||
inputLength = input.length
|
||||
|
||||
// Initialize the state
|
||||
n = initialN
|
||||
delta = 0
|
||||
bias = initialBias
|
||||
|
||||
// Handle the basic code points
|
||||
for (j = 0; j < inputLength; ++j) {
|
||||
currentValue = input[j]
|
||||
if (currentValue < 0x80) {
|
||||
output.push(stringFromCharCode(currentValue))
|
||||
}
|
||||
}
|
||||
|
||||
handledCPCount = basicLength = output.length
|
||||
|
||||
// `handledCPCount` is the number of code points that have been handled;
|
||||
// `basicLength` is the number of basic code points.
|
||||
|
||||
// Finish the basic string - if it is not empty - with a delimiter
|
||||
if (basicLength) {
|
||||
output.push(delimiter)
|
||||
}
|
||||
|
||||
// Main encoding loop:
|
||||
while (handledCPCount < inputLength) {
|
||||
// All non-basic code points < n have been handled already. Find the next
|
||||
// larger one:
|
||||
for (m = maxInt, j = 0; j < inputLength; ++j) {
|
||||
currentValue = input[j]
|
||||
if (currentValue >= n && currentValue < m) {
|
||||
m = currentValue
|
||||
}
|
||||
}
|
||||
|
||||
// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
|
||||
// but guard against overflow
|
||||
handledCPCountPlusOne = handledCPCount + 1
|
||||
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
|
||||
error('overflow')
|
||||
}
|
||||
|
||||
delta += (m - n) * handledCPCountPlusOne
|
||||
n = m
|
||||
|
||||
for (j = 0; j < inputLength; ++j) {
|
||||
currentValue = input[j]
|
||||
|
||||
if (currentValue < n && ++delta > maxInt) {
|
||||
error('overflow')
|
||||
}
|
||||
|
||||
if (currentValue == n) {
|
||||
// Represent delta as a generalized variable-length integer
|
||||
for (q = delta, k = base /* no condition */; ; k += base) {
|
||||
t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias
|
||||
if (q < t) {
|
||||
break
|
||||
}
|
||||
qMinusT = q - t
|
||||
baseMinusT = base - t
|
||||
output.push(stringFromCharCode(digitToBasic(t + (qMinusT % baseMinusT), 0)))
|
||||
q = floor(qMinusT / baseMinusT)
|
||||
}
|
||||
|
||||
output.push(stringFromCharCode(digitToBasic(q, 0)))
|
||||
bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength)
|
||||
delta = 0
|
||||
++handledCPCount
|
||||
}
|
||||
}
|
||||
|
||||
++delta
|
||||
++n
|
||||
}
|
||||
return output.join('')
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a Punycode string representing a domain name or an email address
|
||||
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
|
||||
* it doesn't matter if you call it on a string that has already been
|
||||
* converted to Unicode.
|
||||
* @memberOf punycode
|
||||
* @param {String} input The Punycoded domain name or email address to
|
||||
* convert to Unicode.
|
||||
* @returns {String} The Unicode representation of the given Punycode
|
||||
* string.
|
||||
*/
|
||||
function toUnicode(input) {
|
||||
return mapDomain(input, function(string) {
|
||||
return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a Unicode string representing a domain name or an email address to
|
||||
* Punycode. Only the non-ASCII parts of the domain name will be converted,
|
||||
* i.e. it doesn't matter if you call it with a domain that's already in
|
||||
* ASCII.
|
||||
* @memberOf punycode
|
||||
* @param {String} input The domain name or email address to convert, as a
|
||||
* Unicode string.
|
||||
* @returns {String} The Punycode representation of the given domain name or
|
||||
* email address.
|
||||
*/
|
||||
function toASCII(input) {
|
||||
return mapDomain(input, function(string) {
|
||||
return regexNonASCII.test(string) ? 'xn--' + encode(string) : string
|
||||
})
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
/** Define the public API */
|
||||
punycode = {
|
||||
/**
|
||||
* A string representing the current Punycode.js version number.
|
||||
* @memberOf punycode
|
||||
* @type String
|
||||
*/
|
||||
version: '1.4.1',
|
||||
/**
|
||||
* An object of methods to convert from JavaScript's internal character
|
||||
* representation (UCS-2) to Unicode code points, and back.
|
||||
* @see <https://mathiasbynens.be/notes/javascript-encoding>
|
||||
* @memberOf punycode
|
||||
* @type Object
|
||||
*/
|
||||
ucs2: {
|
||||
decode: ucs2decode,
|
||||
encode: ucs2encode
|
||||
},
|
||||
decode: decode,
|
||||
encode: encode,
|
||||
toASCII: toASCII,
|
||||
toUnicode: toUnicode
|
||||
}
|
||||
|
||||
/** Expose `punycode` */
|
||||
// Some AMD build optimizers, like r.js, check for specific condition patterns
|
||||
// like the following:
|
||||
if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
|
||||
define('punycode', function() {
|
||||
return punycode
|
||||
})
|
||||
} else if (freeExports && freeModule) {
|
||||
if (module.exports == freeExports) {
|
||||
// in Node.js, io.js, or RingoJS v0.8.0+
|
||||
freeModule.exports = punycode
|
||||
} else {
|
||||
// in Narwhal or RingoJS v0.7.0-
|
||||
for (key in punycode) {
|
||||
punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key])
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// in Rhino or a web browser
|
||||
root.punycode = punycode
|
||||
}
|
||||
})(this)
|
||||
@@ -1,51 +0,0 @@
|
||||
var electron = require("electron");
|
||||
const fs = require("fs");
|
||||
const os = require('os')
|
||||
const shell = electron.shell;
|
||||
const path = require('path')
|
||||
function shot(){
|
||||
//screenshotMsg.textContent = 'Gathering screens...'
|
||||
$(window).height
|
||||
let options = {
|
||||
types: ['screen'],
|
||||
thumbnailSize: {
|
||||
width: window.parent.screen.width,
|
||||
height: window.parent.screen.height
|
||||
}
|
||||
}
|
||||
const desktopCapturer = electron.desktopCapturer;
|
||||
desktopCapturer.getSources(options, function(error, sources) {
|
||||
if (error) return console.log(error)
|
||||
|
||||
sources.forEach(function(source) {
|
||||
if(location.search){
|
||||
var m = location.search.match(/\?id=([a-zA-Z-0-9]+)/);
|
||||
var title=m[1];
|
||||
}else{
|
||||
var title="screenshot";
|
||||
}
|
||||
if (source.name === 'Screen 1' || source.name === 'TheDesk') {
|
||||
var durl=source.thumbnail.toDataURL();
|
||||
var b64 = durl.match(
|
||||
/data:image\/png;base64,(.+)/
|
||||
);
|
||||
const screenshotPath = path.join(os.tmpdir(), 'screenshot.png');
|
||||
const savePath = path.join(os.tmpdir(), 'screenshot.png');
|
||||
var ipc = electron.ipcRenderer;
|
||||
var h = $(window).height()-150;
|
||||
var w = $(window).width();
|
||||
ipc.send('shot', ['file://' + screenshotPath,w,h,b64[1],title]);
|
||||
if($(".img-parsed").length>0){
|
||||
for(i=0;i<$(".img-parsed").length;i++){
|
||||
var url=$(".img-parsed").eq(i).attr("data-url");
|
||||
ipc.send('shot-img-dl', [url,title+"_img"+i+".png"]);
|
||||
}
|
||||
}
|
||||
window.close();
|
||||
return;
|
||||
const message = `Saved screenshot to: ${screenshotPath}`
|
||||
//screenshotMsg.textContent = message
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -1,316 +1,346 @@
|
||||
//BBCodeとMarkdownの入力・パーサー
|
||||
//アカウント変えた時にBBとかMDとか
|
||||
function mdCheck(){
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var profimg=localStorage.getItem("prof_"+acct_id);
|
||||
if(!profimg){
|
||||
profimg="../../img/missing.svg";
|
||||
function mdCheck() {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var profimg = localStorage.getItem('prof_' + acct_id)
|
||||
if (!profimg) {
|
||||
profimg = '../../img/missing.svg'
|
||||
}
|
||||
$("#acct-sel-prof").attr("src",profimg);
|
||||
if(localStorage.getItem("post_" + acct_id)){
|
||||
$("#toot-post-btn").text(localStorage.getItem("post_" + acct_id)+"("+localStorage.getItem("domain_"+acct_id)+")");
|
||||
}else{
|
||||
$("#toot-post-btn").text(lang.lang_toot+"("+localStorage.getItem("domain_"+acct_id)+")");
|
||||
$('#acct-sel-prof').attr('src', profimg)
|
||||
if (localStorage.getItem('post_' + acct_id)) {
|
||||
$('#toot-post-btn').text(
|
||||
localStorage.getItem('post_' + acct_id) +
|
||||
'(' +
|
||||
localStorage.getItem('domain_' + acct_id) +
|
||||
')'
|
||||
)
|
||||
} else {
|
||||
$('#toot-post-btn').text(lang.lang_toot + '(' + localStorage.getItem('domain_' + acct_id) + ')')
|
||||
}
|
||||
if (!localStorage.getItem('bb_' + acct_id) && !localStorage.getItem('md_' + acct_id)) {
|
||||
$('.markdown').addClass('hide')
|
||||
$('.anti-markdown').addClass('hide')
|
||||
} else {
|
||||
$('.anti-markdown').removeClass('hide')
|
||||
}
|
||||
if ($('.markdown').hasClass('hide')) {
|
||||
localStorage.setItem('md', 'hide')
|
||||
} else {
|
||||
localStorage.removeItem('md')
|
||||
}
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
if (domain == 'itabashi.0j0.jp') {
|
||||
$('#limited-button').removeClass('hide')
|
||||
} else {
|
||||
$('#limited-button').addClass('hide')
|
||||
}
|
||||
if (domain == 'kirishima.cloud') {
|
||||
$('#faicon-btn').show()
|
||||
} else {
|
||||
$('#faicon-btn').hide()
|
||||
}
|
||||
if (domain == 'imastodon.net') {
|
||||
trendTag()
|
||||
} else {
|
||||
$('#trendtag').html('')
|
||||
}
|
||||
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||
M.toast({ html: lang.lang_bbmd_misskey, displayLength: 5000 })
|
||||
}
|
||||
if (idata[domain + '_letters']) {
|
||||
$('#textarea').attr('data-length', idata[domain + '_letters'])
|
||||
} else {
|
||||
var maxletters = localStorage.getItem('letters_' + acct_id)
|
||||
if (maxletters > 0) {
|
||||
$('#textarea').attr('data-length', maxletters)
|
||||
} else {
|
||||
$('#textarea').attr('data-length', 500)
|
||||
}
|
||||
if(!localStorage.getItem("bb_"+acct_id) && !localStorage.getItem("md_"+acct_id)){
|
||||
$(".markdown").addClass("hide");
|
||||
$(".anti-markdown").addClass("hide");
|
||||
}else{
|
||||
$(".anti-markdown").removeClass("hide");
|
||||
}
|
||||
if($(".markdown").hasClass("hide")){
|
||||
localStorage.setItem("md","hide");
|
||||
}else{
|
||||
localStorage.removeItem("md");
|
||||
}
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
if(domain=="itabashi.0j0.jp"){
|
||||
$("#limited-button").removeClass("hide");
|
||||
}else{
|
||||
$("#limited-button").addClass("hide");
|
||||
if (idata[domain + '_glitch'] === 'true') {
|
||||
$('#local-button').removeClass('hide')
|
||||
} else {
|
||||
$('#local-button').addClass('hide')
|
||||
}
|
||||
if(domain=="kirishima.cloud"){
|
||||
$("#faicon-btn").show();
|
||||
}else{
|
||||
$("#faicon-btn").hide();
|
||||
}
|
||||
if(domain=="imastodon.net"){
|
||||
trendTag();
|
||||
}else{
|
||||
$("#trendtag").html("");
|
||||
}
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
Materialize.toast(lang.lang_bbmd_misskey, 5000);
|
||||
}
|
||||
if(idata[domain+"_letters"]){
|
||||
$("#textarea").attr("data-length", idata[domain+"_letters"])
|
||||
}else{
|
||||
$("#textarea").attr("data-length", 500)
|
||||
}
|
||||
if(idata[domain+"_glitch"]==="true"){
|
||||
$("#local-button").removeClass("hide");
|
||||
}else{
|
||||
$("#local-button").addClass("hide");
|
||||
}
|
||||
var multi = localStorage.getItem("multi");
|
||||
var multi = localStorage.getItem('multi')
|
||||
if (multi) {
|
||||
var obj = JSON.parse(multi);
|
||||
if(obj[acct_id].background && obj[acct_id].background!="def" && obj[acct_id].text && obj[acct_id].text!="def"){
|
||||
$("#toot-post-btn").removeClass("indigo");
|
||||
$("#toot-post-btn").css("background-color","#"+obj[acct_id].background);
|
||||
$("#toot-post-btn").css("color",obj[acct_id].text);
|
||||
}else{
|
||||
$("#toot-post-btn").css("background-color","");
|
||||
$("#toot-post-btn").css("color","");
|
||||
$("#toot-post-btn").addClass("indigo");
|
||||
|
||||
var obj = JSON.parse(multi)
|
||||
if (
|
||||
obj[acct_id].background &&
|
||||
obj[acct_id].background != 'def' &&
|
||||
obj[acct_id].text &&
|
||||
obj[acct_id].text != 'def'
|
||||
) {
|
||||
$('#toot-post-btn').removeClass('indigo')
|
||||
$('#toot-post-btn').css('background-color', '#' + obj[acct_id].background)
|
||||
$('#toot-post-btn').css('color', obj[acct_id].text)
|
||||
} else {
|
||||
$('#toot-post-btn').css('background-color', '')
|
||||
$('#toot-post-btn').css('color', '')
|
||||
$('#toot-post-btn').addClass('indigo')
|
||||
}
|
||||
}
|
||||
loadVis();
|
||||
loadVis()
|
||||
}
|
||||
//BOXのトグルボタン
|
||||
function mdToggle(){
|
||||
$(".markdown").toggleClass("hide");
|
||||
$(".anti-markdown").toggleClass("hide");
|
||||
if($(".markdown").hasClass("hide")){
|
||||
localStorage.setItem("md","hide");
|
||||
}else{
|
||||
localStorage.removeItem("md");
|
||||
function mdToggle() {
|
||||
$('.markdown').toggleClass('hide')
|
||||
$('.anti-markdown').toggleClass('hide')
|
||||
if ($('.markdown').hasClass('hide')) {
|
||||
localStorage.setItem('md', 'hide')
|
||||
} else {
|
||||
localStorage.removeItem('md')
|
||||
}
|
||||
|
||||
}
|
||||
//最初に読み込みます(MD対応インスタンスかチェック)
|
||||
if(localStorage.getItem("md")=="hide"){
|
||||
$(".markdown").addClass("hide");
|
||||
$(".anti-markdown").removeClass("hide");
|
||||
if (localStorage.getItem('md') == 'hide') {
|
||||
$('.markdown').addClass('hide')
|
||||
$('.anti-markdown').removeClass('hide')
|
||||
}
|
||||
//タグを選んだ時に(BB版)
|
||||
function tagsel(tag){
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
if(!localStorage.getItem("bb_"+acct_id)){
|
||||
return false;
|
||||
}
|
||||
if(tag=="large" || tag=="size" || tag=="color" || tag=="colorhex"){
|
||||
var sub=$("#"+tag).val();
|
||||
var sub = sub.replace( /#/g , "" ) ;
|
||||
surroundHTML(tag+"="+sub,tag);
|
||||
}else if(tag=="flip=vertical" || tag=="flip=horizontal"){
|
||||
surroundHTML(tag,"flip");
|
||||
}else{
|
||||
surroundHTML(tag,tag);
|
||||
}
|
||||
$("#textarea").focus();
|
||||
}
|
||||
//HTMLをエスケープしてXSSを防ぐ
|
||||
function escape_html (string) {
|
||||
if(typeof string !== 'string') {
|
||||
return string;
|
||||
}
|
||||
return string.replace(/[&'`"<>]/g, function(match) {
|
||||
return {
|
||||
'&': '&',
|
||||
"'": ''',
|
||||
'`': '`',
|
||||
'"': '"',
|
||||
'<': '<',
|
||||
'>': '>',
|
||||
}[match]
|
||||
});
|
||||
function tagsel(tag) {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
if (!localStorage.getItem('bb_' + acct_id)) {
|
||||
return false
|
||||
}
|
||||
if (tag == 'large' || tag == 'size' || tag == 'color' || tag == 'colorhex') {
|
||||
var sub = $('#' + tag).val()
|
||||
var sub = sub.replace(/#/g, '')
|
||||
surroundHTML(tag + '=' + sub, tag)
|
||||
} else if (tag == 'flip=vertical' || tag == 'flip=horizontal') {
|
||||
surroundHTML(tag, 'flip')
|
||||
} else {
|
||||
surroundHTML(tag, tag)
|
||||
}
|
||||
$('#textarea').focus()
|
||||
}
|
||||
//HTMLをエスケープしてXSSを防ぐ
|
||||
function escape_html(string) {
|
||||
if (typeof string !== 'string') {
|
||||
return string
|
||||
}
|
||||
return string.replace(/[&'`"<>]/g, function(match) {
|
||||
return {
|
||||
'&': '&',
|
||||
"'": ''',
|
||||
'`': '`',
|
||||
'"': '"',
|
||||
'<': '<',
|
||||
'>': '>'
|
||||
}[match]
|
||||
})
|
||||
}
|
||||
//テキストボックスで選択したやつをタグで囲む(BB版)
|
||||
function surroundHTML(tagS,tagE) {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
if(!localStorage.getItem("bb_"+acct_id)){
|
||||
return false;
|
||||
}
|
||||
var target = document.getElementById("textarea");
|
||||
var pos = getAreaRange(target);
|
||||
|
||||
var val = target.value;
|
||||
var range = val.slice(pos.start, pos.end);
|
||||
var beforeNode = val.slice(0, pos.start);
|
||||
var afterNode = val.slice(pos.end);
|
||||
var insertNode;
|
||||
if (range || pos.start != pos.end) {
|
||||
insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']';
|
||||
target.value = beforeNode + insertNode + afterNode;
|
||||
}
|
||||
|
||||
else if (pos.start == pos.end) {
|
||||
insertNode = '[' + tagS + ']' + '[/' + tagE + ']';
|
||||
target.value = beforeNode + insertNode + afterNode;
|
||||
}
|
||||
}
|
||||
function markdown(tag,ck,br,space){
|
||||
if(space=="before"){
|
||||
tagE=tag;
|
||||
tag=" "+tag;
|
||||
}else{
|
||||
tagE=tag;
|
||||
}
|
||||
surroundMD(tag,tagE,ck,br);
|
||||
$("#textarea").focus();
|
||||
}
|
||||
function surroundMD(tagS,tagE,ck,br) {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
if(!localStorage.getItem("md_"+acct_id)){
|
||||
return false;
|
||||
}
|
||||
var target = document.getElementById("textarea");
|
||||
var pos = getAreaRange(target);
|
||||
|
||||
var val = target.value;
|
||||
var range = val.slice(pos.start, pos.end);
|
||||
var beforeNode = val.slice(0, pos.start);
|
||||
var afterNode = val.slice(pos.end);
|
||||
var insertNode;
|
||||
if(br=="yes"){
|
||||
var br="\n";
|
||||
}else{
|
||||
var br="";
|
||||
function surroundHTML(tagS, tagE) {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
if (!localStorage.getItem('bb_' + acct_id)) {
|
||||
return false
|
||||
}
|
||||
var target = document.getElementById('textarea')
|
||||
var pos = getAreaRange(target)
|
||||
|
||||
var val = target.value
|
||||
var range = val.slice(pos.start, pos.end)
|
||||
var beforeNode = val.slice(0, pos.start)
|
||||
var afterNode = val.slice(pos.end)
|
||||
var insertNode
|
||||
if (range || pos.start != pos.end) {
|
||||
insertNode = '[' + tagS + ']' + range + '[/' + tagE + ']'
|
||||
target.value = beforeNode + insertNode + afterNode
|
||||
} else if (pos.start == pos.end) {
|
||||
insertNode = '[' + tagS + ']' + '[/' + tagE + ']'
|
||||
target.value = beforeNode + insertNode + afterNode
|
||||
}
|
||||
}
|
||||
function markdown(tag, ck, br, space) {
|
||||
if (space == 'before') {
|
||||
tagE = tag
|
||||
tag = ' ' + tag
|
||||
} else {
|
||||
tagE = tag
|
||||
}
|
||||
surroundMD(tag, tagE, ck, br)
|
||||
$('#textarea').focus()
|
||||
}
|
||||
function surroundMD(tagS, tagE, ck, br) {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
if (!localStorage.getItem('md_' + acct_id)) {
|
||||
return false
|
||||
}
|
||||
var target = document.getElementById('textarea')
|
||||
var pos = getAreaRange(target)
|
||||
|
||||
var val = target.value
|
||||
var range = val.slice(pos.start, pos.end)
|
||||
var beforeNode = val.slice(0, pos.start)
|
||||
var afterNode = val.slice(pos.end)
|
||||
var insertNode
|
||||
if (br == 'yes') {
|
||||
var br = '\n'
|
||||
} else {
|
||||
var br = ''
|
||||
}
|
||||
|
||||
if ((range || pos.start != pos.end) && ck == 'yes') {
|
||||
insertNode = tagS + range + tagE
|
||||
target.value = beforeNode + insertNode + br + afterNode
|
||||
} else if (pos.start == pos.end || ck == 'no') {
|
||||
insertNode = tagS + range
|
||||
target.value = beforeNode + insertNode + br + afterNode
|
||||
}
|
||||
|
||||
if ((range || pos.start != pos.end )&& ck=="yes") {
|
||||
insertNode = tagS + range + tagE ;
|
||||
target.value = beforeNode + insertNode + br + afterNode;
|
||||
}
|
||||
|
||||
else if (pos.start == pos.end || ck=="no") {
|
||||
insertNode = tagS + range;
|
||||
target.value = beforeNode + insertNode + br + afterNode;
|
||||
}
|
||||
}
|
||||
|
||||
//テキストボックスの前後チェック
|
||||
function getAreaRange(obj) {
|
||||
var pos = new Object();
|
||||
if(window.getSelection()) {
|
||||
pos.start = obj.selectionStart;
|
||||
pos.end = obj.selectionEnd;
|
||||
var pos = new Object()
|
||||
if (window.getSelection()) {
|
||||
pos.start = obj.selectionStart
|
||||
pos.end = obj.selectionEnd
|
||||
}
|
||||
|
||||
return pos;
|
||||
return pos
|
||||
}
|
||||
|
||||
//Markdownのリンク挿入
|
||||
function markdownLink(){
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
if(!localStorage.getItem("md_"+acct_id)){
|
||||
return false;
|
||||
}
|
||||
var linkIns="["+$("#linkt").val()+"]"+"("+$("#link2").val()+")";
|
||||
if(linkIns!="[]()"){
|
||||
$("#textarea").val($("#textarea").val()+linkIns);
|
||||
$("#linkt").val("");
|
||||
$("#link2").val("");
|
||||
$("#textarea").focus();
|
||||
function markdownLink() {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
if (!localStorage.getItem('md_' + acct_id)) {
|
||||
return false
|
||||
}
|
||||
var linkIns = '[' + $('#linkt').val() + ']' + '(' + $('#link2').val() + ')'
|
||||
if (linkIns != '[]()') {
|
||||
$('#textarea').val($('#textarea').val() + linkIns)
|
||||
$('#linkt').val('')
|
||||
$('#link2').val('')
|
||||
$('#textarea').focus()
|
||||
}
|
||||
}
|
||||
//Markdownのimg挿入
|
||||
function markdownImage(){
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
if(!localStorage.getItem("md_"+acct_id)){
|
||||
return false;
|
||||
}
|
||||
var imgIns="!["+$("#image").val()+"]"+"("+$("#image2").val()+")";
|
||||
if(imgIns!="![]()"){
|
||||
$("#textarea").val($("#textarea").val()+imgIns);
|
||||
$("#image").val("");
|
||||
$("#image2").val("");
|
||||
$("#textarea").focus();
|
||||
function markdownImage() {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
if (!localStorage.getItem('md_' + acct_id)) {
|
||||
return false
|
||||
}
|
||||
var imgIns = '![' + $('#image').val() + ']' + '(' + $('#image2').val() + ')'
|
||||
if (imgIns != '![]()') {
|
||||
$('#textarea').val($('#textarea').val() + imgIns)
|
||||
$('#image').val('')
|
||||
$('#image2').val('')
|
||||
$('#textarea').focus()
|
||||
}
|
||||
}
|
||||
//文字数をチェック(hタグ用)
|
||||
function str_count(all, part) {
|
||||
return (all.match(new RegExp(part, "g")) || []).length;
|
||||
return (all.match(new RegExp(part, 'g')) || []).length
|
||||
}
|
||||
|
||||
//プレビュー
|
||||
function preview(){
|
||||
$("#preview-field").show();
|
||||
$("#toot-field").hide();
|
||||
$("#preview-btn").hide();
|
||||
var bb=escape_html($("#textarea").val());
|
||||
function preview() {
|
||||
$('#preview-field').show()
|
||||
$('#toot-field').hide()
|
||||
$('#preview-btn').hide()
|
||||
var bb = escape_html($('#textarea').val())
|
||||
//quote
|
||||
var bb=bb.replace(/>(.+)$/g,'<blockquote>$1<\/blockquote>');
|
||||
var bb = bb.replace(/>(.+)$/g, '<blockquote>$1</blockquote>')
|
||||
//spin
|
||||
var bb=bb.replace(/\[spin\](.+)\[\/spin\]/g,'<span class="fa fa-spin">$1<\/span>');
|
||||
var bb = bb.replace(/\[spin\](.+)\[\/spin\]/g, '<span class="fa fa-spin">$1</span>')
|
||||
//pulse
|
||||
var bb=bb.replace(/\[pulse\](.+)\[\/pulse\]/g,'<span class="bbcode-pulse-loading">$1<\/span>');
|
||||
var bb = bb.replace(/\[pulse\](.+)\[\/pulse\]/g, '<span class="bbcode-pulse-loading">$1</span>')
|
||||
//large
|
||||
var bb=bb.replace(/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g,'<span class="fa fa-$1x">$2<\/span>');
|
||||
var bb = bb.replace(
|
||||
/\[large=([0-9]{1,2})x\](.+)\[\/large\]/g,
|
||||
'<span class="fa fa-$1x">$2</span>'
|
||||
)
|
||||
//vertical
|
||||
var bb=bb.replace(/\[flip=vertical\](.+)\[\/flip\]/g,'<span class="fa fa-flip-vertical">$1<\/span>');
|
||||
var bb = bb.replace(
|
||||
/\[flip=vertical\](.+)\[\/flip\]/g,
|
||||
'<span class="fa fa-flip-vertical">$1</span>'
|
||||
)
|
||||
//horizontal
|
||||
var bb=bb.replace(/\[flip=horizontal\](.+)\[\/flip\]/g,'<span class="fa fa-flip-horizontal">$1<\/span>');
|
||||
var bb = bb.replace(
|
||||
/\[flip=horizontal\](.+)\[\/flip\]/g,
|
||||
'<span class="fa fa-flip-horizontal">$1</span>'
|
||||
)
|
||||
//b
|
||||
var bb=bb.replace(/\[b\](.+)\[\/b\]/g,'<b>$1<\/b>');
|
||||
var bb = bb.replace(/\[b\](.+)\[\/b\]/g, '<b>$1</b>')
|
||||
//i
|
||||
var bb=bb.replace(/\[i\](.+)\[\/i\]/g,'<i>$1<\/i>');
|
||||
var bb = bb.replace(/\[i\](.+)\[\/i\]/g, '<i>$1</i>')
|
||||
//u
|
||||
var bb=bb.replace(/\[u\](.+)\[\/u\]/g,'<u>$1<\/u>');
|
||||
var bb = bb.replace(/\[u\](.+)\[\/u\]/g, '<u>$1</u>')
|
||||
//s
|
||||
var bb=bb.replace(/\[s\](.+)\[\/s\]/g,'<s>$1<\/s>');
|
||||
var bb = bb.replace(/\[s\](.+)\[\/s\]/g, '<s>$1</s>')
|
||||
//size
|
||||
var bb=bb.replace(/\[size=([0-9]{1,2})\](.+)\[\/size\]/g,'<span style="font-size:$1px">$2<\/span>');
|
||||
var bb = bb.replace(
|
||||
/\[size=([0-9]{1,2})\](.+)\[\/size\]/g,
|
||||
'<span style="font-size:$1px">$2</span>'
|
||||
)
|
||||
//colorhex
|
||||
var bb=bb.replace(/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g,'<span style="color:#$1">$2<\/span>');
|
||||
var bb = bb.replace(
|
||||
/\[colorhex=([A-Fa-f0-9]+)\](.+)\[\/colorhex\]/g,
|
||||
'<span style="color:#$1">$2</span>'
|
||||
)
|
||||
//code
|
||||
var bb=bb.replace(/`(.+)`/g,'<code>$1<\/code>');
|
||||
var bb = bb.replace(/`(.+)`/g, '<code>$1</code>')
|
||||
//head
|
||||
var m;
|
||||
m=bb.match(/^#{1,6}(.+)$/gm);
|
||||
if(m){
|
||||
for(let i = 0; i < m.length; i++) {
|
||||
var t=m[i].match(/^#{1,6}(.+)$/);
|
||||
var indexct='<h'+str_count(m[i],"#")+'>'+t[1]+'</h'+str_count(m[i],"#")+'>';
|
||||
var bb=bb.replace(new RegExp(m[i], ""),indexct);
|
||||
}
|
||||
var m
|
||||
m = bb.match(/^#{1,6}(.+)$/gm)
|
||||
if (m) {
|
||||
for (let i = 0; i < m.length; i++) {
|
||||
var t = m[i].match(/^#{1,6}(.+)$/)
|
||||
var indexct = '<h' + str_count(m[i], '#') + '>' + t[1] + '</h' + str_count(m[i], '#') + '>'
|
||||
var bb = bb.replace(new RegExp(m[i], ''), indexct)
|
||||
}
|
||||
}
|
||||
//list(ul)
|
||||
var li;
|
||||
li=bb.match(/^\- (.+)$/gm);
|
||||
if(li){
|
||||
for(let l = 0; l < li.length; l++) {
|
||||
var u=li[l].match(/^\- (.+)$/);
|
||||
var listUl='<li>'+u[1]+'</li>';
|
||||
if(l == 0){
|
||||
listUl='<ul>'+listUl;
|
||||
var li
|
||||
li = bb.match(/^\- (.+)$/gm)
|
||||
if (li) {
|
||||
for (let l = 0; l < li.length; l++) {
|
||||
var u = li[l].match(/^\- (.+)$/)
|
||||
var listUl = '<li>' + u[1] + '</li>'
|
||||
if (l == 0) {
|
||||
listUl = '<ul>' + listUl
|
||||
}
|
||||
if (l == li.length - 1) {
|
||||
listUl = listUl + '</ul>'
|
||||
}
|
||||
var bb = bb.replace(new RegExp(li[l], ''), listUl)
|
||||
}
|
||||
if(l==li.length-1){
|
||||
listUl=listUl+'</ul>';
|
||||
}
|
||||
var bb=bb.replace(new RegExp(li[l], ""),listUl);
|
||||
}
|
||||
}
|
||||
//list(ol)
|
||||
var li;
|
||||
li=bb.match(/^1\. (.+)$/gm);
|
||||
if(li){
|
||||
for(let l = 0; l < li.length; l++) {
|
||||
var u=li[l].match(/^1\. (.+)$/);
|
||||
var listUl='<li>'+u[1]+'</li>';
|
||||
if(l === 0){
|
||||
listUl='<ol>'+listUl;
|
||||
var li
|
||||
li = bb.match(/^1\. (.+)$/gm)
|
||||
if (li) {
|
||||
for (let l = 0; l < li.length; l++) {
|
||||
var u = li[l].match(/^1\. (.+)$/)
|
||||
var listUl = '<li>' + u[1] + '</li>'
|
||||
if (l === 0) {
|
||||
listUl = '<ol>' + listUl
|
||||
}
|
||||
if (l === li.length - 1) {
|
||||
listUl = listUl + '</ol>'
|
||||
}
|
||||
var bb = bb.replace(new RegExp(li[l], ''), listUl)
|
||||
}
|
||||
if(l===li.length-1){
|
||||
listUl=listUl+'</ol>';
|
||||
}
|
||||
var bb=bb.replace(new RegExp(li[l], ""),listUl);
|
||||
}
|
||||
}
|
||||
//img
|
||||
var bb=bb.replace(/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,'<img src="$2" text="$1" style="width:100%">');
|
||||
var bb = bb.replace(
|
||||
/!\[(.+)\]\((https:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,
|
||||
'<img src="$2" text="$1" style="width:100%">'
|
||||
)
|
||||
//link
|
||||
var bb=bb.replace(/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,'<a href="$2" target="_blank">$1<\/a>');
|
||||
bb=nl2br(bb);
|
||||
bb=bb.replace(new RegExp("</li><br />", "g"),"");
|
||||
$("#md-preview").html(bb);
|
||||
}
|
||||
//Editで戻る
|
||||
function previewEdit(){
|
||||
$("#preview-field").hide();
|
||||
$("#toot-field").show();
|
||||
$("#preview-btn").show();
|
||||
$("#md-preview").html("");
|
||||
}
|
||||
var bb = bb.replace(
|
||||
/\[(.+)\]\((https?:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)\)/g,
|
||||
'<a href="$2" target="_blank">$1</a>'
|
||||
)
|
||||
bb = nl2br(bb)
|
||||
bb = bb.replace(new RegExp('</li><br />', 'g'), '')
|
||||
$('#md-preview').html(bb)
|
||||
}
|
||||
//Editで戻る
|
||||
function previewEdit() {
|
||||
$('#preview-field').hide()
|
||||
$('#toot-field').show()
|
||||
$('#preview-btn').show()
|
||||
$('#md-preview').html('')
|
||||
}
|
||||
|
||||
@@ -1,216 +1,349 @@
|
||||
//絵文字ピッカー
|
||||
//最初に読み込む
|
||||
$("#emoji-before").addClass("disabled");
|
||||
$("#emoji-next").addClass("disabled");
|
||||
$('#emoji-before').addClass('disabled')
|
||||
$('#emoji-next').addClass('disabled')
|
||||
|
||||
//絵文字ボタンのトグル
|
||||
function emojiToggle(reaction) {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var selin = $("#textarea").prop('selectionStart');
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var selin = $('#textarea').prop('selectionStart')
|
||||
if (!selin) {
|
||||
selin = 0;
|
||||
selin = 0
|
||||
}
|
||||
localStorage.setItem("cursor", selin);
|
||||
|
||||
if ($("#emoji").hasClass("hide")) {
|
||||
$("#emoji").removeClass("hide")
|
||||
$("#right-side").show()
|
||||
$("#suggest").html("");
|
||||
if (!localStorage.getItem("emoji_" + acct_id)) {
|
||||
var html =
|
||||
'<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="emojiGet(\'true\');">' + lang.lang_emoji_get + '</button>';
|
||||
$("#emoji-list").html(html);
|
||||
if ($('#emoji').hasClass('hide')) {
|
||||
$('#emoji').removeClass('hide')
|
||||
$('#right-side').show()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', 'calc(100% - 300px)')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1 + 300
|
||||
} else {
|
||||
emojiList('home', reaction);
|
||||
width = 600
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
$('#suggest').html('')
|
||||
if (!localStorage.getItem('emojis_' + acct_id)) {
|
||||
var html = `<button class="btn waves-effect green" style="width:100%; padding:0; margin-top:0;" onclick="emojiGet('true');">${lang.lang_emoji_get}</button>`
|
||||
$('#emoji-list').html(html)
|
||||
} else {
|
||||
emojiList('home', reaction)
|
||||
}
|
||||
} else {
|
||||
$("#poll").addClass("hide")
|
||||
$("#emoji").addClass("hide")
|
||||
$("#suggest").html("");
|
||||
$("#right-side").hide()
|
||||
$('#poll').addClass('hide')
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#emoji').addClass('hide')
|
||||
$('#suggest').html('')
|
||||
$('#left-side').css('width', '100%')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1
|
||||
} else {
|
||||
width = 300
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//絵文字リスト挿入
|
||||
function emojiGet(parse, started) {
|
||||
$('#emoji-list').html('Loading...');
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
if (localStorage.getItem("mode_" + domain) != "misskey") {
|
||||
var start = "https://" + domain + "/api/v1/custom_emojis";
|
||||
$('#emoji-list').text('Loading...')
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||
var start = 'https://' + domain + '/api/v1/custom_emojis'
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}).then(function (response) {
|
||||
return response.json();
|
||||
}).catch(function (error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function (json) {
|
||||
if (parse == "true") {
|
||||
$('#emoji-list').html('Parsing...');
|
||||
//絵文字をマストドン公式と同順にソート
|
||||
json.sort(function (a, b) {
|
||||
if (a.shortcode < b.shortcode) return -1;
|
||||
if (a.shortcode > b.shortcode) return 1;
|
||||
return 0;
|
||||
});
|
||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
||||
} else {
|
||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(json));
|
||||
}
|
||||
localStorage.setItem("emojiseek", 0);
|
||||
if (!started) {
|
||||
emojiList('home')
|
||||
}
|
||||
});
|
||||
})
|
||||
.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) {
|
||||
if (parse == 'true') {
|
||||
$('#emoji-list').text('Parsing...')
|
||||
var md = {
|
||||
categorized: {},
|
||||
uncategorized: []
|
||||
}
|
||||
var if_categorized = false
|
||||
Object.keys(json).forEach(function(key) {
|
||||
var emoji = json[key]
|
||||
if (emoji.visible_in_picker) {
|
||||
var listed = true
|
||||
} else {
|
||||
var listed = false
|
||||
}
|
||||
if (emoji.category) {
|
||||
var cat = emoji.category
|
||||
if (!md['categorized'][cat]) {
|
||||
md['categorized'][cat] = []
|
||||
}
|
||||
md['categorized'][cat].push({
|
||||
shortcode: emoji.shortcode,
|
||||
url: emoji.url,
|
||||
listed: listed
|
||||
})
|
||||
if_categorized = true
|
||||
} else {
|
||||
md['uncategorized'].push({
|
||||
shortcode: emoji.shortcode,
|
||||
url: emoji.url,
|
||||
listed: listed
|
||||
})
|
||||
}
|
||||
})
|
||||
console.log(md)
|
||||
//絵文字をマストドン公式と同順にソート
|
||||
md['uncategorized'].sort(function(a, b) {
|
||||
if (a.shortcode < b.shortcode) return -1
|
||||
if (a.shortcode > b.shortcode) return 1
|
||||
return 0
|
||||
})
|
||||
Object.keys(md['categorized']).forEach(function(key) {
|
||||
md['categorized'][key].sort(function(a, b) {
|
||||
if (a.shortcode < b.shortcode) return -1
|
||||
if (a.shortcode > b.shortcode) return 1
|
||||
return 0
|
||||
})
|
||||
})
|
||||
|
||||
md['if_categorized'] = if_categorized
|
||||
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||
} else {
|
||||
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||
}
|
||||
localStorage.setItem('emojiseek', 0)
|
||||
if (!started) {
|
||||
emojiList('home')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
var start = "https://" + domain + "/api/meta";
|
||||
var start = 'https://' + domain + '/api/meta'
|
||||
fetch(start, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}).then(function (response) {
|
||||
return response.json();
|
||||
}).catch(function (error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function (json) {
|
||||
if (json.enableEmojiReaction) {
|
||||
localStorage.setItem("emojiReaction_" + acct_id, "true");
|
||||
} else {
|
||||
localStorage.setItem("emojiReaction_" + acct_id, "disabled");
|
||||
}
|
||||
var emojis = json.emojis;
|
||||
var md = [];
|
||||
Object.keys(emojis).forEach(function (key) {
|
||||
var emoji = emojis[key];
|
||||
md.push({
|
||||
"shortcode": emoji.name,
|
||||
"url": emoji.url
|
||||
})
|
||||
.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) {
|
||||
if (json.enableEmojiReaction) {
|
||||
localStorage.setItem('emojiReaction_' + acct_id, 'true')
|
||||
} else {
|
||||
localStorage.setItem('emojiReaction_' + acct_id, 'disabled')
|
||||
}
|
||||
var emojis = json.emojis
|
||||
var md = { uncategorized: [] }
|
||||
Object.keys(emojis).forEach(function(key) {
|
||||
var emoji = emojis[key]
|
||||
md['uncategorized'].push({
|
||||
shortcode: emoji.name,
|
||||
url: emoji.url,
|
||||
listed: true
|
||||
})
|
||||
})
|
||||
});
|
||||
if (parse == "true") {
|
||||
$('#emoji-list').html('Parsing...');
|
||||
//絵文字をマストドン公式と同順にソート
|
||||
md.sort(function (a, b) {
|
||||
if (a.shortcode < b.shortcode) return -1;
|
||||
if (a.shortcode > b.shortcode) return 1;
|
||||
return 0;
|
||||
});
|
||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(md));
|
||||
} else {
|
||||
localStorage.setItem("emoji_" + acct_id, JSON.stringify(md));
|
||||
}
|
||||
localStorage.setItem("emojiseek", 0);
|
||||
if (!started) {
|
||||
emojiList('home')
|
||||
}
|
||||
});
|
||||
md['if_categorized'] = false
|
||||
if (parse == 'true') {
|
||||
$('#emoji-list').text('Parsing...')
|
||||
//絵文字をマストドン公式と同順にソート
|
||||
md['uncategorized'].sort(function(a, b) {
|
||||
if (a.shortcode < b.shortcode) return -1
|
||||
if (a.shortcode > b.shortcode) return 1
|
||||
return 0
|
||||
})
|
||||
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||
} else {
|
||||
localStorage.setItem('emojis_' + acct_id, JSON.stringify(md))
|
||||
}
|
||||
localStorage.setItem('emojiseek', 0)
|
||||
if (!started) {
|
||||
emojiList('home')
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
//リストの描画
|
||||
function emojiList(target, reaction) {
|
||||
$("#now-emoji").text(lang.lang_emoji_custom);
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
if (reaction && localStorage.getItem("emojiReaction_" + acct_id) != "true") {
|
||||
console.error("Disabled")
|
||||
$('#now-emoji').text(lang.lang_emoji_custom)
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
if(reaction && $('#media').val() == 'misskey') {
|
||||
var misskeyReact = true
|
||||
} else {
|
||||
var misskeyReact = false
|
||||
}
|
||||
if (
|
||||
misskeyReact &&
|
||||
localStorage.getItem('emojiReaction_' + acct_id) != 'true'
|
||||
) {
|
||||
console.error('Disabled')
|
||||
clear()
|
||||
hide();
|
||||
return false;
|
||||
hide()
|
||||
return false
|
||||
}
|
||||
var start = localStorage.getItem("emojiseek");
|
||||
if (target == "next") {
|
||||
var start = start * 1 + 127;
|
||||
localStorage.setItem("emojiseek", start);
|
||||
} else if (target == "before") {
|
||||
var start = start - 127;
|
||||
localStorage.setItem("emojiseek", start);
|
||||
var start = localStorage.getItem('emojiseek')
|
||||
if (target == 'next') {
|
||||
var start = start * 1 + 127
|
||||
localStorage.setItem('emojiseek', start)
|
||||
} else if (target == 'before') {
|
||||
var start = start - 127
|
||||
localStorage.setItem('emojiseek', start)
|
||||
} else {
|
||||
var start = 0;
|
||||
localStorage.getItem("emojiseek", 0)
|
||||
var start = 0
|
||||
localStorage.getItem('emojiseek', 0)
|
||||
}
|
||||
var html = '';
|
||||
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id));
|
||||
var num = obj.length;
|
||||
var html = ''
|
||||
var raw = JSON.parse(localStorage.getItem('emojis_' + acct_id))
|
||||
console.log(raw)
|
||||
if (raw.if_categorized) {
|
||||
var obj = [
|
||||
{
|
||||
divider: true,
|
||||
cat: lang.lang_emoji_uncat
|
||||
}
|
||||
]
|
||||
var cats = raw['uncategorized']
|
||||
obj = obj.concat(cats)
|
||||
Object.keys(raw['categorized']).forEach(function(key) {
|
||||
var cats = raw['categorized'][key]
|
||||
obj = obj.concat([
|
||||
{
|
||||
divider: true,
|
||||
cat: key
|
||||
}
|
||||
])
|
||||
obj = obj.concat(cats)
|
||||
})
|
||||
} else {
|
||||
var obj = raw['uncategorized']
|
||||
}
|
||||
console.log(obj)
|
||||
|
||||
var num = obj.length
|
||||
if (num < start) {
|
||||
var start = 0;
|
||||
localStorage.setItem("emojiseek", start);
|
||||
var start = 0
|
||||
localStorage.setItem('emojiseek', start)
|
||||
}
|
||||
var page = Math.ceil(num / 126);
|
||||
$("#emoji-sum").text(page);
|
||||
var ct = Math.ceil(start / 126);
|
||||
var page = Math.ceil(num / 126)
|
||||
$('#emoji-sum').text(page)
|
||||
var ct = Math.ceil(start / 126)
|
||||
if (ct === 0) {
|
||||
var ct = 1;
|
||||
$("#emoji-before").addClass("disabled");
|
||||
if (num > 0) {
|
||||
var ct = 1
|
||||
}
|
||||
$('#emoji-before').addClass('disabled')
|
||||
} else {
|
||||
$("#emoji-before").removeClass("disabled");
|
||||
$('#emoji-before').removeClass('disabled')
|
||||
}
|
||||
$("#emoji-next").removeClass("disabled");
|
||||
$("#emoji-count").text(ct);
|
||||
if (page != 1) {
|
||||
$('#emoji-next').removeClass('disabled')
|
||||
} else {
|
||||
$('#emoji-next').addClass('disabled')
|
||||
}
|
||||
$('#emoji-count').text(ct)
|
||||
for (i = start; i < start + 126; i++) {
|
||||
var emoji = obj[i];
|
||||
var emoji = obj[i]
|
||||
if (emoji) {
|
||||
if (reaction) {
|
||||
html = html + '<a onclick="emojiReaction(\':' + emoji.shortcode +
|
||||
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
||||
if (emoji.divider) {
|
||||
html = html + '<p style="margin-bottom:0">' + emoji.cat + '</p>'
|
||||
} else {
|
||||
if (emoji.listed) {
|
||||
if(misskeyReact) {
|
||||
var shortcode = `:${emoji.shortcode}:`
|
||||
} else {
|
||||
var shortcode = emoji.shortcode
|
||||
}
|
||||
html =
|
||||
html +
|
||||
`<a onclick="emojiReaction('${shortcode}')" class="pointer"><img src="${emoji.url}" width="20" title="${emoji.shortcode}"></a>`
|
||||
}
|
||||
}
|
||||
} else {
|
||||
html = html + '<a onclick="emojiInsert(\':' + emoji.shortcode +
|
||||
':\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
||||
if (emoji.divider) {
|
||||
html = html + '<p style="margin-bottom:0">' + emoji.cat + '</p>'
|
||||
} else {
|
||||
if (emoji.listed) {
|
||||
html =
|
||||
html +
|
||||
`<a onclick="emojiInsert(':${emoji.shortcode}:')" class="pointer"><img src="${emoji.url}" width="20" title="${emoji.shortcode}"></a>`
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
$("#emoji-list").html(html);
|
||||
$('#emoji-list').html(html)
|
||||
}
|
||||
|
||||
//絵文字など様々なものをテキストボックスに挿入
|
||||
function emojiInsert(code, del) {
|
||||
var now = $("#textarea").val();
|
||||
var selin = localStorage.getItem("cursor");
|
||||
if (localStorage.getItem("emoji-zero-width") == "yes") {
|
||||
var brank = "";
|
||||
if (localStorage.getItem('emoji-zero-width') == 'yes') {
|
||||
var blankBefore = ''
|
||||
var blankAfter = ''
|
||||
} else {
|
||||
var brank = " ";
|
||||
var blankBefore = ' '
|
||||
var blankAfter = ' '
|
||||
}
|
||||
console.log(selin);
|
||||
var now = $("#textarea").val();
|
||||
if (selin > 0) {
|
||||
var before = now.substr(0, selin);
|
||||
var after = now.substr(selin, now.length);
|
||||
newt = before + brank + code + brank + after;
|
||||
var textarea = document.querySelector('#textarea')
|
||||
var sentence = textarea.value
|
||||
var len = sentence.length
|
||||
var pos = textarea.selectionStart
|
||||
if (del) {
|
||||
var delLen = del.length
|
||||
} else {
|
||||
newt = code + brank;
|
||||
var delLen = 0
|
||||
}
|
||||
if (!del) {
|
||||
$("#textarea").val(newt);
|
||||
//emoji();
|
||||
var before = sentence.substr(0, pos - delLen)
|
||||
var last = before.substr(-1, 1)
|
||||
if (last == ' ') blankBefore = ''
|
||||
var after = sentence.substr(pos, len)
|
||||
var start = after.substr(0, 1)
|
||||
if (start == ' ') blankAfter = ''
|
||||
if (len == 0) {
|
||||
var word = code
|
||||
} else if (len == pos) {
|
||||
var word = blankBefore + code
|
||||
} else if (pos == 0) {
|
||||
var word = code + blankAfter
|
||||
} else {
|
||||
var regExp = new RegExp(del, "g");
|
||||
var now = now.replace(regExp, "");
|
||||
$("#textarea").val(now + brank + code);
|
||||
var word = blankBefore + code + blankAfter
|
||||
}
|
||||
|
||||
$("#textarea").focus();
|
||||
var selin = $("#textarea").prop('selectionStart');
|
||||
if (!selin) {
|
||||
selin = 0;
|
||||
}
|
||||
localStorage.setItem("cursor", selin);
|
||||
sentence = before + word + after
|
||||
textarea.value = sentence
|
||||
}
|
||||
//改行挿入
|
||||
function brInsert(code) {
|
||||
if (!$('#post-box').hasClass("appear")) {
|
||||
localStorage.setItem("nohide", true);
|
||||
show();
|
||||
if (!$('#post-box').hasClass('appear')) {
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
}
|
||||
var now = $("#textarea").val();
|
||||
$("#textarea").val(now + code);
|
||||
$("#textarea").focus();
|
||||
var now = $('#textarea').val()
|
||||
$('#textarea').val(now + code)
|
||||
$('#textarea').focus()
|
||||
}
|
||||
|
||||
@@ -1,240 +1,427 @@
|
||||
//ドラッグ・アンド・ドロップからアップロードまで。uiのimg.jsとは異なります。
|
||||
var obj = $("body");
|
||||
var system;
|
||||
var obj = $('body')
|
||||
var system
|
||||
//ドラッグスタート
|
||||
obj.on('dragstart', function(e) {
|
||||
system = "locked"
|
||||
});
|
||||
system = 'locked'
|
||||
})
|
||||
//何もなくファイルが通過
|
||||
obj.on('dragend', function(e) {
|
||||
system = "";
|
||||
});
|
||||
system = ''
|
||||
})
|
||||
//ドラッグファイルが画面上に
|
||||
obj.on('dragenter', function(e) {
|
||||
if (system != "locked") {
|
||||
$("#drag").css('display', 'flex');
|
||||
if (system != 'locked') {
|
||||
$('#drag').css('display', 'flex')
|
||||
}
|
||||
|
||||
});
|
||||
$("body").on('dragover', function(e) {
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
});
|
||||
})
|
||||
$('body').on('dragover', function(e) {
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
})
|
||||
//ドロップした
|
||||
$("body").on('drop', function(e) {
|
||||
if (system != "locked") {
|
||||
$("#drag").css('display', 'none');
|
||||
e.preventDefault();
|
||||
var files = e.originalEvent.dataTransfer.files;
|
||||
pimg(files);
|
||||
$('body').on('drop', function(e) {
|
||||
if (system != 'locked') {
|
||||
$('#drag').css('display', 'none')
|
||||
e.preventDefault()
|
||||
var files = e.originalEvent.dataTransfer.files
|
||||
pimg(files)
|
||||
}
|
||||
});
|
||||
})
|
||||
//何もなくファイルが通過
|
||||
$("#drag").on('dragleave', function(e) {
|
||||
$("#drag").css('display', 'none');
|
||||
});
|
||||
$('#drag').on('dragleave', function(e) {
|
||||
$('#drag').css('display', 'none')
|
||||
})
|
||||
|
||||
//複数アップ
|
||||
function pimg(files) {
|
||||
console.log(files);
|
||||
console.table(files)
|
||||
for (i = 0; i < files.length; i++) {
|
||||
var dot=files[i].path.match(/\.(.+)$/)[1];
|
||||
if(dot=="bmp" || dot=="BMP"){
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.send('bmp-image', [files[i].path,i]);
|
||||
todo(lang.lang_progress);
|
||||
|
||||
}else{
|
||||
handleFileUpload(files[i], obj,i);
|
||||
var dot = files[i].path.match(/\.(.+)$/)[1]
|
||||
if (dot == 'bmp' || dot == 'BMP') {
|
||||
postMessage(['bmpImage', [files[i].path, i]], '*')
|
||||
todo(lang.lang_progress)
|
||||
} else {
|
||||
handleFileUpload(files[i], obj, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
var electron = require("electron");
|
||||
var ipc = electron.ipcRenderer;
|
||||
ipc.on('bmp-img-comp', function (event, b64) {
|
||||
media(b64[0],"image/png",b64[1]);
|
||||
});
|
||||
//ドラッグ・アンド・ドロップを終了
|
||||
function closedrop() {
|
||||
$("#drag").css('display', 'none');
|
||||
$('#drag').css('display', 'none')
|
||||
}
|
||||
//ファイル選択
|
||||
function fileselect() {
|
||||
ipc.send('file-select', "");
|
||||
postMessage(['sendSinmpleIpc', 'file-select'], '*')
|
||||
}
|
||||
|
||||
//ファイル読み込み
|
||||
function handleFileUpload(files, obj, no) {
|
||||
var fr = new FileReader();
|
||||
var fr = new FileReader()
|
||||
fr.onload = function(evt) {
|
||||
var b64 = evt.target.result;
|
||||
$('#b64-box').val(b64);
|
||||
var ret = media(b64, files["type"], no)
|
||||
var b64 = evt.target.result
|
||||
var resize = localStorage.getItem('uploadCrop') * 1
|
||||
if (resize > 0) {
|
||||
var element = new Image()
|
||||
var width
|
||||
element.onload = function() {
|
||||
var width = element.naturalWidth
|
||||
var height = element.naturalHeight
|
||||
if (width > resize || height > resize) {
|
||||
postMessage(['resizeImage', [b64, resize]], '*')
|
||||
return false
|
||||
} else {
|
||||
$('#b64-box').val(b64)
|
||||
var ret = media(b64, files['type'], no)
|
||||
}
|
||||
}
|
||||
element.src = b64
|
||||
return false
|
||||
}
|
||||
$('#b64-box').val(b64)
|
||||
var ret = media(b64, files['type'], no)
|
||||
}
|
||||
fr.readAsDataURL(files);
|
||||
$("#mec").append(files["name"] + "/");
|
||||
fr.readAsDataURL(files)
|
||||
$('#mec').append(files['name'] + '/')
|
||||
}
|
||||
|
||||
//ファイルアップロード
|
||||
function media(b64, type, no) {
|
||||
var l = 4;
|
||||
var c = "abcdefghijklmnopqrstuvwxyz0123456789";
|
||||
var cl = c.length;
|
||||
var r = "";
|
||||
for(var i=0; i<l; i++){
|
||||
r += c[Math.floor(Math.random()*cl)];
|
||||
async function media(b64, type, no, stamped) {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var user = localStorage.getItem('user_' + acct_id)
|
||||
if ($('#stamp').hasClass('stamp-avail') && !stamped) {
|
||||
postMessage(['stampImage', [b64, user + '@' + domain]], '*')
|
||||
return false
|
||||
}
|
||||
if ($("#media").val()) {
|
||||
$("#media").val($("#media").val() + ',' + "tmp_"+r);
|
||||
var l = 4
|
||||
var c = 'abcdefghijklmnopqrstuvwxyz0123456789'
|
||||
var cl = c.length
|
||||
var r = ''
|
||||
for (var i = 0; i < l; i++) {
|
||||
r += c[Math.floor(Math.random() * cl)]
|
||||
}
|
||||
if ($('#media').val()) {
|
||||
$('#media').val($('#media').val() + ',' + 'tmp_' + r)
|
||||
} else {
|
||||
$("#media").val("tmp_"+r);
|
||||
$('#media').val('tmp_' + r)
|
||||
}
|
||||
$(".toot-btn-group").prop("disabled", true);
|
||||
$("#post-acct-sel").prop("disabled", true);
|
||||
localStorage.setItem("image","busy");
|
||||
todo("Image Upload...");
|
||||
var media = toBlob(b64, type);
|
||||
console.log(media);
|
||||
var fd = new FormData();
|
||||
fd.append('file', media);
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var httpreq = new XMLHttpRequest();
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
var start = "https://" + domain + "/api/drive/files/create";
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.upload.addEventListener("progress", progshow, false);
|
||||
httpreq.responseType = "json";
|
||||
if ($("#nsfw").hasClass("nsfw-avail")) {
|
||||
var nsfw = true;
|
||||
$('.toot-btn-group').prop('disabled', true)
|
||||
$('#post-acct-sel').prop('disabled', true)
|
||||
localStorage.setItem('image', 'busy')
|
||||
todo('Image Upload...')
|
||||
var media = toBlob(b64, type)
|
||||
var fd = new FormData()
|
||||
fd.append('file', media)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var httpreq = new XMLHttpRequest()
|
||||
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||
var start = 'https://' + domain + '/api/drive/files/create'
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.upload.addEventListener('progress', progshow, false)
|
||||
httpreq.responseType = 'json'
|
||||
if ($('#nsfw').hasClass('nsfw-avail')) {
|
||||
var nsfw = true
|
||||
} else {
|
||||
var nsfw = false;
|
||||
var nsfw = false
|
||||
}
|
||||
var previewer="url"
|
||||
fd.append('i', at);
|
||||
//fd.append('isSensitive', nsfw);
|
||||
httpreq.send(fd);
|
||||
}else{
|
||||
var previewer="preview_url"
|
||||
var start = "https://" + domain + "/api/v1/media";
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.upload.addEventListener("progress", progshow, false);
|
||||
httpreq.responseType = "json";
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||
httpreq.send(fd);
|
||||
}
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
var img = localStorage.getItem("img");
|
||||
if (json.type.indexOf("image")!=-1) {
|
||||
var html = '<img src="' + json[previewer] + '" class="preview-img pointer" data-media="'+json["id"]+'" onclick="deleteImage(\''+json["id"]+'\')" title="'+lang.lang_postimg_delete+'">';
|
||||
$('#preview').append(html);
|
||||
var previewer = 'url'
|
||||
fd.append('i', at)
|
||||
httpreq.send(fd)
|
||||
} else {
|
||||
var previewer = 'preview_url'
|
||||
//v2/media
|
||||
try {
|
||||
var id = await v2MediaUpload(domain, at, fd)
|
||||
if(!id) {
|
||||
var start = 'https://' + domain + '/api/v1/media'
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.upload.addEventListener('progress', progshow, false)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.send(fd)
|
||||
} else {
|
||||
$('#preview').append(lang.lang_postimg_previewdis);
|
||||
var mediav = $('#media').val()
|
||||
var regExp = new RegExp('tmp_' + r, 'g')
|
||||
mediav = mediav.replace(regExp, id)
|
||||
$('#media').val(mediav)
|
||||
var html = `<img src="../../img/picture.svg" class="preview-img pointer unknown" data-media="${id}" oncontextmenu="deleteImage('${id}')" onclick="altImage('${acct_id}','${id}')" title="${lang.lang_postimg_delete}">`
|
||||
$('#preview').append(html)
|
||||
todc()
|
||||
if (localStorage.getItem('nsfw_' + acct_id)) {
|
||||
$('#nsfw').addClass('yellow-text')
|
||||
$('#nsfw').html('visibility')
|
||||
$('#nsfw').addClass('nsfw-avail')
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('select').formSelect()
|
||||
$('#mec').text(lang.lang_there)
|
||||
M.toast({ html: '<span>' + lang.lang_postimg_sync + '</span><button class="btn-flat toast-action" onclick="syncDetail()">Click</button>', displayLength: 3000 })
|
||||
$('#imgup').text('')
|
||||
$('#imgsel').show()
|
||||
localStorage.removeItem('image')
|
||||
}
|
||||
} catch {
|
||||
var start = 'https://' + domain + '/api/v1/media'
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.upload.addEventListener('progress', progshow, false)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.send(fd)
|
||||
}
|
||||
}
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('select').formSelect()
|
||||
$('#mec').text(lang.lang_there)
|
||||
M.toast({ html: this.status + ':' +json, displayLength: 2000 })
|
||||
$('#imgup').text('')
|
||||
$('#imgsel').show()
|
||||
}
|
||||
if (!json.id) {
|
||||
todc()
|
||||
$('#imgup').text('')
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('#post-acct-sel').prop('disabled', false)
|
||||
$('select').formSelect()
|
||||
$('#imgsel').show()
|
||||
M.toast({ html: lang.lang_postimg_failupload, displayLength: 5000 })
|
||||
return false
|
||||
}
|
||||
$('#imgup').text('')
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('select').formSelect()
|
||||
$('#imgsel').show()
|
||||
var img = localStorage.getItem('img')
|
||||
if (json.type.indexOf('image') != -1) {
|
||||
var html = `<img src="${json[previewer]}" class="preview-img pointer" data-media="${json['id']}" oncontextmenu="deleteImage('${json['id']}')" onclick="altImage('${acct_id}','${json['id']}')" title="${lang.lang_postimg_delete}">`
|
||||
$('#preview').append(html)
|
||||
} else {
|
||||
$('#preview').append(lang.lang_postimg_previewdis)
|
||||
}
|
||||
if (!img) {
|
||||
var img = "no-act";
|
||||
var img = 'no-act'
|
||||
}
|
||||
if (img != "inline") {
|
||||
var mediav=$("#media").val();
|
||||
var regExp = new RegExp("tmp_"+r, "g");
|
||||
mediav = mediav.replace(regExp, json["id"]);
|
||||
$("#media").val(mediav);
|
||||
|
||||
if (img != 'inline') {
|
||||
var mediav = $('#media').val()
|
||||
var regExp = new RegExp('tmp_' + r, 'g')
|
||||
mediav = mediav.replace(regExp, json['id'])
|
||||
$('#media').val(mediav)
|
||||
}
|
||||
if (img == "url") {
|
||||
$("#textarea").val($("#textarea").val() + " " + json["text_url"])
|
||||
if (img == 'url' && json['text_url']) {
|
||||
$('#textarea').val($('#textarea').val() + ' ' + json['text_url'])
|
||||
}
|
||||
todc();
|
||||
$(".toot-btn-group").prop("disabled", false);
|
||||
$('select').material_select();
|
||||
$("#mec").text(lang.lang_there);
|
||||
Materialize.toast(lang.lang_postimg_aftupload, 1000);
|
||||
$("#imgup").text("");
|
||||
$("#imgsel").show();
|
||||
localStorage.removeItem("image");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Base64からBlobへ
|
||||
function toBlob(base64, type) {
|
||||
var bin = atob(base64.replace(/^.*,/, ''));
|
||||
var buffer = new Uint8Array(bin.length);
|
||||
var bin = atob(base64.replace(/^.*,/, ''))
|
||||
var buffer = new Uint8Array(bin.length)
|
||||
for (var i = 0; i < bin.length; i++) {
|
||||
buffer[i] = bin.charCodeAt(i);
|
||||
buffer[i] = bin.charCodeAt(i)
|
||||
}
|
||||
// Blobを作成
|
||||
try {
|
||||
var blob = new Blob([new Uint8Array(buffer)], {
|
||||
type: type
|
||||
});
|
||||
})
|
||||
} catch (e) {
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
|
||||
return blob;
|
||||
return blob
|
||||
}
|
||||
//画像を貼り付けたら…
|
||||
var element = document.querySelector("#textarea");
|
||||
element.addEventListener("paste", function(e){
|
||||
console.log(e)
|
||||
if (!e.clipboardData || !e.clipboardData.items) {
|
||||
return true;
|
||||
}
|
||||
// DataTransferItemList に画像が含まれいない場合は終了する
|
||||
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'));
|
||||
if (imageItems.length == 0) {
|
||||
console.log("not image")
|
||||
return true;
|
||||
}
|
||||
var element = document.querySelector('#textarea')
|
||||
element.addEventListener('paste', function(e) {
|
||||
if (!e.clipboardData || !e.clipboardData.items) {
|
||||
return true
|
||||
}
|
||||
// DataTransferItemList に画像が含まれいない場合は終了する
|
||||
var imageItems = [...e.clipboardData.items].filter(i => i.type.startsWith('image'))
|
||||
if (imageItems.length == 0) {
|
||||
console.warn('it is not image')
|
||||
return true
|
||||
}
|
||||
|
||||
// ファイルとして得る
|
||||
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
|
||||
var imageFile = imageItems[0].getAsFile();
|
||||
var imageType = imageItems[0].type;
|
||||
// ファイルとして得る
|
||||
// DataTransferItem の kind は file なので getAsString ではなく getAsFile を呼ぶ
|
||||
var imageFile = imageItems[0].getAsFile()
|
||||
var imageType = imageItems[0].type
|
||||
|
||||
// FileReaderで読み込む
|
||||
var fr = new FileReader();
|
||||
fr.onload = function(e) {
|
||||
// onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり
|
||||
var base64 = e.target.result;
|
||||
var mediav = $("#media").val();
|
||||
if(mediav){
|
||||
var i=mediav.split(",").length;
|
||||
// FileReaderで読み込む
|
||||
var fr = new FileReader()
|
||||
fr.onload = function(e) {
|
||||
// onload内ではe.target.resultにbase64が入っているのであとは煮るなり焼くなり
|
||||
var base64 = e.target.result
|
||||
var mediav = $('#media').val()
|
||||
if (mediav) {
|
||||
var i = mediav.split(',').length
|
||||
}
|
||||
// DataTransferItem の type に mime tipes があるのでそれを使う
|
||||
// DataTransferItem の type に mime tipes があるのでそれを使う
|
||||
media(base64, imageType, i)
|
||||
};
|
||||
fr.readAsDataURL(imageFile);
|
||||
}
|
||||
fr.readAsDataURL(imageFile)
|
||||
|
||||
// 画像以外がペーストされたときのために、元に戻しておく
|
||||
});
|
||||
//Adobeフォトエディタ
|
||||
function adobe(){
|
||||
var agree = localStorage.getItem("adobeagree");
|
||||
ipc.send('adobe', agree);
|
||||
}
|
||||
ipc.on('adobeagree', function (event, arg) {
|
||||
localStorage.setItem("adobeagree",arg);
|
||||
});
|
||||
function deleteImage(key){
|
||||
console.log(key);
|
||||
if(!confirm(lang.lang_postimg_delete)){
|
||||
return false;
|
||||
}
|
||||
var media = $("#media").val();
|
||||
var arr=media.split(",");
|
||||
for(var i=0;i<media.length;i++){
|
||||
if(arr[i]==key){
|
||||
arr.splice(i, 1);
|
||||
break;
|
||||
// 画像以外がペーストされたときのために、元に戻しておく
|
||||
})
|
||||
function deleteImage(key) {
|
||||
Swal.fire({
|
||||
title: lang.lang_postimg_delete,
|
||||
type: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#d33',
|
||||
confirmButtonText: lang.lang_yesno,
|
||||
cancelButtonText: lang.lang_no
|
||||
}).then(result => {
|
||||
if (result.value) {
|
||||
var media = $('#media').val()
|
||||
var arr = media.split(',')
|
||||
for (var i = 0; i < media.length; i++) {
|
||||
if (arr[i] == key) {
|
||||
arr.splice(i, 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
$('#media').val(arr.join(','))
|
||||
$('#preview [data-media=' + key + ']').remove()
|
||||
}
|
||||
})
|
||||
}
|
||||
function altImage(acct_id, id) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/v1/media/' + id
|
||||
if($('[data-media=' + id + ']').hasClass('unknown')) {
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
})
|
||||
.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) {
|
||||
console.log(json)
|
||||
$('[data-media=' + id + ']').removeClass('unknown')
|
||||
if(json.preview_url) {
|
||||
$('[data-media=' + id + ']').attr('src', json.preview_url)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
Swal.fire({
|
||||
title: lang.lang_postimg_desc,
|
||||
text: lang.lang_postimg_leadContext,
|
||||
input: 'text',
|
||||
inputAttributes: {
|
||||
autocapitalize: 'off'
|
||||
},
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Post',
|
||||
showLoaderOnConfirm: true,
|
||||
preConfirm: data => {
|
||||
return fetch(start, {
|
||||
method: 'PUT',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
},
|
||||
body: JSON.stringify({
|
||||
description: data
|
||||
})
|
||||
})
|
||||
.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) {
|
||||
console.log(json)
|
||||
$('[data-media=' + id + ']').attr('title', data)
|
||||
})
|
||||
},
|
||||
allowOutsideClick: () => !Swal.isLoading()
|
||||
}).then(result => {
|
||||
if (result.value) {
|
||||
Swal.fire({
|
||||
title: 'Complete'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
$("#media").val(arr.join(","));
|
||||
$('#preview [data-media='+key+']').remove();
|
||||
|
||||
}
|
||||
function stamp() {
|
||||
if ($('#stamp').hasClass('stamp-avail')) {
|
||||
$('#stamp').html('Off')
|
||||
$('#stamp').removeClass('stamp-avail')
|
||||
} else {
|
||||
$('#stamp').html('On')
|
||||
$('#stamp').addClass('stamp-avail')
|
||||
}
|
||||
}
|
||||
//v2/media対応
|
||||
async function v2MediaUpload(domain, at, fd) {
|
||||
var start = 'https://' + domain + '/api/v2/media'
|
||||
let promise = await fetch(start, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization:
|
||||
'Bearer ' + at
|
||||
},
|
||||
body: fd
|
||||
})
|
||||
var json = await promise.json()
|
||||
if(json.id) {
|
||||
return json.id
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
function alertProcessUnfinished() {
|
||||
Swal.fire({
|
||||
title: lang.lang_post_unfinishedMedia,
|
||||
type: 'error',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: lang.lang_post_retry,
|
||||
cancelButtonText: lang.lang_no
|
||||
}).then(result => {
|
||||
if (result.value) {
|
||||
post()
|
||||
}
|
||||
})
|
||||
}
|
||||
function syncDetail() {
|
||||
Swal.fire({
|
||||
title: lang.lang_post_syncDetail,
|
||||
text: lang.lang_post_syncDetailText,
|
||||
type: 'info'
|
||||
})
|
||||
}
|
||||
@@ -1,243 +1,278 @@
|
||||
//Renpost
|
||||
function renote(id, acct_id, remote) {
|
||||
if ($("#pub_" + id).hasClass("rted")) {
|
||||
return false;
|
||||
if ($('#pub_' + id).hasClass('rted')) {
|
||||
return false
|
||||
}
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/notes/create";
|
||||
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
||||
return false;
|
||||
}
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify({i:at,renoteId:id}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/notes/create'
|
||||
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||
return false
|
||||
}
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify({ i: at, renoteId: id }))
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
$("[toot-id=" + id + "]").addClass("rted");
|
||||
$(".rt_"+id).toggleClass("teal-text");
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
}
|
||||
console.log(['Success: renote', json])
|
||||
$('[toot-id=' + id + ']').addClass('rted')
|
||||
$('.rt_' + id).toggleClass('teal-text')
|
||||
}
|
||||
}
|
||||
}
|
||||
//Renote
|
||||
function renoteqt(id, acct_id) {
|
||||
localStorage.setItem("nohide",true);
|
||||
show();
|
||||
$("#reply").val("renote_"+id);
|
||||
$("#rec").text("Renote");
|
||||
$("#post-acct-sel").val(acct_id);
|
||||
$("#post-acct-sel").prop("disabled", true);
|
||||
$('select').material_select();
|
||||
$("#textarea").attr("placeholder",lang.lang_misskeyparse_qt);
|
||||
$("#textarea").focus();
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
$('#reply').val('renote_' + id)
|
||||
$('#rec').text('Renote')
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('#post-acct-sel').prop('disabled', true)
|
||||
$('select').formSelect()
|
||||
$('#textarea').attr('placeholder', lang.lang_misskeyparse_qt)
|
||||
$('#textarea').focus()
|
||||
}
|
||||
//Reply
|
||||
function misskeyreply(id, acct_id) {
|
||||
localStorage.setItem("nohide",true);
|
||||
show();
|
||||
$("#reply").val(id);
|
||||
$("#rec").text("Renote");
|
||||
$("#post-acct-sel").val(acct_id);
|
||||
$("#post-acct-sel").prop("disabled", true);
|
||||
$('select').material_select();
|
||||
$("#textarea").attr("placeholder",lang.lang_misskeyparse_qt);
|
||||
$("#textarea").focus();
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
$('#reply').val(id)
|
||||
$('#rec').text('Renote')
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('#post-acct-sel').prop('disabled', true)
|
||||
$('select').formSelect()
|
||||
$('#textarea').attr('placeholder', lang.lang_misskeyparse_qt)
|
||||
$('#textarea').focus()
|
||||
}
|
||||
//Reaction
|
||||
function reactiontoggle(id,acct_id,tlid){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/notes/show";
|
||||
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
||||
return false;
|
||||
}
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify({i:at,noteId:id}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
function reactiontoggle(id, acct_id, tlid) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/notes/show'
|
||||
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||
return false
|
||||
}
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify({ i: at, noteId: id }))
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
if(json.reactionCounts){
|
||||
var reactions=["like","love","laugh","hmm","surprise","congrats","angry","confused","pudding","star"];
|
||||
for(var i=0;i<reactions.length;i++){
|
||||
if(json.reactionCounts[reactions[i]]){
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
||||
}else{
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(0)
|
||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
||||
$("#pub_" + id +" .re-"+reactions[i]).addClass("hide")
|
||||
}else{
|
||||
$("#pub_" + id +" .re-"+reactions[i]).removeClass("hide")
|
||||
}
|
||||
$("#pub_" + id +" .re-"+reactions[i]+"ct").text(json.reactionCounts[reactions[i]])
|
||||
}
|
||||
}
|
||||
$("#pub_" + id +" .reactions").removeClass("hide");
|
||||
$("#pub_" + id +" .reactions").toggleClass("fullreact")
|
||||
}else{
|
||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
||||
$("#pub_" + id +" .reactions").addClass("hide")
|
||||
$("#pub_" + id +" .reactions").removeClass("fullreact")
|
||||
}else{
|
||||
$("#pub_" + id +" .reactions").removeClass("hide");
|
||||
$("#pub_" + id +" .reaction").removeClass("hide");
|
||||
$("#pub_" + id +" .reactions").addClass("fullreact");
|
||||
}
|
||||
}
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
}
|
||||
console.log(['Success: reaction', json])
|
||||
if (json.reactions) {
|
||||
var reactions = [
|
||||
'like',
|
||||
'love',
|
||||
'laugh',
|
||||
'hmm',
|
||||
'surprise',
|
||||
'congrats',
|
||||
'angry',
|
||||
'confused',
|
||||
'pudding',
|
||||
'rip'
|
||||
]
|
||||
for (var i = 0; i < reactions.length; i++) {
|
||||
if (json.reactions[reactions[i]]) {
|
||||
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(json.reactions[reactions[i]])
|
||||
$('#pub_' + id + ' .re-' + reactions[i]).removeClass('hide')
|
||||
} else {
|
||||
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(0)
|
||||
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
|
||||
$('#pub_' + id + ' .re-' + reactions[i]).addClass('hide')
|
||||
} else {
|
||||
$('#pub_' + id + ' .re-' + reactions[i]).removeClass('hide')
|
||||
}
|
||||
$('#pub_' + id + ' .re-' + reactions[i] + 'ct').text(json.reactions[reactions[i]])
|
||||
}
|
||||
}
|
||||
$('#pub_' + id + ' .reactions').removeClass('hide')
|
||||
$('#pub_' + id + ' .reactions').toggleClass('fullreact')
|
||||
} else {
|
||||
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
|
||||
$('#pub_' + id + ' .reactions').addClass('hide')
|
||||
$('#pub_' + id + ' .reactions').removeClass('fullreact')
|
||||
} else {
|
||||
$('#pub_' + id + ' .reactions').removeClass('hide')
|
||||
$('#pub_' + id + ' .reaction').removeClass('hide')
|
||||
$('#pub_' + id + ' .reactions').addClass('fullreact')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$("#pub_" + id +" .freeReact").toggleClass("hide");
|
||||
}
|
||||
$('#pub_' + id + ' .freeReact').toggleClass('hide')
|
||||
}
|
||||
//reactioncustom
|
||||
function reactioncustom(acct_id,id){
|
||||
$("#reply").val(id);
|
||||
$("#unreact").hide();
|
||||
$("#addreact").removeClass("hide");
|
||||
$("#post-acct-sel").val(acct_id);
|
||||
$('select').material_select();
|
||||
localStorage.setItem("nohide",true);
|
||||
show()
|
||||
emojiToggle(true)
|
||||
$("#left-side").hide();
|
||||
$("#default-emoji").hide();
|
||||
function reactioncustom(acct_id, id) {
|
||||
$('#reply').val(id)
|
||||
$('#media').val('misskey')
|
||||
$('#unreact').hide()
|
||||
$('#addreact').removeClass('hide')
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('select').formSelect()
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
emojiToggle(true)
|
||||
$('#left-side').hide()
|
||||
$('#default-emoji').hide()
|
||||
}
|
||||
function reactRefresh(acct_id,id){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/notes/show";
|
||||
|
||||
var req={};
|
||||
req.i=at;
|
||||
req.noteId=id;
|
||||
var i={
|
||||
method: "POST",
|
||||
body: JSON.stringify(req),
|
||||
}
|
||||
console.log(req)
|
||||
fetch(start, i,
|
||||
).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if(!json){
|
||||
return false;
|
||||
}
|
||||
var poll="";
|
||||
if(json.error){
|
||||
$("[toot-id=" + id + "]").hide();
|
||||
$("[toot-id=" + id + "]").remove();
|
||||
}else{
|
||||
reactRefreshCore(json)
|
||||
}
|
||||
});
|
||||
function reactRefresh(acct_id, id) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/notes/show'
|
||||
|
||||
var req = {}
|
||||
req.i = at
|
||||
req.noteId = id
|
||||
var i = {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(req)
|
||||
}
|
||||
fetch(start, i)
|
||||
.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) {
|
||||
if (!json) {
|
||||
return false
|
||||
}
|
||||
var poll = ''
|
||||
if (json.error) {
|
||||
$('[toot-id=' + id + ']').hide()
|
||||
$('[toot-id=' + id + ']').remove()
|
||||
} else {
|
||||
reactRefreshCore(json)
|
||||
}
|
||||
})
|
||||
}
|
||||
function reactRefreshCore(json){
|
||||
var id=json.id;
|
||||
if(json.reactionCounts){
|
||||
$("#pub_" + id +" .reactions").removeClass("hide")
|
||||
var regExp = new RegExp( ":", "g" ) ;
|
||||
Object.keys(json.reactionCounts).forEach(function(keye) {
|
||||
keyeClass=keye.replace(regExp,'');
|
||||
if(json.reactionCounts[keye]){
|
||||
console.log(json.reactionCounts[keye])
|
||||
$("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactionCounts[keye])
|
||||
$("#pub_" + id +" .re-"+keyeClass).removeClass("hide")
|
||||
}else{
|
||||
$("#pub_" + id +" .re-"+keyeClass+"ct").text(0)
|
||||
if($("#pub_" + id +" .reactions").hasClass("fullreact")){
|
||||
$("#pub_" + id +" .re-"+keyeClass).addClass("hide")
|
||||
}
|
||||
$("#pub_" + id +" .re-"+keyeClass+"ct").text(json.reactionCounts[keye])
|
||||
}
|
||||
});
|
||||
}
|
||||
function reactRefreshCore(json) {
|
||||
var id = json.id
|
||||
if (json.reactions) {
|
||||
$('#pub_' + id + ' .reactions').removeClass('hide')
|
||||
var regExp = new RegExp(':', 'g')
|
||||
Object.keys(json.reactions).forEach(function(keye) {
|
||||
keyeClass = keye.replace(regExp, '')
|
||||
if (json.reactions[keye]) {
|
||||
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(json.reactions[keye])
|
||||
$('#pub_' + id + ' .re-' + keyeClass).removeClass('hide')
|
||||
} else {
|
||||
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(0)
|
||||
if ($('#pub_' + id + ' .reactions').hasClass('fullreact')) {
|
||||
$('#pub_' + id + ' .re-' + keyeClass).addClass('hide')
|
||||
}
|
||||
$('#pub_' + id + ' .re-' + keyeClass + 'ct').text(json.reactions[keye])
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
function emojiReaction(emoji){
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var id = $("#reply").val();
|
||||
reaction(emoji,id,acct_id,null)
|
||||
clear();
|
||||
hide();
|
||||
function emojiReaction(emoji) {
|
||||
var media = $('#media').val()
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var id = $('#reply').val()
|
||||
if(media == 'announcement') {
|
||||
announReaction(id, acct_id, 0, false, emoji)
|
||||
} else {
|
||||
reaction(emoji, id, acct_id, null)
|
||||
}
|
||||
clear()
|
||||
hide()
|
||||
}
|
||||
function reaction(mode,id,acct_id,tlid){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
if($(".fav_"+id).hasClass("yellow-text")){
|
||||
var flag="delete";
|
||||
}else{
|
||||
var flag="create";
|
||||
}
|
||||
var start = "https://" + domain + "/api/notes/reactions/"+flag;
|
||||
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
||||
return false;
|
||||
}
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify({i:at,noteId:id,reaction:mode}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
function reaction(mode, id, acct_id, tlid) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
if ($('.fav_' + id).hasClass('yellow-text')) {
|
||||
var flag = 'delete'
|
||||
} else {
|
||||
var flag = 'create'
|
||||
}
|
||||
var start = 'https://' + domain + '/api/notes/reactions/' + flag
|
||||
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||
return false
|
||||
}
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify({ i: at, noteId: id, reaction: mode }))
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
$(".fav_"+id).toggleClass("yellow-text");
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
}
|
||||
$('.fav_' + id).toggleClass('yellow-text')
|
||||
}
|
||||
}
|
||||
}
|
||||
//Vote
|
||||
function vote(acct_id,id,to){
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/notes/polls/vote";
|
||||
if(localStorage.getItem("mode_" + domain)!="misskey"){
|
||||
return false;
|
||||
}
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify({i:at,noteId:id,choice:to}));
|
||||
httpreq.onreadystatechange = function() {
|
||||
voterefresh(acct_id,id)
|
||||
function vote(acct_id, id, to) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/notes/polls/vote'
|
||||
if (localStorage.getItem('mode_' + domain) != 'misskey') {
|
||||
return false
|
||||
}
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify({ i: at, noteId: id, choice: to }))
|
||||
httpreq.onreadystatechange = function() {
|
||||
voterefresh(acct_id, id)
|
||||
}
|
||||
}
|
||||
function voterefresh(acct_id,id){
|
||||
var httpreqd = new XMLHttpRequest();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/notes/show";
|
||||
httpreqd.open('POST', start, true);
|
||||
httpreqd.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreqd.responseType = 'json';
|
||||
httpreqd.send(JSON.stringify({i:at,noteId:id}));
|
||||
httpreqd.onreadystatechange = function() {
|
||||
function voterefresh(acct_id, id) {
|
||||
var httpreqd = new XMLHttpRequest()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/notes/show'
|
||||
httpreqd.open('POST', start, true)
|
||||
httpreqd.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreqd.responseType = 'json'
|
||||
httpreqd.send(JSON.stringify({ i: at, noteId: id }))
|
||||
httpreqd.onreadystatechange = function() {
|
||||
if (httpreqd.readyState == 4) {
|
||||
var json = httpreqd.response;
|
||||
if(!json){
|
||||
return false;
|
||||
}
|
||||
var poll="";
|
||||
if(json.poll){
|
||||
var choices=json.poll.choices;
|
||||
Object.keys(choices).forEach(function(keyc) {
|
||||
var choice = choices[keyc];
|
||||
if(choice.isVoted){
|
||||
var myvote=twemoji.parse("✅");
|
||||
}else{
|
||||
var myvote="";
|
||||
}
|
||||
poll=poll+'<div class="pointer vote" onclick="vote(\''+acct_id+'\',\''+json.id+'\','+choice.id+')">'+choice.text+'('+choice.votes+''+myvote+')</div>';
|
||||
});
|
||||
$(".vote_"+json.id).html(poll)
|
||||
}
|
||||
var json = httpreqd.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
}
|
||||
if (!json) {
|
||||
return false
|
||||
}
|
||||
var poll = ''
|
||||
if (json.poll) {
|
||||
var choices = json.poll.choices
|
||||
Object.keys(choices).forEach(function(keyc) {
|
||||
var choice = choices[keyc]
|
||||
if (choice.isVoted) {
|
||||
var myvote = twemoji.parse('✅')
|
||||
} else {
|
||||
var myvote = ''
|
||||
}
|
||||
poll = poll + `<div class="pointer vote" onclick="vote('${acct_id}','${json.id}',"${choice.id}')">${escapeHTML(choice.text)}(${choice.votes})${myvote})</div>`
|
||||
})
|
||||
$('.vote_' + json.id).html(poll)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,314 +1,365 @@
|
||||
/*投稿系*/
|
||||
/*投稿系*/
|
||||
//投稿
|
||||
function sec(){
|
||||
var mode=localStorage.getItem("sec");
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
if(~domain.indexOf("kirishima.cloud")>=0 && mode=="local"){
|
||||
mode="unlisted";
|
||||
function sec() {
|
||||
var mode = localStorage.getItem('sec')
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
if (~domain.indexOf('kirishima.cloud') >= 0 && mode == 'local') {
|
||||
mode = 'unlisted'
|
||||
}
|
||||
post(null,mode);
|
||||
post(null, mode)
|
||||
}
|
||||
function post(mode,postvis) {
|
||||
if($("#toot-post-btn").prop("disabled")){
|
||||
return false;
|
||||
function post(mode, postvis) {
|
||||
if ($('#toot-post-btn').prop('disabled')) {
|
||||
return false
|
||||
}
|
||||
var str = $("#textarea").val();
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
localStorage.setItem("last-use", acct_id);
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
if(domain=="theboss.tech"){
|
||||
if(~str.indexOf("#")){
|
||||
if(str.indexOf("#theboss_tech")=="-1"){
|
||||
if(!confirm(lang.lang_post_tagTL)){
|
||||
return false;
|
||||
var str = $('#textarea').val()
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
localStorage.setItem('last-use', acct_id)
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
if ($('#ideKey').val() != '') {
|
||||
var ideKey = $('#ideKey').val()
|
||||
} else {
|
||||
var user = localStorage.getItem('user_' + acct_id)
|
||||
var ideKey = Math.floor(Date.now() / 1000) + '/TheDesk/' + user + '@' + domain
|
||||
$('#ideKey').val(ideKey)
|
||||
}
|
||||
if (!localStorage.getItem('cw_sentence')) {
|
||||
var cw_sent = 500
|
||||
} else {
|
||||
var cw_sent = localStorage.getItem('cw_sentence')
|
||||
}
|
||||
if (!localStorage.getItem('cw_letters')) {
|
||||
var cw_ltres = 7000
|
||||
} else {
|
||||
var cw_ltres = localStorage.getItem('cw_letters')
|
||||
}
|
||||
if (domain != 'kirishima.cloud') {
|
||||
if (
|
||||
mode != 'pass' &&
|
||||
!$('#cw').hasClass('cw-avail') &&
|
||||
(str.length > cw_sent || str.split('\n').length - 1 > cw_ltres)
|
||||
) {
|
||||
var plus = str.replace(/\n/g, '').slice(0, 10) + '...'
|
||||
Swal.fire({
|
||||
title: lang.lang_post_cwtitle,
|
||||
text: lang.lang_post_cwtxt + plus,
|
||||
type: 'info',
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: '#3085d6',
|
||||
cancelButtonColor: '#3085d6',
|
||||
confirmButtonText: lang.lang_post_btn2,
|
||||
cancelButtonText: lang.lang_post_btn3,
|
||||
showCloseButton: true,
|
||||
focusConfirm: false
|
||||
}).then(result => {
|
||||
if (result.dismiss == 'cancel') {
|
||||
//btn3:sonomama
|
||||
post('pass')
|
||||
} else if (result.value) {
|
||||
//btn2:auto-CW
|
||||
$('#cw-text').show()
|
||||
$('#cw').addClass('yellow-text')
|
||||
$('#cw').addClass('cw-avail')
|
||||
$('#cw-text').val(plus)
|
||||
post('pass')
|
||||
}
|
||||
}
|
||||
})
|
||||
return false
|
||||
}
|
||||
}
|
||||
if(domain=="dtp-mstdn.jp"){
|
||||
if(~str.indexOf("#")){
|
||||
if(str.indexOf("#dtp")=="-1"){
|
||||
if(!confirm(lang.lang_post_tagTL)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||
misskeyPost()
|
||||
return
|
||||
}
|
||||
if(!localStorage.getItem("cw_sentence")){
|
||||
var cw_sent=500;
|
||||
}else{
|
||||
var cw_sent=localStorage.getItem("cw_sentence");
|
||||
$('.toot-btn-group').prop('disabled', true)
|
||||
todo('Posting')
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/v1/statuses'
|
||||
var reply = $('#reply').val()
|
||||
if (str.indexOf(localStorage.getItem('stable')) == -1) {
|
||||
str + ' #' + localStorage.getItem('stable')
|
||||
}
|
||||
if(!localStorage.getItem("cw_letters")){
|
||||
var cw_ltres=500;
|
||||
}else{
|
||||
var cw_ltres=localStorage.getItem("cw_letters");
|
||||
}
|
||||
if(domain!="kirishima.cloud"){
|
||||
if(mode!="pass" && !$("#cw").hasClass("cw-avail") && (str.length>cw_sent || (str.split("\n").length - 1)>cw_ltres)){
|
||||
var electron = require("electron");
|
||||
var remote=electron.remote;
|
||||
var dialog=remote.dialog;
|
||||
var plus=str.replace(/\n/g,"").slice(0,10)+"...";
|
||||
const options = {
|
||||
type: 'info',
|
||||
title: lang.lang_post_cwtitle,
|
||||
message: lang.lang_post_cwtxt+plus,
|
||||
buttons: [lang.lang_post_btn1,lang.lang_post_btn2, lang.lang_post_btn3]
|
||||
}
|
||||
dialog.showMessageBox(options, function(arg) {
|
||||
if(arg===1){
|
||||
$("#cw-text").show();
|
||||
$("#cw").addClass("yellow-text");
|
||||
$("#cw").addClass("cw-avail");
|
||||
$("#cw-text").val(plus);
|
||||
post("pass");
|
||||
}else if(arg===2){
|
||||
post("pass");
|
||||
}
|
||||
})
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
misskeyPost();
|
||||
return;
|
||||
}
|
||||
$(".toot-btn-group").prop("disabled", true);
|
||||
todo("Posting");
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/v1/statuses";
|
||||
var reply = $("#reply").val();
|
||||
if(str.indexOf(localStorage.getItem("stable"))==-1){
|
||||
str+" #"+localStorage.getItem("stable");
|
||||
}
|
||||
var toot={
|
||||
var toot = {
|
||||
status: str
|
||||
}
|
||||
if(reply){
|
||||
toot.in_reply_to_id=reply
|
||||
if (reply) {
|
||||
toot.in_reply_to_id = reply
|
||||
}
|
||||
var media = $("#media").val();
|
||||
if(media){
|
||||
toot.media_ids=media.split(",");
|
||||
var media = $('#media').val()
|
||||
if (media) {
|
||||
toot.media_ids = media.split(',')
|
||||
}
|
||||
if ($("#nsfw").hasClass("nsfw-avail")) {
|
||||
var nsfw = "true";
|
||||
toot.sensitive=nsfw;
|
||||
var quote = $('#quote').val()
|
||||
if (quote) {
|
||||
toot.quote_id = quote
|
||||
}
|
||||
if ($('#nsfw').hasClass('nsfw-avail')) {
|
||||
var nsfw = 'true'
|
||||
toot.sensitive = nsfw
|
||||
} else {
|
||||
var nsfw = "false";
|
||||
var nsfw = 'false'
|
||||
}
|
||||
if(postvis){
|
||||
var vis = postvis;
|
||||
}else{
|
||||
var vis = $("#vis").text();
|
||||
if (postvis) {
|
||||
var vis = postvis
|
||||
} else {
|
||||
var vis = $('#vis').text()
|
||||
}
|
||||
|
||||
if(vis!="inherit" && vis!="local"){
|
||||
toot.visibility=vis;
|
||||
}else if(vis=="local"){
|
||||
toot.status=str+"👁️";
|
||||
if (vis != 'inherit' && vis != 'local') {
|
||||
toot.visibility = vis
|
||||
} else if (vis == 'local') {
|
||||
toot.status = str + '👁️'
|
||||
}
|
||||
//ここに非公開・未収載タグについてwarn
|
||||
if(domain!="kirishima.cloud" && domain!="imastodon.net"){
|
||||
if(~str.indexOf("#")){
|
||||
if(vis == "local" || vis=="unlisted" || vis=="direct" || vis=="private"){
|
||||
if(!confirm(lang.lang_post_tagVis)){
|
||||
return false;
|
||||
if ($('#cw').hasClass('cw-avail')) {
|
||||
var spo = $('#cw-text').val()
|
||||
cw()
|
||||
toot.spoiler_text = spo
|
||||
} else {
|
||||
var spo = ''
|
||||
}
|
||||
if ($('#sch-box').hasClass('sch-avail')) {
|
||||
var scheduled = formattimeutc(new Date(Date.parse($('#sch-date').val())))
|
||||
console.log('This toot will be posted at:' + scheduled)
|
||||
schedule()
|
||||
toot.scheduled_at = scheduled
|
||||
if($('#sch-box').hasClass('expire')) {
|
||||
toot.scheduled_at = null
|
||||
toot.expires_at = scheduled
|
||||
}
|
||||
} else {
|
||||
var scheduled = ''
|
||||
}
|
||||
if (!$('#poll').hasClass('hide')) {
|
||||
var options = []
|
||||
$('.mastodon-choice').map(function() {
|
||||
var choice = $(this).val()
|
||||
if (choice != '') {
|
||||
options.push(choice)
|
||||
}
|
||||
})
|
||||
if ($('#poll-multiple:checked').val() == '1') {
|
||||
var mul = true
|
||||
} else {
|
||||
var mul = false
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($("#cw").hasClass("cw-avail")) {
|
||||
var spo = $("#cw-text").val();
|
||||
cw();
|
||||
toot.spoiler_text=spo;
|
||||
} else {
|
||||
var spo = "";
|
||||
}
|
||||
if ($("#sch-box").hasClass("sch-avail")) {
|
||||
var scheduled=formattimeutc(new Date(Date.parse($("#sch-date").val())))
|
||||
console.log(scheduled)
|
||||
schedule();
|
||||
toot.scheduled_at=scheduled;
|
||||
} else {
|
||||
var scheduled = "";
|
||||
}
|
||||
if ($("#poll-sel").val()=="mastodon-poll") {
|
||||
var options=[];
|
||||
$(".mastodon-choice").map(function() {
|
||||
var choice=$(this).val();
|
||||
if(choice!=""){
|
||||
options.push(choice);
|
||||
}
|
||||
});
|
||||
if($("#poll-multiple:checked").val()=="1"){
|
||||
var mul=true;
|
||||
}else{
|
||||
var mul=false;
|
||||
if ($('#poll-until:checked').val() == '1') {
|
||||
var htt = true
|
||||
} else {
|
||||
var htt = false
|
||||
}
|
||||
if($("#poll-until:checked").val()=="1"){
|
||||
var htt=true;
|
||||
}else{
|
||||
var htt=false;
|
||||
var exin = pollCalc()
|
||||
if (!exin) {
|
||||
todc('Error: Poll expires_in param')
|
||||
}
|
||||
var exin=pollCalc();
|
||||
if(!exin){
|
||||
todc("Error: Poll expires_in param")
|
||||
}
|
||||
toot.poll={
|
||||
toot.poll = {
|
||||
options: options,
|
||||
expires_in: exin,
|
||||
multiple: mul,
|
||||
hide_totals: htt
|
||||
}
|
||||
}
|
||||
console.log(toot);
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at);
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify(toot));
|
||||
httpreq.onreadystatechange = function() {
|
||||
console.table(toot)
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.setRequestHeader('Idempotency-Key', ideKey)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify(toot))
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response;
|
||||
var box = localStorage.getItem("box");
|
||||
if (box == "yes" || !box) {
|
||||
$("#textarea").blur();
|
||||
hide();
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
if(media && this.status == 422) {
|
||||
$('#ideKey').val('')
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
alertProcessUnfinished()
|
||||
} else {
|
||||
setLog(start, this.status, json)
|
||||
var box = localStorage.getItem('box')
|
||||
if (box == 'yes' || !box) {
|
||||
$('#textarea').blur()
|
||||
hide()
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
todc()
|
||||
clear()
|
||||
}
|
||||
} else {
|
||||
$('#ideKey').val('')
|
||||
var box = localStorage.getItem('box')
|
||||
if (box == 'yes' || !box) {
|
||||
$('#textarea').blur()
|
||||
hide()
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
todc()
|
||||
clear()
|
||||
}
|
||||
$(".toot-btn-group").prop("disabled", false);
|
||||
todc();
|
||||
clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
function misskeyPost(){
|
||||
var str = $("#textarea").val();
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
localStorage.setItem("last-use", acct_id);
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
$(".toot-btn-group").prop("disabled", true);
|
||||
todo("Posting");
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var start = "https://" + domain + "/api/notes/create";
|
||||
var reply = $("#reply").val();
|
||||
var toot={
|
||||
function expPostMode() {
|
||||
$('#sch-box').toggleClass('expire')
|
||||
if($('#sch-box').hasClass('expire')) {
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: 'Expiring toot On'
|
||||
})
|
||||
} else {
|
||||
Swal.fire({
|
||||
type: 'info',
|
||||
title: 'Expireing toot Off'
|
||||
})
|
||||
}
|
||||
}
|
||||
function misskeyPost() {
|
||||
var str = $('#textarea').val()
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
localStorage.setItem('last-use', acct_id)
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
$('.toot-btn-group').prop('disabled', true)
|
||||
todo('Posting')
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var start = 'https://' + domain + '/api/notes/create'
|
||||
var reply = $('#reply').val()
|
||||
var toot = {
|
||||
text: str
|
||||
}
|
||||
if(reply){
|
||||
if(reply.indexOf("renote")!== -1){
|
||||
toot.renoteId=reply.replace("renote_","")
|
||||
}else{
|
||||
toot.replyId=reply
|
||||
if (reply) {
|
||||
if (reply.indexOf('renote') !== -1) {
|
||||
toot.renoteId = reply.replace('renote_', '')
|
||||
} else {
|
||||
toot.replyId = reply
|
||||
}
|
||||
}
|
||||
|
||||
var media = $("#media").val();
|
||||
if(media){
|
||||
toot.mediaIds=media.split(",");
|
||||
|
||||
var media = $('#media').val()
|
||||
if (media) {
|
||||
toot.mediaIds = media.split(',')
|
||||
}
|
||||
if ($("#nsfw").hasClass("nsfw-avail")) {
|
||||
var nsfw = "true";
|
||||
toot.sensitive=nsfw;
|
||||
if ($('#nsfw').hasClass('nsfw-avail')) {
|
||||
var nsfw = 'true'
|
||||
toot.sensitive = nsfw
|
||||
} else {
|
||||
var nsfw = "false";
|
||||
var nsfw = 'false'
|
||||
}
|
||||
var vis = $("#vis").text();
|
||||
if(vis=="unlisted"){
|
||||
vis=="home"
|
||||
}else if(vis=="direct"){
|
||||
vis=="specified";
|
||||
toot.visibleUserIds=str.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g).join('').split("@");
|
||||
var vis = $('#vis').text()
|
||||
if (vis == 'unlisted') {
|
||||
vis = 'home'
|
||||
} else if (vis == 'direct') {
|
||||
vis = 'specified'
|
||||
toot.visibleUserIds = str
|
||||
.match(/@([a-zA-Z0-9_@.-]+)(\s|$)/g)
|
||||
.join('')
|
||||
.split('@')
|
||||
}
|
||||
if(vis!="inherit"){
|
||||
toot.visibility=vis;
|
||||
if (vis != 'inherit') {
|
||||
toot.visibility = vis
|
||||
}
|
||||
if ($("#cw").hasClass("cw-avail")) {
|
||||
var spo = $("#cw-text").val();
|
||||
cw();
|
||||
toot.cw=spo;
|
||||
if ($('#cw').hasClass('cw-avail')) {
|
||||
var spo = $('#cw-text').val()
|
||||
cw()
|
||||
toot.cw = spo
|
||||
} else {
|
||||
var spo = "";
|
||||
var spo = ''
|
||||
}
|
||||
toot.i=at;
|
||||
var httpreq = new XMLHttpRequest();
|
||||
httpreq.open('POST', start, true);
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json');
|
||||
httpreq.responseType = "json";
|
||||
httpreq.send(JSON.stringify(toot));
|
||||
httpreq.onreadystatechange = function() {
|
||||
toot.i = at
|
||||
var httpreq = new XMLHttpRequest()
|
||||
httpreq.open('POST', start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send(JSON.stringify(toot))
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
if(str.indexOf(localStorage.getItem("stable"))==-1){
|
||||
localStorage.removeItem("stable")
|
||||
if (str.indexOf(localStorage.getItem('stable')) == -1) {
|
||||
localStorage.removeItem('stable')
|
||||
}
|
||||
var json = httpreq.response;
|
||||
console.log(json);
|
||||
var box = localStorage.getItem("box");
|
||||
if (box == "yes") {
|
||||
hide();
|
||||
}else if (box == "hide"){
|
||||
$("body").addClass("mini-post");
|
||||
$(".mini-btn").text("expand_less");
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, json)
|
||||
}
|
||||
$(".toot-btn-group").prop("disabled", false);
|
||||
todc();
|
||||
clear();
|
||||
console.log(['Success: toot', json])
|
||||
var box = localStorage.getItem('box')
|
||||
if (box == 'yes') {
|
||||
hide()
|
||||
} else if (box == 'hide') {
|
||||
$('body').addClass('mini-post')
|
||||
$('.mini-btn').text('expand_less')
|
||||
}
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
todc()
|
||||
clear()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//クリア(Shift+C)
|
||||
function clear() {
|
||||
$("#textarea").val("");
|
||||
if(localStorage.getItem("stable")){
|
||||
$("#textarea").val("#"+localStorage.getItem("stable")+" ")
|
||||
$('#textarea').val('')
|
||||
$('#ideKey').val('')
|
||||
if (localStorage.getItem('stable')) {
|
||||
$('#textarea').val('#' + localStorage.getItem('stable') + ' ')
|
||||
}
|
||||
$("#textarea").attr("placeholder", lang.lang_toot);
|
||||
$("#reply").val("");
|
||||
$("#media").val("");
|
||||
var cwt = localStorage.getItem("cw-text");
|
||||
$('#textarea').attr('placeholder', lang.lang_toot)
|
||||
$('#reply').val('')
|
||||
$('#quote').val('')
|
||||
$('#media').val('')
|
||||
var cwt = localStorage.getItem('cw-text')
|
||||
if (cwt) {
|
||||
$("#cw-text").val(cwt);
|
||||
$('#cw-text').val(cwt)
|
||||
} else {
|
||||
$("#cw-text").val("");
|
||||
$('#cw-text').val('')
|
||||
}
|
||||
var acw = localStorage.getItem("always-cw");
|
||||
if (acw != "yes") {
|
||||
$("#cw").removeClass("yellow-text");
|
||||
$("#cw").removeClass("cw-avail");
|
||||
$("#cw-text").hide();
|
||||
}else{
|
||||
$("#cw").addClass("yellow-text");
|
||||
$("#cw").addClass("cw-avail");
|
||||
$("#cw-text").show();
|
||||
var acw = localStorage.getItem('always-cw')
|
||||
if (acw != 'yes') {
|
||||
$('#cw').removeClass('yellow-text')
|
||||
$('#cw').removeClass('cw-avail')
|
||||
$('#cw-text').hide()
|
||||
} else {
|
||||
$('#cw').addClass('yellow-text')
|
||||
$('#cw').addClass('cw-avail')
|
||||
$('#cw-text').show()
|
||||
}
|
||||
$("#rec").text(lang.lang_no);
|
||||
$("#mec").text(lang.lang_nothing);
|
||||
loadVis();
|
||||
$("#nsfw").removeClass("yellow-text");
|
||||
$("#nsfw").html("visibility_off");
|
||||
$("#nsfw").removeClass("nsfw-avail");
|
||||
$("#nsc").text(lang.lang_nothing);
|
||||
$("#drag").css("background-color", "#e0e0e0");
|
||||
$("#preview").html("");
|
||||
$(".toot-btn-group").prop("disabled", false);
|
||||
$("#post-acct-sel").prop("disabled", false);
|
||||
$("#days_poll").val(0);
|
||||
$("#hours_poll").val(0);
|
||||
$("#mins_poll").val(0);
|
||||
$(".mastodon-choice").map(function() {
|
||||
$(this).val("");
|
||||
});
|
||||
localStorage.removeItem("image");
|
||||
if(localStorage.getItem("mainuse")=="main"){
|
||||
$("#post-acct-sel").val(localStorage.getItem("main"));
|
||||
$('#rec').text(lang.lang_no)
|
||||
$('#mec').text(lang.lang_nothing)
|
||||
loadVis()
|
||||
$('#nsfw').removeClass('yellow-text')
|
||||
$('#nsfw').html('visibility_off')
|
||||
$('#nsfw').removeClass('nsfw-avail')
|
||||
$('#stamp').html('Off')
|
||||
$('#stamp').removeClass('stamp-avail')
|
||||
$('#nsc').text(lang.lang_nothing)
|
||||
$('#drag').css('background-color', '#e0e0e0')
|
||||
$('#preview').html('')
|
||||
$('.toot-btn-group').prop('disabled', false)
|
||||
$('#post-acct-sel').prop('disabled', false)
|
||||
$('#days_poll').val(0)
|
||||
$('#hours_poll').val(0)
|
||||
$('#mins_poll').val(6)
|
||||
$('#poll').addClass('hide')
|
||||
$('#pollsta').text(lang.lang_no)
|
||||
$('.mastodon-choice').map(function() {
|
||||
$(this).val('')
|
||||
})
|
||||
localStorage.removeItem('image')
|
||||
if (localStorage.getItem('mainuse') == 'main') {
|
||||
$('#post-acct-sel').val(localStorage.getItem('main'))
|
||||
}
|
||||
$('select').material_select();
|
||||
$("#left-side").show();
|
||||
$("#default-emoji").show();
|
||||
$("#unreact").show();
|
||||
$("#addreact").addClass("hide");
|
||||
}
|
||||
$('#emoji').addClass('hide')
|
||||
$('select').formSelect()
|
||||
$('#default-emoji').show()
|
||||
$('#unreact').show()
|
||||
$('#addreact').addClass('hide')
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '100%')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1
|
||||
} else {
|
||||
width = 300
|
||||
}
|
||||
$('#post-box').css('width', width)
|
||||
mdCheck()
|
||||
}
|
||||
|
||||
@@ -1,129 +1,128 @@
|
||||
/*保護系*/
|
||||
//画像保護
|
||||
function nsfw(){
|
||||
if($("#nsfw").hasClass("nsfw-avail")){
|
||||
$("#nsfw").removeClass("yellow-text");
|
||||
$("#nsfw").html("visibility_off");
|
||||
$("#nsfw").removeClass("nsfw-avail");
|
||||
}else{
|
||||
$("#nsfw").addClass("yellow-text");
|
||||
$("#nsfw").html("visibility");
|
||||
$("#nsfw").addClass("nsfw-avail");
|
||||
function nsfw() {
|
||||
if ($('#nsfw').hasClass('nsfw-avail')) {
|
||||
$('#nsfw').removeClass('yellow-text')
|
||||
$('#nsfw').html('visibility_off')
|
||||
$('#nsfw').removeClass('nsfw-avail')
|
||||
} else {
|
||||
$('#nsfw').addClass('yellow-text')
|
||||
$('#nsfw').html('visibility')
|
||||
$('#nsfw').addClass('nsfw-avail')
|
||||
}
|
||||
}
|
||||
|
||||
//投稿公開範囲
|
||||
function vis(set){
|
||||
$("#vis").text(set);
|
||||
$("#vis-icon").removeClass("red-text");
|
||||
$("#vis-icon").removeClass("orange-text");
|
||||
$("#vis-icon").removeClass("blue-text");
|
||||
$("#vis-icon").removeClass("purple-text");
|
||||
$("#vis-icon").removeClass("light-blue-text");
|
||||
$("#vis-icon").removeClass("teal-text");
|
||||
if(set=="public"){
|
||||
$("#vis-icon").text("public");
|
||||
$("#vis-icon").addClass("purple-text");
|
||||
}else if(set=="unlisted"){
|
||||
$("#vis-icon").text("lock_open");
|
||||
$("#vis-icon").addClass("blue-text");
|
||||
}else if(set=="private"){
|
||||
$("#vis-icon").text("lock");
|
||||
$("#vis-icon").addClass("orange-text");
|
||||
}else if(set=="direct"){
|
||||
$("#vis-icon").text("mail");
|
||||
$("#vis-icon").addClass("red-text");
|
||||
}else if(set=="limited"){
|
||||
$("#vis-icon").text("group");
|
||||
$("#vis-icon").addClass("teal-text");
|
||||
}else if(set=="local"){
|
||||
$("#vis-icon").text("visibility");
|
||||
$("#vis-icon").addClass("light-blue-text");
|
||||
function vis(set) {
|
||||
$('#vis').text(set)
|
||||
$('#vis-icon').removeClass('red-text')
|
||||
$('#vis-icon').removeClass('orange-text')
|
||||
$('#vis-icon').removeClass('blue-text')
|
||||
$('#vis-icon').removeClass('purple-text')
|
||||
$('#vis-icon').removeClass('light-blue-text')
|
||||
$('#vis-icon').removeClass('teal-text')
|
||||
if (set == 'public') {
|
||||
$('#vis-icon').text('public')
|
||||
$('#vis-icon').addClass('purple-text')
|
||||
} else if (set == 'unlisted') {
|
||||
$('#vis-icon').text('lock_open')
|
||||
$('#vis-icon').addClass('blue-text')
|
||||
} else if (set == 'private') {
|
||||
$('#vis-icon').text('lock')
|
||||
$('#vis-icon').addClass('orange-text')
|
||||
} else if (set == 'direct') {
|
||||
$('#vis-icon').text('mail')
|
||||
$('#vis-icon').addClass('red-text')
|
||||
} else if (set == 'limited') {
|
||||
$('#vis-icon').text('group')
|
||||
$('#vis-icon').addClass('teal-text')
|
||||
} else if (set == 'local') {
|
||||
$('#vis-icon').text('visibility')
|
||||
$('#vis-icon').addClass('light-blue-text')
|
||||
}
|
||||
var vis = localStorage.getItem('vis')
|
||||
if (vis == 'memory') {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
localStorage.setItem('vis-memory-' + acct_id, set)
|
||||
}
|
||||
var ins = M.Dropdown.getInstance($('#dropdown1'))
|
||||
if (ins) {
|
||||
ins.close()
|
||||
}
|
||||
var vis=localStorage.getItem("vis");
|
||||
if(vis=="memory"){
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
localStorage.setItem("vis-memory-"+acct_id,set);
|
||||
}
|
||||
$('.dropdown-button').dropdown('close');
|
||||
}
|
||||
function loadVis(){
|
||||
var vist = localStorage.getItem("vis");
|
||||
console.log(vist);
|
||||
if (!vist) {
|
||||
vis("public");
|
||||
} else {
|
||||
if (vist == "memory") {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var memory = localStorage.getItem("vis-memory-"+acct_id);
|
||||
if (!memory) {
|
||||
memory = "public";
|
||||
}
|
||||
vis(memory);
|
||||
} else if(vist == "useapi") {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var multi = localStorage.getItem("multi");
|
||||
var obj = JSON.parse(multi);
|
||||
var memory = obj[acct_id]["vis"];
|
||||
if (!memory) {
|
||||
memory = "public";
|
||||
}
|
||||
vis(memory);
|
||||
} else {
|
||||
vis(vist);
|
||||
function loadVis() {
|
||||
var vist = localStorage.getItem('vis')
|
||||
if (!vist) {
|
||||
vis('public')
|
||||
} else {
|
||||
if (vist == 'memory') {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var memory = localStorage.getItem('vis-memory-' + acct_id)
|
||||
if (!memory) {
|
||||
memory = 'public'
|
||||
}
|
||||
vis(memory)
|
||||
} else if (vist == 'useapi') {
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var multi = localStorage.getItem('multi')
|
||||
var obj = JSON.parse(multi)
|
||||
var memory = obj[acct_id]['vis']
|
||||
if (!memory) {
|
||||
memory = 'public'
|
||||
}
|
||||
vis(memory)
|
||||
} else {
|
||||
vis(vist)
|
||||
}
|
||||
}
|
||||
}
|
||||
loadVis();
|
||||
loadVis()
|
||||
|
||||
//コンテントワーニング
|
||||
function cw(){
|
||||
if($("#cw").hasClass("cw-avail")){
|
||||
$("#cw-text").val();
|
||||
$("#cw-text").hide();
|
||||
$("#cw").removeClass("yellow-text");
|
||||
$("#cw").removeClass("cw-avail");
|
||||
}else{
|
||||
$("#cw-text").show();
|
||||
$("#cw").addClass("yellow-text");
|
||||
$("#cw").addClass("cw-avail");
|
||||
var cwt=localStorage.getItem("cw-text");
|
||||
if(cwt){
|
||||
$("#cw-text").val(cwt);
|
||||
function cw() {
|
||||
if ($('#cw').hasClass('cw-avail')) {
|
||||
$('#cw-text').val()
|
||||
$('#cw-text').hide()
|
||||
$('#cw').removeClass('yellow-text')
|
||||
$('#cw').removeClass('cw-avail')
|
||||
} else {
|
||||
$('#cw-text').show()
|
||||
$('#cw').addClass('yellow-text')
|
||||
$('#cw').addClass('cw-avail')
|
||||
var cwt = localStorage.getItem('cw-text')
|
||||
if (cwt) {
|
||||
$('#cw-text').val(cwt)
|
||||
}
|
||||
}
|
||||
}
|
||||
//TLでコンテントワーニングを表示トグル
|
||||
function cw_show(id){
|
||||
$(".cw_hide_"+id).toggleClass("cw");
|
||||
$(".cw-long-"+id).toggleClass("hide");
|
||||
function cw_show(e) {
|
||||
$(e).parent().parent().find('.cw_hide').toggleClass('cw')
|
||||
$(e).parent().find('.cw_long').toggleClass('hide')
|
||||
}
|
||||
$(function() {
|
||||
$('#cw-text').on('change', function(event) {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var cwlen=$('#cw-text').val().length;
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var cwlen = $('#cw-text').val().length
|
||||
|
||||
if(idata[domain+"_letters"]){
|
||||
$("#textarea").attr("data-length", idata[domain+"_letters"]-cwlen)
|
||||
}else{
|
||||
$("#textarea").attr("data-length", 500-cwlen)
|
||||
if (idata[domain + '_letters']) {
|
||||
$('#textarea').attr('data-length', idata[domain + '_letters'] - cwlen)
|
||||
} else {
|
||||
$('#textarea').attr('data-length', 500 - cwlen)
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
})
|
||||
})
|
||||
//スケジュール
|
||||
function schedule(){
|
||||
if($("#sch-box").hasClass("sch-avail")){
|
||||
$("#sch-box").hide();
|
||||
$("#sch-box").removeClass("sch-avail");
|
||||
}else{
|
||||
var date = new Date();
|
||||
|
||||
$("#sch-box").show();
|
||||
$("#sch-date").val(formattime(date));
|
||||
console.log(formattime(date));
|
||||
$("#sch-box").addClass("sch-avail");
|
||||
function schedule() {
|
||||
if ($('#sch-box').hasClass('sch-avail')) {
|
||||
$('#sch-box').hide()
|
||||
$('#sch-box').removeClass('sch-avail')
|
||||
} else {
|
||||
var date = new Date()
|
||||
|
||||
$('#sch-box').show()
|
||||
$('#sch-date').val(formattime(date))
|
||||
$('#sch-box').addClass('sch-avail')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,180 +1,279 @@
|
||||
//入力時にハッシュタグと@をサジェスト
|
||||
var timer = null;
|
||||
var timer = null
|
||||
|
||||
var input = document.getElementById("textarea");
|
||||
var input = document.getElementById('textarea')
|
||||
|
||||
var prev_val = input.value;
|
||||
var oldSuggest;
|
||||
var suggest;
|
||||
var prev_val = input.value
|
||||
var oldSuggest
|
||||
var suggest
|
||||
|
||||
input.addEventListener("focus", function() {
|
||||
var acct_id = $("#post-acct-sel").val();
|
||||
$("#suggest").html("");
|
||||
window.clearInterval(timer);
|
||||
timer = window.setInterval(function() {
|
||||
var new_val = input.value;
|
||||
if(new_val==""){
|
||||
$("#suggest").html("");
|
||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
||||
$("#right-side").hide()
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (prev_val != new_val) {
|
||||
var semoji = new_val.match(/:(\S{3,})/);
|
||||
if(semoji){
|
||||
var obj = JSON.parse(localStorage.getItem("emoji_" + acct_id));
|
||||
if(!obj){
|
||||
var ehtml=lang.lang_suggest_nodata;
|
||||
}else{
|
||||
var num = obj.length;
|
||||
var ehtml="";
|
||||
for (i = 0; i < num; i++) {
|
||||
var emoji = obj[i];
|
||||
if ( ~emoji.shortcode.indexOf(semoji[1])) {
|
||||
if (emoji) {
|
||||
ehtml = ehtml+'<a onclick="emojiInsert(\':' + emoji.shortcode +
|
||||
': \',\':'+semoji[1]+'\')" class="pointer"><img src="' + emoji.url + '" width="20"></a>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(ehtml!=""){
|
||||
$("#right-side").show()
|
||||
$("#poll").addClass("hide")
|
||||
$("#emoji").addClass("hide")
|
||||
}else{
|
||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
||||
$("#right-side").hide()
|
||||
}
|
||||
}
|
||||
$("#suggest").html(ehtml);
|
||||
}
|
||||
|
||||
var tag = new_val.match(/#(\S{3,})/);
|
||||
var acct = new_val.match(/@(\S{3,})/);
|
||||
if (tag && tag[1]) {
|
||||
var q = tag[1];
|
||||
} else if (acct && acct[1]) {
|
||||
var q = acct[1];
|
||||
}else {
|
||||
$("#suggest").html("");
|
||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
||||
$("#right-side").hide()
|
||||
}
|
||||
return;
|
||||
}
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
suggest = "https://" + domain + "/api/v1/search?q=" + q
|
||||
if (suggest != oldSuggest) {
|
||||
console.log(suggest)
|
||||
fetch(suggest, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if (json.hashtags[0] && tag) {
|
||||
if(tag[1]){
|
||||
var tags = "";
|
||||
Object.keys(json.hashtags).forEach(function(key4) {
|
||||
var tag = json.hashtags[key4];
|
||||
if(tag!=q){
|
||||
tags = tags + '<a onclick="tagInsert(\'#' + tag + '\',\'#' + q +
|
||||
'\')" class="pointer">#' + tag + '</a><br>';
|
||||
}
|
||||
});
|
||||
$("#right-side").show()
|
||||
$("#suggest").html("Tags:<br>" + tags);
|
||||
$("#poll").addClass("hide")
|
||||
$("#emoji").addClass("hide")
|
||||
}
|
||||
} else if (json.accounts[0] && acct[1]) {
|
||||
var accts = "";
|
||||
Object.keys(json.accounts).forEach(function(key3) {
|
||||
var acct = json.accounts[key3];
|
||||
if(acct.acct!=q){
|
||||
accts = accts + '<a onclick="tagInsert(\'@' + acct.acct +
|
||||
'\',\'@' + q + '\')" class="pointer">@' + acct.acct + '</a><br>';
|
||||
}
|
||||
});
|
||||
$("#right-side").show()
|
||||
$("#suggest").html(accts);
|
||||
$("#poll").addClass("hide")
|
||||
$("#emoji").addClass("hide")
|
||||
input.addEventListener(
|
||||
'focus',
|
||||
function() {
|
||||
localStorage.removeItem('cursor')
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
$('#suggest').html('')
|
||||
window.clearInterval(timer)
|
||||
timer = window.setInterval(function() {
|
||||
var new_val = input.value
|
||||
if (new_val == '') {
|
||||
$('#suggest').html('')
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '100%')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1
|
||||
} else {
|
||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
||||
$("#right-side").hide()
|
||||
width = 300
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
}
|
||||
return
|
||||
}
|
||||
if (prev_val != new_val) {
|
||||
var tag = new_val.match(/#(\S{3,})/)
|
||||
var acct = new_val.match(/@(\S{3,})/)
|
||||
if (tag && tag[1]) {
|
||||
var q = tag[1]
|
||||
} else if (acct && acct[1]) {
|
||||
var q = acct[1]
|
||||
} else {
|
||||
$('#suggest').html('')
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '100%')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1
|
||||
} else {
|
||||
width = 300
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
oldSuggest = suggest;
|
||||
prev_value = new_val;
|
||||
}, 1000);
|
||||
}, false);
|
||||
return
|
||||
}
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
suggest = 'https://' + domain + '/api/v2/search?q=' + q
|
||||
if (suggest != oldSuggest) {
|
||||
console.log('Try to get suggest at ' + suggest)
|
||||
fetch(suggest, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
})
|
||||
.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) {
|
||||
console.log(['Search', json])
|
||||
//ハッシュタグ
|
||||
if (json.hashtags[0] && tag) {
|
||||
if (tag[1]) {
|
||||
var tags = []
|
||||
Object.keys(json.hashtags).forEach(function(key4) {
|
||||
var tag = json.hashtags[key4]
|
||||
var his = tag.history
|
||||
var uses =
|
||||
his[0].uses * 1 +
|
||||
his[1].uses * 1 +
|
||||
his[2].uses * 1 +
|
||||
his[3].uses * 1 +
|
||||
his[4].uses * 1 +
|
||||
his[5].uses * 1 +
|
||||
his[6].uses * 1
|
||||
tagHTML = `<br><a onclick="tagInsert('#${escapeHTML(
|
||||
tag.name
|
||||
)}','#${q}')" class="pointer">#${escapeHTML(tag.name)}</a> ${uses}toot(s)`
|
||||
|
||||
input.addEventListener("blur", function() {
|
||||
window.clearInterval(timer);
|
||||
favTag();
|
||||
}, false);
|
||||
function tagInsert(code, del) {
|
||||
var now = $("#textarea").val();
|
||||
var selin = $("#textarea").prop('selectionStart');
|
||||
if (!del) {
|
||||
} else {
|
||||
var regExp = new RegExp(del, "g");
|
||||
var now = now.replace(regExp, "");
|
||||
selin=selin-del.length;
|
||||
}
|
||||
if(selin>0){
|
||||
var before = now.substr(0, selin);
|
||||
var after = now.substr(selin, now.length);
|
||||
newt = before + " "+ code+" " + after;
|
||||
}else{
|
||||
newt = code+" "+now;
|
||||
}
|
||||
$("#textarea").val(newt);
|
||||
$("#textarea").focus();
|
||||
if($("#poll").hasClass("hide") && $("#emoji").hasClass("hide")){
|
||||
$("#right-side").hide()
|
||||
}
|
||||
$("#suggest").html("");
|
||||
}
|
||||
function cgNPs(q){
|
||||
suggest = "https://cg.toot.app/api/v1/search/light?q=" + q
|
||||
if (suggest != oldSuggest) {
|
||||
console.log(suggest)
|
||||
fetch(suggest, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
console.log(json);
|
||||
if (json[0]) {
|
||||
var tags = "";
|
||||
Object.keys(json).forEach(function(key4) {
|
||||
var tag = json[key4];
|
||||
tags = tags + '<a onclick="cgNP(\''+json[key4]+'\')" class="pointer">' + json[key4] + '</a> ';
|
||||
});
|
||||
$("#suggest").html("Cinderella NowPlaying:" + tags);
|
||||
}else{
|
||||
$("#suggest").html("Cinderella NowPlaying:Not Found");
|
||||
}
|
||||
});
|
||||
var item = {
|
||||
uses: uses,
|
||||
html: tagHTML
|
||||
}
|
||||
tags.push(item)
|
||||
})
|
||||
var num_a = -1
|
||||
var num_b = 1
|
||||
tags = tags.sort(function(a, b) {
|
||||
var x = a['uses']
|
||||
var y = b['uses']
|
||||
if (x > y) return num_a
|
||||
if (x < y) return num_b
|
||||
return 0
|
||||
})
|
||||
var ins = ''
|
||||
var nev = false
|
||||
Object.keys(tags).forEach(function(key7) {
|
||||
ins = ins + tags[key7].html
|
||||
if (key7 <= 0 && !nev) {
|
||||
ins = ins + '<br>'
|
||||
nev = true
|
||||
}
|
||||
})
|
||||
$('#suggest').html(ins)
|
||||
$('#right-side').show()
|
||||
$('#right-side').css('width', '200px')
|
||||
$('#left-side').css('width', 'calc(100% - 200px)')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1 + 200
|
||||
} else {
|
||||
width = 500
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
$('#poll').addClass('hide')
|
||||
$('#emoji').addClass('hide')
|
||||
}
|
||||
} else if (json.accounts[0] && acct[1]) {
|
||||
var accts = ''
|
||||
Object.keys(json.accounts).forEach(function(key3) {
|
||||
var acct = json.accounts[key3]
|
||||
if (acct.acct != q) {
|
||||
//Instance Actorって…
|
||||
if (acct.username.indexOf('.') < 0) {
|
||||
accts =
|
||||
accts +
|
||||
`<a onclick="tagInsert('@${acct.acct}','@${q}')" class="pointer">@${acct.acct}</a><br>`
|
||||
}
|
||||
}
|
||||
})
|
||||
$('#right-side').show()
|
||||
$('#right-side').css('width', '200px')
|
||||
$('#left-side').css('width', 'calc(100% - 200px)')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1 + 200
|
||||
} else {
|
||||
width = 500
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
$('#suggest').html(accts)
|
||||
$('#poll').addClass('hide')
|
||||
$('#emoji').addClass('hide')
|
||||
} else {
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '100%')
|
||||
var width = localStorage.getItem('postbox-width')
|
||||
if (width) {
|
||||
width = width.replace('px', '') * 1
|
||||
} else {
|
||||
width = 300
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
oldSuggest = suggest
|
||||
prev_value = new_val
|
||||
}, 1000)
|
||||
},
|
||||
false
|
||||
)
|
||||
|
||||
input.addEventListener(
|
||||
'blur',
|
||||
function() {
|
||||
window.clearInterval(timer)
|
||||
favTag()
|
||||
},
|
||||
false
|
||||
)
|
||||
function tagInsert(code, del) {
|
||||
var blankBefore = ' '
|
||||
var blankAfter = ' '
|
||||
var textarea = document.querySelector('#textarea')
|
||||
var sentence = textarea.value
|
||||
var len = sentence.length
|
||||
var pos = textarea.selectionStart
|
||||
if (del) {
|
||||
var delLen = del.length
|
||||
} else {
|
||||
var delLen = 0
|
||||
}
|
||||
var before = sentence.substr(0, pos - delLen)
|
||||
var last = before.substr(-1, 1)
|
||||
if (last == ' ') blankBefore = ''
|
||||
var after = sentence.substr(pos, len)
|
||||
var start = after.substr(0, 1)
|
||||
if (start == ' ') blankAfter = ''
|
||||
if (len == 0) {
|
||||
var word = code
|
||||
} else if (len == pos) {
|
||||
var word = blankBefore + code
|
||||
} else if (pos == 0) {
|
||||
var word = code + blankAfter
|
||||
} else {
|
||||
var word = blankBefore + code + blankAfter
|
||||
}
|
||||
sentence = before + word + after
|
||||
textarea.value = sentence
|
||||
if ($('#poll').hasClass('hide') && $('#emoji').hasClass('hide')) {
|
||||
$('#right-side').hide()
|
||||
$('#right-side').css('width', '300px')
|
||||
$('#left-side').css('width', '50%')
|
||||
var width = localStorage.getItem('postbox-width').replace('px', '') * 1
|
||||
if (!width) {
|
||||
width = 300
|
||||
}
|
||||
$('#post-box').css('width', width + 'px')
|
||||
}
|
||||
$('#suggest').html('')
|
||||
}
|
||||
function cgNPs(q) {
|
||||
suggest = 'https://cg.toot.app/api/v1/search/light?q=' + q
|
||||
if (suggest != oldSuggest) {
|
||||
console.log('Try to get suggest at ' + suggest)
|
||||
fetch(suggest, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
}
|
||||
})
|
||||
.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) {
|
||||
if (json[0]) {
|
||||
var tags = ''
|
||||
Object.keys(json).forEach(function(key4) {
|
||||
var tag = json[key4]
|
||||
tags =
|
||||
tags +
|
||||
`<a onclick="cgNp('${json[key4]}')" class="pointer">${escapeHTML(json[key4])}</a>`
|
||||
})
|
||||
$('#suggest').html('Cinderella NowPlaying:' + tags)
|
||||
} else {
|
||||
$('#suggest').html('Cinderella NowPlaying:Not Found')
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,64 +1,81 @@
|
||||
/*リプライ*/
|
||||
function re(id,ats_cm,acct_id,mode){
|
||||
clear();
|
||||
var ats=ats_cm.split(',');
|
||||
localStorage.setItem("nohide",true);
|
||||
show();
|
||||
$("#reply").val(id);
|
||||
for(var i=0;i<ats.length;i++){
|
||||
var at=ats[i];
|
||||
var te=$("#textarea").val();
|
||||
if(at!=localStorage.getItem("user_"+acct_id)){
|
||||
$("#textarea").val("@"+at+" "+te);
|
||||
function re(id, ats_cm, acct_id, mode) {
|
||||
clear()
|
||||
var ats = ats_cm.split(',')
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
$('#reply').val(id)
|
||||
for (var i = 0; i < ats.length; i++) {
|
||||
var at = ats[i]
|
||||
var te = $('#textarea').val()
|
||||
if (at != localStorage.getItem('user_' + acct_id)) {
|
||||
$('#textarea').val('@' + at + ' ' + te)
|
||||
}
|
||||
}
|
||||
$("#rec").text(lang.lang_yesno);
|
||||
$("#post-acct-sel").val(acct_id);
|
||||
$("#post-acct-sel").prop("disabled", true);
|
||||
$('select').material_select();
|
||||
$("#textarea").attr("placeholder",lang.lang_usetxtbox_reply);
|
||||
$("#textarea").focus();
|
||||
var profimg=localStorage.getItem("prof_"+acct_id);
|
||||
if(!profimg){
|
||||
profimg="../../img/missing.svg";
|
||||
$('#rec').text(lang.lang_yesno)
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('#post-acct-sel').prop('disabled', true)
|
||||
$('select').formSelect()
|
||||
mdCheck()
|
||||
$('#textarea').attr('placeholder', lang.lang_usetxtbox_reply)
|
||||
$('#textarea').focus()
|
||||
var profimg = localStorage.getItem('prof_' + acct_id)
|
||||
if (!profimg) {
|
||||
profimg = '../../img/missing.svg'
|
||||
}
|
||||
$("#acct-sel-prof").attr("src",profimg);
|
||||
vis(mode);
|
||||
$('#acct-sel-prof').attr('src', profimg)
|
||||
vis(mode)
|
||||
}
|
||||
function reEx(id){
|
||||
$('#tootmodal').modal('close');
|
||||
var at=$("#tootmodal").attr("data-user");
|
||||
var acct_id = $("#status-acct-sel").val();
|
||||
var mode=$("#tootmodal .vis-data").attr("data-vis");
|
||||
re(id,at,acct_id,mode);
|
||||
function reEx(id) {
|
||||
$('#tootmodal').modal('close')
|
||||
var at = $('#tootmodal').attr('data-user')
|
||||
var acct_id = $('#status-acct-sel').val()
|
||||
var mode = $('#tootmodal .vis-data').attr('data-vis')
|
||||
re(id, at, acct_id, mode)
|
||||
}
|
||||
//引用
|
||||
function qt(id,acct_id,at,url){
|
||||
localStorage.setItem("nohide",true);
|
||||
var qt = localStorage.getItem("quote");
|
||||
if(!qt){
|
||||
var qt="simple";
|
||||
function qt(id, acct_id, at, url) {
|
||||
localStorage.setItem('nohide', true)
|
||||
var qt = localStorage.getItem('quote')
|
||||
if (!qt) {
|
||||
var qt = 'simple'
|
||||
}
|
||||
if(qt=="nothing"){
|
||||
return false;
|
||||
if (qt == 'nothing') {
|
||||
return false
|
||||
}
|
||||
if(qt=="simple"){
|
||||
show();
|
||||
$("#textarea").val("\n"+url);
|
||||
}else if(qt=="mention"){
|
||||
show();
|
||||
$("#textarea").val("\n"+url+" From:@"+at);
|
||||
}else if(qt=="full"){
|
||||
show();
|
||||
var html=$("[toot-id="+id+"] .toot").html();
|
||||
html = html.match(/^<p>(.+)<\/p>$/)[1];
|
||||
html = html.replace(/<br\s?\/?>/, "\n");
|
||||
html = html.replace(/<p>/, "\n");
|
||||
html = html.replace(/<\/p>/, "\n");
|
||||
html=$.strip_tags(html);
|
||||
$("#textarea").val("\n"+"@"+at+" "+html+"\n"+url);
|
||||
if (qt == 'simple') {
|
||||
show()
|
||||
$('#textarea').val('\n' + url)
|
||||
} else if (qt == 'mention') {
|
||||
show()
|
||||
$('#textarea').val('\n' + url + ' From:@' + at)
|
||||
} else if (qt == 'full') {
|
||||
show()
|
||||
var html = $('[toot-id=' + id + '] .toot').html()
|
||||
html = html.match(/^<p>(.+)<\/p>$/)[1]
|
||||
html = html.replace(/<br\s?\/?>/, '\n')
|
||||
html = html.replace(/<p>/, '\n')
|
||||
html = html.replace(/<\/p>/, '\n')
|
||||
html = $.strip_tags(html)
|
||||
$('#textarea').val('\n' + '@' + at + ' ' + html + '\n' + url)
|
||||
} else if (qt == 'apiQuote') {
|
||||
clear()
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
$('#quote').val(id)
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('#post-acct-sel').prop('disabled', true)
|
||||
$('select').formSelect()
|
||||
$('#textarea').attr('placeholder', lang.lang_usetxtbox_reply)
|
||||
$('#textarea').focus()
|
||||
var profimg = localStorage.getItem('prof_' + acct_id)
|
||||
if (!profimg) {
|
||||
profimg = '../../img/missing.svg'
|
||||
}
|
||||
$('#acct-sel-prof').attr('src', profimg)
|
||||
}
|
||||
$("#textarea").focus();
|
||||
$("#post-acct-sel").val(acct_id);
|
||||
$('select').material_select();
|
||||
}
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('select').formSelect()
|
||||
mdCheck()
|
||||
$('#textarea').focus()
|
||||
}
|
||||
|
||||
145
app/js/tl/announParse.js
Normal file
@@ -0,0 +1,145 @@
|
||||
function announParse(obj, acct_id, tlid) {
|
||||
var template = ''
|
||||
var datetype = localStorage.getItem('datetype')
|
||||
var gif = localStorage.getItem('gif')
|
||||
//Ticker
|
||||
var tickerck = localStorage.getItem('ticker_ok')
|
||||
if (tickerck == 'yes') {
|
||||
var ticker = true
|
||||
} else if (!ticker || ticker == 'no') {
|
||||
var ticker = false
|
||||
}
|
||||
if (!datetype) {
|
||||
datetype = 'absolute'
|
||||
}
|
||||
if (!gif) {
|
||||
var gif = 'yes'
|
||||
}
|
||||
Object.keys(obj).forEach(function(key) {
|
||||
var toot = obj[key]
|
||||
var content = toot.content
|
||||
if (toot.emojis) {
|
||||
Object.keys(toot.emojis).forEach(function(key1) {
|
||||
var emoji = toot.emojis[key1]
|
||||
var shortcode = emoji.shortcode
|
||||
if (gif == 'yes') {
|
||||
var emoSource = emoji.url
|
||||
} else {
|
||||
var emoSource = emoji.static_url
|
||||
}
|
||||
var emoji_url = `
|
||||
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
|
||||
alt=" :${shortcode}: " title="${shortcode}" onclick="this.classList.toggle('bigemoji');">
|
||||
`
|
||||
var regExp = new RegExp(':' + shortcode + ':', 'g')
|
||||
content = content.replace(regExp, emoji_url)
|
||||
})
|
||||
}
|
||||
content = twemoji.parse(content)
|
||||
var reactions = ''
|
||||
//既存のリアクション
|
||||
if (toot.reactions) {
|
||||
Object.keys(toot.reactions).forEach(function(key2) {
|
||||
var reaction = toot.reactions[key2]
|
||||
//普通の絵文字 or カスタム絵文字 は文字数判断。ただしスコットランド国旗みたいなやべぇやつに注意
|
||||
var splitter = new GraphemeSplitter()
|
||||
if (splitter.splitGraphemes(reaction.name).length > 1) {
|
||||
//カスタム絵文字
|
||||
var shortcode = reaction.shortcode
|
||||
if (gif == 'yes') {
|
||||
var emoSource = reaction.url
|
||||
} else {
|
||||
var emoSource = reaction.static_url
|
||||
}
|
||||
var emoji_url = `
|
||||
<img draggable="false" src="${emoSource}" class="emoji-img" data-emoji="${shortcode}"
|
||||
alt=" :${shortcode}: " title="${shortcode}">`
|
||||
} else {
|
||||
emoji_url = twemoji.parse(reaction.name)
|
||||
}
|
||||
var addClass = ''
|
||||
if (reaction.me) {
|
||||
addClass = 'reactioned'
|
||||
}
|
||||
reactions =
|
||||
reactions +
|
||||
`<div class="announReaction ${addClass}" onclick="announReaction('${toot.id}', '${acct_id}', '${tlid}', ${reaction.me},'${reaction.name}')">
|
||||
${emoji_url} ${reaction.count}
|
||||
</div>`
|
||||
})
|
||||
}
|
||||
if (toot.ends_at) {
|
||||
var ended = `<div class="announReaction" title="${date(toot.ends_at, 'absolute')}" style="width: auto; cursor: default;">
|
||||
<i class="fas fa-arrow-right"></i>
|
||||
${date(toot.ends_at, datetype)}
|
||||
</div>`
|
||||
} else {
|
||||
var ended = ''
|
||||
}
|
||||
|
||||
template =
|
||||
template +
|
||||
`<div class="announcement" data-id="${toot.id}">
|
||||
${content}
|
||||
<div class="reactionsPack">
|
||||
${reactions}
|
||||
<div class="announReaction add" onclick="announReactionNew('${toot.id}', '${acct_id}', '${tlid}')"><i class="fas fa-plus"></i></div>
|
||||
${ended}
|
||||
</div>
|
||||
</div>`
|
||||
})
|
||||
return template
|
||||
}
|
||||
function announReaction(id, acct_id, tlid, del, name) {
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var start = 'https://' + domain + '/api/v1/announcements/' + id + '/reactions/' + encodeURIComponent(name)
|
||||
var httpreq = new XMLHttpRequest()
|
||||
if(del) {
|
||||
var method = 'DELETE'
|
||||
} else {
|
||||
var method = 'PUT'
|
||||
}
|
||||
httpreq.open(method, start, true)
|
||||
httpreq.setRequestHeader('Content-Type', 'application/json')
|
||||
httpreq.setRequestHeader('Authorization', 'Bearer ' + at)
|
||||
httpreq.responseType = 'json'
|
||||
httpreq.send()
|
||||
httpreq.onreadystatechange = function() {
|
||||
if (httpreq.readyState === 4) {
|
||||
var json = httpreq.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
}
|
||||
announ(acct_id, tlid)
|
||||
}
|
||||
}
|
||||
}
|
||||
function announReactionNew(id, acct_id, tlid) {
|
||||
$('#reply').val(id)
|
||||
$('#media').val('announcement')
|
||||
$('#unreact').hide()
|
||||
$('#addreact').removeClass('hide')
|
||||
$('#post-acct-sel').val(acct_id)
|
||||
$('select').formSelect()
|
||||
localStorage.setItem('nohide', true)
|
||||
show()
|
||||
emojiToggle(true)
|
||||
$('#left-side').hide()
|
||||
}
|
||||
function emojiReactionDef(target) {
|
||||
var emojiraw = newpack.filter(function(item, index) {
|
||||
if (item.short_name == target) return true
|
||||
})
|
||||
var hex = emojiraw[0].unified.split('-')
|
||||
if (hex.length === 2) {
|
||||
emoji = twemoji.convert.fromCodePoint(hex[0]) + twemoji.convert.fromCodePoint(hex[1])
|
||||
} else {
|
||||
emoji = twemoji.convert.fromCodePoint(hex[0])
|
||||
}
|
||||
var acct_id = $('#post-acct-sel').val()
|
||||
var id = $('#reply').val()
|
||||
announReaction(id, acct_id, 0, false, emoji)
|
||||
clear()
|
||||
hide()
|
||||
}
|
||||
@@ -3,282 +3,397 @@
|
||||
function additional(acct_id, tlid) {
|
||||
//メンション系
|
||||
//$(".mention").attr("href", "");
|
||||
|
||||
$("#timeline-container .mention").addClass("parsed");
|
||||
|
||||
$("#timeline-container .hashtag").each(function(i, elem) {
|
||||
var tags = $(this).attr("href").match(
|
||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/tags\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
||||
);
|
||||
$(this).attr("href","#");
|
||||
if(tags){
|
||||
if(tags[2]){
|
||||
$(this).attr("onclick",'tagShow(\'' + tags[2] + '\')');
|
||||
}
|
||||
$('#timeline-container .mention').addClass('parsed')
|
||||
|
||||
$('#timeline-container .hashtag, #timeline-container [rel=tag]').each(function(i, elem) {
|
||||
var tags = $(this)
|
||||
.attr('href')
|
||||
.match(/https?:\/\/([-a-zA-Z0-9@.]+)\/tags?\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/)
|
||||
if (tags) {
|
||||
var tagThis = tags[2]
|
||||
} else {
|
||||
var tagThis = $(this).attr('data-regTag')
|
||||
}
|
||||
|
||||
if (tagThis) {
|
||||
$(this).attr('href', "javascript:tagShow('" + tagThis + "')")
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
//トゥートサムネ
|
||||
$("#timeline_" + tlid + " .toot a:not(.parsed)").each(function(i, elem) {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var card = localStorage.getItem("card_" + tlid);
|
||||
var text = $(this).attr('href');
|
||||
if(text){
|
||||
if(text.indexOf("twimg.com")=== -1){
|
||||
$('#timeline_' + tlid + ' .toot a:not(.parsed)').each(function(i, elem) {
|
||||
var text = $(this).attr('href')
|
||||
if (text) {
|
||||
if (text.indexOf('twimg.com') === -1) {
|
||||
var urls = text.match(
|
||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
||||
);
|
||||
)
|
||||
}
|
||||
}else{
|
||||
text=""
|
||||
var urls =[]
|
||||
} else {
|
||||
text = ''
|
||||
var urls = []
|
||||
}
|
||||
|
||||
|
||||
//トゥートのURLぽかったら
|
||||
toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/);
|
||||
if(toot){
|
||||
if(toot[1]){
|
||||
$(this).attr("data-acct",acct_id);
|
||||
toot = text.match(/https:\/\/([a-zA-Z0-9.-]+)\/@([a-zA-Z0-9_]+)\/([0-9]+)/)
|
||||
if (toot) {
|
||||
if (toot[1]) {
|
||||
$(this).attr('data-acct', acct_id)
|
||||
}
|
||||
}
|
||||
if (urls) {
|
||||
$(this).remove();
|
||||
} else if (!card) {
|
||||
var id = $(this).parents('.cvo').attr("toot-id");
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
var start = "https://" + domain + "/url?url="+text;
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
//body: JSON.stringify({})
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
if (json.title) {
|
||||
$("[toot-id=" + id + "] .additional").html(
|
||||
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
|
||||
json.description + "</span>");
|
||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
||||
$("[toot-id=" + id + "]").addClass("parsed");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}else{
|
||||
$(this).attr("title",text);
|
||||
$(this).remove()
|
||||
} else {
|
||||
$(this).attr('title', text)
|
||||
}
|
||||
});
|
||||
$("i.unparsed").each(function(i, elem) {
|
||||
var dem=$(this).text();
|
||||
var dom=$(this);
|
||||
var start = "./js/emoji/emoji-map.json";
|
||||
var xmlHttpRequest = new XMLHttpRequest();
|
||||
xmlHttpRequest.onreadystatechange = function()
|
||||
{
|
||||
if( this.readyState === 4 && this.status === 200 ) {
|
||||
if( this.response){
|
||||
var json=this.response;
|
||||
var emojis=json.emojis;
|
||||
for (i = 0; i < emojis.length; i++) {
|
||||
var emojie = emojis[i];
|
||||
var regExp = new RegExp(dem, "g");
|
||||
if (emojie.emoji.match(regExp)) {
|
||||
var sc=emojie.name;
|
||||
var sc="twa-"+sc.replace(/_/g,"-");
|
||||
dom.addClass(sc);
|
||||
dom.text("");
|
||||
dom.removeClass("unparsed");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
xmlHttpRequest.open( 'GET', start, true );
|
||||
xmlHttpRequest.responseType = 'json';
|
||||
xmlHttpRequest.send( null );
|
||||
});
|
||||
|
||||
$("#timeline_" + tlid + " .toot:not(:has(a:not(.add-show,.parsed)))").each(function(i, elem) {
|
||||
$(this).parent().find(".add-show").hide();
|
||||
});
|
||||
})
|
||||
$('i.unparsed').each(function(i, elem) {
|
||||
var dem = $(this).text()
|
||||
var dom = $(this)
|
||||
var start = './js/emoji/emoji-map.json'
|
||||
var xmlHttpRequest = new XMLHttpRequest()
|
||||
xmlHttpRequest.onreadystatechange = function() {
|
||||
if (this.readyState === 4 && this.status === 200) {
|
||||
if (this.response) {
|
||||
var json = this.response
|
||||
if (this.status !== 200) {
|
||||
setLog(start, this.status, this.response)
|
||||
}
|
||||
var emojis = json.emojis
|
||||
for (i = 0; i < emojis.length; i++) {
|
||||
var emojie = emojis[i]
|
||||
var regExp = new RegExp(dem, 'g')
|
||||
if (emojie.emoji.match(regExp)) {
|
||||
var sc = emojie.name
|
||||
var sc = 'twa-' + sc.replace(/_/g, '-')
|
||||
dom.addClass(sc)
|
||||
dom.text('')
|
||||
dom.removeClass('unparsed')
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
xmlHttpRequest.open('GET', start, true)
|
||||
xmlHttpRequest.responseType = 'json'
|
||||
xmlHttpRequest.send(null)
|
||||
})
|
||||
|
||||
$('#timeline_' + tlid + ' .toot:not(:has(a:not(.add-show,.parsed)))').each(function(i, elem) {
|
||||
$(this)
|
||||
.parent()
|
||||
.find('.add-show')
|
||||
.hide()
|
||||
})
|
||||
//Markdownイメージビューワー
|
||||
$("#timeline_" + tlid + " .toot a:not(.img-parsed):has(img)").each(function(i, elem) {
|
||||
var ilink=$(this).attr("href");
|
||||
var id = $(this).parents('.cvo').attr("toot-id");
|
||||
$(this).attr("href","#");
|
||||
$(this).attr("onclick","imgv('"+id+"','"+i+"')");
|
||||
$(this).attr("data-type","image");
|
||||
$(this).attr("id",id+"-image-"+i);
|
||||
$(this).attr("data-url",ilink);
|
||||
$(this).addClass("img-parsed");
|
||||
});
|
||||
$('#timeline_' + tlid + ' .toot a:not(.img-parsed):has(img)').each(function(i, elem) {
|
||||
var ilink = $(this).attr('href')
|
||||
var id = $(this)
|
||||
.parents('.cvo')
|
||||
.attr('toot-id')
|
||||
$(this).attr('href', `javascript:imgv('${id}','${i}')`)
|
||||
$(this).attr('data-type', 'image')
|
||||
$(this).attr('id', id + '-image-' + i)
|
||||
$(this).attr('data-url', ilink)
|
||||
$(this).addClass('img-parsed')
|
||||
})
|
||||
}
|
||||
|
||||
function additionalIndv(tlid, acct_id, id) {
|
||||
var domain = localStorage.getItem("domain_" + acct_id);
|
||||
var at = localStorage.getItem("acct_"+ acct_id + "_at");
|
||||
var text = $("[toot-id="+id+"] .toot a").attr('href');
|
||||
var urls = text.match(
|
||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
||||
);
|
||||
if (urls) {
|
||||
$("[toot-id="+id+"] .toot a").remove();
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var text = $('[toot-id=' + id + '] .toot a').attr('href')
|
||||
var urls = text.match(
|
||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
||||
)
|
||||
if (urls) {
|
||||
$('[toot-id=' + id + '] .toot a').remove()
|
||||
} else {
|
||||
if (localStorage.getItem('mode_' + domain) == 'misskey') {
|
||||
var start = 'https://' + domain + '/url?url=' + text
|
||||
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) {
|
||||
if (json.title) {
|
||||
$('[toot-id=' + id + '] .additional').html(
|
||||
`<span class="gray">URL${lang.lang_cards_check}:<br>Title:${escapeHTML(
|
||||
json.title
|
||||
)}<br>${escapeHTML(json.description)}</span>`
|
||||
)
|
||||
$('[toot-id=' + id + '] a:not(.parsed)').addClass('parsed')
|
||||
$('[toot-id=' + id + ']').addClass('parsed')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
if(localStorage.getItem("mode_" + domain)=="misskey"){
|
||||
var start = "https://" + domain + "/url?url="+text;
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
//body: JSON.stringify({})
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
var id = $('[toot-id=' + id + '] .toot a')
|
||||
.parents('.cvo')
|
||||
.attr('toot-id')
|
||||
var start = 'https://' + domain + '/api/v1/statuses/' + id
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
//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) {
|
||||
cards = json.card
|
||||
var analyze = cardHtml(cards, acct_id, id)
|
||||
$('[toot-id=' + id + '] .additional').html(analyze)
|
||||
if (json.title) {
|
||||
$("[toot-id=" + id + "] .additional").html(
|
||||
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + json.title + "<br>" +
|
||||
json.description + "</span>");
|
||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
||||
$("[toot-id=" + id + "]").addClass("parsed");
|
||||
$('[toot-id=' + id + '] a:not(.parsed)').addClass('parsed')
|
||||
$('[toot-id=' + id + ']').addClass('parsed')
|
||||
}
|
||||
});
|
||||
}else{
|
||||
var id = $("[toot-id="+id+"] .toot a").parents('.cvo').attr("toot-id");
|
||||
var start = "https://" + domain + "/api/v1/statuses/" + id + "/card";
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
'Authorization': 'Bearer ' + at
|
||||
},
|
||||
//body: JSON.stringify({})
|
||||
}).then(function(response) {
|
||||
return response.json();
|
||||
}).catch(function(error) {
|
||||
todo(error);
|
||||
console.error(error);
|
||||
}).then(function(json) {
|
||||
console.log(json);
|
||||
//このリンク鳥やんけ、ってとき
|
||||
console.log(json.provider_name);
|
||||
if (json.provider_name=="Twitter"){
|
||||
if(json.image){
|
||||
var twiImg='<br><img src="'+json.image+'" style="max-width:100%" onclick="imgv(\'twi_'+id+'\', 0, \'twitter\');" id="twi_'+id+'-image-0" data-url="'+json.image+'" data-type="image">';
|
||||
}else{
|
||||
var twiImg='';
|
||||
}
|
||||
$("[toot-id=" + id + "] .additional").html(
|
||||
'<div class="twitter-tweet"><b>'+escapeHTML(json.author_name)+'</b><br>'+escapeHTML(json.description)+twiImg+'</div>');
|
||||
}else if (json.provider_name=="pixiv"){
|
||||
if(json.image){
|
||||
var pxvImg='<br><img src="'+json.image+'" style="max-width:100%" onclick="imgv(\'pixiv_'+id+'\', 0, \'pixiv\');" id="pixiv_'+id+'-image-0" data-url="'+json.embed_url+'" data-type="image">';
|
||||
}else{
|
||||
var pxvImg='';
|
||||
}
|
||||
$("[toot-id=" + id + "] .additional").html(
|
||||
'<div class="pixiv-post"><b><a href="'+json.author_url+'" target="_blank">'+escapeHTML(json.author_name)+'</a></b><br>'+escapeHTML(json.title)+pxvImg+'</div>');
|
||||
}else{
|
||||
if (json.title) {
|
||||
$("[toot-id=" + id + "] .additional").html(
|
||||
"<span class=\"gray\">URL"+lang.lang_cards_check+":<br>Title:" + escapeHTML(json.title) + "<br>" +
|
||||
escapeHTML(json.description) + "</span>");
|
||||
}
|
||||
if (json.html) {
|
||||
$("[toot-id=" + id + "] .additional").html(json.html+'<i class="material-icons sml pointer" onclick="pip(\''+id+'\')" title="'+lang.lang_cards_pip+'">picture_in_picture_alt</i>');
|
||||
|
||||
}
|
||||
}
|
||||
if (json.title) {
|
||||
$("[toot-id=" + id + "] a:not(.parsed)").addClass("parsed");
|
||||
$("[toot-id=" + id + "]").addClass("parsed");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
function cardHtml(json, acct_id, id) {
|
||||
var analyze = ''
|
||||
var domain = json.url.match(/^https?:\/{2,}(.*?)(?:\/|\?|#|$)/)[1];
|
||||
var ok = [
|
||||
"pixiv.net",
|
||||
"twitter.com",
|
||||
"mobile.twitter.com",
|
||||
"open.spotify.com",
|
||||
"youtube.com",
|
||||
"youtu.be",
|
||||
"m.youtube.com",
|
||||
"www.youtube.com",
|
||||
"nicovideo.jp",
|
||||
"twitcasting.tv"
|
||||
]
|
||||
var isHad = _.includes(ok, domain);
|
||||
if (json.provider_name == 'pixiv') {
|
||||
if (json.image) {
|
||||
var pxvImg = `
|
||||
<br><img src="${json.image}" style="max-width:100%"
|
||||
onclick="imgv('pixiv_${id}',0,'pixiv')" id="pixiv_${id}-image-0"
|
||||
data-url="${json.embed_url}"
|
||||
data-type="image">
|
||||
`
|
||||
} else {
|
||||
var pxvImg = ''
|
||||
}
|
||||
analyze = `<div class="pixiv-post"><b><a href="
|
||||
${json.author_url}
|
||||
" target="_blank">
|
||||
${escapeHTML(json.author_name)}
|
||||
</a></b><br>
|
||||
${escapeHTML(json.title)}
|
||||
${pxvImg}
|
||||
</div>`
|
||||
} else {
|
||||
if (json.title) {
|
||||
analyze = `<span class="gray">URL
|
||||
${lang.lang_cards_check}
|
||||
:<br>Title:
|
||||
${escapeHTML(json.title)}
|
||||
<br>
|
||||
${escapeHTML(json.description)}
|
||||
</span>`
|
||||
}
|
||||
|
||||
if (json.html || json.provider_name == 'Twitter') {
|
||||
if(isHad) {
|
||||
var prved = `<img class="emoji" draggable="false" alt="✅"
|
||||
src="https://twemoji.maxcdn.com/v/12.1.3/72x72/2705.png">`
|
||||
var title = lang.lang_cards_trusted
|
||||
}else{
|
||||
var prved = '<img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/v/12.1.4/72x72/26a0.png">'
|
||||
var title = lang.lang_cards_untrusted
|
||||
}
|
||||
analyze =`<a onclick="cardHtmlShow('${acct_id}','${id}')" class="add-show pointer" title="${title}">
|
||||
${lang.lang_parse_html}(${domain})${prved}
|
||||
</a>${analyze}<br>`
|
||||
}
|
||||
}
|
||||
return analyze
|
||||
}
|
||||
function cardHtmlShow(acct_id, id) {
|
||||
var domain = localStorage.getItem('domain_' + acct_id)
|
||||
var at = localStorage.getItem('acct_' + acct_id + '_at')
|
||||
var text = $('[toot-id=' + id + '] .toot a').attr('href')
|
||||
var urls = text.match(
|
||||
/https?:\/\/([-a-zA-Z0-9@.]+)\/media\/([-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/
|
||||
)
|
||||
var id = $('[toot-id=' + id + '] .toot a')
|
||||
.parents('.cvo')
|
||||
.attr('toot-id')
|
||||
var start = 'https://' + domain + '/api/v1/statuses/' + id
|
||||
fetch(start, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'content-type': 'application/json',
|
||||
Authorization: 'Bearer ' + at
|
||||
}
|
||||
//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) {
|
||||
json = json.card
|
||||
if (json.html) {
|
||||
analyze =
|
||||
json.html +
|
||||
`<i class="material-icons sml pointer" onclick="pip('
|
||||
${id}
|
||||
')" title="
|
||||
${lang.lang_cards_pip}
|
||||
">picture_in_picture_alt</i>`
|
||||
}
|
||||
if (json.provider_name == 'Twitter') {
|
||||
var url = json.author_url
|
||||
var status = json.url.match(/^https:\/\/twitter.com\/[_a-zA-Z0-9-]+\/status\/([0-9]+)/);
|
||||
var statusId = false
|
||||
if(status){
|
||||
if(status.length > 0){
|
||||
var statusId = status[1]
|
||||
}
|
||||
}
|
||||
console.log(statusId)
|
||||
if(statusId){
|
||||
url = json.url
|
||||
analyze = `
|
||||
<blockquote class="twitter-tweet" data-dnt="true"><strong>${json.author_name}</strong><br>${json.description}<a href="${url}">${json.url}</a></blockquote>
|
||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||
`
|
||||
}
|
||||
}
|
||||
$('[toot-id=' + id + '] .additional').html(analyze)
|
||||
})
|
||||
}
|
||||
//各TL上方のLink[On/Off]
|
||||
function cardToggle(tlid) {
|
||||
var card = localStorage.getItem("card_" + tlid);
|
||||
var card = localStorage.getItem('card_' + tlid)
|
||||
if (!card) {
|
||||
localStorage.setItem("card_" + tlid, "true");
|
||||
$("#sta-card-" + tlid).text("Off");
|
||||
$("#sta-card-" + tlid).css("color",'red');
|
||||
localStorage.setItem('card_' + tlid, 'true')
|
||||
$('#sta-card-' + tlid).text('Off')
|
||||
$('#sta-card-' + tlid).css('color', 'red')
|
||||
} else {
|
||||
localStorage.removeItem("card_" + tlid);
|
||||
$("#sta-card-" + tlid).text("On");
|
||||
$("#sta-card-" + tlid).css("color",'#009688');
|
||||
localStorage.removeItem('card_' + tlid)
|
||||
$('#sta-card-' + tlid).text('On')
|
||||
$('#sta-card-' + tlid).css('color', '#009688')
|
||||
}
|
||||
}
|
||||
//各TL上方のLink[On/Off]をチェック
|
||||
function cardCheck(tlid) {
|
||||
var card = localStorage.getItem("card_" + tlid);
|
||||
var card = localStorage.getItem('card_' + tlid)
|
||||
if (!card) {
|
||||
$("#sta-card-" + tlid).text("On");
|
||||
$("#sta-card-" + tlid).css("color",'#009688');
|
||||
$('#sta-card-' + tlid).text('On')
|
||||
$('#sta-card-' + tlid).css('color', '#009688')
|
||||
} else {
|
||||
$("#sta-card-" + tlid).text("Off");
|
||||
$("#sta-card-" + tlid).css("color",'red');
|
||||
$('#sta-card-' + tlid).text('Off')
|
||||
$('#sta-card-' + tlid).css('color', 'red')
|
||||
}
|
||||
}
|
||||
|
||||
function mov(id,tlid,type){
|
||||
if(tlid=="notf"){
|
||||
var tlide="[data-notf="+acct_id+"]";
|
||||
}else if(tlid=="user"){
|
||||
var tlide="#his-data";
|
||||
}else{
|
||||
var tlide="[tlid="+tlid+"]";
|
||||
}
|
||||
console.log(tlid)
|
||||
var mouseover=localStorage.getItem("mouseover");
|
||||
if(!mouseover){
|
||||
mouseover="";
|
||||
}
|
||||
if(mouseover=="yes"){
|
||||
mouseover="hide";
|
||||
}else if(mouseover=="click"){
|
||||
if(type=="mv"){
|
||||
mouseover="";
|
||||
}else{
|
||||
mouseover="hide";
|
||||
}
|
||||
}else if(mouseover=="no"){
|
||||
mouseover="";
|
||||
}
|
||||
if(mouseover=="hide"){
|
||||
$(tlide+" [toot-id="+id+"] .area-actions").toggleClass("hide")
|
||||
$(tlide+" [toot-id="+id+"] .area-side").toggleClass("hide")
|
||||
}
|
||||
}
|
||||
|
||||
function resetmv(type){
|
||||
var mouseover=localStorage.getItem("mouseover");
|
||||
if(!mouseover){
|
||||
mouseover="";
|
||||
}else if(mouseover=="yes"){
|
||||
mouseover="hide";
|
||||
}else if(mouseover=="no"){
|
||||
mouseover="";
|
||||
}else if(mouseover=="click" && type!="mv"){
|
||||
mouseover="hide";
|
||||
}
|
||||
if(mouseover=="hide"){
|
||||
$(".area-actions").addClass("hide");
|
||||
$(".area-side").addClass("hide");
|
||||
function mov(id, tlid, type) {
|
||||
const dropdownTrigger = `dropdown_${tlid}_${id}`
|
||||
const elm = document.getElementById(dropdownTrigger)
|
||||
const instance = M.Dropdown.getInstance(elm)
|
||||
if(instance) {
|
||||
if(instance.isOpen) return false
|
||||
}
|
||||
|
||||
}
|
||||
var click = false
|
||||
if (tlid == 'notf') {
|
||||
var tlide = '[data-notf=' + acct_id + ']'
|
||||
} else if (tlid == 'user') {
|
||||
var tlide = '#his-data'
|
||||
} else {
|
||||
var tlide = '[tlid=' + tlid + ']'
|
||||
}
|
||||
var mouseover = localStorage.getItem('mouseover')
|
||||
if (!mouseover) {
|
||||
mouseover = ''
|
||||
}
|
||||
if (mouseover == 'yes') {
|
||||
mouseover = 'hide'
|
||||
} else if (mouseover == 'click') {
|
||||
if (type == 'mv') {
|
||||
mouseover = ''
|
||||
} else {
|
||||
mouseover = 'hide'
|
||||
}
|
||||
click = true
|
||||
} else if (mouseover == 'no') {
|
||||
mouseover = ''
|
||||
}
|
||||
if (mouseover == 'hide') {
|
||||
if (click) {
|
||||
$(tlide + ' [unique-id=' + id + ']').toggleClass('hide-actions')
|
||||
} else {
|
||||
$(tlide + ' [unique-id=' + id + ']').removeClass('hide-actions')
|
||||
}
|
||||
|
||||
//$(tlide + " [toot-id=" + id + "] .area-vis").toggleClass("hide")
|
||||
//$(tlide + " [toot-id=" + id + "] .area-actions").toggleClass("hide")
|
||||
//$(tlide + " [toot-id=" + id + "] .area-side").toggleClass("hide")
|
||||
}
|
||||
}
|
||||
|
||||
function resetmv(type) {
|
||||
var mouseover = localStorage.getItem('mouseover')
|
||||
if (!mouseover) {
|
||||
mouseover = ''
|
||||
} else if (mouseover == 'yes') {
|
||||
mouseover = 'hide'
|
||||
} else if (mouseover == 'no') {
|
||||
mouseover = ''
|
||||
} else if (mouseover == 'click' && type != 'mv') {
|
||||
mouseover = 'hide'
|
||||
}
|
||||
if (mouseover == 'hide') {
|
||||
$('.cvo').addClass('hide-actions')
|
||||
//$(".area-vis").addClass("hide");
|
||||
//$(".area-actions").addClass("hide");
|
||||
//$(".area-side").addClass("hide");
|
||||
}
|
||||
}
|
||||
|
||||