Post data to a PHP endpoint and dynamically display a response with Alpine.js
<html x-data="utility">
<!-- ... -->
{ | |
"[javascriptreact]": { | |
"editor.defaultFormatter": "vscode.typescript-language-features" | |
}, | |
"[typescriptreact]": { | |
"editor.defaultFormatter": "vscode.typescript-language-features" | |
}, | |
"editor.bracketPairColorization.enabled": false, | |
"editor.cursorBlinking": "phase", | |
"editor.cursorSmoothCaretAnimation": "on", |
const sticker = (set: string[], canvas: HTMLElement | null) => { | |
let z = 0; | |
if (canvas) { | |
canvas.onclick = (event: MouseEvent) => { | |
let randomImage = set[Math.floor(Math.random() * set.length)]; | |
let randomRotation = Math.random() * (45 - -45) + -45 | |
const element = document.createElement('img'); |
export const drag = (elements: NodeListOf<HTMLElement>) => { | |
let z = 0; | |
if (elements) { | |
for (const element of elements) { | |
let [adjustedX, adjustedY, currentX, currentY] = [0, 0, 0, 0]; | |
let moved = false; | |
const dragMouseUp = (event: MouseEvent) => { | |
document.onmousemove = null; |
:root { | |
font-size: max(calc(16vmin * 100 / 1440), 16px); | |
} | |
*:where(:not(iframe, canvas, img, svg, video):not(svg *)) { | |
all: unset; | |
display: revert; | |
outline: revert; | |
} |
# https://github.com/nvm-sh/nvm | |
export NVM_DIR="$HOME/.nvm" | |
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" | |
# https://github.com/zsh-users/zsh-autosuggestions | |
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh | |
# https://starship.rs/ | |
eval "$(starship init zsh)" |
import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js"; | |
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; | |
import { | |
AnimationMixer, | |
Clock, | |
Color, | |
DirectionalLight, | |
HemisphereLight, | |
PerspectiveCamera, |
const scrollVideo = (media, threshold = 1) => { | |
const video = document.querySelector(media); | |
const target = video.parentNode; | |
const scrollDistance = target.clientHeight - window.innerHeight; | |
let observer = new IntersectionObserver( | |
(entries, observer) => { | |
entries.forEach((entry) => { | |
if (entry.isIntersecting) { |
// Transform a ISO 8601 format date string to a given locale ―――――――――――――――― // | |
const date = (input, locale = "de-DE", options = { dateStyle: "long" }) => { | |
const date = Date.parse(input); | |
return new Intl.DateTimeFormat(locale, options).format(date); | |
}; | |
// Mount, toggle and store dark mode theme on client ―――――――――――――――――――――――― // | |
/** | |
* @param {object} night Configure night mode controls and targets. | |
* @param {string} night.mount Mount theme class to single given DOM element. |
<?php | |
$response = new \stdClass(); | |
$response->state = [ | |
'code' => 200, | |
'type' => 'success', // Can be used for CSS indicators classes such as `.is-[type]` | |
'message' => 'Your data has ben successfully submitted.' | |
]; |