Skip to content

Commit

Permalink
Merge branch 'dev' into feature/feedback-button
Browse files Browse the repository at this point in the history
  • Loading branch information
Splines committed Jan 25, 2024
2 parents 47b7cc6 + 92d48d4 commit 13d685d
Show file tree
Hide file tree
Showing 28 changed files with 1,023 additions and 249 deletions.
87 changes: 0 additions & 87 deletions .eslintrc.js

This file was deleted.

10 changes: 8 additions & 2 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ jobs:
id: js-changed
uses: ./.github/actions/changed_files/
with:
file-extensions: \.js$|\.js.erb$
# .(mjs is only used for eslint.config.mjs as of January 2024)
file-extensions: \.js$|\.mjs$|\.js.erb$

- name: Setup Node.js
if: ${{ steps.js-changed.outputs.changed-files != ''}}
Expand All @@ -62,8 +63,13 @@ jobs:
if: ${{ steps.js-changed.outputs.changed-files != ''}}
run: yarn install

# with ESLint v9 --ignore-path does not exist anymore
# see [1] for the PR. However, my feeling for this is totally reflected
# by [2]. Hopefully, it will come back in future versions.
# [1] https://github.com/eslint/eslint/pull/16355
# [2] https://github.com/eslint/eslint/issues/16264#issuecomment-1292858747
- name: Run ESLint
if: ${{ steps.js-changed.outputs.changed-files != ''}}
run: |
echo "🚨 Running ESLint version: $(yarn run --silent eslint --version)"
yarn run eslint --ignore-path .gitignore --max-warnings 0 ${{ steps.js-changed.outputs.changed-files }}
yarn run eslint --max-warnings 0 --no-warn-ignored ${{ steps.js-changed.outputs.changed-files }}
8 changes: 8 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"editor.formatOnSave": false, // it still autosaves with the options below
//////////////////////////////////////
// JS (ESLint)
//////////////////////////////////////
Expand All @@ -12,6 +13,7 @@
"source.fixAll.eslint": "explicit"
},
"eslint.format.enable": true, // use ESLint as formatter
"eslint.experimental.useFlatConfig": true,
// this disables VSCode built-in formatter (instead we want to use ESLint)
"javascript.validate.enable": false,
//////////////////////////////////////
Expand Down Expand Up @@ -77,6 +79,12 @@
}
],
//////////////////////////////////////
// Git
//////////////////////////////////////
"git.inputValidation": "warn",
"git.inputValidationSubjectLength": 50,
"git.inputValidationLength": 72,
//////////////////////////////////////
// Spell Checker
//////////////////////////////////////
"cSpell.words": [
Expand Down
4 changes: 3 additions & 1 deletion app/assets/config/manifest.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
//= link commontator/manifest.js
//= link thredded_katex.css
//= link thredded_katex.css
//= link monotile/geometry.js
//= link monotile/hat.js
Binary file removed app/assets/images/landing-background.jpg
Binary file not shown.
94 changes: 94 additions & 0 deletions app/assets/javascripts/monotile/geometry.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
// BSD-3-Clause licensed by Craig S. Kaplan
// adapted from: https://github.com/isohedral/hatviz

// This file is mostly code that will get replaced anyways since
// the monotiles will probably not stay on the front screen forever.
// Having to properly use modules here and import/export the respective variables
// would be overkill. This is mostly external code from the monotile project.
// It works as intended and is pretty much unrelated to the rest of our code base.
// For these reasons, we disable some ESLint rules for this file.
/* eslint-disable no-undef, no-unused-vars */

const r3 = 1.7320508075688772;
const hr3 = 0.8660254037844386;
const ident = [1, 0, 0, 0, 1, 0];

function pt(x, y) {
return { x: x, y: y };
}

function hexPt(x, y) {
return pt(x + 0.5 * y, hr3 * y);
}

// Affine matrix inverse
function inv(T) {
const det = T[0] * T[4] - T[1] * T[3];
return [T[4] / det, -T[1] / det, (T[1] * T[5] - T[2] * T[4]) / det,
-T[3] / det, T[0] / det, (T[2] * T[3] - T[0] * T[5]) / det];
}

// Affine matrix multiply
function mul(A, B) {
return [A[0] * B[0] + A[1] * B[3],
A[0] * B[1] + A[1] * B[4],
A[0] * B[2] + A[1] * B[5] + A[2],

A[3] * B[0] + A[4] * B[3],
A[3] * B[1] + A[4] * B[4],
A[3] * B[2] + A[4] * B[5] + A[5]];
}

function padd(p, q) {
return { x: p.x + q.x, y: p.y + q.y };
}

function psub(p, q) {
return { x: p.x - q.x, y: p.y - q.y };
}

// Rotation matrix
function trot(ang) {
const c = cos(ang);
const s = sin(ang);
return [c, -s, 0, s, c, 0];
}

// Translation matrix
function ttrans(tx, ty) {
return [1, 0, tx, 0, 1, ty];
}

function rotAbout(p, ang) {
return mul(ttrans(p.x, p.y),
mul(trot(ang), ttrans(-p.x, -p.y)));
}

// Matrix * point
function transPt(M, P) {
return pt(M[0] * P.x + M[1] * P.y + M[2], M[3] * P.x + M[4] * P.y + M[5]);
}

// Match unit interval to line segment p->q
function matchSeg(p, q) {
return [q.x - p.x, p.y - q.y, p.x, q.y - p.y, q.x - p.x, p.y];
}

// Match line segment p1->q1 to line segment p2->q2
function matchTwo(p1, q1, p2, q2) {
return mul(matchSeg(p2, q2), inv(matchSeg(p1, q1)));
}

// Intersect two lines defined by segments p1->q1 and p2->q2
function intersect(p1, q1, p2, q2) {
const d = (q2.y - p2.y) * (q1.x - p1.x) - (q2.x - p2.x) * (q1.y - p1.y);
const uA = ((q2.x - p2.x) * (p1.y - p2.y) - (q2.y - p2.y) * (p1.x - p2.x)) / d;
return pt(p1.x + uA * (q1.x - p1.x), p1.y + uA * (q1.y - p1.y));
}

const hat_outline = [
hexPt(0, 0), hexPt(-1, -1), hexPt(0, -2), hexPt(2, -2),
hexPt(2, -1), hexPt(4, -2), hexPt(5, -1), hexPt(4, 0),
hexPt(3, 0), hexPt(2, 2), hexPt(0, 3), hexPt(0, 2),
hexPt(-1, 2),
];
Loading

0 comments on commit 13d685d

Please sign in to comment.