mirror of
https://github.com/jaandrle/deka-dom-el
synced 2025-04-02 04:05:52 +02:00
* 🐛 fixes #41 * ⚡ adjust package size limits * 🔤 * 📺 requestIdleCallback doesn need to be global * 🔤 corrects irland page headers * 📺 version * ⚡ Signal ← SignalReadonly * 🐛 ensures only one disconncetd listener …for cleanup * ⚡ 🔤 Better build and improve texting * 🐛 logo alignemt (due to gh) * 🔤 md enhancements * 🔤 ⚡ products
176 lines
3.5 KiB
JavaScript
176 lines
3.5 KiB
JavaScript
import { page_id, styles } from "../ssr.js";
|
|
|
|
styles.css`
|
|
#html-to-dde-converter {
|
|
grid-column: full-main;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1.5rem;
|
|
padding: 1.5rem;
|
|
border-radius: var(--border-radius);
|
|
background-color: var(--bg-sidebar);
|
|
box-shadow: var(--shadow);
|
|
border: 1px solid var(--border);
|
|
}
|
|
|
|
#html-to-dde-converter h3 {
|
|
margin-top: 0;
|
|
color: var(--primary);
|
|
}
|
|
|
|
#html-to-dde-converter .description {
|
|
color: var(--text-light);
|
|
font-size: 0.95rem;
|
|
margin-top: -1rem;
|
|
}
|
|
|
|
#html-to-dde-converter .converter-form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 1rem;
|
|
}
|
|
|
|
#html-to-dde-converter .input-group,
|
|
#html-to-dde-converter .output-group {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
#html-to-dde-converter [type="number"]{
|
|
width: 3em;
|
|
font-variant-numeric: tabular-nums;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
#html-to-dde-converter label {
|
|
font-weight: 500;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
#html-to-dde-converter .options {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 1rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
#html-to-dde-converter .option-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
#html-to-dde-converter textarea {
|
|
font-family: var(--font-mono);
|
|
font-size: 0.9rem;
|
|
padding: 1rem;
|
|
border-radius: var(--border-radius);
|
|
border: 1px solid var(--border);
|
|
background-color: var(--bg);
|
|
color: var(--text);
|
|
min-height: 200px;
|
|
height: 25em;
|
|
resize: vertical;
|
|
}
|
|
|
|
#html-to-dde-converter textarea:focus {
|
|
outline: 2px solid var(--primary-light);
|
|
outline-offset: 1px;
|
|
}
|
|
|
|
#html-to-dde-converter .button-group {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
#html-to-dde-converter button {
|
|
padding: 0.5rem 1rem;
|
|
border-radius: var(--border-radius);
|
|
border: none;
|
|
background-color: var(--primary);
|
|
color: var(--button-text);
|
|
font-weight: 500;
|
|
cursor: pointer;
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
#html-to-dde-converter button:hover {
|
|
background-color: var(--primary-dark);
|
|
}
|
|
|
|
#html-to-dde-converter button.secondary {
|
|
background-color: transparent;
|
|
border: 1px solid var(--border);
|
|
color: var(--text);
|
|
}
|
|
|
|
#html-to-dde-converter button.secondary:hover {
|
|
background-color: var(--bg);
|
|
border-color: var(--primary);
|
|
}
|
|
|
|
#html-to-dde-converter .copy-button {
|
|
background-color: var(--secondary);
|
|
}
|
|
|
|
#html-to-dde-converter .copy-button:hover {
|
|
background-color: var(--secondary-dark);
|
|
}
|
|
|
|
#html-to-dde-converter .status {
|
|
font-size: 0.9rem;
|
|
color: var(--text-light);
|
|
}
|
|
|
|
#html-to-dde-converter .error {
|
|
color: hsl(0, 100%, 60%);
|
|
font-size: 0.9rem;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
/* Sample HTML examples list */
|
|
#html-to-dde-converter .examples-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
#html-to-dde-converter .example-button {
|
|
font-size: 0.85rem;
|
|
padding: 0.25rem 0.5rem;
|
|
}
|
|
`;
|
|
|
|
import { ireland } from "./ireland.html.js";
|
|
import { el } from "deka-dom-el";
|
|
const fileURL= url=> new URL(url, import.meta.url);
|
|
|
|
export function converter(){
|
|
registerClientPart(page_id);
|
|
return el(ireland, {
|
|
src: fileURL("./converter.js.js"),
|
|
exportName: "converter",
|
|
});
|
|
}
|
|
|
|
let is_registered= {};
|
|
/** @param {string} page_id */
|
|
function registerClientPart(page_id){
|
|
if(is_registered[page_id]) return;
|
|
|
|
document.head.append(
|
|
el("script", {
|
|
// src: "https://unpkg.com/@beforesemicolon/html-parser/dist/client.js",
|
|
src: "https://cdn.jsdelivr.net/npm/@beforesemicolon/html-parser/dist/client.js",
|
|
type: "text/javascript",
|
|
charset: "utf-8",
|
|
defer: true
|
|
}),
|
|
);
|
|
is_registered[page_id]= true;
|
|
}
|