0 ? 'block' : 'none'}> {#each value as link, i} {@const url = urlOrUndefined(link.value)}
  • {#if i > 0} { value = [ ...value.slice(0, i - 1), value[i], value[i - 1], ...value.slice(i + 1), ]; }} > {/if} {#if i < value.length - 1} { value = [...value.slice(0, i), value[i + 1], value[i], ...value.slice(i + 2)]; }} > {/if}
    {#if computed && url?.hostname === 'docs.google.com' && url?.pathname.startsWith('/forms')}
    {#if editingComputedLink === link.name} { for (const [key] of Object.entries(replacements)) url.searchParams.delete(key); link.value = url.toString() + '&' + Object.entries(replacements) .map(([key, replacement]) => `${key}=[${replacement}]`) .join('&'); replacements = {}; editingComputedLink = undefined; }} > {:else} { for (const [key, value] of url.searchParams) { if (/^\[.*]$/.test(value)) replacements[key] = value.replaceAll(/^\[|]$/g, ''); } editingComputedLink = link.name; }} > {/if}
    {/if}
    {#if editingComputedLink === link.name} { editingComputedLink = undefined; replacements = {}; }} > {:else} { value = value.filter((_, j) => i !== j); }} > {/if}
    {#if editingComputedLink === link.name && url} {@const params = [...url.searchParams]}
      {#each params.filter(([key]) => key.startsWith('entry.')) as [key, value] (key)}
    • {/each}
    {/if}
  • {/each}