mirror of
https://github.com/zen-browser/desktop.git
synced 2025-09-29 06:28:39 +00:00
Compare commits
47 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a7f853e0f0 | ||
![]() |
e59c73ae53 | ||
![]() |
d9bc654fc7 | ||
![]() |
bc5e4eb48f | ||
![]() |
028b7d35db | ||
![]() |
a091751e09 | ||
![]() |
cc8dfc693b | ||
![]() |
9a1c466368 | ||
![]() |
88f26d8829 | ||
![]() |
b0d0a79fc5 | ||
![]() |
3146ec1c3b | ||
![]() |
19fbed782d | ||
![]() |
b1d6e0eb21 | ||
![]() |
47181da49e | ||
![]() |
3d83fed14f | ||
![]() |
31f6b2ab12 | ||
![]() |
8c6c13573b | ||
![]() |
528f3d6a0b | ||
![]() |
bb33bbcc39 | ||
![]() |
b3d981c585 | ||
![]() |
45f0fd503c | ||
![]() |
933c9de691 | ||
![]() |
8f6c989dd1 | ||
![]() |
f034a9f4c9 | ||
![]() |
5775505080 | ||
![]() |
4e8040a000 | ||
![]() |
403d5ae92e | ||
![]() |
df1e759c8d | ||
![]() |
0b906bda78 | ||
![]() |
61d0d5ced6 | ||
![]() |
77b1f5d814 | ||
![]() |
a18dc63437 | ||
![]() |
a4a9a51bea | ||
![]() |
62aa34d905 | ||
![]() |
5ec8badab4 | ||
![]() |
0cc305bfc9 | ||
![]() |
b368fd967b | ||
![]() |
92779e0549 | ||
![]() |
fbf30a3423 | ||
![]() |
9046e083ee | ||
![]() |
f77db8cb20 | ||
![]() |
11e385e1c4 | ||
![]() |
db2ba602a8 | ||
![]() |
2324ef9f15 | ||
![]() |
3152dcbe68 | ||
![]() |
037bc0c3cf | ||
![]() |
ed492568e6 |
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
@@ -266,9 +266,11 @@ jobs:
|
||||
|
||||
- name: Compress
|
||||
run: |
|
||||
cd engine
|
||||
tar --use-compress-program=zstd -hcf ../zen.source.tar.zst *
|
||||
cd ..
|
||||
tar \
|
||||
--exclude='./.git' \
|
||||
--use-compress-program=zstd \
|
||||
-hcf zen.source.tar.zst \
|
||||
-C engine .
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
|
@@ -33,6 +33,7 @@ src/zen/common/styles/zen-theme.css
|
||||
src/zen/compact-mode/zen-compact-mode.css
|
||||
src/zen/common/ZenEmojis.mjs
|
||||
|
||||
src/zen/split-view/zen-decks.css
|
||||
src/zen/workspaces/zen-workspaces.css
|
||||
|
||||
*.inc
|
||||
|
@@ -9,6 +9,9 @@ add-extensions:
|
||||
directory: lib/ffmpeg
|
||||
version: '24.08'
|
||||
add-ld-path: .
|
||||
app.zen_browser.zen.systemconfig:
|
||||
directory: etc/zen
|
||||
no-autodownload: true
|
||||
command: launch-script.sh
|
||||
finish-args:
|
||||
- --allow=devel
|
||||
@@ -29,7 +32,6 @@ finish-args:
|
||||
- --system-talk-name=org.freedesktop.NetworkManager
|
||||
- --talk-name=org.a11y.Bus
|
||||
- --talk-name=org.gtk.vfs.*
|
||||
- --talk-name=org.freedesktop.Notifications
|
||||
- --own-name=org.mpris.MediaPlayer2.firefox.*
|
||||
- --own-name=org.mozilla.zen.*
|
||||
cleanup:
|
||||
@@ -50,6 +52,7 @@ modules:
|
||||
build-commands:
|
||||
- mv zen /app/
|
||||
- mkdir -p /app/lib/ffmpeg
|
||||
- mkdir -p /app/etc/zen
|
||||
|
||||
- install -Dm0755 metadata/launch-script.sh ${{FLATPAK_DEST}}/bin/launch-script.sh
|
||||
- install -Dm0644 metadata/policies.json ${{FLATPAK_DEST}}/bin/distribution/policies.json
|
||||
|
@@ -52,24 +52,15 @@ if test "$ZEN_RELEASE"; then
|
||||
ac_add_options --disable-debug-symbols
|
||||
ac_add_options --disable-debug-js-modules
|
||||
ac_add_options --disable-tests
|
||||
ac_add_options --disable-js-shell
|
||||
|
||||
ac_add_options --disable-vtune
|
||||
|
||||
ac_add_options --enable-rust-simd
|
||||
ac_add_options --enable-wasm-simd
|
||||
|
||||
mk_add_options MOZ_PARALLEL_COMPILE=1
|
||||
|
||||
ac_add_options --enable-proxy-bypass-protection
|
||||
ac_add_options --enable-hardening
|
||||
ac_add_options --disable-profiling
|
||||
|
||||
ac_add_options --disable-geckodriver
|
||||
ac_add_options --disable-rust-tests
|
||||
|
||||
ac_add_options --disable-default-browser-agent
|
||||
|
||||
if ! test "$ZEN_DISABLE_LTO"; then
|
||||
# only enable full LTO when ZEN_RELEASE_BRANCH is 'release'
|
||||
if test "$ZEN_RELEASE_BRANCH" = "release"; then
|
||||
@@ -99,8 +90,9 @@ if test "$ZEN_RELEASE"; then
|
||||
|
||||
ac_add_options --enable-updater
|
||||
|
||||
ac_add_options --enable-js-shell
|
||||
export MOZ_PACKAGE_JSSHELL=1
|
||||
else
|
||||
|
||||
ac_add_options --disable-crashreporter
|
||||
fi
|
||||
|
||||
|
@@ -22,8 +22,6 @@ if test "$ZEN_CROSS_COMPILING"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
#? https://bugzilla.mozilla.org/show_bug.cgi?id=1617793
|
||||
#? https://phabricator.services.mozilla.com/D170170
|
||||
ac_add_options --disable-maintenance-service
|
||||
ac_add_options --disable-bits-download
|
||||
|
||||
@@ -32,8 +30,6 @@ if test "$SURFER_COMPAT" = "x86_64"; then
|
||||
ac_add_options --target=x86_64-pc-windows-msvc
|
||||
ac_add_options --enable-eme=widevine,wmfcdm
|
||||
|
||||
# ac_add_options --disable-jemalloc
|
||||
|
||||
ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf"
|
||||
|
||||
export LDFLAGS="-Wl,-O3"
|
||||
@@ -55,8 +51,6 @@ elif test "$SURFER_COMPAT" = "aarch64"; then
|
||||
export RUSTFLAGS="-C target-feature=+v8.2a -Ctarget-cpu=cortex-a55"
|
||||
fi
|
||||
|
||||
#export POLLY="-mllvm -polly -mllvm -polly-2nd-level-tiling -mllvm -polly-loopfusion-greedy -mllvm -polly-pattern-matching-based-opts -mllvm -polly-position=before-vectorizer -mllvm -polly-vectorizer=stripmine"
|
||||
|
||||
if test "$ZEN_CROSS_COMPILING"; then
|
||||
if test "$ZEN_GA_GENERATE_PROFILE"; then
|
||||
export CXXFLAGS="$CXXFLAGS -fprofile-generate -mllvm -enable-name-compression=false -mllvm -pgo-temporal-instrumentation -fprofile-update=atomic"
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icones
|
||||
urlbar-search-mode-zen_actions = Accions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emodži
|
||||
zen-icons-picker-svg =
|
||||
.label = Ikony
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Ikoner
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -43,7 +43,7 @@ pane-settings-workspaces-title = Arbeitsbereiche
|
||||
zen-tabs-unloader-enabled =
|
||||
.label = Tab-Entlader aktivieren
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Use themed background for compact toolbar
|
||||
.label = Theme Hintergrund für kompakte Symbolleiste verwenden
|
||||
zen-workspace-continue-where-left-off =
|
||||
.label = Dort fortfahren, wo Sie aufgehört haben
|
||||
pane-zen-pinned-tab-manager-title = Angepinnte Tabs
|
||||
@@ -274,7 +274,7 @@ zen-split-view-shortcut-grid = Geteilte Ansicht Raster umschalten
|
||||
zen-split-view-shortcut-vertical = Geteilte Ansicht vertikal umschalten
|
||||
zen-split-view-shortcut-horizontal = Geteilte Ansicht horizontal umschalten
|
||||
zen-split-view-shortcut-unsplit = Geteilte Ansicht schließen
|
||||
zen-new-empty-split-view-shortcut = New Empty Split View
|
||||
zen-new-empty-split-view-shortcut = Neuer leerer Split View
|
||||
zen-key-select-tab-1 = Tab #1 auswählen
|
||||
zen-key-select-tab-2 = Tab #2 auswählen
|
||||
zen-key-select-tab-3 = Tab #3 auswählen
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Symbole
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -4,7 +4,7 @@ zen-panel-ui-workspaces-create =
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Ordner erstellen
|
||||
zen-panel-ui-new-empty-split =
|
||||
.label = New Split
|
||||
.label = Split View erstellen
|
||||
zen-workspaces-panel-context-delete =
|
||||
.label = Arbeitsbereich löschen
|
||||
.accesskey = D
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -46,3 +46,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -62,3 +62,5 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Iconos
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojid
|
||||
zen-icons-picker-svg =
|
||||
.label = Ikoonid
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -4,7 +4,7 @@ tab-context-zen-reset-pinned-tab =
|
||||
.label = Réinitialiser l’onglet épinglé
|
||||
.accesskey = R
|
||||
tab-context-zen-add-essential =
|
||||
.label = Ajouter aux Essentials ({ $num } / 12 emplacements remplis)
|
||||
.label = Ajouter aux Essentials ({ $num }/12 emplacements occupés)
|
||||
.accesskey = E
|
||||
tab-context-zen-remove-essential =
|
||||
.label = Retirer des Essentials
|
||||
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Émojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icônes
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Deilbhíní
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = אימוג'ים
|
||||
zen-icons-picker-svg =
|
||||
.label = סמלים
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojik
|
||||
zen-icons-picker-svg =
|
||||
.label = Ikonok
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -43,7 +43,7 @@ pane-settings-workspaces-title = Ruang Kerja
|
||||
zen-tabs-unloader-enabled =
|
||||
.label = Aktifkan Pelepas Tab
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Use themed background for compact toolbar
|
||||
.label = Gunakan latar belakang bertema untuk bilah atas dalam mode ringkas
|
||||
zen-workspace-continue-where-left-off =
|
||||
.label = Lanjutkan dari halaman terakhir yang dibuka
|
||||
pane-zen-pinned-tab-manager-title = Tab yang Disematkan
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emoji
|
||||
zen-icons-picker-svg =
|
||||
.label = Ikon
|
||||
urlbar-search-mode-zen_actions = Aksi
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -46,3 +46,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emoji
|
||||
zen-icons-picker-svg =
|
||||
.label = Icone
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = 이모티콘
|
||||
zen-icons-picker-svg =
|
||||
.label = 아이콘
|
||||
urlbar-search-mode-zen_actions = 액션
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Jaustukai
|
||||
zen-icons-picker-svg =
|
||||
.label = Piktogramos
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -43,7 +43,7 @@ pane-settings-workspaces-title = Áreas de Trabalho
|
||||
zen-tabs-unloader-enabled =
|
||||
.label = Ativar Descarregador de Guias
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Use themed background for compact toolbar
|
||||
.label = Usar fundo temático na barra de ferramentas compacta
|
||||
zen-workspace-continue-where-left-off =
|
||||
.label = Continue de onde você parou
|
||||
pane-zen-pinned-tab-manager-title = Guias Fixadas
|
||||
@@ -221,7 +221,7 @@ zen-key-exit-full-screen = Sair de Tela Cheia
|
||||
zen-ai-chatbot-sidebar-shortcut = Alternar barra lateral de AI Chatbot
|
||||
zen-key-inspector-mac = Ativar/Desativar Inspetor
|
||||
zen-toggle-sidebar-shortcut = Alternar barra lateral Firefox
|
||||
zen-toggle-pin-tab-shortcut = Toggle Pin Tab
|
||||
zen-toggle-pin-tab-shortcut = Alternar fixação da aba
|
||||
zen-reader-mode-toggle-shortcut-other = Ativar/desativar modo leitor
|
||||
zen-picture-in-picture-toggle-shortcut = Alternar Picture-in-Picture
|
||||
zen-nav-reload-shortcut-2 = Recarregar Página
|
||||
@@ -255,7 +255,7 @@ zen-close-tab-shortcut = Fechar Aba
|
||||
zen-compact-mode-shortcut-show-sidebar = Alternar barra lateral flutuante
|
||||
zen-compact-mode-shortcut-show-toolbar = Alternar barra flutuante
|
||||
zen-compact-mode-shortcut-toggle = Ativar/Desativar Modo Compacto
|
||||
zen-glance-expand = Expand Glance
|
||||
zen-glance-expand = Expandir Visualização Rápida
|
||||
zen-workspace-shortcut-switch-1 = Mudar para Área de Trabalho 1
|
||||
zen-workspace-shortcut-switch-2 = Mudar para Área de Trabalho 2
|
||||
zen-workspace-shortcut-switch-3 = Mudar para Área de Trabalho 3
|
||||
@@ -274,7 +274,7 @@ zen-split-view-shortcut-grid = Alternar grade de visualização dividida
|
||||
zen-split-view-shortcut-vertical = Alternar visualização de divisão vertical
|
||||
zen-split-view-shortcut-horizontal = Alternar visualização horizontal de divisão
|
||||
zen-split-view-shortcut-unsplit = Fechar visualização dividida
|
||||
zen-new-empty-split-view-shortcut = New Empty Split View
|
||||
zen-new-empty-split-view-shortcut = Nova Divisão de Tela Vazia
|
||||
zen-key-select-tab-1 = Selecionar guia #1
|
||||
zen-key-select-tab-2 = Selecionar guia #2
|
||||
zen-key-select-tab-3 = Selecionar guia #3
|
||||
|
@@ -46,3 +46,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Ícones
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -4,7 +4,7 @@ zen-panel-ui-workspaces-create =
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Nova Pasta
|
||||
zen-panel-ui-new-empty-split =
|
||||
.label = New Split
|
||||
.label = Nova Divisão
|
||||
zen-workspaces-panel-context-delete =
|
||||
.label = Excluir Espaço
|
||||
.accesskey = D
|
||||
|
@@ -43,7 +43,7 @@ pane-settings-workspaces-title = Espaços de Trabalho
|
||||
zen-tabs-unloader-enabled =
|
||||
.label = Habilitar a Hibernação de Separadores
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Use themed background for compact toolbar
|
||||
.label = Usar fundo temático para a barra de ferramentas compacta
|
||||
zen-workspace-continue-where-left-off =
|
||||
.label = Continuar a partir do ponto onde parou
|
||||
pane-zen-pinned-tab-manager-title = Separadores Fixados
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Ícones
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Ikoner
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -43,7 +43,7 @@ pane-settings-workspaces-title = Робочі області
|
||||
zen-tabs-unloader-enabled =
|
||||
.label = Увімкнути вивантаження вкладок
|
||||
zen-look-and-feel-compact-toolbar-themed =
|
||||
.label = Use themed background for compact toolbar
|
||||
.label = Використовувати тематичний фон для компактної панелі інструментів
|
||||
zen-workspace-continue-where-left-off =
|
||||
.label = Продовжити з місця зупинки
|
||||
pane-zen-pinned-tab-manager-title = Прикріплені вкладки
|
||||
@@ -221,7 +221,7 @@ zen-key-exit-full-screen = Вийти з повноекранного режим
|
||||
zen-ai-chatbot-sidebar-shortcut = Перемкнути бічну панель ШІ чат-бота
|
||||
zen-key-inspector-mac = Перемкнути інспектор (Mac)
|
||||
zen-toggle-sidebar-shortcut = Перемкнути бічну панель Firefox
|
||||
zen-toggle-pin-tab-shortcut = Toggle Pin Tab
|
||||
zen-toggle-pin-tab-shortcut = Закріпити / відкріпити вкладку
|
||||
zen-reader-mode-toggle-shortcut-other = Перемкнути режим читання
|
||||
zen-picture-in-picture-toggle-shortcut = Показати/приховати зображення
|
||||
zen-nav-reload-shortcut-2 = Перезавантажити сторінку
|
||||
@@ -255,7 +255,7 @@ zen-close-tab-shortcut = Закрити вкладку
|
||||
zen-compact-mode-shortcut-show-sidebar = Перемкнути спливну бічну панель
|
||||
zen-compact-mode-shortcut-show-toolbar = Перемкнути спливну панель інструментів
|
||||
zen-compact-mode-shortcut-toggle = Компактний режим
|
||||
zen-glance-expand = Expand Glance
|
||||
zen-glance-expand = Розгорнути огляд
|
||||
zen-workspace-shortcut-switch-1 = Перейти на робочу область 1
|
||||
zen-workspace-shortcut-switch-2 = Перейти на робочу область 2
|
||||
zen-workspace-shortcut-switch-3 = Перейти на робочу область 3
|
||||
@@ -274,7 +274,7 @@ zen-split-view-shortcut-grid = Перемкнути розділену сітк
|
||||
zen-split-view-shortcut-vertical = Перемкнути розділений Перегляд вертикально
|
||||
zen-split-view-shortcut-horizontal = Перемкнути розділений Перегляд горизонтально
|
||||
zen-split-view-shortcut-unsplit = Закрити розділений вигляд
|
||||
zen-new-empty-split-view-shortcut = New Empty Split View
|
||||
zen-new-empty-split-view-shortcut = Новий пустий розділений перегляд
|
||||
zen-key-select-tab-1 = Вибрати вкладку #1
|
||||
zen-key-select-tab-2 = Вибрати вкладку #2
|
||||
zen-key-select-tab-3 = Вибрати вкладку #3
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Емоджі
|
||||
zen-icons-picker-svg =
|
||||
.label = Значки
|
||||
urlbar-search-mode-zen_actions = Дії
|
||||
|
@@ -4,7 +4,7 @@ zen-panel-ui-workspaces-create =
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Створити теку
|
||||
zen-panel-ui-new-empty-split =
|
||||
.label = New Split
|
||||
.label = Нове розділення
|
||||
zen-workspaces-panel-context-delete =
|
||||
.label = Видалити простір
|
||||
.accesskey = D
|
||||
|
@@ -48,3 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Biểu cảm
|
||||
zen-icons-picker-svg =
|
||||
.label = Biểu tượng
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -46,3 +46,4 @@ zen-icons-picker-emoji =
|
||||
.label = 表情符号
|
||||
zen-icons-picker-svg =
|
||||
.label = 图标集
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
|
@@ -27,7 +27,7 @@ zen-glance-trigger-shift-click =
|
||||
zen-glance-trigger-meta-click =
|
||||
.label = Meta (Command) + 左鍵
|
||||
zen-glance-trigger-mantain-click =
|
||||
.label = 長按(即將上線!)
|
||||
.label = 長按(即將推出!)
|
||||
zen-look-and-feel-compact-view-header = 在緊湊模式下顯示
|
||||
zen-look-and-feel-compact-view-description = 只顯示你需要用的工具欄!
|
||||
zen-look-and-feel-compact-view-enabled =
|
||||
@@ -92,12 +92,12 @@ zen-vertical-tabs-expand-tabs-header = 如何擴展分頁
|
||||
zen-vertical-tabs-expand-tabs-description = 選擇要如何擴展側邊欄中的分頁
|
||||
zen-theme-marketplace-header = Zen 模組
|
||||
zen-theme-disable-all-enabled =
|
||||
.title = 啟用所有主題
|
||||
.title = 啟用所有模組
|
||||
zen-theme-disable-all-disabled =
|
||||
.title = 停用所有主題
|
||||
zen-theme-marketplace-description = 從商店尋找並安裝主題。
|
||||
.title = 停用所有模組
|
||||
zen-theme-marketplace-description = 從商店尋找並安裝模組。
|
||||
zen-theme-marketplace-remove-button =
|
||||
.label = 移除主題
|
||||
.label = 移除模組
|
||||
zen-theme-marketplace-check-for-updates-button =
|
||||
.label = 檢查更新
|
||||
zen-theme-marketplace-import-button =
|
||||
@@ -114,15 +114,15 @@ zen-theme-marketplace-toggle-enabled-button =
|
||||
.title = 關閉佈景主題
|
||||
zen-theme-marketplace-toggle-disabled-button =
|
||||
.title = 啟用佈景主題
|
||||
zen-theme-marketplace-remove-confirmation = 您確定要移除此模組?
|
||||
zen-theme-marketplace-remove-confirmation = 您確定要移除此模組?
|
||||
zen-theme-marketplace-close-modal = 關閉
|
||||
zen-theme-marketplace-theme-header-title =
|
||||
.title = CSS 選擇器:{ $name }
|
||||
zen-theme-marketplace-dropdown-default-label =
|
||||
.label = 無
|
||||
zen-theme-marketplace-input-default-placeholder =
|
||||
.placeholder = 請輸入
|
||||
pane-zen-marketplace-title = Zen 模式
|
||||
.placeholder = 請輸入...
|
||||
pane-zen-marketplace-title = Zen 模組
|
||||
zen-themes-auto-update =
|
||||
.label = 啟動時自動更新已安裝模組
|
||||
zen-settings-workspaces-force-container-tabs-to-workspace =
|
||||
@@ -150,12 +150,12 @@ pane-zen-CKS-title = 快捷鍵
|
||||
category-zen-CKS =
|
||||
.tooltiptext = { pane-zen-CKS-title }
|
||||
pane-settings-CKS-title = { -brand-short-name } 快捷鍵
|
||||
zen-settings-CKS-header = 自定義你的快捷鍵
|
||||
zen-settings-CKS-description = 依據你的愛好來更改預設的快捷鍵以近一步改善你的瀏覽體驗
|
||||
zen-settings-CKS-header = 自定義您的快捷鍵
|
||||
zen-settings-CKS-description = 依據您的愛好來更改預設的快捷鍵以近一步改善你的瀏覽體驗
|
||||
zen-settings-CKS-disable-firefox =
|
||||
.label = 停用 { -brand-short-name } 的預設快捷鍵
|
||||
zen-settings-CKS-duplicate-shortcut =
|
||||
.label = 重複的快捷鍵
|
||||
.label = 複製快捷鍵
|
||||
zen-settings-CKS-reset-shortcuts =
|
||||
.label = 重設為預設值
|
||||
zenCKSOption-group-other = 其它
|
||||
@@ -173,13 +173,13 @@ zenCKSOption-group-devTools = 開發人員工具
|
||||
zen-key-quick-restart = 快速重啟
|
||||
zen-window-new-shortcut = 開新視窗
|
||||
zen-tab-new-shortcut = 開新分頁
|
||||
zen-key-redo = 重做
|
||||
zen-key-redo = 取消復原
|
||||
zen-restore-last-closed-tab-shortcut = 復原上次關閉的分頁
|
||||
zen-location-open-shortcut = 選取網址列
|
||||
zen-location-open-shortcut-alt = 選取網址列(備用)
|
||||
zen-key-undo-close-window = 還原已關閉視窗
|
||||
zen-text-action-undo-shortcut = 復原
|
||||
zen-text-action-redo-shortcut = 取消「復原」
|
||||
zen-text-action-redo-shortcut = 取消復原
|
||||
zen-text-action-cut-shortcut = 剪下
|
||||
zen-text-action-copy-shortcut = 複製
|
||||
zen-text-action-copy-url-shortcut = 複製目前網址
|
||||
@@ -221,7 +221,7 @@ zen-key-exit-full-screen = 離開全畫面模式
|
||||
zen-ai-chatbot-sidebar-shortcut = 開啟 AI 聊天側邊欄
|
||||
zen-key-inspector-mac = 開啟檢測器 (Mac)
|
||||
zen-toggle-sidebar-shortcut = 開啟 Firefox 側邊欄
|
||||
zen-toggle-pin-tab-shortcut = Toggle Pin Tab
|
||||
zen-toggle-pin-tab-shortcut = 切換釘選分頁
|
||||
zen-reader-mode-toggle-shortcut-other = 切換閱讀模式
|
||||
zen-picture-in-picture-toggle-shortcut = 切換子母畫面
|
||||
zen-nav-reload-shortcut-2 = 重新整理
|
||||
|
@@ -1,21 +1,21 @@
|
||||
zen-folders-search-placeholder =
|
||||
.placeholder = Search { $folder-name }...
|
||||
.placeholder = 搜尋 { $folder-name }...
|
||||
zen-folders-panel-rename-folder =
|
||||
.label = Rename Folder
|
||||
.label = 重新命名分頁夾
|
||||
zen-folders-panel-unpack-folder =
|
||||
.label = Unpack Folder
|
||||
.label = 解散分頁夾
|
||||
zen-folders-new-subfolder =
|
||||
.label = New Subfolder
|
||||
.label = 新增子分頁夾
|
||||
zen-folders-panel-delete-folder =
|
||||
.label = Delete Folder
|
||||
.label = 刪除分頁夾
|
||||
zen-folders-panel-convert-folder-to-space =
|
||||
.label = Convert folder to Space
|
||||
.label = 將分頁夾轉換為工作區
|
||||
zen-folders-panel-change-folder-space =
|
||||
.label = Change Space...
|
||||
.label = 變更工作區...
|
||||
zen-folders-panel-change-icon-folder =
|
||||
.label = Change Icon
|
||||
.label = 變更圖示
|
||||
zen-folders-unload-all-tooltip =
|
||||
.tooltiptext = Unload active in this folder
|
||||
.tooltiptext = 卸載此分頁夾中所有分頁
|
||||
zen-folders-unload-folder =
|
||||
.label = Unload All Tabs
|
||||
zen-folders-search-no-results = 沒有找到搜尋的分頁 🤔
|
||||
.label = 卸載所有分頁
|
||||
zen-folders-search-no-results = 找不到符合搜尋的分頁 🤔
|
||||
|
@@ -1,5 +1,5 @@
|
||||
zen-panel-ui-current-profile-text = 當前設定檔
|
||||
unified-extensions-description = 擴充功能用於為 { -brand-short-name } 帶來更多功能。
|
||||
unified-extensions-description = 擴充功能可為 { -brand-short-name } 帶來更多額外功能。
|
||||
tab-context-zen-reset-pinned-tab =
|
||||
.label = 重置釘選的分頁
|
||||
.accesskey = R
|
||||
@@ -12,25 +12,25 @@ tab-context-zen-remove-essential =
|
||||
tab-context-zen-replace-pinned-url-with-current =
|
||||
.label = 將釘選的網址換成目前的網址
|
||||
.accesskey = C
|
||||
zen-themes-corrupted = 你的 { -brand-short-name } 模組文件已損壞,它們已重置為預設佈景主題。
|
||||
zen-themes-corrupted = 你的 { -brand-short-name } 模組文件已損壞,它們已重設為預設主題。
|
||||
zen-shortcuts-corrupted = 你的 { -brand-short-name } 快捷文件已損壞。它們已被重設為預設值。
|
||||
# note: Do not translate the "<br/>" tags in the following string
|
||||
zen-new-urlbar-notification = 新的 URL 欄已啟用,你不再需要新增新分頁。<br/><br/>馬上打開新分頁來看看新的 URL 欄!
|
||||
zen-disable = 禁用
|
||||
zen-disable = 停用
|
||||
pictureinpicture-minimize-btn =
|
||||
.aria-label = Minimize
|
||||
.tooltip = Minimize
|
||||
.aria-label = 最小化
|
||||
.tooltip = 最小化
|
||||
zen-panel-ui-gradient-generator-custom-color = 自訂顏色
|
||||
zen-panel-ui-gradient-generator-saved-message = 漸層儲存成功!
|
||||
zen-panel-ui-gradient-generator-saved-message = 已成功儲存漸層!
|
||||
zen-copy-current-url-confirmation = 網址已複製到剪貼簿。
|
||||
zen-general-cancel-label =
|
||||
.label = 取消
|
||||
zen-general-confirm =
|
||||
.label = 確認
|
||||
zen-pinned-tab-replaced = 釘選分頁網址已替換為當前當前網址。
|
||||
zen-tabs-renamed = 分頁重新命名成功!
|
||||
zen-background-tab-opened-toast = New background tab opened!
|
||||
zen-workspace-renamed-toast = Workspace has been successfully renamed!
|
||||
zen-tabs-renamed = 已成功重新命名分頁!
|
||||
zen-background-tab-opened-toast = 已在背景開啟新分頁!
|
||||
zen-workspace-renamed-toast = 已成功重新命名工作區!
|
||||
zen-library-sidebar-workspaces =
|
||||
.label = 工作區
|
||||
zen-library-sidebar-mods =
|
||||
@@ -45,4 +45,5 @@ zen-singletoolbar-urlbar-placeholder-with-name =
|
||||
zen-icons-picker-emoji =
|
||||
.label = 表情符號
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
.label = 圖示
|
||||
urlbar-search-mode-zen_actions = 操作
|
||||
|
@@ -10,7 +10,7 @@ zen-split-link =
|
||||
.accesskey = S
|
||||
zen-split-view-modifier-header = 分割畫面
|
||||
zen-split-view-modifier-activate-reallocation =
|
||||
.label = 啟用重新分配
|
||||
zen-split-view-modifier-enabled-toast = 分割畫面重新排列已開啟。
|
||||
zen-split-view-modifier-enabled-toast-description = 拖曳畫面以重新排列。按 Esc 鍵退出
|
||||
zen-split-view-modifier-disabled-toast = 分割畫面重新排列已關閉
|
||||
.label = 啟用重新排列
|
||||
zen-split-view-modifier-enabled-toast = 已開啟分割畫面重新排列功能。
|
||||
zen-split-view-modifier-enabled-toast-description = 拖曳畫面以重新排列。按 Esc 鍵退出。
|
||||
zen-split-view-modifier-disabled-toast = 已關閉分割畫面重新排列功能。
|
||||
|
@@ -15,12 +15,12 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = 兩者皆隱藏
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = 新增分頁夾
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = 展開側邊欄
|
||||
sidebar-zen-create-new =
|
||||
.label = Create New...
|
||||
.label = 新增...
|
||||
tabbrowser-unload-tab-button =
|
||||
.tooltiptext =
|
||||
{ $tabCount ->
|
||||
|
@@ -2,26 +2,26 @@
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
zen-welcome-title-line1 = Welcome to
|
||||
zen-welcome-title-line2 = a calmer internet
|
||||
zen-welcome-import-title = A Fresh Start, Same Bookmarks
|
||||
zen-welcome-import-description-1 = Your bookmarks, history, and passwords are like a trail of breadcrumbs through the internet—don’t leave them behind!
|
||||
zen-welcome-title-line1 = 歡迎使用
|
||||
zen-welcome-title-line2 = 更寧靜的網路體驗
|
||||
zen-welcome-import-title = 全新開始,書籤依舊
|
||||
zen-welcome-import-description-1 = 您的書籤、歷史記錄和密碼,是您網路足跡的珍貴紀錄——別把它們遺忘了!
|
||||
zen-welcome-import-description-2 = 輕鬆匯入其他瀏覽器的資料,無縫接續瀏覽體驗。
|
||||
zen-welcome-import-button = Import now
|
||||
zen-welcome-set-default-browser = Set { -brand-short-name } as your default browser
|
||||
zen-welcome-dont-set-default-browser = DON’T set { -brand-short-name } as your default browser
|
||||
zen-welcome-initial-essentials-title = Your Key Tabs, Always Within Reach
|
||||
zen-welcome-initial-essentials-description-1 = Keep your most important tabs easily accessible and always at hand, no matter how many you open.
|
||||
zen-welcome-initial-essentials-description-2 = Essential tabs are always visible, no matter what workspace you are in.
|
||||
zen-welcome-workspace-colors-title = Your Workspaces, Your Colors
|
||||
zen-welcome-workspace-colors-description = Personalize your browser by giving each workspace its own unique color identity.
|
||||
zen-welcome-import-button = 立即匯入
|
||||
zen-welcome-set-default-browser = 將 { -brand-short-name } 設為您的預設瀏覽器
|
||||
zen-welcome-dont-set-default-browser = 不要將 { -brand-short-name } 設為您的預設瀏覽器
|
||||
zen-welcome-initial-essentials-title = 重要分頁,隨手可及
|
||||
zen-welcome-initial-essentials-description-1 = 無論開啟多少分頁,最重要的分頁將永遠顯示,讓您輕鬆存取。
|
||||
zen-welcome-initial-essentials-description-2 = 無論您在哪個工作區,Essential 分頁會永遠顯示。
|
||||
zen-welcome-workspace-colors-title = 您的工作區,您的色彩
|
||||
zen-welcome-workspace-colors-description = 為每個工作區賦予獨特的色彩,打造個人化瀏覽器。
|
||||
zen-welcome-start-browsing-title =
|
||||
All set?<br/>
|
||||
Let’s get rolling!
|
||||
zen-welcome-start-browsing-description-1 = You’re all set up and ready to go. Click the button below to start browsing with { -brand-short-name }.
|
||||
zen-welcome-start-browsing = Dive in!
|
||||
zen-welcome-default-search-title = Your Default Search Engine
|
||||
zen-welcome-default-search-description = Choose your default search engine. You can always change it later!
|
||||
zen-welcome-skip-button = Skip
|
||||
zen-welcome-next-action = Next
|
||||
zen-welcome-finished = Your Zen has been set up correctly!
|
||||
準備好了嗎?<br/>
|
||||
馬上開始體驗吧!
|
||||
zen-welcome-start-browsing-description-1 = 您已完成所有設定並準備就緒。點擊下方按鈕,開始使用 { -brand-short-name } 瀏覽網路吧。
|
||||
zen-welcome-start-browsing = 立即開始!
|
||||
zen-welcome-default-search-title = 您的預設搜尋引擎
|
||||
zen-welcome-default-search-description = 選擇您的預設搜尋引擎,您可以隨時更改它!
|
||||
zen-welcome-skip-button = 跳過
|
||||
zen-welcome-next-action = 下一步
|
||||
zen-welcome-finished = 您的 Zen 瀏覽器已成功設定!
|
||||
|
@@ -1,8 +1,8 @@
|
||||
zen-panel-ui-workspaces-text = 工作區
|
||||
zen-panel-ui-workspaces-create =
|
||||
.label = 創建工作區
|
||||
.label = 建立工作區
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Create Folder
|
||||
.label = 建立分頁夾
|
||||
zen-panel-ui-new-empty-split =
|
||||
.label = New Split
|
||||
zen-workspaces-panel-context-delete =
|
||||
@@ -13,7 +13,7 @@ zen-workspaces-panel-change-name =
|
||||
zen-workspaces-panel-change-icon =
|
||||
.label = 變更圖示
|
||||
zen-workspaces-panel-context-default-profile =
|
||||
.label = Set Profile
|
||||
.label = 設定設定檔
|
||||
zen-workspaces-how-to-reorder-title = 如何排序工作區
|
||||
zen-workspaces-how-to-reorder-desc = 拖曳側邊欄底部工作區圖示以重新排序
|
||||
zen-workspaces-change-theme =
|
||||
@@ -25,7 +25,7 @@ zen-workspaces-panel-context-edit =
|
||||
.label = 編輯工作區
|
||||
.accesskey = E
|
||||
context-zen-change-workspace-tab =
|
||||
.label = 將分頁(含多個)移至工作區
|
||||
.label = 將分頁移至工作區
|
||||
.accesskey = C
|
||||
zen-bookmark-edit-panel-workspace-selector =
|
||||
.value = 選擇工作區
|
||||
@@ -45,9 +45,9 @@ zen-workspace-creation-name =
|
||||
.placeholder = 工作區名稱
|
||||
zen-workspaces-panel-context-reorder =
|
||||
.label = 排序工作區
|
||||
zen-workspace-creation-profile = Profile
|
||||
.tooltiptext = Profiles are used to separate cookies and site data between spaces.
|
||||
zen-workspace-creation-header = 創建工作區
|
||||
zen-workspace-creation-label = Spaces are used to organize your tabs and sessions.
|
||||
zen-workspace-creation-profile = 設定檔
|
||||
.tooltiptext = 設定檔用於隔離不同工作區的 Cookie 和網站資料。
|
||||
zen-workspace-creation-header = 建立工作區
|
||||
zen-workspace-creation-label = 工作區用於組織您的分頁與工作階段。
|
||||
zen-workspaces-delete-workspace-title = 刪除工作區?
|
||||
zen-workspaces-delete-workspace-body = 你確定要刪除 { $name } 嗎?該動作無法物復原。
|
||||
zen-workspaces-delete-workspace-body = 您確定要刪除 { $name } 嗎?此操錯無法復原。
|
||||
|
@@ -5,6 +5,7 @@
|
||||
"lint-staged": {
|
||||
"**/*": ""
|
||||
},
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "surfer build",
|
||||
"build:ui": "surfer build --ui",
|
||||
@@ -19,9 +20,9 @@
|
||||
"update-ff:raw": "surfer update",
|
||||
"update-ff:rc": "python3 scripts/update_ff.py --rc",
|
||||
"update-ff:l10n": "python3 scripts/update_ff.py --just-l10n",
|
||||
"pretty": "prettier . --write && autopep8 -r --in-place scripts/ src/",
|
||||
"pretty": "prettier . --write --cache && autopep8 -r --in-place scripts/ src/",
|
||||
"lint": "npx eslint src/ && prettier . --check && autopep8 --diff scripts/ src/",
|
||||
"lint:fix": "npx eslint src/ --fix && npm run pretty",
|
||||
"lint:fix": "npm run pretty && npx eslint src/ --fix",
|
||||
"prepare": "husky",
|
||||
"reset-ff": "surfer reset",
|
||||
"surfer": "surfer",
|
||||
|
@@ -53,9 +53,6 @@
|
||||
- name: browser.formfill.enable
|
||||
value: false
|
||||
|
||||
- name: network.IDN_show_punycode
|
||||
value: true
|
||||
|
||||
- name: browser.urlbar.suggest.topsites
|
||||
value: true
|
||||
locked: true
|
||||
|
@@ -22,9 +22,6 @@
|
||||
- name: zen.view.sidebar-expanded
|
||||
value: true
|
||||
|
||||
- name: zen.view.sidebar-collapsed.hide-mute-button
|
||||
value: true
|
||||
|
||||
- name: zen.view.experimental-force-window-controls-left
|
||||
value: false
|
||||
|
||||
|
@@ -14,6 +14,9 @@
|
||||
- name: zen.tabs.show-newtab-vertical
|
||||
value: true
|
||||
|
||||
- name: zen.tabs.close-window-with-empty
|
||||
value: true
|
||||
|
||||
- name: zen.ctrlTab.show-pending-tabs
|
||||
value: false
|
||||
|
||||
|
@@ -35,7 +35,7 @@
|
||||
* content/browser/zen-styles/zen-compact-mode.css (../../zen/compact-mode/zen-compact-mode.css)
|
||||
|
||||
content/browser/zen-components/ZenViewSplitter.mjs (../../zen/split-view/ZenViewSplitter.mjs)
|
||||
content/browser/zen-styles/zen-decks.css (../../zen/split-view/zen-decks.css)
|
||||
* content/browser/zen-styles/zen-decks.css (../../zen/split-view/zen-decks.css)
|
||||
|
||||
content/browser/zen-components/ZenMods.mjs (../../zen/mods/ZenMods.mjs)
|
||||
|
||||
|
@@ -1,8 +1,26 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f79bdefd9e 100644
|
||||
index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..cf13724d147c8b8fc35c76d7f77601eb1077ea5c 100644
|
||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
@@ -2133,7 +2133,6 @@ var SessionStoreInternal = {
|
||||
@@ -126,6 +126,8 @@ const TAB_EVENTS = [
|
||||
"TabUngrouped",
|
||||
"TabGroupCollapse",
|
||||
"TabGroupExpand",
|
||||
+ "TabAddedToEssentials",
|
||||
+ "TabRemovedFromEssentials",
|
||||
];
|
||||
|
||||
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||
@@ -1898,6 +1900,8 @@ var SessionStoreInternal = {
|
||||
case "TabPinned":
|
||||
case "TabUnpinned":
|
||||
case "SwapDocShells":
|
||||
+ case "TabRemovedFromEssentials":
|
||||
+ case "TabAddedToEssentials":
|
||||
this.saveStateDelayed(win);
|
||||
break;
|
||||
case "TabGroupCreate":
|
||||
@@ -2133,7 +2137,6 @@ var SessionStoreInternal = {
|
||||
if (closedWindowState) {
|
||||
let newWindowState;
|
||||
if (
|
||||
@@ -10,7 +28,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
!lazy.SessionStartup.willRestore()
|
||||
) {
|
||||
// We want to split the window up into pinned tabs and unpinned tabs.
|
||||
@@ -2366,11 +2365,9 @@ var SessionStoreInternal = {
|
||||
@@ -2366,11 +2369,9 @@ var SessionStoreInternal = {
|
||||
tabbrowser.selectedTab.label;
|
||||
}
|
||||
|
||||
@@ -22,7 +40,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
|
||||
// Store the window's close date to figure out when each individual tab
|
||||
// was closed. This timestamp should allow re-arranging data based on how
|
||||
@@ -3355,7 +3352,7 @@ var SessionStoreInternal = {
|
||||
@@ -3355,7 +3356,7 @@ var SessionStoreInternal = {
|
||||
if (!isPrivateWindow && tabState.isPrivate) {
|
||||
return;
|
||||
}
|
||||
@@ -31,7 +49,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4067,6 +4064,11 @@ var SessionStoreInternal = {
|
||||
@@ -4067,6 +4068,11 @@ var SessionStoreInternal = {
|
||||
Math.min(tabState.index, tabState.entries.length)
|
||||
);
|
||||
tabState.pinned = false;
|
||||
@@ -43,7 +61,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
|
||||
if (inBackground === false) {
|
||||
aWindow.gBrowser.selectedTab = newTab;
|
||||
@@ -4503,6 +4505,7 @@ var SessionStoreInternal = {
|
||||
@@ -4503,6 +4509,7 @@ var SessionStoreInternal = {
|
||||
// Append the tab if we're opening into a different window,
|
||||
tabIndex: aSource == aTargetWindow ? pos : Infinity,
|
||||
pinned: state.pinned,
|
||||
@@ -51,7 +69,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
userContextId: state.userContextId,
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
@@ -5358,7 +5361,7 @@ var SessionStoreInternal = {
|
||||
@@ -5358,7 +5365,7 @@ var SessionStoreInternal = {
|
||||
|
||||
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
|
||||
let tab = tabbrowser.tabs[i];
|
||||
@@ -60,7 +78,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
removableTabs.push(tab);
|
||||
}
|
||||
}
|
||||
@@ -5418,7 +5421,7 @@ var SessionStoreInternal = {
|
||||
@@ -5418,7 +5425,7 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let workspaceID = aWindow.getWorkspaceID();
|
||||
@@ -69,7 +87,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
winData.workspaceID = workspaceID;
|
||||
}
|
||||
},
|
||||
@@ -5609,11 +5612,12 @@ var SessionStoreInternal = {
|
||||
@@ -5609,11 +5616,12 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
let tabbrowser = aWindow.gBrowser;
|
||||
@@ -83,7 +101,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
// update the internal state data for this window
|
||||
for (let tab of tabs) {
|
||||
if (tab == aWindow.FirefoxViewHandler.tab) {
|
||||
@@ -5624,6 +5628,7 @@ var SessionStoreInternal = {
|
||||
@@ -5624,6 +5632,7 @@ var SessionStoreInternal = {
|
||||
tabsData.push(tabData);
|
||||
}
|
||||
|
||||
@@ -91,7 +109,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
// update tab group state for this window
|
||||
winData.groups = [];
|
||||
for (let tabGroup of aWindow.gBrowser.tabGroups) {
|
||||
@@ -5636,7 +5641,7 @@ var SessionStoreInternal = {
|
||||
@@ -5636,7 +5645,7 @@ var SessionStoreInternal = {
|
||||
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
|
||||
// since it's only inserted into the tab strip after it's selected).
|
||||
if (aWindow.FirefoxViewHandler.tab?.selected) {
|
||||
@@ -100,7 +118,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
winData.title = tabbrowser.tabs[0].label;
|
||||
}
|
||||
winData.selected = selectedIndex;
|
||||
@@ -5748,8 +5753,8 @@ var SessionStoreInternal = {
|
||||
@@ -5748,8 +5757,8 @@ var SessionStoreInternal = {
|
||||
// selectTab represents.
|
||||
let selectTab = 0;
|
||||
if (overwriteTabs) {
|
||||
@@ -111,7 +129,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
selectTab = Math.min(selectTab, winData.tabs.length);
|
||||
}
|
||||
|
||||
@@ -5792,6 +5797,8 @@ var SessionStoreInternal = {
|
||||
@@ -5792,6 +5801,8 @@ var SessionStoreInternal = {
|
||||
winData.tabs,
|
||||
winData.groups ?? []
|
||||
);
|
||||
@@ -120,7 +138,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
this._log.debug(
|
||||
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
|
||||
);
|
||||
@@ -6349,6 +6356,25 @@ var SessionStoreInternal = {
|
||||
@@ -6349,6 +6360,25 @@ var SessionStoreInternal = {
|
||||
|
||||
// Most of tabData has been restored, now continue with restoring
|
||||
// attributes that may trigger external events.
|
||||
@@ -146,7 +164,7 @@ index e8192ea9d8d35165fbfbb8c4fc4a96641a80cc86..fcd331a25a34e406e8f74d15db8567f7
|
||||
|
||||
if (tabData.pinned) {
|
||||
tabbrowser.pinTab(tab);
|
||||
@@ -7264,7 +7290,7 @@ var SessionStoreInternal = {
|
||||
@@ -7264,7 +7294,7 @@ var SessionStoreInternal = {
|
||||
|
||||
let groupsToSave = new Map();
|
||||
for (let tIndex = 0; tIndex < window.tabs.length; ) {
|
||||
|
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||
index 82721356d191055bec0d4b0ca49e481221988801..9c8a2b1791e780e0fcd3a9bfc7efdadf35d52165 100644
|
||||
index 82721356d191055bec0d4b0ca49e481221988801..1ea5c394c704da295149443d7794961a12f2060b 100644
|
||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||
@@ -85,6 +85,18 @@ class _TabState {
|
||||
@@ -85,7 +85,22 @@ class _TabState {
|
||||
tabData.groupId = tab.group.id;
|
||||
}
|
||||
|
||||
@@ -19,5 +19,9 @@ index 82721356d191055bec0d4b0ca49e481221988801..9c8a2b1791e780e0fcd3a9bfc7efdadf
|
||||
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
|
||||
+
|
||||
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
||||
+ if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) {
|
||||
+ delete tabData.searchMode;
|
||||
+ }
|
||||
|
||||
tabData.userContextId = tab.userContextId || 0;
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index fd2465046407261e8c29b4cd3d56122d232e701c..937068562975a26834572c408e9a75453bdf49cb 100644
|
||||
index fd2465046407261e8c29b4cd3d56122d232e701c..108bc7eae78898bf8a84ddadbacca2d6e64a457d 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -21,6 +21,7 @@
|
||||
@@ -30,9 +30,12 @@ index fd2465046407261e8c29b4cd3d56122d232e701c..937068562975a26834572c408e9a7545
|
||||
".tab-throbber":
|
||||
"fadein,pinned,busy,progress,selected=visuallyselected",
|
||||
".tab-icon-pending":
|
||||
@@ -95,7 +98,7 @@
|
||||
@@ -93,9 +96,9 @@
|
||||
"src=image,triggeringprincipal=iconloadingprincipal,requestcontextid,fadein,pinned,selected=visuallyselected,busy,crashed,sharing,pictureinpicture,pending,discarded",
|
||||
".tab-sharing-icon-overlay": "sharing,selected=visuallyselected,pinned",
|
||||
".tab-icon-overlay":
|
||||
"sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked",
|
||||
- "sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked",
|
||||
+ "zen-essential,sharing,pictureinpicture,crashed,busy,soundplaying,soundplaying-scheduledremoval,pinned,muted,blocked,selected=visuallyselected,activemedia-blocked",
|
||||
".tab-audio-button":
|
||||
- "crashed,soundplaying,soundplaying-scheduledremoval,pinned,muted,activemedia-blocked",
|
||||
+ "zen-essential,crashed,soundplaying,soundplaying-scheduledremoval,pinned,muted,activemedia-blocked",
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35a63f59ee 100644
|
||||
index 3204f253c23551650991d3385dd256d55892a012..7c30015ac4591fdb97426521ae87b80ed9d2317a 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -427,15 +427,64 @@
|
||||
@@ -128,22 +128,6 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
|
||||
let browser = this.getBrowserForTab(aTab);
|
||||
browser.mIconURL = aIconURL;
|
||||
@@ -1249,13 +1312,13 @@
|
||||
let oldTab = this.selectedTab;
|
||||
|
||||
// Preview mode should not reset the owner
|
||||
- if (!this._previewMode && !oldTab.selected) {
|
||||
+ if (!this._previewMode && !oldTab.selected && oldTab.owner && !oldTab.hasAttribute("zen-essential")) {
|
||||
oldTab.owner = null;
|
||||
}
|
||||
|
||||
let lastRelatedTab = this._lastRelatedTabMap.get(oldTab);
|
||||
if (lastRelatedTab) {
|
||||
- if (!lastRelatedTab.selected) {
|
||||
+ if (!lastRelatedTab.selected && lastRelatedTab.owner && !lastRelatedTab.hasAttribute("zen-essential")) {
|
||||
lastRelatedTab.owner = null;
|
||||
}
|
||||
}
|
||||
@@ -1333,6 +1396,7 @@
|
||||
if (!this._previewMode) {
|
||||
newTab.recordTimeFromUnloadToReload();
|
||||
@@ -249,15 +233,6 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
if (!UserInteraction.running("browser.tabs.opening", window)) {
|
||||
UserInteraction.start("browser.tabs.opening", "initting", window);
|
||||
}
|
||||
@@ -2752,7 +2827,7 @@
|
||||
ownerTab ??= inBackground ? null : this.selectedTab;
|
||||
|
||||
// if we're adding tabs, we're past interrupt mode, ditch the owner
|
||||
- if (this.selectedTab.owner) {
|
||||
+ if (this.selectedTab.owner && !this.selectedTab.hasAttribute("zen-essential")) {
|
||||
this.selectedTab.owner = null;
|
||||
}
|
||||
|
||||
@@ -2807,6 +2882,19 @@
|
||||
noInitialLabel,
|
||||
skipBackgroundNotify,
|
||||
@@ -453,7 +428,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
tabGroup = previousTab.group;
|
||||
}
|
||||
if (
|
||||
@@ -3975,13 +4101,15 @@
|
||||
@@ -3975,7 +4101,7 @@
|
||||
) {
|
||||
elementIndex = Infinity;
|
||||
} else if (previousTab.visible) {
|
||||
@@ -462,16 +437,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
} else if (previousTab == FirefoxViewHandler.tab) {
|
||||
elementIndex = 0;
|
||||
}
|
||||
|
||||
if (lastRelatedTab) {
|
||||
- lastRelatedTab.owner = null;
|
||||
+ if (!lastRelatedTab.hasAttribute("zen-essential")) {
|
||||
+ lastRelatedTab.owner = null;
|
||||
+ }
|
||||
} else if (openerTab) {
|
||||
tab.owner = openerTab;
|
||||
}
|
||||
@@ -4003,14 +4131,14 @@
|
||||
@@ -4003,14 +4129,14 @@
|
||||
}
|
||||
// Ensure index is within bounds.
|
||||
if (tab.pinned) {
|
||||
@@ -481,7 +447,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
+ index = Math.min(index, tab.hasAttribute("zen-essential") ? this._numZenEssentials : this._numVisiblePinTabsWithoutCollapsed);
|
||||
} else {
|
||||
- index = Math.max(index, this.pinnedTabCount);
|
||||
+ index = Math.max(index, this._numVisiblePinTabsWithoutCollapsed);
|
||||
+ index = Math.max(index, typeof elementIndex == "number" ? this._numVisiblePinTabsWithoutCollapsed : this.pinnedTabCount);
|
||||
index = Math.min(index, allItems.length);
|
||||
}
|
||||
/** @type {MozTabbrowserTab|undefined} */
|
||||
@@ -490,7 +456,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
|
||||
if (pinned && !itemAfter?.pinned) {
|
||||
itemAfter = null;
|
||||
@@ -4021,7 +4149,7 @@
|
||||
@@ -4021,7 +4147,7 @@
|
||||
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
|
||||
@@ -499,7 +465,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
|
||||
// Place at the front of, or between tabs in, the same tab group
|
||||
this.tabContainer.insertBefore(tab, itemAfter);
|
||||
@@ -4057,6 +4185,7 @@
|
||||
@@ -4057,6 +4183,7 @@
|
||||
if (pinned) {
|
||||
this._updateTabBarForPinnedTabs();
|
||||
}
|
||||
@@ -507,7 +473,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -4346,6 +4475,9 @@
|
||||
@@ -4346,6 +4473,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -517,7 +483,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
this.removeTabs(selectedTabs, { isUserTriggered, telemetrySource });
|
||||
}
|
||||
|
||||
@@ -4607,6 +4739,7 @@
|
||||
@@ -4607,6 +4737,7 @@
|
||||
telemetrySource,
|
||||
} = {}
|
||||
) {
|
||||
@@ -525,7 +491,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||
// can be considered equivalent to closing the window.
|
||||
if (
|
||||
@@ -4696,6 +4829,7 @@
|
||||
@@ -4696,6 +4827,7 @@
|
||||
if (lastToClose) {
|
||||
this.removeTab(lastToClose, aParams);
|
||||
}
|
||||
@@ -533,7 +499,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
@@ -4734,6 +4868,12 @@
|
||||
@@ -4734,6 +4866,12 @@
|
||||
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
||||
}
|
||||
|
||||
@@ -546,7 +512,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
// Handle requests for synchronously removing an already
|
||||
// asynchronously closing tab.
|
||||
if (!animate && aTab.closing) {
|
||||
@@ -4748,6 +4888,9 @@
|
||||
@@ -4748,6 +4886,9 @@
|
||||
// state).
|
||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||
let isLastTab = this.#isLastTabInWindow(aTab);
|
||||
@@ -556,7 +522,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
if (
|
||||
!this._beginRemoveTab(aTab, {
|
||||
closeWindowFastpath: true,
|
||||
@@ -4796,7 +4939,13 @@
|
||||
@@ -4796,7 +4937,13 @@
|
||||
// We're not animating, so we can cancel the animation stopwatch.
|
||||
Glean.browserTabclose.timeAnim.cancel(aTab._closeTimeAnimTimerId);
|
||||
aTab._closeTimeAnimTimerId = null;
|
||||
@@ -571,7 +537,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -4930,7 +5079,7 @@
|
||||
@@ -4930,7 +5077,7 @@
|
||||
closeWindowWithLastTab != null
|
||||
? closeWindowWithLastTab
|
||||
: !window.toolbar.visible ||
|
||||
@@ -580,7 +546,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
|
||||
if (closeWindow) {
|
||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
||||
@@ -4954,6 +5103,7 @@
|
||||
@@ -4954,6 +5101,7 @@
|
||||
|
||||
newTab = true;
|
||||
}
|
||||
@@ -588,7 +554,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||
|
||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||
@@ -4994,13 +5144,7 @@
|
||||
@@ -4994,13 +5142,7 @@
|
||||
aTab._mouseleave();
|
||||
|
||||
if (newTab) {
|
||||
@@ -603,7 +569,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
} else {
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -5133,6 +5277,7 @@
|
||||
@@ -5133,6 +5275,7 @@
|
||||
this.tabs[i]._tPos = i;
|
||||
}
|
||||
|
||||
@@ -611,7 +577,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
if (!this._windowIsClosing) {
|
||||
// update tab close buttons state
|
||||
this.tabContainer._updateCloseButtons();
|
||||
@@ -5345,6 +5490,7 @@
|
||||
@@ -5345,6 +5488,7 @@
|
||||
}
|
||||
|
||||
let excludeTabs = new Set(aExcludeTabs);
|
||||
@@ -619,7 +585,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
|
||||
// If this tab has a successor, it should be selectable, since
|
||||
// hiding or closing a tab removes that tab as a successor.
|
||||
@@ -5357,13 +5503,13 @@
|
||||
@@ -5357,13 +5501,13 @@
|
||||
!excludeTabs.has(aTab.owner) &&
|
||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||
) {
|
||||
@@ -635,7 +601,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
);
|
||||
|
||||
let tab = this.tabContainer.findNextTab(aTab, {
|
||||
@@ -5379,7 +5525,7 @@
|
||||
@@ -5379,7 +5523,7 @@
|
||||
}
|
||||
|
||||
if (tab) {
|
||||
@@ -644,7 +610,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
}
|
||||
|
||||
// If no qualifying visible tab was found, see if there is a tab in
|
||||
@@ -5400,7 +5546,7 @@
|
||||
@@ -5400,7 +5544,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
@@ -653,7 +619,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
}
|
||||
|
||||
_blurTab(aTab) {
|
||||
@@ -5802,10 +5948,10 @@
|
||||
@@ -5802,10 +5946,10 @@
|
||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||
}
|
||||
|
||||
@@ -666,7 +632,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -5864,6 +6010,7 @@
|
||||
@@ -5864,6 +6008,7 @@
|
||||
* @param {MozTabbrowserTab|MozTabbrowserTabGroup|MozTabbrowserTabGroup.labelElement} aTab
|
||||
*/
|
||||
replaceTabWithWindow(aTab, aOptions) {
|
||||
@@ -674,7 +640,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
if (this.tabs.length == 1) {
|
||||
return null;
|
||||
}
|
||||
@@ -5997,7 +6144,7 @@
|
||||
@@ -5997,7 +6142,7 @@
|
||||
* `true` if element is a `<tab-group>`
|
||||
*/
|
||||
isTabGroup(element) {
|
||||
@@ -683,7 +649,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -6073,8 +6220,8 @@
|
||||
@@ -6073,8 +6218,8 @@
|
||||
}
|
||||
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
@@ -694,7 +660,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
} else {
|
||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -6100,10 +6247,16 @@
|
||||
@@ -6100,10 +6245,16 @@
|
||||
this.#handleTabMove(
|
||||
element,
|
||||
() => {
|
||||
@@ -713,7 +679,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
||||
neighbor.after(element);
|
||||
} else {
|
||||
@@ -6161,23 +6314,28 @@
|
||||
@@ -6161,23 +6312,28 @@
|
||||
#moveTabNextTo(element, targetElement, moveBefore = false, metricsContext) {
|
||||
if (this.isTabGroupLabel(targetElement)) {
|
||||
targetElement = targetElement.group;
|
||||
@@ -748,7 +714,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
} else if (!element.pinned && targetElement && targetElement.pinned) {
|
||||
// If the caller asks to move an unpinned element next to a pinned
|
||||
// tab, move the unpinned element to be the first unpinned element
|
||||
@@ -6190,14 +6348,34 @@
|
||||
@@ -6190,14 +6346,34 @@
|
||||
// move the tab group right before the first unpinned tab.
|
||||
// 4. Moving a tab group and the first unpinned tab is grouped:
|
||||
// move the tab group right before the first unpinned tab's tab group.
|
||||
@@ -784,7 +750,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
element.pinned
|
||||
? this.tabContainer.pinnedTabsContainer
|
||||
: this.tabContainer;
|
||||
@@ -6206,7 +6384,7 @@
|
||||
@@ -6206,7 +6382,7 @@
|
||||
element,
|
||||
() => {
|
||||
if (moveBefore) {
|
||||
@@ -793,7 +759,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
} else if (targetElement) {
|
||||
targetElement.after(element);
|
||||
} else {
|
||||
@@ -6252,10 +6430,10 @@
|
||||
@@ -6252,10 +6428,10 @@
|
||||
* @param {TabMetricsContext} [metricsContext]
|
||||
*/
|
||||
moveTabToGroup(aTab, aGroup, metricsContext) {
|
||||
@@ -806,7 +772,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
return;
|
||||
}
|
||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||
@@ -6285,6 +6463,7 @@
|
||||
@@ -6285,6 +6461,7 @@
|
||||
|
||||
let state = {
|
||||
tabIndex: tab._tPos,
|
||||
@@ -814,7 +780,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
};
|
||||
if (tab.visible) {
|
||||
state.elementIndex = tab.elementIndex;
|
||||
@@ -6311,7 +6490,7 @@
|
||||
@@ -6311,7 +6488,7 @@
|
||||
let changedTabGroup =
|
||||
previousTabState.tabGroupId != currentTabState.tabGroupId;
|
||||
|
||||
@@ -823,7 +789,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
tab.dispatchEvent(
|
||||
new CustomEvent("TabMove", {
|
||||
bubbles: true,
|
||||
@@ -6348,6 +6527,10 @@
|
||||
@@ -6348,6 +6525,10 @@
|
||||
|
||||
moveActionCallback();
|
||||
|
||||
@@ -834,7 +800,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||
// changed.
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
@@ -7249,7 +7432,7 @@
|
||||
@@ -7249,7 +7430,7 @@
|
||||
// preventDefault(). It will still raise the window if appropriate.
|
||||
break;
|
||||
}
|
||||
@@ -843,7 +809,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
window.focus();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
@@ -7264,7 +7447,6 @@
|
||||
@@ -7264,7 +7445,6 @@
|
||||
}
|
||||
case "TabGroupCollapse":
|
||||
aEvent.target.tabs.forEach(tab => {
|
||||
@@ -851,7 +817,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
});
|
||||
break;
|
||||
case "TabGroupCreateByUser":
|
||||
@@ -8199,6 +8381,7 @@
|
||||
@@ -8199,6 +8379,7 @@
|
||||
aWebProgress.isTopLevel
|
||||
) {
|
||||
this.mTab.setAttribute("busy", "true");
|
||||
@@ -859,7 +825,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
||||
this.mTab._notselectedsinceload = !this.mTab.selected;
|
||||
}
|
||||
@@ -9200,7 +9383,7 @@ var TabContextMenu = {
|
||||
@@ -9200,7 +9381,7 @@ var TabContextMenu = {
|
||||
);
|
||||
contextUnpinSelectedTabs.hidden =
|
||||
!this.contextTab.pinned || !this.multiselected;
|
||||
@@ -868,7 +834,7 @@ index 3204f253c23551650991d3385dd256d55892a012..29e0471616f979bfe40bb4d34148bf35
|
||||
// Build Ask Chat items
|
||||
TabContextMenu.GenAI.buildTabMenu(
|
||||
document.getElementById("context_askChat"),
|
||||
@@ -9520,6 +9703,7 @@ var TabContextMenu = {
|
||||
@@ -9520,6 +9701,7 @@ var TabContextMenu = {
|
||||
)
|
||||
);
|
||||
} else {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd0698e189659 100644
|
||||
index c7557dad38db9ef02b981c46de9595df77cb67db..f45ecacd23179f06a436d5f3d372b536322388ea 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -44,6 +44,9 @@
|
||||
@@ -157,7 +157,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -1541,6 +1568,16 @@
|
||||
@@ -1541,6 +1568,17 @@
|
||||
}
|
||||
this.#resetTabsAfterDrop(draggedTab.ownerDocument);
|
||||
|
||||
@@ -168,13 +168,14 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
+ return;
|
||||
+ }
|
||||
+ } else if (dt.mozUserCancelled) {
|
||||
+ gZenViewSplitter.onBrowserDragEndToSplit(event, true);
|
||||
+ if (gZenViewSplitter._lastOpenedTab) gZenViewSplitter._lastOpenedTab._visuallySelected = false;
|
||||
+ }
|
||||
+
|
||||
if (
|
||||
dt.mozUserCancelled ||
|
||||
dt.dropEffect != "none" ||
|
||||
@@ -1707,7 +1744,6 @@
|
||||
@@ -1707,7 +1745,6 @@
|
||||
|
||||
this.toggleAttribute("overflow", true);
|
||||
this._updateCloseButtons();
|
||||
@@ -182,7 +183,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
|
||||
document
|
||||
.getElementById("tab-preview-panel")
|
||||
@@ -1765,7 +1801,7 @@
|
||||
@@ -1765,7 +1802,7 @@
|
||||
}
|
||||
|
||||
get newTabButton() {
|
||||
@@ -191,7 +192,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
}
|
||||
|
||||
get verticalMode() {
|
||||
@@ -1781,6 +1817,7 @@
|
||||
@@ -1781,6 +1818,7 @@
|
||||
}
|
||||
|
||||
get overflowing() {
|
||||
@@ -199,7 +200,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
return this.hasAttribute("overflow");
|
||||
}
|
||||
|
||||
@@ -1789,31 +1826,51 @@
|
||||
@@ -1789,31 +1827,51 @@
|
||||
if (this.#allTabs) {
|
||||
return this.#allTabs;
|
||||
}
|
||||
@@ -267,7 +268,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1880,29 +1937,23 @@
|
||||
@@ -1880,29 +1938,23 @@
|
||||
|
||||
let elementIndex = 0;
|
||||
|
||||
@@ -306,7 +307,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1914,6 +1965,7 @@
|
||||
@@ -1914,6 +1966,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
@@ -314,7 +315,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1929,8 +1981,8 @@
|
||||
@@ -1929,8 +1982,8 @@
|
||||
#isContainerVerticalPinnedGrid(tab) {
|
||||
return (
|
||||
this.verticalMode &&
|
||||
@@ -325,7 +326,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
!this.expandOnHover
|
||||
);
|
||||
}
|
||||
@@ -1946,7 +1998,7 @@
|
||||
@@ -1946,7 +1999,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
@@ -334,7 +335,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -2041,7 +2093,7 @@
|
||||
@@ -2041,7 +2094,7 @@
|
||||
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
||||
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
||||
// Attach the long click popup to all of them.
|
||||
@@ -343,7 +344,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -2139,8 +2191,10 @@
|
||||
@@ -2139,8 +2192,10 @@
|
||||
*/
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
@@ -354,7 +355,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -2149,7 +2203,7 @@
|
||||
@@ -2149,7 +2204,7 @@
|
||||
* @param {boolean} [shouldScrollInstantly=false]
|
||||
*/
|
||||
#ensureTabIsVisible(tab, shouldScrollInstantly = false) {
|
||||
@@ -363,7 +364,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
if (arrowScrollbox.overflowing) {
|
||||
arrowScrollbox.ensureElementIsVisible(tab, shouldScrollInstantly);
|
||||
}
|
||||
@@ -2288,6 +2342,16 @@
|
||||
@@ -2288,6 +2343,16 @@
|
||||
when the tab is first selected to be dragged.
|
||||
*/
|
||||
#updateTabStylesOnDrag(tab) {
|
||||
@@ -380,7 +381,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
let isPinned = tab.pinned;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
let allTabs = this.ariaFocusableItems;
|
||||
@@ -2540,7 +2604,7 @@
|
||||
@@ -2540,7 +2605,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -389,7 +390,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
@@ -2549,6 +2613,8 @@
|
||||
@@ -2549,6 +2614,8 @@
|
||||
|
||||
let { width: tabWidth, height: tabHeight } =
|
||||
draggedTab.getBoundingClientRect();
|
||||
@@ -398,7 +399,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
let shiftSizeX = tabWidth * movingTabs.length;
|
||||
let shiftSizeY = tabHeight;
|
||||
dragData.tabWidth = tabWidth;
|
||||
@@ -2585,8 +2651,8 @@
|
||||
@@ -2585,8 +2652,8 @@
|
||||
let lastBoundX =
|
||||
lastTabInRow.screenX +
|
||||
lastTabInRow.getBoundingClientRect().width -
|
||||
@@ -409,7 +410,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
translateX = Math.min(Math.max(translateX, firstBoundX), lastBoundX);
|
||||
translateY = Math.min(Math.max(translateY, firstBoundY), lastBoundY);
|
||||
|
||||
@@ -2743,13 +2809,18 @@
|
||||
@@ -2743,13 +2810,18 @@
|
||||
|
||||
this.#clearDragOverGroupingTimer();
|
||||
|
||||
@@ -432,7 +433,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
|
||||
if (this.#rtlMode) {
|
||||
tabs.reverse();
|
||||
@@ -2760,7 +2831,7 @@
|
||||
@@ -2760,7 +2832,7 @@
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let translateAxis = this.verticalMode ? "translateY" : "translateX";
|
||||
@@ -441,7 +442,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
let tabSize = this.verticalMode ? tabHeight : tabWidth;
|
||||
let translateX = event.screenX - dragData.screenX;
|
||||
let translateY = event.screenY - dragData.screenY;
|
||||
@@ -2776,6 +2847,12 @@
|
||||
@@ -2776,6 +2848,12 @@
|
||||
);
|
||||
let lastMovingTab = movingTabs.at(-1);
|
||||
let firstMovingTab = movingTabs[0];
|
||||
@@ -454,7 +455,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
let endEdge = ele => ele[screenAxis] + bounds(ele)[size];
|
||||
let lastMovingTabScreen = endEdge(lastMovingTab);
|
||||
let firstMovingTabScreen = firstMovingTab[screenAxis];
|
||||
@@ -2790,6 +2867,11 @@
|
||||
@@ -2790,6 +2868,11 @@
|
||||
let endBound = this.#rtlMode
|
||||
? endEdge(this) - lastMovingTabScreen
|
||||
: periphery[screenAxis] - 1 - lastMovingTabScreen;
|
||||
@@ -466,7 +467,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
translate = Math.min(Math.max(translate, startBound), endBound);
|
||||
|
||||
// Center the tab under the cursor if the tab is not under the cursor while dragging
|
||||
@@ -2979,6 +3061,8 @@
|
||||
@@ -2979,6 +3062,8 @@
|
||||
};
|
||||
|
||||
let dropElement = getOverlappedElement();
|
||||
@@ -475,7 +476,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
|
||||
let newDropElementIndex;
|
||||
if (dropElement) {
|
||||
@@ -3060,7 +3144,7 @@
|
||||
@@ -3060,7 +3145,7 @@
|
||||
? Services.prefs.getIntPref(
|
||||
"browser.tabs.dragDrop.moveOverThresholdPercent"
|
||||
) / 100
|
||||
@@ -484,7 +485,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
moveOverThreshold = Math.min(1, Math.max(0, moveOverThreshold));
|
||||
let shouldMoveOver = overlapPercent > moveOverThreshold;
|
||||
if (logicalForward && shouldMoveOver) {
|
||||
@@ -3093,6 +3177,7 @@
|
||||
@@ -3093,6 +3178,7 @@
|
||||
// If dragging a group over another group, don't make it look like it is
|
||||
// possible to drop the dragged group inside the other group.
|
||||
if (
|
||||
@@ -492,7 +493,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
isTabGroupLabel(draggedTab) &&
|
||||
dropElement?.group &&
|
||||
(!dropElement.group.collapsed ||
|
||||
@@ -3119,20 +3204,13 @@
|
||||
@@ -3119,20 +3205,13 @@
|
||||
let isOutOfBounds = isPinned
|
||||
? dropElement.elementIndex >= numPinned
|
||||
: dropElement.elementIndex < numPinned;
|
||||
@@ -517,7 +518,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
let groupingDelay = Services.prefs.getIntPref(
|
||||
"browser.tabs.dragDrop.createGroup.delayMS"
|
||||
);
|
||||
@@ -3140,6 +3218,7 @@
|
||||
@@ -3140,6 +3219,7 @@
|
||||
// When dragging tab(s) over an ungrouped tab, signal to the user
|
||||
// that dropping the tab(s) will create a new tab group.
|
||||
let shouldCreateGroupOnDrop =
|
||||
@@ -525,7 +526,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
!movingTabsSet.has(dropElement) &&
|
||||
isTab(dropElement) &&
|
||||
!dropElement?.group &&
|
||||
@@ -3148,6 +3227,7 @@
|
||||
@@ -3148,6 +3228,7 @@
|
||||
// When dragging tab(s) over a collapsed tab group label, signal to the
|
||||
// user that dropping the tab(s) will add them to the group.
|
||||
let shouldDropIntoCollapsedTabGroup =
|
||||
@@ -533,7 +534,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
isTabGroupLabel(dropElement) &&
|
||||
dropElement.group.collapsed &&
|
||||
overlapPercent > dragOverGroupingThreshold;
|
||||
@@ -3192,19 +3272,14 @@
|
||||
@@ -3192,19 +3273,14 @@
|
||||
dropElement = dropElementGroup;
|
||||
colorCode = undefined;
|
||||
} else if (isTabGroupLabel(dropElement)) {
|
||||
@@ -561,7 +562,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
}
|
||||
this.#setDragOverGroupColor(colorCode);
|
||||
this.toggleAttribute("movingtab-addToGroup", colorCode);
|
||||
@@ -3223,11 +3298,11 @@
|
||||
@@ -3223,11 +3299,11 @@
|
||||
dragData.dropElement = dropElement;
|
||||
dragData.dropBefore = dropBefore;
|
||||
dragData.animDropElementIndex = newDropElementIndex;
|
||||
@@ -575,7 +576,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -3346,12 +3421,14 @@
|
||||
@@ -3346,12 +3422,14 @@
|
||||
element?.removeAttribute("dragover-groupTarget");
|
||||
}
|
||||
|
||||
@@ -592,7 +593,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
|
||||
for (let item of this.ariaFocusableItems) {
|
||||
this.#resetGroupTarget(item);
|
||||
@@ -3394,16 +3471,15 @@
|
||||
@@ -3394,16 +3472,15 @@
|
||||
tab.style.left = "";
|
||||
tab.style.top = "";
|
||||
tab.style.maxWidth = "";
|
||||
@@ -611,7 +612,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
}
|
||||
let periphery = draggedTabDocument.getElementById(
|
||||
"tabbrowser-arrowscrollbox-periphery"
|
||||
@@ -3475,7 +3551,7 @@
|
||||
@@ -3475,7 +3552,7 @@
|
||||
let postTransitionCleanup = () => {
|
||||
movingTab._moveTogetherSelectedTabsData.animate = false;
|
||||
};
|
||||
@@ -620,7 +621,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -3639,7 +3715,7 @@
|
||||
@@ -3639,7 +3716,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
@@ -629,7 +630,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3748,7 +3824,10 @@
|
||||
@@ -3748,7 +3825,10 @@
|
||||
#getDragTarget(event, { ignoreSides = false } = {}) {
|
||||
let { target } = event;
|
||||
while (target) {
|
||||
@@ -641,7 +642,7 @@ index c7557dad38db9ef02b981c46de9595df77cb67db..4192dc797d5f07ece57e7e9ecb0cd069
|
||||
break;
|
||||
}
|
||||
target = target.parentNode;
|
||||
@@ -3765,6 +3844,9 @@
|
||||
@@ -3765,6 +3845,9 @@
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -1,13 +1,13 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
index 36e3ab4a5a153230bb488b66dda7e3e7c763ca23..28b59c7c3a95febafc3f2a6e0ac3493b9785ff1a 100644
|
||||
index 36e3ab4a5a153230bb488b66dda7e3e7c763ca23..81f2944b939ac0963c129f86aab0b55817349401 100644
|
||||
--- a/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
@@ -411,7 +411,7 @@ export class UrlbarController {
|
||||
// When there's no search string and no view selection, we want to focus
|
||||
// the next toolbar item instead, for accessibility reasons.
|
||||
let allowTabbingThroughResults =
|
||||
- this.input.focusedViaMousedown ||
|
||||
+ true ||
|
||||
this.input.searchMode?.isPreview ||
|
||||
this.input.searchMode?.source ==
|
||||
lazy.UrlbarUtils.RESULT_SOURCE.ACTIONS ||
|
||||
@@ -434,6 +434,8 @@ export class UrlbarController {
|
||||
});
|
||||
}
|
||||
event.preventDefault();
|
||||
+ } else {
|
||||
+ this.browserWindow.gZenUIManager.enableCommandsMode(event);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c563851ae89385 100644
|
||||
index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..1dc520f63b240cccda7be074346d2079774eed27 100644
|
||||
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||
@@ -74,6 +74,13 @@ ChromeUtils.defineLazyGetter(lazy, "logger", () =>
|
||||
@@ -184,7 +184,20 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c56385
|
||||
|
||||
let controller =
|
||||
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
||||
@@ -4130,6 +4195,7 @@ export class UrlbarInput {
|
||||
@@ -3836,7 +3901,11 @@ export class UrlbarInput {
|
||||
if (!engineName && !source && !this.hasAttribute("searchmode")) {
|
||||
return;
|
||||
}
|
||||
-
|
||||
+ this.window.dispatchEvent(
|
||||
+ new CustomEvent("Zen:UrlbarSearchModeChanged", {
|
||||
+ detail: { searchMode },
|
||||
+ })
|
||||
+ );
|
||||
this._searchModeIndicatorTitle.textContent = "";
|
||||
this._searchModeIndicatorTitle.removeAttribute("data-l10n-id");
|
||||
|
||||
@@ -4130,6 +4199,7 @@ export class UrlbarInput {
|
||||
|
||||
this.document.l10n.setAttributes(
|
||||
this.inputField,
|
||||
@@ -192,7 +205,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c56385
|
||||
l10nId,
|
||||
l10nId == "urlbar-placeholder-with-name" ? { name } : undefined
|
||||
);
|
||||
@@ -4241,6 +4307,11 @@ export class UrlbarInput {
|
||||
@@ -4241,6 +4311,11 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_on_click(event) {
|
||||
@@ -204,7 +217,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c56385
|
||||
if (
|
||||
event.target == this.inputField ||
|
||||
event.target == this._inputContainer
|
||||
@@ -4311,7 +4382,7 @@ export class UrlbarInput {
|
||||
@@ -4311,7 +4386,7 @@ export class UrlbarInput {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +226,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c56385
|
||||
this.view.autoOpen({ event });
|
||||
} else {
|
||||
if (this._untrimOnFocusAfterKeydown) {
|
||||
@@ -4351,9 +4422,16 @@ export class UrlbarInput {
|
||||
@@ -4351,9 +4426,16 @@ export class UrlbarInput {
|
||||
}
|
||||
|
||||
_on_mousedown(event) {
|
||||
@@ -231,7 +244,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c56385
|
||||
|
||||
if (
|
||||
event.target != this.inputField &&
|
||||
@@ -4364,6 +4442,10 @@ export class UrlbarInput {
|
||||
@@ -4364,6 +4446,10 @@ export class UrlbarInput {
|
||||
|
||||
this.focusedViaMousedown = !this.focused;
|
||||
this._preventClickSelectsAll = this.focused;
|
||||
@@ -242,7 +255,7 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c56385
|
||||
|
||||
// Keep the focus status, since the attribute may be changed
|
||||
// upon calling this.focus().
|
||||
@@ -4399,7 +4481,7 @@ export class UrlbarInput {
|
||||
@@ -4399,7 +4485,7 @@ export class UrlbarInput {
|
||||
}
|
||||
// Don't close the view when clicking on a tab; we may want to keep the
|
||||
// view open on tab switch, and the TabSelect event arrived earlier.
|
||||
@@ -251,3 +264,12 @@ index 1c447bd31de854d1522dbcfb5d7ad557c84f1388..2341d04c5afee303ce4150c3c2c56385
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -4716,7 +4802,7 @@ export class UrlbarInput {
|
||||
// When we are in actions search mode we can show more results so
|
||||
// increase the limit.
|
||||
let maxResults =
|
||||
- this.searchMode?.source != lazy.UrlbarUtils.RESULT_SOURCE.ACTIONS
|
||||
+ this.searchMode?.source != lazy.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS
|
||||
? lazy.UrlbarPrefs.get("maxRichResults")
|
||||
: UNLIMITED_MAX_RESULTS;
|
||||
let options = {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
|
||||
index cdc476a3eb2ee2cb6193d215513b65ed375f6153..a2b106916d6cca25096d37b80bea45f016ad82a5 100644
|
||||
index cdc476a3eb2ee2cb6193d215513b65ed375f6153..bc66d9651e521bda75a3bb9e7f1e4b3bb325be90 100644
|
||||
--- a/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarMuxerStandard.sys.mjs
|
||||
@@ -855,6 +855,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
|
||||
@@ -10,3 +10,13 @@ index cdc476a3eb2ee2cb6193d215513b65ed375f6153..a2b106916d6cca25096d37b80bea45f0
|
||||
// Discard the result if a tab-to-search result was added already.
|
||||
if (!state.canAddTabToSearch) {
|
||||
return false;
|
||||
@@ -1501,7 +1502,9 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
|
||||
usedLimits.maxResultCount++;
|
||||
}
|
||||
|
||||
+ if (!(result.heuristic && result.source == UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS)) {
|
||||
state.usedResultSpan += span;
|
||||
+ }
|
||||
this._updateStatePostAdd(result, state);
|
||||
|
||||
return true;
|
||||
|
12
src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch
Normal file
12
src/browser/components/urlbar/UrlbarPrefs-sys-mjs.patch
Normal file
@@ -0,0 +1,12 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarPrefs.sys.mjs b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||
index 3c179db3b310c43f8c6c06b1ecbcf5ed59feefe6..d9d2ce116ebcee8d403e165066c3a569bb952cd2 100644
|
||||
--- a/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarPrefs.sys.mjs
|
||||
@@ -719,6 +719,7 @@ function makeResultGroups({ showSearchSuggestionsFirst }) {
|
||||
*/
|
||||
let rootGroup = {
|
||||
children: [
|
||||
+ { children: [{ group: lazy.UrlbarUtils.RESULT_GROUP.ZEN_ACTION }] },
|
||||
// heuristic
|
||||
{
|
||||
maxResultCount: 1,
|
@@ -0,0 +1,12 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
index 555273f6ea1efd77aa3062b9910bbfe28568775d..5c4a46c926913ab592f5e12908b8817410abe6b6 100644
|
||||
--- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
@@ -716,6 +716,7 @@ export class Query {
|
||||
if (
|
||||
result.heuristic &&
|
||||
this.context.searchMode &&
|
||||
+ !(this.context.searchMode.source === lazy.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS && result.payload?.zenAction) &&
|
||||
(!this.context.trimmedSearchString ||
|
||||
(!this.context.searchMode.engineName && !result.autofill))
|
||||
) {
|
29
src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch
Normal file
29
src/browser/components/urlbar/UrlbarUtils-sys-mjs.patch
Normal file
@@ -0,0 +1,29 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarUtils.sys.mjs b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||
index 0bc15c02f56dd8f46a21fed02b4e21a741f27f41..40da868f68f21d8411107fb8a95e2d0b74337b51 100644
|
||||
--- a/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarUtils.sys.mjs
|
||||
@@ -75,6 +75,7 @@ export var UrlbarUtils = {
|
||||
RESTRICT_SEARCH_KEYWORD: "restrictSearchKeyword",
|
||||
SUGGESTED_INDEX: "suggestedIndex",
|
||||
TAIL_SUGGESTION: "tailSuggestion",
|
||||
+ ZEN_ACTION: "zenAction",
|
||||
}),
|
||||
|
||||
// Defines provider types.
|
||||
@@ -134,6 +135,7 @@ export var UrlbarUtils = {
|
||||
OTHER_NETWORK: 6,
|
||||
ADDON: 7,
|
||||
ACTIONS: 8,
|
||||
+ ZEN_ACTIONS: 9,
|
||||
}),
|
||||
|
||||
// Per-result exposure telemetry.
|
||||
@@ -553,6 +555,8 @@ export var UrlbarUtils = {
|
||||
return this.RESULT_GROUP.HEURISTIC_SEARCH_TIP;
|
||||
case "HistoryUrlHeuristic":
|
||||
return this.RESULT_GROUP.HEURISTIC_HISTORY_URL;
|
||||
+ case "ZenUrlbarProviderGlobalActions":
|
||||
+ return this.RESULT_GROUP.ZEN_ACTION;
|
||||
default:
|
||||
if (result.providerName.startsWith("TestProvider")) {
|
||||
return this.RESULT_GROUP.HEURISTIC_TEST;
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
index fdbab8806fd320f4aacec46a42c8ef953580d00c..e23fae0d7e0b71d74899c11c229359864cd7e427 100644
|
||||
index fdbab8806fd320f4aacec46a42c8ef953580d00c..031a615ad09274c578184b129434bbd93b49353d 100644
|
||||
--- a/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||
@@ -613,7 +613,7 @@ export class UrlbarView {
|
||||
@@ -11,39 +11,7 @@ index fdbab8806fd320f4aacec46a42c8ef953580d00c..e23fae0d7e0b71d74899c11c22935986
|
||||
// Try to reuse the cached top-sites context. If it's not cached, then
|
||||
// there will be a gap of time between when the input is focused and
|
||||
// when the view opens that can be perceived as flicker.
|
||||
@@ -824,6 +824,31 @@ export class UrlbarView {
|
||||
// still associated with the first result.
|
||||
this.input.setResultForCurrentValue(firstResult);
|
||||
}
|
||||
+ if (queryContext.results[0].payload.zenAction) {
|
||||
+ this.#selectElement(this.getFirstSelectableElement(), {
|
||||
+ updateInput: false,
|
||||
+ setAccessibleFocus:
|
||||
+ this.controller._userSelectionBehavior == "arrow",
|
||||
+ });
|
||||
+ this.window.setTimeout(() => {
|
||||
+ this.window.setTimeout(() => {
|
||||
+ this.#selectElement(this.getFirstSelectableElement(), {
|
||||
+ updateInput: false,
|
||||
+ setAccessibleFocus:
|
||||
+ this.controller._userSelectionBehavior == "arrow",
|
||||
+ });
|
||||
+ });
|
||||
+ });
|
||||
+ }
|
||||
+ this.window.setTimeout(() => {
|
||||
+ if (queryContext.results[0].payload.zenAction) {
|
||||
+ this.#selectElement(this.getFirstSelectableElement(), {
|
||||
+ updateInput: false,
|
||||
+ setAccessibleFocus:
|
||||
+ this.controller._userSelectionBehavior == "arrow",
|
||||
+ });
|
||||
+ }
|
||||
+ }, 220);
|
||||
}
|
||||
|
||||
// Announce tab-to-search results to screen readers as the user types.
|
||||
@@ -2706,6 +2731,8 @@ export class UrlbarView {
|
||||
@@ -2706,6 +2706,8 @@ export class UrlbarView {
|
||||
if (row?.hasAttribute("row-selectable")) {
|
||||
row?.toggleAttribute("selected", true);
|
||||
}
|
||||
@@ -52,7 +20,7 @@ index fdbab8806fd320f4aacec46a42c8ef953580d00c..e23fae0d7e0b71d74899c11c22935986
|
||||
if (element != row) {
|
||||
row?.toggleAttribute("descendant-selected", true);
|
||||
}
|
||||
@@ -3189,7 +3216,7 @@ export class UrlbarView {
|
||||
@@ -3189,7 +3191,7 @@ export class UrlbarView {
|
||||
}
|
||||
|
||||
#enableOrDisableRowWrap() {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
|
||||
index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..665b8c431be11dc0ef5f1f30f4c2ef884c231e46 100644
|
||||
index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..c650da2adf0d1a53b05a09d1b43fa5f52d78a307 100644
|
||||
--- a/browser/themes/shared/tabbrowser/tabs.css
|
||||
+++ b/browser/themes/shared/tabbrowser/tabs.css
|
||||
@@ -21,7 +21,7 @@
|
||||
@@ -146,6 +146,17 @@ index 07574cdd974f63b90355f069f0fbc3fa6cd61b50..665b8c431be11dc0ef5f1f30f4c2ef88
|
||||
}
|
||||
|
||||
.tab-background {
|
||||
@@ -1833,8 +1825,8 @@ tab-group {
|
||||
display: block;
|
||||
position: absolute;
|
||||
inset: auto;
|
||||
- top: -3px;
|
||||
- inset-inline-start: 2px;
|
||||
+ top: -2px;
|
||||
+ inset-inline-start: -2px;
|
||||
|
||||
&:-moz-window-inactive {
|
||||
background-image:
|
||||
@@ -1953,7 +1945,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||
list-style-image: url(chrome://global/skin/icons/plus.svg);
|
||||
}
|
||||
|
@@ -1,5 +1,3 @@
|
||||
# Icons used in Zen's emoji picker:
|
||||
|
||||
_Credit to MacKenzie Nason for the Icons and Favicons_
|
||||
|
||||
figma file: https://www.figma.com/community/file/1228728710215940920
|
||||
Credit to [Ionicons](https://ionic.io/ionicons) by [Ionic Framework](https://ionic.io/), used under the [MIT License](https://opensource.org/license/MIT).
|
||||
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.84167 13.5836L6.62299 15.1069C6.57158 15.1711 6.49377 15.2086 6.41152 15.2086H6L6.54164 12.5002L6 9.79171H6.41152C6.49377 9.79171 6.57158 9.82917 6.62299 9.89337L7.84167 11.4167H10.8751L9.85657 6.32393C9.82719 6.17729 9.92232 6.03456 10.069 6.00526C10.0865 6.00172 10.1043 6 10.1221 6H10.3335C10.6695 6 10.9809 6.17629 11.1538 6.46448L14.1252 11.4166H17.2564C17.6967 11.4166 18.1265 11.5507 18.4887 11.8012L18.7159 11.9583C19.0151 12.1652 19.0899 12.5753 18.8831 12.8745C18.8379 12.9399 18.7813 12.9965 18.7159 13.0416L18.4887 13.1988C18.1265 13.4492 17.6967 13.5833 17.2564 13.5833H14.1252L11.1538 18.5355C10.9809 18.8236 10.6695 18.9999 10.3335 18.9999H10.1221C10.1043 18.9999 10.0865 18.9982 10.069 18.9947C9.92232 18.9654 9.82719 18.8227 9.85657 18.676L10.8751 13.5832L7.84167 13.5836Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M186.62 464H160a16 16 0 01-14.57-22.6l64.46-142.25L113.1 297l-35.3 42.77C71.07 348.23 65.7 352 52 352H34.08a17.66 17.66 0 01-14.7-7.06c-2.38-3.21-4.72-8.65-2.44-16.41l19.82-71c.15-.53.33-1.06.53-1.58a.38.38 0 000-.15 14.82 14.82 0 01-.53-1.59l-19.84-71.45c-2.15-7.61.2-12.93 2.56-16.06a16.83 16.83 0 0113.6-6.7H52c10.23 0 20.16 4.59 26 12l34.57 42.05 97.32-1.44-64.44-142A16 16 0 01160 48h26.91a25 25 0 0119.35 9.8l125.05 152 57.77-1.52c4.23-.23 15.95-.31 18.66-.31C463 208 496 225.94 496 256c0 9.46-3.78 27-29.07 38.16-14.93 6.6-34.85 9.94-59.21 9.94-2.68 0-14.37-.08-18.66-.31l-57.76-1.54-125.36 152a25 25 0 01-19.32 9.75z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M122.06 122.06c-44.37 44.37-66.71 100.61-78 145.28l200.6 200.56c44.67-11.25 100.91-33.59 145.28-78s66.71-100.61 78-145.28L267.34 44.1c-44.67 11.25-100.91 33.59-145.28 77.96zm256.73 256.72zM300.65 189L323 166.71A15.78 15.78 0 01345.29 189L323 211.35l11.16 11.17a15.78 15.78 0 01-22.32 22.32l-11.16-11.16L278.32 256l11.16 11.16a15.78 15.78 0 11-22.32 22.32L256 278.32l-22.32 22.33 11.16 11.16a15.78 15.78 0 11-22.32 22.32L211.35 323 189 345.29A15.78 15.78 0 01166.71 323L189 300.65l-11.16-11.17a15.78 15.78 0 0122.32-22.32l11.16 11.16L233.68 256l-11.16-11.16a15.78 15.78 0 1122.32-22.32L256 233.68l22.32-22.33-11.16-11.16a15.78 15.78 0 0122.32-22.32zM476.57 199.63c7.31-54.53 4-120.26-20-144.21s-89.68-27.3-144.21-20c-2.51.34-5.16.72-7.91 1.15l171 171c.4-2.78.78-5.43 1.12-7.94zM35.43 312.37c-7.31 54.53-4 120.26 20 144.21C72.17 473.33 109.34 480 148.84 480a387 387 0 0050.79-3.43c2.51-.34 5.16-.72 7.91-1.15l-171-171c-.39 2.79-.77 5.44-1.11 7.95z"/></svg>
|
@@ -2,8 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6.49891 12.2216C6.2136 12.2074 5.99839 12.4631 6.05591 12.7429C6.27686 13.8176 6.80813 14.8085 7.58934 15.5897C8.37055 16.3709 9.36142 16.9022 10.4361 17.1231C10.7159 17.1807 10.9716 16.9654 10.9574 16.6801C10.947 16.4712 10.9228 16.2631 10.8848 16.0573C10.8439 15.835 10.6093 15.715 10.3969 15.7922L10.3654 15.8036C10.1811 15.8706 9.97752 15.7752 9.91117 15.5907C9.84515 15.4071 9.94 15.2047 10.1233 15.138L10.1559 15.1262C10.3683 15.0489 10.4715 14.8064 10.3606 14.6093C10.2775 14.4616 10.1864 14.3184 10.0877 14.1806C9.95583 13.9963 9.69182 13.9872 9.53158 14.1475L9.50608 14.173C9.368 14.3111 9.14414 14.3111 9.00607 14.173C8.86799 14.0349 8.86799 13.811 9.00607 13.673L9.03077 13.6483C9.19054 13.4885 9.18148 13.2253 8.99778 13.0937C8.85932 12.9945 8.71555 12.903 8.56711 12.8195C8.37063 12.709 8.12886 12.8121 8.05204 13.024L8.04067 13.0554C7.97418 13.2388 7.77177 13.3338 7.58816 13.2678C7.4038 13.2015 7.3084 12.998 7.37533 12.8139L7.38687 12.7821C7.46406 12.5697 7.34402 12.3352 7.12179 12.2942C6.91596 12.2563 6.70788 12.2321 6.49891 12.2216Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
<path d="M12.7429 6.05602C12.463 5.99849 12.2074 6.21371 12.2216 6.49902C12.232 6.70798 12.2562 6.91607 12.2942 7.1219C12.3351 7.34412 12.5697 7.46417 12.7821 7.38698L12.8136 7.37551C12.9979 7.30854 13.2015 7.404 13.2678 7.58847C13.3338 7.77203 13.239 7.97442 13.0557 8.04111L13.0231 8.05295C12.8106 8.13026 12.7075 8.3728 12.8184 8.56985C12.9015 8.71759 12.9926 8.86071 13.0913 8.99856C13.2232 9.18283 13.4872 9.19191 13.6474 9.03168L13.6729 9.00617C13.811 8.8681 14.0348 8.8681 14.1729 9.00617C14.311 9.14425 14.311 9.36811 14.1729 9.50619L14.1483 9.53084C13.9885 9.69062 13.9976 9.95388 14.1814 10.0854C14.3198 10.1844 14.4635 10.2759 14.612 10.3593C14.8087 10.4699 15.0506 10.3668 15.1277 10.1548L15.1395 10.1224C15.2062 9.93889 15.409 9.84419 15.5925 9.91082C15.7761 9.97748 15.8709 10.1804 15.8041 10.364L15.7923 10.3965C15.715 10.6091 15.8352 10.8441 16.0578 10.885C16.2634 10.9229 16.4713 10.9471 16.6801 10.9575C16.9654 10.9717 17.1806 10.716 17.1231 10.4362C16.9021 9.36153 16.3709 8.37066 15.5896 7.58945C14.8084 6.80824 13.8176 6.27696 12.7429 6.05602Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
<path d="M15.717 11.7797C15.4943 11.7321 15.2642 11.8474 15.1863 12.0615L15.1592 12.136C15.0924 12.3195 14.8896 12.4142 14.7061 12.3474C14.5227 12.2807 14.428 12.0779 14.4947 11.8944L14.5221 11.8189C14.6004 11.6036 14.4968 11.3661 14.2941 11.2595C14.0161 11.1133 13.7508 10.9439 13.5011 10.7533C13.3186 10.6139 13.059 10.6202 12.8966 10.7826L12.8396 10.8396C12.7015 10.9776 12.4777 10.9776 12.3396 10.8396C12.2015 10.7015 12.2015 10.4776 12.3396 10.3395L12.3966 10.2826C12.5589 10.1202 12.5653 9.8605 12.4259 9.67801C12.2352 9.42834 12.0659 9.16308 11.9196 8.88504C11.813 8.6823 11.5756 8.57876 11.3603 8.657L11.2847 8.68445C11.1013 8.75113 10.8985 8.65648 10.8317 8.47304C10.765 8.28955 10.8596 8.0867 11.0431 8.01995L11.1177 7.99281C11.3317 7.91494 11.447 7.68484 11.3995 7.46212C11.3323 7.14735 11.2919 6.82754 11.2788 6.50613C11.2666 6.20909 11.0236 5.96094 10.7296 6.00512C9.54523 6.1831 8.44321 6.73579 7.5895 7.5895C6.73579 8.44321 6.1831 9.54523 6.00512 10.7296C5.96094 11.0236 6.20909 11.2666 6.50613 11.2788C6.82754 11.2919 7.14735 11.3323 7.46212 11.3995C7.68484 11.447 7.91494 11.3317 7.99281 11.1177L8.01995 11.0431C8.0867 10.8596 8.28955 10.765 8.47304 10.8317C8.65648 10.8985 8.75113 11.1013 8.68445 11.2847L8.657 11.3603C8.57876 11.5756 8.6823 11.813 8.88504 11.9196C9.16308 12.0659 9.42834 12.2352 9.67801 12.4259C9.8605 12.5653 10.1202 12.5589 10.2826 12.3966L10.3395 12.3396C10.4776 12.2015 10.7015 12.2015 10.8396 12.3396C10.9776 12.4777 10.9776 12.7015 10.8396 12.8396L10.7826 12.8966C10.6202 13.059 10.6139 13.3186 10.7533 13.5011C10.9439 13.7508 11.1133 14.0161 11.2595 14.2941C11.3661 14.4968 11.6036 14.6004 11.8189 14.5221L11.8944 14.4947C12.0779 14.428 12.2807 14.5227 12.3474 14.7061C12.4142 14.8896 12.3195 15.0924 12.136 15.1592L12.0615 15.1863C11.8474 15.2642 11.7321 15.4943 11.7797 15.717C11.8469 16.0318 11.8872 16.3516 11.9004 16.673C11.9125 16.97 12.1556 17.2182 12.4496 17.174C13.6339 16.996 14.7359 16.4434 15.5896 15.5896C16.4434 14.7359 16.996 13.6339 17.174 12.4496C17.2182 12.1556 16.97 11.9125 16.673 11.9004C16.3516 11.8872 16.0318 11.8469 15.717 11.7797Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M444 295.67l-.47-26.07a205.42 205.42 0 01-39.27-4.73l-5 17.35a14 14 0 11-26.88-7.81l5-17.38a206.47 206.47 0 01-36.05-17.35l-10.44 14.77a14 14 0 01-22.87-16.16l10.41-14.73a204.8 204.8 0 01-30-30L273.71 204a14 14 0 01-16.16-22.87l14.74-10.42a205.3 205.3 0 01-17.38-36.06l-17.32 5a14 14 0 11-7.81-26.89l17.3-5a205.88 205.88 0 01-4.43-32.59q-.17-3-.24-6l-18.22-.33a14 14 0 01-13.74-14A208 208 0 0055 202.42a16 16 0 0115 15.66l.44 24.43c1.58.05 3.16.11 4.73.2a205.88 205.88 0 0132.59 4.43l5-17.3a14 14 0 0126.89 7.81l-5 17.32a205.21 205.21 0 0136 17.38L181 257.61a14 14 0 0122.87 16.16l-10.39 14.73a205.65 205.65 0 0115.79 14.23 203.79 203.79 0 0114.23 15.79l14.73-10.41A14 14 0 01254.39 331l-14.76 10.43A206.86 206.86 0 01257 377.47l17.38-5.05a14 14 0 017.81 26.89l-17.35 5a205.89 205.89 0 014.7 38.28l18.27.33a16 16 0 0115.71 16.28 11.69 11.69 0 01-.08 1.19 208 208 0 00153.39-151.03A14 14 0 01444 295.67z"/><path d="M301.49 56.2A14 14 0 01287.5 70h-.25l-16.81-.3c.05 1.31.1 2.62.17 3.93a178.83 178.83 0 003.44 26.31l16.29-4.74a14 14 0 017.81 26.8l-16.27 4.73a178.06 178.06 0 0013.33 27.69l13.84-9.78a14 14 0 1116.16 22.87l-13.86 9.79q5.25 6.33 11.12 12.19c3.9 3.91 8 7.6 12.2 11.1l9.78-13.84A14 14 0 11367.32 203l-9.76 13.8a178.83 178.83 0 0027.68 13.33l4.76-16.28a14 14 0 0126.89 7.81l-4.73 16.26a177.72 177.72 0 0030.95 3.65l-.16-9a14 14 0 0113.75-14.24h.25a14.67 14.67 0 012.59.25 208 208 0 00-158-163.51c-.06.4-.04.76-.05 1.13zM208.44 457.55a16 16 0 0116.28-15.71l16.76.29a178.49 178.49 0 00-3.62-29.95l-16.26 4.72a14 14 0 11-7.81-26.9l16.21-4.7a177.92 177.92 0 00-13.33-27.68l-13.8 9.76a14 14 0 11-16.16-22.87l13.84-9.78c-3.5-4.22-7.19-8.3-11.1-12.2s-8-7.62-12.19-11.12l-9.79 13.86a14 14 0 11-22.87-16.16l9.78-13.84a177.16 177.16 0 00-27.69-13.33L122 298.21a14 14 0 11-26.9-7.81l4.73-16.29a177.32 177.32 0 00-26.31-3.44c-.89-.05-1.79-.08-2.68-.12l.16 10.59a16 16 0 01-15.71 16.28H55a16 16 0 01-3.94-.51 208 208 0 00157.65 163.87 15.72 15.72 0 01-.27-3.23z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.9076 10.428H13.479L11.7747 8.04188L12.1816 7.75126L12.5884 7.46064L14.7079 10.428H17.113C17.4542 10.428 17.6952 10.7623 17.5873 11.0861L16.0346 15.7442C15.8985 16.1525 15.5163 16.428 15.0859 16.428H8.52743C8.097 16.428 7.71486 16.1525 7.57875 15.7442L6.02604 11.0861C5.91812 10.7623 6.1591 10.428 6.50038 10.428H8.6787L10.7982 7.46064C11.2369 6.84645 12.1497 6.84646 12.5884 7.46064L12.1816 7.75126L11.7747 8.04188C11.7348 7.98604 11.6518 7.98604 11.6119 8.04188L9.9076 10.428ZM10.8067 13.928C10.8067 13.3757 11.2544 12.928 11.8067 12.928C12.359 12.928 12.8067 13.3757 12.8067 13.928C12.8067 14.4802 12.359 14.928 11.8067 14.928C11.2544 14.928 10.8067 14.4802 10.8067 13.928Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M424.11 192H360L268.8 70.4a16 16 0 00-25.6 0L152 192H87.89a32.57 32.57 0 00-32.62 32.44 30.3 30.3 0 001.31 9l46.27 163.14a50.72 50.72 0 0048.84 36.91h208.62a51.21 51.21 0 0049-36.86l46.33-163.36a15.62 15.62 0 00.46-2.36l.53-4.93a13.3 13.3 0 00.09-1.55A32.57 32.57 0 00424.11 192zM256 106.67L320 192H192zm0 245a37.7 37.7 0 1137.88-37.7A37.87 37.87 0 01256 351.63z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16.7139 11C17.4229 10.9999 18 11.7344 18 12.6367V16.4541C18 16.7553 17.8081 17 17.5713 17C17.3347 16.9999 17.1426 16.7554 17.1426 16.4541V15.9092H6.85742V16.4541C6.85742 16.7553 6.66543 16.9999 6.42871 17C6.19205 17 6 16.7554 6 16.4541V12.6367C6 11.7344 6.57713 11 7.28613 11H16.7139ZM16.5459 7C16.7967 7.00024 17 7.19209 17 7.42871V9.75C17 9.88807 16.8881 10 16.75 10H15.8867C15.7486 10 15.6367 9.88807 15.6367 9.75V9.57129C15.6367 9.0987 15.2288 8.714 14.7275 8.71387H13.3633C12.8621 8.71409 12.4542 9.09873 12.4541 9.57129V9.75C12.4541 9.88807 12.3422 10 12.2041 10H11.7959C11.6578 10 11.5459 9.88807 11.5459 9.75V9.57129C11.5458 9.09875 11.1379 8.71409 10.6367 8.71387H9.27246C8.77124 8.714 8.36335 9.09867 8.36328 9.57129V9.75C8.36328 9.88807 8.25135 10 8.11328 10H7.25C7.11193 10 7 9.88807 7 9.75V7.42871C7 7.19219 7.2032 7.00024 7.4541 7H16.5459Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M432 230.7a79.44 79.44 0 00-32-6.7H112a79.51 79.51 0 00-32 6.69A80.09 80.09 0 0032 304v112a16 16 0 0032 0v-8a8.1 8.1 0 018-8h368a8.1 8.1 0 018 8v8a16 16 0 0032 0V304a80.09 80.09 0 00-48-73.3zM376 80H136a56 56 0 00-56 56v72a4 4 0 005.11 3.84A95.5 95.5 0 01112 208h4.23a4 4 0 004-3.55A32 32 0 01152 176h56a32 32 0 0131.8 28.45 4 4 0 004 3.55h24.46a4 4 0 004-3.55A32 32 0 01304 176h56a32 32 0 0131.8 28.45 4 4 0 004 3.55h4.2a95.51 95.51 0 0126.89 3.85A4 4 0 00432 208v-72a56 56 0 00-56-56z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.2102 17.9021C13.031 17.9021 13.7036 17.2409 13.7036 16.4201H10.7167C10.7167 17.2409 11.3779 17.9135 12.2102 17.9021ZM17.215 14.425C16.7704 13.9461 15.9267 13.2165 15.9267 10.8338C15.9267 9.03253 14.6613 7.57327 12.9512 7.23125V6.74103C12.9512 6.5445 12.8731 6.35601 12.7341 6.21704C12.5952 6.07807 12.4067 6 12.2102 6C12.0136 6 11.8251 6.07807 11.6862 6.21704C11.5472 6.35601 11.4691 6.5445 11.4691 6.74103V7.23125C9.75904 7.58467 8.49359 9.03253 8.49359 10.8338C8.49359 13.2165 7.66135 13.9461 7.20533 14.425C7.06853 14.5732 7.00012 14.7556 7.00012 14.9266C7.00012 15.3028 7.30794 15.6676 7.74115 15.679H16.6791C17.1238 15.679 17.4202 15.3142 17.4202 14.9266C17.4202 14.7442 17.3632 14.5732 17.215 14.425Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M440.08 341.31c-1.66-2-3.29-4-4.89-5.93-22-26.61-35.31-42.67-35.31-118 0-39-9.33-71-27.72-95-13.56-17.73-31.89-31.18-56.05-41.12a3 3 0 01-.82-.67C306.6 51.49 282.82 32 256 32s-50.59 19.49-59.28 48.56a3.13 3.13 0 01-.81.65c-56.38 23.21-83.78 67.74-83.78 136.14 0 75.36-13.29 91.42-35.31 118-1.6 1.93-3.23 3.89-4.89 5.93a35.16 35.16 0 00-4.65 37.62c6.17 13 19.32 21.07 34.33 21.07H410.5c14.94 0 28-8.06 34.19-21a35.17 35.17 0 00-4.61-37.66zM256 480a80.06 80.06 0 0070.44-42.13 4 4 0 00-3.54-5.87H189.12a4 4 0 00-3.55 5.87A80.06 80.06 0 00256 480z"/></svg>
|
@@ -2,7 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6 14.9291V6.34512C6 6.25062 6.06948 6.1705 6.16303 6.15714L6.70303 6.07999C8.51235 5.82152 10.3555 6.19373 11.9227 7.13407C11.9707 7.16283 12 7.21464 12 7.27054V17.1804C10.6894 16.1975 9.14493 15.5735 7.51931 15.3703L6.24936 15.2116C6.1069 15.1938 6 15.0727 6 14.9291Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
<path d="M19 14.9291L19 6.34512C19 6.25062 18.9305 6.1705 18.837 6.15714L18.297 6.08C16.4876 5.82152 14.6445 6.19373 13.0773 7.13407C13.0293 7.16283 13 7.21464 13 7.27054L13 17.1804C14.3106 16.1975 15.8551 15.5735 17.4807 15.3703L18.7506 15.2116C18.8931 15.1938 19 15.0727 19 14.9291Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M202.24 74C166.11 56.75 115.61 48.3 48 48a31.36 31.36 0 00-17.92 5.33A32 32 0 0016 79.9V366c0 19.34 13.76 33.93 32 33.93 71.07 0 142.36 6.64 185.06 47a4.11 4.11 0 006.94-3V106.82a15.89 15.89 0 00-5.46-12A143 143 0 00202.24 74zM481.92 53.3A31.33 31.33 0 00464 48c-67.61.3-118.11 8.71-154.24 26a143.31 143.31 0 00-32.31 20.78 15.93 15.93 0 00-5.45 12v337.13a3.93 3.93 0 006.68 2.81c25.67-25.5 70.72-46.82 185.36-46.81a32 32 0 0032-32v-288a32 32 0 00-14.12-26.61z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M14.5 5.5C15.6046 5.5 16.5 6.39543 16.5 7.5V17.5C16.5 18.0177 16.1067 18.4438 15.6025 18.4951V18.4951C15.5372 18.4982 15.4736 18.4736 15.4274 18.4274L12.7071 15.7071C12.3166 15.3166 11.6834 15.3166 11.2929 15.7071L8.57259 18.4274C8.52636 18.4736 8.46277 18.4982 8.39746 18.4951V18.4951C7.89333 18.4438 7.5 18.0177 7.5 17.5V7.5C7.5 6.39543 8.39543 5.5 9.5 5.5H14.5Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M400 480a16 16 0 01-10.63-4L256 357.41 122.63 476A16 16 0 0196 464V96a64.07 64.07 0 0164-64h192a64.07 64.07 0 0164 64v368a16 16 0 01-16 16z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M336 80H176a16 16 0 00-16 16v16h192V96a16 16 0 00-16-16z" fill="none"/><path d="M496 176a64.07 64.07 0 00-64-64h-48V96a48.05 48.05 0 00-48-48H176a48.05 48.05 0 00-48 48v16H80a64.07 64.07 0 00-64 64v48h480zm-144-64H160V96a16 16 0 0116-16h160a16 16 0 0116 16zM336 264a24 24 0 01-24 24H200a24 24 0 01-24-24v-4a4 4 0 00-4-4H16v144a64 64 0 0064 64h352a64 64 0 0064-64V256H340a4 4 0 00-4 4z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M233.15 360.11a15.7 15.7 0 01-4.92-.77 16 16 0 01-10.92-13c-2.15-15-19.95-32.46-36.62-35.85a16 16 0 01-8.69-26.33l211.09-235.1c.19-.22.39-.43.59-.63a56.57 56.57 0 0179.89 0 56.51 56.51 0 01.11 79.78l-219 227a16 16 0 01-11.53 4.9zM119.89 480.11c-32.14 0-65.45-16.89-84.85-43a16 16 0 0112.85-25.54c5.34 0 20-4.87 20-20.57 0-39.07 31.4-70.86 70-70.86s70 31.79 70 70.86c0 49.12-39.48 89.11-88 89.11z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M463.55 272.13H400v-48.2q0-4.32-.27-8.47c29.57-27.88 32.25-64.63 32.27-103 0-8.61-6.64-16-15.25-16.41A16 16 0 00400 112c0 28-1.86 48.15-9.9 63.84-19.22-41.15-65.78-63.91-134.1-63.91-39.8 0-74.19 9.13-99.43 26.39-14.9 10.19-26.2 22.91-33.7 37.72C114 160.65 112 141 112 112.46c0-8.61-6.6-16-15.2-16.44A16 16 0 0080 112c0 37.63 2.61 73.73 32.44 101.63q-.43 5.06-.44 10.3v48.2H48.45c-8.61 0-16 6.62-16.43 15.23a16 16 0 0016 16.77h64V320a143.32 143.32 0 0010.39 53.69C96.74 396.64 80.18 422 80 463.34c0 8.74 6.62 16.3 15.36 16.65A16 16 0 00112 464c0-27.66 9.1-44.71 26.17-61.32A144.37 144.37 0 00220 459.42a16 16 0 0020-15.49V192.45c0-8.61 6.62-16 15.23-16.43A16 16 0 01272 192v251.93a16 16 0 0020 15.49 144.4 144.4 0 0081.82-56.74c17 16.54 26.09 33.52 26.17 60.95a16.27 16.27 0 0015.1 16.37A16 16 0 00432 464c0-41.68-16.6-67.23-42.39-90.31A143.32 143.32 0 00400 320v-15.87h64a16 16 0 0016-16.77c-.42-8.61-7.84-15.23-16.45-15.23z"/><path d="M321.39 104l.32.09c13.57 3.8 25.07-10.55 18.2-22.85A95.86 95.86 0 00256.21 32h-.42a95.87 95.87 0 00-84.19 50.13c-6.84 12.58 5.14 27 18.84 22.86 19.71-6 41.79-9.06 65.56-9.06 24.09 0 46.09 2.72 65.39 8.07z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M469.54 120.52a16 16 0 00-25.54-4L382.56 178a16.12 16.12 0 01-22.63 0l-26.56-26.6a16 16 0 010-22.63l61.18-61.19a16 16 0 00-4.78-25.92C343.56 21 285.88 31.78 249.51 67.88c-30.9 30.68-40.11 78.62-25.25 131.53a15.89 15.89 0 01-4.49 16L53.29 367.46a64.17 64.17 0 1090.6 90.64l153.68-166.85a15.9 15.9 0 0115.77-4.57 179.3 179.3 0 0046.22 6.37c33.4 0 62.71-10.81 83.85-31.64 39.15-38.57 45.12-103.99 26.13-140.89zM99.48 447.15a32 32 0 1128.34-28.35 32 32 0 01-28.34 28.35z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M432 64H96a16 16 0 00-16 16v192a96.11 96.11 0 0096 96h112a96.11 96.11 0 0096-96v-80h18a62.07 62.07 0 0062-62V96a32 32 0 00-32-32zm0 66a30 30 0 01-30 30h-18V96h48zM400 400H64a16 16 0 000 32h336a16 16 0 000-32z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M391 480c-19.52 0-46.94-7.06-88-30-49.93-28-88.55-53.85-138.21-103.38C116.91 298.77 93.61 267.79 61 208.45c-36.84-67-30.56-102.12-23.54-117.13C45.82 73.38 58.16 62.65 74.11 52a176.3 176.3 0 0128.64-15.2c1-.43 1.93-.84 2.76-1.21 4.95-2.23 12.45-5.6 21.95-2 6.34 2.38 12 7.25 20.86 16 18.17 17.92 43 57.83 52.16 77.43 6.15 13.21 10.22 21.93 10.23 31.71 0 11.45-5.76 20.28-12.75 29.81-1.31 1.79-2.61 3.5-3.87 5.16-7.61 10-9.28 12.89-8.18 18.05 2.23 10.37 18.86 41.24 46.19 68.51s57.31 42.85 67.72 45.07c5.38 1.15 8.33-.59 18.65-8.47 1.48-1.13 3-2.3 4.59-3.47 10.66-7.93 19.08-13.54 30.26-13.54h.06c9.73 0 18.06 4.22 31.86 11.18 18 9.08 59.11 33.59 77.14 51.78 8.77 8.84 13.66 14.48 16.05 20.81 3.6 9.53.21 17-2 22-.37.83-.78 1.74-1.21 2.75a176.49 176.49 0 01-15.29 28.58c-10.63 15.9-21.4 28.21-39.38 36.58A67.42 67.42 0 01391 480z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M32 376a56 56 0 0056 56h336a56 56 0 0056-56V222H32zm66-76a30 30 0 0130-30h48a30 30 0 0130 30v20a30 30 0 01-30 30h-48a30 30 0 01-30-30zM424 80H88a56 56 0 00-56 56v26h448v-26a56 56 0 00-56-56z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.5 5C16.0899 5 19 7.91015 19 11.5C19 15.0899 16.0899 18 12.5 18C11.3952 18 10.3553 17.7235 9.44434 17.2373L6.5 18.5L7 17C7.18199 16.454 7.26137 15.8832 7.23926 15.3154C6.46065 14.2437 6 12.926 6 11.5C6 7.91015 8.91015 5 12.5 5ZM9.5 11C8.94772 11 8.5 11.4477 8.5 12C8.5 12.5523 8.94772 13 9.5 13C10.0523 13 10.5 12.5523 10.5 12C10.5 11.4477 10.0523 11 9.5 11ZM12.5 11C11.9477 11 11.5 11.4477 11.5 12C11.5 12.5523 11.9477 13 12.5 13C13.0523 13 13.5 12.5523 13.5 12C13.5 11.4477 13.0523 11 12.5 11ZM15.5 11C14.9477 11 14.5 11.4477 14.5 12C14.5 12.5523 14.9477 13 15.5 13C16.0523 13 16.5 12.5523 16.5 12C16.5 11.4477 16.0523 11 15.5 11Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M398 81.84A227.4 227.4 0 00255.82 32C194.9 32 138 55.47 95.46 98.09 54.35 139.33 31.82 193.78 32 251.37a215.66 215.66 0 0035.65 118.76l.19.27c.28.41.57.82.86 1.22s.65.92.73 1.05l.22.4c1.13 2 2 4.44 1.23 6.9l-18.42 66.66a29.13 29.13 0 00-1.2 7.63A25.69 25.69 0 0076.83 480a29.44 29.44 0 0010.45-2.29l67.49-24.36.85-.33a14.75 14.75 0 015.8-1.15 15.12 15.12 0 015.37 1c1.62.63 16.33 6.26 31.85 10.6 12.9 3.6 39.74 9 60.77 9 59.65 0 115.35-23.1 156.83-65.06C457.36 365.77 480 310.42 480 251.49a213.5 213.5 0 00-4.78-45c-10.34-48.62-37.76-92.9-77.22-124.65zM87.48 380zM160 288a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32zm96 0a32 32 0 1132-32 32 32 0 01-32 32z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15.5 6.5C16.6046 6.5 17.5 7.39543 17.5 8.5V15.5C17.5 16.6046 16.6046 17.5 15.5 17.5H8.5C7.39543 17.5 6.5 16.6046 6.5 15.5V8.5C6.5 7.39543 7.39543 6.5 8.5 6.5H15.5ZM14.8291 9.12402C14.6213 8.9422 14.3059 8.96314 14.124 9.1709L10.9756 12.7686L9.85352 11.6465C9.65825 11.4512 9.34175 11.4512 9.14648 11.6465C8.95122 11.8417 8.95122 12.1583 9.14648 12.3535L10.6465 13.8535C10.7443 13.9514 10.8783 14.0046 11.0166 14C11.1549 13.9954 11.2849 13.9332 11.376 13.8291L14.876 9.8291C15.0578 9.62131 15.0369 9.30587 14.8291 9.12402Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M400 48H112a64.07 64.07 0 00-64 64v288a64.07 64.07 0 0064 64h288a64.07 64.07 0 0064-64V112a64.07 64.07 0 00-64-64zm-35.75 138.29l-134.4 160a16 16 0 01-12 5.71h-.27a16 16 0 01-11.89-5.3l-57.6-64a16 16 0 1123.78-21.4l45.29 50.32 122.59-145.91a16 16 0 0124.5 20.58z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="12.5" cy="11.5" r="5.5" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M256 464c-114.69 0-208-93.31-208-208S141.31 48 256 48s208 93.31 208 208-93.31 208-208 208z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.167 7C14.1246 7.00014 15.7853 8.10794 16.3775 9.64606C16.5365 10.0589 16.8768 10.3921 17.2905 10.5487C18.5493 11.0249 19.4443 12.2413 19.4443 13.667C19.4442 15.5077 17.9521 16.9999 16.1113 17H8.33301C6.49231 16.9998 5.00017 15.5077 5 13.667C5 12.2742 5.85428 11.081 7.06742 10.5826C7.46651 10.4187 7.79046 10.0884 7.94089 9.684C8.52044 8.12606 10.1931 7 12.167 7Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M396 432H136c-36.44 0-70.36-12.57-95.51-35.41C14.38 372.88 0 340 0 304c0-36.58 13.39-68.12 38.72-91.22 18.11-16.53 42.22-28.25 69.18-33.87a16 16 0 0011.37-9.15 156.24 156.24 0 0142.05-56C187.76 91.69 220.5 80 256 80a153.57 153.57 0 01107.14 42.9c24.73 23.81 41.5 55.28 49.18 92a16 16 0 0012.12 12.39C470 237.42 512 270.43 512 328c0 33.39-12.24 60.78-35.41 79.23C456.23 423.43 428.37 432 396 432z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.03033 7.96967C9.32322 8.26256 9.32322 8.73744 9.03033 9.03033L6.06066 12L9.03033 14.9697C9.32322 15.2626 9.32322 15.7374 9.03033 16.0303C8.73744 16.3232 8.26256 16.3232 7.96967 16.0303L4.46967 12.5303C4.17678 12.2374 4.17678 11.7626 4.46967 11.4697L7.96967 7.96967C8.26256 7.67678 8.73744 7.67678 9.03033 7.96967ZM14.9697 7.96967C15.2626 7.67678 15.7374 7.67678 16.0303 7.96967L19.5303 11.4697C19.8232 11.7626 19.8232 12.2374 19.5303 12.5303L16.0303 16.0303C15.7374 16.3232 15.2626 16.3232 14.9697 16.0303C14.6768 15.7374 14.6768 15.2626 14.9697 14.9697L17.9393 12L14.9697 9.03033C14.6768 8.73744 14.6768 8.26256 14.9697 7.96967Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M160 389a20.91 20.91 0 01-13.82-5.2l-128-112a21 21 0 010-31.6l128-112a21 21 0 0127.66 31.61L63.89 256l109.94 96.19A21 21 0 01160 389zM352 389a21 21 0 01-13.84-36.81L448.11 256l-109.94-96.19a21 21 0 0127.66-31.61l128 112a21 21 0 010 31.6l-128 112A20.89 20.89 0 01352 389z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.999 15.5967C17.9989 15.8364 17.8678 16.0884 17.6279 16.3242C17.5197 16.4093 17.411 16.4942 17.3105 16.5869C16.4049 17.2252 14.6752 17.7324 12.501 17.7324C9.25954 17.7323 7.00044 16.6063 7 15.5967L7.0006 14.9247C7.00075 14.7546 7.20374 14.6575 7.34534 14.7519C8.46831 15.5003 10.3425 15.9834 12.502 15.9834C14.6609 15.9834 16.5319 15.5005 17.6543 14.7522C17.7959 14.6578 17.999 14.755 17.999 14.9253V15.5967ZM17.999 13.1045C17.9989 13.3442 17.8678 13.5962 17.6279 13.832C17.5197 13.9172 17.4111 14.002 17.3105 14.0947C16.4049 14.733 14.6752 15.2402 12.501 15.2402C9.25947 15.2401 7.00034 14.1141 7 13.1045L7.0006 12.4326C7.00075 12.2624 7.20374 12.1653 7.34534 12.2597C8.4683 13.0081 10.3424 13.4912 12.502 13.4912C14.6609 13.4912 16.5319 13.0083 17.6543 12.26C17.7959 12.1656 17.999 12.2628 17.999 12.4331V13.1045ZM17.999 10.6123C17.9988 11.622 15.7429 12.748 12.501 12.748C9.25941 12.7479 7.00026 11.6219 7 10.6123V9.96135C7 9.79094 7.20348 9.69366 7.34531 9.78812C8.45881 10.5298 10.3126 10.999 12.501 10.999C14.6849 10.999 16.5416 10.5304 17.6531 9.7892C17.7951 9.69455 17.999 9.79188 17.999 9.96248V10.6123ZM12.501 6C15.6413 6 17.8566 7.05643 17.9922 8.04395L17.999 8.13965C17.9987 9.14935 15.7429 10.2754 12.501 10.2754C9.25945 10.2753 7.00032 9.14926 7 8.13965C7 7.12608 9.2591 6.00011 12.501 6Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M256 428c-52.35 0-111.39-11.61-157.93-31-17.07-7.19-31.69-18.82-43.64-28a4 4 0 00-6.43 3.18v12.58c0 28.07 23.49 53.22 66.14 70.82C152.29 471.33 202.67 480 256 480s103.7-8.67 141.86-24.42C440.51 438 464 412.83 464 384.76v-12.58a4 4 0 00-6.43-3.18c-11.95 9.17-26.57 20.81-43.65 28-46.54 19.39-105.57 31-157.92 31zM464 126.51c-.81-27.65-24.18-52.4-66-69.85C359.74 40.76 309.34 32 256 32s-103.74 8.76-141.91 24.66c-41.78 17.41-65.15 42.11-66 69.69L48 144c0 6.41 5.2 16.48 14.63 24.73 11.13 9.73 27.65 19.33 47.78 27.73C153.24 214.36 207.67 225 256 225s102.76-10.68 145.59-28.58c20.13-8.4 36.65-18 47.78-27.73C458.8 160.49 464 150.42 464 144z"/><path d="M413.92 226c-46.53 19.43-105.57 31-157.92 31s-111.39-11.57-157.93-31c-17.07-7.15-31.69-18.79-43.64-28a4 4 0 00-6.43 3.22V232c0 6.41 5.2 14.48 14.63 22.73 11.13 9.74 27.65 19.33 47.78 27.74C153.24 300.34 207.67 311 256 311s102.76-10.68 145.59-28.57c20.13-8.41 36.65-18 47.78-27.74C458.8 246.47 464 238.41 464 232v-30.78a4 4 0 00-6.43-3.18c-11.95 9.17-26.57 20.81-43.65 27.96z"/><path d="M413.92 312c-46.54 19.41-105.57 31-157.92 31s-111.39-11.59-157.93-31c-17.07-7.17-31.69-18.81-43.64-28a4 4 0 00-6.43 3.2V317c0 6.41 5.2 14.47 14.62 22.71 11.13 9.74 27.66 19.33 47.79 27.74C153.24 385.32 207.66 396 256 396s102.76-10.68 145.59-28.57c20.13-8.41 36.65-18 47.78-27.74C458.8 331.44 464 323.37 464 317v-29.8a4 4 0 00-6.43-3.18c-11.95 9.17-26.57 20.81-43.65 27.98z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M503.58 126.2a16.85 16.85 0 00-27.07-4.55l-51.15 51.15a11.15 11.15 0 01-15.66 0l-22.48-22.48a11.17 11.17 0 010-15.67l50.88-50.89a16.85 16.85 0 00-5.27-27.4c-39.71-17-89.08-7.45-120 23.29-26.81 26.61-34.83 68-22 113.7a11 11 0 01-3.16 11.1L114.77 365.1a56.76 56.76 0 1080.14 80.18L357 272.08a11 11 0 0110.9-3.17c45 12 86 4 112.43-22 15.2-15 25.81-36.17 29.89-59.71 3.83-22.2 1.41-44.44-6.64-61z"/><path d="M437.33 378.41c-13.94-11.59-43.72-38.4-74.07-66.22l-66.07 70.61c28.24 30 53.8 57.85 65 70.88l.07.08A30 30 0 00383.72 464h1.1a30.11 30.11 0 0021-8.62l.07-.07 33.43-33.37a29.46 29.46 0 00-2-43.53zM118.54 214.55a20.48 20.48 0 00-3-10.76 2.76 2.76 0 012.62-4.22h.06c.84.09 5.33.74 11.7 4.61 4.73 2.87 18.23 12.08 41.73 35.54a34.23 34.23 0 007.22 22.12l66.23-61.55a33.73 33.73 0 00-21.6-9.2 2.65 2.65 0 01-.21-.26l-.65-.69-24.54-33.84a28.45 28.45 0 01-4-26.11 35.23 35.23 0 0111.78-16.35c5.69-4.41 18.53-9.72 29.44-10.62a52.92 52.92 0 0115.19.94 65.57 65.57 0 017.06 2.13 15.46 15.46 0 002.15.63 16 16 0 0016.38-25.06c-.26-.35-1.32-1.79-2.89-3.73a91.85 91.85 0 00-9.6-10.36c-8.15-7.36-29.27-19.77-57-19.77a123.13 123.13 0 00-46.3 9c-38.37 15.45-63.47 36.58-75.01 47.79l-.09.09A222.14 222.14 0 0063.7 129.5a27 27 0 00-4.7 11.77 7.33 7.33 0 01-7.71 6.17H50.2a20.65 20.65 0 00-14.59 5.9L6.16 182.05l-.32.32a20.89 20.89 0 00-.24 28.72c.19.2.37.39.57.58L53.67 258a21 21 0 0014.65 6 20.65 20.65 0 0014.59-5.9l29.46-28.79a20.51 20.51 0 006.17-14.76z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.6896 8.70099C12.5647 8.82601 12.4943 8.99589 12.4943 9.17267C12.4944 9.34929 12.5648 9.51842 12.6896 9.64337L13.3752 10.3289C13.4728 10.4265 13.4728 10.5848 13.3752 10.6825L12.6711 11.3865C12.5735 11.4841 12.4152 11.4841 12.3175 11.3864L6.29901 5.36505C6.21367 5.27985 6.10642 5.21952 5.98944 5.19025C5.87263 5.16106 5.7502 5.16418 5.63495 5.19904C5.51955 5.23399 5.41524 5.29923 5.33417 5.38849C5.2531 5.47776 5.19773 5.58764 5.17401 5.70587C5.14326 5.8601 4.94246 8.95423 7.82733 11.8387C10.5702 14.5797 12.3721 14.7081 13.5358 14.6172C13.6099 14.6114 13.6829 14.6376 13.7354 14.6902L17.8459 18.8006C17.9435 18.8982 18.1018 18.8982 18.1994 18.8006L18.7892 18.2108C18.8868 18.1132 18.8868 17.9548 18.7892 17.8572L13.6135 12.6825C13.5159 12.5848 13.5159 12.4265 13.6135 12.3289L14.3175 11.6248C14.4152 11.5272 14.5735 11.5272 14.6711 11.6248L15.3566 12.3104C15.4816 12.4352 15.6507 12.5056 15.8273 12.5057C16.0041 12.5057 16.174 12.4353 16.299 12.3104L19.9269 8.68245C20.0246 8.58482 20.0246 8.42653 19.9269 8.3289L19.3381 7.74004C19.2404 7.64242 19.0822 7.64241 18.9845 7.74002L16.0041 10.7196C15.9065 10.8172 15.7482 10.8172 15.6506 10.7196L15.6135 10.6825C15.5159 10.5848 15.5159 10.4265 15.6135 10.3289L18.5939 7.34945C18.6915 7.25182 18.6915 7.09351 18.5939 6.99587L18.0041 6.40611C17.9065 6.30847 17.7482 6.30848 17.6506 6.40614L14.6711 9.38646C14.5735 9.48412 14.4152 9.48413 14.3175 9.38649L14.2804 9.34942C14.1828 9.2518 14.1828 9.09353 14.2804 8.99589L17.26 6.01546C17.3576 5.91783 17.3576 5.75955 17.26 5.66193L16.6711 5.07308C16.5735 4.97545 16.4152 4.97545 16.3175 5.07308L12.6896 8.70099ZM6.39481 17.662C6.29714 17.7596 6.29706 17.9179 6.39463 18.0155L6.98359 18.6051C7.08119 18.7028 7.23954 18.7029 7.33721 18.6052L10.2652 15.6781C10.3904 15.553 10.3496 15.3407 10.1901 15.2641C9.94213 15.1449 9.69992 15.0137 9.46452 14.8713C9.36425 14.8106 9.23513 14.8244 9.15223 14.9072L6.39481 17.662Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M357.57 223.94a79.48 79.48 0 0056.58-23.44l77-76.95c6.09-6.09 6.65-16 .85-22.39a16 16 0 00-23.17-.56l-68.63 68.58a12.29 12.29 0 01-17.37 0c-4.79-4.78-4.53-12.86.25-17.64l68.33-68.33a16 16 0 00-.56-23.16A15.62 15.62 0 00440.27 56a16.71 16.71 0 00-11.81 4.9l-68.27 68.26a12.29 12.29 0 01-17.37 0c-4.78-4.78-4.53-12.86.25-17.64l68.33-68.31a16 16 0 00-.56-23.16A15.62 15.62 0 00400.26 16a16.73 16.73 0 00-11.81 4.9L311.5 97.85a79.49 79.49 0 00-23.44 56.59v8.23a16 16 0 01-4.69 11.33l-35.61 35.62a4 4 0 01-5.66 0L68.82 36.33a16 16 0 00-22.58-.06C31.09 51.28 23 72.47 23 97.54c-.1 41.4 21.66 89 56.79 124.08l85.45 85.45A64.79 64.79 0 00211 326a64 64 0 0016.21-2.08 16.24 16.24 0 014.07-.53 15.93 15.93 0 0110.83 4.25l11.39 10.52a16.12 16.12 0 014.6 11.23v5.54a47.73 47.73 0 0013.77 33.65l90.05 91.57.09.1a53.29 53.29 0 0075.36-75.37L302.39 269.9a4 4 0 010-5.66L338 228.63a16 16 0 0111.32-4.69z"/><path d="M211 358a97.32 97.32 0 01-68.36-28.25l-13.86-13.86a8 8 0 00-11.3 0l-85 84.56c-15.15 15.15-20.56 37.45-13.06 59.29a30.63 30.63 0 001.49 3.6C31 484 50.58 496 72 496a55.68 55.68 0 0039.64-16.44L225 365.66a4.69 4.69 0 001.32-3.72v-.26a4.63 4.63 0 00-5.15-4.27A97.09 97.09 0 01211 358z"/></svg>
|
@@ -2,6 +2,4 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M12.5 5C13.1319 5 13.7295 5.14656 14.2606 5.40753C16.6831 6.59781 18 9.80094 18 12.5V12.5C18 15.5376 15.5376 18 12.5 18C9.46243 18 7 15.5376 7 12.5V12.5C7 9.80119 8.31627 6.5984 10.7383 5.40792C11.2698 5.1467 11.8677 5 12.5 5Z" fill="context-fill" fill-opacity="context-fill-opacity"/>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M256 480c-52.57 0-96.72-17.54-127.7-50.73C96.7 395.4 80 346.05 80 286.55 80 230.5 101.48 168 138.93 115 175.65 63 219.41 32 256 32s80.35 31 117.07 83C410.52 168 432 230.5 432 286.55c0 59.5-16.7 108.85-48.3 142.72C352.72 462.46 308.57 480 256 480z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><path d="M345.14 480H274a18 18 0 01-18-18v-27.71a31.32 31.32 0 00-9.71-22.77c-7.78-7.59-19.08-11.8-30.89-11.51-21.36.5-39.4 19.3-39.4 41.06V462a18 18 0 01-18 18H87.62A55.62 55.62 0 0132 424.38V354a18 18 0 0118-18h27.71c9.16 0 18.07-3.92 25.09-11a42.06 42.06 0 0012.2-29.92C114.7 273.89 97.26 256 76.91 256H50a18 18 0 01-18-18v-70.38A55.62 55.62 0 0187.62 112h55.24a8 8 0 008-8v-6.48A65.53 65.53 0 01217.54 32c35.49.62 64.36 30.38 64.36 66.33V104a8 8 0 008 8h55.24A54.86 54.86 0 01400 166.86v55.24a8 8 0 008 8h5.66c36.58 0 66.34 29 66.34 64.64 0 36.61-29.39 66.4-65.52 66.4H408a8 8 0 00-8 8v56A54.86 54.86 0 01345.14 480z"/></svg>
|
@@ -0,0 +1,5 @@
|
||||
#filter dumbComments emptyLines substitution
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 512 512"><circle cx="256" cy="256" r="64"/><path d="M490.84 238.6c-26.46-40.92-60.79-75.68-99.27-100.53C349 110.55 302 96 255.66 96c-42.52 0-84.33 12.15-124.27 36.11-40.73 24.43-77.63 60.12-109.68 106.07a31.92 31.92 0 00-.64 35.54c26.41 41.33 60.4 76.14 98.28 100.65C162 402 207.9 416 255.66 416c46.71 0 93.81-14.43 136.2-41.72 38.46-24.77 72.72-59.66 99.08-100.92a32.2 32.2 0 00-.1-34.76zM256 352a96 96 0 1196-96 96.11 96.11 0 01-96 96z"/></svg>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user