Compare commits
3 commits
93cfb10787
...
5aaaf56380
Author | SHA1 | Date | |
---|---|---|---|
|
5aaaf56380 | ||
|
10d25445c5 | ||
|
f3221321d8 |
9 changed files with 197 additions and 127 deletions
|
@ -7,6 +7,7 @@
|
|||
"dev": "rollup -c -w"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@material-design-icons/font": "^0.12.1",
|
||||
"@rollup/plugin-commonjs": "^22.0.2",
|
||||
"@rollup/plugin-node-resolve": "^13.3.0",
|
||||
"rollup": "^2.78.1",
|
||||
|
@ -15,7 +16,6 @@
|
|||
"rollup-plugin-livereload": "^2.0.5",
|
||||
"rollup-plugin-svelte": "^7.1.0",
|
||||
"rollup-plugin-terser": "^7.0.2",
|
||||
"svelte": "^3.49.0",
|
||||
"@material-design-icons/font": "^0.12.1"
|
||||
"svelte": "^3.49.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
--radius-unit: 0.5em;
|
||||
--radius-xxs: calc(0.25 * var(--radius-unit));
|
||||
--radius-xs: calc(0.5 * var(--radius-unit));
|
||||
--radius-xsplus: calc(0.65 * var(--radius-unit));
|
||||
--radius-sm: calc(0.75 * var(--radius-unit));
|
||||
--radius-norm: var(--radius-unit);
|
||||
--radius-md: calc(1.25 * var(--radius-unit));
|
||||
|
@ -154,7 +155,7 @@ body {
|
|||
.modal {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: var(--background-color-2);
|
||||
background-color: var(--background-color-1);
|
||||
border-radius: var(--radius-lg);
|
||||
padding: var(--space-md);
|
||||
}
|
||||
|
@ -196,7 +197,7 @@ body {
|
|||
}
|
||||
|
||||
.input {
|
||||
background-color : var(--background-color-3);
|
||||
background-color : var(--background-color-2);
|
||||
border: none;
|
||||
color: currentColor;
|
||||
border-radius: var(--radius-md);
|
||||
|
@ -206,24 +207,28 @@ body {
|
|||
}
|
||||
|
||||
.input::placeholder {
|
||||
color: var(--foreground-color-3);
|
||||
color: var(--foreground-color-2);
|
||||
}
|
||||
|
||||
/* button */
|
||||
|
||||
.button {
|
||||
color: var(--foreground-color-1);
|
||||
background-color: var(--background-color-2);
|
||||
background: none;
|
||||
text-align: center;
|
||||
border: none;
|
||||
padding: var(--space-sm);
|
||||
border-radius: var(--radius-md);
|
||||
padding: var(--space-xsplus);
|
||||
border-radius: var(--radius-xl);
|
||||
font: inherit;
|
||||
max-height: 3em;
|
||||
|
||||
/* TODO: inefficient */
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
background-color: var(--background-color-3);
|
||||
background-color: var(--background-color-2);
|
||||
}
|
||||
|
||||
.button-accent {
|
||||
|
|
|
@ -163,6 +163,7 @@
|
|||
padding: 12px;
|
||||
aspect-ratio: 1;
|
||||
flex-shrink: 0;
|
||||
color: var(--colored-element-text-color);
|
||||
}
|
||||
|
||||
.invisible {
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
<script>
|
||||
import { afterUpdate } from "svelte";
|
||||
import { getItem } from "../storage.js";
|
||||
import logger from "../logging.js";
|
||||
import { messagesStoreProvider, smallViewport } from "../stores.js";
|
||||
import Message from "./Message.svelte";
|
||||
|
||||
const messagesLog = logger("Messages");
|
||||
|
||||
export let channelId;
|
||||
let scrollTarget;
|
||||
let scrollAnchor;
|
||||
|
@ -14,17 +16,22 @@
|
|||
$: messages = messagesStoreProvider.getStore(channelId);
|
||||
|
||||
afterUpdate(() => {
|
||||
// hacky way to preserve scroll position when messages are pushed back
|
||||
if (lastScrollHeight) {
|
||||
scrollTarget.scrollTop = scrollTarget.scrollHeight - lastScrollHeight;
|
||||
lastScrollHeight = null;
|
||||
return;
|
||||
}
|
||||
if (shouldAutoscroll && scrollAnchor) {
|
||||
queueMicrotask(() => {
|
||||
messagesLog("[afterUpdate] reached, creating microtask...");
|
||||
queueMicrotask(() => {
|
||||
messagesLog("[afterUpdate] reached microtask");
|
||||
|
||||
// hacky way to preserve scroll position when messages are pushed back
|
||||
if (lastScrollHeight) {
|
||||
messagesLog("[afterUpdate] restoring scroll height...");
|
||||
scrollTarget.scrollTop = scrollTarget.scrollHeight - lastScrollHeight;
|
||||
lastScrollHeight = null;
|
||||
return;
|
||||
}
|
||||
if (shouldAutoscroll && scrollAnchor) {
|
||||
messagesLog("[afterUpdate] performing autoscroll...");
|
||||
scrollAnchor.scrollIntoView(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const onScroll = (e) => {
|
||||
|
@ -33,10 +40,13 @@
|
|||
messages.setIsCollectingOldMessages(true);
|
||||
shouldAutoscroll = true;
|
||||
isScrolledToBottom = true;
|
||||
messagesLog("[onScroll] user is scrolled to bottom, enabling autoscroll...");
|
||||
} else {
|
||||
shouldAutoscroll = false;
|
||||
isScrolledToBottom = false;
|
||||
messagesLog("[onScroll] user is no longer scrolled to bottom, disabling autoscroll...");
|
||||
if (scrollTop === 0) {
|
||||
messagesLog("[onScroll] user scrolled to top, loading older messages...");
|
||||
// load older messages if the user scrolls to the top.
|
||||
// save the current scroll height if the server returned any messages,
|
||||
// before commiting them to the store. this is to provide the jank scroll height
|
||||
|
@ -55,8 +65,10 @@
|
|||
// showSidebar is false on small viewports
|
||||
// scrolling to bottom when the virtual keyboard pops up does not work on chromium purely based on isScrolledToBottom for some reason
|
||||
if (isScrolledToBottom || $smallViewport) {
|
||||
messagesLog("[windowDidResize] window resized, queueing microtask to scroll to bottom...");
|
||||
queueMicrotask(() => {
|
||||
scrollAnchor.scrollIntoView(false);
|
||||
messagesLog("[windowDidResize] scroll to bottom microtask finished.");
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
@ -66,16 +66,10 @@
|
|||
align-items: center;
|
||||
justify-content: left;
|
||||
padding: var(--space-md);
|
||||
border-radius: var(--radius-norm);
|
||||
background-color: var(--background-color-1);
|
||||
}
|
||||
|
||||
.selection-option {
|
||||
background-color: var(--background-color-1);
|
||||
}
|
||||
|
||||
.selection-option.selected, .selection-option:hover {
|
||||
background-color: var(--background-color-3);
|
||||
.selection-option.selected {
|
||||
background-color: var(--background-color-2);
|
||||
}
|
||||
|
||||
.horizontal-selections {
|
||||
|
|
|
@ -18,12 +18,11 @@
|
|||
transform: translate(-50%, -50%);
|
||||
padding: var(--space-sm);
|
||||
border-radius: var(--radius-md);
|
||||
box-shadow: 0px 4px 16px rgba(17,17,26,0.2), 0px 8px 32px rgba(17,17,26,0.2);
|
||||
}
|
||||
</style>
|
||||
|
||||
{#key message}
|
||||
<div class="toast" transition:maybeModalFly>
|
||||
<span>{ message }</span>
|
||||
<button class="icon-button icon-button-auto material-icons-outlined" on:click="{ close }">close</button>
|
||||
</div>
|
||||
{/key}
|
||||
<div class="toast" transition:maybeModalFly>
|
||||
<span>{ message }</span>
|
||||
<button class="icon-button icon-button-auto material-icons-outlined" on:click="{ close }">close</button>
|
||||
</div>
|
||||
|
|
|
@ -7,6 +7,7 @@ const defaults = {
|
|||
"state:openChannelId": -1,
|
||||
"log:Gateway": false,
|
||||
"log:Store": false,
|
||||
"log:Messages": false,
|
||||
"ui:stateful:presistSelectedChannel": true,
|
||||
"ui:showSidebarToggle": false,
|
||||
"ui:alwaysUseMobileChatBar": false,
|
||||
|
|
|
@ -5,28 +5,35 @@ import { apiRoute, getItem, setItem } from "./storage";
|
|||
|
||||
const storeLog = logger("Store");
|
||||
|
||||
let storeCallbackQueue = [];
|
||||
|
||||
class Store {
|
||||
constructor(value=null, name="[no name]") {
|
||||
this._handlers = [];
|
||||
this._handlers = new Set();
|
||||
this.value = value;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// like subscribe, but without initially calling the handler
|
||||
watch(handler) {
|
||||
const handlerIndex = this._handlers.push(handler) - 1;
|
||||
storeLog(`[Watch] (${this.name})`, "handler:", handler);
|
||||
|
||||
this._handlers.add(handler);
|
||||
|
||||
return () => {
|
||||
this._handlers.splice(handlerIndex, 1);
|
||||
storeLog(`[Unsubscribe] (${this.name})`);
|
||||
this._handlers.delete(handler);
|
||||
};
|
||||
}
|
||||
|
||||
subscribe(handler) {
|
||||
this._handlers.push(handler);
|
||||
storeLog(`(${this.name}) (subscribe/initial)`, this.value);
|
||||
storeLog(`[Subscribe] (${this.name})`, "handler:", handler, "value:", this.value);
|
||||
|
||||
this._handlers.add(handler);
|
||||
handler(this.value);
|
||||
return () => {
|
||||
const index = this._handlers.indexOf(handler);
|
||||
this._handlers.splice(index, 1);
|
||||
storeLog(`[Unsubscribe] (${this.name})`);
|
||||
this._handlers.delete(handler);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -44,10 +51,34 @@ class Store {
|
|||
this.updated();
|
||||
}
|
||||
|
||||
flushCallbackQueue() {
|
||||
const queueCount = storeCallbackQueue.length;
|
||||
|
||||
storeLog(`[Flush] Flushing ${queueCount} callbacks from queue`, storeCallbackQueue);
|
||||
|
||||
const start = performance.now();
|
||||
for (let i = 0; i < storeCallbackQueue.length; i++) {
|
||||
storeCallbackQueue[i][0](storeCallbackQueue[i][1]);
|
||||
}
|
||||
storeCallbackQueue.length = 0;
|
||||
const delta = performance.now() - start;
|
||||
|
||||
storeLog(`[Flush] Flushed ${queueCount} callbacks from queue, took ${delta}ms`);
|
||||
}
|
||||
|
||||
updated() {
|
||||
storeLog(`(${this.name}) (updated) Calling all (${this._handlers.length}) handlers`, this.value);
|
||||
for (let i = this._handlers.length - 1; i >= 0; i--) {
|
||||
this._handlers[i](this.value);
|
||||
if (!this._handlers.size)
|
||||
return;
|
||||
|
||||
storeLog(`[Update] (${this.name}) Will queue ${this._handlers.size} handlers`, "value:", this.value, "handlers:", this._handlers);
|
||||
|
||||
const isRootNode = storeCallbackQueue.length === 0;
|
||||
|
||||
for (const handler of this._handlers) {
|
||||
storeCallbackQueue.push([handler, this.value]);
|
||||
}
|
||||
if (isRootNode) {
|
||||
this.flushCallbackQueue();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -510,14 +541,18 @@ class UnreadStore extends Store {
|
|||
});
|
||||
|
||||
selectedChannel.subscribe(({ id }) => {
|
||||
this.value.delete(id);
|
||||
this.updated();
|
||||
if (this.value.get(id)) {
|
||||
this.value.delete(id);
|
||||
this.updated();
|
||||
}
|
||||
});
|
||||
|
||||
window.document.addEventListener("visibilitychange", () => {
|
||||
if (window.document.visibilityState === "visible" && selectedChannel.value) {
|
||||
this.value.delete(selectedChannel.value.id);
|
||||
this.updated();
|
||||
if (this.value.get(selectedChannel.value.id)) {
|
||||
this.value.delete(selectedChannel.value.id);
|
||||
this.updated();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -3,26 +3,66 @@
|
|||
|
||||
|
||||
"@babel/code-frame@^7.10.4":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
|
||||
integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
|
||||
integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.16.7"
|
||||
"@babel/highlight" "^7.18.6"
|
||||
|
||||
"@babel/helper-validator-identifier@^7.16.7":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
|
||||
integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
|
||||
"@babel/helper-validator-identifier@^7.18.6":
|
||||
version "7.19.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
|
||||
integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
|
||||
|
||||
"@babel/highlight@^7.16.7":
|
||||
version "7.17.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
|
||||
integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
|
||||
"@babel/highlight@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
|
||||
integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.16.7"
|
||||
"@babel/helper-validator-identifier" "^7.18.6"
|
||||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.0":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
|
||||
integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
|
||||
dependencies:
|
||||
"@jridgewell/set-array" "^1.0.1"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
"@jridgewell/trace-mapping" "^0.3.9"
|
||||
|
||||
"@jridgewell/resolve-uri@^3.0.3":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
|
||||
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
|
||||
|
||||
"@jridgewell/set-array@^1.0.1":
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
|
||||
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
|
||||
|
||||
"@jridgewell/source-map@^0.3.2":
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb"
|
||||
integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==
|
||||
dependencies:
|
||||
"@jridgewell/gen-mapping" "^0.3.0"
|
||||
"@jridgewell/trace-mapping" "^0.3.9"
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.10":
|
||||
version "1.4.14"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
|
||||
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
||||
|
||||
"@jridgewell/trace-mapping@^0.3.9":
|
||||
version "0.3.15"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz#aba35c48a38d3fd84b37e66c9c0423f9744f9774"
|
||||
integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==
|
||||
dependencies:
|
||||
"@jridgewell/resolve-uri" "^3.0.3"
|
||||
"@jridgewell/sourcemap-codec" "^1.4.10"
|
||||
|
||||
"@material-design-icons/font@^0.12.1":
|
||||
version "0.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@material-design-icons/font/-/font-0.12.1.tgz#e294f8db3db698f9787a035394e5182fbf2125bf"
|
||||
|
@ -92,9 +132,9 @@
|
|||
picomatch "^2.2.2"
|
||||
|
||||
"@types/estree@*":
|
||||
version "0.0.51"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
|
||||
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
|
||||
integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
|
||||
|
||||
"@types/estree@0.0.39":
|
||||
version "0.0.39"
|
||||
|
@ -122,9 +162,9 @@
|
|||
integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
|
||||
|
||||
"@types/node@*":
|
||||
version "17.0.23"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
|
||||
integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
|
||||
version "18.7.18"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154"
|
||||
integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==
|
||||
|
||||
"@types/resolve@1.17.1":
|
||||
version "1.17.1"
|
||||
|
@ -134,9 +174,9 @@
|
|||
"@types/node" "*"
|
||||
|
||||
acorn@^8.5.0:
|
||||
version "8.7.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
|
||||
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
|
||||
version "8.8.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
|
||||
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
|
||||
|
||||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
|
@ -227,7 +267,7 @@ color-convert@^1.9.0:
|
|||
color-name@1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
|
||||
|
||||
colorette@^1.1.0:
|
||||
version "1.4.0"
|
||||
|
@ -242,12 +282,12 @@ commander@^2.20.0:
|
|||
commondir@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
|
||||
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||
|
||||
deepmerge@^4.2.2:
|
||||
version "4.2.2"
|
||||
|
@ -264,7 +304,7 @@ dir-glob@^3.0.1:
|
|||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
||||
|
||||
estree-walker@^0.6.1:
|
||||
version "0.6.1"
|
||||
|
@ -318,7 +358,7 @@ fs-extra@^8.1.0:
|
|||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||
|
||||
fsevents@~2.3.2:
|
||||
version "2.3.2"
|
||||
|
@ -337,7 +377,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
|
|||
dependencies:
|
||||
is-glob "^4.0.1"
|
||||
|
||||
glob@^7.1.3:
|
||||
glob@^7.1.3, glob@^7.1.6:
|
||||
version "7.2.3"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||
|
@ -349,18 +389,6 @@ glob@^7.1.3:
|
|||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
glob@^7.1.6:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
|
||||
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
globby@10.0.1:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22"
|
||||
|
@ -383,7 +411,7 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
|||
has-flag@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
||||
integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
|
||||
|
||||
has-flag@^4.0.0:
|
||||
version "4.0.0"
|
||||
|
@ -405,7 +433,7 @@ ignore@^5.1.1:
|
|||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
|
||||
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
@ -429,17 +457,17 @@ is-builtin-module@^3.1.0:
|
|||
dependencies:
|
||||
builtin-modules "^3.3.0"
|
||||
|
||||
is-core-module@^2.8.1:
|
||||
version "2.8.1"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
|
||||
integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==
|
||||
is-core-module@^2.9.0:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed"
|
||||
integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==
|
||||
dependencies:
|
||||
has "^1.0.3"
|
||||
|
||||
is-extglob@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
|
||||
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
||||
|
||||
is-glob@^4.0.1, is-glob@~4.0.1:
|
||||
version "4.0.3"
|
||||
|
@ -451,7 +479,7 @@ is-glob@^4.0.1, is-glob@~4.0.1:
|
|||
is-module@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
|
||||
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
|
||||
integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==
|
||||
|
||||
is-number@^7.0.0:
|
||||
version "7.0.0"
|
||||
|
@ -492,9 +520,9 @@ jsonfile@^4.0.0:
|
|||
graceful-fs "^4.1.6"
|
||||
|
||||
livereload-js@^3.3.1:
|
||||
version "3.3.3"
|
||||
resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.3.3.tgz#3e4f5699f741fdf8be6dc9c46c523e4fc1abbd0d"
|
||||
integrity sha512-a7Jipme3XIBIryJluWP5LQrEAvhobDPyScBe+q+MYwxBiMT2Ck7msy4tAdF8TAa33FMdJqX4guP81Yhiu6BkmQ==
|
||||
version "3.4.1"
|
||||
resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.4.1.tgz#ba90fbc708ed1b9a024bb89c4ee12c96ea03d66f"
|
||||
integrity sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==
|
||||
|
||||
livereload@^0.9.1:
|
||||
version "0.9.3"
|
||||
|
@ -531,7 +559,7 @@ micromatch@^4.0.4:
|
|||
braces "^3.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
minimatch@^3.0.4, minimatch@^3.1.1:
|
||||
minimatch@^3.1.1:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||
|
@ -546,7 +574,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
|
|||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
|
@ -558,7 +586,7 @@ once@^1.3.0:
|
|||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
|
||||
|
||||
path-parse@^1.0.7:
|
||||
version "1.0.7"
|
||||
|
@ -597,14 +625,14 @@ readdirp@~3.6.0:
|
|||
require-relative@^0.8.7:
|
||||
version "0.8.7"
|
||||
resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
|
||||
integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=
|
||||
integrity sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==
|
||||
|
||||
resolve@^1.17.0, resolve@^1.19.0:
|
||||
version "1.22.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
|
||||
integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
|
||||
version "1.22.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
|
||||
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
|
||||
dependencies:
|
||||
is-core-module "^2.8.1"
|
||||
is-core-module "^2.9.0"
|
||||
path-parse "^1.0.7"
|
||||
supports-preserve-symlinks-flag "^1.0.0"
|
||||
|
||||
|
@ -664,9 +692,9 @@ rollup-pluginutils@^2.8.2:
|
|||
estree-walker "^0.6.1"
|
||||
|
||||
rollup@^2.78.1:
|
||||
version "2.78.1"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.78.1.tgz#52fe3934d9c83cb4f7c4cb5fb75d88591be8648f"
|
||||
integrity sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==
|
||||
version "2.79.0"
|
||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.0.tgz#9177992c9f09eb58c5e56cbfa641607a12b57ce2"
|
||||
integrity sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
|
@ -707,11 +735,6 @@ source-map@^0.6.0:
|
|||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
source-map@~0.7.2:
|
||||
version "0.7.3"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
|
||||
|
||||
sourcemap-codec@^1.4.8:
|
||||
version "1.4.8"
|
||||
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
|
||||
|
@ -737,18 +760,18 @@ supports-preserve-symlinks-flag@^1.0.0:
|
|||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
svelte@^3.49.0:
|
||||
version "3.49.0"
|
||||
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.49.0.tgz#5baee3c672306de1070c3b7888fc2204e36a4029"
|
||||
integrity sha512-+lmjic1pApJWDfPCpUUTc1m8azDqYCG1JN9YEngrx/hUyIcFJo6VZhj0A1Ai0wqoHcEIuQy+e9tk+4uDgdtsFA==
|
||||
version "3.50.1"
|
||||
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.50.1.tgz#b35fbc5e79ddd71e8bb27c3149ee6ff903841239"
|
||||
integrity sha512-bS4odcsdj5D5jEg6riZuMg5NKelzPtmsCbD9RG+8umU03TeNkdWnP6pqbCm0s8UQNBkqk29w/Bdubn3C+HWSwA==
|
||||
|
||||
terser@^5.0.0:
|
||||
version "5.12.1"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c"
|
||||
integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==
|
||||
version "5.15.0"
|
||||
resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.0.tgz#e16967894eeba6e1091509ec83f0c60e179f2425"
|
||||
integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==
|
||||
dependencies:
|
||||
"@jridgewell/source-map" "^0.3.2"
|
||||
acorn "^8.5.0"
|
||||
commander "^2.20.0"
|
||||
source-map "~0.7.2"
|
||||
source-map-support "~0.5.20"
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
|
@ -766,9 +789,9 @@ universalify@^0.1.0:
|
|||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
||||
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
||||
|
||||
ws@^7.4.3:
|
||||
version "7.5.7"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
|
||||
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
|
||||
version "7.5.9"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
|
||||
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
|
||||
|
|
Loading…
Reference in a new issue