Compare commits

..

No commits in common. "master" and "v0.2.0" have entirely different histories.

6 changed files with 695 additions and 922 deletions

View file

@ -27,8 +27,6 @@ npm run build <public-url>
npm run build /some-directory npm run build /some-directory
``` ```
The finalized production bundle will be generated and stored in the `/docs` directory.
## Direct links ## Direct links
You can provide a direct link to a specific game using the following URL format: You can provide a direct link to a specific game using the following URL format:

1567
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -17,20 +17,20 @@
"preact/jsx-dev-runtime": "preact/jsx-runtime" "preact/jsx-dev-runtime": "preact/jsx-runtime"
}, },
"devDependencies": { "devDependencies": {
"@parcel/transformer-sass": "^2.9.3", "@parcel/transformer-sass": "^2.9.1",
"buffer": "^6.0.3", "buffer": "^6.0.3",
"crypto-browserify": "^3.12.0", "crypto-browserify": "^3.12.0",
"eslint": "^8.44.0", "eslint": "^8.41.0",
"eslint-config-preact": "^1.3.0", "eslint-config-preact": "^1.3.0",
"events": "^3.3.0", "events": "^3.3.0",
"parcel": "^2.9.3", "parcel": "^2.9.1",
"parcel-reporter-static-files-copy": "^1.5.0", "parcel-reporter-static-files-copy": "^1.5.0",
"path-browserify": "^1.0.1", "path-browserify": "^1.0.1",
"process": "^0.11.10", "process": "^0.11.10",
"stream-browserify": "^3.0.0" "stream-browserify": "^3.0.0"
}, },
"dependencies": { "dependencies": {
"@fontsource/open-sans": "^5.0.3", "@fontsource/open-sans": "^5.0.1",
"base32768": "^3.0.1", "base32768": "^3.0.1",
"cheap-glkote": "^0.5.1", "cheap-glkote": "^0.5.1",
"emglken": "^0.5.2", "emglken": "^0.5.2",

View file

@ -4,9 +4,6 @@ import TextMessage from '../TextMessage/TextMessage'
import * as s from '../../Player.module.scss' import * as s from '../../Player.module.scss'
const eol = { style: 'endOfLine' }
const scrollTarget = { style: 'scrollTarget' }
const isFakeStatus = (w) => const isFakeStatus = (w) =>
w.height < 5 w.height < 5
@ -25,13 +22,15 @@ const parseInbox = (inbox, currentWindow) => {
if (!currentInbox) { if (!currentInbox) {
return { return {
clear: false, clear: false,
incoming: [scrollTarget], incoming: [],
} }
} }
const { text: inboxMessagesRaw } = const { text: inboxMessagesRaw } =
currentInbox currentInbox
const eol = { style: 'endOfLine' }
const incoming = const incoming =
inboxMessagesRaw inboxMessagesRaw
/* Normalize. */ /* Normalize. */
@ -41,7 +40,7 @@ const parseInbox = (inbox, currentWindow) => {
: [eol]) : [eol])
/* Flatten. */ /* Flatten. */
.reduce((acc, x) => .reduce((acc, x) =>
acc.concat(x), [scrollTarget]) acc.concat(x), [])
return { return {
incoming, incoming,
@ -64,13 +63,13 @@ export default function TextBuffer ({ inbox, currentWindow }) {
: messages.concat(incoming)) : messages.concat(incoming))
setTimeout(() => { setTimeout(() => {
const scrollTargets = const inputs =
textBufferEl.current.querySelectorAll(`.${scrollTarget.style}`) textBufferEl.current.querySelectorAll('.message.input')
const freshScrollTarget = const lastInput =
scrollTargets[scrollTargets.length - 1] inputs[inputs.length - 1]
freshScrollTarget lastInput
? freshScrollTarget.scrollIntoView() ? lastInput.scrollIntoView()
: textBufferEl.current.scrollTo({ : textBufferEl.current.scrollTo({
top: textBufferEl.current.scrollHeight, top: textBufferEl.current.scrollHeight,
behavior: 'smooth', behavior: 'smooth',

View file

@ -15,8 +15,6 @@ export default function TextMessage ({ style, text }) {
(<strong className={[s.message, s.subheader].join(' ')}>{text}</strong>), (<strong className={[s.message, s.subheader].join(' ')}>{text}</strong>),
emphasized: emphasized:
(<em className={[s.message, s.emphasized].join(' ')}>{text}</em>), (<em className={[s.message, s.emphasized].join(' ')}>{text}</em>),
scrollTarget:
(<div className={[s.scrollTarget, style].join(' ')}></div>),
endOfLine: endOfLine:
(<br />), (<br />),
})[style] || defaultContent })[style] || defaultContent

View file

@ -1,5 +1,6 @@
.message { .message {
&.input { &.input {
scroll-margin-top: var(--inner-padding);
color: var(--input-color); color: var(--input-color);
} }
@ -8,7 +9,3 @@
color: var(--accent-color); color: var(--accent-color);
} }
} }
.scrollTarget {
scroll-margin-block-start: var(--inner-padding);
}