restore backup and add opencode support
This commit is contained in:
1 parent
b99d2ff835
commit
c295660631
72 files changed
+7035
-7198
No files matched your search
+10
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @fileoverview added by tsickle
|
||||
* @suppress {checkTypes} checked by tsc
|
||||
*/
|
||||
/**
|
||||
* Generated bundle index. Do not edit.
|
||||
*/
|
||||
export { NlsGraphsComponent, NlsGuillocheDirective, NlsAnimationService, NlsCanvasService, NlsGraphService, NlsHistoryService, NlsMathService, NlsGuillocheModule } from './public_api';
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmxzLWd1aWxsb2NoZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25scy1ndWlsbG9jaGUvIiwic291cmNlcyI6WyJubHMtZ3VpbGxvY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx5S0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
||||
@@ -0,0 +1,335 @@
|
||||
/**
|
||||
* @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 { 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 {?} */
|
||||
const RESIZING_TIMEOUT = 800;
|
||||
export class NlsGraphsComponent {
|
||||
/**
|
||||
* @param {?} canvasService
|
||||
* @param {?} historyService
|
||||
* @param {?} math
|
||||
* @param {?} graphService
|
||||
*/
|
||||
constructor(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 {?}
|
||||
*/
|
||||
onResize(event) {
|
||||
clearTimeout(this.resizingWindow);
|
||||
this.resizingWindow = setTimeout(() => {
|
||||
this.canvas = this.adjustCanvas();
|
||||
this.matrix = this.calcMatrix();
|
||||
this.updateGraphs();
|
||||
}, RESIZING_TIMEOUT);
|
||||
}
|
||||
/**
|
||||
* @param {?} changes
|
||||
* @return {?}
|
||||
*/
|
||||
ngOnChanges(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 {?}
|
||||
*/
|
||||
restoreGraph() {
|
||||
this.graphs = this.restoredHistory.graphs;
|
||||
this.hash = this.restoredHistory.hash;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
saveHistory() {
|
||||
this.hash = this.historyService.hash(this.graphs);
|
||||
this.historyService.save(this.graphs, this.config);
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
saveGraph() {
|
||||
this.graphService.set(this.graphs);
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
updateGraphs() {
|
||||
/** @type {?} */
|
||||
const genShiftStart = this.shiftPoint(this.matrix.start, this.config.vectors.start);
|
||||
/** @type {?} */
|
||||
const genShiftEnd = this.shiftPoint(this.matrix.end, this.config.vectors.end, false);
|
||||
console.log(this.matrix);
|
||||
/** @type {?} */
|
||||
const 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(curve => {
|
||||
return Object.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 {?}
|
||||
*/
|
||||
adjustGraph(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 {?}
|
||||
*/
|
||||
genRandomPoints(num) {
|
||||
/** @type {?} */
|
||||
const generatedPoints = [];
|
||||
for (let i = 0; i < this.config.nodes; i++) {
|
||||
generatedPoints.push(this.math.randomPoint(this.matrix, this.config.overlap));
|
||||
}
|
||||
return generatedPoints;
|
||||
}
|
||||
/**
|
||||
* @param {?} x
|
||||
* @return {?}
|
||||
*/
|
||||
flipflop(x) {
|
||||
return (x === 'start') ? 'end' : 'start';
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
adjustCanvas() {
|
||||
this.canvasService.set(this.canvas);
|
||||
this.canvasService.adjustToWindow();
|
||||
return this.svgElementRef.nativeElement;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
calcMatrix() {
|
||||
/** @type {?} */
|
||||
const canvasWidth = this.canvas.getBoundingClientRect().width;
|
||||
/** @type {?} */
|
||||
const canvasHeight = this.canvas.getBoundingClientRect().height;
|
||||
/** @type {?} */
|
||||
const totalArea = Math.abs(canvasWidth * canvasHeight);
|
||||
/** @type {?} */
|
||||
const 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 {?}
|
||||
*/
|
||||
genVectorPoint(point, vector) {
|
||||
/** @type {?} */
|
||||
const 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 {?}
|
||||
*/
|
||||
*shiftPoint(point, vector, startPositive = true) {
|
||||
/** @type {?} */
|
||||
const genShiftX = this.shiftNumber(this.config.vectors.spacing, vector, startPositive);
|
||||
/** @type {?} */
|
||||
const genShiftY = this.shiftNumber(this.config.vectors.spacing, vector, startPositive);
|
||||
while (true) {
|
||||
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
|
||||
};
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param {?} space
|
||||
* @param {?} vector
|
||||
* @param {?=} startPositive
|
||||
* @return {?}
|
||||
*/
|
||||
*shiftNumber(space, vector, startPositive = true) {
|
||||
/** @type {?} */
|
||||
let current = 0;
|
||||
/** @type {?} */
|
||||
let index = 0;
|
||||
/** @type {?} */
|
||||
const sign = this.math.flipSign(startPositive);
|
||||
while (true) {
|
||||
yield current = sign.next().value * index * space + current;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param {?} guillocheElement
|
||||
* @return {?}
|
||||
*/
|
||||
prepareGuillocheExport(guillocheElement) {
|
||||
if (this.genLoadedAllGraphs.next().value) {
|
||||
this.svgChange.emit(this.svgElementRef);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
*countLoadedGraphs() {
|
||||
/** @type {?} */
|
||||
let cycles = 1;
|
||||
while (true) {
|
||||
if (cycles < this.graphs.length) {
|
||||
yield false;
|
||||
cycles++;
|
||||
}
|
||||
else {
|
||||
yield true;
|
||||
cycles = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NlsGraphsComponent.decorators = [
|
||||
{ type: Component, args: [{
|
||||
selector: 'nls-graphs',
|
||||
template: `<svg #svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.1" shape-rendering="geometricPrecision">
|
||||
<g nlsGuilloche *ngFor="let graph of graphs" [graph]="graph" [animation]="animation"></g>
|
||||
</svg>
|
||||
`,
|
||||
styles: [`:host{position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}`]
|
||||
},] },
|
||||
];
|
||||
/** @nocollapse */
|
||||
NlsGraphsComponent.ctorParameters = () => [
|
||||
{ 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'],] }]
|
||||
};
|
||||
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25scy1ndWlsbG9jaGUvIiwic291cmNlcyI6WyJubHMvY29tcG9uZW50cy9ncmFwaHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBNEIsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUxSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUU5RCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQVc3QixNQUFNOzs7Ozs7O0lBK0JKLFlBQ1UsZUFDQSxnQkFDQSxNQUNBO1FBSEEsa0JBQWEsR0FBYixhQUFhO1FBQ2IsbUJBQWMsR0FBZCxjQUFjO1FBQ2QsU0FBSSxHQUFKLElBQUk7UUFDSixpQkFBWSxHQUFaLFlBQVk7eUJBbkJBLElBQUksWUFBWSxFQUFFOzJCQUNoQixJQUFJLFlBQVksRUFBRTtRQW9CeEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0tBQzdCOzs7OztJQWxCRCxRQUFRLENBQUMsS0FBSztRQUNaLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFD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
Line truncated
|
||||
@@ -0,0 +1,240 @@
|
||||
/**
|
||||
* @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 { ElementRef, Input, Directive } from '@angular/core';
|
||||
import * as Selection from 'd3-selection';
|
||||
import * as Shape from 'd3-shape';
|
||||
import { NlsCanvasService } from './../services/canvas.service';
|
||||
import { NlsMathService } from './../services/math.service';
|
||||
import { NlsGraphService } from '../services/graph.service';
|
||||
export class NlsGuillocheDirective {
|
||||
/**
|
||||
* @param {?} canvasService
|
||||
* @param {?} el
|
||||
* @param {?} math
|
||||
* @param {?} graphService
|
||||
*/
|
||||
constructor(canvasService, el, math, graphService) {
|
||||
this.canvasService = canvasService;
|
||||
this.el = el;
|
||||
this.math = math;
|
||||
this.graphService = graphService;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
ngOnDestroy() {
|
||||
this.group.selectAll('*').remove();
|
||||
}
|
||||
/**
|
||||
* @param {?} changes
|
||||
* @return {?}
|
||||
*/
|
||||
ngOnChanges(changes) {
|
||||
this.group = Selection.select(this.el.nativeElement);
|
||||
this.canvas = Selection.select(this.canvasService.get);
|
||||
// @todo modify graph here instead of in graphs.component.ts
|
||||
this.initialNodes = this.graph.nodes.slice();
|
||||
this.initialCurve = [
|
||||
this.graph.start.point,
|
||||
this.graph.start.direction,
|
||||
...this.graph.nodes.slice(),
|
||||
this.graph.end.direction,
|
||||
this.graph.end.point
|
||||
];
|
||||
this.medianPoint = this.math.medianOfCurve(this.initialCurve);
|
||||
this.medianIndex = this.math.medianIndex(this.initialCurve);
|
||||
if (this.animation) {
|
||||
this.graph.nodes = this.graph.nodes.slice().map((node, i) => {
|
||||
return {
|
||||
x: node.x,
|
||||
y: node.y,
|
||||
// ascent: Math.round(Math.random() * 100) / 100
|
||||
ascent: this.medianPoint.ascent + i * 0.5
|
||||
};
|
||||
});
|
||||
this.bounces = this.initialNodes.map(node => {
|
||||
/** @type {?} */
|
||||
const bounceAmplitude = Math.round(Math.random() * 150);
|
||||
return this.math.bounce(bounceAmplitude, 3);
|
||||
});
|
||||
/** @type {?} */
|
||||
let i = 0;
|
||||
this.animationInterval = setInterval(() => {
|
||||
this.animateGraph(i++ % 1000 / 10000);
|
||||
}, this.graph.interval);
|
||||
}
|
||||
else {
|
||||
if (this.animationInterval) {
|
||||
this.bounce = null;
|
||||
clearInterval(this.animationInterval);
|
||||
}
|
||||
}
|
||||
this.group.selectAll('*').remove();
|
||||
this.pathElements = [];
|
||||
/** @type {?} */
|
||||
const graphs = this.spreadLines([
|
||||
this.graph.start.point,
|
||||
this.graph.start.direction,
|
||||
...this.graph.nodes,
|
||||
this.graph.end.direction,
|
||||
this.graph.end.point,
|
||||
]).forEach((points, index) => this.drawGraph(points));
|
||||
}
|
||||
/**
|
||||
* @param {?} x
|
||||
* @return {?}
|
||||
*/
|
||||
animateGraph(x) {
|
||||
/** @type {?} */
|
||||
const graphs = this.spreadLines([
|
||||
this.graph.start.point,
|
||||
this.graph.start.direction,
|
||||
...this.graph.nodes.map((point, i) => {
|
||||
/** @type {?} */
|
||||
const ascent = point.ascent * Math.sin(Math.PI * x);
|
||||
return this.graphService.shiftPoint(point, ascent, this.bounces[i].next().value);
|
||||
}),
|
||||
this.graph.end.direction,
|
||||
this.graph.end.point,
|
||||
]);
|
||||
graphs.forEach((points, i) => this.updateGraph(points, i));
|
||||
}
|
||||
/**
|
||||
* @param {?} points
|
||||
* @return {?}
|
||||
*/
|
||||
spreadLines(points) {
|
||||
/** @type {?} */
|
||||
const shiftedMedians = [];
|
||||
/** @type {?} */
|
||||
const genshiftedMedians = this.graphService.spreadOrthogonal(this.medianPoint, this.graph.spread.spacing);
|
||||
for (let i = 0; i < this.graph.spread.amount; i++) {
|
||||
shiftedMedians.push(genshiftedMedians.next().value);
|
||||
}
|
||||
return shiftedMedians.map(median => {
|
||||
/** @type {?} */
|
||||
const shiftedPoints = points.slice();
|
||||
shiftedPoints.splice(this.medianIndex, 1, median);
|
||||
return shiftedPoints;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @param {?} points
|
||||
* @param {?} index
|
||||
* @return {?}
|
||||
*/
|
||||
updateGraph(points, index) {
|
||||
this.pathElements[index]
|
||||
.attr('d', Shape.line()
|
||||
.x(p => p.x)
|
||||
.y(p => p.y)
|
||||
.curve(Shape.curveBasis)(points));
|
||||
}
|
||||
/**
|
||||
* @param {?} points
|
||||
* @return {?}
|
||||
*/
|
||||
drawGraph(points) {
|
||||
this.group
|
||||
.attr('stroke', this.graph.color)
|
||||
.attr('stroke-width', this.graph.stroke)
|
||||
.attr('fill', 'none');
|
||||
this.pathElements.push(this.group.append('path')
|
||||
.attr('d', Shape.line()
|
||||
.x(p => p.x)
|
||||
.y(p => p.y)
|
||||
.curve(Shape.curveBasis)(points)));
|
||||
}
|
||||
/**
|
||||
* @param {?} points
|
||||
* @return {?}
|
||||
*/
|
||||
debugGraph(points) {
|
||||
points.forEach((point, index) => {
|
||||
/** @type {?} */
|
||||
const circle = this.group.append('g');
|
||||
circle.append('circle')
|
||||
.attr('cx', point.x)
|
||||
.attr('cy', point.y)
|
||||
.attr('r', 3)
|
||||
.attr('fill-opacity', 0.6)
|
||||
.attr('fill', this.graph.color);
|
||||
circle.append('text')
|
||||
.attr('x', point.x)
|
||||
.attr('y', point.y)
|
||||
.attr('dx', 8)
|
||||
.attr('dy', 15)
|
||||
.attr('fill', this.graph.color)
|
||||
.text(index);
|
||||
});
|
||||
}
|
||||
}
|
||||
NlsGuillocheDirective.decorators = [
|
||||
{ type: Directive, args: [{
|
||||
selector: '[nlsGuilloche]'
|
||||
},] },
|
||||
];
|
||||
/** @nocollapse */
|
||||
NlsGuillocheDirective.ctorParameters = () => [
|
||||
{ type: NlsCanvasService },
|
||||
{ type: ElementRef },
|
||||
{ type: NlsMathService },
|
||||
{ type: NlsGraphService }
|
||||
];
|
||||
NlsGuillocheDirective.propDecorators = {
|
||||
graph: [{ type: Input }],
|
||||
animation: [{ type: Input }]
|
||||
};
|
||||
function NlsGuillocheDirective_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.canvas;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.group;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.bounce;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.bounces;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.initialNodes;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.initialCurve;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.animationInterval;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.medianPoint;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.medianIndex;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.pathElements;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.graph;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.animation;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.canvasService;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.el;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.math;
|
||||
/** @type {?} */
|
||||
NlsGuillocheDirective.prototype.graphService;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VpbGxvY2hlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25scy1ndWlsbG9jaGUvIiwic291cmNlcyI6WyJubHMvZGlyZWN0aXZlcy9ndWlsbG9jaGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsS0FBSyxFQUFFLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDaEgsT0FBTyxLQUFLLFNBQVMsTUFBTSxjQUFjLENBQUM7QUFDMUMsT0FBTyxLQUFLLEtBQUssTUFBTSxVQUFVLENBQUM7QUFRbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUs1RCxNQUFNOzs7Ozs7O0lBZ0JKLFlBQ1UsZUFDQSxJQUNBLE1BQ0E7UUFIQSxrQkFBYSxHQUFiLGFBQWE7UUFDYixPQUFFLEdBQUYsRUFBRTtRQUNGLFNBQUksR0FBSixJQUFJO1FBQ0osaUJBQVksR0FBWixZQUFZO0tBRXJCOzs7O0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3BDOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzs7UUFFdkQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxL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
Line truncated
|
||||
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* @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.
|
||||
*/
|
||||
/**
|
||||
* @record
|
||||
*/
|
||||
export function Config() { }
|
||||
function Config_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
Config.prototype.margin;
|
||||
/** @type {?} */
|
||||
Config.prototype.start;
|
||||
/** @type {?} */
|
||||
Config.prototype.end;
|
||||
/** @type {?} */
|
||||
Config.prototype.vectors;
|
||||
/** @type {?} */
|
||||
Config.prototype.colors;
|
||||
/** @type {?} */
|
||||
Config.prototype.spread;
|
||||
/** @type {?} */
|
||||
Config.prototype.nodes;
|
||||
/** @type {?} */
|
||||
Config.prototype.stroke;
|
||||
/** @type {?} */
|
||||
Config.prototype.overlap;
|
||||
/** @type {?} */
|
||||
Config.prototype.scale;
|
||||
/** @type {?} */
|
||||
Config.prototype.interval;
|
||||
/** @type {?|undefined} */
|
||||
Config.prototype.date;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmxzLWd1aWxsb2NoZS8iLCJzb3VyY2VzIjpbIm5scy9tb2RlbHMvY29uZmlnLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoQykgMjAxOCBNaWNoYWVsIEN6ZWNob3dza2kgPG1haWxAZGFpbHlzaC5pdD5cbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuICogU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gKiB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTFcbiAqIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcbiAgbWFyZ2luOiB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgfTtcbiAgc3RhcnQ6IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICB9O1xuICBlbmQ6IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICB9O1xuICB2ZWN0b3JzOiB7XG4gICAgc3BhY2luZzogbnVtYmVyO1xuICAgIHN0YXJ0OiBhbnk7XG4gICAgZW5kOiBhbnk7XG4gICAgcmFuZ2U6IGFueTtcbiAgfTtcbiAgY29sb3JzOiB7XG4gICAgcHJpbWFyeTogc3RyaW5nO1xuICAgIHNlY29uZGFyeTogc3RyaW5nO1xuICB9O1xuICBzcHJlYWQ6IHtcbiAgICBhbW91bnQ6IG51bWJlcjtcbiAgICBzcGFjaW5nOiBudW1iZXJcbiAgfTtcbiAgbm9kZXM6IGFueTtcbiAgc3Ryb2tlOiBhbnk7XG4gIG92ZXJsYXA6IGFueTtcbiAgc2NhbGU6IGFueTtcbiAgaW50ZXJ2YWw6IG51bWJlcjtcbiAgZGF0ZT86IERhdGU7XG59XG4iXX0=
|
||||
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* @fileoverview added by tsickle
|
||||
* @suppress {checkTypes} checked by tsc
|
||||
*/
|
||||
/**
|
||||
* @record
|
||||
*/
|
||||
export function Graph() { }
|
||||
function Graph_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
Graph.prototype.id;
|
||||
/** @type {?} */
|
||||
Graph.prototype.color;
|
||||
/** @type {?} */
|
||||
Graph.prototype.start;
|
||||
/** @type {?} */
|
||||
Graph.prototype.end;
|
||||
/** @type {?} */
|
||||
Graph.prototype.spread;
|
||||
/** @type {?} */
|
||||
Graph.prototype.interval;
|
||||
/** @type {?} */
|
||||
Graph.prototype.stroke;
|
||||
/** @type {?|undefined} */
|
||||
Graph.prototype.nodes;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9ubHMtZ3VpbGxvY2hlLyIsInNvdXJjZXMiOlsibmxzL21vZGVscy9ncmFwaC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDE4IE1pY2hhZWwgQ3plY2hvd3NraSA8bWFpbEBkYWlseXNoLml0PlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3JcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICogbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAqIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MVxuICogRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4gKi9cblxuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuL3BvaW50Lm1vZGVsJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4vY29uZmlnLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBHcmFwaCB7XG4gIGlkOiBzdHJpbmc7XG4gIGNvbG9yOiBzdHJpbmc7IC8vIGNhbiBiZSBzZXQgaW4gZW52aXJvbWVudFxuICBzdGFydDoge1xuICAgIHBvaW50OiBQb2ludDtcbiAgICBkaXJlY3Rpb24/OiBQb2ludDtcbiAgICB2ZWN0b3I6IG51bWJlcjsgLy8gZGVncmVlIGJldHdlZW4gMCBhbmQgMzYwXG4gIH07XG4gIGVuZDoge1xuICAgIHBvaW50OiBQb2ludDtcbiAgICBkaXJlY3Rpb24/OiBQb2ludDtcbiAgICB2ZWN0b3I6IG51bWJlcjsgLy8gZGVncmVlIGJldHdlZW4gMCBhbmQgMzYwXG4gIH07XG4gIHNwcmVhZDoge1xuICAgIGFtb3VudDogbnVtYmVyO1xuICAgIHNwYWNpbmc6IG51bWJlclxuICB9O1xuICBpbnRlcnZhbDogbnVtYmVyO1xuICBzdHJva2U6IG51bWJlcjsgLy8gc3Ryb2tlIHdpZHRoXG4gIG5vZGVzPzogUG9pbnRbXTsgLy8gb3JpZW50YXRpb24gcG9pbnRzXG59XG4iXX0=
|
||||
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* @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.
|
||||
*/
|
||||
/**
|
||||
* @record
|
||||
*/
|
||||
export function Matrix() { }
|
||||
function Matrix_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
Matrix.prototype.start;
|
||||
/** @type {?} */
|
||||
Matrix.prototype.end;
|
||||
/** @type {?} */
|
||||
Matrix.prototype.center;
|
||||
/** @type {?} */
|
||||
Matrix.prototype.width;
|
||||
/** @type {?} */
|
||||
Matrix.prototype.height;
|
||||
/** @type {?|undefined} */
|
||||
Matrix.prototype.unit;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmxzLWd1aWxsb2NoZS8iLCJzb3VyY2VzIjpbIm5scy9tb2RlbHMvbWF0cml4Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoQykgMjAxOCBNaWNoYWVsIEN6ZWNob3dza2kgPG1haWxAZGFpbHlzaC5pdD5cbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuICogU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gKiB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTFcbiAqIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuICovXG5cbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi9wb2ludC5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWF0cml4IHtcbiAgc3RhcnQ6IFBvaW50O1xuICBlbmQ6IFBvaW50O1xuICBjZW50ZXI6IFBvaW50O1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgdW5pdD86IG51bWJlcjtcbn1cbiJdfQ==
|
||||
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @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.
|
||||
*/
|
||||
/**
|
||||
* @record
|
||||
*/
|
||||
export function Param() { }
|
||||
function Param_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
Param.prototype.colors;
|
||||
/** @type {?} */
|
||||
Param.prototype.points;
|
||||
/** @type {?} */
|
||||
Param.prototype.margin;
|
||||
/** @type {?} */
|
||||
Param.prototype.spread;
|
||||
/** @type {?} */
|
||||
Param.prototype.space;
|
||||
/** @type {?|undefined} */
|
||||
Param.prototype.stroke;
|
||||
/** @type {?|undefined} */
|
||||
Param.prototype.showGrid;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW0ubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9ubHMtZ3VpbGxvY2hlLyIsInNvdXJjZXMiOlsibmxzL21vZGVscy9wYXJhbS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggTWljaGFlbCBDemVjaG93c2tpIDxtYWlsQGRhaWx5c2guaXQ+XG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWVcbiAqIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvclxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gKiBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICogdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxXG4gKiBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFBhcmFtIHtcbiAgY29sb3JzOiB7XG4gICAgc3RhcnQ6IHN0cmluZyxcbiAgICBlbmQ6IHN0cmluZ1xuICB9O1xuICBwb2ludHM6IG51bWJlcjtcbiAgbWFyZ2luOiB7XG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlclxuICB9O1xuICBzcHJlYWQ6IG51bWJlcjtcbiAgc3BhY2U6IG51bWJlcjtcbiAgc3Ryb2tlPzoge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gIH07XG4gIHNob3dHcmlkPzogYm9vbGVhbjtcbn1cbiJdfQ==
|
||||
@@ -0,0 +1,35 @@
|
||||
/**
|
||||
* @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.
|
||||
*/
|
||||
/**
|
||||
* @record
|
||||
*/
|
||||
export function Point() { }
|
||||
function Point_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
Point.prototype.x;
|
||||
/** @type {?} */
|
||||
Point.prototype.y;
|
||||
/** @type {?|undefined} */
|
||||
Point.prototype.color;
|
||||
/** @type {?|undefined} */
|
||||
Point.prototype.ascent;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQubW9kZWwuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9ubHMtZ3VpbGxvY2hlLyIsInNvdXJjZXMiOlsibmxzL21vZGVscy9wb2ludC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggTWljaGFlbCBDemVjaG93c2tpIDxtYWlsQGRhaWx5c2guaXQ+XG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWVcbiAqIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvclxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gKiBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICogdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxXG4gKiBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFBvaW50IHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIGNvbG9yPzogc3RyaW5nO1xuICBhc2NlbnQ/OiBudW1iZXI7XG59XG4iXX0=
|
||||
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @fileoverview added by tsickle
|
||||
* @suppress {checkTypes} checked by tsc
|
||||
*/
|
||||
import { BrowserModule } from '@angular/platform-browser';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { NlsGraphsComponent } from './components/graphs.component';
|
||||
import { NlsGuillocheDirective } from './directives/guilloche.directive';
|
||||
import { NlsHistoryService } from './services/history.service';
|
||||
import { NlsCanvasService } from './services/canvas.service';
|
||||
import { NlsMathService } from './services/math.service';
|
||||
import { NlsGraphService } from './services/graph.service';
|
||||
export class NlsGuillocheModule {
|
||||
}
|
||||
NlsGuillocheModule.decorators = [
|
||||
{ type: NgModule, args: [{
|
||||
imports: [
|
||||
BrowserModule
|
||||
],
|
||||
declarations: [
|
||||
NlsGraphsComponent,
|
||||
NlsGuillocheDirective
|
||||
],
|
||||
providers: [
|
||||
NlsHistoryService,
|
||||
NlsCanvasService,
|
||||
NlsMathService,
|
||||
NlsGraphService,
|
||||
],
|
||||
exports: [
|
||||
NlsGraphsComponent,
|
||||
NlsGuillocheDirective
|
||||
]
|
||||
},] },
|
||||
];
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmxzLWd1aWxsb2NoZS5tb2R1bGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9ubHMtZ3VpbGxvY2hlLyIsInNvdXJjZXMiOlsibmxzL25scy1ndWlsbG9jaGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBcUIzRCxNQUFNOzs7WUFuQkwsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxhQUFhO2lCQUNkO2dCQUNELFlBQVksRUFBRTtvQkFDWixrQkFBa0I7b0JBQ2xCLHFCQUFxQjtpQkFDdEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGlCQUFpQjtvQkFDakIsZ0JBQWdCO29CQUNoQixjQUFjO29CQUNkLGVBQWU7aUJBQ2hCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxrQkFBa0I7b0JBQ2xCLHFCQUFxQjtpQkFDdEI7YUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyb3dzZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE5sc0dyYXBoc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ncmFwaHMuY29tcG9uZW50JztcbmltcG9ydCB7IE5sc0d1aWxsb2NoZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9ndWlsbG9jaGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE5sc0hpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9oaXN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTmxzQ2FudmFzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2FudmFzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmxzTWF0aFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21hdGguc2VydmljZSc7XG5pbXBvcnQgeyBObHNHcmFwaFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dyYXBoLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQnJvd3Nlck1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBObHNHcmFwaHNDb21wb25lbnQsXG4gICAgTmxzR3VpbGxvY2hlRGlyZWN0aXZlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIE5sc0hpc3RvcnlTZXJ2aWNlLFxuICAgIE5sc0NhbnZhc1NlcnZpY2UsXG4gICAgTmxzTWF0aFNlcnZpY2UsXG4gICAgTmxzR3JhcGhTZXJ2aWNlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgTmxzR3JhcGhzQ29tcG9uZW50LFxuICAgIE5sc0d1aWxsb2NoZURpcmVjdGl2ZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE5sc0d1aWxsb2NoZU1vZHVsZSB7fVxuIl19
|
||||
@@ -0,0 +1,72 @@
|
||||
/**
|
||||
* @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 { Injectable } from '@angular/core';
|
||||
import { NlsMathService } from './math.service';
|
||||
import { NlsHistoryService } from './history.service';
|
||||
export class NlsAnimationService {
|
||||
/**
|
||||
* @param {?} math
|
||||
* @param {?} historyService
|
||||
*/
|
||||
constructor(math, historyService) {
|
||||
this.math = math;
|
||||
this.historyService = historyService;
|
||||
}
|
||||
/**
|
||||
* @param {?} initialGraph
|
||||
* @return {?}
|
||||
*/
|
||||
animate(initialGraph) {
|
||||
/** @type {?} */
|
||||
const newGraph = Object.assign({}, initialGraph);
|
||||
/** @type {?} */
|
||||
const indexMiddle = Math.floor(newGraph.nodes.length * 0.5);
|
||||
/** @type {?} */
|
||||
const pointMiddle = newGraph.nodes[indexMiddle];
|
||||
newGraph.nodes.splice(indexMiddle, 1, {
|
||||
x: pointMiddle.x - 2,
|
||||
y: pointMiddle.y + 2,
|
||||
});
|
||||
return newGraph;
|
||||
// });
|
||||
}
|
||||
}
|
||||
NlsAnimationService.decorators = [
|
||||
{ type: Injectable },
|
||||
];
|
||||
/** @nocollapse */
|
||||
NlsAnimationService.ctorParameters = () => [
|
||||
{ type: NlsMathService },
|
||||
{ type: NlsHistoryService }
|
||||
];
|
||||
function NlsAnimationService_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
NlsAnimationService.prototype.graphs;
|
||||
/** @type {?} */
|
||||
NlsAnimationService.prototype.speed;
|
||||
/** @type {?} */
|
||||
NlsAnimationService.prototype.range;
|
||||
/** @type {?} */
|
||||
NlsAnimationService.prototype.math;
|
||||
/** @type {?} */
|
||||
NlsAnimationService.prototype.historyService;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9ubHMtZ3VpbGxvY2hlLyIsInNvdXJjZXMiOlsibmxzL3NlcnZpY2VzL2FuaW1hdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsT0FBTyxFQUFVLFVBQVUsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFLeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3RELE1BQU07Ozs7O0lBU0osWUFDVSxNQUNBO1FBREEsU0FBSSxHQUFKLElBQUk7UUFDSixtQkFBYyxHQUFkLGNBQWM7S0FFdkI7Ozs7O0lBR00sT0FBTyxDQUFDLFlBQW1COztRQUs5QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxZQUFZLENBQUMsQ0FBQzs7UUFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQzs7UUFDNUQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVoRCxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFO1lBQ3BDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDcEIsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUNyQixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsUUFBUSxDQUFDOzs7OztZQS9CckIsVUFBVTs7OztZQUhGLGNBQWM7WUFDZCxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoQykgMjAxOCBNaWNoYWVsIEN6ZWNob3dza2kgPG1haWxAZGFpbHlzaC5pdD5cbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuICogU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gKiB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTFcbiAqIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaW50ZXJ2YWwsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIFNlbGVjdGlvbiBmcm9tICdkMy1zZWxlY3Rpb24nO1xuXG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gJy4uL21vZGVscy9ncmFwaC5tb2RlbCc7XG5pbXBvcnQgeyBObHNNYXRoU2VydmljZSB9IGZyb20gJy4vbWF0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE5sc0hpc3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi9oaXN0b3J5LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmxzQW5pbWF0aW9uU2VydmljZSB7XG5cbiAgcHVibGljIGdyYXBoczogR3JhcGhbXTtcbiAgcHVibGljIHNwZWVkOiBudW1iZXI7XG4gIHB1YmxpYyByYW5nZTogbnVtYmVyO1xuICAvLyBwdWJsaWMgZ2VuQW5pbWF0aW9uOiBhbnk7XG4gIC8vIHByaXZhdGUgdGltZXI6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgLy8gcHJpdmF0ZSBzdWJzY3JpYnRpb246IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hdGg6IE5sc01hdGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGlzdG9yeVNlcnZpY2U6IE5sc0hpc3RvcnlTZXJ2aWNlLFxuICApIHtcbiAgfVxuXG4gIC8vIHB1YmxpYyBhbmltYXRlKGluaXRpYWxHcmFwaHM6IEdyYXBoW10pIHtcbiAgcHVibGljIGFuaW1hdGUoaW5pdGlhbEdyYXBoOiBHcmFwaCkge1xuICAgIC8vIGNvbnN0IG5ld0dyYXBocyA9IGluaXRpYWxHcmFwaHMuc2xpY2UoKTtcblxuICAgIC8vIHJldHVybiBuZXdHcmFwaHMubWFwKGdyYXBoID0+IHtcblxuICAgICAgY29uc3QgbmV3R3JhcGggPSBPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsR3JhcGgpO1xuICAgICAgY29uc3QgaW5kZXhNaWRkbGUgPSBNYXRoLmZsb29yKG5ld0dyYXBoLm5vZGVzLmxlbmd0aCAqIDAuNSk7XG4gICAgICBjb25zdCBwb2ludE1pZGRsZSA9IG5ld0dyYXBoLm5vZGVzW2luZGV4TWlkZGxlXTtcblxuICAgICAgbmV3R3JhcGgubm9kZXMuc3BsaWNlKGluZGV4TWlkZGxlLCAxLCB7XG4gICAgICAgIHg6IHBvaW50TWlkZGxlLnggLSAyLFxuICAgICAgICB5OiBwb2ludE1pZGRsZS55ICsgMixcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3R3JhcGg7XG4gIC8vICAgfSk7XG4gIH1cbn1cblxuIl19
|
||||
@@ -0,0 +1,68 @@
|
||||
/**
|
||||
* @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 { Injectable, RendererFactory2 } from '@angular/core';
|
||||
export class NlsCanvasService {
|
||||
/**
|
||||
* @param {?} rendererFactory
|
||||
*/
|
||||
constructor(rendererFactory) {
|
||||
this.rendererFactory = rendererFactory;
|
||||
this.renderer = rendererFactory.createRenderer(null, null);
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
get get() {
|
||||
return this.canvas;
|
||||
}
|
||||
/**
|
||||
* @param {?} el
|
||||
* @return {?}
|
||||
*/
|
||||
set(el) {
|
||||
this.canvas = el;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
adjustToWindow() {
|
||||
if (this.canvas) {
|
||||
this.renderer.setStyle(this.canvas, 'width', this.canvas.innerWidth);
|
||||
this.renderer.setStyle(this.canvas, 'height', this.canvas.innerHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
NlsCanvasService.decorators = [
|
||||
{ type: Injectable },
|
||||
];
|
||||
/** @nocollapse */
|
||||
NlsCanvasService.ctorParameters = () => [
|
||||
{ type: RendererFactory2 }
|
||||
];
|
||||
function NlsCanvasService_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
NlsCanvasService.prototype.renderer;
|
||||
/** @type {?} */
|
||||
NlsCanvasService.prototype.canvas;
|
||||
/** @type {?} */
|
||||
NlsCanvasService.prototype.rendererFactory;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9ubHMtZ3VpbGxvY2hlLyIsInNvdXJjZXMiOlsibmxzL3NlcnZpY2VzL2NhbnZhcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsT0FBTyxFQUFVLFVBQVUsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUloRixNQUFNOzs7O0lBS0osWUFDVTtRQUFBLG9CQUFlLEdBQWYsZUFBZTtRQUV2QixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVEOzs7O1FBRVUsR0FBRztRQUNaLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7SUFHZCxHQUFHLENBQUMsRUFBRTtRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDOzs7OztJQUdaLGNBQWM7UUFDbkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQ1gsT0FBTyxFQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUN2QixDQUFDO1lBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQ1gsUUFBUSxFQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUN4QixDQUFDO1NBQ0g7Ozs7WUFoQ0osVUFBVTs7OztZQUg2QixnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoQykgMjAxOCBNaWNoYWVsIEN6ZWNob3dza2kgPG1haWxAZGFpbHlzaC5pdD5cbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZVxuICogU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAqIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gKiB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTFcbiAqIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUmVuZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBTZWxlY3Rpb24gZnJvbSAnZDMtc2VsZWN0aW9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5sc0NhbnZhc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgcHVibGljIGNhbnZhczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVuZGVyZXJGYWN0b3J5OiBSZW5kZXJlckZhY3RvcnkyXG4gICkge1xuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5jYW52YXM7XG4gIH1cblxuICBwdWJsaWMgc2V0KGVsKSB7XG4gICAgdGhpcy5jYW52YXMgPSBlbDtcbiAgfVxuXG4gIHB1YmxpYyBhZGp1c3RUb1dpbmRvdygpIHtcbiAgICBpZiAodGhpcy5jYW52YXMpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuY2FudmFzLFxuICAgICAgICAnd2lkdGgnLFxuICAgICAgICB0aGlzLmNhbnZhcy5pbm5lcldpZHRoXG4gICAgICApO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5jYW52YXMsXG4gICAgICAgICdoZWlnaHQnLFxuICAgICAgICB0aGlzLmNhbnZhcy5pbm5lckhlaWdodFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
||||
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* @fileoverview added by tsickle
|
||||
* @suppress {checkTypes} checked by tsc
|
||||
*/
|
||||
import { Injectable } from '@angular/core';
|
||||
import { NlsMathService } from './math.service';
|
||||
export class NlsGraphService {
|
||||
/**
|
||||
* @param {?} math
|
||||
*/
|
||||
constructor(math) {
|
||||
this.math = math;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
get() {
|
||||
return this.graphs;
|
||||
}
|
||||
/**
|
||||
* @param {?} newGraphs
|
||||
* @return {?}
|
||||
*/
|
||||
set(newGraphs) {
|
||||
this.graphs = newGraphs;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
get isAnimated() {
|
||||
return this.animation;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
startAnimation() {
|
||||
this.animation = true;
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
stopAnimation() {
|
||||
this.animation = false;
|
||||
}
|
||||
/**
|
||||
* @param {?} start
|
||||
* @param {?} spacing
|
||||
* @return {?}
|
||||
*/
|
||||
*spreadOrthogonal(start, spacing) {
|
||||
/** @type {?} */
|
||||
const sign = this.math.flipSign();
|
||||
/** @type {?} */
|
||||
let currentPoint = start;
|
||||
/** @type {?} */
|
||||
let i = 0;
|
||||
while (true) {
|
||||
/** @type {?} */
|
||||
const currentSpacing = sign.next().value * spacing * i;
|
||||
currentPoint = this.shiftPoint(currentPoint, start.ascent, currentSpacing);
|
||||
yield currentPoint;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param {?} point
|
||||
* @param {?} radians
|
||||
* @param {?} spacing
|
||||
* @return {?}
|
||||
*/
|
||||
shiftPoint(point, radians, spacing) {
|
||||
return {
|
||||
x: Math.sin(radians * Math.PI) * spacing + point.x,
|
||||
y: Math.cos(radians * Math.PI) * spacing + point.y
|
||||
};
|
||||
}
|
||||
}
|
||||
NlsGraphService.decorators = [
|
||||
{ type: Injectable },
|
||||
];
|
||||
/** @nocollapse */
|
||||
NlsGraphService.ctorParameters = () => [
|
||||
{ type: NlsMathService }
|
||||
];
|
||||
function NlsGraphService_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
NlsGraphService.prototype.graphs;
|
||||
/** @type {?} */
|
||||
NlsGraphService.prototype.animation;
|
||||
/** @type {?} */
|
||||
NlsGraphService.prototype.math;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25scy1ndWlsbG9jaGUvIiwic291cmNlcyI6WyJubHMvc2VydmljZXMvZ3JhcGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBaUJBLE9BQU8sRUFBVSxVQUFVLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBR2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUtoRCxNQUFNOzs7O0lBSUosWUFDVTtRQUFBLFNBQUksR0FBSixJQUFJO0tBQ1Y7Ozs7SUFFRyxHQUFHO1FBQ1IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Ozs7OztJQUdkLEdBQUcsQ0FBQyxTQUFrQjtRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQzs7Ozs7UUFHZixVQUFVO1FBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDOzs7OztJQUdqQixjQUFjO1FBQ25CLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDOzs7OztJQUdqQixhQUFhO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDOzs7Ozs7O0tBR2pCLGdCQUFnQixDQUFDLEtBQVksRUFBRSxPQUFlOztRQUNwRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDOztRQUNsQyxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7O1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVWLE9BQU8sSUFBSSxFQUFFLENBQUM7O1lBQ1osTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRTNFLE1BQU0sWUFBWSxDQUFDO1lBRW5CLENBQUMsRUFBRSxDQUFDO1NBQ0w7Ozs7Ozs7O0lBR0ksVUFBVSxDQUFDLEtBQVksRUFBRSxPQUFlLEVBQUUsT0FBZTtRQUM5RCxNQUFNLENBQUM7WUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNsRCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQztTQUNuRCxDQUFDOzs7O1lBaERMLFVBQVU7Ozs7WUFKRixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDE4IE1pY2hhZWwgQ3plY2hvd3NraSA8bWFpbEBkYWlseXNoLml0PlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3JcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICogbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAqIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MVxuICogRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIFNlbGVjdGlvbiBmcm9tICdkMy1zZWxlY3Rpb24nO1xuXG5pbXBvcnQgeyBObHNNYXRoU2VydmljZSB9IGZyb20gJy4vbWF0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEdyYXBoIH0gZnJvbSAnLi8uLi9tb2RlbHMvZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLy4uL21vZGVscy9wb2ludC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBObHNHcmFwaFNlcnZpY2Uge1xuICBwcml2YXRlIGdyYXBoczogR3JhcGhbXTtcbiAgcHJpdmF0ZSBhbmltYXRpb246IGJvb2xlYW4gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0aDogTmxzTWF0aFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhzO1xuICB9XG5cbiAgcHVibGljIHNldChuZXdHcmFwaHM6IEdyYXBoW10pIHtcbiAgICB0aGlzLmdyYXBocyA9IG5ld0dyYXBocztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNBbmltYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5hbmltYXRpb247XG4gIH1cblxuICBwdWJsaWMgc3RhcnRBbmltYXRpb24oKSB7XG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIHN0b3BBbmltYXRpb24oKSB7XG4gICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyAqc3ByZWFkT3J0aG9nb25hbChzdGFydDogUG9pbnQsIHNwYWNpbmc6IG51bWJlcikge1xuICAgIGNvbnN0IHNpZ24gPSB0aGlzLm1hdGguZmxpcFNpZ24oKTtcbiAgICBsZXQgY3VycmVudFBvaW50ID0gc3RhcnQ7XG4gICAgbGV0IGkgPSAwO1xuXG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTcGFjaW5nID0gc2lnbi5uZXh0KCkudmFsdWUgKiBzcGFjaW5nICogaTtcbiAgICAgIGN1cnJlbnRQb2ludCA9IHRoaXMuc2hpZnRQb2ludChjdXJyZW50UG9pbnQsIHN0YXJ0LmFzY2VudCwgY3VycmVudFNwYWNpbmcpO1xuXG4gICAgICB5aWVsZCBjdXJyZW50UG9pbnQ7XG5cbiAgICAgIGkrKztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hpZnRQb2ludChwb2ludDogUG9pbnQsIHJhZGlhbnM6IG51bWJlciwgc3BhY2luZzogbnVtYmVyKTogUG9pbnQge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLnNpbihyYWRpYW5zICogTWF0aC5QSSkgKiBzcGFjaW5nICsgcG9pbnQueCxcbiAgICAgIHk6IE1hdGguY29zKHJhZGlhbnMgKiBNYXRoLlBJKSAqIHNwYWNpbmcgKyBwb2ludC55XG4gICAgfTtcbiAgfVxufVxuIl19
|
||||
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* @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 { Injectable } from '@angular/core';
|
||||
export class NlsHistoryService {
|
||||
constructor() {
|
||||
this.history = [];
|
||||
}
|
||||
/**
|
||||
* @param {?} graphs
|
||||
* @param {?} config
|
||||
* @return {?}
|
||||
*/
|
||||
save(graphs, config) {
|
||||
this.history.push({
|
||||
date: new Date(),
|
||||
graphs: graphs,
|
||||
config: config,
|
||||
hash: this.hash(graphs)
|
||||
});
|
||||
}
|
||||
/**
|
||||
* @param {?} graphs
|
||||
* @return {?}
|
||||
*/
|
||||
hash(graphs) {
|
||||
return btoa(JSON.stringify(graphs));
|
||||
}
|
||||
/**
|
||||
* @return {?}
|
||||
*/
|
||||
list() {
|
||||
return this.history;
|
||||
}
|
||||
}
|
||||
NlsHistoryService.decorators = [
|
||||
{ type: Injectable },
|
||||
];
|
||||
/** @nocollapse */
|
||||
NlsHistoryService.ctorParameters = () => [];
|
||||
function NlsHistoryService_tsickle_Closure_declarations() {
|
||||
/** @type {?} */
|
||||
NlsHistoryService.prototype.history;
|
||||
}
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmxzLWd1aWxsb2NoZS8iLCJzb3VyY2VzIjpbIm5scy9zZXJ2aWNlcy9oaXN0b3J5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxPQUFPLEVBQVUsVUFBVSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQU14RSxNQUFNO0lBSUo7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztLQUNuQjs7Ozs7O0lBRU0sSUFBSSxDQUFDLE1BQWUsRUFBRSxNQUFNO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3hCLENBQUMsQ0FBQzs7Ozs7O0lBR0UsSUFBSSxDQUFDLE1BQU07UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Ozs7O0lBRy9CLElBQUk7UUFDVCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQzs7OztZQXZCdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDE4IE1pY2hhZWwgQ3plY2hvd3NraSA8bWFpbEBkYWlseXNoLml0PlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIuXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3JcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICogbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAqIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MVxuICogRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBTZWxlY3Rpb24gZnJvbSAnZDMtc2VsZWN0aW9uJztcblxuaW1wb3J0IHsgR3JhcGggfSBmcm9tICcuLi9tb2RlbHMvZ3JhcGgubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmxzSGlzdG9yeVNlcnZpY2Uge1xuXG4gIHB1YmxpYyBoaXN0b3J5OiBhbnlbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmhpc3RvcnkgPSBbXTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKGdyYXBoczogR3JhcGhbXSwgY29uZmlnKSB7XG4gICAgdGhpcy5oaXN0b3J5LnB1c2goe1xuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIGdyYXBoczogZ3JhcGhzLFxuICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICBoYXNoOiB0aGlzLmhhc2goZ3JhcGhzKVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhc2goZ3JhcGhzKSB7XG4gICAgcmV0dXJuIGJ0b2EoSlNPTi5zdHJpbmdpZnkoZ3JhcGhzKSk7XG4gIH1cblxuICBwdWJsaWMgbGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5O1xuICB9XG59XG5cbiJdfQ==
|
||||
@@ -0,0 +1,213 @@
|
||||
/**
|
||||
* @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 { Injectable } from '@angular/core';
|
||||
import * as Random from 'd3-random';
|
||||
export class NlsMathService {
|
||||
/**
|
||||
* Calculate distance between to points with coordinates.
|
||||
* @param {?} a
|
||||
* @param {?} b
|
||||
* @return {?}
|
||||
*/
|
||||
Δ(a, b) {
|
||||
return Math.pow(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2), 0.5);
|
||||
}
|
||||
/**
|
||||
* @param {?} point
|
||||
* @param {?} matrix
|
||||
* @return {?}
|
||||
*/
|
||||
getClosestCenter(point, matrix) {
|
||||
if (this.Δ(point, matrix.start) < this.Δ(point, matrix.end)) {
|
||||
return matrix.start;
|
||||
}
|
||||
else {
|
||||
return matrix.end;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param {?} point
|
||||
* @param {?} matrix
|
||||
* @return {?}
|
||||
*/
|
||||
getFarestCenter(point, matrix) {
|
||||
if (this.Δ(point, matrix.start) > this.Δ(point, matrix.end)) {
|
||||
return matrix.start;
|
||||
}
|
||||
else {
|
||||
return matrix.end;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param {?} matrix
|
||||
* @param {?} overlap
|
||||
* @return {?}
|
||||
*/
|
||||
randomPoint(matrix, overlap) {
|
||||
/** @type {?} */
|
||||
const x = {
|
||||
min: matrix.center.x - matrix.width * overlap,
|
||||
max: matrix.center.x + matrix.width * overlap
|
||||
};
|
||||
/** @type {?} */
|
||||
const y = {
|
||||
min: matrix.center.y - matrix.height * overlap,
|
||||
max: matrix.center.y + matrix.height * overlap
|
||||
};
|
||||
return {
|
||||
x: Random.randomUniform(x.min, x.max)(),
|
||||
y: Random.randomUniform(y.min, y.max)()
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @param {?} width
|
||||
* @param {?} height
|
||||
* @return {?}
|
||||
*/
|
||||
centerOfArea(width, height) {
|
||||
return {
|
||||
x: width * 0.5,
|
||||
y: height * 0.5
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @param {?} p1
|
||||
* @param {?} p2
|
||||
* @return {?}
|
||||
*/
|
||||
centerOfPoints(p1, p2) {
|
||||
return {
|
||||
x: (p1.x + p2.x) * 0.5,
|
||||
y: (p1.y + p2.y) * 0.5
|
||||
};
|
||||
}
|
||||
/**
|
||||
* @param {?} curve
|
||||
* @return {?}
|
||||
*/
|
||||
centerOfCurve(curve) {
|
||||
/** @type {?} */
|
||||
const genMedian = this.medianPoint(curve);
|
||||
/** @type {?} */
|
||||
const p1 = genMedian.next().value;
|
||||
/** @type {?} */
|
||||
const p2 = genMedian.next().value;
|
||||
/** @type {?} */
|
||||
const radians = this.angleRadians(p1, p2);
|
||||
return Object.assign(this.centerOfPoints(p1, p2), { ascent: radians });
|
||||
}
|
||||
/**
|
||||
* @param {?} curve
|
||||
* @return {?}
|
||||
*/
|
||||
medianOfCurve(curve) {
|
||||
/** @type {?} */
|
||||
const genMedian = this.medianPoint(curve);
|
||||
/** @type {?} */
|
||||
const p1 = genMedian.next().value;
|
||||
/** @type {?} */
|
||||
const p2 = genMedian.next().value;
|
||||
/** @type {?} */
|
||||
const p3 = genMedian.next().value;
|
||||
/** @type {?} */
|
||||
const radians = this.angleRadians(p2, p3);
|
||||
// const radians = Math.round(Math.random() * 10000) / 1000;
|
||||
// @todo if nodes are less than 5 error occures
|
||||
return Object.assign(p1, { ascent: radians });
|
||||
}
|
||||
/**
|
||||
* @param {?} p1
|
||||
* @param {?} p2
|
||||
* @return {?}
|
||||
*/
|
||||
angleRadians(p1, p2) {
|
||||
return Math.atan2(p2.y - p1.y, p2.x - p1.x);
|
||||
}
|
||||
/**
|
||||
* @param {?} p1
|
||||
* @param {?} p2
|
||||
* @return {?}
|
||||
*/
|
||||
angleDegree(p1, p2) {
|
||||
return this.angleRadians(p1, p2) * 180 / Math.PI;
|
||||
}
|
||||
/**
|
||||
* @param {?} list
|
||||
* @return {?}
|
||||
*/
|
||||
medianIndex(list) {
|
||||
return Math.floor(list.length * 0.5);
|
||||
}
|
||||
/**
|
||||
* @param {?} points
|
||||
* @return {?}
|
||||
*/
|
||||
*medianPoint(points) {
|
||||
/** @type {?} */
|
||||
let index;
|
||||
/** @type {?} */
|
||||
const list = points.slice();
|
||||
while (list) {
|
||||
index = this.medianIndex(points);
|
||||
yield list[index];
|
||||
list.splice(index, 1);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Generator for sine bounce
|
||||
*
|
||||
* @param {?=} amplitude default to 1 indicates the amplitude in positive as well
|
||||
* in negative range
|
||||
* @param {?=} decimals amount of decimal places
|
||||
* @param {?=} start 0 indicates to initiate with positive numbers, 1 indicates to
|
||||
* start with negative numbers first
|
||||
* @return {?}
|
||||
*/
|
||||
*bounce(amplitude = 1, decimals = 1, start = 0) {
|
||||
/** @type {?} */
|
||||
const power = Math.pow(10, decimals);
|
||||
/** @type {?} */
|
||||
const step = 2 / (power);
|
||||
/** @type {?} */
|
||||
let index = 0;
|
||||
while (true) {
|
||||
/** @type {?} */
|
||||
const radians = Math.PI * step * index + start;
|
||||
yield Math.round((Math.sin(radians) * amplitude) * power) / power;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @param {?=} startPositive
|
||||
* @return {?}
|
||||
*/
|
||||
*flipSign(startPositive = true) {
|
||||
/** @type {?} */
|
||||
let sign = startPositive ? 1 : -1;
|
||||
while (true) {
|
||||
yield sign = sign * (-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
NlsMathService.decorators = [
|
||||
{ type: Injectable },
|
||||
];
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmxzLWd1aWxsb2NoZS8iLCJzb3VyY2VzIjpbIm5scy9zZXJ2aWNlcy9tYXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxPQUFPLEVBQVUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sS0FBSyxNQUFNLE1BQU0sV0FBVyxDQUFDO0FBTXBDLE1BQU07Ozs7Ozs7SUFPRyxDQUFDLENBQUMsQ0FBUSxFQUFFLENBQVE7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Ozs7Ozs7SUFHakUsZ0JBQWdCLENBQUMsS0FBWSxFQUFFLE1BQVc7UUFDL0MsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDckI7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1NBQ25COzs7Ozs7O0lBR0ksZUFBZSxDQUFDLEtBQVksRUFBRSxNQUFXO1FBQzlDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtB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
Line truncated
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/**
|
||||
* @fileoverview added by tsickle
|
||||
* @suppress {checkTypes} checked by tsc
|
||||
*/
|
||||
/*
|
||||
* Public API Surface of nls-guilloche
|
||||
*/
|
||||
export { NlsGraphsComponent } from './nls/components/graphs.component';
|
||||
export { NlsGuillocheDirective } from './nls/directives/guilloche.directive';
|
||||
export { NlsAnimationService } from './nls/services/animation.service';
|
||||
export { NlsCanvasService } from './nls/services/canvas.service';
|
||||
export { NlsGraphService } from './nls/services/graph.service';
|
||||
export { NlsHistoryService } from './nls/services/history.service';
|
||||
export { NlsMathService } from './nls/services/math.service';
|
||||
export { NlsGuillocheModule } from './nls/nls-guilloche.module';
|
||||
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25scy1ndWlsbG9jaGUvIiwic291cmNlcyI6WyJwdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSxtQ0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxzQ0FBYyxzQ0FBc0MsQ0FBQztBQUtyRCxvQ0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxpQ0FBYywrQkFBK0IsQ0FBQztBQUM5QyxnQ0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxrQ0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQywrQkFBYyw2QkFBNkIsQ0FBQztBQUM1QyxtQ0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbmxzLWd1aWxsb2NoZVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbmxzL2NvbXBvbmVudHMvZ3JhcGhzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL25scy9kaXJlY3RpdmVzL2d1aWxsb2NoZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9ubHMvbW9kZWxzL2NvbmZpZy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL25scy9tb2RlbHMvZ3JhcGgubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9ubHMvbW9kZWxzL3BhcmFtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbmxzL21vZGVscy9wb2ludC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL25scy9zZXJ2aWNlcy9hbmltYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL25scy9zZXJ2aWNlcy9jYW52YXMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL25scy9zZXJ2aWNlcy9ncmFwaC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbmxzL3NlcnZpY2VzL2hpc3Rvcnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL25scy9zZXJ2aWNlcy9tYXRoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ubHMvbmxzLWd1aWxsb2NoZS5tb2R1bGUnO1xuIl19
|
||||
Reference in new issue
Block a user