{#snippet lead( rule: PolicyRule )} {#if rule.scope_type === "chat" && rule.scope_id !== null} 0 ? "peer" : "chat" }} colorKey={rule.scope_id} hasAvatar={chats.byId(rule.scope_id)?.has_avatar ?? false} name={title(rule)} size={2.25} /> {:else} {/if} {/snippet} {#snippet row( rule: PolicyRule, plain: boolean )} {@const key = keyOf(rule.scope_type, rule.scope_id)} {@const open = expanded === key} {@const extra = !plain && redundant(rule)}
{#if extra} {/if}
{#if open}
{/if}
{/snippet} {#snippet pending( item: Draft )}
{item.title} Новое правило
{/snippet} {#if loading}
{:else if failed}

Не удалось загрузить политику.

{:else}
{#if problem}

{problem}

{/if}

По умолчанию

{#each defaults as rule (rule.id)} {@render row(rule, true)} {/each}

Папки

что меняют · побеждает первая подходящая
{#if draft?.scopeType === "folder"} {@render pending(draft)} {/if} {#each folderRules as rule (rule.id)} {@render row(rule, false)} {/each} {#if freeFolders.length > 0} {#if picking === "folder"}
{#each freeFolders as folder (folder.folder_id)} {/each}
{/if} {/if}

Чаты

что меняют · важнее папок
{#if draft?.scopeType === "chat"} {@render pending(draft)} {/if} {#each chatRules as rule (rule.id)} {@render row(rule, false)} {/each} {#if picking === "chat"}
picker.search(chatFilter)} placeholder="Поиск чата" type="text" bind:value={chatFilter} > {#each freeChats as chat (chat.chat_id)} {/each}
{/if}
{/if}