mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2024-11-25 11:27:31 -07:00
feat: ✨ Show time for users
This commit is contained in:
parent
a5633b9368
commit
c28e5fcad5
11 changed files with 178 additions and 168 deletions
|
@ -1400,6 +1400,7 @@ _profile:
|
||||||
metadataContent: "Content"
|
metadataContent: "Content"
|
||||||
changeAvatar: "Change avatar"
|
changeAvatar: "Change avatar"
|
||||||
changeBanner: "Change banner"
|
changeBanner: "Change banner"
|
||||||
|
locationDescription: "If entered properly, this will display your local time to other users."
|
||||||
_exportOrImport:
|
_exportOrImport:
|
||||||
allNotes: "All posts"
|
allNotes: "All posts"
|
||||||
followingList: "Followed users"
|
followingList: "Followed users"
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "calckey",
|
"name": "calckey",
|
||||||
"version": "13.2.0-dev9",
|
"version": "13.2.0-dev11",
|
||||||
"codename": "aqua",
|
"codename": "aqua",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://codeberg.org/calckey/calckey.git"
|
"url": "https://codeberg.org/calckey/calckey.git"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@7.27.0",
|
"packageManager": "pnpm@7.27.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"rebuild": "pnpm run clean && pnpm -r run build && pnpm run gulp",
|
"rebuild": "pnpm run clean && pnpm -r run build && pnpm run gulp",
|
||||||
|
|
|
@ -98,7 +98,9 @@ export function apiAccountMastodon(router: Router): void {
|
||||||
ctx.body = e.response.data;
|
ctx.body = e.response.data;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
router.get<{ Params: { id: string } }>("/v1/accounts/:id(^.*\\d.*$)", async (ctx) => {
|
router.get<{ Params: { id: string } }>(
|
||||||
|
"/v1/accounts/:id(^.*\\d.*$)",
|
||||||
|
async (ctx) => {
|
||||||
const BASE_URL = `${ctx.protocol}://${ctx.hostname}`;
|
const BASE_URL = `${ctx.protocol}://${ctx.hostname}`;
|
||||||
const accessTokens = ctx.headers.authorization;
|
const accessTokens = ctx.headers.authorization;
|
||||||
const client = getClient(BASE_URL, accessTokens);
|
const client = getClient(BASE_URL, accessTokens);
|
||||||
|
@ -111,7 +113,8 @@ export function apiAccountMastodon(router: Router): void {
|
||||||
ctx.status = 401;
|
ctx.status = 401;
|
||||||
ctx.body = e.response.data;
|
ctx.body = e.response.data;
|
||||||
}
|
}
|
||||||
});
|
},
|
||||||
|
);
|
||||||
router.get<{ Params: { id: string } }>(
|
router.get<{ Params: { id: string } }>(
|
||||||
"/v1/accounts/:id/statuses",
|
"/v1/accounts/:id/statuses",
|
||||||
async (ctx) => {
|
async (ctx) => {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
"use strict";
|
||||||
|
|
||||||
window.onload = async () => {
|
window.onload = async () => {
|
||||||
const account = JSON.parse(localStorage.getItem('account'));
|
const account = JSON.parse(localStorage.getItem("account"));
|
||||||
const i = account.token;
|
const i = account.token;
|
||||||
|
|
||||||
const api = (endpoint, data = {}) => {
|
const api = (endpoint, data = {}) => {
|
||||||
|
@ -10,12 +10,13 @@ window.onload = async () => {
|
||||||
if (i) data.i = i;
|
if (i) data.i = i;
|
||||||
|
|
||||||
// Send request
|
// Send request
|
||||||
fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
|
fetch(endpoint.indexOf("://") > -1 ? endpoint : `/api/${endpoint}`, {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
credentials: 'omit',
|
credentials: "omit",
|
||||||
cache: 'no-cache'
|
cache: "no-cache",
|
||||||
}).then(async (res) => {
|
})
|
||||||
|
.then(async (res) => {
|
||||||
const body = res.status === 204 ? null : await res.json();
|
const body = res.status === 204 ? null : await res.json();
|
||||||
|
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
|
@ -25,27 +26,28 @@ window.onload = async () => {
|
||||||
} else {
|
} else {
|
||||||
reject(body.error);
|
reject(body.error);
|
||||||
}
|
}
|
||||||
}).catch(reject);
|
})
|
||||||
|
.catch(reject);
|
||||||
});
|
});
|
||||||
|
|
||||||
return promise;
|
return promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
const content = document.getElementById('content');
|
const content = document.getElementById("content");
|
||||||
|
|
||||||
document.getElementById('ls').addEventListener('click', () => {
|
document.getElementById("ls").addEventListener("click", () => {
|
||||||
content.innerHTML = '';
|
content.innerHTML = "";
|
||||||
|
|
||||||
const lsEditor = document.createElement('div');
|
const lsEditor = document.createElement("div");
|
||||||
lsEditor.id = 'lsEditor';
|
lsEditor.id = "lsEditor";
|
||||||
|
|
||||||
const adder = document.createElement('div');
|
const adder = document.createElement("div");
|
||||||
adder.classList.add('adder');
|
adder.classList.add("adder");
|
||||||
const addKeyInput = document.createElement('input');
|
const addKeyInput = document.createElement("input");
|
||||||
const addValueTextarea = document.createElement('textarea');
|
const addValueTextarea = document.createElement("textarea");
|
||||||
const addButton = document.createElement('button');
|
const addButton = document.createElement("button");
|
||||||
addButton.textContent = 'Add';
|
addButton.textContent = "Add";
|
||||||
addButton.addEventListener('click', () => {
|
addButton.addEventListener("click", () => {
|
||||||
localStorage.setItem(addKeyInput.value, addValueTextarea.value);
|
localStorage.setItem(addKeyInput.value, addValueTextarea.value);
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
});
|
||||||
|
@ -57,21 +59,21 @@ window.onload = async () => {
|
||||||
|
|
||||||
for (let i = 0; i < localStorage.length; i++) {
|
for (let i = 0; i < localStorage.length; i++) {
|
||||||
const k = localStorage.key(i);
|
const k = localStorage.key(i);
|
||||||
const record = document.createElement('div');
|
const record = document.createElement("div");
|
||||||
record.classList.add('record');
|
record.classList.add("record");
|
||||||
const header = document.createElement('header');
|
const header = document.createElement("header");
|
||||||
header.textContent = k;
|
header.textContent = k;
|
||||||
const textarea = document.createElement('textarea');
|
const textarea = document.createElement("textarea");
|
||||||
textarea.textContent = localStorage.getItem(k);
|
textarea.textContent = localStorage.getItem(k);
|
||||||
const saveButton = document.createElement('button');
|
const saveButton = document.createElement("button");
|
||||||
saveButton.textContent = 'Save';
|
saveButton.textContent = "Save";
|
||||||
saveButton.addEventListener('click', () => {
|
saveButton.addEventListener("click", () => {
|
||||||
localStorage.setItem(k, textarea.value);
|
localStorage.setItem(k, textarea.value);
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
});
|
||||||
const removeButton = document.createElement('button');
|
const removeButton = document.createElement("button");
|
||||||
removeButton.textContent = 'Remove';
|
removeButton.textContent = "Remove";
|
||||||
removeButton.addEventListener('click', () => {
|
removeButton.addEventListener("click", () => {
|
||||||
localStorage.removeItem(k);
|
localStorage.removeItem(k);
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,120 +9,122 @@
|
||||||
* 注: webpackは介さないため、このファイルではrequireやimportは使えません。
|
* 注: webpackは介さないため、このファイルではrequireやimportは使えません。
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'use strict';
|
"use strict";
|
||||||
|
|
||||||
// ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので
|
// ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので
|
||||||
(async () => {
|
(async () => {
|
||||||
window.onerror = (e) => {
|
window.onerror = (e) => {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
renderError('SOMETHING_HAPPENED', e);
|
renderError("SOMETHING_HAPPENED", e);
|
||||||
};
|
};
|
||||||
window.onunhandledrejection = (e) => {
|
window.onunhandledrejection = (e) => {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
renderError('SOMETHING_HAPPENED_IN_PROMISE', e);
|
renderError("SOMETHING_HAPPENED_IN_PROMISE", e);
|
||||||
};
|
};
|
||||||
|
|
||||||
//#region Detect language & fetch translations
|
//#region Detect language & fetch translations
|
||||||
const v = localStorage.getItem('v') || VERSION;
|
const v = localStorage.getItem("v") || VERSION;
|
||||||
|
|
||||||
const supportedLangs = LANGS;
|
const supportedLangs = LANGS;
|
||||||
let lang = localStorage.getItem('lang');
|
let lang = localStorage.getItem("lang");
|
||||||
if (lang == null || !supportedLangs.includes(lang)) {
|
if (lang == null || !supportedLangs.includes(lang)) {
|
||||||
if (supportedLangs.includes(navigator.language)) {
|
if (supportedLangs.includes(navigator.language)) {
|
||||||
lang = navigator.language;
|
lang = navigator.language;
|
||||||
} else {
|
} else {
|
||||||
lang = supportedLangs.find(x => x.split('-')[0] === navigator.language);
|
lang = supportedLangs.find((x) => x.split("-")[0] === navigator.language);
|
||||||
|
|
||||||
// Fallback
|
// Fallback
|
||||||
if (lang == null) lang = 'en-US';
|
if (lang == null) lang = "en-US";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const res = await fetch(`/assets/locales/${lang}.${v}.json`);
|
const res = await fetch(`/assets/locales/${lang}.${v}.json`);
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
localStorage.setItem('lang', lang);
|
localStorage.setItem("lang", lang);
|
||||||
localStorage.setItem('locale', await res.text());
|
localStorage.setItem("locale", await res.text());
|
||||||
localStorage.setItem('localeVersion', v);
|
localStorage.setItem("localeVersion", v);
|
||||||
} else {
|
} else {
|
||||||
await checkUpdate();
|
await checkUpdate();
|
||||||
renderError('LOCALE_FETCH');
|
renderError("LOCALE_FETCH");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Script
|
//#region Script
|
||||||
function importAppScript() {
|
function importAppScript() {
|
||||||
import(`/assets/${CLIENT_ENTRY}`)
|
import(`/assets/${CLIENT_ENTRY}`).catch(async (e) => {
|
||||||
.catch(async e => {
|
|
||||||
await checkUpdate();
|
await checkUpdate();
|
||||||
console.error(e);
|
console.error(e);
|
||||||
renderError('APP_IMPORT', e);
|
renderError("APP_IMPORT", e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// タイミングによっては、この時点でDOMの構築が済んでいる場合とそうでない場合とがある
|
// タイミングによっては、この時点でDOMの構築が済んでいる場合とそうでない場合とがある
|
||||||
if (document.readyState !== 'loading') {
|
if (document.readyState !== "loading") {
|
||||||
importAppScript();
|
importAppScript();
|
||||||
} else {
|
} else {
|
||||||
window.addEventListener('DOMContentLoaded', () => {
|
window.addEventListener("DOMContentLoaded", () => {
|
||||||
importAppScript();
|
importAppScript();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Theme
|
//#region Theme
|
||||||
const theme = localStorage.getItem('theme');
|
const theme = localStorage.getItem("theme");
|
||||||
if (theme) {
|
if (theme) {
|
||||||
for (const [k, v] of Object.entries(JSON.parse(theme))) {
|
for (const [k, v] of Object.entries(JSON.parse(theme))) {
|
||||||
document.documentElement.style.setProperty(`--${k}`, v.toString());
|
document.documentElement.style.setProperty(`--${k}`, v.toString());
|
||||||
|
|
||||||
// HTMLの theme-color 適用
|
// HTMLの theme-color 適用
|
||||||
if (k === 'htmlThemeColor') {
|
if (k === "htmlThemeColor") {
|
||||||
for (const tag of document.head.children) {
|
for (const tag of document.head.children) {
|
||||||
if (tag.tagName === 'META' && tag.getAttribute('name') === 'theme-color') {
|
if (
|
||||||
tag.setAttribute('content', v);
|
tag.tagName === "META" &&
|
||||||
|
tag.getAttribute("name") === "theme-color"
|
||||||
|
) {
|
||||||
|
tag.setAttribute("content", v);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const colorSchema = localStorage.getItem('colorSchema');
|
const colorSchema = localStorage.getItem("colorSchema");
|
||||||
if (colorSchema) {
|
if (colorSchema) {
|
||||||
document.documentElement.style.setProperty('color-schema', colorSchema);
|
document.documentElement.style.setProperty("color-schema", colorSchema);
|
||||||
}
|
}
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
const fontSize = localStorage.getItem('fontSize');
|
const fontSize = localStorage.getItem("fontSize");
|
||||||
if (fontSize) {
|
if (fontSize) {
|
||||||
document.documentElement.classList.add('f-' + fontSize);
|
document.documentElement.classList.add("f-" + fontSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
const useSystemFont = localStorage.getItem('useSystemFont');
|
const useSystemFont = localStorage.getItem("useSystemFont");
|
||||||
if (useSystemFont) {
|
if (useSystemFont) {
|
||||||
document.documentElement.classList.add('useSystemFont');
|
document.documentElement.classList.add("useSystemFont");
|
||||||
}
|
}
|
||||||
|
|
||||||
const wallpaper = localStorage.getItem('wallpaper');
|
const wallpaper = localStorage.getItem("wallpaper");
|
||||||
if (wallpaper) {
|
if (wallpaper) {
|
||||||
document.documentElement.style.backgroundImage = `url(${wallpaper})`;
|
document.documentElement.style.backgroundImage = `url(${wallpaper})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const customCss = localStorage.getItem('customCss');
|
const customCss = localStorage.getItem("customCss");
|
||||||
if (customCss && customCss.length > 0) {
|
if (customCss && customCss.length > 0) {
|
||||||
const style = document.createElement('style');
|
const style = document.createElement("style");
|
||||||
style.innerHTML = customCss;
|
style.innerHTML = customCss;
|
||||||
document.head.appendChild(style);
|
document.head.appendChild(style);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function addStyle(styleText) {
|
async function addStyle(styleText) {
|
||||||
let css = document.createElement('style');
|
let css = document.createElement("style");
|
||||||
css.appendChild(document.createTextNode(styleText));
|
css.appendChild(document.createTextNode(styleText));
|
||||||
document.head.appendChild(css);
|
document.head.appendChild(css);
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderError(code, details) {
|
function renderError(code, details) {
|
||||||
let errorsElement = document.getElementById('errors');
|
let errorsElement = document.getElementById("errors");
|
||||||
|
|
||||||
if (!errorsElement) {
|
if (!errorsElement) {
|
||||||
document.body.innerHTML = `
|
document.body.innerHTML = `
|
||||||
|
@ -158,9 +160,9 @@
|
||||||
<br>
|
<br>
|
||||||
<div id="errors"></div>
|
<div id="errors"></div>
|
||||||
`;
|
`;
|
||||||
errorsElement = document.getElementById('errors');
|
errorsElement = document.getElementById("errors");
|
||||||
}
|
}
|
||||||
const detailsElement = document.createElement('details');
|
const detailsElement = document.createElement("details");
|
||||||
detailsElement.innerHTML = `
|
detailsElement.innerHTML = `
|
||||||
<br>
|
<br>
|
||||||
<summary>
|
<summary>
|
||||||
|
@ -278,25 +280,25 @@
|
||||||
details {
|
details {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
`)
|
`);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function checkUpdate() {
|
async function checkUpdate() {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/api/meta', {
|
const res = await fetch("/api/meta", {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
cache: 'no-cache'
|
cache: "no-cache",
|
||||||
});
|
});
|
||||||
|
|
||||||
const meta = await res.json();
|
const meta = await res.json();
|
||||||
|
|
||||||
if (meta.version != v) {
|
if (meta.version != v) {
|
||||||
localStorage.setItem('v', meta.version);
|
localStorage.setItem("v", meta.version);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
renderError('UPDATE_CHECK', e);
|
renderError("UPDATE_CHECK", e);
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -304,9 +306,9 @@
|
||||||
function refresh() {
|
function refresh() {
|
||||||
// Clear cache (service worker)
|
// Clear cache (service worker)
|
||||||
try {
|
try {
|
||||||
navigator.serviceWorker.controller.postMessage('clear');
|
navigator.serviceWorker.controller.postMessage("clear");
|
||||||
navigator.serviceWorker.getRegistrations().then(registrations => {
|
navigator.serviceWorker.getRegistrations().then((registrations) => {
|
||||||
registrations.forEach(registration => registration.unregister());
|
registrations.forEach((registration) => registration.unregister());
|
||||||
});
|
});
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
"use strict";
|
||||||
|
|
||||||
window.onload = async () => {
|
window.onload = async () => {
|
||||||
const account = JSON.parse(localStorage.getItem('account'));
|
const account = JSON.parse(localStorage.getItem("account"));
|
||||||
const i = account.token;
|
const i = account.token;
|
||||||
|
|
||||||
const api = (endpoint, data = {}) => {
|
const api = (endpoint, data = {}) => {
|
||||||
|
@ -10,12 +10,13 @@ window.onload = async () => {
|
||||||
if (i) data.i = i;
|
if (i) data.i = i;
|
||||||
|
|
||||||
// Send request
|
// Send request
|
||||||
fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
|
fetch(endpoint.indexOf("://") > -1 ? endpoint : `/api/${endpoint}`, {
|
||||||
method: 'POST',
|
method: "POST",
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
credentials: 'omit',
|
credentials: "omit",
|
||||||
cache: 'no-cache'
|
cache: "no-cache",
|
||||||
}).then(async (res) => {
|
})
|
||||||
|
.then(async (res) => {
|
||||||
const body = res.status === 204 ? null : await res.json();
|
const body = res.status === 204 ? null : await res.json();
|
||||||
|
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
|
@ -25,27 +26,28 @@ window.onload = async () => {
|
||||||
} else {
|
} else {
|
||||||
reject(body.error);
|
reject(body.error);
|
||||||
}
|
}
|
||||||
}).catch(reject);
|
})
|
||||||
|
.catch(reject);
|
||||||
});
|
});
|
||||||
|
|
||||||
return promise;
|
return promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
document.getElementById('submit').addEventListener('click', () => {
|
document.getElementById("submit").addEventListener("click", () => {
|
||||||
api('notes/create', {
|
api("notes/create", {
|
||||||
text: document.getElementById('text').value
|
text: document.getElementById("text").value,
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
location.reload();
|
location.reload();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
api('notes/timeline').then(notes => {
|
api("notes/timeline").then((notes) => {
|
||||||
const tl = document.getElementById('tl');
|
const tl = document.getElementById("tl");
|
||||||
for (const note of notes) {
|
for (const note of notes) {
|
||||||
const el = document.createElement('div');
|
const el = document.createElement("div");
|
||||||
const name = document.createElement('header');
|
const name = document.createElement("header");
|
||||||
name.textContent = `${note.user.name} @${note.user.username}`;
|
name.textContent = `${note.user.name} @${note.user.username}`;
|
||||||
const text = document.createElement('div');
|
const text = document.createElement("div");
|
||||||
text.textContent = `${note.text}`;
|
text.textContent = `${note.text}`;
|
||||||
el.appendChild(name);
|
el.appendChild(name);
|
||||||
el.appendChild(text);
|
el.appendChild(text);
|
||||||
|
|
|
@ -6,13 +6,9 @@
|
||||||
"build": "pnpm vite build",
|
"build": "pnpm vite build",
|
||||||
"lint": "pnpm rome check \"src/**/*.{ts,vue}\""
|
"lint": "pnpm rome check \"src/**/*.{ts,vue}\""
|
||||||
},
|
},
|
||||||
"dependencies": {
|
|
||||||
"@khmyznikov/pwa-install": "^0.2.0",
|
|
||||||
"chartjs-chart-matrix": "^2.0.1",
|
|
||||||
"gsap": "^3.11.4"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@discordapp/twemoji": "14.0.2",
|
"@discordapp/twemoji": "14.0.2",
|
||||||
|
"@khmyznikov/pwa-install": "^0.2.0",
|
||||||
"@rollup/plugin-alias": "3.1.9",
|
"@rollup/plugin-alias": "3.1.9",
|
||||||
"@rollup/plugin-json": "4.1.0",
|
"@rollup/plugin-json": "4.1.0",
|
||||||
"@rollup/pluginutils": "^4.2.1",
|
"@rollup/pluginutils": "^4.2.1",
|
||||||
|
@ -40,6 +36,8 @@
|
||||||
"chartjs-adapter-date-fns": "2.0.1",
|
"chartjs-adapter-date-fns": "2.0.1",
|
||||||
"chartjs-plugin-gradient": "0.5.1",
|
"chartjs-plugin-gradient": "0.5.1",
|
||||||
"chartjs-plugin-zoom": "1.2.1",
|
"chartjs-plugin-zoom": "1.2.1",
|
||||||
|
"chartjs-chart-matrix": "^2.0.1",
|
||||||
|
"city-timezones": "^1.2.1",
|
||||||
"compare-versions": "5.0.3",
|
"compare-versions": "5.0.3",
|
||||||
"cropperjs": "2.0.0-beta.2",
|
"cropperjs": "2.0.0-beta.2",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
|
@ -47,6 +45,7 @@
|
||||||
"date-fns": "2.29.3",
|
"date-fns": "2.29.3",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"eventemitter3": "4.0.7",
|
"eventemitter3": "4.0.7",
|
||||||
|
"gsap": "^3.11.4",
|
||||||
"idb-keyval": "6.2.0",
|
"idb-keyval": "6.2.0",
|
||||||
"insert-text-at-cursor": "0.3.0",
|
"insert-text-at-cursor": "0.3.0",
|
||||||
"json5": "2.2.3",
|
"json5": "2.2.3",
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
<FormInput v-model="profile.location" manual-save class="_formBlock">
|
<FormInput v-model="profile.location" manual-save class="_formBlock">
|
||||||
<template #label>{{ i18n.ts.location }}</template>
|
<template #label>{{ i18n.ts.location }}</template>
|
||||||
<template #prefix><i class="ph-map-pin-bold ph-lg"></i></template>
|
<template #prefix><i class="ph-map-pin-bold ph-lg"></i></template>
|
||||||
|
<template #caption>{{ i18n.ts._profile.locationDescription }}</template>
|
||||||
</FormInput>
|
</FormInput>
|
||||||
|
|
||||||
<FormInput v-model="profile.birthday" type="date" manual-save class="_formBlock">
|
<FormInput v-model="profile.birthday" type="date" manual-save class="_formBlock">
|
||||||
|
@ -76,7 +77,6 @@ import FormSelect from '@/components/form/select.vue';
|
||||||
import FormSplit from '@/components/form/split.vue';
|
import FormSplit from '@/components/form/split.vue';
|
||||||
import FormFolder from '@/components/form/folder.vue';
|
import FormFolder from '@/components/form/folder.vue';
|
||||||
import FormSlot from '@/components/form/slot.vue';
|
import FormSlot from '@/components/form/slot.vue';
|
||||||
import { host } from '@/config';
|
|
||||||
import { selectFile } from '@/scripts/select-file';
|
import { selectFile } from '@/scripts/select-file';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
<div class="fields system">
|
<div class="fields system">
|
||||||
<dl v-if="user.location" class="field">
|
<dl v-if="user.location" class="field">
|
||||||
<dt class="name"><i class="ph-map-pin-bold ph-lg ph-fw ph-lg"></i> {{ i18n.ts.location }}</dt>
|
<dt class="name"><i class="ph-map-pin-bold ph-lg ph-fw ph-lg"></i> {{ i18n.ts.location }}</dt>
|
||||||
<dd class="value">{{ user.location }}</dd>
|
<dd class="value">{{ user.location }}{{ timeForThem }}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<dl v-if="user.birthday" class="field">
|
<dl v-if="user.birthday" class="field">
|
||||||
<dt class="name"><i class="ph-cake-bold ph-lg ph-fw ph-lg"></i> {{ i18n.ts.birthday }}</dt>
|
<dt class="name"><i class="ph-cake-bold ph-lg ph-fw ph-lg"></i> {{ i18n.ts.birthday }}</dt>
|
||||||
|
@ -117,27 +117,24 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineAsyncComponent, computed, inject, onMounted, onUnmounted, watch } from 'vue';
|
import { defineAsyncComponent, onMounted, onUnmounted } from 'vue';
|
||||||
import calcAge from 's-age';
|
import calcAge from 's-age';
|
||||||
|
import cityTimezones from 'city-timezones';
|
||||||
import XUserTimeline from './index.timeline.vue';
|
import XUserTimeline from './index.timeline.vue';
|
||||||
import type * as misskey from 'calckey-js';
|
import type * as misskey from 'calckey-js';
|
||||||
import XNote from '@/components/MkNote.vue';
|
import XNote from '@/components/MkNote.vue';
|
||||||
import MkFollowButton from '@/components/MkFollowButton.vue';
|
import MkFollowButton from '@/components/MkFollowButton.vue';
|
||||||
import MkContainer from '@/components/MkContainer.vue';
|
|
||||||
import MkFolder from '@/components/MkFolder.vue';
|
|
||||||
import MkRemoteCaution from '@/components/MkRemoteCaution.vue';
|
import MkRemoteCaution from '@/components/MkRemoteCaution.vue';
|
||||||
import MkTab from '@/components/MkTab.vue';
|
|
||||||
import MkInfo from '@/components/MkInfo.vue';
|
import MkInfo from '@/components/MkInfo.vue';
|
||||||
import MkMoved from '@/components/MkMoved.vue';
|
import MkMoved from '@/components/MkMoved.vue';
|
||||||
import { getScrollPosition } from '@/scripts/scroll';
|
import { getScrollPosition } from '@/scripts/scroll';
|
||||||
import { getUserMenu } from '@/scripts/get-user-menu';
|
import { getUserMenu } from '@/scripts/get-user-menu';
|
||||||
import number from '@/filters/number';
|
import number from '@/filters/number';
|
||||||
import { userPage, acct as getAcct } from '@/filters/user';
|
import { userPage } from '@/filters/user';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
import { useRouter } from '@/router';
|
import { useRouter } from '@/router';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
import { $i } from '@/account';
|
import { $i } from '@/account';
|
||||||
import { host } from '@/config';
|
|
||||||
|
|
||||||
const XPhotos = defineAsyncComponent(() => import('./index.photos.vue'));
|
const XPhotos = defineAsyncComponent(() => import('./index.photos.vue'));
|
||||||
const XActivity = defineAsyncComponent(() => import('./index.activity.vue'));
|
const XActivity = defineAsyncComponent(() => import('./index.activity.vue'));
|
||||||
|
@ -166,6 +163,14 @@ const age = $computed(() => {
|
||||||
return calcAge(props.user.birthday);
|
return calcAge(props.user.birthday);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const timeForThem = $computed(() => {
|
||||||
|
const tzInfo = cityTimezones.lookupViaCity(props.user.location!);
|
||||||
|
if (tzInfo.length == 0) return "";
|
||||||
|
const theirTz = tzInfo[0].timezone;
|
||||||
|
const theirTime = new Date().toLocaleString("en-US", { timeZone: theirTz, hour12: true })
|
||||||
|
return ` (${theirTime.split(",")[1].trim().split(":")[0]} ${theirTime.split(" ")[1].slice(-2)})`
|
||||||
|
})
|
||||||
|
|
||||||
function menu(ev) {
|
function menu(ev) {
|
||||||
os.popupMenu(getUserMenu(props.user, router), ev.currentTarget ?? ev.target);
|
os.popupMenu(getUserMenu(props.user, router), ev.currentTarget ?? ev.target);
|
||||||
}
|
}
|
||||||
|
|
|
@ -420,6 +420,7 @@ importers:
|
||||||
chartjs-chart-matrix: ^2.0.1
|
chartjs-chart-matrix: ^2.0.1
|
||||||
chartjs-plugin-gradient: 0.5.1
|
chartjs-plugin-gradient: 0.5.1
|
||||||
chartjs-plugin-zoom: 1.2.1
|
chartjs-plugin-zoom: 1.2.1
|
||||||
|
city-timezones: ^1.2.1
|
||||||
compare-versions: 5.0.3
|
compare-versions: 5.0.3
|
||||||
cropperjs: 2.0.0-beta.2
|
cropperjs: 2.0.0-beta.2
|
||||||
cross-env: 7.0.3
|
cross-env: 7.0.3
|
||||||
|
@ -464,12 +465,9 @@ importers:
|
||||||
vue-plyr: ^7.0.0
|
vue-plyr: ^7.0.0
|
||||||
vue-prism-editor: 2.0.0-alpha.2
|
vue-prism-editor: 2.0.0-alpha.2
|
||||||
vuedraggable: 4.1.0
|
vuedraggable: 4.1.0
|
||||||
dependencies:
|
|
||||||
'@khmyznikov/pwa-install': 0.2.0
|
|
||||||
chartjs-chart-matrix: 2.0.1_chart.js@4.1.1
|
|
||||||
gsap: 3.11.4
|
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@discordapp/twemoji': 14.0.2
|
'@discordapp/twemoji': 14.0.2
|
||||||
|
'@khmyznikov/pwa-install': 0.2.0
|
||||||
'@rollup/plugin-alias': 3.1.9_rollup@3.9.1
|
'@rollup/plugin-alias': 3.1.9_rollup@3.9.1
|
||||||
'@rollup/plugin-json': 4.1.0_rollup@3.9.1
|
'@rollup/plugin-json': 4.1.0_rollup@3.9.1
|
||||||
'@rollup/pluginutils': 4.2.1
|
'@rollup/pluginutils': 4.2.1
|
||||||
|
@ -495,8 +493,10 @@ importers:
|
||||||
calckey-js: 0.0.22
|
calckey-js: 0.0.22
|
||||||
chart.js: 4.1.1
|
chart.js: 4.1.1
|
||||||
chartjs-adapter-date-fns: 2.0.1_chart.js@4.1.1
|
chartjs-adapter-date-fns: 2.0.1_chart.js@4.1.1
|
||||||
|
chartjs-chart-matrix: 2.0.1_chart.js@4.1.1
|
||||||
chartjs-plugin-gradient: 0.5.1_chart.js@4.1.1
|
chartjs-plugin-gradient: 0.5.1_chart.js@4.1.1
|
||||||
chartjs-plugin-zoom: 1.2.1_chart.js@4.1.1
|
chartjs-plugin-zoom: 1.2.1_chart.js@4.1.1
|
||||||
|
city-timezones: 1.2.1
|
||||||
compare-versions: 5.0.3
|
compare-versions: 5.0.3
|
||||||
cropperjs: 2.0.0-beta.2
|
cropperjs: 2.0.0-beta.2
|
||||||
cross-env: 7.0.3
|
cross-env: 7.0.3
|
||||||
|
@ -504,6 +504,7 @@ importers:
|
||||||
date-fns: 2.29.3
|
date-fns: 2.29.3
|
||||||
escape-regexp: 0.0.1
|
escape-regexp: 0.0.1
|
||||||
eventemitter3: 4.0.7
|
eventemitter3: 4.0.7
|
||||||
|
gsap: 3.11.4
|
||||||
idb-keyval: 6.2.0
|
idb-keyval: 6.2.0
|
||||||
insert-text-at-cursor: 0.3.0
|
insert-text-at-cursor: 0.3.0
|
||||||
json5: 2.2.3
|
json5: 2.2.3
|
||||||
|
@ -1237,7 +1238,7 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@lit/localize': 0.11.4
|
'@lit/localize': 0.11.4
|
||||||
lit: 2.6.1
|
lit: 2.6.1
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/@koa/cors/3.4.3:
|
/@koa/cors/3.4.3:
|
||||||
resolution: {integrity: sha512-WPXQUaAeAMVaLTEFpoq3T2O1C+FstkjJnDQqy95Ck1UdILajsRhu6mhJ8H2f4NFPRBoCNN+qywTJfq/gGki5mw==}
|
resolution: {integrity: sha512-WPXQUaAeAMVaLTEFpoq3T2O1C+FstkjJnDQqy95Ck1UdILajsRhu6mhJ8H2f4NFPRBoCNN+qywTJfq/gGki5mw==}
|
||||||
|
@ -1270,23 +1271,24 @@ packages:
|
||||||
|
|
||||||
/@kurkle/color/0.3.2:
|
/@kurkle/color/0.3.2:
|
||||||
resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==}
|
resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@lit-labs/ssr-dom-shim/1.0.0:
|
/@lit-labs/ssr-dom-shim/1.0.0:
|
||||||
resolution: {integrity: sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw==}
|
resolution: {integrity: sha512-ic93MBXfApIFTrup4a70M/+ddD8xdt2zxxj9sRwHQzhS9ag/syqkD8JPdTXsc1gUy2K8TTirhlCqyTEM/sifNw==}
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/@lit/localize/0.11.4:
|
/@lit/localize/0.11.4:
|
||||||
resolution: {integrity: sha512-RRIwIX2tAm3+DuEndoXSJrFjGrAK5cb5IXo5K6jcJ6sbgD829B8rSqHC5MaKVUmXTVLIR1bk5IZOZDf9wFereA==}
|
resolution: {integrity: sha512-RRIwIX2tAm3+DuEndoXSJrFjGrAK5cb5IXo5K6jcJ6sbgD829B8rSqHC5MaKVUmXTVLIR1bk5IZOZDf9wFereA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@lit/reactive-element': 1.6.1
|
'@lit/reactive-element': 1.6.1
|
||||||
lit: 2.6.1
|
lit: 2.6.1
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/@lit/reactive-element/1.6.1:
|
/@lit/reactive-element/1.6.1:
|
||||||
resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==}
|
resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@lit-labs/ssr-dom-shim': 1.0.0
|
'@lit-labs/ssr-dom-shim': 1.0.0
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/@mapbox/node-pre-gyp/1.0.9:
|
/@mapbox/node-pre-gyp/1.0.9:
|
||||||
resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==}
|
resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==}
|
||||||
|
@ -2540,7 +2542,7 @@ packages:
|
||||||
|
|
||||||
/@types/trusted-types/2.0.2:
|
/@types/trusted-types/2.0.2:
|
||||||
resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==}
|
resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==}
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/@types/undertaker-registry/1.0.1:
|
/@types/undertaker-registry/1.0.1:
|
||||||
resolution: {integrity: sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==}
|
resolution: {integrity: sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==}
|
||||||
|
@ -3390,7 +3392,7 @@ packages:
|
||||||
/axios/0.25.0_debug@4.3.4:
|
/axios/0.25.0_debug@4.3.4:
|
||||||
resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
|
resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==}
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.2_debug@4.3.4
|
follow-redirects: 1.15.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- debug
|
- debug
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -4010,6 +4012,7 @@ packages:
|
||||||
engines: {pnpm: ^7.0.0}
|
engines: {pnpm: ^7.0.0}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@kurkle/color': 0.3.2
|
'@kurkle/color': 0.3.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/chartjs-adapter-date-fns/2.0.1_chart.js@4.1.1:
|
/chartjs-adapter-date-fns/2.0.1_chart.js@4.1.1:
|
||||||
resolution: {integrity: sha512-v3WV9rdnQ05ce3A0ZCjzUekJCAbfm6+3HqSoeY2BIkdMYZoYr/4T+ril1tZyDl869lz6xdNVMXejUFT9YKpw4A==}
|
resolution: {integrity: sha512-v3WV9rdnQ05ce3A0ZCjzUekJCAbfm6+3HqSoeY2BIkdMYZoYr/4T+ril1tZyDl869lz6xdNVMXejUFT9YKpw4A==}
|
||||||
|
@ -4025,7 +4028,7 @@ packages:
|
||||||
chart.js: '>=3.0.0'
|
chart.js: '>=3.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
chart.js: 4.1.1
|
chart.js: 4.1.1
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/chartjs-plugin-gradient/0.5.1_chart.js@4.1.1:
|
/chartjs-plugin-gradient/0.5.1_chart.js@4.1.1:
|
||||||
resolution: {integrity: sha512-vhwlYGZWan4MGZZ4Wj64Y4aIql1uCPCU1JcggLWn3cgYEv4G7pXp1YgM4XH5ugmyn6BVCgQqAhiJ2h6hppzHmQ==}
|
resolution: {integrity: sha512-vhwlYGZWan4MGZZ4Wj64Y4aIql1uCPCU1JcggLWn3cgYEv4G7pXp1YgM4XH5ugmyn6BVCgQqAhiJ2h6hppzHmQ==}
|
||||||
|
@ -4104,6 +4107,12 @@ packages:
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/city-timezones/1.2.1:
|
||||||
|
resolution: {integrity: sha512-hruuB611QFoUFMsan7xd9B2VPMrA8XC716O/999WW34kmaJUT1hxKF2W8TSXAWkhSqgvbu70DjcDv7/wpM6vow==}
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
dev: true
|
||||||
|
|
||||||
/clap/1.2.3:
|
/clap/1.2.3:
|
||||||
resolution: {integrity: sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==}
|
resolution: {integrity: sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
@ -6382,19 +6391,6 @@ packages:
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
debug:
|
debug:
|
||||||
optional: true
|
optional: true
|
||||||
dev: false
|
|
||||||
|
|
||||||
/follow-redirects/1.15.2_debug@4.3.4:
|
|
||||||
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
|
|
||||||
engines: {node: '>=4.0'}
|
|
||||||
peerDependencies:
|
|
||||||
debug: '*'
|
|
||||||
peerDependenciesMeta:
|
|
||||||
debug:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
debug: 4.3.4
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/for-each/0.3.3:
|
/for-each/0.3.3:
|
||||||
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
|
||||||
|
@ -6918,7 +6914,7 @@ packages:
|
||||||
|
|
||||||
/gsap/3.11.4:
|
/gsap/3.11.4:
|
||||||
resolution: {integrity: sha512-McHhEguHyExMMnjqKA8G+7TvxmlKQGMbjgwAilnFe1e4id7V/tFveRQ2YMZhTYu0oxHGWvbPltdVYQOu3z1SCA==}
|
resolution: {integrity: sha512-McHhEguHyExMMnjqKA8G+7TvxmlKQGMbjgwAilnFe1e4id7V/tFveRQ2YMZhTYu0oxHGWvbPltdVYQOu3z1SCA==}
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/gulp-cli/2.3.0:
|
/gulp-cli/2.3.0:
|
||||||
resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==}
|
resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==}
|
||||||
|
@ -8596,13 +8592,13 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@lit/reactive-element': 1.6.1
|
'@lit/reactive-element': 1.6.1
|
||||||
lit-html: 2.6.1
|
lit-html: 2.6.1
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/lit-html/2.6.1:
|
/lit-html/2.6.1:
|
||||||
resolution: {integrity: sha512-Z3iw+E+3KKFn9t2YKNjsXNEu/LRLI98mtH/C6lnFg7kvaqPIzPn124Yd4eT/43lyqrejpc5Wb6BHq3fdv4S8Rw==}
|
resolution: {integrity: sha512-Z3iw+E+3KKFn9t2YKNjsXNEu/LRLI98mtH/C6lnFg7kvaqPIzPn124Yd4eT/43lyqrejpc5Wb6BHq3fdv4S8Rw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/trusted-types': 2.0.2
|
'@types/trusted-types': 2.0.2
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/lit/2.6.1:
|
/lit/2.6.1:
|
||||||
resolution: {integrity: sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw==}
|
resolution: {integrity: sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw==}
|
||||||
|
@ -8610,7 +8606,7 @@ packages:
|
||||||
'@lit/reactive-element': 1.6.1
|
'@lit/reactive-element': 1.6.1
|
||||||
lit-element: 3.2.2
|
lit-element: 3.2.2
|
||||||
lit-html: 2.6.1
|
lit-html: 2.6.1
|
||||||
dev: false
|
dev: true
|
||||||
|
|
||||||
/load-json-file/1.1.0:
|
/load-json-file/1.1.0:
|
||||||
resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
|
resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
|
||||||
|
|
Loading…
Reference in a new issue