refactored a bit, updated readme

This commit is contained in:
miggymofongo 2025-01-05 21:15:54 -04:00
parent 074a86b707
commit 2d75697f99
4 changed files with 61 additions and 108 deletions

View file

@ -2,19 +2,20 @@
<p> <p>
Aren't you tired of distracting social media platforms? Aren't you tired of distracting social media platforms?
So many buttons and advertising makes a simple task of sending notes ot your So many buttons and advertising makes a simple task of reading
friends very draining. This is a simple WYSIWYM style rich text editor and writing notes to your community very draining. You can use
built with <a href="https://prosemirror.net/">ProseMirror</a> </p> a next generation social media protocol to transform
your personal website into a micro social media client.
Use a like <a href="https://prosemirror.net/">ProseMirror</a>,
to build a WYSIWYM style rich text editor for visitors
to compose notes with. They can then post it to a set of
programmed relays.
</p>
<p> You can use a next generation social media protocol to transform
your personal website into a micro blog client. Using WYSIWYG style
editor builders like ProseMirror, you can render a simple rich
text editor for visitors to compose notes with. You can type
out a note and post it to a set of relays. </p>
<p>This is an installable personal website that is accessible through chrome-based and firefox browsers. The website is built with PWA Builder and Lit Web Components. It utilizes the Nostr <p>This is an installable personal website that is accessible through chrome-based and firefox browsers. The website is built with PWA Builder and Lit Web Components. It utilizes the Nostr
protocol to connect to my personal relay for fetching kind 0 and 1 notes AKA profile metadata protocol to fetch kinds 0, 1, and 30023 notes from a personal relay and display then (profile metadata, short text, and long form notes.) </p>
and short text notes.</p>
@ -29,7 +30,9 @@ If you're on a chromium-based browser you should be able to do the same.</p>
<ul> <ul>
<li>refactor</li> <li>refactor</li>
<li>dropdown menu a la Medium</li> <li>dropdown menu a la Medium</li>'
<li>long form blog view</li>
</ul> </ul>

View file

