Add toot embedding
This commit is contained in:
parent
e55fa73d92
commit
54ec74c6ed
@ -25,27 +25,8 @@
|
|||||||
</wc-comment>
|
</wc-comment>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script type="module">
|
||||||
const monthMap = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
import {dateSuffixAdder, monthMap, timeFormatter} from "../../js/modules/mastodonDateTools.js";
|
||||||
|
|
||||||
const dateSuffixAdder = (date) => {
|
|
||||||
if (date > 9 && date < 20) {
|
|
||||||
return "th";
|
|
||||||
} else {
|
|
||||||
let dateString = date < 10 ? "0" + date : "" + date;
|
|
||||||
if (dateString[1] < 4 && dateString[1] > 0) {
|
|
||||||
return dateString[1] == 1 ? "st" :
|
|
||||||
dateString[1] == 2 ? "nd" :
|
|
||||||
dateString[1] == 3 ? "rd" : null;
|
|
||||||
} else {
|
|
||||||
return "th"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const timeFormatter = (hours, minutes) => {
|
|
||||||
return `${hours < 12 ? hours : hours - 12}:${minutes < 10 ? "0" : ""}${minutes} ${hours < 12 ? "AM" : "PM"}`
|
|
||||||
}
|
|
||||||
|
|
||||||
const renderComment = (comment, target, parentIdm) => {
|
const renderComment = (comment, target, parentIdm) => {
|
||||||
const node = document
|
const node = document
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
const { DateTime } = require("luxon");
|
import { DateTime } from "luxon";
|
||||||
const markdownIt = require("markdown-it");
|
import markdownIt from "markdown-it";
|
||||||
const markdownItFootnote = require("markdown-it-footnote");
|
import markdownItFootnote from "markdown-it-footnote";
|
||||||
const markdownItAnchor = require("markdown-it-anchor");
|
import markdownItAnchor from "markdown-it-anchor";
|
||||||
const mdfigcaption = require('markdown-it-image-figures');
|
import mdfigcaption from 'markdown-it-image-figures';
|
||||||
const pluginRss = require("@11ty/eleventy-plugin-rss");
|
import pluginRss from "@11ty/eleventy-plugin-rss";
|
||||||
const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight");
|
import pluginSyntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight";
|
||||||
const pluginBundle = require("@11ty/eleventy-plugin-bundle");
|
import pluginBundle from "@11ty/eleventy-plugin-bundle";
|
||||||
const pluginNavigation = require("@11ty/eleventy-navigation");
|
import pluginNavigation from "@11ty/eleventy-navigation";
|
||||||
const prettier = require("prettier");
|
import prettier from "prettier";
|
||||||
const { EleventyHtmlBasePlugin } = require("@11ty/eleventy");
|
import { EleventyHtmlBasePlugin } from "@11ty/eleventy";
|
||||||
|
import {dateSuffixAdder, monthMap, timeFormatter} from "./public/js/modules/mastodonDateTools.js";
|
||||||
|
|
||||||
const figoptions = {
|
const figoptions = {
|
||||||
figcaption: true
|
figcaption: true
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = eleventyConfig => {
|
export default async function(eleventyConfig) {
|
||||||
|
|
||||||
// Helper Functions
|
// Helper Functions
|
||||||
const multiReplace = (text, replacementTable) => {
|
const multiReplace = (text, replacementTable) => {
|
||||||
@ -88,12 +89,38 @@ module.exports = eleventyConfig => {
|
|||||||
`;
|
`;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
eleventyConfig.addAsyncShortcode("toot", async function(instance, ID) {
|
||||||
|
const tootData = await fetch(
|
||||||
|
`https://${instance}/api/v1/statuses/${ID}`
|
||||||
|
);
|
||||||
|
|
||||||
|
const toot = await tootData.json();
|
||||||
|
|
||||||
|
const dateObj = new Date(toot.created_at);
|
||||||
|
|
||||||
|
const dateTime = `${dateObj.getDate()}${dateSuffixAdder(dateObj.getDate())} of ${monthMap[dateObj.getMonth()]}, ${dateObj.getFullYear()}, at ${timeFormatter(dateObj.getHours(), dateObj.getMinutes())}`;
|
||||||
|
|
||||||
|
return `
|
||||||
|
<wc-toot
|
||||||
|
author_name="${toot.account.display_name}"
|
||||||
|
author_url="${toot.url.replace(/\/[0-9]+/, "")}"
|
||||||
|
author_username="${toot.account.username}"
|
||||||
|
avatar_url="${toot.account.avatar_static}"
|
||||||
|
toot_content="${toot.content}"
|
||||||
|
toot_url="${toot.url}"
|
||||||
|
publish_date="${dateTime}"
|
||||||
|
sharp_corner="">
|
||||||
|
</wc-toot>
|
||||||
|
`
|
||||||
|
});
|
||||||
|
|
||||||
// Passthrough
|
// Passthrough
|
||||||
eleventyConfig.addPassthroughCopy({ 'public/xsl/*': "/xsl/" });
|
eleventyConfig.addPassthroughCopy({ 'public/xsl/*': "/xsl/" });
|
||||||
eleventyConfig.addPassthroughCopy({ 'public/img/*': "/img/" });
|
eleventyConfig.addPassthroughCopy({ 'public/img/*': "/img/" });
|
||||||
eleventyConfig.addPassthroughCopy({ 'public/robots.txt': "/" });
|
eleventyConfig.addPassthroughCopy({ 'public/robots.txt': "/" });
|
||||||
eleventyConfig.addPassthroughCopy({ 'public/js/*': "/js/" });
|
eleventyConfig.addPassthroughCopy({ 'public/js/*': "/js/" });
|
||||||
eleventyConfig.addPassthroughCopy({ 'public/js/webComponents/*': "/js/webComponents" });
|
eleventyConfig.addPassthroughCopy({ 'public/js/webComponents/*': "/js/webComponents" });
|
||||||
|
eleventyConfig.addPassthroughCopy({ 'public/js/modules/*': "/js/modules" });
|
||||||
// Copying so that basic.xsl can use it
|
// Copying so that basic.xsl can use it
|
||||||
eleventyConfig.addPassthroughCopy({ 'public/css/index.css': "/css/index.css" });
|
eleventyConfig.addPassthroughCopy({ 'public/css/index.css': "/css/index.css" });
|
||||||
eleventyConfig.addPassthroughCopy({ 'public/css/webfonts/*': "/css/webfonts/" });
|
eleventyConfig.addPassthroughCopy({ 'public/css/webfonts/*': "/css/webfonts/" });
|
||||||
|
@ -18,9 +18,10 @@
|
|||||||
--font-variation-default: "opsz" 18, "wght" 310, "SOFT" 40, "WONK" 0;
|
--font-variation-default: "opsz" 18, "wght" 310, "SOFT" 40, "WONK" 0;
|
||||||
--font-variation-ui: "wght" 500;
|
--font-variation-ui: "wght" 500;
|
||||||
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
|
--font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace;
|
||||||
--meta-font-size: var(--step--1);
|
--meta-font-family: var(--font-family-ui);
|
||||||
--meta-font-style: italic;
|
--meta-font-size: var(--step--2);
|
||||||
--meta-font-variation-settings: "opsz" 12, "wght" 310, "SOFT" 40, "WONK" 0;
|
--meta-font-style: normal;
|
||||||
|
--meta-font-variation-settings: var(--font-variation-ui);
|
||||||
--ui-letter-spacing: calc(var(--space-3xs) * 0.5);
|
--ui-letter-spacing: calc(var(--space-3xs) * 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,20 +387,30 @@ table th {
|
|||||||
.continue-discussion button {
|
.continue-discussion button {
|
||||||
margin-top: var(--space-xs);
|
margin-top: var(--space-xs);
|
||||||
}
|
}
|
||||||
wc-comment::part(author-link) {
|
wc-comment::part(author-link), wc-toot::part(author-link) {
|
||||||
font-size: var(--step-0);
|
font-size: var(--step-0);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
wc-comment::part(main) {
|
wc-comment::part(main) {
|
||||||
margin-bottom: var(--space-l);
|
margin-bottom: var(--space-l);
|
||||||
}
|
}
|
||||||
wc-comment::part(publish-date) {
|
wc-comment::part(publish-date), wc-toot::part(publish-date) {
|
||||||
|
font-family: var(--meta-font-family);
|
||||||
font-size: var(--meta-font-size);
|
font-size: var(--meta-font-size);
|
||||||
font-style: var(--meta-font-style);
|
font-style: var(--meta-font-style);
|
||||||
font-variation-settings: var(--font-variation-settings);
|
font-variation-settings: var(--font-variation-settings);
|
||||||
margin-top: -.25rem;
|
margin-top: -.25rem;
|
||||||
}
|
}
|
||||||
|
wc-toot::part(main) {
|
||||||
|
color: white;
|
||||||
|
font-family: var(--meta-font-family);
|
||||||
|
font-size: var(--step--1);
|
||||||
|
}
|
||||||
|
wc-toot::part(author), wc-toot::part(author-link){
|
||||||
|
color: white;
|
||||||
|
font-style: var(--meta-font-style);
|
||||||
|
font-variation-settings: "wght" 600;
|
||||||
|
}
|
||||||
/* Code Fences */
|
/* Code Fences */
|
||||||
pre,
|
pre,
|
||||||
code {
|
code {
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
import './webComponents/card.js';
|
import './webComponents/card.js';
|
||||||
import './webComponents/profilePic.js';
|
import './webComponents/profilePic.js';
|
||||||
import './webComponents/comment.js';
|
import './webComponents/comment.js';
|
||||||
|
import './webComponents/toot.js';
|
||||||
|
22
public/js/modules/mastodonDateTools.js
Normal file
22
public/js/modules/mastodonDateTools.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
const dateSuffixAdder = (date) => {
|
||||||
|
if (date > 9 && date < 20) {
|
||||||
|
return "th";
|
||||||
|
} else {
|
||||||
|
let dateString = date < 10 ? "0" + date : "" + date;
|
||||||
|
if (dateString[1] < 4 && dateString[1] > 0) {
|
||||||
|
return dateString[1] == 1 ? "st" :
|
||||||
|
dateString[1] == 2 ? "nd" :
|
||||||
|
dateString[1] == 3 ? "rd" : null;
|
||||||
|
} else {
|
||||||
|
return "th"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const monthMap = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
||||||
|
|
||||||
|
const timeFormatter = (hours, minutes) => {
|
||||||
|
return `${hours < 12 ? hours : hours - 12}:${minutes < 10 ? "0" : ""}${minutes} ${hours < 12 ? "AM" : "PM"}`
|
||||||
|
}
|
||||||
|
|
||||||
|
export {dateSuffixAdder, monthMap, timeFormatter};
|
136
public/js/webComponents/toot.js
Normal file
136
public/js/webComponents/toot.js
Normal file
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user