UNPKG

@dangl/angular-ava

Version:

[![Node version](https://img.shields.io/npm/v/@dangl/angular-ava)](https://www.npmjs.com/package/@dangl/angular-ava)

1 lines 371 kB
{"version":3,"file":"dangl-angular-ava.mjs","sources":["../../../projects/angular-ava/src/lib/ava-tree/model/tree-mode.model.ts","../../../projects/angular-ava/src/lib/version.ts","../../../projects/angular-ava/src/lib/ava-tree/services/tree-hover-tooltip.service.ts","../../../projects/angular-ava/src/lib/ava-tree/directives/hover-effect.directive.ts","../../../projects/angular-ava/src/lib/invoice/model/invoice-models.ts","../../../projects/angular-ava/src/lib/invoice/constants/defaultTextWordInvoice.ts","../../../projects/angular-ava/src/lib/invoice/constants/language.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaultFilters.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaultTextWords.ts","../../../projects/angular-ava/src/lib/ava-tree/constants/defaults.ts","../../../projects/angular-ava/src/lib/ava-tree/services/configuration-tree.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/expand-parent-group.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/flat-elements.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/select-element.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/keyboard-operation.service.ts","../../../projects/angular-ava/src/lib/ava-tree/services/tree-node-selection.service.ts","../../../projects/angular-ava/src/lib/ava-tree/directives/save-changing-view.directive.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-icon-name.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-item-number.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/pipes/element-text.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-item/tree-item.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-item/tree-item.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/list-structure/list-structure.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/list-structure/list-structure.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/table-structure/table-structure.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/table-structure/table-structure.component.html","../../../projects/angular-ava/src/lib/ava-tree/pipes/group-child-elements.pipe.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-node/tree-node.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/tree-node/tree-node.component.html","../../../projects/angular-ava/src/lib/ava-tree/components/ava-tree/ava-tree.component.ts","../../../projects/angular-ava/src/lib/ava-tree/components/ava-tree/ava-tree.component.html","../../../projects/angular-ava/src/lib/invoice/constants/alignment-options.ts","../../../projects/angular-ava/src/lib/invoice/services/configuration-invoice.service.ts","../../../projects/angular-ava/src/lib/invoice/pipes/currency-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/line-split.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/percent-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/pipes/invoice-attachment-mime-type.pipe.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-documents/invoice-documents.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-documents/invoice-documents.component.html","../../../projects/angular-ava/src/lib/invoice/pipes/number-plus.pipe.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-item-additional-info/invoice-line-item-additional-info.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-item-additional-info/invoice-line-item-additional-info.component.html","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-items-table/invoice-line-items-table.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-line-items-table/invoice-line-items-table.component.html","../../../projects/angular-ava/src/lib/invoice/components/organization-info/organization-info.component.ts","../../../projects/angular-ava/src/lib/invoice/components/organization-info/organization-info.component.html","../../../projects/angular-ava/src/lib/invoice/components/reference-and-delivery-information/reference-and-delivery-information.component.ts","../../../projects/angular-ava/src/lib/invoice/components/reference-and-delivery-information/reference-and-delivery-information.component.html","../../../projects/angular-ava/src/lib/invoice/components/invoice-display/invoice-display.component.ts","../../../projects/angular-ava/src/lib/invoice/components/invoice-display/invoice-display.component.html","../../../projects/angular-ava/src/public-api.ts","../../../projects/angular-ava/src/dangl-angular-ava.ts"],"sourcesContent":["export enum ModeViewType {\n  Tree = 'Tree',\n  List = 'List',\n  Table = 'Table'\n}\n","// This file is automatically generated as part of the build process\n\nexport const version = {\n    version: \"1.5.3\",\n    commitInfo: \"Branch.main.Sha.45aaeca06d0340fb59606dc44b2306ce92321d9b\",\n    commitDate: \"2026-05-31\",\n    commitHash: \"45aaeca06d0340fb59606dc44b2306ce92321d9b\",\n    informationalVersion: \"1.5.3+Branch.main.Sha.45aaeca06d0340fb59606dc44b2306ce92321d9b\",\n    buildDateUtc: new Date(Date.UTC(2026, 4, 31, 13, 14, 41))\n}\n","export class TreeHoverTooltipService {\n  showElementOver(text: HTMLElement | null): void {\n    if (!text) return;\n    const rect = text.getBoundingClientRect();\n    text.style.position = 'fixed';\n    text.style.top = `${rect.top}px`;\n    text.style.left = `${rect.left}px`;\n    text.style.zIndex = '2000';\n  }\n\n  hideElementOver(text: HTMLElement | null): void {\n    if (!text) return;\n    text.style.position = 'static';\n    text.style.top = ``;\n    text.style.left = ``;\n    text.style.zIndex = '';\n  }\n}\n","import { Directive, HostListener, inject, input } from '@angular/core';\n\nimport { TreeItemComponent } from '../components/tree-item/tree-item.component';\nimport { TreeHoverTooltipService } from '../services/tree-hover-tooltip.service';\n\ntype TimeoutType = ReturnType<typeof setTimeout>;\n\n@Directive({\n  selector: '[avaHoverEffect]',\n  standalone: true\n})\nexport class HoverEffectDirective {\n  itemText = input<TreeItemComponent | null>(null, { alias: 'avaHoverEffect' });\n  private allowShow: TimeoutType | null = null;\n  private treeHoverTooltipService = inject(TreeHoverTooltipService);\n\n  @HostListener('mouseenter') onMouseEnter() {\n    const itemText = this.itemText();\n    if (itemText) {\n      this.treeHoverTooltipService.showElementOver(itemText.textElement()?.nativeElement);\n    }\n  }\n  @HostListener('mouseup') onMouseUp() {\n    this.allowShow = setTimeout(() => {\n      this.hide();\n      const itemText = this.itemText();\n      if (itemText) {\n        this.treeHoverTooltipService.showElementOver(itemText.textElement()?.nativeElement);\n      }\n    }, 400);\n  }\n\n  @HostListener('wheel') onWheel() {\n    this.hide();\n  }\n  @HostListener('scroll') onScroll() {\n    this.hide();\n  }\n  @HostListener('mouseleave') onMouseLeave() {\n    this.hide();\n  }\n  @HostListener('keydown') onKeyDown() {\n    this.hide();\n  }\n  @HostListener('mouseout') onMouseOut() {\n    this.hide();\n  }\n\n  @HostListener('mousemove', ['$event']) onMouseMove(event: MouseEvent) {\n    const element = event.currentTarget as HTMLElement;\n    const parent = element.closest('.ava-tree-wrapper');\n    if (parent) {\n      const rect = parent.getBoundingClientRect();\n      if (event.x > rect.right) {\n        this.onMouseLeave();\n      }\n    }\n  }\n\n  private hide(): void {\n    if (this.allowShow) {\n      clearTimeout(this.allowShow);\n      this.allowShow = null;\n    }\n    const itemText = this.itemText();\n    if (itemText) {\n      this.treeHoverTooltipService.hideElementOver(itemText.textElement()?.nativeElement);\n    }\n  }\n}\n","import { ProjectDto } from '../../ava-tree/model';\n\n//----------------------\n// <auto-generated>\n//     Generated using the NSwag toolchain v14.1.0.0 (NJsonSchema v11.0.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\n// </auto-generated>\n//----------------------\n\n/* tslint:disable */\n/* eslint-disable */\n// ReSharper disable InconsistentNaming\n\n/** This class represents an invoice */\nexport interface Invoice {\n  /** The number of the invoice */\n  invoiceNumber?: string | undefined;\n  /** The date of the invoice */\n  invoiceDate?: Date | undefined;\n  /** The type of the invoice */\n  invoiceType?: InvoiceType | undefined;\n  /** The three letter ISO currency code */\n  currencyCode?: string | undefined;\n  /** Until when the payment is due */\n  paymentDueDate?: Date | undefined;\n  /** An object holding reference used in this invoice */\n  references?: References | undefined;\n  /** A text description of payment terms, e.g. cash discounts or payment conditions */\n  paymentTerms?: string | undefined;\n  /** In case of partial or final invoices, it's possible to reference the previous invoice numbers */\n  previousInvoices?: PreviousInvoice[] | undefined;\n  /** Information about the buyer */\n  buyer?: Organization | undefined;\n  /** Information about the seller */\n  seller?: Organization | undefined;\n  /** Information about the sellers tax representative */\n  sellerTaxRepresentative?: Organization | undefined;\n  /** A payee is someone who receives the payment that is different from the seller */\n  payee?: Payee | undefined;\n  /** If present, this is an unstructured text that can be used to give additional information\nabout the invoice. Field BG-1 */\n  invoiceNotes?: InvoiceNote[] | undefined;\n  /** The period during which the services or goods were delivered */\n  invoicePeriod?: InvoicePeriod | undefined;\n  /** Information about the delivery\nBG-13 in XRechnung */\n  deliveryInformation?: DeliveryInformation | undefined;\n  /** Totals for the invoice */\n  totals?: InvoiceTotals | undefined;\n  /** Instructions how to perform the payment */\n  paymentInstructions?: PaymentInstructions | undefined;\n  /** Attached documents to the invoice */\n  documents?: SupportingDocument[] | undefined;\n  /** This is used to list VAT by category, e.g. for invoices where parts are in different VAT categories */\n  vatBreakdown?: VatBreakdown[] | undefined;\n  /** Allowances / deductions on the invoice */\n  allowances?: InvoiceAllowance[] | undefined;\n  /** Charges / additional costs on the invoice */\n  charges?: InvoiceCharge[] | undefined;\n  /** Single line items in the invoice */\n  lineItems?: InvoiceLineItem[] | undefined;\n  /** The source type from which the invoice was created */\n  sourceType?: SourceType | undefined;\n}\n\n/** Type of the invoice */\nexport enum InvoiceType {\n  PartialInvoice = 326,\n  CommercialInvoice = 380,\n  CreditNote = 381,\n  CorrectedInvoice = 384,\n  SelfBilledInvoice = 389,\n  PartialConstructionInvoice = 875,\n  PartialFinalConstructionInvoice = 876,\n  FinalConstructionInvoice = 877\n}\n\n/** This class holds typical references used in an invoice */\nexport interface References {\n  /** An internal reference used by the buyer, this can also be used as the\n'Leitweg-ID' in Germany\nBT-10 in XRechnung. */\n  buyerReference?: string | undefined;\n  /** Reference to a project\nBT-11 in XRechnung. */\n  projectReference?: string | undefined;\n  /** Reference to a contract\nBT-12 in XRechnung. */\n  contractReference?: string | undefined;\n  /** Reference to a purchase order created by the buyer\nBT-13 in XRechnung. */\n  purchaseOrderReference?: string | undefined;\n  /** Reference to a sales order created by the seller\nBT-14 in XRechnung. */\n  salesOrderReference?: string | undefined;\n  /** Reference to a delivery note\nBT-15 in XRechnung. */\n  receivingAdviceReference?: string | undefined;\n  /** Reference to a dispatch advice\nBT-16 in XRechnung. */\n  dispatchAdviceReference?: string | undefined;\n  /** Reference to a tender or lot\nBT-17 in XRechnung. */\n  tenderOrLotReference?: string | undefined;\n  /** Reference to a custom item, e.g. a phone number, person,\ncontract or anything that would identify the invoice in the buyer's system\nBT-18 in XRechnung. */\n  invoicedObjectIdentifier?: string | undefined;\n  /** This is a reference for accounting, like a cost center or similar. In German,\nthis would be a \"Kostenstelle\".\nBT-19 in XRechnung. */\n  accountingReference?: string | undefined;\n}\n\n/** References to previous invoices */\nexport interface PreviousInvoice {\n  /** The date of the previous invoice */\n  invoiceDate?: Date | undefined;\n  /** The number of the previous invoice */\n  invoiceNumber?: string | undefined;\n}\n\n/** Represents an organization, e.g. a buyer or a seller */\nexport interface Organization {\n  /** The identifier of the organization */\n  identifier?: string | undefined;\n  /** The name of the organization */\n  name?: string | undefined;\n  /** A registration number, e.g. a Handelsregisternummer in Germany */\n  registrationNumber?: string | undefined;\n  /** The VAT ID for the organization */\n  vatId?: string | undefined;\n  /** The tax ID for the organization */\n  taxId?: string | undefined;\n  /** An email address for the organization */\n  email?: string | undefined;\n  /** The name of a contact person */\n  contactPersonName?: string | undefined;\n  /** The phone of a contact person */\n  contactPersonPhone?: string | undefined;\n  /** The email of a contact person */\n  contactPersonEmail?: string | undefined;\n  /** The address of the organization */\n  address?: string | undefined;\n  /** The city of the organization */\n  city?: string | undefined;\n  /** The zip code of the organization */\n  zipCode?: string | undefined;\n  /** The ISO 3166-1 2 letter country code */\n  countryCode?: string | undefined;\n  /** The state of the organization, e.g. a federal state in Germany */\n  state?: string | undefined;\n  /** This provides some additional legal information.\nBT-33 in XRechnung, and this is only used for the seller. */\n  additionalLegalInformation?: string | undefined;\n}\n\n/** Represents a payee, meaning someone that receives the payment */\nexport interface Payee {\n  /** The name of the payee */\n  name?: string | undefined;\n  /** The identifier of the payee */\n  identifier?: string | undefined;\n  /** A registered identifier for the payee, e.g. a VAT ID\nor Tax ID */\n  legalRegistrationIdentifier?: string | undefined;\n}\n\n/** Represents a note / text in an invoice */\nexport interface InvoiceNote {\n  /** Short summary / heading. Should be a text code from this list:\nhttps://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred4451.htm\nField BT-21 */\n  shortText?: string | undefined;\n  /** Short summary / heading type. This will be automatically parsed from ShortText\nand is a read-only property. */\n  shortTextType?: ShortTextType | undefined;\n  /** Explanation of this note\nField BT-22 */\n  longText?: string | undefined;\n}\n\n/** Type qualifying the subject of the text. */\nexport enum ShortTextType {\n  GoodsItemDescription = 0,\n  PaymentTerm = 1,\n  DangerousGoodsAdditionalInformation = 2,\n  DangerousGoodsTechnicalName = 3,\n  AcknowledgementDescription = 4,\n  RateAdditionalInformation = 5,\n  PartyInstructions = 6,\n  GeneralInformation = 7,\n  AdditionalConditionsOfSalePurchase = 8,\n  PriceConditions = 9,\n  GoodsDimensionsInCharacters = 10,\n  EquipmentReUsageRestrictions = 11,\n  HandlingRestriction = 12,\n  ErrorDescriptionFreeText = 13,\n  ResponseFreeText = 14,\n  PackageContentsDescription = 15,\n  TermsOfDelivery = 16,\n  BillOfLadingRemarks = 17,\n  ModeOfSettlementInformation = 18,\n  ConsignmentInvoiceInformation = 19,\n  ClearanceInvoiceInformation = 20,\n  LetterOfCreditInformation = 21,\n  LicenseInformation = 22,\n  CertificationStatements = 23,\n  AdditionalExportInformation = 24,\n  TariffStatements = 25,\n  MedicalHistory = 26,\n  ConditionsOfSaleOrPurchase = 27,\n  ContractDocumentType = 28,\n  AdditionalTermsAndOrConditionsDocumentaryCredit = 29,\n  InstructionsOrInformationAboutStandbyDocumentary = 30,\n  InstructionsOrInformationAboutPartialShipments = 31,\n  InstructionsOrInformationAboutTranshipments = 32,\n  AdditionalHandlingInstructionsDocumentaryCredit = 33,\n  DomesticRoutingInformation = 34,\n  ChargeableCategoryOfEquipment = 35,\n  GovernmentInformation = 36,\n  OnwardRoutingInformation = 37,\n  AccountingInformation = 38,\n  DiscrepancyInformation = 39,\n  ConfirmationInstructions = 40,\n  MethodOfIssuance = 41,\n  DocumentsDeliveryInstructions = 42,\n  AdditionalConditions = 43,\n  InformationInstructionsAboutAdditionalAmountsCovered = 44,\n  DeferredPaymentTermedAdditional = 45,\n  AcceptanceTermsAdditional = 46,\n  NegotiationTermsAdditional = 47,\n  DocumentNameAndDocumentaryRequirements = 48,\n  InstructionsInformationAboutRevolvingDocumentaryCredit = 49,\n  DocumentaryRequirements = 50,\n  AdditionalInformation = 51,\n  FactorAssignmentClause = 52,\n  Reason = 53,\n  Dispute = 54,\n  AdditionalAttributeInformation = 55,\n  AbsenceDeclaration = 56,\n  AggregationStatement = 57,\n  CompilationStatement = 58,\n  DefinitionalException = 59,\n  PrivacyStatement = 60,\n  QualityStatement = 61,\n  StatisticalDescription = 62,\n  StatisticalDefinition = 63,\n  StatisticalName = 64,\n  StatisticalTitle = 65,\n  OffDimensionInformation = 66,\n  UnexpectedStopsInformation = 67,\n  Principles = 68,\n  TermsAndDefinition = 69,\n  SegmentName = 70,\n  SimpleDataElementName = 71,\n  Scope = 72,\n  MessageTypeName = 73,\n  Introduction = 74,\n  Glossary = 75,\n  FunctionalDefinition = 76,\n  Examples = 77,\n  CoverPage = 78,\n  DependencySyntaxNotes = 79,\n  CodeValueName = 80,\n  CodeListName = 81,\n  ClarificationOfUsage = 82,\n  CompositeDataElementName = 83,\n  FieldOfApplication = 84,\n  TypeOfAssetsAndLiabilities = 85,\n  PromotionInformation = 86,\n  MeterCondition = 87,\n  MeterReadingInformation = 88,\n  TypeOfTransactionReason = 89,\n  TypeOfSurveyQuestion = 90,\n  CarriersAgentCounterInformation = 91,\n  DescriptionOfWorkItemOnEquipment = 92,\n  MessageDefinition = 93,\n  BookedItemInformation = 94,\n  SourceOfDocument = 95,\n  Note = 96,\n  FixedPartOfSegmentClarificationText = 97,\n  CharacteristicsOfGoods = 98,\n  AdditionalDischargeInstructions = 99,\n  ContainerStrippingInstructions = 100,\n  CscContainerSafetyConventionPlateInformation = 101,\n  CargoRemarks = 102,\n  TemperatureControlInstructions = 103,\n  TextRefersToExpectedData = 104,\n  TextRefersToReceivedData = 105,\n  SectionClarificationText = 106,\n  InformationToTheBeneficiary = 107,\n  InformationToTheApplicant = 108,\n  InstructionsToTheBeneficiary = 109,\n  InstructionsToTheApplicant = 110,\n  ControlledAtmosphere = 111,\n  TakeOffAnnotation = 112,\n  PriceVariationNarrative = 113,\n  DocumentaryCreditAmendmentInstructions = 114,\n  StandardMethodNarrative = 115,\n  ProjectNarrative = 116,\n  RadioactiveGoodsAdditionalInformation = 117,\n  BankToBankInformation = 118,\n  ReimbursementInstructions = 119,\n  ReasonForAmendingAMessage = 120,\n  InstructionsToThePayingAndOrAcceptingAndOr = 121,\n  InterestInstructions = 122,\n  AgentCommission = 123,\n  RemittingBankInstructions = 124,\n  InstructionsToTheCollectingBank = 125,\n  CollectionAmountInstructions = 126,\n  InternalAuditingInformation = 127,\n  Constraint = 128,\n  Comment = 129,\n  SemanticNote = 130,\n  HelpText = 131,\n  Legend = 132,\n  BatchCodeStructure = 133,\n  ProductApplication = 134,\n  CustomerComplaint = 135,\n  ProbableCauseOfFault = 136,\n  DefectDescription = 137,\n  RepairDescription = 138,\n  ReviewComments = 139,\n  Title = 140,\n  DescriptionOfAmount = 141,\n  Responsibilities = 142,\n  Supplier = 143,\n  PurchaseRegion = 144,\n  Affiliation = 145,\n  Borrower = 146,\n  LineOfBusiness = 147,\n  FinancialInstitution = 148,\n  BusinessFounder = 149,\n  BusinessHistory = 150,\n  BankingArrangements = 151,\n  BusinessOrigin = 152,\n  BrandNamesDescription = 153,\n  BusinessFinancingDetails = 154,\n  Competition = 155,\n  ConstructionProcessDetails = 156,\n  ConstructionSpecialty = 157,\n  ContractInformation = 158,\n  CorporateFiling = 159,\n  CustomerInformation = 160,\n  CopyrightNotice = 161,\n  ContingentDebt = 162,\n  ConvictionDetails = 163,\n  Equipment = 164,\n  WorkforceDescription = 165,\n  Exemption = 166,\n  FuturePlans = 167,\n  IntervieweeConversationInformation = 168,\n  IntangibleAsset = 169,\n  Inventory = 170,\n  Investment = 171,\n  IntercompanyRelationsInformation = 172,\n  JointVenture = 173,\n  Loan = 174,\n  LongTermDebt = 175,\n  Location = 176,\n  CurrentLegalStructure = 177,\n  MaritalContract = 178,\n  MarketingActivities = 179,\n  Merger = 180,\n  MarketableSecurities = 181,\n  BusinessDebt = 182,\n  OriginalLegalStructure = 183,\n  EmployeeSharingArrangements = 184,\n  OrganizationDetails = 185,\n  PublicRecordDetails = 186,\n  PriceRange = 187,\n  Qualifications = 188,\n  RegisteredActivity = 189,\n  CriminalSentence = 190,\n  SalesMethod = 191,\n  EducationalInstitutionInformation = 192,\n  StatusDetails = 193,\n  Sales = 194,\n  SpouseInformation = 195,\n  EducationalDegreeInformation = 196,\n  ShareholdingInformation = 197,\n  SalesTerritory = 198,\n  AccountantsComments = 199,\n  ExemptionLawLocation = 200,\n  ShareClassifications = 201,\n  Forecast = 202,\n  EventLocation = 203,\n  FacilityOccupancy = 204,\n  ImportAndExportDetails = 205,\n  AdditionalFacilityInformation = 206,\n  InventoryValue = 207,\n  Education = 208,\n  Event = 209,\n  Agent = 210,\n  DomesticallyAgreedFinancialStatementDetails = 211,\n  OtherCurrentAssetDescription = 212,\n  OtherCurrentLiabilityDescription = 213,\n  FormerBusinessActivity = 214,\n  TradeNameUse = 215,\n  SigningAuthority = 216,\n  Guarantee = 217,\n  HoldingCompanyOperation = 218,\n  ConsignmentRouting = 219,\n  LetterOfProtest = 220,\n  Question = 221,\n  PartyInformation = 222,\n  AreaBoundariesDescription = 223,\n  AdvertisementInformation = 224,\n  FinancialStatementDetails = 225,\n  AccessInstructions = 226,\n  Liquidity = 227,\n  CreditLine = 228,\n  WarrantyTerms = 229,\n  DivisionDescription = 230,\n  ReportingInstruction = 231,\n  ExaminationResult = 232,\n  LaboratoryResult = 233,\n  AllowanceChargeInformation = 234,\n  XRayResult = 235,\n  PathologyResult = 236,\n  InterventionDescription = 237,\n  SummaryOfAdmittance = 238,\n  MedicalTreatmentCourseDetail = 239,\n  Prognosis = 240,\n  InstructionToPatient = 241,\n  InstructionToPhysician = 242,\n  AllDocuments = 243,\n  MedicineTreatment = 244,\n  MedicineDosageAndAdministration = 245,\n  AvailabilityOfPatient = 246,\n  ReasonForServiceRequest = 247,\n  PurposeOfService = 248,\n  ArrivalConditions = 249,\n  ServiceRequestersComment = 250,\n  Authentication = 251,\n  RequestedLocationDescription = 252,\n  MedicineAdministrationCondition = 253,\n  PatientInformation = 254,\n  PrecautionaryMeasure = 255,\n  ServiceCharacteristic = 256,\n  PlannedEventComment = 257,\n  ExpectedDelayComment = 258,\n  TransportRequirementsComment = 259,\n  TemporaryApprovalCondition = 260,\n  CustomsValuationInformation = 261,\n  ValueAddedTaxVatMarginScheme = 262,\n  PassengerBaggageInformation = 263,\n  AdditionalProductInformationAddress = 264,\n  InformationToBePrintedOnDespatchAdvice = 265,\n  MissingGoodsRemarks = 266,\n  NonAcceptanceInformation = 267,\n  ReturnsInformation = 268,\n  SubLineItemInformation = 269,\n  TestInformation = 270,\n  ExternalLink = 271,\n  VatExemptionReason = 272,\n  TransportContractDocumentClause = 273,\n  InstructionToPrepareThePatient = 274,\n  MedicineTreatmentComment = 275,\n  ExaminationResultComment = 276,\n  ServiceRequestComment = 277,\n  PrescriptionReason = 278,\n  PrescriptionComment = 279,\n  ClinicalInvestigationComment = 280,\n  MedicinalSpecificationComment = 281,\n  EconomicContributionComment = 282,\n  StatusOfAPlan = 283,\n  RandomSampleTestInformation = 284,\n  PeriodOfTime = 285,\n  Legislation = 286,\n  SecurityMeasuresRequested = 287,\n  TransportContractDocumentRemark = 288,\n  PreviousPortOfCallSecurityInformation = 289,\n  SecurityInformation = 290,\n  WasteInformation = 291,\n  B2cMarketingInformationShortDescription = 292,\n  B2bMarketingInformationLongDescription = 293,\n  B2cMarketingInformationLongDescription = 294,\n  ProductIngredients = 295,\n  LocationShortName = 296,\n  PackagingMaterialInformation = 297,\n  FillerMaterialInformation = 298,\n  ShipToShipActivityInformation = 299,\n  PackageMaterialDescription = 300,\n  ConsumerLevelPackageMarking = 301,\n  CustomsClearanceInstructions = 302,\n  CustomsClearanceInstructionsExport = 303,\n  ChangeInformation = 304,\n  CustomsClearanceInstructionImport = 305,\n  ClearancePlaceRequested = 306,\n  LoadingRemarks = 307,\n  OrderInformation = 308,\n  CustomerRemarks = 309,\n  CustomsDeclarationInformation = 310,\n  DamageRemarks = 311,\n  DocumentIssuerDeclaration = 312,\n  DeliveryInformation = 313,\n  DeliveryInstructions = 314,\n  DocumentationInstructions = 315,\n  DutyDeclaration = 316,\n  EffectiveUsedRouting = 317,\n  FirstBlockToBePrintedOnTheTransportContract = 318,\n  GovernmentBillOfLadingInformation = 319,\n  EntireTransactionSet = 320,\n  FurtherInformationConcerningGGVSPar7 = 321,\n  ConsignmentHandlingInstruction = 322,\n  HazardInformation = 323,\n  ConsignmentInformationForConsignee = 324,\n  InsuranceInstructions = 325,\n  InvoiceMailingInstructions = 326,\n  CommercialInvoiceItemDescription = 327,\n  InsuranceInformation = 328,\n  InvoiceInstruction = 329,\n  InformationForRailwayPurpose = 330,\n  InlandTransportDetails = 331,\n  TestingInstructions = 332,\n  LocationAlias = 333,\n  LineItem = 334,\n  LoadingInstruction = 335,\n  MiscellaneousChargeOrder = 336,\n  MaritimeDeclarationOfHealth = 337,\n  AdditionalMarksNumbersInformation = 338,\n  OrderInstruction = 339,\n  OtherServiceInformation = 340,\n  PackingMarkingInformation = 341,\n  PaymentInstructionsInformation = 342,\n  PayablesInformation = 343,\n  PackagingInformation = 344,\n  PackagingTermsInformation = 345,\n  PaymentDetailRemittanceInformation = 346,\n  PaymentInformation = 347,\n  ProductInformation = 348,\n  PriceCalculationFormula = 349,\n  PriorityInformation = 350,\n  PurchasingInformation = 351,\n  QuarantineInstructions = 352,\n  QualityDemandsRequirements = 353,\n  QuotationInstructionInformation = 354,\n  RiskAndHandlingInformation = 355,\n  RegulatoryInformation = 356,\n  ReturnToOriginInformation = 357,\n  Receivables = 358,\n  ConsignmentRoute = 359,\n  SafetyInformation = 360,\n  ConsignmentDocumentaryInstruction = 361,\n  SpecialInstructions = 362,\n  ShipLineRequested = 363,\n  SpecialPermissionForTransportGenerally = 364,\n  SpecialPermissionConcerningTheGoodsToBeTransported = 365,\n  SpecialHandling = 366,\n  SpecialPermissionConcerningPackage = 367,\n  SpecialPermissionConcerningTransportMeans = 368,\n  SubsidiaryRiskNumberIataDgr = 369,\n  SpecialServiceRequest = 370,\n  SupplierRemarks = 371,\n  ConsignmentTariff = 372,\n  ConsignmentTransport = 373,\n  TransportationInformation = 374,\n  RequestedTariff = 375,\n  TaxDeclaration = 376,\n  WarehouseInstructionInformation = 377,\n  MutuallyDefined = 378\n}\n\n/** Represents an invoice period with start and end dates */\nexport interface InvoicePeriod {\n  /** The start date */\n  start?: Date | undefined;\n  /** The end date */\n  end?: Date | undefined;\n}\n\n/** Information about the delivery */\nexport interface DeliveryInformation {\n  /** BT-70 in XRechnung */\n  deliverToName?: string | undefined;\n  /** BT-71 in XRechnung */\n  deliverToLocationIdentifier?: string | undefined;\n  /** BT-72 in XRechnung */\n  deliveryDate?: Date | undefined;\n  /** BG-15 in XRechnung */\n  deliveryAddress?: DeliveryAddress | undefined;\n}\n\n/** Address for deliveries */\nexport interface DeliveryAddress {\n  /** The address. BT-75, BT-76 and BT-165 in XRechnung. */\n  address?: string | undefined;\n  /** The city. BT-77 in XRechnung. */\n  city?: string | undefined;\n  /** The zip code. BT-78 in XRechnung. */\n  zipCode?: string | undefined;\n  /** The ISO 3166-1 2 letter country code. BT-80 in XRechnung. */\n  countryCode?: string | undefined;\n}\n\n/** Totals for the invoice */\nexport interface InvoiceTotals {\n  /** Sum of all invoice items in net.\nBT-106 in XRechnung. */\n  totalNet?: number | undefined;\n  /** This is the sum of all allowances (e.g. deductions or withheld tax) in the invoice\nBT-107 in XRechnung. */\n  totalAllowances?: number | undefined;\n  /** This is the sum of all charges in the invoice, except VAT. For example, late\nfees or surcharges.\nBT-108 in XRechnung. */\n  totalCharges?: number | undefined;\n  /** This is the total net value of the invoice after applied allowances and charges,\nmeaning the actual net sum to be paid.\nBT-109 in XRechnung. */\n  totalAfterDeductions?: number | undefined;\n  /** The total amount of VAT in the invoice.\nBT-110 in XRechnung. */\n  totalVatAmount?: number | undefined;\n  /** The total gross amount of the invoice, including all taxes and deductions.\nBT-112 in XRechnung. */\n  totalGross?: number | undefined;\n  /** The total amount that has already been paid for this invoice, e.g. used when\nprevious invoice sums are included here that have already been paid.\nBT-113 in XRechnung. */\n  alreadyPaidTotal?: number | undefined;\n  /** If this is given, this specifies if any rounding amount is applied to the invoice,\nbefore calculating the TotalToBePaid value.\nBT-114 in XRechnung. */\n  payableRoundingAmount?: number | undefined;\n  /** The sum that needs to be paid for this invoice. This is the total gross amount\nminus the already paid amount.\nBT-115 in XRechnung. */\n  totalToBePaid?: number | undefined;\n}\n\n/** Instructions how payment for an invoice should be provided. */\nexport interface PaymentInstructions {\n  /** Additional text to describe the payment instructions. */\n  description?: string | undefined;\n  /** This should be a code according to UNCL 4461\nto identify the type of payment. For example, code \"58\" means SEPA Credit Transfer,\nand code \"30\" means non-SEPA Credit Transfer.\nSee this list: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/ */\n  paymentTypeCode?: string | undefined;\n  /** This should be a type according to UNCL 4461\nto identify the type of payment. */\n  paymentType?: PaymentType | undefined;\n  /** If a SEPA direct debit payment mean is used, then this reference should be provided.\nIt's the creditor identifier in SEPA, in German \"Gläubiger-Identifikationsnummer\".\nField BT-90 in XRechnung. */\n  paymentCreditorIdentifier?: string | undefined;\n  /** A list of payment means that can be used to pay the invoice. */\n  paymentMeans?: PaymentMeans[] | undefined;\n}\n\n/** Indication of the instrument of payment, which may include a guarantee. Enumeration values are self-descriptive, so no comments needed here. According to UNCL 4461, see: https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/ */\nexport enum PaymentType {\n  MutuallyDefined = 0,\n  InstrumentNotDefined = 1,\n  AutomatedClearingHouseCredit = 2,\n  AutomatedClearingHouseDebit = 3,\n  ACHDemandDebitReversal = 4,\n  ACHDemandCreditReversal = 5,\n  ACHDemandCredit = 6,\n  ACHDemandDebit = 7,\n  Hold = 8,\n  NationalOrRegionalClearing = 9,\n  InCash = 10,\n  ACHSavingsCreditReversal = 11,\n  ACHSavingsDebitReversal = 12,\n  ACHSavingsCredit = 13,\n  ACHSavingsDebit = 14,\n  BookentryCredit = 15,\n  BookentryDebit = 16,\n  ACHDemandCashConcentrationDisbursementCCDCredit = 17,\n  ACHDemandCashConcentrationDisbursementCCDDebit = 18,\n  ACHDemandCorporateTradePaymentCTPCredit = 19,\n  Cheque = 20,\n  BankerSDraft = 21,\n  CertifiedBankerSDraft = 22,\n  BankChequeIssuedByABankingOrSimilarEstablishment = 23,\n  BillOfExchangeAwaitingAcceptance = 24,\n  CertifiedCheque = 25,\n  LocalCheque = 26,\n  ACHDemandCorporateTradePaymentCTPDebit = 27,\n  ACHDemandCorporateTradeExchangeCTXCredit = 28,\n  ACHDemandCorporateTradeExchangeCTXDebit = 29,\n  CreditTransfer = 30,\n  DebitTransfer = 31,\n  ACHDemandCashConcentrationDisbursementPlusCCDCredit = 32,\n  ACHDemandCashConcentrationDisbursementPlusCCDDebit = 33,\n  ACHPrearrangedPaymentAndDepositPPD = 34,\n  ACHSavingsCashConcentrationDisbursementCCDCredit = 35,\n  ACHSavingsCashConcentrationDisbursementCCDDebit = 36,\n  ACHSavingsCorporateTradePaymentCTPCredit = 37,\n  ACHSavingsCorporateTradePaymentCTPDebit = 38,\n  ACHSavingsCorporateTradeExchangeCTXCredit = 39,\n  ACHSavingsCorporateTradeExchangeCTXDebit = 40,\n  ACHSavingsCashConcentrationDisbursementPlusCCDCredit = 41,\n  PaymentToBankAccount = 42,\n  ACHSavingsCashConcentrationDisbursementPlusCCDDebit = 43,\n  AcceptedBillOfExchange = 44,\n  ReferencedHomeBankingCreditTransfer = 45,\n  InterbankDebitTransfer = 46,\n  HomeBankingDebitTransfer = 47,\n  BankCard = 48,\n  DirectDebit = 49,\n  PaymentByPostgiro = 50,\n  FRNorme697TelereglementCFONBFrenchOrganisationFor = 51,\n  UrgentCommercialPayment = 52,\n  UrgentTreasuryPayment = 53,\n  CreditCard = 54,\n  DebitCard = 55,\n  Bankgiro = 56,\n  StandingAgreement = 57,\n  SEPACreditTransfer = 58,\n  SEPADirectDebit = 59,\n  PromissoryNote = 60,\n  PromissoryNoteSignedByTheDebtor = 61,\n  PromissoryNoteSignedByTheDebtorAndEndorsedByABank = 62,\n  PromissoryNoteSignedByTheDebtorAndEndorsedByAThirdParty = 63,\n  PromissoryNoteSignedByABank = 64,\n  PromissoryNoteSignedByABankAndEndorsedByAnotherBank = 65,\n  PromissoryNoteSignedByAThirdParty = 66,\n  PromissoryNoteSignedByAThirdPartyAndEndorsedByABank = 67,\n  OnlinePaymentService = 68,\n  BillDrawnByTheCreditorOnTheDebtor = 70,\n  BillDrawnByTheCreditorOnABank = 74,\n  BillDrawnByTheCreditorEndorsedByAnotherBank = 75,\n  BillDrawnByTheCreditorOnABankAndEndorsedByAThirdParty = 76,\n  BillDrawnByTheCreditorOnAThirdParty = 77,\n  BillDrawnByCreditorOnThirdPartyAcceptedAndEndorsedByBank = 78,\n  NotTransferableBankerSDraft = 91,\n  NotTransferableLocalCheque = 92,\n  ReferenceGiro = 93,\n  UrgentGiro = 94,\n  FreeFormatGiro = 95,\n  RequestedMethodForPaymentWasNotUsed = 96,\n  ClearingBetweenPartners = 97,\n  JPElectronicallyRecordedMonetaryClaims = 98\n}\n\n/** Represents a payment means for an invoice */\nexport interface PaymentMeans {\n  /** This is typically the IBAN or account number\nBT-84 in XRechnung. */\n  accountIdentifier?: string | undefined;\n  /** The name for the account, typically the name of the owner for\na bank account.\nBT-85 in XRechnung. */\n  accountName?: string | undefined;\n  /** This can be the BIC\nBT-86 in XRechnung. */\n  serviceProviderIdentifier?: string | undefined;\n  /** If used, this is the mandate id for direct debit under which\nthe direct debit will be performed\nBT-89 in XRechnung. */\n  directDebitMandateId?: string | undefined;\n  /** If used, this is the IBAN for direct debit\nBT-91 in XRechnung. */\n  directDebitIban?: string | undefined;\n  /** The payment id, e.g. a reference number for the payment. In German,\nthis would be called \"Verwendungszweck\".\nBT-83 in XRechnung. */\n  paymentId?: string | undefined;\n}\n\n/** Represents a document / attachment that is included with the invoice */\nexport interface SupportingDocument {\n  /** This is typically an id or a name */\n  documentReference?: string | undefined;\n  /** A description of the document */\n  description?: string | undefined;\n  /** A link to the document in case this is an external reference */\n  externalDocumentUrl?: string | undefined;\n  /** The document in base64 encoded form as binary data. This is ignored if you set PlaceholderId. */\n  documentBase64?: string | undefined;\n  /** This should be present if DocumentBase64 is set. */\n  fileName?: string | undefined;\n  /** The type of the document */\n  documentMimeType?: AttachmentMimeType | undefined;\n  /** This is placeholder id to use instead of DocumentBase64 property for lazy-loading of documents. The use case of this is to avoid having the documents be processed in memory when they might be handled\nby the calling code. For example, in the AVACloud webservice, this placeholder can be used to avoid having to send the Base64 encoded document to the server and then downloading it again in the result. If this\nis given, the generated XML file will not be valid, since it will include the literal Guid value as a placeholder. You can use the 'xmlExportCallback' parameter in the XRechnungWriter to replace\nthe placeholder with the actual Base64 contents of the file in this library, or just use a string replace method if you're working with the XML in a different context. */\n  placeholderId?: string | undefined;\n}\n\n/** Describes a mime type of a document */\nexport enum AttachmentMimeType {\n  Unknown = 0,\n  Pdf = 1,\n  Png = 2,\n  Jpeg = 3,\n  Csv = 4,\n  Excel = 5,\n  OpenOfficeSpreadsheet = 6\n}\n\n/** Describes the VAT breakdown for an invoice in a single VAT category */\nexport interface VatBreakdown {\n  /** The total net amount of this VAT category */\n  netTaxableAmount?: number | undefined;\n  /** The total VAT */\n  vatAmount?: number | undefined;\n  /** The category of the VAT */\n  vatCategory?: VatCategory | undefined;\n  /** The actual tax rate as a decimal value,\ne.g. 19% would be 0.19 */\n  taxRate?: number | undefined;\n  /** If the VAT is exempt, there should be a description here.\nFor example, in reverse charge scenarios, this text\nshould contain a reference to \"Reverse charge according to ...\". */\n  vatExemptionReasonText?: string | undefined;\n  /** A code from the VAT exemption reason code list(VATEX)“ */\n  vatExemptionReasonCode?: string | undefined;\n}\n\n/** The category used in a VatBreakdown\"/> */\nexport enum VatCategory {\n  Unknown = 0,\n  StandardRate = 1,\n  ZeroRatedGoods = 2,\n  ExemptFromTax = 3,\n  VatReverseCharge = 4,\n  VatExemptReverseCharge = 5,\n  FreeExportItem = 6,\n  ServicesOutsideScopeOfTaxation = 7,\n  CanaryIslandsGeneralIndirectTax = 8,\n  TaxInCeutaAndMelilla = 9\n}\n\n/** This describes an allowance in an invoice, which is a deduction from the total amount */\nexport interface InvoiceAllowance {\n  /** The net amount of the allowance */\n  netAmount?: number | undefined;\n  /** If this is a relative / percentage allowance, this should be set\nand give the base amount that is being used for the calculation */\n  relativeAllowanceBaseAmount?: number | undefined;\n  /** If this is a relative / percentage allowance, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n  relativeAllowancePercentage?: number | undefined;\n  /** The VAT category for the allowance */\n  vatCategory?: VatCategory | undefined;\n  /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n  vatRate?: number | undefined;\n  /** A description of the allowance. This should not be set it ReasonCode\nis provided, otherwise this one takes precedence. */\n  reason?: string | undefined;\n  /** A reason code for the allowance according to UNTDID 5189.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\n  reasonCode?: string | undefined;\n  /** A reason type for the allowance according to UNTDID 5189. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n  reasonType?: AllowanceReasonType | undefined;\n}\n\n/** Type specifying the identification of an allowance from UNTDID 5189. See this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\nexport enum AllowanceReasonType {\n  HandlingCommission = 1,\n  AmendmentCommission = 2,\n  AcceptanceCommission = 3,\n  CommissionForObtainingAcceptance = 4,\n  CommissionOnDelivery = 5,\n  AdvisingCommission = 6,\n  ConfirmationCommission = 7,\n  DeferredPaymentCommission = 8,\n  CommissionForTakingUpDocuments = 9,\n  OpeningCommission = 10,\n  FeeForPaymentUnderReserve = 11,\n  DiscrepancyFee = 12,\n  DomicilationCommission = 13,\n  CommissionForReleaseOfGoods = 14,\n  CollectionCommission = 15,\n  NegotiationCommission = 16,\n  ReturnCommission = 17,\n  BLSplittingCharges = 18,\n  TrustCommission = 19,\n  TransferCommission = 20,\n  CommissionForOpeningIrrevocableDocumentaryCredits = 21,\n  PreAdviceCommission = 22,\n  SupervisoryCommission = 23,\n  ModelCharges = 24,\n  RiskCommission = 25,\n  GuaranteeCommission = 26,\n  ReimbursementCommission = 27,\n  StampDuty = 28,\n  Brokerage = 29,\n  BankCharges = 30,\n  BankChargesInformation = 31,\n  CourierFee = 32,\n  PhoneFee = 33,\n  PostageFee = 34,\n  SWIFTFee = 35,\n  TelexFee = 36,\n  PenaltyForLateDeliveryOfDocuments = 37,\n  PenaltyForLateDeliveryOfValuationOfWorks = 38,\n  PenaltyForExecutionOfWorksBehindSchedule = 39,\n  OtherPenalties = 40,\n  BonusForWorksAheadOfSchedule = 41,\n  OtherBonus = 42,\n  ProjectManagementCost = 44,\n  ProRataRetention = 45,\n  ContractualRetention = 46,\n  OtherRetentions = 47,\n  InterestOnArrears = 48,\n  Interest = 49,\n  ChargePerCreditCover = 50,\n  ChargePerUnusedCreditCover = 51,\n  MinimumCommission = 52,\n  FactoringCommission = 53,\n  ChamberOfCommerceCharge = 54,\n  TransferCharges = 55,\n  RepatriationCharges = 56,\n  MiscellaneousCharges = 57,\n  ForeignExchangeCharges = 58,\n  AgreedDebitInterestCharge = 59,\n  ManufacturersConsumerDiscount = 60,\n  FaxAdviceCharge = 61,\n  DueToMilitaryStatus = 62,\n  DueToWorkAccident = 63,\n  SpecialAgreement = 64,\n  ProductionErrorDiscount = 65,\n  NewOutletDiscount = 66,\n  SampleDiscount = 67,\n  EndOfRangeDiscount = 68,\n  ChargeForACustomerSpecificFinish = 69,\n  IncotermDiscount = 70,\n  PointOfSalesThresholdAllowance = 71,\n  TechnicalModificationCosts = 72,\n  JobOrderProductionCosts = 73,\n  OffPremisesCosts = 74,\n  AdditionalProcessingCosts = 75,\n  AttestingCharge = 76,\n  RushDeliverySurcharge = 77,\n  SpecialConstructionCosts = 78,\n  FreightCharges = 79,\n  PackingCharge = 80,\n  RepairCharge = 81,\n  LoadingCharge = 82,\n  SetupCharge = 83,\n  TestingCharge = 84,\n  WarehousingCharge = 85,\n  GoldSurcharge = 86,\n  CopperSurcharge = 87,\n  MaterialSurchargeDeduction = 88,\n  LeadSurcharge = 89,\n  PriceIndexSurcharge = 90,\n  PlatinumSurcharge = 91,\n  SilverSurcharge = 92,\n  WolframSurcharge = 93,\n  AluminumSurcharge = 94,\n  Discount = 95,\n  Insurance = 96,\n  MinimumOrderMinimumBillingCharge = 97,\n  MaterialSurchargeSpecialMaterials = 98,\n  Surcharge = 99,\n  SpecialRebate = 100,\n  CarbonFootprintCharge = 101,\n  FixedLongTerm = 102,\n  Temporary = 103,\n  Standard = 104,\n  YearlyTurnover = 105\n}\n\n/** This describes an charge in an invoice, which is a surcharge to the total amount */\nexport interface InvoiceCharge {\n  /** The net amount of the charge */\n  netAmount?: number | undefined;\n  /** If this is a relative / percentage charge, this should be set\nand give the base amount that is being used for the calculation */\n  relativeChargeBaseAmount?: number | undefined;\n  /** If this is a relative / percentage charge, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n  relativeChargePercentage?: number | undefined;\n  /** The VAT category for the charge */\n  vatCategory?: VatCategory | undefined;\n  /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n  vatRate?: number | undefined;\n  /** A description of the charge. This should not be set it ReasonCode\nis provided, otherwise this one takes precedence. */\n  reason?: string | undefined;\n  /** A reason code for the charge according to UNTDID 7161.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\n  reasonCode?: string | undefined;\n  /** A reason type for the charge according to UNTDID 7161. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n  reasonType?: ChargeReasonType | undefined;\n}\n\n/** Type specifying a special service from UNTDID 7161. See this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\nexport enum ChargeReasonType {\n  Advertising = 0,\n  Telecommunication = 1,\n  TechnicalModification = 2,\n  JobOrderProduction = 3,\n  Outlays = 4,\n  OffPremises = 5,\n  AdditionalProcessing = 6,\n  Attesting = 7,\n  Acceptance = 8,\n  RushDelivery = 9,\n  SpecialConstruction = 10,\n  AirportFacilities = 11,\n  Concession = 12,\n  CompulsoryStorage = 13,\n  FuelRemoval = 14,\n  IntoPlane = 15,\n  Overtime = 16,\n  Tooling = 17,\n  Miscellaneous = 18,\n  AdditionalPackaging = 19,\n  Dunnage = 20,\n  Containerisation = 21,\n  CartonPacking = 22,\n  HessianWrapped = 23,\n  PolyethyleneWrapPacking = 24,\n  MiscellaneousTreatment = 25,\n  EnamellingTreatment = 26,\n  HeatTreatment = 27,\n  PlatingTreatment = 28,\n  Painting = 29,\n  Polishing = 30,\n  Priming = 31,\n  PreservationTreatment = 32,\n  Fitting = 33,\n  Consolidation = 34,\n  BillOfLading = 35,\n  Airbag = 36,\n  Transfer = 37,\n  Slipsheet = 38,\n  Binding = 39,\n  RepairOrReplacementOfBrokenReturnablePackage = 40,\n  EfficientLogistics = 41,\n  Merchandising = 42,\n  ProductMix = 43,\n  OtherServices = 44,\n  PickUp = 45,\n  ChronicIllness = 46,\n  NewProductIntroduction = 47,\n  DirectDelivery = 48,\n  Diversion = 49,\n  Disconnect = 50,\n  Distribution = 51,\n  HandlingOfHazardousCargo = 52,\n  RentsAndLeases = 53,\n  LocationDifferential = 54,\n  AircraftRefueling = 55,\n  FuelShippedIntoStorage = 56,\n  CashOnDelivery = 57,\n  SmallOrderProcessingService = 58,\n  ClericalOrAdministrativeServices = 59,\n  Guarantee = 60,\n  CollectionAndRecycling = 61,\n  CopyrightFeeCollection = 62,\n  VeterinaryInspectionService = 63,\n  PensionerService = 64,\n  MedicineFreePassHolder = 65,\n  EnvironmentalProtectionService = 66,\n  EnvironmentalCleanUpService = 67,\n  NationalChequeProcessingServiceOutsideAccountArea = 68,\n  NationalPaymentServiceOutsideAccountArea = 69,\n  NationalPaymentServiceWithinAccountArea = 70,\n  Adjustments = 71,\n  Authentication = 72,\n  Cataloguing = 73,\n  Cartage = 74,\n  Certification = 75,\n  CertificateOfConformance = 76,\n  CertificateOfOrigin = 77,\n  Cutting = 78,\n  ConsularService = 79,\n  CustomerCollection = 80,\n  PayrollPaymentService = 81,\n  CashTransportation = 82,\n  HomeBankingService = 83,\n  BilateralAgreementService = 84,\n  InsuranceBrokerageService = 85,\n  ChequeGeneration = 86,\n  PreferentialMerchandisingLocation = 87,\n  Crane = 88,\n  SpecialColourService = 89,\n  Sorting = 90,\n  BatteryCollectionAndRecycling = 91,\n  ProductTakeBackFee = 92,\n  CarLoading = 93,\n  Cleaning = 94,\n  CigaretteStamping = 95,\n  CountAndRecount = 96,\n  LayoutDesign = 97,\n  DriverAssignedUnloading = 98,\n  Delivery = 99,\n  Engraving = 100,\n  Expediting = 101,\n  ExchangeRateGuarantee = 102,\n  Fabrication = 103,\n  FreightEqualization = 104,\n  FreightExtraordinaryHandling = 105,\n  FreightService = 106,\n  FillingHandling = 107,\n  Financing = 108,\n  Grinding = 109,\n  Hose = 110,\n  Handling = 111,\n  HoistingAndHauling = 112,\n  Installation = 113,\n  InstallationAndWarranty = 114,\n  InsideDelivery = 115,\n  Inspection = 116,\n  InstallationAndTraining = 117,\n  Invoicing = 118,\n  Koshering = 119,\n  CarrierCount = 120,\n  Labelling = 121,\n  Labour = 122,\n  RepairAndReturn = 123,\n  Legalisation = 124,\n  Mounting = 125,\n  MailInvoice = 126,\n  MailInvoiceToEachLocation = 127,\n  NonReturnableContainers = 128,\n  OutsideCableConnectors = 129,\n  InvoiceWithShipment = 130,\n  PhosphatizingSteelTreatment = 131,\n  Packing = 132,\n  Palletizing = 133,\n  Repacking = 134,\n  Repair = 135,\n  ReturnableContainer = 136,\n  Restocking = 137,\n  ReDelivery = 138,\n  Refurbishing = 139,\n  RailWagonHire = 140,\n  Loading = 141,\n  Salvaging = 142,\n  ShippingAndHandling = 143,\n  SpecialPackaging = 144,\n  Stamping = 145,\n  ConsigneeUnload = 146,\n  ShrinkWrap = 147,\n  SpecialHandling = 148,\n  SpecialFinish = 149,\n  SetUp = 150,\n  TankRenting = 151,\n  Testing = 152,\n  TransportationThirdPartyBilling = 153,\n  TransportationByVendor = 154,\n  DropYard = 155,\n  DropDock = 156,\n  Warehousing = 157,\n  CombineAllSameDayShipment = 158,\n  SplitPickUp = 159,\n  MutuallyDefined = 160\n}\n\n/** Represents a single invoice line item */\nexport interface InvoiceLineItem {\n  /** An unique identifier for the line item */\n  identifier?: string | undefined;\n  /** An unstructured note to classify line items */\n  note?: string | undefined;\n  /** A seller-defined object identifier for this line item,\nmeaning an identifier for the actual line. This could be\na numbering sequence or a reference to a product. */\n  objectIdentifier?: string | undefined;\n  /** The actual invoiced quantity of the line item */\n  quantity?: number | undefined;\n  /** A code for the unit of the quantity. This should be a code as defined\nin UN/ECE Recommendation No. 20 „Codes for Units of Measure Used in \nInternational Trade“ und UN/ECE Recommendation No 21 „Codes for Passengers,\nTypes of Cargo, Packages and Packaging Materials(with Complementary Codes for Package Names).\nSee here: https://ec.europa.eu/digital-building-blocks/sites/display/DIGITAL/Registry+of+supporting+artefacts+to+implement+EN16931 */\n  unitCode?: string | undefined;\n  /** The net amount for this line item. This is the total price for positions */\n  netAmount?: number | undefined;\n  /** A reference to an item in the buyers purachase order */\n  purchaseOrderReference?: string | undefined;\n  /** Information about the invoice period for this line item. */\n  lineItemPeriod?: InvoicePeriod | undefined;\n  /** Allowances specific to this line item */\n  allowances?: LineItemAllowance[] | undefined;\n  /** charges specific to this line item */\n  charges?: LineItemCharge[] | undefined;\n  /** Price details for this line item. */\n  priceDetails?: LineItemPriceDetail | undefined;\n  /** VAT information for this line item */\n  vatInformation?: LineItemVatInformation[] | undefined;\n  /** Information about this line item */\n  itemInformation?: LineItemInformation | undefined;\n  /** Line items can be nested, in which case this property holds the sub items */\n  subItems?: InvoiceLineItem[] | undefined;\n}\n\n/** Allowance for a single line item */\nexport interface LineItemAllowance {\n  /** The net amount of the allowance */\n  netAmount?: number | undefined;\n  /** If this is a relative / percentage allowance, this should be set\nand give the base amount that is being used for the calculation */\n  relativeAllowanceBaseAmount?: number | undefined;\n  /** If this is a relative / percentage allowance, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n  relativeAllowancePercentage?: number | undefined;\n  /** A description of the allowance. */\n  reason?: string | undefined;\n  /** A reason code for the allowance according to UNTDID 5189. Should be a code\nfrom this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred5189.htm */\n  reasonCode?: string | undefined;\n  /** A reason type for the allowance according to UNTDID 5189. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n  reasonType?: AllowanceReasonType | undefined;\n}\n\n/** Charge for a single line item */\nexport interface LineItemCharge {\n  /** The net amount of the charge */\n  netAmount?: number | undefined;\n  /** If this is a relative / percentage charge, this should be set\nand give the base amount that is being used for the calculation */\n  relativeChargeBaseAmount?: number | undefined;\n  /** If this is a relative / percentage charge, this should be set\nand be given in decimal representation, meaning 19% would be 0.19 */\n  relativeChargePercentage?: number | undefined;\n  /** A description of the charge. */\n  reason?: string | undefined;\n  /** A reason code for the charge according to UNTDID 7161.\nSee this list: https://unece.org/fileadmin/DAM/trade/untdid/d16b/tred/tred7161.htm */\n  reasonCode?: string | undefined;\n  /** A reason type for the charge according to UNTDID 7161. This will be automatically parsed from ReasonCode\nand is a read-only property. */\n  reasonType?: ChargeReasonType | undefined;\n}\n\n/** Price details about a line item */\nexport interface LineItemPriceDetail {\n  /** The net price of this line item. This is the unit price */\n  netPrice?: number | undefined;\n  /** A discount for this line item, given as an absolute value. It is essentially the difference between NetPrice (or the list price)\nand the actual invoiced price GrossPrice. */\n  absoluteDiscountPerItem?: number | undefined;\n  /** The gross price of this line item, meaning the price without taxes\nthat will be invoiced */\n  grossPrice?: number | undefined;\n  /** The quantity for which this price is valid. In combination with the NetPrice,\nyou basically specify the denominator of the unit price for a line item. */\n  baseQuantity?: number | undefined;\n  /** A code representing the unit for the base quantity */\n  baseQuantityUnitCode?: string | undefined;\n}\n\n/** VAT information for a single line item */\nexport interface LineItemVatInformation {\n  /** The VAT category for the charge */\n  vatCategory?: VatCategory | undefined;\n  /** The actual tax rate as a decimal value,\nmeaning 19% would be 0.19 */\n  vatRate?: number | undefined;\n}\n\n/** Information about a single line item */\nexport interface LineItemInformation {\n  /** A name for the line item */\n  name?: string | undefined;\n  /** A description for the line item */\n  description?: string | undefined;\n  /** An identifier assigned by the seller, e.g. an internal article number */\n  sellerIdentifier?: string | undefined;\n  /** An identifier assigned by the buyer, e.g. an internal article number */\n  buyerIdentifier?: string | undefined;\n  /** A standard identifier for the line item, e.g. an EAN or a GTIN */\n  standardIdentifier?: string | undefined;\n  /** If used together with StandardIdentifier, this is the scheme identifier\nfor which standard is used. */\n  standardSchemeId?: string | undefined;\n  /** A list of classification identifiers for the line item. You can further use ClassificationTypes to specify the scheme identifier for each classification identifier. */\n  classificationIdentifiers?: string[] | undefined;\n  /** This is used in connection with ClassificationIdentifiers. It is the scheme identifier\nfor each identifier. If this list is used, it should have the same length as ClassificationIdentifiers, with null or empty values used\nfor non-existing scheme identifiers. */\n  classificationTypes?: string[] | undefined;\n  /** The origin country code according to ISO 3166-1 in 2 letter format */\n  countryOfOrigin?: string | undefined;\n  /** Optional additional attributes for this line item */\n  attributes?: LineItemAttribute[] | undefined;\n}\n\n/** A key-value pair for additional information */\nexport interface LineItemAttribute {\n  /** The key / name of the attribute */\n  name?: string | undefined;\n  /** The value of the attribute */\n  value?: string | undefined;\n}\n\n/** This enum represents the source of an invoice, e.g. from which format it was imported */\nexport enum SourceType {\n  Self = 0,\n  Ubl = 1,\n  Cii = 2,\n  FacturX = 3\n}\n\n/** This is a wrapper class that maps Dangl.AVA projects along with additional required information to create invoices */\nexport interface AvaProjectWrapper {\n  /** The Dangl.AVA.Project from which to convert */\n  project?: ProjectDto | undefined;\n  /** The number of the invoice */\n  invoiceNumber?: string | undefined;\n  /** Attached documents to the invoice */\n  documents?: SupportingDocument[] | undefined;\n  /** The period during which the services or goods were delivered */\n  invoicePeriod?: InvoicePeriod | undefined;\n  /** Instructions how to perform the payment */\n  paymentInstructions?: PaymentInstructions | undefined;\n  /** The type of the invoice */\n  invoiceType?: InvoiceType | undefined;\n  /** If this is set to true, the invoice will be marked as a reverse charge invoice\nin all VAT rates. You still need to ensure that the actual tax rates are set\nto zero in all elements */\n  isEuReverseChargeInvoice?: boolean | undefined;\n  /** Until when the payment is due */\n  paymentDueDate?: Date | undefined;\n  /** A text description of payment terms, e.g. cash discounts or payment conditions */\n  paymentTerms?: string | undefined;\n  /** In case of partial of final invoices, it's possible to reference the previous invoice numbers */\n  previousInvoices?: PreviousInvoice[] | undefined;\n  /** If parts of this invoice (or of previous invoices) have already been paid,\nthen this property can be used to specify that some parts of the invoice\nare already paid and this will be deducted from the to be paid amount. */\n  alreadyPaidTotalGross?: number | undefined;\n  /** An object holding reference used in this invoice */\n  references?: References | undefined;\n  /** Optional document level allowances. For example, those can be used to supply\nglobal discounts e.g. for security deposits. When using this property, please\npay attention that a deduction factor on the exported ServiceSpecification\nwill also be exported as an allowance, in this case the total price of the\ninvoice might be different from the total price of the ServiceSpecification. */\n  allowances?: InvoiceAllowance[] | undefined;\n  /** Optional document level charges, e.g. for shipping or handling. When using this property,\nplease pay attention that the charges given here will be applied to the already calculated\ntotal price of the ServiceSpecification, in this case the total price of the invoice\nmight be different from the total price of the ServiceSpecification. */\n  charges?: InvoiceCharge[] | undefined;\n  /** Information about the delivery\nBG-13 in XRechnung */\n  deliveryInformation?: DeliveryInformation | undefined;\n  /** Information about the sellers tax representative. BG-11 in XRechnung */\n  sellerTaxRepresentative?: Organization | undefined;\n}\n","import { ITextWordInvoice, InvoiceType } from '../model';\n\nexport const DEFAULT_TEXT_WORD_INVOICE: ITextWordInvoice = {\n  invoiceTitle: {\n    [InvoiceType.PartialInvoice]: 'Invoice',\n    [InvoiceType.CommercialInvoice]: 'Invoice',\n    [InvoiceType.CreditNote]: 'Credit Note',\n    [InvoiceType.CorrectedInvoice]: 'Corrected Invoice',\n    [InvoiceType.SelfBilledInvoice]: 'Invoice',\n    [InvoiceType.PartialConstructionInvoice]: 'Invoice',\n    [InvoiceType.PartialFinalConstructionInvoice]: 'Invoice',\n    [InvoiceType.FinalConstructionInvoice]: 'Invoice'\n  },\n  invoiceBuyerTitle: 'Receiver',\n  invoiceSellerTitle: 'Sender',\n  vatId: 'VAT ID',\n  detailsInvoiceNumber: 'Invoice Number',\n  detailsInvoiceDate: 'Invoice Date',\n  detailsPaymentDueDate: 'Due Date',\n  detailsInvoicePeriod: 'Service Period',\n  detailsInvoicePeriodSingle: 'Service Date',\n  detailsCurrencyCode: 'Currency',\n  detailsPaymentTerms: 'Payment Terms',\n  referencesTopic: 'References',\n  referencesBuyerReference: 'Buyer Reference',\n  referencesProjectReference: 'Project Reference',\n  referencesContractReference: 'Contract Reference',\n  referencesPurchaseOrderReference: 'Purchase Order Reference',\n  referencesSalesOrderReference: 'Sales Order Reference',\n  referencesReceivingAdviceReference: 'Receiving Advice Reference',\n  referencesDispatchAdviceReference: 'Dispatch Advice Reference',\n  referencesTenderOrLotReference: 'Tender or Lot Reference',\n  referencesInvoicedObjectIdentifier: 'Invoiced Object Identifier',\n  tableHeadDescription: 'Description',\n  tableHeadQuantity: 'Quantity',\n  tableHeadUnit: 'Unit',\n  tableHeadNetPrice: 'Net Price',\n  tableHeadNetAmount: 'Net Amount',\n  totalsTopic: 'Totals',\n  totalsTotalNet: 'Total Net',\n  totalsTotalAllowances: 'Total Allowances',\n  totalsTotalCharges: 'Total Charges',\n  totalsTotalAfterDeductions: 'Total After Deductions',\n  totalsTotalVatAmount: 'Total VAT Amount',\n  totalsTotalGross: 'Total Gross',\n  totalsAlreadyPaidTotal: 'Already Paid Total',\n  totalsTotalToBePaidMap: {\n    [InvoiceType.PartialInvoice]: 'Total to be Paid',\n    [InvoiceType.CommercialInvoice]: 'Total to be Paid',\n    [InvoiceType.CreditNote]: 'Total',\n    [InvoiceType.CorrectedInvoice]: 'Total',\n    [InvoiceType.SelfBilledInvoice]: 'Total to be Paid',\n    [InvoiceType.PartialConstructionInvoice]: 'Total to be Paid',\n    [InvoiceType.PartialFinalConstructionInvoice]: 'Total to be Paid',\n    [InvoiceType.FinalConstructionInvoice]: 'Total to be Paid'\n  },\n  instructionsTopic: 'Payment Instructions',\n  instructionsAccountIdentifier: 'Account Identifier',\n  instructionsAccountName: 'Account Name',\n  instructionsServiceProviderIdentifier: 'Service Provider Identifier',\n  notesTopic: 'Notes',\n  attachmentsHeading: 'Attachments',\n  attachmentsName: 'Name',\n  attachmentsDescription: 'Description',\n  attachmentsUrl: 'Url',\n  attachmentsDataSize: 'Size',\n  attachmentsMimeType: 'Mime Type',\n  attachmentsFileName: 'File Name',\n  attachmentsDownloadButton: 'Download',\n  contactPersonName: 'Contact Person Name',\n  contactPersonEmail: 'Contact Person Email',\n  contactPersonPhone: 'Contact Person Phone',\n  vat: 'VAT',\n  taxRate: 'Tax Rate',\n  deliveryInformationTitle: 'Delivery Information',\n  deliverToName: 'Name',\n  deliverToLocationIdentifier: 'Location Identifier',\n  deliveryDate: 'Date',\n  deliveryAddress: 'Address',\n  taxesHeading: 'Taxes',\n  invoiceAllowancesHeader: 'Allowances',\n  invoiceAllowancesTableHeaderSum: 'Sum',\n  invoiceAllowancesTableHeaderVatRate: 'VAT',\n  invoiceAllowancesTableHeaderAllowance: 'Allowance',\n  invoiceAllowancesTableHeaderBase: 'Base',\n  invoiceChargesHeader: 'Charges',\n  invoiceChargesTableHeaderSum: 'Sum',\n  invoiceChargesTableHeaderVatRate: 'VAT',\n  invoiceChargesTableHeaderCharge: 'Charge',\n  invoiceChargesTableHeaderBase: 'Base',\n  lineItemDiscount: 'Discount',\n  lineItemCharges: 'Charges',\n  lineItemAllowances: 'Allowances',\n  lineItemReason: 'Reason',\n  invoiceSellerTaxRepresentativeTitle: 'Tax Representative',\n  previousInvoicesTopic: 'Previous Invoices',\n  previousInvoiceNumber: 'Previous Invoice Number',\n  previousInvoiceDate: 'Previous Invoice Date'\n};\n\nexport const germanTextsInvoice: ITextWordInvoice = {\n  invoiceTitle: {\n    [InvoiceType.PartialInvoice]: 'Rechnung',\n    [InvoiceType.CommercialInvoice]: 'Rechnung',\n    [InvoiceType.CreditNote]: 'Gutschrift',\n    [InvoiceType.CorrectedInvoice]: 'Rechnungskorrektur',\n    [InvoiceType.SelfBilledInvoice]: 'Rechnung',\n    [InvoiceType.PartialConstructionInvoice]: 'Rechnung',\n    [InvoiceType.PartialFinalConstructionInvoice]: 'Rechnung',\n    [InvoiceType.FinalConstructionInvoice]: 'Rechnung'\n  },\n  invoiceBuyerTitle: 'Empfänger',\n  invoiceSellerTitle: 'Rechnungssteller',\n  vatId: 'USt.-ID',\n  detailsInvoiceNumber: 'Rechnungsnummer',\n  detailsInvoiceDate: 'Rechnungsdatum',\n  detailsPaymentDueDate: 'Fälligkeitsdatum',\n  detailsInvoicePeriod: 'Leistungszeitraum',\n  detailsInvoicePeriodSingle: 'Leistungsdatum',\n  detailsCurrencyCode: 'Währung',\n  detailsPaymentTerms: 'Zahlungsbedingungen',\n  referencesTopic: 'Referenzen',\n  referencesBuyerReference: 'Käuferreferenz',\n  referencesProjectReference: 'Projektreferenz',\n  referencesContractReference: 'Vertragsreferenz',\n  referencesPurchaseOrderReference: 'Bestellreferenz',\n  referencesSalesOrderReference: 'Auftragsreferenz',\n  referencesReceivingAdviceReference: 'Empfangsbestätigungsreferenz',\n  referencesDispatchAdviceReference: 'Lieferreferenz',\n  referencesTenderOrLotReference: 'Ausschreibungs- oder Losreferenz',\n  referencesInvoicedObjectIdentifier: 'Objektreferenz',\n  tableHeadDescription: 'Beschreibung',\n  tableHeadQuantity: 'Menge',\n  tableHeadUnit: 'Einheit',\n  tableHeadNetPrice: 'Einzelpreis',\n  tableHeadNetAmount: 'Positionspreis',\n  totalsTopic: 'Gesamt',\n  totalsTotalNet: 'Gesamt Netto',\n  totalsTotalAllowances: 'Gesamt Rabatt',\n  totalsTotalCharges: 'Gesamt Zuschlag',\n  totalsTotalAfterDeductions: 'Summe nach Rabatten',\n  totalsTotalVatAmount: 'Summe Umsatzsteuer',\n  totalsTotalGross: 'Gesamt Brutto',\n  totalsAlreadyPaidTotal: 'Bereits bezahlt',\n  totalsTotalToBePaidMap: {\n    [InvoiceType.PartialInvoice]: 'Gesamt zu zahlen',\n    [InvoiceType.CommercialInvoice]: 'Gesamt zu zahlen',\n    [InvoiceType.CreditNote]: 'Gesamt',\n    [InvoiceType.CorrectedInvoice]: 'Gesamt',\n    [InvoiceType.SelfBilledInvoice]: 'Gesamt zu zahlen',\n    [InvoiceType.PartialConstructionInvoice]: 'Gesamt zu zahlen',\n    [InvoiceType.PartialFinalConstructionInvoice]: 'Gesamt zu zahlen',\n    [InvoiceType.FinalConstructionInvoice]: 'Gesamt zu zahlen'\n  },\n  instructionsTopic: 'Zahlungsanweisungen',\n  instructionsAccountIdentifier: 'Kontonummer',\n  instructionsAccountName: 'Kontoname',\n  instructionsServiceProviderIdentifier: 'Bank',\n  notesTopic: 'Hinweise',\n  attachmentsHeading: 'Anhänge',\n  attachmentsName: 'Name',\n  attachmentsDescription: 'Beschreibung',\n  attachmentsUrl: 'Url',\n  attachmentsDataSize: 'Größe',\n  attachmentsMimeType: 'Typ',\n  attachmentsFileName: 'Dateiname',\n  attachmentsDownloadButton: 'Download',\n  contactPersonName: 'Name der Kontaktperson',\n  contactPersonEmail: 'E-Mail der Kontaktperson',\n  contactPersonPhone: 'Kontaktperson Telefon',\n  vat: 'MwSt.',\n  taxRate: 'Steuersatz',\n  deliveryInformationTitle: 'Lieferinformationen',\n  deliverToName: 'Liefername',\n  deliverToLocationIdentifier: 'Lieferort',\n  deliveryDate: 'Lieferdatum',\n  deliveryAddress: 'Lieferadresse',\n  taxesHeading: 'Steuer',\n  invoiceAllowancesHeader: 'Nachlässe',\n  invoiceAllowancesTableHeaderSum: 'Summe',\n  invoiceAllowancesTableHeaderVatRate: 'Steuersatz',\n  invoiceAllowancesTableHeaderAllowance: 'Nachlass',\n  invoiceAllowancesTableHeaderBase: 'Basis',\n  invoiceChargesHeader: 'Zuschläge',\n  invoiceChargesTableHeaderSum: 'Summe',\n  invoiceChargesTableHeaderVatRate: 'Steuersatz',\n  invoiceChargesTableHeaderCharge: 'Zuschlag',\n  invoiceChargesTableHeaderBase: 'Basis',\n  lineItemDiscount: 'Rabatt',\n  lineItemCharges: 'Zuschlag',\n  lineItemAllowances: 'Nachlass',\n  lineItemReason: 'Grund',\n  invoiceSellerTaxRepresentativeTitle: 'Steuervertreter',\n  previousInvoicesTopic: 'Vorherige Rechnungen',\n  previousInvoiceNumber: 'Vorherige Rechnungsnummer',\n  previousInvoiceDate: 'Vorheriges Rechnungsdatum'\n};\n","import { LanguageType } from '../model';\n\nexport const DEFAULT_DIGITS_INFO: string = '1.3-3';\nexport const DEFAULT_CURRENCY_CODE: string = 'USD';\nexport const DEFAULT_LANGUAGE: LanguageType = 'en';\nexport const localeTypes = {\n  en: 'en-US',\n  de: 'de-DE'\n};\n","import { ExecutionDescriptionDto, IElementDto, NoteTextDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\nimport { FilterFunction } from '../model/config-tree.model';\n\nexport const DEFAULT_FILTERS: FilterFunction[] = [\n  (element: IElementDto, filter: string) => {\n    if (\n      element.elementType === 'PositionDto' ||\n      element.elementType === 'ServiceSpecificationGroupDto' ||\n      element.elementType === 'NoteTextDto'\n    ) {\n      return (element as PositionDto | ServiceSpecificationGroupDto | NoteTextDto).shortText?.trim().toLocaleLowerCase().includes(filter);\n    }\n\n    return false;\n  },\n  (element: IElementDto, filter: string) => {\n    if (element.elementType === 'ExecutionDescriptionDto') {\n      return (element as ExecutionDescriptionDto).label?.trim().toLocaleLowerCase().includes(filter);\n    }\n\n    return false;\n  },\n  (element: IElementDto, filter: string) => {\n    if (element.elementType === 'PositionDto' || element.elementType === 'ServiceSpecificationGroupDto') {\n      return (element as PositionDto | ServiceSpecificationGroupDto).itemNumber?.stringRepresentation?.includes(filter);\n    }\n\n    return false;\n  }\n];\n","import { LanguageType } from '../../invoice/model';\n\nexport interface ITextWords {\n  language: LanguageType;\n  textSearch: string;\n  textNothing: string;\n  textNothingFiltered: string;\n  textAll: string;\n  tooltipAllOpen: string;\n  tooltipAllClose: string;\n  tooltipAllAdd: string;\n  tooltipAllRemove: string;\n  defaultNameNoteText: string;\n  defaultNameDescription: string;\n  defaultNameGroup: string;\n  defaultNamePosition: string;\n}\n\nexport const DEFAULT_TEXT_WORDS: ITextWords = {\n  language: 'en',\n  textSearch: 'Search',\n  textNothing: 'Nothing',\n  textNothingFiltered: 'No Filter',\n  textAll: 'All',\n  tooltipAllOpen: 'Expand all',\n  tooltipAllClose: 'Collapse all',\n  tooltipAllAdd: 'Add all',\n  tooltipAllRemove: 'Remove all',\n  defaultNameNoteText: 'Note Text',\n  defaultNameDescription: 'Description',\n  defaultNameGroup: 'Group',\n  defaultNamePosition: 'Position'\n};\n\nexport const germanTextsAva: ITextWords = {\n  language: 'de',\n  textSearch: 'Suche',\n  textNothing: 'Nichts',\n  textNothingFiltered: 'Kein Filter',\n  textAll: 'Alle',\n  tooltipAllOpen: 'Alle aufklappen',\n  tooltipAllClose: 'Alle zuklappen',\n  tooltipAllAdd: 'Alle hinzufügen',\n  tooltipAllRemove: 'Alle entfernen',\n  defaultNameNoteText: 'Hinweis',\n  defaultNameDescription: 'Beschreibung',\n  defaultNameGroup: 'Gruppe',\n  defaultNamePosition: 'Position'\n};\n","export const defaults = {\n  doubleClickTimeoutInMilliseconds: 300\n};\n","import { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs';\n\nimport { DEFAULT_LANGUAGE, localeTypes } from '../../invoice/constants';\nimport { LanguageType } from '../../invoice/model';\n\nimport { DEFAULT_FILTERS } from '../constants';\nimport { DEFAULT_TEXT_WORDS, ITextWords, germanTextsAva } from '../constants/defaultTextWords';\nimport { FilterFunction, IConfigurationTree } from '../model/config-tree.model';\nimport { IFunctionViewLine } from '../model/function-view-line.model';\nimport { SelectedElement } from '../model/selecting.model';\nimport { TableColumnType } from '../model/tableColumnType';\nimport { IKeyboardOperationConfig } from '../services/keyboard-operation.service';\n\nexport class ConfigurationTreeService {\n  private _language: LanguageType = DEFAULT_LANGUAGE;\n  private _textWords: ITextWords = this.selectTextWords(this._language);\n  private _indent = '20px';\n  private _functionView: IFunctionViewLine[] = [];\n  private _selectedColor: string = '';\n  private _allowDblClick = true;\n  private _mouseAwareKeyboardControl = true;\n  private _addTableColumns: TableColumnType[] = [];\n  private _isSelectionMode = false;\n  private _initiallySelectedElements: SelectedElement[] = [];\n  private _customKeyboardOperationConfig: IKeyboardOperationConfig | null = null;\n  private _listFilterFunc: FilterFunction[] = DEFAULT_FILTERS;\n\n  private treeConfigSource = new BehaviorSubject<IConfigurationTree>(this.getDefaultConfiguration());\n  public treeConfig$: Observable<IConfigurationTree> = this.treeConfigSource.asObservable();\n  constructor() {}\n\n  public setTreeConfig(value: IConfigurationTree): void {\n    this.treeConfigSource.next(value);\n  }\n\n  public getCurrentTreeConfig(): IConfigurationTree | null {\n    return this.treeConfigSource.getValue();\n  }\n\n  public getTextWordsFromConfig(): Observable<ITextWords | null> {\n    return this.treeConfig$.pipe(\n      map((config) => {\n        let configTextWords: ITextWords;\n        if (typeof config?.textWords === 'string') {\n          configTextWords = this.selectTextWords(config.textWords);\n        } else {\n          configTextWords = config?.textWords ?? this._textWords;\n        }\n        this._language = configTextWords.language;\n        return { ...configTextWords };\n      }),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  private selectTextWords(languageWord: LanguageType): ITextWords {\n    return languageWord === 'de' ? germanTextsAva : DEFAULT_TEXT_WORDS;\n  }\n\n  public getIndentFromConfig(): Observable<string> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.indent ?? this._indent),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getFunctionViewFromConfig(): Observable<IFunctionViewLine[]> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.functionView ?? this._functionView),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getSelectedColorFromConfig(): Observable<string> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.selectedColor ?? this._selectedColor),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getAllowDblClickFromConfig(): Observable<boolean> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.allowDblClick ?? this._allowDblClick),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getAddTableColumnsFromConfig(): Observable<TableColumnType[]> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.addTableColumns ?? this._addTableColumns),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getIsSelectionModeFromConfig(): Observable<boolean> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.isSelectionMode ?? this._isSelectionMode),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getInitiallySelectedElementsViewFromConfig(): Observable<SelectedElement[]> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.initiallySelectedElements ?? this._initiallySelectedElements),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getMouseAwareKeyboardControlFromConfig(): Observable<boolean> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.mouseAwareKeyboardControl ?? this._mouseAwareKeyboardControl),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getCustomKeyboardOperationConfigFromConfig(): Observable<IKeyboardOperationConfig | null> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.customKeyboardOperationConfig ?? this._customKeyboardOperationConfig),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getListFilterFuncFromConfig(): Observable<FilterFunction[]> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.listFilterFunc ?? this._listFilterFunc),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getHideParentItemNumbersFromConfig(): Observable<boolean> {\n    return this.treeConfig$.pipe(\n      map((config) => config?.hideParentItemNumbers ?? false),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  private getDefaultConfiguration(): IConfigurationTree {\n    return {\n      textWords: this._textWords,\n      indent: this._indent,\n      functionView: this._functionView,\n      selectedColor: this._selectedColor,\n      allowDblClick: this._allowDblClick,\n      addTableColumns: this._addTableColumns,\n      isSelectionMode: this._isSelectionMode,\n      initiallySelectedElements: this._initiallySelectedElements,\n      mouseAwareKeyboardControl: this._mouseAwareKeyboardControl,\n      customKeyboardOperationConfig: this._customKeyboardOperationConfig,\n      listFilterFunc: this._listFilterFunc\n    };\n  }\n\n  get locale(): string {\n    return localeTypes[this._language];\n  }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nexport interface IExpansionState {\n  [id: string]: boolean;\n}\nexport class ExpandParentGroupService {\n  private expansionState = signal<IExpansionState>({});\n  constructor() {}\n\n  expandParentGroups(element: IElementDto, flatElements: IElementDto[] | null, expansionState: { [id: string]: boolean }): void {\n    if (!flatElements?.length) {\n      return;\n    }\n\n    const serviceSpecificationGroups = flatElements.filter(\n      (item): item is ServiceSpecificationGroupDto => !!(item as ServiceSpecificationGroupDto).elements?.length\n    );\n\n    if (!serviceSpecificationGroups.length) {\n      return;\n    }\n\n    const findAndExpandParent = (currentElement: IElementDto): ServiceSpecificationGroupDto | null => {\n      for (const servSpec of serviceSpecificationGroups) {\n        if (expansionState[servSpec.id]) {\n          continue;\n        }\n\n        if (servSpec.elements?.find((item) => currentElement.id === item.id)) {\n          expansionState[servSpec.id] = true;\n          return servSpec;\n        }\n      }\n      return null;\n    };\n\n    const expandRecursive = (innerElement: IElementDto): void => {\n      const parentGroup = findAndExpandParent(innerElement);\n      if (parentGroup) {\n        expandRecursive(parentGroup);\n      }\n    };\n\n    expandRecursive(element);\n  }\n\n  setExpansionState(state: IExpansionState): void {\n    this.expansionState.set(state);\n  }\n\n  getExpansionState(): WritableSignal<IExpansionState> {\n    return this.expansionState;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nimport { Observable, ReplaySubject, Subject, of } from 'rxjs';\n\nimport { DEFAULT_FILTERS } from '../constants';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FlatElementsService {\n  private _flatElementsDto: IElementDto[] = [];\n  private flatElementsDtoSource = new ReplaySubject<IElementDto[]>(1);\n  flatElementsDto = this.flatElementsDtoSource.asObservable();\n\n  private objectElementsDto!: { [id: string]: IElementDto };\n\n  listFilterFunc = DEFAULT_FILTERS;\n\n  constructor() {}\n\n  setElementsDto(elementsDto: ServiceSpecificationDto): void {\n    this._flatElementsDto = FlatElementsService.getFlatElements(elementsDto);\n    this.objectElementsDto = FlatElementsService.getObjectElements(this._flatElementsDto);\n    this.flatElementsDtoSource.next(this._flatElementsDto);\n  }\n\n  public static getFlatElements(container: { elements?: IElementDto[] | null }): IElementDto[] {\n    const flatElements: IElementDto[] = [];\n\n    if (container.elements) {\n      container.elements.forEach((e) => {\n        flatElements.push(e);\n        if (e.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n          const group = e as ServiceSpecificationGroupDto;\n          flatElements.push(...this.getFlatElements(group));\n        }\n      });\n    }\n\n    return flatElements;\n  }\n\n  public static getObjectElements(elements: IElementDto[]): { [id: string]: IElementDto } {\n    const objectElements: { [id: string]: IElementDto } = {};\n    if (elements?.length) {\n      elements.forEach((e) => {\n        if (e?.id) {\n          objectElements[e.id] = e;\n        }\n      });\n    }\n    return objectElements;\n  }\n\n  getOneElementById(id: string | null): Observable<IElementDto | null> {\n    return of(id ? this.objectElementsDto?.[id] || null : null);\n  }\n\n  checkFilterValue(element: IElementDto, filterValue: string): boolean {\n    const cleanFilter = filterValue.trim().toLocaleLowerCase();\n    for (const func of this.listFilterFunc) {\n      if (func(element, cleanFilter)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  jumpNextNode(delta: number, currentElement: IElementDto | null, conditionFunc?: (e: IElementDto) => boolean): IElementDto | null {\n    if (!this._flatElementsDto.length || (conditionFunc && !this._flatElementsDto.find((item) => conditionFunc(item)))) {\n      return null;\n    }\n    const startElement = currentElement || this._flatElementsDto[0];\n    let nextIndex = this._flatElementsDto.findIndex((item) => startElement.id === item.id);\n    if (currentElement) {\n      nextIndex = this.getNextIndex(this._flatElementsDto.length, nextIndex, delta);\n    }\n    while (conditionFunc && !conditionFunc(this._flatElementsDto[nextIndex])) {\n      nextIndex = this.getNextIndex(this._flatElementsDto.length, nextIndex, delta);\n    }\n    return this._flatElementsDto[nextIndex];\n  }\n\n  private getNextIndex(length: number, index: number, delta: number): number {\n    let nextIndex = index + delta;\n    nextIndex = nextIndex < 0 ? length - 1 : nextIndex;\n    nextIndex = nextIndex > length - 1 ? 0 : nextIndex;\n    return nextIndex;\n  }\n\n  public getObjectElementsDto(): { [id: string]: IElementDto } {\n    return this.objectElementsDto;\n  }\n}\n","import { ReplaySubject } from 'rxjs';\n\nimport { IElementDto } from '../model';\n\nexport class SelectElementService {\n  private preselectedElementSource = new ReplaySubject<IElementDto | null>(1);\n  private preselectedElementWasNull = false;\n  preselectedElement = this.preselectedElementSource.asObservable();\n\n  private selectClickElementSource = new ReplaySubject<IElementDto | null>(1);\n  selectClickElement = this.selectClickElementSource.asObservable();\n\n  private selectDblClickElementSource = new ReplaySubject<IElementDto>(1);\n  selectDblClickElement = this.selectDblClickElementSource.asObservable();\n\n  private selectContextMenuElementSource = new ReplaySubject<{ position: { x: string; y: string }; node: IElementDto }>(1);\n  selectContextMenuElement = this.selectContextMenuElementSource.asObservable();\n\n  setPreselectedElement(element: IElementDto | null): void {\n    this.preselectedElementSource.next(element);\n    this.preselectedElementWasNull = element == null;\n  }\n\n  setClickElement(element: IElementDto | null): void {\n    this.selectClickElementSource.next(element);\n    if (!this.preselectedElementWasNull) {\n      this.preselectedElementSource.next(null);\n    }\n  }\n\n  setDblClickElement(element: IElementDto): void {\n    this.selectDblClickElementSource.next(element);\n  }\n\n  setContextMenuElement(data: { position: { x: string; y: string }; node: IElementDto }): void {\n    this.selectContextMenuElementSource.next(data);\n  }\n}\n","import { inject } from '@angular/core';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { FlatElementsService } from './flat-elements.service';\nimport { SelectElementService } from './select-element.service';\n\nexport interface IKeyboardOperationConfig {\n  operations: IKeyboardOperations;\n}\n\nexport enum KeyboardOperationType {\n  MoveSelectedPositionUp = 'moveSelectedPositionUp',\n  MoveSelectedPositionDown = 'moveSelectedPositionDown',\n  MoveChosenPositionDown = 'moveChosenPositionDown',\n  MoveChosenPositionUp = 'moveChosenPositionUp',\n  ClearChosenPosition = 'clearChosenPosition',\n  SelectChosenPosition = 'selectChosenPosition'\n}\n\nexport type IKeyboardOperations = {\n  [key in KeyboardOperationType]?: IKeyboardOperation;\n};\n\nexport interface IKeyboardOperation {\n  disabled?: boolean;\n  keyEvent?: string;\n}\n\nexport class KeyboardOperationService {\n  private defaultKeyboardOperationConfig: IKeyboardOperationConfig = {\n    operations: {\n      moveSelectedPositionUp: { disabled: false, keyEvent: 'F11' },\n      moveSelectedPositionDown: { disabled: false, keyEvent: 'F12' },\n      moveChosenPositionDown: { disabled: false, keyEvent: 'ArrowDown' },\n      moveChosenPositionUp: { disabled: false, keyEvent: 'ArrowUp' },\n      clearChosenPosition: { disabled: false, keyEvent: 'Escape' },\n      selectChosenPosition: { disabled: false, keyEvent: 'Enter' }\n    }\n  };\n\n  private flatElementsService = inject(FlatElementsService);\n  private selectElementService = inject(SelectElementService);\n\n  private currentConfig = { ...this.defaultKeyboardOperationConfig };\n\n  constructor() {}\n\n  getConfig() {\n    return this.currentConfig;\n  }\n\n  mergeConfigOperation(config: IKeyboardOperationConfig) {\n    this.currentConfig = this.deepMerge(this.currentConfig, config);\n  }\n\n  private deepMerge<T>(obj1: T, obj2: T): T {\n    const mergedConfig: T = { ...obj1 };\n\n    for (const key in obj2) {\n      if (Object.prototype.hasOwnProperty.call(obj2, key)) {\n        if (\n          Object.prototype.hasOwnProperty.call(mergedConfig, key) &&\n          typeof mergedConfig[key] === 'object' &&\n          mergedConfig[key] !== null &&\n          typeof obj2[key] === 'object' &&\n          obj2[key] !== null\n        ) {\n          mergedConfig[key] = this.deepMerge(mergedConfig[key], obj2[key]);\n        } else {\n          mergedConfig[key] = obj2[key];\n        }\n      }\n    }\n\n    return mergedConfig;\n  }\n\n  handleKeyboardEvent(\n    keyEvent: KeyboardEvent,\n    element: IElementDto | null\n  ): {\n    operation: KeyboardOperationType;\n    nextElement: IElementDto | null;\n  } | null {\n    let nextElement;\n\n    if (\n      this.currentConfig.operations.moveSelectedPositionUp?.keyEvent === keyEvent.key &&\n      !this.currentConfig.operations.moveSelectedPositionUp?.disabled\n    ) {\n      keyEvent.preventDefault();\n      nextElement = this.flatElementsService.jumpNextNode(-1, element);\n      this.selectElementService.setClickElement(nextElement);\n      return {\n        operation: KeyboardOperationType.MoveSelectedPositionUp,\n        nextElement: nextElement\n      };\n    }\n\n    if (\n      this.currentConfig.operations.moveSelectedPositionDown?.keyEvent === keyEvent.key &&\n      !this.currentConfig.operations.moveSelectedPositionDown?.disabled\n    ) {\n      keyEvent.preventDefault();\n      nextElement = this.flatElementsService.jumpNextNode(1, element);\n      this.selectElementService.setClickElement(nextElement);\n      return {\n        operation: KeyboardOperationType.MoveSelectedPositionDown,\n        nextElement: nextElement\n      };\n    }\n\n    if (\n      this.currentConfig.operations.moveChosenPositionDown?.keyEvent === keyEvent.key &&\n      !this.currentConfig.operations.moveChosenPositionDown?.disabled\n    ) {\n      keyEvent.preventDefault();\n      nextElement = this.flatElementsService.jumpNextNode(1, element);\n      this.selectElementService.setPreselectedElement(nextElement?.id === element?.id ? null : nextElement);\n      return {\n        operation: KeyboardOperationType.MoveChosenPositionDown,\n        nextElement: nextElement\n      };\n    }\n\n    if (\n      this.currentConfig.operations.moveChosenPositionUp?.keyEvent === keyEvent.key &&\n      !this.currentConfig.operations.moveChosenPositionUp?.disabled\n    ) {\n      keyEvent.preventDefault();\n      nextElement = this.flatElementsService.jumpNextNode(-1, element);\n      this.selectElementService.setPreselectedElement(nextElement?.id === element?.id ? null : nextElement);\n      return {\n        operation: KeyboardOperationType.MoveChosenPositionUp,\n        nextElement: nextElement\n      };\n    }\n\n    if (\n      this.currentConfig.operations.selectChosenPosition?.keyEvent === keyEvent.key &&\n      !this.currentConfig.operations.selectChosenPosition?.disabled\n    ) {\n      keyEvent.preventDefault();\n      this.selectElementService.setClickElement(element);\n      return {\n        operation: KeyboardOperationType.SelectChosenPosition,\n        nextElement: null\n      };\n    }\n\n    if (\n      this.currentConfig.operations.clearChosenPosition?.keyEvent === keyEvent.key &&\n      !this.currentConfig.operations.clearChosenPosition?.disabled\n    ) {\n      keyEvent.preventDefault();\n      this.selectElementService.setPreselectedElement(null);\n      return {\n        operation: KeyboardOperationType.ClearChosenPosition,\n        nextElement: null\n      };\n    }\n\n    return null;\n  }\n}\n","import { Injectable } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '@dangl/ava-model';\n\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\n\nimport { SelectedElement, SelectingElementsType } from '../model/selecting.model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TreeNodeSelectionService {\n  private treeNodeSelectingSource = new BehaviorSubject<{ [elementId: string]: SelectingElementsType }>({});\n  treeNodeSelecting = this.treeNodeSelectingSource.asObservable();\n  private _selectingElementsTreeData: SelectingElementsType[] | null = null;\n\n  private selectingChangedSource = new ReplaySubject<SelectingElementsType[]>(1);\n  selectingChanged = this.selectingChangedSource.asObservable();\n\n  flatSelectedListId: string[] = [];\n\n  constructor() {}\n\n  setSelectingChanged(selectingChanged: SelectingElementsType[]): void {\n    this.selectingChangedSource.next(selectingChanged);\n  }\n\n  loadSelectingElements(\n    elements: IElementDto[] | null | undefined,\n    parent: SelectingElementsType | null | undefined = null\n  ): SelectingElementsType[] {\n    const list: SelectingElementsType[] = [];\n    if (elements && elements.length) {\n      elements.forEach((element: IElementDto) => {\n        const obj = {\n          parent,\n          elementId: element.id,\n          checked: false\n        } as SelectingElementsType;\n        if (element.elementType === 'ServiceSpecificationGroupDto') {\n          obj.indeterminate = false;\n          obj.children = this.loadSelectingElements((<ServiceSpecificationGroupDto>element).elements, obj);\n        }\n        list.push(obj);\n        this.treeNodeSelectingSource.value[element.id] = obj;\n      });\n      this._selectingElementsTreeData = list;\n    }\n    return list;\n  }\n\n  getTreeData() {\n    return this._selectingElementsTreeData;\n  }\n\n  private changeAllChild(children: SelectingElementsType[], value: boolean): void {\n    children.forEach((item: SelectingElementsType) => {\n      item.checked = value;\n      if (item.children) {\n        item.indeterminate = false;\n        this.changeAllChild(item.children, value);\n      }\n    });\n  }\n\n  private changeAllParent(parent: SelectingElementsType, value: boolean): void {\n    parent.checked = value;\n    if (parent.parent) {\n      this.changeAllParent(parent.parent, value);\n    }\n  }\n\n  changeSelecting(value: boolean, id: string, isUserChanged = true): void {\n    const selectingNode = this.treeNodeSelectingSource.value[id];\n    if (!selectingNode) {\n      return;\n    }\n\n    selectingNode.checked = value;\n    if (selectingNode.children) {\n      selectingNode.indeterminate = false;\n      if (isUserChanged) {\n        this.changeAllChild(selectingNode.children, value);\n      }\n    }\n    if (selectingNode.parent) {\n      this.changeAllParent(selectingNode.parent, value);\n    }\n    this.getIndeterminate(selectingNode?.parent || null);\n    if (isUserChanged) {\n      this.treeNodeSelectingSource.next(this.treeNodeSelectingSource.value);\n    }\n  }\n\n  private getIndeterminate(parentNode: SelectingElementsType | null | undefined): void {\n    if (!parentNode) {\n      return;\n    }\n\n    if (!parentNode.children || !parentNode.children.length) {\n      return;\n    }\n\n    let resultIndeterminateSome = false;\n    let resultIndeterminateAll = false;\n    parentNode.children.forEach((item: SelectingElementsType) => {\n      if (item.checked || item.indeterminate) {\n        resultIndeterminateSome = true;\n      }\n      if (!item.checked) {\n        resultIndeterminateAll = true;\n      }\n    });\n    if (!resultIndeterminateSome) {\n      parentNode.indeterminate = false;\n      parentNode.checked = false;\n    } else if (resultIndeterminateAll) {\n      parentNode.indeterminate = true;\n      parentNode.checked = false;\n    } else {\n      parentNode.indeterminate = false;\n      parentNode.checked = true;\n    }\n    this.getIndeterminate(parentNode.parent);\n  }\n\n  changeAll(value: boolean): void {\n    Object.values(this.treeNodeSelectingSource.value).forEach((e) => {\n      this.changeSelecting(value, e.elementId, false);\n    });\n    this.treeNodeSelectingSource.next(this.treeNodeSelectingSource.value);\n  }\n\n  getFlatSelectedListId(selectedElements: SelectedElement[]): void {\n    selectedElements.forEach((el) => {\n      if (el.children) {\n        this.getFlatSelectedListId(el.children);\n      } else {\n        this.flatSelectedListId.push(el.elementId);\n      }\n    });\n  }\n\n  getTreeRoot(treeRoot: SelectingElementsType[]): SelectingElementsType[] {\n    const list: SelectingElementsType[] = [];\n    treeRoot.forEach((item: SelectingElementsType) => {\n      if (item.checked || item.indeterminate) {\n        const obj: SelectingElementsType = { elementId: item.elementId };\n        if (item.children) {\n          obj.children = this.getTreeRoot(item.children);\n        }\n        list.push(obj);\n      }\n    });\n    return list;\n  }\n}\n","import { AfterViewInit, Directive, ElementRef, EnvironmentInjector, inject, input, OnDestroy, Renderer2 } from '@angular/core';\n\nimport { Subject, takeUntil } from 'rxjs';\n\nimport { IFunctionViewLine, IViewLine } from '../model';\nimport { ConfigurationTreeService } from '../services/configuration-tree.service';\nimport { FlatElementsService } from '../services/flat-elements.service';\n\n@Directive({ selector: '[saveChangingView]' })\nexport class SaveChangingViewDirective implements AfterViewInit, OnDestroy {\n  private el = inject<ElementRef<HTMLElement>>(ElementRef);\n  private renderer = inject(Renderer2);\n  private flatElementsService = inject(FlatElementsService);\n  private configurationTreeService = inject(ConfigurationTreeService);\n\n  saveChangingView = input<string>('text');\n  private $destroy = new Subject<boolean>();\n  private readonly injector = inject(EnvironmentInjector);\n\n  ngOnDestroy(): void {\n    this.$destroy.next(true);\n    this.$destroy.complete();\n  }\n\n  ngAfterViewInit(): void {\n    this.updateElementStles();\n  }\n\n  private updateElementStles(): void {\n    if (!this.el) {\n      return;\n    }\n    const el = this.el.nativeElement;\n    const id = el.id;\n\n    if (!id) {\n      return;\n    }\n\n    if (!this.renderer) {\n      return;\n    }\n    this.configurationTreeService\n      .getFunctionViewFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((functionView) => {\n        const view: IViewLine | null = this.getChangedView(id, functionView);\n        if (!view) {\n          return;\n        }\n\n        switch (this.saveChangingView()) {\n          case 'icon':\n            if (view.iconName) {\n              el.textContent = view.iconName;\n            }\n            if (view.iconColor) {\n              this.renderer.setStyle(el, 'color', view.iconColor);\n            }\n            break;\n          case 'text':\n            if (view.textBold) {\n              this.renderer.setStyle(el, 'font-weight', view.textBold);\n            }\n            if (view.textColor) {\n              this.renderer.setStyle(el, 'color', view.textColor);\n            }\n            break;\n        }\n      });\n  }\n\n  private getChangedView(id: string, functionView: IFunctionViewLine[]): IViewLine | null {\n    const objectElementsDto = this.flatElementsService.getObjectElementsDto();\n    if (objectElementsDto) {\n      const element = objectElementsDto[id];\n      if (element && functionView?.length) {\n        for (const objectView of functionView) {\n          if (objectView.func(element)) {\n            return objectView.view;\n          }\n        }\n      }\n    }\n\n    return null;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { IElementDto } from '../model';\n\n@Pipe({\n  name: 'elementIconName'\n})\nexport class ElementIconNamePipe implements PipeTransform {\n  transform(element: IElementDto): string {\n    switch (element.elementTypeDiscriminator) {\n      case 'NoteTextDto':\n        return 'subject';\n      case 'ExecutionDescriptionDto':\n        return 'event';\n      case 'ServiceSpecificationGroupDto':\n        return 'folder_open';\n      case 'PositionDto':\n        return 'add';\n      default:\n        return '';\n    }\n  }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { IElementDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\nimport { ConfigurationTreeService } from '../services/configuration-tree.service';\n\n@Pipe({\n  name: 'elementItemNumber'\n})\nexport class ElementItemNumberPipe implements PipeTransform {\n  private configurationTreeService = inject(ConfigurationTreeService);\n\n  transform(element: IElementDto, depth: number = 0, _revision?: number): string {\n    let itemNumber = '';\n\n    switch (element.elementTypeDiscriminator) {\n      case 'ServiceSpecificationGroupDto':\n        itemNumber = (element as ServiceSpecificationGroupDto).itemNumber?.stringRepresentation || '';\n        break;\n      case 'PositionDto':\n        itemNumber = (element as PositionDto).itemNumber?.stringRepresentation || '';\n        break;\n      default:\n        return '';\n    }\n\n    // Check if we should hide parent item numbers\n    const currentConfig = this.configurationTreeService.getCurrentTreeConfig();\n    const hideParentItemNumbers = currentConfig?.hideParentItemNumbers || false;\n\n    if (hideParentItemNumbers && itemNumber && depth > 0) {\n      return this.trimItemNumber(itemNumber, depth);\n    }\n\n    return itemNumber;\n  }\n\n  /**\n   * Trims the item number based on hierarchy depth in the tree.\n   * @param itemNumber - The full item number string (e.g., \"1.2.3.4\")\n   * @param depth - The depth in the tree (0 = root level, 1 = first child level, etc.)\n   * For example, with depth:\n   * - depth 0: \"1.2.3.4\" -> \"1.2.3.4\" (show all)\n   * - depth 1: \"1.2.3.4\" -> \"2.3.4\" (hide first number)\n   * - depth 2: \"1.2.3.4\" -> \"3.4\" (hide first two numbers)\n   * - depth 3: \"1.2.3.4\" -> \"4\" (hide first three numbers)\n   */\n  private trimItemNumber(itemNumber: string, depth: number): string {\n    const parts = itemNumber.split('.');\n\n    // Remove 'depth' number of parts from the beginning\n    const trimmedParts = parts.slice(depth);\n\n    // If all parts are trimmed, return the last part\n    if (trimmedParts.length === 0) {\n      return parts[parts.length - 1] || '';\n    }\n\n    return trimmedParts.join('.');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { ITextWords } from '../constants/defaultTextWords';\nimport { ExecutionDescriptionDto, IElementDto, NoteTextDto, PositionDto, ServiceSpecificationGroupDto } from '../model';\n\n@Pipe({\n  name: 'elementText'\n})\nexport class ElementTextPipe implements PipeTransform {\n  // The revision parameter is used so we can trigger a recalculation of this pure pipe when an element is\n  // updated\n  transform(element: IElementDto, treeWords: ITextWords, _revision?: number): string {\n    if (!element || !treeWords) {\n      return '';\n    }\n\n    switch (element.elementTypeDiscriminator) {\n      case 'NoteTextDto':\n        return (element as NoteTextDto).shortText || treeWords.defaultNameNoteText || '';\n      case 'ExecutionDescriptionDto':\n        return `${(element as ExecutionDescriptionDto).identifier ? (element as ExecutionDescriptionDto).identifier + ' - ' : ''}${\n          (element as ExecutionDescriptionDto).label || treeWords.defaultNameDescription || ''\n        }`;\n      case 'ServiceSpecificationGroupDto':\n        return (element as ServiceSpecificationGroupDto).shortText || treeWords.defaultNameGroup || '';\n      case 'PositionDto':\n        return (element as PositionDto).shortText || treeWords.defaultNamePosition || '';\n      default:\n        return '';\n    }\n  }\n}\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  inject,\n  input,\n  linkedSignal,\n  signal,\n  viewChild\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport { Observable, Subject, combineLatestWith, filter, take, takeUntil } from 'rxjs';\n\nimport { defaults } from '../../constants';\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { SaveChangingViewDirective } from '../../directives/save-changing-view.directive';\nimport { SelectingElementsType } from '../../model/selecting.model';\nimport { ElementIconNamePipe } from '../../pipes/element-icon-name.pipe';\nimport { ElementItemNumberPipe } from '../../pipes/element-item-number.pipe';\nimport { ElementTextPipe } from '../../pipes/element-text.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService } from '../../services/expand-parent-group.service';\nimport { FlatElementsService } from '../../services/flat-elements.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\n@Component({\n  selector: 'ava-tree-item',\n  templateUrl: './tree-item.component.html',\n  styleUrls: ['./tree-item.component.scss'],\n  imports: [\n    SaveChangingViewDirective,\n    AsyncPipe,\n    ElementItemNumberPipe,\n    ElementTextPipe,\n    ElementIconNamePipe,\n    NgTemplateOutlet,\n    MatCheckboxModule,\n    FormsModule,\n    MatIconModule\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeItemComponent implements OnInit, OnDestroy {\n  selectElementService = inject(SelectElementService);\n  private treeNodeSelectionService = inject(TreeNodeSelectionService);\n  private cdr = inject(ChangeDetectorRef);\n  private configurationTreeService = inject(ConfigurationTreeService);\n  private flatElementsService = inject(FlatElementsService);\n\n  _element = input<IElementDto>({} as IElementDto, { alias: 'element' });\n  element = linkedSignal({\n    source: this._element,\n    computation: (e) => e\n  });\n  depth = input<number>(0);\n  isSelect = input<boolean>(false);\n  backgroundColor = input<string | null>('');\n\n  pipeRevision = signal(0);\n  textElement = viewChild.required<ElementRef<HTMLElement>>('textItem');\n\n  selectedElement: IElementDto | null = null;\n  preselectedElement: IElementDto | null = null;\n  private isAllowOneClick = true;\n  private timerStop: ReturnType<typeof setTimeout> | null = null;\n  private $destroy = new Subject<boolean>();\n\n  readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n  isSelectionMode = false;\n\n  checkedElements: { [elementId: string]: SelectingElementsType } = {};\n  private expandParentGroupService = inject(ExpandParentGroupService);\n\n  ngOnInit(): void {\n    this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n      this.selectedElement = element;\n      this.cdr.markForCheck();\n    });\n    this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n      this.preselectedElement = element;\n      this.cdr.markForCheck();\n    });\n\n    this.configurationTreeService\n      .getIsSelectionModeFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((isSelectionMode) => {\n        this.isSelectionMode = isSelectionMode;\n      });\n\n    this.configurationTreeService\n      .getIsSelectionModeFromConfig()\n      .pipe(combineLatestWith(this.treeNodeSelectionService.treeNodeSelecting), takeUntil(this.$destroy))\n      .subscribe(([isSelectionMode, treeNodeSelecting]) => {\n        if (isSelectionMode) {\n          this.checkedElements = treeNodeSelecting;\n          this.cdr.detectChanges();\n        }\n      });\n  }\n\n  public updateItem(): void {\n    this.pipeRevision.update((v) => v + 1);\n    this.cdr.markForCheck();\n  }\n\n  ngOnDestroy(): void {\n    this.timerStop && clearTimeout(this.timerStop);\n    this.$destroy.next(true);\n    this.$destroy.complete();\n  }\n\n  private expand(): void {\n    if (this.element) {\n      const state = this.expandParentGroupService.getExpansionState()();\n      if (state) {\n        state[this.element().id] = true;\n      }\n      this.expandParentGroupService.setExpansionState(state);\n    }\n  }\n\n  select(): void {\n    const clickElement = () => {\n      this.selectElementService.setClickElement(this.selectedElement?.id === this.element().id ? null : this.element());\n      if (this.element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n        this.expand();\n      }\n    };\n    this.configurationTreeService\n      .getAllowDblClickFromConfig()\n      .pipe(take(1))\n      .subscribe((allowDblClick) => {\n        if (!allowDblClick) {\n          clickElement();\n        } else if (this.isAllowOneClick) {\n          this.isAllowOneClick = false;\n          this.timerStop = setTimeout(() => {\n            clickElement();\n            this.isAllowOneClick = true;\n          }, defaults.doubleClickTimeoutInMilliseconds);\n        }\n      });\n  }\n\n  dblSelect(): void {\n    this.configurationTreeService\n      .getAllowDblClickFromConfig()\n      .pipe(take(1))\n      .subscribe((allowDblClick) => {\n        if (!allowDblClick) {\n          return;\n        }\n\n        this.timerStop && clearTimeout(this.timerStop);\n\n        this.selectElementService.setDblClickElement(this.element());\n        if (this.element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n          this.expand();\n        }\n        this.isAllowOneClick = true;\n      });\n  }\n\n  openContextMenu(event: MouseEvent): void {\n    event.preventDefault();\n    this.selectElementService.setContextMenuElement({\n      position: { x: `${event.x}px`, y: `${event.y}px` },\n      node: this.element()\n    });\n  }\n\n  changeSelecting(element: IElementDto, isSelected: boolean): void {\n    this.treeNodeSelectionService.changeSelecting(isSelected, element.id);\n  }\n}\n","@if (element()) {\n  <div\n    (click)=\"select()\"\n    (dblclick)=\"dblSelect()\"\n    (contextmenu)=\"openContextMenu($event)\"\n    class=\"ava-tree-item\"\n    [id]=\"element().id\"\n  >\n    <mat-icon\n      class=\"ava-tree-item__icon\"\n      saveChangingView=\"icon\"\n      [id]=\"element().id\"\n      >{{ element() | elementIconName }}</mat-icon\n    >\n    @if (!isSelectionMode) {\n      <div\n        #textItem\n        class=\"ava-tree-item__text\"\n        [class.choose]=\"!isSelectionMode && element().id === preselectedElement?.id\"\n        [id]=\"element().id\"\n        saveChangingView=\"text\"\n        [class.select]=\"isSelect()\"\n        [style.backgroundColor]=\"backgroundColor()\"\n      >\n        <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n      </div>\n    }\n    @if (isSelectionMode && checkedElements[element().id]) {\n      <mat-checkbox\n        class=\"ava-tree-item__checkbox\"\n        color=\"primary\"\n        [indeterminate]=\"checkedElements[element().id].indeterminate\"\n        [(ngModel)]=\"checkedElements[element().id].checked\"\n        (ngModelChange)=\"changeSelecting(element(), $event)\"\n        (click)=\"$event.stopPropagation()\"\n      >\n        <div\n          #textItem\n          class=\"ava-tree-item__text\"\n          saveChangingView=\"text\"\n          [id]=\"element().id\"\n        >\n          <ng-container [ngTemplateOutlet]=\"text\"></ng-container>\n        </div>\n      </mat-checkbox>\n    }\n  </div>\n}\n\n<ng-template #text>\n  @if (textWords$ | async; as textWords) {\n    @if (element().elementTypeDiscriminator === 'ServiceSpecificationGroupDto' || element().elementTypeDiscriminator === 'PositionDto') {\n      <ng-container>\n        {{ element() | elementItemNumber: depth() : pipeRevision() }} - {{ element() | elementText: textWords : pipeRevision() }}\n      </ng-container>\n    } @else {\n      <ng-container>{{ element() | elementText: textWords : pipeRevision() }}</ng-container>\n    }\n  }\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnDestroy, OnInit, ViewChildren, inject, input } from '@angular/core';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { IElementDto } from '../../model';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { SelectElementService } from '../../services/select-element.service';\n\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\n\n@Component({\n  selector: 'ava-list-structure',\n  templateUrl: './list-structure.component.html',\n  styleUrls: ['./list-structure.component.scss'],\n  imports: [TreeItemComponent, AsyncPipe, HoverEffectDirective],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ListStructureComponent implements OnDestroy, OnInit {\n  selectElementService = inject(SelectElementService);\n  private configurationTreeService = inject(ConfigurationTreeService);\n\n  filteredElementList = input<IElementDto[]>([]);\n\n  selectedElement: IElementDto | null = null;\n  private $destroy = new Subject<boolean>();\n\n  readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n  isSelectionMode = false;\n  @ViewChildren(TreeItemComponent) private treeItems!: TreeItemComponent[];\n\n  ngOnInit(): void {\n    this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n      this.selectedElement = element;\n    });\n\n    this.configurationTreeService\n      .getIsSelectionModeFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((isSelectionMode) => {\n        this.isSelectionMode = isSelectionMode;\n      });\n  }\n\n  public updateList(elementIds: string[]): boolean {\n    let hasFoundInChildItem = false;\n    this.treeItems.forEach((treeItem) => {\n      if (elementIds.includes(treeItem.element().id)) {\n        hasFoundInChildItem = true;\n        treeItem.updateItem();\n      }\n    });\n    if (hasFoundInChildItem) {\n      return true;\n    }\n\n    return false;\n  }\n\n  ngOnDestroy(): void {\n    this.$destroy.next(true);\n    this.$destroy.complete();\n  }\n}\n","@for (element of filteredElementList(); track element.id) {\n  <ng-container>\n    <div\n      [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n      [style.backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n      [id]=\"'hover-element-id-' + element.id\"\n      [avaHoverEffect]=\"avaItem\"\n    >\n      <ava-tree-item\n        #avaItem\n        [element]=\"element\"\n        [isSelect]=\"!isSelectionMode && element.id === selectedElement?.id\"\n        [backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n      ></ava-tree-item>\n    </div>\n  </ng-container>\n}\n","import { AsyncPipe, DecimalPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit, inject, input, linkedSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { Observable, Subject, combineLatestWith, map, of, switchMap, take, takeUntil } from 'rxjs';\n\nimport { defaults } from '../../constants';\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { SaveChangingViewDirective } from '../../directives/save-changing-view.directive';\nimport { IElementDto, TableColumnType } from '../../model';\nimport { SelectingElementsObjectType } from '../../model/selecting.model';\nimport { ElementIconNamePipe } from '../../pipes/element-icon-name.pipe';\nimport { ElementItemNumberPipe } from '../../pipes/element-item-number.pipe';\nimport { ElementTextPipe } from '../../pipes/element-text.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { FlatElementsService } from '../../services/flat-elements.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\n@Component({\n  selector: 'ava-table-structure',\n  templateUrl: './table-structure.component.html',\n  styleUrls: ['./table-structure.component.scss'],\n  imports: [\n    NgClass,\n    AsyncPipe,\n    ElementTextPipe,\n    ElementItemNumberPipe,\n    ElementIconNamePipe,\n    DecimalPipe,\n    MatTableModule,\n    MatIconModule,\n    MatCheckboxModule,\n    FormsModule,\n    SaveChangingViewDirective\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableStructureComponent implements OnInit, OnDestroy {\n  selectElementService = inject(SelectElementService);\n  private treeNodeSelectionService = inject(TreeNodeSelectionService);\n  private cdr = inject(ChangeDetectorRef);\n  configurationTreeService = inject(ConfigurationTreeService);\n  private flatElementsService = inject(FlatElementsService);\n\n  readonly _filteredElementList = input<IElementDto[]>([], { alias: 'filteredElementList' });\n  filteredElementList = linkedSignal({\n    source: this._filteredElementList,\n    computation: (list) => list.map((el) => ({ ...el }))\n  });\n\n  displayedColumns: string[] = [];\n  private isAllowOneClick = true;\n  selectedElement: IElementDto | null = null;\n  preselectedElement: IElementDto | null = null;\n  private timerStop: ReturnType<typeof setTimeout> | null = null;\n  checkedElements: SelectingElementsObjectType = {};\n\n  private $destroy = new Subject<boolean>();\n  readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n  readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n  readonly addTableColumns$: Observable<TableColumnType[]> = this.configurationTreeService.getAddTableColumnsFromConfig();\n  isSelectionMode = false;\n\n  ngOnInit(): void {\n    this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n      this.selectedElement = element;\n      this.cdr.markForCheck();\n    });\n    this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n      this.preselectedElement = element;\n      this.cdr.markForCheck();\n    });\n\n    this.configurationTreeService\n      .getIsSelectionModeFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((isSelectionMode) => {\n        this.isSelectionMode = isSelectionMode;\n      });\n\n    this.configureTableColumns();\n\n    this.treeNodeSelectionService.treeNodeSelecting.pipe(takeUntil(this.$destroy)).subscribe((treeNodeSelecting) => {\n      this.checkedElements = treeNodeSelecting;\n      this.cdr.detectChanges();\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.timerStop && clearTimeout(this.timerStop);\n\n    this.$destroy.next(true);\n    this.$destroy.complete();\n  }\n\n  select(row: IElementDto): void {\n    if (this.isSelectionMode) {\n      return;\n    }\n\n    const clickElement = () => {\n      this.selectElementService.setClickElement(this.selectedElement?.id === row.id ? null : row);\n    };\n    this.configurationTreeService\n      .getAllowDblClickFromConfig()\n      .pipe(take(1))\n      .subscribe((allowDblClick) => {\n        if (!allowDblClick) {\n          clickElement();\n        } else if (this.isAllowOneClick) {\n          this.isAllowOneClick = false;\n          this.timerStop = setTimeout(() => {\n            clickElement();\n            this.isAllowOneClick = true;\n          }, defaults.doubleClickTimeoutInMilliseconds);\n        }\n      });\n  }\n\n  dblSelect(row: IElementDto): void {\n    this.configurationTreeService\n      .getAllowDblClickFromConfig()\n      .pipe(take(1))\n      .subscribe((allowDblClick) => {\n        if (!allowDblClick) {\n          return;\n        }\n\n        if (this.isSelectionMode) {\n          return;\n        }\n\n        this.timerStop && clearTimeout(this.timerStop);\n\n        this.selectElementService.setDblClickElement(row);\n        this.isAllowOneClick = true;\n      });\n  }\n\n  openContextMenu(event: MouseEvent, row: IElementDto): void {\n    event.preventDefault();\n    this.selectElementService.setContextMenuElement({ position: { x: `${event.x}px`, y: `${event.y}px` }, node: row });\n  }\n\n  changeSelecting(element: IElementDto, event: boolean): void {\n    this.treeNodeSelectionService.changeSelecting(event, element.id);\n  }\n\n  configureTableColumns(): void {\n    this.configurationTreeService\n      .getIsSelectionModeFromConfig()\n      .pipe(\n        combineLatestWith(this.addTableColumns$.pipe(map((c) => c.map((item) => item.name)))),\n        switchMap(([isSelectionMode, addColumns]) => {\n          if (isSelectionMode) {\n            return of(['icon', 'checkbox', 'itemNumber', 'text', ...addColumns]);\n          } else {\n            return of(['icon', 'itemNumber', 'text', ...addColumns]);\n          }\n        }),\n        takeUntil(this.$destroy)\n      )\n      .subscribe((columns) => {\n        this.displayedColumns = [...columns];\n      });\n  }\n}\n","<table\n  mat-table\n  [dataSource]=\"filteredElementList()\"\n>\n  <ng-container matColumnDef=\"icon\">\n    <th\n      mat-header-cell\n      *matHeaderCellDef\n    ></th>\n    <td\n      mat-cell\n      *matCellDef=\"let row\"\n      class=\"table-cell-small-width\"\n    >\n      <mat-icon\n        class=\"icon-element\"\n        saveChangingView=\"icon\"\n        [id]=\"row.id\"\n      >\n        {{ row | elementIconName }}\n      </mat-icon>\n    </td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"checkbox\">\n    <th\n      mat-header-cell\n      *matHeaderCellDef\n    ></th>\n    <td\n      mat-cell\n      *matCellDef=\"let element\"\n      class=\"table-cell-small-width\"\n    >\n      @if (checkedElements[element.id]) {\n        <mat-checkbox\n          class=\"checkbox\"\n          color=\"primary\"\n          [indeterminate]=\"checkedElements[element.id].indeterminate\"\n          [(ngModel)]=\"checkedElements[element.id].checked\"\n          (ngModelChange)=\"changeSelecting(element, $event)\"\n          (click)=\"$event.stopPropagation()\"\n        >\n        </mat-checkbox>\n      }\n    </td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"itemNumber\">\n    <th\n      mat-header-cell\n      *matHeaderCellDef\n    >\n      OZ\n    </th>\n    <td\n      mat-cell\n      *matCellDef=\"let row\"\n      [style.width.ch]=\"row?.itemNumber?.stringRepresentation.length\"\n    >\n      <div\n        class=\"text-element\"\n        saveChangingView=\"text\"\n        [id]=\"row.id\"\n      >\n        {{ row | elementItemNumber }}\n      </div>\n    </td>\n  </ng-container>\n\n  <ng-container matColumnDef=\"text\">\n    <th\n      mat-header-cell\n      *matHeaderCellDef\n    >\n      Text\n    </th>\n    <td\n      mat-cell\n      *matCellDef=\"let row\"\n      class=\"table-text\"\n    >\n      @if (textWords$ | async; as textWords) {\n        <div\n          class=\"text-element\"\n          saveChangingView=\"text\"\n          [id]=\"row.id\"\n        >\n          {{ row | elementText: textWords }}\n        </div>\n      }\n    </td>\n  </ng-container>\n  @for (oneColumn of addTableColumns$ | async; track oneColumn.name) {\n    <ng-container>\n      <ng-container matColumnDef=\"{{ oneColumn.name }}\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n        >\n          {{ oneColumn.title }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let row\"\n        >\n          <div\n            [style.textAlign]=\"oneColumn.align\"\n            saveChangingView=\"text\"\n            [id]=\"row.id\"\n          >\n            {{\n              !oneColumn.numberFormat\n                ? row[oneColumn.name]\n                : (row[oneColumn.name] | number: oneColumn.numberFormat : configurationTreeService.locale)\n            }}\n          </div>\n        </td>\n      </ng-container>\n    </ng-container>\n  }\n\n  <tr\n    mat-header-row\n    *matHeaderRowDef=\"displayedColumns; sticky: true\"\n    class=\"mat-header-row\"\n  ></tr>\n  <tr\n    mat-row\n    *matRowDef=\"let row; columns: displayedColumns\"\n    (click)=\"select(row)\"\n    (dblclick)=\"dblSelect(row)\"\n    (contextmenu)=\"openContextMenu($event, row)\"\n    [ngClass]=\"{\n      choose: !isSelectionMode && row.id === preselectedElement?.id,\n      select: !isSelectionMode && row.id === selectedElement?.id,\n    }\"\n    [style.background]=\"!isSelectionMode && row.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n    [id]=\"row.id\"\n  ></tr>\n</table>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { IElementDto, ServiceSpecificationGroupDto } from '../model';\n\n@Pipe({\n  name: 'groupChildElements',\n  pure: true\n})\nexport class GroupChildElementsPipe implements PipeTransform {\n  transform(element: IElementDto): IElementDto[] | null {\n    if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n      return (element as ServiceSpecificationGroupDto)?.elements || null;\n    }\n\n    return null;\n  }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  OnDestroy,\n  OnInit,\n  ViewChildren,\n  inject,\n  input,\n  linkedSignal\n} from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { Observable, Subject, takeUntil } from 'rxjs';\n\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { IElementDto } from '../../model';\nimport { GroupChildElementsPipe } from '../../pipes/group-child-elements.pipe';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService } from '../../services/expand-parent-group.service';\nimport { SelectElementService } from '../../services/select-element.service';\n\nimport { TreeItemComponent } from '../tree-item/tree-item.component';\n\n@Component({\n  selector: 'ava-tree-node',\n  templateUrl: './tree-node.component.html',\n  styleUrls: ['./tree-node.component.scss'],\n  imports: [TreeItemComponent, GroupChildElementsPipe, MatIconModule, AsyncPipe, HoverEffectDirective],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TreeNodeComponent implements OnDestroy, OnInit {\n  selectElementService = inject(SelectElementService);\n  private configurationTreeService = inject(ConfigurationTreeService);\n\n  elementList = input<IElementDto[] | null>([]);\n  displayList = linkedSignal(() => this.elementList());\n  elementId = input<string>();\n  depth = input<number>(0);\n\n  selectedElement: IElementDto | null = null;\n  private $destroy = new Subject<boolean>();\n\n  readonly indent$: Observable<string> = this.configurationTreeService.getIndentFromConfig();\n  readonly selectedColor$: Observable<string> = this.configurationTreeService.getSelectedColorFromConfig();\n  isSelectionMode = false;\n  private cdr = inject(ChangeDetectorRef);\n  private expandParentGroupService = inject(ExpandParentGroupService);\n  expansionState = this.expandParentGroupService.getExpansionState();\n\n  @ViewChildren(TreeNodeComponent) private treeNodes!: TreeNodeComponent[];\n  @ViewChildren(TreeItemComponent) private treeItems!: TreeItemComponent[];\n\n  // This will return true if it has found an element to update, otherwise false.\n  // This is calling itself recurisvely, and it's to ensure we're not traversing the full tree for every\n  // update we're doing\n  public updateTree(elementId: string): boolean {\n    if (this.elementId() === elementId) {\n      this.refreshDisplayList();\n      return true;\n    } else {\n      let hasFoundInChildItem = false;\n      this.treeItems.forEach((treeItem) => {\n        if (treeItem.element().id === elementId) {\n          hasFoundInChildItem = true;\n          treeItem.updateItem();\n          this.cdr.markForCheck();\n        }\n      });\n\n      let hasFoundInChildTree = false;\n      this.treeNodes.forEach((treeNode) => {\n        if (!hasFoundInChildTree) {\n          hasFoundInChildTree = treeNode.updateTree(elementId);\n        }\n      });\n\n      if (hasFoundInChildItem || hasFoundInChildTree) {\n        this.cdr.markForCheck();\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /** Force-refresh displayList from the underlying elementList for this node and all children. */\n  public refreshDisplayList(): void {\n    this.displayList.set([...(this.elementList() ?? [])]);\n    this.cdr.markForCheck();\n    this.treeNodes?.forEach((treeNode) => treeNode.refreshDisplayList());\n  }\n\n  ngOnInit(): void {\n    this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((element) => {\n      this.selectedElement = element;\n      this.cdr.markForCheck();\n    });\n\n    this.configurationTreeService\n      .getIsSelectionModeFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((isSelectionMode) => {\n        this.isSelectionMode = isSelectionMode;\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.$destroy.next(true);\n    this.$destroy.complete();\n  }\n\n  expand(element: IElementDto): void {\n    const state = this.expansionState();\n    this.expandParentGroupService.setExpansionState({\n      ...state,\n      [element.id]: !state[element.id]\n    });\n  }\n}\n","@for (element of displayList(); track element.id) {\n  <ng-container>\n    <div\n      [id]=\"'hover-element-id-' + element.id\"\n      class=\"tree-node-wrapper\"\n      [class.select]=\"!isSelectionMode && element.id === selectedElement?.id\"\n      [style.backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n      [avaHoverEffect]=\"avaItem\"\n    >\n      <div class=\"tree-node-wrapper__content\">\n        @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n          <mat-icon\n            matRipple\n            (click)=\"expand(element)\"\n            class=\"tree-node__icon\"\n          >\n            {{ expansionState()[element.id] ? 'expand_more' : 'chevron_right' }}\n          </mat-icon>\n        } @else {\n          <mat-icon></mat-icon>\n        }\n\n        <ava-tree-item\n          #avaItem\n          [element]=\"element\"\n          [depth]=\"depth()\"\n          [isSelect]=\"!isSelectionMode && element.id === selectedElement?.id\"\n          [backgroundColor]=\"!isSelectionMode && element.id === selectedElement?.id ? (selectedColor$ | async) : ''\"\n        ></ava-tree-item>\n      </div>\n    </div>\n    @if (element.elementTypeDiscriminator === 'ServiceSpecificationGroupDto' && expansionState()[element.id]) {\n      <div [style.paddingLeft]=\"indent$ | async\">\n        <ava-tree-node\n          [elementList]=\"element | groupChildElements\"\n          [elementId]=\"element.id\"\n          [depth]=\"depth() + 1\"\n        ></ava-tree-node>\n      </div>\n    }\n  </ng-container>\n}\n","import { AsyncPipe, registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\nimport localeEn from '@angular/common/locales/en';\nimport localeDeExtra from '@angular/common/locales/extra/de';\nimport localeEnExtra from '@angular/common/locales/extra/en';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  inject,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  ViewEncapsulation,\n  ChangeDetectionStrategy,\n  input,\n  linkedSignal,\n  EnvironmentInjector,\n  runInInjectionContext,\n  output,\n  viewChild,\n  ViewChildren,\n  ViewChild\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { IElementDto } from '@dangl/ava-model';\n\nimport {\n  Observable,\n  ReplaySubject,\n  Subject,\n  combineLatest,\n  debounceTime,\n  filter,\n  fromEvent,\n  map,\n  pairwise,\n  startWith,\n  switchMap,\n  takeUntil,\n  tap\n} from 'rxjs';\n\nimport { ITextWords } from '../../constants/defaultTextWords';\nimport { HoverEffectDirective } from '../../directives/hover-effect.directive';\nimport { ContextMenuDataType, IConfigurationTree, ModeViewType, ProjectDto, SelectedElement } from '../../model';\nimport { SelectingElementsType } from '../../model/selecting.model';\nimport { TopLevelExpansionChangedEvent } from '../../model/top-level-expansion-changed-event';\nimport { ConfigurationTreeService } from '../../services/configuration-tree.service';\nimport { ExpandParentGroupService, IExpansionState } from '../../services/expand-parent-group.service';\nimport { FlatElementsService } from '../../services/flat-elements.service';\nimport { IKeyboardOperationConfig, KeyboardOperationService, KeyboardOperationType } from '../../services/keyboard-operation.service';\nimport { SelectElementService } from '../../services/select-element.service';\nimport { TreeHoverTooltipService } from '../../services/tree-hover-tooltip.service';\nimport { TreeNodeSelectionService } from '../../services/tree-node-selection.service';\n\nimport { ListStructureComponent } from '../list-structure/list-structure.component';\nimport { TableStructureComponent } from '../table-structure/table-structure.component';\nimport { TreeNodeComponent } from '../tree-node/tree-node.component';\n\nregisterLocaleData(localeDe, 'de-DE', localeDeExtra);\nregisterLocaleData(localeEn, 'en-US', localeEnExtra);\n\n@Component({\n  selector: 'ava-tree',\n  templateUrl: './ava-tree.component.html',\n  styleUrls: ['./ava-tree.component.scss'],\n  imports: [\n    TreeNodeComponent,\n    ListStructureComponent,\n    TableStructureComponent,\n    MatButtonModule,\n    MatFormFieldModule,\n    MatIconModule,\n    MatTooltipModule,\n    FormsModule,\n    MatInputModule,\n    AsyncPipe\n  ],\n  providers: [\n    FlatElementsService,\n    SelectElementService,\n    TreeNodeSelectionService,\n    ExpandParentGroupService,\n    KeyboardOperationService,\n    ConfigurationTreeService,\n    TreeHoverTooltipService,\n    SelectElementService,\n    HoverEffectDirective\n  ],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AvaTreeComponent implements OnInit, OnDestroy, AfterViewInit {\n  private flatElementsService = inject(FlatElementsService, { self: true });\n  private selectElementService = inject(SelectElementService, { self: true });\n  private treeNodeSelectionService = inject(TreeNodeSelectionService, { self: true });\n  private expandParentGroupService = inject(ExpandParentGroupService, { self: true });\n  private keyboardOperationService = inject(KeyboardOperationService, { self: true });\n  private configurationTreeService = inject(ConfigurationTreeService);\n\n  @ViewChildren(TreeNodeComponent) private treeNodes!: TreeNodeComponent[];\n  @ViewChild(ListStructureComponent) private listStructureComponent!: ListStructureComponent;\n\n  private readonly injector = inject(EnvironmentInjector);\n  private transformFn = <T>(data: T | string): T | null => {\n    if (typeof data === 'string') {\n      try {\n        return JSON.parse(data) as T;\n      } catch (e) {\n        return null;\n      }\n    } else {\n      return data;\n    }\n  };\n\n  /**\n   * This is the main data element for the tree structure. You should supply a ProjectDto with\n   * exactly one service specification in it.\n   */\n  project = input.required<ProjectDto | null, ProjectDto>({ transform: this.transformFn<ProjectDto> });\n\n  /**\n   * Optionally, you can supply a map of expansion states for the tree. The keys should be the\n   * id properties of the elements in the tree, and the values should be true if the element is\n   * expanded, and false if it is collapsed.\n   */\n  readonly expansionstate = input<IExpansionState | null, IExpansionState>(null, { transform: this.transformFn<IExpansionState> });\n  /**\n   * Optionally, you can supply the id of the node that should be selected in the tree initially.\n   */\n  readonly selectednodeid = input<string | null>(null);\n\n  /**\n   * You can specify which view type to use for the tree. The default is ModeViewType.Tree, but you can also use\n   * ModeViewType.List or ModeViewType.Table.\n   */\n  readonly modeview = input<ModeViewType>(ModeViewType.Tree);\n\n  public updateTree(elementIds: string[], hasAddedOrRemovedElements?: boolean): void {\n    let foundInTree = false;\n    if (this.modeview() === ModeViewType.Tree && !this.avaTreeFilterInput().nativeElement.value) {\n      this.treeNodes.forEach((treeNode) => {\n        elementIds.forEach((elementId) => {\n          if (treeNode.updateTree(elementId)) {\n            foundInTree = true;\n          }\n        });\n      });\n    } else if (\n      this.modeview() === ModeViewType.List ||\n      (this.modeview() === ModeViewType.Tree && this.avaTreeFilterInput().nativeElement.value)\n    ) {\n      if (this.listStructureComponent) {\n        this.listStructureComponent.updateList(elementIds);\n      }\n      foundInTree = true;\n    } else {\n      // If we're in the list view, we don't directly update the elements but we regenerate\n      // the list view for them\n      foundInTree = true;\n    }\n\n    if (\n      foundInTree &&\n      (hasAddedOrRemovedElements || this.modeview() === ModeViewType.List || this.avaTreeFilterInput().nativeElement.value)\n    ) {\n      this.flatElementsService.setElementsDto(this.serviceSpecification()!);\n    }\n  }\n\n  /**\n   * You can optionally supply a list of elements that should be selected initially. This is only used if\n   * isSelectionMode is true.\n   */\n  private initiallySelectedElements: SelectedElement[] | null = null;\n\n  /**\n   * You can supply a map of strings to be used for the text in the tree. This allows you to translate\n   * the text in the tree to other languages.\n   * {\n   *   textSearch: string,\n   *   textNothing: string,\n   *   textNothingFiltered: string,\n   *   textAll: string,\n   *   tooltipAllOpen: string,\n   *   tooltipAllClose: string,\n   *   tooltipAllAdd:string,\n   *   tooltipAllRemove: string,\n   * }\n   */\n  readonly textWords$: Observable<ITextWords | null> = this.configurationTreeService.getTextWordsFromConfig();\n  readonly isSelectionMode$: Observable<boolean> = this.configurationTreeService.getIsSelectionModeFromConfig();\n  private isSelectionMode = false;\n  /**\n   * Defaults to true. If this is enabled, then navigating in the tree with the keyboard only works\n   * if the mouse is over the tree area. This limitation is useful if you have multiple trees or other components\n   * that might be using keyboard input.\n   */\n  private mouseAwareKeyboardControl = true;\n\n  /**\n   * With this parameter, you can configure which keys will be listenend to switch the tree elements,\n   * and also to disable the functionality of the keys */\n  private set customKeyboardOperationConfig(config: IKeyboardOperationConfig) {\n    this.keyboardOperationService.mergeConfigOperation(config);\n  }\n\n  readonly config = input<IConfigurationTree | null, IConfigurationTree>(null, {\n    transform: this.transformFn<IConfigurationTree>\n  });\n\n  /**\n   * This is emitted when an element is selected by clicking on it. The selected element is emitted as the event value.\n   */\n  selectClick = output<IElementDto | null>();\n\n  /**\n   * This is emitted when an element is selected by double clicking on it. The selected element is emitted as the event value.\n   */\n  selectDblClick = output<IElementDto>();\n\n  /**\n   * This is emitted when an element is selected by right clicking on it. The selected element is emitted as the event value.\n   */\n  contextMenuEvent = output<ContextMenuDataType>();\n\n  /**\n   * This is emitted when the selected elements in the tree are changed. The selected elements are emitted as the event value.\n   * Selected elements are elements whose checkboxes are checked, and are different than elements that are in an active selection state.\n   * Typcial use cases for this include e.g. selecting multiple elements within a service specification without\n   * actually focussing them, e.g. for further processing.\n   */\n  selectedElementsChanged = output<SelectedElement[]>();\n\n  /**\n   * This is emitted in tree view mode when a top-level element's expansion state changes.\n   * The event contains the element id and whether it is now expanded or collapsed.\n   */\n  topLevelExpansionChanged = output<TopLevelExpansionChangedEvent>();\n\n  avaTreeWrapper = viewChild.required<ElementRef<HTMLDivElement>>('avaTreeWrapper');\n  avaMainWrapper = viewChild.required<ElementRef<HTMLDivElement>>('avaMainWrapper');\n  avaTreeFilterInput = viewChild.required<ElementRef<HTMLInputElement>>('avaTreeFilterInput');\n  private selectedElement: IElementDto | null = null;\n  private previousServiceSpecificationId: string | null = null;\n  serviceSpecification = linkedSignal({\n    source: this.project,\n    computation: () => {\n      const s = this.project()?.serviceSpecifications?.[0] || null;\n      if (s !== null) {\n        this.flatElementsService.setElementsDto(s);\n      }\n      return s;\n    }\n  });\n\n  private isEmiteSelectedElements = false;\n  private selectingElementsTreeData: SelectingElementsType[] = [];\n  flatElements: IElementDto[] | null = null;\n  preselectedElement: IElementDto | null = null;\n  filterInput = '';\n  listModeViewType = ModeViewType;\n  private filter = '';\n  private $filter = new ReplaySubject<string>(1);\n  filteredElementList: IElementDto[] = [];\n  private $destroy = new Subject<boolean>();\n  private cdr = inject(ChangeDetectorRef);\n\n  ngOnInit(): void {\n    this.selectElementService.preselectedElement.pipe(takeUntil(this.$destroy)).subscribe((e) => (this.preselectedElement = e));\n    this.selectElementService.selectClickElement.pipe(takeUntil(this.$destroy)).subscribe((e) => {\n      this.selectedElement = e;\n      this.selectClick.emit(e);\n    });\n    this.selectElementService.selectDblClickElement.pipe(takeUntil(this.$destroy)).subscribe((e) => this.selectDblClick.emit(e));\n    this.selectElementService.selectContextMenuElement.pipe(takeUntil(this.$destroy)).subscribe((e) => this.contextMenuEvent.emit(e));\n    this.flatElementsService.flatElementsDto.pipe(takeUntil(this.$destroy)).subscribe((e) => {\n      this.flatElements = e;\n      this.getFilteredList();\n    });\n\n    this.$filter.pipe(takeUntil(this.$destroy), debounceTime(250)).subscribe((filter) => {\n      this.filter = filter;\n      this.getFilteredList();\n    });\n\n    this.configurationTreeService\n      .getIsSelectionModeFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((isSelectionMode) => {\n        this.isSelectionMode = isSelectionMode;\n      });\n\n    this.configurationTreeService\n      .getMouseAwareKeyboardControlFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((mouseAwareKeyboardControl) => {\n        this.mouseAwareKeyboardControl = mouseAwareKeyboardControl;\n      });\n\n    this.configurationTreeService\n      .getListFilterFuncFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((listFilterFunc) => {\n        this.flatElementsService.listFilterFunc = listFilterFunc;\n      });\n\n    this.configurationTreeService\n      .getCustomKeyboardOperationConfigFromConfig()\n      .pipe(takeUntil(this.$destroy))\n      .subscribe((config) => {\n        if (config) {\n          this.customKeyboardOperationConfig = config;\n        }\n      });\n\n    runInInjectionContext(this.injector, () => {\n      toObservable(this.serviceSpecification)\n        .pipe(\n          tap((serviceSpecification) => {\n            const currentId = serviceSpecification?.id || null;\n            const isNewServiceSpecification = currentId !== this.previousServiceSpecificationId;\n\n            this.selectingElementsTreeData = this.treeNodeSelectionService.loadSelectingElements(serviceSpecification?.elements);\n\n            // Only reset expansion state when loading a completely different service specification\n            if (isNewServiceSpecification) {\n              this.expandParentGroupService.setExpansionState({});\n              this.previousServiceSpecificationId = currentId;\n            }\n          }),\n          takeUntil(this.$destroy)\n        )\n        .subscribe();\n\n      toObservable(this.selectednodeid)\n        .pipe(\n          tap((id) => this.selectElementById(id)),\n          takeUntil(this.$destroy)\n        )\n        .subscribe();\n\n      toObservable(this.config)\n        .pipe(\n          tap((config) => {\n            const currentConfig = this.configurationTreeService.getCurrentTreeConfig();\n            const c = config === null ? currentConfig : { ...currentConfig, ...config };\n            this.configurationTreeService.setTreeConfig(c!);\n            const elements = this.serviceSpecification()?.elements;\n            this.selectingElementsTreeData = this.treeNodeSelectionService.loadSelectingElements(elements);\n          }),\n          map((config) => config?.isSelectionMode),\n          filter((isSelectionMode) => !!isSelectionMode),\n\n          switchMap(() => this.treeNodeSelectionService.treeNodeSelecting),\n          takeUntil(this.$destroy)\n        )\n        .subscribe(() => {\n          if (this.isEmiteSelectedElements) {\n            setTimeout(() => {\n              const selectingTree = this.treeNodeSelectionService.getTreeRoot(this.selectingElementsTreeData);\n              this.selectedElementsChanged.emit(selectingTree);\n            });\n          }\n        });\n\n      combineLatest([\n        toObservable(this.project),\n        this.configurationTreeService.treeConfig$.pipe(\n          map(({ isSelectionMode, initiallySelectedElements }) => ({\n            isSelectionMode,\n            initiallySelectedElements\n          })),\n          filter(({ isSelectionMode }) => !!isSelectionMode),\n          tap(({ initiallySelectedElements }) => {\n            if (initiallySelectedElements?.length) {\n              this.initiallySelectedElements = initiallySelectedElements;\n            }\n          })\n        )\n      ])\n        .pipe(takeUntil(this.$destroy))\n        .subscribe(() => {\n          this.formSelectingList();\n        });\n\n      toObservable(this.expansionstate)\n        .pipe(takeUntil(this.$destroy))\n        .subscribe((s) => {\n          if (s === null) {\n            this.expandParentGroupService.setExpansionState({});\n          } else {\n            this.expandParentGroupService.setExpansionState(s);\n          }\n        });\n\n      toObservable(this.expandParentGroupService.getExpansionState())\n        .pipe(startWith({} as IExpansionState), pairwise(), takeUntil(this.$destroy))\n        .subscribe(([prev, curr]) => {\n          if (this.modeview() !== ModeViewType.Tree) {\n            return;\n          }\n          const topLevelIds = new Set((this.serviceSpecification()?.elements ?? []).map((e) => e.id));\n          for (const id of topLevelIds) {\n            const wasExpanded = !!prev[id];\n            const isExpanded = !!curr[id];\n            if (wasExpanded !== isExpanded) {\n              this.topLevelExpansionChanged.emit({ elementId: id, isExpanded });\n            }\n          }\n        });\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.initializeEventListeners();\n  }\n\n  ngOnDestroy(): void {\n    this.$destroy.next(true);\n    this.$destroy.complete();\n  }\n\n  private handleGlobalKeyboardEvent(event: Event): void {\n    const keyEvent = event as KeyboardEvent;\n    if (!this.mouseAwareKeyboardControl || this.avaMainWrapper().nativeElement.matches(':hover')) {\n      const element = this.preselectedElement || this.selectedElement;\n\n      const { operation, nextElement } = this.keyboardOperationService.handleKeyboardEvent(keyEvent, element) || { nextElement: null };\n      switch (operation) {\n        case KeyboardOperationType.MoveSelectedPositionUp:\n          this.showElement(nextElement, '.select');\n          break;\n        case KeyboardOperationType.MoveSelectedPositionDown:\n          this.showElement(nextElement, '.select');\n          break;\n        case KeyboardOperationType.MoveChosenPositionDown:\n          this.showElement(nextElement, nextElement?.id === this.selectedElement?.id ? '.select' : '.choose');\n          break;\n        case KeyboardOperationType.MoveChosenPositionUp:\n          this.showElement(nextElement, nextElement?.id === this.selectedElement?.id ? '.select' : '.choose');\n          break;\n        default:\n          break;\n      }\n    }\n  }\n\n  private showElement(element: IElementDto | null, nameQuery: string): void {\n    if (element) {\n      if (this.modeview() === ModeViewType.Tree) {\n        this.expandParentGroups(element);\n      }\n      setTimeout(() => this.scrollLine(nameQuery), 0);\n    }\n  }\n\n  private scrollLine(nameQuery: string): void {\n    const parentRect = this.avaTreeWrapper()?.nativeElement.getBoundingClientRect();\n    const showedElement = this.avaTreeWrapper()?.nativeElement.querySelector(nameQuery) as HTMLElement;\n\n    if (!showedElement) {\n      return;\n    }\n\n    const childRect = showedElement.getBoundingClientRect();\n    if (\n      childRect.bottom > parentRect.bottom ||\n      childRect.top < parentRect.top ||\n      (this.modeview() === ModeViewType.Table && childRect.top < parentRect.top + 24)\n    ) {\n      showedElement?.scrollIntoView();\n      this.avaTreeWrapper()?.nativeElement.scrollTo({ left: 0 });\n      if (this.modeview() === ModeViewType.Table) {\n        setTimeout(() => this.correctScrollTableLine(showedElement, parentRect), 0);\n      }\n    }\n  }\n\n  private correctScrollTableLine(showedElement: HTMLElement, parentRect: DOMRect): void {\n    const childRect = showedElement.getBoundingClientRect();\n    if (childRect.top < parentRect.top + 24) {\n      this.avaTreeWrapper().nativeElement.scrollTop -= 24;\n    }\n  }\n\n  expandParentGroups(element: IElementDto): void {\n    this.expandParentGroupService.expandParentGroups(element, this.flatElements, this.expandParentGroupService.getExpansionState()());\n  }\n\n  onFilter(value: string): void {\n    this.$filter.next(value);\n  }\n\n  changeAllElementsExpansionStatus(isExpanded: boolean): void {\n    const state = this.expandParentGroupService.getExpansionState()();\n    if (!isExpanded) {\n      Object.keys(state).forEach((id: string) => {\n        delete state[id];\n        const newExpansionState = { ...state };\n        this.expandParentGroupService.setExpansionState(newExpansionState);\n      });\n    } else {\n      this.flatElements?.forEach((item) => {\n        if (item.elementTypeDiscriminator === 'ServiceSpecificationGroupDto') {\n          state[item.id] = true;\n          const newExpansionState = { ...state };\n          this.expandParentGroupService.setExpansionState(newExpansionState);\n        }\n      });\n    }\n  }\n\n  private formSelectingList(): void {\n    this.isEmiteSelectedElements = false;\n    if (!this.initiallySelectedElements) {\n      this.isEmiteSelectedElements = true;\n      return;\n    }\n\n    this.treeNodeSelectionService.getFlatSelectedListId(this.initiallySelectedElements);\n    this.treeNodeSelectionService.flatSelectedListId.forEach((id, index) => {\n      this.treeNodeSelectionService.changeSelecting(true, id);\n      if (index === this.treeNodeSelectionService.flatSelectedListId.length - 1) {\n        this.isEmiteSelectedElements = true;\n      }\n    });\n  }\n\n  selectOrDeselectAll(value: boolean): void {\n    this.treeNodeSelectionService.changeAll(value);\n  }\n\n  private getFilteredList(): void {\n    if (this.flatElements?.length) {\n      if (!this.filter) {\n        this.filteredElementList = this.flatElements;\n      } else {\n        this.filteredElementList = this.flatElements.filter((item) => this.flatElementsService.checkFilterValue(item, this.filter));\n      }\n    }\n    this.cdr.markForCheck();\n  }\n\n  private initializeEventListeners(): void {\n    if (!this.isSelectionMode) {\n      fromEvent(document, 'keydown')\n        .pipe(\n          takeUntil(this.$destroy),\n          filter(() => !this.mouseAwareKeyboardControl || this.avaMainWrapper().nativeElement.matches(':hover'))\n        )\n        .subscribe((event: Event) => {\n          if (this.avaMainWrapper().nativeElement.matches(':hover')) {\n            this.avaTreeFilterInput()?.nativeElement.focus();\n          }\n          this.handleGlobalKeyboardEvent(event);\n        });\n    }\n  }\n\n  /**\n   * Programmatically select an element in the tree from outside the component.\n   * You can pass either an IElementDto instance or a string id.\n   */\n  selectElement(elementOrId: IElementDto | string): void {\n    if (typeof elementOrId === 'string') {\n      this.selectElementById(elementOrId);\n    } else {\n      this.selectElementService.setClickElement(elementOrId);\n    }\n  }\n\n  private selectElementById(id: string | null): void {\n    this.flatElementsService.getOneElementById(id).subscribe((e) => {\n      if (e) {\n        this.selectElementService.setClickElement(e);\n      }\n    });\n  }\n}\n","@if (textWords$ | async; as textWords) {\n  <div\n    class=\"main-wrapper\"\n    #avaMainWrapper\n  >\n    <div\n      class=\"control\"\n      #control\n    >\n      <mat-form-field class=\"control-filter\">\n        <mat-label>{{ textWords.textSearch }}</mat-label>\n        <input\n          matInput\n          [ngModel]=\"filterInput\"\n          (ngModelChange)=\"onFilter($event)\"\n          #avaTreeFilterInput\n        />\n      </mat-form-field>\n      @if (modeview() === listModeViewType.Tree) {\n        <ng-container>\n          <button\n            class=\"control-icon\"\n            mat-icon-button\n            color=\"primary\"\n            (click)=\"changeAllElementsExpansionStatus(true)\"\n            [matTooltip]=\"textWords.tooltipAllOpen || ''\"\n          >\n            <mat-icon class=\"layer-background\">layers</mat-icon>\n            <mat-icon class=\"layer-icon\">add</mat-icon>\n          </button>\n          <button\n            class=\"control-icon\"\n            mat-icon-button\n            color=\"primary\"\n            (click)=\"changeAllElementsExpansionStatus(false)\"\n            [matTooltip]=\"textWords.tooltipAllClose || ''\"\n          >\n            <mat-icon class=\"layer-background\">layers</mat-icon>\n            <mat-icon class=\"layer-icon\">remove</mat-icon>\n          </button>\n        </ng-container>\n      }\n      @if (isSelectionMode$ | async) {\n        <ng-container>\n          <button\n            mat-raised-button\n            (click)=\"selectOrDeselectAll(true)\"\n            [matTooltip]=\"textWords.tooltipAllAdd || ''\"\n            class=\"control-button ava-tree-selection-all-btn\"\n          >\n            <mat-icon>add</mat-icon>\n            <span>{{ textWords.textAll }}</span>\n          </button>\n          <button\n            mat-raised-button\n            (click)=\"selectOrDeselectAll(false)\"\n            [matTooltip]=\"textWords.tooltipAllRemove || ''\"\n            class=\"control-button ava-tree-selection-all-btn\"\n          >\n            <mat-icon>remove</mat-icon>\n            <span>{{ textWords.textAll }}</span>\n          </button>\n        </ng-container>\n      }\n    </div>\n    @if (serviceSpecification()) {\n      <div\n        [style.height]=\"'calc(100% - ' + control.offsetHeight + 'px)'\"\n        class=\"ava-tree-wrapper\"\n        #avaTreeWrapper\n      >\n        @if (flatElements?.length) {\n          <ng-container>\n            @if (filteredElementList.length) {\n              <ng-container>\n                @if (modeview() === listModeViewType.Tree && !avaTreeFilterInput.value) {\n                  @if (serviceSpecification()?.elements; as elements) {\n                    <ava-tree-node\n                      [elementId]=\"serviceSpecification()!.id\"\n                      [elementList]=\"elements || []\"\n                    >\n                    </ava-tree-node>\n                  }\n                }\n\n                @if (modeview() === listModeViewType.List || (modeview() === listModeViewType.Tree && avaTreeFilterInput.value)) {\n                  <ava-list-structure [filteredElementList]=\"filteredElementList\"> </ava-list-structure>\n                }\n                @if (modeview() === listModeViewType.Table) {\n                  <ava-table-structure [filteredElementList]=\"filteredElementList\"> </ava-table-structure>\n                }\n              </ng-container>\n            } @else {\n              <ng-container> {{ textWords.textNothingFiltered }}</ng-container>\n            }\n          </ng-container>\n        } @else {\n          <ng-container>\n            {{ textWords.textNothing }}\n          </ng-container>\n        }\n      </div>\n    }\n  </div>\n}\n","import { IAlignmentOptions } from '../model/configInvoice.model';\n\nexport const ALIGNMENT_OPTIONS: IAlignmentOptions = {\n  previousInvoiceAlignment: 'right'\n};\n","import { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs';\n\nimport { DEFAULT_CURRENCY_CODE, DEFAULT_DIGITS_INFO, DEFAULT_LANGUAGE, localeTypes } from '../constants';\nimport { ALIGNMENT_OPTIONS } from '../constants/alignment-options';\nimport { DEFAULT_TEXT_WORD_INVOICE, germanTextsInvoice } from '../constants/defaultTextWordInvoice';\nimport { IConfigurationInvoice, ITextWordInvoice, LanguageType } from '../model';\nimport { IAlignmentOptions, IColorSettings } from '../model/configInvoice.model';\n\nexport class ConfigurationInvoiceService {\n  private _language: LanguageType = DEFAULT_LANGUAGE;\n  private _textWords: ITextWordInvoice = this.getDefaultTextWords(this._language);\n  private _pdfViewEnabled = false;\n  private _quantityDecimalPlaces = DEFAULT_DIGITS_INFO;\n  private _currencyCode = DEFAULT_CURRENCY_CODE;\n  private _colorSettings: IColorSettings | null = null;\n  private _alignmentOptions = ALIGNMENT_OPTIONS;\n  private invoiceConfigSource = new BehaviorSubject<IConfigurationInvoice>(this.getDefaultInvoiceConfiguration());\n  public invoiceConfig$: Observable<IConfigurationInvoice> = this.invoiceConfigSource.asObservable();\n\n  constructor() {}\n\n  public setInvoiceConfig(value: IConfigurationInvoice): void {\n    if (value.quantityDecimalPlaces != null) {\n      this._quantityDecimalPlaces = value.quantityDecimalPlaces;\n    }\n    if (value.language != null) {\n      this._language = value.language;\n    }\n    this.invoiceConfigSource.next(value);\n  }\n\n  public getCurrentInvoiceConfig(): IConfigurationInvoice {\n    return this.invoiceConfigSource.getValue();\n  }\n\n  public getTextWordsFromConfig(): Observable<ITextWordInvoice | null> {\n    return this.invoiceConfig$.pipe(\n      map((config) => config?.textWords || (config?.language ? this.getDefaultTextWords(config.language) : null)),\n      map((textWords) => (textWords === null ? this._textWords : { ...textWords })),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getPdfViewEnabledFromConfig(): Observable<boolean> {\n    return this.invoiceConfig$.pipe(\n      map((config) => config?.pdfViewEnabled ?? this._pdfViewEnabled),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  public getAlignmentOptionsFromConfig(): Observable<IAlignmentOptions | null> {\n    return this.invoiceConfig$.pipe(\n      map((config) => config?.alignmentOptions ?? this._alignmentOptions),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  private getDefaultInvoiceConfiguration(): IConfigurationInvoice {\n    return {\n      textWords: this._textWords,\n      pdfViewEnabled: this._pdfViewEnabled,\n      language: this._language,\n      quantityDecimalPlaces: this._quantityDecimalPlaces,\n      colorSettings: this._colorSettings,\n      alignmentOptions: this._alignmentOptions\n    };\n  }\n\n  getColorSettingsFromConfig(): Observable<IColorSettings | null> {\n    return this.invoiceConfig$.pipe(\n      map((config) => config?.colorSettings ?? this._colorSettings),\n      distinctUntilChanged((prev, curr) => JSON.stringify(prev) === JSON.stringify(curr))\n    );\n  }\n\n  getDefaultTextWords(languageWord: LanguageType): ITextWordInvoice {\n    return languageWord === 'de' ? germanTextsInvoice : DEFAULT_TEXT_WORD_INVOICE;\n  }\n\n  get locale(): string {\n    return localeTypes[this._language];\n  }\n\n  set quantityDecimalPlaces(value: string) {\n    this._quantityDecimalPlaces = value;\n  }\n\n  get quantityDecimalPlaces(): string {\n    return this._quantityDecimalPlaces;\n  }\n\n  set currencyCode(value: string) {\n    this._currencyCode = value;\n  }\n\n  get currencyCode(): string {\n    return this._currencyCode;\n  }\n}\n","import { CurrencyPipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n  name: 'currencyPlus',\n  standalone: true\n})\nexport class CurrencyPlusPipe implements PipeTransform {\n  currencyPipe = inject(CurrencyPipe);\n  configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n  transform(money?: number): string | null {\n    return typeof money === 'number'\n      ? this.currencyPipe.transform(\n          money,\n          this.configurationInvoiceService.currencyCode,\n          'symbol',\n          '',\n          this.configurationInvoiceService.locale\n        )\n      : '';\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'lineSplit'\n})\nexport class LineSplitPipe implements PipeTransform {\n  transform(value: string): string[] {\n    if (value == null) {\n      return [value];\n    }\n\n    return value.split(/\\r\\n?|\\n/);\n  }\n}\n","import { PercentPipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n  name: 'percentPlus'\n})\nexport class PercentPlusPipe implements PipeTransform {\n  percentPipe = inject(PercentPipe);\n  configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n  transform(value?: number, digitsInfo?: string): string | null {\n    return typeof value === 'number' ? this.percentPipe.transform(value, digitsInfo || '', this.configurationInvoiceService.locale) : '';\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { AttachmentMimeType } from '../model';\n\n@Pipe({\n  name: 'invoiceAttachmentMimeType',\n  standalone: true\n})\nexport class InvoiceAttachmentMimeTypePipe implements PipeTransform {\n  transform(attachmentMimeType: AttachmentMimeType): string {\n    switch (attachmentMimeType) {\n      case AttachmentMimeType.Pdf:\n        return 'PDF';\n      case AttachmentMimeType.Png:\n        return 'PNG';\n      case AttachmentMimeType.Jpeg:\n        return 'JPEG';\n      case AttachmentMimeType.Csv:\n        return 'CSV';\n      case AttachmentMimeType.Excel:\n        return 'Excel';\n      case AttachmentMimeType.OpenOfficeSpreadsheet:\n        return 'Open Office Spreadsheet';\n\n      case AttachmentMimeType.Unknown:\n      default:\n        return 'Unknown';\n    }\n  }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef, OnInit, ViewChild, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatExpansionModule, MatExpansionPanel } from '@angular/material/expansion';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { SupportingDocument } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { InvoiceAttachmentMimeTypePipe } from '../../pipes/invoice-attachment-mime-type.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n  selector: 'ava-invoice-documents',\n  imports: [MatExpansionModule, MatButtonModule, InvoiceAttachmentMimeTypePipe, AsyncPipe],\n  templateUrl: './invoice-documents.component.html',\n  styleUrl: './invoice-documents.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceDocumentsComponent implements OnInit, AfterViewInit {\n  private configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n  documents = input<SupportingDocument[]>([]);\n\n  @ViewChild('documentsPanel') documentsPanel: MatExpansionPanel | null = null;\n\n  private destroyRef = inject(DestroyRef);\n\n  readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n  readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n  public pdfViewEnabled = false;\n\n  ngOnInit(): void {\n    this.configurationInvoiceService\n      .getPdfViewEnabledFromConfig()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((pdfViewEnabled) => {\n        this.pdfViewEnabled = pdfViewEnabled;\n      });\n  }\n\n  ngAfterViewInit(): void {\n    if (this.documentsPanel && this.pdfViewEnabled) {\n      // In a static PDF view, we always want to open the documents panel\n      this.documentsPanel.open();\n    }\n  }\n\n  public download(documentValue: SupportingDocument): void {\n    if (documentValue.documentBase64) {\n      this.downloadAny(documentValue);\n    } else {\n      this.downloadLink(documentValue);\n    }\n  }\n\n  private downloadAny(documentValue: SupportingDocument): void {\n    if (documentValue.documentBase64) {\n      const byteCharacters = atob(documentValue.documentBase64);\n      const byteNumbers = new Array(byteCharacters.length);\n      for (let i = 0; i < byteCharacters.length; i++) {\n        byteNumbers[i] = byteCharacters.charCodeAt(i);\n      }\n      const byteArray = new Uint8Array(byteNumbers);\n      const blob = new Blob([byteArray], { type: 'application/octet-stream' });\n      this.saveAs(blob, documentValue.fileName as string);\n    }\n  }\n\n  private async downloadLink(documentValue: SupportingDocument): Promise<void> {\n    try {\n      const response = await fetch(documentValue.externalDocumentUrl as string);\n      const blob = await response.blob();\n      this.saveAs(blob, documentValue.fileName as string);\n    } catch (error) {\n      console.error(error);\n    }\n  }\n\n  private saveAs(blob: Blob, fileName: string): void {\n    const link = document.createElement('a');\n    link.href = URL.createObjectURL(blob);\n    link.download = fileName;\n    link.click();\n  }\n}\n","@if (textWords$ | async; as textWords) {\n  @if ((colorSettings$ | async) || true; as colorSettings) {\n    <mat-accordion>\n      <mat-expansion-panel\n        [hideToggle]=\"pdfViewEnabled\"\n        #documentsPanel\n      >\n        <mat-expansion-panel-header>\n          <mat-panel-title>\n            {{ textWords.attachmentsHeading }}\n          </mat-panel-title>\n        </mat-expansion-panel-header>\n        @for (document of documents(); track document.documentReference) {\n          <div class=\"document\">\n            @if (document.documentReference) {\n              <div>\n                <strong>{{ textWords.attachmentsName }}: </strong>\n                <span>{{ document.documentReference }}</span>\n              </div>\n            }\n            @if (document.description) {\n              <div>\n                <strong>{{ textWords.attachmentsDescription }}: </strong>\n                <span>{{ document.description }}</span>\n              </div>\n            }\n            @if (document.externalDocumentUrl) {\n              <div>\n                <strong>{{ textWords.attachmentsUrl }}: </strong>\n                <span>{{ document.externalDocumentUrl }}</span>\n              </div>\n            } @else if (document.documentBase64) {\n              <div>\n                <strong>{{ textWords.attachmentsDataSize }}: </strong>\n                <span>{{ document.documentBase64.length }}</span>\n              </div>\n\n              @if (document.documentMimeType) {\n                <div>\n                  <strong>{{ textWords.attachmentsMimeType }}: </strong>\n                  <span>{{ document.documentMimeType | invoiceAttachmentMimeType }}</span>\n                </div>\n              }\n            }\n            @if (document.fileName) {\n              <div>\n                <strong>{{ textWords.attachmentsFileName }}: </strong>\n                <span>{{ document.fileName }}</span>\n              </div>\n            }\n            @if (!pdfViewEnabled) {\n              <button\n                mat-raised-button\n                [style.backgroundColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n                color=\"primary\"\n                (click)=\"download(document)\"\n                [disabled]=\"!document.externalDocumentUrl && !document.documentBase64\"\n              >\n                <span [style.color]=\"colorSettings === true ? null : colorSettings?.textColor\">\n                  {{ textWords.attachmentsDownloadButton }}\n                </span>\n              </button>\n            }\n          </div>\n        }\n      </mat-expansion-panel>\n    </mat-accordion>\n  }\n}\n","import { DecimalPipe } from '@angular/common';\nimport { Pipe, PipeTransform, inject } from '@angular/core';\n\nimport { ConfigurationInvoiceService } from '../services/configuration-invoice.service';\n\n@Pipe({\n  name: 'numberPlus'\n})\nexport class NumberPlusPipe implements PipeTransform {\n  currencyPipe = inject(DecimalPipe);\n  configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n  transform(value?: number): string | null {\n    return typeof value === 'number'\n      ? this.currencyPipe.transform(value, this.configurationInvoiceService.quantityDecimalPlaces, this.configurationInvoiceService.locale)\n      : '';\n  }\n}\n","import { AsyncPipe, DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { InvoiceLineItem } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n  selector: 'ava-invoice-line-item-additional-info',\n  imports: [AsyncPipe, DatePipe],\n  templateUrl: './invoice-line-item-additional-info.component.html',\n  styleUrl: './invoice-line-item-additional-info.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceLineItemAdditionalInfoComponent {\n  @Input() lineItem!: InvoiceLineItem;\n  configurationInvoiceService = inject(ConfigurationInvoiceService);\n  readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n  @if (lineItem) {\n    @if (lineItem.allowances && lineItem.allowances.length) {\n      <div>\n        <h3>{{ textWords.lineItemAllowances }}</h3>\n        <div class=\"allowances\">\n          <p>\n            <strong>{{ textWords.lineItemReason }}:</strong> {{ lineItem.allowances[0].reason }}\n          </p>\n          <p>\n            <strong>{{ textWords.tableHeadNetAmount }}:</strong> {{ lineItem.allowances[0].netAmount }}\n          </p>\n        </div>\n      </div>\n    }\n    @if (lineItem.charges && lineItem.charges.length) {\n      <div>\n        <h3>{{ textWords.lineItemCharges }}</h3>\n        <div class=\"charges\">\n          <p>\n            <strong>{{ textWords.lineItemReason }}:</strong> {{ lineItem.charges[0].reason }}\n          </p>\n          <p>\n            <strong>{{ textWords.tableHeadNetAmount }}:</strong> {{ lineItem.charges[0].netAmount }}\n          </p>\n        </div>\n      </div>\n    }\n\n    @if (lineItem.lineItemPeriod?.start || lineItem.lineItemPeriod?.end) {\n      <div>\n        @if (lineItem.lineItemPeriod && (lineItem.lineItemPeriod.start || lineItem.lineItemPeriod.end)) {\n          @if (lineItem.lineItemPeriod!.start && lineItem.lineItemPeriod!.end) {\n            <p>\n              <strong class=\"line-break-after\">{{ textWords.detailsInvoicePeriod }}: </strong>\n              <span>\n                {{\n                  configurationInvoiceService.locale === 'de-DE'\n                    ? (lineItem.lineItemPeriod!.start | date: 'dd.MM.yyyy')\n                    : (lineItem.lineItemPeriod!.start | date: 'dd/MM/yyyy')\n                }}\n                -\n                {{\n                  configurationInvoiceService.locale === 'de-DE'\n                    ? (lineItem.lineItemPeriod!.end | date: 'dd.MM.yyyy')\n                    : (lineItem.lineItemPeriod!.end | date: 'dd/MM/yyyy')\n                }}\n              </span>\n            </p>\n          } @else {\n            <div class=\"invoice-date\">\n              <strong>{{ textWords.detailsInvoicePeriodSingle }}: </strong>\n              <span>\n                {{\n                  configurationInvoiceService.locale === 'de-DE'\n                    ? (lineItem.lineItemPeriod!.start || lineItem.lineItemPeriod!.end | date: 'dd.MM.yyyy')\n                    : (lineItem.lineItemPeriod!.start || lineItem.lineItemPeriod!.end | date: 'dd/MM/yyyy')\n                }}</span\n              >\n            </div>\n          }\n        }\n      </div>\n    }\n  }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit, inject, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTableModule } from '@angular/material/table';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { InvoiceLineItem } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { CurrencyPlusPipe } from '../../pipes/currency-plus.pipe';\nimport { NumberPlusPipe } from '../../pipes/number-plus.pipe';\nimport { PercentPlusPipe } from '../../pipes/percent-plus.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\nimport { InvoiceLineItemAdditionalInfoComponent } from '../invoice-line-item-additional-info/invoice-line-item-additional-info.component';\n\nexport interface IInvoiceLineItemsPlus extends InvoiceLineItem {\n  indentLevel: number | undefined;\n}\n\n@Component({\n  selector: 'ava-invoice-line-items-table',\n  animations: [\n    trigger('detailExpand', [\n      state('collapsed,void', style({ height: '0px', minHeight: '0' })),\n      state('expanded', style({ height: '*' })),\n      transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)'))\n    ])\n  ],\n  imports: [\n    PercentPlusPipe,\n    CurrencyPlusPipe,\n    NumberPlusPipe,\n    AsyncPipe,\n    MatTableModule,\n    MatButtonModule,\n    NgClass,\n    InvoiceLineItemAdditionalInfoComponent\n  ],\n  templateUrl: './invoice-line-items-table.component.html',\n  styleUrl: './invoice-line-items-table.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class InvoiceLineItemsTableComponent implements OnInit {\n  lineItems = input<InvoiceLineItem[]>([]);\n  flatLineItems: IInvoiceLineItemsPlus[] = [];\n  private configurationInvoiceService = inject(ConfigurationInvoiceService);\n  readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n  readonly pdfViewEnabled$: Observable<boolean> = this.configurationInvoiceService.getPdfViewEnabledFromConfig();\n  readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n\n  public readonly displayedColumns = ['number', 'description', 'quantity', 'unit', 'netPrice', 'vat', 'discount', 'netAmount'];\n\n  private expandedElements: Set<IInvoiceLineItemsPlus> = new Set();\n\n  ngOnInit() {\n    this.flatLineItems = this.getFlatLineItems(this.lineItems(), 0);\n  }\n\n  public toggleRow(row: IInvoiceLineItemsPlus) {\n    if (this.expandedElements.has(row)) {\n      this.expandedElements.delete(row);\n    } else {\n      this.expandedElements.add(row);\n    }\n  }\n\n  public isRowExpanded(row: IInvoiceLineItemsPlus): boolean {\n    return this.expandedElements.has(row);\n  }\n\n  private getFlatLineItems(lineItemsList: InvoiceLineItem[], indentLevel: number): IInvoiceLineItemsPlus[] {\n    return lineItemsList.reduce((acc: IInvoiceLineItemsPlus[], lineItem: InvoiceLineItem) => {\n      acc.push({ ...lineItem, indentLevel });\n      if (lineItem.subItems && lineItem.subItems.length) {\n        acc.push(...this.getFlatLineItems(lineItem.subItems, indentLevel + 1));\n      }\n      return acc;\n    }, []);\n  }\n}\n","@if (textWords$ | async; as textWords) {\n  @if ((colorSettings$ | async) || true; as colorSettings) {\n    <table\n      mat-table\n      [dataSource]=\"flatLineItems\"\n      multiTemplateDataRows\n      class=\"mat-elevation-z8 invoice-table\"\n    >\n      <ng-container matColumnDef=\"number\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          #\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element; let i = dataIndex\"\n          [class.children]=\"element.indentLevel\"\n        >\n          {{ element.identifier || element.objectIdentifier || i + 1 }}\n          @if (element.indentLevel) {\n            <div\n              class=\"children-mark\"\n              [style.width.px]=\"element.indentLevel * 8\"\n            ></div>\n          }\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"description\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          {{ textWords.tableHeadDescription }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n        >\n          {{ element.itemInformation?.description || element.itemInformation?.name }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"quantity\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          {{ textWords.tableHeadQuantity }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n        >\n          {{ element.quantity | numberPlus }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"unit\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          {{ textWords.tableHeadUnit }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n        >\n          {{ element.unitCode }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"netPrice\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          {{ textWords.tableHeadNetPrice }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n          class=\"currency-table-cell\"\n        >\n          {{ element.priceDetails?.netPrice | currencyPlus }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"discount\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          {{ textWords.lineItemDiscount }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n          class=\"currency-table-cell\"\n        >\n          @if (element.priceDetails?.absoluteDiscountPerItem) {\n            {{ element.priceDetails?.absoluteDiscountPerItem | currencyPlus }}\n          }\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"netAmount\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          {{ textWords.tableHeadNetAmount }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n          class=\"currency-table-cell\"\n        >\n          {{ element.netAmount | currencyPlus }}\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"vat\">\n        <th\n          mat-header-cell\n          *matHeaderCellDef\n          [style]=\"{\n            backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n            color: colorSettings === true ? null : colorSettings?.textColor,\n          }\"\n        >\n          {{ textWords.vat }}\n        </th>\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n          class=\"currency-table-cell\"\n        >\n          @if (element && element.vatInformation && element.vatInformation.length > 0) {\n            {{ element.vatInformation[0].vatRate | percentPlus: '1.0-2' }}\n          }\n        </td>\n      </ng-container>\n\n      <ng-container matColumnDef=\"expandedDetail\">\n        <td\n          mat-cell\n          *matCellDef=\"let element\"\n          [attr.colspan]=\"displayedColumns.length\"\n        >\n          <div [@detailExpand]=\"isRowExpanded(element) || (pdfViewEnabled$ | async) ? 'expanded' : 'collapsed'\">\n            <ava-invoice-line-item-additional-info [lineItem]=\"element\"></ava-invoice-line-item-additional-info>\n          </div>\n        </td>\n      </ng-container>\n\n      <tr\n        mat-header-row\n        *matHeaderRowDef=\"displayedColumns\"\n      ></tr>\n\n      <tr\n        mat-row\n        *matRowDef=\"let row; columns: displayedColumns\"\n        (click)=\"(row.allowances || row.charges || row.lineItemPeriod) && toggleRow(row)\"\n        [ngClass]=\"{\n          expanding: !(pdfViewEnabled$ | async) && (row.allowances || row.charges || row.lineItemPeriod),\n          'expanded-row': isRowExpanded(row) && colorSettings === true,\n          'expanded-row-pdf-view': (pdfViewEnabled$ | async) && !row.indentLevel,\n        }\"\n        [style.backgroundColor]=\"\n          colorSettings === true ? null : isRowExpanded(row) ? 'color-mix(in srgb,' + colorSettings?.backgroundColor + ', white 70%)' : null\n        \"\n      ></tr>\n\n      <tr\n        mat-row\n        *matRowDef=\"let row; columns: ['expandedDetail']\"\n        class=\"detail-row\"\n      ></tr>\n    </table>\n  }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { MatDividerModule } from '@angular/material/divider';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { Organization } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n  selector: 'ava-organization-info',\n  imports: [AsyncPipe, MatDividerModule],\n  templateUrl: './organization-info.component.html',\n  styleUrls: ['./organization-info.component.scss']\n})\nexport class OrganizationInfoComponent {\n  organizationInfo = input<Organization | null>(null);\n  private configurationInvoiceService = inject(ConfigurationInvoiceService);\n  readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n  readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n  @if ((colorSettings$ | async) || true; as colorSettings) {\n    @if (organizationInfo(); as organizationInfo) {\n      <div class=\"buyer-info\">\n        <ng-content #header></ng-content>\n\n        <p>\n          <strong>{{ organizationInfo.name }}</strong>\n        </p>\n        <p>{{ organizationInfo.address }}</p>\n        <p>{{ organizationInfo.zipCode }} {{ organizationInfo.city }}</p>\n        <p>{{ organizationInfo.countryCode }}</p>\n        @if (organizationInfo.vatId) {\n          <p>\n            <strong>{{ textWords.vatId }}: </strong>\n            <br />\n            <span>{{ organizationInfo.vatId }}</span>\n          </p>\n        }\n        <mat-divider></mat-divider>\n        @if (organizationInfo.contactPersonName) {\n          <p>\n            <strong>{{ textWords.contactPersonName }}: </strong>\n            <br />\n            <span>{{ organizationInfo.contactPersonName }}</span>\n          </p>\n        }\n        @if (organizationInfo.contactPersonPhone) {\n          <p>\n            <strong>{{ textWords.contactPersonPhone }}: </strong>\n            <br />\n            <span>{{ organizationInfo.contactPersonPhone }}</span>\n          </p>\n        }\n        @if (organizationInfo.contactPersonEmail) {\n          <p>\n            <strong>{{ textWords.contactPersonEmail }}: </strong>\n            <br />\n            <span>{{ organizationInfo.contactPersonEmail }}</span>\n          </p>\n        }\n      </div>\n    }\n  }\n}\n","import { AsyncPipe, DatePipe } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\n\nimport { Observable } from 'rxjs';\n\nimport { IColorSettings } from '../../model/configInvoice.model';\nimport { DeliveryInformation, References } from '../../model/invoice-models';\nimport { ITextWordInvoice } from '../../model/invoice-words.model';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\n@Component({\n  selector: 'ava-reference-and-delivery-information',\n  imports: [AsyncPipe, DatePipe],\n  templateUrl: './reference-and-delivery-information.component.html',\n  styleUrl: './reference-and-delivery-information.component.scss'\n})\nexport class ReferenceAndDeliveryInformationComponent {\n  deliveryInformation = input<DeliveryInformation | null>(null);\n  references = input<References | null>(null);\n  public configurationInvoiceService = inject(ConfigurationInvoiceService);\n  readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n  readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n}\n","@if (textWords$ | async; as textWords) {\n  @if ((colorSettings$ | async) || true; as colorSettings) {\n    <div class=\"invoice-info\">\n      <section class=\"invoice-references\">\n        @if (textWords.referencesTopic) {\n          <h2\n            class=\"info-title\"\n            [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n          >\n            {{ textWords.referencesTopic }}\n          </h2>\n        }\n        <div class=\"invoice-references-details\">\n          @if (references()?.buyerReference) {\n            <p>\n              <strong>{{ textWords.referencesBuyerReference }}: </strong>\n              <br />\n              <span>{{ references()?.buyerReference }}</span>\n            </p>\n          }\n          @if (references()?.projectReference) {\n            <p>\n              <strong>{{ textWords.referencesProjectReference }}: </strong>\n              <br />\n              <span>{{ references()?.projectReference }}</span>\n            </p>\n          }\n          @if (references()?.contractReference) {\n            <p>\n              <strong>{{ textWords.referencesContractReference }}: </strong>\n              <br />\n              <span>{{ references()?.contractReference }}</span>\n            </p>\n          }\n          @if (references()?.purchaseOrderReference) {\n            <p>\n              <strong>{{ textWords.referencesPurchaseOrderReference }}: </strong>\n              <br />\n              <span>{{ references()?.purchaseOrderReference }}</span>\n            </p>\n          }\n          @if (references()?.salesOrderReference) {\n            <p>\n              <strong>{{ textWords.referencesSalesOrderReference }}: </strong>\n              <br />\n              <span>{{ references()?.salesOrderReference }}</span>\n            </p>\n          }\n          @if (references()?.receivingAdviceReference) {\n            <p>\n              <strong>{{ textWords.referencesReceivingAdviceReference }}: </strong>\n              <br />\n              <span>{{ references()?.receivingAdviceReference }}</span>\n            </p>\n          }\n          @if (references()?.dispatchAdviceReference) {\n            <p>\n              <strong>{{ textWords.referencesDispatchAdviceReference }}: </strong>\n              <br />\n              <span> {{ references()?.dispatchAdviceReference }}</span>\n            </p>\n          }\n          @if (references()?.tenderOrLotReference) {\n            <p>\n              <strong>{{ textWords.referencesTenderOrLotReference }}: </strong>\n              <br />\n              <span>{{ references()?.tenderOrLotReference }}</span>\n            </p>\n          }\n          @if (references()?.invoicedObjectIdentifier) {\n            <p>\n              <strong>{{ textWords.referencesInvoicedObjectIdentifier }}: </strong>\n              <br />\n              <span>{{ references()?.invoicedObjectIdentifier }}</span>\n            </p>\n          }\n        </div>\n      </section>\n      @if (deliveryInformation()) {\n        <section class=\"invoice-delivery\">\n          <h2\n            class=\"info-title\"\n            [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n          >\n            {{ textWords.deliveryInformationTitle }}\n          </h2>\n\n          @if (deliveryInformation()?.deliverToName) {\n            <p>\n              <strong>{{ textWords.deliverToName }}: </strong>\n              <br />\n              <span>{{ deliveryInformation()?.deliverToName }}</span>\n            </p>\n          }\n          @if (deliveryInformation()?.deliverToLocationIdentifier) {\n            <p>\n              <strong>{{ textWords.deliverToLocationIdentifier }}: </strong>\n              <br />\n              <span>{{ deliveryInformation()?.deliverToLocationIdentifier }}</span>\n            </p>\n          }\n          @if (deliveryInformation()?.deliveryDate) {\n            <p>\n              <strong>{{ textWords.deliveryDate }}: </strong>\n              <br />\n              <span>{{\n                configurationInvoiceService.locale === 'de-DE'\n                  ? (deliveryInformation()?.deliveryDate | date: 'dd.MM.yyyy')\n                  : (deliveryInformation()?.deliveryDate | date: 'dd/MM/yyyy')\n              }}</span>\n            </p>\n          }\n          @if (deliveryInformation()?.deliveryAddress) {\n            <p>\n              <strong>{{ textWords.deliveryAddress }}: </strong>\n              <span>\n                @if (deliveryInformation()?.deliveryAddress?.address) {\n                  <p>{{ deliveryInformation()?.deliveryAddress?.address }}</p>\n                }\n                @if (deliveryInformation()?.deliveryAddress?.city) {\n                  <span>{{ deliveryInformation()?.deliveryAddress?.city }},</span>\n                }\n                @if (deliveryInformation()?.deliveryAddress?.zipCode) {\n                  <span>{{ deliveryInformation()?.deliveryAddress?.zipCode }}</span>\n                }\n                @if (deliveryInformation()?.deliveryAddress?.countryCode) {\n                  <p>{{ deliveryInformation()?.deliveryAddress?.countryCode }}</p>\n                }\n              </span>\n            </p>\n          }\n        </section>\n      }\n    </div>\n  }\n}\n","import { AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, PercentPipe, registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\nimport localeEn from '@angular/common/locales/en';\nimport localeDeExtra from '@angular/common/locales/extra/de';\nimport localeEnExtra from '@angular/common/locales/extra/en';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  DestroyRef,\n  LOCALE_ID,\n  OnInit,\n  effect,\n  inject,\n  input,\n  linkedSignal,\n  signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { Observable } from 'rxjs';\n\nimport { IConfigurationInvoice, ITextWordInvoice } from '../../model';\nimport { Invoice } from '../../model';\nimport { IAlignmentOptions, IColorSettings } from '../../model/configInvoice.model';\nimport { CurrencyPlusPipe } from '../../pipes/currency-plus.pipe';\nimport { LineSplitPipe } from '../../pipes/line-split.pipe';\nimport { PercentPlusPipe } from '../../pipes/percent-plus.pipe';\nimport { ConfigurationInvoiceService } from '../../services/configuration-invoice.service';\n\nimport { InvoiceDocumentsComponent } from '../invoice-documents/invoice-documents.component';\nimport { InvoiceLineItemsTableComponent } from '../invoice-line-items-table/invoice-line-items-table.component';\nimport { OrganizationInfoComponent } from '../organization-info/organization-info.component';\nimport { ReferenceAndDeliveryInformationComponent } from '../reference-and-delivery-information/reference-and-delivery-information.component';\n\nregisterLocaleData(localeDe, 'de-DE', localeDeExtra);\nregisterLocaleData(localeEn, 'en-US', localeEnExtra);\n\n@Component({\n  selector: 'ava-invoice-display',\n  imports: [\n    PercentPlusPipe,\n    CurrencyPlusPipe,\n    DatePipe,\n    AsyncPipe,\n    MatDividerModule,\n    InvoiceDocumentsComponent,\n    MatIconModule,\n    InvoiceLineItemsTableComponent,\n    ReferenceAndDeliveryInformationComponent,\n    OrganizationInfoComponent,\n    LineSplitPipe\n  ],\n  templateUrl: './invoice-display.component.html',\n  styleUrl: './invoice-display.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    ConfigurationInvoiceService,\n    CurrencyPipe,\n    DecimalPipe,\n    PercentPipe,\n    {\n      provide: LOCALE_ID,\n      useFactory: (configurationInvoiceService: ConfigurationInvoiceService) => configurationInvoiceService.locale,\n      deps: [ConfigurationInvoiceService]\n    }\n  ]\n})\nexport class InvoiceDisplayComponent implements OnInit {\n  configurationInvoiceService = inject(ConfigurationInvoiceService);\n\n  private transformFn = (invoice: Invoice | string) => {\n    if (typeof invoice === 'string') {\n      let parsedInvoice: Invoice;\n\n      try {\n        parsedInvoice = JSON.parse(invoice);\n      } catch (e) {\n        return null;\n      }\n\n      return parsedInvoice;\n    } else {\n      return invoice;\n    }\n  };\n\n  readonly invoice = input.required<Invoice | null, Invoice>({ transform: this.transformFn });\n  readonly colorSettings$: Observable<IColorSettings | null> = this.configurationInvoiceService.getColorSettingsFromConfig();\n  readonly textWords$: Observable<ITextWordInvoice | null> = this.configurationInvoiceService.getTextWordsFromConfig();\n  readonly pdfViewEnabled$: Observable<boolean> = this.configurationInvoiceService.getPdfViewEnabledFromConfig();\n  readonly alignmentOptions$: Observable<IAlignmentOptions | null> = this.configurationInvoiceService.getAlignmentOptionsFromConfig();\n  private readonly currencyCode = linkedSignal(() => this.invoice()?.currencyCode || '');\n  /**\n   * You can supply a map of strings to be used for the text in the tree. This allows you to translate\n   * the text in the tree to other languages.\n   * {\n   *   invoiceTitle: InvoiceTitleMap;\n   *   vatId: string;\n   *   detailsInvoiceNumber: string;\n   *   detailsInvoiceDate: string;\n   *   detailsPaymentDueDate: string;\n   *   detailsCurrencyCode: string;\n   *   detailsPaymentTerms: string;\n   *   referencesTopic: string;\n   *   referencesBuyerReference: string;\n   *   referencesProjectReference: string;\n   *   referencesContractReference: string;\n   *   referencesPurchaseOrderReference: string;\n   *   referencesSalesOrderReference: string;\n   *   referencesReceivingAdviceReference: string;\n   *   referencesDispatchAdviceReference: string;\n   *   referencesTenderOrLotReference: string;\n   *   referencesInvoicedObjectIdentifier: string;\n   *   tableHeadDescription: string;\n   *   tableHeadQuantity: string;\n   *   tableHeadUnit: string;\n   *   tableHeadNetPrice: string;\n   *   tableHeadNetAmount: string;\n   *   totalsTopic: string;\n   *   totalsTotalNet: string;\n   *   totalsTotalAllowances: string;\n   *   totalsTotalCharges: string;\n   *   totalsTotalAfterDeductions: string;\n   *   totalsTotalVatAmount: string;\n   *   totalsTotalGross: string;\n   *   totalsAlreadyPaidTotal: string;\n   *   totalsTotalToBePaidMap: InvoiceTotalsToBePaidMap;\n   *   instructionsTopic: string;\n   *   instructionsAccountIdentifier: string;\n   *   instructionsAccountName: string;\n   *   instructionsServiceProviderIdentifier: string;\n   *   notesTopic: string;\n   *   attachmentsHeading: string;\n   *   attachmentsName: string;\n   *   attachmentsDescription: string;\n   *   attachmentsUrl: string;\n   *   attachmentsDataSize: string;\n   *   attachmentsMimeType: string;\n   *   attachmentsFileName: string;\n   *   attachmentsDownloadButton: string;\n   *\n   * }\n   */\n  readonly config = input.required<IConfigurationInvoice | null, IConfigurationInvoice>({\n    transform: (config: IConfigurationInvoice) => {\n      if (typeof config === 'string') {\n        let parsedConfig: IConfigurationInvoice;\n\n        try {\n          parsedConfig = JSON.parse(config);\n        } catch (e) {\n          return null;\n        }\n\n        return parsedConfig;\n      } else {\n        return config;\n      }\n    }\n  });\n\n  private readonly linkedConfig = linkedSignal(() => {\n    return { ...this.configurationInvoiceService.getCurrentInvoiceConfig(), ...this.config(), textWords: this.config()?.textWords };\n  });\n  invoiceTitle = signal<string>('');\n  totalsTotalToBePaidTitle = signal<string>('');\n  private destroyRef = inject(DestroyRef);\n\n  constructor() {\n    effect(() => {\n      if (this.invoice() === null) {\n        console.error('Invalid JSON string provided. Please provide a valid JSON object.');\n      }\n    });\n  }\n\n  ngOnInit(): void {\n    this.configurationInvoiceService.currencyCode = this.currencyCode();\n    this.configurationInvoiceService.setInvoiceConfig(this.linkedConfig());\n\n    this.configurationInvoiceService\n      .getTextWordsFromConfig()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((textWords) => {\n        if (textWords) {\n          const invoiceType = this.invoice()?.invoiceType;\n          if (invoiceType) {\n            this.invoiceTitle.set(textWords.invoiceTitle[invoiceType]);\n            this.totalsTotalToBePaidTitle.set(textWords.totalsTotalToBePaidMap[invoiceType]);\n          }\n        }\n      });\n  }\n}\n","@if (textWords$ | async; as textWords) {\n  @if ((colorSettings$ | async) || true; as colorSettings) {\n    @if (invoice() !== null) {\n      <div class=\"invoice-container\">\n        <!-- Seller and Buyer Information -->\n        <h1 class=\"invoice-title\">{{ invoiceTitle() }}</h1>\n\n        <header class=\"invoice-header\">\n          <div class=\"buyer-info\">\n            <ava-organization-info [organizationInfo]=\"invoice()?.buyer || null\">\n              <h2\n                class=\"header-title\"\n                [style]=\"{\n                  backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                  color: colorSettings === true ? null : colorSettings?.textColor,\n                }\"\n              >\n                {{ textWords.invoiceBuyerTitle }}\n              </h2>\n            </ava-organization-info>\n          </div>\n          <div class=\"invoice-details\">\n            @if (invoice()?.invoiceNumber) {\n              <p>\n                <strong>{{ textWords.detailsInvoiceNumber }}: </strong>\n                <span>{{ invoice()?.invoiceNumber }}</span>\n              </p>\n            }\n            @if (invoice()?.invoiceDate) {\n              <div class=\"invoice-date\">\n                <strong>{{ textWords.detailsInvoiceDate }}: </strong>\n                <span>\n                  {{\n                    configurationInvoiceService.locale === 'de-DE'\n                      ? (invoice()?.invoiceDate | date: 'dd.MM.yyyy')\n                      : (invoice()?.invoiceDate | date: 'dd/MM/yyyy')\n                  }}</span\n                >\n              </div>\n            }\n            @if (invoice()?.paymentDueDate) {\n              <div class=\"invoice-date\">\n                <strong>{{ textWords.detailsPaymentDueDate }}: </strong>\n                <span>\n                  {{\n                    configurationInvoiceService.locale === 'de-DE'\n                      ? (invoice()?.paymentDueDate | date: 'dd.MM.yyyy')\n                      : (invoice()?.paymentDueDate | date: 'dd/MM/yyyy')\n                  }}</span\n                >\n              </div>\n            }\n            @if (invoice()?.invoicePeriod && (invoice()?.invoicePeriod?.start || invoice()?.invoicePeriod?.end)) {\n              @if (invoice()!.invoicePeriod!.start && invoice()!.invoicePeriod!.end) {\n                <p>\n                  <strong class=\"line-break-after\">{{ textWords.detailsInvoicePeriod }}: </strong>\n                  <span>\n                    {{\n                      configurationInvoiceService.locale === 'de-DE'\n                        ? (invoice()!.invoicePeriod!.start | date: 'dd.MM.yyyy')\n                        : (invoice()!.invoicePeriod!.start | date: 'dd/MM/yyyy')\n                    }}\n                    -\n                    {{\n                      configurationInvoiceService.locale === 'de-DE'\n                        ? (invoice()!.invoicePeriod!.end | date: 'dd.MM.yyyy')\n                        : (invoice()!.invoicePeriod!.end | date: 'dd/MM/yyyy')\n                    }}\n                  </span>\n                </p>\n              } @else {\n                <div class=\"invoice-date\">\n                  <strong>{{ textWords.detailsInvoicePeriodSingle }}: </strong>\n                  <span>\n                    {{\n                      configurationInvoiceService.locale === 'de-DE'\n                        ? ((invoice()?.invoicePeriod)!.start || (invoice()?.invoicePeriod)!.end | date: 'dd.MM.yyyy')\n                        : ((invoice()?.invoicePeriod)!.start || (invoice()?.invoicePeriod)!.end | date: 'dd/MM/yyyy')\n                    }}</span\n                  >\n                </div>\n              }\n            }\n            @if (invoice()?.currencyCode) {\n              <p>\n                <strong>{{ textWords.detailsCurrencyCode }}: </strong>\n                <span>{{ invoice()?.currencyCode }}</span>\n              </p>\n            }\n            @if (invoice()?.paymentTerms) {\n              <p>\n                <strong class=\"line-break-after\">{{ textWords.detailsPaymentTerms }}: </strong>\n                <span>{{ invoice()?.paymentTerms }}</span>\n              </p>\n            }\n          </div>\n\n          <div class=\"seller-tax-representive\">\n            <ava-organization-info [organizationInfo]=\"invoice()?.sellerTaxRepresentative || null\">\n              <h2\n                class=\"header-title\"\n                [style]=\"{\n                  backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                  color: colorSettings === true ? null : colorSettings?.textColor,\n                }\"\n              >\n                {{ textWords.invoiceSellerTaxRepresentativeTitle }}\n              </h2>\n            </ava-organization-info>\n          </div>\n          <div class=\"seller-info\">\n            <ava-organization-info [organizationInfo]=\"invoice()?.seller || null\">\n              <h2\n                class=\"header-title\"\n                [style]=\"{\n                  backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                  color: colorSettings === true ? null : colorSettings?.textColor,\n                }\"\n              >\n                {{ textWords.invoiceSellerTitle }}\n              </h2>\n            </ava-organization-info>\n          </div>\n        </header>\n        <mat-divider></mat-divider>\n\n        <ava-reference-and-delivery-information\n          [deliveryInformation]=\"invoice()?.deliveryInformation || null\"\n          [references]=\"invoice()?.references || null\"\n        ></ava-reference-and-delivery-information>\n        <ava-invoice-line-items-table [lineItems]=\"invoice()?.lineItems || []\"></ava-invoice-line-items-table>\n\n        <div class=\"addition-info\">\n          <section class=\"taxes-and-allowances\">\n            <h2\n              class=\"info-title\"\n              [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n            >\n              {{ textWords.taxesHeading }}\n            </h2>\n            <table class=\"tax-report-table\">\n              <thead>\n                <tr>\n                  <th\n                    [style]=\"{\n                      backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                      color: colorSettings === true ? null : colorSettings?.textColor,\n                    }\"\n                  >\n                    {{ textWords.vat }}\n                  </th>\n                  <th\n                    [style]=\"{\n                      backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                      color: colorSettings === true ? null : colorSettings?.textColor,\n                    }\"\n                  >\n                    {{ textWords.totalsTotalNet }}\n                  </th>\n                  <th\n                    [style]=\"{\n                      backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                      color: colorSettings === true ? null : colorSettings?.textColor,\n                    }\"\n                  >\n                    {{ textWords.totalsTotalVatAmount }}\n                  </th>\n                </tr>\n              </thead>\n              <tbody>\n                @for (tax of invoice()?.vatBreakdown; track tax.taxRate) {\n                  @if (tax.vatExemptionReasonText || tax.vatExemptionReasonCode) {\n                    <tr>\n                      <td colspan=\"3\">\n                        <span>{{ tax.vatExemptionReasonText }} / {{ tax.vatExemptionReasonCode }}</span>\n                      </td>\n                    </tr>\n                  }\n\n                  <tr>\n                    <td class=\"currency-table-cell\">\n                      @if (tax.taxRate != null) {\n                        <span>{{ tax.taxRate | percentPlus: '1.0-2' }}</span>\n                      }\n                    </td>\n                    <td class=\"currency-table-cell\">\n                      @if (tax.netTaxableAmount != null) {\n                        <span>{{ tax.netTaxableAmount | currencyPlus }}</span>\n                      }\n                    </td>\n                    <td class=\"currency-table-cell\">\n                      @if (tax.vatAmount != null) {\n                        <span>{{ tax.vatAmount | currencyPlus }}</span>\n                      }\n                    </td>\n                  </tr>\n                }\n              </tbody>\n            </table>\n\n            @if (invoice()?.allowances && (invoice()?.allowances?.length || 0) > 0) {\n              <h2\n                class=\"info-title\"\n                [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n              >\n                {{ textWords.invoiceAllowancesHeader }}\n              </h2>\n\n              <table class=\"tax-report-table\">\n                <thead>\n                  <tr>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceAllowancesTableHeaderSum }}\n                    </th>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceAllowancesTableHeaderVatRate }}\n                    </th>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceAllowancesTableHeaderAllowance }}\n                    </th>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceAllowancesTableHeaderBase }}\n                    </th>\n                  </tr>\n                </thead>\n                <tbody>\n                  @for (allowance of invoice()?.allowances; track allowance) {\n                    <tr>\n                      <td colspan=\"4\">\n                        @if (allowance.reason && allowance.reasonCode) {\n                          <span>{{ allowance.reason }} / {{ allowance.reasonCode }}</span>\n                        }\n                        @if (allowance.reason && !allowance.reasonCode) {\n                          <span>{{ allowance.reason }}</span>\n                        }\n\n                        @if (!allowance.reason && allowance.reasonCode) {\n                          <span>{{ allowance.reasonCode }}</span>\n                        }\n                      </td>\n                    </tr>\n                    <tr>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ allowance.netAmount | currencyPlus }}\n                        </span>\n                      </td>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ allowance.vatRate | percentPlus: '1.0-2' }}\n                        </span>\n                      </td>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ allowance.relativeAllowancePercentage | percentPlus: '1.0-2' }}\n                        </span>\n                      </td>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ allowance.relativeAllowanceBaseAmount | currencyPlus }}\n                        </span>\n                      </td>\n                    </tr>\n                  }\n                </tbody>\n              </table>\n            }\n\n            @if (invoice()?.charges && (invoice()?.charges?.length || 0) > 0) {\n              <h2\n                class=\"info-title\"\n                [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n              >\n                {{ textWords.invoiceChargesHeader }}\n              </h2>\n\n              <table class=\"tax-report-table\">\n                <thead>\n                  <tr>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceChargesTableHeaderSum }}\n                    </th>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceChargesTableHeaderVatRate }}\n                    </th>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceChargesTableHeaderCharge }}\n                    </th>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.invoiceChargesTableHeaderBase }}\n                    </th>\n                  </tr>\n                </thead>\n                <tbody>\n                  @for (charge of invoice()?.charges; track charge) {\n                    <tr>\n                      <td colspan=\"4\">\n                        @if (charge.reason && charge.reasonCode) {\n                          <span>{{ charge.reason }} / {{ charge.reasonCode }}</span>\n                        }\n                        @if (charge.reason && !charge.reasonCode) {\n                          <span>{{ charge.reason }}</span>\n                        }\n\n                        @if (!charge.reason && charge.reasonCode) {\n                          <span>{{ charge.reasonCode }}</span>\n                        }\n                      </td>\n                    </tr>\n                    <tr>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ charge.netAmount | currencyPlus }}\n                        </span>\n                      </td>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ charge.vatRate | percentPlus: '1.0-2' }}\n                        </span>\n                      </td>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ charge.relativeChargePercentage | percentPlus: '1.0-2' }}\n                        </span>\n                      </td>\n                      <td class=\"currency-table-cell\">\n                        <span>\n                          {{ charge.relativeChargeBaseAmount | currencyPlus }}\n                        </span>\n                      </td>\n                    </tr>\n                  }\n                </tbody>\n              </table>\n            }\n          </section>\n\n          <section class=\"payment-instructions\">\n            <h2\n              class=\"info-title\"\n              [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n            >\n              {{ textWords.instructionsTopic }}\n            </h2>\n            @if (invoice()?.paymentInstructions?.description) {\n              <p>{{ invoice()?.paymentInstructions?.description }}</p>\n            }\n            @for (means of invoice()?.paymentInstructions?.paymentMeans; track means) {\n              <div>\n                @if (means.accountIdentifier) {\n                  <p>\n                    <strong>{{ textWords.instructionsAccountIdentifier }}: </strong>\n                    <br />\n                    <span>{{ means.accountIdentifier }}</span>\n                  </p>\n                }\n                @if (means.accountName) {\n                  <p>\n                    <strong>{{ textWords.instructionsAccountName }}: </strong>\n                    <br />\n                    <span>{{ means.accountName }}</span>\n                  </p>\n                }\n                @if (means.serviceProviderIdentifier) {\n                  <p>\n                    <strong>{{ textWords.instructionsServiceProviderIdentifier }}: </strong>\n                    <br />\n                    <span>{{ means.serviceProviderIdentifier }}</span>\n                  </p>\n                }\n              </div>\n            }\n          </section>\n\n          <section class=\"invoice-totals\">\n            <h2\n              class=\"info-title\"\n              [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n            >\n              {{ textWords.totalsTopic }}\n            </h2>\n\n            @if (invoice()?.totals?.totalNet != null) {\n              <p>\n                <strong>{{ textWords.totalsTotalNet }}: </strong>\n                <br />\n                <span>{{ invoice()?.totals?.totalNet | currencyPlus }}</span>\n              </p>\n            }\n            @if (invoice()?.totals?.totalAllowances != null) {\n              <p>\n                <strong>{{ textWords.totalsTotalAllowances }}: </strong>\n                <br />\n                <span> {{ invoice()?.totals?.totalAllowances | currencyPlus }}</span>\n              </p>\n            }\n            @if (invoice()?.totals?.totalCharges != null) {\n              <p>\n                <strong>{{ textWords.totalsTotalCharges }}: </strong>\n                <br />\n                <span> {{ invoice()?.totals?.totalCharges | currencyPlus }}</span>\n              </p>\n            }\n            @if (invoice()?.totals?.totalAfterDeductions != null) {\n              <p>\n                <strong>{{ textWords.totalsTotalAfterDeductions }}: </strong>\n                <br />\n                <span>{{ invoice()?.totals?.totalAfterDeductions | currencyPlus }}</span>\n              </p>\n            }\n            @if (invoice()?.totals?.totalVatAmount != null) {\n              <p>\n                <strong>{{ textWords.totalsTotalVatAmount }}: </strong>\n                <br />\n                <span>{{ invoice()?.totals?.totalVatAmount | currencyPlus }}</span>\n              </p>\n            }\n            @if (invoice()?.totals?.totalGross != null) {\n              <p>\n                <strong>{{ textWords.totalsTotalGross }}: </strong>\n                <br />\n                <span> {{ invoice()?.totals?.totalGross | currencyPlus }}</span>\n              </p>\n            }\n            @if (invoice()?.totals?.alreadyPaidTotal != null) {\n              <p>\n                <strong>{{ textWords.totalsAlreadyPaidTotal }}: </strong>\n                <br />\n                <span>{{ invoice()?.totals?.alreadyPaidTotal | currencyPlus }}</span>\n              </p>\n            }\n            @if (invoice()?.totals?.totalToBePaid != null) {\n              <p\n                class=\"total\"\n                [style]=\"{\n                  backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                  color: colorSettings === true ? null : colorSettings?.textColor,\n                }\"\n              >\n                <strong>{{ totalsTotalToBePaidTitle() }}: </strong>\n                <br />\n                <strong> {{ invoice()?.totals?.totalToBePaid | currencyPlus }}</strong>\n              </p>\n            }\n          </section>\n        </div>\n        @if (invoice()?.previousInvoices && invoice()?.previousInvoices?.length) {\n          <section\n            class=\"previous-invoices\"\n            [style]=\"{\n              justifyContent: (alignmentOptions$ | async)?.previousInvoiceAlignment || '',\n            }\"\n          >\n            <div class=\"previous-invoices-wrapper\">\n              <h2\n                class=\"info-title\"\n                [style.borderBottomColor]=\"colorSettings === true ? null : colorSettings?.backgroundColor\"\n              >\n                {{ textWords.previousInvoicesTopic }}\n              </h2>\n\n              <table class=\"previous-invoices-table\">\n                <thead>\n                  <tr>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.previousInvoiceNumber }}\n                    </th>\n                    <th\n                      [style]=\"{\n                        backgroundColor: colorSettings === true ? null : colorSettings?.backgroundColor,\n                        color: colorSettings === true ? null : colorSettings?.textColor,\n                      }\"\n                    >\n                      {{ textWords.previousInvoiceDate }}\n                    </th>\n                  </tr>\n                </thead>\n                <tbody>\n                  @for (prevInvoice of invoice()?.previousInvoices; track prevInvoice) {\n                    <tr>\n                      <td>\n                        {{ prevInvoice.invoiceNumber }}\n                      </td>\n                      <td>\n                        {{\n                          configurationInvoiceService.locale === 'de-DE'\n                            ? (prevInvoice.invoiceDate | date: 'dd.MM.yyyy')\n                            : (prevInvoice.invoiceDate | date: 'dd/MM/yyyy')\n                        }}\n                      </td>\n                    </tr>\n                  }\n                </tbody>\n              </table>\n            </div>\n          </section>\n        }\n\n        @if (invoice()?.invoiceNotes?.length) {\n          <section class=\"invoice-notes\">\n            <h2>{{ textWords.notesTopic }}</h2>\n            @for (note of invoice()?.invoiceNotes; track note) {\n              <div>\n                @if (note?.shortText) {\n                  <p>\n                    <strong>{{ note?.shortText }}</strong>\n                  </p>\n                }\n                @if (note?.longText) {\n                  <p>\n                    @for (line of note.longText! | lineSplit; track line; let isLast = $last) {\n                      {{ line }}\n\n                      @if (!isLast) {\n                        <br />\n                      }\n                    }\n                  </p>\n                }\n              </div>\n            }\n          </section>\n        }\n        @if (invoice()?.documents?.length) {\n          <section class=\"invoice-attachments\">\n            <ava-invoice-documents [documents]=\"invoice()?.documents || []\"></ava-invoice-documents>\n          </section>\n        }\n      </div>\n    } @else if (invoice() === null && (pdfViewEnabled$ | async)) {\n      <div class=\"error-container\">\n        <div class=\"error-message\">\n          <mat-icon>error_outline</mat-icon>\n          <h2>Oops! Something went wrong.</h2>\n          <p>We couldn't retrieve the invoice data. Please try again later.</p>\n        </div>\n      </div>\n    } @else {\n      <div></div>\n    }\n  }\n}\n","/*\n * Public API Surface of angular-ava\n */\n\nexport * from './lib/ava-tree/model';\nexport * from './lib/version';\nexport * from './lib/ava-tree/components/ava-tree/ava-tree.component';\nexport * from './lib/ava-tree/constants';\nexport * from './lib/invoice/components/invoice-display/invoice-display.component';\nexport * from './lib/invoice/constants';\nexport * from './lib/invoice/model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i4"],"mappings":"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"}