diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..13d231b --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "singleQuote": true, + "trailingComma": "es5", + "bracketSpacing": true, + "tabWidth": 2, + "printWidth": 80, + "semi": true +} diff --git a/package-lock.json b/package-lock.json index 1c3782e..26da338 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@vueuse/nuxt": "^9.3.1", "husky": "^8.0.2", "nuxt": "^3.0.0", + "prettier": "^2.8.0", "sass": "^1.55.0", "vue-tsc": "^1.0.9" } @@ -6071,6 +6072,21 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-bytes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.0.0.tgz", @@ -12363,6 +12379,12 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, + "prettier": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.0.tgz", + "integrity": "sha512-9Lmg8hTFZKG0Asr/kW9Bp8tJjRVluO8EJQVfY2T7FMw9T5jy4I/Uvx0Rca/XWf50QQ1/SS48+6IJWnrb+2yemA==", + "dev": true + }, "pretty-bytes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.0.0.tgz", diff --git a/package.json b/package.json index f3ae8ee..603d623 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@vueuse/nuxt": "^9.3.1", "husky": "^8.0.2", "nuxt": "^3.0.0", + "prettier": "^2.8.0", "sass": "^1.55.0", "vue-tsc": "^1.0.9" } diff --git a/src/app.vue b/src/app.vue index f3d5c47..f8eacfa 100644 --- a/src/app.vue +++ b/src/app.vue @@ -1,5 +1,5 @@ diff --git a/src/assets/styles/_fonts.scss b/src/assets/styles/_fonts.scss index 66c846c..998ee4c 100644 --- a/src/assets/styles/_fonts.scss +++ b/src/assets/styles/_fonts.scss @@ -8,10 +8,10 @@ font-family: $font-family; src: url('#{$font-with-path}.eot'); src: local('#{$font-with-dash}'), local('#{$font-with-space}'), - url('#{$font-with-path}.eot?#iefix') format('embedded-opentype'), - url('#{$font-with-path}.woff2') format('woff2'), - url('#{$font-with-path}.woff') format('woff'), - url('#{$font-with-path}.ttf') format('truetype'); + url('#{$font-with-path}.eot?#iefix') format('embedded-opentype'), + url('#{$font-with-path}.woff2') format('woff2'), + url('#{$font-with-path}.woff') format('woff'), + url('#{$font-with-path}.ttf') format('truetype'); font-weight: $weight; font-style: normal; } @@ -19,11 +19,12 @@ @font-face { font-family: $font-family; src: url('#{$font-with-path}Italic.eot'); - src: local('#{$font-with-dash}Italic'), local('#{$font-with-space} Italic'), - url('#{$font-with-path}Italic.eot?#iefix') format('embedded-opentype'), - url('#{$font-with-path}Italic.woff2') format('woff2'), - url('#{$font-with-path}Italic.woff') format('woff'), - url('#{$font-with-path}Italic.ttf') format('truetype'); + src: local('#{$font-with-dash}Italic'), + local('#{$font-with-space} Italic'), + url('#{$font-with-path}Italic.eot?#iefix') format('embedded-opentype'), + url('#{$font-with-path}Italic.woff2') format('woff2'), + url('#{$font-with-path}Italic.woff') format('woff'), + url('#{$font-with-path}Italic.ttf') format('truetype'); font-weight: $weight; font-style: italic; } @@ -38,14 +39,15 @@ $fonts: ( Black: 700, ); -@include MakeFont('Formular', $fonts, '@/assets/fonts/formular'); - @font-face { font-family: 'Computer Modern Serif'; src: url('@/assets/fonts/computer-modern/cmunrm.eot'); - src: url('@/assets/fonts/computer-modern/cmunrm.eot?#iefix') format('embedded-opentype'), - url('@/assets/fonts/computer-modern/cmunrm.woff') format('woff'), - url('@/assets/fonts/computer-modern/cmunrm.ttf') format('truetype'); + src: url('@/assets/fonts/computer-modern/cmunrm.eot?#iefix') + format('embedded-opentype'), + url('@/assets/fonts/computer-modern/cmunrm.woff') format('woff'), + url('@/assets/fonts/computer-modern/cmunrm.ttf') format('truetype'); font-weight: normal; font-style: normal; } + +@include MakeFont('Formular', $fonts, '@/assets/fonts/formular'); diff --git a/src/assets/styles/_scroll.scss b/src/assets/styles/_scroll.scss index 2158625..e3187bf 100644 --- a/src/assets/styles/_scroll.scss +++ b/src/assets/styles/_scroll.scss @@ -7,6 +7,6 @@ } ::-webkit-scrollbar-thumb { - background-color: var(--scroll-color); transition: background-color 0.1s; + background-color: var(--scroll-color); } diff --git a/src/assets/styles/main.scss b/src/assets/styles/main.scss index d76d7e4..5d1077a 100644 --- a/src/assets/styles/main.scss +++ b/src/assets/styles/main.scss @@ -4,15 +4,17 @@ @import 'scroll'; @import 'animations'; -html, body, #__nuxt { +html, +body, +#__nuxt { width: 100%; height: 100%; } body { - background-color: var(--background-color-primary); - color: var(--font-color-primary); font-family: Formular, Helvetica, Arial, sans-serif; + color: var(--font-color-primary); + background-color: var(--background-color-primary); } button { @@ -21,7 +23,8 @@ button { cursor: pointer; } -h1, h2 { +h1, +h2 { font-size: 20px; font-weight: 600; } diff --git a/src/components/accordion.vue b/src/components/accordion.vue index 7287efb..37b1988 100644 --- a/src/components/accordion.vue +++ b/src/components/accordion.vue @@ -1,5 +1,5 @@ @@ -8,11 +8,11 @@ const showForm = ref(false);

