Compare commits

..

No commits in common. "f2bca309f5b7fa1124992d34c056ef34df23333a" and "328464670d83f23905f543357a827be59194e9ec" have entirely different histories.

7 changed files with 50 additions and 58 deletions

View file

@ -7,5 +7,3 @@ export const sanitizeMediaString = (input) => {
return slugified.replace(/^-+|-+$/g, '');
}
export const removeUrlProtocol = (url) => url ? url.replace(/^https?:\/\//, '') : '';

View file

@ -1,7 +1,6 @@
import inquirer from 'inquirer';
import { loadConfig } from '../config.js';
import { initDirectusClient, searchItems, createItem } from '../directus/client.js';
import { removeUrlProtocol } from '../sanitize.js';
export const addLinkToShare = async () => {
const config = await loadConfig();
@ -69,15 +68,10 @@ export const addLinkToShare = async () => {
type: 'list',
name: 'author',
message: 'Select an author:',
choices: authorMatches.map(a => {
const cleanUrl = removeUrlProtocol(a.url);
const display = cleanUrl ? `${a.name} (${cleanUrl})` : a.name;
return {
name: display,
choices: authorMatches.map(a => ({
name: a.name || a.id,
value: a.id,
};
})
}))
});
author = response.author;

4
cli/package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "coryd",
"version": "3.2.1",
"version": "3.2.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "coryd",
"version": "3.2.1",
"version": "3.2.0",
"dependencies": {
"@directus/sdk": "^19.1.0",
"chalk": "^5.4.1",

View file

@ -1,6 +1,6 @@
{
"name": "coryd",
"version": "3.2.1",
"version": "3.2.0",
"description": "The CLI for my site to run scripts, manage and download assets.",
"type": "module",
"bin": {

18
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "coryd.dev",
"version": "9.1.8",
"version": "9.1.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "coryd.dev",
"version": "9.1.8",
"version": "9.1.7",
"license": "MIT",
"dependencies": {
"minisearch": "^7.1.2",
@ -31,7 +31,7 @@
"postcss-import": "^16.1.0",
"postcss-import-ext-glob": "^2.1.1",
"rimraf": "^6.0.1",
"terser": "^5.42.0",
"terser": "^5.41.0",
"truncate-html": "^1.2.1"
},
"engines": {
@ -1385,9 +1385,9 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
"version": "1.5.166",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.166.tgz",
"integrity": "sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==",
"version": "1.5.165",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz",
"integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==",
"dev": true,
"license": "ISC"
},
@ -4091,9 +4091,9 @@
}
},
"node_modules/terser": {
"version": "5.42.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.42.0.tgz",
"integrity": "sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==",
"version": "5.41.0",
"resolved": "https://registry.npmjs.org/terser/-/terser-5.41.0.tgz",
"integrity": "sha512-H406eLPXpZbAX14+B8psIuvIr8+3c+2hkuYzpMkoE0ij+NdsVATbA78vb8neA/eqrj7rywa2pIkdmWRsXW6wmw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {

View file

@ -1,6 +1,6 @@
{
"name": "coryd.dev",
"version": "9.1.8",
"version": "9.1.7",
"description": "The source for my personal site. Built using 11ty (and other tools).",
"type": "module",
"engines": {
@ -51,7 +51,7 @@
"postcss-import": "^16.1.0",
"postcss-import-ext-glob": "^2.1.1",
"rimraf": "^6.0.1",
"terser": "^5.42.0",
"terser": "^5.41.0",
"truncate-html": "^1.2.1"
}
}

View file

@ -1,64 +1,64 @@
window.addEventListener('load', () => {
window.addEventListener("load", () => {
// service worker
if ('serviceWorker' in navigator) navigator.serviceWorker.register('/assets/scripts/sw.js');
// dialog controls
(() => {
const dialogButtons = document.querySelectorAll('.dialog-open');
const dialogButtons = document.querySelectorAll(".dialog-open");
if (!dialogButtons.length) return;
dialogButtons.forEach((button) => {
const dialogId = button.getAttribute('data-dialog-trigger');
const dialogId = button.getAttribute("data-dialog-trigger");
const dialog = document.getElementById(`dialog-${dialogId}`);
if (!dialog) return;
const closeButton = dialog.querySelector('.dialog-close');
const closeButton = dialog.querySelector(".dialog-close");
button.addEventListener('click', async () => {
button.addEventListener("click", async () => {
const isDynamic = dialog.dataset.dynamic;
const isLoaded = dialog.dataset.loaded;
if (isDynamic && !isLoaded) {
const markdownFields = dialog.dataset.markdown || '';
const markdownFields = dialog.dataset.markdown || "";
try {
const res = await fetch(`/api/query.php?data=${isDynamic}&id=${dialogId}&markdown=${encodeURIComponent(markdownFields)}`);
const [data] = await res.json();
const firstField = markdownFields.split(',')[0]?.trim();
const html = data?.[`${firstField}_html`] || '<p>No notes available.</p>';
const firstField = markdownFields.split(",")[0]?.trim();
const html = data?.[`${firstField}_html`] || "<p>No notes available.</p>";
dialog.querySelectorAll('.dialog-dynamic').forEach((el) => el.remove());
dialog.querySelectorAll(".dialog-dynamic").forEach((el) => el.remove());
const container = document.createElement('div');
const container = document.createElement("div");
container.classList.add('dialog-dynamic');
container.classList.add("dialog-dynamic");
container.innerHTML = html;
dialog.appendChild(container);
dialog.dataset.loaded = 'true';
dialog.dataset.loaded = "true";
} catch (err) {
dialog.querySelectorAll('.dialog-dynamic').forEach((el) => el.remove());
dialog.querySelectorAll(".dialog-dynamic").forEach((el) => el.remove());
const errorNode = document.createElement('div');
const errorNode = document.createElement("div");
errorNode.classList.add('dialog-dynamic');
errorNode.textContent = 'Failed to load content.';
errorNode.classList.add("dialog-dynamic");
errorNode.textContent = "Failed to load content.";
dialog.appendChild(errorNode);
console.warn('Dialog content load error:', err);
console.warn("Dialog content load error:", err);
}
}
dialog.showModal();
dialog.classList.remove('closing');
dialog.classList.remove("closing");
});
if (closeButton) {
closeButton.addEventListener('click', () => {
dialog.classList.add('closing');
closeButton.addEventListener("click", () => {
dialog.classList.add("closing");
setTimeout(() => dialog.close(), 200);
});
}
dialog.addEventListener('click', (event) => {
dialog.addEventListener("click", (event) => {
const rect = dialog.getBoundingClientRect();
const outsideClick =
event.clientX < rect.left ||
@ -67,14 +67,14 @@ window.addEventListener('load', () => {
event.clientY > rect.bottom;
if (outsideClick) {
dialog.classList.add('closing');
dialog.classList.add("closing");
setTimeout(() => dialog.close(), 200);
}
});
dialog.addEventListener('cancel', (event) => {
dialog.addEventListener("cancel", (event) => {
event.preventDefault();
dialog.classList.add('closing');
dialog.classList.add("closing");
setTimeout(() => dialog.close(), 200);
});
});
@ -82,23 +82,23 @@ window.addEventListener('load', () => {
// text toggle for media pages
(() => {
const button = document.querySelector('[data-toggle-button]');
const content = document.querySelector('[data-toggle-content]');
const text = document.querySelectorAll('[data-toggle-content] p');
const button = document.querySelector("[data-toggle-button]");
const content = document.querySelector("[data-toggle-content]");
const text = document.querySelectorAll("[data-toggle-content] p");
const minHeight = 500; // this needs to match the height set on [data-toggle-content].text-toggle-hidden in text-toggle.css
const interiorHeight = Array.from(text).reduce((acc, node) => acc + node.scrollHeight, 0);
if (!button || !content || !text.length) return;
if (interiorHeight < minHeight) {
content.classList.remove('text-toggle-hidden');
button.style.display = 'none';
content.classList.remove("text-toggle-hidden");
button.style.display = "none";
return;
}
button.addEventListener('click', () => {
const isHidden = content.classList.toggle('text-toggle-hidden');
button.textContent = isHidden ? 'Show more' : 'Show less';
button.addEventListener("click", () => {
const isHidden = content.classList.toggle("text-toggle-hidden");
button.textContent = isHidden ? "Show more" : "Show less";
});
})();
});