forked from cory/tildefriends
		
	Show videos in messages.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4253 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		| @@ -1,9 +1,44 @@ | |||||||
| import * as linkify from './commonmark-linkify.js'; | import * as linkify from './commonmark-linkify.js'; | ||||||
| import * as hashtagify from './commonmark-hashtag.js'; | import * as hashtagify from './commonmark-hashtag.js'; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function image(node, entering) { | ||||||
|  | 	if (node.firstChild?.type === 'text' && | ||||||
|  | 		node.firstChild.literal.startsWith('video:')) { | ||||||
|  | 		if (entering) { | ||||||
|  | 			this.lit('<video style="max-width: 100%; max-height: 480px" title="' + this.esc(node.firstChild?.literal) + '" controls>'); | ||||||
|  | 			this.lit('<source src="' + this.esc(node.destination) + '"></source>'); | ||||||
|  | 			this.disableTags += 1; | ||||||
|  | 		} else { | ||||||
|  | 			this.disableTags -= 1; | ||||||
|  | 			this.lit('</video>'); | ||||||
|  | 		} | ||||||
|  | 	} else { | ||||||
|  | 		if (entering) { | ||||||
|  | 			if (this.disableTags === 0) { | ||||||
|  | 				if (this.options.safe && potentiallyUnsafe(node.destination)) { | ||||||
|  | 					this.lit('<img src="" alt="'); | ||||||
|  | 				} else { | ||||||
|  | 					this.lit('<img src="' + this.esc(node.destination) + '" alt="'); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			this.disableTags += 1; | ||||||
|  | 		} else { | ||||||
|  | 			this.disableTags -= 1; | ||||||
|  | 			if (this.disableTags === 0) { | ||||||
|  | 				if (node.title) { | ||||||
|  | 					this.lit('" title="' + this.esc(node.title)); | ||||||
|  | 				} | ||||||
|  | 				this.lit('" />'); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
| export function markdown(md) { | export function markdown(md) { | ||||||
| 	var reader = new commonmark.Parser({safe: true}); | 	var reader = new commonmark.Parser({safe: true}); | ||||||
| 	var writer = new commonmark.HtmlRenderer(); | 	var writer = new commonmark.HtmlRenderer(); | ||||||
|  | 	writer.image = image; | ||||||
| 	var parsed = reader.parse(md || ''); | 	var parsed = reader.parse(md || ''); | ||||||
| 	parsed = linkify.transform(parsed); | 	parsed = linkify.transform(parsed); | ||||||
| 	parsed = hashtagify.transform(parsed); | 	parsed = hashtagify.transform(parsed); | ||||||
|   | |||||||
| @@ -114,13 +114,12 @@ class TodoListElement extends LitElement { | |||||||
| 					@change=${event => self.input_change(event, item)} | 					@change=${event => self.input_change(event, item)} | ||||||
| 					@keydown=${event => self.input_keydown(event, item)} | 					@keydown=${event => self.input_keydown(event, item)} | ||||||
| 					@blur=${x => self.input_blur(item)}></input> | 					@blur=${x => self.input_blur(item)}></input> | ||||||
| 				<span @click=${x => self.remove_item(item)}>x</span></div> | 				<span @click=${x => self.remove_item(item)} style="cursor: pointer">❎</span></div> | ||||||
| 			`; | 			`; | ||||||
| 		} else { | 		} else { | ||||||
| 			return html` | 			return html` | ||||||
| 				<div><input type="checkbox" ?checked=${item.x} @change=${x => self.handle_check(x, item)}></input> | 				<div><input type="checkbox" ?checked=${item.x} @change=${x => self.handle_check(x, item)}></input> | ||||||
| 				<span @click=${x => self.editing = index}>${item.text}</span> | 				<span @click=${x => self.editing = index}>${item.text}</span> | ||||||
| 				<span @click=${x => self.remove_item(item)} style="cursor: pointer">❎</span></div> |  | ||||||
| 			`; | 			`; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| @@ -175,7 +174,8 @@ class TodoListElement extends LitElement { | |||||||
| 		return html` | 		return html` | ||||||
| 			<div style="border: 3px solid black; padding: 8px; margin: 8px; border-radius: 8px; background-color: #444"> | 			<div style="border: 3px solid black; padding: 8px; margin: 8px; border-radius: 8px; background-color: #444"> | ||||||
| 				${name} | 				${name} | ||||||
| 				${(this.items || []).map(x => self.render_item(x))} | 				${(this.items || []).filter(item => !item.x).map(x => self.render_item(x))} | ||||||
|  | 				${(this.items || []).filter(item => item.x).map(x => self.render_item(x))} | ||||||
| 				<button @click=${self.add_item}>+ Item</button> | 				<button @click=${self.add_item}>+ Item</button> | ||||||
| 				<button @click=${self.remove_list}>- List</button> | 				<button @click=${self.remove_list}>- List</button> | ||||||
| 			</div> | 			</div> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user