(function () { 'use strict'; const root = window.PixelIslandModules ||= {}; const BASE_COLOR_CODES = '0123456789abcdefghij'; const ADVANCED_COLOR_CODES = 'klmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + "!#$%&'()*+,-/:;<=>?@[]^_`{|}~"; const COLOR_CODES = BASE_COLOR_CODES + ADVANCED_COLOR_CODES; const BASIC_PALETTE_COUNT = BASE_COLOR_CODES.length; const DEFAULT_SELECTED_COLOR_CODE = BASE_COLOR_CODES.includes('a') ? 'a' : (BASE_COLOR_CODES[0] || '0'); function hslToHex(h, s, l) { s /= 100; l /= 100; const k = (n) => (n + h / 30) % 12; const a = s * Math.min(l, 1 - l); const f = (n) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1))); const toHex = (value) => Math.round(255 * value).toString(16).padStart(2, '0'); return `#${toHex(f(0))}${toHex(f(8))}${toHex(f(4))}`; } function buildPalette() { const basicColors = [ '#111827', '#374151', '#6b7280', '#d1d5db', '#fff7ed', '#7f1d1d', '#dc2626', '#f97316', '#facc15', '#84cc16', '#16a34a', '#14b8a6', '#06b6d4', '#2563eb', '#4f46e5', '#7c3aed', '#c026d3', '#ec4899', '#f5d0a9', '#7c4a2d' ]; const advancedColors = [ '#fafafa', '#f5f5f4', '#e7e5e4', '#d6d3d1', '#a8a29e', '#78716c', '#57534e', '#292524', '#0c0a09', '#fef3c7', '#fde68a', '#d6a25f', '#9a6a3a', '#5c3b24', '#fee2e2', '#fca5a5', '#ef4444', '#b91c1c', '#7f1d1d', '#ffedd5', '#fdba74', '#f97316', '#c2410c', '#7c2d12', '#fef9c3', '#fde047', '#eab308', '#a16207', '#713f12', '#ecfccb', '#bef264', '#84cc16', '#4d7c0f', '#365314', '#dcfce7', '#86efac', '#15803d', '#ccfbf1', '#5eead4', '#14b8a6', '#0f766e', '#134e4a', '#cffafe', '#67e8f9', '#22d3ee', '#06b6d4', '#0e7490', '#e0f2fe', '#38bdf8', '#dbeafe', '#93c5fd', '#3b82f6', '#2563eb', '#1d4ed8', '#1e3a8a', '#e0e7ff', '#a5b4fc', '#6366f1', '#4f46e5', '#3730a3', '#ede9fe', '#c4b5fd', '#8b5cf6', '#fae8ff', '#e879f9', '#c026d3', '#86198f', '#fce7f3', '#f9a8d4', '#ec4899', '#be185d' ]; const colors = [...basicColors, ...advancedColors]; return COLOR_CODES.split('').map((code, index) => ({ code, color: colors[index] || hslToHex((index * 47) % 360, 72, 58) })); } const PALETTE = buildPalette(); const PALETTE_BY_CODE = Object.fromEntries(PALETTE.map((p) => [p.code, p.color])); root.Palette = { BASE_COLOR_CODES, ADVANCED_COLOR_CODES, COLOR_CODES, BASIC_PALETTE_COUNT, DEFAULT_SELECTED_COLOR_CODE, PALETTE, PALETTE_BY_CODE, buildPalette, hslToHex }; })();