Skip to content

Commit

Permalink
add track remote cursors setting
Browse files Browse the repository at this point in the history
  • Loading branch information
felixroos committed Jan 22, 2025
1 parent 63cc37f commit e260e6b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
6 changes: 6 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,12 @@ <h3>Editor settings</h3>
Auto-closing brackets
</label>
</p>
<p>
<label>
<input type="checkbox" id="settings-track-cursors" />
Track Remote Cursors
</label>
</p>
<p>
<label>
<input type="checkbox" id="settings-vim-mode" />
Expand Down
8 changes: 4 additions & 4 deletions src/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,10 @@ export class PastaMirror {
const undoManager = new UndoManager(text);
const web = true;

// TODO: find way to unset boxed mode on mobile
// when the media query hits, we get scrolled mode
// so then we get remote cursor tracking in scrolled mode = bad
const scrollIntoView = false; // getSettings().panelMode === 'boxed';
// TODO: automatically set scrollIntoView, based on mode
// set to true in boxed mode, but only when boxed mode is actually visible
// we don't want cursor tracking on mobile!
const scrollIntoView = getSettings().trackRemoteCursors;
const collab = yCollab(text, doc.session.awareness, {
undoManager,
showLocalCaret: true,
Expand Down
12 changes: 12 additions & 0 deletions src/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const defaultSettings = {
lineWrapping: false,
lineNumbers: false,
closeBrackets: true,
trackRemoteCursors: false,
welcomeMessage3: true,
pastingMode: false,
};
Expand All @@ -61,6 +62,7 @@ const vimModeCheckbox = document.querySelector('#settings-vim-mode');
const lineWrappingCheckbox = document.querySelector('#settings-line-wrapping');
const lineNumbersCheckbox = document.querySelector('#settings-line-numbers');
const closeBracketsCheckbox = document.querySelector('#settings-close-brackets');
const trackRemoteCursorsCheckbox = document.querySelector('#settings-track-cursors');
const welcomeMessageCheckbox = document.querySelector('#settings-welcome-message');
const pastingModeCheckbox = document.querySelector('#settings-pasting-mode');

Expand All @@ -77,6 +79,9 @@ function inferSettingsFromDom() {
lineWrapping: lineWrappingCheckbox ? lineWrappingCheckbox.checked : defaultSettings.lineWrapping,
lineNumbers: lineNumbersCheckbox ? lineNumbersCheckbox.checked : defaultSettings.lineNumbers,
closeBrackets: closeBracketsCheckbox ? closeBracketsCheckbox.checked : defaultSettings.closeBrackets,
trackRemoteCursors: trackRemoteCursorsCheckbox
? trackRemoteCursorsCheckbox.checked
: defaultSettings.trackRemoteCursors,
welcomeMessage3: welcomeMessageCheckbox ? welcomeMessageCheckbox.checked : defaultSettings.welcomeMessage3,
pastingMode: pastingModeCheckbox ? pastingModeCheckbox.checked : defaultSettings.pastingMode,
};
Expand All @@ -95,6 +100,12 @@ welcomeMessageCheckbox?.addEventListener('change', setSettingsFromDom);
lineWrappingCheckbox?.addEventListener('change', setSettingsFromDom);
lineNumbersCheckbox?.addEventListener('change', setSettingsFromDom);
closeBracketsCheckbox?.addEventListener('change', setSettingsFromDom);
trackRemoteCursorsCheckbox?.addEventListener('change', () => {
if (confirm('This only makes sense in boxed mode.. It also requires a reload. Are you sure?')) {
setSettingsFromDom();
window.location.reload();
}
});
pastingModeCheckbox?.addEventListener('change', setSettingsFromDom);

let appliedSettings = null;
Expand Down Expand Up @@ -123,6 +134,7 @@ export function applySettingsToNudel(settings = getSettings()) {
lineWrappingCheckbox.checked = settings.lineWrapping;
lineNumbersCheckbox.checked = settings.lineNumbers;
closeBracketsCheckbox.checked = settings.closeBrackets;
trackRemoteCursorsCheckbox.checked = settings.trackRemoteCursors;
panelModeSelect.value = settings.panelMode;
usernameInput.value = settings.username;
strudelCheckbox.checked = settings.strudelEnabled;
Expand Down

0 comments on commit e260e6b

Please sign in to comment.