// Config Utils - Utility functions for configuration management class ConfigUtils { constructor() { // No initialization needed } formatSubcategoryName(subcategoryName) { return subcategoryName.replace(/_/g, ' ').replace(/\b\w/g, function(l) { return l.toUpperCase(); }); } cleanDescription(description) { return description .replace(/\*\*ADVANCED\*\*/g, '') .replace(/\*\*UNUSED\*\*/g, '') .replace(/^\s+|\s+$/g, '') // Trim whitespace .replace(/\s{2,}/g, ' '); // Replace multiple spaces with single space } filterSubcategoriesByType(configData, category) { // Filter subcategories by category and separate into regular, advanced, and unused var regularSubcategories = []; var advancedSubcategories = []; var unusedSubcategories = []; for (const [subcategoryName, subcategoryData] of Object.entries(configData)) { if (subcategoryData.category === category) { if (subcategoryData.description.includes('**ADVANCED**')) { advancedSubcategories.push(subcategoryName); } else if (subcategoryData.description.includes('**UNUSED**')) { unusedSubcategories.push(subcategoryName); } else { regularSubcategories.push(subcategoryName); } } } return { regular: regularSubcategories, advanced: advancedSubcategories, unused: unusedSubcategories }; } async renderSectionedContent(formHTML, advancedSubcategories, unusedSubcategories, self, category, configData) { // Add danger zone toggle controls if needed if (advancedSubcategories.length > 0 || unusedSubcategories.length > 0) { // Divider above the advanced/danger-zone container, mirroring the one // above the Save/Reset buttons — separates the regular fields from the // "Show Advanced Options" toggle. formHTML += '
'; formHTML += this.generateToggleControls(advancedSubcategories.length > 0, unusedSubcategories.length > 0); } // Render advanced sections (hidden by default). The old grouping // header ("🛠️ Advanced Configuration") is gone — each subcategory // self-identifies via the red "Advanced" badge on its title (see // .is-advanced .domains-header h3::after in config.css). if (advancedSubcategories.length > 0) { formHTML += ''; } // Render unused sections (hidden by default) if (unusedSubcategories.length > 0) { formHTML += ''; } return formHTML; } generateToggleControls(hasAdvanced = false, hasUnused = false) { if (!hasAdvanced && !hasUnused) { return ''; // Don't show danger zone if no content } let formHTML = 'These options are for advanced users and may affect system stability