// see JSPanel.de sclass JSPanel { sclass Options { S headerTitle = null; new LS contents; // HTML content Map asMap() { ret litorderedmap( headerTitle := nullIfEmpty(headerTitle), content := nullIfEmpty(lines_rtrim(contents))); } } Options newOptions() { ret new Options; } // expression to create this panel JS createPanel(Options options default null) { ret JS("jsPanel.create($options)", options := options?.asMap()); } S headStuff() { ret hlink("https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel.css") + hlink("https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel.js"); } ifdef guggida /* */ endifdef }