Sanitized public release v1.0.3

Source-Tag: v1.0.3
Manifest-SHA256: b7b09bf48f9e092ed8ad82f99c0319d6c3837d0a1549bd0cc4a374276c0f3896
This commit is contained in:
NIA Sanitized Release Publisher
2026-07-20 22:35:36 +00:00
commit 7141326ea0
41 changed files with 6397 additions and 0 deletions
+102
View File
@@ -0,0 +1,102 @@
var neoColourOptions = [
{name: 'weechat.color.chat_nick_self', label: 'Your nickname', variable: '--neorelay-nick-self'},
{name: 'weechat.color.chat_nick', label: 'Regular nickname fallback', variable: '--neorelay-nick'},
{name: 'weechat.color.chat_nick_other', label: 'Other private nicknames', variable: '--neorelay-nick-other'},
{name: 'weechat.color.nicklist_away', label: 'Away / AFK', variable: '--neorelay-nick-away'},
{name: 'weechat.color.chat_highlight', label: 'Highlight foreground', variable: '--neorelay-chat-highlight'},
{name: 'weechat.color.chat_highlight_bg', label: 'Highlight background', variable: '--neorelay-chat-highlight-bg'},
{name: 'weechat.color.chat_time', label: 'Timestamp', variable: '--neorelay-chat-time'}
];
var neoPrefixOption = 'irc.color.nick_prefixes';
var neoPaletteOption = 'weechat.color.chat_nick_colors';
$scope.neoWeeChatColours = {loading: false, status: '', items: neoColourOptions, rows: {}, values: {}, prefixes: {}, prefixRaw: '', palettePreview: []};
$scope.neoWeeChatColourPreview = neoResolveWeeChatColour;
$scope.updateNeoPalettePreview = function() {
$scope.neoWeeChatColours.palettePreview = String($scope.neoWeeChatColours.values[neoPaletteOption] || '').split(',').map(function(value) { return value.trim(); }).filter(neoValidWeeChatColour);
};
function neoParsePrefixes(value) {
var result = {};
String(value || '').split(';').forEach(function(entry) {
var match = entry.match(/^([A-Za-z*]):([^;]+)$/);
if (match) result[match[1]] = match[2].replace(/^[*!/_|]+/, '');
});
return result;
}
function neoApplyRelayColours() {
neoColourOptions.forEach(function(item) {
var value = $scope.neoWeeChatColours.values[item.name];
document.documentElement.style.setProperty(item.variable, neoResolveWeeChatColour(value));
});
var prefixes = $scope.neoWeeChatColours.prefixes;
document.documentElement.style.setProperty('--neorelay-nick-op', neoResolveWeeChatColour(prefixes.o || prefixes.a || prefixes.q || prefixes['*']));
document.documentElement.style.setProperty('--neorelay-nick-halfop', neoResolveWeeChatColour(prefixes.h || prefixes['*']));
document.documentElement.style.setProperty('--neorelay-nick-voice', neoResolveWeeChatColour(prefixes.v || prefixes['*']));
}
$scope.loadNeoWeeChatColours = function() {
if (!$rootScope.connected || $scope.neoWeeChatColours.loading) return;
$scope.neoWeeChatColours.loading = true;
$scope.neoWeeChatColours.status = 'Loading WeeChat colours...';
var names = neoColourOptions.map(function(item) { return item.name; }).concat([neoPrefixOption, neoPaletteOption]);
Promise.all(names.map(function(name) { return connection.requestInfolist('option', 0, name); })).then(function(results) {
$scope.$applyAsync(function() {
results.forEach(function(rows) {
if (!rows[0]) return;
var row = neoNormalizeOption(rows[0]);
neoLoadedOptions[row.name] = row;
$scope.neoWeeChatColours.rows[row.name] = row;
$scope.neoWeeChatColours.values[row.name] = row.value;
});
$scope.neoWeeChatColours.prefixRaw = $scope.neoWeeChatColours.values[neoPrefixOption] || '';
$scope.neoWeeChatColours.prefixes = neoParsePrefixes($scope.neoWeeChatColours.prefixRaw);
$scope.updateNeoPalettePreview();
neoApplyRelayColours();
$scope.neoWeeChatColours.loading = false;
$scope.neoWeeChatColours.status = 'Loaded from WeeChat.';
});
}, function() {
$scope.$applyAsync(function() {
$scope.neoWeeChatColours.loading = false;
$scope.neoWeeChatColours.status = 'Unable to load WeeChat colours.';
});
});
};
$scope.setNeoWeeChatColour = function(name) {
var row = $scope.neoWeeChatColours.rows[name];
var value = $scope.neoWeeChatColours.values[name];
neoWriteOption(row, value, function(updated) {
$scope.neoWeeChatColours.values[name] = updated.value;
if (name === neoPaletteOption) $scope.updateNeoPalettePreview();
neoApplyRelayColours();
$scope.neoWeeChatColours.status = 'Saved ' + name + ' to WeeChat.';
}, function(message) { $scope.neoWeeChatColours.status = message; });
};
$scope.setNeoNickPrefixColour = function(mode) {
var row = $scope.neoWeeChatColours.rows[neoPrefixOption];
if (!row || !neoValidWeeChatColour($scope.neoWeeChatColours.prefixes[mode])) return;
var found = false;
var entries = String($scope.neoWeeChatColours.prefixRaw || '').split(';').filter(Boolean).map(function(entry) {
if (entry.slice(0, 2) === mode + ':') {
found = true;
return mode + ':' + $scope.neoWeeChatColours.prefixes[mode];
}
return entry;
});
if (!found) entries.push(mode + ':' + $scope.neoWeeChatColours.prefixes[mode]);
var value = entries.join(';');
neoWriteOption(row, value, function(updated) {
$scope.neoWeeChatColours.prefixRaw = updated.value;
$scope.neoWeeChatColours.values[neoPrefixOption] = updated.value;
$scope.neoWeeChatColours.prefixes = neoParsePrefixes(updated.value);
neoApplyRelayColours();
$scope.neoWeeChatColours.status = 'Saved IRC prefix colours to WeeChat.';
}, function(message) { $scope.neoWeeChatColours.status = message; });
};
$scope.$watch(function() { return $rootScope.connected; }, function(connected) {
if (connected) $timeout($scope.loadNeoWeeChatColours, 250);
});