Compare commits

..

3 Commits

Author SHA1 Message Date
ac3970003f
display chattype 2022-06-08 09:59:22 +02:00
cd1ba2a923
24h format and seconds 2022-06-08 00:30:00 +02:00
19e7009e49
display extra informations 2022-06-05 00:09:37 +02:00
1551 changed files with 226045 additions and 324860 deletions

View File

@ -1,8 +0,0 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = LF
charset = utf-8
insert_final_newline = true

18
.env
View File

@ -1,13 +1,5 @@
VITE_API_ID=1025907
VITE_API_HASH=452b0359b988148995f22ff0f4229750
VITE_VERSION=2.1.0
VITE_VERSION_FULL=2.1.0 (510)
VITE_BUILD=510
VITE_MTPROTO_WORKER=1
VITE_MTPROTO_SW=
VITE_MTPROTO_HTTP=
VITE_MTPROTO_HTTP_UPLOAD=
VITE_MTPROTO_AUTO=1
VITE_MTPROTO_HAS_HTTP=1
VITE_MTPROTO_HAS_WS=1
VITE_SAFARI_PROXY_WEBSOCKET=
API_ID=1025907
API_HASH=452b0359b988148995f22ff0f4229750
VERSION=1.4.3
VERSION_FULL=1.4.3 (177)
BUILD=177

View File

@ -1,104 +0,0 @@
module.exports = {
env: {
'browser': true,
'es2021': true
},
extends: [],
parser: '@typescript-eslint/parser',
parserOptions: {
'ecmaVersion': 'latest',
'sourceType': 'module',
'project': ['./tsconfig.json']
},
plugins: [
'@typescript-eslint'
],
ignorePatterns: [
'src/vendor/**',
'src/solid/**',
'src/opus-recorder/**',
'public/**'
],
overrides: [{
files: ['*.ts'],
parserOptions: {
project: ['./tsconfig.json'],
},
}],
rules: {
'max-len': 'off',
'keyword-spacing': ['error', {
after: true,
overrides: {
if: {before: true, after: false},
else: {before: true},
catch: {before: true, after: false},
for: {after: false},
while: {after: false},
switch: {after: false}
}
}],
'linebreak-style': ['error', 'unix'],
'eol-last': 'error',
'indent': [
'error', 2, {
'CallExpression': {
'arguments': 1
},
'FunctionDeclaration': {
'body': 1,
'parameters': 1
},
'FunctionExpression': {
'body': 1,
'parameters': 1
},
'MemberExpression': 0,
'ObjectExpression': 1,
'SwitchCase': 1,
'ignoredNodes': [
'ConditionalExpression'
]
}
],
// 'valid-jsdoc': 'off',
// 'require-jsdoc': 'off',
// 'camelcase': 'off',
'space-before-function-paren': ['error', 'never'],
// 'guard-for-in': 'off',
// 'prefer-promise-reject-errors': ['error', {allowEmptyReject: true}],
'prefer-promise-reject-errors': 'off',
'curly': 'off',
'comma-dangle': ['error', 'never'],
'comma-spacing': 'error',
'comma-style': 'error',
'quote-props': ['error', 'consistent'],
'quotes': ['error', 'single', {allowTemplateLiterals: true}],
'space-before-blocks': ['error', 'always'],
'spaced-comment': ['error', 'always'],
'prefer-spread': 'off',
'prefer-const': ['error', {destructuring: 'all'}],
'object-curly-spacing': ['error', 'never'],
'array-bracket-spacing': ['error', 'never'],
'switch-colon-spacing': 'error',
'operator-linebreak': ['error', 'after'],
'padded-blocks': ['error', 'never'],
// 'new-cap': 'error',
// 'no-unused-vars': 'off',
'no-useless-call': 'error',
'no-trailing-spaces': 'error',
'no-mixed-spaces-and-tabs': 'error',
'no-multiple-empty-lines': ['error', {max: 2}],
'no-tabs': 'error',
// 'no-multi-spaces': 'error',
'no-multi-str': 'error',
'no-new-wrappers': 'error',
'no-irregular-whitespace': ['error', {skipStrings: true, skipComments: true, skipRegExps: true, skipTemplates: true}],
'no-unexpected-multiline': 'error',
'no-return-await': 'error',
'@typescript-eslint/await-thenable': 'error',
// '@typescript-eslint/no-misused-promises': 'error'
// '@typescript-eslint/no-misused-promises': ['error', {checksConditionals: true, checksVoidReturn: true, checksSpreads: true}]
}
};

6
.gitignore vendored
View File

@ -1,7 +1,7 @@
node_modules
coverage
__pycache__
/dist
dist
**/.DS_Store
stats.json
certs
@ -11,7 +11,3 @@ public3
session_name.session
tasks.txt
yarn.lock
stats.html
ssh.json
archive.zip
.idea

4
.gitmodules vendored
View File

@ -7,7 +7,3 @@
[submodule "src/rlottie-web"]
path = src/rlottie-web
url = https://github.com/morethanwords/rlottie-web
[submodule "src/solid"]
path = src/solid
url = https://github.com/morethanwords/solid
branch = no-errors

View File

