forked from FoundKeyGang/FoundKey
Michał Sidor
8840724a7c
This change replaces the reaction count on the reaction buttons under the post with micro avatars of the people reacting. This makes the whole thing feel more personal IMHO. Performance concerns: because the posts by themselves only contain reaction counts, this means executing an extra API call is done to fetch the list of users who reacted. This was already being done when hovering a reaction button, and my Raspberry Pi is doing pretty fine despite this patch. Further development was done to lazify the API call, so now reaction avatars are now fetched only when the reaction bar slides into view. This should lower the load a bit. Borrowed some ideas from code at https://medium.com/js-dojo/lazy-rendering-in-vue-to-improve-performance-dcccd445d5f TODO: check there might be a glitch when adding a reaction because it is already in view
105 lines
2.8 KiB
JSON
105 lines
2.8 KiB
JSON
{
|
|
"name": "client",
|
|
"version": "13.0.0-preview1",
|
|
"private": true,
|
|
"scripts": {
|
|
"watch": "vite build --watch --mode development",
|
|
"build": "vite build",
|
|
"lint": "eslint src --ext .ts,.vue"
|
|
},
|
|
"dependencies": {
|
|
"@discordapp/twemoji": "14.0.2",
|
|
"@fortawesome/fontawesome-free": "6.1.1",
|
|
"@rollup/plugin-alias": "3.1.9",
|
|
"@rollup/plugin-json": "4.1.0",
|
|
"@rollup/pluginutils": "^4.2.1",
|
|
"@syuilo/aiscript": "0.11.1",
|
|
"@vitejs/plugin-vue": "^3.1.0",
|
|
"@vueuse/core": "9.1.0",
|
|
"abort-controller": "3.0.0",
|
|
"autobind-decorator": "2.4.0",
|
|
"autosize": "5.0.1",
|
|
"blurhash": "1.1.5",
|
|
"broadcast-channel": "4.13.0",
|
|
"browser-image-resizer": "2.4.1",
|
|
"chart.js": "3.8.0",
|
|
"chartjs-adapter-date-fns": "2.0.0",
|
|
"chartjs-plugin-gradient": "0.5.0",
|
|
"chartjs-plugin-zoom": "1.2.1",
|
|
"compare-versions": "4.1.3",
|
|
"content-disposition": "0.5.4",
|
|
"cropperjs": "2.0.0-beta.1",
|
|
"date-fns": "2.28.0",
|
|
"escape-regexp": "0.0.1",
|
|
"eventemitter3": "4.0.7",
|
|
"feed": "4.2.2",
|
|
"foundkey-js": "workspace:*",
|
|
"idb-keyval": "6.2.0",
|
|
"insert-text-at-cursor": "0.3.0",
|
|
"json5": "2.2.1",
|
|
"katex": "0.16.0",
|
|
"matter-js": "0.18.0",
|
|
"mfm-js": "0.22.1",
|
|
"mocha": "10.0.0",
|
|
"ms": "2.1.3",
|
|
"nested-property": "4.0.0",
|
|
"photoswipe": "5.2.8",
|
|
"prismjs": "1.28.0",
|
|
"private-ip": "2.3.3",
|
|
"promise-limit": "2.7.0",
|
|
"pug": "3.0.2",
|
|
"punycode": "2.1.1",
|
|
"qrcode": "1.5.1",
|
|
"reflect-metadata": "0.1.13",
|
|
"rndstr": "1.0.0",
|
|
"rollup": "2.75.7",
|
|
"sass": "1.53.0",
|
|
"seedrandom": "3.0.5",
|
|
"strict-event-emitter-types": "2.0.0",
|
|
"stringz": "2.1.0",
|
|
"syuilo-password-strength": "0.0.1",
|
|
"talisman": "^1.1.4",
|
|
"textarea-caret": "3.1.0",
|
|
"three": "0.142.0",
|
|
"throttle-debounce": "5.0.0",
|
|
"tinycolor2": "1.4.2",
|
|
"tsc-alias": "1.7.0",
|
|
"tsconfig-paths": "4.1.0",
|
|
"twemoji-parser": "14.0.0",
|
|
"typescript": "4.8.3",
|
|
"uuid": "8.3.2",
|
|
"v-debounce": "0.1.2",
|
|
"vanilla-tilt": "1.7.2",
|
|
"vite": "3.1.0",
|
|
"vue": "3.2.39",
|
|
"vue-prism-editor": "2.0.0-alpha.2",
|
|
"vuedraggable": "4.0.1",
|
|
"websocket": "1.0.34",
|
|
"ws": "8.8.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/escape-regexp": "0.0.1",
|
|
"@types/glob": "7.2.0",
|
|
"@types/gulp": "4.0.9",
|
|
"@types/gulp-rename": "2.0.1",
|
|
"@types/is-url": "1.2.30",
|
|
"@types/katex": "0.14.0",
|
|
"@types/matter-js": "0.17.7",
|
|
"@types/mocha": "9.1.1",
|
|
"@types/punycode": "2.1.0",
|
|
"@types/qrcode": "1.5.0",
|
|
"@types/seedrandom": "3.0.2",
|
|
"@types/throttle-debounce": "5.0.0",
|
|
"@types/tinycolor2": "1.4.3",
|
|
"@types/uuid": "8.3.4",
|
|
"@types/websocket": "1.0.5",
|
|
"@types/ws": "8.5.3",
|
|
"@typescript-eslint/eslint-plugin": "^5.36.2",
|
|
"@typescript-eslint/parser": "^5.36.2",
|
|
"cross-env": "7.0.3",
|
|
"eslint": "^8.20.0",
|
|
"eslint-plugin-import": "^2.26.0",
|
|
"eslint-plugin-vue": "^9.1.1",
|
|
"start-server-and-test": "1.14.0"
|
|
}
|
|
}
|