diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-12-06 12:36:30 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-12-06 12:36:30 -0400 |
commit | d48874a4be60d7455dd6321742102c9cfb77a9f1 (patch) | |
tree | 9a8452e6545d1e89e19c5ebf731c5a650b2be13e /src | |
parent | 7c70e24aa8680bb6b14d7e1fd224a091ea21b363 (diff) |
content: transformContent: new image attributes inline, pixelate
Diffstat (limited to 'src')
-rw-r--r-- | src/content/dependencies/transformContent.js | 10 | ||||
-rw-r--r-- | src/static/site6.css | 4 | ||||
-rw-r--r-- | src/util/replacer.js | 6 |
3 files changed, 17 insertions, 3 deletions
diff --git a/src/content/dependencies/transformContent.js b/src/content/dependencies/transformContent.js index 2002ebee..53341c31 100644 --- a/src/content/dependencies/transformContent.js +++ b/src/content/dependencies/transformContent.js @@ -369,14 +369,17 @@ export default { ? to('media.path', node.src.slice('media/'.length)) : node.src); - const {link, width, height} = node; + const {inline, link, width, height, pixelate} = node; - if (node.inline) { + if (inline) { return { type: 'image', inline: true, data: - html.tag('img', {src, width, height}), + html.tag('img', { + src, width, height, + class: pixelate && 'pixelate', + }), }; } @@ -393,6 +396,7 @@ export default { width: width ?? null, height: height ?? null, thumb: slots.thumb, + class: pixelate && 'pixelate', })), }; } diff --git a/src/static/site6.css b/src/static/site6.css index d2cda06d..16455418 100644 --- a/src/static/site6.css +++ b/src/static/site6.css @@ -1045,6 +1045,10 @@ img { object-fit: cover; } +img.pixelate { + image-rendering: crisp-edges; +} + .reveal { position: relative; width: 100%; diff --git a/src/util/replacer.js b/src/util/replacer.js index 095ee060..a2df2c3f 100644 --- a/src/util/replacer.js +++ b/src/util/replacer.js @@ -313,6 +313,11 @@ export function postprocessImages(inputNodes) { } imageNode.inline = (() => { + // Images can force themselves to be rendered inline using a custom + // attribute - this style just works better for certain embeds, + // usually jokes or small images. + if (attributes.get('inline')) return true; + // If we've already determined we're in the middle of a line, // we're inline. (Of course!) if (!atStartOfLine) { @@ -344,6 +349,7 @@ export function postprocessImages(inputNodes) { if (attributes.get('link')) imageNode.link = attributes.get('link'); if (attributes.get('width')) imageNode.width = parseInt(attributes.get('width')); if (attributes.get('height')) imageNode.height = parseInt(attributes.get('height')); + if (attributes.get('pixelate')) imageNode.pixelate = true; outputNodes.push(imageNode); |