orcas-angular 1.0.6 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/orcas-angular.mjs +76 -63
- package/fesm2022/orcas-angular.mjs.map +1 -1
- package/localization/README.md +4 -3
- package/package.json +1 -1
- package/styles.css +170 -0
- package/types/orcas-angular.d.ts +3 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, computed,
|
|
3
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Injectable, computed, signal, Pipe, InjectionToken, HostListener, Directive, inject, effect, input, booleanAttribute, output, ViewChild, Component } from '@angular/core';
|
|
4
3
|
import * as i1 from '@angular/router';
|
|
5
4
|
import { NavigationEnd } from '@angular/router';
|
|
6
5
|
import * as i2 from '@angular/common';
|
|
7
6
|
import { CommonModule } from '@angular/common';
|
|
7
|
+
import { HttpClient } from '@angular/common/http';
|
|
8
8
|
import { lastValueFrom } from 'rxjs';
|
|
9
9
|
|
|
10
10
|
class Async {
|
|
@@ -148,20 +148,19 @@ class LocalizationService {
|
|
|
148
148
|
loaded = false;
|
|
149
149
|
$language;
|
|
150
150
|
$currentLang = computed(() => this.$language(), ...(ngDevMode ? [{ debugName: "$currentLang" }] : []));
|
|
151
|
-
http = inject(HttpClient);
|
|
152
151
|
constructor() {
|
|
153
152
|
this.$language = signal(this.getStoredLanguage(), ...(ngDevMode ? [{ debugName: "$language" }] : []));
|
|
154
153
|
}
|
|
155
|
-
async init(
|
|
154
|
+
async init(translationsJson = '{}', defaultLanguage = 'en', storageKey = 'orcas-language') {
|
|
156
155
|
this.defaultLanguage = defaultLanguage;
|
|
157
156
|
this.storageKey = storageKey;
|
|
158
157
|
this.$language.set(this.getStoredLanguage());
|
|
159
158
|
try {
|
|
160
|
-
this.translations =
|
|
159
|
+
this.translations = JSON.parse(translationsJson);
|
|
161
160
|
this.loaded = true;
|
|
162
161
|
}
|
|
163
162
|
catch (err) {
|
|
164
|
-
console.error('Failed to
|
|
163
|
+
console.error('Failed to parse translations:', err);
|
|
165
164
|
}
|
|
166
165
|
}
|
|
167
166
|
getLanguage() {
|
|
@@ -1250,29 +1249,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1250
1249
|
|
|
1251
1250
|
class CapacitorFilesService extends FilesService {
|
|
1252
1251
|
static isSupported() {
|
|
1253
|
-
|
|
1254
|
-
|
|
1252
|
+
try {
|
|
1253
|
+
return !!window.Capacitor?.isNativePlatform();
|
|
1254
|
+
}
|
|
1255
|
+
catch {
|
|
1256
|
+
return false;
|
|
1257
|
+
}
|
|
1255
1258
|
}
|
|
1256
1259
|
async init() {
|
|
1257
|
-
|
|
1260
|
+
// No special initialization needed for Capacitor Filesystem
|
|
1258
1261
|
}
|
|
1259
1262
|
async joinStoragePath(filePath) {
|
|
1260
|
-
|
|
1263
|
+
const { Filesystem, Directory } = await import('@capacitor/filesystem');
|
|
1264
|
+
const result = await Filesystem.getUri({ path: filePath, directory: Directory.Data });
|
|
1265
|
+
return result.uri;
|
|
1261
1266
|
}
|
|
1262
1267
|
async hasInStorage(filePath) {
|
|
1263
|
-
|
|
1268
|
+
try {
|
|
1269
|
+
const { Filesystem, Directory } = await import('@capacitor/filesystem');
|
|
1270
|
+
await Filesystem.stat({ path: filePath, directory: Directory.Data });
|
|
1271
|
+
return true;
|
|
1272
|
+
}
|
|
1273
|
+
catch {
|
|
1274
|
+
return false;
|
|
1275
|
+
}
|
|
1264
1276
|
}
|
|
1265
1277
|
async readFromStorage(filePath) {
|
|
1266
|
-
|
|
1278
|
+
const { Filesystem, Directory, Encoding } = await import('@capacitor/filesystem');
|
|
1279
|
+
const result = await Filesystem.readFile({
|
|
1280
|
+
path: filePath,
|
|
1281
|
+
directory: Directory.Data,
|
|
1282
|
+
encoding: Encoding.UTF8
|
|
1283
|
+
});
|
|
1284
|
+
return result.data;
|
|
1267
1285
|
}
|
|
1268
1286
|
async writeToStorage(filePath, data) {
|
|
1269
|
-
|
|
1287
|
+
const { Filesystem, Directory, Encoding } = await import('@capacitor/filesystem');
|
|
1288
|
+
await Filesystem.writeFile({
|
|
1289
|
+
path: filePath,
|
|
1290
|
+
data,
|
|
1291
|
+
directory: Directory.Data,
|
|
1292
|
+
encoding: Encoding.UTF8,
|
|
1293
|
+
recursive: true
|
|
1294
|
+
});
|
|
1270
1295
|
}
|
|
1271
1296
|
async hasInProject(filePath) {
|
|
1272
|
-
|
|
1297
|
+
try {
|
|
1298
|
+
const response = await fetch(filePath, { method: 'HEAD' });
|
|
1299
|
+
return response.ok;
|
|
1300
|
+
}
|
|
1301
|
+
catch {
|
|
1302
|
+
return false;
|
|
1303
|
+
}
|
|
1273
1304
|
}
|
|
1274
1305
|
async readFromProject(filePath) {
|
|
1275
|
-
|
|
1306
|
+
const response = await fetch(filePath);
|
|
1307
|
+
if (!response.ok) {
|
|
1308
|
+
throw new Error(`Failed to read project file: ${filePath} (${response.status})`);
|
|
1309
|
+
}
|
|
1310
|
+
return await response.text();
|
|
1276
1311
|
}
|
|
1277
1312
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CapacitorFilesService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
1278
1313
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CapacitorFilesService });
|
|
@@ -1415,16 +1450,12 @@ class ContextMenuComponent {
|
|
|
1415
1450
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContextMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1416
1451
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContextMenuComponent, isStandalone: true, selector: "context-menu", inputs: { $isSubmenu: { classPropertyName: "$isSubmenu", publicName: "$isSubmenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { close: "close" }, host: { listeners: { "document:mousedown": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: `
|
|
1417
1452
|
@if ($isVisible() || $isSubmenu()) {
|
|
1418
|
-
<div
|
|
1453
|
+
<div
|
|
1419
1454
|
#container
|
|
1420
|
-
|
|
1421
|
-
[class.
|
|
1422
|
-
[
|
|
1423
|
-
[
|
|
1424
|
-
[class.ml-[-2px]]="$isSubmenu()"
|
|
1425
|
-
class="bg-white dark:bg-[#2a2a2a] border border-light-border dark:border-dark-border rounded shadow-lg z-50 min-w-[200px] text-light-text-primary dark:text-dark-text-primary py-1"
|
|
1426
|
-
[style.left.px]="!$isSubmenu() ? $x() : null"
|
|
1427
|
-
[style.top.px]="!$isSubmenu() ? $y() : null"
|
|
1455
|
+
class="oa-menu"
|
|
1456
|
+
[class.oa-menu--fixed]="!$isSubmenu()"
|
|
1457
|
+
[style.left.px]="!$isSubmenu() ? $x() : null"
|
|
1458
|
+
[style.top.px]="!$isSubmenu() ? $y() : null"
|
|
1428
1459
|
[style.visibility]="$isMeasuring() ? 'hidden' : 'visible'"
|
|
1429
1460
|
(click)="$event.stopPropagation()">
|
|
1430
1461
|
<ng-content></ng-content>
|
|
@@ -1440,16 +1471,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1440
1471
|
imports: [CommonModule],
|
|
1441
1472
|
template: `
|
|
1442
1473
|
@if ($isVisible() || $isSubmenu()) {
|
|
1443
|
-
<div
|
|
1474
|
+
<div
|
|
1444
1475
|
#container
|
|
1445
|
-
|
|
1446
|
-
[class.
|
|
1447
|
-
[
|
|
1448
|
-
[
|
|
1449
|
-
[class.ml-[-2px]]="$isSubmenu()"
|
|
1450
|
-
class="bg-white dark:bg-[#2a2a2a] border border-light-border dark:border-dark-border rounded shadow-lg z-50 min-w-[200px] text-light-text-primary dark:text-dark-text-primary py-1"
|
|
1451
|
-
[style.left.px]="!$isSubmenu() ? $x() : null"
|
|
1452
|
-
[style.top.px]="!$isSubmenu() ? $y() : null"
|
|
1476
|
+
class="oa-menu"
|
|
1477
|
+
[class.oa-menu--fixed]="!$isSubmenu()"
|
|
1478
|
+
[style.left.px]="!$isSubmenu() ? $x() : null"
|
|
1479
|
+
[style.top.px]="!$isSubmenu() ? $y() : null"
|
|
1453
1480
|
[style.visibility]="$isMeasuring() ? 'hidden' : 'visible'"
|
|
1454
1481
|
(click)="$event.stopPropagation()">
|
|
1455
1482
|
<ng-content></ng-content>
|
|
@@ -1468,8 +1495,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1468
1495
|
class ContextHeaderComponent {
|
|
1469
1496
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContextHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1470
1497
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: ContextHeaderComponent, isStandalone: true, selector: "context-header", ngImport: i0, template: `
|
|
1471
|
-
<div
|
|
1472
|
-
class="px-3 py-1.5 text-xs font-semibold text-light-text-secondary dark:text-dark-text-secondary truncate border-b border-light-border dark:border-dark-border mb-1">
|
|
1498
|
+
<div class="oa-menu-header">
|
|
1473
1499
|
<ng-content></ng-content>
|
|
1474
1500
|
</div>
|
|
1475
1501
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
|
|
@@ -1481,8 +1507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1481
1507
|
standalone: true,
|
|
1482
1508
|
imports: [CommonModule],
|
|
1483
1509
|
template: `
|
|
1484
|
-
<div
|
|
1485
|
-
class="px-3 py-1.5 text-xs font-semibold text-light-text-secondary dark:text-dark-text-secondary truncate border-b border-light-border dark:border-dark-border mb-1">
|
|
1510
|
+
<div class="oa-menu-header">
|
|
1486
1511
|
<ng-content></ng-content>
|
|
1487
1512
|
</div>
|
|
1488
1513
|
`
|
|
@@ -1506,28 +1531,22 @@ class ContextButtonComponent {
|
|
|
1506
1531
|
}
|
|
1507
1532
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: ContextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1508
1533
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: ContextButtonComponent, isStandalone: true, selector: "context-button", inputs: { danger: { classPropertyName: "danger", publicName: "danger", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hasSubmenu: { classPropertyName: "hasSubmenu", publicName: "hasSubmenu", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
1509
|
-
<div class="
|
|
1510
|
-
<button
|
|
1511
|
-
class="
|
|
1512
|
-
[class.
|
|
1513
|
-
[class.dark:hover:bg-[#383838]]="!disabled()"
|
|
1514
|
-
[class.text-red-500]="danger() && !disabled()"
|
|
1515
|
-
[class.hover:bg-red-500]="danger() && !disabled()"
|
|
1516
|
-
[class.hover:text-white]="danger() && !disabled()"
|
|
1517
|
-
[class.opacity-50]="disabled()"
|
|
1518
|
-
[class.cursor-not-allowed]="disabled()"
|
|
1534
|
+
<div class="oa-menu-item" (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
|
|
1535
|
+
<button
|
|
1536
|
+
class="oa-menu-item__button"
|
|
1537
|
+
[class.oa-menu-item__button--danger]="danger()"
|
|
1519
1538
|
[disabled]="disabled()">
|
|
1520
|
-
<div class="
|
|
1539
|
+
<div class="oa-menu-item__content">
|
|
1521
1540
|
<ng-content select="[icon]"></ng-content>
|
|
1522
1541
|
<ng-content></ng-content>
|
|
1523
1542
|
</div>
|
|
1524
1543
|
@if (hasSubmenu()) {
|
|
1525
|
-
<span class="
|
|
1544
|
+
<span class="oa-menu-item__arrow">▶</span>
|
|
1526
1545
|
}
|
|
1527
1546
|
</button>
|
|
1528
1547
|
|
|
1529
1548
|
@if (hasSubmenu() && $showSubmenu() && !disabled()) {
|
|
1530
|
-
<div class="
|
|
1549
|
+
<div class="oa-menu-item__submenu">
|
|
1531
1550
|
<ng-content select="context-menu"></ng-content>
|
|
1532
1551
|
</div>
|
|
1533
1552
|
}
|
|
@@ -1541,28 +1560,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1541
1560
|
standalone: true,
|
|
1542
1561
|
imports: [CommonModule],
|
|
1543
1562
|
template: `
|
|
1544
|
-
<div class="
|
|
1545
|
-
<button
|
|
1546
|
-
class="
|
|
1547
|
-
[class.
|
|
1548
|
-
[class.dark:hover:bg-[#383838]]="!disabled()"
|
|
1549
|
-
[class.text-red-500]="danger() && !disabled()"
|
|
1550
|
-
[class.hover:bg-red-500]="danger() && !disabled()"
|
|
1551
|
-
[class.hover:text-white]="danger() && !disabled()"
|
|
1552
|
-
[class.opacity-50]="disabled()"
|
|
1553
|
-
[class.cursor-not-allowed]="disabled()"
|
|
1563
|
+
<div class="oa-menu-item" (mouseenter)="onMouseEnter()" (mouseleave)="onMouseLeave()">
|
|
1564
|
+
<button
|
|
1565
|
+
class="oa-menu-item__button"
|
|
1566
|
+
[class.oa-menu-item__button--danger]="danger()"
|
|
1554
1567
|
[disabled]="disabled()">
|
|
1555
|
-
<div class="
|
|
1568
|
+
<div class="oa-menu-item__content">
|
|
1556
1569
|
<ng-content select="[icon]"></ng-content>
|
|
1557
1570
|
<ng-content></ng-content>
|
|
1558
1571
|
</div>
|
|
1559
1572
|
@if (hasSubmenu()) {
|
|
1560
|
-
<span class="
|
|
1573
|
+
<span class="oa-menu-item__arrow">▶</span>
|
|
1561
1574
|
}
|
|
1562
1575
|
</button>
|
|
1563
1576
|
|
|
1564
1577
|
@if (hasSubmenu() && $showSubmenu() && !disabled()) {
|
|
1565
|
-
<div class="
|
|
1578
|
+
<div class="oa-menu-item__submenu">
|
|
1566
1579
|
<ng-content select="context-menu"></ng-content>
|
|
1567
1580
|
</div>
|
|
1568
1581
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orcas-angular.mjs","sources":["../../async/async.ts","../../async/cancellation-token.ts","../../dev/console-hook.ts","../../framework/services-init.ts","../../localization/localization.service.ts","../../localization/localize.pipe.ts","../../log/echo.ts","../../log/log-systems.ts","../../log/echo-provider.ts","../../navigation/navigation-stack.service.ts","../../navigation/back-on-click.directive.ts","../../storage/files.ts","../../storage/file-box.service.ts","../../storage/key-signals.ts","../../storage/settings-signals.service.ts","../../storage/settings.service.ts","../../storage/tauri-files.service.ts","../../storage/capacitor-files.service.ts","../../storage/local-storage-files.service.ts","../../theme/theme.service.ts","../../ui/context-menu/context-menu.component.ts","../../ui/context-menu/context-header.component.ts","../../ui/context-menu/context-button.component.ts","../../ui/context-menu/context-menu-trigger.directive.ts","../../orcas-angular.ts"],"sourcesContent":["export class Async {\n static async delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n static async until(check: () => boolean, timeoutMs: number = 10000, frequencyMs: number = 100): Promise<void> {\n let timePassed = 0;\n while (!check() && timePassed < timeoutMs) {\n await Async.delay(frequencyMs);\n timePassed += frequencyMs;\n\n if (timePassed >= timeoutMs)\n throw new Error('Timeout while waiting for condition');\n }\n }\n}","export interface CancellationToken {\n isCancelled(): boolean;\n\n throwIfCancelled(): void;\n}\n\nclass CancellationTokenInternal implements CancellationToken {\n private _isCancelled: boolean = false;\n\n constructor(isCancelled: boolean = false) {\n this._isCancelled = isCancelled;\n }\n\n /**\n * Gets whether cancellation has been requested\n */\n public isCancelled(): boolean {\n return this._isCancelled;\n }\n\n /**\n * Throws an error if cancellation has been requested\n */\n public throwIfCancelled(): void {\n if (this._isCancelled) {\n throw new CancellationError('Operation was cancelled');\n }\n }\n\n /**\n * Internal method to cancel the token\n */\n cancel(): void {\n this._isCancelled = true;\n }\n\n /**\n * A token that is never cancelled\n */\n public static readonly None: CancellationToken = new CancellationTokenInternal(false);\n\n /**\n * A token that is already cancelled\n */\n public static readonly Cancelled: CancellationToken = new CancellationTokenInternal(true);\n}\n\n/**\n * Error thrown when an operation is cancelled\n */\nexport class CancellationError extends Error {\n constructor(message: string = 'Operation was cancelled') {\n super(message);\n this.name = 'CancellationError';\n }\n}\n\n/**\n * Source for creating and managing cancellation tokens\n */\nexport class CancellationTokenSource {\n private _token: CancellationTokenInternal = new CancellationTokenInternal();\n\n /**\n * Gets the token currently associated with this source\n */\n public get token(): CancellationToken {\n return this._token;\n }\n\n /**\n * Cancels the current token and creates a new one\n */\n public newUnique(timeoutMs: number = -1): CancellationToken {\n this._token.cancel();\n this._token = new CancellationTokenInternal();\n\n if (timeoutMs != -1)\n setTimeout(() => this._token.cancel(), timeoutMs);\n\n return this._token;\n }\n\n /**\n * Cancels the current token\n */\n public cancel(): void {\n this._token.cancel();\n }\n}","export class ConsoleHook {\n private static commands: { [key: string]: Function } = {};\n\n static initialize() {\n if (!(window as any).r)\n (window as any).r = ConsoleHook.run.bind(ConsoleHook);\n }\n\n static register(commandName: string, method: Function) {\n ConsoleHook.initialize();\n ConsoleHook.commands[commandName] = method;\n }\n\n static run(input: string, ...additionalParams: any[]) {\n const [commandName, ...params] = input.split(' ');\n const command = ConsoleHook.commands[commandName];\n\n if (command) {\n return command(...params, ...additionalParams);\n }\n else {\n console.error(`Custom command \"${commandName}\" not found.`);\n }\n }\n}","import { Injectable, Injector, Type } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ServicesInit {\n constructor(private injector: Injector) {\n }\n\n async init<T>(serviceClass: any, ...params: unknown[]): Promise<T> {\n let className = `${serviceClass.name || 'unknown'}`;\n const instance = this.injector.get(serviceClass) as any;\n\n if (!instance)\n throw new Error(`Service not found: ${className}`);\n\n const hasInit = typeof instance.init === 'function';\n\n if (params.length > 0 && !hasInit)\n throw new Error(`Service ${className} has no init method but initialization parameters were provided.`);\n\n if (hasInit)\n await instance.init(...params);\n\n return instance as T;\n }\n}\n","import { computed, inject, Injectable, signal } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ILocalizationService } from './localization.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizationService implements ILocalizationService {\n private defaultLanguage = 'en';\n private storageKey = 'orcas-language';\n\n private translations: any = {};\n private loaded = false;\n\n private $language: ReturnType<typeof signal<string>>;\n public $currentLang = computed(() => this.$language());\n\n private http = inject(HttpClient);\n\n constructor() {\n this.$language = signal(this.getStoredLanguage());\n }\n\n public async init(\n jsonPath: string = 'assets/translations.json',\n defaultLanguage: string = 'en',\n storageKey: string = 'orcas-language'\n ): Promise<void> {\n this.defaultLanguage = defaultLanguage;\n this.storageKey = storageKey;\n this.$language.set(this.getStoredLanguage());\n\n try {\n this.translations = await this.http.get(jsonPath).toPromise();\n this.loaded = true;\n }\n catch (err) {\n console.error('Failed to load translations:', err);\n }\n }\n\n getLanguage(): string {\n return this.$language();\n }\n\n getDefaultLanguage(): string {\n return this.defaultLanguage;\n }\n\n setActiveLanguage(lang: string): void {\n if (lang !== this.$language()) {\n localStorage.setItem(this.storageKey, lang);\n this.$language.set(lang);\n }\n }\n\n translate(key: string, params?: any, language?: string): string {\n const lang = language || this.getLanguage();\n\n if (!this.loaded) {\n console.error('Localization: Translations not loaded yet!');\n return key;\n }\n\n let translation = null;\n\n // Handle pluralization: try singular suffix __1 first if count is 1\n if (params && params.count === 1)\n translation = this.resolveKey(`${key}__1`);\n\n if (!translation)\n translation = this.resolveKey(key);\n\n if (!translation) {\n console.warn(`Localization: Key not found for \"${key}\".`);\n return key;\n }\n\n let translatedText = translation[lang];\n\n if (!translatedText) {\n console.warn(`Localization: Key \"${key}\" not found for language \"${lang}\". Falling back to default language.`);\n translatedText = translation[this.defaultLanguage];\n }\n\n if (!translatedText) {\n console.error(`Localization: Key \"${key}\" not found for default language \"${this.defaultLanguage}\".`);\n return key;\n }\n\n if (params) {\n if (Array.isArray(params))\n return this.replaceArrayParams(translatedText, params);\n else\n return this.replaceObjectParams(translatedText, params);\n }\n\n return translatedText;\n }\n\n private resolveKey(key: string): any {\n const keys = key.split('.');\n let translation = this.translations;\n for (const k of keys) {\n if (!translation[k])\n return null;\n translation = translation[k];\n }\n return translation;\n }\n\n private getStoredLanguage(): string {\n return localStorage.getItem(this.storageKey) || this.defaultLanguage;\n }\n\n private replaceArrayParams(text: string, params: any[]): string {\n let result = text;\n params.forEach((param, index) => {\n result = result.replace(new RegExp(`\\\\{\\\\{${index}\\\\}\\\\}`, 'g'), param.toString());\n });\n return result;\n }\n\n private replaceObjectParams(text: string, params: any): string {\n let result = text;\n Object.keys(params).forEach(key => {\n result = result.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), params[key].toString());\n });\n return result;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {LocalizationService} from './localization.service';\n\n@Pipe({\n name: 'localize',\n standalone: true,\n pure: false\n})\nexport class LocalizePipe implements PipeTransform {\n private lastLanguage: string = '';\n private lastKey: string = '';\n private lastParams: any;\n private lastResult: string = '';\n\n constructor(private localizationService: LocalizationService) {\n }\n\n transform(key: string, params?: any): string {\n if (this.localizationService.$currentLang() !== this.lastLanguage\n || key !== this.lastKey\n || params !== this.lastParams) {\n this.lastLanguage = this.localizationService.$currentLang();\n this.lastKey = key;\n this.lastParams = params;\n this.lastResult = this.localizationService.translate(key, params);\n }\n\n return this.lastResult;\n }\n}\n","/**\n * Echo - A flexible logging library\n * TypeScript port of Echo.cs core functionality (excluding Unity-specific features)\n */\n\n// ============================================================================\n// Enums\n// ============================================================================\n\nexport enum LogLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Info = 3,\n Debug = 4\n}\n\nenum LogMode {\n Always = 0,\n Once = 1\n}\n\nexport enum SystemColor {\n None,\n LabelOnly,\n LabelAndMessage\n}\n\n// ============================================================================\n// Interfaces\n// ============================================================================\n\nexport interface EchoLogWriter {\n writeLog(level: LogLevel, system: string, message: string): void;\n}\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\nexport class LogWriterConfig {\n timestamp: boolean = true;\n levelLabels: boolean = true;\n levelColors: boolean = true;\n systemColor: SystemColor = SystemColor.LabelOnly;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nclass Helpers {\n static fnv1a32(str: string, hash: number = 2166136261): number {\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return hash >>> 0; // Convert to unsigned 32-bit integer\n }\n\n static getElementFromHash<T>(collection: T[], stringToHash: string): T {\n const hash = Helpers.fnv1a32(stringToHash);\n const index = hash % collection.length;\n return collection[index];\n }\n}\n\nclass WritersHelpers {\n static getLevelLabel(level: LogLevel): string {\n switch (level) {\n case LogLevel.Debug: return \"DEBUG\";\n case LogLevel.Info: return \"INFO\";\n case LogLevel.Warn: return \"WARN\";\n case LogLevel.Error: return \"ERROR\";\n default: return \"???\";\n }\n }\n\n static readonly systemColors: string[] = [\n \"\\x1b[31m\", // Red\n \"\\x1b[32m\", // Green\n \"\\x1b[34m\", // Blue\n \"\\x1b[33m\", // Yellow\n \"\\x1b[36m\", // Cyan\n \"\\x1b[35m\" // Magenta\n ];\n\n static readonly levelColors: Map<LogLevel, string> = new Map([\n [LogLevel.Debug, \"\\x1b[37m\"], // White\n [LogLevel.Info, \"\\x1b[36m\"], // Cyan\n [LogLevel.Warn, \"\\x1b[33m\"], // Yellow\n [LogLevel.Error, \"\\x1b[31m\"] // Red\n ]);\n\n static readonly resetColor = \"\\x1b[0m\";\n static readonly grayColor = \"\\x1b[90m\";\n}\n\n// ============================================================================\n// Internal Classes\n// ============================================================================\n\nclass HashesManager {\n private hashes: Set<number> = new Set();\n\n tryAdd(system: string, message: string): boolean {\n let hash = Helpers.fnv1a32(message);\n hash = Helpers.fnv1a32(system, hash);\n if (this.hashes.has(hash)) {\n return false;\n }\n this.hashes.add(hash);\n return true;\n }\n\n clear(): void {\n this.hashes.clear();\n }\n}\n\nclass LoggerCore {\n private readonly logWriter: EchoLogWriter;\n private readonly echoSettings: EchoSettings;\n private readonly hashes: HashesManager;\n\n constructor(config: EchoSettings, hashes: HashesManager, logger: EchoLogWriter) {\n if (!config) throw new Error(\"config cannot be null\");\n if (!hashes) throw new Error(\"hashes cannot be null\");\n if (!logger) throw new Error(\"logger cannot be null\");\n\n this.echoSettings = config;\n this.hashes = hashes;\n this.logWriter = logger;\n }\n\n private isEnabled(system: string, level: LogLevel): boolean {\n return level <= this.echoSettings.getSystemLevel(system);\n }\n\n private shouldLogOnce(system: string, message: string): boolean {\n return this.hashes.tryAdd(system, message);\n }\n\n clearHashes(): void {\n this.hashes.clear();\n }\n\n private write(level: LogLevel, mode: LogMode, system: string, message: string): void {\n if (mode === LogMode.Always || this.shouldLogOnce(system, message)) {\n this.logWriter.writeLog(level, system, message);\n }\n }\n\n writeIfEnabled(level: LogLevel, mode: LogMode, system: string, message: string): void {\n if (this.isEnabled(system, level)) {\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled1<T1>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString1(format, param1);\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled2<T1, T2>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString2(format, param1, param2);\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled3<T1, T2, T3>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2, param3: T3): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString3(format, param1, param2, param3);\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled4<T1, T2, T3, T4>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2, param3: T3, param4: T4): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString4(format, param1, param2, param3, param4);\n this.write(level, mode, system, message);\n }\n }\n\n private formatString1<T1>(format: string, param1: T1): string {\n return format.replace(/\\{0\\}/g, String(param1));\n }\n\n private formatString2<T1, T2>(format: string, param1: T1, param2: T2): string {\n return format.replace(/\\{0\\}/g, String(param1)).replace(/\\{1\\}/g, String(param2));\n }\n\n private formatString3<T1, T2, T3>(format: string, param1: T1, param2: T2, param3: T3): string {\n return format.replace(/\\{0\\}/g, String(param1)).replace(/\\{1\\}/g, String(param2)).replace(/\\{2\\}/g, String(param3));\n }\n\n private formatString4<T1, T2, T3, T4>(format: string, param1: T1, param2: T2, param3: T3, param4: T4): string {\n return format.replace(/\\{0\\}/g, String(param1)).replace(/\\{1\\}/g, String(param2)).replace(/\\{2\\}/g, String(param3)).replace(/\\{3\\}/g, String(param4));\n }\n}\n\n// ============================================================================\n// Public Classes\n// ============================================================================\n\nexport class EchoSettings {\n private systemLevels: Map<string, LogLevel> = new Map();\n private _defaultLevel: LogLevel = LogLevel.Warn;\n private updateCallbacks: (() => void)[] = [];\n\n get defaultLevel(): LogLevel {\n return this._defaultLevel;\n }\n\n onUpdated(callback: () => void): void {\n this.updateCallbacks.push(callback);\n }\n\n private triggerUpdate(): void {\n for (const callback of this.updateCallbacks) {\n callback();\n }\n }\n\n setSystemLevel(system: string, level: LogLevel): void {\n this.throwIfInvalidSystem(system);\n this.systemLevels.set(system, level);\n this.triggerUpdate();\n }\n\n clearSystemLevel(system: string): void {\n this.throwIfInvalidSystem(system);\n if (this.systemLevels.delete(system)) {\n this.triggerUpdate();\n }\n }\n\n getSystemLevel(system: string): LogLevel {\n this.throwIfInvalidSystem(system);\n return this.systemLevels.get(system) ?? this._defaultLevel;\n }\n\n tryGetSystemLevel(system: string): { success: boolean; level?: LogLevel } {\n this.throwIfInvalidSystem(system);\n const level = this.systemLevels.get(system);\n return level !== undefined ? { success: true, level } : { success: false };\n }\n\n clearSystemLevels(): void {\n this.systemLevels.clear();\n this.triggerUpdate();\n }\n\n setDefaultLevel(level: LogLevel): void {\n this._defaultLevel = level;\n this.triggerUpdate();\n }\n\n getAllSystemLevels(): ReadonlyMap<string, LogLevel> {\n return this.systemLevels;\n }\n\n private throwIfInvalidSystem(system: string): void {\n if (!system || system.length === 0) {\n throw new Error(\"System name cannot be null or empty.\");\n }\n }\n}\n\nexport class EchoLogger {\n private readonly loggerCore: LoggerCore;\n\n constructor(loggerCore: LoggerCore) {\n if (!loggerCore) throw new Error(\"loggerCore cannot be null\");\n this.loggerCore = loggerCore;\n }\n\n // Debug Methods\n debug(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n debug1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Info Methods\n info(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n info1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Warn Methods\n warn(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n warn1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Error Methods\n error(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n error1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n}\n\nexport class EchoSystemLogger {\n private readonly loggerCore: LoggerCore;\n private readonly system: string;\n\n constructor(loggerCore: LoggerCore, system: string) {\n if (!loggerCore) throw new Error(\"loggerCore cannot be null\");\n if (!system) throw new Error(\"system cannot be null\");\n this.loggerCore = loggerCore;\n this.system = system;\n }\n\n // Debug Methods\n debug(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n debug1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Info Methods\n info(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n info1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Warn Methods\n warn(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n warn1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Error Methods\n error(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n error1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n}\n\nexport class Echo {\n private readonly loggerCore: LoggerCore;\n private readonly loggers: Map<string, EchoLogger | EchoSystemLogger> = new Map();\n private readonly _settings: EchoSettings;\n\n constructor(writer: EchoLogWriter) {\n if (!writer) throw new Error(\"writer cannot be null\");\n const hashes = new HashesManager();\n this._settings = new EchoSettings();\n this.loggerCore = new LoggerCore(this._settings, hashes, writer);\n }\n\n getLogger(): EchoLogger {\n const key = \"\";\n if (!this.loggers.has(key)) {\n this.loggers.set(key, new EchoLogger(this.loggerCore));\n }\n return this.loggers.get(key) as EchoLogger;\n }\n\n getSystemLogger(system: string): EchoSystemLogger {\n if (!system || system.length === 0) {\n throw new Error(\"System name cannot be null or empty.\");\n }\n\n if (!this.loggers.has(system)) {\n this.loggers.set(system, new EchoSystemLogger(this.loggerCore, system));\n }\n return this.loggers.get(system) as EchoSystemLogger;\n }\n\n get settings(): EchoSettings {\n return this._settings;\n }\n}\n\n// ============================================================================\n// Built-in Log Writers\n// ============================================================================\n\nclass ConsoleLogWriter implements EchoLogWriter {\n private readonly config: LogWriterConfig;\n\n constructor(config: LogWriterConfig) {\n if (!config) throw new Error(\"config cannot be null\");\n this.config = config;\n }\n\n writeLog(level: LogLevel, system: string, message: string): void {\n let output = \"\";\n\n if (this.config.timestamp) {\n const now = new Date();\n const timestamp = this.formatTimestamp(now);\n output += `${WritersHelpers.grayColor}[${timestamp}]${WritersHelpers.resetColor} `;\n }\n\n if (this.config.levelLabels) {\n const levelLabel = WritersHelpers.getLevelLabel(level);\n if (this.config.levelColors) {\n const color = WritersHelpers.levelColors.get(level) ?? \"\";\n output += `${color}[${levelLabel}]${WritersHelpers.resetColor} `;\n } else {\n output += `[${levelLabel}] `;\n }\n }\n\n const systemColor = this.config.systemColor === SystemColor.LabelOnly ||\n this.config.systemColor === SystemColor.LabelAndMessage\n ? Helpers.getElementFromHash(WritersHelpers.systemColors, system)\n : \"\";\n\n if (systemColor) {\n output += `${systemColor}[${system}]${WritersHelpers.resetColor} `;\n } else {\n output += `[${system}] `;\n }\n\n if (this.config.systemColor === SystemColor.LabelAndMessage && systemColor) {\n output += `${systemColor}${message}${WritersHelpers.resetColor}`;\n } else {\n output += message;\n }\n\n console.log(output);\n }\n\n private formatTimestamp(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n const milliseconds = String(date.getMilliseconds()).padStart(3, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n}\n\n// ============================================================================\n// Public API Helpers\n// ============================================================================\n\nexport class EchoConsole {\n static new(config?: LogWriterConfig): Echo {\n const writerConfig = config ?? new LogWriterConfig();\n const writer = new ConsoleLogWriter(writerConfig);\n return new Echo(writer);\n }\n}\n","/**\n * Constants for Echo logging system names.\n * Using constants ensures consistency and prevents typos.\n */\nexport class LogSystems {\n /** System for profiling and performance measurements */\n static readonly PROFILING = 'Profiling';\n \n /** System for general application logs */\n static readonly GENERAL = 'General';\n \n /** System for Git-related operations */\n static readonly GIT = 'Git';\n \n /** System for UI and visual operations */\n static readonly UI = 'UI';\n \n /** System for repository operations */\n static readonly REPOSITORY = 'Repository';\n}\n","/**\n * Echo provider for Angular dependency injection.\n * Provides a singleton Echo instance with console writer.\n */\nimport { InjectionToken, Provider } from '@angular/core';\nimport { Echo, EchoConsole } from './echo';\n\n/**\n * Injection token for Echo logger instance\n */\nexport const ECHO = new InjectionToken<Echo>('Echo Logger Instance');\n\n/**\n * Factory function to create Echo instance\n */\nexport function echoFactory(): Echo {\n return EchoConsole.new();\n}\n\n/**\n * Provider for Echo logger\n * Use this in your module providers or inject it in services\n */\nexport const ECHO_PROVIDER: Provider = {\n provide: ECHO,\n useFactory: echoFactory\n};\n","import {Injectable} from '@angular/core';\nimport {Location} from '@angular/common';\nimport {Router, NavigationEnd} from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationStackService {\n private history: string[] = [];\n\n constructor(private router: Router, private location: Location) {\n this.router.events.subscribe((event: any) => {\n if (event instanceof NavigationEnd)\n this.history.push(event.urlAfterRedirects);\n });\n }\n\n public goBack(): void {\n this.history.pop();\n if (this.history.length > 0)\n this.location.back();\n else\n this.router.navigateByUrl(\"/\").then();\n this.history.pop();\n }\n\n public getBack(): string {\n if (this.history.length > 1)\n return this.history[this.history.length - 2];\n\n return '';\n }\n}","import {Directive, HostListener} from '@angular/core';\nimport {NavigationStackService} from './navigation-stack.service';\n\n@Directive({\n selector: '[back-on-click]',\n standalone: true\n})\nexport class BackOnClickDirective {\n constructor(private navigationStack: NavigationStackService) {\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (event)\n event.preventDefault();\n\n this.navigationStack.goBack();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class FilesService {\n /**\n * Initializes the service. \n * This should handle any setup required by the specific implementation.\n */\n abstract init(...args: any[]): Promise<void>;\n\n /**\n * Joins a filename with the storage base directory to get a full path.\n * Returns a string or a Promise of a string depending on implementation.\n * In some platforms, this may return null if paths are not supported.\n */\n abstract joinStoragePath(filePath: string): Promise<string | null>;\n\n /**\n * Checks if a file exists in the platform-specific storage.\n */\n abstract hasInStorage(filePath: string): Promise<boolean>;\n\n /**\n * Reads a file from the platform-specific storage.\n */\n abstract readFromStorage(filePath: string): Promise<string>;\n\n /**\n * Writes data to a file in the platform-specific storage.\n */\n abstract writeToStorage(filePath: string, data: string): Promise<void>;\n\n /**\n * Checks if a file exists in the project's assets/resources.\n */\n abstract hasInProject(filePath: string): Promise<boolean>;\n\n /**\n * Reads a file from the project's assets/resources.\n */\n abstract readFromProject(filePath: string): Promise<string>;\n}","import { computed, inject, Injectable, signal } from '@angular/core';\nimport { FilesService } from './files';\nimport { Async } from \"../async/async\";\n\nenum Status {\n NotInitialized,\n Loading,\n Idle,\n Saving\n}\n\ninterface BoxData {\n [key: string]: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileBoxService {\n private files: FilesService = inject(FilesService);\n private status: Status = Status.NotInitialized;\n private path: string = '';\n\n private saveEnqueued: boolean = false;\n\n private $dataWritable = signal<BoxData>({});\n public $data = computed(() => {\n if (this.status === Status.NotInitialized)\n console.error('Service is not initialized.');\n else if (this.status === Status.Loading)\n console.error('Service is loading.');\n\n return this.$dataWritable();\n });\n\n async init(path: string) {\n if (this.status !== Status.NotInitialized) {\n console.error('Service is already initialized.');\n return;\n }\n\n this.path = path;\n\n try {\n this.status = Status.Loading;\n if (await this.files.hasInStorage(this.path)) {\n const fileContent = await this.files.readFromStorage(this.path);\n this.$dataWritable.set(JSON.parse(fileContent));\n }\n }\n catch (error) {\n console.error('Failed to load file:', error);\n this.$dataWritable.set({});\n }\n finally {\n this.status = Status.Idle;\n }\n }\n\n has(key: string): boolean {\n return key in this.$data();\n }\n\n set(key: string, value: any): void {\n this.checkType(value);\n const newData = { ...this.$dataWritable() };\n newData[key] = value;\n this.$dataWritable.set(newData);\n }\n\n setAll(data: BoxData): void {\n this.$dataWritable.set(data);\n }\n\n remove(key: string): void {\n const newData = { ...this.$dataWritable() };\n delete newData[key];\n this.$dataWritable.set(newData);\n }\n\n private checkType(value: any) {\n if (value instanceof Function)\n throw new Error('Cannot save functions.');\n\n if (value instanceof Promise)\n throw new Error('Cannot save promises.');\n }\n\n async save() {\n if (this.saveEnqueued)\n return;\n\n this.saveEnqueued = true;\n\n while (this.status === Status.Saving)\n await Async.delay(100);\n\n this.saveEnqueued = false;\n\n try {\n this.status = Status.Saving;\n const dataString = JSON.stringify(this.$data());\n await this.files.writeToStorage(this.path, dataString);\n }\n catch (error) {\n console.error('Failed to save file:', error);\n }\n finally {\n this.status = Status.Idle;\n }\n }\n}\n","import { computed, Signal } from '@angular/core';\n\nexport abstract class KeySignals {\n protected abstract $data(): Record<string, any>;\n protected abstract setRawValue(key: string, value: any): Promise<void>;\n protected abstract setMultipleRawValues(values: Record<string, any>): Promise<void>;\n\n protected readonly SEPARATOR = '|';\n\n public getCanonicalKey(path: string[]): string {\n return path.join(this.SEPARATOR);\n }\n\n public getNewSignal<T>(defaultValue: T, ...path: string[]): Signal<T> {\n return computed(() => this.getValue(defaultValue, ...path));\n }\n\n public getValue<T>(defaultValue: T, ...path: string[]): T {\n const key = this.getCanonicalKey(path);\n const data = this.$data();\n return key in data ? data[key] : defaultValue;\n }\n\n public async set(value: any, ...path: string[]): Promise<void> {\n const key = this.getCanonicalKey(path);\n await this.setRawValue(key, value);\n }\n\n /**\n * Clears all keys that start with the given prefix.\n */\n public async clearByPrefix(...pathPrefix: string[]): Promise<void> {\n const prefix = this.getCanonicalKey(pathPrefix) + this.SEPARATOR;\n const data = this.$data();\n const updatedData = { ...data };\n let changed = false;\n\n for (const key in updatedData) {\n if (key.startsWith(prefix)) {\n delete updatedData[key];\n changed = true;\n }\n }\n\n if (changed) {\n await this.setMultipleRawValues(updatedData);\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { KeySignals } from './key-signals';\nimport { FileBoxService } from './file-box.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SettingsSignalsService extends KeySignals {\n private filebox = inject(FileBoxService);\n\n protected override $data(): Record<string, any> {\n return this.filebox.$data();\n }\n\n protected override async setRawValue(key: string, value: any): Promise<void> {\n this.filebox.set(key, value);\n await this.filebox.save();\n }\n\n protected override async setMultipleRawValues(values: Record<string, any>): Promise<void> {\n this.filebox.setAll(values);\n await this.filebox.save();\n }\n}\n","import { inject, Injectable, Signal } from \"@angular/core\";\nimport { FileBoxService } from \"./file-box.service\";\nimport { SettingsSignalsService } from \"./settings-signals.service\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class SettingsService {\n private fileboxService = inject(FileBoxService);\n private sss = inject(SettingsSignalsService);\n private readonly SETTINGS_KEY = \"app-settings\";\n\n public getNewSignal<T>(defaultValue: T, ...path: string[]): Signal<T> {\n return this.sss.getNewSignal(defaultValue, this.SETTINGS_KEY, ...path);\n }\n\n public async set(value: any, ...path: string[]): Promise<void> {\n await this.sss.set(value, this.SETTINGS_KEY, ...path);\n }\n\n public async save(): Promise<void> {\n await this.fileboxService.save();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilesService } from './files';\n\n@Injectable()\nexport class TauriFilesService extends FilesService {\n private static _isTauri: boolean | null = null;\n\n static isSupported(): boolean {\n if (this._isTauri !== null) return this._isTauri;\n\n try {\n // Check for window.__TAURI_INTERNALS__ which is usually present in v2\n this._isTauri = !!((window as any).__TAURI_INTERNALS__);\n } catch {\n this._isTauri = false;\n }\n return this._isTauri;\n }\n\n async init() {\n // No special initialization needed for Tauri FS plugin beyond what is handled lazily\n }\n\n async joinStoragePath(filePath: string): Promise<string | null> {\n const { appLocalDataDir, join } = await import('@tauri-apps/api/path');\n const dataDir = await appLocalDataDir();\n return await join(dataDir, filePath);\n }\n\n async hasInStorage(filePath: string): Promise<boolean> {\n try {\n const { exists } = await import('@tauri-apps/plugin-fs');\n const { BaseDirectory } = await import('@tauri-apps/api/path');\n return await exists(filePath, { baseDir: BaseDirectory.AppLocalData });\n } catch (error) {\n console.error('TauriFilesService.hasInStorage error:', error);\n return false;\n }\n }\n\n async readFromStorage(filePath: string): Promise<string> {\n const { readTextFile } = await import('@tauri-apps/plugin-fs');\n const { BaseDirectory } = await import('@tauri-apps/api/path');\n return await readTextFile(filePath, { baseDir: BaseDirectory.AppLocalData });\n }\n\n async writeToStorage(filePath: string, data: string): Promise<void> {\n const { writeTextFile } = await import('@tauri-apps/plugin-fs');\n const { BaseDirectory } = await import('@tauri-apps/api/path');\n await writeTextFile(filePath, data, { baseDir: BaseDirectory.AppLocalData });\n }\n\n async hasInProject(filePath: string): Promise<boolean> {\n try {\n const response = await fetch(filePath, { method: 'HEAD' });\n return response.ok;\n } catch {\n return false;\n }\n }\n\n async readFromProject(filePath: string): Promise<string> {\n const response = await fetch(filePath);\n if (!response.ok) {\n throw new Error(`Failed to read project file: ${filePath} (${response.status})`);\n }\n return await response.text();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilesService } from './files';\n\n@Injectable()\nexport class CapacitorFilesService extends FilesService {\n static isSupported(): boolean {\n // Capacitor is not yet implemented, so returning false\n return false;\n }\n\n async init() {\n throw new Error('CapacitorFilesService not implemented');\n }\n\n async joinStoragePath(filePath: string): Promise<string | null> {\n return null;\n }\n\n async hasInStorage(filePath: string): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n\n async readFromStorage(filePath: string): Promise<string> {\n throw new Error('Method not implemented.');\n }\n\n async writeToStorage(filePath: string, data: string): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n async hasInProject(filePath: string): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n\n async readFromProject(filePath: string): Promise<string> {\n throw new Error('Method not implemented.');\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { lastValueFrom } from 'rxjs';\nimport { FilesService } from './files';\n\n@Injectable()\nexport class LocalStorageFilesService extends FilesService {\n private http = inject(HttpClient);\n\n static isSupported(): boolean {\n return typeof window !== 'undefined' && !!window.localStorage;\n }\n\n async init() {\n // LocalStorage is ready immediately\n }\n\n async joinStoragePath(filePath: string): Promise<string | null> {\n return null;\n }\n\n async hasInStorage(filePath: string): Promise<boolean> {\n return localStorage.getItem(filePath) !== null;\n }\n\n async readFromStorage(filePath: string): Promise<string> {\n const data = localStorage.getItem(filePath);\n if (data === null) throw new Error(`File not found in localStorage: ${filePath}`);\n return data;\n }\n\n async writeToStorage(filePath: string, data: string): Promise<void> {\n localStorage.setItem(filePath, data);\n }\n\n async hasInProject(filePath: string): Promise<boolean> {\n try {\n // In a browser, we check if we can fetch it via HTTP\n await lastValueFrom(this.http.head(filePath));\n return true;\n } catch {\n return false;\n }\n }\n\n async readFromProject(filePath: string): Promise<string> {\n return await lastValueFrom(this.http.get(filePath, { responseType: 'text' }));\n }\n}\n","import { computed, effect, inject, Injectable } from '@angular/core';\nimport { SettingsService } from \"../storage/settings.service\";\n\nexport enum ThemeType {\n Unset = '',\n Light = 'light',\n Dark = 'dark',\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n private settings = inject(SettingsService);\n public $theme = this.settings.getNewSignal<ThemeType>(ThemeType.Unset, 'theme');\n\n public $darkMode = computed(() => {\n const theme = this.$theme();\n let isDarkMode: boolean = theme === ThemeType.Unset\n ? window.matchMedia('(prefers-color-scheme: dark)').matches\n : theme === ThemeType.Dark;\n\n return isDarkMode;\n });\n\n private effectSetDarkMode = effect(async () => {\n document.documentElement.classList.toggle('dark', this.$darkMode());\n });\n\n public async setTheme(theme: ThemeType) {\n await this.settings.set(theme, 'theme');\n }\n}\n","import { Component, input, output, ElementRef, HostListener, booleanAttribute, signal, ViewChild, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'context-menu',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if ($isVisible() || $isSubmenu()) {\n <div \n #container\n [class.fixed]=\"!$isSubmenu()\"\n [class.absolute]=\"$isSubmenu()\"\n [class.left-full]=\"$isSubmenu()\"\n [class.top-0]=\"$isSubmenu()\"\n [class.ml-[-2px]]=\"$isSubmenu()\"\n class=\"bg-white dark:bg-[#2a2a2a] border border-light-border dark:border-dark-border rounded shadow-lg z-50 min-w-[200px] text-light-text-primary dark:text-dark-text-primary py-1\"\n [style.left.px]=\"!$isSubmenu() ? $x() : null\" \n [style.top.px]=\"!$isSubmenu() ? $y() : null\" \n [style.visibility]=\"$isMeasuring() ? 'hidden' : 'visible'\"\n (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n </div>\n }\n `\n})\nexport class ContextMenuComponent {\n $isSubmenu = input(false, { transform: booleanAttribute });\n\n $isVisible = signal(false);\n $isMeasuring = signal(false);\n $x = signal(0);\n $y = signal(0);\n\n @ViewChild('container') container?: ElementRef<HTMLDivElement>;\n\n close = output<void>();\n\n constructor(private elementRef: ElementRef) { }\n\n @HostListener('document:mousedown', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.$isSubmenu()) return;\n\n // If visible and click is outside, close\n if (this.$isVisible() && !this.elementRef.nativeElement.contains(event.target)) {\n this.closeMenu();\n }\n }\n\n show(x: number, y: number) {\n if (this.$isSubmenu()) return;\n\n this.$x.set(x);\n this.$y.set(y);\n this.$isMeasuring.set(true);\n this.$isVisible.set(true);\n\n // Wait for DOM to render the menu so we can measure it\n setTimeout(() => {\n if (this.container) {\n const rect = this.container.nativeElement.getBoundingClientRect();\n const width = rect.width;\n const height = rect.height;\n\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n let newX = x;\n let newY = y;\n\n if (x + width > windowWidth)\n newX = x - width;\n\n if (y + height > windowHeight)\n newY = y - height;\n\n // Final safety check to ensure it doesn't go off the top/left edges\n this.$x.set(Math.max(0, newX));\n this.$y.set(Math.max(0, newY));\n }\n this.$isMeasuring.set(false);\n }, 0);\n }\n\n hide() {\n this.$isVisible.set(false);\n this.$isMeasuring.set(false);\n }\n\n private closeMenu() {\n this.hide();\n this.close.emit();\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'context-header',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div \n class=\"px-3 py-1.5 text-xs font-semibold text-light-text-secondary dark:text-dark-text-secondary truncate border-b border-light-border dark:border-dark-border mb-1\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class ContextHeaderComponent { }\n","import { Component, input, signal, booleanAttribute } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'context-button',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"relative\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <button \n class=\"w-full text-left px-3 py-2 text-sm transition-colors duration-100 flex items-center justify-between gap-2\"\n [class.hover:bg-light-bg-secondary]=\"!disabled()\"\n [class.dark:hover:bg-[#383838]]=\"!disabled()\"\n [class.text-red-500]=\"danger() && !disabled()\"\n [class.hover:bg-red-500]=\"danger() && !disabled()\"\n [class.hover:text-white]=\"danger() && !disabled()\"\n [class.opacity-50]=\"disabled()\"\n [class.cursor-not-allowed]=\"disabled()\"\n [disabled]=\"disabled()\">\n <div class=\"flex items-center gap-2\">\n <ng-content select=\"[icon]\"></ng-content>\n <ng-content></ng-content>\n </div>\n @if (hasSubmenu()) {\n <span class=\"text-[10px] text-light-text-secondary opacity-50\">▶</span>\n }\n </button>\n\n @if (hasSubmenu() && $showSubmenu() && !disabled()) {\n <div class=\"absolute left-full top-0 ml-[-2px] z-[60]\">\n <ng-content select=\"context-menu\"></ng-content>\n </div>\n }\n </div>\n `\n})\nexport class ContextButtonComponent {\n danger = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n hasSubmenu = input(false, { transform: booleanAttribute });\n\n $showSubmenu = signal(false);\n\n onMouseEnter() {\n if (this.hasSubmenu() && !this.disabled()) {\n this.$showSubmenu.set(true);\n }\n }\n\n onMouseLeave() {\n if (this.hasSubmenu() && !this.disabled()) {\n this.$showSubmenu.set(false);\n }\n }\n}\n","import { Directive, input, output, HostListener, ElementRef } from '@angular/core';\nimport { ContextMenuComponent } from './context-menu.component';\n\n@Directive({\n selector: '[appContextMenu]',\n standalone: true\n})\nexport class ContextMenuTriggerDirective {\n appContextMenu = input.required<ContextMenuComponent>();\n\n beforeOpen = output<void>();\n\n constructor(private elementRef: ElementRef) { }\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n // Notify parent to prepare data\n this.beforeOpen.emit();\n\n // Show menu at cursor position\n this.appContextMenu().show(event.clientX, event.clientY);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LocalizationService","i1.NavigationStackService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orcas-angular.mjs","sources":["../../async/async.ts","../../async/cancellation-token.ts","../../dev/console-hook.ts","../../framework/services-init.ts","../../localization/localization.service.ts","../../localization/localize.pipe.ts","../../log/echo.ts","../../log/log-systems.ts","../../log/echo-provider.ts","../../navigation/navigation-stack.service.ts","../../navigation/back-on-click.directive.ts","../../storage/files.ts","../../storage/file-box.service.ts","../../storage/key-signals.ts","../../storage/settings-signals.service.ts","../../storage/settings.service.ts","../../storage/tauri-files.service.ts","../../storage/capacitor-files.service.ts","../../storage/local-storage-files.service.ts","../../theme/theme.service.ts","../../ui/context-menu/context-menu.component.ts","../../ui/context-menu/context-header.component.ts","../../ui/context-menu/context-button.component.ts","../../ui/context-menu/context-menu-trigger.directive.ts","../../orcas-angular.ts"],"sourcesContent":["export class Async {\n static async delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n static async until(check: () => boolean, timeoutMs: number = 10000, frequencyMs: number = 100): Promise<void> {\n let timePassed = 0;\n while (!check() && timePassed < timeoutMs) {\n await Async.delay(frequencyMs);\n timePassed += frequencyMs;\n\n if (timePassed >= timeoutMs)\n throw new Error('Timeout while waiting for condition');\n }\n }\n}","export interface CancellationToken {\n isCancelled(): boolean;\n\n throwIfCancelled(): void;\n}\n\nclass CancellationTokenInternal implements CancellationToken {\n private _isCancelled: boolean = false;\n\n constructor(isCancelled: boolean = false) {\n this._isCancelled = isCancelled;\n }\n\n /**\n * Gets whether cancellation has been requested\n */\n public isCancelled(): boolean {\n return this._isCancelled;\n }\n\n /**\n * Throws an error if cancellation has been requested\n */\n public throwIfCancelled(): void {\n if (this._isCancelled) {\n throw new CancellationError('Operation was cancelled');\n }\n }\n\n /**\n * Internal method to cancel the token\n */\n cancel(): void {\n this._isCancelled = true;\n }\n\n /**\n * A token that is never cancelled\n */\n public static readonly None: CancellationToken = new CancellationTokenInternal(false);\n\n /**\n * A token that is already cancelled\n */\n public static readonly Cancelled: CancellationToken = new CancellationTokenInternal(true);\n}\n\n/**\n * Error thrown when an operation is cancelled\n */\nexport class CancellationError extends Error {\n constructor(message: string = 'Operation was cancelled') {\n super(message);\n this.name = 'CancellationError';\n }\n}\n\n/**\n * Source for creating and managing cancellation tokens\n */\nexport class CancellationTokenSource {\n private _token: CancellationTokenInternal = new CancellationTokenInternal();\n\n /**\n * Gets the token currently associated with this source\n */\n public get token(): CancellationToken {\n return this._token;\n }\n\n /**\n * Cancels the current token and creates a new one\n */\n public newUnique(timeoutMs: number = -1): CancellationToken {\n this._token.cancel();\n this._token = new CancellationTokenInternal();\n\n if (timeoutMs != -1)\n setTimeout(() => this._token.cancel(), timeoutMs);\n\n return this._token;\n }\n\n /**\n * Cancels the current token\n */\n public cancel(): void {\n this._token.cancel();\n }\n}","export class ConsoleHook {\n private static commands: { [key: string]: Function } = {};\n\n static initialize() {\n if (!(window as any).r)\n (window as any).r = ConsoleHook.run.bind(ConsoleHook);\n }\n\n static register(commandName: string, method: Function) {\n ConsoleHook.initialize();\n ConsoleHook.commands[commandName] = method;\n }\n\n static run(input: string, ...additionalParams: any[]) {\n const [commandName, ...params] = input.split(' ');\n const command = ConsoleHook.commands[commandName];\n\n if (command) {\n return command(...params, ...additionalParams);\n }\n else {\n console.error(`Custom command \"${commandName}\" not found.`);\n }\n }\n}","import { Injectable, Injector, Type } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ServicesInit {\n constructor(private injector: Injector) {\n }\n\n async init<T>(serviceClass: any, ...params: unknown[]): Promise<T> {\n let className = `${serviceClass.name || 'unknown'}`;\n const instance = this.injector.get(serviceClass) as any;\n\n if (!instance)\n throw new Error(`Service not found: ${className}`);\n\n const hasInit = typeof instance.init === 'function';\n\n if (params.length > 0 && !hasInit)\n throw new Error(`Service ${className} has no init method but initialization parameters were provided.`);\n\n if (hasInit)\n await instance.init(...params);\n\n return instance as T;\n }\n}\n","import { computed, inject, Injectable, signal } from '@angular/core';\nimport { ILocalizationService } from './localization.interface';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LocalizationService implements ILocalizationService {\n private defaultLanguage = 'en';\n private storageKey = 'orcas-language';\n\n private translations: any = {};\n private loaded = false;\n\n private $language: ReturnType<typeof signal<string>>;\n public $currentLang = computed(() => this.$language());\n\n constructor() {\n this.$language = signal(this.getStoredLanguage());\n }\n\n public async init(\n translationsJson: string = '{}',\n defaultLanguage: string = 'en',\n storageKey: string = 'orcas-language'\n ): Promise<void> {\n this.defaultLanguage = defaultLanguage;\n this.storageKey = storageKey;\n this.$language.set(this.getStoredLanguage());\n\n try {\n this.translations = JSON.parse(translationsJson);\n this.loaded = true;\n }\n catch (err) {\n console.error('Failed to parse translations:', err);\n }\n }\n\n getLanguage(): string {\n return this.$language();\n }\n\n getDefaultLanguage(): string {\n return this.defaultLanguage;\n }\n\n setActiveLanguage(lang: string): void {\n if (lang !== this.$language()) {\n localStorage.setItem(this.storageKey, lang);\n this.$language.set(lang);\n }\n }\n\n translate(key: string, params?: any, language?: string): string {\n const lang = language || this.getLanguage();\n\n if (!this.loaded) {\n console.error('Localization: Translations not loaded yet!');\n return key;\n }\n\n let translation = null;\n\n // Handle pluralization: try singular suffix __1 first if count is 1\n if (params && params.count === 1)\n translation = this.resolveKey(`${key}__1`);\n\n if (!translation)\n translation = this.resolveKey(key);\n\n if (!translation) {\n console.warn(`Localization: Key not found for \"${key}\".`);\n return key;\n }\n\n let translatedText = translation[lang];\n\n if (!translatedText) {\n console.warn(`Localization: Key \"${key}\" not found for language \"${lang}\". Falling back to default language.`);\n translatedText = translation[this.defaultLanguage];\n }\n\n if (!translatedText) {\n console.error(`Localization: Key \"${key}\" not found for default language \"${this.defaultLanguage}\".`);\n return key;\n }\n\n if (params) {\n if (Array.isArray(params))\n return this.replaceArrayParams(translatedText, params);\n else\n return this.replaceObjectParams(translatedText, params);\n }\n\n return translatedText;\n }\n\n private resolveKey(key: string): any {\n const keys = key.split('.');\n let translation = this.translations;\n for (const k of keys) {\n if (!translation[k])\n return null;\n translation = translation[k];\n }\n return translation;\n }\n\n private getStoredLanguage(): string {\n return localStorage.getItem(this.storageKey) || this.defaultLanguage;\n }\n\n private replaceArrayParams(text: string, params: any[]): string {\n let result = text;\n params.forEach((param, index) => {\n result = result.replace(new RegExp(`\\\\{\\\\{${index}\\\\}\\\\}`, 'g'), param.toString());\n });\n return result;\n }\n\n private replaceObjectParams(text: string, params: any): string {\n let result = text;\n Object.keys(params).forEach(key => {\n result = result.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), params[key].toString());\n });\n return result;\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {LocalizationService} from './localization.service';\n\n@Pipe({\n name: 'localize',\n standalone: true,\n pure: false\n})\nexport class LocalizePipe implements PipeTransform {\n private lastLanguage: string = '';\n private lastKey: string = '';\n private lastParams: any;\n private lastResult: string = '';\n\n constructor(private localizationService: LocalizationService) {\n }\n\n transform(key: string, params?: any): string {\n if (this.localizationService.$currentLang() !== this.lastLanguage\n || key !== this.lastKey\n || params !== this.lastParams) {\n this.lastLanguage = this.localizationService.$currentLang();\n this.lastKey = key;\n this.lastParams = params;\n this.lastResult = this.localizationService.translate(key, params);\n }\n\n return this.lastResult;\n }\n}\n","/**\n * Echo - A flexible logging library\n * TypeScript port of Echo.cs core functionality (excluding Unity-specific features)\n */\n\n// ============================================================================\n// Enums\n// ============================================================================\n\nexport enum LogLevel {\n None = 0,\n Error = 1,\n Warn = 2,\n Info = 3,\n Debug = 4\n}\n\nenum LogMode {\n Always = 0,\n Once = 1\n}\n\nexport enum SystemColor {\n None,\n LabelOnly,\n LabelAndMessage\n}\n\n// ============================================================================\n// Interfaces\n// ============================================================================\n\nexport interface EchoLogWriter {\n writeLog(level: LogLevel, system: string, message: string): void;\n}\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\nexport class LogWriterConfig {\n timestamp: boolean = true;\n levelLabels: boolean = true;\n levelColors: boolean = true;\n systemColor: SystemColor = SystemColor.LabelOnly;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nclass Helpers {\n static fnv1a32(str: string, hash: number = 2166136261): number {\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return hash >>> 0; // Convert to unsigned 32-bit integer\n }\n\n static getElementFromHash<T>(collection: T[], stringToHash: string): T {\n const hash = Helpers.fnv1a32(stringToHash);\n const index = hash % collection.length;\n return collection[index];\n }\n}\n\nclass WritersHelpers {\n static getLevelLabel(level: LogLevel): string {\n switch (level) {\n case LogLevel.Debug: return \"DEBUG\";\n case LogLevel.Info: return \"INFO\";\n case LogLevel.Warn: return \"WARN\";\n case LogLevel.Error: return \"ERROR\";\n default: return \"???\";\n }\n }\n\n static readonly systemColors: string[] = [\n \"\\x1b[31m\", // Red\n \"\\x1b[32m\", // Green\n \"\\x1b[34m\", // Blue\n \"\\x1b[33m\", // Yellow\n \"\\x1b[36m\", // Cyan\n \"\\x1b[35m\" // Magenta\n ];\n\n static readonly levelColors: Map<LogLevel, string> = new Map([\n [LogLevel.Debug, \"\\x1b[37m\"], // White\n [LogLevel.Info, \"\\x1b[36m\"], // Cyan\n [LogLevel.Warn, \"\\x1b[33m\"], // Yellow\n [LogLevel.Error, \"\\x1b[31m\"] // Red\n ]);\n\n static readonly resetColor = \"\\x1b[0m\";\n static readonly grayColor = \"\\x1b[90m\";\n}\n\n// ============================================================================\n// Internal Classes\n// ============================================================================\n\nclass HashesManager {\n private hashes: Set<number> = new Set();\n\n tryAdd(system: string, message: string): boolean {\n let hash = Helpers.fnv1a32(message);\n hash = Helpers.fnv1a32(system, hash);\n if (this.hashes.has(hash)) {\n return false;\n }\n this.hashes.add(hash);\n return true;\n }\n\n clear(): void {\n this.hashes.clear();\n }\n}\n\nclass LoggerCore {\n private readonly logWriter: EchoLogWriter;\n private readonly echoSettings: EchoSettings;\n private readonly hashes: HashesManager;\n\n constructor(config: EchoSettings, hashes: HashesManager, logger: EchoLogWriter) {\n if (!config) throw new Error(\"config cannot be null\");\n if (!hashes) throw new Error(\"hashes cannot be null\");\n if (!logger) throw new Error(\"logger cannot be null\");\n\n this.echoSettings = config;\n this.hashes = hashes;\n this.logWriter = logger;\n }\n\n private isEnabled(system: string, level: LogLevel): boolean {\n return level <= this.echoSettings.getSystemLevel(system);\n }\n\n private shouldLogOnce(system: string, message: string): boolean {\n return this.hashes.tryAdd(system, message);\n }\n\n clearHashes(): void {\n this.hashes.clear();\n }\n\n private write(level: LogLevel, mode: LogMode, system: string, message: string): void {\n if (mode === LogMode.Always || this.shouldLogOnce(system, message)) {\n this.logWriter.writeLog(level, system, message);\n }\n }\n\n writeIfEnabled(level: LogLevel, mode: LogMode, system: string, message: string): void {\n if (this.isEnabled(system, level)) {\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled1<T1>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString1(format, param1);\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled2<T1, T2>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString2(format, param1, param2);\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled3<T1, T2, T3>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2, param3: T3): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString3(format, param1, param2, param3);\n this.write(level, mode, system, message);\n }\n }\n\n writeIfEnabled4<T1, T2, T3, T4>(level: LogLevel, mode: LogMode, system: string, format: string, param1: T1, param2: T2, param3: T3, param4: T4): void {\n if (this.isEnabled(system, level)) {\n const message = this.formatString4(format, param1, param2, param3, param4);\n this.write(level, mode, system, message);\n }\n }\n\n private formatString1<T1>(format: string, param1: T1): string {\n return format.replace(/\\{0\\}/g, String(param1));\n }\n\n private formatString2<T1, T2>(format: string, param1: T1, param2: T2): string {\n return format.replace(/\\{0\\}/g, String(param1)).replace(/\\{1\\}/g, String(param2));\n }\n\n private formatString3<T1, T2, T3>(format: string, param1: T1, param2: T2, param3: T3): string {\n return format.replace(/\\{0\\}/g, String(param1)).replace(/\\{1\\}/g, String(param2)).replace(/\\{2\\}/g, String(param3));\n }\n\n private formatString4<T1, T2, T3, T4>(format: string, param1: T1, param2: T2, param3: T3, param4: T4): string {\n return format.replace(/\\{0\\}/g, String(param1)).replace(/\\{1\\}/g, String(param2)).replace(/\\{2\\}/g, String(param3)).replace(/\\{3\\}/g, String(param4));\n }\n}\n\n// ============================================================================\n// Public Classes\n// ============================================================================\n\nexport class EchoSettings {\n private systemLevels: Map<string, LogLevel> = new Map();\n private _defaultLevel: LogLevel = LogLevel.Warn;\n private updateCallbacks: (() => void)[] = [];\n\n get defaultLevel(): LogLevel {\n return this._defaultLevel;\n }\n\n onUpdated(callback: () => void): void {\n this.updateCallbacks.push(callback);\n }\n\n private triggerUpdate(): void {\n for (const callback of this.updateCallbacks) {\n callback();\n }\n }\n\n setSystemLevel(system: string, level: LogLevel): void {\n this.throwIfInvalidSystem(system);\n this.systemLevels.set(system, level);\n this.triggerUpdate();\n }\n\n clearSystemLevel(system: string): void {\n this.throwIfInvalidSystem(system);\n if (this.systemLevels.delete(system)) {\n this.triggerUpdate();\n }\n }\n\n getSystemLevel(system: string): LogLevel {\n this.throwIfInvalidSystem(system);\n return this.systemLevels.get(system) ?? this._defaultLevel;\n }\n\n tryGetSystemLevel(system: string): { success: boolean; level?: LogLevel } {\n this.throwIfInvalidSystem(system);\n const level = this.systemLevels.get(system);\n return level !== undefined ? { success: true, level } : { success: false };\n }\n\n clearSystemLevels(): void {\n this.systemLevels.clear();\n this.triggerUpdate();\n }\n\n setDefaultLevel(level: LogLevel): void {\n this._defaultLevel = level;\n this.triggerUpdate();\n }\n\n getAllSystemLevels(): ReadonlyMap<string, LogLevel> {\n return this.systemLevels;\n }\n\n private throwIfInvalidSystem(system: string): void {\n if (!system || system.length === 0) {\n throw new Error(\"System name cannot be null or empty.\");\n }\n }\n}\n\nexport class EchoLogger {\n private readonly loggerCore: LoggerCore;\n\n constructor(loggerCore: LoggerCore) {\n if (!loggerCore) throw new Error(\"loggerCore cannot be null\");\n this.loggerCore = loggerCore;\n }\n\n // Debug Methods\n debug(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n debug1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Info Methods\n info(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n info1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Warn Methods\n warn(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n warn1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Error Methods\n error(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Always, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Always, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n error1(system: string, formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Once, system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Once, system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n}\n\nexport class EchoSystemLogger {\n private readonly loggerCore: LoggerCore;\n private readonly system: string;\n\n constructor(loggerCore: LoggerCore, system: string) {\n if (!loggerCore) throw new Error(\"loggerCore cannot be null\");\n if (!system) throw new Error(\"system cannot be null\");\n this.loggerCore = loggerCore;\n this.system = system;\n }\n\n // Debug Methods\n debug(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n debug1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Debug, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Info Methods\n info(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n info1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Info, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Info, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Warn Methods\n warn(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n warn1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Warn, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n // Error Methods\n error(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Always, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Always, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n\n error1(formatOrMessage: string, param1?: any, param2?: any, param3?: any, param4?: any): void {\n if (param1 === undefined) {\n this.loggerCore.writeIfEnabled(LogLevel.Error, LogMode.Once, this.system, formatOrMessage);\n } else if (param2 === undefined) {\n this.loggerCore.writeIfEnabled1(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1);\n } else if (param3 === undefined) {\n this.loggerCore.writeIfEnabled2(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1, param2);\n } else if (param4 === undefined) {\n this.loggerCore.writeIfEnabled3(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1, param2, param3);\n } else {\n this.loggerCore.writeIfEnabled4(LogLevel.Error, LogMode.Once, this.system, formatOrMessage, param1, param2, param3, param4);\n }\n }\n}\n\nexport class Echo {\n private readonly loggerCore: LoggerCore;\n private readonly loggers: Map<string, EchoLogger | EchoSystemLogger> = new Map();\n private readonly _settings: EchoSettings;\n\n constructor(writer: EchoLogWriter) {\n if (!writer) throw new Error(\"writer cannot be null\");\n const hashes = new HashesManager();\n this._settings = new EchoSettings();\n this.loggerCore = new LoggerCore(this._settings, hashes, writer);\n }\n\n getLogger(): EchoLogger {\n const key = \"\";\n if (!this.loggers.has(key)) {\n this.loggers.set(key, new EchoLogger(this.loggerCore));\n }\n return this.loggers.get(key) as EchoLogger;\n }\n\n getSystemLogger(system: string): EchoSystemLogger {\n if (!system || system.length === 0) {\n throw new Error(\"System name cannot be null or empty.\");\n }\n\n if (!this.loggers.has(system)) {\n this.loggers.set(system, new EchoSystemLogger(this.loggerCore, system));\n }\n return this.loggers.get(system) as EchoSystemLogger;\n }\n\n get settings(): EchoSettings {\n return this._settings;\n }\n}\n\n// ============================================================================\n// Built-in Log Writers\n// ============================================================================\n\nclass ConsoleLogWriter implements EchoLogWriter {\n private readonly config: LogWriterConfig;\n\n constructor(config: LogWriterConfig) {\n if (!config) throw new Error(\"config cannot be null\");\n this.config = config;\n }\n\n writeLog(level: LogLevel, system: string, message: string): void {\n let output = \"\";\n\n if (this.config.timestamp) {\n const now = new Date();\n const timestamp = this.formatTimestamp(now);\n output += `${WritersHelpers.grayColor}[${timestamp}]${WritersHelpers.resetColor} `;\n }\n\n if (this.config.levelLabels) {\n const levelLabel = WritersHelpers.getLevelLabel(level);\n if (this.config.levelColors) {\n const color = WritersHelpers.levelColors.get(level) ?? \"\";\n output += `${color}[${levelLabel}]${WritersHelpers.resetColor} `;\n } else {\n output += `[${levelLabel}] `;\n }\n }\n\n const systemColor = this.config.systemColor === SystemColor.LabelOnly ||\n this.config.systemColor === SystemColor.LabelAndMessage\n ? Helpers.getElementFromHash(WritersHelpers.systemColors, system)\n : \"\";\n\n if (systemColor) {\n output += `${systemColor}[${system}]${WritersHelpers.resetColor} `;\n } else {\n output += `[${system}] `;\n }\n\n if (this.config.systemColor === SystemColor.LabelAndMessage && systemColor) {\n output += `${systemColor}${message}${WritersHelpers.resetColor}`;\n } else {\n output += message;\n }\n\n console.log(output);\n }\n\n private formatTimestamp(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n const milliseconds = String(date.getMilliseconds()).padStart(3, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}.${milliseconds}`;\n }\n}\n\n// ============================================================================\n// Public API Helpers\n// ============================================================================\n\nexport class EchoConsole {\n static new(config?: LogWriterConfig): Echo {\n const writerConfig = config ?? new LogWriterConfig();\n const writer = new ConsoleLogWriter(writerConfig);\n return new Echo(writer);\n }\n}\n","/**\n * Constants for Echo logging system names.\n * Using constants ensures consistency and prevents typos.\n */\nexport class LogSystems {\n /** System for profiling and performance measurements */\n static readonly PROFILING = 'Profiling';\n \n /** System for general application logs */\n static readonly GENERAL = 'General';\n \n /** System for Git-related operations */\n static readonly GIT = 'Git';\n \n /** System for UI and visual operations */\n static readonly UI = 'UI';\n \n /** System for repository operations */\n static readonly REPOSITORY = 'Repository';\n}\n","/**\n * Echo provider for Angular dependency injection.\n * Provides a singleton Echo instance with console writer.\n */\nimport { InjectionToken, Provider } from '@angular/core';\nimport { Echo, EchoConsole } from './echo';\n\n/**\n * Injection token for Echo logger instance\n */\nexport const ECHO = new InjectionToken<Echo>('Echo Logger Instance');\n\n/**\n * Factory function to create Echo instance\n */\nexport function echoFactory(): Echo {\n return EchoConsole.new();\n}\n\n/**\n * Provider for Echo logger\n * Use this in your module providers or inject it in services\n */\nexport const ECHO_PROVIDER: Provider = {\n provide: ECHO,\n useFactory: echoFactory\n};\n","import {Injectable} from '@angular/core';\nimport {Location} from '@angular/common';\nimport {Router, NavigationEnd} from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NavigationStackService {\n private history: string[] = [];\n\n constructor(private router: Router, private location: Location) {\n this.router.events.subscribe((event: any) => {\n if (event instanceof NavigationEnd)\n this.history.push(event.urlAfterRedirects);\n });\n }\n\n public goBack(): void {\n this.history.pop();\n if (this.history.length > 0)\n this.location.back();\n else\n this.router.navigateByUrl(\"/\").then();\n this.history.pop();\n }\n\n public getBack(): string {\n if (this.history.length > 1)\n return this.history[this.history.length - 2];\n\n return '';\n }\n}","import {Directive, HostListener} from '@angular/core';\nimport {NavigationStackService} from './navigation-stack.service';\n\n@Directive({\n selector: '[back-on-click]',\n standalone: true\n})\nexport class BackOnClickDirective {\n constructor(private navigationStack: NavigationStackService) {\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event): void {\n if (event)\n event.preventDefault();\n\n this.navigationStack.goBack();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport abstract class FilesService {\n /**\n * Initializes the service. \n * This should handle any setup required by the specific implementation.\n */\n abstract init(...args: any[]): Promise<void>;\n\n /**\n * Joins a filename with the storage base directory to get a full path.\n * Returns a string or a Promise of a string depending on implementation.\n * In some platforms, this may return null if paths are not supported.\n */\n abstract joinStoragePath(filePath: string): Promise<string | null>;\n\n /**\n * Checks if a file exists in the platform-specific storage.\n */\n abstract hasInStorage(filePath: string): Promise<boolean>;\n\n /**\n * Reads a file from the platform-specific storage.\n */\n abstract readFromStorage(filePath: string): Promise<string>;\n\n /**\n * Writes data to a file in the platform-specific storage.\n */\n abstract writeToStorage(filePath: string, data: string): Promise<void>;\n\n /**\n * Checks if a file exists in the project's assets/resources.\n */\n abstract hasInProject(filePath: string): Promise<boolean>;\n\n /**\n * Reads a file from the project's assets/resources.\n */\n abstract readFromProject(filePath: string): Promise<string>;\n}","import { computed, inject, Injectable, signal } from '@angular/core';\nimport { FilesService } from './files';\nimport { Async } from \"../async/async\";\n\nenum Status {\n NotInitialized,\n Loading,\n Idle,\n Saving\n}\n\ninterface BoxData {\n [key: string]: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileBoxService {\n private files: FilesService = inject(FilesService);\n private status: Status = Status.NotInitialized;\n private path: string = '';\n\n private saveEnqueued: boolean = false;\n\n private $dataWritable = signal<BoxData>({});\n public $data = computed(() => {\n if (this.status === Status.NotInitialized)\n console.error('Service is not initialized.');\n else if (this.status === Status.Loading)\n console.error('Service is loading.');\n\n return this.$dataWritable();\n });\n\n async init(path: string) {\n if (this.status !== Status.NotInitialized) {\n console.error('Service is already initialized.');\n return;\n }\n\n this.path = path;\n\n try {\n this.status = Status.Loading;\n if (await this.files.hasInStorage(this.path)) {\n const fileContent = await this.files.readFromStorage(this.path);\n this.$dataWritable.set(JSON.parse(fileContent));\n }\n }\n catch (error) {\n console.error('Failed to load file:', error);\n this.$dataWritable.set({});\n }\n finally {\n this.status = Status.Idle;\n }\n }\n\n has(key: string): boolean {\n return key in this.$data();\n }\n\n set(key: string, value: any): void {\n this.checkType(value);\n const newData = { ...this.$dataWritable() };\n newData[key] = value;\n this.$dataWritable.set(newData);\n }\n\n setAll(data: BoxData): void {\n this.$dataWritable.set(data);\n }\n\n remove(key: string): void {\n const newData = { ...this.$dataWritable() };\n delete newData[key];\n this.$dataWritable.set(newData);\n }\n\n private checkType(value: any) {\n if (value instanceof Function)\n throw new Error('Cannot save functions.');\n\n if (value instanceof Promise)\n throw new Error('Cannot save promises.');\n }\n\n async save() {\n if (this.saveEnqueued)\n return;\n\n this.saveEnqueued = true;\n\n while (this.status === Status.Saving)\n await Async.delay(100);\n\n this.saveEnqueued = false;\n\n try {\n this.status = Status.Saving;\n const dataString = JSON.stringify(this.$data());\n await this.files.writeToStorage(this.path, dataString);\n }\n catch (error) {\n console.error('Failed to save file:', error);\n }\n finally {\n this.status = Status.Idle;\n }\n }\n}\n","import { computed, Signal } from '@angular/core';\n\nexport abstract class KeySignals {\n protected abstract $data(): Record<string, any>;\n protected abstract setRawValue(key: string, value: any): Promise<void>;\n protected abstract setMultipleRawValues(values: Record<string, any>): Promise<void>;\n\n protected readonly SEPARATOR = '|';\n\n public getCanonicalKey(path: string[]): string {\n return path.join(this.SEPARATOR);\n }\n\n public getNewSignal<T>(defaultValue: T, ...path: string[]): Signal<T> {\n return computed(() => this.getValue(defaultValue, ...path));\n }\n\n public getValue<T>(defaultValue: T, ...path: string[]): T {\n const key = this.getCanonicalKey(path);\n const data = this.$data();\n return key in data ? data[key] : defaultValue;\n }\n\n public async set(value: any, ...path: string[]): Promise<void> {\n const key = this.getCanonicalKey(path);\n await this.setRawValue(key, value);\n }\n\n /**\n * Clears all keys that start with the given prefix.\n */\n public async clearByPrefix(...pathPrefix: string[]): Promise<void> {\n const prefix = this.getCanonicalKey(pathPrefix) + this.SEPARATOR;\n const data = this.$data();\n const updatedData = { ...data };\n let changed = false;\n\n for (const key in updatedData) {\n if (key.startsWith(prefix)) {\n delete updatedData[key];\n changed = true;\n }\n }\n\n if (changed) {\n await this.setMultipleRawValues(updatedData);\n }\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { KeySignals } from './key-signals';\nimport { FileBoxService } from './file-box.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SettingsSignalsService extends KeySignals {\n private filebox = inject(FileBoxService);\n\n protected override $data(): Record<string, any> {\n return this.filebox.$data();\n }\n\n protected override async setRawValue(key: string, value: any): Promise<void> {\n this.filebox.set(key, value);\n await this.filebox.save();\n }\n\n protected override async setMultipleRawValues(values: Record<string, any>): Promise<void> {\n this.filebox.setAll(values);\n await this.filebox.save();\n }\n}\n","import { inject, Injectable, Signal } from \"@angular/core\";\nimport { FileBoxService } from \"./file-box.service\";\nimport { SettingsSignalsService } from \"./settings-signals.service\";\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class SettingsService {\n private fileboxService = inject(FileBoxService);\n private sss = inject(SettingsSignalsService);\n private readonly SETTINGS_KEY = \"app-settings\";\n\n public getNewSignal<T>(defaultValue: T, ...path: string[]): Signal<T> {\n return this.sss.getNewSignal(defaultValue, this.SETTINGS_KEY, ...path);\n }\n\n public async set(value: any, ...path: string[]): Promise<void> {\n await this.sss.set(value, this.SETTINGS_KEY, ...path);\n }\n\n public async save(): Promise<void> {\n await this.fileboxService.save();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilesService } from './files';\n\n@Injectable()\nexport class TauriFilesService extends FilesService {\n private static _isTauri: boolean | null = null;\n\n static isSupported(): boolean {\n if (this._isTauri !== null) return this._isTauri;\n\n try {\n // Check for window.__TAURI_INTERNALS__ which is usually present in v2\n this._isTauri = !!((window as any).__TAURI_INTERNALS__);\n } catch {\n this._isTauri = false;\n }\n return this._isTauri;\n }\n\n async init() {\n // No special initialization needed for Tauri FS plugin beyond what is handled lazily\n }\n\n async joinStoragePath(filePath: string): Promise<string | null> {\n const { appLocalDataDir, join } = await import('@tauri-apps/api/path');\n const dataDir = await appLocalDataDir();\n return await join(dataDir, filePath);\n }\n\n async hasInStorage(filePath: string): Promise<boolean> {\n try {\n const { exists } = await import('@tauri-apps/plugin-fs');\n const { BaseDirectory } = await import('@tauri-apps/api/path');\n return await exists(filePath, { baseDir: BaseDirectory.AppLocalData });\n } catch (error) {\n console.error('TauriFilesService.hasInStorage error:', error);\n return false;\n }\n }\n\n async readFromStorage(filePath: string): Promise<string> {\n const { readTextFile } = await import('@tauri-apps/plugin-fs');\n const { BaseDirectory } = await import('@tauri-apps/api/path');\n return await readTextFile(filePath, { baseDir: BaseDirectory.AppLocalData });\n }\n\n async writeToStorage(filePath: string, data: string): Promise<void> {\n const { writeTextFile } = await import('@tauri-apps/plugin-fs');\n const { BaseDirectory } = await import('@tauri-apps/api/path');\n await writeTextFile(filePath, data, { baseDir: BaseDirectory.AppLocalData });\n }\n\n async hasInProject(filePath: string): Promise<boolean> {\n try {\n const response = await fetch(filePath, { method: 'HEAD' });\n return response.ok;\n } catch {\n return false;\n }\n }\n\n async readFromProject(filePath: string): Promise<string> {\n const response = await fetch(filePath);\n if (!response.ok) {\n throw new Error(`Failed to read project file: ${filePath} (${response.status})`);\n }\n return await response.text();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FilesService } from './files';\n\n@Injectable()\nexport class CapacitorFilesService extends FilesService {\n static isSupported(): boolean {\n try {\n return !!(window as any).Capacitor?.isNativePlatform();\n } catch {\n return false;\n }\n }\n\n async init(): Promise<void> {\n // No special initialization needed for Capacitor Filesystem\n }\n\n async joinStoragePath(filePath: string): Promise<string | null> {\n const { Filesystem, Directory } = await import('@capacitor/filesystem');\n const result = await Filesystem.getUri({ path: filePath, directory: Directory.Data });\n return result.uri;\n }\n\n async hasInStorage(filePath: string): Promise<boolean> {\n try {\n const { Filesystem, Directory } = await import('@capacitor/filesystem');\n await Filesystem.stat({ path: filePath, directory: Directory.Data });\n return true;\n } catch {\n return false;\n }\n }\n\n async readFromStorage(filePath: string): Promise<string> {\n const { Filesystem, Directory, Encoding } = await import('@capacitor/filesystem');\n const result = await Filesystem.readFile({\n path: filePath,\n directory: Directory.Data,\n encoding: Encoding.UTF8\n });\n return result.data as string;\n }\n\n async writeToStorage(filePath: string, data: string): Promise<void> {\n const { Filesystem, Directory, Encoding } = await import('@capacitor/filesystem');\n await Filesystem.writeFile({\n path: filePath,\n data,\n directory: Directory.Data,\n encoding: Encoding.UTF8,\n recursive: true\n });\n }\n\n async hasInProject(filePath: string): Promise<boolean> {\n try {\n const response = await fetch(filePath, { method: 'HEAD' });\n return response.ok;\n } catch {\n return false;\n }\n }\n\n async readFromProject(filePath: string): Promise<string> {\n const response = await fetch(filePath);\n if (!response.ok) {\n throw new Error(`Failed to read project file: ${filePath} (${response.status})`);\n }\n return await response.text();\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { lastValueFrom } from 'rxjs';\nimport { FilesService } from './files';\n\n@Injectable()\nexport class LocalStorageFilesService extends FilesService {\n private http = inject(HttpClient);\n\n static isSupported(): boolean {\n return typeof window !== 'undefined' && !!window.localStorage;\n }\n\n async init() {\n // LocalStorage is ready immediately\n }\n\n async joinStoragePath(filePath: string): Promise<string | null> {\n return null;\n }\n\n async hasInStorage(filePath: string): Promise<boolean> {\n return localStorage.getItem(filePath) !== null;\n }\n\n async readFromStorage(filePath: string): Promise<string> {\n const data = localStorage.getItem(filePath);\n if (data === null) throw new Error(`File not found in localStorage: ${filePath}`);\n return data;\n }\n\n async writeToStorage(filePath: string, data: string): Promise<void> {\n localStorage.setItem(filePath, data);\n }\n\n async hasInProject(filePath: string): Promise<boolean> {\n try {\n // In a browser, we check if we can fetch it via HTTP\n await lastValueFrom(this.http.head(filePath));\n return true;\n } catch {\n return false;\n }\n }\n\n async readFromProject(filePath: string): Promise<string> {\n return await lastValueFrom(this.http.get(filePath, { responseType: 'text' }));\n }\n}\n","import { computed, effect, inject, Injectable } from '@angular/core';\nimport { SettingsService } from \"../storage/settings.service\";\n\nexport enum ThemeType {\n Unset = '',\n Light = 'light',\n Dark = 'dark',\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeService {\n private settings = inject(SettingsService);\n public $theme = this.settings.getNewSignal<ThemeType>(ThemeType.Unset, 'theme');\n\n public $darkMode = computed(() => {\n const theme = this.$theme();\n let isDarkMode: boolean = theme === ThemeType.Unset\n ? window.matchMedia('(prefers-color-scheme: dark)').matches\n : theme === ThemeType.Dark;\n\n return isDarkMode;\n });\n\n private effectSetDarkMode = effect(async () => {\n document.documentElement.classList.toggle('dark', this.$darkMode());\n });\n\n public async setTheme(theme: ThemeType) {\n await this.settings.set(theme, 'theme');\n }\n}\n","import { Component, input, output, ElementRef, HostListener, booleanAttribute, signal, ViewChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'context-menu',\n standalone: true,\n imports: [CommonModule],\n template: `\n @if ($isVisible() || $isSubmenu()) {\n <div\n #container\n class=\"oa-menu\"\n [class.oa-menu--fixed]=\"!$isSubmenu()\"\n [style.left.px]=\"!$isSubmenu() ? $x() : null\"\n [style.top.px]=\"!$isSubmenu() ? $y() : null\"\n [style.visibility]=\"$isMeasuring() ? 'hidden' : 'visible'\"\n (click)=\"$event.stopPropagation()\">\n <ng-content></ng-content>\n </div>\n }\n `\n})\nexport class ContextMenuComponent {\n $isSubmenu = input(false, { transform: booleanAttribute });\n\n $isVisible = signal(false);\n $isMeasuring = signal(false);\n $x = signal(0);\n $y = signal(0);\n\n @ViewChild('container') container?: ElementRef<HTMLDivElement>;\n\n close = output<void>();\n\n constructor(private elementRef: ElementRef) { }\n\n @HostListener('document:mousedown', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.$isSubmenu()) return;\n\n // If visible and click is outside, close\n if (this.$isVisible() && !this.elementRef.nativeElement.contains(event.target)) {\n this.closeMenu();\n }\n }\n\n show(x: number, y: number) {\n if (this.$isSubmenu()) return;\n\n this.$x.set(x);\n this.$y.set(y);\n this.$isMeasuring.set(true);\n this.$isVisible.set(true);\n\n // Wait for DOM to render the menu so we can measure it\n setTimeout(() => {\n if (this.container) {\n const rect = this.container.nativeElement.getBoundingClientRect();\n const width = rect.width;\n const height = rect.height;\n\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n\n let newX = x;\n let newY = y;\n\n if (x + width > windowWidth)\n newX = x - width;\n\n if (y + height > windowHeight)\n newY = y - height;\n\n // Final safety check to ensure it doesn't go off the top/left edges\n this.$x.set(Math.max(0, newX));\n this.$y.set(Math.max(0, newY));\n }\n this.$isMeasuring.set(false);\n }, 0);\n }\n\n hide() {\n this.$isVisible.set(false);\n this.$isMeasuring.set(false);\n }\n\n private closeMenu() {\n this.hide();\n this.close.emit();\n }\n}\n","import { Component } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'context-header',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"oa-menu-header\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class ContextHeaderComponent { }\n","import { Component, input, signal, booleanAttribute } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'context-button',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"oa-menu-item\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n <button\n class=\"oa-menu-item__button\"\n [class.oa-menu-item__button--danger]=\"danger()\"\n [disabled]=\"disabled()\">\n <div class=\"oa-menu-item__content\">\n <ng-content select=\"[icon]\"></ng-content>\n <ng-content></ng-content>\n </div>\n @if (hasSubmenu()) {\n <span class=\"oa-menu-item__arrow\">▶</span>\n }\n </button>\n\n @if (hasSubmenu() && $showSubmenu() && !disabled()) {\n <div class=\"oa-menu-item__submenu\">\n <ng-content select=\"context-menu\"></ng-content>\n </div>\n }\n </div>\n `\n})\nexport class ContextButtonComponent {\n danger = input(false, { transform: booleanAttribute });\n disabled = input(false, { transform: booleanAttribute });\n hasSubmenu = input(false, { transform: booleanAttribute });\n\n $showSubmenu = signal(false);\n\n onMouseEnter() {\n if (this.hasSubmenu() && !this.disabled()) {\n this.$showSubmenu.set(true);\n }\n }\n\n onMouseLeave() {\n if (this.hasSubmenu() && !this.disabled()) {\n this.$showSubmenu.set(false);\n }\n }\n}\n","import { Directive, input, output, HostListener, ElementRef } from '@angular/core';\nimport { ContextMenuComponent } from './context-menu.component';\n\n@Directive({\n selector: '[appContextMenu]',\n standalone: true\n})\nexport class ContextMenuTriggerDirective {\n appContextMenu = input.required<ContextMenuComponent>();\n\n beforeOpen = output<void>();\n\n constructor(private elementRef: ElementRef) { }\n\n @HostListener('contextmenu', ['$event'])\n onContextMenu(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n // Notify parent to prepare data\n this.beforeOpen.emit();\n\n // Show menu at cursor position\n this.appContextMenu().show(event.clientX, event.clientY);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LocalizationService","i1.NavigationStackService"],"mappings":"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"}
|
package/localization/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Angular service and pipe for loading and applying multi-language translations at
|
|
|
15
15
|
`LocalizationService` is the concrete implementation. It loads a JSON translation file over HTTP and exposes a reactive API based on Angular signals.
|
|
16
16
|
|
|
17
17
|
**Key features:**
|
|
18
|
-
- Loads translations from a configurable JSON
|
|
18
|
+
- Loads translations from a configurable JSON string (default: `{}`).
|
|
19
19
|
- Persists the active language in `localStorage` and restores it on startup.
|
|
20
20
|
- Supports **nested keys** via dot notation (e.g. `"settings.title"`).
|
|
21
21
|
- Supports **pluralization** via the `__1` suffix convention (e.g. a key named `"items__1"` is used when `params.count === 1`).
|
|
@@ -29,7 +29,7 @@ Angular service and pipe for loading and applying multi-language translations at
|
|
|
29
29
|
|
|
30
30
|
| Method | Description |
|
|
31
31
|
|---|---|
|
|
32
|
-
| `init(
|
|
32
|
+
| `init(translationsJson?, defaultLanguage?, storageKey?)` | Parses the translation JSON string and configures defaults. Call during app bootstrap. |
|
|
33
33
|
| `getLanguage()` | Returns the current language code. |
|
|
34
34
|
| `getDefaultLanguage()` | Returns the default/fallback language code. |
|
|
35
35
|
| `setActiveLanguage(lang)` | Switches the active language and persists it. |
|
|
@@ -62,7 +62,8 @@ Angular service and pipe for loading and applying multi-language translations at
|
|
|
62
62
|
|
|
63
63
|
```typescript
|
|
64
64
|
// Bootstrap (e.g. in APP_INITIALIZER):
|
|
65
|
-
await
|
|
65
|
+
const translations = await fetch('assets/translations.json').then(res => res.text());
|
|
66
|
+
await servicesInit.init(LocalizationService, translations, 'en');
|
|
66
67
|
|
|
67
68
|
// In a template:
|
|
68
69
|
{{ 'greeting' | localize: { name: 'World' } }}
|
package/package.json
CHANGED
package/styles.css
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* orcas-angular context menu styles
|
|
3
|
+
*
|
|
4
|
+
* Import this file once in your application:
|
|
5
|
+
* @import "orcas-angular/styles.css";
|
|
6
|
+
*
|
|
7
|
+
* Override CSS custom properties to skin the menus:
|
|
8
|
+
*
|
|
9
|
+
* :root {
|
|
10
|
+
* --oa-menu-bg: #ffffff;
|
|
11
|
+
* --oa-menu-border-color: #e0e0e0;
|
|
12
|
+
* --oa-menu-text-color: #1e1e1e;
|
|
13
|
+
* --oa-menu-text-secondary: #666666;
|
|
14
|
+
* --oa-menu-item-hover-bg: #f5f5f5;
|
|
15
|
+
* --oa-menu-item-danger-color: #ef4444;
|
|
16
|
+
* --oa-menu-item-danger-hover-bg: #ef4444;
|
|
17
|
+
* --oa-menu-item-danger-hover-text: #ffffff;
|
|
18
|
+
* --oa-menu-radius: 4px;
|
|
19
|
+
* --oa-menu-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
20
|
+
* --oa-menu-min-width: 200px;
|
|
21
|
+
* --oa-menu-font-size: 0.875rem;
|
|
22
|
+
* --oa-menu-z-index: 50;
|
|
23
|
+
* --oa-menu-submenu-z-index: 60;
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* Dark mode is applied when a `.dark` class is present on any ancestor element.
|
|
27
|
+
* You can also override the dark defaults the same way inside a `.dark` block.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
/* ── Default (light) theme ─────────────────────────────────────────────── */
|
|
31
|
+
|
|
32
|
+
:root {
|
|
33
|
+
--oa-menu-bg: #ffffff;
|
|
34
|
+
--oa-menu-border-color: #e0e0e0;
|
|
35
|
+
--oa-menu-text-color: #1e1e1e;
|
|
36
|
+
--oa-menu-text-secondary: #666666;
|
|
37
|
+
--oa-menu-item-hover-bg: #f5f5f5;
|
|
38
|
+
|
|
39
|
+
--oa-menu-item-danger-color: #ef4444;
|
|
40
|
+
--oa-menu-item-danger-hover-bg: #ef4444;
|
|
41
|
+
--oa-menu-item-danger-hover-text: #ffffff;
|
|
42
|
+
|
|
43
|
+
--oa-menu-radius: 4px;
|
|
44
|
+
--oa-menu-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
45
|
+
--oa-menu-min-width: 200px;
|
|
46
|
+
--oa-menu-font-size: 0.875rem;
|
|
47
|
+
|
|
48
|
+
--oa-menu-z-index: 50;
|
|
49
|
+
--oa-menu-submenu-z-index: 60;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* ── Dark theme (.dark class on any ancestor) ───────────────────────────── */
|
|
53
|
+
|
|
54
|
+
:where(.dark, .dark *) {
|
|
55
|
+
--oa-menu-bg: #2a2a2a;
|
|
56
|
+
--oa-menu-border-color: #333333;
|
|
57
|
+
--oa-menu-text-color: #e0e0e0;
|
|
58
|
+
--oa-menu-text-secondary: #aaaaaa;
|
|
59
|
+
--oa-menu-item-hover-bg: #383838;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ── Host element display ───────────────────────────────────────────────── */
|
|
63
|
+
|
|
64
|
+
context-menu {
|
|
65
|
+
display: contents;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
context-button,
|
|
69
|
+
context-header {
|
|
70
|
+
display: block;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* ── Menu container ─────────────────────────────────────────────────────── */
|
|
74
|
+
|
|
75
|
+
.oa-menu {
|
|
76
|
+
background-color: var(--oa-menu-bg);
|
|
77
|
+
border: 1px solid var(--oa-menu-border-color);
|
|
78
|
+
border-radius: var(--oa-menu-radius);
|
|
79
|
+
box-shadow: var(--oa-menu-shadow);
|
|
80
|
+
min-width: var(--oa-menu-min-width);
|
|
81
|
+
color: var(--oa-menu-text-color);
|
|
82
|
+
font-size: var(--oa-menu-font-size);
|
|
83
|
+
padding: 4px 0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Root menu: fixed-position, driven by JS x/y */
|
|
87
|
+
.oa-menu--fixed {
|
|
88
|
+
position: fixed;
|
|
89
|
+
z-index: var(--oa-menu-z-index);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* ── Menu item wrapper ──────────────────────────────────────────────────── */
|
|
93
|
+
|
|
94
|
+
.oa-menu-item {
|
|
95
|
+
position: relative;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* ── Menu item button ───────────────────────────────────────────────────── */
|
|
99
|
+
|
|
100
|
+
.oa-menu-item__button {
|
|
101
|
+
display: flex;
|
|
102
|
+
align-items: center;
|
|
103
|
+
justify-content: space-between;
|
|
104
|
+
gap: 8px;
|
|
105
|
+
width: 100%;
|
|
106
|
+
text-align: left;
|
|
107
|
+
padding: 8px 12px;
|
|
108
|
+
background: transparent;
|
|
109
|
+
border: none;
|
|
110
|
+
color: inherit;
|
|
111
|
+
font-size: inherit;
|
|
112
|
+
cursor: pointer;
|
|
113
|
+
transition: background-color 100ms, color 100ms;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.oa-menu-item__button:not(:disabled):hover {
|
|
117
|
+
background-color: var(--oa-menu-item-hover-bg);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.oa-menu-item__button:disabled {
|
|
121
|
+
opacity: 0.5;
|
|
122
|
+
cursor: not-allowed;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Danger variant */
|
|
126
|
+
.oa-menu-item__button--danger:not(:disabled) {
|
|
127
|
+
color: var(--oa-menu-item-danger-color);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.oa-menu-item__button--danger:not(:disabled):hover {
|
|
131
|
+
background-color: var(--oa-menu-item-danger-hover-bg);
|
|
132
|
+
color: var(--oa-menu-item-danger-hover-text);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* Icon + label group */
|
|
136
|
+
.oa-menu-item__content {
|
|
137
|
+
display: flex;
|
|
138
|
+
align-items: center;
|
|
139
|
+
gap: 8px;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Submenu arrow indicator */
|
|
143
|
+
.oa-menu-item__arrow {
|
|
144
|
+
font-size: 10px;
|
|
145
|
+
color: var(--oa-menu-text-secondary);
|
|
146
|
+
opacity: 0.5;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Submenu wrapper: positions the nested menu to the right of the item */
|
|
150
|
+
.oa-menu-item__submenu {
|
|
151
|
+
position: absolute;
|
|
152
|
+
left: 100%;
|
|
153
|
+
top: 0;
|
|
154
|
+
margin-left: -2px;
|
|
155
|
+
z-index: var(--oa-menu-submenu-z-index);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* ── Menu header ────────────────────────────────────────────────────────── */
|
|
159
|
+
|
|
160
|
+
.oa-menu-header {
|
|
161
|
+
padding: 6px 12px;
|
|
162
|
+
font-size: 0.75rem;
|
|
163
|
+
font-weight: 600;
|
|
164
|
+
color: var(--oa-menu-text-secondary);
|
|
165
|
+
white-space: nowrap;
|
|
166
|
+
overflow: hidden;
|
|
167
|
+
text-overflow: ellipsis;
|
|
168
|
+
border-bottom: 1px solid var(--oa-menu-border-color);
|
|
169
|
+
margin-bottom: 4px;
|
|
170
|
+
}
|
package/types/orcas-angular.d.ts
CHANGED
|
@@ -61,6 +61,8 @@ interface ILocalizationService {
|
|
|
61
61
|
getDefaultLanguage(): string;
|
|
62
62
|
/** Sets the current active language */
|
|
63
63
|
setActiveLanguage(lang: string): void;
|
|
64
|
+
/** Initializes the service with a JSON string of translations */
|
|
65
|
+
init(translationsJson: string, defaultLanguage?: string, storageKey?: string): Promise<void>;
|
|
64
66
|
/** Translates a key, possibly with params and for a specific language */
|
|
65
67
|
translate(key: string, params?: any, language?: string): string;
|
|
66
68
|
}
|
|
@@ -72,9 +74,8 @@ declare class LocalizationService implements ILocalizationService {
|
|
|
72
74
|
private loaded;
|
|
73
75
|
private $language;
|
|
74
76
|
$currentLang: i0.Signal<string>;
|
|
75
|
-
private http;
|
|
76
77
|
constructor();
|
|
77
|
-
init(
|
|
78
|
+
init(translationsJson?: string, defaultLanguage?: string, storageKey?: string): Promise<void>;
|
|
78
79
|
getLanguage(): string;
|
|
79
80
|
getDefaultLanguage(): string;
|
|
80
81
|
setActiveLanguage(lang: string): void;
|