{
"name": "crimata-messenger",
+ "productName": "crimata-messenger",
+ "description": "Cross-platform messenger application built with electron, vue3, and TS.",
"version": "0.1.0",
"private": true,
+ "author": {
+ "name": "Enrique Hernandez"
+ },
"scripts": {
"dev": "yarn electron:serve",
"serve": "vue-cli-service serve",
xmlns:xlink="http://www.w3.org/1999/xlink"
:viewBox="scrollView"
>
- <g id="messageRenderer">
+ <g id="messageRenderer" transform="translate(0, 5)">
<g
v-for="(item, index) in renderArr"
:key="index"
class="messageList"
- transform="translate(0, 0)"
+ transform="translate(0, 25)"
+ preserverAspectRatio="none"
+
>
<transition
appear
},
});
</script>
+
+<style lang="scss" scoped>
+svg {
+ height: 1%;
+ overflow: hidden;
+}
+#messageRenderer {
+ margin: 0;
+}
+</style>
function animateMessage(el: SVGGElement): void {
const transform = {
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);
}
}
function afterEnter(el: SVGGElement) {
- const messagePadding = 10;
+ const messagePadding = 15;
if (message) {
messageOffset = calculateMessageOffsets(message);
- shift = messageOffset.y > 450 ? true : false;
+ shift = messageOffset.y > 445 ? true : false;
}
if (shift) {
shiftValue -= el.getBBox().height + messagePadding;
export default function useOffsetCalculator() {
const xOffset = ref(0);
const yOffset = ref(0);
- const firstChildMarginTop = 40;
+ const firstChildMarginTop = 0;
let previousMessageHeight = 0;
- const messagePadding = 10;
+ const messagePadding = 15;
function setXoffset(message: HTMLElement): void {
const computedQuery = window.getComputedStyle(message)
anime({
targets: el,
transform: transform.finalTranslate,
+ easing: "easeInOutQuad",
+ duration: 500,
offset: 1000
});
}
const clampedScroll = computed(() => {
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;
})
-import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
+import { createRouter, createWebHistory, createWebHashHistory, RouteRecordRaw } from "vue-router";
import HomeIndex from "../views/home/index.vue";
const routes: Array<RouteRecordRaw> = [
];
const router = createRouter({
- history: createWebHistory(process.env.BASE_URL),
+ history: process.env.IS_ELECTRON ? createWebHashHistory() : createWebHistory(process.env.BASE_URL),
routes
});
builderOptions: {
// TODO electron-builder config https://www.electron.build/configuration/configuration
appId: "com.crimata.messenger",
- name: "CrimataMessenger"
+ productName: "Crimata-Messenger"
},
preload: "src/preload.ts"
}