@ -1,77 +1,3 @@
### 2.1.0 (491)
You can see the full list of new features and improvements here: https://t.me/WebK_en/16
### 2.0.0 (454)
You can see the full list of new features and improvements here: https://t.me/WebK_en/13
### 1.9.6 (400)
You can see the full list of new features and improvements here: https://t.me/WebK_en/12
### 1.8.0 (322)
You can see the full list of new features and improvements here: https://t.me/WebK_en/11
### 1.7.0 (273)
🎄 Happy New Year to everyone! [WebK](http://web.telegram.org/k) launched its first update of 2023, adding a pack of features you can now enjoy on Web!
📚 [Topics 2.0](https://telegram.org/blog/ultimate-privacy-topics-2-0#topics-2-0)
Admins of **any group** can enable Topics, creating separate spaces within the group to discuss different subjects  with a sleek **two-column layout** to easily navigate chats.
😶‍🌫️ [Hidden Media](https://telegram.org/blog/hidden-media-zero-storage-profile-pics#hidden-media)
Media hidden with a shimmering spoiler effect is properly displayed in the app  just tap or click to view the image. The next [WebK](http://web.telegram.org/k) update will allow you to send media with this spoiler effect.
🏴‍☠️ [No-SIM Signup and Login](https://telegram.org/blog/ultimate-privacy-topics-2-0#sign-up-without-a-sim-card)
Users who have an **anonymous number** from [Fragment](https://fragment.com/numbers) can login to their existing account or create a **new account** with the number.
🔤 [Collectible Usernames](https://telegram.org/blog/topics-in-groups-collectible-usernames#collectible-usernames)
Owners of collectible usernames can now **assign collectibles** to their personal account, groups or channels  and **manage** them within the app.
Lastly, the app also preserves your **history stack** if you follow a [t.me](https://t.me) link to another message in a chat, you can return to the **first message** with the 🔽 button.
### 1.6.0 (244)
Today, [WebK](https://web.telegram.org/k) introduces a redesigned **Emoji and Sticker Panel** try the **collapsible section** for default emoji categories and the **scrollable bar** for your custom emoji sets.
The new Panel features a beautiful blur effect on most desktop browsers and allows you to **send** or **edit** messages containing custom emoji. __(All users can try out this feature in their Saved Messages)__
In the Stickers tab, you can now add or remove stickers from favorites, **send without sound** or individually delete them from the __Recents__ section.
**Preview Stickers and Emoji**
You can now get a closer look at stickers and emoji, both in the panel and in chats. Click and hold, then hover your cursor over the one you'd like to see in better detail.
Stickers are now rendered more efficiently, using fewer resources and **saving battery**. Custom Emoji have also had more improvements since their launch in [late August](https://t.me/WebK_en/7).
**Downloading Files**
The download flow has been reworked from scratch. When you download something, the app uses your connection in the **most efficient** way possible. Premium users will notice how dramatically fast the app downloads files for them a little demo is available [here](https://t.me/WebK_en/7?comment=531).
Large files of **up to 4 GB** are now supported for both upload and download. There is also support for native downloading in certain browsers your browser will place active downloads on the instrument bar.
**Payments 2.0**
Significant optimizations were added to smoothly process payments in **any browser**, and adding familiar functionality from other Telegram apps. Bot payments, @donate invoices and more are supported including the ability to subscribe to Telegram Premium with @PremiumBot.
Dozens of bug fixes were also made to the app  but those can be a bit boring to read. If you ever come across a bug in the app, make sure to let us know on the [Bugs and Suggestions Platform](https://bugs.telegram.org/?tag_ids=40&type=issues&sort=time).
### 1.5.0 (178)
1⃣ Introducing support for **Multiple Tabs** a first for Telegram Web Apps customizing how you browse Telegram to increase comfort and productivity.
• Open several tabs or browser windows to view multiple chats or channels simultaneously.
• Organize your Telegram workflow on multiple monitors by moving tabs to different screens.
• Use `⌘/Ctrl + click` or `middle-click` on any conversation in your chat list to open it in a separate tab.
All messages and content are seamlessly synced across the tabs. To use multiple tabs on Safari, kindly consider switching to another browser for the best experience. Due to Safaris [technical limitations](https://t.me/WebK_en/5), the WebK app can still only be used there in a single tab.
2⃣ WebK gets even more stylish, adding:
• Animated placeholders when loading the chat list.
• Scrolling profile pictures in groups that move up and down with their messages.
• Menu redesigns with beautiful new blur effects.
• Colored reply previews that match the color of your chat partners' names.
This update also includes several bug fixes, removing issues with:
- Incorrect unread values
- Visual errors in placeholders
- Failing to mark messages as read
- Performance drops when returning to previous chats.
- and many more 🛠
### 1.4.2 (161)
* The Video Player now supports **Picture-in-Picture** mode keep messaging and switching chats while watching videos. Open a video, then click or tap the icon in the bottom right corner.
* The **Audio Player** has been packed with two new features for music lovers: set your favorite song to **repeat** or change the **playback order** for playlists. It will also **remember** your playback settings __(volume, repeat, and speed)__.

View File

@ -1,70 +1,3 @@
### 2.1.0 (491)
Полный список нововведений и улучшений доступен здесь: https://t.me/WebK_ru/15
### 2.0.0 (454)
Полный список нововведений и улучшений доступен здесь: https://t.me/WebK_ru/13
### 1.9.6 (400)
Полный список нововведений и улучшений доступен здесь: https://t.me/WebK_ru/12
### 1.8.0 (322)
Полный список нововведений и улучшений доступен здесь: https://t.me/WebK_ru/11
### 1.7.0 (273)
🎄 [WebK](http://web.telegram.org/k) поздравляет Вас с праздниками! Первое обновление этого года дарит Вам возможность пользоваться уже знакомыми функциями теперь и в браузерах!
📚 [Темы 2.0](https://telegram.org/blog/ultimate-privacy-topics-2-0/ru#temi-2-0)
Администраторы **любой группы** могут организовать обсуждения по темам. В группы с темами добавлена новая **вертикальная панель** для удобства переключения на другие чаты.
😶‍🌫️ [Скрытые медиа](https://telegram.org/blog/hidden-media-zero-storage-profile-pics/ru#otpravka-skritih-media)
Приложение научилось отображать медиа, скрытые под искрящейся **полупрозрачной обложкой**. Кликните или коснитесь такого медиа, чтобы увидеть что спрятано внутри. В следующем обновлении [WebK](http://web.telegram.org/k) также научится отправлять подобные медиа.
🏴‍☠ [Регистрация и вход без сим-карты](https://telegram.org/blog/ultimate-privacy-topics-2-0/ru#registratsiya-bez-sim-karti)
Обладатели **анонимных номеров** с [платформы Fragment](https://fragment.com/numbers) теперь могут **зарегистрироваться** или попасть в уже существующий аккаунт, привязанный к анонимному номеру.
🔤 [Коллекционные публичные имена](https://telegram.org/blog/topics-in-groups-collectible-usernames/ru#kollektsionnie-publichnie-imena)
Обладатели [коллекционных публичных имен](https://fragment.com/) получили возможность управлять такими именами, включая их привязку к личным аккаунтам, группам или каналам.
А ещё приложение научилось **возвращать Вас обратно** к исходной позиции в том же чате — если Вы перешли от одного сообщения к другому с помощью ссылки [t.me](https://t.me). Чтобы вернуться обратно, воспользуйтесь кнопкой 🔽.
### 1.6.0 (244)
[WebK](https://web.telegram.org/k) продолжает совершенствоваться и сегодня представляет новую **панель эмодзи, стикеров и GIF**.
Встречайте [авторские эмодзи](https://telegram.org/blog/custom-emoji/ru#avtorskie-animirovannie-emodzi) Telegram теперь и для браузеров. Просмотр категорий базовых эмодзи доступен по клику на значок в открытой панели. Прокручивайте панель вправо и обратно для навигации по наборам. С новой панелью Вы можете набирать авторские эмодзи или редактировать сообщения, которые их содержат. (Если Вы ещё не оформили подписку [Telegram Premium](https://t.me/premium), испытать авторские эмодзи можно в __Избранном__.) В большинстве настольных браузеров панель поддерживает красивый эффект размытия. Вкладка стикеров получила ряд долгожданных улучшений добавление и удаление стикера в избранные, отправку без звука и также удаление из раздела __«Недавние»__.
__Среди последних нововведений:__
**Просмотрщик стикеров и эмодзи** наведите курсор на стикер или эмодзи и зажмите его. Продолжайте вести курсор, чтобы рассмотреть всё в мельчайших деталях. Эта опция работает как в панели, так и в самом чате. Отрисовка стикеров и [авторских эмодзи](https://t.me/WebK_ru/7) была оптимизирована и теперь задействует меньше ресурсов Вашего устройства.
**Загрузка файлов и медиа** загрузчик переписан с нуля. Когда Вы что-то загружаете, приложение с максимальной эффективностью использует ваш интернет-канал. Подписчики Telegram Premium заметят существенный прирост в скорости загрузки –небольшая демонстрация есть [тут](https://t.me/WebK_en/7?comment=531). [WebK](http://web.telegram.org/k) поддержал **файлы до 4 GB** и нативную загрузку для некоторых браузеров.
**Платежи 2.0** внедрена поддержка платежей с оптимизацией специально для браузеров. Приложение максимально переиспользовало уже знакомый Вам опыт по нативным приложениям Telegram. C помощью [WebK](http://web.telegram.org/k) вы можете оплачивать счета, например, от @donate или оформить Telegram Premium с помощью @PremiumBot.
P.S. Мы не включаем списки исправлений в эти сообщения. Про баги мало кому интересно читать. Недоработки постоянно устраняются, а баги уничтожаются. Если Вы столкнулись с проблемой, пожалуйста, дайте знать на [платформе багов и предложений](https://bugs.telegram.org/?tag_ids=40&type=issues&sort=time).
### 1.5.0 (178)
1⃣ WebK представляет поддержку работы **нескольких вкладок одновременно** первым среди веб-приложений Telegram. Исследуйте новые возможности за границами привычного Вам опыта:
• Открывайте столько вкладок или окон браузера, сколько Вам нужно для доступа к разным чатам и каналам в одно и то же время.
• Если вы пользуетесь несколькими дисплеями, разнесите вкладки по разным экранам и организуйте процесс работы с Telegram так, как удобно Вам.
• Задействуйте `⌘/Ctrl + клик` или `кликните колесом мыши` по нужному чату в списке бесед выбранный чат будет открыт в отдельной вкладке.
Все сообщения, включая текст и медиа, а так же Ваш список чатов автоматически синхронизируются между всеми вкладками. Если Вы пользуетесь Safari и хотите насладиться одновременной работой нескольких вкладок, пожалуйста, смените браузер. Это к лучшему, поверьте. Из-за [технических ограничений Safari](https://t.me/WebK_en/5), на данный момент WebK будет работать там только в единственной вкладке.
2⃣ WebK продолжает привносить красоту, добавляя в этом обновлении:
• Анимированные заглушки при загрузке Вашего списка чатов.
• Скользящие аватары. Когда Вы проматываете историю переписки в групповом чате, фотографии участников всегда будут видны рядом с сообщениями, чтобы было удобнее ориентироваться.
• Обновленные меню теперь с красивым эффектом размытия.
• Цветовые плашки предпросмотра ответов в которых цвет плашки совпадает с цветом имени собеседников.
В приложении были так же устранены следущие недоработки:
- Проблемы со счётчиком непрочитанных сообщений;
- Резкая отрисовка заглушек в чатах;
- Невозможность прочесть сообщение в части случаев;
- Снижение производительности приложения по возвращению в предыдущие чаты;
- и многое другое 🛠
### 1.4.2 (161)
* Видеопроигрыватель теперь поддерживает режим **«картинка в картинке»** видео останется перед глазами, даже если Вы перейдёте в другую беседу. Для вызова режима откройте видео, далее кликните или коснитесь кнопки в правом нижнем углу проигрывателя.
* Любителей слушать музыку в Telegram порадуют два нововведения музыкального проигрывателя **режим повтора песни** и возможность воспроизводить плейлисты в **обратном порядке**. Кроме того, проигрыватель теперь **запоминает** Ваши предпочтения __(уровень громкости, режим повтора, а также скорость воспроизведения)__.

View File

@ -5,19 +5,19 @@ Based on Webogram, patched and improved. Available for everyone here: https://we
### Developing
Install dependencies with:
```lang=bash
pnpm install
npm install
```
This will install all the needed dependencies.
#### Running web-server
Just run `pnpm start` to start the web server and the livereload task.
Just run `npm start` to start the web server and the livereload task.
Open http://localhost:8080/ in your browser.
#### Running in production
Run `node build` to build the minimized production version of the app. Copy `public` folder contents to your web server.
Run `npm run build` to build the minimized production version of the app. Copy `public` folder contents to your web server.
### Dependencies
@ -29,9 +29,6 @@ Run `node build` to build the minimized production version of the app. Copy `pub
* [rlottie](https://github.com/rlottie/rlottie.github.io) ([MIT License](https://github.com/Samsung/rlottie/blob/master/licenses/COPYING.MIT))
* [fast-png](https://github.com/image-js/fast-png) ([MIT License](https://github.com/image-js/fast-png/blob/master/LICENSE))
* [opus-recorder](https://github.com/chris-rudmin/opus-recorder) ([BSD License](https://github.com/chris-rudmin/opus-recorder/blob/master/LICENSE.md))
* [Prism](https://github.com/PrismJS/prism) ([MIT License](https://github.com/PrismJS/prism/blob/master/LICENSE))
* [Solid](https://github.com/solidjs/solid) ([MIT License](https://github.com/solidjs/solid/blob/main/LICENSE))
* [TinyLD](https://github.com/komodojp/tinyld) ([MIT License](https://github.com/komodojp/tinyld/blob/develop/license))
* [libwebp.js](https://libwebpjs.appspot.com/)
* fastBlur
@ -41,9 +38,7 @@ Source maps are included in production build for your convenience.
#### Additional query parameters
* **test=1**: to use test DCs
* **debug=1**: to enable additional logging
* **noSharedWorker=1**: to disable Shared Worker, can be useful for debugging
* **http=1**: to force the use of HTTPS transport when connecting to Telegram servers
* **debug=1**: to use debug wherever it tests the flag
Should be applied like that: http://localhost:8080/?test=1

124
build.js
View File

@ -1,147 +1,33 @@
// @ts-check
const {spawn, execSync} = require('child_process');
const fs = require('fs');
const path = require('path');
const keepAsset = require('./keepAsset');
const {NodeSSH} = require('node-ssh');
const zlib = require('zlib');
const { spawn } = require('child_process');
const npmCmd = /^win/.test(process.platform) ? 'npm.cmd' : 'npm';
const version = process.argv[2] || 'same';
const changelog = process.argv[3] || '';
const child = spawn(npmCmd, ['run', 'change-version', version, changelog].filter(Boolean));
const child = spawn(`npm`, ['run', 'change-version', version, changelog].filter(Boolean));
child.stdout.on('data', (chunk) => {
console.log(chunk.toString());
});
const publicPath = __dirname + '/public/';
const distPath = __dirname + '/dist/';
let sshConfig;
try {
sshConfig = JSON.parse(fs.readFileSync(path.join(__dirname, 'ssh.json'), 'utf8'));
} catch(err) {
console.log('No SSH config, skipping upload');
}
function copyFiles(source, destination) {
if(!fs.existsSync(destination)) {
fs.mkdirSync(destination);
}
const files = fs.readdirSync(source, {withFileTypes: true});
files.forEach((file) => {
const sourcePath = path.join(source, file.name);
const destinationPath = path.join(destination, file.name);
if(file.isFile()) {
fs.copyFileSync(sourcePath, destinationPath);
} else if(file.isDirectory()) {
copyFiles(sourcePath, destinationPath);
}
});
}
function clearOldFiles() {
const bundleFiles = fs.readdirSync(distPath);
const files = fs.readdirSync(publicPath, {withFileTypes: true});
files.forEach((file) => {
if(file.isDirectory() ||
bundleFiles.some((bundleFile) => bundleFile === file.name) ||
keepAsset(file.name)) {
return;
}
fs.unlinkSync(publicPath + file.name);
});
}
child.on('close', (code) => {
if(code != 0) {
console.log(`child process exited with code ${code}`);
}
const child = spawn(npmCmd, ['run', 'build']);
const child = spawn(`npm`, ['run', 'build']);
child.stdout.on('data', (chunk) => {
console.log(chunk.toString());
});
let error = '';
child.stderr.on('data', (chunk) => {
error += chunk.toString();
});
child.on('close', (code) => {
if(code != 0) {
console.error(error, `build child process exited with code ${code}`);
console.error(`child process exited with code ${code}`);
} else {
onCompiled();
console.log('Compiled successfully.');
}
});
});
const ssh = new NodeSSH();
const onCompiled = async() => {
console.log('Compiled successfully.');
copyFiles(distPath, publicPath);
clearOldFiles();
if(!sshConfig) {
return;
}
const archiveName = 'archive.zip';
const archivePath = path.join(__dirname, archiveName);
execSync(`zip -r ${archivePath} *`, {
cwd: publicPath
});
await ssh.connect({
...sshConfig,
tryKeyboard: true
});
console.log('SSH connected');
await ssh.execCommand(`rm -rf ${sshConfig.publicPath}/*`);
console.log('Cleared old files');
await ssh.putFile(archivePath, path.join(sshConfig.publicPath, archiveName));
console.log('Uploaded archive');
await ssh.execCommand(`cd ${sshConfig.publicPath} && unzip ${archiveName} && rm ${archiveName}`);
console.log('Unzipped archive');
fs.unlinkSync(archivePath);
ssh.connection?.destroy();
};
function compressFolder(folderPath) {
const archive = {};
function processFolder(folderPath, parentKey) {
const folderName = path.basename(folderPath);
const folderKey = parentKey ? `${parentKey}/${folderName}` : folderName;
archive[folderKey] = {};
const files = fs.readdirSync(folderPath);
for(const file of files) {
const filePath = path.join(folderPath, file);
const stats = fs.statSync(filePath);
if(stats.isFile()) {
const fileContent = fs.readFileSync(filePath);
const compressedContent = zlib.deflateSync(fileContent);
archive[folderKey][file] = compressedContent;
break;
}/* else if(stats.isDirectory()) {
processFolder(filePath, folderKey);
} */
}
}
processFolder(folderPath);
const compressedArchive = zlib.gzipSync(JSON.stringify(archive));
return compressedArchive;
}
/* exec(`npm run change-version ${version}${changelog ? ' ' + changelog : ''}; npm run build`, (err, stdout, stderr) => {
if(err) {
return;

View File

@ -5,7 +5,6 @@
}
],
"settings": {
"typescript.tsdk": "node_modules/typescript/lib",
"files.eol": "\n"
"typescript.tsdk": "node_modules/typescript/lib"
}
}

View File

@ -1,6 +0,0 @@
module.exports = function(needle, haystack, options) {
// needle = Handlebars.escapeExpression(needle);
// haystack = Handlebars.escapeExpression(haystack);
return (haystack.indexOf(needle) > -1) ? options.fn(this) : options.inverse(this);
// return options.fn(this);
};

View File

@ -1,157 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>{{title}}</title>
<meta name="description" content="{{description}}">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no,shrink-to-fit=no,viewport-fit=cover">
<meta name="mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-title" content="{{title}}">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-title" content="{{title}}">
<meta name="application-name" content="{{title}}">
<meta name="msapplication-TileColor" content="#2d89ef">
<meta name="msapplication-TileImage" content="assets/img/mstile-144x144.png?v=jw3mK7G9Ry">
<meta name="msapplication-config" content="browserconfig.xml?v=jw3mK7G9Ry">
<meta name="theme-color" content="#ffffff">
<meta name="color-scheme" content="light">
<meta name="google" content="notranslate">
<!-- <meta name="robots" content="noindex"> -->
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="{{url}}">
<meta property="og:title" content="{{title}}">
<meta property="og:description" content="{{description}}">
<meta property="og:image" content="assets/img/android-chrome-192x192.png?v=jw3mK7G9Ry">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:url" content="{{url}}">
<meta property="twitter:title" content="{{title}}">
<meta property="twitter:description" content="{{description}}">
<meta property="twitter:image" content="assets/img/android-chrome-192x192.png?v=jw3mK7G9Ry">
<link rel="apple-touch-icon" sizes="180x180" href="assets/img/apple-touch-icon.png?v=jw3mK7G9Ry">
<link rel="icon" type="image/png" sizes="16x16" href="assets/img/favicon-16x16.png?v=jw3mK7G9Ry">
<link rel="icon" type="image/png" sizes="32x32" href="assets/img/favicon-32x32.png?v=jw3mK7G9Ry">
<link rel="icon" type="image/png" sizes="192x192" href="assets/img/android-chrome-192x192.png?v=jw3mK7G9Ry">
<link rel="alternate icon" href="assets/img/favicon.ico?v=jw3mK7G9Ry" type="image/x-icon">
<!-- <link rel="mask-icon" href="assets/img/logo_filled.svg?v=jw3mK7G9Ry" color="#3390ec"> -->
<link rel="canonical" href="{{origin}}">
<link rel="manifest" id="manifest">
</head>
<body class="animation-level-2">
<!--[if IE]>
<p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="https://browsehappy.com/">upgrade your browser</a> to improve your experience and security.</p>
<![endif]-->
<svg style="position: absolute; top: -10000px; left: -10000px;">
<defs id="svg-defs">
<clipPath id="tooltip-notch-clip">
<path d="M19 7C16.8992 7 13.59 3.88897 11.5003 1.67424C10.7648 0.894688 10.397 0.50491 10.0434 0.385149C9.70568 0.270811 9.4225 0.270474 9.08456 0.38401C8.73059 0.50293 8.36133 0.892443 7.62279 1.67147C5.52303 3.88637 2.18302 7 0 7L19 7Z" />
</clipPath>
<clipPath id="message-tail-clip">
<use href="#message-tail" />
</clipPath>
<!-- <linearGradient id="topic-icon-gradient" x1="0" x2="0" y1="0" y2="1">
<stop class="topic-icon-gradient-stop-1" offset="0%" />
<stop class="topic-icon-gradient-stop-2" offset="100%" />
</linearGradient> -->
<path id="message-tail" d="M1.00002881,1.03679295e-14 L7,0 L7,17 C6.8069969,14.1607017 6.12380234,11.2332513 4.95041634,8.21764872 C4.04604748,5.89342034 2.50413132,3.73337411 0.324667862,1.73751004 L0.324652538,1.73752677 C-0.0826597201,1.36452676 -0.110475289,0.731958677 0.262524727,0.324646419 C0.451952959,0.117792698 0.719544377,1.0985861e-14 1.00002881,1.04360964e-14 Z" />
<path id="logo" fill-rule="evenodd" d="M80,0 C124.18278,0 160,35.81722 160,80 C160,124.18278 124.18278,160 80,160 C35.81722,160 0,124.18278 0,80 C0,35.81722 35.81722,0 80,0 Z M114.262551,46.4516129 L114.123923,46.4516129 C111.089589,46.5056249 106.482806,48.0771432 85.1289541,56.93769 L81.4133571,58.4849956 C72.8664779,62.0684477 57.2607933,68.7965125 34.5963033,78.66919 C30.6591745,80.2345564 28.5967328,81.765936 28.4089783,83.2633288 C28.0626453,86.0254269 31.8703852,86.959903 36.7890378,88.5302703 L38.2642674,89.0045258 C42.3926354,90.314406 47.5534685,91.7248852 50.3250916,91.7847532 C52.9151948,91.8407003 55.7944784,90.8162976 58.9629426,88.7115451 L70.5121776,80.9327422 C85.6657026,70.7535853 93.6285785,65.5352892 94.4008055,65.277854 L94.6777873,65.216416 C95.1594319,65.1213105 95.7366278,65.0717596 96.1481181,65.4374337 C96.6344248,65.8695939 96.5866185,66.6880224 96.5351057,66.9075859 C96.127514,68.6448691 75.2839361,87.6143392 73.6629144,89.2417998 L73.312196,89.6016896 C68.7645143,94.2254793 63.9030972,97.1721503 71.5637945,102.355193 L73.3593638,103.544598 C79.0660342,107.334968 82.9483395,110.083813 88.8107882,113.958377 L90.3875424,114.996094 C95.0654739,118.061953 98.7330313,121.697601 103.562866,121.253237 C105.740839,121.052855 107.989107,119.042224 109.175465,113.09692 L109.246762,112.727987 C112.002037,98.0012935 117.417883,66.09303 118.669527,52.9443975 C118.779187,51.7924073 118.641237,50.318088 118.530455,49.6708963 L118.474159,49.3781963 C118.341081,48.7651315 118.067967,48.0040758 117.346762,47.4189793 C116.412565,46.6610871 115.002114,46.4638844 114.262551,46.4516129 Z"/>
<path id="poll-line" d="M4.47,5.33v13.6c0,4.97,4.03,9,9,9h458.16"/>
<path id="check" fill="none" d="M 4.7071 12.2929 l 5 5 c 0.3905 0.3905 1.0237 0.3905 1.4142 0 l 11 -11" />
<path id="verified-icon-background" fill-rule="evenodd" clip-rule="evenodd" d="m14.378741 1.509638 1.818245 1.818557c.365651.365716.861601.571194 1.378741.571259l2.574273.000312c1.01361.000117 1.846494.773578 1.940861 1.762436l.008905.187798-.000312 2.5727c-.000065.517322.205439 1.013454.571259 1.379222l1.819649 1.819337c.714441.713427.759174 1.843179.134563 2.609139l-.134797.148109-1.819181 1.8182502c-.365963.3657823-.571558.8620196-.571493 1.3794456l.000312 2.5737972c.000559 1.0136048-.772668 1.846676-1.7615 1.9412861l-.188266.0084786-2.573792-.0003107c-.517426-.0000624-1.013675.2055248-1.379456.5714956l-1.818245 1.8191823c-.71331.7145515-1.843049.7594886-2.609113.1349998l-.148135-.1347645-1.8193435-1.8196542c-.3657628-.3658252-.8618987-.5713214-1.3792103-.571259l-2.5727052.0003107c-1.0136048.0001222-1.846676-.7731321-1.9412861-1.761968l-.0089492-.1877967-.0003107-2.5742678c-.0000624-.5171478-.2055495-1.0130926-.571259-1.3787397l-1.8185622-1.8182515c-.7139886-.713869-.758706-1.843647-.1340846-2.609607l.1338493-.148109 1.8190328-1.81935c.3655665-.365625.5709613-.861471.5710237-1.378494l.0003107-2.573181c.0006006-1.076777.8734635-1.949636 1.9502353-1.950234l2.5731758-.000312c.5170321-.000065 1.0128768-.205452 1.3785044-.571025l1.8193448-1.819038c.761592-.761449 1.996254-.761345 2.757716.000247zm3.195309 8.047806c-.426556-.34125-1.032655-.306293-1.417455.060333l-.099151.108173-4.448444 5.55815-1.7460313-1.74707-.1104961-.096564c-.4229264-.32188-1.0291801-.289692-1.4154413.096564-.3862612.386269-.4184492.992511-.0965653 1.41544l.0965653.1105 2.5999987 2.5999987.109876.0961467c.419874.320359 1.015131.2873897 1.397071-.0773773l.098579-.107692 5.2-6.4999961.083772-.120484c.273208-.455884.174278-1.054885-.252278-1.396122z" />
<path id="verified-icon-check" d="M8 8H18V18H8V8Z" />
<path id="topic-icon" d="M21.3733 4.27035C19.2176 2.25323 16.2016 1 12.8636 1C6.31153 1 1 5.82866 1 11.7851C1 15.1823 2.58685 17.9669 5.28707 19.9438C5.63238 20.1966 5.95042 21.6013 5.18073 22.7812C4.86598 23.2637 4.51948 23.639 4.25272 23.928C3.86715 24.3457 3.6482 24.5828 3.93266 24.7022C4.22935 24.8266 5.98245 24.8882 7.24776 24.1786C8.23812 23.6232 8.83793 23.0691 9.24187 22.696C9.57588 22.3875 9.77595 22.2027 9.95217 22.2431C10.584 22.388 11.236 22.4868 11.9035 22.5354C11.9126 22.5361 11.9218 22.5368 11.9309 22.5374C12.2386 22.5592 12.5497 22.5702 12.8636 22.5702C19.4157 22.5702 24.7273 17.7416 24.7273 11.7851C24.7273 8.86318 23.4491 6.21263 21.3733 4.27035Z" />
<!-- <path id="verified-icon-background" d="M12.3 2.9c.1.1.2.1.3.2.7.6 1.3 1.1 2 1.7.3.2.6.4.9.4.9.1 1.7.2 2.6.2.5 0 .6.1.7.7.1.9.1 1.8.2 2.6 0 .4.2.7.4 1 .6.7 1.1 1.3 1.7 2 .3.4.3.5 0 .8-.5.6-1.1 1.3-1.6 1.9-.3.3-.5.7-.5 1.2-.1.8-.2 1.7-.2 2.5 0 .4-.2.5-.6.6-.8 0-1.6.1-2.5.2-.5 0-1 .2-1.4.5-.6.5-1.3 1.1-1.9 1.6-.3.3-.5.3-.8 0-.7-.6-1.4-1.2-2-1.8-.3-.2-.6-.4-.9-.4-.9-.1-1.8-.2-2.7-.2-.4 0-.5-.2-.6-.5 0-.9-.1-1.7-.2-2.6 0-.4-.2-.8-.4-1.1-.6-.6-1.1-1.3-1.6-2-.4-.4-.3-.5 0-1 .6-.6 1.1-1.3 1.7-1.9.3-.3.4-.6.4-1 0-.8.1-1.6.2-2.5 0-.5.1-.6.6-.6.9-.1 1.7-.1 2.6-.2.4 0 .7-.2 1-.4.7-.6 1.4-1.2 2.1-1.7.1-.2.3-.3.5-.2z" /> -->
<!-- <path id="verified-icon-check" d="M16.4 10.1l-.2.2-5.4 5.4c-.1.1-.2.2-.4 0l-2.6-2.6c-.2-.2-.1-.3 0-.4.2-.2.5-.6.7-.6.3 0 .5.4.7.6l1.1 1.1c.2.2.3.2.5 0l4.3-4.3c.2-.2.4-.3.6 0 .1.2.3.3.4.5.2 0 .3.1.3.1z" /> -->
<symbol id="message-tail-filled" viewBox="0 0 11 20">
<g transform="translate(9 -14)" fill="inherit" fill-rule="evenodd">
<path d="M-6 16h6v17c-.193-2.84-.876-5.767-2.05-8.782-.904-2.325-2.446-4.485-4.625-6.48A1 1 0 01-6 16z" transform="matrix(1 0 0 -1 0 49)" id="corner-fill" fill="inherit"/>
</g>
</symbol>
<!-- <linearGradient id="g" x1="-300%" x2="-200%" y1="0" y2="0">
<stop offset="-10%" stop-opacity=".1"/>
<stop offset="30%" stop-opacity=".07"/>
<stop offset="70%" stop-opacity=".07"/>
<stop offset="110%" stop-opacity=".1"/>
<animate attributeName="x1" from="-300%" to="1200%" dur="3s" repeatCount="indefinite"/>
<animate attributeName="x2" from="-200%" to="1300%" dur="3s" repeatCount="indefinite"/>
</linearGradient> -->
<!-- <linearGradient id="stories-gradient" x1="91.56%" y1="-0.56%" x2="13.42%" y2="102.37%">
<stop offset="0%" stop-color="#34C76F"></stop>
<stop offset="100%" stop-color="#3DA1FD"></stop>
</linearGradient> -->
</defs>
</svg>
<div class="whole" id="auth-pages" style="display: none;">
<div class="scrollable scrollable-y">
<div class="tabs-container auth-pages__container" data-animation="tabs">
<div class="tabs-tab page-signImport">
<div class="container center-align"></div>
</div>
<div class="tabs-tab page-sign">
<div class="container">
<div class="auth-image">
<svg class="sign-logo" xmlns="http://www.w3.org/2000/svg" width="160" height="160" viewBox="0 0 160 160">
<use href="#logo" />
</svg>
</div>
</div>
</div>
<div class="tabs-tab page-signQR">
<div class="container center-align">
<div class="auth-image"></div>
</div>
</div>
<div class="tabs-tab page-authCode">
<div class="container center-align">
<div class="auth-image"></div>
<div class="phone-wrapper">
<h4 class="phone"></h4>
<span class="phone-edit"></span>
</div>
<p class="subtitle sent-type"></p>
<div class="input-wrapper"></div>
</div>
</div>
<div class="tabs-tab page-password"></div>
<div class="tabs-tab page-signUp"></div>
</div>
</div>
</div>
<div class="whole page-chats" style="display: none;" id="page-chats">
<div id="main-columns" class="tabs-container" data-animation="navigation">
<div class="tabs-tab chatlist-container sidebar sidebar-left main-column" id="column-left">
<div class="sidebar-slider tabs-container">
<div class="tabs-tab sidebar-slider-item item-main">
<div class="sidebar-header can-have-forum">
<div class="sidebar-header__btn-container">
<div class="animated-menu-icon"></div>
<div class="btn-icon sidebar-back-button"></div>
</div>
</div>
<div class="sidebar-content transition zoom-fade can-have-forum">
<div class="transition-item active" id="chatlist-container">
<div class="folders-tabs-scrollable menu-horizontal-scrollable hide">
<nav class="menu-horizontal-div" id="folders-tabs"></nav>
</div>
<div class="tabs-container" id="folders-container"></div>
</div>
<div class="transition-item sidebar-search" id="search-container"></div>
</div>
</div>
</div>
</div>
<div class="tabs-tab main-column" id="column-center"></div>
<div class="tabs-tab sidebar sidebar-right main-column" id="column-right">
<div class="sidebar-content sidebar-slider tabs-container"></div>
</div>
</div>
</div>
<div id="stories-viewer"></div>
<script src="src/index.ts" type="module"></script>
</body>
</html>

195
jest.config.js Normal file
View File

@ -0,0 +1,195 @@
// For a detailed explanation regarding each configuration property, visit:
// https://jestjs.io/docs/en/configuration.html
module.exports = {
// All imported modules in your tests should be mocked automatically
//automock: false,
// Stop running tests after `n` failures
// bail: 0,
// Respect "browser" field in package.json when resolving modules
// browser: false,
// The directory where Jest should store its cached dependency information
// cacheDirectory: "/private/var/folders/2j/s40wkj715_14hqf2hpdpf2_h0000gn/T/jest_dx",
// Automatically clear mock calls and instances between every test
clearMocks: true,
// Indicates whether the coverage information should be collected while executing the test
// collectCoverage: false,
// An array of glob patterns indicating a set of files for which coverage information should be collected
// collectCoverageFrom: null,
// The directory where Jest should output its coverage files
coverageDirectory: "coverage",
// An array of regexp pattern strings used to skip coverage collection
// coveragePathIgnorePatterns: [
// "/node_modules/"
// ],
// A list of reporter names that Jest uses when writing coverage reports
// coverageReporters: [
// "json",
// "text",
// "lcov",
// "clover"
// ],
// An object that configures minimum threshold enforcement for coverage results
// coverageThreshold: null,
// A path to a custom dependency extractor
// dependencyExtractor: null,
// Make calling deprecated APIs throw helpful error messages
// errorOnDeprecated: false,
// Force coverage collection from ignored files using an array of glob patterns
// forceCoverageMatch: [],
// A path to a module which exports an async function that is triggered once before all test suites
// globalSetup: null,
// A path to a module which exports an async function that is triggered once after all test suites
// globalTeardown: null,
// A set of global variables that need to be available in all test environments
globals: {
window: {},
this: {},
globalThis: {},
Config: {
Modes: {}
}
},
// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
// maxWorkers: "50%",
// An array of directory names to be searched recursively up from the requiring module's location
moduleDirectories: [
"node_modules"
],
// An array of file extensions your modules use
// moduleFileExtensions: [
// "js",
// "json",
// "jsx",
// "ts",
// "tsx",
// "node"
// ],
// A map from regular expressions to module names that allow to stub out resources with a single module
// moduleNameMapper: {},
// An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
// modulePathIgnorePatterns: [],
// Activates notifications for test results
// notify: false,
// An enum that specifies notification mode. Requires { notify: true }
// notifyMode: "failure-change",
// A preset that is used as a base for Jest's configuration
// preset: null,
// Run tests from one or more projects
// projects: null,
// Use this configuration option to add custom reporters to Jest
// reporters: undefined,
// Automatically reset mock state between every test
// resetMocks: false,
// Reset the module registry before running each individual test
// resetModules: false,
// A path to a custom resolver
// resolver: null,
// Automatically restore mock state between every test
// restoreMocks: false,
// The root directory that Jest should scan for tests and modules within
// rootDir: null,
// A list of paths to directories that Jest should use to search for files in
roots: [
'<rootDir>/src/tests',
],
// Allows you to use a custom runner instead of Jest's default test runner
// runner: "jest-runner",
// The paths to modules that run some code to configure or set up the testing environment before each test
setupFiles: ['<rootDir>/jest.setup.js'],
// A list of paths to modules that run some code to configure or set up the testing framework before each test
// setupFilesAfterEnv: [],
// A list of paths to snapshot serializer modules Jest should use for snapshot testing
// snapshotSerializers: [],
// The test environment that will be used for testing
testEnvironment: "jsdom",
// Options that will be passed to the testEnvironment
// testEnvironmentOptions: {},
// Adds a location field to test results
// testLocationInResults: false,
// The glob patterns Jest uses to detect test files
// testMatch: [
// "**/__tests__/**/*.[jt]s?(x)",
// "**/?(*.)+(spec|test).[tj]s?(x)"
// ],
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
// testPathIgnorePatterns: [
// "/node_modules/"
// ],
// The regexp pattern or array of patterns that Jest uses to detect test files
// testRegex: [],
// This option allows the use of a custom results processor
// testResultsProcessor: null,
// This option allows use of a custom test runner
// testRunner: "jasmine2",
// This option sets the URL for the jsdom environment. It is reflected in properties such as location.href
// testURL: "http://localhost",
// Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout"
// timers: "real",
// A map from regular expressions to paths to transformers
// transform: null,
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
// transformIgnorePatterns: [
// "/node_modules/"
// ],
// An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
// unmockedModulePathPatterns: undefined,
// Indicates whether each individual test should be reported during the run
// verbose: null,
// An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
// watchPathIgnorePatterns: [],
// Whether to use watchman for file crawling
// watchman: true,
};

7
jest.setup.js Normal file
View File

@ -0,0 +1,7 @@
const webCrypto = require('@peculiar/webcrypto');
const textEncoding = require('text-encoding');
window.crypto = new webCrypto.Crypto();
window.TextEncoder = textEncoding.TextEncoder;
const a = 1;

47773
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,61 +4,80 @@
"description": "",
"main": "index.js",
"scripts": {
"preinstall": "npx only-allow pnpm",
"start": "vite --force",
"serve": "pnpm run build; node server.js",
"build": "pnpm run generate-changelog && vite build",
"test": "vitest",
"whybundled": "pnpm run profile && whybundled stats.json",
"start": "node --max-old-space-size=12048 node_modules/webpack-dev-server/bin/webpack-dev-server.js --config webpack.dev.js",
"start:production": "webpack-dev-server --config webpack.prod.js",
"serve": "npm run build; node server.js",
"build": "npm run generate-changelog; webpack --config webpack.prod.js",
"build:dev": "webpack --config webpack.dev.js",
"test": "jest --config=jest.config.js",
"profile": "webpack --profile --json > stats.json --config webpack.prod.js",
"profile:dev": "webpack --profile --json > stats.json --config webpack.dev.js",
"whybundled": "npm run profile && whybundled stats.json",
"generate-mtproto-types": "node ./src/scripts/generate_mtproto_types.js src/",
"generate-changelog": "node ./src/scripts/generate_changelog.js",
"generate-icons": "node ./src/scripts/icomoon/icomoon_generate.js",
"change-version": "node ./src/scripts/change_version.js",
"lint": "npx eslint \"src/**/**.ts\"",
"build:solid": "node ./src/scripts/build_solid.js"
"change-version": "node ./src/scripts/change_version.js"
},
"author": "",
"license": "GPL-3.0-only",
"dependencies": {
"mime": "^3.0.0",
"webpack-dev-server": "^3.11.2"
},
"devDependencies": {
"@babel/cli": "^7.23.4",
"@babel/preset-env": "^7.23.7",
"@babel/preset-typescript": "^7.23.3",
"@babel/cli": "^7.13.16",
"@babel/core": "^7.14.2",
"@babel/plugin-proposal-class-properties": "^7.13.0",
"@babel/plugin-transform-typescript": "^7.13.0",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.14.2",
"@babel/preset-es2015": "^7.0.0-beta.53",
"@babel/preset-typescript": "^7.13.0",
"@cryptography/aes": "^0.1.1",
"@cryptography/sha1": "^0.2.0",
"@cryptography/sha256": "^0.2.0",
"@peculiar/webcrypto": "^1.4.3",
"@solid-primitives/refs": "^1.0.5",
"@solid-primitives/transition-group": "^1.0.3",
"@types/chrome": "0.0.183",
"@types/express": "^4.17.21",
"@types/prismjs": "^1.26.3",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"@vitejs/plugin-basic-ssl": "^1.1.0",
"autoprefixer": "^10.4.16",
"big-integer": "^1.6.52",
"browserslist": "^4.22.2",
"@peculiar/webcrypto": "^1.1.7",
"@types/big-integer": "^0.0.31",
"@types/chrome": "0.0.139",
"@types/jest": "^26.0.23",
"@types/serviceworker-webpack-plugin": "^1.0.2",
"babel-jest": "^26.6.3",
"babel-loader": "^8.2.2",
"babel-preset-es2015": "^6.24.1",
"big-integer": "^1.6.51",
"compression": "^1.7.4",
"csstype": "^3.1.3",
"eslint": "^8.56.0",
"express": "^4.18.2",
"fast-png": "^6.2.0",
"http-proxy": "^1.18.1",
"js-md5": "^0.8.3",
"jsdom": "^22.1.0",
"mime": "^3.0.0",
"node-ssh": "^13.1.0",
"pako": "^2.1.0",
"prismjs": "^1.29.0",
"qr-code-styling": "^1.5.0",
"rollup-plugin-visualizer": "^5.12.0",
"sass": "^1.69.6",
"tinyld": "^1.3.4",
"typescript": "^4.9.5",
"vite": "^5.2.10",
"vite-plugin-checker": "^0.6.2",
"vite-plugin-handlebars": "^1.6.0",
"vite-plugin-solid": "^2.8.0",
"vitest": "^0.34.6"
"css-loader": "^3.6.0",
"dotenv-webpack": "^7.0.3",
"express": "^4.17.1",
"fast-png": "^5.0.4",
"handlebars": "^4.7.7",
"handlebars-loader": "^1.7.1",
"html-webpack-plugin": "^4.5.2",
"ifdef-loader": "^2.3.0",
"jest": "^26.6.3",
"media-query-plugin": "^1.4.0",
"mini-css-extract-plugin": "^0.9.0",
"npm": "^7.12.1",
"on-build-webpack": "^0.1.0",
"optimize-css-assets-webpack-plugin": "^5.0.4",
"pako": "^2.0.3",
"postcss": "^8.2.10",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0",
"qr-code-styling": "^1.3.4",
"sass": "^1.32.13",
"sass-loader": "^8.0.2",
"serviceworker-webpack-plugin": "^1.0.1",
"style-loader": "^1.3.0",
"text-encoding": "^0.7.0",
"ts-jest": "^26.5.6",
"ts-loader": "^8.2.0",
"typescript": "^4.4.3",
"webpack": "^4.46.0",
"webpack-bundle-analyzer": "^4.5.0",
"webpack-cli": "^3.3.12",
"webpack-merge": "^4.2.2",
"webpack-retry-chunk-load-plugin": "^1.5.0",
"worker-loader": "^3.0.8"
}
}

File diff suppressed because it is too large Load Diff

8
postcss.config.js Normal file
View File

@ -0,0 +1,8 @@
module.exports = {
parser: 'sugarss',
plugins: {
'postcss-import': {},
'postcss-preset-env': {},
'cssnano': {}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[19,20],{155:function(e,t,a){"use strict";a.r(t);var n=a(58),i=a(65),s=a(61),r=a(152),c=a(35),l=a(7),u=a(8),o=a(27),p=a(97),d=a(90),m=a(38),h=a(59);let b=null;const v=new d.a("page-signUp",!0,()=>a.e(6).then(a.bind(null,75)).then(e=>{const t=new p.a({className:"page-signUp",withInputWrapper:!0,titleLangKey:"YourName",subtitleLangKey:"Login.Register.Subtitle"});t.imageDiv.classList.add("avatar-edit"),t.title.classList.add("fullName");const c=document.createElement("canvas");c.id="canvas-avatar",c.className="avatar-edit-canvas";const d=document.createElement("span");d.className="tgico tgico-cameraadd",t.imageDiv.append(c,d);const v=e.default;let g;t.imageDiv.addEventListener("click",()=>{(new r.a).open(c,e=>{g=e})});const L=e=>{const a=w.value||"",n=y.value||"",i=a||n?(a+" "+n).trim():"";i?Object(h.a)(t.title,o.b.wrapEmojiText(i)):Object(h.a)(t.title,Object(l.d)("YourName"))};const w=new i.b({label:"FirstName",maxLength:70}),y=new i.b({label:"LastName",maxLength:64}),f=Object(n.a)("btn-primary btn-color-primary"),E=new l.c.IntlElement({key:"StartMessaging"});return f.append(E.element),t.inputWrapper.append(w.container,y.container,f),w.input.addEventListener("input",L),y.input.addEventListener("input",L),f.addEventListener("click",(function(e){if(w.input.classList.contains("error")||y.input.classList.contains("error"))return!1;if(!w.value.length)return w.input.classList.add("error"),!1;this.disabled=!0;const t=w.value.trim(),n=y.value.trim(),i={phone_number:b.phone_number,phone_code_hash:b.phone_code_hash,first_name:t,last_name:n};E.update({key:"PleaseWait"});const r=Object(s.f)(this);u.a.invokeApi("auth.signUp",i).then(e=>{switch(e._){case"auth.authorization":u.a.setUser(e.user),new Promise((e,t)=>{if(!g)return e();g().then(a=>{v.uploadProfilePhoto(a).then(e,t)},t)}).finally(()=>{a.e(3).then(a.bind(null,110)).then(e=>{e.default.mount()})});break;default:E.update({key:e._}),this.removeAttribute("disabled"),r.remove()}}).catch(e=>{this.removeAttribute("disabled"),r.remove(),e.type,E.update({key:e.type})})})),Object(m.a)(),new Promise(e=>{window.requestAnimationFrame(e)})}),e=>{b=e,c.c.pushToState("authState",{_:"authStateSignUp",authCode:e})});t.default=v},97:function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(7);class i{constructor(e){this.element=document.body.querySelector("."+e.className),this.container=document.createElement("div"),this.container.className="container center-align",this.imageDiv=document.createElement("div"),this.imageDiv.className="auth-image",this.title=document.createElement("h4"),e.titleLangKey&&this.title.append(Object(n.d)(e.titleLangKey)),this.subtitle=document.createElement("p"),this.subtitle.className="subtitle",e.subtitleLangKey&&this.subtitle.append(Object(n.d)(e.subtitleLangKey)),this.container.append(this.imageDiv,this.title,this.subtitle),e.withInputWrapper&&(this.inputWrapper=document.createElement("div"),this.inputWrapper.className="input-wrapper",this.container.append(this.inputWrapper)),this.element.append(this.container)}}}}]);
//# sourceMappingURL=19.f7182b122a15cfe83c25.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[20,19],{155:function(e,t,a){"use strict";a.r(t);var n=a(58),i=a(65),s=a(61),r=a(152),c=a(35),l=a(7),u=a(8),o=a(27),p=a(97),d=a(90),m=a(38),h=a(59);let b=null;const v=new d.a("page-signUp",!0,()=>a.e(6).then(a.bind(null,75)).then(e=>{const t=new p.a({className:"page-signUp",withInputWrapper:!0,titleLangKey:"YourName",subtitleLangKey:"Login.Register.Subtitle"});t.imageDiv.classList.add("avatar-edit"),t.title.classList.add("fullName");const c=document.createElement("canvas");c.id="canvas-avatar",c.className="avatar-edit-canvas";const d=document.createElement("span");d.className="tgico tgico-cameraadd",t.imageDiv.append(c,d);const v=e.default;let g;t.imageDiv.addEventListener("click",()=>{(new r.a).open(c,e=>{g=e})});const L=e=>{const a=w.value||"",n=y.value||"",i=a||n?(a+" "+n).trim():"";i?Object(h.a)(t.title,o.b.wrapEmojiText(i)):Object(h.a)(t.title,Object(l.d)("YourName"))};const w=new i.b({label:"FirstName",maxLength:70}),y=new i.b({label:"LastName",maxLength:64}),f=Object(n.a)("btn-primary btn-color-primary"),E=new l.c.IntlElement({key:"StartMessaging"});return f.append(E.element),t.inputWrapper.append(w.container,y.container,f),w.input.addEventListener("input",L),y.input.addEventListener("input",L),f.addEventListener("click",(function(e){if(w.input.classList.contains("error")||y.input.classList.contains("error"))return!1;if(!w.value.length)return w.input.classList.add("error"),!1;this.disabled=!0;const t=w.value.trim(),n=y.value.trim(),i={phone_number:b.phone_number,phone_code_hash:b.phone_code_hash,first_name:t,last_name:n};E.update({key:"PleaseWait"});const r=Object(s.f)(this);u.a.invokeApi("auth.signUp",i).then(e=>{switch(e._){case"auth.authorization":u.a.setUser(e.user),new Promise((e,t)=>{if(!g)return e();g().then(a=>{v.uploadProfilePhoto(a).then(e,t)},t)}).finally(()=>{a.e(3).then(a.bind(null,110)).then(e=>{e.default.mount()})});break;default:E.update({key:e._}),this.removeAttribute("disabled"),r.remove()}}).catch(e=>{this.removeAttribute("disabled"),r.remove(),e.type,E.update({key:e.type})})})),Object(m.a)(),new Promise(e=>{window.requestAnimationFrame(e)})}),e=>{b=e,c.c.pushToState("authState",{_:"authStateSignUp",authCode:e})});t.default=v},97:function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(7);class i{constructor(e){this.element=document.body.querySelector("."+e.className),this.container=document.createElement("div"),this.container.className="container center-align",this.imageDiv=document.createElement("div"),this.imageDiv.className="auth-image",this.title=document.createElement("h4"),e.titleLangKey&&this.title.append(Object(n.d)(e.titleLangKey)),this.subtitle=document.createElement("p"),this.subtitle.className="subtitle",e.subtitleLangKey&&this.subtitle.append(Object(n.d)(e.subtitleLangKey)),this.container.append(this.imageDiv,this.title,this.subtitle),e.withInputWrapper&&(this.inputWrapper=document.createElement("div"),this.inputWrapper.className="input-wrapper",this.container.append(this.inputWrapper)),this.element.append(this.container)}}}}]);
//# sourceMappingURL=20.6096df8f14772978d7c3.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[22],{198:function(e,a,s){"use strict";s.r(a);function c(e,a){switch(e){case 27764:if(a%10==1&&(a%100<11||a%100>19))return"one";if(a%10>=2&&a%10<=9&&(a%100<11||a%100>19))return"few";break;case 27766:if(0==a)return"zero";if(a%10==1&&a%100!=11)return"one";break;case 25465:if(2==a)return"two";if(3==a)return"few";if(0==a)return"zero";if(1==a)return"one";if(6==a)return"many";break;case 25189:case 25203:case 26738:case 29301:case 29544:case 29554:case 30059:if(a%10==1&&a%100!=11)return"one";if(a%10>=2&&a%10<=4&&(a%100<12||a%100>14))return"few";if(a%10==0||a%10>=5&&a%10<=9||a%100>=11&&a%100<=14)return"many";break;case 7041896:if(0==a)return"zero";if(1==a)return"one";break;case 7563369:if(a>=2&&a<=10)return"few";if(a>=0&&a<=1)return"one";break;case 26725:if(2==a)return"two";if(1==a)return"one";if(0!=a&&a%10==0)return"many";break;case 25459:case 29547:if(1==a)return"one";if(a>=2&&a<=4)return"few";break;case 25202:if(0!=a&&a%1e6==0)return"many";if(a%10==1&&a%100!=11&&a%100!=71&&a%100!=91)return"one";if(a%10==2&&a%100!=12&&a%100!=72&&a%100!=92)return"two";if((a%10>=3&&a%10<=4||a%10==9)&&(a%100<10||a%100>19)&&(a%100<70||a%100>79)&&(a%100<90||a%100>99))return"few";break;case 29548:if(a%100==2)return"two";if(a%100==1)return"one";if(a%100>=3&&a%100<=4)return"few";break;case 7102823:if(0==a)return"zero";if(a>=0&&a<=2&&0!=a&&2!=a)return"one";break;case 28780:if(1==a)return"one";if(a%10>=2&&a%10<=4&&(a%100<12||a%100>14))return"few";if(1!=a&&a%10>=0&&a%10<=1||a%10>=5&&a%10<=9||a%100>=12&&a%100<=14)return"many";break;case 26468:if(2==a||12==a)return"two";if(1==a||11==a)return"one";if(a>=3&&a<=10||a>=13&&a<=19)return"few";break;case 26486:if(a%10>=1&&a%10<=2||a%20==0)return"one";break;case 28011:if(a%10==1&&11!=a)return"one";break;case 28020:if(1==a)return"one";if(a%100>=11&&a%100<=19)return"many";if(0==a||a%100>=2&&a%100<=10)return"few";break;case 28015:case 29295:if(1==a)return"one";if(0==a||1!=a&&a%100>=1&&a%100<=19)return"few";break;case 26465:if(2==a)return"two";if(1==a)return"one";if(a>=3&&a<=6)return"few";if(a>=7&&a<=10)return"many";break;case 26214:case 26226:case 7037282:if(a>=0&&a<=2&&2!=a)return"one";break;case 26997:case 27511:case 29541:case 7233905:case 7564641:case 7564649:case 7564650:case 7564654:case 7564659:if(2==a)return"two";if(1==a)return"one";break;case 24939:case 24941:case 25192:case 26729:case 27758:case 28007:case 29801:case 29804:case 30561:case 6711660:case 6780279:case 7238511:if(a>=0&&a<=1)return"one";break;case 7633517:if(a>=0&&a<=1||a>=11&&a<=99)return"one";break;case 24934:case 25191:case 25198:case 25441:case 25697:case 25701:case 25718:case 25957:case 25964:case 25966:case 25967:case 25971:case 25972:case 25973:case 26217:case 26223:case 26233:case 26476:case 26485:case 26721:case 26995:case 26996:case 27499:case 27500:case 27507:case 27509:case 27513:case 27746:case 27751:case 28012:case 28014:case 28018:case 28258:case 28260:case 28261:case 28268:case 28270:case 28271:case 28274:case 28281:case 28525:case 28530:case 28531:case 28769:case 28787:case 28788:case 29293:case 29550:case 29551:case 29553:case 29555:case 29556:case 29558:case 29559:case 29793:case 29797:case 29803:case 29806:case 29811:case 30066:case 30309:case 30319:case 30824:case 31349:case 6386529:case 6386548:case 6448493:case 6448506:case 6451832:case 6514535:case 6514802:case 6515554:case 6714738:case 6779767:case 6840695:case 6973295:case 6974819:case 7037290:case 7037799:case 7039850:case 7041890:case 7168371:case 7169903:case 7233896:case 7237224:case 7240046:case 7364976:case 7499622:case 7501675:case 7561585:case 7562600:case 7566201:case 7567730:case 7628143:case 7629159:case 7763310:case 7823717:case 7892839:if(1==a)return"one";break;case 24946:if(2==a)return"two";if(1==a)return"one";if(0==a)return"zero";if(a%100>=3&&a%100<=10)return"few";if(a%100>=11&&a%100<=99)return"many"}return"other"}const r={PluralRules:class{constructor(e){this.select=c.bind(null,function(e){let a=0;for(let s=0;s<e.length;++s)a=(a<<8)+e.charCodeAt(s);return a}(e))}}};a.default=r}}]);
//# sourceMappingURL=22.0a628e2d4248ba9d2bc6.chunk.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[23,3],{110:function(e,t,a){"use strict";a.r(t);var n=a(38),c=a(42),s=a(35),l=a(7);const u=new(a(90).a)("page-chats",!1,()=>(s.c.pushToState("authState",{_:"authStateSignedIn"}),l.c.requestedServerLanguage||l.c.getCacheLangPack().then(e=>{e.local&&l.c.getLangPack(e.lang_code)}),u.pageEl.style.display="",Object(n.a)(),Promise.all([Object(c.a)(),Promise.all([a.e(1),a.e(2),a.e(5),a.e(6),a.e(13)]).then(a.bind(null,184))]).then(()=>{setTimeout(()=>{document.getElementById("auth-pages").remove()},1e3)})));t.default=u}}]);
//# sourceMappingURL=23.6be0d0c4a28ca0d0952b.chunk.js.map

View File

@ -0,0 +1 @@
{"version":3,"sources":["webpack:///./src/pages/pageIm.ts"],"names":["page","pushToState","_","requestedServerLanguage","getCacheLangPack","then","langPack","local","getLangPack","lang_code","pageEl","style","display","Promise","all","setTimeout","document","getElementById","remove"],"mappings":"yFAAA,0CAoDA,MAAMA,EAAO,IApDb,MAoDiB,GAAK,cAAc,EAxCjB,KACjB,IAAgBC,YAAY,YAAa,CAACC,EAAG,sBAIzC,IAAKC,yBACP,IAAKC,mBAAmBC,KAAKC,IACxBA,EAASC,OACV,IAAKC,YAAYF,EAASG,aAKhCT,EAAKU,OAAOC,MAAMC,QAAU,GAe5B,cAEOC,QAAQC,IAAI,CACjB,cACA,4EACCT,KAAK,KACNU,WAAW,KACTC,SAASC,eAAe,cAAcC,UACrC,SAKQ","file":"23.6be0d0c4a28ca0d0952b.chunk.js","sourcesContent":["/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport blurActiveElement from \"../helpers/dom/blurActiveElement\";\r\nimport loadFonts from \"../helpers/dom/loadFonts\";\r\nimport appStateManager from \"../lib/appManagers/appStateManager\";\r\nimport I18n from \"../lib/langPack\";\r\nimport Page from \"./page\";\r\n\r\nlet onFirstMount = () => {\r\n appStateManager.pushToState('authState', {_: 'authStateSignedIn'});\r\n // ! TOO SLOW\r\n /* appStateManager.saveState(); */\r\n\r\n if(!I18n.requestedServerLanguage) {\r\n I18n.getCacheLangPack().then(langPack => {\r\n if(langPack.local) {\r\n I18n.getLangPack(langPack.lang_code);\r\n }\r\n });\r\n }\r\n\r\n page.pageEl.style.display = '';\r\n \r\n //AudioContext && global.navigator && global.navigator.mediaDevices && global.navigator.mediaDevices.getUserMedia && global.WebAssembly;\r\n\r\n /* // @ts-ignore\r\n var AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;\r\n alert('AudioContext:' + typeof(AudioContext));\r\n // @ts-ignore\r\n alert('global.navigator:' + typeof(navigator));\r\n alert('navigator.mediaDevices:' + typeof(navigator.mediaDevices));\r\n alert('navigator.mediaDevices.getUserMedia:' + typeof(navigator.mediaDevices?.getUserMedia));\r\n alert('global.WebAssembly:' + typeof(WebAssembly)); */\r\n\r\n //(Array.from(document.getElementsByClassName('rp')) as HTMLElement[]).forEach(el => ripple(el));\r\n\r\n blurActiveElement();\r\n\r\n return Promise.all([\r\n loadFonts()/* .then(() => new Promise((resolve) => window.requestAnimationFrame(resolve))) */,\r\n import('../lib/appManagers/appDialogsManager')\r\n ]).then(() => {\r\n setTimeout(() => {\r\n document.getElementById('auth-pages').remove();\r\n }, 1e3);\r\n });\r\n};\r\n\r\nconst page = new Page('page-chats', false, onFirstMount);\r\nexport default page;\r\n"],"sourceRoot":""}

View File

@ -0,0 +1,2 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[24],{200:function(t,r,o){"use strict";o.r(r),o.d(r,"default",(function(){return f}));const a=[1,57,41,21,203,34,97,73,227,91,149,62,105,45,39,137,241,107,3,173,39,71,65,238,219,101,187,87,81,151,141,133,249,117,221,209,197,187,177,169,5,153,73,139,133,127,243,233,223,107,103,99,191,23,177,171,165,159,77,149,9,139,135,131,253,245,119,231,224,109,211,103,25,195,189,23,45,175,171,83,81,79,155,151,147,9,141,137,67,131,129,251,123,30,235,115,113,221,217,53,13,51,50,49,193,189,185,91,179,175,43,169,83,163,5,79,155,19,75,147,145,143,35,69,17,67,33,65,255,251,247,243,239,59,29,229,113,111,219,27,213,105,207,51,201,199,49,193,191,47,93,183,181,179,11,87,43,85,167,165,163,161,159,157,155,77,19,75,37,73,145,143,141,35,138,137,135,67,33,131,129,255,63,250,247,61,121,239,237,117,29,229,227,225,111,55,109,216,213,211,209,207,205,203,201,199,197,195,193,48,190,47,93,185,183,181,179,178,176,175,173,171,85,21,167,165,41,163,161,5,79,157,78,154,153,19,75,149,74,147,73,144,143,71,141,140,139,137,17,135,134,133,66,131,65,129,1],e=[0,9,10,10,14,12,14,14,16,15,16,15,16,15,15,17,18,17,12,18,16,17,17,19,19,18,19,18,18,19,19,19,20,19,20,20,20,20,20,20,15,20,19,20,20,20,21,21,21,20,20,20,21,18,21,21,21,21,20,21,17,21,21,21,22,22,21,22,22,21,22,21,19,22,22,19,20,22,22,21,21,21,22,22,22,18,22,22,21,22,22,23,22,20,23,22,22,23,23,21,19,21,21,21,23,23,23,22,23,23,21,23,22,23,18,22,23,20,22,23,23,23,21,22,20,22,21,22,24,24,24,24,24,22,21,24,23,23,24,21,24,23,24,22,24,24,22,24,24,22,23,24,24,24,20,23,22,23,24,24,24,24,24,24,24,23,21,23,22,23,24,24,24,22,24,24,24,23,22,24,24,25,23,25,25,23,24,25,25,24,22,25,25,25,24,23,24,25,25,25,25,25,25,25,25,25,25,25,25,23,25,23,24,25,25,25,25,25,25,25,25,25,24,22,25,25,23,25,25,20,24,25,24,25,25,22,24,25,24,25,24,25,25,24,25,25,25,25,22,25,25,25,24,25,24,25,18];function f(t,r,o,f,n,s,u){if(Number.isNaN(s)||s<1)return;s|=0,Number.isNaN(u)&&(u=1),(u|=0)>3&&(u=3),u<1&&(u=1);const i=t.getImageData(r,o,f,n),c=i.data;let p,N,b,m,d,g,h,k,l,w,D,I,J=f-1,j=n-1,q=s+1,v=[],x=[],y=[],z=a[s],A=e[s],B=[],C=[];for(;u-- >0;){for(I=D=0,d=0;d<n;d++){for(p=c[I]*q,N=c[I+1]*q,b=c[I+2]*q,g=1;g<=s;g++)h=I+((g>J?J:g)<<2),p+=c[h++],N+=c[h++],b+=c[h++];for(m=0;m<f;m++)v[D]=p,x[D]=N,y[D]=b,0==d&&(B[m]=((h=m+q)<J?h:J)<<2,C[m]=(h=m-s)>0?h<<2:0),k=I+B[m],l=I+C[m],p+=c[k++]-c[l++],N+=c[k++]-c[l++],b+=c[k++]-c[l++],D++;I+=f<<2}for(m=0;m<f;m++){for(w=m,p=v[w]*q,N=x[w]*q,b=y[w]*q,g=1;g<=s;g++)w+=g>j?0:f,p+=v[w],N+=x[w],b+=y[w];for(D=m<<2,d=0;d<n;d++)c[D]=p*z>>>A,c[D+1]=N*z>>>A,c[D+2]=b*z>>>A,0==m&&(B[d]=((h=d+q)<j?h:j)*f,C[d]=(h=d-s)>0?h*f:0),k=m+B[d],l=m+C[d],p+=v[k]-v[l],N+=x[k]-x[l],b+=y[k]-y[l],D+=f<<2}}t.putImageData(i,r,o)}}}]);
//# sourceMappingURL=24.3dbb6c36f540f3e15be0.chunk.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[3,23],{110:function(e,t,a){"use strict";a.r(t);var n=a(38),c=a(42),s=a(35),l=a(7);const u=new(a(90).a)("page-chats",!1,()=>(s.c.pushToState("authState",{_:"authStateSignedIn"}),l.c.requestedServerLanguage||l.c.getCacheLangPack().then(e=>{e.local&&l.c.getLangPack(e.lang_code)}),u.pageEl.style.display="",Object(n.a)(),Promise.all([Object(c.a)(),Promise.all([a.e(1),a.e(2),a.e(5),a.e(6),a.e(13)]).then(a.bind(null,184))]).then(()=>{setTimeout(()=>{document.getElementById("auth-pages").remove()},1e3)})));t.default=u}}]);
//# sourceMappingURL=3.fd4a457d3edbe045f3c5.chunk.js.map

View File

@ -0,0 +1 @@
{"version":3,"sources":["webpack:///./src/pages/pageIm.ts"],"names":["page","pushToState","_","requestedServerLanguage","getCacheLangPack","then","langPack","local","getLangPack","lang_code","pageEl","style","display","Promise","all","setTimeout","document","getElementById","remove"],"mappings":"yFAAA,0CAoDA,MAAMA,EAAO,IApDb,MAoDiB,GAAK,cAAc,EAxCjB,KACjB,IAAgBC,YAAY,YAAa,CAACC,EAAG,sBAIzC,IAAKC,yBACP,IAAKC,mBAAmBC,KAAKC,IACxBA,EAASC,OACV,IAAKC,YAAYF,EAASG,aAKhCT,EAAKU,OAAOC,MAAMC,QAAU,GAe5B,cAEOC,QAAQC,IAAI,CACjB,cACA,4EACCT,KAAK,KACNU,WAAW,KACTC,SAASC,eAAe,cAAcC,UACrC,SAKQ","file":"3.fd4a457d3edbe045f3c5.chunk.js","sourcesContent":["/*\r\n * https://github.com/morethanwords/tweb\r\n * Copyright (C) 2019-2021 Eduard Kuzmenko\r\n * https://github.com/morethanwords/tweb/blob/master/LICENSE\r\n */\r\n\r\nimport blurActiveElement from \"../helpers/dom/blurActiveElement\";\r\nimport loadFonts from \"../helpers/dom/loadFonts\";\r\nimport appStateManager from \"../lib/appManagers/appStateManager\";\r\nimport I18n from \"../lib/langPack\";\r\nimport Page from \"./page\";\r\n\r\nlet onFirstMount = () => {\r\n appStateManager.pushToState('authState', {_: 'authStateSignedIn'});\r\n // ! TOO SLOW\r\n /* appStateManager.saveState(); */\r\n\r\n if(!I18n.requestedServerLanguage) {\r\n I18n.getCacheLangPack().then(langPack => {\r\n if(langPack.local) {\r\n I18n.getLangPack(langPack.lang_code);\r\n }\r\n });\r\n }\r\n\r\n page.pageEl.style.display = '';\r\n \r\n //AudioContext && global.navigator && global.navigator.mediaDevices && global.navigator.mediaDevices.getUserMedia && global.WebAssembly;\r\n\r\n /* // @ts-ignore\r\n var AudioContext = globalThis.AudioContext || globalThis.webkitAudioContext;\r\n alert('AudioContext:' + typeof(AudioContext));\r\n // @ts-ignore\r\n alert('global.navigator:' + typeof(navigator));\r\n alert('navigator.mediaDevices:' + typeof(navigator.mediaDevices));\r\n alert('navigator.mediaDevices.getUserMedia:' + typeof(navigator.mediaDevices?.getUserMedia));\r\n alert('global.WebAssembly:' + typeof(WebAssembly)); */\r\n\r\n //(Array.from(document.getElementsByClassName('rp')) as HTMLElement[]).forEach(el => ripple(el));\r\n\r\n blurActiveElement();\r\n\r\n return Promise.all([\r\n loadFonts()/* .then(() => new Promise((resolve) => window.requestAnimationFrame(resolve))) */,\r\n import('../lib/appManagers/appDialogsManager')\r\n ]).then(() => {\r\n setTimeout(() => {\r\n document.getElementById('auth-pages').remove();\r\n }, 1e3);\r\n });\r\n};\r\n\r\nconst page = new Page('page-chats', false, onFirstMount);\r\nexport default page;\r\n"],"sourceRoot":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
(this.webpackJsonp=this.webpackJsonp||[]).push([[8],{196:function(e,n,o){"use strict";o.r(n);n.default={"Login.Title":"Sign in to Telegram","Login.CountrySelectorLabel":"Country","Login.PhoneLabel":"Phone Number","Login.PhoneLabelInvalid":"Phone Number Invalid","Login.KeepSigned":"Keep me signed in","Login.StartText":"Please confirm your country and\nenter your phone number.","Login.Code.SentSms":"We have sent you an SMS\nwith the code.","Login.Code.SentInApp":"We have sent you a message in Telegram\nwith the code.","Login.Code.SentCall":"We will call you and voice\nthe code.","Login.Code.SentUnknown":"Please check everything\nfor a code (type: %s)","Login.Password.Title":"Enter Your Password","Login.Password.Subtitle":"Your account is protected with\nan additional password","Login.Register.Subtitle":"Enter your name and add\na profile picture",PleaseWait:"Please wait...",Code:"Code",LoginPassword:"Password",YourName:"Your Name",FirstName:"First name (required)",LastName:"Last name (optional)",StartMessaging:"Start Messaging","Contacts.PhoneNumber.Placeholder":"Phone Number","Login.Next":"Next","Login.ContinueOnLanguage":"Continue in English","Login.QR.Title":"Log in to Telegram by QR Code","Login.QR.Help1":"Open Telegram on your phone","Login.QR.Help2":"Go to **Settings** > **Devices** > **Link Desktop Device**","Login.QR.Help3":"Point your phone at this screen to confirm login","Login.QR.Cancel":"Log in by phone Number","Login.QR.Login":"Log in by QR Code",PHONE_CODE_INVALID:"Invalid code",PHONE_CODE_EXPIRED:"Code expired",PASSWORD_HASH_INVALID:"Incorrect password"}}}]);
//# sourceMappingURL=8.f44261a125fd436f2604.chunk.js.map

View File

@ -0,0 +1 @@
{"version":3,"sources":["webpack:///./src/langSign.ts"],"names":[],"mappings":"sFAAA,OAuCe,UAvCF,CACX,cAAe,sBACf,6BAA8B,UAC9B,mBAAoB,eACpB,0BAA2B,uBAC3B,mBAAoB,oBACpB,kBAAmB,4DACnB,qBAAsB,0CACtB,uBAAwB,yDACxB,sBAAuB,wCACvB,yBAA0B,iDAC1B,uBAAwB,sBACxB,0BAA2B,yDAC3B,0BAA2B,6CAC3B,WAAc,iBAGd,KAAQ,OACR,cAAiB,WACjB,SAAY,YACZ,UAAa,wBACb,SAAY,uBACZ,eAAkB,kBAGlB,mCAAoC,eACpC,aAAc,OACd,2BAA4B,sBAC5B,iBAAkB,gCAClB,iBAAkB,8BAClB,iBAAkB,6DAClB,iBAAkB,mDAClB,kBAAmB,yBACnB,iBAAkB,oBAClB,mBAAsB,eACtB,mBAAsB,eACtB,sBAAyB","file":"8.f44261a125fd436f2604.chunk.js","sourcesContent":["const lang = {\r\n \"Login.Title\": \"Sign in to Telegram\",\r\n \"Login.CountrySelectorLabel\": \"Country\",\r\n \"Login.PhoneLabel\": \"Phone Number\",\r\n \"Login.PhoneLabelInvalid\": \"Phone Number Invalid\",\r\n \"Login.KeepSigned\": \"Keep me signed in\",\r\n \"Login.StartText\": \"Please confirm your country and\\nenter your phone number.\",\r\n \"Login.Code.SentSms\": \"We have sent you an SMS\\nwith the code.\",\r\n \"Login.Code.SentInApp\": \"We have sent you a message in Telegram\\nwith the code.\",\r\n \"Login.Code.SentCall\": \"We will call you and voice\\nthe code.\",\r\n \"Login.Code.SentUnknown\": \"Please check everything\\nfor a code (type: %s)\",\r\n \"Login.Password.Title\": \"Enter Your Password\",\r\n \"Login.Password.Subtitle\": \"Your account is protected with\\nan additional password\",\r\n \"Login.Register.Subtitle\": \"Enter your name and add\\na profile picture\",\r\n \"PleaseWait\": \"Please wait...\",\r\n\r\n // * android\r\n \"Code\": \"Code\",\r\n \"LoginPassword\": \"Password\",\r\n \"YourName\": \"Your Name\",\r\n \"FirstName\": \"First name (required)\",\r\n \"LastName\": \"Last name (optional)\",\r\n \"StartMessaging\": \"Start Messaging\",\r\n\r\n // * macos\r\n \"Contacts.PhoneNumber.Placeholder\": \"Phone Number\",\r\n \"Login.Next\": \"Next\",\r\n \"Login.ContinueOnLanguage\": \"Continue in English\",\r\n \"Login.QR.Title\": \"Log in to Telegram by QR Code\",\r\n \"Login.QR.Help1\": \"Open Telegram on your phone\",\r\n \"Login.QR.Help2\": \"Go to **Settings** > **Devices** > **Link Desktop Device**\",\r\n \"Login.QR.Help3\": \"Point your phone at this screen to confirm login\",\r\n \"Login.QR.Cancel\": \"Log in by phone Number\",\r\n \"Login.QR.Login\": \"Log in by QR Code\",\r\n \"PHONE_CODE_INVALID\": \"Invalid code\",\r\n \"PHONE_CODE_EXPIRED\": \"Code expired\",\r\n \"PASSWORD_HASH_INVALID\": \"Incorrect password\"\r\n};\r\n\r\nexport default lang;\r\n"],"sourceRoot":""}

View File

@ -1,2 +0,0 @@
var o=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function l(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}export{o as c,l as g};
//# sourceMappingURL=_commonjsHelpers-Cpj98o6Y.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"_commonjsHelpers-Cpj98o6Y.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 349 KiB

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

Binary file not shown.

View File

@ -1,11 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_227_253)">
<rect width="32" height="32" fill="#016FD0"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.21 5H17.2831L19.0649 8.98321V5H25.3283L26.4083 7.98423L27.4918 5H32.2742L32.2742 6.26337H28.4758L26.4312 11.8561L24.4002 6.27676L20.4535 6.26337V15.2556L16.4145 6.26477H13.1711L9.07687 15.3401H11.8849L12.6569 13.5227H16.842L17.614 15.3401H20.4915L20.4909 15.3387H22.9357V9.10448L25.2911 15.3387H27.5226L29.83 9.12563V15.3599L32.2742 15.3387L32.2742 15.3507L32.2742 16.6134H29.0673L26.4147 19.4918L23.7693 16.6134H20.4578V16.6127H12.6339V25.6958H20.4578V25.6958H23.6783L26.3431 22.7884L29.0351 25.6958H32.2742L32.2742 26.9908H28.3906L26.3266 24.749L24.277 27L11.2281 26.9725V16.6401H7L12.21 5ZM32.2742 25.5675L32.2742 23.7077L29.8415 21.1246L32.2742 18.5662L32.2742 16.6846L28.0375 21.1493L32.2742 25.5675ZM14.7502 8.59689L13.5227 11.4859H15.9769L14.7502 8.59689ZM20.4578 18.7051V16.6538L24.7475 21.1493L20.4578 25.6552V23.5787H15.1676V22.1836H20.3317V20.1257H15.1676V18.7051H20.4578Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_227_253">
<rect width="32" height="32" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="284" height="578" viewBox="0 0 284 578" fill="none">
<path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M233.32 0.281264C239.512 0.281006 244.932 0.280782 249.411 0.646737C254.162 1.03492 258.999 1.89942 263.684 4.28679C270.599 7.81013 276.221 13.4322 279.745 20.3471C282.132 25.0326 282.996 29.8694 283.385 34.6206C283.751 39.0996 283.75 44.5187 283.75 50.7112V527.351C283.75 533.544 283.751 538.963 283.385 543.442C282.996 548.193 282.132 553.03 279.745 557.715C276.221 564.63 270.599 570.252 263.684 573.776C258.999 576.163 254.162 577.028 249.411 577.416C244.932 577.782 239.513 577.782 233.32 577.781H50.68C44.4875 577.782 39.0684 577.782 34.5894 577.416C29.8382 577.028 25.0013 576.163 20.3159 573.776C13.4009 570.252 7.77888 564.63 4.25554 557.715C1.86817 553.03 1.00367 548.193 0.615487 543.442C0.249532 538.963 0.249756 533.544 0.250014 527.351V50.7115C0.249756 44.5189 0.249532 39.0997 0.615487 34.6206C1.00367 29.8694 1.86817 25.0326 4.25554 20.3471C7.77888 13.4322 13.4009 7.81013 20.3159 4.28679C25.0013 1.89942 29.8382 1.03492 34.5894 0.646737C39.0685 0.280782 44.4876 0.281006 50.6803 0.281264H233.32ZM15.95 26.3057C13.375 31.3594 13.375 37.975 13.375 51.2063V526.856C13.375 540.088 13.375 546.703 15.95 551.757C18.215 556.202 21.8292 559.816 26.2745 562.081C31.3282 564.656 37.9438 564.656 51.175 564.656H232.825C246.056 564.656 252.672 564.656 257.726 562.081C262.171 559.816 265.785 556.202 268.05 551.757C270.625 546.703 270.625 540.088 270.625 526.856V51.2063C270.625 37.975 270.625 31.3594 268.05 26.3057C265.785 21.8604 262.171 18.2463 257.726 15.9812C252.672 13.4063 246.056 13.4063 232.825 13.4063H51.175C37.9438 13.4063 31.3282 13.4063 26.2745 15.9812C21.8292 18.2463 18.215 21.8604 15.95 26.3057Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M233.196 4.21876C239.496 4.21862 244.774 4.21851 249.09 4.57114C253.598 4.93944 257.859 5.73771 261.897 7.79511C268.071 10.941 273.09 15.9606 276.236 22.1347C278.294 26.1726 279.092 30.4336 279.46 34.9412C279.813 39.2573 279.813 44.5354 279.813 50.8354V527.227C279.813 533.527 279.813 538.805 279.46 543.121C279.092 547.629 278.294 551.89 276.236 555.928C273.09 562.102 268.071 567.122 261.897 570.267C257.859 572.325 253.598 573.123 249.09 573.491C244.774 573.844 239.495 573.844 233.195 573.844H50.8051C44.5047 573.844 39.2262 573.844 34.91 573.491C30.4023 573.123 26.1413 572.325 22.1034 570.267C15.9294 567.122 10.9097 562.102 7.76386 555.928C5.70646 551.89 4.90819 547.629 4.53989 543.121C4.18726 538.805 4.18737 533.527 4.18751 527.227V50.8356C4.18737 44.5355 4.18726 39.2573 4.53989 34.9412C4.90819 30.4336 5.70646 26.1726 7.76386 22.1347C10.9097 15.9606 15.9294 10.941 22.1034 7.79511C26.1413 5.73771 30.4023 4.93944 34.91 4.57114C39.2261 4.21851 44.5042 4.21862 50.8043 4.21876H233.196ZM15.95 26.3057C13.375 31.3594 13.375 37.975 13.375 51.2062V526.856C13.375 540.087 13.375 546.703 15.95 551.757C18.215 556.202 21.8292 559.816 26.2745 562.081C31.3281 564.656 37.9438 564.656 51.175 564.656H232.825C246.056 564.656 252.672 564.656 257.726 562.081C262.171 559.816 265.785 556.202 268.05 551.757C270.625 546.703 270.625 540.087 270.625 526.856V51.2063C270.625 37.975 270.625 31.3594 268.05 26.3057C265.785 21.8604 262.171 18.2462 257.726 15.9812C252.672 13.4063 246.056 13.4063 232.825 13.4063H51.175C37.9438 13.4063 31.3281 13.4063 26.2745 15.9812C21.8292 18.2462 18.215 21.8604 15.95 26.3057Z" fill="black"/>
<circle cx="142" cy="23.9062" r="6.5625" fill="black"/>
</svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -1,5 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 16C0 12.2801 0 10.4202 0.40889 8.89417C1.5185 4.75307 4.75307 1.5185 8.89417 0.40889C10.4202 0 12.2801 0 16 0C19.7199 0 21.5798 0 23.1058 0.40889C27.2469 1.5185 30.4815 4.75307 31.5911 8.89417C32 10.4202 32 12.2801 32 16C32 19.7199 32 21.5798 31.5911 23.1058C30.4815 27.2469 27.2469 30.4815 23.1058 31.5911C21.5798 32 19.7199 32 16 32C12.2801 32 10.4202 32 8.89417 31.5911C4.75307 30.4815 1.5185 27.2469 0.40889 23.1058C0 21.5798 0 19.7199 0 16Z" fill="#8A8E92"/>
<rect x="6" y="8" width="20" height="16" rx="4" stroke="white" stroke-width="2"/>
<path d="M6 14H26" stroke="white" stroke-width="4"/>
</svg>

Before

Width:  |  Height:  |  Size: 714 B

View File

@ -1,4 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="32" height="32" fill="#2C67A5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M28 16.0781C28 20.988 23.2564 25.0239 18.0597 24.9999H13.5876C8.32866 25.0239 4 20.9891 4 16.0781C4 10.7103 8.32866 6.99846 13.5876 7H18.0597C23.2564 6.99846 28 10.7094 28 16.0781ZM14.9887 11.1098V20.859C16.9525 20.1059 18.3466 18.2098 18.35 15.9841C18.3466 13.7588 16.9525 11.8616 14.9887 11.1098ZM11.2427 11.11C9.27997 11.864 7.88805 13.7601 7.88364 15.9841C7.88805 18.2087 9.27997 20.1037 11.2427 20.857V11.11ZM4.86142 15.9841C4.86252 11.4333 8.55691 7.74563 13.116 7.74409C17.6767 7.74563 21.3717 11.4333 21.3724 15.9841C21.3717 20.5344 17.6767 24.2214 13.116 24.2227C8.55691 24.2214 4.86252 20.5344 4.86142 15.9841Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 835 B

View File

@ -1,4 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="32" height="32" fill="#232340"/>
<circle cx="16" cy="16" r="9" fill="#ED6B2C"/>
</svg>

Before

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

View File

@ -1,7 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="32" height="32" fill="#016FD0"/>
<path d="M28 21.3714C28 23.3714 26.3276 25 24.2738 25H4V10.6286C4 8.62857 5.67237 7 7.72616 7H28V21.3714Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.7628 8.21423C21.2959 8.21423 20.0929 9.37138 20.0929 10.8142V13.5142H23.8631C23.9511 13.5142 24.0538 13.5142 24.1271 13.5285C24.978 13.5714 25.6088 13.9999 25.6088 14.7428C25.6088 15.3285 25.1834 15.8285 24.3912 15.9285V15.9571C25.2567 16.0142 25.9169 16.4857 25.9169 17.2142C25.9169 17.9999 25.1834 18.5142 24.2152 18.5142H20.0782V23.7999H23.9951C25.4621 23.7999 26.665 22.6428 26.665 21.1999V8.21423H22.7628ZM21.3984 17.6857H22.9388C22.9608 17.6857 22.9975 17.6821 23.0341 17.6786C23.0708 17.675 23.1075 17.6714 23.1295 17.6714C23.4229 17.6143 23.6723 17.3571 23.6723 17C23.6723 16.6571 23.4229 16.4 23.1295 16.3286C23.0855 16.3143 22.9975 16.3143 22.9388 16.3143H21.3984V17.6857ZM22.9388 14.2999C23.2322 14.3428 23.4816 14.5714 23.4816 14.9142C23.4816 15.2571 23.2322 15.4857 22.9388 15.5285C22.9241 15.5428 22.8361 15.5428 22.7921 15.5428H21.3984V14.2857H22.7921C22.8163 14.2857 22.8494 14.29 22.8792 14.2939C22.9035 14.2971 22.9256 14.2999 22.9388 14.2999Z" fill="#5BB532"/>
<path d="M8.00479 8.21423C6.53779 8.21423 5.33486 9.37138 5.33486 10.8142V17.2285C6.08303 17.5857 6.86053 17.8142 7.63804 17.8142C8.56224 17.8142 9.06102 17.2714 9.06102 16.5285V13.4999H11.3495V16.5142C11.3495 17.6857 10.6014 18.6428 8.06347 18.6428C6.52312 18.6428 5.32019 18.3142 5.32019 18.3142V23.7857H9.23706C10.7041 23.7857 11.907 22.6285 11.907 21.1857V8.21423H8.00479Z" fill="#016DB9"/>
<path d="M15.3839 8.21423C13.9169 8.21423 12.714 9.37138 12.714 10.8142V14.2142C13.3888 13.6571 14.5624 13.2999 16.4548 13.3857C17.467 13.4285 18.5526 13.6999 18.5526 13.6999V14.7999C18.0098 14.5285 17.3644 14.2857 16.5282 14.2285C15.0905 14.1285 14.225 14.8142 14.225 16.0142C14.225 17.2285 15.0905 17.9142 16.5282 17.7999C17.3644 17.7428 18.0098 17.4857 18.5526 17.2285V18.3285C18.5526 18.3285 17.4817 18.5999 16.4548 18.6428C14.5624 18.7285 13.3888 18.3714 12.714 17.8142V23.8142H16.6309C18.0979 23.8142 19.3008 22.6571 19.3008 21.2142V8.21423H15.3839Z" fill="#E7013A"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

View File

@ -1,11 +0,0 @@
<svg width="160" height="160" viewBox="0 0 160 160" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_0_3)">
<rect width="108" height="108" transform="translate(26 26)" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M80 0C124.183 0 160 35.8172 160 80C160 124.183 124.183 160 80 160C35.8172 160 0 124.183 0 80C0 35.8172 35.8172 0 80 0ZM114.263 46.4516H114.124C111.09 46.5056 106.483 48.0771 85.129 56.9377L81.4134 58.485C72.8665 62.0684 57.2608 68.7965 34.5963 78.6692C30.6592 80.2346 28.5967 81.7659 28.409 83.2633C28.0626 86.0254 31.8704 86.9599 36.789 88.5303L38.2643 89.0045C42.3926 90.3144 47.5535 91.7249 50.3251 91.7848C52.9152 91.8407 55.7945 90.8163 58.9629 88.7115L70.5122 80.9327C85.6657 70.7536 93.6286 65.5353 94.4008 65.2779L94.6778 65.2164C95.1594 65.1213 95.7366 65.0718 96.1481 65.4374C96.6344 65.8696 96.5866 66.688 96.5351 66.9076C96.1275 68.6449 75.2839 87.6143 73.6629 89.2418L73.3122 89.6017C68.7645 94.2255 63.9031 97.1721 71.5638 102.355L73.3594 103.545C79.066 107.335 82.9483 110.084 88.8108 113.958L90.3875 114.996C95.0655 118.062 98.733 121.698 103.563 121.253C105.741 121.053 107.989 119.042 109.175 113.097L109.247 112.728C112.002 98.0013 117.418 66.093 118.67 52.9444C118.779 51.7924 118.641 50.3181 118.53 49.6709L118.474 49.3782C118.341 48.7651 118.068 48.0041 117.347 47.419C116.413 46.6611 115.002 46.4639 114.263 46.4516Z" fill="#3390EC"/>
</g>
<defs>
<clipPath id="clip0_0_3">
<rect width="160" height="160" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,3 +0,0 @@
<svg width="31" height="26" viewBox="0 0 31 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.56234 11.2029C10.6154 7.69429 15.9854 5.38122 18.6722 4.26366C26.3438 1.07279 27.9379 0.518498 28.9769 0.500195C29.2054 0.49617 29.7163 0.552803 30.0473 0.821365C30.3268 1.04813 30.4037 1.35446 30.4405 1.56947C30.4773 1.78447 30.5231 2.27425 30.4867 2.65694C30.0709 7.025 28.2721 17.6251 27.357 22.5174C26.9697 24.5875 26.2073 25.2816 25.4691 25.3496C23.8649 25.4972 22.6467 24.2894 21.093 23.2709C18.6617 21.6772 17.2882 20.685 14.9282 19.1298C12.2008 17.3325 13.9688 16.3447 15.5232 14.7303C15.9299 14.3078 22.9981 7.87881 23.1349 7.2956C23.152 7.22266 23.1679 6.95077 23.0063 6.80721C22.8448 6.66364 22.6064 6.71273 22.4344 6.75178C22.1905 6.80712 18.3065 9.37433 10.7823 14.4534C9.67983 15.2104 8.68124 15.5793 7.78655 15.5599C6.80022 15.5386 4.90291 15.0023 3.49246 14.5438C1.76249 13.9814 0.387541 13.6841 0.507268 12.7291C0.569629 12.2316 1.25465 11.7229 2.56234 11.2029Z" fill="#3390ec"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,14 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="m4356.97 71.3238c18.66-8.128 31.1-13.487 37.32-16.076 17.78-7.393 21.47-8.677 23.88-8.72.53-.009 1.71.122 2.48.745.64.525.82 1.235.91 1.733.08.498.19 1.633.1 2.519-.96 10.12-5.13 34.678-7.25 46.013-.89 4.7962-2.66 6.4042-4.37 6.5612-3.72.342-6.54-2.456-10.14-4.8152-5.63-3.693-8.81-5.991-14.28-9.594-6.32-4.164-2.22-6.453 1.38-10.193.94-.979 17.32-15.874 17.63-17.225.04-.169.08-.799-.3-1.131-.37-.333-.92-.219-1.32-.129-.57.128-9.56 6.076-27 17.843-2.55 1.754-4.86 2.609-6.94 2.564-2.28-.049-6.68-1.292-9.95-2.354-4-1.303-7.19-1.992-6.91-4.205.14-1.152 1.73-2.331 4.76-3.536z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,45 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M3278 6995 c-1 -1 -41 -5 -88 -9 -87 -7 -105 -9 -225 -27 -116 -18
-123 -19 -192 -35 -184 -42 -248 -59 -369 -99 -459 -153 -870 -390 -1229 -709
-358 -318 -674 -746 -857 -1159 -27 -62 -53 -121 -58 -132 -46 -95 -150 -427
-176 -560 -2 -11 -10 -54 -19 -95 -29 -147 -36 -200 -52 -370 -15 -165 -8
-592 12 -711 2 -13 6 -46 9 -74 9 -78 23 -156 51 -285 23 -107 88 -333 114
-395 5 -11 25 -65 46 -120 50 -132 181 -398 250 -508 30 -49 55 -90 55 -93 0
-3 4 -10 10 -17 5 -7 46 -64 91 -126 72 -103 179 -239 234 -297 243 -261 429
-421 682 -590 77 -52 145 -94 149 -94 4 0 15 -6 23 -14 29 -25 304 -161 431
-213 269 -110 577 -194 835 -228 22 -2 56 -7 75 -10 186 -26 698 -27 838 0 16
3 104 15 147 20 324 41 870 235 1167 415 37 22 70 40 73 40 3 0 11 5 18 10 7
6 62 43 122 83 253 168 492 376 678 592 33 39 63 72 67 75 17 13 181 236 245
335 221 340 406 777 481 1140 16 79 54 301 59 350 4 33 9 71 11 85 9 46 11
524 4 605 -12 128 -21 202 -25 227 -3 13 -8 43 -11 68 -9 67 -70 335 -94 412
-11 37 -21 70 -21 73 0 2 -16 49 -35 102 -222 616 -576 1124 -1074 1541 -66
56 -304 230 -351 257 -235 137 -500 275 -527 275 -4 0 -26 8 -48 19 -98 47
-408 141 -579 176 -44 9 -89 19 -100 21 -11 2 -38 6 -60 9 -22 3 -51 7 -65 10
-13 2 -52 7 -86 11 -33 3 -74 8 -90 10 -32 5 -540 14 -546 9z m1831 -2053 c39
-25 59 -53 72 -96 12 -44 14 -156 5 -226 -10 -74 -15 -112 -21 -170 -4 -30 -8
-66 -10 -80 -2 -14 -7 -45 -10 -70 -6 -54 -8 -66 -44 -306 -11 -72 -23 -156
-26 -185 -4 -30 -10 -72 -15 -94 -5 -22 -12 -62 -15 -90 -4 -27 -15 -104 -26
-170 -11 -66 -22 -131 -24 -145 -2 -14 -16 -95 -30 -180 -14 -85 -28 -167 -30
-182 -3 -16 -7 -43 -10 -60 -3 -18 -21 -121 -40 -228 -19 -107 -37 -211 -40
-230 -9 -57 -17 -104 -22 -125 -2 -11 -15 -81 -29 -155 -31 -169 -39 -201 -72
-275 -53 -123 -118 -176 -221 -179 -106 -4 -202 35 -371 152 -97 67 -359 244
-785 530 -132 89 -265 184 -296 211 -90 80 -112 153 -73 237 24 52 264 291
625 624 180 166 509 487 582 568 84 93 16 177 -87 107 -20 -14 -39 -25 -41
-25 -2 0 -23 -13 -47 -28 -24 -16 -72 -47 -108 -70 -36 -22 -70 -45 -75 -49
-6 -4 -253 -170 -550 -368 -297 -197 -542 -362 -545 -365 -3 -3 -50 -35 -106
-72 -218 -143 -331 -179 -499 -156 -74 10 -284 62 -400 98 -407 129 -466 158
-480 238 -15 87 53 137 370 275 664 288 651 282 720 312 17 8 47 21 67 29 885
382 1426 611 1743 738 110 43 214 85 230 93 151 66 471 174 550 185 70 10 153
2 184 -18z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,6 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="32" height="32" fill="black"/>
<circle cx="11.5" cy="16" r="7.5" fill="#D72E2B"/>
<circle cx="20.5" cy="16" r="7.5" fill="#EBA140"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M16 22.0006C17.8217 20.6323 19 18.4538 19 16.0001C19 13.5463 17.8217 11.3678 16 9.99951C14.1783 11.3678 13 13.5463 13 16.0001C13 18.4538 14.1783 20.6323 16 22.0006Z" fill="#ED692C"/>
</svg>

Before

Width:  |  Height:  |  Size: 481 B

View File

@ -1,16 +0,0 @@
<svg width="100" height="80" viewBox="0 0 100 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="100" height="80" fill="white"/>
<g clip-path="url(#clip0_510_6715)">
<path d="M31.558 29.0049V29.0148C31.5481 29.0148 28.4321 29.0049 27.6012 31.9824C26.8395 34.7126 24.6929 42.247 24.6336 42.4547H24.0401C24.0401 42.4547 21.844 34.7521 21.0725 31.9725C20.2415 28.995 17.1157 29.0049 17.1157 29.0049H10V51.651H17.119V38.2011H17.7125L21.8671 51.6509H26.8098L30.9645 38.2109H31.558V51.6509H38.6769V29.0049H31.558V29.0049ZM57.5641 29.0049C57.5641 29.0049 55.4769 29.1928 54.4976 31.3791L49.4559 42.4547H48.8624V29.0049H41.7435V51.651H48.4667C48.4667 51.651 50.6529 51.4532 51.6323 49.2769L56.575 38.2012H57.1685V51.651H64.2875V29.0049H57.5641ZM67.4528 39.2893V51.651H74.5718V44.4331H82.2843C85.6476 44.4331 88.4932 42.2866 89.5517 39.2926H67.4528V39.2893V39.2893Z" fill="#4DB45E"/>
<path d="M82.2875 29.0049H66.4537C67.2451 33.3178 70.4797 36.7767 74.6607 37.9044C75.6313 38.1673 76.6326 38.3004 77.6382 38.3002H89.8416C89.9504 37.7858 89.9999 37.2615 89.9999 36.7175C90 32.4572 86.5477 29.0049 82.2875 29.0049V29.0049Z" fill="url(#paint0_linear_510_6715)"/>
</g>
<defs>
<linearGradient id="paint0_linear_510_6715" x1="66.4537" y1="33.6525" x2="89.9999" y2="33.6525" gradientUnits="userSpaceOnUse">
<stop offset="0.3" stop-color="#00B4E6"/>
<stop offset="1" stop-color="#088CCB"/>
</linearGradient>
<clipPath id="clip0_510_6715">
<rect width="80" height="22.656" fill="white" transform="translate(10 29)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 496 KiB

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 KiB

View File

@ -1,16 +0,0 @@
#version 300 es
precision highp float;
in float alpha;
out vec4 fragColor;
uniform vec3 color;
void main() {
vec2 c = 2.0 * gl_PointCoord - 1.0;
if (dot(c, c) > 1.0) {
discard;
}
fragColor = vec4(color, alpha);
}

View File

@ -1,137 +0,0 @@
#version 300 es
precision highp float;
layout(location = 0) in vec2 inPosition;
layout(location = 1) in vec2 inVelocity;
layout(location = 2) in float inTime;
layout(location = 3) in float inDuration;
out vec2 outPosition;
out vec2 outVelocity;
out float outTime;
out float outDuration;
out float alpha;
uniform float reset;
uniform float time;
uniform float deltaTime;
uniform vec2 size;
uniform float r;
uniform float seed;
uniform float noiseScale;
uniform float noiseSpeed;
uniform float noiseMovement;
uniform float dampingMult;
uniform float forceMult;
uniform float velocityMult;
uniform float longevity;
uniform float maxVelocity;
float rand(vec2 n) {
return fract(sin(dot(n,vec2(12.9898,4.1414-seed*.42)))*43758.5453);
}
vec4 loop(vec4 p) {
p.xy = fract(p.xy / noiseScale) * noiseScale;
p.zw = fract(p.zw / noiseScale) * noiseScale;
return p;
}
vec3 loop(vec3 p) {
p.xy = fract(p.xy / noiseScale) * noiseScale;
return p;
}
float mod289(float x){return x-floor(x*(1./(289.+seed)))*(289.+seed);}
vec4 mod289(vec4 x){return x-floor(x*(1./(289.+seed)))*(289.0+seed);}
vec4 perm(vec4 x){return mod289(((x*34.)+1.)*x);}
float noise(vec3 p){
vec3 a = floor(p);
vec3 d = p - a;
d = d * d * (3. - 2. * d);
vec4 b = a.xxyy + vec4(0., 1., 0., 1.);
vec4 k1 = perm(loop(b.xyxy));
vec4 k2 = perm(loop(k1.xyxy + b.zzww));
vec4 c = k2 + a.zzzz;
vec4 k3 = perm(c);
vec4 k4 = perm(c + 1.0);
vec4 o3 = fract(k4 / 41.0) * d.z + fract(k3 / 41.0) * (1.0 - d.z);
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
return o4.y * d.y + o4.x * (1.0 - d.y);
}
vec3 grad(vec3 p) {
const vec2 e = vec2(.1, .0);
return vec3(
noise(loop(p + e.xyy)) - noise(loop(p - e.xyy)),
noise(loop(p + e.yxy)) - noise(loop(p - e.yxy)),
noise(loop(p + e.yyx)) - noise(loop(p - e.yyx))
) / (2.0 * e.x);
}
vec3 curlNoise(vec3 p) {
p.xy /= size;
p.x *= (size.x / size.y);
p.xy = fract(p.xy);
p.xy *= noiseScale;
const vec2 e = vec2(.01, .0);
return grad(loop(p)).yzx - vec3(
grad(loop(p + e.yxy)).z,
grad(loop(p + e.yyx)).x,
grad(loop(p + e.xyy)).y
);
}
void main() {
vec2 position = inPosition;
vec2 velocity = inVelocity;
float particleDuration = inDuration;
float particleTime = inTime + deltaTime * particleDuration / longevity;
if (reset > 0.) {
particleTime = rand(vec2(-94.3, 83.9) * vec2(gl_VertexID, gl_VertexID));
particleDuration = .5 + 2. * rand(vec2(gl_VertexID) + seed * 32.4);
position = size * vec2(
rand(vec2(42., -3.) * vec2(cos(float(gl_VertexID) - seed), gl_VertexID)),
rand(vec2(-3., 42.) * vec2(time * time, sin(float(gl_VertexID) + seed)))
);
velocity = vec2(0.);
} else if (particleTime >= 1.) {
particleTime = 0.0;
particleDuration = .5 + 2. * rand(vec2(gl_VertexID) + position);
velocity = vec2(0.);
}
float msz = min(size.x, size.y);
vec2 force = normalize(curlNoise(
vec3(
position + time * (noiseMovement / 100. * msz),
time * noiseSpeed + rand(position) * 2.5
)
).xy);
velocity += force * forceMult * deltaTime * msz * .1;
velocity *= dampingMult;
float vlen = length(velocity);
float maxVelocityPx = maxVelocity / 100. * msz;
if (vlen > maxVelocityPx) {
velocity = velocity / vlen * maxVelocityPx;
}
position += velocity * velocityMult * deltaTime;
position = fract(position / size) * size;
outPosition = position;
outVelocity = velocity;
outTime = particleTime;
outDuration = particleDuration;
gl_PointSize = r;
gl_Position = vec4((position / size * 2.0 - vec2(1.0)), 0.0, 1.0);
alpha = sin(particleTime * 3.14) * (.6 + .4 * rand(vec2(gl_VertexID)));
}
// @dkaraush

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,4 +0,0 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="32" height="32" fill="#1A1F71"/>
<path d="M12.3895 12.0138L9.04695 19.9782H6.85983L5.20917 13.6232C5.12664 13.2518 5.00284 13.0867 4.71398 12.9217C4.21878 12.6741 3.39345 12.3852 2.69193 12.2614L2.73319 12.0138H6.24083C6.69476 12.0138 7.10743 12.3027 7.18996 12.8391L8.05655 17.461L10.2024 12.0551H12.3895V12.0138ZM20.9317 17.3784C20.9317 15.2739 18.043 15.1501 18.043 14.2422C18.043 13.9533 18.3319 13.6645 18.9096 13.5819C19.1985 13.5407 20.0238 13.4994 20.9317 13.9533L21.3031 12.2614C20.8079 12.0963 20.1889 11.89 19.3635 11.89C17.3415 11.89 15.8972 12.9629 15.8972 14.5311C15.8972 15.6865 16.9288 16.3055 17.7129 16.6769C18.4969 17.0483 18.7858 17.2959 18.7858 17.6673C18.7858 18.2038 18.1668 18.4514 17.5478 18.4514C16.5162 18.4514 15.8972 18.1625 15.4432 17.9562L15.0718 19.6894C15.567 19.8957 16.4336 20.102 17.3415 20.102C19.4873 20.102 20.8904 19.0291 20.9317 17.3784ZM26.2963 19.9782H28.1945L26.5439 12.0138H24.7694C24.3568 12.0138 24.0266 12.2614 23.9028 12.5915L20.8079 19.9782H22.9537L23.3664 18.7815H26.0074L26.2963 19.9782ZM23.9854 17.1721L25.0583 14.2009L25.6773 17.1721H23.9854ZM15.3194 12.0138L13.6275 19.9782H11.5642L13.2561 12.0138H15.3194Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More