{{ title }}

- +
@@ -26,8 +26,8 @@ const showForm = ref(false); .header { display: flex; - justify-content: space-between; align-items: center; + justify-content: space-between; column-gap: 12px; user-select: none; cursor: pointer; diff --git a/src/components/board.vue b/src/components/board.vue index 24a15e5..6eec020 100644 --- a/src/components/board.vue +++ b/src/components/board.vue @@ -7,14 +7,20 @@ onMounted(() => { canvas.value.width = window.innerWidth; canvas.value.height = window.innerHeight; - const ctx = canvas.value.getContext("2d"); + const ctx = canvas.value.getContext('2d'); if (!ctx) return; - ctx.fillStyle = "red"; + ctx.fillStyle = 'red'; type Point = [number, number, number, number]; + const sizeX = canvas.value.width; + const sizeY = canvas.value.height; + + const centerX = sizeX / 2; + const centerY = sizeY / 2; + const points: Point[] = [ [500, 500, 500, 1], [500, 500, 700, 1], @@ -87,16 +93,6 @@ onMounted(() => { ]; }; - // Identity matrix - const identity = (): Point[] => { - return [ - [1, 0, 0, 0], - [0, 1, 0, 0], - [0, 0, 1, 0], - [0, 0, 0, 1], - ]; - }; - // Multiply array of points by matrix const multiply = (points: Point[], matrix: Point[]): Point[] => { const result: Point[] = []; @@ -121,8 +117,11 @@ onMounted(() => { }; // Draw figure - const drawFigure = (points: Point[], faces: [number, number, number, number][]) => { - ctx.clearRect(0, 0, canvas.value.width, canvas.value.height); + const drawFigure = ( + points: Point[], + faces: [number, number, number, number][] + ) => { + ctx.clearRect(0, 0, sizeX, sizeY); faces.forEach((face) => { ctx.beginPath(); @@ -135,16 +134,13 @@ onMounted(() => { }); }; - // Rotation animation all axis on the center of the canvas + // Rotation animation all axis in the center of the canvas let angle = 0; const animate = () => { const matrix = multiply( multiply( - multiply( - translate(canvas.value.width / 2, canvas.value.height / 2, 0), - rotateX(angle) - ), + multiply(translate(centerX, centerY, 0), rotateX(angle)), rotateY(angle) ), rotateZ(angle) @@ -164,7 +160,5 @@ onMounted(() => { diff --git a/src/components/form/range.vue b/src/components/form/range.vue index d774eb5..bec2288 100644 --- a/src/components/form/range.vue +++ b/src/components/form/range.vue @@ -1,22 +1,28 @@