@ -11,6 +11,8 @@ import {EditorState} from 'prosemirror-state'
import { Transaction } from 'prosemirror-state'; import { Transaction } from 'prosemirror-state';
import { EditorView } from 'prosemirror-view'; import { EditorView } from 'prosemirror-view';
import { Schema } from 'prosemirror-model'; import { Schema } from 'prosemirror-model';
import { keymap } from 'prosemirror-keymap'; import { keymap } from 'prosemirror-keymap';
import { toggleMark } from 'prosemirror-commands'; import { toggleMark } from 'prosemirror-commands';
import {undo, redo, history} from 'prosemirror-history' import {undo, redo, history} from 'prosemirror-history'
@ -204,6 +206,8 @@ private initializeEditor() {
} }
}); });
this.editorView = view; this.editorView = view;
console.log(state.plugins);
console.log('editor initialized') console.log('editor initialized')
} }
@ -240,10 +244,13 @@ private initializeEditor() {
<h3>Basic Intructions</h3> <h3>Basic Intructions</h3>
<p>click inside the white text area to highlight with your curson. <p>click inside the white text area to highlight with your cursor.
You can type and press enter to insert a new block below. You can type and press enter to insert a new block below.
<br> <br>
Highlight a piece of text, then CTRL+X to cut and CTRL+V to paste.</p> Highlight a piece of text, then CTRL+X to cut and CTRL+V to paste.<br>
Press Ctrl+Space to add a yellow star to the document. Press
Ctrl+B over a highlighted selection to add the "shouting" mark, making
it all caps and red.</p>
</sl-card> </sl-card>
<sl-card> <sl-card>

View file

@ -21,60 +21,6 @@ export class NoteWall extends LitElement {
styles, styles,
css` css`
#welcomeBar {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
#welcomeCard,
#infoCard {
padding: 18px;
padding-top: 0px;
}
sl-card::part(footer) {
display: flex;
justify-content: flex-end;
}
@media(min-width: 750px) {
sl-card {
width: 70vw;
}
}
@media (horizontal-viewport-segments: 2) {
#welcomeBar {
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
}
#welcomeCard {
margin-right: 64px;
}
}
@media(min-width: 750px) {
sl-card {
width: 70vw;
}
}
@media (horizontal-viewport-segments: 2) {
#welcomeBar {
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
}
}
.comment-wall .main-section-header { .comment-wall .main-section-header {
margin-bottom: 3px; margin-bottom: 3px;
} }
@ -92,10 +38,11 @@ export class NoteWall extends LitElement {
.comment-wall table { .comment-wall table {
margin: auto; margin: auto;
margin-bottom: 5px; margin-bottom: 5px;
color: black;
} }
.comment-wall th { .comment-wall th {
background-color: rgb(255, 153, 51);
width: 158px; width: 158px;
padding: 3px; padding: 3px;
vertical-align: top; vertical-align: top;
@ -103,7 +50,6 @@ export class NoteWall extends LitElement {
.comment-wall td { .comment-wall td {
vertical-align: top; vertical-align: top;
background-color: rgb(249, 214, 180);
width: 269px; width: 269px;
padding: 3px; padding: 3px;
} }
@ -124,12 +70,12 @@ export class NoteWall extends LitElement {
.comment-wall h3 { .comment-wall h3 {
font-size: 10pt; font-size: 10pt;
margin: 0; margin: 0;
margin-bottom: 1em; margin-bottom: 3em;
} }
.comment-wall p { .comment-wall p {
font-weight: normal; font-weight: normal;
text-align: left; text-align: center;
margin: 0; margin: 0;
} }
@ -181,15 +127,14 @@ export class NoteWall extends LitElement {
async fetchNotes() { async fetchNotes() {
const ifcaRelay = await Relay.connect('wss://hi.myvoiceourstory.org'); // const ifcaRelay = await Relay.connect('wss://hi.myvoiceourstory.org');
// const migsRelay = await Relay.connect('wss://notes.miguelalmodo.com'); const migsRelay = await Relay.connect('wss://notes.miguelalmodo.com');
console.log(`connected to ${ifcaRelay.url}`); console.log(`connected to ${migsRelay.url}`);
// console.log(`connected to ${migsRelay.url}`); // console.log(`connected to ${migsRelay.url}`);
const sub = migsRelay.subscribe([
const sub = ifcaRelay.subscribe([
{ {
kinds: [1], // short form notes kinds: [30023], // short and long form notes
limit: 20, limit: 10,
} }
], { ], {
onevent: async (event) => { onevent: async (event) => {
@ -199,20 +144,20 @@ async fetchNotes() {
date: new Date(event.created_at * 1000).toLocaleDateString(), date: new Date(event.created_at * 1000).toLocaleDateString(),
}]; }];
this.requestUpdate(); this.requestUpdate();
console.log(migsRelay)
}, },
oneose: () => { oneose: () => {
sub.close(); sub.close();
this.requestUpdate(); this.requestUpdate();
}, },
}); });
} }
share() { share() {
if ((navigator as any).share) { if ((navigator as any).share) {
(navigator as any).share({ (navigator as any).share({
@ -228,7 +173,7 @@ async fetchNotes() {
<app-header ?enableBack="${true}"></app-header> <app-header ?enableBack="${true}"></app-header>
<main> <div id="welcomeBar"> <main> <div id="welcomeBar">
<sl-card id="WelcomeCard"> <sl-card id="WelcomeCard">
<section class=""comment-wall> <section>
<header class="main-section-header"> <header class="main-section-header">
<h2 class="main-section-h2">Recent Notes from IFCA</h2> <h2 class="main-section-h2">Recent Notes from IFCA</h2>
@ -237,7 +182,7 @@ async fetchNotes() {
<table> <table class="comment-wall">
${this.notes.map(note => { ${this.notes.map(note => {
// extract URL from note content // extract URL from note content
const urlMatch = note.content.match(/https?:\/\/[^\s]+/); const urlMatch = note.content.match(/https?:\/\/[^\s]+/);
@ -267,14 +212,12 @@ async fetchNotes() {
: imgMatch : imgMatch
? html`<img src="${imgMatch}" alt="Note image" style="max-width: 30%; height: 30%;">` ? html`<img src="${imgMatch}" alt="Note image" style="max-width: 30%; height: 30%;">`
: ''} : ''}
</td> </td>
</tr> </tr>
`; `;
})} })}
</table> </table>
<div class="comment-wall"

View file

@ -427,6 +427,25 @@ export const styles = css`
} }
} }
@media (horizontal-viewport-segments: 2) {
#welcomeBar {
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
}
@media (horizontal-viewport-segments: 2) {
#welcomeBar {
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
}
}
.boring { .boring {
background: grey; background: grey;
} }
@ -445,26 +464,7 @@ export const styles = css`
background-color: #45a049; background-color: #45a049;
} }
/* Add these styles to your component's CSS */ .ProseMirror-textblock-dropdown {
.dropdown-menu { min-width: 3em;
background-color: white;
border: 1px solid #ccc;
padding: 10px;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
} }
}`
.dropdown-menu button {
background-color: white;
border: 1px solid #ccc;
padding: 5px;
border-radius: 4px;
margin-bottom: 5px;
cursor: pointer;
}
.dropdown-menu button:hover {
background-color: #f0f0f0;
}
`;