Compare commits
No commits in common. "f2bca309f5b7fa1124992d34c056ef34df23333a" and "328464670d83f23905f543357a827be59194e9ec" have entirely different histories.
f2bca309f5
...
328464670d
7 changed files with 50 additions and 58 deletions
|
@ -7,5 +7,3 @@ export const sanitizeMediaString = (input) => {
|
||||||
|
|
||||||
return slugified.replace(/^-+|-+$/g, '');
|
return slugified.replace(/^-+|-+$/g, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
export const removeUrlProtocol = (url) => url ? url.replace(/^https?:\/\//, '') : '';
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import inquirer from 'inquirer';
|
import inquirer from 'inquirer';
|
||||||
import { loadConfig } from '../config.js';
|
import { loadConfig } from '../config.js';
|
||||||
import { initDirectusClient, searchItems, createItem } from '../directus/client.js';
|
import { initDirectusClient, searchItems, createItem } from '../directus/client.js';
|
||||||
import { removeUrlProtocol } from '../sanitize.js';
|
|
||||||
|
|
||||||
export const addLinkToShare = async () => {
|
export const addLinkToShare = async () => {
|
||||||
const config = await loadConfig();
|
const config = await loadConfig();
|
||||||
|
@ -69,15 +68,10 @@ export const addLinkToShare = async () => {
|
||||||
type: 'list',
|
type: 'list',
|
||||||
name: 'author',
|
name: 'author',
|
||||||
message: 'Select an author:',
|
message: 'Select an author:',
|
||||||
choices: authorMatches.map(a => {
|
choices: authorMatches.map(a => ({
|
||||||
const cleanUrl = removeUrlProtocol(a.url);
|
name: a.name || a.id,
|
||||||
const display = cleanUrl ? `${a.name} (${cleanUrl})` : a.name;
|
|
||||||
|
|
||||||
return {
|
|
||||||
name: display,
|
|
||||||
value: a.id,
|
value: a.id,
|
||||||
};
|
}))
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
|
||||||
author = response.author;
|
author = response.author;
|
||||||
|
|
4
cli/package-lock.json
generated
4
cli/package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "coryd",
|
"name": "coryd",
|
||||||
"version": "3.2.1",
|
"version": "3.2.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "coryd",
|
"name": "coryd",
|
||||||
"version": "3.2.1",
|
"version": "3.2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@directus/sdk": "^19.1.0",
|
"@directus/sdk": "^19.1.0",
|
||||||
"chalk": "^5.4.1",
|
"chalk": "^5.4.1",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "coryd",
|
"name": "coryd",
|
||||||
"version": "3.2.1",
|
"version": "3.2.0",
|
||||||
"description": "The CLI for my site to run scripts, manage and download assets.",
|
"description": "The CLI for my site to run scripts, manage and download assets.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
18
package-lock.json
generated
18
package-lock.json
generated
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "coryd.dev",
|
"name": "coryd.dev",
|
||||||
"version": "9.1.8",
|
"version": "9.1.7",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "coryd.dev",
|
"name": "coryd.dev",
|
||||||
"version": "9.1.8",
|
"version": "9.1.7",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minisearch": "^7.1.2",
|
"minisearch": "^7.1.2",
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-import-ext-glob": "^2.1.1",
|
"postcss-import-ext-glob": "^2.1.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"terser": "^5.42.0",
|
"terser": "^5.41.0",
|
||||||
"truncate-html": "^1.2.1"
|
"truncate-html": "^1.2.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -1385,9 +1385,9 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.5.166",
|
"version": "1.5.165",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.166.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz",
|
||||||
"integrity": "sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==",
|
"integrity": "sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
@ -4091,9 +4091,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/terser": {
|
"node_modules/terser": {
|
||||||
"version": "5.42.0",
|
"version": "5.41.0",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.42.0.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.41.0.tgz",
|
||||||
"integrity": "sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==",
|
"integrity": "sha512-H406eLPXpZbAX14+B8psIuvIr8+3c+2hkuYzpMkoE0ij+NdsVATbA78vb8neA/eqrj7rywa2pIkdmWRsXW6wmw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "coryd.dev",
|
"name": "coryd.dev",
|
||||||
"version": "9.1.8",
|
"version": "9.1.7",
|
||||||
"description": "The source for my personal site. Built using 11ty (and other tools).",
|
"description": "The source for my personal site. Built using 11ty (and other tools).",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"postcss-import-ext-glob": "^2.1.1",
|
"postcss-import-ext-glob": "^2.1.1",
|
||||||
"rimraf": "^6.0.1",
|
"rimraf": "^6.0.1",
|
||||||
"terser": "^5.42.0",
|
"terser": "^5.41.0",
|
||||||
"truncate-html": "^1.2.1"
|
"truncate-html": "^1.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,64 +1,64 @@
|
||||||
window.addEventListener('load', () => {
|
window.addEventListener("load", () => {
|
||||||
// service worker
|
// service worker
|
||||||
if ('serviceWorker' in navigator) navigator.serviceWorker.register('/assets/scripts/sw.js');
|
if ('serviceWorker' in navigator) navigator.serviceWorker.register('/assets/scripts/sw.js');
|
||||||
|
|
||||||
// dialog controls
|
// dialog controls
|
||||||
(() => {
|
(() => {
|
||||||
const dialogButtons = document.querySelectorAll('.dialog-open');
|
const dialogButtons = document.querySelectorAll(".dialog-open");
|
||||||
if (!dialogButtons.length) return;
|
if (!dialogButtons.length) return;
|
||||||
|
|
||||||
dialogButtons.forEach((button) => {
|
dialogButtons.forEach((button) => {
|
||||||
const dialogId = button.getAttribute('data-dialog-trigger');
|
const dialogId = button.getAttribute("data-dialog-trigger");
|
||||||
const dialog = document.getElementById(`dialog-${dialogId}`);
|
const dialog = document.getElementById(`dialog-${dialogId}`);
|
||||||
if (!dialog) return;
|
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 isDynamic = dialog.dataset.dynamic;
|
||||||
const isLoaded = dialog.dataset.loaded;
|
const isLoaded = dialog.dataset.loaded;
|
||||||
|
|
||||||
if (isDynamic && !isLoaded) {
|
if (isDynamic && !isLoaded) {
|
||||||
const markdownFields = dialog.dataset.markdown || '';
|
const markdownFields = dialog.dataset.markdown || "";
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`/api/query.php?data=${isDynamic}&id=${dialogId}&markdown=${encodeURIComponent(markdownFields)}`);
|
const res = await fetch(`/api/query.php?data=${isDynamic}&id=${dialogId}&markdown=${encodeURIComponent(markdownFields)}`);
|
||||||
const [data] = await res.json();
|
const [data] = await res.json();
|
||||||
const firstField = markdownFields.split(',')[0]?.trim();
|
const firstField = markdownFields.split(",")[0]?.trim();
|
||||||
const html = data?.[`${firstField}_html`] || '<p>No notes available.</p>';
|
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;
|
container.innerHTML = html;
|
||||||
dialog.appendChild(container);
|
dialog.appendChild(container);
|
||||||
dialog.dataset.loaded = 'true';
|
dialog.dataset.loaded = "true";
|
||||||
} catch (err) {
|
} 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.classList.add("dialog-dynamic");
|
||||||
errorNode.textContent = 'Failed to load content.';
|
errorNode.textContent = "Failed to load content.";
|
||||||
dialog.appendChild(errorNode);
|
dialog.appendChild(errorNode);
|
||||||
|
|
||||||
console.warn('Dialog content load error:', err);
|
console.warn("Dialog content load error:", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog.showModal();
|
dialog.showModal();
|
||||||
dialog.classList.remove('closing');
|
dialog.classList.remove("closing");
|
||||||
});
|
});
|
||||||
|
|
||||||
if (closeButton) {
|
if (closeButton) {
|
||||||
closeButton.addEventListener('click', () => {
|
closeButton.addEventListener("click", () => {
|
||||||
dialog.classList.add('closing');
|
dialog.classList.add("closing");
|
||||||
setTimeout(() => dialog.close(), 200);
|
setTimeout(() => dialog.close(), 200);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
dialog.addEventListener('click', (event) => {
|
dialog.addEventListener("click", (event) => {
|
||||||
const rect = dialog.getBoundingClientRect();
|
const rect = dialog.getBoundingClientRect();
|
||||||
const outsideClick =
|
const outsideClick =
|
||||||
event.clientX < rect.left ||
|
event.clientX < rect.left ||
|
||||||
|
@ -67,14 +67,14 @@ window.addEventListener('load', () => {
|
||||||
event.clientY > rect.bottom;
|
event.clientY > rect.bottom;
|
||||||
|
|
||||||
if (outsideClick) {
|
if (outsideClick) {
|
||||||
dialog.classList.add('closing');
|
dialog.classList.add("closing");
|
||||||
setTimeout(() => dialog.close(), 200);
|
setTimeout(() => dialog.close(), 200);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog.addEventListener('cancel', (event) => {
|
dialog.addEventListener("cancel", (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
dialog.classList.add('closing');
|
dialog.classList.add("closing");
|
||||||
setTimeout(() => dialog.close(), 200);
|
setTimeout(() => dialog.close(), 200);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -82,23 +82,23 @@ window.addEventListener('load', () => {
|
||||||
|
|
||||||
// text toggle for media pages
|
// text toggle for media pages
|
||||||
(() => {
|
(() => {
|
||||||
const button = document.querySelector('[data-toggle-button]');
|
const button = document.querySelector("[data-toggle-button]");
|
||||||
const content = document.querySelector('[data-toggle-content]');
|
const content = document.querySelector("[data-toggle-content]");
|
||||||
const text = document.querySelectorAll('[data-toggle-content] p');
|
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 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);
|
const interiorHeight = Array.from(text).reduce((acc, node) => acc + node.scrollHeight, 0);
|
||||||
|
|
||||||
if (!button || !content || !text.length) return;
|
if (!button || !content || !text.length) return;
|
||||||
|
|
||||||
if (interiorHeight < minHeight) {
|
if (interiorHeight < minHeight) {
|
||||||
content.classList.remove('text-toggle-hidden');
|
content.classList.remove("text-toggle-hidden");
|
||||||
button.style.display = 'none';
|
button.style.display = "none";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.addEventListener('click', () => {
|
button.addEventListener("click", () => {
|
||||||
const isHidden = content.classList.toggle('text-toggle-hidden');
|
const isHidden = content.classList.toggle("text-toggle-hidden");
|
||||||
button.textContent = isHidden ? 'Show more' : 'Show less';
|
button.textContent = isHidden ? "Show more" : "Show less";
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue