restore backup and add opencode support

This commit is contained in:
libretech committed 2025-09-23 12:02:03 +02:00
1 parent b99d2ff835
commit c295660631
72 files changed
+7035 -7198

No files matched your search

@@ -0,0 +1,422 @@
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* Copyright (C) 2018 Michael Czechowski <mail@dailysh.it>
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; version 2.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as tslib_1 from "tslib";
import { ViewChild, Component, Input, Output, EventEmitter, HostListener } from '@angular/core';
import { NlsCanvasService } from './../services/canvas.service';
import { NlsHistoryService } from './../services/history.service';
import { NlsMathService } from './../services/math.service';
import { NlsGraphService } from './../services/graph.service';
/** @type {?} */
var RESIZING_TIMEOUT = 800;
var NlsGraphsComponent = /** @class */ (function () {
function NlsGraphsComponent(canvasService, historyService, math, graphService) {
this.canvasService = canvasService;
this.historyService = historyService;
this.math = math;
this.graphService = graphService;
this.svgChange = new EventEmitter();
this.graphChange = new EventEmitter();
this.genLoadedAllGraphs = this.countLoadedGraphs();
this.resizingWindow = false;
}
/**
* @param {?} event
* @return {?}
*/
NlsGraphsComponent.prototype.onResize = /**
* @param {?} event
* @return {?}
*/
function (event) {
var _this = this;
clearTimeout(this.resizingWindow);
this.resizingWindow = setTimeout(function () {
_this.canvas = _this.adjustCanvas();
_this.matrix = _this.calcMatrix();
_this.updateGraphs();
}, RESIZING_TIMEOUT);
};
/**
* @param {?} changes
* @return {?}
*/
NlsGraphsComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
this.canvas = this.adjustCanvas();
this.matrix = this.calcMatrix();
if (changes["config"]) {
this.updateGraphs();
}
if (this.restoredHistory && this.restoredHistory.hash !== this.hash) {
this.restoreGraph();
}
};
/**
* @return {?}
*/
NlsGraphsComponent.prototype.restoreGraph = /**
* @return {?}
*/
function () {
this.graphs = this.restoredHistory.graphs;
this.hash = this.restoredHistory.hash;
};
/**
* @return {?}
*/
NlsGraphsComponent.prototype.saveHistory = /**
* @return {?}
*/
function () {
this.hash = this.historyService.hash(this.graphs);
this.historyService.save(this.graphs, this.config);
};
/**
* @return {?}
*/
NlsGraphsComponent.prototype.saveGraph = /**
* @return {?}
*/
function () {
this.graphService.set(this.graphs);
};
/**
* @return {?}
*/
NlsGraphsComponent.prototype.updateGraphs = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var genShiftStart = this.shiftPoint(this.matrix.start, this.config.vectors.start);
/** @type {?} */
var genShiftEnd = this.shiftPoint(this.matrix.end, this.config.vectors.end, false);
console.log(this.matrix);
/** @type {?} */
var curveList = [
{
color: this.config.colors.primary,
start: genShiftStart.next().value,
end: genShiftEnd.next().value
},
{
color: this.config.colors.secondary,
start: genShiftEnd.next().value,
end: genShiftStart.next().value
}
];
this.graphs = curveList.map(function (curve) {
return tslib_1.__assign({}, _this.adjustGraph(curve), { spread: _this.config.spread, interval: _this.config.interval });
});
this.hash = this.historyService.hash(this.graphs);
this.saveHistory();
this.saveGraph();
};
/**
* @param {?} curve
* @return {?}
*/
NlsGraphsComponent.prototype.adjustGraph = /**
* @param {?} curve
* @return {?}
*/
function (curve) {
return Object.assign(curve, {
stroke: this.config.stroke,
start: Object.assign(curve.start, {
direction: this.genVectorPoint(curve.start.point, curve.start.vector)
}),
end: Object.assign(curve.end, {
direction: this.genVectorPoint(curve.end.point, curve.end.vector)
}),
nodes: this.genRandomPoints(this.config.nodes)
});
};
/**
* @param {?} num
* @return {?}
*/
NlsGraphsComponent.prototype.genRandomPoints = /**
* @param {?} num
* @return {?}
*/
function (num) {
/** @type {?} */
var generatedPoints = [];
for (var i = 0; i < this.config.nodes; i++) {
generatedPoints.push(this.math.randomPoint(this.matrix, this.config.overlap));
}
return generatedPoints;
};
/**
* @param {?} x
* @return {?}
*/
NlsGraphsComponent.prototype.flipflop = /**
* @param {?} x
* @return {?}
*/
function (x) {
return (x === 'start') ? 'end' : 'start';
};
/**
* @return {?}
*/
NlsGraphsComponent.prototype.adjustCanvas = /**
* @return {?}
*/
function () {
this.canvasService.set(this.canvas);
this.canvasService.adjustToWindow();
return this.svgElementRef.nativeElement;
};
/**
* @return {?}
*/
NlsGraphsComponent.prototype.calcMatrix = /**
* @return {?}
*/
function () {
/** @type {?} */
var canvasWidth = this.canvas.getBoundingClientRect().width;
/** @type {?} */
var canvasHeight = this.canvas.getBoundingClientRect().height;
/** @type {?} */
var totalArea = Math.abs(canvasWidth * canvasHeight);
/** @type {?} */
var totalCenter = this.math.centerOfArea(canvasWidth, canvasHeight);
return {
start: {
x: 0,
y: canvasHeight - this.config.vectors.spacing - this.config.margin.y
},
end: {
x: canvasWidth - this.config.vectors.spacing - this.config.margin.x,
y: 0
},
width: canvasWidth,
height: canvasHeight,
center: totalCenter
};
};
/**
* @param {?} point
* @param {?} vector
* @return {?}
*/
NlsGraphsComponent.prototype.genVectorPoint = /**
* @param {?} point
* @param {?} vector
* @return {?}
*/
function (point, vector) {
/** @type {?} */
var range = this.math.Δ(this.matrix.start, this.matrix.end) * this.config.vectors.range;
return {
x: range * Math.sin(Math.PI * vector) + point.x,
y: range * Math.cos(Math.PI * vector) + point.y
};
};
/**
* @param {?} point
* @param {?} vector
* @param {?=} startPositive
* @return {?}
*/
NlsGraphsComponent.prototype.shiftPoint = /**
* @param {?} point
* @param {?} vector
* @param {?=} startPositive
* @return {?}
*/
function (point, vector, startPositive) {
if (startPositive === void 0) { startPositive = true; }
var genShiftX, genShiftY;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
genShiftX = this.shiftNumber(this.config.vectors.spacing, vector, startPositive);
genShiftY = this.shiftNumber(this.config.vectors.spacing, vector, startPositive);
_a.label = 1;
case 1:
if (!true) return [3 /*break*/, 3];
return [4 /*yield*/, {
point: {
x: Math.cos(Math.PI * vector) * genShiftX.next().value + point.x,
y: Math.sin(Math.PI * vector) * genShiftY.next().value + point.y,
},
vector: vector
}];
case 2:
_a.sent();
return [3 /*break*/, 1];
case 3: return [2 /*return*/];
}
});
};
/**
* @param {?} space
* @param {?} vector
* @param {?=} startPositive
* @return {?}
*/
NlsGraphsComponent.prototype.shiftNumber = /**
* @param {?} space
* @param {?} vector
* @param {?=} startPositive
* @return {?}
*/
function (space, vector, startPositive) {
if (startPositive === void 0) { startPositive = true; }
var current, index, sign;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
current = 0;
index = 0;
sign = this.math.flipSign(startPositive);
_a.label = 1;
case 1:
if (!true) return [3 /*break*/, 3];
return [4 /*yield*/, current = sign.next().value * index * space + current];
case 2:
_a.sent();
index++;
return [3 /*break*/, 1];
case 3: return [2 /*return*/];
}
});
};
/**
* @param {?} guillocheElement
* @return {?}
*/
NlsGraphsComponent.prototype.prepareGuillocheExport = /**
* @param {?} guillocheElement
* @return {?}
*/
function (guillocheElement) {
if (this.genLoadedAllGraphs.next().value) {
this.svgChange.emit(this.svgElementRef);
}
};
/**
* @return {?}
*/
NlsGraphsComponent.prototype.countLoadedGraphs = /**
* @return {?}
*/
function () {
var cycles;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
cycles = 1;
_a.label = 1;
case 1:
if (!true) return [3 /*break*/, 6];
if (!(cycles < this.graphs.length)) return [3 /*break*/, 3];
return [4 /*yield*/, false];
case 2:
_a.sent();
cycles++;
return [3 /*break*/, 5];
case 3: return [4 /*yield*/, true];
case 4:
_a.sent();
cycles = 1;
_a.label = 5;
case 5: return [3 /*break*/, 1];
case 6: return [2 /*return*/];
}
});
};
NlsGraphsComponent.decorators = [
{ type: Component, args: [{
selector: 'nls-graphs',
template: "<svg #svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\"\nversion=\"1.1\" shape-rendering=\"geometricPrecision\">\n <g nlsGuilloche *ngFor=\"let graph of graphs\" [graph]=\"graph\" [animation]=\"animation\"></g>\n</svg>\n",
styles: [":host{position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}"]
},] },
];
/** @nocollapse */
NlsGraphsComponent.ctorParameters = function () { return [
{ type: NlsCanvasService },
{ type: NlsHistoryService },
{ type: NlsMathService },
{ type: NlsGraphService }
]; };
NlsGraphsComponent.propDecorators = {
config: [{ type: Input }],
restoredHistory: [{ type: Input }],
animation: [{ type: Input }],
svgChange: [{ type: Output }],
graphChange: [{ type: Output }],
svgElementRef: [{ type: ViewChild, args: ['svg',] }],
onResize: [{ type: HostListener, args: ['window:resize', ['$event'],] }]
};
return NlsGraphsComponent;
}());
export { NlsGraphsComponent };
function NlsGraphsComponent_tsickle_Closure_declarations() {
/** @type {?} */
NlsGraphsComponent.prototype.canvas;
/** @type {?} */
NlsGraphsComponent.prototype.matrix;
/** @type {?} */
NlsGraphsComponent.prototype.graphs;
/** @type {?} */
NlsGraphsComponent.prototype.windowHeight;
/** @type {?} */
NlsGraphsComponent.prototype.windowWidth;
/** @type {?} */
NlsGraphsComponent.prototype.genShiftPoint;
/** @type {?} */
NlsGraphsComponent.prototype.genLoadedAllGraphs;
/** @type {?} */
NlsGraphsComponent.prototype.hash;
/** @type {?} */
NlsGraphsComponent.prototype.resizingWindow;
/** @type {?} */
NlsGraphsComponent.prototype.config;
/** @type {?} */
NlsGraphsComponent.prototype.restoredHistory;
/** @type {?} */
NlsGraphsComponent.prototype.animation;
/** @type {?} */
NlsGraphsComponent.prototype.svgChange;
/** @type {?} */
NlsGraphsComponent.prototype.graphChange;
/** @type {?} */
NlsGraphsComponent.prototype.svgElementRef;
/** @type {?} */
NlsGraphsComponent.prototype.canvasService;
/** @type {?} */
NlsGraphsComponent.prototype.historyService;
/** @type {?} */
NlsGraphsComponent.prototype.math;
/** @type {?} */
NlsGraphsComponent.prototype.graphService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25scy1ndWlsbG9jaGUvIiwic291cmNlcyI6WyJubHMvY29tcG9uZW50cy9ncmFwaHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTRCLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVMUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFFOUQsSUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7O0lBMEMzQiw0QkFDVSxlQUNBLGdCQUNBLE1BQ0E7UUFIQSxrQkFBYSxHQUFiLGFBQWE7UUFDYixtQkFBYyxHQUFkLGNBQWM7UUFDZCxTQUFJLEdBQUosSUFBSTtRQUNKLGlCQUFZLEdBQVosWUFBWTt5QkFuQkEsSUFBSSxZQUFZLEVBQUU7MkJBQ2hCLElBQUksWUFBWSxFQUFFO1FBb0J4QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7S0FDN0I7Ozs7O0lBbEJELHFDQUFROzs7O0lBRFIsVUFDUyxLQUFLO1FBRGQsaUJBU0M7UUFQQyxZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1lBQy9CLEtBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lB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 Line truncated