From ab485543b83cb36954e96cd0d79cf8d22442fbd4 Mon Sep 17 00:00:00 2001 From: enzi221 Date: Mon, 19 May 2025 02:05:11 +0900 Subject: [PATCH] feat: Add 'divider' type toggle --- src/lib/SideBars/Toggles.svelte | 13 +++++++++++- src/ts/util.ts | 37 +++++++++++++++++++++++---------- 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/lib/SideBars/Toggles.svelte b/src/lib/SideBars/Toggles.svelte index afefa2bd..c7b99d04 100644 --- a/src/lib/SideBars/Toggles.svelte +++ b/src/lib/SideBars/Toggles.svelte @@ -21,7 +21,7 @@ {#snippet toggles(reverse: boolean = false)} - {#each parsedKv as toggle} + {#each parsedKv as toggle, index} {#if toggle.type === 'select'}
{toggle.value} @@ -37,6 +37,17 @@ {toggle.value}
+ {:else if toggle.type === 'divider'} + {@const prevToggle = parsedKv[index - 1]} + + {#if index === 0 || prevToggle.type !== 'divider' || prevToggle.value !== toggle.value} +
+ {#if toggle.value} + {toggle.value} + {/if} +
+
+ {/if} {:else}
{ diff --git a/src/ts/util.ts b/src/ts/util.ts index c80360a2..3b12e5c6 100644 --- a/src/ts/util.ts +++ b/src/ts/util.ts @@ -1009,33 +1009,48 @@ export function parseKeyValue(template:string){ } } +type sidebarToggle = + | { + key?:string, + value?:string, + type:'divider', + options?:string[] + } + | { + key:string, + value:string, + type:'select', + options:string[] + } + | { + key:string, + value:string, + type:string|undefined, + options?:string[] + } + export function parseToggleSyntax(template:string){ try { - console.log(template) if(!template){ return [] } - const keyValue:{ - key:string, - value:string, - type?:string, - options?:string[] - }[] = [] + const keyValue:sidebarToggle[] = [] const splited = template.split('\n') for(const line of splited){ const [key, value, type, option] = line.split('=') - if(key && value){ + if((key && value) || type === 'divider'){ keyValue.push({ - key, value, type, options: option ? option.split(',') : [] + key, + value, + type, + options: option?.split(',') ?? [] }) } } - console.log(keyValue) - return keyValue } catch (error) { console.error(error)