center renderer + add min build config
This commit is contained in:
parent
1578ddf636
commit
5cc44f1c2a
10 changed files with 30 additions and 11 deletions
|
|
@ -1,7 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "crimata-messenger",
|
"name": "crimata-messenger",
|
||||||
|
"productName": "crimata-messenger",
|
||||||
|
"description": "Cross-platform messenger application built with electron, vue3, and TS.",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
"author": {
|
||||||
|
"name": "Enrique Hernandez"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "yarn electron:serve",
|
"dev": "yarn electron:serve",
|
||||||
"serve": "vue-cli-service serve",
|
"serve": "vue-cli-service serve",
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,14 @@
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
:viewBox="scrollView"
|
:viewBox="scrollView"
|
||||||
>
|
>
|
||||||
<g id="messageRenderer">
|
<g id="messageRenderer" transform="translate(0, 5)">
|
||||||
<g
|
<g
|
||||||
v-for="(item, index) in renderArr"
|
v-for="(item, index) in renderArr"
|
||||||
:key="index"
|
:key="index"
|
||||||
class="messageList"
|
class="messageList"
|
||||||
transform="translate(0, 0)"
|
transform="translate(0, 25)"
|
||||||
|
preserverAspectRatio="none"
|
||||||
|
|
||||||
>
|
>
|
||||||
<transition
|
<transition
|
||||||
appear
|
appear
|
||||||
|
|
@ -65,3 +67,13 @@ export default defineComponent({
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
svg {
|
||||||
|
height: 1%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
#messageRenderer {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ export default function useMessageRenderer() {
|
||||||
function animateMessage(el: SVGGElement): void {
|
function animateMessage(el: SVGGElement): void {
|
||||||
const transform = {
|
const transform = {
|
||||||
initialTranslate: `translate(${messageOffset.x} ${messageOffset.y})`,
|
initialTranslate: `translate(${messageOffset.x} ${messageOffset.y})`,
|
||||||
finalTranslate: `translate(${messageOffset.x} ${messageOffset.y + 5})`
|
finalTranslate: `translate(${messageOffset.x} ${messageOffset.y})`
|
||||||
}
|
}
|
||||||
shift ? shiftAnimate(el, transform, shiftValue, messageList) : stackAnimate(el, transform);
|
shift ? shiftAnimate(el, transform, shiftValue, messageList) : stackAnimate(el, transform);
|
||||||
}
|
}
|
||||||
|
|
@ -29,11 +29,11 @@ export default function useMessageRenderer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function afterEnter(el: SVGGElement) {
|
function afterEnter(el: SVGGElement) {
|
||||||
const messagePadding = 10;
|
const messagePadding = 15;
|
||||||
|
|
||||||
if (message) {
|
if (message) {
|
||||||
messageOffset = calculateMessageOffsets(message);
|
messageOffset = calculateMessageOffsets(message);
|
||||||
shift = messageOffset.y > 450 ? true : false;
|
shift = messageOffset.y > 445 ? true : false;
|
||||||
}
|
}
|
||||||
if (shift) {
|
if (shift) {
|
||||||
shiftValue -= el.getBBox().height + messagePadding;
|
shiftValue -= el.getBBox().height + messagePadding;
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ import { ref } from "vue";
|
||||||
export default function useOffsetCalculator() {
|
export default function useOffsetCalculator() {
|
||||||
const xOffset = ref(0);
|
const xOffset = ref(0);
|
||||||
const yOffset = ref(0);
|
const yOffset = ref(0);
|
||||||
const firstChildMarginTop = 40;
|
const firstChildMarginTop = 0;
|
||||||
let previousMessageHeight = 0;
|
let previousMessageHeight = 0;
|
||||||
const messagePadding = 10;
|
const messagePadding = 15;
|
||||||
|
|
||||||
function setXoffset(message: HTMLElement): void {
|
function setXoffset(message: HTMLElement): void {
|
||||||
const computedQuery = window.getComputedStyle(message)
|
const computedQuery = window.getComputedStyle(message)
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ export default function useRendererAnims() {
|
||||||
anime({
|
anime({
|
||||||
targets: el,
|
targets: el,
|
||||||
transform: transform.finalTranslate,
|
transform: transform.finalTranslate,
|
||||||
|
easing: "easeInOutQuad",
|
||||||
|
duration: 500,
|
||||||
offset: 1000
|
offset: 1000
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ export default function useScroller({ targetId }: {targetId: string}) {
|
||||||
|
|
||||||
const clampedScroll = computed(() => {
|
const clampedScroll = computed(() => {
|
||||||
if (targetHeight.value === 0) { return 0; }
|
if (targetHeight.value === 0) { return 0; }
|
||||||
topBound = -targetHeight.value + 440;
|
topBound = -targetHeight.value + 450;
|
||||||
return Math.max(topBound, Math.min(scroll.value, 0)) as number;
|
return Math.max(topBound, Math.min(scroll.value, 0)) as number;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
|
import { createRouter, createWebHistory, createWebHashHistory, RouteRecordRaw } from "vue-router";
|
||||||
import HomeIndex from "../views/home/index.vue";
|
import HomeIndex from "../views/home/index.vue";
|
||||||
|
|
||||||
const routes: Array<RouteRecordRaw> = [
|
const routes: Array<RouteRecordRaw> = [
|
||||||
|
|
@ -10,7 +10,7 @@ const routes: Array<RouteRecordRaw> = [
|
||||||
];
|
];
|
||||||
|
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
history: createWebHistory(process.env.BASE_URL),
|
history: process.env.IS_ELECTRON ? createWebHashHistory() : createWebHistory(process.env.BASE_URL),
|
||||||
routes
|
routes
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
0
src/views/user/login.vue
Normal file
0
src/views/user/login.vue
Normal file
0
src/views/user/register.vue
Normal file
0
src/views/user/register.vue
Normal file
|
|
@ -21,7 +21,7 @@ module.exports = {
|
||||||
builderOptions: {
|
builderOptions: {
|
||||||
// TODO electron-builder config https://www.electron.build/configuration/configuration
|
// TODO electron-builder config https://www.electron.build/configuration/configuration
|
||||||
appId: "com.crimata.messenger",
|
appId: "com.crimata.messenger",
|
||||||
name: "CrimataMessenger"
|
productName: "Crimata-Messenger"
|
||||||
},
|
},
|
||||||
preload: "src/preload.ts"
|
preload: "src/preload.ts"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue