function getWidgetForId(baseWidgetDefinitions, widgetId) { return baseWidgetDefinitions.find(w => w.id === widgetId) } function addWidget(widgetId) { var widgets = SettingsData.controlCenterWidgets.slice() var widget = { "id": widgetId, "enabled": true, "width": 50 } if (widgetId === "diskUsage") { widget.instanceId = generateUniqueId() widget.mountPath = "/" } if (widgetId === "brightnessSlider") { widget.instanceId = generateUniqueId() widget.deviceName = "" } widgets.push(widget) SettingsData.setControlCenterWidgets(widgets) } function generateUniqueId() { return Date.now().toString(36) + Math.random().toString(36).substr(2) } function removeWidget(index) { var widgets = SettingsData.controlCenterWidgets.slice() if (index >= 0 && index < widgets.length) { widgets.splice(index, 1) SettingsData.setControlCenterWidgets(widgets) } } function toggleWidgetSize(index) { var widgets = SettingsData.controlCenterWidgets.slice() if (index >= 0 && index < widgets.length) { const currentWidth = widgets[index].width || 50 const id = widgets[index].id || "" if (id === "wifi" || id === "bluetooth" || id === "audioOutput" || id === "audioInput") { widgets[index].width = currentWidth <= 50 ? 100 : 50 } else { if (currentWidth <= 25) { widgets[index].width = 50 } else if (currentWidth <= 50) { widgets[index].width = 100 } else { widgets[index].width = 25 } } SettingsData.setControlCenterWidgets(widgets) } } function reorderWidgets(newOrder) { SettingsData.setControlCenterWidgets(newOrder) } function moveWidget(fromIndex, toIndex) { let widgets = [...(SettingsData.controlCenterWidgets || [])] if (fromIndex >= 0 && fromIndex < widgets.length && toIndex >= 0 && toIndex < widgets.length) { const movedWidget = widgets.splice(fromIndex, 1)[0] widgets.splice(toIndex, 0, movedWidget) SettingsData.setControlCenterWidgets(widgets) } } function resetToDefault() { const defaultWidgets = [ {"id": "volumeSlider", "enabled": true, "width": 50}, {"id": "brightnessSlider", "enabled": true, "width": 50}, {"id": "wifi", "enabled": true, "width": 50}, {"id": "bluetooth", "enabled": true, "width": 50}, {"id": "audioOutput", "enabled": true, "width": 50}, {"id": "audioInput", "enabled": true, "width": 50}, {"id": "nightMode", "enabled": true, "width": 50}, {"id": "darkMode", "enabled": true, "width": 50} ] SettingsData.setControlCenterWidgets(defaultWidgets) } function clearAll() { SettingsData.setControlCenterWidgets([]) }