// ==UserScript==
// @name GosVon Marking for VK
// @namespace vk-metabot-user-js
// @description Подсветка служебных страниц вконтакте.
// @version 2.05
// @homepageURL https://vk.com/club187686148
// @include https://*vk.com/*
// @connect api.gosvon.net
// @updateURL https://api.gosvon.net/update/vk-metabot.meta.js
// @downloadURL https://api.gosvon.net/update/vk-metabot.user.js
// @grant GM_xmlhttpRequest
// @grant GM.xmlHttpRequest
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_deleteValue
// @run-at document-start
// ==/UserScript==
/******/ (() => { // webpackBootstrap
/******/ "use strict";
var __webpack_exports__ = {};
;// CONCATENATED MODULE: ./src/utils.ts
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
const http = GM_xmlhttpRequest || (GM && GM.xmlHttpRequest);
if (!http) {
throw new Error('Unable to get supported cross-origin XMLHttpRequest function.');
}
/* harmony default export */ const utils = ({
http(options) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve) => {
http({
url: options.url,
method: options.method || 'GET',
overrideMimeType: 'application/json; charset=windows-1251',
onload(response) {
return __awaiter(this, void 0, void 0, function* () {
resolve(response.responseText);
});
},
});
});
});
},
unsafeWindow,
setStorageValue: GM_setValue,
getStorageValue: GM_getValue,
deleteStorageValue: GM_deleteValue,
allParents(element) {
const parents = [element];
while (parents[parents.length - 1].parentElement) {
parents.push(parents[parents.length - 1].parentElement);
}
return parents.slice(1);
},
createLayoutFromString(template, vars = {}) {
const html = Object.entries(vars)
.reduce((acc, [key, value]) => acc.replace(new RegExp(`{{${key}}}`, 'g'), value), template);
const div = document.createElement('div');
div.innerHTML = html;
return div.children[0];
},
});
;// CONCATENATED MODULE: ./src/constants.ts
const VK_BOT_LIST_URL = 'http://api.gosvon.net/marking3/list';
const CONFIG_URL = 'http://api.gosvon.net/marking3/main';
;// CONCATENATED MODULE: ./src/fetchConfig.ts
var fetchConfig_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
function processRawConfig(rawConfig, userSettings) {
const types = rawConfig.types.map((rawTypeItem) => ({
id: rawTypeItem.id,
name: rawTypeItem.n,
serverColor: rawTypeItem.color,
customUserColor: userSettings.getCustomTypeColor(rawTypeItem.id),
shouldShowActions: Boolean(rawTypeItem.links),
}));
const marks = rawConfig.mark.map((rawMarkItem) => ({
id: rawMarkItem.id,
name: rawMarkItem.n,
}));
return {
botListVersion: String(rawConfig.timestamp),
types,
marks,
};
}
function fetchConfig(userSettings) {
return fetchConfig_awaiter(this, void 0, void 0, function* () {
let resultConfig;
try {
const responseText = yield utils.http({ url: CONFIG_URL });
resultConfig = processRawConfig(JSON.parse(responseText), userSettings);
utils.setStorageValue('botHighlighterSavedConfig', JSON.stringify(resultConfig));
}
catch (_a) {
//
}
if (!resultConfig) {
try {
resultConfig = JSON.parse(utils.getStorageValue('botHighlighterSavedConfig'));
// eslint-disable-next-line no-console
console.warn('GosVon: Использую кешированный конфиг');
}
catch (_b) {
//
}
}
if (!resultConfig) {
return null;
}
return resultConfig;
});
}
;// CONCATENATED MODULE: ./src/elementsFinderFactory.ts
function elementsFinderFactory() {
const mapSelectorHandlers = {};
let alreadyFoundElements = [];
setInterval(() => {
Object.entries(mapSelectorHandlers).forEach(([selector, handlers]) => {
const newFoundElements = [...document.querySelectorAll(selector)]
.filter((element) => !alreadyFoundElements.includes(element));
newFoundElements.forEach((element) => {
handlers.forEach((handler) => {
handler(element);
});
});
alreadyFoundElements = [
...alreadyFoundElements,
...newFoundElements,
];
});
}, 300);
function on(selector, foundHandler) {
if (!mapSelectorHandlers[selector]) {
mapSelectorHandlers[selector] = [];
}
mapSelectorHandlers[selector].push(foundHandler);
}
return {
on,
};
}
;// CONCATENATED MODULE: ./src/botListsFactory/index.ts
var botListsFactory_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
function botListsFactory(config, userSettings) {
let botList = [];
function fetchBotList() {
return botListsFactory_awaiter(this, void 0, void 0, function* () {
const responseText = yield utils.http({ url: VK_BOT_LIST_URL });
return JSON.parse(responseText);
});
}
function findBot(idOrNickname) {
const matchId = String(idOrNickname).match(/^(id)?(\d{6,})$/);
const id = matchId && Number(matchId[2]);
let foundBot = null;
if (!id) {
foundBot = botList.find((bot) => bot.nickname === idOrNickname);
}
else {
foundBot = botList.find((bot) => bot.id === id);
}
if (!foundBot) {
return null;
}
if (foundBot.mark) {
if (userSettings.checkIsMarkDisabled(foundBot.mark.id)) {
return null;
}
}
if (userSettings.checkIsTypeDisabled(foundBot.type.id)) {
return null;
}
return foundBot;
}
function fillLists({ onBotTypeFound, onBotMarkFound, }) {
return botListsFactory_awaiter(this, void 0, void 0, function* () {
const localBotListVersion = utils.getStorageValue('botHighlighterBotListVersion2') || 0;
let rawBotList = [];
if (config.botListVersion === localBotListVersion) {
rawBotList = JSON.parse(utils.getStorageValue('botHighlighterSavedBotList') || '[]');
}
else {
rawBotList = yield fetchBotList();
utils.setStorageValue('botHighlighterSavedBotList', JSON.stringify(rawBotList));
utils.setStorageValue('botHighlighterBotListVersion2', config.botListVersion);
}
const bots = rawBotList.map((rawBot) => {
onBotTypeFound(Number(rawBot.t));
if (rawBot.m) {
onBotMarkFound(rawBot.m);
}
const mark = config.marks.find((markItem) => markItem.id === rawBot.m);
const type = config.types.find((typeItem) => typeItem.id === Number(rawBot.t));
return {
id: Number(rawBot.i),
nickname: rawBot.n,
mark,
type,
};
});
botList = bots;
});
}
return {
fillLists,
findBot,
};
}
;// CONCATENATED MODULE: ./node_modules/raw-loader/dist/cjs.js!./src/layouts/commonActions.html
/* harmony default export */ const commonActions = ("\n \n Комментарии\n \n \n Карточка\n \n\n");
;// CONCATENATED MODULE: ./src/hightlighters/onReplyFound.ts
function onReplyFound(replyEl, botList) {
var _a;
const authorEl = replyEl.querySelector('a.author');
if (!authorEl) {
return;
}
const userID = authorEl.getAttribute('data-from-id');
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const replyContentEl = replyEl.querySelector('.reply_content');
const replyAuthorEl = replyEl.querySelector('.reply_author');
replyContentEl.style.background = bot.type.customUserColor || bot.type.serverColor;
replyContentEl.style.borderLeft = '3px solid rgba(255,50,50,0.3)';
replyContentEl.style.paddingLeft = '3px';
const marksEl = utils.createLayoutFromString(`
`);
authorEl.after(marksEl);
const markEl = utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`);
marksEl.appendChild(markEl);
replyAuthorEl.append(utils.createLayoutFromString(commonActions, { userID }));
}
;// CONCATENATED MODULE: ./node_modules/raw-loader/dist/cjs.js!./src/layouts/commonMarksContainer.html
/* harmony default export */ const commonMarksContainer = ("
\n");
;// CONCATENATED MODULE: ./src/hightlighters/onPostFound.ts
function onPostFound(postEl, botList) {
var _a;
const userID = postEl.querySelector('a.author').getAttribute('data-from-id');
if (!userID) {
return;
}
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const postHeaderEl = postEl.querySelector('.PostHeader');
const postAuthorEl = postEl.querySelector('.post_author');
postHeaderEl.style.background = bot.type.customUserColor || bot.type.serverColor;
postHeaderEl.style.borderLeft = '3px solid rgba(255,50,50,0.3)';
postHeaderEl.style.paddingLeft = '3px';
const authorEl = postEl.querySelector('.author');
const marksEl = utils.createLayoutFromString(commonMarksContainer);
authorEl.after(marksEl);
const markEl = utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`);
marksEl.appendChild(markEl);
postAuthorEl.append(utils.createLayoutFromString(commonActions, { userID }));
}
;// CONCATENATED MODULE: ./src/hightlighters/onFanFound.ts
function onFanFound(fanEl, botList) {
var _a;
const userID = fanEl.getAttribute('data-id');
const bot = botList.findBot(userID);
if (!bot) {
return;
}
fanEl.style.background = bot.type.customUserColor || bot.type.serverColor;
fanEl.style.borderLeft = '3px solid rgba(255,50,50,0.3)';
fanEl.style.paddingLeft = '6px';
fanEl.style.position = 'relative';
const markEl = utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`);
fanEl.appendChild(markEl);
fanEl.append(utils.createLayoutFromString(`
Комм.
Карт.
`));
}
;// CONCATENATED MODULE: ./src/hightlighters/onLikeFound.ts
function onLikeFound(likeEl, botList) {
const userID = likeEl.getAttribute('href').substring(1);
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const userAvatarEl = likeEl.querySelector('.like_tt_image');
userAvatarEl.style.opacity = '0.5';
likeEl.style.borderRadius = '0';
likeEl.style.background = bot.type.customUserColor || bot.type.serverColor;
}
;// CONCATENATED MODULE: ./src/hightlighters/onProfileFound.ts
function onProfileFound(_, botList) {
var _a;
const abuseActionEl = document.querySelector('.PageActionCell[data-task-click="ProfileAction/abuse"]');
if (!abuseActionEl) {
return;
}
const userID = abuseActionEl.getAttribute('data-user_id');
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const pagePhotoEl = document.querySelector('.page_photo');
pagePhotoEl.style.background = bot.type.customUserColor || bot.type.serverColor;
const pageNameEl = document.querySelector('.page_name');
pageNameEl.insertAdjacentElement('afterend', utils.createLayoutFromString(commonActions, { userID }));
const marksEl = utils.createLayoutFromString(commonMarksContainer);
pageNameEl.after(marksEl);
const markEl = utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`);
marksEl.appendChild(markEl);
}
;// CONCATENATED MODULE: ./src/hightlighters/onFoundMobilePost.ts
function onFoundMobilePost(mobilePostEl, botList) {
const wiHeadLink = mobilePostEl.querySelector('.wi_head a');
if (!wiHeadLink) {
return;
}
const userID = wiHeadLink.className.substring(4);
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const postHeaderEl = mobilePostEl.querySelector('.wi_head');
postHeaderEl.style.background = bot.type.customUserColor || bot.type.serverColor;
postHeaderEl.style.borderLeft = '3px solid rgba(255,50,50,0.3)';
postHeaderEl.style.paddingLeft = '3px';
postHeaderEl.append(utils.createLayoutFromString(commonActions, { userID }));
}
;// CONCATENATED MODULE: ./src/hightlighters/onFoundMobileProfile.ts
function onFoundMobileProfile(ownerPanelEl, botList) {
var _a;
const reportEl = document.querySelector('.ContextMenu__listItem a[href*=reports]');
if (!reportEl) {
return;
}
const userID = reportEl.getAttribute('href').match(/user_id=(\d+)/)[1];
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const ppContEl = ownerPanelEl.querySelector('.pp_cont');
const opHeaderEl = ppContEl.querySelector('.op_header');
const marksEl = utils.createLayoutFromString(commonMarksContainer);
opHeaderEl.after(marksEl);
const markEl = utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`);
marksEl.appendChild(markEl);
ppContEl.style.background = bot.type.customUserColor || bot.type.serverColor;
ppContEl.append(utils.createLayoutFromString(commonActions, { userID }));
}
;// CONCATENATED MODULE: ./src/hightlighters/onFoundMobileReply.ts
function onFoundMobileReply(replyEl, botList) {
var _a;
const replyUserNameEl = replyEl.querySelector('.ReplyItem__name');
if (!replyUserNameEl) {
return;
}
const userID = replyUserNameEl.getAttribute('href').substring(1);
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const marksEl = utils.createLayoutFromString(`
`);
replyUserNameEl.after(marksEl);
const markEl = utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`);
marksEl.appendChild(markEl);
marksEl.appendChild(utils.createLayoutFromString(commonActions, { userID }));
const replyContentEl = replyEl.querySelector('.ReplyItem__content');
replyContentEl.style.background = bot.type.customUserColor || bot.type.serverColor;
replyContentEl.style.borderLeft = '3px solid rgba(255,50,50,0.3)';
replyContentEl.style.paddingLeft = '3px';
}
;// CONCATENATED MODULE: ./src/hightlighters/onFoundMobileFan.ts
function onFoundMobileFan(fanEl, botList) {
var _a;
const userID = fanEl.className.match(/_u(\d+)/)[1];
const bot = botList.findBot(userID);
if (!bot) {
return;
}
fanEl.style.background = bot.type.customUserColor || bot.type.serverColor;
fanEl.style.borderLeft = '3px solid rgba(255,50,50,0.3)';
fanEl.style.paddingLeft = '3px';
fanEl.style.position = 'relative';
fanEl.appendChild(utils.createLayoutFromString(commonActions, { userID }));
fanEl.appendChild(utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`));
}
;// CONCATENATED MODULE: ./src/userSettingsFactory/migrate.ts
function migrate() {
utils.deleteStorageValue('botHighlighterSettings');
utils.deleteStorageValue('botHighlighterSettings_1');
return 'botHighlighterSettings_2';
}
;// CONCATENATED MODULE: ./src/userSettingsFactory/index.ts
const STORE_KEY = migrate();
function userSettingsFactory() {
const settings = utils.getStorageValue(STORE_KEY) || {
disabledMarksIds: [],
disabledTypesIds: [],
customTypesColors: {},
};
function saveSettings() {
utils.setStorageValue(STORE_KEY, settings);
}
function disableMark(markId) {
settings.disabledMarksIds = [...settings.disabledMarksIds, markId];
saveSettings();
}
function disableType(typeId) {
settings.disabledTypesIds = [...settings.disabledTypesIds, typeId];
saveSettings();
}
function enableMark(markId) {
settings.disabledMarksIds = settings.disabledMarksIds.filter((markIdItem) => markIdItem !== markId);
saveSettings();
}
function enableType(typeId) {
settings.disabledTypesIds = settings.disabledTypesIds.filter((typeIdItem) => typeIdItem !== typeId);
saveSettings();
}
function checkIsMarkDisabled(markId) {
return settings.disabledMarksIds.includes(markId);
}
function checkIsTypeDisabled(typeId) {
return settings.disabledTypesIds.includes(typeId);
}
function getCustomTypeColor(typeId) {
return settings.customTypesColors[typeId];
}
function setCustomTypeColor(typeId, color) {
settings.customTypesColors[typeId] = color;
saveSettings();
}
function removeCustomTypeColor(typeId) {
delete settings.customTypesColors[typeId];
saveSettings();
}
return {
enableMark,
enableType,
disableMark,
disableType,
checkIsMarkDisabled,
checkIsTypeDisabled,
getCustomTypeColor,
setCustomTypeColor,
removeCustomTypeColor,
};
}
;// CONCATENATED MODULE: ./src/botCounterFactory.ts
function botCounterFactory() {
const counts = {
types: {},
marks: {},
};
function fillCounters(config) {
config.types.forEach((botType) => {
if (!counts.types[botType.id]) {
counts.types[botType.id] = 0;
}
counts.types[botType.id] += 1;
});
config.marks.forEach((botMark) => {
if (!counts.marks[botMark.id]) {
counts.marks[botMark.id] = 0;
}
counts.marks[botMark.id] += 1;
});
}
function incrementBotCountByType(typeId) {
counts.types[typeId] += 1;
}
function incrementBotCountByMark(markId) {
counts.marks[markId] += 1;
}
function getCounts() {
return counts;
}
return {
fillCounters,
incrementBotCountByType,
incrementBotCountByMark,
getCounts,
};
}
;// CONCATENATED MODULE: ./src/hightlighters/onMentionTTFound.ts
function onMentionTTFound(mentionEl, botList) {
var _a;
const mentionTTName = mentionEl.querySelector('.mention_tt_name');
const userID = mentionTTName.getAttribute('href').substring(1);
const bot = botList.findBot(userID);
if (!bot) {
return;
}
const mentionTTTitle = mentionEl.querySelector('.mention_tt_title');
mentionTTTitle.style.background = bot.type.customUserColor || bot.type.serverColor;
const markEl = utils.createLayoutFromString(`
(${((_a = bot.mark) === null || _a === void 0 ? void 0 : _a.name) || bot.type.name})
`);
mentionTTTitle.after(markEl);
markEl.after(utils.createLayoutFromString(commonActions, { userID }));
}
;// CONCATENATED MODULE: ./src/injectSettingsFunctions.ts
function createBotsSettingsModal(userSettings) {
utils.unsafeWindow.openVkBotsSettings = () => {
const modal = document.querySelector('.VkBotsSettingsModal');
modal.style.display = 'block';
};
utils.unsafeWindow.closeVkBotSettings = () => {
const modal = document.querySelector('.VkBotsSettingsModal');
modal.style.display = 'none';
};
utils.unsafeWindow.setCustomTypeColor = (typeId, color) => {
userSettings.setCustomTypeColor(typeId, color);
};
utils.unsafeWindow.removeCustomTypeColor = (typeId) => {
userSettings.removeCustomTypeColor(typeId);
};
utils.unsafeWindow.changeVkBotFilterEnabledState = (filterId, isEnabled, filterType) => {
if (filterType === 'mark') {
if (isEnabled) {
userSettings.enableMark(filterId);
}
else {
userSettings.disableMark(filterId);
}
}
if (filterType === 'type') {
const typeId = Number(filterId);
if (isEnabled) {
userSettings.enableType(typeId);
}
else {
userSettings.disableType(typeId);
}
}
};
}
;// CONCATENATED MODULE: ./node_modules/raw-loader/dist/cjs.js!./src/addVkBotOptionsInMobileMenu/settingsModal.template.html
/* harmony default export */ const settingsModal_template = ("\n
\n
\n
\n ×\n
\n\n {{checkboxes}}\n
\n
\n\n \n
\n");
;// CONCATENATED MODULE: ./src/utils/splitMarksToGroups.ts
function getMarksIdsUniquePrefixes(config) {
return [
...new Set(config.marks.map((markItem) => markItem.id.substring(0, 2))),
];
}
function splitMarksToGroups(config) {
const marksIdsUniquePrefixes = getMarksIdsUniquePrefixes(config);
return marksIdsUniquePrefixes
.map((idPrefixItem) => config.marks.filter((markItem) => markItem.id.substring(0, 2) === idPrefixItem));
}
;// CONCATENATED MODULE: ./src/addVkBotOptionsInMobileMenu/createMarksCheckboxes.ts
function createMarksCheckboxes(config, userSettings, botCounter) {
const marksGroups = splitMarksToGroups(config);
const botCountsByMarkId = botCounter.getCounts().marks;
return marksGroups.reduce((groupsAcc, marks) => {
const marksGroupCheckboxes = marks.reduce((acc, mark) => {
const isEnabled = !userSettings.checkIsMarkDisabled(mark.id);
return `
${acc}
`;
}, '');
return `
${groupsAcc}
${marksGroupCheckboxes}
`;
}, '');
}
;// CONCATENATED MODULE: ./src/addVkBotOptionsInMobileMenu/createTypesCheckboxes.ts
function createTypesCheckboxes(config, userSettings, botCounter) {
return config.types.reduce((acc, type) => {
const isEnabled = !userSettings.checkIsTypeDisabled(type.id);
const botCountsByTypeId = botCounter.getCounts().types;
return `
${acc}
`;
}, '');
}
;// CONCATENATED MODULE: ./src/addVkBotOptionsInMobileMenu/createCheckboxes.ts
function createCheckboxes(config, userSettings, botCounter) {
const typesCheckboxes = createTypesCheckboxes(config, userSettings, botCounter);
const marksCheckboxes = createMarksCheckboxes(config, userSettings, botCounter);
return `
${typesCheckboxes}
${marksCheckboxes}
`;
}
;// CONCATENATED MODULE: ./src/addVkBotOptionsInMobileMenu/index.ts
function addVkBotOptionsInDesktopMenu(config, userSettings, botCounter) {
const existingMenuItems = [...document.querySelectorAll('.SettingsMenu__item')];
const lastExistingMenuItem = existingMenuItems[existingMenuItems.length - 1];
lastExistingMenuItem.after(utils.createLayoutFromString(`
`));
document.body.appendChild(utils.createLayoutFromString(settingsModal_template, {
checkboxes: createCheckboxes(config, userSettings, botCounter),
}));
}
;// CONCATENATED MODULE: ./node_modules/raw-loader/dist/cjs.js!./src/addVkBotOptionsInDesktopMenu/settingsModal.template.html
/* harmony default export */ const addVkBotOptionsInDesktopMenu_settingsModal_template = ("\n");
;// CONCATENATED MODULE: ./src/addVkBotOptionsInDesktopMenu/createMarksCheckboxes.ts
function createMarksCheckboxes_createMarksCheckboxes(config, userSettings, botCounter) {
const marksGroups = splitMarksToGroups(config);
const botCountsByMarkId = botCounter.getCounts().marks;
return marksGroups.reduce((groupsAcc, marks) => {
const marksGroupCheckboxes = marks.reduce((acc, mark) => {
const isEnabled = !userSettings.checkIsMarkDisabled(mark.id);
return `
${acc}
${mark.name} (${botCountsByMarkId[mark.id]})
`;
}, '');
return `
${groupsAcc}
${marksGroupCheckboxes}
`;
}, '');
}
;// CONCATENATED MODULE: ./src/addVkBotOptionsInDesktopMenu/createTypesCheckboxes.ts
function createTypesCheckboxes_createTypesCheckboxes(config, userSettings, botCounter) {
return config.types.reduce((acc, type) => {
const isEnabled = !userSettings.checkIsTypeDisabled(type.id);
const botCountsByTypeId = botCounter.getCounts().types;
return `
${acc}
`;
}, '');
}
;// CONCATENATED MODULE: ./src/addVkBotOptionsInDesktopMenu/index.ts
function addVkBotOptionsInDesktopMenu_addVkBotOptionsInDesktopMenu(config, userSettings, botCounter) {
const existingMenuItems = [...document.querySelectorAll('.top_profile_mrow')];
const lastExistingMenuItem = existingMenuItems[existingMenuItems.length - 2];
lastExistingMenuItem.after(utils.createLayoutFromString(`
Gosvon
`));
document.body.appendChild(utils.createLayoutFromString(addVkBotOptionsInDesktopMenu_settingsModal_template, {
marksCheckboxes: createMarksCheckboxes_createMarksCheckboxes(config, userSettings, botCounter),
typesCheckboxes: createTypesCheckboxes_createTypesCheckboxes(config, userSettings, botCounter),
}));
}
;// CONCATENATED MODULE: ./src/index.ts
var src_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
const userSettings = userSettingsFactory();
const botCounter = botCounterFactory();
function start() {
return src_awaiter(this, void 0, void 0, function* () {
const config = yield fetchConfig(userSettings);
if (!config) {
// eslint-disable-next-line no-console
console.error('GosVon: Не могу получить конфигурацию');
return;
}
const botList = botListsFactory(config, userSettings);
botCounter.fillCounters(config);
yield botList.fillLists({
onBotTypeFound: botCounter.incrementBotCountByType,
onBotMarkFound: botCounter.incrementBotCountByMark,
});
const finder = elementsFinderFactory();
createBotsSettingsModal(userSettings);
finder.on('#top_profile_menu', () => addVkBotOptionsInDesktopMenu_addVkBotOptionsInDesktopMenu(config, userSettings, botCounter));
finder.on('.SettingsMenu', () => addVkBotOptionsInDesktopMenu(config, userSettings, botCounter));
finder.on('.reply', (el) => onReplyFound(el, botList));
finder.on('.post', (el) => onPostFound(el, botList));
finder.on('.fans_fan_row', (el) => onFanFound(el, botList));
finder.on('.like_tt_owner', (el) => onLikeFound(el, botList));
finder.on('#profile', (el) => onProfileFound(el, botList));
finder.on('.mention_tt', (el) => onMentionTTFound(el, botList));
finder.on('.wall_item', (el) => onFoundMobilePost(el, botList));
finder.on('.owner_panel.profile_panel', (el) => onFoundMobileProfile(el, botList));
finder.on('.ReplyItem', (el) => onFoundMobileReply(el, botList));
finder.on('.pcont .inline_item', (el) => onFoundMobileFan(el, botList));
});
}
start();
/******/ })()
;