@obliczeniowo/elementary
Version:
Library made in Angular version 20
658 lines (643 loc) • 28.1 kB
JavaScript
import { Point2D, ColorRGB, ColorHSV } from '@obliczeniowo/elementary/classes';
import * as i0 from '@angular/core';
import { Input, ViewChild, Component, NgModule } from '@angular/core';
import { ElementaryMath } from '@obliczeniowo/elementary/math';
import { keys } from '@obliczeniowo/elementary/objects';
import { ns } from '@obliczeniowo/elementary/svg';
import { CommonModule } from '@angular/common';
class SvgGroup {
id = '';
svgGroupContainer;
constructor(id, style) {
this.id = id || '';
this.svgGroupContainer = document.createElementNS(ns, 'g');
if (style) {
this.svgGroupContainer.setAttribute('style', style.toString());
}
}
append(child) {
this.svgGroupContainer.appendChild(child);
}
clear() {
while (this.svgGroupContainer.firstChild) {
this.svgGroupContainer.removeChild(this.svgGroupContainer.firstChild);
}
}
}
class SvgRect {
svg;
constructor(x, y, width, height, id, svgContainer, style) {
this.svg = document.createElementNS(ns, 'rect');
this.svg.setAttribute('id', id);
if (style) {
this.svg.setAttribute('style', style.toString());
}
this.svg.setAttribute('x', x.toString());
this.svg.setAttribute('y', y.toString());
this.svg.setAttribute('width', width.toString());
this.svg.setAttribute('height', height.toString());
svgContainer.append(this.svg);
}
setX(x) {
this.svg.setAttribute('x', x.toString());
}
setY(y) {
this.svg.setAttribute('y', y.toString());
}
setWidth(width) {
this.svg.setAttribute('width', width.toString());
}
setHeight(height) {
this.svg.setAttribute('height', height.toString());
}
}
class SvgPolygon {
svg;
points = [];
constructor(id, style, svgContainer) {
this.svg = document.createElementNS(ns, 'polygon');
this.svg.setAttribute('id', id);
this.svg.setAttribute('style', style.toString());
this.svg.setAttribute('points', '');
svgContainer.append(this.svg);
}
addPoint(x, y) {
this.points.push(new Point2D(x, y));
let strPoints = '';
this.points.forEach((point) => {
strPoints += point.toString();
});
this.svg.setAttribute('points', strPoints);
}
clearPoints() {
this.points = [];
this.svg.setAttribute('points', '');
}
}
class Style {
styles;
toString() {
let styleTxt = '';
keys(this.styles).forEach((key) => {
styleTxt += key + ':' + this.styles[key].toString() + ';';
});
return styleTxt;
}
constructor(styleObject) {
this.styles = styleObject;
}
}
class SvgPost {
x;
y;
width;
height;
faceColor;
rightColor;
topColor;
strokeColor;
face;
right;
top;
constructor(x, y, width, height, id, color, postGroup) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.faceColor = color;
this.rightColor = new ColorRGB(color.red - 40, color.green - 40, color.blue - 40);
this.topColor = new ColorRGB(color.red + 40, color.green + 40, color.blue + 40);
this.strokeColor = new ColorRGB(color.red - 100, color.green - 100, color.blue - 100);
this.face = new SvgRect(x, y - height, width, height, id + '_face', postGroup, new Style({
fill: this.faceColor,
stroke: this.strokeColor,
'stroke-linejoin': 'round',
}));
this.right = new SvgPolygon(id + '_right', new Style({
fill: this.rightColor,
stroke: this.strokeColor,
'stroke-linejoin': 'round',
}), postGroup);
this.top = new SvgPolygon(id + '_top', new Style({
fill: this.topColor,
stroke: this.strokeColor,
'stroke-linejoin': 'round',
}), postGroup);
this.refresh();
}
refresh() {
this.face.setWidth(this.width);
this.face.setHeight(this.height);
this.face.setX(this.x);
this.face.setY(this.y - this.height);
this.right.clearPoints();
this.right.addPoint(this.x + this.width, this.y - this.height);
this.right.addPoint(this.x + 1.5 * this.width, this.y - 0.5 * this.width - this.height);
this.right.addPoint(this.x + 1.5 * this.width, this.y - 0.5 * this.width);
this.right.addPoint(this.x + this.width, this.y);
this.top.clearPoints();
this.top.addPoint(this.x, this.y - this.height);
this.top.addPoint(this.x + this.width, this.y - this.height);
this.top.addPoint(this.x + 1.5 * this.width, this.y - 0.5 * this.width - this.height);
this.top.addPoint(this.x + 0.5 * this.width, this.y - 0.5 * this.width - this.height);
}
setWidth(width, refresh = false) {
this.width = width;
if (refresh) {
this.refresh();
}
}
setHeight(height, refresh = false) {
this.height = height;
if (refresh) {
this.refresh();
}
}
setColor(color) {
this.faceColor = color;
this.rightColor = new ColorRGB(color.red - 40, color.green - 40, color.blue - 40);
this.topColor = new ColorRGB(color.red + 40, color.green + 40, color.blue + 40);
this.strokeColor = new ColorRGB(color.red - 100, color.green - 100, color.blue - 100);
this.face.svg.style.fill = this.faceColor.toString();
this.face.svg.style.stroke = this.strokeColor.toString();
this.right.svg.style.fill = this.rightColor.toString();
this.right.svg.style.stroke = this.strokeColor.toString();
this.top.svg.style.fill = this.topColor.toString();
this.top.svg.style.stroke = this.strokeColor.toString();
}
}
class SvgText {
svg;
rotate;
setText(text) {
this.svg.innerHTML = text;
}
constructor(x, y, text, style, id, rotate, svgContainer) {
this.svg = document.createElementNS(ns, 'text');
this.rotate = rotate;
this.svg.setAttribute('transform', rotate.toString());
this.svg.setAttribute('x', x.toString());
this.svg.setAttribute('y', y.toString());
this.svg.setAttribute('style', style.toString());
this.svg.setAttribute('id', id);
svgContainer.append(this.svg);
this.setText(text);
}
show(display) {
if (display) {
this.svg.style.display = 'inherit';
}
else {
this.svg.style.display = 'none';
}
}
set _transform(transform) {
this.svg.setAttribute('transform', transform);
}
get transform() {
return this.svg.getAttribute('transform');
}
setX(x) {
if (this.rotate?.rotatePoint) {
this.rotate.rotatePoint.x = x;
this._transform = this.rotate.toString();
}
this.svg.setAttribute('x', x.toString());
}
setY(y) {
if (this.rotate?.rotatePoint) {
this.rotate.rotatePoint.y = y;
this._transform = this.rotate.toString();
}
this.svg.setAttribute('y', y.toString());
}
}
class Transform {
}
class Rotate extends Transform {
rotatePoint = null;
angle;
constructor(angle, rotatePoint = null) {
super();
this.rotatePoint = rotatePoint;
this.angle = angle;
}
toString() {
return ('rotate(' +
this.angle.toString() +
(this.rotatePoint ? ',' + this.rotatePoint.toString() : '') +
')');
}
}
class PostDiagramValue {
key;
postsGroup;
valuesGroup;
keysGroup;
diagramValue;
svgPost;
valueText;
keyText;
legendContainer;
legendKey;
set setColor(color) {
this.svgPost.setColor(color);
this.legendKey.querySelector('div').style.backgroundColor =
color.toString();
}
constructor(key, diagramValue, postsGroup, valuesGroup, keysGroup, legendContainer) {
this.key = key;
this.diagramValue = Math.abs(diagramValue);
this.postsGroup = postsGroup;
this.valuesGroup = valuesGroup;
this.keysGroup = keysGroup;
this.legendContainer = legendContainer;
this.svgPost = new SvgPost(0, 0, 10, this.diagramValue, this.key.replace(/ /g, ''), new ColorRGB(250, 0, 0), this.postsGroup);
this.valueText = new SvgText(0, 10, this.diagramValue.toString(), new Style({
fill: 'var(--default-text-color)',
'text-anchor': 'middle'
}), 'Value_' + this.key.replace(/ /g, ''), new Rotate(0), this.valuesGroup);
this.keyText = new SvgText(100, 100, key, new Style({
fill: 'var(--default-text-color)',
'text-anchor': 'end',
}), 'Key_' + this.key.replace(/ /g, ''), new Rotate(-90, new Point2D(100, 100)), this.keysGroup);
const legendKey = document.createElement('DIV');
legendKey.setAttribute('class', 'legend_key_' + this.key.replace(/ /g, ''));
legendKey.style.backgroundColor = new ColorRGB(0, 0, 0).toString();
legendKey.style.width = '20px';
legendKey.style.height = '20px';
legendKey.style.display = 'inline-flex';
const legendText = document.createElement('DIV');
legendText.innerHTML = key + ' = ' + this.getValue();
legendText.style.display = 'inline-flex';
legendText.style.marginLeft = '10px';
this.legendKey = document.createElement('DIV');
this.legendKey.appendChild(legendKey);
this.legendKey.appendChild(legendText);
this.legendKey.style.verticalAlign = 'middle';
this.legendContainer.appendChild(this.legendKey);
}
setPost(x, y, width, k) {
this.svgPost.x = x;
this.svgPost.y = y;
this.svgPost.setWidth(width);
this.svgPost.setHeight(this.diagramValue * k);
this.svgPost.refresh();
}
getValue() {
return this.diagramValue;
}
setValue(value, k) {
this.diagramValue = value;
this.valueText.setText(this.diagramValue.toString());
this.svgPost.setHeight(value * k);
this.svgPost.refresh();
}
toString() {
return this.key + ';' + this.diagramValue.toString();
}
}
class SvgPolyline {
svg;
points = [];
constructor(id, style, svgContainer, type = 'beforeend') {
this.svg = document.createElementNS(ns, 'polyline');
this.svg.setAttribute('id', id);
this.svg.setAttribute('style', style.toString());
this.svg.setAttribute('points', '');
svgContainer.append(this.svg);
}
addPoint(x, y) {
this.points.push(new Point2D(x, y));
let strPoints = '';
this.points.forEach((point) => {
strPoints += point.toString();
});
this.svg.setAttribute('points', strPoints);
}
clearPoints() {
this.points = [];
this.svg.setAttribute('points', '');
}
}
class SvgPostDiagram {
values = [];
svgContainer;
legendContainer;
postsGroup = new SvgGroup();
valuesGroup = new SvgGroup();
keysGroup = new SvgGroup();
greedGroup = new SvgGroup();
// tslint:disable-next-line: variable-name
_displayPostKeys = true;
// tslint:disable-next-line: variable-name
_diagramHeight;
dy = 30;
diagramWidth;
diagramPos;
base;
leftScalePlain;
backScalePlain;
scaleLines = [];
scaleBase;
displayText = true;
valuesColor = null;
scaleColor = 'var(--post-diagram-scale-line-color)';
id;
// tslint:disable-next-line: variable-name
_colorFunction = (index, dataLength, value, max) => {
return ColorHSV.createColorHSV(((360 / dataLength) * 2 * index) / 2, 0.5, 255).convertToRGB();
};
set colorFunction(colorFunction) {
if (colorFunction) {
this._colorFunction = colorFunction;
const dataLength = this.values.length;
const max = this.getMax();
this.values.forEach((value, index) => {
value.setColor = this._colorFunction(index, dataLength, value.getValue(), max);
});
}
}
constructor(id, data, svgContainer, legendContainer) {
this.id = id;
this.values = [];
this.svgContainer = svgContainer;
this.legendContainer = legendContainer;
this.legendContainer.style.maxHeight =
svgContainer.getAttribute('height') + 'px';
this._diagramHeight =
+this.svgContainer.getAttribute('height') - 80;
this.diagramWidth =
+this.svgContainer.getAttribute('width') - 100;
this.diagramPos = new Point2D(90, this.diagramHeight + this.dy);
this.setDiagramValues(data);
}
get diagramHeight() {
return (this._diagramHeight -
(this.values.length ? this.postWidth * 0.5 : 0) -
this.dy);
}
displayPostKeys(display) {
this._displayPostKeys = display;
this.values.forEach((postValue) => {
postValue.keyText.show(display);
});
this._diagramHeight =
+this.svgContainer.getAttribute('height') -
(display ? 80 : 30);
this.diagramPos.y = this.diagramHeight + this.dy;
this.greedGroup.clear();
this.refresh();
}
getMax() {
let max = 0;
this.values.forEach((value) => {
if (max < value.getValue()) {
max = value.getValue();
}
});
return max !== 0 ? max : 1;
}
setValueColor(valuesColor) {
this.valuesColor = valuesColor;
this.values.forEach((value) => {
value.setColor(valuesColor);
});
}
clearHtml(html) {
while (html.firstChild) {
html.removeChild(html.firstChild);
}
}
setDiagramValues(data) {
this.clearHtml(this.svgContainer);
this.clearHtml(this.legendContainer);
this.postsGroup.clear();
this.valuesGroup.clear();
this.keysGroup.clear();
this.greedGroup.clear();
this.values = [];
this.base = new SvgPolygon(this.id + 'base', new Style({
fill: new ColorRGB(150, 150, 150),
stroke: new ColorRGB(50, 50, 50),
}), this.svgContainer);
this.leftScalePlain = new SvgPolygon(this.id + 'leftScalePlain', new Style({
fill: 'none',
stroke: this.scaleColor,
}), this.svgContainer);
this.backScalePlain = new SvgPolygon(this.id + 'backScalePlain', new Style({
fill: 'none',
stroke: this.scaleColor,
}), this.svgContainer);
this.svgContainer.appendChild(this.greedGroup.svgGroupContainer);
this.svgContainer.appendChild(this.postsGroup.svgGroupContainer);
this.svgContainer.appendChild(this.valuesGroup.svgGroupContainer);
this.svgContainer.appendChild(this.keysGroup.svgGroupContainer);
let post;
const valuesKeys = keys(data);
const dataLength = valuesKeys.length;
let max = 0;
valuesKeys.forEach((element) => {
const value = data[element];
max = value > max ? value : max;
});
valuesKeys.forEach((key, index) => {
if (ElementaryMath.isNumeric(data[key])) {
post = new PostDiagramValue(key, data[key], this.postsGroup, this.valuesGroup, this.keysGroup, this.legendContainer);
post.setColor =
this.valuesColor === null
? this._colorFunction(index, dataLength, data[key], max)
: this.scaleColor;
post.keyText.show(this._displayPostKeys);
this.values.push(post);
}
else {
console.error('non numeric value ' + data[key]);
}
});
this.refresh();
}
get postWidth() {
return this.diagramWidth / (2 * this.values.length);
}
_refreshBase() {
this.base.clearPoints();
this.base.addPoint(this.diagramPos.x, this.diagramPos.y);
this.base.addPoint(this.diagramPos.x + this.postWidth * 0.5, this.diagramPos.y - this.postWidth * 0.5);
this.base.addPoint(this.diagramPos.x + this.diagramWidth, this.diagramPos.y - this.postWidth * 0.5);
this.base.addPoint(this.diagramPos.x + this.diagramWidth - this.postWidth * 0.5, this.diagramPos.y);
}
_refreshLeftScalePlain() {
this.leftScalePlain.clearPoints();
this.leftScalePlain.addPoint(this.diagramPos.x, this.diagramPos.y);
this.leftScalePlain.addPoint(this.diagramPos.x + this.postWidth * 0.5, this.diagramPos.y - this.postWidth * 0.5);
this.leftScalePlain.addPoint(this.diagramPos.x + this.postWidth * 0.5, this.diagramPos.y - this.postWidth * 0.5 - this.diagramHeight);
this.leftScalePlain.addPoint(this.diagramPos.x, this.diagramPos.y - this.diagramHeight);
}
_refreshBackScalePlain() {
this.backScalePlain.clearPoints();
this.backScalePlain.addPoint(this.diagramPos.x + this.postWidth * 0.5, this.diagramPos.y - this.postWidth * 0.5);
this.backScalePlain.addPoint(this.diagramPos.x + this.postWidth * 0.5, this.diagramPos.y - this.postWidth * 0.5 - this.diagramHeight);
this.backScalePlain.addPoint(this.diagramPos.x + this.diagramWidth, this.diagramPos.y - this.postWidth * 0.5 - this.diagramHeight);
this.backScalePlain.addPoint(this.diagramPos.x + this.diagramWidth, this.diagramPos.y - this.postWidth * 0.5);
}
_refreshScale(k) {
const max = this.getMax();
let baseUnit = Math.pow(10, Math.ceil(Math.log10(max))) / 10;
const basePow = 1 - Math.ceil(Math.log10(max));
const baseLog = Math.pow(10, basePow);
if (Math.floor(max / baseUnit) === 5) {
baseUnit = baseUnit / 2;
}
else if (Math.floor(max / baseUnit) === 4) {
baseUnit = baseUnit / 2.5;
}
else if (Math.floor(max / baseUnit) === 3) {
baseUnit = baseUnit / 4;
}
else if (Math.floor(max / baseUnit) === 2) {
baseUnit = baseUnit / 5;
}
else if (Math.floor(max / baseUnit) < 2) {
baseUnit = Math.pow(10, Math.ceil(Math.log10(max))) / 50;
}
this.scaleLines = [];
this.scaleBase = new SvgText(this.diagramPos.x - 10, this.diagramPos.y + 30, basePow !== 0 ? '×e' + -basePow : '', new Style({
fill: 'var(--default-text-color)',
'text-anchor': 'end',
}), this.id + 'basePow', new Rotate(0), this.greedGroup);
for (let index = 0; index <= max; index += baseUnit) {
const scaleLine = new SvgPolyline(this.id + 'scaleLine' + index, new Style({
fill: 'none',
stroke: this.scaleColor,
}), this.greedGroup, 'afterbegin');
scaleLine.addPoint(this.diagramPos.x, this.diagramPos.y - index * k);
scaleLine.addPoint(this.diagramPos.x + this.postWidth * 0.5, this.diagramPos.y - this.postWidth * 0.5 - index * k);
scaleLine.addPoint(this.diagramPos.x + this.diagramWidth, this.diagramPos.y - this.postWidth * 0.5 - index * k);
const value = new SvgText(this.diagramPos.x - 10, this.diagramPos.y - index * k, (index * baseLog).toFixed(2).toString(), new Style({
fill: 'var(--default-text-color)',
'text-anchor': 'end',
}), this.id + 'scaleValue' + index, new Rotate(0), this.greedGroup);
this.scaleLines.push({ line: scaleLine, value });
}
}
refresh() {
const k = this.diagramHeight / this.getMax();
this._refreshScale(k);
this._refreshBase();
this._refreshLeftScalePlain();
this._refreshBackScalePlain();
this.values.forEach((value, i) => {
value.setPost(this.diagramPos.x + i * this.postWidth * 2 + this.postWidth / 4, this.diagramPos.y, this.postWidth, k);
if (this.displayText === true) {
value.valueText.svg.style.display = 'initial';
}
else {
value.valueText.svg.style.display = 'none';
}
value.valueText.setX(this.diagramPos.x + i * this.postWidth * 2 + 0.75 * this.postWidth);
value.valueText.setY(this.diagramPos.y - value.getValue() * k - this.postWidth * 0.5 - 5);
value.keyText.setX(this.diagramPos.x + i * this.postWidth * 2 + 0.75 * this.postWidth);
value.keyText.setY(this.diagramPos.y + 10);
});
}
toString() {
let data = '';
this.values.forEach((value) => {
data += value.toString() + ';';
});
return data.slice(0, -1);
}
setDisplayValue(value) {
this.displayText = value;
this.values.forEach((diagramValue) => {
if (this.displayText === true) {
diagramValue.valueText.svg.style.display = 'initial';
}
else {
diagramValue.valueText.svg.style.display = 'none';
}
});
}
setValue(value, index) {
if (index < this.values.length) {
let max = this.getMax();
max = max < value ? value : max;
const k = value / max;
this.values[index].setValue(value, k);
}
}
}
class PostDiagramComponent {
yLabel = '';
xLabel = '';
diagramTitle = '';
// tslint:disable-next-line: variable-name
_diagramData = {};
svgContainer;
diagramLegend;
set diagramData(diagramData) {
this._diagramData = diagramData;
if (this.svgDiagram) {
this.svgDiagram.setDiagramValues(this._diagramData);
}
}
svgDiagram;
// tslint:disable-next-line: variable-name
_colorFunctionRef = (index, dataLength, value, max) => {
return ColorHSV.createColorHSV(((360 / dataLength) * 2 * index) / 2, 0.5, 255).convertToRGB();
};
set colorFunction(colorFunctionRef) {
this._colorFunctionRef = colorFunctionRef;
if (this.svgDiagram) {
this.svgDiagram.colorFunction = this._colorFunctionRef;
}
}
ngAfterViewInit() {
setTimeout(() => {
this.svgDiagram = new SvgPostDiagram('myDiagram', this._diagramData, this.svgContainer.nativeElement, this.diagramLegend.nativeElement);
this.svgDiagram.colorFunction = this._colorFunctionRef;
}, 0);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: PostDiagramComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: PostDiagramComponent, isStandalone: false, selector: "obl-post-diagram", inputs: { yLabel: "yLabel", xLabel: "xLabel", diagramTitle: "diagramTitle", diagramData: "diagramData", colorFunction: "colorFunction" }, viewQueries: [{ propertyName: "svgContainer", first: true, predicate: ["svgContainer"], descendants: true }, { propertyName: "diagramLegend", first: true, predicate: ["diagramLegend"], descendants: true }], ngImport: i0, template: "<div>\n <div class=\"diagram\">\n @if (yLabel !== '') {\n <div class=\"yLabel\">\n <div\n class=\"rotate\"\n [style.minWidth.px]=\"svgDiagram ? svgDiagram.diagramHeight : 0\"\n >\n {{ yLabel }}\n </div>\n </div>\n }\n\n <div>\n @if (svgDiagram && diagramTitle !== '') {\n <h1>\n {{ diagramTitle }}\n </h1>\n }\n <svg #svgContainer width=\"800\" height=\"400\"></svg>\n <div class=\"xLabel-container\">\n @if (svgDiagram && xLabel !== '') {\n <div\n [style.width.px]=\"svgDiagram.diagramWidth\"\n class=\"xLabel\"\n >\n {{ xLabel }}\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<div #diagramLegend class=\"legend\"></div>\n", styles: [".rotate{transform:rotate(-90deg);white-space:pre-line;text-align:center;max-height:40px}.legend{display:flex;flex-direction:column;flex-wrap:wrap}.diagram{display:flex;flex-direction:row;justify-content:center}.diagram .diagram-and-label{display:inline-block}h1{text-align:center}.yLabel{display:flex;justify-content:center;align-items:center;max-width:50px}.xLabel-container{display:flex;justify-content:center;text-align:center}:host{display:flex;justify-content:center;flex-wrap:wrap;align-items:flex-end}\n"] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: PostDiagramComponent, decorators: [{
type: Component,
args: [{ selector: 'obl-post-diagram', standalone: false, template: "<div>\n <div class=\"diagram\">\n @if (yLabel !== '') {\n <div class=\"yLabel\">\n <div\n class=\"rotate\"\n [style.minWidth.px]=\"svgDiagram ? svgDiagram.diagramHeight : 0\"\n >\n {{ yLabel }}\n </div>\n </div>\n }\n\n <div>\n @if (svgDiagram && diagramTitle !== '') {\n <h1>\n {{ diagramTitle }}\n </h1>\n }\n <svg #svgContainer width=\"800\" height=\"400\"></svg>\n <div class=\"xLabel-container\">\n @if (svgDiagram && xLabel !== '') {\n <div\n [style.width.px]=\"svgDiagram.diagramWidth\"\n class=\"xLabel\"\n >\n {{ xLabel }}\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<div #diagramLegend class=\"legend\"></div>\n", styles: [".rotate{transform:rotate(-90deg);white-space:pre-line;text-align:center;max-height:40px}.legend{display:flex;flex-direction:column;flex-wrap:wrap}.diagram{display:flex;flex-direction:row;justify-content:center}.diagram .diagram-and-label{display:inline-block}h1{text-align:center}.yLabel{display:flex;justify-content:center;align-items:center;max-width:50px}.xLabel-container{display:flex;justify-content:center;text-align:center}:host{display:flex;justify-content:center;flex-wrap:wrap;align-items:flex-end}\n"] }]
}], propDecorators: { yLabel: [{
type: Input
}], xLabel: [{
type: Input
}], diagramTitle: [{
type: Input
}], svgContainer: [{
type: ViewChild,
args: ['svgContainer']
}], diagramLegend: [{
type: ViewChild,
args: ['diagramLegend']
}], diagramData: [{
type: Input
}], colorFunction: [{
type: Input
}] } });
class PostDiagramModule {
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: PostDiagramModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: PostDiagramModule, declarations: [PostDiagramComponent], imports: [CommonModule], exports: [PostDiagramComponent] });
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: PostDiagramModule, imports: [CommonModule] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: PostDiagramModule, decorators: [{
type: NgModule,
args: [{
declarations: [PostDiagramComponent],
imports: [CommonModule],
providers: [],
exports: [PostDiagramComponent],
}]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { PostDiagramComponent, PostDiagramModule, Rotate, Style, SvgGroup, SvgRect, SvgText, Transform };
//# sourceMappingURL=obliczeniowo-elementary-post-diagram.mjs.map