Skip to content

Instantly share code, notes, and snippets.

View wolfadex's full-sized avatar

Wolfgang Schuster wolfadex

View GitHub Profile
module Main exposing (run)
import BackendTask
import BackendTask.File
import BackendTask.Glob
import Elm
import Elm.Annotation
import Pages.Script exposing (Script)
customElements.define(
"custom-image",
class extends HTMLElement {
constructor() {
this.imgEl = document.createElement("img");
this.appendChild(this.imgEl);
}
connectedCallback() {
this.render();
@wolfadex
wolfadex / elm-portal.js
Last active May 7, 2024 17:28
A Portal web component for Elm
window.customElements.define("elm-portal", class extends HTMLElement {
// Base custom element stuff
constructor() {
super();
this._targetNode = document.createElement('div');
}
connectedCallback() {
document.querySelector(this.getAttribute("data-target-selector")).appendChild(this._targetNode);
}
@wolfadex
wolfadex / codemirror-wrapper.js
Created November 11, 2021 16:24
Basic codemirror custom element wrapper
import { basicSetup, EditorView } from "@codemirror/basic-setup";
import { EditorState, Compartment, StateField } from "@codemirror/state";
import { markdown } from "@codemirror/lang-markdown";
customElements.define(
"markdown-editor",
class extends HTMLElement {
constructor() {
super();
}
@wolfadex
wolfadex / node-elm-loader.mjs
Created March 24, 2021 01:48
Experimental Elm node loader
import { URL, pathToFileURL } from "url";
import fs from "fs";
import spawn from "cross-spawn";
import { track } from "temp";
import _ from "lodash";
const temp = track();
const baseURL = pathToFileURL(`${process.cwd()}/`).href;
// Elm files end in .elm.
@wolfadex
wolfadex / build-elm-module.sh
Created April 20, 2020 04:55
Compile Elm to a module
#!/bin/bash
set -e
js="src/elm.js"
min="src/elm.min.js"
elm make --optimize --output=$js $@
# change the cmpiled elm file to not immediately call the compiled function